pax_global_header00006660000000000000000000000064142737723630014530gustar00rootroot0000000000000052 comment=0f3beb6adee605cf117ccaeabfe3e4ff6251c0af gpredict/000077500000000000000000000000001427377236300126755ustar00rootroot00000000000000gpredict/.gitignore000066400000000000000000000006631427377236300146720ustar00rootroot00000000000000*~ .version .dirstamp Makefile Makefile.in build-config.h build-config.h.in compile configure config.guess config.h config.h.in config.log config.status config.sub config.cache cov-int/ depcomp aclocal.m4 autom4te.cache INSTALL install-sh intltool-extract intltool-extract.in intltool-merge intltool-merge.in intltool-update intltool-update.in ltmain.sh missing stamp-h.in stamp-h stamp-h1 mkinstalldirs libtool m4/ GTAGS GRTAGS GPATH gpredict/.indent.pro000066400000000000000000000004001427377236300147500ustar00rootroot00000000000000-kr -i4 --no-tabs --line-length120 -di16 --braces-after-if-line --brace-indent0 --dont-cuddle-else --cuddle-do-while --blank-lines-after-declarations --blank-lines-after-procedures --break-after-boolean-operator --no-space-after-casts --else-endif-column0 gpredict/.travis.yml000066400000000000000000000004631427377236300150110ustar00rootroot00000000000000dist: xenial language: c compiler: - gcc - clang before_install: - sudo apt-get update -qq - sudo apt-get install -y libtool intltool autoconf automake libcurl4-openssl-dev - sudo apt-get install -y pkg-config libglib2.0-dev libgtk-3-dev libgoocanvas-2.0-dev script: - ./autogen.sh - make gpredict/AUTHORS000066400000000000000000000024651427377236300137540ustar00rootroot00000000000000 Gpredict is designed and developed by Alexandru Csete OZ9AEC, with significant contributions from many individuals. Contributors (in alphabetical order): - A. Maitland Bottoms, AA4HS - Alan Moffet, KE7IJZ - Andreas Puschendorf, DL7OAP - Baris Dinc, TA7W - Charles Suprin, AA1VS - Christoph Berg, DF7CB - Dale Mellor - Daniel Estevez, EA4GPZ - Dave Hines - David Cureton - David VK5DG - Fabian P. Schmidt - Gisle Vanem - Henry Hallam - Ilias Daradimos - Jan Simon, DL2ZXA - Jason Uher - Joachim Euchner - John Magliacane, KD2BD - Libre Space Foundation - Lloyd Brown - LongnoseRob, JI1MNC - Marcel Cimander - Mario Haustein - Martin Pool - Matthew Alberti, KM4EXS - Mikhail Bychek - Michael Tatarinov - Mirko Caserta - Nate Bargmann, N0NB - Neoklis Kyriazis, 5B4AZ - Patrick Dohmen, DL4PD - Patrick Strasser, OE6PSE - Paul Schulz, VK5FPAW - Phil Ashby, 2E0IPX - S. R. Sampson - Stefan Lobas - Stephane Fillod - Tim Brooks - Tom Jones - T.S. Kelso - Valentin Yakovenkov - William J Beksi, KC2EXL - Xavier Crehueras, EB3CZS - Yaroslav Stavnichiy - Yasushi SHOJI Imagery: Most of the maps originate from NASA Visible Earth http://visibleearth.nasa.gov/ If you notice that sopmebody's work has been used without giving proper credits, contact Alexandru Csete (callsign at gmail) or the project at https://github.com/csete/gpredict. gpredict/COPYING000066400000000000000000000431061427377236300137340ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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. gpredict/ChangeLog000066400000000000000000000000761427377236300144520ustar00rootroot00000000000000ChangeLog is no longer maintained. Please see the NEWS file. gpredict/Makefile.am000066400000000000000000000014551427377236300147360ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src doc pixmaps data po BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ dist-hook: echo $(VERSION) > $(distdir)/.tarball-version install-data-local: @$(NORMAL_INSTALL) $(INSTALL_DATA) $(top_srcdir)/AUTHORS $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(top_srcdir)/NEWS $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(top_srcdir)/README $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(top_srcdir)/COPYING $(DESTDIR)$(pkgdatadir) EXTRA_DIST = \ autogen.sh \ git-version-gen \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ snap/snapcraft.yaml \ win32/config.mk \ win32/goocanvasprivate.h \ win32/gpredict.rc \ win32/Makefile \ win32/icons/gpredict-icon.ico gpredict/NEWS000066400000000000000000000505221427377236300134000ustar00rootroot00000000000000 Changes in version 2.4 (TBD) - Fixed bug that could prevent TLE update to work on Windows - Fixed rotator error handling to prevent fake feedback - Fixed rotator controller on Windows - Fixed bug that limited altitude to 5000 feet - Fixed timezone bug in Epoch string in the satellite info dialog - Fixed crash when eccentricity of orbit is exactly 0 - Fixed bug that prevented changing the polar view background - Fixed saving the sort order in the satellite list view - Fixed several memory leaks in the map view - Ensure Azimuth read from rotator is always between 0-360 degrees - Ensure rotator limits are respected while tracking - Ensure next events are in chronological order - Added operational status to list view - Restore radio controller cycle time between sessions - Restore rotator cycle time and threshold between sessions - Require Glib 2.40 or later - New module menu icon Changes in version 2.2 (5 Jan 2018) - New Monitor mode for antenna controller - Improved satellite search field in module editor - Finished migration to Gtk+ 3 - Fixed time controller jumping to January in manual mode when using local time - Fixed crash when connecting to rotctld server that isn't running - Fixed missing version number in Debian packages - Avoid using gcc-specific language extensions - Fixed some automake warnings - Fixed "GtkDialog mapped without a transient parent..." messages - Various internal bugfixes and improvements - Updated translations - Updated satellite data - Updated windows build files Changes in version 2.0 (10 Dec 2017) - New logo - Initial port to Gtk+ 3 - Import transponder data from Satnogs database https://db.satnogs.org/ - Support for multiple TLE sources - Improved radio and antenna rotator controllers (no application freeze) - Map can be centered around arbitrary longitude - Natural sort function for satellite list in module configuration - Select a satellite in all views - AOS and LOS signalling in rigctl interface - Autotrack satellites in a module - Support for user defined end stops on Azimuth axis - Experimental gpsd support - Change frequency and antenna position using the mouse wheel - Highlight satellites within range in the list view - Improved handling of decayed satellites - Fixed application freezing while talking to radios and rotators - Fixed incorrect program name in desktop files - Fixed 100% CPU load on manual time adjustment - Fixed issue controlling Yaesu FT-847 - Fixed old log files not being saved - Fixed track button in rotator controller having no effect - Fixed operational status of satellites - Fixed wrong icon in time controller - Fixed missing ground track for new satellites - Fixed show next pass shows the current pass - Fixed problems with plotting footprints near the poles - Fixed satellite nickname not escaped for Pango - Updated translations Changes in version 1.3 (1 Mar 2011) - Feature request 2873824: Flip Passes. - Feature Request 3022617: Malaysia's location. - Automatically refresh the Sky at a glance view every minute. - Added more checks with hamlib communications. - List satellite as available or selected when configuring module. - Fixed bug 2116691: Leave network connection open. - Fixed bug 3099314: Rotator Thrashing. - Fixed bug 2167508: problems in rotator controller. - Update from local files won't work with files in UPPER case - Fixed bug 3171615: Searching for satellites in the satellite selector - Fixed bug 3113190: .desktop file error - Address bug 2945538: Pass in polar display going outside the circle Changes in version 1.2 (12 Oct 2010) - New layout engine that allows any combination of views to be created in a grid - Sky at a glance is now more interactive. Show pass summary when mouse hovers over pass and click on pass shows the details - Added satellite tooltips in polar view showing current Az, El and time to LOS - Added satellite tooltips in map view showing current SSP Lat, Lon, Az, El and time to AOS/LOS. - Fixed bug 2877974: Incorrect uplink Doppler. - Fixed bug 2918672: Trailing whitespace and newline in satellite names. - Fixed bug 2914679: Unable to save Future passes. - Fixed bug 2674626: Process 100% CPU load with one kepler element. - Fixed bug 2792349: Segfault on certain satellites (Geo). - Fixed bug 3050068: Unable to update TLE from local files. - Fixed bugs 3057771 and 3058753: Crash if module file is empty. - Fixed bug 3074990: Crash if directory does not exist - Fixed bug 3080019: Corrupted hw file cause crash. - Patch 2876485: Fix a memory leak in the rotator controller (AA1VS). - Patch 2877878: Change Flag to Lock in tle-update (AA1VS). - Patch 2877918: Fixes segfault in TLE updater (AA1VS). - Patch 2881367: Updated Flags to Locks (AA1VS). - Patch 2893617: Patches for fixing Windows build (Valentin Yakovenkov). - Patch 2916646: Minor fixes to documentation (Paul Schulz). - Patch 2929816: Fixes Bound Checking in gtk-rot-knob.c (AA1VS). - Patch 2930342: Improved robustness of pass prediction (AA1VS). - Patch 2933879: Check for AOS before burning computational resources (AA1VS). - Patch 2943018: Potential Double Free in qth-data.c (AA1VS). - Patch 2942658: Ground Tracks with Narrow Windows (AA1VS). - Patch 2943024: Eliminate Segfault in gtk-sat-map.c (AA1VS). - Patch 2943448: Remove Segfault from corrupted module (AA1VS). - Patch 2945525: Sort list of modules in open module dialog (AA1VS). - Patch 2947459: Make Module List Scrollable (AA1VS). - Patch 2951724: Allow TX Doppler correction for FT-817, 857 and 897 (AA1VS). - Patch 3002344: Remove Uninitialized Jump (AA1VS). - Patch 3002345: Free catfilename (AA1VS). - Patch 3002348: Option context never freed (AA1VS). - Patch 3005548: Cut and Paste Error In print_pass.h (AA1VS). - Patch 3009725: Delete Explicit Call to gtk_set_locale (AA1VS). - Patch 3009727: Free satellite hash references (AA1VS). - Patch 3050047: Improve sat search and prediction of upcoming passes (OE6PSE) - Patch 3059022: Fix gpredict crashed with NULL pointer exception (AA1VS). - Slightly improved UI for the single-satellite view. - Command line options for cleaning user's TLE and transponder data, see --help. - Satellite Map: Added shadow to satellite marker and label to enhance visual appearance over light background map regions. - Fixed incorrect uplink and downlink frequencies for HO-68, mode V/U packet. - Modules docked in the main window can be reordered by dragging the tabs. - Updated translations for CS, DE, EN_GB, EN_US, FI, FR, IT, LT, RU and TH Changes in version 1.1 (5 Oct 2009) - New satellite selector in the module configuration dialog that makes it easier to locate and select satellites. - User configuration on Unix is now stored in $HOME/.config/Gpredict/ The old configuration is imported automatically and one can still use Gpredict 1.0 with the old configuration stored in $HOME/.gpredict2/ - Distribution now includes all satellites from CelesTrak. - Added a slider control to the Time Controller. - Added config option to automatically show the sky tracks on the polar view. - In the multi pass window one can now double click on any pass to show the pass details. The right click pop-menu still works. - Fixed bug 2116693: List view does not sort properly for all time formats. - Fixed bug 2836265: Time controls should wrap around their limits. - Fixed bug 2691499: Sky at glance crashes with empty module. - Fixed bug 2836263: Setup translations in Launchpad. - Include more maps from NASA Visible Earth: Blue Marble Next Generation. - Binary packages for Ubuntu via PPA. Changes in version 1.0 beta 5 (24 May 2005) - Added new transponder files received from David VK5DG. - Fixed some bugs that caused the Doppler shift to be calculated incorrectly in some cases. - Fixed a bug that could cause the transponder frequency to "drift" away from the set frequencies. Changes in version 1.0 beta 4 (13 May 2009) - Fixed a bug that cause rig type to switch from DUPLEX -> RX (Thanks Thomas DL1JBE). - Fixed bug 2691797: Potential array index out of range. - Fixed bug 2691795: Potential array index out of range. - Fixed bug 2691794: Potential array index out of range. - Fixed bug 2691792: Potential array index out of range. - Fixed other compile warnings (bugs 2691799, 2691787 and 2691790). Changes in version 1.0 beta 3 (10 May 2009) - Feature request 2691964: Full-duplex controller. - Fixed a bug that caused long delays when opening or reconfiguring modules containing a polar view. Changes in version 1.0 beta 2 (15 Apr 2009): - Improved implementation of the radio controller to include uplink. - Added transponder data management (GUI editor to be added in beta 3). - Libcurl is now required to build. - Feature request 2756021: Doppler tuning using two radios (duplex). - Feature request 2691963: Doppler tuning on uplink (Simplex TRX). - Feature request 2192404: Starting time for pass predictions. - Feature request 2347471: Use system goocanvas. - Feature request 2130940: Transponder info in gpredict. - Fixed a bug that could cause gpredict to hang during pass predictions. - Fixed bug 2139102: rigctld port. - Fixed bug 2130912: Crash when no rig or no rotator are defined. - Fixed bug 2130914: Gpredict doesn't handle PTT. - Fixed bug 2170642: Small error in user manual. - Fixed bug 2750119: Unable to set the time correctly in Time Controller. - Updated PDF user manual. - French translation. Changes in version 1.0 beta 1 (21 Sep 2008): - Radio doppler tuning via hamlibs rigctld. - Antenna rotator control via hamlibs rotctld. - User defined twilight threshold for predicting satellite visibility. - Feature request 1705375: Restore main window position and size. - Fixed bug 1752908: New satellites in TLE files. - Fixed bug 1818144: No log file created at first execution. - Fixed bug 1839140: Sky at a glance axis incorrectly labelled. - Fixed bug 1848837: Typo in preferences dialogue. - Fixed bug 1704133: Blank lines in config file. - Fixed bug 1954664: Wrong overpass prediction. - Fixed bug 1880815: Null pointer dereference causes crash on startup. - Updated PDF user manual. Changes in version 0.9.0 (29 Sep 2007): - Save satellite pass predictions to text file. - Fixed bug 1754801: Time Controller Window. - Fixed bug 1752910: Modules have no window icon. - Fixed bug 1752912: Module window title. - Log messages are now saved to $HOME/.gpredict2/logs/gpredict.log - Fixed bug 1752915: Pop-up menu in single satellite view. - Fixed bug 1763356: Geo sats take a really long time to load. - Fixed bug 1763321: Geo sats display very large hour value for AOS/LOS. - Fixed bug 1650261: Cloned module only opens in one view. - Fixed bug 1772454: Single pass prediction flags are reset to default. - Fixed a problem that would prevent gpredcit to be compiled using Gtk+ 2.12. - Other minor fixes and cleaning (bugs 1754255, 1752917, 1705238) - Fixed bug that caused incorrect calculation of sky tracks in non-realtime cases. Changes in version 0.8.0 (3 Jun 2007): - Implemented simulated real-time and manual time control in addition to real-time control. Each module has now its own time controller. - Sky at a glance pass prediction mode. - Background map selector. Use either stock maps or own maps of any size. - Adjust position of satellite names on the map in order to avoid clipping of the labels when the sat is close to the map border. - Allow user to explicitly select DEFAULT ground station even after a new ground station is selected as default (bug #1656943). - Allow users to specify ground station LAT and LON with up to four decimal digits. - Fixed a bug that prohibited showing of satellite names in the single-sat view when the satellite name contained an '&' character (bug #1644926). - Fixed a bug that prevented the "Enable rules hint in list views" setting to be disabled (bug #1728575). - Fixed a bug in the pass prediction code that could cause crashes when there were no passes with max_el greater than the required elevation. - Improved robustness of prediction code to avoid UI freeze when satellites have no passes in the near future. - Fixed more memory leaks. Changes in version 0.7.1 (20 Jan 2007): - Windows build files are now included in the source tarball. - Fixed a bug that prevented TLE to be updated under win32 (bug #1631803). - Fixed some severe memory leaks (bug #1636429). - Fixed a bug that caused an error message when creating modules with two views (bug #1570195). - Fixed a bug with missing arrows on win32 (bug #1580012). Changes in version 0.7.0 (3 Jan 2007): - Automatic update of TLE elements from network or local files. Gpredict can either notify the user when TLEs are getting too old, or perform automatic update in the background. The network update requires libcurl. - Added optional grid lines to the map view (30 deg resolution). - Added possibility to show ground tracks on the map (feature request #557586) - Added support for the optional operational status of satellites encoded into the satellite names in TLE coming from CelesTrak. - Fixed wrong epoch day in the satellite info dialogue (bug #1586341). - Polar and Az/El plots of passes in the single-pass dialogue. Changes in version 0.6.1 (5 Sep 2006): - Fixed bug that caused data to be installed into the wrong directory when using 'make install DESTDIR=/foo' (patch #1552216 by Denis Leroy). - Fixed bug that caused errors when user deleted the sample ground station while one or more modules were still using it (reported by Hamish Moffatt). Changes in version 0.6.0 (4 Sep 2006): - New module design: A module is no longer either a list or a map. A module can contain up to three views that can be any combination of map, list, polar and single satellite view. - Each module can be configured individually (colours, views, location) or it can use the global default settings. - Module have three states: Docked, Window and fullscreen. - Improved map view quality and performance with possibility to highlight areas covered by satellites. - List View is fully configurable with respect to which columns should be visible. Furthermore, the list view has a lots of new columns. - The upcoming passes dialogs can show much more details like TCA, duration and maximum elevation. - Context sensitive pop-up menus instead of buttons to access the most important functions. - Geographical coordinates can be shown using N, S, E and W suffixes instead og sign. This should settle the debate on whether negative longitude is East or West of Greenwich (I know which one is the correct one ;-). - Added support for imperial units (default is still the metric system). - Added support for user specified time format strings. - No upper limit on the number of satellites. - Uses SGP4/SDP4 algorithms for element set propagation. - Requires Gtk+ 2.8 or later and GNOME dependencies are gone for good! - Gpredict is now much more robust against configuration errors. If something goes wrong you can simply delete all user configuration files and start from fresh. Besides that, gpredict only uses human readable configuration files, which can be edited using a text editor. It should, however, never be necessary to alter the configuration files manually. - Draft User Manual and Design Document. Changes in version 0.5.3 (19 Jan 2006): - Fixed errors when compiling on NetBSD, thanks to Berndt VK5ABN. This patch actually fixes the i18n installation problems on the other platforms too. Changes in version 0.5.2 (22 Dec 2005): - Fixed errors when compiling without hamlib support. Changes in version 0.5.1 (25 May 2005): - Selecting local time instead of UTC will now show the correct time everywhere in the program, thanks to Thierry F4DWV. - Show pass duration in minutes in the "Upcoming Passes" dialog. Changes in version 0.5.0 (29 Jan 2005): - It is now possible to specify a minimum elevation for upcoming passes. Passes with max elevation below this limit will be discaded from the list. - Hamlib 1.2.0 support. If compiled with hamlib support, gpredict now requires version 1.2.0 or later and will not compile with earlier versions. - Possibility for other map sizes. Gpredict will automatically detect the size of the map and scale the canvas accordingly. - Improved map display showing QTH, time, upcoming satellite and brief info about a selected satellite. Added buttons for pass prediction for selected satellite. - Satellite lists can be sorted automatically at regular intervals (preferences->lists->autosort). Disabled by default. - Satmap-druid will now open a warning dialog if the number of selected satellites is greater than 10 (bug #555595). - Fixed positioning and alignment errors in AOS prints. Added orbit number to detailed prints. - We now use the standard Gnome data directories (incompatible with previous releases). This means, that the 'configure --prefix=...' and other directory switches should work now. - Replaced obsolete ftime function with gettimeofday. The program should now compile on MacOS X and FreeBSD as well. - Simple and detailed pass predictions can again be saved to text files (bug #839373). - Show rise/set times in Sun and Moon frames. Changes in version 0.4.0 (17 Apr 2003): - TLE files are now stored in user's home directory in $HOME/.gpredict/tle and can be updated automatically at run time. The supplied files are identicale to those at celestrak.com except that the extensions have been changed from .txt to .tle - The tracked satellites are organized in a tree when presented to the user, rather than a flat list. - Updated locations database with more than 2000 known locations with altitude and weather station info. The known locations are now organized in a tree structure. If Hamlib 1.1.3 is available locator squares are calculated as well. - Possibility to have many locations configured and switch between them at runtime. - Possibility to use other maps. Gnome Predict comes bundled with 5 different maps, but the user can add and use his/her own maps by copying the images into the $HOME/.gpredict/maps/ directory. The maps will automatically be scaled to 800x400 pixels. - Notebook tabs/labels are only shown if there are at least two modules in the notebook (the user can override it though). - Module names can be up to 50 characters long. - Modules can be deleted and edited after creation (right-click in the iconbar). - Program is safe if a satellite somehow disappears from the database. - Fixed bugs #636186 and #633886. Changes in version 0.3.2 (24 Jun 2002): - No more crash when trying to open a deleted map file (bug #554785). - Number of satellites in the lists is displayed when the user creates a new module (bug #555595). - Updated gpredict.tle - Updated gpredict.pot - Updated da.po (new strings not translated though). Changes in version 0.3.1 (6 May 2002): - Added danish translation. - Fixed bug #551224. Changes in version 0.3.0 (13 Apr 2002): - Configuration is stored using GConf instead of gnome-config. - Default prefix is no longer /usr/local/groundstation - User configuration files are stored in ~/.gpredict/ (previously ~/.groundstation/) - Longitude is in the range of -180 to 180 negative being East of Greenwich. - Get detailed information about any of the upcoming passes. The plot showing a satellite pass can be saved as an image or printed. - New earth map module with the possibility to save and print the map as an image. - Anti aliased graphics giving much better quality. The user can disable this feature if the performance is very poor. - New shortcut bar. - Have as many modules open as your computer can handle. - Disabled the possibility to change the TLE file at runtime (obsolete feature). Changes in version 0.2.2 (23 Oct 2001): - Program can read custom TLE files even at runtime. - New, very flexible functions to predict upcoming passes. - Show/Save/Print/Plot detailed info about the upcoming pass. - Plot the upcoming pass in polar form (Az/El). - Show/Save/Print AOS/LOS times for upcoming passes. - Satellites in the satlist can have different colors for practically any state a satellite can have. - More options in the preferences box. Changes in version 0.2.1: - Just added a sentence to INSTALL about not to use ~ in --prefix=... Changes in version 0.2.0 (4 Aug 2001): - Abandoned client/server interface and included tracking code from Predict directly into the program - Can track a large number of satellites (current limit is at 200, but can be chaged by editing the 'defaults.h' file) - Predict AOS and LOS times for upcoming passes - The user can change the text colors in the satellite list - The user can change the time between satellite list updates gpredict/README000066400000000000000000000073651427377236300135700ustar00rootroot00000000000000 Gpredict is a real time satellite tracking and orbit prediction program for the Linux desktop. It uses the SGP4/SDP4 propagation algorithms together with NORAD two-line element sets (TLE). Some core features of Gpredict include: - Tracking of a large number of satellites only limited by the physical memory and processing power of the computer - Display the tracking data in lists, maps, polar plots and any combination of these - Have many modules open at the same either in a notebook or in their own windows. The modules can also run in full-screen mode - You can use many ground stations - Predict upcoming passes - Gpredict can run in real-time, simulated real-time (fast forward and backward), and manual time control - Detailed information both the real time and non-real time modes - Doppler tuning of radios via Hamlib rigctld - Antenna rotator control via Hamlib rotctld Visit the gpredict homepage at http://gpredict.oz9aec.net/ for more info. Requirements ------------ Gpredict is written using the Gtk+ 3 widget set, which is available for most Unix like operating systems, Mac and Windows. Following libraries are required for successful compilation of Gpredict: - Gtk+ 3 or later - GLib 2.32 or later - GooCanvas 2 - Libcurl 7.16 or later - Hamlib (runtime only, not required for build) If you compile Gpredict from source you will also need the development packages often with -dev or -devel in the package name, e.g. libgtk-3-dev. On Debian and Ubuntu systems you can install the build dependencies using: sudo apt install libtool intltool autoconf automake libcurl4-openssl-dev sudo apt install pkg-config libglib2.0-dev libgtk-3-dev libgoocanvas-2.0-dev To build and install gpredict from source, first unpack the source package: tar -xvf gpredict-x.y.z.tar.gz Then change to the gpredict-x.y.z directory and build gpredict: ./configure make make install The last step usually requires you to become root, otherwise you may not have the required permissions to install gpredict. If you can not or do not want to install gpredict as root, you can install gpredict into a custom directory by adding --prefix=somedir to the ./configure step. For example ./configure --prefix=/home/user/predict will configure the build to install the files into /home/user/gpredict folder. If you are building directly from the git repository, you have to run ./autogen.sh instead of of configure. You can pass the same options to the autogen.sh script as you would to the configure script. If you want to know more about installation options refer to the INSTALL file (not for beginners). Using Gpredict -------------- Gpredict comes bundled with some example data and will run "out of the box". Once you got the idea of the UI, you can either modify the settings of the default module (click on the small down-arrow in the top right corner), or create a new module through File -> New Module. You are highly encouraged to have a look at the user manual available at http://gpredict.oz9aec.net/documents.php User support ------------ User support is provided through the Gpredict forum hosted by the Libre Space Foundation: https://community.libre.space/c/gpredict Terms and conditions -------------------- Gpredict is released under the GNU General Public License and comes with NO WARRANTY whatsoever. If you have problems installing or using Gpredict, feel free to ask for support for example on the Gpredict forum hosted by the Libre Space Foundation https://community.libre.space/c/gpredict Note that the development environment is being migrated from Sourceforge to Github: https://github.com/csete/gpredict Mailing lists, old bug trackers, etc, are still available on Sourceforge: http://sourceforge.net/projects/gpredict Happy Tracking! Alexandru Csete OZ9AEC gpredict/autogen.sh000077500000000000000000000036231427377236300147020ustar00rootroot00000000000000#! /bin/sh # # Copyright (c) 2002 Daniel Elstner , # 2003 Murray Cumming # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License VERSION 2 as # published by the Free Software Foundation. You are not allowed to # use any other version of the license; unless you got the explicit # permission from the author to do so. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # This is meant to be a well-documented, good example of an autogen.sh script # Please email gnome-devel-list@gnome.org if you think it isn't. dir=`echo "$0" | sed 's,[^/]*$,,'` test "x${dir}" = "x" && dir='.' if test "x`cd "${dir}" 2>/dev/null && pwd`" != "x`pwd`" then echo "This script must be executed directly from the source directory." exit 1 fi # This might not be necessary with newer autotools: rm -f config.cache # We use glib-gettextize, which apparently does not add the intl directory # (containing a local copy of libintl code), and therefore has a slightly different Makefile. echo "- glib-gettextize." && \ glib-gettextize --copy --force && \ echo "- libtoolize." && \ libtoolize --force && \ echo "- intltoolize." && \ intltoolize --copy --force && \ echo "- aclocal" && \ aclocal && \ echo "- autoheader" && \ autoheader && \ echo "- autoconf." && \ autoconf && \ echo "- automake." && \ automake --add-missing --gnu && \ echo && \ ./configure "$@" && exit 0 exit 1 gpredict/configure.ac000066400000000000000000000106361427377236300151710ustar00rootroot00000000000000AC_INIT([gpredict], m4_esyscmd([./git-version-gen .tarball-version]), [https://community.libre.space/c/gpredict]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR(src/main.c) AM_CONFIG_HEADER(build-config.h) AM_INIT_AUTOMAKE([subdir-objects dist-bzip2 no-dist-gzip 1.6]) # ensure Makefiles are updated when Makefile.am is modified AM_MAINTAINER_MODE([enable]) # kernel style compile messages m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) # check for programs AC_PROG_CC AC_ISC_POSIX AC_HEADER_STDC AC_PROG_INTLTOOL([0.21]) AM_PROG_LIBTOOL AC_CHECK_HEADERS([sys/time.h unistd.h getopt.h]) if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall -Wextra -std=c11 -pedantic" fi # check for libm AC_CHECK_LIB([m], [sin],, AC_MSG_ERROR([Can not find libm. Check your libc installation])) PKG_PROG_PKG_CONFIG if test "x$PKG_CONFIG" = x; then AC_MSG_ERROR(Gpredict requires pkg-config) fi # check for libcurl if $PKG_CONFIG --atleast-version=7.19 libcurl; then CFLAGS="$CFLAGS `$PKG_CONFIG --cflags libcurl`" LIBS="$LIBS `$PKG_CONFIG --libs libcurl`" else AC_MSG_ERROR(Gpredict requires libcurl-dev 7.19 or later) fi # check for glib 2.40 or later if $PKG_CONFIG --atleast-version=2.40 glib-2.0; then CFLAGS="$CFLAGS" LIBS="$LIBS" else AC_MSG_ERROR(Gpredict requires libglib-dev 2.40 or later) fi # check for goocanvas 2 or 3 (depends on gtk and glib) if $PKG_CONFIG --atleast-version=2.0 goocanvas-2.0; then CFLAGS="$CFLAGS `$PKG_CONFIG --cflags goocanvas-2.0`" LIBS="$LIBS `$PKG_CONFIG --libs goocanvas-2.0`" havegoocanvas2=true else if $PKG_CONFIG --atleast-version=3.0 goocanvas-3.0; then CFLAGS="$CFLAGS `$PKG_CONFIG --cflags goocanvas-3.0`" LIBS="$LIBS `$PKG_CONFIG --libs goocanvas-3.0`" havegoocanvas3=true else AC_MSG_ERROR(Gpredict requires libgoocanvas-2.0-dev) fi fi # check for libgps (optional) if $PKG_CONFIG --atleast-version=2.90 libgps; then CFLAGS="$CFLAGS `$PKG_CONFIG --cflags libgps`" LIBS="$LIBS `$PKG_CONFIG --libs libgps`" havelibgps=true; AC_DEFINE(HAS_LIBGPS, 1, [Define if libgps is available]) else havelibgps=false; fi AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) # Add the languages which your application supports here. # Note that other progs only have ALL_LINGUAS and AM_GLIB_GNU_GETTEXT ALL_LINGUAS="cs da de el en_GB en_US es fi fr id it lt ru th uk" GETTEXT_PACKAGE=gpredict AC_SUBST(GETTEXT_PACKAGE) AM_GLIB_GNU_GETTEXT AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", "definition of GETTEXT_PACKAGE") # compiler flags to enable generating coverage report # using gcov AC_ARG_ENABLE(coverage, [ --enable-coverage enable coverge reports],enable_coerage=yes,enable_coverage=no) if test "$enable_coverage" = yes ; then CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"; AC_DEFINE(ENABLE_COV, 1, [Define if code coverage should be enabled.]) fi AC_ARG_ENABLE(caches,[ --enable-caches Run update-* to update desktop and icon caches when installing (disable if you install as not root)],,[enable_caches="no"]) AM_CONDITIONAL(UPDATE_CACHES, test x"$enable_caches" = "xyes") GLIB_V=`$PKG_CONFIG --modversion glib-2.0` GIO_V=`$PKG_CONFIG --modversion gio-2.0` GTHR_V=`$PKG_CONFIG --modversion gthread-2.0` GDK_V=`$PKG_CONFIG --modversion gdk-3.0` GTK_V=`$PKG_CONFIG --modversion gtk+-3.0` CURL_V=`$PKG_CONFIG --modversion libcurl` if test "$havegoocanvas2" = true ; then GOOC_V=`$PKG_CONFIG --modversion goocanvas-2.0` fi if test "$havegoocanvas3" = true ; then GOOC_V=`$PKG_CONFIG --modversion goocanvas-3.0` fi if test "$havelibgps" = true ; then GPS_V=`$PKG_CONFIG --modversion libgps` fi AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_OUTPUT([ Makefile doc/Makefile doc/man/gpredict.1 doc/man/Makefile src/Makefile src/sgpsdp/Makefile src/sgpsdp/TR/Makefile pixmaps/Makefile pixmaps/maps/Makefile pixmaps/logos/Makefile pixmaps/icons/Makefile data/Makefile data/desktop/Makefile data/satdata/Makefile po/Makefile.in ]) echo echo SUMMARY: echo echo Gpredict version... : $VERSION echo Glib version....... : $GLIB_V echo Gio version........ : $GIO_V echo Gthread version.... : $GTHR_V echo Gdk version........ : $GDK_V echo Gtk+ version....... : $GTK_V echo GooCanvas version.. : $GOOC_V echo Libcurl version.... : $CURL_V if test "$havelibgps" = true ; then echo Libgps version..... : $GPS_V fi # echo Enable coverage.... : $enable_coverage # echo gpredict/contributing.md000066400000000000000000000065761427377236300157440ustar00rootroot00000000000000# Gpredict Contribution Guidelines # ## Introduction ## Thank you for considering contributing to Gpredict. Below you can find some brief guidelines for how to make your first contribution. The most important thing to understand is that Gpredict is "old" software with the first release dating back to 2001. As a consequence, it contains a lot of legacy code and design choices that do not live up to what one would expect from modern desktop software. Therefore, the primary focus for the time being is fixing bugs and rewriting the parts that are causing poor user experience or difficulties in maintaining the software. Contributions that add new features or functionality not currently on the roadmap have very low priority. The roadmap consists mostly of, in prioritized order: 1. Issues included in a [milestone](https://github.com/csete/gpredict/milestones) 2. Issues tagged with the labels [bug](https://github.com/csete/gpredict/labels/bug), [enhancement](https://github.com/csete/gpredict/labels/enhancement), [feature](https://github.com/csete/gpredict/labels/feature), [documents](https://github.com/csete/gpredict/labels/feature), and [help wanted](https://github.com/csete/gpredict/labels/help%20wanted) ## How Can You Help? ## The areas where I need most help with at the moment are: 1. Testing and [reporting bugs](#reporting-bugs) 2. [Fixing bugs](#fixing-bugs) 3. [Providing user support](#providing-user-support) 4. [Packaging](#packaging) 5. [Website](#website) ## Reporting Bugs ## If you have found a new bug in Gpredict, please report it using the [Gpredict issue tracker](https://github.com/csete/gpredict/issues) on GitHub. Please make sure to provide all the information that is necessary to reproduce the bug, including but not limited to: 1. Your operating system. 2. Which version of Gpredict and how it was installed. 3. Steps required to trigger the bug. ## Fixing Bugs ## Bugfixes are always welcome and are a very good way for making your first contribution and they make a good first impression. However, before submitting a pull request, please ensure that: * Your changes are as small as possible and fix only one bug. * Your changes are well tested. * Your commits are atomic, i.e. complete and functional. * Write [good commit messages](https://chris.beams.io/posts/git-commit/) and make sure to reference the issue you are fixing. * Avoid submitting merge commits; rebase your working branch instead. * If you have a series of commits where one commit fixes a previous one, squash them. * The pull request should cover only one topic, otherwise the review will be difficult and confusing. Furthermore, until we get a formal coding style guide, please try to follow the coding style used in the surrounding code. ## Providing User Support ## We have a very nice [user support forum](https://community.libre.space/c/gpredict/) hosted by Libre Space Foundation. Please help others who need technical support. ## Packaging ## I am doing my best to make Gpredict available on as many platforms as possible. While I can write platform independent code, I could definitely use some help with packaging and testing Gpredict on Windows and Mac OS X. ## Website ## I think that the [existing website](http://gpredict.oz9aec.net/) makes it very clear that I need help with creating a new website. Please let me know if you wish to help. Thanks for reading this far 🙂 Alex, OZ9AEC gpredict/data/000077500000000000000000000000001427377236300136065ustar00rootroot00000000000000gpredict/data/.gitignore000066400000000000000000000000561427377236300155770ustar00rootroot00000000000000Makefile Makefile.in desktop/gpredict.desktop gpredict/data/Amateur.mod000066400000000000000000000000711427377236300157030ustar00rootroot00000000000000[GLOBAL] SATELLITES=24278;25544;27607;39444;40967;43017; gpredict/data/Makefile.am000066400000000000000000000002361427377236300156430ustar00rootroot00000000000000SUBDIRS = satdata desktop gpredict_datdir = $(pkgdatadir)/data gpredict_dat_DATA = locations.dat sample.qth Amateur.mod EXTRA_DIST = $(gpredict_dat_DATA) gpredict/data/desktop/000077500000000000000000000000001427377236300152575ustar00rootroot00000000000000gpredict/data/desktop/Makefile.am000066400000000000000000000007621427377236300173200ustar00rootroot00000000000000desktop_in_files = gpredict.desktop.in desktopdir = $(datadir)/applications desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ EXTRA_DIST = $(desktop_in_files) $(desktop_DATA) DISTCLEANFILES = gpredict.desktop UPDATE_DESKTOP = \ if which update-desktop-database>/dev/null 2>&1 ; then \ update-desktop-database; \ fi install-data-hook: if UPDATE_CACHES $(UPDATE_DESKTOP) else @true endif uninstall-hook: if UPDATE_CACHES $(UPDATE_DESKTOP) else @true endif gpredict/data/desktop/gpredict.desktop.in000066400000000000000000000002621427377236300210600ustar00rootroot00000000000000[Desktop Entry] Name=Gpredict Comment=Satellite tracker Exec=gpredict Icon=gpredict-icon Terminal=false Type=Application Categories=HamRadio;Science;Astronomy;Education;Network; gpredict/data/locations.dat000066400000000000000000012136701427377236300163050ustar00rootroot00000000000000Africa;Algeria;Annaba;DABB;36.8333;7.8167;4 Africa;Algeria;Aoulef ;DAAF;26.967;1.083;309 Africa;Algeria;Batna;DABT;35.550;6.183;1052 Africa;Algeria;Bechar;DAOR;31.617;-2.233;773 Africa;Algeria;Bejaia;DAAE;36.717;5.067;2 Africa;Algeria;Biskra;DAUB;34.800;5.733;87 Africa;Algeria;Bordj Mokhtar;DATM;21.375;0.924;396 Africa;Algeria;Bou-Saada;DAAD;35.333;4.200;461 Africa;Algeria;Chlef;DAOI;36.217;1.333;143 Africa;Algeria;Constantine;DABC;36.2833;6.6167;694 Africa;Algeria;Dar-El-Beida;DAAG;36.7167;3.25;25 Africa;Algeria;Djanet;DAAJ;24.550;9.467;1054 Africa;Algeria;Djelfa;DAFI;34.683;3.250;1144 Africa;Algeria;El Golea;DAUE;30.567;2.867;397 Africa;Algeria;El Oued;DAUO;33.500;6.117;63 Africa;Algeria;Ghardaia;DAUG;32.3833;3.8167;450 Africa;Algeria;Hassi-Messaoud;DAUH;31.6667;6.15;142 Africa;Algeria;Illizi;DAAP;26.500;8.417;558 Africa;Algeria;In Amenas;DAUZ;28.05;9.6333;562 Africa;Algeria;In Guezzam;DATG;19.567;5.750;399 Africa;Algeria;In Salah North;DAUI;27.250;2.517;269 Africa;Algeria;Jijel Achouat;DAAV;36.883;5.817;2 Africa;Algeria;Laghouat;DAUL;33.767;2.933;765 Africa;Algeria;Mascara-Ghriss;DAOV;35.200;0.133;514 Africa;Algeria;Mecheria;DAAY;34.933;-0.433;1149 Africa;Algeria;Oran;DAOO;35.6333;-0.6;90 Africa;Algeria;Oran/Tafaraoui;DAOL;35.542;-0.532;112 Africa;Algeria;Ouargla;DAUU;31.917;5.400;141 Africa;Algeria;Setif;DAAS;36.183;5.417;1038 Africa;Algeria;Skikda;DABP;36.933;6.950;7 Africa;Algeria;Tamanrasset;DAAT;22.8167;5.4667;0 Africa;Algeria;Tebessa;DABS;35.4833;8.1333;813 Africa;Algeria;Tiaret;DAOB;35.250;1.433;1127 Africa;Algeria;Tilrempt/Hassi R'mel;DAFH;32.930;3.312;774 Africa;Algeria;Timimoun;DAUT;29.250;0.283;312 Africa;Algeria;Tindouf;DAOF;27.667;-8.133;431 Africa;Algeria;Tlemcen Zenata;DAON;35.0167;-1.4667;247 Africa;Algeria;Touggourt;DAUK;33.117;6.133;85 Africa;Angola;Bie Silva Porto ;FNKU;-12.383;16.950;1701 Africa;Angola;Cabinda;FNCA;-5.550;12.183;25 Africa;Angola;Huambo Nova Lisboa ;FNHU;-12.800;15.750;1710 Africa;Angola;Luanda;FNLU;-8.850;13.233;74 Africa;Angola;Monbaca Benguela ;FNBG;-12.583;13.417;33 Africa;Benin;Bohicon;DBBC;7.167;2.067;166 Africa;Benin;Cotonou;DBBB;6.350;2.383;5 Africa;Benin;Kandi;DBBK;11.133;2.933;290 Africa;Benin;Natitingou;DBBN;10.317;1.383;460 Africa;Benin;Parakou;DBBP;9.350;2.617;392 Africa;Benin;Save;DBBS;8.033;2.467;199 Africa;Botswana;Francistown;FBFT;-21.217;27.500;1001 Africa;Botswana;Ghanzi;FBGZ;-21.700;21.650;1131 Africa;Botswana;Jwaneng;FBJW;-24.600;24.667;1189 Africa;Botswana;Kasane;FBKE;-17.817;25.150;968 Africa;Botswana;Letlhakane;FBLT;-21.417;25.600;986 Africa;Botswana;Maun;FBMN;-19.983;23.417;945 Africa;Botswana;Selebi Phikwe;FBSP;-22.055;27.820;892 Africa;Botswana;Seretse Khama International Airport;FBSK;-24.217;25.917;1005 Africa;Botswana;Shakawe;FBSW;-18.367;21.850;1032 Africa;Botswana;Sua-Pan;FBSN;-20.467;25.983;903 Africa;Botswana;Tsabong;FBTS;-26.050;22.450;960 Africa;Botswana;Tshane;FBTE;-24.017;21.883;1118 Africa;British Indian Ocean Territory;NSF DIEGO GARCIA;FJDG;-7.300;72.400;3 Africa;Burkina Faso;Bobo-Dioulasso;DFOO;11.167;-4.317;460 Africa;Burkina Faso;Boromo;DFCO;11.750;-2.933;270 Africa;Burkina Faso;Dedougou;DFOD;12.467;-3.483;300 Africa;Burkina Faso;Dori;DFEE;14.033;-0.033;276 Africa;Burkina Faso;Fada N'Gourma;DFEF;12.033;0.367;308 Africa;Burkina Faso;Gaoua;DFOG;10.333;-3.183;333 Africa;Burkina Faso;Ouagadougou;DFFD;12.350;-1.517;316 Africa;Burkina Faso;Ouahigouya;DFCC;13.567;-2.417;337 Africa;Burkina Faso;Po;DFCP;11.150;-1.150;320 Africa;Burundi;Bujumbura;HBBA;-3.317;29.317;782 Africa;Cameroon;Abong-Mbang;FKAG;3.967;13.200;693 Africa;Cameroon;Bafia;FKAF;4.733;11.250;500 Africa;Cameroon;Bamenda ;FKKV;6.050;10.117;1239 Africa;Cameroon;Banyo;FKAB;6.783;11.817;1110 Africa;Cameroon;Batouri;FKKI;4.467;14.367;656 Africa;Cameroon;Betare-Oya;FKAO;5.600;14.067;815 Africa;Cameroon;Douala Obs.;FKKD;4.000;9.733;10 Africa;Cameroon;Garoua;FKKR;9.333;13.383;242 Africa;Cameroon;Koundja;FKKM;5.650;10.750;1208 Africa;Cameroon;Kribi;FKKB;2.950;9.900;10 Africa;Cameroon;Lomie;FKAL;3.150;13.617;624 Africa;Cameroon;Mamfe;FKKF;5.717;9.283;126 Africa;Cameroon;Maroua-Salak;FKKA;10.450;14.250;423 Africa;Cameroon;Meiganga;FKAM;6.533;14.367;1027 Africa;Cameroon;Ngaoundere;FKKN;7.350;13.567;1114 Africa;Cameroon;Nkongsamba;FKAN;4.950;9.933;816 Africa;Cameroon;Tiko;FKKC;4.083;9.367;52 Africa;Cameroon;Yaounde;FKYS;3.833;11.517;751 Africa;Cameroon;Yoko;FKAY;5.550;12.367;1027 Africa;Cameroon;Younde Ii;FKKY;3.833;11.533;751 Africa;Cape Verde;Sal;GVAC;16.733;-22.950;54 Africa;Chad;Abeche;FTTC;13.850;20.850;545 Africa;Chad;Am-Timan;FTTN;11.033;20.283;433 Africa;Chad;Bokoro;FTTK;12.383;17.050;300 Africa;Chad;Bol-Berim;FTTL;13.433;14.733;291 Africa;Chad;Faya;FTTY;18.000;19.167;235 Africa;Chad;Moundou;FTTD;8.617;16.067;428 Africa;Chad;Ndjamena;FTTJ;12.133;15.033;295 Africa;Chad;Pala;FTTP;9.367;14.917;467 Africa;Chad;Sarh;FTTA;9.150;18.383;365 Africa;Comoros;Dzaoudzi / Pamanzi Mayotte ;FMCZ;-12.800;45.283;8 Africa;Comoros;Hahaya International Airport;FMCH;-11.533;43.267;29 Africa;Comoros;Ouani Anjouan ;FMCV;-12.117;44.433;19 Africa;Cote d'Ivoire;Abidjan;DIAP;5.250;-3.933;7 Africa;Cote d'Ivoire;Adiake;DIAD;5.300;-3.300;33 Africa;Cote d'Ivoire;Bondoukou;DIBU;8.050;-2.783;369 Africa;Cote d'Ivoire;Bouake;DIBK;7.733;-5.067;376 Africa;Cote d'Ivoire;Daloa;DIDL;6.867;-6.467;276 Africa;Cote d'Ivoire;Dimbokro;DIDK;6.650;-4.700;92 Africa;Cote d'Ivoire;Gagnoa;DIGA;6.133;-5.950;205 Africa;Cote d'Ivoire;Korhogo;DIKO;9.417;-5.617;381 Africa;Cote d'Ivoire;Man;DIMN;7.383;-7.517;339 Africa;Cote d'Ivoire;Odienne;DIOD;9.500;-7.567;434 Africa;Cote d'Ivoire;San Pedro;DISP;4.750;-6.650;30 Africa;Cote d'Ivoire;Sassandra;DISS;4.950;-6.083;62 Africa;Cote d'Ivoire;Tabou;DITB;4.417;-7.367;21 Africa;Cote d'Ivoire;Yamoussoukro;DIYO;6.900;-5.350;196 Africa;Djibouti;Djibouti \ Ambouli;HDAM;11.550;43.167;49 Africa;Djibouti;Djibouti;HFFF;11.550;43.150;13 Africa;Egypt;Alexandria Borg El Arab;HEBA;31.517;30.167;54 Africa;Egypt;Alexandria/Nouzha;HEAX;31.2;29.95;7 Africa;Egypt;Asswan;HESN;23.9667;32.7833;194 Africa;Egypt;Asyut;HEAT;27.050;31.017;226 Africa;Egypt;Cairo;HECA;30.1333;31.4;74 Africa;Egypt;El Arish;HEAR;31.083;33.817;31 Africa;Egypt;El Tor;HETR;28.233;32.617;21 Africa;Egypt;Hurguada;HEGN;27.150;33.717;16 Africa;Egypt;Luxor;HELX;25.6667;32.7;99 Africa;Egypt;Mersa Matruh;HEMM;31.3333;27.2167;30 Africa;Egypt;Port Said;HEPS;31.2667;32.3;6 Africa;Egypt;Sharm El Sheikhintl;HESH;27.9667;34.3833;0 Africa;Egypt;Taba;HETB;29.599;34.777;749 Africa;Equatorial Guinea;Malabo/Fernando Poo;FGSL;3.750;8.767;56 Africa;Ethiopia;Addis Ababa;HAAB;8.983;38.800;2355 Africa;Ethiopia;Agordat ;HAAG;15.550;37.883;626 Africa;Ethiopia;Arba Minch;HAAM;6.067;37.667;1219 Africa;Ethiopia;Asmara;HHAS;15.283;38.917;2356 Africa;Ethiopia;Assab;HASB;13.067;42.717;14 Africa;Ethiopia;Assosa / Asosa ;HASO;10.033;34.533;1733 Africa;Ethiopia;Awash ;HAAW;8.983;40.167;1052 Africa;Ethiopia;Awassa;HALA;7.067;38.500;1652 Africa;Ethiopia;Axum;HAAX;14.117;38.717;2134 Africa;Ethiopia;Baco / Bako ;HABC;5.833;36.617;1311 Africa;Ethiopia;Bahar Dar;HABD;11.600;37.400;1820 Africa;Ethiopia;Combolcha;HADC;11.083;39.717;1864 Africa;Ethiopia;Debremarcos;HADM;10.350;37.717;2476 Africa;Ethiopia;Dire Dawa;HADR;9.600;41.867;1146 Africa;Ethiopia;Ghinnir / Ginir ;HAGH;7.150;40.717;1844 Africa;Ethiopia;Gode;HAGO;5.100;44.583;320 Africa;Ethiopia;Gondar;HAGN;12.533;37.433;1985 Africa;Ethiopia;Gore;HAGR;8.167;35.550;1974 Africa;Ethiopia;Harar Meda;HAHM;8.733;39.000;1876 Africa;Ethiopia;Jiggiga;HAJJ;9.333;42.717;1644 Africa;Ethiopia;Jimma;HAJM;7.667;36.833;1676 Africa;Ethiopia;Kabre Dare Military ;HAKD;6.750;44.283;550 Africa;Ethiopia;Makale;HAMK;13.500;39.483;2212 Africa;Ethiopia;Massawa;HAMS;15.617;39.450;10 Africa;Ethiopia;Masslo / Meslo ;HAML;6.367;39.833;2274 Africa;Ethiopia;Neghelli;HANG;5.283;39.750;1455 Africa;Ethiopia;Tessenei / Teseney ;HATS;15.117;36.683;615 Africa;Gabon;Bitam;FOOB;2.083;11.483;600 Africa;Gabon;Cocobeach;FOOC;1.000;9.600;12 Africa;Gabon;Franceville / Mvengue;FOON;-1.650;13.433;441 Africa;Gabon;Lambarene;FOGR;-0.717;10.233;27 Africa;Gabon;Lastoursville;FOOR;-0.833;12.717;483 Africa;Gabon;Libreville;FOOL;0.450;9.417;12 Africa;Gabon;Makokou;FOOK;0.567;12.867;509 Africa;Gabon;Mayumba;FOOY;-3.417;10.650;31 Africa;Gabon;Mekambo;FOOE;1.017;13.933;499 Africa;Gabon;Mitzic;FOOM;0.783;11.533;583 Africa;Gabon;Moanda;FOOD;-1.533;13.267;572 Africa;Gabon;Mouila;FOGM;-1.867;11.017;88 Africa;Gabon;Port-Gentil;FOOG;-0.700;8.750;3 Africa;Gabon;Tchibanga;FOOT;-2.850;11.017;83 Africa;Gambia, The;Banjul / Yundum;GBYD;13.350;-16.800;36 Africa;Ghana;Accra;DGAA;5.600;-0.167;68 Africa;Ghana;Ada;DGAD;5.783;0.633;5 Africa;Ghana;Akim Oda;DGKA;5.933;-0.983;139 Africa;Ghana;Akuse;DGAK;6.100;0.117;17 Africa;Ghana;Axim;DGTX;4.867;-2.233;38 Africa;Ghana;Bole;DGLB;9.033;-2.483;299 Africa;Ghana;Ho;DGAH;6.600;0.467;158 Africa;Ghana;Koforidua;DGKK;6.083;-0.250;166 Africa;Ghana;Kumasi;DGSI;6.717;-1.600;287 Africa;Ghana;Navrongo;DGLN;10.900;-1.100;201 Africa;Ghana;Saltpond;DGAS;5.200;-1.067;44 Africa;Ghana;Sefwi Bekwai;DGSB;6.200;-2.333;171 Africa;Ghana;Sunyani;DGSN;7.333;-2.333;309 Africa;Ghana;Takoradi;DGTK;4.883;-1.767;5 Africa;Ghana;Tamale;DGLE;9.500;-0.850;168 Africa;Ghana;Tema;DGAT;5.617;0.000;14 Africa;Ghana;Wa;DGLW;10.050;-2.500;323 Africa;Ghana;Wenchi;DGSW;7.750;-2.100;339 Africa;Ghana;Yendi;DGLY;9.450;-0.017;195 Africa;Guinea-Bissau;Bafata;GGBF;12.167;-14.667;42 Africa;Guinea-Bissau;Bissau Aeroport ;GGOV;11.883;-15.650;39 Africa;Guinea;Boke;GUOK;10.933;-14.317;69 Africa;Guinea;Conakry / Gbessia;GUCY;9.567;-13.617;26 Africa;Guinea;Faranah / Badala;GUFH;10.033;-10.750;458 Africa;Guinea;Kankan;GUXD;10.383;-9.300;377 Africa;Guinea;Kindia;GUID;10.050;-12.867;458 Africa;Guinea;Kissidougou;GUKU;9.183;-10.100;525 Africa;Guinea;Labe;GULB;11.317;-12.300;1025 Africa;Guinea;Macenta;GUMA;8.533;-9.467;543 Africa;Guinea;N'Zerekore;GUNZ;7.733;-8.833;470 Africa;Guinea;Siguiri;GUSI;11.433;-9.167;362 Africa;Kenya;Eldoret;HKEL;0.533;35.283;2120 Africa;Kenya;Embu;HKEM;-0.500;37.450;1493 Africa;Kenya;Garissa;HKGA;-0.467;39.633;138 Africa;Kenya;Isiolo ;HKIS;0.350;37.583;1067 Africa;Kenya;Kakamega;HKKG;0.283;34.783;1530 Africa;Kenya;Kericho;HKKR;-0.367;35.350;2184 Africa;Kenya;Kisii;HKKS;-0.667;34.783;1493 Africa;Kenya;Kisumu;HKKI;-0.100;34.750;1157 Africa;Kenya;Kitale;HKKT;1.017;35.000;1890 Africa;Kenya;Lamu;HKLU;-2.267;40.833;6 Africa;Kenya;Lodwar;HKLO;3.117;35.617;506 Africa;Kenya;Makindu;HKMU;-2.283;37.833;1000 Africa;Kenya;Malindi;HKML;-3.233;40.100;20 Africa;Kenya;Mandera;HKMA;3.933;41.867;230 Africa;Kenya;Marsabit;HKMB;2.300;37.900;1219 Africa;Kenya;Meru;HKME;0.083;37.650;1554 Africa;Kenya;Mombasa;HKMO;-4.033;39.617;57 Africa;Kenya;Moyale;HKMY;3.533;39.050;1097 Africa;Kenya;Nairobi ACC/FIC/RCC/MET/COM/;HKNA;-1.317;36.933;1624 Africa;Kenya;Nairobi / Dagoretti;HKNC;-1.300;36.750;1798 Africa;Kenya;Nairobi/Jomo Kenyatta Airport TWR/APP/NOF/Civil Airlines;HKJK;-1.317;36.917;1624 Africa;Kenya;Nairobi / Wilson;HKNW;-1.317;36.817;1683 Africa;Kenya;Nakuru;HKNK;-0.267;36.100;1901 Africa;Kenya;Nanyuki ;HKNY;-0.067;37.033;1905 Africa;Kenya;Narok;HKNO;-1.133;35.833;1890 Africa;Kenya;Nyeri;HKNI;-0.500;36.967;1759 Africa;Kenya;Voi;HKVO;-3.400;38.567;579 Africa;Kenya;Wajir;HKWJ;1.750;40.067;244 Africa;Lesotho;Maseru-Mia;FXMU;-29.450;27.550;1631 Africa;Lesotho;Maseru / Moshoeshoe;FXMM;-29.450;27.550;1631 Africa;Liberia;Grand Bassa, Roberts Field;GLRB;6.250;-10.350;18 Africa;Libya;Benina;HLLB;32.1;20.2667;132 Africa;Libya;Tripoli;HLLT;32.6667;13.15;82 Africa;Madagascar;Analalava;FMNL;-14.633;47.767;105 Africa;Madagascar;Andapa;FMND;-14.650;49.617;473 Africa;Madagascar;Antalaha;FMNH;-14.883;50.250;87 Africa;Madagascar;Antananarivo / Ivato;FMMI;-18.800;47.483;1279 Africa;Madagascar;Antsirabe;FMME;-19.817;47.067;1523 Africa;Madagascar;Besalampy;FMNQ;-16.750;44.483;38 Africa;Madagascar;Diego-Suarez;FMNA;-12.350;49.300;114 Africa;Madagascar;Farafangana;FMSG;-22.800;47.833;8 Africa;Madagascar;Fascene Nossi-Be ;FMNN;-13.317;48.317;10 Africa;Madagascar;Fianarantsoa;FMSF;-21.450;47.100;1115 Africa;Madagascar;Fort-Dauphin;FMSD;-25.033;46.950;8 Africa;Madagascar;Mahanoro;FMMH;-19.833;48.800;5 Africa;Madagascar;Maintirano;FMMO;-18.050;44.033;23 Africa;Madagascar;Majunga;FMNM;-15.667;46.350;26 Africa;Madagascar;Mananjary;FMSM;-21.200;48.367;5 Africa;Madagascar;Morombe;FMSR;-21.750;43.367;5 Africa;Madagascar;Morondava;FMMV;-20.283;44.317;7 Africa;Madagascar;Ranohira;FMSO;-22.550;45.400;824 Africa;Madagascar;Sainte-Marie Aerodrome;FMMS;-17.083;49.817;2 Africa;Madagascar;Sambava;FMNS;-14.283;50.167;5 Africa;Madagascar;Tamatave;FMMT;-18.117;49.400;5 Africa;Madagascar;Tulear;FMST;-23.383;43.733;8 Africa;Madagascar;Vohemar;FMNV;-13.367;50.000;6 Africa;Malawi;Chileka;FWCL;-15.683;34.967;766 Africa;Malawi;Chitipa;FWCT;-9.700;33.267;1278 Africa;Malawi;Dedza;FWDZ;-14.317;34.267;1630 Africa;Malawi;Karonga;FWKA;-9.950;33.883;529 Africa;Malawi;Lilongwe International Airport;FWKI;-13.783;33.767;1229 Africa;Malawi;Mangochi;FWMG;-14.433;35.250;485 Africa;Malawi;Monkey Bay;FWMY;-14.083;34.917;474 Africa;Malawi;Mzimba;FWMZ;-11.883;33.617;1349 Africa;Malawi;Mzuzu;FWUU;-11.450;34.017;1251 Africa;Malawi;Nkhota Kota;FWKK;-12.917;34.267;500 Africa;Malawi;Salima;FWSM;-13.750;34.583;513 Africa;Mali;Bamako / Senou;GABS;12.533;-7.950;380 Africa;Mali;Bougouni;GABG;11.417;-7.500;350 Africa;Mali;Gao;GAGO;16.267;-0.050;265 Africa;Mali;Hombori;GAHB;15.333;-1.683;287 Africa;Mali;Kayes;GAKY;14.433;-11.433;47 Africa;Mali;Kenieba;GAKA;12.850;-11.233;132 Africa;Mali;Kidal;GAKL;18.433;1.350;458 Africa;Mali;Kita;GAKT;13.067;-9.467;333 Africa;Mali;Koutiala;GAKO;12.383;-5.467;365 Africa;Mali;Menaka;GAMK;15.867;2.217;278 Africa;Mali;Mopti;GAMB;14.517;-4.100;276 Africa;Mali;Nara;GANK;15.167;-7.283;271 Africa;Mali;Nioro Du Sahel;GANR;15.233;-9.350;235 Africa;Mali;San;GASN;13.333;-4.833;283 Africa;Mali;Segou;GASG;13.400;-6.150;288 Africa;Mali;Sikasso;GASK;11.350;-5.683;374 Africa;Mali;Tessalit;GATS;20.200;0.983;494 Africa;Mali;Tombouctou;GATB;16.717;-3.000;263 Africa;Mauritania;Aioun El Atrouss;GQNA;16.700;-9.600;223 Africa;Mauritania;Akjoujt;GQNJ;19.750;-14.367;123 Africa;Mauritania;Atar;GQPA;20.517;-13.067;226 Africa;Mauritania;Bir Moghrein;GQPT;25.233;-11.617;364 Africa;Mauritania;Boutilimit;GQNB;17.533;-14.683;77 Africa;Mauritania;Kaedi;GQNK;16.150;-13.517;18 Africa;Mauritania;Kiffa;GQNF;16.633;-11.400;115 Africa;Mauritania;Nema;GQNI;16.600;-7.267;269 Africa;Mauritania;Nouadhibou;GQPP;20.933;-17.033;5 Africa;Mauritania;Nouakchott;GQNN;18.100;-15.950;2 Africa;Mauritania;Rosso;GQNR;16.500;-15.817;5 Africa;Mauritania;Tidjikja;GQND;18.567;-11.433;396 Africa;Mauritius;Plaisance Mauritius ;FIMP;-20.433;57.667;55 Africa;Mauritius;Rodrigues;FIMR;-19.683;63.417;58 Africa;Morocco;Agadir Al Massira;GMAD;30.333;-9.400;74 Africa;Morocco;Agadir;GMAA;30.383;-9.567;27 Africa;Morocco;Al Hoceima;GMTA;35.183;-3.850;27 Africa;Morocco;Casablanca;GMMC;33.567;-7.667;62 Africa;Morocco;Errachidia;GMFK;31.933;-4.400;1034 Africa;Morocco;Essaouira;GMMI;31.517;-9.783;15 Africa;Morocco;Fes-Sais;GMFF;33.933;-4.983;579 Africa;Morocco;Ifrane;GMFI;33.500;-5.167;1664 Africa;Morocco;Kenitra;GMMY;34.300;-6.600;5 Africa;Morocco;Laayoune/Hassan Isl;GMML;27.167;-13.216;6 Africa;Morocco;Marrakech;GMMX;31.617;-8.033;468 Africa;Morocco;Meknes;GMFM;33.883;-5.533;576 Africa;Morocco;Nador/Arwi;GMMW;34.989;-3.028;175 Africa;Morocco;Nador;GMFN;35.150;-2.917;3 Africa;Morocco;Nouasseur;GMMN;33.367;-7.583;200 Africa;Morocco;Ouarzazate;GMMZ;30.933;-6.900;1139 Africa;Morocco;Oujda;GMFO;34.783;-1.933;468 Africa;Morocco;Rabat-Sale;GMME;34.050;-6.767;84 Africa;Morocco;Safi;GMMS;32.283;-9.233;52 Africa;Morocco;Sidi Ifni;GMMF;29.367;-10.183;58 Africa;Morocco;Tanger Aerodrome ;GMTT;35.733;-5.900;19 Africa;Morocco;Tan-Tan;GMAT;28.450;-11.150;229 Africa;Morocco;Taza;GMFZ;34.217;-4.000;509 Africa;Morocco;Tetuan / Sania Ramel;GMTN;35.583;-5.333;10 Africa;Mozambique;Beira;FQBR;-19.800;34.900;8 Africa;Mozambique;Chimoio;FQCH;-19.117;33.467;731 Africa;Mozambique;Cuamba;FQCB;-14.817;36.533;606 Africa;Mozambique;Inhambane;FQIN;-23.867;35.383;14 Africa;Mozambique;Lichinga;FQLC;-13.300;35.233;1364 Africa;Mozambique;Lumbo;FQLU;-15.033;40.667;10 Africa;Mozambique;Maputo / Mavalane;FQMA;-25.917;32.567;39 Africa;Mozambique;Mocimboa Da Praia;FQMP;-11.350;40.367;27 Africa;Mozambique;Nampula;FQNP;-15.100;39.283;438 Africa;Mozambique;Pemba;FQPB;-12.983;40.533;101 Africa;Mozambique;Quelimane;FQQL;-17.883;36.883;6 Africa;Mozambique;Tete / Chingozi;FQTT;-16.100;33.633;160 Africa;Mozambique;Tete;FQTE;-16.183;33.583;149 Africa;Mozambique;Vilanculos;FQVL;-22.000;35.317;20 Africa;Mozambique;Xai Xai;FQXA;-25.050;33.633;4 Africa;Namibia;Gobabis;FAGB;-22.467;18.967;1440 Africa;Namibia;Grootfontein;FYGF;-19.600;18.117;1411 Africa;Namibia;J. G. Strijdom;FYWH;-22.483;17.467;1715 Africa;Namibia;Katima Mulilo;FYKM;-17.634;24.177;985 Africa;Namibia;Keetmanshoop;FYKT;-26.533;18.117;1067 Africa;Namibia;Luderitz / Diaz Point;FYLZ;-26.683;15.250;130 Africa;Namibia;Ondangwa;FYOA;-17.878;15.952;1096 Africa;Namibia;Rooikop Saaf / Civ ;FYRK;-22.983;14.650;88 Africa;Namibia;Rundu;FYRU;-17.917;19.767;1083 Africa;Namibia;Walvis Bay;FYWB;-22.983;14.650;46 Africa;Namibia;Windhoek, Town MET;FYWW;-22.567;17.100;1725 Africa;Niger;Agadez;DRZA;16.967;7.983;501 Africa;Niger;Bilma;DRRI;18.683;12.917;355 Africa;Niger;Birni-N'Konni;DRRB;13.800;5.250;272 Africa;Niger;Diffa;DRZF;13.417;12.783;303 Africa;Niger;Gaya;DRRG;11.883;3.450;202 Africa;Niger;Goure;DRZG;13.983;10.300;464 Africa;Niger;Maine-Soroa;DRZM;13.233;11.983;338 Africa;Niger;Maradi;DRRM;13.467;7.083;372 Africa;Niger;Niamey-Aero;DRRN;13.483;2.167;223 Africa;Niger;Tahoua;DRRT;14.900;5.250;386 Africa;Niger;Tillabery;DRRL;14.200;1.450;209 Africa;Niger;Zinder;DRZR;13.783;8.983;452 Africa;Nigeria;Bida;DNBI;9.100;6.017;137 Africa;Nigeria;Calabar;DNCA;4.967;8.350;63 Africa;Nigeria;Enugu;DNEN;6.467;7.550;137 Africa;Nigeria;Gusau;DNGU;12.167;6.700;463 Africa;Nigeria;Ibadan;DNIB;7.433;3.900;234 Africa;Nigeria;Ilorin;DNIL;8.483;4.583;308 Africa;Nigeria;Jos;DNJO;9.867;8.900;1295 Africa;Nigeria;Kaduna;DNKA;10.600;7.450;645 Africa;Nigeria;Kano;DNKN;12.050;8.533;476 Africa;Nigeria;Maiduguri;DNMA;11.850;13.083;354 Africa;Nigeria;Makurdi;DNMK;7.683;8.617;113 Africa;Nigeria;Lagos / Ikeja;DNMM;6.583;3.333;40 Africa;Nigeria;Oshogbo;DNOS;7.783;4.483;305 Africa;Nigeria;Port Harcourt;DNPO;4.850;7.017;18 Africa;Nigeria;Sokoto;DNSO;13.017;5.250;351 Africa;Nigeria;Yola;DNYO;9.233;12.467;191 Africa;Nigeria;Zaria;DNZA;11.133;7.683;664 Africa;Portugal;Funchal / S. Catarina;LPFU;32.683;-16.767;58 Africa;Portugal;Porto Santo;LPPS;33.067;-16.350;97 Africa;Reunion;Saint-Denis / Gillot;FMEE;-20.883;55.517;21 Africa;Reunion;Saint-Pierre;FMEP;-21.333;55.483;52 Africa;Rwanda;Gisenyi;HRYG;-1.667;29.250;1556 Africa;Rwanda;Kigali;HRYR;-1.967;30.117;1491 Africa;Saint Helena;Wide Awake Field Ascension Island ;FHAW;-7.967;-14.400;86 Africa;Sao Tome and Principe;Principe;FPPR;1.650;7.417;3 Africa;Sao Tome and Principe;S. Tome;FPST;0.383;6.717;8 Africa;Senegal;Cap-Skirring;GOGS;12.400;-16.750;16 Africa;Senegal;Dakar / Yoff;GOOY;14.733;-17.500;27 Africa;Senegal;Diourbel;GOOD;14.650;-16.233;7 Africa;Senegal;Kaolack;GOOK;14.133;-16.067;6 Africa;Senegal;Kedougou;GOTK;12.567;-12.217;178 Africa;Senegal;Kolda;GOGK;12.883;-14.967;10 Africa;Senegal;Linguere;GOOG;15.383;-15.117;20 Africa;Senegal;Matam;GOSM;15.650;-13.250;15 Africa;Senegal;Podor;GOSP;16.650;-14.967;6 Africa;Senegal;Saint-Louis;GOSS;16.050;-16.450;4 Africa;Senegal;Tambacounda;GOTT;13.767;-13.683;49 Africa;Senegal;Ziguinchor;GOGG;12.550;-16.267;26 Africa;Seychelles;Seychelles Inter-National Airport;FSIA;-4.667;55.517;3 Africa;Seychelles;Seychelles International Airport Rawinsonde Station ;FSSS;-4.683;55.533;4 Africa;Sierra Leone;Lungi;GFLL;8.617;-13.200;25 Africa;Somalia;Belet Uen;HCMN;4.700;45.217;173 Africa;Somalia;Berbera;HCMI;10.417;45.017;9 Africa;Somalia;Burao;HCMV;9.500;45.567;1032 Africa;Somalia;Hargeisa;HCMH;9.500;44.083;1326 Africa;Somalia;Mogadiscio;HCMM;2.033;45.350;9 Africa;South Africa;Alexander Bay;FAAB;-28.567;16.533;21 Africa;South Africa;Aliwal North;FAAN;-30.717;26.717;1348 Africa;South Africa;Beaufort West;FABY;-32.350;22.583;842 Africa;South Africa;Bethlehem Airport;FABM;-28.25;28.3333;1700 Africa;South Africa;Bloemfontein J. B. M. Hertzog;FABL;-29.1;26.3;1400 Africa;South Africa;Calvinia;FACV;-31.467;19.767;975 Africa;South Africa;Cape Town D. F. Malan;FACT;-33.9833;18.6;0 Africa;South Africa;Carolina;FACL;-26.067;30.117;1693 Africa;South Africa;De Aar;FADA;-30.650;24.017;1247 Africa;South Africa;De Aar;FADY;-30.633;23.917;384 Africa;South Africa;Durban Louis Botha;FADN;-29.9667;30.95;0 Africa;South Africa;Durban/Virginia;FAVG;-29.771;31.060;6 Africa;South Africa;East London;FAEL;-33.0333;27.8333;0 Africa;South Africa;Ellisras;FAER;-23.726;27.688;851 Africa;South Africa;Ermelo;FAEO;-26.500;29.983;1737 Africa;South Africa;Frankfort;FAFF;-27.267;28.500;1499 Africa;South Africa;Fraserburg;FAFR;-31.917;21.517;1264 Africa;South Africa;George Airport;FAGG;-34;22.3833;0 Africa;South Africa;Gough Island;FAGE;-40.350;-9.883;54 Africa;South Africa;Graaff Reinet;FAGR;-32.250;24.533;752 Africa;South Africa;Greytown;FAGY;-29.117;30.567;1100 Africa;South Africa;Hoedspruit;FAHS;-24.367;31.033;513 Africa;South Africa;Jan Smuts;FAJS;-26.1333;28.2333;1700 Africa;South Africa;Kimberley, Kim-Apt;FAKM;-28.800;24.767;1198 Africa;South Africa;Klerksdorp;FAKD;-26.867;26.717;1355 Africa;South Africa;Ladysmith;FALY;-28.567;29.767;1078 Africa;South Africa;Langebaanweg;FALW;-32.9667;18.1667;0 Africa;South Africa;Lanseria;FALA;-25.933;27.933;1377 Africa;South Africa;Lichtenburg;FALT;-26.1833;26.1833;0 Africa;South Africa;Mafikeng Intl. Ad;FAMM;-25.783;25.533;1281 Africa;South Africa;Margate;FAMG;-30.850;30.350;151 Africa;South Africa;Marion Island;FAME;-46.883;37.867;22 Africa;South Africa;Middelburg;FAMB;-31.483;25.033;1270 Africa;South Africa;Mossel Bay Cape Saint Blaize ;FAMO;-34.183;22.150;59 Africa;South Africa;Nelspruit;FANS;-25.433;30.983;671 Africa;South Africa;Newcastle;FANC;-27.783;29.983;1251 Africa;South Africa;Oudtshoorn;FAOH;-33.567;22.217;359 Africa;South Africa;Overberg;FAOB;-34.600;20.283;75 Africa;South Africa;Phalaborwa;FAPH;-23.933;31.150;427 Africa;South Africa;Pietermaritzburg;FAPM;-29.650;30.400;739 Africa;South Africa;Pietersburg;FAPB;-23.8667;29.45;1200 Africa;South Africa;Pietersburg Civil ;FAPI;-23.900;29.467;1327 Africa;South Africa;Plettenberg Bay;FAPG;-34.088;23.329;139 Africa;South Africa;Port Elizabeth;FAPE;-33.9833;25.6;0 Africa;South Africa;Port St Johns;FAPJ;-31.633;29.550;47 Africa;South Africa;Potchefstroom;FAPS;-26.671;27.082;1378 Africa;South Africa;Pretoria;FAPR;-25.7333;28.1833;1300 Africa;South Africa;Pretoria Irene ;FAIR;-25.917;28.217;1523 Africa;South Africa;Queenstown;FAQT;-31.900;26.867;1094 Africa;South Africa;Rand;FAGM;-26.250;28.000;1668 Africa;South Africa;Richard Bay;FARB;-28.800;32.100;47 Africa;South Africa;Rustenburg;FARG;-25.644;27.271;1128 Africa;South Africa;Sishen;FASS;-27.650;23.000;1173 Africa;South Africa;Springbok;FASB;-29.6667;17.8667;1000 Africa;South Africa;Springs;FASI;-26.248;28.398;1628 Africa;South Africa;Standerton;FASR;-26.933;29.217;1581 Africa;South Africa;Tristan Da Cunha;FATC;-37.050;-12.317;23 Africa;South Africa;Tzaneen ;FATZ;-23.817;30.333;583 Africa;South Africa;Ulundi;FAUL;-28.318;31.418;525 Africa;South Africa;Umtata;FAUT;-31.533;28.667;742 Africa;South Africa;Upington;FAUP;-28.4;21.2667;800 Africa;South Africa;Vereeniging;FAVV;-26.575;27.962;1483 Africa;South Africa;Vredendal;FAVR;-31.667;18.500;34 Africa;South Africa;Vryburg;FAVB;-26.950;24.633;1234 Africa;South Africa;Vryheid;FAVY;-27.783;30.800;1158 Africa;South Africa;Waterkloof (SAAF);FAWK;-25.833;28.217;1498 Africa;South Africa;Welkom;FAWM;-28.000;26.667;1338 Africa;South Africa;Witbank;FAWI;-25.831;29.192;1553 Africa;South Africa;Wonderboom / Pretoria;FAWB;-25.650;28.217;1248 Africa;Spain;Fuerteventura / Aeropuerto;GCFV;28.450;-13.867;22 Africa;Spain;Gran Canaria - Canary Islands;GCLP;27.933;-15.383;23 Africa;Spain;Hierro / Aeropuerto;GCHI;27.817;-17.883;32 Africa;Spain;Lanzarote / Aeropuerto;GCRR;28.950;-13.600;14 Africa;Spain;La Palma / Aeropuerto;GCLA;28.617;-17.750;29 Africa;Spain;Melilla;GEML;35.283;-2.950;47 Africa;Spain;Tenerife / Los Rodeos;GCXO;28.467;-16.317;632 Africa;Spain;Tenerife Sur;GCTS;28.050;-16.567;64 Africa;Sudan;Atbara;HSAT;17.700;33.967;347 Africa;Sudan;Damazine;HSDZ;11.783;34.383;474 Africa;Sudan;Dongola;HSDN;19.167;30.483;226 Africa;Sudan;El Fasher;HSFS;13.617;25.333;733 Africa;Sudan;El Obeid;HSOB;13.167;30.233;574 Africa;Sudan;Gedaref;HSGF;14.033;35.400;599 Africa;Sudan;Geneina;HSGN;13.483;22.450;805 Africa;Sudan;Juba;HSSJ;4.867;31.600;460 Africa;Sudan;Kadugli;HSLI;11.000;29.717;499 Africa;Sudan;Kassala;HSKA;15.467;36.400;500 Africa;Sudan;Khartoum;HSSS;15.600;32.550;382 Africa;Sudan;Kosti;HSKI;13.167;32.667;381 Africa;Sudan;Malakal;HSSM;9.550;31.650;387 Africa;Sudan;Nyala;HSNL;12.050;24.883;67 Africa;Sudan;Port Sudan;HSSP;19.583;37.217;3 Africa;Sudan;Port Sudan International;HSPN;19.433;37.233;138 Africa;Sudan;Renk;HSRN;11.750;32.783;282 Africa;Sudan;Sennar;HSNR;13.550;33.617;418 Africa;Sudan;Wadi Halfa;HSSW;21.817;31.483;183 Africa;Swaziland;Manzini / Matsapa Airport;FDMS;-26.533;31.300;641 Africa;Tanzania;Arusha;HTAR;-3.333;36.617;1387 Africa;Tanzania;Bukoba;HTBU;-1.333;31.817;1137 Africa;Tanzania;Dar Es Salaam Airport;HTDA;-6.867;39.200;55 Africa;Tanzania;Dodoma;HTDO;-6.167;35.767;1119 Africa;Tanzania;Iringa;HTIR;-7.667;35.750;1426 Africa;Tanzania;Kigoma;HTKA;-4.883;29.633;882 Africa;Tanzania;Kilimanjaro Airport;HTKJ;-3.417;37.067;891 Africa;Tanzania;Kilwa Masoko ;HTKI;-8.933;39.517;18 Africa;Tanzania;Mbeya;HTMB;-8.933;33.467;1704 Africa;Tanzania;Mombo;HTMO;-4.883;38.283;511 Africa;Tanzania;Morogoro;HTMG;-6.833;37.650;526 Africa;Tanzania;Moshi;HTMS;-3.350;37.333;854 Africa;Tanzania;Mtwara;HTMT;-10.267;40.183;113 Africa;Tanzania;Musoma;HTMU;-1.500;33.800;1147 Africa;Tanzania;Mwanza;HTMW;-2.467;32.917;1139 Africa;Tanzania;Nachingwea;HTNA;-10.350;38.750;463 Africa;Tanzania;Pemba / Karume Airport;HTPE;-5.250;39.817;25 Africa;Tanzania;Same;HTSE;-4.083;37.717;872 Africa;Tanzania;Shinyanga;HTSY;-3.500;33.000;1100 Africa;Tanzania;Songea;HTSO;-10.683;35.583;1067 Africa;Tanzania;Tabora Airport;HTTB;-5.083;32.833;1181 Africa;Tanzania;Tanga;HTTG;-5.083;39.067;39 Africa;Tanzania;Zanzibar / Kisauni;HTZA;-6.217;39.217;15 Africa;Togo;Atakpame;DXAK;7.583;1.117;400 Africa;Togo;Lome;DXXX;6.167;1.250;20 Africa;Togo;Mango;DXMG;10.367;0.467;145 Africa;Togo;Niamtougou;DXNG;9.767;1.100;342 Africa;Togo;Sokode;DXSK;8.983;1.150;386 Africa;Togo;Tabligbo;DXTA;6.583;1.500;44 Africa;Tunisia;Bizerte;DTTB;37.250;9.800;5 Africa;Tunisia;Djerba Mellita;DTTJ;33.867;10.767;3 Africa;Tunisia;El Borma;DTTR;31.683;9.167;258 Africa;Tunisia;Gabes;DTTG;33.883;10.100;4 Africa;Tunisia;Gafsa;DTTF;34.417;8.817;313 Africa;Tunisia;Habib Bourguiba ;DTMB;35.767;10.750;2 Africa;Tunisia;Jendouba;DTTN;36.483;8.800;143 Africa;Tunisia;Kairouan;DTTK;35.667;10.100;60 Africa;Tunisia;Kelibia;DTTL;36.850;11.083;29 Africa;Tunisia;Monastir-Skanes;DTTM;35.667;10.750;2 Africa;Tunisia;Remada;DTTD;32.317;10.400;300 Africa;Tunisia;Sfax El-Maou;DTTX;34.717;10.683;21 Africa;Tunisia;Tabarka;DTKA;36.950;8.750;20 Africa;Tunisia;Tozeur;DTTZ;33.917;8.100;87 Africa;Tunisia;Tunis-Carthage;DTTA;36.833;10.233;3 Africa;Uganda;Arua;HUAR;3.050;30.917;1204 Africa;Uganda;Entebbe Airport;HUEN;0.050;32.450;1155 Africa;Uganda;Fort Portal ;HUFP;0.667;30.283;1533 Africa;Uganda;Gulu;HUGU;2.750;32.333;1104 Africa;Uganda;Jinja;HUJI;0.450;33.183;1175 Africa;Uganda;Kabale;HUKB;-1.250;29.983;1867 Africa;Uganda;Kasese;HUKS;0.183;30.100;959 Africa;Uganda;Lira;HULI;2.250;32.900;1091 Africa;Uganda;Masindi;HUMI;1.683;31.717;1146 Africa;Uganda;Mbarara;HUMA;-0.617;30.650;1412 Africa;Uganda;Moroto ;HUMO;2.533;34.650;1280 Africa;Uganda;Soroti;HUSO;1.717;33.617;1132 Africa;Uganda;Tororo;HUTO;0.683;34.167;1170 Africa;Western Sahara;Villa Cisneros;GSVO;23.700;-15.867;10 Africa;Zambia;Chipata;FLCP;-13.550;32.583;1028 Africa;Zambia;Choma;FLCH;-16.833;27.067;1213 Africa;Zambia;Isoka;FLIK;-10.117;32.633;1360 Africa;Zambia;Kabompo;FLPO;-13.600;24.200;1075 Africa;Zambia;Kabwe;FLKW;-14.450;28.467;1206 Africa;Zambia;Kaoma;FLKO;-14.800;24.800;1213 Africa;Zambia;Kasama;FLKS;-10.217;31.133;1382 Africa;Zambia;Kasempa;FLPA;-13.533;25.850;1234 Africa;Zambia;Kawambwa;FLKB;-9.800;29.083;1323 Africa;Zambia;Livingstone;FLLI;-17.817;25.817;985 Africa;Zambia;Lundazi;FLLD;-12.283;33.200;1143 Africa;Zambia;Lusaka City Airport;FLLC;-14.450;28.467;1280 Africa;Zambia;Lusaka Internationalairport;FLLS;-15.317;28.450;1152 Africa;Zambia;Mansa;FLMA;-11.100;28.850;1382 Africa;Zambia;Mbala;FLBA;-8.850;31.333;1673 Africa;Zambia;Mfuwe;FLMF;-13.259;31.937;573 Africa;Zambia;Mongu;FLMG;-15.250;23.150;1052 Africa;Zambia;Mpika;FLMP;-11.900;31.433;1400 Africa;Zambia;Mwinilunga;FLMW;-11.750;24.433;1361 Africa;Zambia;Ndola;FLND;-13.000;28.650;1269 Africa;Zambia;Petauke;FLPE;-14.250;31.283;1035 Africa;Zambia;Senanga;FLSN;-16.100;23.267;1027 Africa;Zambia;Serenje;FLSE;-13.233;30.217;1384 Africa;Zambia;Sesheke;FLSS;-17.467;24.300;949 Africa;Zambia;Solwezi;FLSW;-12.183;26.383;1386 Africa;Zambia;Zambezi;FLZB;-13.533;23.117;1077 Africa;Zimbabwe;Beitbridge;FVBB;-22.217;30.000;456 Africa;Zimbabwe;Binga;FVBI;-17.617;27.333;620 Africa;Zimbabwe;Buffalo Range;FVCZ;-21.017;31.583;429 Africa;Zimbabwe;Bulawayo Airport;FVBU;-20.017;28.617;1326 Africa;Zimbabwe;Chipinge;FVCH;-20.200;32.617;1131 Africa;Zimbabwe;Gokwe;FVGO;-18.217;28.933;1282 Africa;Zimbabwe;Gweru;FVTL;-19.450;29.850;1428 Africa;Zimbabwe;Harare Kutsaga ;FVHA;-17.917;31.133;1479 Africa;Zimbabwe;Hwange National Park;FVWN;-18.633;27.000;1079 Africa;Zimbabwe;Kariba;FVKB;-16.517;28.883;518 Africa;Zimbabwe;Karoi;FVKA;-16.833;29.617;1343 Africa;Zimbabwe;Masvingo;FVMV;-20.067;30.867;1094 Africa;Zimbabwe;Mutoko;FVMT;-17.417;32.217;1244 Africa;Zimbabwe;Rusape;FVRU;-18.533;32.133;1430 Africa;Zimbabwe;Victoria Falls;FVFA;-18.100;25.850;1061 Asia;Afghanistan;Faizabad;OAFZ;37.117;70.517;1200 Asia;Afghanistan;Farah;OAFR;32.367;62.183;700 Asia;Afghanistan;Herat;OAHR;34.217;62.217;964 Asia;Afghanistan;Jabul-Saraj;OAJS;35.133;69.250;1630 Asia;Afghanistan;Jalalabad;OAJL;34.433;70.467;580 Asia;Afghanistan;Kabul Airport;OAKB;34.633;69.200;1789 Asia;Afghanistan;Mazar-I-Sharif;OAMS;36.700;67.200;378 Asia;Afghanistan;Shebirghan;OASG;36.667;65.717;360 Asia;Afghanistan;Shindand;OASD;33.400;62.283;1150 Asia;Afghanistan;Zaranj;OAZG;31.000;61.850;478 Asia;Afghanistan;Zebak;OAZB;36.500;71.250;2600 Asia;Bangladesh;Chittagong Patenga ;VGEG;22.267;91.817;4 Asia;Bangladesh;Cox's Bazar;VGCB;21.433;91.967;2 Asia;Bangladesh;Dhaka;VGTJ;23.767;90.383;8 Asia;Bangladesh;Ishurdi;VGIS;24.133;89.050;13 Asia;Bangladesh;Jessore;VGJR;23.183;89.167;6 Asia;Bangladesh;Kurmitola, Dia;VGZR;23.850;90.400;9 Asia;Bangladesh;Rajshahi;VGRJ;24.367;88.700;17 Asia;Bangladesh;Sylhet;VGSY;24.900;91.883;34 Asia;Cambodia;Kompong-Cham;VDKC;12.000;105.450;16 Asia;Cambodia;Phnom-Penh / Pochentong;VDPP;11.550;104.850;10 Asia;Cambodia;Siemreap;VDSR;13.367;103.850;15 Asia;India;Agartala;VEAT;23.883;91.250;15 Asia;India;Agra;VIAG;27.150;77.967;168 Asia;India;Ahmadabad;VAAH;23.0667;72.6333;55 Asia;India;Akola;VAAK;20.700;77.067;305 Asia;India;Allahabad / Bamhrauli;VIAL;25.450;81.733;97 Asia;India;Amritsar;VIAR;31.6333;74.8667;234 Asia;India;Aurangabad Chikalthan Aerodrome;VAAU;19.850;75.400;582 Asia;India;Bangalore / Hindustan;VOBG;12.950;77.667;888 Asia;India;Bareilly;VIBY;28.367;79.400;167 Asia;India;Belgaum / Sambra;VABM;15.850;74.617;758 Asia;India;Bellary;VOBI;15.150;76.850;448 Asia;India;Bhaunagar;VABV;21.750;72.200;5 Asia;India;Bhopal / Bairagarh;VABP;23.283;77.350;523 Asia;India;Bhubaneswar;VEBS;20.250;85.833;45 Asia;India;Bhuj-Rudramata;VABJ;23.250;69.667;78 Asia;India;Bilaspur;VABI;31.250;76.667;589 Asia;India;Bombay/Santacruz;VABB;19.1167;72.85;14 Asia;India;Calcutta/Dum Dum;VECC;22.65;88.45;6 Asia;India;Car Nicobar;VECX;9.150;92.817;10 Asia;India;Cochin / Willingdon;VOCC;9.950;76.267;1 Asia;India;Coimbatore / Peelamedu;VOCB;11.033;77.050;396 Asia;India;Cuddapah;VOCP;14.483;78.833;129 Asia;India;Dibrugarh / Mohanbari;VEMN;27.483;95.017;110 Asia;India;Gauhati;VEGT;26.100;91.583;47 Asia;India;Gaya;VEGY;24.750;84.950;110 Asia;India;Goa / Dabolim Airport;VAGO;15.383;73.817;42 Asia;India;Gorakhpur;VEGK;26.750;83.367;76 Asia;India;Gwalior;VIGR;26.233;78.250;205 Asia;India;Hissar;VIHR;29.167;75.733;216 Asia;India;Hyderabad;VOHY;17.45;78.4667;545 Asia;India;Imphal Tulihal;VEIM;24.767;93.900;780 Asia;India;Indore;VAID;22.717;75.800;561 Asia;India;Jabalpur;VAJB;23.200;79.950;391 Asia;India;Jaipur / Sanganer;VIJP;26.817;75.800;385 Asia;India;Jamshedpur;VEJS;22.817;86.183;140 Asia;India;Jhansi;VIJN;25.450;78.583;250 Asia;India;Jharsuguda;VEJH;21.917;84.083;228 Asia;India;Jodhpur;VIJO;26.300;73.017;217 Asia;India;Kanpur / Chakeri;VICX;26.400;80.400;123 Asia;India;Khandwa;VAKD;21.833;76.367;317 Asia;India;Kolhapur;VAKP;16.700;74.233;569 Asia;India;Kota Aerodrome;VIKO;25.150;75.850;273 Asia;India;Lucknow / Amausi;VILK;26.750;80.883;122 Asia;India;M. O. Ranchi;VERC;23.317;85.317;652 Asia;India;Madras/Minambakkam;VOMM;13;80.1833;16 Asia;India;Madurai;VOMD;9.833;78.083;139 Asia;India;Mangalore / Bajpe;VOML;12.917;74.883;102 Asia;India;Nagpur Sonegaon;VANP;21.1;79.05;310 Asia;India;New Delhi / Safdarjung;VIDD;28.583;77.200;211 Asia;India;New Delhi/Palam;VIDP;28.5667;77.1167;233 Asia;India;North Lakhimpur;VELR;27.233;94.117;101 Asia;India;Patna;VEPT;25.6;85.1;60 Asia;India;Port Blair;VEPB;11.667;92.717;73 Asia;India;Rajkot;VARK;22.300;70.783;134 Asia;India;Satna;VIST;24.567;80.833;315 Asia;India;Sholapur;VASL;17.667;75.900;477 Asia;India;Siliguri;VEBD;26.633;88.317;126 Asia;India;Thiruvananthapuram;VOTV;8.4667;76.95;8 Asia;India;Tiruchchirapalli;VOTR;10.7667;78.7167;88 Asia;India;Udaipur Dabok;VIUD;24.617;73.883;509 Asia;India;Varanasi/Babatpur;VIBN;25.45;82.8667;85 Asia;India;Vellore;VOVR;12.917;79.150;213 Asia;India;Vijayawada / Gannavaram;VOBZ;16.533;80.800;21 Asia;Iraq;Baghdad;ORBB;33.233;44.233;34 Asia;Iraq;Mosul;ORBM;36.317;43.150;223 Asia;Iraq;Saddam Irq-Afb / Civ ;ORBS;33.267;44.233;34 Asia;Iraq;Shaibah / Basrah;ORMS;30.417;47.650;19 Asia;Japan;Aguni Island;RORA;26.600;127.233;29 Asia;Japan;Akeno Ab;RJOE;34.5333;136.6833;9 Asia;Japan;Akita Airport;RJSK;39.6167;140.2167;96 Asia;Japan;Amami Airport;RJKA;28.4333;129.7167;7 Asia;Japan;Aomori Airport;RJSA;40.7333;140.7;202 Asia;Japan;Asahikawa Ab;RJCA;43.8;142.3667;118 Asia;Japan;Asahikawa Airport;RJEC;43.6667;142.45;211 Asia;Japan;Ashiya Ab;RJFA;33.8833;130.65;33 Asia;Japan;Atsugi US NAS;RJTA;35.45;139.45;65 Asia;Japan;Chichijima;RJAO;27.0833;142.1833;8 Asia;Japan;Chitose ASDF;RJCJ;42.8167;141.6833;0 Asia;Japan;Chitose Ab;RJCC;42.8;141.6667;30 Asia;Japan;Chofu Airport;RJTF;35.6667;139.5333;44 Asia;Japan;Fuji Ab;RJAT;35.3167;138.8667;683 Asia;Japan;Fukue Airport;RJFE;32.6667;128.8333;80 Asia;Japan;Fukui Airport;RJNF;36.1333;136.2333;8 Asia;Japan;Fukuoka Airport;RJFF;33.5833;130.45;12 Asia;Japan;Fukushima Airport;RJSF;37.233;140.433;372 Asia;Japan;Futenma Marine Corps Air Facility;ROTM;26.267;127.750;75 Asia;Japan;Gifu Ab;RJNG;35.3833;136.8667;42 Asia;Japan;Hachijojima Airport;RJTH;33.1167;139.7833;95 Asia;Japan;Hachinohe Ab;RJSH;40.55;141.4667;49 Asia;Japan;Hakodate Airport;RJCH;41.7667;140.8167;36 Asia;Japan;Hamamatsu Ab;RJNH;34.75;137.7;48 Asia;Japan;Hamby U. S. Army Airfield;ROHF;26.300;127.767;5 Asia;Japan;Hanamaki Airport;RJSI;39.4333;141.1333;93 Asia;Japan;Hateruma;RORH;24.067;123.800;13 Asia;Japan;Hiroshima Airport;RJOA;34.4333;132.9167;334 Asia;Japan;Hiroshimanishi;RJBH;34.367;132.433;5 Asia;Japan;Hofu Ab;RJOF;34.0333;131.55;5 Asia;Japan;Hyakuri Ab;RJAH;36.1833;140.4167;35 Asia;Japan;Ichikawa;RJAI;35.7333;139.9167;0 Asia;Japan;Iejima Auxiliary Ab;RODE;26.717;127.783;70 Asia;Japan;Iki Airport;RJDB;33.75;129.7833;16 Asia;Japan;Iruma Ab;RJTJ;35.8333;139.4167;93 Asia;Japan;Ishigakijima;ROIG;24.333;124.167;6 Asia;Japan;Iwakuni MCAS;RJOI;34.1333;132.2333;5 Asia;Japan;Iwami Airport;RJOW;34.667;131.800;54 Asia;Japan;Iwojima;RJAW;24.7833;141.3167;116 Asia;Japan;Izumo Airport;RJOC;35.4167;132.9;5 Asia;Japan;Kadena Ab;RODN;26.35;127.7667;48 Asia;Japan;Kagoshima Airport;RJFK;31.8;130.7167;275 Asia;Japan;Kamigoto;RJDK;33.017;129.183;20 Asia;Japan;Kanoya Ab;RJFY;31.3667;130.8333;68 Asia;Japan;Kansai International Airport;RJBB;34.4167;135.25;8 Asia;Japan;Kasumigaura Ab;RJAK;36.0333;140.2;29 Asia;Japan;Kasuminome Ab;RJSU;38.2333;140.9167;10 Asia;Japan;Kikai Island;RJKI;28.317;129.933;6 Asia;Japan;Kisarazu Ab;RJTK;35.4;139.9167;6 Asia;Japan;Kitadaito Island;RORK;25.917;131.333;22 Asia;Japan;Kitakyushu Airport;RJFR;33.8333;130.95;6 Asia;Japan;Kochi Airport;RJOK;33.5333;133.6667;10 Asia;Japan;Komatsu Ab;RJNK;36.3833;136.4167;9 Asia;Japan;Komatsujima Ab;RJOP;34;134.6333;6 Asia;Japan;Kumamoto Airport;RJFT;32.8333;130.85;196 Asia;Japan;Kumejima;ROKJ;26.333;126.800;4 Asia;Japan;Kushiro Airport;RJCK;43.0333;144.2;98 Asia;Japan;Kushiro;RJCS;42.983;144.400;32 Asia;Japan;Matsumoto Airport;RJAF;36.1667;137.9333;661 Asia;Japan;Matsushima Ab;RJST;38.4;141.2167;5 Asia;Japan;Matsuyama Airport;RJOM;33.8167;132.7;7 Asia;Japan;Memambetsu Airport;RJCM;43.8833;144.1667;36 Asia;Japan;Metabaru Ab;RJDM;33.3167;130.4167;19 Asia;Japan;Miho Ab;RJOH;35.4833;133.25;9 Asia;Japan;Minamidaitojima;ROMD;25.833;131.233;16 Asia;Japan;Minamitorishima;RJAM;24.3;153.9667;9 Asia;Japan;Misawa Ab;RJSM;40.7;141.3833;39 Asia;Japan;Miyakejima Airport;RJTQ;34.0667;139.5667;23 Asia;Japan;Miyakojima;ROMY;24.783;125.283;40 Asia;Japan;Miyazaki Airport;RJFM;31.8667;131.45;9 Asia;Japan;Mombetsu Airport;RJEB;44.25;143.5333;9 Asia;Japan;Muroran;RJCY;42.317;140.983;40 Asia;Japan;Nagasaki Airport;RJFU;32.9167;129.9167;5 Asia;Japan;Nagoya Airport;RJGG;35.250;136.933;14 Asia;Japan;Nagoya Airport;RJNN;35.25;136.9333;17 Asia;Japan;Naha Airport;ROAH;26.1833;127.65;6 Asia;Japan;Nakashibetsu Airport;RJCN;43.5667;144.9667;69 Asia;Japan;Nankishirahama Airport;RJBD;33.6667;135.35;108 Asia;Japan;New Tokyo International Airport;RJAA;35.7667;140.3833;44 Asia;Japan;Niigata Airport;RJSN;37.95;139.1167;4 Asia;Japan;Nyutabaru Ab;RJFN;32.0833;131.45;82 Asia;Japan;Obihiro Airport;RJCB;42.7333;143.2167;152 Asia;Japan;Odate-Noshiro Airport;RJSR;40.183;140.200;84 Asia;Japan;Oita Airport;RJFO;33.4833;131.7333;8 Asia;Japan;Ojika Island ;RJDO;33.217;129.050;20 Asia;Japan;Okayama Airport;RJOB;34.75;133.85;244 Asia;Japan;Oki Airport;RJNO;36.1833;133.3333;95 Asia;Japan;Okinoerabu;RJKB;27.4333;128.7;29 Asia;Japan;Okushiri Island;RJEO;42.067;139.450;36 Asia;Japan;Ominato Ab;RJSO;41.2333;141.1333;10 Asia;Japan;Osaka International Airport;RJOO;34.7833;135.45;15 Asia;Japan;Oshima Airport;RJTO;34.7833;139.3667;41 Asia;Japan;Ozuki Ab;RJOZ;34.05;131.05;7 Asia;Japan;Rebun Island;RJCR;45.450;141.033;27 Asia;Japan;Rishiri Island;RJER;45.250;141.183;30 Asia;Japan;Sado Airport;RJSD;38.050;138.417;23 Asia;Japan;Saga Airport;RJFS;33.150;130.300;2 Asia;Japan;Sapporo Ab;RJCO;43.1167;141.3833;11 Asia;Japan;Sasebo Usn;RJFW;33.150;129.717;19 Asia;Japan;Sendai Airport;RJSS;38.1333;140.9167;4 Asia;Japan;Shimofusa Ab;RJTL;35.8;140.0167;33 Asia;Japan;Shimoji-Shima Island;RORS;24.833;125.150;16 Asia;Japan;Shizuhama Ab;RJNY;34.8167;138.3;10 Asia;Japan;Shonai;RJSY;38.817;139.783;22 Asia;Japan;Tachikawa Ab;RJTC;35.7;139.4;98 Asia;Japan;Tajima;RJBT;35.5167;134.8;0 Asia;Japan;Takamatsu Airport;RJOT;34.2167;134.0167;188 Asia;Japan;Takao Radar Site;TAKA;35.567;133.233;15 Asia;Japan;Tanegashima Airport;RJFG;30.55;130.95;95 Asia;Japan;Tarama Island;RORT;24.650;124.700;9 Asia;Japan;Tateyama Ab;RJTE;34.9833;139.8333;6 Asia;Japan;Tokachi GSDF;RJCT;42.9;143.1667;0 Asia;Japan;Tokunoshima Island;RJKN;27.8333;128.8833;0 Asia;Japan;Tokushima Ab;RJOS;34.1333;134.6167;11 Asia;Japan;Tokyo Heliport;RJTI;35.6333;139.85;8 Asia;Japan;Tokyo International Airport;RJTT;35.55;139.7833;8 Asia;Japan;Tokyo New International Airport;RJAA;35.7667;140.3833;44 Asia;Japan;Tokyo;RJTD;35.683;139.767;5 Asia;Japan;Tottori Airport;RJOR;35.5333;134.1667;18 Asia;Japan;Toyama Airport;RJNT;36.65;137.1833;27 Asia;Japan;Tsuiki Ab;RJFZ;33.6833;131.05;20 Asia;Japan;Tsushima Airport;RJDT;34.2833;129.3333;66 Asia;Japan;Utsunomiya Ab;RJTU;36.5167;139.8667;105 Asia;Japan;Wakkanai Airport;RJCW;45.4;141.8;11 Asia;Japan;Yakushima;RJFC;30.3833;130.6667;38 Asia;Japan;Yamagata Airport;RJSC;38.4167;140.3667;108 Asia;Japan;Yamaguchi Ube Airport;RJDC;33.9333;131.2833;8 Asia;Japan;Yao Airport;RJOY;34.6;135.6;13 Asia;Japan;Yokosuka Fwf;RJTX;35.2833;139.6667;53 Asia;Japan;Yokota Ab;RJTY;35.75;139.35;142 Asia;Japan;Yonaguni Airport;ROYN;24.467;122.983;16 Asia;Japan;Yoron Island;RORY;27.050;128.400;16 Asia;Japan;Zama Airfield;RJTR;35.5167;139.4;112 Asia;Kazakhstan;Aktau;UATE;43.870;51.100;0 Asia;Kazakhstan;Aktjubinsk;UATT;50.283;57.150;227 Asia;Kazakhstan;Almaty;UAAA;43.233;76.933;847 Asia;Kazakhstan;Aralskoe More;UATA;46.783;61.650;56 Asia;Kazakhstan;Astana;UACC;51.200;71.450;0 Asia;Kazakhstan;Karaganda;UAKK;49.800;73.150;553 Asia;Kazakhstan;Kostanay;UAUU;53.206;63.551;182 Asia;Kazakhstan;Kzyl-Orda;UAOO;44.850;65.500;129 Asia;Kazakhstan;Shymkent;UAII;42.317;69.700;552 Asia;Kazakhstan;Uralsk;UARR;51.250;51.283;36 Asia;Korea, Democratic People's Republic of;Pyongyang;ZKPY;39.0333;125.7833;38 Asia;Korea, Republic of;Camp Stanley/H-207;RKSX;37.7167;127.1;0 Asia;Korea, Republic of;Cheju;RKPC;33.5;126.5;28 Asia;Korea, Republic of;Chongju Ab;RKTU;36.7;127.5;66 Asia;Korea, Republic of;Mangilsan Ab;RKTM;36.9333;126.45;0 Asia;Korea, Republic of;Osan Ab;RKSO;37.1;127.0333;12 Asia;Korea, Republic of;Paekado;RKTB;37.0167;126.05;0 Asia;Korea, Republic of;Paengnyongdo Ab;RKSP;37.9667;124.6667;177 Asia;Korea, Republic of;Pohang Ab;RKTH;35.9833;129.4167;20 Asia;Korea, Republic of;Pusan/Kimhae;RKPK;35.1833;128.9333;6 Asia;Korea, Republic of;Pyongtaek Ab;RKSG;36.9333;127;16 Asia;Korea, Republic of;Sangju;RKTS;36.4167;128.1667;0 Asia;Korea, Republic of;Seoul E Ab;RKSM;37.4333;127.1167;20 Asia;Korea, Republic of;Seoul/Kimp'O International Airport;RKSS;37.55;126.8;18 Asia;Korea, Republic of;Seoul/Yongdungp'O Rokaf Wc;RKSF;37.5;126.9333;0 Asia;Korea, Republic of;Songmu Ab;RKTE;36.4;127.5;79 Asia;Korea, Republic of;Suwon Ab;RKSW;37.25;127;24 Asia;Korea, Republic of;Taegu Ab;RKTN;35.9;128.65;37 Asia;Korea, Republic of;Taejon;RKTF;36.3;127.4;78 Asia;Korea, Republic of;Ulsan;RKPU;35.55;129.3167;33 Asia;Korea, Republic of;Woong Cheon;RKTW;36.2;126.55;0 Asia;Korea, Republic of;Yechon Ab;RKTY;36.6333;128.35;120 Asia;Korea, Republic of;Yeoju Range;RKSU;37.4333;127.6333;43 Asia;Korea, Republic of;Yongsan/H-208 Hp;RKSY;37.5167;126.9833;0 Asia;Korea, Republic of;Yosu;RKJY;34.8333;127.6167;20 Asia;Kyrgyzstan;Bishkek/Manas Airport;UAFM;42.850;74.583;0 Asia;Laos;Attopeu;VLAP;14.800;106.833;105 Asia;Laos;Luang-Prabang;VLLB;19.883;102.133;305 Asia;Laos;Pakse;VLIP;15.117;105.167;102 Asia;Laos;Saravane;VLSV;15.683;106.433;168 Asia;Laos;Savannakhet;VLSK;16.550;104.650;155 Asia;Laos;Sayaboury;VLSB;19.233;101.733;326 Asia;Laos;Thakhek;VLTK;17.383;104.650;52 Asia;Laos;Vientiane;VLVT;17.950;102.567;171 Asia;Maldives;Gan;VRGN;-0.683;73.150;2 Asia;Maldives;Male;VRMM;4.200;73.533;2 Asia;Mongolia;Ulan-Bator;ZMUB;47.850;106.767;0 Asia;Nepal;Bhairawa Airport;VNBW;27.517;83.450;109 Asia;Nepal;Biratnagar Airport;VNVT;26.483;87.267;72 Asia;Nepal;Jumla;VNJL;29.283;82.167;2300 Asia;Nepal;Kathmandu Airport;VNKT;27.700;85.367;1337 Asia;Nepal;Pokhara Airport;VNPK;28.217;84.000;827 Asia;Nepal;Simra Airport;VNSI;27.167;84.983;137 Asia;Nepal;Surkhet;VNSK;28.600;81.617;720 Asia;Nepal;Taplejung;VNTJ;27.350;87.667;1732 Asia;Pakistan;Dera Ismail Khan;OPDI;31.817;70.917;172 Asia;Pakistan;Hyderabad Airport;OPKD;25.383;68.417;40 Asia;Pakistan;Islamabad;OPRN;33.6167;73.1;508 Asia;Pakistan;Jacobabad;OPJA;28.300;68.467;55 Asia;Pakistan;Jiwani;OPJI;25.067;61.800;56 Asia;Pakistan;Karachi;OPKC;24.9;67.1333;22 Asia;Pakistan;Lahore City;OPLH;31.550;74.333;214 Asia;Pakistan;Lahore;OPLA;31.5167;74.4;217 Asia;Pakistan;Mianwali;OPMI;32.550;71.517;210 Asia;Pakistan;Multan;OPMT;30.200;71.433;122 Asia;Pakistan;Nawabshah;OPNH;26.25;68.3667;38 Asia;Pakistan;Panjgur;OPPG;26.967;64.100;980 Asia;Pakistan;Peshawar;OPPS;34.017;71.583;359 Asia;Pakistan;Quetta Airport;OPQT;30.250;66.883;1587 Asia;Pakistan;Risalpur;OPRS;34.067;71.983;315 Asia;Pakistan;Sargodha;OPSR;32.050;72.667;187 Asia;Pakistan;Sibi;OPSB;29.550;67.883;133 Asia;Pakistan;Sukkur;OPSK;27.722;68.792;60 Asia;People's Republic of China;Beijing;ZBAA;39.9333;116.2833;55 Asia;People's Republic of China;Chengdu;ZUUU;30.6667;104.0167;508 Asia;People's Republic of China;Dalian;ZYTL;38.9;121.6333;97 Asia;People's Republic of China;Guangzhou;ZGGG;23.1667;113.3333;42 Asia;People's Republic of China;Hangzhou;ZSHC;30.2333;120.1667;43 Asia;People's Republic of China;Hong Kong;VHHH;22.3333;114.1833;24 Asia;People's Republic of China;Kunming;ZPPP;25.0167;102.6833;1892 Asia;People's Republic of China;Lanzhou;ZLLL;36.0167;103.75;0 Asia;People's Republic of China;Macau;VMMC;22.167;113.567;114 Asia;People's Republic of China;Nanning;ZGNN;22.8167;108.35;73 Asia;People's Republic of China;Shanghai;ZSSS;31.1667;121.4333;3 Asia;People's Republic of China;Taiyuan;ZBYN;37.7833;112.55;779 Asia;People's Republic of China;Tianjin;ZBTJ;39.1833;117.35;0 Asia;People's Republic of China;Urumqi;ZWWW;43.9;87.4667;0 Asia;People's Republic of China;Xiamen;ZSAM;24.4833;118.0833;139 Asia;Singapore;Singapore;WSSS;1.3667;103.9833;16 Asia;Singapore;Singapore / Paya Lebar;WSAP;1.367;103.917;18 Asia;Sri Lanka;Anuradhapura;VCCA;8.333;80.417;89 Asia;Sri Lanka;Batticaloa;VCCB;7.717;81.700;5 Asia;Sri Lanka;Katunayake;VCBI;7.167;79.883;8 Asia;Sri Lanka;Ratmalana;VCCC;6.817;79.883;5 Asia;Sri Lanka;Trincomalee;VCCT;8.583;81.250;3 Asia;Taiwan;Chiang Kai Shek;RCTP;25.0833;121.2167;0 Asia;Taiwan;Chia Tung;RCFS;22.4167;120.55;0 Asia;Taiwan;Chiayi;RCKU;23.4667;120.3833;25 Asia;Taiwan;Chihhang;RCQS;22.8;121.1833;0 Asia;Taiwan;Chinmem/Shatou;RCBS;24.4333;118.3667;12 Asia;Taiwan;Donggang;RCMJ;22.467;120.433;8 Asia;Taiwan;Dongsha;RCLM;20.667;116.717;6 Asia;Taiwan;Dongshi;RCNO;23.267;119.667;45 Asia;Taiwan;Feng Nin Tw-Afb ;RCFN;22.767;121.083;42 Asia;Taiwan;Hengchun;RCKW;21.933;120.833;13 Asia;Taiwan;Hsinchu;RCPO;24.8167;120.9333;0 Asia;Taiwan;Hulien Ab;RCYU;24.033;121.617;16 Asia;Taiwan;Ilan;RCMS;24.750;121.767;9 Asia;Taiwan;Kangshan Tw-Afb ;RCAY;22.783;120.267;10 Asia;Taiwan;Kaohsiung;RCKH;22.5833;120.35;0 Asia;Taiwan;Lan Yu;RCLY;22.033;121.550;325 Asia;Taiwan;Makung Ab;RCQC;23.583;119.617;31 Asia;Taiwan;Mazu;RCFG;26.167;119.933;91 Asia;Taiwan;Pa Kuei / Bakuai;RCUK;24.933;121.300;141 Asia;Taiwan;Pingtung North;RCSQ;22.7;120.4833;0 Asia;Taiwan;Pingtung South Air Force Base ;RCDC;22.683;120.467;24 Asia;Taiwan;Sungshan/Taipei;RCSS;25.0667;121.55;0 Asia;Taiwan;Taichung Tw-Afb ;RCLG;24.183;120.650;112 Asia;Taiwan;Tainan Tw-Afb ;RCNN;22.950;120.200;19 Asia;Taiwan;Taoyuan Ab = 589650;RCGM;25.067;121.233;45 Asia;Taiwan;Wuchia Observatory;RCMQ;24.2667;120.6167;203 Asia;Tajikistan;Dushanbe;UTDD;38.550;68.783;803 Asia;Thailand;Chaiyaphum;VTUC;15.800;102.033;182 Asia;Thailand;Chanthaburi;VTBC;12.600;102.117;3 Asia;Thailand;Chiang Mai;VTCC;18.783;98.983;312 Asia;Thailand;Chiang Rai;VTCR;19.917;99.833;394 Asia;Thailand;Chon Buri;VTBS;13.367;100.983;1 Asia;Thailand;Chumphon;VTSD;10.483;99.183;3 Asia;Thailand;Don Muang;VTBD;13.917;100.600;4 Asia;Thailand;Hat Yai;VTSS;6.917;100.433;27 Asia;Thailand;Hua Hin;VTPH;12.583;99.950;5 Asia;Thailand;Kanchanaburi;VTBG;14.017;99.533;28 Asia;Thailand;Khon Kaen;VTUK;16.433;102.833;165 Asia;Thailand;Lampang;VTCL;18.283;99.517;241 Asia;Thailand;Loei;VTUL;17.450;101.733;253 Asia;Thailand;Mae Hong Son;VTCH;19.300;97.833;267 Asia;Thailand;Mae Sariang;VTCS;18.167;97.933;212 Asia;Thailand;Mae Sot;VTPM;16.667;98.550;196 Asia;Thailand;Mukdahan;VTUB;16.533;104.717;138 Asia;Thailand;Nakhon Phanom;VTUP;17.417;104.783;146 Asia;Thailand;Nakhon Ratchasima;VTUN;14.967;102.083;187 Asia;Thailand;Nakhon Sawan;VTPN;15.800;100.167;34 Asia;Thailand;Nakhon Si Thammarat;VTSN;8.467;99.967;7 Asia;Thailand;Nan;VTCN;18.767;100.767;200 Asia;Thailand;Nong Khai;VTUM;17.867;102.717;174 Asia;Thailand;Pattani;VTSK;6.783;101.150;5 Asia;Thailand;Phetchaburi;VTBJ;13.150;100.067;2 Asia;Thailand;Phitsanulok;VTPS;16.783;100.267;44 Asia;Thailand;Phrae;VTCP;18.167;100.167;161 Asia;Thailand;Phuket Airport;VTSP;8.117;98.317;6 Asia;Thailand;Prachin Buri;VTBI;14.050;101.367;5 Asia;Thailand;Prachuap Khirikhan;VTBP;11.833;99.833;4 Asia;Thailand;Ranong;VTSR;9.983;98.617;7 Asia;Thailand;Rayong;VTBU;12.633;101.350;3 Asia;Thailand;Roi Et;VTUR;16.050;103.683;140 Asia;Thailand;Sakon Nakhon;VTUS;17.150;104.133;171 Asia;Thailand;Satun;VTSA;6.650;100.083;4 Asia;Thailand;Songkhla;VTSH;7.200;100.600;4 Asia;Thailand;Surat Thani;VTSB;9.117;99.350;10 Asia;Thailand;Tak;VTPT;16.883;99.150;121 Asia;Thailand;Trang;VTST;7.517;99.617;14 Asia;Thailand;Ubon Ratchathani;VTUU;15.250;104.867;123 Asia;Thailand;Udon Thani;VTUD;17.383;102.800;177 Asia;Thailand;Uttaradit;VTPU;17.617;100.100;63 Asia;Turkmenistan;Ashgabat;UTAA;37.983;58.367;0 Asia;Uzbekistan;Dzizak;UTED;40.117;67.833;345 Asia;Uzbekistan;Nukus / Karakalpakstan;UTNN;42.480;59.630;0 Asia;Uzbekistan;Samarkand;UTSS;39.567;66.950;724 Asia;Uzbekistan;Tamdy;UTSM;41.733;64.617;238 Asia;Uzbekistan;Tashkent;UTTT;41.267;69.267;489 Asia;Uzbekistan;Termez;UTST;37.233;67.267;302 Asia;Uzbekistan;Urgench;UTNU;41.583;60.645;98 Asia;Viet Nam;Da Nang;VVDN;16.0333;108.1833;7 Asia;Viet Nam;Ha Noi;VVNB;21.0167;105.8;6 Asia;Viet Nam;Hanoi / Gialam;VVGL;21.033;105.850;12 Asia;Viet Nam;Ho Chi Minh;VVTS;10.8167;106.6667;19 Asia;Viet Nam;Hue;VVPB;16.400;107.683;17 Asia;Viet Nam;Nha Trang;VVNT;12.250;109.200;10 Asia;Vietnam;Pleiku City;VVPK;13.983;108.000;801 Asia;Vietnam;Quy Nhon;VVQN;13.767;109.217;6 Asia;Vietnam;Vinh;VVVH;18.700;105.667;6 Atlantic;Anguilla;Wallblake;TQPF;18.205;-63.055;31 Atlantic;Antigua and Barbuda;Blackburne / Plymouth;TRPM;16.750;-62.167;12 Atlantic;Antigua and Barbuda;Charlestown / Newcast;TKPN;17.200;-62.583;17 Atlantic;Antigua and Barbuda;Antigua;TAPA;17.1167;-61.7833;10 Atlantic;Barbados;Bridgetown City ;TBPO;13.100;-59.617;50 Atlantic;Barbados;Grantley Adams;TBPB;13.067;-59.483;50 Atlantic;Bermuda;Bermuda;TXKF;32.367;-64.683;6 Atlantic;British Virgin Islands;Beef Island, Tortola;TUPJ;18.450;-64.533;4 Atlantic;Puerto Rico;Aquadilla;TJBQ;18.5;-67.1333;69 Atlantic;Puerto Rico;Mayaguez;TJMZ;18.2667;-67.15;0 Atlantic;Puerto Rico;Ponce;TJPS;18.0167;-66.5667;0 Atlantic;Puerto Rico;San Juan;TJSJ;18.45;-66;0 Australasia;Australia;Adelaide;YPAD;-34.9333;138.5167;4 Australasia;Australia;Albany Airport;YPAL;-34.933;117.800;71 Australasia;Australia;Albury Airport;YMAY;-36.067;146.950;165 Australasia;Australia;Alice Springs;YBAS;-23.8;133.8833;547 Australasia;Australia;Amberley Aerodrome;YBAM;-27.633;152.717;27 Australasia;Australia;Archerfield Aerodrome;YBAF;-27.567;153.000;23 Australasia;Australia;Avalon, Avalon Airport;YMAV;-38.033;144.483;8 Australasia;Australia;Ayers Rock;YAYE;-25.183;130.967;496 Australasia;Australia;Bankstown Airport Aws;YSBK;-33.917;150.983;9 Australasia;Australia;Brisbane;YBBN;-27.3833;153.1;5 Australasia;Australia;Broken Hill Patton Street;YPBH;-31.967;141.467;315 Australasia;Australia;Broome;YBRM;-17.95;122.2167;9 Australasia;Australia;Bullsbrook Pearce Amo;YPEA;-31.667;116.017;45 Australasia;Australia;Cairns;YBCS;-16.8833;145.75;7 Australasia;Australia;Camden Airport;YSCN;-34.033;150.683;70 Australasia;Australia;Canberra;YSCB;-35.3;149.1833;580 Australasia;Australia;Ceduna Airport;YPCD;-32.117;133.700;23 Australasia;Australia;Charleville Airport;YBCV;-26.400;146.267;306 Australasia;Australia;Christmas Island;YPXM;-10.4333;105.6833;262 Australasia;Australia;Cocos Island;YPCC;-12.1833;96.8167;3 Australasia;Australia;Coffs Harbour Mo;YSCH;-30.317;153.117;5 Australasia;Australia;Coolangatta Airport Aws;YBCG;-28.167;153.500;6 Australasia;Australia;Cooma;YSCM;-36.233;149.083;778 Australasia;Australia;Darwin Airport;YPDN;-12.400;130.867;31 Australasia;Australia;Derby;YPDB;-17.300;123.617;8 Australasia;Australia;Devonport East;YMDV;-41.167;146.367;47 Australasia;Australia;Dubbo;YSDU;-32.2;148.5667;275 Australasia;Australia;East Sale Aerodrome;YMES;-38.100;147.133;5 Australasia;Australia;Edinburgh M. O.;YPED;-34.700;138.617;20 Australasia;Australia;Forrest Airport;YPFT;-30.833;128.100;160 Australasia;Australia;Geraldton Airport;YPGN;-28.783;114.700;37 Australasia;Australia;Gladstone;YBGL;-23.850;151.250;75 Australasia;Australia;Goldstream Aws;YMEN;-37.733;145.400;76 Australasia;Australia;Gove Airport;YDGV;-12.267;136.817;52 Australasia;Australia;Hobart;YMHB;-42.8333;147.4833;27 Australasia;Australia;Kalgoorlie Boulder Amo;YPKG;-30.783;121.450;367 Australasia;Australia;Kununurra Kununurra Aws ;YPKU;-15.767;128.700;44 Australasia;Australia;Launceston Airport;YMLT;-41.533;147.200;171 Australasia;Australia;Laverton Aerodrome;YMLV;-37.850;144.733;18 Australasia;Australia;Learmouth;YPLM;-22.2333;114.0833;6 Australasia;Australia;Leigh Creek Airport;YPLC;-30.583;138.417;261 Australasia;Australia;Longreach Airport;YBLR;-23.433;144.267;192 Australasia;Australia;Mackay Mo;YBMK;-21.117;149.200;30 Australasia;Australia;Macquarie Island;YMMQ;-54.483;158.950;6 Australasia;Australia;Meekatharra Airport;YPMR;-26.600;118.533;522 Australasia;Australia;Melbourne;YMML;-37.6667;144.8333;141 Australasia;Australia;Mildura Airport;YMMI;-34.217;142.083;50 Australasia;Australia;Moorabbin Airport Aws;YMMB;-37.967;145.100;13 Australasia;Australia;Mount Gambier Aerodrome;YMMG;-37.733;140.783;65 Australasia;Australia;Mount Isa Amo;YBMA;-20.667;139.467;342 Australasia;Australia;Norfolk Island;YSNF;-29.0333;167.9333;109 Australasia;Australia;Nowra Ran Air Station;YSNW;-34.950;150.533;122 Australasia;Australia;Oakey Aerodrome;YBOK;-27.417;151.733;407 Australasia;Australia;Parafield Airport;YPPF;-34.783;138.633;17 Australasia;Australia;Perth;YPPH;-31.9333;115.95;29 Australasia;Australia;Port Hedland;YPPD;-20.1;119.5667;10 Australasia;Australia;Proserpine Airport;YBPN;-20.483;148.533;25 Australasia;Australia;Richmond Aus-Afb ;YSRI;-33.600;150.783;21 Australasia;Australia;Rockhampton Airport;YBRK;-23.383;150.467;10 Australasia;Australia;Sydney;YSSY;-33.95;151.1833;3 Australasia;Australia;Tamworth Airport;YSTW;-31.083;150.833;410 Australasia;Australia;Tennant Creek Airport;YDTC;-19.633;134.167;375 Australasia;Australia;Tindal / Katherine;YPTN;-14.433;132.267;108 Australasia;Australia;Townsville;YBTL;-19.25;146.75;9 Australasia;Australia;Wagga Airport;YSWG;-35.150;147.450;221 Australasia;Australia;Weipa City;YBWP;-12.633;141.883;12 Australasia;Australia;Williamtown Aerodrome;YSWM;-32.783;151.817;9 Australasia;Australia;Woomera Aerodrome;YPWR;-31.133;136.817;165 Australasia;Australia;Wynyard West;YMWY;-40.983;145.717;11 Australasia;Australia;Yulara Aws;YDYL;-25.183;130.967;493 Australasia;Brunei;Brunei Airport;WBSB;4.933;114.933;22 Australasia;Christmas Island;Christmas Island Aerodrome;YPXM;-10.433;105.683;279 Australasia;Christmas Island;Cocos Island Airport;YPCC;-12.183;96.817;3 Australasia;Cook Islands;Alofi / Niue;NIUE;-19.067;-169.917;20 Australasia;Cook Islands;Rarotonga;NCRG;-21.200;-159.817;7 Australasia;East Timor;Baucau;WPEC;-8.500;126.400;522 Australasia;East Timor;Dilli / Dilli Airport;WPDL;-8.567;125.567;6 Australasia;East Timor;Oe-Cusse / Oe Cusse;WPOC;-9.200;124.367;5 Australasia;Fiji;Lakemba;NFNK;-18.233;-178.800;2 Australasia;Fiji;Nandi;NFFN;-17.750;177.450;13 Australasia;Fiji;Nausori;NFNA;-18.050;178.567;5 Australasia;Fiji;Rotuma;NFNR;-12.500;177.050;26 Australasia;France;Hihifo Ile Wallis ;NLWW;-13.233;-176.167;23 Australasia;France;Maopoopo Ile Futuna ;NLWF;-14.317;-178.117;6 Australasia;French Polynesia;Bora-Bora;NTTB;-16.450;-151.750;4 Australasia;French Polynesia;Hao;NTTO;-18.067;-140.950;2 Australasia;French Polynesia;Mururoa;NTTX;-21.817;-138.800;2 Australasia;French Polynesia;Rangiroa / Tuamoto Island;NTTG;-14.967;-147.667;3 Australasia;French Polynesia;Tahiti-Faaa;NTAA;-17.550;-149.617;2 Australasia;French Polynesia;Tubuai;NTAT;-23.350;-149.483;2 Australasia;Indonesia;Alor / Mali;WRKM;-8.217;124.567;12 Australasia;Indonesia;Amahai;WAPA;-3.350;128.883;10 Australasia;Indonesia;Ambon / Pattimura;WAPP;-3.700;128.083;12 Australasia;Indonesia;Ampenan / Selaparang;WRRA;-8.533;116.067;3 Australasia;Indonesia;Balikpapan / Sepinggan;WRLL;-1.267;116.900;3 Australasia;Indonesia;Banda Aceh / Blangbintang;WITT;5.517;95.417;21 Australasia;Indonesia;Bandung / Husein;WIIB;-6.900;107.583;740 Australasia;Indonesia;Banjarmasin / Syamsuddin Noor;WRBB;-3.433;114.750;20 Australasia;Indonesia;Batan, Sumatra;WIKB;1.117;104.117;24 Australasia;Indonesia;Bau-Bau / Beto Ambiri;WAAB;-5.467;122.617;2 Australasia;Indonesia;Bengkulu / Padangkemiling;WIPL;-3.883;102.333;16 Australasia;Indonesia;Biak / Mokmer;WABB;-1.183;136.117;11 Australasia;Indonesia;Bima;WRRB;-8.550;118.700;2 Australasia;Indonesia;Cilacap;WIIL;-7.733;109.017;6 Australasia;Indonesia;Curug / Budiarto;WIIA;-6.233;106.650;46 Australasia;Indonesia;Denpasar / Ngurah-Rai;WRRR;-8.750;115.167;1 Australasia;Indonesia;Enarotali;WABT;-3.917;136.367;1770 Australasia;Indonesia;Fak-Fak / Torea;WASF;-2.883;132.250;130 Australasia;Indonesia;Galela / Gamarmalamu;WAMA;1.817;127.833;8 Australasia;Indonesia;Gorontalo / Jalaluddin;WAMG;0.517;123.067;2 Australasia;Indonesia;Gunung Sitoli / Binaka;WIMB;1.500;97.633;6 Australasia;Indonesia;Jakarta Halim Perdanakusuma;WIIH;-6.250;106.900;30 Australasia;Indonesia;Jakarta / Soekarno-Hatta;WIII;-6.117;106.650;8 Australasia;Indonesia;Jambi / Sultan Taha;WIPA;-1.633;103.650;25 Australasia;Indonesia;Jayapura / Sentani;WAJJ;-2.567;140.483;99 Australasia;Indonesia;Jogyakarta / Adisucipto;WIIJ;-7.783;110.433;107 Australasia;Indonesia;Kaimana / Utarom;WASK;-3.667;133.750;3 Australasia;Indonesia;Kalijati;WIIK;-6.550;107.667;110 Australasia;Indonesia;Kendari / Woltermon-Ginsidi;WAAU;-4.100;122.433;50 Australasia;Indonesia;Kerinci / Depati Parbo;WIPH;-2.767;101.367;782 Australasia;Indonesia;Ketapang / Rahadi Usmaman;WIOK;-1.850;109.967;9 Australasia;Indonesia;Kokonao / Timuka;WABN;-4.717;136.433;3 Australasia;Indonesia;Kotabaru;WRBK;-3.400;116.217;18 Australasia;Indonesia;Kupang / El Tari;WRKK;-10.167;123.667;108 Australasia;Indonesia;Labuha / Taliabu;WAPH;-1.617;124.550;3 Australasia;Indonesia;Larantuka;WRKL;-8.267;122.967;9 Australasia;Indonesia;Lhokseumawe / Malikussaleh;WITM;5.233;97.200;87 Australasia;Indonesia;Longbawan / Juvai Semaring;WRLB;3.733;115.683;550 Australasia;Indonesia;Luwuk / Bubung;WAMW;-0.900;122.783;2 Australasia;Indonesia;Madiun / Iswahyudi;WIAR;-7.617;111.517;110 Australasia;Indonesia;Malang / Abdul Rahkmansaleh;WIAS;-7.967;112.700;526 Australasia;Indonesia;Manokwari / Rendani;WASR;-0.883;134.050;3 Australasia;Indonesia;Maumere / Wai Oti;WRKC;-8.633;122.250;3 Australasia;Indonesia;Medan / Polonia;WIMM;3.567;98.683;25 Australasia;Indonesia;Menado / Dr. Sam Ratulangi;WAMM;1.533;124.917;80 Australasia;Indonesia;Menggala / Astra Ksetra;WIAG;-4.450;105.183;19 Australasia;Indonesia;Merauke / Mopah;WAKK;-8.467;140.383;3 Australasia;Indonesia;Meulaboh / Cut Nyak Dhien;WITC;4.250;96.117;90 Australasia;Indonesia;Muaratewe / Beringin;WRBM;-0.950;114.900;60 Australasia;Indonesia;Nabire;WABI;-3.333;135.500;3 Australasia;Indonesia;Namlea;WAPR;-3.250;127.083;20 Australasia;Indonesia;Padang / Tabing;WIMG;-0.883;100.350;3 Australasia;Indonesia;Pakanbaru / Simpangtiga;WIBB;0.467;101.450;31 Australasia;Indonesia;Palangkaraya / Panarung;WRBP;-1.000;114.000;27 Australasia;Indonesia;Palembang / Talangbetutu;WIPP;-2.900;104.700;10 Australasia;Indonesia;Palu / Mutiara;WAML;-0.683;119.733;6 Australasia;Indonesia;Pangkalan Bun / Iskandar;WRBI;-2.700;110.700;25 Australasia;Indonesia;Pangkalpinang / Pangkalpinang;WIKK;-2.167;106.133;33 Australasia;Indonesia;Pontianak / Supadio;WIOO;-0.150;109.400;3 Australasia;Indonesia;Poso / Kasiguncu;WAMP;-1.383;120.733;2 Australasia;Indonesia;Ranai / Ranai;WION;3.950;108.383;2 Australasia;Indonesia;Rengat / Japura;WIPR;0.467;102.317;46 Australasia;Indonesia;Rote / Baa;WRKR;-10.733;123.067;1 Australasia;Indonesia;Sabang / Cut Bau;WIAA;5.867;95.317;126 Australasia;Indonesia;Sabu / Tardamu;WRKS;-10.500;121.833;26 Australasia;Indonesia;Samarinda / Temindung;WRLS;-0.617;117.150;230 Australasia;Indonesia;Sanana;WAPN;-2.083;126.000;2 Australasia;Indonesia;Sarmi;WAJI;-1.833;138.717;3 Australasia;Indonesia;Saumlaki;WAPI;-7.983;131.300;24 Australasia;Indonesia;Semarang / Ahmadyani;WIIS;-6.983;110.383;3 Australasia;Indonesia;Serui / Yendosa;WABO;-1.867;136.233;3 Australasia;Indonesia;Sibolga / Pinangsori;WIMS;1.550;98.883;3 Australasia;Indonesia;Singkawang Ii;WIOI;1.083;109.667;38 Australasia;Indonesia;Singkep / Dabo;WIKS;-0.483;104.583;31 Australasia;Indonesia;Sintang;WIOS;0.117;111.533;30 Australasia;Indonesia;Sorong / Jefman;WASS;-0.933;131.117;3 Australasia;Indonesia;Sumbawa Besar / Sumbawa Besar;WRRS;-8.433;117.417;3 Australasia;Indonesia;Surabaya / Juanda;WRSJ;-7.367;112.767;3 Australasia;Indonesia;Surabaya / Perak;WRSP;-7.217;112.717;3 Australasia;Indonesia;Surabaya;WRSS;-7.217;113.717;3 Australasia;Indonesia;Surakarta / Adisumarmo;WRSQ;-7.867;110.917;104 Australasia;Indonesia;Tahuna;WAMH;3.583;125.467;38 Australasia;Indonesia;Tanah Merah / Tanah Merah;WAKT;-6.100;140.300;16 Australasia;Indonesia;Tanjungpandan / Buluh Tumbang;WIKD;-2.750;107.750;44 Australasia;Indonesia;Tanjungpinang / Kijang;WIKN;0.917;104.533;18 Australasia;Indonesia;Tanjung Redep / Berau;WRLK;2.117;117.450;26 Australasia;Indonesia;Tanjung Selor;WRLG;2.850;117.333;50 Australasia;Indonesia;Tarakan / Juwata;WRLR;3.333;117.567;6 Australasia;Indonesia;Tasikmalaya / Cibeureum;WIAM;-7.333;108.250;335 Australasia;Indonesia;Telukbetung / Beranti;WIIT;-5.267;105.183;96 Australasia;Indonesia;Ternate / Babullah;WAMT;0.783;127.383;23 Australasia;Indonesia;Toli-Toli / Lalos;WAMI;1.017;120.800;2 Australasia;Indonesia;Ujung Pandang / Hasanuddin;WAAA;-5.067;119.550;14 Australasia;Indonesia;Waingapu / Mau Hau;WRRW;-9.667;120.333;12 Australasia;Indonesia;Wamena / Wamena;WAJW;-4.067;138.950;1660 Australasia;Kiribati;Arorae;NGTR;-2.667;176.833;4 Australasia;Kiribati;Beru;NGBR;-1.350;176.000;2 Australasia;Kiribati;Butaritari;NGTU;3.033;172.783;1 Australasia;Kiribati;Tarawa;NGTA;1.350;172.917;2 Australasia;Malaysia;Bintulu;WBGB;3.200;113.033;2 Australasia;Malaysia;Johore Bharu / Senai;WMKJ;1.633;103.667;37 Australasia;Malaysia;Kota Bharu;WMKC;6.167;102.283;5 Australasia;Malaysia;Kota Kinabalu;WBKK;5.933;116.050;3 Australasia;Malaysia;Kuantan;WMKD;3.617;103.217;18 Australasia;Malaysia;Kuching;WBGG;1.483;110.333;27 Australasia;Malaysia;Kudat;WBKT;6.917;116.833;3 Australasia;Malaysia;Labuan;WBKL;5.300;115.250;30 Australasia;Malaysia;Langkawi;WMKL;6.333;99.733;8 Australasia;Malaysia;Malacca;WMKM;2.267;102.250;11 Australasia;Malaysia;Miri;WBGR;4.333;113.983;17 Australasia;Malaysia;Penang / Bayan Lepas;WMKP;5.300;100.267;3 Australasia;Malaysia;Sandakan;WBKS;5.900;118.067;12 Australasia;Malaysia;Sepang/KL International Airport;WMKK;2.733;101.700;21 Australasia;Malaysia;Sibu;WBGS;2.333;111.833;8 Australasia;Malaysia;Sitiawan;WMBA;4.217;100.700;7 Australasia;Malaysia;Subang/Sultan Abdul Aziz Shah Airport;WMSA;3.117;101.533;27 Australasia;Malaysia;Tawau;WBKW;4.267;117.883;18 Australasia;Marshall Islands;Kwajalein, Bucholz AAF, Kwajalein KMR ATOL Airport;PKWA;8.717;167.733;3 Australasia;Marshall Islands;Majuro Atoll, Marshall Islands Int. Airp.;PKMJ;7.067;171.283;2 Australasia;Marshall Islands;Majuro Atoll, NWS Office;PKMR;7.083;171.200;4 Australasia;Micronesia, Federated States of;Kosrae Carolines / V;PTTK;5.350;162.950;2 Australasia;Micronesia, Federated States of;Kosrae Island, Kosrae Airport;PTSA;5.350;162.950;3 Australasia;Micronesia, Federated States of;Pohnpei Island, Pohnpei Int. Airp.;PTPN;6.983;158.200;2 Australasia;Micronesia, Federated States of;Pohnpei, NWS Office;PTTP;6.967;158.217;39 Australasia;Micronesia, Federated States of;Weno Island, Chuuk Int. Airp.;PTKK;7.467;151.850;3 Australasia;Micronesia, Federated States of;Yap Island, Yap Int. Airp.;PTYA;9.483;138.083;28 Australasia;Nauru;Nauru Airport;ANAU;-0.533;166.917;6 Australasia;New Caledonia;Koumac Nlle-Caledonie ;NWWK;-20.567;164.283;23 Australasia;New Caledonia;La Roche Ile Mare ;NWWR;-21.483;168.033;43 Australasia;New Caledonia;La Tontouta Nlle-Caledonie ;NWWW;-22.017;166.217;16 Australasia;New Caledonia;Moue Ile Des Pins ;NWWE;-22.600;167.450;96 Australasia;New Caledonia;Noumea Nlle-Caledonie ;NWWN;-22.267;166.450;69 Australasia;New Caledonia;Ouanaham Ile Lifou ;NWWL;-20.767;167.233;28 Australasia;New Caledonia;Ouloup Ile Ouvea ;NWWV;-20.650;166.583;7 Australasia;New Zealand;Auckland;NZAA;-37.0167;174.8;6 Australasia;New Zealand;Chatham Island;NZCI;-43.950;-176.567;44 Australasia;New Zealand;Christchurch;NZCH;-43.4833;172.55;30 Australasia;New Zealand;Christmas / Cassidy;PLCH;1.983;-157.483;3 Australasia;New Zealand;Dunedin Aerodrome;NZDN;-45.933;170.200;1 Australasia;New Zealand;Fanning Island;PLFA;3.850;-159.367;5 Australasia;New Zealand;Gisborne Aerodrome;NZGS;-38.667;177.983;5 Australasia;New Zealand;Hokitika Aerodrome;NZHK;-42.717;170.983;45 Australasia;New Zealand;Invercargill Aerodrome;NZNV;-46.700;168.550;0 Australasia;New Zealand;Kaikoura ;NZKI;-42.417;173.700;101 Australasia;New Zealand;New Plymouth Aerodrome;NZNP;-39.017;174.183;28 Australasia;New Zealand;Ohakea;NZOH;-40.200;175.367;50 Australasia;New Zealand;Paraparaumu Aerodrome;NZPP;-40.900;174.983;7 Australasia;New Zealand;Raoul Island, Kermadec Island;NZRN;-29.250;-177.917;38 Australasia;New Zealand;Rotorua Aerodrome;NZRO;-38.117;176.317;285 Australasia;New Zealand;Tauranga Aerodrome Aws;NZTG;-37.667;176.200;4 Australasia;New Zealand;Whenuapai;NZWP;-36.783;174.633;30 Australasia;New Zealand;Wellington;NZWN;-41.3333;174.8;8 Australasia;Palau;Babelthuap Island, Babelthuap/Koror Airport;PTRO;7.367;134.533;54 Australasia;Palau;Koror, Palau, NWS Office;PTKR;7.333;134.483;30 Australasia;Papua New Guinea;Madang;AYMD;-5.217;145.783;3 Australasia;Papua New Guinea;Manus Island/Momote;AYMO;-2.062;147.424;4 Australasia;Papua New Guinea;Moresby;AYPY;-9.433;147.217;38 Australasia;Papua New Guinea;Wewak;AYWK;-3.567;143.633;6 Australasia;Philippines;Alabat;RPXT;14.083;122.017;4 Australasia;Philippines;Aparri;RPUA;18.367;121.633;2 Australasia;Philippines;Baguio;RPUB;16.417;120.600;1500 Australasia;Philippines;Baler;RPUR;15.767;121.567;4 Australasia;Philippines;Basco;RPUO;20.450;121.967;10 Australasia;Philippines;Butuan;RPWE;9.933;125.517;45 Australasia;Philippines;Cagayan De Oro;RPWL;8.483;124.633;5 Australasia;Philippines;Calapan;RPUK;13.417;121.183;39 Australasia;Philippines;Catarman;RPVF;12.483;124.633;4 Australasia;Philippines;Clark Ab;RPMK;15.167;120.567;196 Australasia;Philippines;Clarkfield Pampanga International Airport;RPLC;15.183;120.550;148 Australasia;Philippines;Cotobato;RPWC;7.167;124.217;58 Australasia;Philippines;Daet;RPUD;14.133;122.983;3 Australasia;Philippines;Davao Airport;RPMD;7.117;125.650;17 Australasia;Philippines;Dipolog;RPWG;8.600;123.350;3 Australasia;Philippines;Dumaguete;RPVD;9.300;123.300;5 Australasia;Philippines;Gen. Santos;RPWB;6.117;125.183;14 Australasia;Philippines;Guiuan;RPVG;11.033;126.733;56 Australasia;Philippines;Iba;RPUI;15.333;119.967;4 Australasia;Philippines;Iloilo;RPVI;10.700;122.567;7 Australasia;Philippines;Laoag;RPLI;18.183;120.533;4 Australasia;Philippines;Legaspi;RPMP;13.133;123.733;16 Australasia;Philippines;Mactan;RPMT;10.300;123.967;23 Australasia;Philippines;Malaybalay;RPWY;8.150;125.083;626 Australasia;Philippines;Marinduque Island;RPUW;13.367;121.833;5 Australasia;Philippines;Masbate;RPVM;12.367;123.617;6 Australasia;Philippines;Naga / Luzon Island;RPUN;13.583;123.267;43 Australasia;Philippines;Ninoy Aquino Inter-National Airport;RPLL;14.517;121.000;14 Australasia;Philippines;Puerto Princesa;RPVP;9.750;118.733;14 Australasia;Philippines;Romblon;RPMR;12.583;122.267;46 Australasia;Philippines;Roxas;RPVR;11.583;122.750;3 Australasia;Philippines;Sangley Point;RPMS;14.500;120.917;3 Australasia;Philippines;San Jose;RPUH;12.350;121.033;2 Australasia;Philippines;Subic Bay Weather Station;RPLB;14.800;120.267;18 Australasia;Philippines;Surigao;RPWS;9.800;125.500;54 Australasia;Philippines;Tacloban;RPVA;11.250;125.000;2 Australasia;Philippines;Tagbilaran;RPVT;9.600;123.850;7 Australasia;Philippines;Tuguegarao;RPUT;17.617;121.733;61 Australasia;Philippines;Vigan;RPUQ;17.567;120.383;31 Australasia;Philippines;Virac;RPUV;13.583;124.233;39 Australasia;Philippines;Zamboanga;RPMZ;6.900;122.067;5 Australasia;Samoa;Apia / Upolu Island;NSAP;-13.800;-171.783;2 Australasia;Samoa;Faleolo Intl / Apia;NSFA;-13.817;-172.000;5 Australasia;Solomon Islands;Honiara / Henderson;AGGH;-9.417;160.050;8 Australasia;Solomon Islands;Munda;AGGM;-8.333;157.267;6 Australasia;Solomon Islands;Santa Cruz;AGGL;-10.700;165.800;23 Australasia;Tonga;Fua'Amotu;NFTF;-21.233;-175.150;38 Australasia;Tonga;Haapai;NFTL;-19.800;-174.350;2 Australasia;Tuvalu;Funafuti;NGFU;-8.517;179.217;1 Australasia;Tuvalu;Nanumea;NGFO;-5.667;176.133;2 Australasia;United States;Agana, Guam International Airport;PGUM;13.483;144.800;91 Australasia;United States;Andersen, Mariana Is, Andersen Air Force Base;PGUA;13.583;144.933;187 Australasia;United States;Guam, Mariana Island;PGAC;13.917;144.833;111 Australasia;United States;Hana, Hana Airport;PHHN;20.796;-156.014;24 Australasia;United States;Hickam Air Force Base / Oahu ;PHIK;21.317;-157.917;4 Australasia;United States;KALAELOA AIRPORT;PHJR;21.317;-158.067;10 Australasia;United States;Kamuela, Waimea-Kohala Airport;PHMU;20.000;-155.667;814 Australasia;United States;Johnston Island, Johnston Atoll Airport;PJON;16.733;-169.533;2 Australasia;United States;Pago Pago / Int. Airport;NSTU;-14.333;-170.717;3 Australasia;United States;Rota Island, N. Mariana Is, Rota International Airport;PGRO;14.183;145.250;185 Australasia;United States;Sabanettan / Tinian Island;PGNT;15.600;145.100;80 Australasia;United States;Saipan Island, Saipan International Airport;PGSN;15.117;145.733;66 Australasia;United States;Sand Island, Henderson Field Airport;PMDY;28.217;-177.367;4 Australasia;United States;South Kona / Hawaii;PHWH;19.100;-155.750;808 Australasia;United States;Tinian Island, N. Mariana Is, West Tinian Airport;PGWT;14.983;145.617;82 Australasia;United States;Wake Island, Wake Island Army Airfield Airport;PWAK;19.283;166.650;4 Australasia;Vanuatu;Bauerfield Efate ;NVVV;-17.700;168.300;20 Australasia;Vanuatu;Lamap Malekula ;NVSL;-16.417;167.800;26 Australasia;Vanuatu;Pekoa Airport Santo ;NVSS;-15.517;167.217;41 Australasia;Vanuatu;Sola Vanua Lava ;NVSC;-13.850;167.550;17 Canada;Alberta;Calgary;CYYC;51.1167;-114.0167;1084 Canada;Alberta;Edmonton;CYEG;53.3;-113.5833;723 Canada;British Columbia;Abbotsford;CYXX;49.0333;-122.3667;58 Canada;British Columbia;Comox;CYQQ;49.7167;-124.9;24 Canada;British Columbia;Port Hardy;CYZT;50.6833;-127.3667;22 Canada;British Columbia;Smithers;CYYD;54.8167;-127.1833;523 Canada;British Columbia;Vancouver;CYVR;49.1833;-123.1667;2 Canada;British Columbia;Victoria;CYYJ;48.65;-123.4333;19 Canada;Manitoba;Churchill;CYYQ;58.7333;-94.0667;29 Canada;Manitoba;Winnipeg;CYWG;49.9;-97.2333;239 Canada;New Brunswick;Chatham;CYCH;47;-65.45;34 Canada;New Brunswick;Fredericton;CYFC;45.8667;-66.5333;20 Canada;New Brunswick;Moncton;CYQM;46.1167;-64.6833;71 Canada;Newfoundland;Gander;CYQX;48.95;-54.5667;151 Canada;Newfoundland;Goose Bay;CYYR;53.3167;-60.4167;49 Canada;Newfoundland;Saint Anthony;CYAY;51.4;-56.0833;0 Canada;Newfoundland;Stephenville;CYJT;48.5333;-58.55;26 Canada;Newfoundland;St. John's;CYYT;47.6167;-52.7333;140 Canada;Northwest Territories;Iqaluit;CYFB;63.75;-68.55;34 Canada;Northwest Territories;Yellowknife;CYZF;62.4667;-114.45;206 Canada;Nova Scotia;Greenwood;CYZX;44.9833;-64.9167;28 Canada;Nova Scotia;Halifax;CYHZ;44.8833;-63.5;0 Canada;Nova Scotia;Shearwater;CYAW;44.6333;-63.5;51 Canada;Nova Scotia;Sydney;CYQY;46.1667;-60.05;62 Canada;Ontario;Ottawa;CYOW;45.3167;-75.6667;114 Canada;Ontario;Toronto;CYYZ;43.6667;-79.6333;173 Canada;Ontario;Trenton;CYTR;44.1167;-77.5333;86 Canada;Ontario;Windsor;CYQG;42.2667;-82.9667;190 Canada;Prince Edward Island;Charlottetown;CYYG;46.2891;-63.1191;48 Canada;Quebec;Bagotville;CYBG;48.3333;-71;159 Canada;Quebec;Gatineau;CYND;45.5167;-75.5667;0 Canada;Quebec;La Grande;CYGL;53.6333;-77.7;195 Canada;Quebec;Montreal Dorval;CYUL;45.4667;-73.75;36 Canada;Quebec;Montreal Mirabel;CYMX;45.6833;-74.0333;0 Canada;Quebec;Montreal Saint-Hubert;CYHU;45.5167;-73.4167;0 Canada;Quebec;Quebec City;CYQB;46.8;-71.3833;74 Canada;Quebec;Sept-Iles;CYZV;50.2167;-66.2667;55 Canada;Saskatchewan;Nipawin;CYBU;53.3333;-104;372 Canada;Saskatchewan;Regina;CYQR;50.4333;-104.6667;577 Canada;Saskatchewan;Saskatoon;CYXE;52.1667;-106.6833;504 Canada;Saskatchewan;Swift Current;CYYN;50.2833;-107.6833;818 Canada;Yukon;Shingle Point;CYUA;68.95;-137.2167;38 Central and South America;Argentina;Aeroparque;SABE;-34.5667;-58.4167;6 Central and South America;Argentina;Azul Airport;SAZA;-36.750;-59.833;132 Central and South America;Argentina;Bahia Blanca;SAZB;-38.7333;-62.1667;83 Central and South America;Argentina;Bariloche;SAZS;-41.15;-71.1667;840 Central and South America;Argentina;Buenos Aires Observatorio;SABA;-34.583;-58.483;25 Central and South America;Argentina;Catamarca Aero.;SANC;-28.600;-65.767;454 Central and South America;Argentina;Ceres Aerodrome;SANW;-29.883;-61.950;87 Central and South America;Argentina;Chapelco;SAZY;-40.083;-71.133;779 Central and South America;Argentina;Chepes;SACP;-31.333;-66.600;658 Central and South America;Argentina;Chilecito;SANO;-29.217;-67.433;950 Central and South America;Argentina;Comodoro Rivadavia;SAVC;-45.7833;-67.5;46 Central and South America;Argentina;Concordia;SAAC;-31.3;-58.0167;38 Central and South America;Argentina;Cordoba;SACO;-31.3167;-64.2167;474 Central and South America;Argentina;Corrientes;SARC;-27.45;-58.7667;62 Central and South America;Argentina;Curuzu Cuatia Aerodrome;SATU;-29.783;-57.983;80 Central and South America;Argentina;Dolores Aerodrome;SAZD;-36.350;-57.733;10 Central and South America;Argentina;Don Torcuato;SADD;-34.4833;-58.6167;4 Central and South America;Argentina;El Bolson Aerodrome;SAVB;-41.967;-71.517;337 Central and South America;Argentina;El Palomar Aerodrome;SADP;-34.600;-58.600;18 Central and South America;Argentina;Esquel Aerodrome;SAVE;-42.933;-71.150;789 Central and South America;Argentina;Ezeiza;SAEZ;-34.8167;-58.5333;20 Central and South America;Argentina;Formosa;SARF;-26.2;-58.2333;60 Central and South America;Argentina;General Pico Aerodrome;SAZG;-35.700;-63.750;139 Central and South America;Argentina;Gobernador Gordillo;SACT;-30.367;-66.300;457 Central and South America;Argentina;Gobernador Gregores Aerodrome;SAWR;-48.783;-70.167;358 Central and South America;Argentina;Gualeguaychu Aerodrome;SAAG;-33.000;-58.617;23 Central and South America;Argentina;Iguazu;SARI;-25.7333;-54.4667;270 Central and South America;Argentina;Jachal;SAMJ;-30.250;-68.750;1165 Central and South America;Argentina;Jujuy;SASJ;-24.3833;-65.0833;905 Central and South America;Argentina;Junin Aerodrome;SAAJ;-34.550;-60.917;82 Central and South America;Argentina;La Plata Aerodrome;SADL;-34.967;-57.900;21 Central and South America;Argentina;La Quiaca Observatorio;SASQ;-22.100;-65.600;3462 Central and South America;Argentina;La Rioja Aero.;SANL;-29.383;-66.817;438 Central and South America;Argentina;Laboulaye;SAOL;-34.133;-63.367;136 Central and South America;Argentina;Lago Argentino Aerodrome;SAWA;-50.333;-72.300;223 Central and South America;Argentina;Las Lomitas;SATK;-24.700;-60.583;130 Central and South America;Argentina;Malargue Aerodrome;SAMM;-35.500;-69.583;1426 Central and South America;Argentina;Mar Del Plata;SAZM;-37.9333;-57.5833;21 Central and South America;Argentina;Marcos Juarez Aerodrome;SAOM;-32.700;-62.150;110 Central and South America;Argentina;Mendoza;SAME;-32.8333;-68.7833;704 Central and South America;Argentina;Monte Caseros Aerodrome;SARM;-30.267;-57.650;53 Central and South America;Argentina;Neuquen;SAZN;-38.95;-68.1333;271 Central and South America;Argentina;Oran Aerodrome;SASO;-23.150;-64.317;357 Central and South America;Argentina;Parana Aerodrome;SAAP;-31.783;-60.483;74 Central and South America;Argentina;Paso De Indios;SAVP;-43.817;-68.883;460 Central and South America;Argentina;Paso De Los Libres;SARL;-29.6833;-57.15;70 Central and South America;Argentina;Pehuajo Aerodrome;SAZP;-35.867;-61.900;87 Central and South America;Argentina;Perito Moreno Aerodrome;SAWP;-46.517;-71.017;429 Central and South America;Argentina;Pigue Aerodrome;SAZE;-37.600;-62.383;304 Central and South America;Argentina;Pilar Observatorio;SACI;-31.667;-63.883;338 Central and South America;Argentina;Posadas;SARP;-27.3667;-55.9667;133 Central and South America;Argentina;Presidencia Roque Saenz Pena Aerodrome;SARS;-26.817;-60.450;91 Central and South America;Argentina;Puerto Deseado Aerodrome;SAWD;-47.733;-65.917;81 Central and South America;Argentina;Puerto Madryn, CHT;SAVY;-42.759;-65.103;136 Central and South America;Argentina;Reconquista, SF;SATR;-29.210;-59.691;49 Central and South America;Argentina;Resistencia;SARE;-27.45;-59.05;52 Central and South America;Argentina;Rio Colorado;SAZQ;-39.017;-64.083;79 Central and South America;Argentina;Rio Cuarto Aerodrome;SAOC;-33.117;-64.233;420 Central and South America;Argentina;Rio Gallegos;SAWG;-51.6167;-69.2833;19 Central and South America;Argentina;Rio Grande;SAWE;-53.8;-67.75;22 Central and South America;Argentina;Rivadavia;SASR;-24.167;-62.900;205 Central and South America;Argentina;Rosario;SAAR;-32.9167;-60.7833;25 Central and South America;Argentina;Salta;SASA;-24.85;-65.4833;1221 Central and South America;Argentina;San Antonio Oeste Aerodrome;SAVO;-40.783;-65.100;20 Central and South America;Argentina;San Carlos;SAMS;-33.767;-69.033;940 Central and South America;Argentina;San Fernando, BA;SADF;-34.453;-58.590;3 Central and South America;Argentina;San Juan;SANU;-31.5667;-68.8667;598 Central and South America;Argentina;San Julian Aerodrome;SAWJ;-49.317;-67.750;58 Central and South America;Argentina;San Luis Aerodrome;SAOU;-33.267;-66.350;710 Central and South America;Argentina;San Martin;SAMI;-33.083;-68.417;653 Central and South America;Argentina;San Rafael Aerodrome;SAMR;-34.583;-68.400;745 Central and South America;Argentina;Santa Cruz Aerodrome;SAWU;-50.017;-68.567;113 Central and South America;Argentina;Santa Rosa Aerodrome;SAZR;-36.567;-64.267;190 Central and South America;Argentina;Santiago Del Estero;SANE;-27.7667;-64.3;199 Central and South America;Argentina;Sauce Viejo;SAAV;-31.7;-60.8167;18 Central and South America;Argentina;Tandil Aerodrome;SAZT;-37.233;-59.250;175 Central and South America;Argentina;Tartagal Aerodrome;SAST;-22.650;-63.817;450 Central and South America;Argentina;Tinogasta;SANI;-28.067;-67.567;1201 Central and South America;Argentina;Trelew;SAVT;-43.2;-65.2667;43 Central and South America;Argentina;Tres Arroyos;SAZH;-38.333;-60.250;115 Central and South America;Argentina;Tucuman;SANT;-26.85;-65.1;450 Central and South America;Argentina;Ushuaia Aerodrome;SAWH;-54.800;-68.317;16 Central and South America;Argentina;Uspallata;SAMU;-32.600;-69.333;1844 Central and South America;Argentina;Viedma Aerodrome;SAVV;-40.850;-63.017;6 Central and South America;Argentina;Villa De Maria Del Rio Seco;SACV;-29.900;-63.683;341 Central and South America;Argentina;Villa Dolores Aerodrome;SAOD;-31.950;-65.133;561 Central and South America;Argentina;Villa Gesell;SAZV;-37.233;-57.033;7 Central and South America;Argentina;Villa Reynolds;SAOR;-33.7333;-65.3833;486 Central and South America;Argentina;Villaguay Aerodrome;SAAU;-31.850;-59.083;40 Central and South America;Bahamas;Alice Town, Bimini;MYBS;25.733;-79.300;2 Central and South America;Bahamas;Cockburn Town, San Salvador;MYSM;24.050;-74.533;3 Central and South America;Bahamas;Congo Town, Andros Island;MYAK;24.159;-77.590;5 Central and South America;Bahamas;Freeport;MYGF;26.55;-78.7;11 Central and South America;Bahamas;Georgetown, Exuma;MYEG;23.475;-75.767;2 Central and South America;Bahamas;Matthew Town, Inagua;MYIG;20.950;-73.683;2 Central and South America;Bahamas;Nassau;MYNN;25.05;-77.4667;7 Central and South America;Bahamas;West End, Grand Bahama;MYGW;26.700;-78.967;2 Central and South America;Belize;Belize;MZBZ;17.5333;-88.3;5 Central and South America;Bolivia;Apolo;SLAP;-14.733;-68.500;1415 Central and South America;Bolivia;Ascencion De Guarayos;SLAS;-15.717;-63.100;247 Central and South America;Bolivia;Camiri;SLCA;-20;-63.5333;0 Central and South America;Bolivia;Charana;SLCN;-17.583;-69.600;4054 Central and South America;Bolivia;Cobija;SLCO;-11.0333;-68.7833;260 Central and South America;Bolivia;Cochabamba;SLCB;-17.4167;-66.1833;2570 Central and South America;Bolivia;Concepcion;SLCP;-16.15;-62.0167;0 Central and South America;Bolivia;Guayaramerin;SLGY;-10.817;-65.350;130 Central and South America;Bolivia;La Paz/Alto;SLLP;-16.5167;-68.1833;4038 Central and South America;Bolivia;Magdalena;SLMG;-13.3333;-64.1167;0 Central and South America;Bolivia;Oruro;SLOR;-17.9667;-67.0667;0 Central and South America;Bolivia;Potosi;SLPO;-19.55;-65.7333;0 Central and South America;Bolivia;Puerto Suarez;SLPS;-18.9833;-57.8167;0 Central and South America;Bolivia;Reyes;SLRY;-14.3167;-67.3833;0 Central and South America;Bolivia;Riberalta;SLRI;-11;-66.1167;0 Central and South America;Bolivia;Robore;SLRB;-18.3167;-59.7667;0 Central and South America;Bolivia;Rurrenabaque;SLRQ;-14.4667;-67.5667;274 Central and South America;Bolivia;San Borja;SLSB;-14.867;-66.867;194 Central and South America;Bolivia;San Ignacio De Moxos;SLSM;-14.917;-65.600;160 Central and South America;Bolivia;San Ignacio De Velasco;SLSI;-16.3833;-60.9667;0 Central and South America;Bolivia;San Javier;SLJV;-16.267;-62.467;534 Central and South America;Bolivia;San Joaquin;SLJO;-13.0667;-64.8167;0 Central and South America;Bolivia;San Jose De Chiquitos;SLJE;-17.8;-60.7333;0 Central and South America;Bolivia;Santa Ana;SLSA;-13.7667;-65.4333;0 Central and South America;Bolivia;Santa Cruz / El Trompillo;SLET;-17.800;-63.183;418 Central and South America;Bolivia;Sucre;SLSU;-19.0167;-65.3;0 Central and South America;Bolivia;Tarija;SLTJ;-21.55;-64.7;0 Central and South America;Bolivia;Trinidad;SLTR;-14.8167;-64.9167;236 Central and South America;Bolivia;Villamontes;SLVM;-21.25;-63.45;0 Central and South America;Bolivia;Viru-Viru;SLVR;-17.6333;-63.1333;0 Central and South America;Bolivia;Yacuiba;SLYA;-21.95;-63.65;0 Central and South America;Brazil;Afonsos;SBAF;-22.8667;-43.3667;0 Central and South America;Brazil;Alta Floresta Aeroporto ;SBAT;-9.867;-56.100;288 Central and South America;Brazil;Altamira;SBHT;-3.2;-52.2;0 Central and South America;Brazil;Anapolis Braz-Afb ;SBAN;-16.233;-48.967;1137 Central and South America;Brazil;Aracaju;SBAR;-10.9833;-37.0667;9 Central and South America;Brazil;Bage;SBBG;-31.35;-54.1167;180 Central and South America;Brazil;Barbacena;SBBQ;-21.250;-43.767;1171 Central and South America;Brazil;Barcelos;SWBC;-0.983;-62.583;40 Central and South America;Brazil;Barra Do Garcas;SBBW;-15.867;-52.383;350 Central and South America;Brazil;Bauru;SBBU;-22.3167;-49.0667;0 Central and South America;Brazil;Belem;SBBE;-1.3833;-48.4833;16 Central and South America;Brazil;Belo Horizonte Apt;SBBH;-19.85;-43.95;785 Central and South America;Brazil;Belo Horizonte;SBCF;-19.9333;-43.9333;0 Central and South America;Brazil;Benjamin Constant;SBBC;-4.383;-70.033;65 Central and South America;Brazil;Boa Vista;SBBV;2.8333;-60.7;140 Central and South America;Brazil;Bom Jesus Da Lapa;SBLP;-13.267;-43.417;440 Central and South America;Brazil;Brasilia;SBBR;-15.8667;-47.9333;1061 Central and South America;Brazil;Cachimbo;SBCC;-9.333;-54.950;536 Central and South America;Brazil;Campina Grande;SBKG;-7.217;-35.883;548 Central and South America;Brazil;Campinas;SBKP;-23;-47.1333;661 Central and South America;Brazil;Campo Grande;SBCG;-20.4667;-54.6667;567 Central and South America;Brazil;Campos;SBCP;-21.750;-41.333;11 Central and South America;Brazil;Carajas / Maraba;SBCJ;-6.117;-50.000;621 Central and South America;Brazil;Caravelas;SBCV;-17.6333;-39.25;4 Central and South America;Brazil;Conceicao Do Araguaia;SBAA;-8.25;-49.2833;0 Central and South America;Brazil;Corumba;SBCR;-19.0833;-57.5;0 Central and South America;Brazil;Cruzeiro Do Sul;SBCZ;-7.633;-72.667;170 Central and South America;Brazil;Cuiaba;SBCY;-15.65;-56.1;182 Central and South America;Brazil;Curitiba Apt;SBCT;-25.5167;-49.1667;908 Central and South America;Brazil;Curitiba;SBBI;-25.4333;-49.2667;0 Central and South America;Brazil;Eduardo Gomes International;SBEG;-3.0333;-60.05;0 Central and South America;Brazil;Fernando De Noronha;SBFN;-3.85;-32.4167;45 Central and South America;Brazil;Florianopolis;SBFL;-27.6667;-48.55;5 Central and South America;Brazil;Fortaleza;SBFZ;-3.7833;-38.5333;25 Central and South America;Brazil;Foz Do Iguacu;SBFI;-25.5167;-54.5833;180 Central and South America;Brazil;Galeao;SBGL;-22.8167;-43.25;42 Central and South America;Brazil;Gama;SBGA;-16.050;-48.050;700 Central and South America;Brazil;Goiania;SBGO;-16.6333;-49.2167;0 Central and South America;Brazil;Guaratingueta;SBGW;-22.7833;-45.2;537 Central and South America;Brazil;Guarulhos;SBGR;-23.4333;-46.4667;0 Central and South America;Brazil;Iauarete;SBYA;0.617;-69.200;120 Central and South America;Brazil;Ilheus Aeroporto ;SBIL;-14.817;-39.033;4 Central and South America;Brazil;Imperatriz;SBIZ;-5.533;-47.500;123 Central and South America;Brazil;Itaituba;SBIH;-4.25;-56;0 Central and South America;Brazil;Jacareacanga;SBEK;-6.267;-57.733;98 Central and South America;Brazil;Joao Pessoa;SBJP;-7.100;-34.867;7 Central and South America;Brazil;Juiz De Fora;SBJF;-21.767;-43.350;939 Central and South America;Brazil;Leite Lopes / Ribeir ;SBRP;-21.133;-47.783;549 Central and South America;Brazil;Londrina;SBLO;-23.3333;-51.1333;570 Central and South America;Brazil;Macae;SBME;-22.35;-41.7667;0 Central and South America;Brazil;Macapa;SBMQ;0.0333;-50.05;0 Central and South America;Brazil;Maceio;SBMO;-9.5167;-35.7833;115 Central and South America;Brazil;Manaus;SBMN;-3.15;-59.9833;84 Central and South America;Brazil;Manicore;SBMY;-5.817;-61.300;50 Central and South America;Brazil;Maraba;SBMA;-5.35;-49.15;0 Central and South America;Brazil;Maranhao / Carolina Airport;SBCI;-7.317;-47.467;183 Central and South America;Brazil;Maringa;SBMG;-23.417;-51.950;542 Central and South America;Brazil;Marte;SBMT;-23.5167;-46.6333;0 Central and South America;Brazil;Mocoro / 17 Rosado;SBMS;-5.200;-37.367;23 Central and South America;Brazil;Montes Claros;SBMK;-16.717;-43.867;646 Central and South America;Brazil;Natal;SBNT;-5.9167;-35.25;49 Central and South America;Brazil;Oiapoque;SBOI;3.833;-51.833;39 Central and South America;Brazil;Paranagua;SBPG;-25.517;-48.517;5 Central and South America;Brazil;Parnaiba Aeroporto ;SBPB;-2.917;-41.750;5 Central and South America;Brazil;Passo Fundo;SBPF;-28.250;-52.400;684 Central and South America;Brazil;Paulo Afonso;SBUF;-9.400;-38.217;253 Central and South America;Brazil;Pelotas;SBPK;-31.8667;-52.35;13 Central and South America;Brazil;Petrolina ;SBPL;-9.350;-40.550;385 Central and South America;Brazil;Pirassununga;SBYS;-21.9833;-47.3333;598 Central and South America;Brazil;Pocos De Caldas;SBPC;-21.85;-46.5667;0 Central and South America;Brazil;Ponta Pora;SBPP;-22.55;-55.7;0 Central and South America;Brazil;Porto Alegre Apt;SBPA;-30;-51.1833;3 Central and South America;Brazil;Porto Alegre;SBCO;-30.0167;-51.2167;0 Central and South America;Brazil;Porto Nacional Aeroporto ;SBPN;-10.700;-48.400;261 Central and South America;Brazil;Porto Seguro;SBPS;-16.433;-39.067;51 Central and South America;Brazil;Porto Velho;SBPV;-8.7667;-63.9167;102 Central and South America;Brazil;Presidente Prudente;SBDN;-22.1167;-51.3833;0 Central and South America;Brazil;Recife;SBRF;-8.0667;-34.85;0 Central and South America;Brazil;Resende;SBRS;-22.483;-44.467;440 Central and South America;Brazil;Rio / Jacarepagua;SBJR;-22.9833;-43.3667;0 Central and South America;Brazil;Rio Branco;SBRB;-10.000;-67.800;142 Central and South America;Brazil;Rio De Janeiro;SBRJ;-22.9;-43.1667;0 Central and South America;Brazil;S. P. Aldeia Aerodrome ;SBES;-22.817;-42.100;10 Central and South America;Brazil;Salvador;SBSV;-12.9;-38.3333;13 Central and South America;Brazil;Santa Cruz;SBSC;-22.9333;-43.7167;3 Central and South America;Brazil;Santa Maria;SBSM;-29.7167;-53.7;0 Central and South America;Brazil;Santarem;SBSN;-2.4333;-54.7167;72 Central and South America;Brazil;Santos;SBST;-23.9333;-46.3;3 Central and South America;Brazil;Sao Carlos;SBSA;-22.017;-47.883;856 Central and South America;Brazil;Sao Gabriel Da Cachoeira;SBUA;-0.133;-67.083;90 Central and South America;Brazil;Sao Jose Dos Campo;SBSJ;-23.2333;-45.8667;0 Central and South America;Brazil;Sao Luiz;SBSL;-2.6;-44.2333;53 Central and South America;Brazil;Sao Paulo;SBSP;-23.6167;-46.65;802 Central and South America;Brazil;Tabatinga;SBTT;-3.6667;-69.6667;0 Central and South America;Brazil;Tarauaca;SBTK;-8.167;-70.767;190 Central and South America;Brazil;Tefe;SBTF;-3.367;-64.683;47 Central and South America;Brazil;Teresina;SBTE;-5.05;-42.8167;69 Central and South America;Brazil;Tucurui;SBTU;-3.7167;-49.7167;0 Central and South America;Brazil;Uberaba;SBUR;-19.7833;-47.9667;809 Central and South America;Brazil;Uberlandia ;SBUL;-18.883;-48.233;943 Central and South America;Brazil;Uruguaiana;SBUG;-29.7833;-57.0333;74 Central and South America;Brazil;Vilhena;SBVH;-12.7;-60.1;652 Central and South America;Brazil;Vitoria Da Conquista;SBQV;-14.950;-40.883;840 Central and South America;Brazil;Vitoria;SBVT;-20.2667;-40.2833;4 Central and South America;Brazil;Xavantina ;SBXV;-14.700;-52.350;315 Central and South America;Cayman Islands;Grand Cayman;MWCR;19.2833;-81.35;3 Central and South America;Chile;Antofagasta;SCFA;-23.4333;-70.4333;137 Central and South America;Chile;Arica;SCAR;-18.3333;-70.3333;58 Central and South America;Chile;Concepcion;SCIE;-36.7667;-73.05;0 Central and South America;Chile;Iquique/Diego Arac;SCDA;-20.5333;-70.1833;0 Central and South America;Chile;Pudahuel;SCEL;-33.3833;-70.7833;476 Central and South America;Chile;Puerto Montt;SCTE;-41.4167;-73.0833;84 Central and South America;Chile;Punta Arenas;SCCI;-53;-70.85;33 Central and South America;Colombia;Barranquilla/Ernestocortissoz;SKBQ;10.8833;-74.7833;30 Central and South America;Colombia;Bogota/Eldorado;SKBO;4.7167;-74.15;2548 Central and South America;Colombia;Bucaramanga/Palonegro;SKBG;7.1;-73.2;0 Central and South America;Colombia;Cali/Alfonso Bonillaaragon;SKCL;3.55;-76.3833;969 Central and South America;Colombia;Cartagena/Rafael Nunez;SKCG;10.45;-75.5167;12 Central and South America;Colombia;Leticia/Vasquez Cobo;SKLT;-4.1667;-69.95;84 Central and South America;Colombia;Pereira/Matecana;SKPE;4.8167;-75.7333;1342 Central and South America;Colombia;Rionegro/J.M.Cordova;SKRG;6.1333;-75.4333;2142 Central and South America;Colombia;San Andres Isla/Sesquicentenario;SKSP;12.5833;-81.7167;6 Central and South America;Colombia;Santa Marta/Simon Bolivar;SKSM;11.1333;-74.2333;14 Central and South America;Costa Rica;Chacarita;MRCH;9.9833;-84.7833;0 Central and South America;Costa Rica;Juan Santamaria;MROC;10;-84.2167;939 Central and South America;Costa Rica;Liberia;MRLB;10.6167;-85.4333;80 Central and South America;Costa Rica;Nicoya;MRNC;10.150;-85.450;120 Central and South America;Costa Rica;Palmar Sur;MRPM;8.950;-83.467;15 Central and South America;Costa Rica;Puerto Limon;MRLM;10;-83.05;3 Central and South America;Costa Rica;Tobias Bolanos;MRPV;9.95;-84.15;0 Central and South America;Cuba;Baracoa;MUBA;20.35;-74.5;9 Central and South America;Cuba;Bayamo;MUBY;20.4;-76.6167;0 Central and South America;Cuba;Camaguey;MUCM;21.4167;-77.85;118 Central and South America;Cuba;Cayo Largo del Sur;MUCL;21.6167;-81.55;0 Central and South America;Cuba;Guantanamo;MUGT;20.0833;-75.15;8 Central and South America;Cuba;Habana;MUHA;22.9833;-82.4;75 Central and South America;Cuba;Holguin;MUHG;20.7833;-76.3167;0 Central and South America;Cuba;Las Tunas;MUVT;20.95;-76.95;106 Central and South America;Cuba;Manzanillo;MUMZ;20.3333;-77.1167;60 Central and South America;Cuba;Moa;MUMO;20.65;-74.9167;0 Central and South America;Cuba;Nueva Gerona;MUNG;21.8333;-82.7833;23 Central and South America;Cuba;Santiago de Cuba;MUCU;19.9667;-75.85;55 Central and South America;Cuba;Varadero;MUVR;23.1333;-81.2833;3 Central and South America;Cuba;Venezuela;MUCA;21.7833;-78.7833;26 Central and South America;Dominican Republic;La Romana;MDLR;18.4167;-68.95;0 Central and South America;Dominican Republic;Las Americas;MDSD;18.4333;-69.6667;0 Central and South America;Dominican Republic;Puerto Plata;MDPP;19.75;-70.55;0 Central and South America;Dominican Republic;Punta Cana;MDPC;18.5667;-68.3667;0 Central and South America;Dominican Republic;Santiago;MDST;19.45;-70.7;0 Central and South America;Ecuador;Guayaquil/Simon Bolivar;SEGU;-2.15;-79.8833;9 Central and South America;Ecuador;Manta;SEMT;-0.95;-80.6833;14 Central and South America;Ecuador;Quito/Mariscal Sucre;SEQU;-0.15;-78.4833;2812 Central and South America;El Salvador;Acajutla;MSAC;13.5667;-89.8333;15 Central and South America;El Salvador;El Salvador Int.;MSLP;13.4333;-89.05;25 Central and South America;El Salvador;San Miguel;MSSM;13.45;-88.1167;0 Central and South America;El Salvador;San Salvador;MSSS;13.7;-89.1167;621 Central and South America;El Salvador;Santa Ana;MSSA;13.9833;-89.5667;0 Central and South America;Falkland Islands;Mount Pleasant Airport;EGYP;-51.817;-58.450;74 Central and South America;Falkland Islands;Stanley Airport;SFAL;-51.683;-57.767;23 Central and South America;Guatemala;Flores;MGFL;16.9167;-89.8833;115 Central and South America;Guatemala;Guatemala;MGGT;14.5833;-90.5167;1489 Central and South America;Guatemala;Huehuetenango;MGHT;15.3167;-91.4667;1901 Central and South America;Guatemala;Puerto Barrios;MGPB;15.7167;-88.6;1 Central and South America;Guatemala;San Jose;MGSJ;13.9167;-90.8167;2 Central and South America;Haiti;Camp Canargus;CTPP;18.567;-72.317;38 Central and South America;Haiti;Cap-Haitien;MTCH;19.750;-72.183;2 Central and South America;Haiti;FOB Mandrian;KQHA;19.667;-73.033;17 Central and South America;Haiti;Port-Au-Prince;MTPP;18.5667;-72.3;34 Central and South America;Honduras;Amapala;MHAM;13.2667;-87.65;0 Central and South America;Honduras;Catacamas;MHCA;14.9;-85.9333;442 Central and South America;Honduras;Choluteca;MHCH;13.3;-87.1833;48 Central and South America;Honduras;La Ceiba;MHLC;15.7333;-86.8667;26 Central and South America;Honduras;La Esperanza;MHLE;14.3167;-88.15;1674 Central and South America;Honduras;La Mesa;MHLM;15.45;-87.9333;31 Central and South America;Honduras;Nueva Ocotepeque;MHSC;14.3833;-87.6167;628 Central and South America;Honduras;Puerto Lempira;MHPL;15.2167;-83.8;13 Central and South America;Honduras;Roatan;MHRO;16.3167;-86.5167;2 Central and South America;Honduras;Santa Rosa de Copan;MHSR;14.7833;-88.7833;1079 Central and South America;Honduras;Tegucigalpa;MHTG;14.05;-87.2167;1007 Central and South America;Honduras;Tela;MHTE;15.7167;-87.4833;3 Central and South America;Honduras;Yoro;MHYR;15.1667;-87.1167;670 Central and South America;Jamaica;Kingston;MKJP;17.9333;-76.7833;14 Central and South America;Jamaica;Montego Bay / Sangster;MKJS;18.500;-77.917;1 Central and South America;Nicaragua;Bluefields;MNBL;12;-86.7667;5 Central and South America;Nicaragua;Chinandega;MNCH;12.6333;-87.1333;60 Central and South America;Nicaragua;Jinotega;MNJG;13.0833;-85.9833;1032 Central and South America;Nicaragua;Juigalpa;MNJU;12.1;-85.3667;90 Central and South America;Nicaragua;Managua;MNMG;12.15;-86.1667;56 Central and South America;Nicaragua;Puerto Cabezas;MNPC;14.05;-83.3667;20 Central and South America;Nicaragua;Rivas;MNRS;11.4167;-85.8333;70 Central and South America;Panama;Bocas del Toro;MPBO;9.35;-82.25;0 Central and South America;Panama;David;MPDA;8.4;-82.4167;26 Central and South America;Panama;Panama;MPMG;8.9833;-79.5167;0 Central and South America;Panama;Santiago;MPSA;8.0833;-80.95;88 Central and South America;Panama;Tocumen;MPTO;9.05;-79.3667;0 Central and South America;Paraguay;Asuncion;SGAS;-25.2667;-57.6333;101 Central and South America;Paraguay;Concepcion;SGCO;-23.417;-57.300;74 Central and South America;Paraguay;Encarnacion;SGEN;-27.317;-55.833;91 Central and South America;Paraguay;Guarany;SGES;-25.45;-54.85;0 Central and South America;Paraguay;Mariscal Estigarribia;SGME;-22.017;-60.600;172 Central and South America;Paraguay;Nueva Asuncion;SGNA;-20.717;-61.917;318 Central and South America;Peru;Andahuayla;SPHY;-13.7167;-73.35;0 Central and South America;Peru;Anta Huaraz ;SPHZ;-9.350;-77.600;2750 Central and South America;Peru;Arequipa;SPQU;-16.3167;-71.55;2539 Central and South America;Peru;Atalaya;SPAY;-10.733;-73.783;450 Central and South America;Peru;Ayacucho;SPHO;-13.1333;-74.2167;2749 Central and South America;Peru;Chiclayo;SPHI;-6.7833;-79.8333;34 Central and South America;Peru;Cuzco;SPZO;-13.55;-71.9833;3249 Central and South America;Peru;Huanuco;SPNC;-9.9;-75.75;1860 Central and South America;Peru;Iquitos;SPQT;-3.75;-73.25;126 Central and South America;Peru;Juanjui;SPJI;-7.2167;-76.7167;363 Central and South America;Peru;Juliaca;SPJL;-15.4833;-70.15;3827 Central and South America;Peru;Lima-Callao;SPIM;-12;-77.1167;13 Central and South America;Peru;Pisco;SPSO;-13.75;-76.2833;7 Central and South America;Peru;Pucallpa;SPCL;-8.4167;-74.6;149 Central and South America;Peru;Puerto Maldonado;SPTU;-12.6333;-69.2;266 Central and South America;Peru;Rioja;SPJA;-6.05;-77.15;0 Central and South America;Peru;Tacna;SPTN;-18.0667;-70.3;469 Central and South America;Peru;Talara;SPYL;-4.5667;-81.25;90 Central and South America;Peru;Yurimaguas;SPMS;-5.9;-76.0833;184 Central and South America;Suriname;Johan A. Pengel;SMJP;5.45;-55.1833;0 Central and South America;Suriname;Zanderij;SMZY;5.450;-55.200;15 Central and South America;Uruguay;Artigas;SUAG;-30.3833;-56.5;120 Central and South America;Uruguay;Capitan Corbeta;SULS;-34.8667;-55.1;0 Central and South America;Uruguay;Colonia;SUCA;-34.45;-57.8333;22 Central and South America;Uruguay;Durazno;SUDU;-33.35;-56.5;92 Central and South America;Uruguay;Maldonado/Punta Est;SUPE;-34.9167;-54.9167;0 Central and South America;Uruguay;Melilla;SUAA;-34.7833;-56.25;48 Central and South America;Uruguay;Melo;SUMO;-32.367;-54.217;100 Central and South America;Uruguay;Mercedes;SUME;-33.250;-58.067;22 Central and South America;Uruguay;Montevideo/Carrasco;SUMU;-34.8333;-56;32 Central and South America;Uruguay;Paysandu;SUPU;-32.3333;-58.0333;61 Central and South America;Uruguay;Rivera;SURV;-30.8833;-55.5333;241 Central and South America;Uruguay;Salto;SUSO;-31.3833;-57.95;33 Central and South America;Uruguay;Tacuarembo;SUTB;-31.7;-55.9833;134 Central and South America;Uruguay;Treinta Y Tres;SUTR;-33.217;-54.383;46 Central and South America;Venezuela;Acarigua;SVAC;9.55;-69.2333;225 Central and South America;Venezuela;Barcelona;SVBC;10.1167;-64.6833;7 Central and South America;Venezuela;Barinas;SVBI;8.6167;-70.2167;204 Central and South America;Venezuela;Barquisimeto;SVBM;10.0667;-69.3167;614 Central and South America;Venezuela;Calabozo;SVCL;8.9333;-67.4167;101 Central and South America;Venezuela;Caracas / Oscar Macha;SVCS;10.300;-66.817;654 Central and South America;Venezuela;Caracas La Carlota;SVFM;10.5;-66.8833;835 Central and South America;Venezuela;Caracas Maiquetia;SVMI;10.6;-66.9833;48 Central and South America;Venezuela;Carupano / Gen. Jose;SVCP;10.667;-63.267;10 Central and South America;Venezuela;Ciudad Bolivar;SVCB;8.15;-63.55;48 Central and South America;Venezuela;Coro;SVCR;11.4167;-69.6833;17 Central and South America;Venezuela;Cumana;SVCU;10.45;-64.1833;4 Central and South America;Venezuela;El Vigia / Perez Alph;SVVG;8.633;-71.667;100 Central and South America;Venezuela;Guanare;SVGU;9.0167;-69.7333;163 Central and South America;Venezuela;Guasdualito;SVGD;7.233;-70.800;130 Central and South America;Venezuela;Guayana / Manuel Car ;SVPR;8.300;-62.733;144 Central and South America;Venezuela;Guiria;SVGI;10.583;-62.317;13 Central and South America;Venezuela;Higuerote;SVHG;10.467;-66.100;4 Central and South America;Venezuela;La Fria;SVLF;8.250;-72.267;98 Central and South America;Venezuela;La Orchila;SVLO;11.800;-66.183;3 Central and South America;Venezuela;Maracaibo-La Chinita;SVMC;10.5667;-71.7333;65 Central and South America;Venezuela;Maracay-B.A.Sucre;SVBS;10.25;-67.65;437 Central and South America;Venezuela;Margarita;SVMG;10.9167;-63.9833;0 Central and South America;Venezuela;Maturin;SVMT;9.750;-63.183;65 Central and South America;Venezuela;Mene Grande;SVMN;9.8167;-70.9333;28 Central and South America;Venezuela;Merida;SVMD;8.6;-71.1833;1498 Central and South America;Venezuela;Metropolitano Private ;SVMP;10.133;-66.783;175 Central and South America;Venezuela;Paraguana / Josefa;SVJC;11.783;-70.150;23 Central and South America;Venezuela;Paramillo Private ;SVPM;7.800;-72.200;1000 Central and South America;Venezuela;Pto. Cabello;SVPC;10.500;-68.000;2 Central and South America;Venezuela;Puerto Ayacucho;SVPA;5.600;-67.500;73 Central and South America;Venezuela;San Antonio Del Tachira;SVSA;7.85;-72.45;378 Central and South America;Venezuela;San Felipe;SVSP;10.283;-68.750;232 Central and South America;Venezuela;San Fernando De Apure;SVSR;7.9;-67.4167;48 Central and South America;Venezuela;San Juan De Los Morros;SVJM;9.917;-67.333;429 Central and South America;Venezuela;San Tome Private ;SVST;8.950;-64.150;262 Central and South America;Venezuela;Santa Barbara Zulia;SVSZ;8.983;-71.950;10 Central and South America;Venezuela;Santa Elena De Uairen;SVSE;4.600;-61.117;907 Central and South America;Venezuela;Sto. Domingo;SVSO;7.583;-72.067;327 Central and South America;Venezuela;Temblador;SVTR;9.017;-62.617;30 Central and South America;Venezuela;Tumeremo;SVTM;7.300;-61.450;180 Central and South America;Venezuela;Valencia;SVVA;10.167;-67.933;430 Central and South America;Venezuela;Valera*;SVVL;9.35;-70.6167;582 Central and South America;Venezuela;Valle De La Pascua;SVVP;9.217;-66.017;125 Europe;Albania;Tirana;LATI;41.3333;19.7833;90 Europe;Armenia;Yerevan;UGEE;40.133;44.467;890 Europe;Austria;Aigen Im Ennstal;LOXA;47.533;14.133;638 Europe;Austria;Graz;LOWG;47;15.4333;347 Europe;Austria;Hohenems;LOIH;47.3833;9.7006;0 Europe;Austria;Horsching Aus-Afb ;LOXL;48.233;14.183;313 Europe;Austria;Innsbruck;LOWI;47.2667;11.35;593 Europe;Austria;Klagenfurt;LOWK;46.65;14.3333;476 Europe;Austria;Krems-Langenlois;LOAG;48.446;15.634;312 Europe;Austria;Linz;LOWL;48.2333;14.1833;313 Europe;Austria;Niederosterreich / Wiener Neustadt-Ost Flugplatz;LOAN;47.843;16.258;272 Europe;Austria;Oberosterreich / Freistadt Flugplatz;LOLF;48.515;14.409;685 Europe;Austria;Punitz-Gussing;LOGG;47.148;16.318;290 Europe;Austria;Salzburg;LOWS;47.8;13;450 Europe;Austria;Tulln;LOXT;48.317;16.117;175 Europe;Austria;Voslau;LOAV;47.95;16.2594;0 Europe;Austria;Wien;LOWW;48.1167;16.5667;190 Europe;Austria;Wels;LOLW;48.167;14.033;0 Europe;Austria;Zell Am See;LOWZ;47.2833;12.7875;0 Europe;Austria;Zeltweg;LOXZ;47.200;14.750;677 Europe;Belarus;Brest;UMBB;52.108;23.897;143 Europe;Belarus;Gomel';UMGG;52.527;31.018;144 Europe;Belarus;Grodno;UMMG;53.602;24.055;135 Europe;Belarus;Loshitsa / Minsk International 1;UMMM;53.865;27.542;228 Europe;Belarus;Minsk;UMMS;53.933;27.633;234 Europe;Belarus;Vitebsk;UMII;55.167;30.217;176 Europe;Belgium;Antwerpen/Deurne;EBAW;51.2;4.4667;14 Europe;Belgium;Beauvechain;EBBE;50.75;4.7667;127 Europe;Belgium;Bertrix Bel-Afb ;EBBX;49.900;5.217;461 Europe;Belgium;Brasschaat;EBBT;51.3333;4.5;23 Europe;Belgium;Brussels-National Airport;EBBR;50.9;4.5333;58 Europe;Belgium;Charleroi-Brussels South;EBCI;50.4667;4.45;192 Europe;Belgium;Chievres;EBCV;50.5667;3.8333;63 Europe;Belgium;Elsenborn;EBLB;50.4667;6.1833;570 Europe;Belgium;Florennes;EBFS;50.2333;4.65;299 Europe;Belgium;Genk;EBZW;50.933;5.500;61 Europe;Belgium;Gent / Industrie-Zone;EBGT;51.183;3.817;10 Europe;Belgium;Goetsenhoven;EBTN;50.783;4.950;71 Europe;Belgium;Kleine Brogel;EBBL;51.1667;5.4667;64 Europe;Belgium;Koksijde;EBFN;51.0833;2.65;9 Europe;Belgium;Liege;EBLG;50.65;5.45;178 Europe;Belgium;Melsbroek Bel-Afb ;EBMB;50.900;4.500;55 Europe;Belgium;Munte;EBMT;50.933;3.733;55 Europe;Belgium;Oostende;EBOS;51.2;2.8667;5 Europe;Belgium;Schaffen;EBDT;51;5.0667;54 Europe;Belgium;Sint-Truiden;EBST;50.800;5.200;74 Europe;Belgium;Spa / La Sauveniere;EBSP;50.483;5.917;470 Europe;Belgium;St-Hubert;EBSU;50.033;5.400;563 Europe;Belgium;Weelde Military ;EBWE;51.417;5.000;60 Europe;Bosnia-Herzegovina;Banja Luka;LQBK;44.783;17.217;156 Europe;Bosnia-Herzegovina;Livno;LQLV;43.833;17.017;724 Europe;Bosnia-Herzegovina;Mostar;LQMO;43.350;17.800;108 Europe;Bosnia-Herzegovina;Sarajevo;LQSA;43.8167;18.3333;510 Europe;Bosnia and Herzegovina;Tuzla;LQTZ;44.550;18.700;306 Europe;Bulgaria;Burgas;LBBG;42.4833;27.4833;28 Europe;Bulgaria;Gorna Orechovista;LBGO;43.150;25.600;0 Europe;Bulgaria;Plovdiv;LBPD;42.1333;24.75;185 Europe;Bulgaria;Rousse;LBRS;43.850;25.950;37 Europe;Bulgaria;Sofia;LBSF;42.65;23.3833;595 Europe;Bulgaria;Varna;LBWN;43.2;27.9167;43 Europe;Croatia;Brac;LDSB;43.286;16.680;541 Europe;Croatia;Cepin;LDOC;45.517;18.550;72 Europe;Croatia;Dubrovnik;LDDU;42.5667;18.2667;165 Europe;Croatia;Hvar;LDSH;43.167;16.450;20 Europe;Croatia;Losinj Island;LDLO;44.566;14.393;45 Europe;Croatia;Osijek / Cepin;LDOS;45.450;18.800;88 Europe;Croatia;Pula;LDPL;45.9;13.9167;63 Europe;Croatia;Rijeka;LDRI;45.2167;14.5833;0 Europe;Croatia;Slavonski Brod;LDOR;45.167;18.000;88 Europe;Croatia;Split;LDSP;43.5333;16.3;21 Europe;Croatia;Varazdin;LDVA;46.300;16.383;167 Europe;Croatia;Zadar;LDZD;44.1;15.35;0 Europe;Croatia;Zagreb;LDZA;45.7333;16.0667;107 Europe;Croatia;Zagreb / Maksimir;LDDD;45.817;16.033;123 Europe;Cyprus;Akrotiri;LCRA;34.5833;32.9833;0 Europe;Cyprus;Athalassa;LCNC;35.150;33.400;162 Europe;Cyprus;Ercan;LCEN;35.15;33.5;0 Europe;Cyprus;Larnaka;LCLK;34.8833;33.6333;2 Europe;Cyprus;Paphos;LCPH;34.7167;32.4833;8 Europe;Czech Republic;Brno;LKTB;49.15;16.7;246 Europe;Czech Republic;Holesov;LKHO;49.317;17.567;224 Europe;Czech Republic;Karlovy Vary;LKKV;50.200;12.917;603 Europe;Czech Republic;Kunovice;LKKU;49.029;17.440;177 Europe;Czech Republic;Liberec;LKLB;50.768;15.025;405 Europe;Czech Republic;Ostrava;LKMT;49.6833;18.1167;256 Europe;Czech Republic;Praha;LKPR;50.1;14.25;365 Europe;Denmark;Aarhus/Observatorium;EKAH;56.1272;10.1931;25 Europe;Denmark;Aarhus/Tirstrup;EKAH;56.3;10.6167;25 Europe;Denmark;Alborg;EKYT;57.1;9.85;13 Europe;Denmark;Anholt Island Automated Reporting Station ;EKAT;56.700;11.550;8 Europe;Denmark;Avno Danish Air Force Base ;EKAV;55.083;11.783;4 Europe;Denmark;Billund;EKBI;55.7333;9.1667;79 Europe;Denmark;Bornholm;EKRN;55.0667;14.75;16 Europe;Denmark;Esbjerg;EKEB;55.5333;8.5667;29 Europe;Denmark;Hadsund;EKHS;56.717;10.117;2 Europe;Denmark;Karup;EKKA;56.3;9.1167;53 Europe;Denmark;Kobenhavn/Kastrup;EKCH;55.6167;12.65;5 Europe;Denmark;Kobenhavn/Roskilde;EKRK;55.5833;12.1333;44 Europe;Denmark;Kolding/Vandrup;EKVD;55.4333;9.3333;45 Europe;Denmark;Lindtorp Airport;EKHO;56.400;8.450;15 Europe;Denmark;Lolland Falster;EKMB;54.7;11.45;5 Europe;Denmark;Odense;EKOD;55.4833;10.3333;17 Europe;Denmark;Sindal;EKSN;57.5;10.2167;28 Europe;Denmark;Skive;EKSV;56.55;9.1667;21 Europe;Denmark;Sonderborg;EKSB;54.9667;9.7833;14 Europe;Denmark;Stauning;EKVJ;56;8.35;5 Europe;Denmark;Sydfyns Flyveplads;EKST;55.017;10.567;6 Europe;Denmark;Thisted;EKTS;57.0667;8.7167;7 Europe;Denmark;Vaerlose;EKVL;55.7667;12.3333;31 Europe;Denmark;Vagar;EKVG;62.0667;-7.2833;92 Europe;Denmark;Vandel;EKVA;55.7;9.2;76 Europe;Denmark;Vojens/Skrydstrup;EKSP;55.2333;9.2667;47 Europe;Estonia;Kardla;EEKA;58.983;22.817;5 Europe;Estonia;Kuressaare;EEKE;58.217;22.500;4 Europe;Estonia;Parnu;EEPU;58.417;24.467;14 Europe;Estonia;Tallinn;EETN;59.400;24.817;40 Europe;Estonia;Tartu/Ulenurme;EETU;58.300;26.733;59 Europe;Finland;Ahtari;EFHT;62.533;24.217;157 Europe;Finland;Enontekio;EFET;68.364;23.428;308 Europe;Finland;Hailuoto;EFHL;65.033;24.800;6 Europe;Finland;Halli;EFHA;61.850;24.800;143 Europe;Finland;Helsinki-Malmi;EFHF;60.250;25.050;17 Europe;Finland;Helsinki;EFHK;60.3167;24.9667;56 Europe;Finland;Ilmajoki;EFIL;62.700;22.833;92 Europe;Finland;Ivalo;EFIV;68.617;27.417;147 Europe;Finland;Joensuu;EFJO;62.667;29.633;119 Europe;Finland;Jyvaskyla;EFJY;62.400;25.683;141 Europe;Finland;Kajaani;EFKI;64.283;27.683;143 Europe;Finland;Kauhava;EFKA;63.100;23.033;42 Europe;Finland;Kemi;EFKE;65.783;24.583;15 Europe;Finland;Kittila;EFKT;67.700;24.850;643 Europe;Finland;Kruunupyy;EFKK;63.717;23.150;25 Europe;Finland;Kuopio;EFKU;63.017;27.800;98 Europe;Finland;Kuusamo;EFKS;65.967;29.183;262 Europe;Finland;Lappeenranta;EFLP;61.046;28.149;106 Europe;Finland;Mariehamn / Aland Island;EFMA;60.117;19.900;6 Europe;Finland;Mikkeli;EFMI;61.733;27.300;138 Europe;Finland;Oulu;EFOU;64.933;25.367;12 Europe;Finland;Pello;EFPE;66.800;24.000;84 Europe;Finland;Pori;EFPO;61.467;21.800;13 Europe;Finland;Pudasjarvi;EFPU;65.367;27.017;114 Europe;Finland;Rovaniemi;EFRO;66.567;25.833;197 Europe;Finland;Savonlinna;EFSA;61.950;28.950;95 Europe;Finland;Seinajoki-Ilmajok;EFSI;62.694;22.832;91 Europe;Finland;Sodankyla;EFSO;67.367;26.650;179 Europe;Finland;Suomussalmi;EFSU;64.900;29.017;223 Europe;Finland;Tampere;EFTP;61.4167;23.5833;112 Europe;Finland;Turku;EFTU;60.5167;22.2667;59 Europe;Finland;Utti;EFUT;60.900;26.933;100 Europe;Finland;Vaasa;EFVA;63.050;21.767;4 Europe;Finland;Varkaus;EFVR;62.167;27.867;87 Europe;Finland;Viitasaari;EFVI;63.083;25.867;132 Europe;France;Abbeville;LFOI;50.133;1.833;74 Europe;France;Agen;LFBA;44.1833;0.6;60 Europe;France;Aix Les Milles;LFMA;43.500;5.367;111 Europe;France;Ajaccio/Campo dell'Oro;LFKJ;41.9167;8.8;9 Europe;France;Albi;LFCI;43.917;2.117;172 Europe;France;Alencon;LFOF;48.450;0.117;144 Europe;France;Amberieu;LFXA;45.983;5.333;250 Europe;France;Angers;LFRA;47.500;-0.567;57 Europe;France;Auch;LFDH;43.683;0.600;125 Europe;France;Aurillac;LFLW;44.900;2.417;640 Europe;France;Auxerre;LFLA;47.800;3.550;207 Europe;France;Avord;LFOA;47.053;2.632;177 Europe;France;Bale-Mulhouse;LFSB;47.6;7.5167;271 Europe;France;Bastia;LFKB;42.55;9.4833;12 Europe;France;Beauvais-Tille;LFOB;49.4667;2.1167;111 Europe;France;Belfort;LFSQ;47.633;6.867;422 Europe;France;Bergerac;LFBE;44.817;0.517;51 Europe;France;Besancon;LFSA;47.250;5.983;307 Europe;France;Beziers / Vias;LFMU;43.317;3.350;17 Europe;France;Biarritz-Bayonne;LFBZ;43.4667;-1.5333;71 Europe;France;Biscarosse;LFBS;44.433;-1.250;33 Europe;France;Bordeaux;LFBD;44.8333;-0.7;61 Europe;France;Bourges;LFLD;47.0667;2.3667;166 Europe;France;Brest;LFRB;48.45;-4.4167;103 Europe;France;Brive;LFBV;45.150;1.467;111 Europe;France;Caen-Carpiquet;LFRK;49.1833;-0.45;67 Europe;France;Calvi-Ste-Catherine;LFKC;42.5333;8.8;58 Europe;France;Cambrai;LFQI;50.217;3.150;78 Europe;France;Cannes-Mandelieu;LFMD;43.55;6.95;9 Europe;France;Carcassonne;LFMK;43.217;2.317;130 Europe;France;Cassagnes-Begonhes;LFIG;44.183;2.517;1020 Europe;France;Cazaux;LFBC;44.5333;-1.1333;33 Europe;France;Chalons-Vatry;LFOK;48.776;4.184;179 Europe;France;Chambery;LFLB;45.65;5.8833;239 Europe;France;Charleville;LFQV;49.783;4.633;149 Europe;France;Chartres;LFOR;48.467;1.517;155 Europe;France;Chateaudun;LFOC;48.050;1.383;134 Europe;France;Chateauroux;LFLX;46.850;1.717;160 Europe;France;Chatillon-Sur-Seine;LFQH;47.850;4.550;264 Europe;France;Cherbourg;LFRC;49.65;-1.4667;139 Europe;France;Clermont-Ferrand;LFLC;45.7833;3.1667;330 Europe;France;Cognac;LFBG;45.667;-0.317;30 Europe;France;Colmar-Meyenheim;LFSC;47.9167;7.4;217 Europe;France;Creil Fafb ;LFPC;49.250;2.517;88 Europe;France;Dax;LFBY;43.683;-1.067;32 Europe;France;Dijon;LFSD;47.2667;5.0833;227 Europe;France;Dinard;LFRD;48.5833;-2.0667;60 Europe;France;Dole;LFGJ;47.0333;5.435;0 Europe;France;Evreux-Fauville;LFOE;49.0167;1.2167;146 Europe;France;Figari;LFKF;41.5;9.1;23 Europe;France;Grenoble-Saint-Geoirs;LFLS;45.3667;5.3333;386 Europe;France;Hyeres-Le Palyvestre;LFTH;43.1;6.15;4 Europe;France;Istres;LFMI;43.517;4.933;23 Europe;France;La Roche-Sur-Yon;LFRI;46.700;-1.383;90 Europe;France;La Rochelle;LFBH;46.150;-1.150;4 Europe;France;Landivisiau;LFRJ;48.517;-4.150;106 Europe;France;Lannion;LFRO;48.75;-3.4667;0 Europe;France;Lanveoc Poulmic;LFRL;48.283;-4.433;87 Europe;France;Le Havre-Octeville;LFOH;49.5167;0.0667;103 Europe;France;Le Luc;LFMC;43.383;6.383;80 Europe;France;Le Mans;LFRM;47.9333;0.2;52 Europe;France;Le Puy;LFHP;45.083;3.767;832 Europe;France;Le Touquet;LFAT;50.5167;1.6167;14 Europe;France;Lille-Lesquin;LFQQ;50.5667;3.1;52 Europe;France;Limoges;LFBL;45.8667;1.1833;402 Europe;France;Lorient-Lann-Bihoue;LFRH;47.7667;-3.45;44 Europe;France;Luxeuil;LFSX;47.7833;6.35;273 Europe;France;Lyon-Bron;LFLY;45.7167;4.95;201 Europe;France;Lyon-Satolas;LFLL;45.7333;5.0833;240 Europe;France;Macon;LFLM;46.300;4.800;221 Europe;France;Marseille-Provence;LFML;43.45;5.2333;36 Europe;France;Melun;LFPM;48.617;2.683;95 Europe;France;Mende / Brenoux;LFNB;44.500;3.533;1024 Europe;France;Metz-Frescaty;LFSF;49.0833;6.1333;191 Europe;France;Metz-Nancy-Lorraine;LFJL;48.983;6.250;264 Europe;France;Monpellier-Mediterrannee;LFMT;43.5833;3.9667;6 Europe;France;Mont-de-Marsan;LFBM;43.9167;-0.5;63 Europe;France;Montelimar;LFLQ;44.583;4.733;73 Europe;France;Montlucon / Gueret;LFBK;46.217;2.367;415 Europe;France;Morlaix / Ploujean;LFRU;48.600;-3.817;86 Europe;France;Nancy-Essey;LFSN;48.6833;6.2167;217 Europe;France;Nancy-Ochey;LFSO;48.5833;5.9667;350 Europe;France;Nantes Adlantique;LFRS;47.1667;-1.6;27 Europe;France;Nevers;LFQG;47.000;3.100;180 Europe;France;Nice-Cote d'Azur;LFMN;43.65;7.2;10 Europe;France;Nimes / Courbessac;LFME;43.867;4.400;60 Europe;France;Nimes-Garons;LFTW;43.75;4.4167;96 Europe;France;Niort;LFBN;46.317;-0.400;61 Europe;France;Orange;LFMO;44.133;4.833;60 Europe;France;Orleans;LFOJ;47.983;1.750;126 Europe;France;Paris Met Center;LFPW;48.833;2.333;75 Europe;France;Paris/Charles De Gaulle;LFPG;49.0167;2.5333;109 Europe;France;Paris/Le Bourget;LFPB;48.9667;2.45;65 Europe;France;Paris/Orly;LFPO;48.7333;2.4;96 Europe;France;Pau/Pyrenees;LFBP;43.3833;-0.4167;185 Europe;France;Perigueux;LFBX;45.200;0.817;100 Europe;France;Perpignan-Rivesaltes;LFMP;42.7333;2.8667;48 Europe;France;Poitiers;LFBI;46.5833;0.3167;120 Europe;France;Quimper;LFRQ;47.9667;-4.1667;94 Europe;France;Reims-Champagne;LFSR;49.3;4.0333;99 Europe;France;Rennes;LFRN;48.0667;-1.7333;37 Europe;France;Rodez;LFCR;44.400;2.483;581 Europe;France;Romorantin;LFYR;47.317;1.683;85 Europe;France;Rouen-Valle de Seine;LFOP;49.3833;1.1833;157 Europe;France;Saint-Brieuc-Armor;LFRT;48.5333;-2.85;136 Europe;France;Saint-Dizier-Robinson;LFSI;48.6333;4.9;140 Europe;France;Saint-Etienne-Boutheon;LFMH;45.5333;4.3;402 Europe;France;Saint-Nazaire-Montoir;LFRZ;47.3167;-2.1667;4 Europe;France;Saint-Quentin;LFOW;49.817;3.200;98 Europe;France;Saint-Yan;LFLN;46.417;4.017;242 Europe;France;Salon;LFMY;43.600;5.100;59 Europe;France;Solenzara;LFKS;41.917;9.400;8 Europe;France;St-Auban-Sur-Durance;LFMX;44.067;6.000;460 Europe;France;St-Girons;LFCG;43.000;1.100;414 Europe;France;St-Raphael;LFTU;43.417;6.750;2 Europe;France;Strasbourg;LFST;48.55;7.6333;154 Europe;France;Suippes Range Met ;LFFS;49.150;4.533;199 Europe;France;Tarbes;LFBT;43.1833;-0;363 Europe;France;Toul / Rosieres;LFSL;48.783;5.483;285 Europe;France;Toulouse / Francazal;LFBF;43.533;1.367;164 Europe;France;Toulouse;LFBO;43.6333;1.3667;153 Europe;France;Tours-St-Symphorien;LFOT;47.45;0.7167;112 Europe;France;Toussus-Le Noble;LFPN;48.7667;1.1;161 Europe;France;Troyes/Barberey;LFQB;48.3333;4.0167;118 Europe;France;Vichy-Charmeil;LFLV;46.1667;3.4;251 Europe;France;Villacoublay;LFPV;48.7667;2.2;179 Europe;France;Vittefleur / St. Vale;LFOS;49.833;0.650;83 Europe;Georgia;Muhrani;UGMM;41.933;44.583;551 Europe;Georgia;Tbilisi;UGGG;41.683;44.950;467 Europe;Germany;Aachen / Merzbruck;ETBA;50.817;6.183;191 Europe;Germany;Altenstadt;ETHA;47.833;10.867;739 Europe;Germany;Ansbach / Katterbach;ETEB;49.317;10.633;467 Europe;Germany;Augsburg;EDMA;48.4333;10.9333;463 Europe;Germany;Bad Kreuznach;ETEH;49.850;7.883;103 Europe;Germany;Baden Wurttemberg, Neuostheim;EDFM;49.473;8.516;100 Europe;Germany;Bayreuth;EDQD;49.9833;11.6333;498 Europe;Germany;Bergen;ETGB;52.817;9.933;70 Europe;Germany;Berlin-Schoenefeld;EDDB;52.383;13.517;47 Europe;Germany;Berlin-Tegel;EDDT;52.5667;13.3167;37 Europe;Germany;Berlin-Tempelhof;EDDI;52.4667;13.4;49 Europe;Germany;Braunschweig;EDVE;52.3;10.45;88 Europe;Germany;Bremen;EDDW;53.05;8.8;5 Europe;Germany;Brueggen;ETUR;51.200;6.133;73 Europe;Germany;Buechel;ETSB;50.167;7.067;478 Europe;Germany;Bueckeburg;ETHB;52.283;9.083;70 Europe;Germany;Celle;ETHC;52.600;10.017;39 Europe;Germany;Coleman Mannheim ;ETOR;49.567;8.467;96 Europe;Germany;Cottbus Flugplatz ;ETHT;51.767;14.300;67 Europe;Germany;Diepholz;ETND;52.583;8.350;39 Europe;Germany;Donaueschingen / Villingen;EDTD;47.967;8.517;680 Europe;Germany;Dortmund-Wickede;EDLW;51.5167;7.6167;0 Europe;Germany;Dresden-Klotzsche;EDDC;51.1333;13.75;232 Europe;Germany;Dusseldorf;EDDL;51.3;6.7667;41 Europe;Germany;Eggebek;ETME;54.633;9.350;20 Europe;Germany;Erding;ETSE;48.317;11.950;462 Europe;Germany;Erfurt-Bindersleben;EDDE;50.983;10.967;315 Europe;Germany;Essen;EDZE;51.400;6.967;152 Europe;Germany;Fassberg;ETHS;52.917;10.183;75 Europe;Germany;Frankfurt/Main;EDDF;50.05;8.6;113 Europe;Germany;Friedrichshafen;EDNY;47.6667;9.5167;424 Europe;Germany;Fritzlar;ETHF;51.117;9.283;172 Europe;Germany;Fuerstenfeldbruck;ETSF;48.200;11.267;519 Europe;Germany;Geilenkirchen;ETNG;50.967;6.050;90 Europe;Germany;Giebelstadt;ETEU;49.650;9.967;298 Europe;Germany;Gluecksburg / Meierwik;ETGG;54.833;9.500;27 Europe;Germany;Grafenwoehr;ETIC;49.700;11.950;415 Europe;Germany;Guetersloh;ETUO;51.917;8.300;72 Europe;Germany;Hahn;EDFH;49.950;7.267;491 Europe;Germany;Hamburg-Finkenwerder;EDHI;53.5333;9.8333;13 Europe;Germany;Hamburg;EDDH;53.6333;10;15 Europe;Germany;Hanau;ETID;50.167;8.967;112 Europe;Germany;Hannover;EDDV;52.4667;9.6833;59 Europe;Germany;Heidelberg;ETIE;49.400;8.650;110 Europe;Germany;Heringsdorf;EDAH;53.883;14.150;28 Europe;Germany;Hessen;EDGS;50.708;8.083;602 Europe;Germany;Hof;EDQM;50.3167;11.8833;568 Europe;Germany;Hohenfels;ETIH;49.217;11.833;442 Europe;Germany;Hohn;ETNH;54.317;9.533;12 Europe;Germany;Holzdorf;ETSH;51.767;13.183;79 Europe;Germany;Hopsten;ETNP;52.333;7.533;39 Europe;Germany;Idar-Oberstein;ETGI;49.700;7.333;376 Europe;Germany;Illesheim;ETIK;49.467;10.383;325 Europe;Germany;Ingolstadt;ETSI;48.717;11.533;367 Europe;Germany;Itzehoe;ETHI;54.000;9.583;25 Europe;Germany;Jever;ETNJ;53.533;7.883;7 Europe;Germany;Kalkar;ETGY;51.733;6.267;31 Europe;Germany;Karlsruhe, Baden Wurttemberg;EDSB;48.779;8.080;124 Europe;Germany;Kassel-Calden;EDVK;51.4;9.3833;283 Europe;Germany;Kiel-Holtenau;ETMK;54.383;10.150;31 Europe;Germany;Kitzingen Usa \ Af ;ETIN;49.750;10.200;210 Europe;Germany;Koln/Bonn;EDDK;50.8667;7.1667;100 Europe;Germany;Konstanz;EDTZ;47.683;9.183;443 Europe;Germany;Kuemmersruck;ETGK;49.433;11.900;419 Europe;Germany;Laage;ETNL;53.917;12.283;40 Europe;Germany;Laarbruch;ETUL;51.600;6.150;32 Europe;Germany;Lahr, CAN-AFB;EDTL;48.369;7.828;156 Europe;Germany;Landsberg;ETSA;48.067;10.900;623 Europe;Germany;Laupheim;ETHL;48.217;9.917;538 Europe;Germany;Lechfeld;ETSL;48.183;10.867;555 Europe;Germany;Leipzig-Schkeuditz;EDDP;51.4167;12.2333;149 Europe;Germany;Lemwerder;EDWD;53.150;8.617;30 Europe;Germany;Lubeck-Blankensee;EDHL;53.8167;10.7;15 Europe;Germany;Magdeburg, Sachsen-Anhalt;EDBM;52.076;11.624;82 Europe;Germany;Mebstetten / Albstadt;ETCE;50.117;9.117;475 Europe;Germany;Mecklenburg-Vorpommern, Parchim;EDOP;53.427;11.784;52 Europe;Germany;Memmingen;ETSM;47.983;10.233;634 Europe;Germany;Mendig;ETHM;50.367;7.317;182 Europe;Germany;Meppen-Mil;ETWM;52.723;7.326;21 Europe;Germany;Messstetten;ETGZ;48.183;9.000;920 Europe;Germany;Monchengladbach;EDLN;51.2167;6.5044;0 Europe;Germany;Munchen;EDDM;48.1333;11.7;529 Europe;Germany;Munster/Osnabruck;EDDG;52.1333;7.7;53 Europe;Germany;Neuburg / Donau;ETSN;48.717;11.217;380 Europe;Germany;Niederrhein;EDLV;51.602;6.142;32 Europe;Germany;Niederstetten;ETHN;49.400;9.967;468 Europe;Germany;Noervenich;ETNN;50.833;6.667;118 Europe;Germany;Nordholz;ETMN;53.767;8.667;23 Europe;Germany;Nordhorn;ETUN;52.450;7.167;26 Europe;Germany;Nurnberg;EDDN;49.5;11.05;318 Europe;Germany;Oberpfaffenhofen;EDMO;48.0833;11.2833;0 Europe;Germany;Paderborn-Haxterberg;EDLP;51.6167;8.6167;0 Europe;Germany;Pferdsfeld;ETSP;49.850;7.600;396 Europe;Germany;Preschen;ETNR;51.667;14.633;100 Europe;Germany;Ramstein;ETAR;49.433;7.600;238 Europe;Germany;Rheine-Bentlage;ETHE;52.300;7.383;40 Europe;Germany;Roth;ETHR;49.217;11.100;388 Europe;Germany;Saarbrucken;EDDR;49.2167;7.1167;320 Europe;Germany;Schleswig-Jagel;ETNS;54.467;9.517;22 Europe;Germany;Sembach United States Air Force Operated Base In Foreign Country ;ETAS;49.500;7.867;321 Europe;Germany;Spangdahlem;ETAD;49.983;6.700;365 Europe;Germany;Stuttgart;EDDS;48.6833;9.2167;391 Europe;Germany;Trollenhagen;ETNU;53.600;13.317;71 Europe;Germany;Westerland;EDXW;54.9167;8.35;20 Europe;Germany;Wiesbaden;ETOU;50.050;8.333;140 Europe;Germany;Wittmundhaven;ETNT;53.550;7.667;8 Europe;Germany;Wittstock;ETGW;53.200;12.517;72 Europe;Germany;Wunstorf;ETNW;52.450;9.433;57 Europe;Germany;Zweibrucken, Rheinland-Pfalz;EDRZ;49.209;7.401;344 Europe;Gibraltar;Gibraltar;LXGB;36.15;-5.35;0 Europe;Greece;Alexandroupolis;LGAL;40.85;25.9167;3 Europe;Greece;Anchialos Airport ;LGBL;39.217;22.800;25 Europe;Greece;Andravida;LGAD;37.9167;21.2833;14 Europe;Greece;Araxos;LGRX;38.15;21.4167;12 Europe;Greece;Athens Eleftherios Venizelos International Airport;LGAV;37.933;23.933;94 Europe;Greece;Athinai;LGAT;37.9;23.7333;15 Europe;Greece;Chania;LGSA;35.4833;24.1167;151 Europe;Greece;Chios Airport ;LGHI;38.333;26.133;5 Europe;Greece;Cyclades Islands, Naxos Airport;LGNX;37.080;25.367;3 Europe;Greece;Elefsis;LGEL;38.0667;23.55;31 Europe;Greece;Iraklion;LGIR;35.3333;25.1833;39 Europe;Greece;Kalamata;LGKL;37.0667;22.0167;8 Europe;Greece;Karpathos Airport;LGKP;35.414;27.148;6 Europe;Greece;Kastoria Airport ;LGKA;40.450;21.283;604 Europe;Greece;Kavala;LGKV;40.9833;24.6;5 Europe;Greece;Kefallinia;LGKF;38.1167;20.5;22 Europe;Greece;Kerkira;LGKR;39.6167;19.9167;4 Europe;Greece;Kithira Airport;LGKC;36.289;23.023;321 Europe;Greece;Kos;LGKO;36.7833;27.0667;0 Europe;Greece;Kozani;LGKZ;40.3;21.7833;627 Europe;Greece;Larissa Airport ;LGLR;39.633;22.417;73 Europe;Greece;Limnos;LGLM;39.9167;25.2333;4 Europe;Greece;Mitilini;LGMT;39.0667;26.6;5 Europe;Greece;Mykonos;LGMK;37.4333;25.3458;0 Europe;Greece;NSA Souda Bay;EQYG;35.533;24.150;146 Europe;Greece;Paros Community Airport;LGPA;37.011;25.126;36 Europe;Greece;Preveza;LGPZ;38.6167;20.7667;4 Europe;Greece;Rhodes / Maritsa;LGRD;36.383;28.117;62 Europe;Greece;Rodos;LGRP;36.4;28.0833;11 Europe;Greece;Samos;LGSM;37.7;26.9167;7 Europe;Greece;Santorini;LGSR;36.4;25.4833;0 Europe;Greece;Skiathos;LGSK;39.1833;23.5;0 Europe;Greece;Syros Airport;LGSO;37.421;24.948;73 Europe;Greece;Tanagra Airport ;LGTG;38.317;23.533;148 Europe;Greece;Tatoi;LGTT;38.100;23.783;239 Europe;Greece;Thessaloniki;LGTS;40.5167;22.9667;4 Europe;Greece;Tripolis Airport;LGTP;37.533;22.400;644 Europe;Greece;Zakinthos;LGZA;37.75;20.8833;0 Europe;Hungary;Bekescsaba;LHBC;46.683;21.167;88 Europe;Hungary;Budaors;LHBS;47.450;18.967;132 Europe;Hungary;Budapest Met Center;LHBM;47.517;19.033;129 Europe;Hungary;Budapest;LHBP;47.4333;19.2667;185 Europe;Hungary;Debrecen;LHDC;47.483;21.600;108 Europe;Hungary;Kaposvar;LHKV;46.383;17.833;144 Europe;Hungary;Kecskemet;LHKE;46.917;19.750;113 Europe;Hungary;Miskolc;LHMC;48.083;20.767;232 Europe;Hungary;Nyiregyhaza / Napkor;LHNY;47.967;21.983;141 Europe;Hungary;Papa;LHPA;47.200;17.500;145 Europe;Hungary;Pecs / Pogany;LHPP;46.100;18.233;201 Europe;Hungary;Siofok;LHSK;46.917;18.050;108 Europe;Hungary;Szeged;LHUD;46.250;20.100;82 Europe;Hungary;Szentkiralyszabadja;LHSA;47.067;17.983;280 Europe;Hungary;Szolnok;LHSN;47.117;20.233;89 Europe;Hungary;Szombathely;LHSY;47.2667;16.6333;221 Europe;Hungary;Taszar;LHTA;46.400;17.917;160 Europe;Hungary;Tokol;LHTL;47.350;18.983;101 Europe;Iceland;Akureyri;BIAR;65.683;-18.083;23 Europe;Iceland;Akurnes;BIHN;64.300;-15.217;17 Europe;Iceland;Egilsstadir;BIEG;65.2833;-14.4;23 Europe;Iceland;Grimsey;BIGR;66.533;-18.017;15 Europe;Iceland;Keflavik;BIKF;63.9667;-22.6;54 Europe;Iceland;Raufarhofn;BIRG;66.450;-15.950;8 Europe;Iceland;Reykjavik;BIRK;64.1333;-21.9;61 Europe;Iceland;Skjaldthingsstadir;BIVO;65.700;-14.817;44 Europe;Iceland;Stykkisholmur;BIST;65.083;-22.733;8 Europe;Iceland;Vestmannaeyjar;BIVM;63.400;-20.283;118 Europe;Ireland;Casement Aerodrome;EIME;53.300;-6.433;97 Europe;Ireland;Connaught;EIKN;53.9;-8.8181;0 Europe;Ireland;Cork;EICK;51.85;-8.4833;162 Europe;Ireland;Dublin;EIDW;53.4333;-6.25;85 Europe;Ireland;Shannon;EINN;52.7;-8.9167;20 Europe;Italy;Albenga;LIMG;44.05;8.1167;49 Europe;Italy;Alghero;LIEA;40.6333;8.2833;40 Europe;Italy;Amendola;LIBA;41.5333;15.7167;60 Europe;Italy;Ancona;LIPY;43.6167;13.3667;10 Europe;Italy;Arezzo;LIQB;43.467;11.850;248 Europe;Italy;Aviano Usaf ;LIYW;46.033;12.617;126 Europe;Italy;Aviano;LIPA;46.0333;12.6;128 Europe;Italy;Bari;LIBD;41.1333;16.7833;49 Europe;Italy;Bergamo;LIME;45.6667;9.7;237 Europe;Italy;Bologna;LIPE;44.5333;11.3;49 Europe;Italy;Bolzano;LIPB;46.4667;11.3333;1461 Europe;Italy;Bonifati;LIBW;39.583;15.883;484 Europe;Italy;Brescia / Montichia;LIPO;45.401;10.316;104 Europe;Italy;Brindisi;LIBR;40.65;17.95;10 Europe;Italy;Cagliari;LIEE;39.25;9.0667;5 Europe;Italy;Calopezzati ;LICM;39.550;16.800;179 Europe;Italy;Campobasso;LIBS;41.567;14.650;793 Europe;Italy;Capo Bellavista;LIEB;39.933;9.717;138 Europe;Italy;Capo Caccia;LIEH;40.567;8.167;200 Europe;Italy;Capo Carbonara;LIEC;39.100;9.517;116 Europe;Italy;Capo Frasca;LIEF;39.750;8.467;89 Europe;Italy;Capo Mele;LIMU;43.95;8.1667;221 Europe;Italy;Capo Palinuro;LIQK;40.017;15.283;184 Europe;Italy;Capo S. Lorenzo;LIEL;39.500;9.633;4 Europe;Italy;Capri;LIQC;40.550;14.200;160 Europe;Italy;Catania;LICC;37.4667;15.05;17 Europe;Italy;Cervia;LIPC;44.2167;12.3;10 Europe;Italy;Civitavecchia;LIQJ;42.033;11.833;3 Europe;Italy;Comiso As Usaf ;LICB;36.933;14.600;220 Europe;Italy;Cozzo Spadaro;LICO;36.683;15.133;46 Europe;Italy;Crotone;LIBC;39;17.0667;161 Europe;Italy;Cuneo / Levaldigi;LIMZ;44.546;7.622;386 Europe;Italy;Decimomannu;LIED;39.35;8.9667;28 Europe;Italy;Dobbiaco;LIVD;46.7333;12.2167;1226 Europe;Italy;Dova Area Control Center;LIPP;45.400;11.867;14 Europe;Italy;Enna;LICE;37.567;14.283;940 Europe;Italy;Ferrara;LIPF;44.8333;11.6167;10 Europe;Italy;Firenze;LIRQ;43.8;11.2;38 Europe;Italy;Fonni;LIEN;40.117;9.250;1022 Europe;Italy;Forli;LIPK;44.2;12.0667;32 Europe;Italy;Frontone;LIVF;43.5167;12.7333;574 Europe;Italy;Frosinone;LIRH;41.6333;13.3;185 Europe;Italy;Gela;LICL;37.083;14.217;11 Europe;Italy;Genova;LIMJ;44.4167;8.85;3 Europe;Italy;Ghedi;LIPL;45.4167;10.2833;97 Europe;Italy;Gioia del Colle;LIBV;40.7667;16.9333;350 Europe;Italy;Gran Sasso Mountain Range ;LIQI;42.450;13.700;2138 Europe;Italy;Grazzanise;LIRM;41.050;14.067;9 Europe;Italy;Grosseto;LIRS;42.75;11.0667;7 Europe;Italy;Guardiavecchia;LIEG;41.217;9.400;158 Europe;Italy;Guidonia;LIRG;42;12.7333;89 Europe;Italy;Isola Di Palmaria;LIQP;44.033;9.833;192 Europe;Italy;Lamezia;LICA;38.9;16.25;0 Europe;Italy;Lampedusa;LICD;35.5;12.6;20 Europe;Italy;Latina;LIRL;41.55;12.9;26 Europe;Italy;Latronico;LIBU;40.083;16.017;888 Europe;Italy;Lecce;LIBN;40.2333;18.15;61 Europe;Italy;M. Calamita;LIRJ;42.733;10.400;396 Europe;Italy;Marina Di Ginosa;LIBH;40.433;16.883;2 Europe;Italy;Marino di Ravenna;LIVM;44.45;12.3;6 Europe;Italy;Messina;LICF;38.200;15.550;59 Europe;Italy;Milano/Linate;LIML;45.4333;9.2833;103 Europe;Italy;Milano/Malpensa;LIMC;45.6167;8.7333;211 Europe;Italy;Monte Argentario;LIQO;42.3833;11.1667;631 Europe;Italy;Monte Bisbino;LIMO;45.867;9.067;1319 Europe;Italy;Monte Cimone;LIVC;44.2;10.7;2173 Europe;Italy;Monte Malanotte;LIMY;44.25;7.8;1742 Europe;Italy;Monte S. Angelo;LIBE;41.700;15.950;838 Europe;Italy;Monte Scuro;LIBQ;39.3333;16.4;1720 Europe;Italy;Monte Terminillo;LIRK;42.4667;12.9833;1875 Europe;Italy;Naples, Navsuppact;EQYN;40.883;14.283;91 Europe;Italy;Napoli;LIRN;40.85;14.3;72 Europe;Italy;Novara/Cameri;LIMN;45.5167;8.6667;169 Europe;Italy;Olbia;LIEO;40.9;9.5167;13 Europe;Italy;Paganella;LIVP;46.15;11.0333;2129 Europe;Italy;Palermo Boccadifalco;LICP;38.100;13.300;107 Europe;Italy;Palermo;LICJ;38.1833;13.1;21 Europe;Italy;Pantelleria;LICG;36.8167;11.9667;170 Europe;Italy;Parma;LIMP;44.821;10.295;50 Europe;Italy;Passo Resia;LIVE;46.8333;10.5;0 Europe;Italy;Passo Rolle;LIVR;46.3;11.7833;2006 Europe;Italy;Passo dei Giovi;LIMV;44.6333;8.9333;475 Europe;Italy;Passo della Cisa;LIMT;44.4333;9.9333;1040 Europe;Italy;Perdasdefogu;LIEP;39.667;9.433;608 Europe;Italy;Perugia;LIRZ;43.0833;12.5;205 Europe;Italy;Pescara;LIBP;42.4333;14.2;11 Europe;Italy;Piacenza;LIMS;44.9167;9.7333;138 Europe;Italy;Pian Rosa;LIMH;45.9333;7.7;3488 Europe;Italy;Pisa;LIRP;43.6833;10.3833;6 Europe;Italy;Pontecagnano Air Force Base ;LIRI;40.617;14.917;40 Europe;Italy;Ponza;LIQZ;40.917;12.950;184 Europe;Italy;Porretta Pass;LIQD;44.033;10.933;932 Europe;Italy;Potenza;LIBZ;40.633;15.800;823 Europe;Italy;Pratica di Mare;LIRE;41.65;12.45;21 Europe;Italy;Radicofani;LIQR;42.900;11.767;816 Europe;Italy;Reggio Calabria;LICR;38.0667;15.65;21 Europe;Italy;Rieti;LIQN;42.4167;12.85;0 Europe;Italy;Rimini;LIPR;44.0333;12.6167;13 Europe;Italy;Rivolto;LIPI;45.9833;13.0333;53 Europe;Italy;Roma/Ciampino;LIRA;41.7833;12.5833;105 Europe;Italy;Roma/Fiumicino;LIRF;41.8;12.2333;3 Europe;Italy;Roma/Urbe;LIRU;41.95;12.5;24 Europe;Italy;Ronchi de' Legionari;LIPQ;45.8167;13.4833;12 Europe;Italy;S. Maria Di Leuca;LIBY;39.817;18.350;104 Europe;Italy;Sarzana;LIQW;44.0833;9.9833;10 Europe;Italy;Sigonella, NAS;EQYS;37.400;14.917;25 Europe;Italy;Sigonella;LICZ;37.4;14.9167;22 Europe;Italy;Taranto;LIBG;40.5167;17.4;69 Europe;Italy;Tarvisio;LIVO;46.5;13.5833;778 Europe;Italy;Termoli;LIBT;42.000;15.000;16 Europe;Italy;Torino/Bric Della Croce;LIMK;45.0333;7.7333;710 Europe;Italy;Torino/Caselle;LIMF;45.2167;7.65;287 Europe;Italy;Trapani;LICT;37.9167;12.5;14 Europe;Italy;Trevico;LIRT;41.05;15.2333;1093 Europe;Italy;Treviso/Istrana;LIPS;45.6833;12.1;46 Europe;Italy;Treviso/S.Angelo;LIPH;45.65;12.1833;23 Europe;Italy;Trieste;LIVT;45.65;13.75;20 Europe;Italy;Udine / Campoformido;LIPD;46.033;13.183;93 Europe;Italy;Ustica;LICU;38.700;13.183;250 Europe;Italy;Venezia;LIPZ;45.5;12.3333;6 Europe;Italy;Vicenza;LIPT;45.5667;11.5167;53 Europe;Italy;Vigna Di Valle;LIRB;42.083;12.217;262 Europe;Italy;Villafranca;LIPX;45.3833;10.8667;68 Europe;Italy;Viterbo;LIRV;42.4333;12.05;308 Europe;Italy;Volterra;LIQV;43.400;10.867;555 Europe;Latvia;Liepaja International Airport;EVLA;56.517;21.083;5 Europe;Latvia;Riga International Airport;EVRA;56.917;23.967;10 Europe;Latvia;Riga;UMRR;56.967;24.050;7 Europe;Latvia;Ventspils;UMRW;57.400;21.533;3 Europe;Lithuania;Kaunas;EYKA;54.900;23.917;77 Europe;Lithuania;Palanga Intl.;EYPA;55.917;21.050;10 Europe;Lithuania;Siauliai Intl./Mil.;EYSA;55.883;23.383;135 Europe;Lithuania;Vilnius;EYVI;54.633;25.100;162 Europe;Luxembourg;Luxembourg;ELLX;49.6167;6.2167;379 Europe;Macedonia, The Republic of;Ohrid;LWOH;41.117;20.800;760 Europe;Macedonia, The Republic of;Skopje-Petrovec;LWSK;41.967;21.650;238 Europe;Malta;Luqa;LMML;35.85;14.4833;91 Europe;Moldova;Baltsi-Leadoveni - The North of Moldova;LUBL;47.834;27.769;231 Europe;Moldova;Kaxul - The South of Moldova;LUCH;45.844;28.265;199 Europe;Moldova;Kishineu;LUKK;46.9167;28.9308;0 Europe;Moldova;Kisinev;UKII;47.017;28.983;180 Europe;Netherlands;Amsterdam;EHAM;52.3;4.7667;:2 Europe;Netherlands;De Bilt;EHDB;52.100;5.183;2 Europe;Netherlands;Deelen;EHDL;52.0667;5.8833;52 Europe;Netherlands;Den Helder/De Kooy;EHKD;52.9167;4.7833;14 Europe;Netherlands;Eindhoven;EHEH;51.45;5.4167;28 Europe;Netherlands;Gilze-Rijen;EHGR;51.5667;4.9333;24 Europe;Netherlands;Groningen;EHGG;53.1333;6.5833;4 Europe;Netherlands;Leeuwarden;EHLW;53.2167;5.7667;11 Europe;Netherlands;Lelystad;EHLE;52.450;5.517;0 Europe;Netherlands;Maastricht;EHBK;50.9167;5.7833;116 Europe;Netherlands;Rotterdam;EHRD;51.95;4.45;:4 Europe;Netherlands;Twenthe;EHTW;52.2667;6.9;57 Europe;Netherlands;Utrecht/Soesterberg;EHSB;52.1333;5.2833;25 Europe;Netherlands;Valkenburg;EHVB;52.1833;4.4167;2 Europe;Netherlands;Vlieland;EHVL;53.25;4.9167;12 Europe;Netherlands;Volkel;EHVK;51.65;5.7;21 Europe;Netherlands;Woensdrecht;EHWO;51.45;4.3333;17 Europe;Norway;Alesund;ENAL;62.5667;6.1167;22 Europe;Norway;Alta;ENAT;69.9833;23.3667;3 Europe;Norway;Andoya;ENAN;69.3;16.15;14 Europe;Norway;Banak;ENNA;70.0667;24.9833;8 Europe;Norway;Bardufoss;ENDU;69.0667;18.5333;79 Europe;Norway;Batsfjord;ENBS;70.633;29.733;10 Europe;Norway;Bergen;ENBR;60.2833;5.2333;50 Europe;Norway;Berlevag;ENBV;70.8667;29.0333;13 Europe;Norway;Bjornoya;ENBJ;74.517;19.017;16 Europe;Norway;Bodo;ENBO;67.2667;14.3667;13 Europe;Norway;Bronnoysund;ENBN;65.4667;12.2167;9 Europe;Norway;Dagali;ENDI;60.4167;8.5167;0 Europe;Norway;Draugen;ENDR;64.356;7.792;0 Europe;Norway;Ekofisk;ENEK;56.55;3.25;0 Europe;Norway;Fagernes;ENFG;61;9.3;0 Europe;Norway;Floro;ENFL;61.5833;5.0333;9 Europe;Norway;Forde/Bringeland;ENBL;61.45;5.8667;0 Europe;Norway;Frigg;ENFR;59.9333;2;0 Europe;Norway;Gullfax C;ENGC;61.0333;2.0333;0 Europe;Norway;Hammerfest;ENHF;70.6667;23.6667;81 Europe;Norway;Harstad/Narvik/Evenes;ENEV;68.5167;16.6833;26 Europe;Norway;Hasvik;ENHK;70.483;22.150;10 Europe;Norway;Haugesund;ENHD;59.35;5.2167;24 Europe;Norway;Heidrun;ENHE;65.325;2.327;0 Europe;Norway;Honningsvag;ENHV;71.0167;25.9833;14 Europe;Norway;Hopen;ENHO;76.500;25.067;6 Europe;Norway;Jan Mayen;ENJA;70.933;-8.667;10 Europe;Norway;Kautokeino;ENKA;69.000;23.033;305 Europe;Norway;Kirkenes;ENKR;69.7333;29.9;91 Europe;Norway;Kristiansand/Kjevik;ENCN;58.2;8.0833;17 Europe;Norway;Kristiansund/Kvernberget;ENKB;63.1167;7.8333;62 Europe;Norway;Leknes;ENLK;68.15;13.6167;26 Europe;Norway;Lista;ENLI;58.1;6.6333;10 Europe;Norway;Mehamn;ENMH;71.0333;27.8333;13 Europe;Norway;Mo I Rana;ENRA;66.3667;14.3;70 Europe;Norway;Molde;ENML;62.75;7.2667;3 Europe;Norway;Mosjoen;ENMS;65.8;13.1333;0 Europe;Norway;Namsos;ENNM;64.4667;11.5833;2 Europe;Norway;Narvik;ENNK;68.4667;17.5;23 Europe;Norway;Notodden;ENNO;59.5667;9.2167;0 Europe;Norway;Ny-Alesund Ii;ENAS;78.917;11.933;8 Europe;Norway;Orland;ENOL;63.7;9.6;7 Europe;Norway;Orsta-Volda;ENOV;62.1833;6.0667;74 Europe;Norway;Oseberg A;ENOA;59.3167;10.45;0 Europe;Norway;Oslo / Fornebu;ENFB;59.900;10.633;1 Europe;Norway;Oslo/Gardenmoen;ENGM;60.2;11.0833;204 Europe;Norway;Roros;ENRO;62.5833;11.35;626 Europe;Norway;Rorvik/Ryum;ENRM;64.8333;11.15;0 Europe;Norway;Rost;ENRS;67.5167;12.1;0 Europe;Norway;Rygge;ENRY;59.3833;10.7833;53 Europe;Norway;Sandane;ENSD;61.8333;6.1167;60 Europe;Norway;Sandnessjoen/Stokka;ENST;65.9667;12.4667;17 Europe;Norway;Skien/Geiteryggen;ENSN;59.1833;9.5667;14 Europe;Norway;Sogndal;ENSG;61.15;7.1333;497 Europe;Norway;Sorkjosen;ENSR;69.7833;20.9667;6 Europe;Norway;Stavanger/Sola;ENZV;58.8833;5.6333;9 Europe;Norway;Stokmarknes/Skagen;ENSK;68.5833;15.0167;3 Europe;Norway;Stord/Sorstokken;ENSO;59.8;5.35;0 Europe;Norway;Svalbard;ENSB;78.25;15.4667;29 Europe;Norway;Svartnes;ENSS;70.350;31.050;12 Europe;Norway;Svolvaer/Helle;ENSH;68.25;14.6667;9 Europe;Norway;Torp;ENTO;59.2;10.2667;88 Europe;Norway;Tromso/Langnes;ENTC;69.6833;18.9167;10 Europe;Norway;Trondheim/Vaernes;ENVA;63.4667;10.9333;17 Europe;Norway;Vadso;ENVD;70.0667;29.85;39 Europe;Norway;Voss-Bo;ENBM;60.650;6.500;125 Europe;Poland;Gdansk;EPGD;54.3833;18.4667;138 Europe;Poland;Katowice;EPKT;50.2333;19.0333;284 Europe;Poland;Koszalin;EPKO;54.200;16.150;32 Europe;Poland;Krakow;EPKK;50.0833;19.8;237 Europe;Poland;Poznan;EPPO;52.4167;16.8333;92 Europe;Poland;Rzeszow;EPRZ;50.1;22.05;202 Europe;Poland;Slupsk ;EPSK;54.467;17.017;25 Europe;Poland;Szczecin;EPSC;53.4;14.6167;3 Europe;Poland;Warszawa;EPWA;52.1667;20.9667;107 Europe;Poland;Wroclaw Ii;EPWR;51.100;16.883;120 Europe;Poland;Zielona Gora;EPZG;51.933;15.533;192 Europe;Portugal;Aeroporto Da Madeira;LPMA;32.698;-16.774;59 Europe;Portugal;Beja;LPBJ;38.0167;-7.8667;247 Europe;Portugal;Braganca;LPBG;41.800;-6.733;691 Europe;Portugal;Faro;LPFR;37.0167;-7.9667;8 Europe;Portugal;Flores Acores ;LPFL;39.450;-31.133;28 Europe;Portugal;Funchal;LPFU;32.6833;-16.7667;49 Europe;Portugal;Horta / Castelo Branco Acores ;LPHR;38.517;-28.717;40 Europe;Portugal;Lajes;LPLA;38.7667;-27.1;54 Europe;Portugal;Lisboa;LPPT;38.7667;-9.1333;123 Europe;Portugal;Monte Real Mil.;LPMR;39.831;-8.887;57 Europe;Portugal;Montijo Mil.;LPMT;38.704;-9.036;14 Europe;Portugal;Ovar Mil.;LPOV;40.916;-8.646;17 Europe;Portugal;Ponta Delgada / Nordela Acores ;LPPD;37.733;-25.700;71 Europe;Portugal;Porto Santo;LPPS;33.0667;-16.35;82 Europe;Portugal;Porto;LPPR;41.2333;-8.6833;77 Europe;Portugal;Santa Maria;LPAZ;36.9667;-25.1667;100 Europe;Portugal;Sintra Mil.;LPST;38.831;-9.339;134 Europe;Portugal;Tancos Mil.;LPTN;39.475;-8.364;81 Europe;Portugal;Vila Real;LPVR;41.267;-7.717;561 Europe;Romania;Arad;LRAR;46.2;21.4;118 Europe;Romania;Bacau;LRBC;46.583;26.967;184 Europe;Romania;Baia Mare;LRBM;47.667;23.583;218 Europe;Romania;Bucuresti-Otopeni;LROP;44.55;26.1;95 Europe;Romania;Bucuresti;LRBS;44.5;26.1333;91 Europe;Romania;Caransebes;LRCS;45.417;22.250;241 Europe;Romania;Cluj-Napoca;LRCL;46.783;23.567;410 Europe;Romania;Craiova;LRCV;44.233;23.867;192 Europe;Romania;Iasi;LRIA;47.1667;27.6333;104 Europe;Romania;Kogalniceanu;LRCK;44.3333;28.4333;102 Europe;Romania;Oradea;LROD;47.050;21.933;135 Europe;Romania;Satu Mare;LRSM;47.800;22.883;123 Europe;Romania;Sibiu;LRSB;45.800;24.150;443 Europe;Romania;Suceava / Salcea;LRSV;47.650;26.250;351 Europe;Romania;Timisoara;LRTR;45.7667;21.25;88 Europe;Romania;Tirgu Mures;LRTM;46.5333;24.5333;309 Europe;Romania;Tulcea;LRTC;45.1833;28.8167;6 Europe;Russia;Abakan;UNAA;53.75;91.4;0 Europe;Russia;Anadyr;UHMA;64.7833;177.5667;61 Europe;Russia;Anapa;URKA;44.9;37.3167;0 Europe;Russia;Arkhangelsk;ULAA;64.5;40.7333;8 Europe;Russia;Astrakhan;URWA;46.283;48.006;0 Europe;Russia;Barnaul;UNBB;53.4333;83.5167;184 Europe;Russia;Bratsk;UIBB;56.3667;101.6986;0 Europe;Russia;Bryansk;UUBP;53.25;34.3167;216 Europe;Russia;Chelyabinsk;USCC;55.1667;61.4;0 Europe;Russia;Chita;UIAA;52.0833;113.4833;671 Europe;Russia;Elista;URWI;46.367;44.333;150 Europe;Russia;Kazan;UWKD;55.7833;49.2;0 Europe;Russia;Khabarovsk;UHHH;48.5167;135.1667;76 Europe;Russia;Kliningrad;UMKK;54.7167;20.5;0 Europe;Russia;Kotlas;ULAK;61.233;46.717;56 Europe;Russia;Krasnodar;URKK;45.0333;39.15;34 Europe;Russia;Magadan;UHMM;59.55;150.7833;116 Europe;Russia;Mineralnye Vody;URMM;44.2333;43.0667;316 Europe;Russia;Moscow / Domodedovo;UUDD;55.400;37.900;179 Europe;Russia;Moscow / Vnukovo ;UUWW;55.650;37.267;203 Europe;Russia;Moscow Sheremetyevo;UUEE;55.9833;37.5;0 Europe;Russia;Murmansk;ULMM;68.9667;33.05;51 Europe;Russia;Nalchik;URMN;43.513;43.637;445 Europe;Russia;Nizhny Novgorod;UWGG;56.3167;44;0 Europe;Russia;Omsk;UNOO;54.9667;73.3;0 Europe;Russia;Orenburg;UWOO;51.7667;55.12;0 Europe;Russia;Penza;UWPP;53.117;45.017;174 Europe;Russia;Perm;USPP;58;56.25;0 Europe;Russia;Petropavlovsk-Kamchatsky;UHPP;53.0833;158.5833;84 Europe;Russia;Rostov-Na-Donu;URRR;47.2667;39.8167;75 Europe;Russia;Samara;UWWW;53.2;50.15;0 Europe;Russia;Sankt-Peterburg;ULLI;59.9667;30.3;6 Europe;Russia;Saratov;UWSS;51.5667;46.07;0 Europe;Russia;Sochi;URSS;43.4333;39.9;13 Europe;Russia;Stavropol;URMT;45.3333;42;0 Europe;Russia;Syktyvkar;UUYY;61.7167;50.8333;119 Europe;Russia;Tot'Ma;ULWT;59.883;42.750;134 Europe;Russia;Tver;UUEM;56.900;35.883;137 Europe;Russia;Ufa;UWUU;54.7167;55.93;0 Europe;Russia;Ulan-Ude;UIUU;51.8333;107.6;515 Europe;Russia;Ulyanovsk;UWLW;54.35;48.3833;0 Europe;Russia;Velikie Luki;ULOL;56.350;30.617;98 Europe;Russia;Vladivostok;UHWW;43.1167;131.9333;183 Europe;Russia;Volgograd;URWW;48.7833;44.3667;134 Europe;Russia;Vologda;ULWW;59.317;39.917;131 Europe;Russia;Voronezh;UUOO;51.65;39.25;104 Europe;Russia;Yakutsk;UEEE;62.0167;129.7167;101 Europe;Russia;Yekaterinburg;USSS;56.8333;60.6333;283 Europe;Russia;Yuzhno-Sakhalinsk;UHSS;46.95;142.7167;24 Europe;Serbia and Montenegro;Beograd / Surcin;LYBE;44.817;20.283;96 Europe;Serbia and Montenegro;Bihac;LQBI;44.817;15.883;250 Europe;Serbia and Montenegro;Camp Bondsteel;KQUK;42.583;21.383;592 Europe;Serbia and Montenegro;Nis;LYNI;43.333;21.900;202 Europe;Serbia and Montenegro;Podgorica / Golubovci;LYTI;42.367;19.250;33 Europe;Serbia and Montenegro;Podgorica Titograd ;LYPG;42.433;19.283;53 Europe;Serbia and Montenegro;Pristina;LYPR;42.567;21.033;545 Europe;Serbia and Montenegro;Tivat;LYTV;42.400;18.733;5 Europe;Serbia and Montenegro;Vrsac;LYVR;45.150;21.317;83 Europe;Slovakia;Bratislava;LZIB;48.2;17.2;142 Europe;Slovakia;Dolny Hricov;LZZI;49.233;18.614;312 Europe;Slovakia;Kamenica Nad Cirochou;LZKC;48.933;22.000;177 Europe;Slovakia;Kosice, Barca;LZKZ;48.663;21.241;232 Europe;Slovakia;Kosice;LKKZ;48.667;21.217;230 Europe;Slovakia;Lucenec;LZLU;48.333;19.733;214 Europe;Slovakia;Nitra;LZNI;48.279;18.133;134 Europe;Slovakia;Piestany;LKPP;48.617;17.833;163 Europe;Slovakia;Piestany;LZPP;48.625;17.829;163 Europe;Slovakia;Poprad;LZTT;49.0667;20.25;695 Europe;Slovakia;Prievidza;LZPE;48.766;18.588;260 Europe;Slovakia;Sliac;LKSL;48.650;19.150;314 Europe;Slovakia;Sliac;LZSL;48.638;19.134;318 Europe;Slovenia;Ljubljana;LJLJ;46.2167;14.4833;362 Europe;Slovenia;Maribor;LJMB;46.4833;15.6833;265 Europe;Slovenia;Murska Sobota;LJMS;46.650;16.183;188 Europe;Slovenia;Portoroz / Secovlje;LYPZ;45.483;13.617;2 Europe;Slovenia;Portoroz;LJPZ;45.5167;13.5667;0 Europe;Spain;Albacete / Los Llanos;LEAB;38.950;-1.850;702 Europe;Spain;Alicante;LEAL;38.2833;-0.55;31 Europe;Spain;Almeria;LEAM;36.85;-2.3833;21 Europe;Spain;Asturias;LEAS;43.55;-6.0333;130 Europe;Spain;Badajoz / Talavera La Real;LEBZ;38.883;-6.817;185 Europe;Spain;Barcelona;LEBL;41.2833;2.0667;6 Europe;Spain;Bilbao;LEBB;43.3;-2.9333;37 Europe;Spain;Burgos / Villafria;LEBG;42.367;-3.633;894 Europe;Spain;Calamocha;LECH;40.933;-1.300;890 Europe;Spain;Canarias/Fuerteventura;GCFV;28.45;-13.8667;30 Europe;Spain;Canarias/Gran Canaria;GCLP;27.9333;-15.3833;47 Europe;Spain;Canarias/Hierro;GCHI;27.8167;-17.8833;32 Europe;Spain;Canarias/La Palma;GCLA;28.6167;-17.75;31 Europe;Spain;Canarias/Lanzarote;GCRR;28.95;-13.6;21 Europe;Spain;Canarias/Tenerife Norte;GCXO;28.4667;-16.3167;617 Europe;Spain;Canarias/Tenerife Sur;GCTS;28.05;-16.5667;77 Europe;Spain;Cordoba / Aeropuerto;LEBA;37.850;-4.850;90 Europe;Spain;Girona;LEGE;41.9;2.7667;129 Europe;Spain;Granada / Armilla;LEGA;37.133;-3.636;700 Europe;Spain;Granada;LEGR;37.1833;-3.7833;570 Europe;Spain;Hinojosa Del Duque;LEHI;38.517;-5.117;540 Europe;Spain;Ibiza;LEIB;38.8667;1.3833;12 Europe;Spain;Jerez;LEJR;36.75;-6.0667;28 Europe;Spain;La Coruna;LECO;43.3;-8.3833;103 Europe;Spain;Leon / Virgen Del Camino;LELN;42.583;-5.650;926 Europe;Spain;Logrono / Agoncillo;LELO;42.450;-2.333;353 Europe;Spain;Madri-Colmenar;LECV;40.650;-3.733;0 Europe;Spain;Madrid (Barajas);LEMD;40.45;-3.55;582 Europe;Spain;Madrid (Cuatro Vientos);LEVS;40.3833;-3.7833;687 Europe;Spain;Madrid / Getafe;LEGT;40.300;-3.717;620 Europe;Spain;Madrid / Torrejon;LETO;40.483;-3.450;607 Europe;Spain;Malaga;LEMG;36.6667;-4.4833;7 Europe;Spain;Melilla;GEML;35.2833;-2.95;55 Europe;Spain;Menorca;LEMH;39.8667;4.2333;82 Europe;Spain;Moron De La Frontera;LEMO;37.150;-5.617;87 Europe;Spain;Murcia / Alcantarilla;LERI;37.950;-1.233;75 Europe;Spain;Murcia;LELC;37.7833;-0.8;3 Europe;Spain;Palma de Mallorca;LEPA;39.55;2.7333;8 Europe;Spain;Pamplona;LEPP;42.7667;-1.6333;453 Europe;Spain;Reus;LERS;41.15;1.1667;76 Europe;Spain;Rota, Naval Station;EQYR;36.650;-6.333;26 Europe;Spain;Rota;LERT;36.650;-6.350;26 Europe;Spain;Sabadell;LELL;41.517;2.100;250 Europe;Spain;Salamanca / Matacan;LESA;40.950;-5.500;793 Europe;Spain;San Sebastian;LESO;43.35;-1.8;8 Europe;Spain;Santander;LEXJ;43.4333;-3.8167;9 Europe;Spain;Santiago;LEST;42.9;-8.4333;367 Europe;Spain;Sevilla;LEZL;37.4167;-5.9;31 Europe;Spain;Valencia;LEVC;39.5;-0.4667;62 Europe;Spain;Valladolid / Villanubla;LEVD;41.717;-4.850;849 Europe;Spain;Vigo;LEVX;42.2167;-8.6333;255 Europe;Spain;Vitoria;LEVT;42.8833;-2.7167;510 Europe;Spain;Zaragoza United States Air Force Operated Base In Foreign Country ;LEZA;41.667;-1.050;263 Europe;Spain;Zaragoza;LEZG;41.6667;-1.0167;258 Europe;Sweden;Angelholm;ESDB;56.300;12.850;20 Europe;Sweden;Borlange;ESSD;60.433;15.517;145 Europe;Sweden;Gallivare;ESNG;67.150;20.650;359 Europe;Sweden;Gavle / Sandviken Air Force Base;ESSK;60.600;16.950;79 Europe;Sweden;Goteborg (Landvetter);ESGG;57.6667;12.3;0 Europe;Sweden;Goteborg (Save);ESGP;57.7833;11.8833;53 Europe;Sweden;Gunnarn;ESPD;64.967;17.700;280 Europe;Sweden;Hagshult;ESMV;57.300;14.133;169 Europe;Sweden;Halmstad Swedish Air Force Base ;ESMT;56.683;12.833;30 Europe;Sweden;Hultsfred Swedish Air Force Base ;ESSF;57.517;15.833;112 Europe;Sweden;Jokkmokk;ESNJ;66.633;19.650;263 Europe;Sweden;Jonkoping;ESGJ;57.7667;14.0833;232 Europe;Sweden;Kalmar;ESMQ;56.733;16.300;16 Europe;Sweden;Karlstad ;ESOK;59.445;13.338;107 Europe;Sweden;Karlstad Flygplats;ESSQ;59.367;13.467;46 Europe;Sweden;Kiruna;ESNQ;67.8167;20.3333;0 Europe;Sweden;Kramfors Flygplats;ESNK;63.050;17.767;10 Europe;Sweden;Kristianstad / Everod;ESMK;55.917;14.083;23 Europe;Sweden;Linkoping / Malmen;ESCF;58.400;15.517;93 Europe;Sweden;Linkoping / Saab;ESSL;58.400;15.683;52 Europe;Sweden;Ljungbyhed, Ljungbyhed, SWE-AFB;ESDA;56.085;13.207;52 Europe;Sweden;Ljungbyhed;ESTL;56.067;13.200;43 Europe;Sweden;Lulea / Kallax;ESPA;65.550;22.133;17 Europe;Sweden;Lycksele;ESNL;64.547;18.717;211 Europe;Sweden;Malmo/Sturup;ESMS;55.55;13.3667;0 Europe;Sweden;Norrkoping;ESSP;58.5833;16.15;0 Europe;Sweden;Orebro Private ;ESOE;59.233;15.050;57 Europe;Sweden;Ornskoldsvik Airport;ESNO;63.400;18.967;103 Europe;Sweden;Ostersund / Froson;ESPC;63.183;14.500;376 Europe;Sweden;Ronneby;ESDF;56.2667;15.2833;74 Europe;Sweden;Satenas;ESIB;58.433;12.700;54 Europe;Sweden;Siljan / Mora;ESKM;60.967;14.517;193 Europe;Sweden;Skelleftea Airport;ESNS;64.633;21.083;49 Europe;Sweden;Skovde Flygplats;ESGR;58.450;13.967;98 Europe;Sweden;Soderhamn;ESCL;61.267;17.100;26 Europe;Sweden;Soderhamn;ESNY;61.261;17.099;27 Europe;Sweden;Stockholm (Arlanda);ESSA;59.65;17.95;61 Europe;Sweden;Stockholm (Bromma);ESSB;59.35;17.95;14 Europe;Sweden;Stockholm/Skavsta;ESKN;58.783;16.917;43 Europe;Sweden;Sundsvall-Harnosand;ESNN;62.5333;17.45;10 Europe;Sweden;Trollhattan Private ;ESGT;58.317;12.350;41 Europe;Sweden;Umea;ESNU;63.8;20.2833;14 Europe;Sweden;Uppsala;ESCM;59.883;17.600;21 Europe;Sweden;Vasteras;ESOW;59.5833;16.6333;31 Europe;Sweden;Vaxjo;ESMX;56.85;14.8333;200 Europe;Sweden;Vidsel;ESPE;65.867;20.133;180 Europe;Sweden;Visby;ESSV;57.6667;18.35;47 Europe;Switzerland;Bern;LSZB;46.9167;7.5;0 Europe;Switzerland;Geneve;LSGG;46.25;6.1333;416 Europe;Switzerland;Grenchen;LSZG;47.181;7.416;430 Europe;Switzerland;Lausanne;LSGL;46.550;6.617;616 Europe;Switzerland;Les Eplatures;LSGC;47.084;6.794;1027 Europe;Switzerland;Lugano;LSZA;46;8.9667;276 Europe;Switzerland;Neuchatel;LSGN;47.000;6.950;485 Europe;Switzerland;Payerne;LSMP;46.817;6.950;490 Europe;Switzerland;Saint Gallen-Altenrhein;LSZR;47.485;9.562;398 Europe;Switzerland;Sion;LSGS;46.217;7.333;482 Europe;Switzerland;Zurich;LSZH;47.4833;8.5333;432 Europe;Turkey;Adana/Incirlik;LTAG;37;35.4167;66 Europe;Turkey;Adana;LTAF;36.9833;35.3;20 Europe;Turkey;Afyon;LTAH;38.750;30.533;1034 Europe;Turkey;Amasya;LTAP;40.85;35.5833;535 Europe;Turkey;Ankara / Guvercin Lik;LTAB;39.933;32.750;819 Europe;Turkey;Ankara/Esenboga;LTAC;40.1167;32.9833;949 Europe;Turkey;Ankara/Etimesgut;LTAD;39.95;32.6833;806 Europe;Turkey;Antalya;LTAI;36.7;30.7333;57 Europe;Turkey;Aydin;LTBD;37.850;27.850;57 Europe;Turkey;Balikesir/Bandirma;LTBG;40.3167;27.9667;49 Europe;Turkey;Balikesir;LTBF;39.6167;27.9167;102 Europe;Turkey;Batman;LTCJ;37.8667;41.1667;540 Europe;Turkey;Bodrum Milas Airport;LTFE;37.248;27.682;6 Europe;Turkey;Bodrum;LTBV;37.033;27.417;27 Europe;Turkey;Bursa / Yenisehir, Mil-Civ;LTBR;40.255;29.562;233 Europe;Turkey;Bursa;LTBE;40.1833;29.0667;100 Europe;Turkey;Canakkale;LTBH;40.133;26.400;3 Europe;Turkey;Cardak;LTAY;37.783;29.700;849 Europe;Turkey;Corlu;LTBU;41.133;27.917;173 Europe;Turkey;Diyarbakir;LTCC;37.8833;40.1833;677 Europe;Turkey;Elazig;LTCA;38.6;39.2833;882 Europe;Turkey;Erzincan;LTCD;39.733;39.500;1156 Europe;Turkey;Erzurum;LTCE;39.9167;41.2667;1758 Europe;Turkey;Eskisehir;LTBI;39.7833;30.5667;785 Europe;Turkey;Gaziantep;LTAJ;37.0833;37.3667;701 Europe;Turkey;Iskenderun;LTAK;36.583;36.167;3 Europe;Turkey;Isparta;LTBM;37.750;30.550;997 Europe;Turkey;Istanbul / Sabiha Gokcen;LTFJ;40.899;29.309;95 Europe;Turkey;Istanbul;LTBA;40.9667;28.8167;37 Europe;Turkey;Izmir \ Kaklic;LTFA;38.517;26.983;4 Europe;Turkey;Izmir/Adnan Menderes;LTBJ;38.2667;27.15;120 Europe;Turkey;Izmir/Cigli;LTBL;38.5;27.0167;5 Europe;Turkey;Izmit;LTBQ;40.7333;30.0833;0 Europe;Turkey;Kars;LTCF;40.600;43.083;1775 Europe;Turkey;Kayseri;LTAU;38.7833;35.4833;1054 Europe;Turkey;Konya;LTAN;37.9667;32.55;1022 Europe;Turkey;Malatya;LTAT;38.4333;38.0833;849 Europe;Turkey;Manisa;LTBT;38.9167;27.85;93 Europe;Turkey;Mugla/Dalaman;LTBS;36.7;28.7833;2 Europe;Turkey;Murted Tur-Afb ;LTAE;40.083;32.567;843 Europe;Turkey;Mus Tur-Afb ;LTCK;38.750;41.667;1266 Europe;Turkey;Nevsehir;LTAZ;38.770;34.542;945 Europe;Turkey;Samsun / Carsamba;LTFH;41.254;36.568;5 Europe;Turkey;Samsun;LTAQ;41.267;36.300;162 Europe;Turkey;Sivas;LTAR;39.750;37.017;1285 Europe;Turkey;Sivrihisar;LTAV;39.450;31.350;96 Europe;Turkey;Suleyman Demirel;LTFC;37.850;30.367;864 Europe;Turkey;Tokat;LTAW;40.300;36.567;608 Europe;Turkey;Trabzon;LTCG;41;39.7167;30 Europe;Turkey;Urfa;LTCH;37.133;38.767;547 Europe;Turkey;Usak;LTBO;38.667;29.417;919 Europe;Turkey;Van;LTCI;38.45;43.3167;1661 Europe;Turkey;Zonguldak;LTAS;41.450;31.800;136 Europe;Ukraine;Cherkasy;UKKE;49.416;31.996;114 Europe;Ukraine;Chernovsty;UKLN;48.260;25.982;252 Europe;Ukraine;Dnipropetrovsk;UKDD;48.5333;34.6667;0 Europe;Ukraine;Donetsk;UKCC;48.0833;37.75;0 Europe;Ukraine;Hostomel;UKKM;50.600;30.194;157 Europe;Ukraine;Ivano-Frankivsk;UKLI;48.884;24.686;280 Europe;Ukraine;Kharkiv;UKHH;49.9667;36.1333;155 Europe;Ukraine;Kryviy Rig/Lozovatka;UKDR;48.05;33.22;0 Europe;Ukraine;Kyiv/Boryspil;UKBB;50.3333;30.9667;122 Europe;Ukraine;Kyiv/Zhulyany;UKKK;50.4;30.5667;167 Europe;Ukraine;Lviv;UKLL;49.8167;23.95;323 Europe;Ukraine;Mykolaiv;UKON;47.058;31.921;56 Europe;Ukraine;Odesa;UKOO;46.4333;30.7667;42 Europe;Ukraine;Rivne;UKLR;50.583;26.133;231 Europe;Ukraine;Sympheropol;UKFF;44.6833;34.1333;181 Europe;Ukraine;Uzhhorod;UKLU;48.635;22.265;117 Europe;Ukraine;Zaporizhzhia / Mokraya;UKDE;47.867;35.316;114 Europe;United Kingdom;Aberdeen;EGPD;57.2;-2.2167;0 Europe;United Kingdom;Aberporth;EGUC;52.133;-4.567;133 Europe;United Kingdom;Alconbury Royal Air Force Base;EGWZ;52.367;-0.217;49 Europe;United Kingdom;Alderney;EGJA;49.7167;-2.2;0 Europe;United Kingdom;Barkston Heath Royal Air Force Base ;EGYE;52.967;-0.567;112 Europe;United Kingdom;Belfast/Aldergrove;EGAA;54.65;-6.2167;0 Europe;United Kingdom;Belfast/Harbour;EGAC;54.6;-5.8833;0 Europe;United Kingdom;Benbecula;EGPL;57.4667;-7.3667;0 Europe;United Kingdom;Benson;EGUB;51.617;-1.083;63 Europe;United Kingdom;Bentwaters Royal Air Force Base ;EGVJ;52.133;1.433;26 Europe;United Kingdom;Biggin Hill;EGKB;51.3167;0.0333;0 Europe;United Kingdom;Birmingham;EGBB;52.45;-1.7333;0 Europe;United Kingdom;Blackpool;EGNH;53.7667;-3.0333;0 Europe;United Kingdom;Boscombe Down;EGDM;51.1667;-1.75;0 Europe;United Kingdom;Boulmer;EGQM;55.4167;-1.6;0 Europe;United Kingdom;Bournemouth;EGHH;50.7833;-1.8333;0 Europe;United Kingdom;Bracknell / Beaufort Park;EGRR;51.383;-0.783;74 Europe;United Kingdom;Bristol;EGGD;51.3833;-2.7167;0 Europe;United Kingdom;Brize Norton;EGVN;51.750;-1.583;88 Europe;United Kingdom;Cambridge;EGSC;52.2;0.1833;0 Europe;United Kingdom;Campbeltown;EGEC;55.437;-5.686;13 Europe;United Kingdom;Cardiff;EGFF;51.4;-3.35;0 Europe;United Kingdom;Carlisle;EGNC;54.9333;-2.95;0 Europe;United Kingdom;Chivenor;EGDC;51.083;-4.150;8 Europe;United Kingdom;Church Fenton;EGXG;53.833;-1.200;9 Europe;United Kingdom;Colerne;EGUO;51.439;-2.286;181 Europe;United Kingdom;Coltishall;EGYC;52.433;1.350;20 Europe;United Kingdom;Coningsby Royal Air Force Base;EGXC;53.083;-0.167;7 Europe;United Kingdom;Cosford Royal Air Force Base;EGWC;52.633;-2.300;83 Europe;United Kingdom;Cottesmore;EGXJ;52.733;-0.650;138 Europe;United Kingdom;Coventry;EGBE;52.3667;-1.4833;0 Europe;United Kingdom;Cowden;EGXF;53.850;-6.100;15 Europe;United Kingdom;Cranfield;EGTC;52.0667;-0.6167;0 Europe;United Kingdom;Cranwell;EGYD;53.033;-0.500;67 Europe;United Kingdom;Culdrose;EGDR;50.0833;-5.25;0 Europe;United Kingdom;Disforth;EGXD;54.133;-1.417;36 Europe;United Kingdom;Dundee;EGPN;56.45;-3.0167;0 Europe;United Kingdom;East Midlands;EGNX;52.8333;-1.3333;0 Europe;United Kingdom;Edinburgh;EGPH;55.95;-3.35;0 Europe;United Kingdom;Eglington/Londonderry;EGAE;55.05;-7.15;0 Europe;United Kingdom;Exeter;EGTE;50.7333;-3.4167;0 Europe;United Kingdom;Fairford Royal Air Force Base;EGVA;51.683;-1.783;87 Europe;United Kingdom;Farnborough Military ;EGUF;51.283;-0.767;72 Europe;United Kingdom;Farnborough;EGLF;51.283;-0.767;65 Europe;United Kingdom;Filton Private ;EGTG;51.517;-2.583;69 Europe;United Kingdom;Glasgow;EGPF;55.8667;-4.4333;0 Europe;United Kingdom;Greenham Common Royal Air Force Base;EGVI;51.383;-1.283;122 Europe;United Kingdom;Guernsey;EGJB;49.4333;-2.6;0 Europe;United Kingdom;Hatfeild Private ;EGTH;51.767;-0.250;77 Europe;United Kingdom;Hawarden;EGNR;53.167;-2.983;10 Europe;United Kingdom;Holbeach;EGYH;52.867;0.150;3 Europe;United Kingdom;Honington Royal Air Force Base;EGXH;52.333;0.767;54 Europe;United Kingdom;Humberside;EGNJ;53.5833;-0.35;0 Europe;United Kingdom;Inverness;EGPE;57.5333;-4.05;0 Europe;United Kingdom;Islay;EGPI;55.682;-6.257;16 Europe;United Kingdom;Isle of Man;EGNS;54.0833;-4.6333;0 Europe;United Kingdom;Jersey;EGJJ;49.2167;-2.2;0 Europe;United Kingdom;Kemble Royal Air Force Base ;EGDK;51.667;-2.050;133 Europe;United Kingdom;Kinloss;EGQK;57.65;-3.5667;0 Europe;United Kingdom;Kirkwall Airport;EGPA;58.950;-2.900;21 Europe;United Kingdom;Lakenheath Royal Air Force Base;EGUL;52.417;0.567;10 Europe;United Kingdom;Leconfield;EGXV;53.867;-0.433;6 Europe;United Kingdom;Leeds and Bradford;EGNM;53.8667;-1.65;0 Europe;United Kingdom;Leeming;EGXE;54.300;-1.533;40 Europe;United Kingdom;Leuchars;EGQL;56.3833;-2.8667;0 Europe;United Kingdom;Linton-On-Ouse;EGXU;54.050;-1.250;16 Europe;United Kingdom;Liverpool;EGGP;53.3333;-2.85;0 Europe;United Kingdom;Llanbedr;EGOD;52.817;-4.133;9 Europe;United Kingdom;London Weather Centre;EGRB;51.517;-0.117;5 Europe;United Kingdom;London/City;EGLC;51.5;-0.5;0 Europe;United Kingdom;London/Gatwick;EGKK;51.15;-0.1833;0 Europe;United Kingdom;London/Heathrow;EGLL;51.4833;-0.45;0 Europe;United Kingdom;London/Stansted;EGSS;51.8833;0.2333;0 Europe;United Kingdom;Lossiemouth;EGQS;57.7167;-3.3167;0 Europe;United Kingdom;Luton;EGGW;51.8667;-0.3667;0 Europe;United Kingdom;Lydd Airport ;EGMD;50.950;0.933;3 Europe;United Kingdom;Lyneham;EGDL;51.5;-1.9833;0 Europe;United Kingdom;Machrihanish;EGQJ;55.433;-5.700;13 Europe;United Kingdom;Manchester;EGCC;53.35;-2.2833;0 Europe;United Kingdom;Manston, South East;EGMH;51.342;1.346;55 Europe;United Kingdom;Manston;EGUM;51.350;1.350;55 Europe;United Kingdom;Marham;EGYM;52.650;0.567;23 Europe;United Kingdom;Middle Wallop;EGVP;51.150;-1.567;91 Europe;United Kingdom;Mildenhall Royal Air Force Base;EGUN;52.367;0.483;10 Europe;United Kingdom;Newcastle;EGNT;55.0333;-1.7;0 Europe;United Kingdom;Newton;EGXN;52.967;-0.983;55 Europe;United Kingdom;Northolt;EGWU;51.550;-0.417;38 Europe;United Kingdom;Norwich;EGSH;52.6333;1.3;0 Europe;United Kingdom;Odiham;EGVO;51.233;-0.950;123 Europe;United Kingdom;Pembrey Sands;EGOP;51.717;-4.367;3 Europe;United Kingdom;Perth / Scone ;EGPT;56.450;-3.367;121 Europe;United Kingdom;Plymouth;EGDB;50.350;-4.117;50 Europe;United Kingdom;Plymouth;EGHD;50.4167;-4.1167;0 Europe;United Kingdom;Portland / Rnas;EGDP;50.567;-2.450;3 Europe;United Kingdom;Prestwick;EGPK;55.5;-4.5833;0 Europe;United Kingdom;Saint Mawgan;EGDG;50.4333;-5;0 Europe;United Kingdom;Scampton;EGXP;53.307;-0.551;62 Europe;United Kingdom;Scatsta;EGPM;60.4333;-1.3;0 Europe;United Kingdom;Scilly Isles;EGHE;49.9167;-6.3;0 Europe;United Kingdom;Sculthorpe Af Met ;EGUP;52.850;0.767;65 Europe;United Kingdom;Shawbury;EGOS;52.8;-2.6667;0 Europe;United Kingdom;Shoreham;EGKA;50.8333;-0.2833;0 Europe;United Kingdom;Southampton;EGHI;50.9;-1.4;0 Europe;United Kingdom;Southend;EGMC;51.5667;0.7;0 Europe;United Kingdom;Spadeadam;EGOM;55.050;-2.550;325 Europe;United Kingdom;St Athan Royal Air Force Base;EGDX;51.400;-3.433;50 Europe;United Kingdom;Staverton;EGBJ;51.9;-2.1667;0 Europe;United Kingdom;Stornoway;EGPO;58.2167;-6.3167;13 Europe;United Kingdom;Sumburgh;EGPB;59.8833;-1.3;0 Europe;United Kingdom;Swansea;EGFH;51.600;-4.067;90 Europe;United Kingdom;Tain Range;EGQA;57.817;-3.967;4 Europe;United Kingdom;Tees-Side;EGNV;54.5167;-1.4167;0 Europe;United Kingdom;Tiree;EGPU;56.5;-6.8833;0 Europe;United Kingdom;Topcliffe Royal Air Force Base ;EGXZ;54.200;-1.383;28 Europe;United Kingdom;Unst Island;EGPW;60.733;-0.817;285 Europe;United Kingdom;Upper Heyford Royal Air Force Base;EGUA;51.933;-1.250;134 Europe;United Kingdom;Valley;EGOV;53.25;-4.5333;0 Europe;United Kingdom;Waddington;EGXW;53.167;-0.517;68 Europe;United Kingdom;Wainfleet;EGYW;53.083;0.267;3 Europe;United Kingdom;Walney Island;EGNL;54.117;-3.250;15 Europe;United Kingdom;Wattisham;EGUW;52.117;0.967;87 Europe;United Kingdom;West Freugh;EGOY;54.850;-4.950;11 Europe;United Kingdom;Wick;EGPC;58.45;-3.0833;0 Europe;United Kingdom;Wittering;EGXT;52.617;-0.467;84 Europe;United Kingdom;Woodbridge Royal Air Force Base ;EGVG;52.083;1.400;29 Europe;United Kingdom;Woodvale;EGOW;53.582;-3.056;11 Europe;United Kingdom;Wyton Royal Air Force Base;EGUY;52.350;-0.117;41 Europe;United Kingdom;Yeovilton;EGDY;51;-2.6333;0 Europe;United Kingdom;Yorkshire and Humberside, Sheffield City;EGSY;53.394;-1.388;70 Europe;Yugoslavia;Beograd;LYBE;44.8167;20.2833;99 Europe;Yugoslavia;Nis;LYNI;43.3333;21.9;202 Europe;Yugoslavia;Podgorica;LYPG;42.4333;19.2833;0 Europe;Yugoslavia;Pristina;LYPR;42.65;21.15;576 Mexico;Aguascaliantes;Aguascaliantes;MMAS;21.8833;-102.3;0 Mexico;Baja California;Mexicali;MMML;32.6333;-117;0 Mexico;Baja California;Tijuana;MMTJ;32.55;-116.9667;0 Mexico;Baja California Sur;La Paz;MMLP;24.0667;-110.3667;0 Mexico;Baja California Sur;San Jose del Cabo;MMSD;23.15;-109.7;0 Mexico;Campeche;Campeche;MMCP;19.85;-90.55;0 Mexico;Campeche;Ciudad del Carmen;MMCE;18.65;-91.8;0 Mexico;Chiapas;Tapachula;MMTP;14.7833;-92.3833;0 Mexico;Chiapas;Tuxtla Gutierrez;MMTG;16.75;-93.1167;0 Mexico;Chihuahua;Chihuahua;MMCU;28.7;-105.9667;0 Mexico;Chihuahua;Ciudad Juarez;MMCS;31.6333;-106.4333;0 Mexico;Coahuila;Monclova;MMMV;26.8833;-101.4167;586 Mexico;Coahuila;Piedras Negras;MMPG;28.7;-100.5167;0 Mexico;Coahuila;Saltillo;MMIO;25.45;-100.9833;0 Mexico;Coahuila;Torreon;MMTC;25.5333;-103.45;1150 Mexico;Colima;Colima;MMIA;19.2667;-103.5833;0 Mexico;Colima;Manzanillo;MMZO;19.15;-104.5667;0 Mexico;Culiacan;Culiacan;MMCL;24.8167;-107.4;0 Mexico;Distrito Federal;Mexico;MMMX;19.4333;-99.1;0 Mexico;Durango;Durango;MMDO;24.1333;-104.5333;0 Mexico;Guanajuato;Del Bajio;MMLO;21;-101.4833;0 Mexico;Guerrero;Acapulco;MMAA;16.7667;-99.75;0 Mexico;Guerrero;Ixtapa;MMZH;17.6;-101.4667;0 Mexico;Hidalgo;Tulancingo;MMTL;20.0833;-98.3667;0 Mexico;Jalisco;Guadalajara;MMGL;20.5167;-103.3167;0 Mexico;Jalisco;Puerto Vallarta;MMPR;20.6833;-105.25;0 Mexico;Mexico;Toluca;MMTO;19.35;-99.5667;0 Mexico;Michoacan;Morelia;MMMM;19.85;-101.0333;0 Mexico;Michoacan;Uruapan;MMPN;19.4;-102.0333;0 Mexico;Morelos;Cuernavaca;MMCB;18.8833;-99.2333;0 Mexico;Nayarit;Tepic;MMEP;21.5167;-104.9;0 Mexico;Nuevo Leon;Aeropuerto del Norte;MMAN;25.8667;-100.2333;450 Mexico;Nuevo Leon;Monterrey;MMMY;25.7833;-100.1;0 Mexico;Oaxaca;Bahias de Huatulco;MMBT;15.7833;-96.2667;0 Mexico;Oaxaca;Oaxaca;MMOX;16.9667;-96.7333;0 Mexico;Oaxaca;Puerto Escondido;MMPS;15.8667;-97.0833;0 Mexico;Puebla;Puebla;MMPB;19.05;-98.1667;0 Mexico;Queretaro;Queretaro;MMQT;20.6;-100.3833;0 Mexico;Quintana-Roo;Cancun;MMUN;21.0333;-86.8667;0 Mexico;Quintana-Roo;Chetumal;MMCM;18.4833;-88.3;0 Mexico;Quintana-Roo;Cozumel;MMCZ;20.5333;-86.9333;0 Mexico;San Luis Potosi;San Luis Potosi;MMSP;22.15;-100.9833;0 Mexico;Sinaloa;Los Mochis;MMLM;25.6833;-109.0833;0 Mexico;Sinaloa;Mazatlan;MMMZ;23.1667;-106.2667;0 Mexico;Sonora;Ciudad Obregon;MMCN;27.3167;-112.3;0 Mexico;Sonora;Guaymas;MMGM;27.9667;-110.9333;0 Mexico;Sonora;Hermosillo;MMHO;29.0667;-110.95;0 Mexico;Tabasco;Villahermosa;MMVA;18;-92.8167;0 Mexico;Tamaulipas;Ciudad Victoria;MMCV;23.7167;-98.9667;0 Mexico;Tamaulipas;Matamoros;MMMA;25.7667;-97.5333;0 Mexico;Tamaulipas;Nuevo Laredo;MMNL;27.4333;-99.5667;0 Mexico;Tamaulipas;Reynosa;MMRX;26.0167;-98.2333;0 Mexico;Tamaulipas;Tampico;MMTM;22.2833;-97.8667;0 Mexico;Veracruz;Minatitlan;MMMT;18.1;-94.5833;0 Mexico;Veracruz;Poza Rica;MMPA;20.5167;-97.4667;0 Mexico;Veracruz;Veracruz;MMVR;19.15;-96.1833;0 Mexico;Yucatan;Merida;MMMD;20.9833;-89.65;11 Mexico;Zacatecas;Zacatecas;MMZC;22.9;-102.6833;0 Middle East;Algeria;Adrar;DAUA;27.8833;-0.2833;263 Middle East;Algeria;Annaba;DABB;36.8333;7.8167;4 Middle East;Algeria;Constantine;DABC;36.2833;6.6167;694 Middle East;Algeria;Dar-El-Beida;DAAG;36.7167;3.25;25 Middle East;Algeria;Ghardaia;DAUG;32.3833;3.8167;450 Middle East;Algeria;Hassi-Messaoud;DAUH;31.6667;6.15;142 Middle East;Algeria;In Amenas;DAUZ;28.05;9.6333;562 Middle East;Algeria;Oran/Es Senia;DAOO;35.6333;-0.6;90 Middle East;Algeria;Tamanrasset/Aguenna;DAAT;22.8167;5.4667;0 Middle East;Algeria;Tebessa;DABS;35.4833;8.1333;813 Middle East;Algeria;Tlemcen Zenata;DAON;35.0167;-1.4667;247 Middle East;Bahrain;Bahrain;OBBI;26.2667;50.65;2 Middle East;Iran, Islamic Republic of;Ahwaz;OIAW;31.3333;48.6667;22 Middle East;Iran, Islamic Republic of;Bandarabbass;OIKB;27.2167;56.3667;10 Middle East;Iran, Islamic Republic of;Esfahan;OIFM;32.4667;51.7167;1550 Middle East;Iran, Islamic Republic of;Kerman;OIKK;30.25;56.9667;1754 Middle East;Iran, Islamic Republic of;Mashhad;OIMM;36.2667;59.6333;980 Middle East;Iran, Islamic Republic of;Shiraz;OISS;29.5333;52.5833;1491 Middle East;Iran, Islamic Republic of;Tabriz;OITT;38.0833;46.2833;1361 Middle East;Iran, Islamic Republic of;Tehran-Mehrabad;OIII;35.6833;51.35;1191 Middle East;Israel;Beer-Sheva;LLBS;31.233;34.783;275 Middle East;Israel;Ben Gurion;LLBG;32;34.9;49 Middle East;Israel;Eilat;LLET;29.55;34.95;12 Middle East;Israel;Galilee / Pina;LLIB;32.980;35.570;0 Middle East;Israel;Jerusalem Airport;LLJR;31.867;35.217;749 Middle East;Israel;Ovda;LLOV;30;34.8333;445 Middle East;Israel;Sde-Haifa Haifa;LLHA;32.800;35.033;8 Middle East;Israel;Tel Aviv / Sde-Dov Airport;LLSD;32.115;34.782;13 Middle East;Jordan;Amman Airport;OJAM;31.983;35.983;767 Middle East;Jordan;Aqaba Airport;OJAQ;29.633;35.017;53 Middle East;Jordan;H-4'Irwaished;OJHR;32.500;38.200;686 Middle East;Jordan;H-5'Safawi;OJHF;32.200;37.133;668 Middle East;Jordan;Irbid;OJBD;32.550;35.850;618 Middle East;Jordan;Ma'An;OJMN;30.167;35.783;1069 Middle East;Jordan;Mafraq;OJMF;32.367;36.250;686 Middle East;Jordan;Queen Alia Airport;OJAI;31.667;35.967;721 Middle East;Kuwait;Kuwait;OKBK;29.2167;47.9833;55 Middle East;Lebanon;Beirut;OLBA;33.8167;35.4833;19 Middle East;Oman;Buraimi;OOBR;24.233;55.783;299 Middle East;Oman;Fahud;OOFD;22.350;56.483;170 Middle East;Oman;Khassab;OOKB;26.217;56.233;3 Middle East;Oman;Masirah;OOMA;20.6667;58.9;19 Middle East;Oman;Saiq;OOSQ;23.0667;57.65;0 Middle East;Oman;Salalah;OOSA;17.0333;54.0833;17 Middle East;Oman;Seeb;OOMS;23.5833;58.2833;17 Middle East;Oman; Sohar Majis;OOSH;24.467;56.633;4 Middle East;Oman;Sur;OOSR;22.533;59.483;14 Middle East;Oman;Thumrait;OOTH;17.6667;54.0333;0 Middle East;Qatar;Al Udeid;KQIR;25.117;51.300;42 Middle East;Qatar;Doha;OTBD;25.25;51.5667;10 Middle East;Saudi Arabia;Abha;OEAB;18.2333;42.65;2093 Middle East;Saudi Arabia;Al Ahsa;OEAH;25.3;49.4833;178 Middle East;Saudi Arabia;Al Baha;OEBA;20.3;41.6333;1662 Middle East;Saudi Arabia;Al-Jouf;OESK;29.7833;40.1;689 Middle East;Saudi Arabia;Al Qaysumah;OEPA;28.3167;46.1167;360 Middle East;Saudi Arabia;Arar;OERR;30.9;41.1333;549 Middle East;Saudi Arabia;Bisha;OEBH;19.9833;42.6167;1163 Middle East;Saudi Arabia;Dammam-King Fahd International Airport;OEDF;26.467;49.783;22 Middle East;Saudi Arabia;Dawadmi;OEDW;24.5;44.35;991 Middle East;Saudi Arabia;Dhahran;OEDR;26.2667;50.15;17 Middle East;Saudi Arabia;Gassim;OEGS;26.3;43.7667;650 Middle East;Saudi Arabia;Gizan;OEGN;16.9;42.5833;7 Middle East;Saudi Arabia;Guriat;OEGT;31.4;37.2667;504 Middle East;Saudi Arabia;Hafr Al-Batin;OEKK;27.9;45.5333;414 Middle East;Saudi Arabia;Hail;OEHL;27.4333;41.6833;1013 Middle East;Saudi Arabia;Jeddah ;OEJD;21.500;39.200;15 Middle East;Saudi Arabia;Jeddah King Abdul Aziz International Airport;OEJN;21.7;39.1833;17 Middle East;Saudi Arabia;Jubail Naval ;OEJB;27.050;49.400;8 Middle East;Saudi Arabia;Khamis Mushait;OEKM;18.3;42.8;2056 Middle East;Saudi Arabia;King Khaled International Airport;OERK;24.9333;46.7167;612 Middle East;Saudi Arabia;Madinah;OEMA;24.55;39.7;636 Middle East;Saudi Arabia;Makkah;OEMK;21.4333;39.7667;240 Middle East;Saudi Arabia;Najran;OENG;17.6167;44.4167;1210 Middle East;Saudi Arabia;Rafha;OERF;29.6167;43.4833;444 Middle East;Saudi Arabia;Riyadh;OERY;24.7167;46.7333;620 Middle East;Saudi Arabia;Sharurah;OESH;17.4667;47.1167;725 Middle East;Saudi Arabia;Tabuk;OETB;28.3667;36.6;768 Middle East;Saudi Arabia;Taif;OETF;21.4833;40.55;1454 Middle East;Saudi Arabia;Turaif;OETR;31.6833;38.7333;852 Middle East;Saudi Arabia;Wadi Al Dawasser Airport;OEWD;20.5;45.2;622 Middle East;Saudi Arabia;Wejh;OEWJ;26.2;36.4667;21 Middle East;Saudi Arabia;Yenbo;OEYN;24.15;38.0667;10 Middle East;United Arab Emirates;Abu Dhabi;OMAA;24.4333;54.65;27 Middle East;United Arab Emirates;Abu Dhabi - Bateen;OMAD;24.4333;54.4667;3 Middle East;United Arab Emirates;Al Ain;OMAL;24.2667;55.6;262 Middle East;United Arab Emirates;Buhasa;OMAB;23.617;53.383;94 Middle East;United Arab Emirates;Dubai;OMDB;25.25;55.3333;5 Middle East;United Arab Emirates;Fujairah;OMFJ;25.1;56.3333;28 Middle East;United Arab Emirates;Ras Al Khaimah;OMRK;25.6167;55.9333;31 Middle East;United Arab Emirates;Sharjah;OMSJ;25.3333;55.5167;33 Middle East;Yemen;Aden;OYAA;12.6667;45.0333;3 Middle East;Yemen;Al-Hazm ;OYZM;16.200;44.783;1900 Middle East;Yemen;Ataq;OYAT;14.517;46.850;1067 Middle East;Yemen;Hodeidah;OYHD;14.75;42.9833;115 Middle East;Yemen;Marib;OYMB;15.4333;45.3333;0 Middle East;Yemen;Mokha;OYMC;13.250;44.133;4 Middle East;Yemen;Mokha ;OYMK;13.250;43.283;3 Middle East;Yemen;Riyan;OYAR;14.650;49.383;16 Middle East;Yemen;Sa'Ada / Sadah ;OYSH;16.967;43.733;1890 Middle East;Yemen;Sana'A;OYSN;15.5167;44.1833;2190 Middle East;Yemen;Sayun;OYSY;15.9667;48.8;0 Middle East;Yemen;Socotra;OYSQ;12.6333;53.9;47 Middle East;Yemen;Taiz;OYTZ;13.6833;44.1333;1385 Misc.;Antarctica;Amundsen-Scott South Pole Station;NZSP;-90;-0;2835 Misc.;Antarctica;South Pole Ice Runway;NZIR;-77.8667;166.5333;0 Misc.;Antarctica;Williams Field;NZCM;-77.8667;166.9667;8 Misc.;Antarctica;Williams Field;NZWD;-77.883;166.650;12 Misc.;Greenland;Angisoq;BGAS;59.983;-45.200;16 Misc.;Greenland;Aputiteeq;BGAT;67.783;-32.300;13 Misc.;Greenland;Cape Tobin Automated Reporting Station ;BGKT;70.417;-21.967;41 Misc.;Greenland;Constable Pynt;BGCO;70.75;-22.65;10 Misc.;Greenland;Daneborg;BGDB;74.300;-20.217;44 Misc.;Greenland;Danmarkshavn;BGDH;76.767;-18.667;11 Misc.;Greenland;Egedesminde;BGEM;68.700;-52.750;43 Misc.;Greenland;Frederikshaab;BGFH;62.000;-49.667;13 Misc.;Greenland;Godthaab / Nuuk;BGGH;64.1667;-51.75;70 Misc.;Greenland;Groennedal;BGGD;61.233;-48.100;35 Misc.;Greenland;Holsteinsborg;BGHB;66.917;-53.667;12 Misc.;Greenland;Jacobshavn Lufthavn;BGJN;69.2333;-51.0667;31 Misc.;Greenland;Julianehaab;BGJH;60.717;-46.050;32 Misc.;Greenland;Kulusuk Lufthavn;BGKK;65.5833;-37.15;37 Misc.;Greenland;Narsarsuaq;BGBW;61.1667;-45.4167;32 Misc.;Greenland;Prins Christian Sund;BGPC;60.050;-43.167;88 Misc.;Greenland;Scoresbysund;BGSC;70.483;-21.950;65 Misc.;Greenland;Sdr Stroemfjord;BGSF;67.0167;-50.7;53 Misc.;Greenland;Tasiilaq;BGAM;65.600;-37.633;50 Misc.;Greenland;Thule Air Base;BGTL;76.5333;-68.75;77 United States;Alabama;Albertville, Albertville Municipal Airport;K8A0;34.229;-86.256;315 United States;Alabama;Alexander City, Thomas C Russell Field Airport;KALX;32.915;-85.963;209 United States;Alabama;Anniston;KANB;33.5833;-85.8475;183 United States;Alabama;Auburn University Automatic Meteorological Observing System;KAUB;32.600;-85.500;198 United States;Alabama;Auburn;KAUO;32.6167;-85.4333;0 United States;Alabama;Birmingham Nexrad;KBMX;33.167;-86.750;231 United States;Alabama;Birmingham;KBHM;33.55;-86.745;197 United States;Alabama;Centreville;KCKL;32.900;-87.250;140 United States;Alabama;Craig Field / Selma;KSEM;32.350;-86.983;51 United States;Alabama;Cullman, Folsom Field Airport;K3A1;34.269;-86.858;294 United States;Alabama;Decatur;KDCU;34.65;-86.9433;176 United States;Alabama;Dothan;KDHN;31.3167;-85.4497;113 United States;Alabama;Evergreen;KGZH;31.4167;-87.0481;78 United States;Alabama;FOLEY, BARIN FIELD;KNBJ;30.383;-87.633;14 United States;Alabama;Fort Payne, Isbell Field Airport;K4A9;34.474;-85.721;267 United States;Alabama;Fort Rucker, Lowe Army Heliport;KLOR;31.359;-85.748;78 United States;Alabama;Gadsden;KGAD;33.9667;-86.0833;0 United States;Alabama;Haleyville, Posey Field Airport;K1M4;34.280;-87.600;284 United States;Alabama;Hanchey AHP / Ozark;KHEY;31.350;-85.667;97 United States;Alabama;Huntsville, Madison County Executive Airport;KM82;34.861;-86.557;230 United States;Alabama;Huntsville, Madison County Executive Airport;KMDQ;34.861;-86.557;230 United States;Alabama;Huntsville;KHSV;34.6333;-86.7856;191 United States;Alabama;Mobile Downtown;KBFM;30.6;-88.0633;20 United States;Alabama;Mobile Point Coast Guard Station;K8R1;30.233;-88.033;1 United States;Alabama;Mobile Regional Airport;KMOB;30.6833;-88.2456;67 United States;Alabama;Montgomery-Maxwell AFB;KMXF;32.3833;-86.3667;0 United States;Alabama;Montgomery;KMGM;32.3;-86.4061;63 United States;Alabama;Muscle Shoals;KMSL;34.7333;-87.5994;164 United States;Alabama;OPP/ANDALUSIA;K79J;31.300;-86.383;94 United States;Alabama;Ozark;KOZR;31.2833;-85.7167;0 United States;Alabama;SHELBY COUNTY AIRPORT;KEET;33.183;-86.783;178 United States;Alabama;TROY MUNICIPAL AIRPORT;KTOI;31.867;-86.017;121 United States;Alabama;Tuscaloosa;KTCL;33.2;-87.6158;49 United States;Alaska;Adak;PADK;51.8833;-176.6247;4 United States;Alaska;Ambler;PAFM;67.1;-157.85;0 United States;Alaska;Anaktuvuk;PAKP;68.1333;-151.7333;0 United States;Alaska;Anchorage - Elmendorf AFB;PAED;61.25;-149.8;59 United States;Alaska;Anchorage, Lake Hood Sea Plane Base;KLHD;61.178;-149.964;21 United States;Alaska;Anchorage, Merrill Field;KMRI;61.217;-149.855;41 United States;Alaska;Anchorage;PANC;61.1667;-149.9961;48 United States;Alaska;Angoon;PAGN;57.500;-134.583;0 United States;Alaska;Aniak;PANI;61.5833;-159.5333;26 United States;Alaska;Annette, Annette Island Airport;KANN;55.030;-131.576;36 United States;Alaska;Annette;PANT;55.0333;-131.5667;34 United States;Alaska;Anvik, Anvik Airport;PANV;62.648;-160.190;94 United States;Alaska;Arctic Village, Arctic Village Airport;PARC;68.114;-145.579;638 United States;Alaska;Atka, Atka Airport;PAAK;52.220;-174.206;17 United States;Alaska;Barrow;PABR;71.2833;-156.7781;10 United States;Alaska;Barter Island Distant Early Warning ;PBTI;70.133;-143.583;2 United States;Alaska;Barter Island;PABA;70.1333;-143.6333;15 United States;Alaska;Bethel, Bethel Airport;KBET;60.786;-161.826;39 United States;Alaska;Bethel;PABE;60.7833;-161.8333;46 United States;Alaska;Bettles, Bettles Airport;KBTT;66.916;-151.509;196 United States;Alaska;Bettles;PABT;66.9167;-151.5167;196 United States;Alaska;Big Delta Arctic Weather;PABG;64.000;-145.717;389 United States;Alaska;Big River Lake;PALV;60.8167;-152.3;0 United States;Alaska;Biorka Island Supplementary Aviation Weather Reporting Station;PAJB;56.850;-135.533;15 United States;Alaska;Birchwood, Birchwood Airport;PABV;61.417;-149.517;29 United States;Alaska;Buckland, Buckland Airport;PABL;65.982;-161.152;7 United States;Alaska;Cantwell;PATW;63.4;-148.95;0 United States;Alaska;Cape Lisburne;PALU;68.8833;-166.1333;0 United States;Alaska;Cape Newenham;PAEH;58.65;-162.0667;0 United States;Alaska;Cape Romanzoff;PACZ;61.7833;-166.0333;0 United States;Alaska;Cape Saint Elias;PACP;59.800;-144.600;18 United States;Alaska;Cape Sarichef Airport;PACS;54.600;-164.933;9 United States;Alaska;Central, Central Airport;PARL;65.574;-144.783;284 United States;Alaska;Central, Central;PACE;65.567;-144.767;282 United States;Alaska;Chandalar Lake;PALR;67.5;-148.4833;0 United States;Alaska;Chignik, Chignik Airport;PAJC;56.311;-158.373;6 United States;Alaska;Chulitna;PAEC;62.8833;-149.8333;0 United States;Alaska;Circle City;PACR;65.8333;-144.0667;0 United States;Alaska;Clear;PACL;64.300;-149.117;168 United States;Alaska;Cold Bay;PACD;55.2167;-162.7278;29 United States;Alaska;Cordova, Smith Airport;KCDV;60.489;-145.451;12 United States;Alaska;Cordova;PACV;60.4833;-145.4778;13 United States;Alaska;DEERING AIRPORT;PADE;66.067;-162.767;6 United States;Alaska;Dead Horse;PASC;70.2;-148.4667;0 United States;Alaska;Deadhorse, Alpine Airstrip;PALP;70.333;-150.933;5 United States;Alaska;Deadhorse, Deadhorse Airport;KSCC;70.192;-148.477;17 United States;Alaska;Deering, Deering Airport;KDEE;66.071;-162.758;4 United States;Alaska;Delta Junction / Ft. Greely, Allen Army Air Field;KBIG;63.994;-145.692;389 United States;Alaska;Dillingham;PADL;59.05;-158.5167;29 United States;Alaska;Dutch Harbor;PADU;53.9;-166.55;0 United States;Alaska;EAGLE AIRPORT;PAEG;64.783;-141.150;274 United States;Alaska;Eagle, Eagle Airport;KEAA;64.776;-141.161;268 United States;Alaska;Egegik, Egegik Airport;PAII;58.185;-157.386;28 United States;Alaska;Elfin Cove;PAEL;58.2;-136.35;0 United States;Alaska;Emmonak;PAEM;62.7667;-164.5;0 United States;Alaska;Eureka, Skelton Airport;PAZK;61.933;-147.167;1002 United States;Alaska;Fairbanks;PAFA;64.8;-147.8761;140 United States;Alaska;Farbanks/Eielson AFB;PAEI;64.65;-147.0667;167 United States;Alaska;Farewell Lake, Farewell Lake Seaplane Base;PAFK;62.542;-153.623;321 United States;Alaska;Farewell Lake;PAFW;62.533;-153.617;323 United States;Alaska;Fort Greely/Allen AAF;PABI;64;-145.7333;391 United States;Alaska;Fort Yukon, Fort Yukon Airport;PFYU;66.567;-145.267;433 United States;Alaska;Ft. Richardson / Bryant U. S. Army Heliport, Ak;PAFR;61.267;-149.650;115 United States;Alaska;Funter Bay Seaplane;PANR;58.250;-134.900;0 United States;Alaska;Galbraith Lake;PAGB;68.4833;-149.4833;0 United States;Alaska;Galena;PAGA;64.7333;-156.9333;49 United States;Alaska;Gambell;PAGM;63.7667;-171.7333;0 United States;Alaska;Golovin, Golovin Airport;PAGL;64.543;-163.039;8 United States;Alaska;Gulkana, Gulkana Airport;KGKN;62.160;-145.457;481 United States;Alaska;Gulkana;PAGK;62.15;-145.45;481 United States;Alaska;Gustavus;PAGS;58.4167;-135.7333;9 United States;Alaska;Haines, Haines Airport;KHNS;59.244;-135.509;4 United States;Alaska;Haines;PAHN;59.25;-135.5167;0 United States;Alaska;Hayes River;PAHZ;61.9833;-152.0833;0 United States;Alaska;Healy River;PAHV;63.8833;-149.0167;0 United States;Alaska;Homer / Municipal;PAHD;59.633;-151.500;24 United States;Alaska;Homer, Homer Airport;KHOM;59.642;-151.487;23 United States;Alaska;Homer;PAHO;59.65;-151.4833;0 United States;Alaska;Hoonah;PAOH;58.1167;-135.45;0 United States;Alaska;Hooper Bay, Hooper Bay Airport;PAHP;61.517;-166.133;5 United States;Alaska;Huslia, Huslia Airport;PAHL;65.698;-156.351;65 United States;Alaska;Huslia, Huslia Airport;PAHS;65.700;-156.383;55 United States;Alaska;Hydaburg, Hydaburg Seaplane Base;PAHY;55.200;-132.833;0 United States;Alaska;Iliamna, Iliamna Airport;KILI;59.749;-154.909;63 United States;Alaska;Iliamna;PAIL;59.75;-154.9167;49 United States;Alaska;Johnstone Point;PAJO;60.483;-146.600;14 United States;Alaska;Juneau;PAJN;58.35;-134.5625;8 United States;Alaska;KALTAG AIRPORT;PAKV;64.317;-158.733;57 United States;Alaska;KIVALINA AIRPORT;PAVL;67.733;-164.550;4 United States;Alaska;Kake;PAFE;56.9667;-133.95;0 United States;Alaska;Kaltag, Kaltag Airport;KKAL;64.324;-158.733;60 United States;Alaska;Kenai;PAEN;60.5667;-151.2392;25 United States;Alaska;Ketchikan;PAKT;55.35;-131.7225;25 United States;Alaska;Kiana Kinana/Bob Baker Mem;PAIK;66.983;-160.433;46 United States;Alaska;King Salmon;PAKN;58.6833;-156.6539;10 United States;Alaska;Kipnuk, Kipnuk Airport;PAKI;59.933;-164.030;3 United States;Alaska;Kivalina, Kivalina Airport;KKVL;67.731;-164.542;3 United States;Alaska;Klawock, Klawock Airport;KAKW;55.576;-133.076;15 United States;Alaska;Klawock;PAKW;55.5833;-133.0833;0 United States;Alaska;Kodiak, Kodiak Airport;KADQ;57.751;-152.486;22 United States;Alaska;Kodiak;PADQ;57.75;-152.5;34 United States;Alaska;Kotzebue;PAOT;66.8833;-162.6042;5 United States;Alaska;Koyuk, Koyuk Airport;PAKK;64.934;-161.158;37 United States;Alaska;Kuparuk, Ugnu-Kuparuk Airport;PAKU;70.317;-149.583;20 United States;Alaska;Lake Hood;PALH;61.1833;-149.9667;0 United States;Alaska;Lazy Mtn / Wolverine;PAIZ;61.633;-149.033;236 United States;Alaska;Manley Hot Springs, Manly Hot Springs Airport;PAML;64.999;-150.638;81 United States;Alaska;McCarthy;PAMX;61.4333;-142.9333;0 United States;Alaska;McGrath, McGrath Airport;KMCG;62.956;-155.606;102 United States;Alaska;McGrath;PAMC;62.9667;-155.6167;103 United States;Alaska;McKinley Park, McKinley National Park Airport;PAIN;63.733;-148.917;524 United States;Alaska;Mekoryuk;PAMY;60.3667;-166.2667;0 United States;Alaska;Merril Field;PAMR;61.2167;-149.85;0 United States;Alaska;Merrill Pass West;PAER;61.250;-153.817;358 United States;Alaska;Metlakatla, Metlakatla Seaplane Base;PAMM;55.131;-131.578;0 United States;Alaska;Middleton Island;PAMD;59.4333;-146.3333;14 United States;Alaska;Minchumina;PAMH;63.9;-152.2667;214 United States;Alaska;NUIQSUT AIRPORT;PAQT;70.217;-150.983;12 United States;Alaska;Nabesna/Devil Mt.;PABN;62.4;-143;0 United States;Alaska;Nenana, Nenana Municipal Airport;KENN;64.548;-149.084;110 United States;Alaska;Nenana;PANN;64.55;-149.0833;0 United States;Alaska;Nightmute;PAGT;60.467;-164.700;4 United States;Alaska;Nikolski;PAKO;52.950;-168.850;21 United States;Alaska;Noatak, Noatak Airport;PAWN;67.567;-162.983;27 United States;Alaska;Nome;PAOM;64.5;-165.4356;4 United States;Alaska;Northway;PAOR;62.95;-141.9364;522 United States;Alaska;Oliktok Distant Early Warning ;POLI;70.500;-149.883;5 United States;Alaska;PORTAGE GLACIER;PATO;60.783;-148.850;31 United States;Alaska;Palmer, Palmer Municipal Airport;KPAQ;61.596;-149.092;70 United States;Alaska;Palmer;PAAQ;61.6;-149.0833;0 United States;Alaska;Paxson;PAXK;63.0333;-145.5;0 United States;Alaska;Petersburg;PAPG;56.8167;-132.9667;0 United States;Alaska;Platinum;PAPM;59.017;-161.817;3 United States;Alaska;Point Hope;PAPO;68.35;-166.8;0 United States;Alaska;Point Lay;PPIZ;69.8167;-162.9167;0 United States;Alaska;Port Alexander;PAAP;56.25;-134.65;0 United States;Alaska;Port Alsworth;PALJ;60.2;-154.3;0 United States;Alaska;Port Clarence, Port Clarence Coast Guard Station;PAPC;65.250;-166.850;3 United States;Alaska;Port Heiden;PAPH;56.95;-158.6167;0 United States;Alaska;Portage Glacier, Portage Visitor Center;KA21;60.784;-148.846;31 United States;Alaska;Prospect Creek, Prospect Creek Airport;PAPR;66.813;-150.644;335 United States;Alaska;Puntilla Lake;PAPT;62.1;-152.75;0 United States;Alaska;Red Dog, Red Dog Airport;PARD;68.031;-162.903;297 United States;Alaska;SELDOVIA AIRPORT;PASO;59.450;-151.700;9 United States;Alaska;SHEMYA EARECKSON AS;PASY;52.717;174.117;30 United States;Alaska;ST. GEORGE AIRPORT;PAPB;56.583;-169.667;38 United States;Alaska;Saint Mary's;PASM;62.0667;-163.3;0 United States;Alaska;Saint Paul;PASN;57.15;-170.2167;9 United States;Alaska;Sand Point;PASD;55.3167;-160.5167;0 United States;Alaska;Savoonga Airport;PASA;63.683;-170.500;16 United States;Alaska;Selanik;PASK;66.6167;-160;0 United States;Alaska;Seldovia, Seldovia Airport;KSOV;59.447;-151.704;8 United States;Alaska;Seward, Seward Airport;KSWD;60.127;-149.419;6 United States;Alaska;Seward;PAWD;60.1167;-149.45;18 United States;Alaska;Sheep Mountain, Sheep Mountain Lodge;PASP;61.812;-147.500;838 United States;Alaska;Shishmaref;PASH;66.2667;-166.05;0 United States;Alaska;Sitka;PASI;57.0333;-135.3647;14 United States;Alaska;Skagway, Skagway Airport;PASG;59.455;-136.323;13 United States;Alaska;Skagway;PAGY;59.4667;-135.3;5 United States;Alaska;Skwentna;PASW;61.9667;-151.1833;0 United States;Alaska;Slana;PADT;62.7;-143.9833;0 United States;Alaska;Sleetmute;PASL;61.717;-157.150;54 United States;Alaska;Snowshoe Lake;PALK;62.0333;-142.6667;0 United States;Alaska;Soldotna;PASX;60.4833;-151.0333;0 United States;Alaska;Sparrevohn;PASV;61.1;-155.5667;0 United States;Alaska;St. George Island, New St. George Airport;KPBV;56.577;-169.663;27 United States;Alaska;St. Paul Island, St. Paul Island Airport;KSNP;57.156;-170.221;13 United States;Alaska;Sutton;PAJV;61.7167;-148.8833;0 United States;Alaska;Talkeetna, Talkeetna Airport;KTKA;62.320;-150.095;109 United States;Alaska;Talkeetna;PATK;62.3167;-150.0936;109 United States;Alaska;Tanana, Calhoun Memorial Airport;KTAL;65.174;-152.107;69 United States;Alaska;Tanana;PATA;65.1667;-152.1;67 United States;Alaska;Tatalina;PATL;62.9;-155.9833;0 United States;Alaska;Teller;PATE;65.233;-166.333;90 United States;Alaska;Tin City;PATC;65.5667;-167.9167;0 United States;Alaska;Togiak Village;PATG;59.05;-160.4;0 United States;Alaska;Tok;PATJ;63.317;-142.717;509 United States;Alaska;Umiat;PAUM;69.3667;-152.1333;85 United States;Alaska;Unalakleet;PAUN;63.8833;-160.8;6 United States;Alaska;Utopia Creek, Indian Mountain LRRS Airport;PAIM;66.983;-153.700;372 United States;Alaska;Valdez 2;PAVD;61.1333;-146.2667;0 United States;Alaska;Valdez Weather Station Office;PAVW;61.133;-146.350;10 United States;Alaska;WAINWRIGHT AIRPORT;PAWI;70.633;-160.033;9 United States;Alaska;Wainwright, Wainwright Airport;KAWI;70.639;-160.007;9 United States;Alaska;Wainwright;PAFB;64.8333;-147.6167;0 United States;Alaska;Wales;PAIW;65.617;-168.100;7 United States;Alaska;Wasilla, Wasilla Airport;PAWS;61.572;-149.541;106 United States;Alaska;Whittier;PAWR;60.7667;-148.6833;0 United States;Alaska;Willow Airport;PAUO;61.75;-150.05;0 United States;Alaska;Wrangell;PAWG;56.4833;-132.3667;13 United States;Alaska;Yakataga;PACY;60.083;-142.500;4 United States;Alaska;Yakutat, Yakutat Airport;KYAK;59.510;-139.663;10 United States;Alaska;Yakutat;PAYA;59.5167;-139.6667;9 United States;Arizona;Ajo Municipal;KP01;32.450;-112.867;444 United States;Arizona;Bullhead City, Laughlin/Bullhead International Airport;KIFP;35.157;-114.559;212 United States;Arizona;Bullhead City;KP06;35.167;-114.567;167 United States;Arizona;Casa Granda;KCGZ;32.95;-111.7667;0 United States;Arizona;Chandler, Chandler Municipal Airport;KCHD;33.269;-111.811;379 United States;Arizona;Chandler;KIWA;33.3167;-111.65;0 United States;Arizona;Clifton/Morenci, Greenlee County Airport;KCFT;32.953;-109.210;1162 United States;Arizona;Colorado City, Colorado City Municipal Airport;KAZC;36.950;-113.000;1486 United States;Arizona;Douglas;KDUG;31.4667;-109.6036;0 United States;Arizona;Flagstaff;KFLG;35.1333;-111.6722;2134 United States;Arizona;Fort Huachuca;KFHU;31.5833;-110.3333;1428 United States;Arizona;Gila Bend;KGBN;32.4333;-112.6833;261 United States;Arizona;Glendale, Glendale Municipal Airport;KGEU;33.527;-112.295;325 United States;Arizona;Grand Canyon, Valle Airport;K40G;35.651;-112.146;1829 United States;Arizona;Grand Canyon;KGCN;35.9333;-112.1547;2016 United States;Arizona;Kingman;KIGM;35.25;-113.9331;1032 United States;Arizona;Lake Havasu Automatic Weather Observing / Reporting System;KLHU;34.467;-111.767;147 United States;Arizona;Lukeville;KP65;31.883;-112.817;511 United States;Arizona;Mesa-Falcon Field;KFFZ;33.4667;-111.7333;0 United States;Arizona;NOGALES INTERNATIONAL AIRPORT ;KOLS;31.417;-110.850;1198 United States;Arizona;Nogales;K13A;31.4167;-110.85;1198 United States;Arizona;Page;KPGA;36.9167;-111.4481;1307 United States;Arizona;Payson;K0E4;34.233;-111.333;1498 United States;Arizona;Payson;KPJB;34.267;-111.350;1571 United States;Arizona;Phoenix-Deer Valley;KDVT;33.6833;-112.0656;443 United States;Arizona;Phoenix-Goodyear;KGYR;33.4167;-112.3833;0 United States;Arizona;Phoenix-Luke AFB;KLUF;33.5333;-112.3833;332 United States;Arizona;Phoenix;KPHX;33.4333;-112.0511;336 United States;Arizona;Prescott;KPRC;34.6333;-112.4222;1524 United States;Arizona;ST JOHNS INDUSTRIAL AIRPRK;KSJN;34.517;-109.383;1747 United States;Arizona;Safford Automatic Meteorological Observing System;KE74;32.817;-109.683;950 United States;Arizona;Safford-Municipal Airport;KSAD;32.85;-109.6356;962 United States;Arizona;Scottsdale;KSDL;33.6167;-111.9106;447 United States;Arizona;Sedona Airport;KSEZ;34.850;-111.783;1471 United States;Arizona;Show Low;KSOW;34.2667;-110;0 United States;Arizona;Tucson-Davis AFB;KDMA;32.1667;-110.8833;0 United States;Arizona;Tucson;KTUS;32.1167;-110.9553;786 United States;Arizona;WINDOW ROCK AIRPORT;KRQE;35.650;-109.067;2054 United States;Arizona;Whiteriver, Whiteriver Airport;KE24;33.817;-109.983;1570 United States;Arizona;Winslow;KINW;35.0167;-110.7208;1490 United States;Arizona;Yuma / Yuma International;KYUM;32.650;-114.600;65 United States;Arizona;Yuma MCAS;KNYL;32.6167;-113.7639;63 United States;Arkansas;Arkadelphia, Dexter B Florence Memorial Field Airport;KM89;34.100;-93.066;56 United States;Arkansas;BLYTHEVILLE MUNICIPAL AIRPORT ;KHKA;35.933;-89.833;78 United States;Arkansas;Batesville;KBVX;35.7333;-91.65;0 United States;Arkansas;Bentonville;KVBT;36.35;-94.2167;0 United States;Arkansas;Camden / Harrell Field;KCDH;33.617;-92.767;40 United States;Arkansas;DE QUEEN HELMS SEVIER COUNTY;KDEQ;34.050;-94.400;108 United States;Arkansas;Eaker Air Force Base;KBYH;35.967;-89.950;78 United States;Arkansas;El Dorado;KELD;33.2167;-92.8133;81 United States;Arkansas;Fayetteville;KFYV;36;-94.1678;379 United States;Arkansas;Flippin;KFLP;36.3;-92.4667;0 United States;Arkansas;Fort Smith;KFSM;35.3333;-94.365;140 United States;Arkansas;Harrison;KHRO;36.25;-93.1547;417 United States;Arkansas;Hot Springs;KHOT;34.4667;-93.0961;162 United States;Arkansas;Jonesboro;KJBR;35.8333;-90.6431;79 United States;Arkansas;Little Rock AFB;KLRF;34.9167;-92.15;0 United States;Arkansas;Little Rock;KLIT;34.7167;-92.2361;79 United States;Arkansas;MONTICELLO MUNICIPAL AIRPORT;KLLQ;33.633;-91.750;82 United States;Arkansas;MT IDA;KMWT;34.550;-93.583;214 United States;Arkansas;Mena, Mena Intermountain Municipal Airport;KM39;34.545;-94.203;329 United States;Arkansas;Mena, Mena Intermountain Municipal Airport;KMEZ;34.545;-94.203;329 United States;Arkansas;NORTHWEST ARKANSAS REGIONAL;KXNA;36.283;-94.300;392 United States;Arkansas;Newport, Newport Municipal Airport;KM19;35.638;-91.176;73 United States;Arkansas;North Little Rock, North Little Rock Airport;KLZK;34.833;-92.250;165 United States;Arkansas;OZARK REGIONAL AIRPORT;KBPK;36.367;-92.467;283 United States;Arkansas;Pine Bluff;KPBF;34.1667;-91.9347;62 United States;Arkansas;RUSSELVILLE MUNICIPAL AIRPORT ;KRUE;35.250;-93.100;123 United States;Arkansas;Rogers;KROG;36.3667;-94.1;0 United States;Arkansas;Searcy, Searcy Municipal Airport;KSRC;35.212;-91.737;81 United States;Arkansas;Siloam Springs;KSLG;36.2;-94.4833;0 United States;Arkansas;Springdale Municipal;KASG;36.183;-94.117;412 United States;Arkansas;Stuttgart;KSGT;34.6;-91.5667;0 United States;Arkansas;Texarkana;KTXK;33.45;-93.9875;111 United States;Arkansas;WEST MEMPHIS MUNICIPAL AIRPORT;KAWM;35.133;-90.233;65 United States;Arkansas;Walnut Ridge;KARG;36.1333;-90.9167;0 United States;California;ALTURAS;KAAT;41.483;-120.567;1333 United States;California;Alameda Naval Air Station;KNGZ;37.783;-122.317;4 United States;California;Anacapa Island;KL46;34.017;-119.367;42 United States;California;Apple Valley;KAPV;34.583;-117.183;932 United States;California;Arcata;KACV;40.9667;-124.1086;67 United States;California;Auburn, Auburn Municipal Airport;KAUN;38.950;-121.067;467 United States;California;Avalon;KAVX;33.4;-118.4158;482 United States;California;Bakersfield;KBFL;35.4333;-119.0567;151 United States;California;Beaumont;KBUO;33.9333;-116.9667;0 United States;California;Bishop;KBIH;37.3667;-118.3581;1253 United States;California;Blue Canyon;KBLU;39.2667;-120.7081;1609 United States;California;Blunts Reef Coast Guard Station;K84Q;40.433;-124.500;8 United States;California;Blythe;KBLH;33.6167;-114.7169;119 United States;California;Bodega Bay Coast Guard Light Station;K92Q;38.317;-123.050;3 United States;California;Burbank;KBUR;34.1833;-118.3647;217 United States;California;Burney;KBNY;40.883;-121.667;957 United States;California;Cabrillo Beach;KL14;33.717;-118.283;8 United States;California;Calexico, Calexico International Airport;KCWL;32.669;-115.513;1 United States;California;Camarillo;KCMA;34.2167;-119.0833;0 United States;California;Camp San Luis Airport ;KCSL;35.333;-120.733;76 United States;California;Campo;KCZZ;32.6167;-116.4683;807 United States;California;Carlsbad;KCRQ;33.1167;-117.2758;99 United States;California;Castroville / Moss;K54Q;36.800;-121.800;5 United States;California;Chico;KCIC;39.8;-121.85;0 United States;California;China Lake;KNID;35.6833;-117.69;682 United States;California;Chino;KCNO;33.9667;-117.6236;207 United States;California;Concord;KCCR;37.9833;-122.0519;11 United States;California;Crescent City;KCEC;41.7667;-124.2367;0 United States;California;Crows Landing Naval Auxiliary Landing Field;KNRC;37.400;-121.100;50 United States;California;Cuddleback Gunnery Range;K4CB;35.267;-117.433;864 United States;California;Daggett;KDAG;34.85;-116.7867;587 United States;California;Dana Point;K9L0;33.450;-117.683;15 United States;California;Davis Point Aviation Weather Reporting Station ;K52Q;38.050;-122.267;18 United States;California;Edwards AFB;KEDW;34.9167;-117.9;705 United States;California;Edwards, Edwards Air Force Auxiliary North Base;K9L2;34.983;-117.850;701 United States;California;El Capitan Beach;KL98;33.450;-120.033;27 United States;California;El Centro;KNJK;32.8167;-115.6606;:13 United States;California;El Monte;KEMT;34.0833;-118.0333;0 United States;California;Eureka NEXRAD;KBHX;40.500;-124.300;767 United States;California;Eureka;KEKA;40.800;-124.167;13 United States;California;Fairfield;KSUU;38.2667;-121.95;22 United States;California;Farallon Island;K50Q;37.700;-123.000;12 United States;California;Fort Bragg;KO64;39.400;-123.817;19 United States;California;Fort Irwin/Barstow, Bicycle Lake Army Airfield;KBYS;35.283;-116.617;716 United States;California;Fresno-Chandler;KFCH;36.733;-119.817;85 United States;California;Fresno;KFAT;36.7667;-119.7194;104 United States;California;Fullerton;KFUL;33.8667;-117.9847;35 United States;California;Golden Gate Bridge;KGGB;37.817;-122.467;81 United States;California;Hamilton U. S. Army Airfield;KSRF;38.067;-122.500;1 United States;California;Hanford, Hanford Municipal Airport;KHJO;36.319;-119.629;74 United States;California;Hanford, Hanford Municipal Airport;KO18;36.318;-119.629;75 United States;California;Hawthorne;KHHR;33.9167;-118.3319;18 United States;California;Hayward;KHWD;37.65;-122.1183;21 United States;California;Hermosa Beach Pier;K4L7;33.867;-118.400;8 United States;California;Huntington B. Oil;K2H1;33.567;-118.133;36 United States;California;Huntington Beach;K6L9;33.650;-118.000;35 United States;California;Imperial Beach;KNRS;32.55;-117.11;5 United States;California;Imperial;KIPL;32.8333;-115.5786;:15 United States;California;Inyokern;KIYK;35.6667;-117.8333;0 United States;California;LOS ANGELES USC CAMPUS;KCQT;34.033;-118.283;56 United States;California;La Verne;KPOC;34.1;-117.7833;0 United States;California;Lake Tahoe;KTVL;38.8833;-119.9953;1925 United States;California;Lancaster;KWJF;34.7333;-118.2189;0 United States;California;Lemoore;KNLC;36.3;-119.9381;72 United States;California;Livermore;KLVK;37.6833;-121.8144;117 United States;California;Lompoc;KLPC;34.6667;-120.4667;0 United States;California;Long Beach ;K5L8;33.767;-118.167;3 United States;California;Long Beach;KLGB;33.8;-118.1464;10 United States;California;Los Alamitos U. S. Army Airfield;KSLI;33.783;-118.050;11 United States;California;Los Angeles Nexrad;KVTX;34.417;-119.183;856 United States;California;Los Angeles, Whiteman Airport;KWHP;34.250;-118.400;306 United States;California;Los Angeles;KLAX;33.9333;-118.3889;46 United States;California;MADERA MUNICIPAL AIRPORT;KMAE;36.983;-120.117;77 United States;California;Malibu Beach;KL55;34.033;-118.683;139 United States;California;Mammoth Lakes;KMMH;37.6167;-118.8333;0 United States;California;Marina Del Rey;K2L6;33.967;-118.433;8 United States;California;Marysville-Beale AFB;KBAB;39.1333;-121.4333;0 United States;California;Marysville;KMYV;39.0833;-121.5697;21 United States;California;McClellan;KMCC;38.6667;-121.4;0 United States;California;Merced / Castle Air Force Base;KMER;37.367;-120.567;57 United States;California;Merced;KMCE;37.2667;-120.5078;47 United States;California;Mission Beach;KL58;32.767;-117.233;2 United States;California;Modesto;KMOD;37.6167;-120.9506;29 United States;California;Mojave;KMHV;35.0667;-118.15;0 United States;California;Montague;K1O5;41.733;-122.550;770 United States;California;Montague;KSIY;41.7667;-122.4681;0 United States;California;Monterey NEXRAD;KMUX;37.167;-121.900;1082 United States;California;Monterey;KMRY;36.5833;-121.8475;66 United States;California;Mount Shasta;KMHS;41.3;-122.3161;1078 United States;California;Mount Wilson;KMWS;34.2333;-118.0667;0 United States;California;Mountain View;KNUQ;37.4;-122.0481;19 United States;California;Napa;KAPC;38.2;-122.2794;13 United States;California;Needles;KEED;34.75;-114.6233;0 United States;California;Newhall;K3A6;34.367;-118.567;427 United States;California;Newport Beach;K3L3;33.600;-117.883;3 United States;California;Norton Air Force Base / San Bern;KSBD;34.100;-117.233;353 United States;California;OCEANSIDE;KOKB;33.217;-117.350;9 United States;California;OROVILLE MUNICIPAL AIRPORT;KOVE;39.500;-121.617;59 United States;California;Oakland;KOAK;37.7167;-122.2353;26 United States;California;Oceanside Harbor;KL34;33.217;-117.400;9 United States;California;Oceanside, Oceanside Municipal Airport;KOKH;33.219;-117.349;8 United States;California;Oceanside;KNFG;33.3;-117.3539;23 United States;California;Ontario;KONT;34.05;-117.5758;275 United States;California;Oxnard / Channel Island;KL79;34.167;-119.217;2 United States;California;Oxnard;KOXR;34.2;-119.2031;20 United States;California;Palm Springs, Jacqueline Cochran Regional Airport;KTRM;33.627;-116.159;-38 United States;California;Palm Springs;KPSP;33.8167;-116.5036;135 United States;California;Palmdale;KPMD;34.6167;-118.0814;780 United States;California;Palo Alto;KPAO;37.4667;-122.1167;0 United States;California;Paso Robles;KPRB;35.6667;-120.6269;245 United States;California;Pigeon Point Coast Guard Light Station;K93Q;37.183;-122.400;1 United States;California;Pillar Pt / El Granda;K53Q;37.500;-122.500;40 United States;California;Point Arena Coast Guard Light Station;K89Q;38.950;-123.733;18 United States;California;Point Blunt Coast Guard Light Station;K91Q;37.850;-122.417;73 United States;California;Point Bonita Coast Guard Light Station;K94Q;37.800;-122.517;1 United States;California;Point Cabrillo;KO72;39.350;-123.817;20 United States;California;Point Loma / Cabrillo;KL13;32.667;-117.483;111 United States;California;Point Mugu;KNTD;34.1167;-119.1217;2 United States;California;Point Piedras Blanca;K87Q;35.65;-121.2847;27 United States;California;Point Pinos Coast Guard Light Station;K95Q;36.633;-121.933;6 United States;California;Point Reyes Coast Guard Station;K97Q;38.000;-123.017;87 United States;California;Point Sur;KNNZ;36.300;-121.883;34 United States;California;Point Vincente;KL97;33.733;-118.400;5 United States;California;Port Chicago;K99Q;38.033;-122.033;12 United States;California;Porterville;KPTV;36.0333;-119.0667;0 United States;California;RAMONA AIRPORT;KRNM;33.033;-116.917;425 United States;California;Red Bluff;KRBL;40.15;-122.2522;104 United States;California;Redding;KRDD;40.5;-122.2967;155 United States;California;Rio Vista Coast Guard Light Station;K98Q;38.150;-121.700;1 United States;California;Riverside/March AFB;KRIV;33.9;-117.25;468 United States;California;Riverside;KRAL;33.95;-117.4506;252 United States;California;SAN CLEMENTE ISLAND NALF;KNUC;33.017;-118.583;55 United States;California;Sacramento Nexrad;KDAX;38.500;-121.683;44 United States;California;Sacramento, Sacramento Mather Airport;KMHR;38.550;-121.300;29 United States;California;Sacramento-Woodland;KSMF;38.7;-121.5939;6 United States;California;Sacramento;KSAC;38.5;-121.495;11 United States;California;Salinas;KSNS;36.65;-121.6081;30 United States;California;Samoa / Humboldt Bay;K88Q;40.767;-124.233;2 United States;California;San Carlos;KSQL;37.5167;-122.25;0 United States;California;San Clemente;KL10;33.417;-117.617;3 United States;California;San Diego-Brown;KSDM;32.5667;-116.9931;159 United States;California;San Diego-Miramar;KNKX;32.8667;-117.1425;146 United States;California;San Diego-Montgomery;KMYF;32.8;-117.1364;136 United States;California;San Diego-North Island;KNZY;32.6833;-117.2089;14 United States;California;San Diego-Santee;KSEE;32.8333;-116.9667;0 United States;California;San Diego;KSAN;32.7333;-117.1831;12 United States;California;San Francisco Pbs ;K51Q;37.750;-122.700;5 United States;California;San Francisco;KSFO;37.6167;-122.3647;26 United States;California;San Jose / Reid / Hillv;KRHV;37.333;-121.817;41 United States;California;San Jose-Santa Clara;KSJC;37.35;-121.9242;25 United States;California;San Luis Obispo;KSBP;35.2333;-120.6361;59 United States;California;San Nicholas Island;KNSI;33.2333;-119.4528;153 United States;California;Sandberg;KSDB;34.7333;-118.7244;1377 United States;California;Santa Ana;KSNA;33.6667;-117.8664;15 United States;California;Santa Barbara Harbor;KP44;34.400;-119.700;8 United States;California;Santa Barbara;KSBA;34.4167;-119.8436;3 United States;California;Santa Catalina Island;KL27;33.333;-118.333;3 United States;California;Santa Cruz Harbor;K85Q;36.967;-122.000;1 United States;California;Santa Cruz Island;KSZN;34.017;-119.750;10 United States;California;Santa Maria;KSMX;34.8833;-120.4486;74 United States;California;Santa Monica Pier;K1L2;34.000;-118.500;2 United States;California;Santa Monica;KSMO;34;-118.4514;57 United States;California;Santa Rosa;KSTS;38.5;-122.8167;39 United States;California;Santa Ynez, Santa Ynez Airport;KIZA;34.607;-120.076;205 United States;California;Scripps Pier / La Jol;KL21;32.867;-117.250;4 United States;California;Shelter Cove;KO87;40.0167;-124.0667;0 United States;California;Solana Beach;K2L7;32.983;-117.267;5 United States;California;St George Reef Coast Guard Light Station;K86Q;41.833;-124.400;45 United States;California;Stockton;KSCK;37.8833;-121.2236;10 United States;California;Superior Valley Gunnery Range;K4SU;36.333;-117.100;962 United States;California;Susanville Municipal;KSVE;40.383;-120.567;1263 United States;California;Tahoe Valley;KTVL;38.8833;-119.9953;1925 United States;California;Terminal Island;KL82;33.733;-118.267;10 United States;California;Torrance;KTOA;33.8;-118.3333;0 United States;California;Treasure Island;K3O6;37.800;-122.367;8 United States;California;Trinidad Head Coast Guard Light Station;K96Q;41.050;-124.150;58 United States;California;Truckee;KTRK;39.3167;-120.1333;0 United States;California;Twentynine Palms;KNXP;34.2833;-116.145;627 United States;California;Ukiah;KUKI;39.1167;-123.2008;0 United States;California;VACAVILLE NUT TREE AIRPORT;KVCB;38.383;-121.950;35 United States;California;Van Nuys;KVNY;34.2;-118.4908;245 United States;California;Vandenberg AFB;KVBG;34.75;-120.5667;121 United States;California;Vandenberg Range;KVBG;34.75;-120.5667;121 United States;California;Vandenberg Range;KXVW;34.717;-120.567;100 United States;California;Ventura Harbor;KP43;34.250;-119.250;7 United States;California;Victorville, Southern California Logistics Airport;KVCV;34.597;-117.383;879 United States;California;Visalia;KVIS;36.3167;-119.4;0 United States;California;WATSONVILLE MUNICIPAL AIRPORT ;KWVI;36.933;-121.783;49 United States;California;Weaverville;KO54;40.747;-122.922;716 United States;California;Zuma Beach;K0L3;34.017;-118.817;6 United States;Colorado;Air Force;KAFF;38.9667;-104.8167;1999 United States;Colorado;Akron;KAKO;40.1667;-103.2144;1421 United States;Colorado;Alamosa;KALS;37.4333;-105.8614;2299 United States;Colorado;Aspen;KASE;39.2167;-106.8694;2354 United States;Colorado;BURLINGTON CARSON COUNTY;KITR;39.250;-102.283;1285 United States;Colorado;Buena Vista;KAEJ;38.814;-106.121;2422 United States;Colorado;Colorado Springs;KCOS;38.8;-104.7108;1856 United States;Colorado;Copper Mountain, Red Cliff Pass;KCCU;39.467;-106.150;3680 United States;Colorado;Cortez;KCEZ;37.3;-108.6256;1797 United States;Colorado;Cottonwood Pass;K7BM;38.782;-106.218;2995 United States;Colorado;Craig;KCAG;40.4833;-107.5236;1887 United States;Colorado;Denver / Stapleton International, Co.;KDNR;39.783;-104.867;1626 United States;Colorado;Denver Nexrad;KFTG;39.783;-104.550;1709 United States;Colorado;Denver-Aurora;KAPA;39.55;-104.8483;1775 United States;Colorado;Denver-Broomfield;KBKF;39.7;-104.7581;0 United States;Colorado;Denver-Cherry Knolls;KBJC;39.9167;-105.1167;0 United States;Colorado;Denver;KDEN;39.8167;-104.6575;1640 United States;Colorado;Durango Aviation Weather Reporting Station;K4V5;37.283;-107.867;2012 United States;Colorado;Durango;KDRO;37.1333;-107.7597;2035 United States;Colorado;Eagle;KEGE;39.65;-106.9167;0 United States;Colorado;Elbert Mountain, Monument Pass;KMNH;39.217;-104.634;2152 United States;Colorado;Fort Carson;KFCS;38.7;-104.7667;1789 United States;Colorado;Fort Collins Supplementary Aviation Weather Reporting Station ;KFCL;40.583;-105.083;1525 United States;Colorado;Fort Collins/Lovel;KFNL;40.45;-105.0167;0 United States;Colorado;Grand Junction;KGJT;39.1333;-108.5386;1452 United States;Colorado;Greeley;KGXY;40.4333;-104.6333;0 United States;Colorado;Gunnison Aviation Weather Reporting Station ;K2V9;38.600;-106.917;2380 United States;Colorado;Gunnison;KGUC;38.5333;-106.9333;0 United States;Colorado;Hayden;KHDN;40.4833;-107.2167;0 United States;Colorado;Kremmling, Mc Elroy Airfield;K20V;40.054;-106.369;2259 United States;Colorado;LAMAR MUNICIPAL AIRPORT;KLAA;38.067;-102.683;1129 United States;Colorado;La Junta;KLHX;38.0333;-103.5122;1277 United States;Colorado;La Veta Mountain, La Veta Pass;KVTP;37.501;-105.167;3114 United States;Colorado;Leadville;KLXV;39.2167;-106.3161;3028 United States;Colorado;Limon;KLIC;39.2667;-103.6667;1630 United States;Colorado;MEEKER AIRPORT;KEEO;40.050;-107.883;1957 United States;Colorado;Montrose;KMTJ;38.5;-107.8975;1750 United States;Colorado;Mount Werner;K3MW;40.459;-106.760;3241 United States;Colorado;Nederland Mountain, Corona Pass;KCRV;40.050;-105.584;3538 United States;Colorado;Pagosa Springs, Wolf Creek Pass;KCPW;37.451;-106.800;3584 United States;Colorado;Peterson Air Force Base;KPEF;38.817;-104.733;1876 United States;Colorado;Pueblo NEXRAD;KPUX;38.467;-104.183;1620 United States;Colorado;Pueblo;KPUB;38.2833;-104.4983;1420 United States;Colorado;RIFLE GARFIELD COUNTY RGNL;KRIL;39.517;-107.733;1690 United States;Colorado;Rifle Aviation Weather Reporting Station ;K1V1;39.533;-107.800;1622 United States;Colorado;SPRINGFIELD COMANCHE NATL;KSPD;37.283;-102.617;1335 United States;Colorado;Saguache, Saguache Municipal Airport;K04V;38.097;-106.169;2385 United States;Colorado;Salida Mountain, Monarch Pass;KMYP;38.484;-106.317;3667 United States;Colorado;Salida;KS29;38.517;-106.017;2186 United States;Colorado;Steamboat Springs;KSBS;40.517;-106.867;2096 United States;Colorado;Sunlight;K5SM;39.426;-107.379;3232 United States;Colorado;Telluride, Telluride Regional Airport;KTEX;37.954;-107.909;2767 United States;Colorado;Trinidad;KTAD;37.2667;-104.4333;0 United States;Colorado;Wilkerson Pass;K4BM;39.050;-105.514;3438 United States;Colorado;Winter Park Resort ;KC96;39.883;-105.767;2771 United States;Connecticut;Bridgeport;KBDR;41.15;-73.1289;7 United States;Connecticut;Chester, Chester Airport;K3B9;41.384;-72.506;127 United States;Connecticut;Chester, Chester Airport;KSNC;41.384;-72.506;127 United States;Connecticut;Danbury;KDXR;41.3667;-73.4844;139 United States;Connecticut;Faulkner Island Coast Guard Light Station;K30N;41.217;-72.667;15 United States;Connecticut;Groton;KGON;41.3167;-72.0494;3 United States;Connecticut;Hartford;KHFD;41.7333;-72.6517;4 United States;Connecticut;Little Gulf Island Light Station;K32N;41.200;-72.100;6 United States;Connecticut;MERIDEN MARKHAM MUNICIPAL AIRPORT ;KMMK;41.517;-72.833;31 United States;Connecticut;New Haven Coast Guard Station;KN11;41.267;-72.900;3 United States;Connecticut;New Haven;KHVN;41.25;-72.8872;3 United States;Connecticut;New London Ledge Coast Guard Station;K18N;41.300;-72.083;8 United States;Connecticut;Oxford;KOXC;41.4833;-73.1333;0 United States;Connecticut;WILLIMANTIC WINDHAM AIRPORT;KIJD;41.750;-72.183;75 United States;Connecticut;Windsor Locks;KBDL;41.9333;-72.6825;60 United States;Delaware;Dover;KDOV;39.1333;-75.4667;0 United States;Delaware;GEORGETOWN SUSSEX CO AIRPORT ;KGED;38.683;-75.367;16 United States;Delaware;Indian River Coast Guard Station;K61N;38.617;-75.067;1 United States;Delaware;Wilmington;KILG;39.6667;-75.6008;28 United States;District of Columbia;Washington/Dulles;KIAD;38.9333;-77.4475;93 United States;District of Columbia;Washington;KDCA;38.8333;-77.0342;18 United States;Florida;APALACHICOLA MUNICIPAL AIRPORT;KAAF;29.733;-85.017;6 United States;Florida;Apalachicola;KAQQ;29.7167;-85.0247;5 United States;Florida;Astor, Bombing Range Detachment Astor;KNAE;29.143;-81.633;28 United States;Florida;Atoka, Atoka Municipal Airport;KAQR;34.398;-96.148;180 United States;Florida;Avon Park Gunnery Range;KAGR;27.650;-81.333;20 United States;Florida;Bartow;KBOW;27.95;-81.7833;0 United States;Florida;Boca Raton, Boca Raton Airport;KBCT;26.379;-80.108;4 United States;Florida;Brooksville;KBKV;28.4667;-82.4544;20 United States;Florida;CHOCTAW, WHITING FIELD, NOLF;KNFJ;30.500;-86.950;34 United States;Florida;Cape San Blas Coast Guard Station;K1J4;29.683;-85.367;2 United States;Florida;Cecil, Naval Air Station;KNZC;30.212;-81.870;24 United States;Florida;Clewiston;KX53;26.750;-80.950;6 United States;Florida;Cocoa Beach, Cape Canaveral Air Force Station Skid Strip;KXMR;28.467;-80.567;3 United States;Florida;Cocoa Beach;KCOF;28.2333;-80.6;3 United States;Florida;Crestview;KCEW;30.7667;-86.52;55 United States;Florida;Cross City;KCTY;29.55;-83.1053;12 United States;Florida;Daytona Beach;KDAB;29.1667;-81.06;9 United States;Florida;Destin;KDTS;30.3833;-86.4675;5 United States;Florida;Duke Field / Eglin Auxiliary;KEGI;30.650;-86.517;59 United States;Florida;Egmont Key Coast Guard Station;KX91;27.600;-82.767;1 United States;Florida;FORT PIERCE ST LUCIE;KFPR;27.500;-80.383;8 United States;Florida;Fort Lauderdale (International);KFLL;26.0667;-80.1525;30 United States;Florida;Fort Lauderdale;KFXE;26.2;-80.1833;6 United States;Florida;Fort Myers (Page Field);KFMY;26.5833;-81.8625;4 United States;Florida;Fort Myers (Southwest Florida International);KRSW;26.5167;-81.7664;9 United States;Florida;Fort Pierce Coast Guard Station;KX82;27.467;-80.300;1 United States;Florida;Fowey Rocks Coast Guard Station;KX86;25.583;-80.100;1 United States;Florida;Ft. Myers Beach Coast Guard Station;KX89;26.450;-81.950;1 United States;Florida;Gainesville;KGNV;29.6833;-82.2756;45 United States;Florida;HOLLYWOOD NORTH PERRY AIRPORT ;KHWO;26.000;-80.233;3 United States;Florida;Homestead AFB;KHST;25.4833;-80.3833;0 United States;Florida;Hurlburt;KHRT;30.4167;-86.6833;11 United States;Florida;Islamorada Coast Guard Station;KX84;24.950;-80.583;1 United States;Florida;Jacksonville NAS;KNIP;30.2333;-81.6747;8 United States;Florida;Jacksonville, Cecil Field Airport;KVQQ;30.219;-81.877;25 United States;Florida;Jacksonville-Craig Airport;KCRG;30.3333;-81.5147;13 United States;Florida;Jacksonville;KJAX;30.4833;-81.6933;7 United States;Florida;Jupiter Inlet Coast Guard Station;KX80;27.033;-80.117;1 United States;Florida;Key West NAS;KNQX;24.5667;-81.6839;6 United States;Florida;Key West;KEYW;24.55;-81.7536;5 United States;Florida;Lake Worth Inlet;KX81;26.767;-80.050;1 United States;Florida;Lakeland;KLAL;27.9833;-82.0167;0 United States;Florida;Leesburg;KLEE;28.8167;-81.8097;23 United States;Florida;MILTON WHITING FIELD (SOUTH);KNDZ;30.700;-87.017;54 United States;Florida;Marathon Coast Guard Station;KX88;24.717;-81.117;1 United States;Florida;Marathon;KMTH;24.7167;-81.0478;2 United States;Florida;Marianna;KMAI;30.8333;-85.1836;32 United States;Florida;Mayport;KNRB;30.3833;-81.4225;4 United States;Florida;Melbourne;KMLB;28.1;-80.6458;10 United States;Florida;Merritt Island, Merritt Island Airport;KCOI;28.341;-80.685;2 United States;Florida;Miami Beach Coast Guard Station;KX87;25.767;-80.133;1 United States;Florida;Miami Nexrad;KAMX;25.617;-80.417;34 United States;Florida;Miami-Kendall;KTMB;25.6333;-80.4347;2 United States;Florida;Miami-Opa Locka;KOPF;25.9;-80.2831;16 United States;Florida;Miami;KMIA;25.7833;-80.3164;8 United States;Florida;Milton;KNSE;30.7333;-87.0167;60 United States;Florida;Naples;KAPF;26.15;-81.7667;0 United States;Florida;Nasa Shuttle;KTTS;28.6167;-80.7167;0 United States;Florida;New Port Richey, Tampa Bay Executive Airport;KRRF;28.189;-82.626;12 United States;Florida;New Smyrna Beach, New Smyrna Beach Municipal Airport;KEVB;29.056;-80.948;3 United States;Florida;Northwest Florida Beaches International Airport;KECP;30.354;-85.799;27 United States;Florida;Ocala;KOCF;29.1667;-82.2167;0 United States;Florida;Okeechobee County Airport;KOBE;27.267;-80.851;10 United States;Florida;Orlando (Orlando International);KMCO;28.4167;-81.325;29 United States;Florida;Orlando, Kissimmee Municipal Airport;KISM;28.290;-81.437;25 United States;Florida;Orlando;KORL;28.5333;-81.3358;37 United States;Florida;Ormond Beach, Ormond Beach Municipal Airport;KOMN;29.301;-81.114;9 United States;Florida;Panama City;KPFN;30.2;-85.685;12 United States;Florida;Pensacola NAS;KNPA;30.35;-87.3233;10 United States;Florida;Pensacola;KPNS;30.4667;-87.1869;38 United States;Florida;Perry-Foley;K40J;30.0667;-83.5736;13 United States;Florida;Plant City, Plant City Municipal Airport;KPCM;28.000;-82.150;47 United States;Florida;Pompano Beach;KPMP;26.2333;-80.1114;6 United States;Florida;Ponce De Leon Inlet;K1J3;29.067;-80.917;3 United States;Florida;Punta Gorda;KPGD;26.9167;-81.9936;7 United States;Florida;Sanford;KSFB;28.7833;-81.25;0 United States;Florida;Santa Rosa Coast Guard Station;K1J5;30.317;-87.250;2 United States;Florida;Sarasota;KSRQ;27.4;-82.5586;18 United States;Florida;St Petersburg / Clearwater;KPIE;27.9;-82.6856;4 United States;Florida;St Petersburg;KSPG;27.7667;-82.6261;2 United States;Florida;St. Augustine, St. Augustine Airport;KSGJ;29.959;-81.340;3 United States;Florida;Stuart, Witham Field Airport;KSUA;27.182;-80.221;6 United States;Florida;Tallahassee;KTLH;30.3833;-84.3533;16 United States;Florida;Tampa Bay Area;KTBW;27.700;-82.400;12 United States;Florida;Tampa, Peter O Knight Airport;KTPF;27.916;-82.449;2 United States;Florida;Tampa, Vandenberg Airport;KVDF;28.014;-82.345;7 United States;Florida;Tampa-Macdill AFB;KMCF;27.85;-82.5;4 United States;Florida;Tampa;KTPA;27.95;-82.5403;11 United States;Florida;The Villages;KVLG;28.967;-81.967;27 United States;Florida;The Villages;KVVG;28.967;-81.967;27 United States;Florida;Titusville, Arthur Dunn Air Park;KX21;28.622;-80.836;9 United States;Florida;Titusville, NASA Shuttle Landing Facility;KX68;28.617;-80.700;3 United States;Florida;Titusville;KTIX;28.5167;-80.8;0 United States;Florida;Tyndall AFB;KPAM;30.0667;-85.5833;13 United States;Florida;Valparaiso;KVPS;30.4833;-86.5167;29 United States;Florida;Venice Long Range Navigation;KX90;27.083;-82.450;1 United States;Florida;Vero Beach;KVRB;27.65;-80.4181;10 United States;Florida;West Palm Beach;KPBI;26.6833;-80.0994;6 United States;Florida;Winter Haven;KGIF;28.05;-81.7575;43 United States;Georgia;AUGUSTA DANIEL FIELD;KDNL;33.467;-82.033;129 United States;Georgia;Albany;KABY;31.5333;-84.1944;58 United States;Georgia;Alma;KAMG;31.5333;-82.5067;59 United States;Georgia;Athens;KAHN;33.95;-83.3281;244 United States;Georgia;Atlanta;KATL;33.6167;-84.4422;296 United States;Georgia;Augusta;KAGS;33.35;-81.9633;44 United States;Georgia;Bainbridge, Decatur County Industrial Air Park Airport;KBGE;30.967;-84.633;43 United States;Georgia;Blakely, Early County Airport;K11J;31.397;-84.895;65 United States;Georgia;Brunswick / Glynco;KBQK;31.250;-81.467;8 United States;Georgia;Brunswick;KSSI;31.15;-81.3914;6 United States;Georgia;CARTERSVILLE AIRPORT;KVPC;34.133;-84.850;233 United States;Georgia;Canton, Cherokee County Airport;K47A;34.311;-84.424;372 United States;Georgia;Columbus-Fort Benning;KLSF;32.3333;-84.8333;130 United States;Georgia;Columbus;KCSG;32.5;-84.9422;135 United States;Georgia;Dalton, Dalton Municipal Airport;KDNN;34.722;-84.869;216 United States;Georgia;Dekalb/Peachtree;KPDK;33.8667;-84.2981;302 United States;Georgia;Douglas, Douglas Municipal Airport;KDQH;31.477;-82.860;78 United States;Georgia;Dublin, W H 'Bud' Barron Airport;KDBN;32.564;-82.985;94 United States;Georgia;Eastman, Heart of Georgia Regional Airport;KEZM;32.214;-83.128;93 United States;Georgia;Elberton, Elbert County Airport-Patz Field;K27A;34.095;-82.816;184 United States;Georgia;Fort Benning;KLSF;32.3333;-84.8333;130 United States;Georgia;Fort Stewart;KLHW;31.8833;-81.5667;14 United States;Georgia;GILMER MEMORIAL AIRPORT;KGVL;34.267;-83.833;389 United States;Georgia;Greensboro, Greene County Regional Airport;K3J7;33.598;-83.139;206 United States;Georgia;Hinesville;KLHW;31.8833;-81.5667;14 United States;Georgia;Jesup-Wayne County Airport;KJES;31.554;-81.882;33 United States;Georgia;Kings Bay, Naval Station;KNBQ;30.794;-81.557;8 United States;Georgia;La Grange, Callaway Airport;KLGC;33.009;-85.072;211 United States;Georgia;Lawrenceville, Gwinnett County-Briscoe Field Airport;KLZU;33.978;-83.963;323 United States;Georgia;Macon;KMCN;32.6833;-83.6544;109 United States;Georgia;Marietta, Cobb County-McCollum Field Airport;KRYY;34.013;-84.599;317 United States;Georgia;Marietta;KMGE;33.9167;-84.5167;326 United States;Georgia;Milledgeville, Baldwin County Airport;KMLJ;33.154;-83.241;117 United States;Georgia;Moultrie, Moultrie Municipal Airport;KMGR;31.085;-83.803;90 United States;Georgia;Newnan, Newnan Coweta County Airport;KCCO;33.312;-84.770;296 United States;Georgia;PEACHTREE CITY-FALCON FIELD;KFFC;33.367;-84.567;246 United States;Georgia;Plains / Peterson Field;K7A9;32.083;-84.367;160 United States;Georgia;Rome-Russell;KRMG;34.3333;-85.1611;193 United States;Georgia;Saint Simon Island Coast Guard Station;K1J1;31.133;-81.367;1 United States;Georgia;Savannah-Hunter AAF;KSVN;32.0167;-81.15;0 United States;Georgia;Savannah;KSAV;32.1167;-81.2022;14 United States;Georgia;St Simon's Island;KSSI;31.15;-81.3914;6 United States;Georgia;Statesboro, Statesboro-Bulloch County Airport;KTBR;32.483;-81.737;57 United States;Georgia;Sylvania, Plantation Airpark;KJYL;32.645;-81.596;57 United States;Georgia;Thomaston, Thomaston-Upson County Airport;KOPN;32.955;-84.264;243 United States;Georgia;Thomasville;KTVI;30.902;-83.881;80 United States;Georgia;Thomson, Thomson-McDuffie County Airport;KHQU;33.529;-82.516;152 United States;Georgia;Tybee Coast Guard Station;K1J2;32.017;-80.850;2 United States;Georgia;Valdosta-Moody AFB;KVAD;30.9667;-83.2;71 United States;Georgia;Valdosta;KVLD;30.7833;-83.2833;0 United States;Georgia;Vidalia, Vidalia Municipal Airport;KVDI;32.192;-82.372;84 United States;Georgia;Warner Robins;KWRB;32.6333;-83.6;0 United States;Georgia;Washington, Washington-Wilkes County Airport;KIIY;33.780;-82.816;197 United States;Georgia;Waycross;KAYS;31.25;-82.4;46 United States;Georgia;West Atlanta;KFTY;33.7667;-84.5244;263 United States;Georgia;Winder, Winder-Barrow Airport;KWDR;33.982;-83.668;287 United States;Hawaii;Barbers Point;PHNA;21.3;-158.0681;15 United States;Hawaii;Barking Sand;PHBK;22.0333;-159.7864;3 United States;Hawaii;Bradshaw Field;PHSF;19.7833;-155.55;0 United States;Hawaii;Hilo;PHTO;19.7167;-155.0558;12 United States;Hawaii;Honolulu;PHNL;21.3167;-157.9431;4 United States;Hawaii;Kahului;PHOG;20.8833;-156.4369;12 United States;Hawaii;Kailua-Kona;PHKO;19.7333;-156.0506;27 United States;Hawaii;Kaneohe;PHNG;21.45;-157.7656;1 United States;Hawaii;Kaunakakai, Molokai Airport;KMKK;21.158;-157.099;138 United States;Hawaii;Lahaina;PHJH;21.0167;-156.6333;0 United States;Hawaii;Lanai;PHNY;20.7833;-156.95;0 United States;Hawaii;Lihue;PHLI;21.9833;-159.3411;31 United States;Hawaii;Molokai;PHMK;21.15;-157.1;134 United States;Hawaii;Oahu;PHHI;21.4833;-158.0333;256 United States;Idaho;Boise;KBOI;43.5667;-116.2406;875 United States;Idaho;Burley;KBYI;42.5333;-113.7714;1264 United States;Idaho;Caldwell, Caldwell Industrial Airport;KEUL;43.633;-116.633;741 United States;Idaho;Challis, Challis Airport;KLLJ;44.523;-114.215;1546 United States;Idaho;Challis, Challis Airport;KU15;44.523;-114.215;1534 United States;Idaho;Coeur d'Alene;KCOE;47.7667;-116.8167;0 United States;Idaho;Driggs, Driggs-Reed Memorial Airport;KU59;43.742;-111.098;1898 United States;Idaho;Elk City;KP69;46.1333;-115.5964;480 United States;Idaho;Grangeville ;KS80;45.950;-116.133;1009 United States;Idaho;Hailey-Sun Valley;KSUN;43.5;-114.3;0 United States;Idaho;Idaho Falls;KIDA;43.5167;-112.0661;1453 United States;Idaho;JEROME COUNTY AIRPORT;KJER;42.733;-114.450;1234 United States;Idaho;Jerome, Jerome County Airport;KU73;42.727;-114.453;1233 United States;Idaho;Lewiston;KLWS;46.3667;-117.0144;438 United States;Idaho;MULLAN PASS VOR;KMLP;47.450;-115.667;1851 United States;Idaho;Malad City;KMLD;42.1667;-112.3;0 United States;Idaho;Malta;K77M;42.3167;-113.3333;0 United States;Idaho;McCall;KMYL;44.8833;-116.0994;1533 United States;Idaho;Mountain Home;KMUO;43.05;-115.8667;0 United States;Idaho;Mullan;KS06;47.4667;-115.8;1011 United States;Idaho;Nampa;KMAN;43.581;-116.523;773 United States;Idaho;Pocatello;KPIH;42.9167;-112.5711;1359 United States;Idaho;REXBURG-MADISON COUNTY AIRPORT ;KRXE;43.833;-111.800;1481 United States;Idaho;Salmon (2);K27U;45.1833;-113.9;1210 United States;Idaho;Salmon;KSMN;45.1167;-113.8833;0 United States;Idaho;Sandpoint, Sandpoint Airport;KSZT;48.299;-116.560;648 United States;Idaho;Soda Springs;KU78;42.65;-111.5833;0 United States;Idaho;Spencer;KS14;44.350;-112.183;1793 United States;Idaho;Stanley, Stanley Airport;K2U7;44.208;-114.934;1952 United States;Idaho;Stanley, Stanley Ranger Station;KSNT;44.209;-114.934;1980 United States;Idaho;Strevell;K4SV;42.017;-113.250;1612 United States;Idaho;Twin Falls;KTWF;42.4667;-114.4761;1266 United States;Illinois;Alton;KALN;38.9;-90.05;0 United States;Illinois;Aurora;KARR;41.7667;-88.4814;215 United States;Illinois;Belleville;KBLV;38.55;-89.85;0 United States;Illinois;Bloomington;KBMI;40.4833;-88.9167;0 United States;Illinois;Bradford / Rinkenberg;KBDF;41.233;-89.617;247 United States;Illinois;CHICAGO EXECUTIVE AIRPORT;KPWK;42.117;-87.900;197 United States;Illinois;CHICAGO/WAUKEGAN REGIONAL;KUGN;42.417;-87.867;222 United States;Illinois;Cairo, Cairo Regional Airport;KCIR;37.064;-89.219;98 United States;Illinois;Carbondale;KMDH;37.7667;-89.245;130 United States;Illinois;Carmi, Carmi Municipal Airport;KCUL;38.089;-88.123;118 United States;Illinois;Centralia, Centralia Municipal Airport;KENL;38.515;-89.092;163 United States;Illinois;Champaign;KCMI;40.0167;-88.2733;228 United States;Illinois;Chicago / Calumet Coast Guard Station;K63G;41.717;-87.533;180 United States;Illinois;Chicago Weather Service Forecast Office;KCHI;42.000;-87.883;181 United States;Illinois;Chicago, Lansing Municipal Airport;KIGQ;41.540;-87.532;188 United States;Illinois;Chicago-DuPage;KDPA;41.8833;-88.2511;230 United States;Illinois;Chicago-Lakefront;KCGX;41.8667;-87.6;0 United States;Illinois;Chicago-Midway;KMDW;41.7833;-87.7553;188 United States;Illinois;Chicago-O'Hare;KORD;41.9667;-87.9044;200 United States;Illinois;Chicago/Romeoville, Lewis University Airport;KLOT;41.608;-88.094;205 United States;Illinois;Danville;KDNV;40.1833;-87.5956;0 United States;Illinois;De Kalb, De Kalb Taylor Municipal Airport;KDKB;41.932;-88.708;279 United States;Illinois;Decatur;KDEC;39.8333;-88.8656;207 United States;Illinois;Dixon / Walgreen Field;KC73;41.833;-89.450;240 United States;Illinois;East St Louis;KCPS;38.5667;-90.1561;126 United States;Illinois;Effingham, Effingham County Memorial Airport;K1H2;39.071;-88.533;179 United States;Illinois;Fairfield, Fairfield Municipal Airport;KFWC;38.379;-88.413;133 United States;Illinois;Flora, Flora Municipal Airport;KFOA;38.665;-88.453;144 United States;Illinois;Freeport, Albertus Airport;KFEP;42.246;-89.582;262 United States;Illinois;Galesburg;KGBG;40.9333;-90.4311;0 United States;Illinois;Harrisburg, Harrisburg-Raleigh Airport;KHSB;37.811;-88.549;121 United States;Illinois;Jacksonville, Jacksonville Municipal Airport;KIJX;39.774;-90.239;190 United States;Illinois;Joliet, Joliet Regional Airport;KJOT;41.518;-88.175;177 United States;Illinois;Kankakee, Greater Kankakee Airport;KIKK;41.071;-87.846;192 United States;Illinois;LAWRENCEVILLE-VINCENNES INTERNATIONAL ;KLWV;38.767;-87.600;131 United States;Illinois;Lacon, Marshall County Airport;KC75;41.019;-89.386;173 United States;Illinois;Lincoln, Logan County Airport;K3LC;40.159;-89.335;182 United States;Illinois;Lincoln, Logan County Airport;KAAA;40.159;-89.335;182 United States;Illinois;Litchfield, Litchfield Municipal Airport;K3LF;39.162;-89.674;210 United States;Illinois;Macomb, Macomb Municipal Airport;KMQB;40.520;-90.653;216 United States;Illinois;Marion;KMWA;37.75;-89.0011;0 United States;Illinois;Marseilles Island;KMMO;41.367;-88.683;223 United States;Illinois;Mattoon;KMTO;39.4667;-88.2792;214 United States;Illinois;Metropolis, Metropolis Municipal Airport;KM30;37.186;-88.751;117 United States;Illinois;Moline-Quad Cities;KMLI;41.45;-90.5147;184 United States;Illinois;Morris, Morris Municipal-James R Washburn Field Airport;KC09;41.425;-88.419;178 United States;Illinois;Mount Carmel, Mount Carmel Municipal Airport;KAJG;38.606;-87.727;131 United States;Illinois;Mount Sterling, Mount Sterling Municipal Airport;KI63;39.988;-90.804;223 United States;Illinois;Mount Vernon;KMVN;38.3167;-88.8667;0 United States;Illinois;Olney-Noble, Olney-Noble Airport;KOLY;38.722;-88.176;147 United States;Illinois;Paris, Edgar County Airport;KPRG;39.700;-87.670;199 United States;Illinois;Peoria;KPIA;40.6667;-89.6839;205 United States;Illinois;Peru, Illinois Valley Regional-Walter A Duncan Field Airport;KVYS;41.352;-89.153;199 United States;Illinois;Pittsfield, Pittsfield Penstone Municipal Airport;KPPQ;39.639;-90.778;216 United States;Illinois;Pontiac, Pontiac Municipal Airport;KPNT;40.924;-88.625;201 United States;Illinois;Quincy;KUIN;39.9333;-91.1944;0 United States;Illinois;Rantoul, Frank Elliott Field Airport;K215;40.284;-88.134;225 United States;Illinois;Rantoul, Rantoul National Aviation Center Airport-Frank Elliott Field;KTIP;40.294;-88.143;225 United States;Illinois;Rantoul, Rantoul Natl Aviation Cntr-Frank Elliott Fld Airp.;K2I5;40.294;-88.143;225 United States;Illinois;Robinson, Robinson Municipal Airport;KRSV;39.016;-87.650;141 United States;Illinois;Rochelle, Rochelle Municipal-Koritz Field Airport;K12C;41.893;-89.078;238 United States;Illinois;Rochelle, Rochelle Municipal-Koritz Field Airport;KRPJ;41.893;-89.078;238 United States;Illinois;Rockford;KRFD;42.1833;-89.0933;221 United States;Illinois;Salem;KSLO;38.6333;-88.9642;174 United States;Illinois;Savanna, Tri-Township Airport;KSFY;42.046;-90.108;188 United States;Illinois;Sparta, Sparta Community-Hunter Field Airport;KSAR;38.149;-89.699;164 United States;Illinois;Springfield;KSPI;39.8333;-89.6839;181 United States;Illinois;Sterling Rockfalls;KSQI;41.750;-89.667;197 United States;Illinois;Taylorville, Taylorville Municipal Airport;KTAZ;39.534;-89.328;190 United States;Illinois;Wilmette Marines;K62G;42.067;-87.683;183 United States;Indiana;Anderson Municipal;KAID;40.117;-85.617;280 United States;Indiana;Bloomington;KBMG;39.1333;-86.6167;257 United States;Indiana;Columbus / Bakalar ;KBAK;39.267;-85.900;200 United States;Indiana;Elkhart;KEKM;41.7167;-86;0 United States;Indiana;Evansville;KEVV;38.0333;-87.5203;117 United States;Indiana;Fort Wayne;KFWA;40.9667;-85.1953;248 United States;Indiana;GOSHEN MUNICIPAL AIRPORT;KGSH;41.533;-85.783;252 United States;Indiana;Gary;KGYY;41.6167;-87.4167;0 United States;Indiana;Huntingburg;KHNB;38.250;-86.950;161 United States;Indiana;INDIANAPOLIS EAGLE CREEK;KEYE;39.833;-86.300;251 United States;Indiana;Indianapolis;KIND;39.7167;-86.2819;242 United States;Indiana;Kokomo, Kokomo Municipal Airport;KOKK;40.533;-86.067;253 United States;Indiana;Lafayette;KLAF;40.4;-86.9475;182 United States;Indiana;Michigan City Coast Guard Station;K18C;41.717;-86.917;177 United States;Indiana;Muncie;KMIE;40.2333;-85.3936;285 United States;Indiana;Peru;KGUS;40.65;-86.15;0 United States;Indiana;SHELBYVILLE MUNICIPAL AIRPORT ;KGEZ;39.583;-85.800;245 United States;Indiana;South Bend;KSBN;41.7;-86.3186;237 United States;Indiana;Terre Haute;KHUF;39.4333;-87.3253;179 United States;Indiana;VALPARAISO PORTER CO MUNI;KVPZ;41.450;-87.000;235 United States;Indiana;Warsaw, Warsaw Municipal Airport;KASW;41.274;-85.840;259 United States;Iowa;Algona;KAXA;43.0833;-94.2667;0 United States;Iowa;Ames;KAMW;41.9833;-93.6189;279 United States;Iowa;Ankeny, Ankeny Regional Airport;KIKV;41.690;-93.566;275 United States;Iowa;Atlantic;KAIO;41.4;-95.05;0 United States;Iowa;Audubon, Audubon County Airport;KADU;41.701;-94.920;392 United States;Iowa;Boone;KBNW;42.05;-93.85;0 United States;Iowa;Burlington;KBRL;40.7667;-91.1253;211 United States;Iowa;Carroll;KCIN;42.05;-94.7833;0 United States;Iowa;Cedar Rapids;KCID;41.8667;-91.7239;264 United States;Iowa;Chariton;KCNC;41.0333;-93.3667;0 United States;Iowa;Charles City;KCCY;43.0667;-92.6167;0 United States;Iowa;Cherokee, Cherokee Municipal Airport;KCKP;42.732;-95.556;374 United States;Iowa;Clarinda;KICL;40.7167;-95.0333;0 United States;Iowa;Clarion;KCAV;42.75;-93.7667;0 United States;Iowa;Clinton;KCWI;41.8333;-90.3333;0 United States;Iowa;Council Bluffs;KCBF;41.2667;-95.7667;0 United States;Iowa;Creston;KCSQ;41.0167;-94.3667;0 United States;Iowa;Davenport;KDVN;41.6;-90.5914;228 United States;Iowa;Decorah;KDEH;43.2833;-91.7333;0 United States;Iowa;Denison;KDNS;41.9833;-95.3833;0 United States;Iowa;Des Moines Nexrad;KDMX;41.733;-93.717;322 United States;Iowa;Des Moines;KDSM;41.5333;-93.6661;295 United States;Iowa;Dubuque;KDBQ;42.3833;-90.7036;326 United States;Iowa;Estherville;KEST;43.4;-94.7472;401 United States;Iowa;Fairfield;KFFL;41.05;-91.9833;0 United States;Iowa;Fort Dodge;KFOD;42.55;-94.1833;355 United States;Iowa;Fort Madison;KFSW;40.6667;-91.3333;0 United States;Iowa;Harlan, Harlan Municipal Airport;KHNR;41.584;-95.340;375 United States;Iowa;Independence, Independence Municipal Airport;KIIB;42.450;-91.933;298 United States;Iowa;Iowa City;KIOW;41.6167;-91.5431;198 United States;Iowa;Keokuk;KEOK;40.4667;-91.4333;0 United States;Iowa;Knoxville;KOXV;41.3;-93.1167;0 United States;Iowa;LAMONI MUNICIPAL AIRPORT;KLWD;40.633;-93.900;345 United States;Iowa;Lamoni;K3OI;40.617;-93.950;342 United States;Iowa;Le Marine;KLRJ;42.7667;-96.1936;0 United States;Iowa;Marshalltown;KMIW;42.1;-92.9161;296 United States;Iowa;Mason City;KMCW;43.15;-93.3314;369 United States;Iowa;Monticello;KMXO;42.2333;-91.1667;0 United States;Iowa;Mount Pleasant, Mount Pleasant Municipal Airport;KMPZ;40.947;-91.511;224 United States;Iowa;Muscatine;KMUT;41.3667;-91.15;0 United States;Iowa;Newton;KTNU;41.6833;-93.0167;0 United States;Iowa;Oelwen;KOLZ;42.6667;-91.9744;0 United States;Iowa;Orange City;KORC;42.9833;-96.0667;0 United States;Iowa;Oskaloosa, Oskaloosa Municipal Airport;KOOA;41.226;-92.494;256 United States;Iowa;Ottumwa;KOTM;41.1;-92.4481;256 United States;Iowa;Pella, Pella Municipal Airport;KPEA;41.400;-92.933;270 United States;Iowa;Red Oak;KRDK;41.0167;-95.2667;0 United States;Iowa;Sheldon;KSHL;43.2167;-95.8333;0 United States;Iowa;Shenandoah;KSDA;40.75;-95.4167;0 United States;Iowa;Sioux City;KSUX;42.4;-96.3844;338 United States;Iowa;Spencer;K3SE;43.167;-95.150;404 United States;Iowa;Spencer;KSPW;43.15;-95.2028;403 United States;Iowa;Storm Lake;KSLB;42.6;-95.2333;0 United States;Iowa;Vinton, Vinton Veterans Memorial Airpark Airport;KVTI;42.219;-92.026;258 United States;Iowa;Washington;KAWG;41.2833;-91.6667;0 United States;Iowa;Waterloo;KALO;42.55;-92.4011;264 United States;Iowa;Webster City;KEBS;42.4333;-93.8667;0 United States;Kansas;Burlington, Coffey County Airport;KUKL;38.302;-95.725;358 United States;Kansas;COFFEYVILLE MUNICIPAL AIRPORT ;KCFV;37.083;-95.567;230 United States;Kansas;Chanute;KCNU;37.6667;-95.4842;297 United States;Kansas;Concordia;KCNK;39.55;-97.6506;447 United States;Kansas;Dodge City;KDDC;37.7667;-99.9697;789 United States;Kansas;Elkhart / Elkhart-Morton County Airport;K1K5;37.000;-101.883;1102 United States;Kansas;Elkhart, Elkhart-Morton County Airport;KEHA;37.000;-101.883;1104 United States;Kansas;Emporia;KEMP;38.3167;-96.1939;367 United States;Kansas;Fort Leavenworth;KFLV;39.367;-94.917;235 United States;Kansas;Fort Riley;KFRI;39.1;-96.7667;320 United States;Kansas;Garden City;KGCK;37.9167;-100.7244;877 United States;Kansas;Goodland;KGLD;39.3667;-101.6931;1114 United States;Kansas;Great Bend, Great Bend Municipal Airport;KGBD;38.350;-98.867;575 United States;Kansas;Hays;KHYS;38.85;-99.2667;0 United States;Kansas;Hill City;KHLC;39.3667;-99.8297;669 United States;Kansas;Hutchinson;KHUT;38.0667;-97.8606;467 United States;Kansas;LAWRENCE MUNICIPAL AIRPORT;KLWC;39.017;-95.217;254 United States;Kansas;Liberal;KLBL;37.05;-100.9667;0 United States;Kansas;Manhattan;KMHK;39.1333;-96.6778;317 United States;Kansas;Medicine Lodge;KP28;37.2833;-98.5528;469 United States;Kansas;Newton, Newton City/County Airport;KEWK;38.050;-97.283;467 United States;Kansas;Olathe/Ind.;KIXD;38.8167;-94.8869;342 United States;Kansas;Olathe;KOJC;38.85;-94.7392;326 United States;Kansas;PARSONS TRI-CITY AIRPORT;KPPF;37.333;-95.500;274 United States;Kansas;Pratt Municipal;KPTT;37.700;-98.750;595 United States;Kansas;Rands Airport;KS32;47.423;-98.106;434 United States;Kansas;Russell;KRSL;38.8667;-98.8131;567 United States;Kansas;STROTHER FIELD;KWLD;37.167;-97.033;354 United States;Kansas;Salina;KSLN;38.7667;-97.6442;385 United States;Kansas;Topeka NEXRAD;KTWX;39.000;-96.233;431 United States;Kansas;Topeka-Forbes Field;KFOE;38.9333;-95.6506;320 United States;Kansas;Topeka;KTOP;39.0667;-95.6258;268 United States;Kansas;WICHITA JABARA AIRPORT;KAAO;37.750;-97.217;433 United States;Kansas;Wichita-Jabara;K3KM;37.7333;-97.2189;434 United States;Kansas;Wichita-McConnell AFB;KIAB;37.6167;-97.2667;0 United States;Kansas;Wichita;KICT;37.6333;-97.4294;408 United States;Kentucky;Bowling Green;KBWG;37.95;-86.4239;161 United States;Kentucky;BOWMAN FIELD;KLOU;38.233;-85.667;167 United States;Kentucky;Covington;KCVG;39.0333;-84.6717;269 United States;Kentucky;Fort Campbell;KHOP;36.6667;-87.5;174 United States;Kentucky;Fort Knox;KFTK;37.9;-85.9667;230 United States;Kentucky;Frankfort;KFFT;38.1833;-84.9033;236 United States;Kentucky;Glasgow, Glasgow Municipal Airport;KGLW;37.032;-85.954;218 United States;Kentucky;Henderson;KEHR;37.8167;-87.6833;0 United States;Kentucky;Jackson;KJKL;37.5833;-83.3144;412 United States;Kentucky;Lexington / Creech;KLSD;38.033;-84.617;299 United States;Kentucky;Lexington;KLEX;38.0333;-84.6058;300 United States;Kentucky;London;KLOZ;37.0833;-84.0686;362 United States;Kentucky;Louisville Nexrad;KLVX;37.983;-85.933;254 United States;Kentucky;Louisville-Standiford Field;KSDF;38.1667;-85.7297;146 United States;Kentucky;Middlesboro, Middlesboro-Bell County Airport;K1A6;36.611;-83.737;352 United States;Kentucky;Monticello, Wayne County Airport;KEKQ;36.855;-84.856;294 United States;Kentucky;Owensboro;KOWB;37.7333;-87.1667;0 United States;Kentucky;Paducah;KPAH;37.05;-88.7739;118 United States;Kentucky;Pikeville Remote Automatic Meteorological Observing System ;K5I3;37.483;-82.517;446 United States;Kentucky;Somerset;KSME;37.05;-84.615;0 United States;Louisiana;Alexandria-Esler;KESF;31.3833;-92.2903;28 United States;Louisiana;Alexandria;KAEX;31.3333;-92.5586;27 United States;Louisiana;Amelia;K7R3;29.7;-91.1;0 United States;Louisiana;Atlantis;KATP;27.196;-90.027;0 United States;Louisiana;Audubon Park;KAUD;29.933;-90.133;2 United States;Louisiana;Barksdale;KBAD;32.5;-93.6667;0 United States;Louisiana;Bastrop, Morehouse Memorial Airport;K2F8;32.756;-91.881;51 United States;Louisiana;Baton Rouge;KBTR;30.5333;-91.1469;21 United States;Louisiana;Bogalusa, George R Carr Memorial Air Field;KBXA;30.814;-89.865;36 United States;Louisiana;Bogalusa;KGVB;30.882;-89.862;0 United States;Louisiana;Boothville Heliport;K1B7;29.350;-89.433;1 United States;Louisiana;Boothville;KBVE;29.333;-89.400;0 United States;Louisiana;Butte La Rose;KBCG;30.117;-91.550;10 United States;Louisiana;Calcasieu Coast Guard Station;K8R6;29.783;-93.350;1 United States;Louisiana;Cameron;K7R5;29.7833;-93.3;0 United States;Louisiana;Chenault Airpark;KCWF;30.217;-93.150;4 United States;Louisiana;Claiborne Range, Airways Facilities Sector ;K01R;31.133;-92.567;67 United States;Louisiana;De Ridder, Beauregard Parish Airport;KDRI;30.832;-93.340;63 United States;Louisiana;East Cameron 278;KEHC;28.429;-92.878;0 United States;Louisiana;East Cameron 345;KE12;28.083;-92.700;0 United States;Louisiana;East Cameron 47;KCMB;29.441;-92.979;0 United States;Louisiana;Eugene Island 330;K3B6;28.083;-92.700;0 United States;Louisiana;Eugene Island;K41I;28.467;-91.783;30 United States;Louisiana;Eugene Island;KEIR;28.635;-91.489;0 United States;Louisiana;Eugene Island;KVUW;28.250;-91.833;1 United States;Louisiana;Fort Polk-Leesville;KPOE;31.0333;-93.0333;110 United States;Louisiana;Fourchon;K9F2;29.1;-90.2;0 United States;Louisiana;Ft. Polk, Fullerton Landing Strip;KBKB;31.000;-93.617;94 United States;Louisiana;Ft. Polk, Peason Ridge;KAQV;31.667;-93.450;111 United States;Louisiana;Ft. Polk, Self Strip;KDNK;31.167;-93.000;114 United States;Louisiana;Galliano, Galliano Heliport;K2GL;29.413;-90.299;2 United States;Louisiana;Galliano, South Lafourche Airport;KGAO;29.445;-90.261;0 United States;Louisiana;Galliano, South Lafourche Airport;KL49;29.445;-90.261;0 United States;Louisiana;Grand Isle B95;KP26;28.500;-90.117;1 United States;Louisiana;Grand Isle Coast Guard Station;K8R5;29.267;-89.950;2 United States;Louisiana;Grand Isle;KAXO;29.25;-89.9667;0 United States;Louisiana;Green Canyon 184;KXCN;27.767;-91.517;0 United States;Louisiana;Green Canyon 338;KGRY;27.625;-90.441;0 United States;Louisiana;Grncyn Blk52 Supplementary Aviation Weather Reporting Station ;K28K;27.883;-91.500;1 United States;Louisiana;Hammond, Hammond Municipal Airport;KHDC;30.521;-90.418;13 United States;Louisiana;High Island 264C;KH08;28.467;-93.733;0 United States;Louisiana;High Island A489b;KL40;28.200;-94.200;0 United States;Louisiana;High Island A572c;KH39;27.950;-93.983;30 United States;Louisiana;High Island;K01T;28.133;-94.400;30 United States;Louisiana;Houma;KHUM;29.5667;-90.6667;0 United States;Louisiana;Independence;KIPN;28.085;-87.986;0 United States;Louisiana;Intracoastal;K7R4;29.7833;-92.1333;0 United States;Louisiana;Lafayette;KLFT;30.2;-91.9931;11 United States;Louisiana;Lake Charles;KLCH;30.1167;-93.2233;3 United States;Louisiana;Leeville;K7R2;29.217;-90.233;2 United States;Louisiana;Magnolia;KGBK;27.204;-92.203;0 United States;Louisiana;Main Pass B68;KP21;29.667;-88.883;1 United States;Louisiana;Matterhorn;KMMG;28.742;-88.826;0 United States;Louisiana;Mississippi Canyon;K1G7;28.783;-89.050;18 United States;Louisiana;Mississippi Canyon;KMDJ;28.642;-89.794;0 United States;Louisiana;Monroe;KMLU;32.5;-92.0314;29 United States;Louisiana;Natchitoches, Natchitoches Regional Airport;KIER;31.736;-93.099;37 United States;Louisiana;New Iberia;KARA;30.0167;-91.8844;18 United States;Louisiana;New Orleans NAS;KNBG;29.8333;-90.0244;0 United States;Louisiana;New Orleans-Lakefront;KNEW;30.0333;-90.0289;3 United States;Louisiana;New Orleans;KMSY;29.9833;-90.2508;5 United States;Louisiana;Oakdale, Allen Parish Airport;KACP;30.751;-92.689;33 United States;Louisiana;Oakdale, Allen Parish Airport;KL42;30.751;-92.689;33 United States;Louisiana;Patterson;KPTN;29.7167;-91.3333;0 United States;Louisiana;Ruston, Ruston Regional Airport;KRSN;32.514;-92.588;95 United States;Louisiana;SLIDELL AIRPORT;KASD;30.350;-89.817;9 United States;Louisiana;Sabine 13B;KVBS;29.478;-93.638;0 United States;Louisiana;Salsa;KGHB;27.840;-91.988;0 United States;Louisiana;Salt point;KP92;29.55;-91.5256;0 United States;Louisiana;Ship Shoal 198g;KS65;28.500;-91.200;2 United States;Louisiana;Ship Shoal 207A;KGSM;28.533;-90.983;1 United States;Louisiana;Ship Shoal B224a;KS02;28.500;-91.300;32 United States;Louisiana;Ship Shoal Platform;K19R;28.683;-91.217;18 United States;Louisiana;Ship Shoal;KSPR;28.599;-91.206;0 United States;Louisiana;Shreveport Downtown;KDTN;32.5333;-93.7447;53 United States;Louisiana;Shreveport Regional;KSHV;32.4333;-93.8242;80 United States;Louisiana;Slidell Radar Site;KSIL;30.250;-89.767;3 United States;Louisiana;Slidell;KLIX;30.333;-89.817;8 United States;Louisiana;South Marsh 268;KSCF;29.116;-91.871;0 United States;Louisiana;South Marsh 268A;KSRN;29.117;-91.867;0 United States;Louisiana;South Marsh Island;K7R8;28.3;-91.9833;0 United States;Louisiana;South Timbalier;KS58;28.5333;-90.5833;0 United States;Louisiana;Southwest Pass Coast Guard Station;K8R3;28.917;-89.433;1 United States;Louisiana;Tenneco Platform;KP00;28.000;-93.000;15 United States;Louisiana;Venice Heliport;K3V8;29.117;-89.200;80 United States;Louisiana;Venice;K7R1;29.25;-89.3633;1 United States;Louisiana;Vermilion B131;KP22;29.067;-92.183;1 United States;Louisiana;Vermilion B215;KP25;28.700;-92.317;1 United States;Louisiana;Vermillion 26;KVNP;29.467;-92.369;0 United States;Louisiana;Vermillion Area;KVRX;28.583;-92.450;1 United States;Louisiana;Vicksburg;KTVR;32.3333;-91.03;26 United States;Louisiana;West Cameron 560;KW60;28.150;-93.350;0 United States;Louisiana;West Cameron 560A;K7B5;28.283;-93.183;0 United States;Louisiana;West Cameron B522;KW76;28.383;-93.500;29 United States;Louisiana;West Cameron;KP30;28.333;-93.017;24 United States;Maine;AUGUSTA STATE AIRPORT;KAUG;44.317;-69.800;107 United States;Maine;Bangor;KBGR;44.7833;-68.8186;57 United States;Maine;Bar Harbor;KBHB;44.45;-68.3667;0 United States;Maine;Bear Island Coast Guard Station;K9B5;44.283;-68.267;12 United States;Maine;Brunswick;KNHZ;43.9;-69.935;23 United States;Maine;Cape Neddick Coast Guard Light Station;K27B;43.167;-70.600;12 United States;Maine;Caribou;KCAR;46.8667;-68.0133;191 United States;Maine;Clayton Lake;K40B;46.6167;-69.5333;0 United States;Maine;Eastport;KEPO;44.917;-67.000;24 United States;Maine;Egg Rock Light Station;K8B9;44.350;-68.133;12 United States;Maine;Frenchville;KFVE;47.2833;-68.3072;301 United States;Maine;Fryeburg;KIZG;43.9833;-70.9503;135 United States;Maine;Goat Island Remote Automatic Meteorological Observing System ;K0B9;43.333;-70.400;12 United States;Maine;Great Duck Island Coast Guard Light Station;K14B;44.150;-68.250;1 United States;Maine;Greenville, Greenville Municipal Airport;K3B1;45.463;-69.552;427 United States;Maine;Greenville;KGNR;45.467;-69.583;427 United States;Maine;Halfway Rock Coast Guard Light Station;K15B;43.650;-70.033;1 United States;Maine;Heron Neck Coast Guard Light Station;K16B;44.033;-68.867;1 United States;Maine;Houlton;KHUL;46.1167;-67.7919;150 United States;Maine;Lewiston;KLEW;44.05;-70.2833;0 United States;Maine;Loring Air Force Base / Limeston;KLIZ;46.950;-67.883;227 United States;Maine;Millinocket;KMLT;45.6333;-68.6919;123 United States;Maine;Monhegan / Manana Island;K18B;43.767;-69.333;1 United States;Maine;Old Town / Dewitt Field;KOLD;44.950;-68.667;39 United States;Maine;Owl's Head Light Station;K96B;44.083;-69.033;15 United States;Maine;Portland Head Coast Guard Light Station;K2B8;43.617;-70.200;23 United States;Maine;Portland;KPWM;43.6333;-70.3044;15 United States;Maine;Presque Isle;KPQI;46.6833;-68.05;146 United States;Maine;Rockland Coast Guard Station;K20B;44.100;-69.100;1 United States;Maine;Rockland;KRKD;44.0667;-69.1;0 United States;Maine;Rumford;KRUM;44.533;-70.533;192 United States;Maine;Sanford;KSFM;43.4;-70.7167;0 United States;Maine;Seguin Island Coast Guard Light Station;K23B;43.667;-69.767;1 United States;Maine;Southwest Harbor;KH32;44.267;-68.317;5 United States;Maine;Waterville;KWVL;44.5333;-69.6833;0 United States;Maine;West Jonesport Coast Guard Station;K20J;44.533;-67.617;5 United States;Maine;West Quoddy Head Coast Guard Light Station;K24B;44.800;-66.950;1 United States;Maine;Wiscasset;KIWI;43.95;-69.7117;20 United States;Maine;Wood Island Light Station;K94B;43.450;-70.317;9 United States;Maryland;ANNAPOLIS US NAVAL ACADEMY;KNAK;38.983;-76.483;2 United States;Maryland;Aberdeen;KAPG;39.4667;-76.1667;0 United States;Maryland;Andrews AFB;KADW;38.8167;-76.85;88 United States;Maryland;Annapolis Coast Guard Station;K61W;38.917;-76.467;8 United States;Maryland;BALTIMORE DOWNTOWN;KDMH;39.283;-76.617;6 United States;Maryland;Baltimore / DC Nexrad;KLWX;38.983;-77.483;113 United States;Maryland;Baltimore-Glen Burnie;KBWI;39.1667;-76.6833;59 United States;Maryland;Baltimore;KMTN;39.3333;-76.4167;0 United States;Maryland;Cove Point Coast Guard Light Station;K66W;38.383;-76.383;1 United States;Maryland;Cumberland, Greater Cumberland Regional Airport;KCBE;39.615;-78.761;236 United States;Maryland;Easton / Newman Field;KESN;38.800;-76.067;22 United States;Maryland;Fort Meade / Tipton;KFME;39.083;-76.767;46 United States;Maryland;Fort Ritchie;KJWX;39.733;-77.433;275 United States;Maryland;Frederick, Frederick Municipal Airport;KFDK;39.417;-77.374;92 United States;Maryland;Hagerstown;KHGR;39.7;-77.73;224 United States;Maryland;KNUI WEBSTER FIELD ANNEX;KNUI;38.150;-76.417;6 United States;Maryland;OCEAN CITY MUNICIPAL AIRPORT ;KOXB;38.317;-75.117;4 United States;Maryland;Ocean City, Ocean City Municipal Airport;KN80;38.308;-75.124;3 United States;Maryland;Ocean City;KW30;38.333;-75.083;4 United States;Maryland;Patuxent River;KNHK;38.2667;-76.4139;6 United States;Maryland;Salisbury;KSBY;38.3333;-75.5103;19 United States;Maryland;Stillpond Coast Guard Station;K67W;39.333;-76.100;8 United States;Maryland;Thomas Point Coast Guard Station;K65W;38.900;-76.433;1 United States;Massachusetts;Bedford;KBED;42.4667;-71.2944;50 United States;Massachusetts;Beverly;KBVY;42.5833;-70.9164;28 United States;Massachusetts;Boston / Hull Coast Guard Light Station;K29B;42.317;-70.883;0 United States;Massachusetts;Boston Nexrad;KBOX;41.950;-71.133;71 United States;Massachusetts;Boston;KBOS;42.35;-71.0106;54 United States;Massachusetts;Brant Point Coast Guard Station;K45B;41.283;-70.083;8 United States;Massachusetts;Buzzards Bay Coast Guard Light Station;K33B;41.383;-71.033;1 United States;Massachusetts;Chatham Coast Guard Station;K31B;41.667;-69.950;1 United States;Massachusetts;Chatham;KCHH;41.667;-69.967;14 United States;Massachusetts;Chatham;KCQX;41.6833;-69.9933;19 United States;Massachusetts;Chicopee Falls;KCEF;42.2;-72.5333;75 United States;Massachusetts;Falmouth-Otis AFB;KFMH;41.65;-70.5167;0 United States;Massachusetts;Fitchburg;KFIT;42.55;-71.7558;103 United States;Massachusetts;Fort Devens / Ayer;KAYE;42.567;-71.600;82 United States;Massachusetts;Gloucester Coast Guard Station;K34B;42.583;-70.667;1 United States;Massachusetts;Hyannis;KHYA;41.6667;-70.2697;22 United States;Massachusetts;Lawrence;KLWM;42.7;-71.1258;54 United States;Massachusetts;MILTON BLUE HILL OBSERV;KMQE;42.217;-71.117;192 United States;Massachusetts;Marshfield Airport;K3B2;42.100;-70.683;3 United States;Massachusetts;Marthas Vineyard;KMVY;41.3833;-70.6167;16 United States;Massachusetts;Merrimac River Coast Guard Station;K35B;42.817;-70.867;1 United States;Massachusetts;N ADAMS HARRIMAN-AND-WEST;KAQW;42.700;-73.167;199 United States;Massachusetts;Nantucket;KACK;41.25;-70.0597;16 United States;Massachusetts;New Bedford;KEWB;41.6667;-70.9569;23 United States;Massachusetts;Norwood;KOWD;42.1833;-71.1739;19 United States;Massachusetts;Orange;KORE;42.5667;-72.2775;164 United States;Massachusetts;PITTSFIELD MUNICIPAL AIRPORT ;KPSF;42.433;-73.283;364 United States;Massachusetts;Plymouth;KPYM;41.9;-70.7281;43 United States;Massachusetts;Provincetown;KPVC;42.0667;-70.2167;0 United States;Massachusetts;Race Point Coast Guard Station;K36B;42.050;-70.183;1 United States;Massachusetts;Sandwich Coast Guard Station;K30B;41.783;-70.500;1 United States;Massachusetts;Scituate Coast Guard Station;K37B;42.200;-70.717;1 United States;Massachusetts;TAUNTON MUNICIPAL AIRPORT;KTAN;41.883;-71.017;13 United States;Massachusetts;Westfield;KBAF;42.15;-72.7128;83 United States;Massachusetts;Worcester;KORH;42.2667;-71.8731;304 United States;Michigan;ADRIAN LENAWEE COUNTY AIRPORT;KADG;41.867;-84.083;243 United States;Michigan;Alma, Gratiot Community Airport;KAMN;43.322;-84.688;229 United States;Michigan;Alpena;KAPN;45.0667;-83.5644;210 United States;Michigan;Ann Arbor;KARB;42.2167;-83.74;251 United States;Michigan;Bad Axe, Huron County Memorial Airport;KBAX;43.781;-82.986;233 United States;Michigan;Bath;K41G;42.850;-84.483;261 United States;Michigan;Battle Creek;KBTL;42.3;-85.2408;290 United States;Michigan;Beaver Island, Beaver Island Airport;KSJX;45.692;-85.566;204 United States;Michigan;Bellaire, Antrim County Airport;KACB;44.988;-85.198;190 United States;Michigan;Belle Isle Coast Guard Station;K31G;42.333;-82.967;177 United States;Michigan;Benton Harbor;KBEH;42.1167;-86.4283;191 United States;Michigan;Big Rapids, Roben-Hood Airport;KRQB;43.723;-85.504;302 United States;Michigan;Cadillac / Wexford County;KCAD;44.283;-85.417;398 United States;Michigan;Caro, Tuscola Area Airport;K78D;43.459;-83.445;214 United States;Michigan;Caro, Tuscola Area Airport;KCFS;43.459;-83.445;214 United States;Michigan;Charlevoix, Charlevoix Municipal Airport;KCVX;45.305;-85.275;204 United States;Michigan;Charlotte, Fitch H Beach Airport;K07G;42.574;-84.811;271 United States;Michigan;Charlotte, Fitch H Beach Airport;KFPK;42.574;-84.811;271 United States;Michigan;Cheboygan, Cheboygan County Airport;KSLH;45.654;-84.519;195 United States;Michigan;Cheboygan, Cheboygan County Airport;KY15;45.654;-84.519;195 United States;Michigan;Chippewa County;KCIU;46.25;-84.4667;0 United States;Michigan;Coldwater, Branch County Memorial Airport;KOEB;41.933;-85.052;292 United States;Michigan;Copper Harbor;KP59;47.4667;-87.875;190 United States;Michigan;Detroit NEXRAD;KDTX;42.700;-83.450;361 United States;Michigan;Detroit-Taylor;KDTW;42.2167;-83.3308;195 United States;Michigan;Detroit/Grosse Ile, Grosse Ile Airport;KONZ;42.099;-83.161;180 United States;Michigan;Detroit/Ypsilanti;KYIP;42.2333;-83.5261;215 United States;Michigan;Detroit;KDET;42.4;-83.01;190 United States;Michigan;Eagle Harbor Coast Guard Light Station;K31Y;47.467;-88.167;186 United States;Michigan;Escanaba;KESC;45.75;-87.0333;187 United States;Michigan;Flint;KFNT;42.9667;-83.7494;233 United States;Michigan;Frankfort Coast Guard Station;K14C;44.633;-86.250;174 United States;Michigan;Frankfort, Frankfort Dow Memorial Field Airport;K3D4;44.625;-86.201;193 United States;Michigan;Frankfort, Frankfort Dow Memorial Field Airport;KFKS;44.625;-86.201;193 United States;Michigan;GAYLORD REGIONAL AIRPORT;KGLR;45.017;-84.683;405 United States;Michigan;Grand Marais Coast Guard Station;K27Y;46.667;-85.983;183 United States;Michigan;Grand Rapids;KGRR;42.8667;-85.5228;239 United States;Michigan;Graying Air Force Range;K3RN;44.833;-84.550;387 United States;Michigan;Grayling, Grayling AAF Airport;K55D;44.680;-84.729;353 United States;Michigan;Grayling, Grayling Army Airfield;KGOV;44.680;-84.729;353 United States;Michigan;HOLLAND TULIP CITY AIRPORT;KBIV;42.750;-86.100;210 United States;Michigan;Hancock;KCMX;47.1667;-88.4889;326 United States;Michigan;Harbor Beach;KP58;44.0167;-82.7931;179 United States;Michigan;Harbor Springs, Harbor Springs Airport;KD87;45.426;-84.913;209 United States;Michigan;Harbor Springs, Harbor Springs Airport;KMGN;45.426;-84.913;209 United States;Michigan;Hillsdale, Hillsdale Municipal Airport;KJYM;41.921;-84.586;360 United States;Michigan;Holland / Tulip City;KC19;42.750;-86.100;210 United States;Michigan;Houghton Lake;KHTL;44.35;-84.6742;351 United States;Michigan;Howell, Livingston County Airport;KOZW;42.629;-83.984;293 United States;Michigan;Howell;K3HE;42.633;-83.983;293 United States;Michigan;Iron Mountain;KIMT;45.8;-88.1089;349 United States;Michigan;Ironwood;KIWD;46.5333;-90.1333;0 United States;Michigan;Jackson;KJXN;42.25;-84.4594;0 United States;Michigan;Kalamazoo;KAZO;42.2167;-85.5464;272 United States;Michigan;Lambertville, Toledo Suburban Airport;K5G9;41.736;-83.655;204 United States;Michigan;Lambertville, Toledo Suburban Airport;KDUH;41.736;-83.655;204 United States;Michigan;Lansing;KLAN;42.7667;-84.5789;264 United States;Michigan;Ludington Coast Guard Station;K17C;43.950;-86.467;182 United States;Michigan;Ludington, Mason County Airport;KLDM;43.967;-86.400;197 United States;Michigan;MUNISING LAKESHORE;KP53;46.417;-86.650;187 United States;Michigan;Macinac Island, Mackinac Island Airport;KMCD;45.865;-84.637;226 United States;Michigan;Manistee;KMBL;44.2667;-86.25;0 United States;Michigan;Manistique, Schoolcraft County Airport;KISQ;45.975;-86.172;209 United States;Michigan;Marquette Coast Guard Light Station;K34Y;46.550;-87.383;203 United States;Michigan;Marquette;KMQT;46.5333;-87.55;434 United States;Michigan;Marshall, Brooks Field Airport;KRMY;42.251;-84.956;287 United States;Michigan;Mason, Mason Jewett Field Airport;KTEW;42.566;-84.423;280 United States;Michigan;Menominee;KMNM;45.1333;-87.6333;0 United States;Michigan;Monroe, Custer Airport;KTTF;41.940;-83.435;188 United States;Michigan;Mount Clemens;KMTC;42.6167;-82.8333;0 United States;Michigan;Mount Pleasant, Mount Pleasant Municipal Airport;KMOP;43.617;-84.733;230 United States;Michigan;Muskegon Coast Guard Station;K19C;43.233;-86.333;182 United States;Michigan;Muskegon;KMKG;43.1667;-86.2367;191 United States;Michigan;Newberry, Luce County Airport;KERY;46.311;-85.457;265 United States;Michigan;North Manitou Shoal;K28Y;45.017;-85.950;177 United States;Michigan;Oscoda;KOSC;44.45;-83.3667;0 United States;Michigan;Owosso, Owosso Community Airport;K5D3;42.993;-84.139;224 United States;Michigan;Owosso, Owosso Community Airport;KRNP;42.993;-84.139;224 United States;Michigan;Pellston;KPLN;45.5667;-84.7967;217 United States;Michigan;Point Betsie / Frankfort;K36Y;44.617;-86.200;183 United States;Michigan;Pontiac;KPTK;42.65;-83.41;300 United States;Michigan;Port Huron Coast Guard Station;K33G;43.000;-82.417;177 United States;Michigan;Portage Coast Guard Station;K32Y;47.233;-88.633;190 United States;Michigan;Rogers City, Presque Isle County Airport;KPZQ;45.407;-83.813;204 United States;Michigan;SAULT STE. MARIE MUNI;KANJ;46.483;-84.350;218 United States;Michigan;Saginaw River Coast Guard Station;K30G;43.633;-83.850;177 United States;Michigan;Saginaw, Saginaw County H.W. Browne Airport;KHYX;43.433;-83.862;183 United States;Michigan;Saginaw;KMBS;43.5333;-84.0806;202 United States;Michigan;Saint Ignace;K38Y;45.850;-84.717;176 United States;Michigan;Saint Joseph Coast Guard Station;K20C;42.117;-86.483;176 United States;Michigan;Sault Ste. Marie Coast Guard Station;K44Y;46.500;-84.333;176 United States;Michigan;Sawyer AFB;KSAW;46.35;-87.3958;0 United States;Michigan;Seul Choix Pt;KP75;45.95;-86.2297;178 United States;Michigan;South Haven, South Haven Area Regional Airport;K0D1;42.351;-86.256;203 United States;Michigan;South Haven, South Haven Area Regional Airport;KLWA;42.351;-86.256;203 United States;Michigan;St. Clair County International;KPHN;42.917;-82.533;198 United States;Michigan;Sturgis, Kirsch Municipal Airport;KIRS;41.813;-85.439;282 United States;Michigan;Tawas Point Coast Guard Station;K39Y;44.250;-83.433;178 United States;Michigan;Thunder Bay Island;K40Y;45.067;-83.550;178 United States;Michigan;Traverse City;KTVC;44.7333;-85.57;190 United States;Michigan;Troy, Oakland/Troy Airport;K7D2;42.543;-83.178;222 United States;Michigan;Troy, Oakland/Troy Airport;KVLL;42.543;-83.178;222 United States;Michigan;Ypsilanti;KYIP;42.2333;-83.5261;215 United States;Minnesota;Alexandria;KAXN;45.8667;-95.3942;433 United States;Minnesota;Bemidji;KBJI;47.5;-94.9333;420 United States;Minnesota;Brainerd;KBRD;46.4;-94.1308;372 United States;Minnesota;Detroit Lakes;KDTL;46.8333;-95.8833;0 United States;Minnesota;Duluth;KDLH;46.8333;-92.2261;435 United States;Minnesota;Ely;KELO;47.8167;-91.8333;0 United States;Minnesota;Fairmont;KFRM;43.65;-94.4167;0 United States;Minnesota;Fergus Falls;KFFM;46.2833;-96.15;0 United States;Minnesota;Grand Marais;KP61;47.7333;-90.3444;185 United States;Minnesota;Grand Rapids;KGPZ;47.2167;-93.5167;0 United States;Minnesota;Hibbing;KHIB;47.3833;-92.8389;412 United States;Minnesota;International Falls;KINL;48.55;-93.3978;360 United States;Minnesota;Mankato;KMKT;44.2167;-93.9167;0 United States;Minnesota;Marshall;KMML;44.45;-95.8167;0 United States;Minnesota;Minneapolis [2];KFCM;44.8167;-93.4703;280 United States;Minnesota;Minneapolis [3];KMIC;45.05;-93.3508;265 United States;Minnesota;Minneapolis;KMSP;44.8667;-93.2289;265 United States;Minnesota;Redwood Falls;KRWF;44.5333;-95.0822;311 United States;Minnesota;Rochester;KRST;43.9;-92.4917;403 United States;Minnesota;St Cloud;KSTC;45.5333;-94.0519;314 United States;Minnesota;St Paul;KSTP;44.9167;-93.0481;219 United States;Minnesota;Thief River Falls;KTVF;48.0667;-96.1833;0 United States;Minnesota;Worthington;KOTG;43.65;-95.5833;0 United States;Mississippi;Columbus-W Point-Starkville;KCBM;33.65;-88.45;0 United States;Mississippi;Columbus;KGTR;33.45;-88.5833;0 United States;Mississippi;Greenville;KGLH;33.4667;-90.9856;45 United States;Mississippi;Greenwood;KGWO;33.4833;-90.0836;44 United States;Mississippi;Gulfport;KGPT;30.4;-89.0808;14 United States;Mississippi;Jackson;KJAN;32.3167;-90.0775;89 United States;Mississippi;Laurel;KPIB;31.4667;-89.3333;0 United States;Mississippi;McComb;KMCB;31.1667;-90.4719;124 United States;Mississippi;Meridian-Lauderdale;KNMM;32.5333;-88.5431;86 United States;Mississippi;Meridian;KMEI;32.3333;-88.7478;89 United States;Mississippi;Natchez;KHEZ;31.6167;-91.3;0 United States;Mississippi;Tupelo;KTUP;34.2667;-88.77;105 United States;Mississippi;Vicksburg;KTVR;32.3333;-91.03;26 United States;Missouri;CHILLICOTHE AGRI-SCIENCE CTR;KCDJ;39.817;-93.583;234 United States;Missouri;Cape Girardeau;KCGI;37.2167;-89.5783;102 United States;Missouri;Columbia;KCOU;38.8167;-92.2183;271 United States;Missouri;Farmington Airport;KFAM;37.767;-90.433;288 United States;Missouri;Fort Leonard;KTBN;37.7333;-92.1333;0 United States;Missouri;Jefferson City;KJEF;38.5833;-92.1558;168 United States;Missouri;Joplin;KJLN;37.15;-94.5006;299 United States;Missouri;Kaiser Lake Ozark, Lee C Fine Memorial Airport;KAIZ;38.100;-92.550;265 United States;Missouri;Kansas City, Richards-Gebaur Airport;KGVW;38.835;-94.561;332 United States;Missouri;Kansas City-Gladstone;KMCI;39.2833;-94.7306;320 United States;Missouri;Kansas City;KMKC;39.1167;-94.5969;227 United States;Missouri;Kirksville;KIRK;40.0833;-92.5433;293 United States;Missouri;LEE'S SUMMIT MUNICIPAL;KLXT;38.967;-94.367;306 United States;Missouri;POPLAR BLUFF MUN AIRPORT;KPOF;36.767;-90.317;101 United States;Missouri;Pleasant NEXRAD;KEAX;38.817;-94.267;335 United States;Missouri;SEDALIA MEMORIAL AIRPORT;KDMO;38.717;-93.167;277 United States;Missouri;ST. CHARLES CO SMARTT AIRPORT ;KSET;38.933;-90.433;133 United States;Missouri;Sedalia;KSZL;38.7333;-93.55;0 United States;Missouri;Spickard;KP35;40.250;-93.717;271 United States;Missouri;Springfield;KSGF;37.2333;-93.3897;389 United States;Missouri;St Joseph;KSTJ;39.7667;-94.9092;247 United States;Missouri;St Louis-Spirit;KSUS;38.65;-90.6558;141 United States;Missouri;St Louis;KSTL;38.75;-90.3736;171 United States;Missouri;Vichy-Rolla;KVIH;38.1167;-91.7653;333 United States;Missouri;WEST PLAINS MUNICIPAL AIRPORT ;KUNO;36.883;-91.900;374 United States;Montana;BAKER MUNICIPAL AIRPORT;KBHK;46.350;-104.250;906 United States;Montana;Billing Yell Nexrad;KBLX;45.854;-108.606;1116 United States;Montana;Billings;KBIL;45.8;-108.5422;1091 United States;Montana;Bozeman;KBZN;45.7833;-111.1608;1361 United States;Montana;Broadus ;K4BQ;45.433;-105.400;922 United States;Montana;Browning, Starr-Browning Airstrip;K8S0;48.601;-113.115;1419 United States;Montana;Butte;KBTM;45.95;-112.4975;1688 United States;Montana;Cut Bank;KCTB;48.6;-112.3761;0 United States;Montana;Dillon;KDLN;45.25;-112.5544;1591 United States;Montana;Drummond;K3DU;46.6667;-113.15;0 United States;Montana;GLACIER PARK INTERNATIONAL AIRPORT;KGPI;48.300;-114.267;906 United States;Montana;GREAT FALLS INTERNATIONAL;KGTF;47.467;-111.383;1120 United States;Montana;Glasgow;KGGW;48.2;-106.6214;693 United States;Montana;Glendive;KGDV;47.1333;-104.8;0 United States;Montana;Great Falls Nexrad;KTFX;47.467;-111.367;1151 United States;Montana;Great Falls;KGFA;47.5;-111.1833;0 United States;Montana;Hamilton / Ravalli County;KHMM;46.250;-114.150;1110 United States;Montana;Harlowton;K3HT;46.4333;-109.8333;0 United States;Montana;Havre;KHVR;48.5333;-109.7633;787 United States;Montana;Helena;KHLN;46.6;-111.9636;1187 United States;Montana;Jordan;KJDN;47.3167;-106.9475;801 United States;Montana;Kalispell;KFCA;48.3;-114.2636;908 United States;Montana;Leeds;KLDS;48.550;-109.683;775 United States;Montana;Lewistown;KLWT;47.0333;-109.4664;0 United States;Montana;Livingston;KLVM;45.6833;-110.4483;1418 United States;Montana;Miles City;KMLS;46.4167;-105.8864;801 United States;Montana;Missoula NEXRAD;KMSX;47.033;-113.983;2451 United States;Montana;Missoula;KMSO;46.9167;-114.0925;975 United States;Montana;Monida;KMQM;44.567;-112.317;2068 United States;Montana;Red Lodge;KRED;45.183;-109.267;1757 United States;Montana;Sidney;KSDY;47.7;-104.2;0 United States;Montana;Thompson Falls;K3TH;47.6;-115.3667;0 United States;Montana;West Yellowstone (2);KWEY;44.65;-111.1;0 United States;Montana;West Yellowstone;KWYS;44.6833;-111.1167;0 United States;Montana;Wolf Point;KOLF;48.0833;-105.5772;604 United States;Nebraska;Ainsworth;KANW;42.5833;-100;0 United States;Nebraska;Albion, Albion Municipal Airport;KBVN;41.728;-98.056;551 United States;Nebraska;Alliance;KAIA;42.05;-102.8;1196 United States;Nebraska;Aurora, Aurora Municipal Airport;KAUH;40.894;-97.994;550 United States;Nebraska;Beatrice;KBIE;40.3;-96.75;0 United States;Nebraska;Brewster Field Airport;KHDE;40.450;-99.333;704 United States;Nebraska;Broken Bow;KBBW;41.4333;-99.65;0 United States;Nebraska;Chadron;KCDR;42.8333;-103.0953;1010 United States;Nebraska;Columbus;KOLU;41.45;-97.3333;0 United States;Nebraska;Cozad Municipal;KCZD;40.867;-100.000;762 United States;Nebraska;Falls City;KFNB;40.0667;-95.5919;0 United States;Nebraska;Fremont Municipal Airport;KFET;41.450;-96.517;379 United States;Nebraska;Gordon Municipal;KGRN;42.800;-102.167;1085 United States;Nebraska;Grand Island Nexrad;KUEX;40.317;-98.433;626 United States;Nebraska;Grand Island;KGRI;40.95;-98.3125;561 United States;Nebraska;Hastings;KHSI;40.6;-98.4258;591 United States;Nebraska;Hebron, Hebron Municipal Airport;KHJH;40.152;-97.587;447 United States;Nebraska;Imperial;KIML;40.5167;-101.6167;0 United States;Nebraska;Kearney;KEAR;40.7333;-99;0 United States;Nebraska;Kimball, Kimball Municipal Airport/Robert E Arraj Field;KIBM;41.183;-103.667;1501 United States;Nebraska;Lexington, Jim Kelly Field Airport;KLXN;40.791;-99.777;736 United States;Nebraska;Lincoln;KLNK;40.8167;-96.7644;364 United States;Nebraska;McCook;KMCK;40.2;-100.5883;782 United States;Nebraska;Mullen / Hooker County;KMHN;42.050;-101.067;994 United States;Nebraska;Nebraska City, Nebraska City Municipal Airport;KAFK;40.600;-95.850;354 United States;Nebraska;Norfolk;KOFK;41.9667;-97.4369;470 United States;Nebraska;North Platte;KLBF;41.1167;-100.6683;847 United States;Nebraska;O'Neill;KONL;42.4667;-98.6833;0 United States;Nebraska;Ogallala, Searle Field Airport;KOGA;41.120;-101.769;999 United States;Nebraska;Omaha, Millard Airport;KMLE;41.196;-96.112;320 United States;Nebraska;Omaha-Bellevue;KOFF;41.1167;-95.9;315 United States;Nebraska;Omaha;KOMA;41.3;-95.8992;312 United States;Nebraska;Ord-Sharp;KODX;41.6167;-98.9525;0 United States;Nebraska;Plattsmouth, Plattsmouth Municipal Airport;KPMV;40.950;-95.918;366 United States;Nebraska;Scottsbluff;KBFF;41.8667;-103.5858;1203 United States;Nebraska;Sidney;KSNY;41.0833;-102.9856;1307 United States;Nebraska;TEKAMAH MUNICIPAL AIRPORT;KTQE;41.767;-96.183;313 United States;Nebraska;Thedford, Thomas County Airport;KTIF;41.962;-100.569;892 United States;Nebraska;Valentine;KVTN;42.85;-100.5514;788 United States;Nebraska;Valley;KOAX;41.317;-96.367;350 United States;Nebraska;Wayne, Wayne Municipal Airport;KLCG;42.242;-96.981;436 United States;Nebraska;York, York Municipal Airport;KJYR;40.897;-97.623;509 United States;Nevada;Austin;KU31;39.5;-117.0833;0 United States;Nevada;Battle Mountain;KB23;40.600;-116.867;1381 United States;Nevada;Caliente;KP38;37.6;-114.5264;1333 United States;Nevada;Carson City;KCXP;39.192;-119.733;1434 United States;Nevada;Desert Rock;KDRA;36.6167;-116.0278;1006 United States;Nevada;Elko Nexrad;KLRX;40.739;-116.803;2019 United States;Nevada;Elko;KEKO;40.8167;-115.7917;1547 United States;Nevada;Ely;KELY;39.2833;-114.8453;1906 United States;Nevada;Eureka;KP68;39.6;-116.0056;1809 United States;Nevada;Fallon;KNFL;39.4167;-118.6856;1199 United States;Nevada;Hawthorne Municipal;KHTH;38.550;-118.633;1285 United States;Nevada;Indian Springs, Indian Springs Auxiliary AFLD Nellis AFB;KINS;36.583;-115.667;955 United States;Nevada;Las Vegas Nexrad;KESX;35.717;-114.900;1509 United States;Nevada;Las Vegas, Henderson Executive Airport;KHND;35.973;-115.134;760 United States;Nevada;Las Vegas, Tonopah Range #74 Nellis AFB;KBJN;-37.617;-116.264;1756 United States;Nevada;Las Vegas;KLAS;36.0667;-115.1553;636 United States;Nevada;Lovelock;KLOL;40.05;-118.5653;1189 United States;Nevada;N Las Vegas;KLSV;36.2333;-115.0333;0 United States;Nevada;NORTH LAS VEGAS;KVGT;36.200;-115.183;671 United States;Nevada;Owyhee;KOWY;41.950;-116.100;1645 United States;Nevada;Reno NEXRAD;KRGX;39.750;-119.467;2560 United States;Nevada;Reno;KRNO;39.4833;-119.7711;1342 United States;Nevada;Tonopah Test Range;KTNX;37.800;-116.783;1691 United States;Nevada;Tonopah;KTPH;38.05;-117.0872;1652 United States;Nevada;Wells;K9BB;41.117;-114.967;1722 United States;Nevada;Wildhorse Reservation / Elko;KAWH;41.667;-115.783;1902 United States;Nevada;Winnemucca;KWMC;40.9;-117.8072;1310 United States;New Hampshire;Berlin;KBML;44.5667;-71.1786;345 United States;New Hampshire;Concord;KCON;43.1833;-71.5011;103 United States;New Hampshire;Isle Of Shoals Coast Guard Station;K26B;42.967;-70.617;1 United States;New Hampshire;Jaffrey;KAFN;42.8;-72.0006;313 United States;New Hampshire;Keene;KEEN;42.9;-72.2667;0 United States;New Hampshire;Laconia;KLCI;43.5667;-71.4167;0 United States;New Hampshire;Lebanon;KLEB;43.6167;-72.3058;171 United States;New Hampshire;Manchester;KMHT;42.9167;-71.4358;81 United States;New Hampshire;Mt Washington;KMWN;44.2667;-71.3;1910 United States;New Hampshire;Nashua;KASH;42.7833;-71.5167;0 United States;New Hampshire;New Castles Coast Guard Light Station;K12B;43.117;-70.483;1 United States;New Hampshire;Plymouth, Plymouth Municipal Airport;K1P1;43.779;-71.754;154 United States;New Hampshire;Portsmouth Harbor;K25B;43.067;-70.717;1 United States;New Hampshire;Portsmouth;KPSM;43.0833;-70.8167;0 United States;New Hampshire;SKYHAVEN AIRPORT;KDAW;43.283;-70.917;98 United States;New Hampshire;Whitefield;KHIE;44.35;-71.5525;318 United States;New Jersey;AEROFLEX-ANDOVER AIRPORT;K12N;41.017;-74.733;178 United States;New Jersey;Atlantic City Coast Guard Station;K55N;39.383;-74.417;4 United States;New Jersey;Atlantic City;KACY;39.45;-74.5867;35 United States;New Jersey;Barnegat Coast Guard Station;KN78;39.767;-74.100;6 United States;New Jersey;Belmar-Farmingdale;KBLM;40.1833;-74.1333;0 United States;New Jersey;Caldwell;KCDW;40.8667;-74.2831;64 United States;New Jersey;Cape May Coast Guard Station;KN91;38.950;-74.883;2 United States;New Jersey;Lakehurst;KNEL;40.0333;-74.3167;24 United States;New Jersey;Manasquan Inl Coast Guard Station;K54N;40.100;-74.017;1 United States;New Jersey;Millville;KMIV;39.35;-75.0783;23 United States;New Jersey;Morristown;KMMU;40.8;-74.4167;0 United States;New Jersey;Mount Holly;KVAY;39.9333;-74.8411;15 United States;New Jersey;Newark;KEWR;40.6667;-74.1694;7 United States;New Jersey;SOMERVILLE SOMERSET AIRPORT;KSMQ;40.617;-74.667;32 United States;New Jersey;SUSSEX AIRPORT;KFWN;41.200;-74.633;128 United States;New Jersey;Sandy Hook Coast Guard Station;K56N;40.467;-74.017;5 United States;New Jersey;Teterboro;KTEB;40.85;-74.0567;7 United States;New Jersey;Trenton;KTTN;40.2667;-74.8164;59 United States;New Jersey;Wildwood;K52N;39.000;-74.817;2 United States;New Jersey;Wildwood;KWWD;39.0167;-74.9167;0 United States;New Jersey;Wrightstown / Mcguire AFB;KWRI;40.0167;-74.6;0 United States;New Mexico;Alamogordo-White;KALM;32.833;-105.983;1279 United States;New Mexico;Alamogordo;KHMN;32.85;-106.1;1248 United States;New Mexico;Albuquerque Nexrad;KABX;35.150;-106.817;1814 United States;New Mexico;Albuquerque Radar Site;KZAB;35.167;-106.567;1621 United States;New Mexico;Albuquerque, Double Eagle II Airport;KAEG;35.145;-106.795;1779 United States;New Mexico;Albuquerque;KABQ;35.0333;-106.6147;1618 United States;New Mexico;Artesia, Artesia Municipal Airport;KATS;32.852;-104.468;1079 United States;New Mexico;Belen Alexander Muni;KE80;34.649;-106.832;1583 United States;New Mexico;Carlsbad;KCNM;32.3333;-104.2633;985 United States;New Mexico;Chama;KE33;36.900;-106.583;2393 United States;New Mexico;Clayton;KCAO;36.4333;-103.1531;1514 United States;New Mexico;Clines Corners;KCQC;35.000;-105.667;2160 United States;New Mexico;Clovis, Clovis Municipal Airport;KCVN;34.433;-103.083;1285 United States;New Mexico;Clovis-Cannon AFB;KCVS;34.3833;-103.3167;0 United States;New Mexico;Corona;K4CR;34.1;-105.6833;0 United States;New Mexico;Cuba Awrs;K4SL;35.8;-107.1833;0 United States;New Mexico;Deming;KDMN;32.25;-107.7206;1311 United States;New Mexico;Farmington;KFMN;36.7333;-108.2292;1685 United States;New Mexico;Gallup;KGUP;35.5;-108.7894;1971 United States;New Mexico;Grants;KGNT;35.15;-107.9022;1987 United States;New Mexico;Hobbs;KHOB;32.6833;-103.2167;0 United States;New Mexico;Kirtland, Kirtland Air Force Base Auxiliary Field;KIKR;34.950;-106.567;1612 United States;New Mexico;Las Cruces, Las Cruces International Airport;KLRU;32.289;-106.922;1358 United States;New Mexico;Las Vegas;KLVS;35.65;-105.1425;2091 United States;New Mexico;Los Alamos;KLAM;35.8833;-106.0833;2185 United States;New Mexico;Melrose Gunnery Range;K4MR;34.300;-103.800;1326 United States;New Mexico;Moriarty;K4MY;34.9833;-106.05;0 United States;New Mexico;Northrup Landing Strip;KE28;33.900;-106.400;1193 United States;New Mexico;Raton, Raton Municipal \ Crews Field Airport;KRTN;36.742;-104.658;1935 United States;New Mexico;Roswell;KROW;33.3;-104.5078;1112 United States;New Mexico;Ruidoso Regional;KSRR;33.467;-105.533;2076 United States;New Mexico;Santa Fe;KSAF;35.6;-106.095;1930 United States;New Mexico;Santa Teresa, Dona Ana County Airport at Santa Teresa;K5T6;31.881;-106.705;1253 United States;New Mexico;Santa Teresa;KEPZ;31.867;-106.700;1252 United States;New Mexico;Silver City;KSVC;32.6333;-108.15;0 United States;New Mexico;Socorro Municipal;KONM;34.017;-106.900;1478 United States;New Mexico;Taos, Taos Regional Airport;KSKX;36.450;-105.667;2161 United States;New Mexico;Truth or Consequences;KTCS;33.2333;-107.2681;1469 United States;New Mexico;Tucumcari;KTCC;35.1667;-103.6031;1235 United States;New Mexico;White Sands;K2C2;32.383;-106.483;1244 United States;New York;Albany NEXRAD;KENX;42.600;-74.067;581 United States;New York;Albany;KALB;42.7333;-73.7989;92 United States;New York;Ambrose / Ft. Tilden;KN28;40.450;-73.817;1 United States;New York;Bay Shore / Fire Island;K45N;40.633;-73.267;5 United States;New York;Binghamton;KBGM;42.2;-75.9814;492 United States;New York;Bronx / Execution Coast Guard Station;KN84;40.883;-73.733;8 United States;New York;Buffalo Coast Guard Station;K19G;42.883;-78.883;180 United States;New York;Buffalo;KBUF;42.9333;-78.7358;225 United States;New York;CHAUTAUQUA COUNTY/DUNKIRK;KDKK;42.500;-79.283;211 United States;New York;Calverton / Grumman;KCTO;40.917;-72.783;23 United States;New York;Cape Vincent Marine Aviation Reporting Station;K95B;44.117;-76.333;75 United States;New York;DANSVILLE MUNICIPAL AIRPORT;KDSV;42.567;-77.717;202 United States;New York;East Hampton, East Hampton Airport;KHTO;40.959;-72.252;17 United States;New York;East Moriches Coast Guard Station;K49N;40.783;-72.750;1 United States;New York;Eatons Neck Coast Guard Station;K34N;40.950;-73.400;1 United States;New York;Elmira;KELM;42.15;-76.9028;302 United States;New York;FULTON OSWEGO COUNTY AIRPORT;KFZY;43.350;-76.383;145 United States;New York;Farmingdale;KFRG;40.7333;-73.4169;21 United States;New York;Fort Drum;KGTB;44.05;-75.7333;207 United States;New York;Fulton, Oswego County Airport;KN00;43.350;-76.385;144 United States;New York;GRIFFISS AIRFIELD;KRME;43.233;-75.400;154 United States;New York;Glens Falls;KGFL;43.3333;-73.6106;103 United States;New York;Islip;KISP;40.7833;-73.1017;43 United States;New York;Ithaca;KITH;42.4833;-76.45;0 United States;New York;Jamestown;KJHW;42.15;-79.2667;0 United States;New York;MONTAUK AIRPORT;KMTP;41.067;-71.917;2 United States;New York;Massena;KMSS;44.9333;-74.8456;66 United States;New York;Millbrook / Sky Acres;K44N;41.700;-73.733;213 United States;New York;Montauk Point Coast Guard Light Station;K48N;41.067;-71.933;1 United States;New York;Montgomery;KMGJ;41.5;-74.265;108 United States;New York;Monticello;KMSV;41.7;-74.8;0 United States;New York;N. Y. City NEXRAD;KOKX;40.867;-72.867;60 United States;New York;NEW YORK CITY CENTRAL PARK;KNYC;40.783;-73.967;48 United States;New York;New York-JFK Arpt;KJFK;40.6333;-73.7622;9 United States;New York;New York-La Guardia;KLGA;40.7667;-73.88;11 United States;New York;Newburgh;KSWF;41.5;-74.1;0 United States;New York;Niagara Coast Guard Station;K13G;43.267;-79.067;82 United States;New York;Niagara Falls;KIAG;43.1;-78.9453;182 United States;New York;Ogdensburg;KOGS;44.6833;-75.4667;0 United States;New York;Olean Municipal;KOLE;42.233;-78.367;651 United States;New York;Oswego Coast Guard Station;K28G;43.467;-76.517;78 United States;New York;PLATTSBURGH CLINTON CO AIRPORT ;KPLB;44.683;-73.533;113 United States;New York;PLATTSBURGH INTERNATIONAL AIRPORT;KPBG;44.650;-73.467;73 United States;New York;Penn Yan;KPEO;42.6333;-77.0494;256 United States;New York;Poughkeepsie;KPOU;41.6167;-73.8842;46 United States;New York;Rochester Coast Guard Light Station;K26G;43.250;-77.600;82 United States;New York;Rochester;KROC;43.1167;-77.6767;178 United States;New York;Rockaway Coast Guard Station;K50N;40.567;-73.883;3 United States;New York;SHIRLEY BROOKHAVEN AIRPORT;KHWV;40.817;-72.867;25 United States;New York;Saranac Lake;KSLK;44.3833;-74.2028;498 United States;New York;Schenectady;KSCH;42.85;-73.9333;0 United States;New York;Short Beach Coast Guard Station;K51N;40.583;-73.550;1 United States;New York;Syracuse;KSYR;43.1;-76.1033;127 United States;New York;Utica;KUCA;43.1333;-75.3844;228 United States;New York;WELLSVILLE MUNICIPAL AIRPORT;KELZ;42.100;-78.000;647 United States;New York;Watertown;KART;43.9833;-76.0217;100 United States;New York;Westhampton;KFOK;40.85;-72.6206;33 United States;New York;White Plains;KHPN;41.0667;-73.7075;121 United States;North Carolina;Ahoskie, Tri-County Airport;KASJ;36.297;-77.171;21 United States;North Carolina;Albemarle, Stanly County Airport;KVUJ;35.417;-80.151;186 United States;North Carolina;Andrews, Andrews-Murphy Airport;K6A3;35.194;-83.865;518 United States;North Carolina;Andrews, Andrews-Murphy Airport;KRHP;35.195;-83.864;517 United States;North Carolina;Asheboro, Asheboro Municipal Airport;KHBI;35.654;-79.895;205 United States;North Carolina;Asheboro, Asheboro Municipal Airport;KW44;35.654;-79.895;205 United States;North Carolina;Asheville;KAVL;35.4167;-82.5375;670 United States;North Carolina;Atlantic, Atlantic Field Outlying Landing Field;KNLT;34.879;-76.336;4 United States;North Carolina;BEAUFORT SMITH FIELD;KMRH;34.733;-76.650;3 United States;North Carolina;BOGUE FIELD, MCALF;KNJM;34.700;-77.033;7 United States;North Carolina;BURLINGTON ALAMANCE REGIONAL;KBUY;36.033;-79.467;188 United States;North Carolina;Boone, Watauga County Hospital Heliport;KTNB;36.200;-81.650;959 United States;North Carolina;CHAPEL HILL WILLIAMS AIRPORT;KIGX;35.933;-79.067;156 United States;North Carolina;Cape Hatteras;KHAT;35.267;-75.550;2 United States;North Carolina;Cape Lookout Coast Guard Station;K77W;34.600;-76.533;4 United States;North Carolina;Charlotte;KCLT;35.2;-80.9486;220 United States;North Carolina;Cherry Point, Marine Corps Air Station;KNIS;34.886;-76.863;8 United States;North Carolina;Cherry Point;KNKT;34.8833;-76.8808;9 United States;North Carolina;Clinton, Sampson County Airport;KCTZ;34.976;-78.365;45 United States;North Carolina;Concord, Concord Regional Airport;KJQF;35.385;-80.710;210 United States;North Carolina;Currituck, Currituck County Airport;K9W7;36.399;-76.016;5 United States;North Carolina;Currituck, Currituck County Airport;KONX;36.399;-76.016;5 United States;North Carolina;Dare County Gunnery Range;K2DP;35.667;-75.900;3 United States;North Carolina;Diamond Shoals Coast Guard Station;K44W;35.150;-75.300;1 United States;North Carolina;Edenton, Northeastern Regional Airport;KEDE;36.028;-76.567;6 United States;North Carolina;Elizabeth City;KECG;36.25;-76.1828;11 United States;North Carolina;Elizabethtown, Curtis L Brown Jr. Field Airport;KEYF;34.600;-78.583;40 United States;North Carolina;Erwin, Harnett County Airport;K37W;35.379;-78.734;60 United States;North Carolina;Erwin, Harnett County Airport;KHRJ;35.379;-78.734;60 United States;North Carolina;Fayetteville;KFAY;34.9833;-78.88;55 United States;North Carolina;Fort Bragg;KFBG;35.1333;-78.9333;74 United States;North Carolina;Franklin, Macon County Airport;K1A5;35.217;-83.417;616 United States;North Carolina;GASTONIA MUNICIPAL AIRPORT;KAKH;35.200;-81.150;243 United States;North Carolina;Goldsboro, Goldsboro-Wayne Municipal Airport;KGWW;35.461;-77.965;40 United States;North Carolina;Goldsboro;KGSB;35.3333;-77.9667;0 United States;North Carolina;Greensboro;KGSO;36.0833;-79.9436;275 United States;North Carolina;HALIFAX COUNTY AIRPORT;KRZZ;36.433;-77.717;78 United States;North Carolina;Hickory;KHKY;35.7333;-81.3822;354 United States;North Carolina;Hoffman;KHFF;35.0333;-79.5;0 United States;North Carolina;Hot Springs Aviation Weather Reporting Station;KHSS;35.900;-82.817;451 United States;North Carolina;Jacksonville;KOAJ;34.8333;-77.6167;0 United States;North Carolina;Jefferson, Ashe County Airport;KGEV;36.433;-81.417;969 United States;North Carolina;Kenansville, Duplin County Airport;KDPL;35.000;-77.982;42 United States;North Carolina;Kill Devil Hills, First Flight Airport;KFFA;36.017;-75.667;4 United States;North Carolina;Kinston;KISO;35.3333;-77.6167;0 United States;North Carolina;LAURINBURG MAXTON AIRPORT;KMEB;34.783;-79.367;67 United States;North Carolina;LUMBERTON MUNICIPAL AIRPORT;KLBT;34.600;-79.067;38 United States;North Carolina;Lexington, Davidson County Airport;KEXX;35.781;-80.304;223 United States;North Carolina;Lincolnton, Lincolnton-Lincoln County Regional Airport;KIPJ;35.483;-81.161;267 United States;North Carolina;Louisburg, Franklin County Airport;KLHZ;36.023;-78.330;113 United States;North Carolina;MITCHELL FIELD;KHSE;35.233;-75.617;5 United States;North Carolina;MONROE AIRPORT;KEQY;35.017;-80.617;207 United States;North Carolina;Manteo / Dare County Regional;KMQI;35.917;-75.700;4 United States;North Carolina;Morganton, Morganton-Lenoir Airport;KMRN;35.821;-81.611;387 United States;North Carolina;Mount Airy, Mount Airy/Surry County Airport;KMWK;36.460;-80.553;380 United States;North Carolina;New Bern;KEWN;35.0667;-77.0472;3 United States;North Carolina;New River;KNCA;34.7;-77.4408;4 United States;North Carolina;Newport;KMHX;34.783;-76.883;11 United States;North Carolina;North Wilkesboro, Wilkes County Airport;KUKF;36.217;-81.083;396 United States;North Carolina;Oak Island, Brunswick County Airport;KSUT;33.929;-78.075;8 United States;North Carolina;Oracoke Coast Guard Station;K45W;35.117;-75.983;2 United States;North Carolina;Oregon Inlet Coast Guard Station;K79W;35.767;-75.517;1 United States;North Carolina;Oxford, Henderson-Oxford Airport;KHNZ;36.362;-78.529;161 United States;North Carolina;PINEY ISLAND BT11 BOMB RANGE;KNBT;35.017;-76.467;5 United States;North Carolina;Pinehurst/Southern Pines, Moore County Airport;KSOP;35.233;-79.400;141 United States;North Carolina;Pitt-Greenville Airport;KPGV;35.633;-77.400;8 United States;North Carolina;Pope AFB;KPOB;35.1667;-79.0333;61 United States;North Carolina;Raleigh NEXRAD;KRAX;35.667;-78.500;141 United States;North Carolina;Raleigh-Durham;KRDU;35.8667;-78.7864;130 United States;North Carolina;Reidsville, Rockingham County NC Shiloh Airport;K78N;36.437;-79.851;211 United States;North Carolina;Rockingham, Rockingham-Hamlet Airport;K45J;34.891;-79.759;109 United States;North Carolina;Rocky Mount;KRWI;35.85;-77.8931;47 United States;North Carolina;Roxboro, Person County Airport;KTDF;36.285;-78.984;186 United States;North Carolina;Rutherfordton, Rutherford County-Marchman Field Airport;KFQD;35.428;-81.935;329 United States;North Carolina;Salisbury, Rowan County Airport;KRUQ;35.650;-80.517;236 United States;North Carolina;Sanford, Sanford-Lee County Brick Field Airport;KW77;35.433;-79.183;131 United States;North Carolina;Sanford, Sanford-Lee County Regional Airport;KTTA;35.583;-79.101;75 United States;North Carolina;Shelby, Shelby Municipal Airport;KEHO;35.250;-81.600;258 United States;North Carolina;Smithfield, Johnston County Airport;KJNX;35.541;-78.390;50 United States;North Carolina;South Port / Oak Island Coast Guard Station;K78W;33.883;-78.017;1 United States;North Carolina;Statesville, Statesville Municipal Airport;KSVH;35.765;-80.957;294 United States;North Carolina;Swansboro / Bogue;K3W4;34.650;-77.100;2 United States;North Carolina;Wadesboro, Anson County Airport;KAFP;35.021;-80.077;91 United States;North Carolina;Washington, Warren Field Airport;KOCW;35.571;-77.050;12 United States;North Carolina;Whiteville, Columbus County Municipal Airport;KCPC;34.273;-78.715;30 United States;North Carolina;Wilmington Nexrad;KLTX;33.983;-78.433;44 United States;North Carolina;Wilmington;KILM;34.2667;-77.9061;9 United States;North Carolina;Winston-Salem;KINT;36.1333;-80.2247;291 United States;North Carolina;Wrightsville Beach;K1W9;34.183;-77.817;3 United States;North Dakota;Barnes County Municipal Airport;KBAC;46.941;-98.018;427 United States;North Dakota;Beach Airport Beach;K20U;46.925;-103.982;840 United States;North Dakota;Bismark;KBIS;46.7667;-100.7572;503 United States;North Dakota;Bowman, Bowman Municipal Airport;KBPP;46.187;-103.428;902 United States;North Dakota;Cando Municipal Airport;K9D7;48.480;-99.236;451 United States;North Dakota;Carrington Municipal Airport;K46D;47.451;-99.151;490 United States;North Dakota;Cavalier Municipal Airport;K2C8;48.784;-97.632;272 United States;North Dakota;Crosby Municipal Airport;KD50;48.929;-103.297;594 United States;North Dakota;Devils Lake;KDVL;48.1167;-98.9167;0 United States;North Dakota;Devils Lake;KP11;48.100;-98.867;439 United States;North Dakota;Dickinson;KDIK;46.7833;-102.8019;788 United States;North Dakota;Fargo;KFAR;46.9167;-96.8111;277 United States;North Dakota;GARRISON MUNICIPAL AIRPORT;KN60;47.650;-101.433;583 United States;North Dakota;Grand Forks Air Force Base;KRDR;47.967;-97.400;278 United States;North Dakota;Grand Forks;KGFK;47.9333;-97.1825;190 United States;North Dakota;Gwinner-Roger Melroe Field Airport;KGWR;46.219;-97.643;386 United States;North Dakota;HETTINGER MUNICIPAL AIRPORT;KHEI;46.017;-102.650;824 United States;North Dakota;Harvey Municipal Airport;K5H4;47.791;-99.932;490 United States;North Dakota;Huston Field;KGAF;48.405;-97.371;251 United States;North Dakota;Jamestown;KJMS;46.9167;-98.6783;455 United States;North Dakota;Lidgerwood;KP67;46.1;-97.15;0 United States;North Dakota;Linton Municipal Airport;K7L2;46.221;-100.246;542 United States;North Dakota;Mandan Municipal Airport;KY19;46.768;-100.894;592 United States;North Dakota;Mercer County Regional Airport;KHZE;47.290;-101.581;553 United States;North Dakota;Minot AFB;KMIB;48.4167;-101.35;0 United States;North Dakota;Minot;KMOT;48.25;-101.2803;519 United States;North Dakota;Oakes Municipal Airport;K2D5;46.173;-98.080;407 United States;North Dakota;Roberston Field Landon;KD55;48.753;-98.394;490 United States;North Dakota;Rolla Municipal Airport;K06D;48.884;-99.621;556 United States;North Dakota;Roseglen;KP24;47.750;-101.833;624 United States;North Dakota;Rugby Municipal Airport;KRUG;48.391;-100.024;472 United States;North Dakota;Stanley Municipal Airport;K08D;48.301;-102.406;684 United States;North Dakota;Tioga Municipal Airport;KD60;48.380;-102.898;692 United States;North Dakota;Wahpeton, Harry Stern Airport;KBWP;46.244;-96.607;295 United States;North Dakota;Walhalla Municipal Airport;K96D;48.941;-97.903;0 United States;North Dakota;Watford City Municipal Airport;KS25;47.797;-103.255;643 United States;North Dakota;Williston;KISN;48.1667;-103.6367;579 United States;Ohio;AKRON FULTON INTERNATIONAL;KAKR;41.033;-81.467;326 United States;Ohio;ASHTABULA COUNTY AIRPORT;KHZY;41.783;-80.700;282 United States;Ohio;Akron;KCAK;40.9167;-81.4425;377 United States;Ohio;Ashtabula Coast Guard Station;K20G;41.917;-80.800;178 United States;Ohio;Ashtabula, Ashtabula County Airport;KSHI;41.779;-80.697;281 United States;Ohio;Cincinnati;KLUK;39.1;-84.4158;155 United States;Ohio;Cleveland Harbor Coast Guard Station;K23G;41.500;-81.717;181 United States;Ohio;Cleveland-Lakefront;KBKL;41.5167;-81.6689;184 United States;Ohio;Cleveland/Cuyahoga;KCGF;41.5667;-81.4833;0 United States;Ohio;Cleveland;KCLE;41.4;-81.8528;236 United States;Ohio;Columbus / Bolton Field;K2I4;39.900;-83.133;280 United States;Ohio;Columbus, Bolton Field Airport;KTZR;39.901;-83.137;276 United States;Ohio;Columbus-Gahanna;KCMH;39.9833;-82.8764;247 United States;Ohio;Columbus-OSU;KOSU;40.0667;-83.0781;280 United States;Ohio;DEFIANCE MEMORIAL AIRPORT;KDFI;41.333;-84.433;216 United States;Ohio;Dayton-Fairborn;KFFO;39.8333;-84.05;251 United States;Ohio;Dayton-South Airport;KMGY;39.5833;-84.2264;289 United States;Ohio;Dayton;KDAY;39.9;-84.2186;305 United States;Ohio;Findlay;KFDY;41;-83.6686;0 United States;Ohio;Hamilton;KHAO;39.35;-84.5208;188 United States;Ohio;LIMA ALLEN COUNTY AIRPORT;KAOH;40.700;-84.017;297 United States;Ohio;LORAIN COUNTY REGIONAL AIRPORT ;KLPR;41.350;-82.183;242 United States;Ohio;Lancaster;KLHQ;39.75;-82.6633;260 United States;Ohio;Lorain Coast Guard Station;K27G;41.467;-82.183;176 United States;Ohio;MARION MUNICIPAL AIRPORT;KMNN;40.617;-83.067;303 United States;Ohio;Mansfield;KMFD;40.8167;-82.5178;395 United States;Ohio;Marblehead Coast Guard Station;K21G;41.550;-82.733;196 United States;Ohio;NEW PHILADELPHIA CLEVER FLD;KPHD;40.467;-81.417;273 United States;Ohio;NEWARK HEATH AIRPORT;KVTA;40.017;-82.467;269 United States;Ohio;Ravenna / Portage County;K29G;41.217;-81.250;365 United States;Ohio;Rickenbacker;KLCK;39.8167;-82.9333;0 United States;Ohio;Sidney, Sidney Municipal Airport;KI12;40.241;-84.151;318 United States;Ohio;Smithville / Wooster;KSLW;40.883;-81.833;357 United States;Ohio;Springfield, Springfield-Beckley Municipal Airport;KSGH;39.840;-83.840;320 United States;Ohio;TOLEDO METCALF FIELD;KTDZ;41.567;-83.483;190 United States;Ohio;Toledo Coast Guard Station;K24G;41.700;-83.450;180 United States;Ohio;Toledo;KTOL;41.5833;-83.8014;210 United States;Ohio;Willoughby;KLNN;41.683;-81.383;191 United States;Ohio;Wilmington;KILN;39.4167;-83.7792;332 United States;Ohio;Wooster;KBJJ;40.8667;-81.8867;343 United States;Ohio;Youngstown;KYNG;41.25;-80.6739;360 United States;Ohio;Zanesville;KZZV;39.9333;-81.8922;268 United States;Oklahoma;Ada, Ada Municipal Airport;KADH;34.804;-96.671;310 United States;Oklahoma;Altus, Altus/Quartz Mountain Regional Airport;KAXS;34.699;-99.338;437 United States;Oklahoma;Altus;KLTS;34.65;-99.2667;420 United States;Oklahoma;Alva, Alva Regional Airport;KAVK;36.773;-98.670;449 United States;Oklahoma;Ardmore, Ardmore Downtown Executive Airport;K1F0;34.147;-97.122;257 United States;Oklahoma;Ardmore;KADM;34.3;-97.0167;0 United States;Oklahoma;Bartlesville;KBVO;36.7667;-96.0261;210 United States;Oklahoma;Chandler, Chandler Municipal Airport;KCQB;35.724;-96.820;300 United States;Oklahoma;Chickasha, Chickasha Municipal Airport;KCHK;35.096;-97.966;351 United States;Oklahoma;Claremore, Claremore Regional Airport;KGCM;36.294;-95.480;221 United States;Oklahoma;Clinton, Clinton Regional Airport;KCLK;35.538;-98.921;492 United States;Oklahoma;Clinton;KCSM;35.35;-99.2036;588 United States;Oklahoma;Cushing, Cushing Municipal Airport;KCUH;35.950;-96.773;279 United States;Oklahoma;Duncan, Halliburton Field Airport;KDUC;34.471;-97.960;339 United States;Oklahoma;Durant, Eaker Field Airport;KDUA;33.942;-96.394;213 United States;Oklahoma;El Reno, El Reno Municipal Air Park;KF28;35.473;-98.006;432 United States;Oklahoma;El Reno, El Reno Regional Airport;KRQO;35.473;-98.006;432 United States;Oklahoma;Enid/Woodring;KWDG;36.3833;-97.7833;0 United States;Oklahoma;Enid;KEND;36.3333;-97.9167;0 United States;Oklahoma;FREDERICK MUNICIPAL AIRPORT;KFDR;34.350;-98.983;383 United States;Oklahoma;Fort Sill;KFSI;34.6;-98.4;360 United States;Oklahoma;GUTHRIE MUNICIPAL AIRPORT;KGOK;35.850;-97.417;326 United States;Oklahoma;Gage;KGAG;36.2833;-99.7689;668 United States;Oklahoma;Grove, Grove Municipal Airport;KGMJ;36.605;-94.739;254 United States;Oklahoma;Guymon;KGUY;36.6667;-101.5053;948 United States;Oklahoma;Henryetta Municipal;KF10;35.400;-96.017;259 United States;Oklahoma;Hobart;KHBR;34.9833;-99.0525;473 United States;Oklahoma;Hominy Municipal;KH92;36.433;-96.383;251 United States;Oklahoma;Idabel, Mc Curtain County Regional Airport;K4O4;33.909;-94.859;144 United States;Oklahoma;Lawton;KLAW;34.55;-98.4167;337 United States;Oklahoma;MUSKOGEE DAVIS FIELD;KMKO;35.650;-95.367;186 United States;Oklahoma;McAlester;KMLC;34.8667;-95.7831;232 United States;Oklahoma;Norman / Max Westheimer;KOUN;35.217;-97.450;357 United States;Oklahoma;Oklahoma City Nexrad;KTLX;35.333;-97.283;338 United States;Oklahoma;Oklahoma City-Bethany;KPWA;35.5333;-97.6467;397 United States;Oklahoma;Oklahoma City-Midwest City;KTIK;35.4167;-97.3833;397 United States;Oklahoma;Oklahoma City;KOKC;35.3833;-97.6003;390 United States;Oklahoma;Okmulgee, Okmulgee Municipal Airport;KOKM;35.668;-95.949;220 United States;Oklahoma;Pauls Valley, Pauls Valley Municipal Airport;KPVJ;34.711;-97.223;295 United States;Oklahoma;Ponca City;KPNC;36.7167;-97.0997;308 United States;Oklahoma;Poteau, Robert S Kerr Airport;KRKR;35.022;-94.621;138 United States;Oklahoma;Sallisaw, Sallisaw Municipal Airport;KJSV;35.438;-94.803;161 United States;Oklahoma;Seminole, Seminole Municipal Airport;KH45;35.274;-96.675;312 United States;Oklahoma;Seminole, Seminole Municipal Airport;KSRE;35.274;-96.675;312 United States;Oklahoma;Shawnee, Shawnee Municipal Airport;KSNL;35.357;-96.943;327 United States;Oklahoma;Stillwater;KSWO;36.15;-97.0892;290 United States;Oklahoma;Sulphur Municipal;KF30;34.517;-96.983;320 United States;Oklahoma;TULSA JONES JR. AIRPORT;KRVS;36.050;-95.983;194 United States;Oklahoma;Tahlequah, Tahlequah Municipal Airport;KTQH;35.929;-95.004;266 United States;Oklahoma;Tulsa Nexrad;KINX;36.183;-95.567;226 United States;Oklahoma;Tulsa;KTUL;36.1833;-95.8864;207 United States;Oklahoma;Watonga, Watonga Airport;KJWG;35.865;-98.421;472 United States;Oklahoma;Weatherford, Thomas P Stafford Airport;KOJA;35.545;-98.668;489 United States;Oklahoma;Woodward, West Woodward Airport;KWWR;36.437;-99.521;667 United States;Oregon;AURORA STATE AIRPORT;KUAO;45.250;-122.767;60 United States;Oregon;Astoria;KAST;46.15;-123.8825;3 United States;Oregon;Aurora State;K3S2;45.250;-122.767;60 United States;Oregon;Baker City;KBKE;44.8333;-117.8092;1024 United States;Oregon;Brookings, Brookings Airport;KBOK;42.074;-124.290;140 United States;Oregon;Brookings;K4BK;42.05;-124.2833;0 United States;Oregon;Burns;KBNO;43.5833;-118.9564;1264 United States;Oregon;Cape Blanco Coast Guard Station;K92S;42.833;-124.567;57 United States;Oregon;Cascade;KCZK;45.6667;-121.8833;0 United States;Oregon;Chetco River Coast Guard Station;KP47;42.150;-124.267;6 United States;Oregon;Coos Bay Coast Guard Station;K83S;43.350;-124.333;23 United States;Oregon;Corvallis, Corvallis Municipal Airport;KCVO;44.500;-123.283;75 United States;Oregon;Eugene;KEUG;44.1333;-123.2144;114 United States;Oregon;HERMISTON MUNICIPAL AIRPORT;KHRI;45.833;-119.267;195 United States;Oregon;Hillsboro;KHIO;45.5333;-122.9544;68 United States;Oregon;John Day, John Day State Airport;K5J0;44.404;-118.963;1127 United States;Oregon;Klamath Falls;KLMT;42.1333;-121.7242;1246 United States;Oregon;La Grande, La Grande/Union County Airport;KLGD;45.283;-118.000;828 United States;Oregon;Lakeview, Lake County Airport;KLKV;42.167;-120.400;1443 United States;Oregon;Lakeview;K4LW;42.217;-120.350;1455 United States;Oregon;MCMINNVILLE MUNICIPAL AIRPORT ;KMMV;45.200;-123.133;48 United States;Oregon;Meacham;KMEH;45.5;-118.4247;1136 United States;Oregon;Medford Nexrad;KMAX;42.081;-122.716;2290 United States;Oregon;Medford;KMFR;42.3667;-122.8722;396 United States;Oregon;Newport;KJNW;44.583;-124.067;48 United States;Oregon;Newport;KONP;44.5667;-124.0581;0 United States;Oregon;North Bend;KOTH;43.4167;-124.25;0 United States;Oregon;Ontario;KONO;44.0167;-117.0097;667 United States;Oregon;Pacific City State;KPFC;45.200;-123.967;2 United States;Oregon;Pendleton;KPDT;45.6833;-118.8342;458 United States;Oregon;Portland NEXRAD;KRTX;45.717;-122.967;514 United States;Oregon;Portland;KPDX;45.5833;-122.6003;7 United States;Oregon;ROME;KREO;42.583;-117.867;1234 United States;Oregon;Redmond;KRDM;44.25;-121.1497;0 United States;Oregon;Rome Automatic Meteorological Observing System;KP88;42.900;-117.650;1162 United States;Oregon;Roseburg;KRBG;43.2333;-123.3561;154 United States;Oregon;SCAPPOOSE INDUSTRIAL AIRPARK;KSPB;45.767;-122.867;17 United States;Oregon;Salem;KSLE;44.9;-122.995;59 United States;Oregon;Sexton Summit;KSXT;42.6;-123.3642;1170 United States;Oregon;Siuslaw River Coast Guard Station;K85S;44.000;-124.117;12 United States;Oregon;Sunriver;KS21;43.883;-121.450;1266 United States;Oregon;The Dalles;KDLS;45.6167;-121.1672;71 United States;Oregon;Tillamook Bay Coast Guard Station;K88S;45.567;-123.917;15 United States;Oregon;Tillamook, Tillamook Airport;KS47;45.418;-123.814;11 United States;Oregon;Troutdale;KTTD;45.55;-122.4089;14 United States;Oregon;Umpqua River Coast Guard Station;K90S;43.683;-124.167;41 United States;Oregon;Yaquina Bay Coast Guard Station;K95S;44.617;-124.050;1 United States;Pennsylvania;Allentown;KABE;40.65;-75.4492;114 United States;Pennsylvania;Altoona;KAOO;40.3;-78.3169;455 United States;Pennsylvania;Beaver Falls Airport;KBVI;40.767;-80.400;382 United States;Pennsylvania;Bedford, Bedford County Airport;KHMZ;40.085;-78.512;354 United States;Pennsylvania;Bradford;KBFD;41.7833;-78.6358;647 United States;Pennsylvania;Butler, Butler County Airport/K W Scholter Field;KBTP;40.783;-79.950;380 United States;Pennsylvania;CLEARFIELD-LAWRENCE AIRPORT;KFIG;41.050;-78.417;462 United States;Pennsylvania;Chester County Airport;K40N;39.983;-75.867;201 United States;Pennsylvania;DOYLESTOWN AIRPORT;KDYL;40.333;-75.117;120 United States;Pennsylvania;Du Bois;KDUJ;41.1833;-78.9;0 United States;Pennsylvania;Erie Coast Guard Station;K25G;42.117;-80.083;175 United States;Pennsylvania;Erie;KERI;42.0667;-80.1825;222 United States;Pennsylvania;Franklin;KFKL;41.3833;-79.8667;0 United States;Pennsylvania;Harrisburg;KCXY;40.2167;-76.8514;106 United States;Pennsylvania;Indiana / Stewart Field;KIDI;40.633;-79.100;429 United States;Pennsylvania;Johnstown;KJST;40.3;-78.8339;694 United States;Pennsylvania;Lancaster;KLNS;40.1167;-76.2944;125 United States;Pennsylvania;Latrobe;KLBE;40.2833;-79.4;0 United States;Pennsylvania;MT POCONO POCONO MOUNTAINS;KMPO;41.133;-75.383;584 United States;Pennsylvania;Meadville, Port Meadville Airport;K2G6;41.626;-80.212;426 United States;Pennsylvania;Middletown;KMDT;40.1833;-76.7633;95 United States;Pennsylvania;Monongahela, Rostraver Airport;KFWQ;40.210;-79.831;374 United States;Pennsylvania;Muir;KMUI;40.4333;-76.5667;0 United States;Pennsylvania;New Castle, New Castle Municipal Airport;KUCP;41.025;-80.413;327 United States;Pennsylvania;Northeast Philadelphia;KPNE;40.0667;-75.0136;28 United States;Pennsylvania;PORT MEADVILLE AIRPORT;KGKJ;41.633;-80.217;427 United States;Pennsylvania;POTTSTOWN LIMERICK AIRPORT;KPTW;40.233;-75.550;89 United States;Pennsylvania;Philadelphia NEXRAD;KDIX;39.950;-74.417;70 United States;Pennsylvania;Philadelphia, Wings Field Airport;KLOM;40.138;-75.265;92 United States;Pennsylvania;Philadelphia, Wings Field Airport;KN67;40.138;-75.265;92 United States;Pennsylvania;Philadelphia;KPHL;39.8667;-75.2311;18 United States;Pennsylvania;Pittsburgh Nexrad;KPBZ;40.533;-80.217;386 United States;Pennsylvania;Pittsburgh-West Mifflin;KAGC;40.35;-79.9217;389 United States;Pennsylvania;Pittsburgh;KPIT;40.5;-80.2664;357 United States;Pennsylvania;Quakertown, Quakertown Airport;KUKT;40.435;-75.382;160 United States;Pennsylvania;Reading;KRDG;40.3667;-75.9594;109 United States;Pennsylvania;Reedsville / Mifflin;KRVL;40.683;-77.633;250 United States;Pennsylvania;SELINSGROVE PENN VALLEY AIRPORT ;KSEG;40.817;-76.867;137 United States;Pennsylvania;Scranton;KAVP;41.3333;-75.7267;291 United States;Pennsylvania;State College Nexrad;KCCX;40.917;-78.000;758 United States;Pennsylvania;State College;KUNV;40.85;-77.85;0 United States;Pennsylvania;WILLOW GROVE NAVAL AIR STA;KNXX;40.200;-75.133;110 United States;Pennsylvania;Washington, Washington County Airport;KAFJ;40.133;-80.283;361 United States;Pennsylvania;Wilkes - Barre;KAVP;41.3333;-75.7267;291 United States;Pennsylvania;Williamsport;KIPT;41.2333;-76.9217;164 United States;Pennsylvania;YORK AIRPORT;KTHV;39.917;-76.883;146 United States;Rhode Island;Block Island;KBID;41.1667;-71.5833;0 United States;Rhode Island;Castle Hill Coast Guard Station;K67B;41.450;-71.350;15 United States;Rhode Island;NEWPORT STATE AIRPORT;KUUU;41.533;-71.283;52 United States;Rhode Island;North Kingstown;KOQU;41.6;-71.4167;0 United States;Rhode Island;Pawtucket, North Central State Airport;KSFZ;41.917;-71.500;134 United States;Rhode Island;Point Judith Coast Guard Station;KPJI;41.350;-71.467;2 United States;Rhode Island;Providence;KPVD;41.7167;-71.4281;16 United States;Rhode Island;WESTERLY STATE AIRPORT;KWST;41.350;-71.800;25 United States;South Carolina;Anderson;KAND;34.4833;-82.7097;239 United States;South Carolina;Beaufort;KNBC;32.4833;-80.7031;8 United States;South Carolina;CLEMSON-OCONEE COUNTY AIRPORT ;KCEU;34.667;-82.883;272 United States;South Carolina;Charleston Air Force Base;KIGC;32.900;-80.050;14 United States;South Carolina;Charleston Nise;KNEX;32.917;-79.983;12 United States;South Carolina;Charleston, Navelexcen;NEXC;32.916;-79.979;8 United States;South Carolina;Charleston;KCHS;32.8833;-80.0406;13 United States;South Carolina;Columbia-McEntire;KMMT;33.9167;-80.8;0 United States;South Carolina;Columbia;KCAE;33.9333;-81.1181;73 United States;South Carolina;Darlington, Darlington County Jetport Airport;KUDG;34.449;-79.890;59 United States;South Carolina;Florence;KFLO;34.1833;-79.7308;44 United States;South Carolina;Folly Beach Long Range Navigation;K84J;32.683;-79.883;3 United States;South Carolina;GREENWOOD COUNTY AIRPORT;KGRD;34.233;-82.150;192 United States;South Carolina;Georgetown Coast Guard Light Station;K85J;33.217;-79.183;8 United States;South Carolina;Greenville-Spartanburg;KGSP;34.8833;-82.2208;286 United States;South Carolina;Greenville;KGMU;34.8333;-82.3461;315 United States;South Carolina;Hilton Head Island, Hilton Head Airport;KHXD;32.217;-80.700;6 United States;South Carolina;Manning / Cooper Regional;KMNI;33.583;-80.217;32 United States;South Carolina;Myrtle Beach;KMYR;33.6833;-78.9333;8 United States;South Carolina;N Myrtle Beach;KCRE;33.8;-78.7239;10 United States;South Carolina;ORANGEBURG MUNICIPAL AIRPORT;KOGB;33.467;-80.850;60 United States;South Carolina;OWENS DOWNTOWN AIRPORT;KCUB;33.967;-81.000;65 United States;South Carolina;Poinsett Range, Sumpter;K2PJ;33.850;-80.483;68 United States;South Carolina;ROCK HILL-YORK COUNTY AIRPORT ;KUZA;34.983;-81.050;204 United States;South Carolina;Spartanburg Memorial;KSPA;34.917;-81.950;246 United States;South Carolina;Sullivans Island Coast Guard Station;K86J;32.767;-79.850;3 United States;South Carolina;Sumter;KSSC;33.9667;-80.4833;73 United States;South Dakota;Aberdeen;KABR;45.4333;-98.4131;400 United States;South Dakota;BUFFALO;K2WX;45.600;-103.550;916 United States;South Dakota;Belle Fourche, Belle Fourche Municipal Airport;KEFC;44.733;-103.867;972 United States;South Dakota;Brookings;KBKX;44.3;-96.8167;0 United States;South Dakota;CUSTER COUNTY AIRPORT;KCUT;43.733;-103.617;1707 United States;South Dakota;Chamberlain;K9V9;43.7667;-99.3183;519 United States;South Dakota;Custer, Custer County Airport;K0V1;43.733;-103.611;1711 United States;South Dakota;FAITH, SOUTH DAKOTA;KD07;45.033;-102.017;787 United States;South Dakota;Huron;KHON;44.3833;-98.2283;390 United States;South Dakota;Lemmon;KY22;45.9333;-102.1667;0 United States;South Dakota;MOBRIDGE MUNICIPAL AIRPORT;KMBG;45.550;-100.417;523 United States;South Dakota;Mitchell;KMHE;43.7667;-98.0333;0 United States;South Dakota;Mobridge;KY26;45.533;-100.433;508 United States;South Dakota;PINE RIDGE AIRPORT;KIEN;43.033;-102.517;1015 United States;South Dakota;Philip;KPHP;44.05;-101.6011;672 United States;South Dakota;Pierre;KPIR;44.3667;-100.2858;526 United States;South Dakota;Rapid City-Ellsworth AFB;KRCA;44.15;-103.1;0 United States;South Dakota;Rapid City;KRAP;44.0333;-103.0539;965 United States;South Dakota;SISSETON MUNICIPAL AIRPORT;K8D3;45.667;-96.983;354 United States;South Dakota;Sioux Falls;KFSD;43.5667;-96.7536;434 United States;South Dakota;Spearfish / Clyde Ice;KSPF;44.483;-103.783;1188 United States;South Dakota;Watertown;KATY;44.9;-97.1494;532 United States;South Dakota;Winner, Bob Wiley Field Airport;KSFD;43.391;-99.843;619 United States;South Dakota;Winner, Wiley Field;KNED;43.389;-99.843;619 United States;South Dakota;Yankton;KYKN;42.9167;-97.3833;0 United States;Tennessee;Bristol;KTRI;36.4667;-82.3989;474 United States;Tennessee;CLARKSVILLE OUTLAW FIELD;KCKV;36.617;-87.417;168 United States;Tennessee;Chattanooga / Daisy;KCQN;35.167;-85.150;225 United States;Tennessee;Chattanooga;KCHA;35.0333;-85.2;210 United States;Tennessee;Columbia / Maury County;KMRC;35.550;-87.183;206 United States;Tennessee;Crossville;KCSV;35.95;-85.085;570 United States;Tennessee;Dyersburg;KDYR;36;-89.4;0 United States;Tennessee;Jackson;KMKL;35.5833;-88.9167;128 United States;Tennessee;Knoxville Downtown;KDKX;35.967;-83.867;254 United States;Tennessee;Knoxville;KTYS;35.8167;-83.9858;302 United States;Tennessee;Memphis-NAS;KNQA;35.35;-89.8703;0 United States;Tennessee;Memphis;KMEM;35.05;-89.985;86 United States;Tennessee;Morristown Nexrad;KMRX;36.167;-83.400;437 United States;Tennessee;Nashville NEXRAD;KOHX;36.750;-86.567;206 United States;Tennessee;Nashville;KBNA;36.1167;-86.6892;210 United States;Tennessee;OAK RIDGE;KOQT;36.017;-84.233;277 United States;Tennessee;Smyrna;KMQY;36.0167;-86.5167;0 United States;Texas;ARLINGTON MUNICIPAL AIRPORT;KGKY;32.667;-97.100;192 United States;Texas;Abilene, Dyess Air Force Base;KDYS;32.420;-99.857;545 United States;Texas;Abilene;KABI;32.4;-99.6817;548 United States;Texas;Alice;KALI;27.7333;-98.0269;53 United States;Texas;Alpine, Alpine-Casparis Municipal Airport;KE38;30.384;-103.683;1376 United States;Texas;Amarillo;KAMA;35.2167;-101.7172;1093 United States;Texas;Angleton;KLBX;29.1;-95.4631;6 United States;Texas;Arlington;KF54;32.65;-97.0958;185 United States;Texas;Austin;KAUS;30.1833;-97.67;172 United States;Texas;Bay City, Bay City Municipal Airport;K3R1;28.967;-95.850;14 United States;Texas;Bay City, Bay City Municipal Airport;KBYY;28.973;-95.863;14 United States;Texas;Beaumont-Port Arthur;KBPT;29.95;-94.0208;5 United States;Texas;Bergstrom AFB;KBSM;30.1667;-97.6806;172 United States;Texas;Big Spring, Big Spring McMahon-Wrinkle Airport;KBPG;32.200;-101.517;784 United States;Texas;Big Spring, Big Spring McMahon-Wrinkle Airport;KT49;32.200;-101.517;784 United States;Texas;Biggs Army Air Field / Ft. Bliss;KBIF;31.850;-106.383;1204 United States;Texas;Boomvang;KVAF;27.354;-94.625;0 United States;Texas;Borger;KBGD;35.6833;-101.395;927 United States;Texas;Brady, Curtis Field Airport;KBBD;31.179;-99.324;557 United States;Texas;Brazos 133;KBBF;27.835;-96.013;0 United States;Texas;Brazos 451;KBQX;28.494;-95.724;0 United States;Texas;Brenham, Brenham Municipal Airport;K11R;30.219;-96.374;94 United States;Texas;Bridgeport, Bridgeport Municipal Airport;K1F9;33.175;-97.828;260 United States;Texas;Bridgeport, Bridgeport Municipal Airport;KXBP;33.175;-97.828;260 United States;Texas;Brownsville;KBRO;25.9;-97.4231;5 United States;Texas;Brownwood, Brownwood Regional Airport;KBWD;31.800;-98.950;422 United States;Texas;Burnet;KBMQ;30.7333;-98.2353;389 United States;Texas;CABINESS FIELD;KNGW;28.167;-97.717;9 United States;Texas;CAMP MABRY/AUSTIN CITY ASOS;KATT;30.317;-97.767;201 United States;Texas;COLLIN CNTY REGIONAL AIRPORT;KTKI;33.183;-96.583;178 United States;Texas;Caldwell, Caldwell Municipal Airport;K14R;30.515;-96.704;119 United States;Texas;Caldwell, Caldwell Municipal Airport;KRWV;30.515;-96.704;119 United States;Texas;Canadian, Hemphill County Airport;KHHF;35.900;-100.400;730 United States;Texas;Childress;KCDS;34.4167;-100.2833;594 United States;Texas;Clarksville, Clarksville-Red River County Airport;K7F6;33.593;-95.063;134 United States;Texas;Clarksville, Clarksville/Red River County-J D Trissell Field Airport;KLBR;33.593;-95.063;134 United States;Texas;Cleburne, Cleburne Municipal Airport;KCPT;32.354;-97.434;260 United States;Texas;Cleburne, Cleburne Municipal Airport;KF18;32.354;-97.434;260 United States;Texas;College Station;KCLL;30.5667;-96.3617;96 United States;Texas;Comanche, Comanche County-City Airport;K7F9;31.917;-98.600;423 United States;Texas;Comanche, Comanche County-City Airport;KMKN;31.917;-98.600;423 United States;Texas;Conroe;KCXO;30.35;-95.4139;75 United States;Texas;Corpus Christi NAS;KNGP;27.6833;-97.2917;4 United States;Texas;Corpus Christi;KCRP;27.7667;-97.5128;16 United States;Texas;Corsicana;KCRS;32.0167;-96.3989;133 United States;Texas;Cotulla;KCOT;28.45;-99.2203;140 United States;Texas;Crockett, Houston County Airport;KDKR;31.307;-95.404;106 United States;Texas;Crockett, Houston County Airport;KT56;31.307;-95.404;106 United States;Texas;DRYDEN-TERRELL COUNTY AIRPORT;K6R6;30.050;-102.217;708 United States;Texas;Dalhart;KDHT;36.0167;-102.5472;1217 United States;Texas;Dallas United States Naval Air Station;KNBE;32.733;-96.967;150 United States;Texas;Dallas-Addison;KADS;32.9667;-96.8333;0 United States;Texas;Dallas-Fort Worth;KDFW;32.8833;-97.0219;174 United States;Texas;Dallas-Love Field;KDAL;32.85;-96.8556;158 United States;Texas;Dallas-Redbird;KRBD;32.6667;-96.8639;203 United States;Texas;Decatur, Decatur Municipal Airport;K8F7;33.254;-97.581;319 United States;Texas;Decatur, Decatur Municipal Airport;KLUD;33.254;-97.581;319 United States;Texas;Del Rio;KDRT;29.3667;-100.9236;313 United States;Texas;Denton;KDTO;33.2;-97.1989;196 United States;Texas;Dumas, Moore County Airport;KDUX;35.858;-102.013;1129 United States;Texas;East Addition B323;K5R0;28.217;-93.750;26 United States;Texas;East Breaks;KEMK;27.819;-94.323;0 United States;Texas;Edinburg, Edinburg International Airport;K25R;26.442;-98.129;24 United States;Texas;Edinburg, Edinburg International Airport;KEBG;26.442;-98.129;24 United States;Texas;El Paso;KELP;31.8;-106.3758;1197 United States;Texas;Falfurrias, Brooks County Airport;KBKS;27.207;-98.121;34 United States;Texas;Falfurrias, Brooks County Airport;KT18;27.207;-98.121;34 United States;Texas;Fort Stockton;KFST;30.9;-102.9167;918 United States;Texas;Fort Worth NAS;KNFW;32.75;-97.4333;187 United States;Texas;Fort Worth, Forth Worth Spinks Airport;KFWS;32.567;-97.300;213 United States;Texas;Fort Worth-Alliance;KAFW;32.9667;-97.3181;233 United States;Texas;Fort Worth-Meacham;KFTW;32.8167;-97.3642;214 United States;Texas;Fort Worth;KFWD;32.833;-97.300;196 United States;Texas;Fredericksburg, Gillespie County Airport;KT82;30.244;-98.909;517 United States;Texas;Freeport Coast Guard Station;K8R8;28.950;-95.300;2 United States;Texas;Freeport Supplementary Aviation Weather Reporting Station ;KFOQ;29.000;-95.317;2 United States;Texas;Gainesville, Gainesville Municipal Airport;KGLE;33.651;-97.197;256 United States;Texas;Galveston 424;KGVX;28.577;-94.977;0 United States;Texas;Galveston Coast Guard Station;K9R0;29.333;-94.767;1 United States;Texas;Galveston;KGLS;29.2667;-94.8642;6 United States;Texas;Gatesville, City-County Airport;K05F;31.421;-97.797;276 United States;Texas;Gatesville, City-County Airport;KGOP;31.421;-97.797;276 United States;Texas;Georgetown;KGTU;30.6833;-97.6833;0 United States;Texas;Giddings, Giddings-Lee County Airport;K62H;30.169;-96.980;148 United States;Texas;Giddings, Giddings-Lee County Airport;KGYB;30.169;-96.980;148 United States;Texas;Gilmer, Fox Stephens Field - Gilmer Municipal Airport;K4F4;32.699;-94.949;127 United States;Texas;Gilmer, Fox Stephens Field - Gilmer Municipal Airport;KJXI;32.699;-94.949;127 United States;Texas;Graham, Graham Municipal Airport;KE15;33.110;-98.555;342 United States;Texas;Graham, Graham Municipal Airport;KRPH;33.110;-98.555;342 United States;Texas;Granbury, Granbury Municipal Airport;KF55;32.444;-97.817;237 United States;Texas;Granbury, Granbury Municipal Airport;KGDJ;32.444;-97.817;237 United States;Texas;Grand Prairie, Grand Prairie Municipal Airport;KGPM;32.699;-97.047;180 United States;Texas;Greenville;KGVT;33.0667;-96.0667;0 United States;Texas;Guadalupe Pass;KGDP;31.8167;-104.8089;1692 United States;Texas;Gunnison;KGUL;27.304;-93.538;0 United States;Texas;Harlingen;KHRL;26.2167;-97.6553;10 United States;Texas;Hearne, Hearne Municipal Airport;KLHB;30.872;-96.622;87 United States;Texas;Hearne, Hearne Municipal Airport;KT72;30.872;-96.622;87 United States;Texas;Hebbronville, Jim Hogg County Airport;KHBV;27.333;-98.733;202 United States;Texas;High Island 376;KHQI;27.962;-93.671;0 United States;Texas;Hillsboro, Hillsboro Municipal Airport;K5T5;32.083;-97.097;209 United States;Texas;Hillsboro, Hillsboro Municipal Airport;KINJ;32.083;-97.097;209 United States;Texas;Hondo;KHDO;29.35;-99.1742;282 United States;Texas;Hoover Diana;KHHV;26.939;-94.689;0 United States;Texas;Houston / Galviston Nexrad;KHGX;29.467;-95.083;35 United States;Texas;Houston-Bush;KIAH;29.9833;-95.3639;36 United States;Texas;Houston-Ellington Field;KEFD;29.6;-95.1667;0 United States;Texas;Houston-Hobby;KHOU;29.6333;-95.2825;36 United States;Texas;Houston-Hooks;KDWH;30.0667;-95.5561;46 United States;Texas;Huntsville;KUTS;30.7333;-95.5861;104 United States;Texas;Jacksonville, Cherokee County Airport;KJSO;31.869;-95.217;206 United States;Texas;Jasper, Jasper County-Bell Field Airport;KJAS;30.886;-94.035;65 United States;Texas;Junction;KJCT;30.5;-99.7664;523 United States;Texas;Kerrville, Kerrville Municipal Airport/Louis Schreiner Field;KERV;29.967;-99.083;493 United States;Texas;Killeen-Ft Hood;KHLR;31.1;-97.3333;270 United States;Texas;Killeen-Gray AAF;KGRK;31.0667;-97.8333;0 United States;Texas;Killeen;KILE;31.0833;-97.6833;0 United States;Texas;Kingsville;KNQI;27.5;-97.8117;15 United States;Texas;La Grange, Fayette Regional Air Center Airport;K3T5;29.908;-96.950;99 United States;Texas;Lampasas, Lampasas Airport;KLZZ;31.106;-98.196;370 United States;Texas;Lancaster, Lancaster Airport;KLNC;32.579;-96.719;153 United States;Texas;Laredo;KLRD;27.55;-99.4667;0 United States;Texas;Laughlin;KDLF;29.1167;-100.4667;294 United States;Texas;Llano, Llano Municipal Airport;K6R9;30.784;-98.662;336 United States;Texas;Llano, Llano Municipal Airport;KAQO;30.784;-98.662;336 United States;Texas;Longview;KGGG;32.3833;-94.7139;107 United States;Texas;Lubbock;KLBB;33.6667;-101.8214;992 United States;Texas;Lufkin;KLFK;31.2333;-94.75;88 United States;Texas;Marfa;KMRF;30.367;-104.017;1478 United States;Texas;Mc Gregor;KPWG;31.4833;-97.3167;0 United States;Texas;McAllen;KMFE;26.1667;-98.2444;38 United States;Texas;McMullen, McMullen Target Site;KNMT;28.236;-98.724;79 United States;Texas;Mesquite, Mesquite Metro Airport;KHQZ;32.747;-96.530;136 United States;Texas;Midland, Midland Airpark;KMDD;32.036;-102.101;854 United States;Texas;Midland;KMAF;31.9333;-102.2086;872 United States;Texas;Midlothian/Waxahachie, Mid-Way Regional Airport;K4T6;32.456;-96.912;217 United States;Texas;Midlothian/Waxahachie, Mid-Way Regional Airport;KJWY;32.456;-96.912;217 United States;Texas;Mineola/Quitman, Wood County Airport;K3T1;32.742;-95.496;132 United States;Texas;Mineola/Quitman, Wood County Airport;KJDD;32.742;-95.496;132 United States;Texas;Mineral Wells;KMWL;32.7667;-98.0603;284 United States;Texas;Mount Pleasant, Mount Pleasant Regional Airport;KOSA;33.095;-94.961;111 United States;Texas;Mustang Island 31;KMIU;27.289;-96.737;0 United States;Texas;Mustang Island A85A;KMZG;27.727;-96.191;0 United States;Texas;N. Padre Island;KOPM;26.833;-96.940;0 United States;Texas;NEW BRAUNFELS MUNICIPAL AIRPORT;KBAZ;29.717;-98.050;198 United States;Texas;Nacogdoches;KOCH;31.5833;-94.7167;0 United States;Texas;ODESSA SCHLEMEYER FIELD;KODO;31.917;-102.400;915 United States;Texas;ORANGE GROVE, NALF;KNOG;28.483;-98.067;78 United States;Texas;Orange, Orange County Airport;KORG;30.069;-93.804;4 United States;Texas;PEARLAND REGIONAL AIRPORT;KLVJ;29.517;-95.250;13 United States;Texas;PORT ISABEL CAMERON;KPIL;26.167;-97.333;6 United States;Texas;Palacios;KPSX;28.7167;-96.2508;0 United States;Texas;Palestine, Palestine Municipal Airport;KPSN;31.779;-95.706;129 United States;Texas;Pampa, Perry Lefors Field Airport;KPPA;35.613;-100.996;989 United States;Texas;Paris;KPRX;33.6333;-95.45;0 United States;Texas;Pecos, Pecos Municipal Airport;KPEQ;31.382;-103.511;796 United States;Texas;Perryton, Perryton Ochiltree County Airport;KPYX;36.400;-100.733;890 United States;Texas;Plainview, Hale County Airport;KPVW;34.168;-101.717;1028 United States;Texas;Port Aransas Coast Guard Station;K9R1;27.833;-97.067;1 United States;Texas;Port Aransas, Mustang Beach Airport;K2R8;27.811;-97.089;2 United States;Texas;Port Aransas, Mustang Beach Airport;KRAS;27.812;-97.089;2 United States;Texas;Port Lavaca, Calhoun County Airport;KPKV;28.654;-96.681;9 United States;Texas;Port Lavaca, Calhoun County Airport;KT97;28.654;-96.681;9 United States;Texas;Randolph AFB;KRND;29.5333;-98.2833;0 United States;Texas;Reese Air Force Base / Lubbock;KREE;33.600;-102.050;1017 United States;Texas;Robstown, Nueces County Airport;KRBO;27.778;-97.690;24 United States;Texas;Robstown, Nueces County Airport;KT53;27.778;-97.690;24 United States;Texas;Rockport;KRKP;28.0833;-97.0464;6 United States;Texas;Rocksprings, Edwards County Airport;K69R;29.947;-100.174;723 United States;Texas;Rocksprings, Edwards County Airport;KECU;29.947;-100.174;723 United States;Texas;SUGARLAND REGIONAL AIRPORT;KSGR;29.617;-95.650;25 United States;Texas;Sabine Pass Coast Guard Station;K8R7;29.733;-93.867;1 United States;Texas;Sabine Pass;K28T;29.700;-93.950;5 United States;Texas;Sabine Pass;KRPE;29.7;-93.95;0 United States;Texas;San Angelo;KSJT;31.35;-100.4939;581 United States;Texas;San Antonio Nexrad;KEWX;29.700;-98.033;223 United States;Texas;San Antonio-Kelly AFB;KSKF;29.3833;-98.5833;0 United States;Texas;San Antonio-Stinson;KSSF;29.3333;-98.4717;176 United States;Texas;San Antonio;KSAT;29.5167;-98.4636;243 United States;Texas;San Marcos Automatic Weather Observing / Reporting System;KRJO;29.900;-97.867;182 United States;Texas;San Marcos, San Marcos Municipal Airport;KHYI;29.894;-97.865;182 United States;Texas;Sanderson;KP07;30.167;-102.417;865 United States;Texas;Seminole, Gaines County Airport;K31F;32.675;-102.653;1010 United States;Texas;Seminole, Gaines County Airport;KGNC;32.675;-102.653;1010 United States;Texas;Sheppard Air Force Base;KSHP;33.967;-98.483;314 United States;Texas;Sherman-Denison;KF39;33.7167;-96.6667;0 United States;Texas;Sherman/Denison, Grayson County Airport;KGYI;33.717;-96.667;228 United States;Texas;Snyder, Winston Field Airport;KSNK;32.693;-100.950;741 United States;Texas;Sonora, Sonora Municipal Airport;KE29;30.586;-100.648;652 United States;Texas;Sonora, Sonora Municipal Airport;KSOA;30.586;-100.648;652 United States;Texas;South Brazos A70;KT46;28.017;-95.867;23 United States;Texas;South Padre Island Heliport;KSPL;26.071;-97.157;3 United States;Texas;Stephenville, Clark Field Municipal Airport;KSEP;32.217;-98.183;403 United States;Texas;Sulphur Springs, Sulphur Springs Municipal Airport;KSLR;33.161;-95.621;149 United States;Texas;Sweetwater, Avenger Field Airport;KSWW;32.467;-100.466;725 United States;Texas;Temple;KTPL;31.15;-97.4;0 United States;Texas;Terrell;KTRL;32.7;-96.2683;144 United States;Texas;Tyler;KTYR;32.35;-95.4039;165 United States;Texas;Uvalde, Garner Field Airport;KUVA;29.211;-99.743;287 United States;Texas;Vernon, Wilbarger County Airport;KF05;34.226;-99.284;386 United States;Texas;Victoria;KVCT;28.85;-96.9297;31 United States;Texas;WALDRON FLD NOLF;KNVT;27.633;-97.317;8 United States;Texas;Waco;KACT;31.6167;-97.2278;151 United States;Texas;Weslaco, Mid Valley Airport;KT65;26.178;-97.973;21 United States;Texas;West Cameron;KCRH;28.909;-93.302;0 United States;Texas;West Houston / Lakeside;KIWS;29.817;-95.667;34 United States;Texas;Wharton, Wharton Regional Airport;K5R5;29.254;-96.154;31 United States;Texas;Wharton, Wharton Regional Airport;KARM;29.254;-96.154;31 United States;Texas;Wichita Falls;KSPS;33.9667;-98.4928;308 United States;Texas;Wink;KINK;31.7667;-103.2014;855 United States;Utah;Blanding;K4BL;37.6167;-109.4667;0 United States;Utah;Bryce Canyon;KBCE;37.7;-112.1456;2312 United States;Utah;Bullfrog Marina;KU17;37.500;-110.700;1110 United States;Utah;Cedar City;KCDC;37.7;-113.0967;1714 United States;Utah;Delta;KU24;39.3333;-112.5833;0 United States;Utah;Dugway;KDPG;40.1667;-112.9333;1325 United States;Utah;Eagle Range;KQCJ;41.050;-113.083;1294 United States;Utah;Eagle Range;KU16;41.050;-113.067;1292 United States;Utah;Granite Peak;KQCA;40.167;-113.350;1310 United States;Utah;Green River;KU28;39;-110.1667;0 United States;Utah;Hanksville;K4HV;38.3667;-110.7167;0 United States;Utah;Heber, Heber City Municipal-Russ McDonald Field Airport;K36U;40.482;-111.429;1718 United States;Utah;Little Mountain;KQCB;41.250;-112.250;1326 United States;Utah;Logan;KLGU;41.7667;-111.8539;1355 United States;Utah;MOAB CANYONLANDS FIELD;KCNY;38.767;-109.750;1388 United States;Utah;Milford;KMLF;38.4167;-113.0097;1534 United States;Utah;Ogden-Hill AFB;KHIF;41.1167;-111.9667;0 United States;Utah;Ogden;KOGD;41.1833;-112.0164;1353 United States;Utah;Price-Carbon;KPUC;39.6;-110.7547;2091 United States;Utah;Provo;KPVU;40.2167;-111.7167;0 United States;Utah;Roosevelt;KU67;40.300;-109.983;1553 United States;Utah;Salt Lake City, Salt Lake City Municipal 2 Airport;KU42;40.619;-111.993;1403 United States;Utah;Salt Lake City;KSLC;40.7667;-111.9694;1286 United States;Utah;Salt Lake City;KZLC;40.783;-111.950;1288 United States;Utah;Salt Lake Nexrad;KMTX;41.433;-112.750;2004 United States;Utah;St. George;KSGU;37.0833;-113.6;0 United States;Utah;Tooele;KT62;40.317;-112.300;1628 United States;Utah;Vernal;KU71;40.467;-109.533;1612 United States;Utah;Vernal;KVEL;40.4333;-109.5117;1604 United States;Utah;Wendover;KENV;40.7333;-114.0333;1292 United States;Vermont;BENNINGTON MORSE STATE AIRPORT ;KDDH;42.883;-73.250;252 United States;Vermont;Burlington;KBTV;44.4667;-73.1503;105 United States;Vermont;MORRISVILLE STOWE STATE AIRPORT ;KMVL;44.533;-72.617;223 United States;Vermont;Montpelier;KMPV;44.2;-72.5661;343 United States;Vermont;Newport;K9B2;44.933;-72.200;233 United States;Vermont;Rutland;KRUT;43.5333;-72.95;0 United States;Vermont;ST JOHNSBURY FAIRBANKS;K1V4;44.417;-72.017;212 United States;Vermont;Springfield;KVSF;43.3333;-72.5217;175 United States;Virginia;Abingdon;KVJI;36.6833;-82.0333;0 United States;Virginia;Ashland;KOFP;37.7;-77.4344;62 United States;Virginia;Cape Charles Coast Guard Station;KW51;37.250;-76.000;2 United States;Virginia;Cape Henry Coast Guard Light Station;K62W;36.933;-76.000;1 United States;Virginia;Charlottesville;KCHO;38.1333;-78.4558;192 United States;Virginia;Chesapeake, Chesapeake Municipal Airport;KCPK;36.666;-76.321;6 United States;Virginia;Chincoteague;K0W8;37.933;-75.383;2 United States;Virginia;Clarksville / Marks;KW63;36.600;-78.567;128 United States;Virginia;Culpeper, Culpeper County Airport;KCJR;38.527;-77.859;95 United States;Virginia;Danville;KDAN;36.5667;-79.3361;175 United States;Virginia;Dublin;KPSK;37.1333;-80.6833;0 United States;Virginia;Emporia, Emporia-Greensville Regional Airport;KEMV;36.687;-77.483;39 United States;Virginia;FENTRESS NALF;KNFE;36.700;-76.133;4 United States;Virginia;Farmville;KFVX;37.35;-78.4333;0 United States;Virginia;Fort Belvoir;KDAA;38.7167;-77.1833;0 United States;Virginia;Fort Eustis;KFAF;37.1333;-76.6167;0 United States;Virginia;Franklin;KFKN;36.7;-76.9;0 United States;Virginia;Ft. Pickett / Blackstone;KBKT;37.083;-77.950;130 United States;Virginia;Galax-Hillsville;KHLX;36.7667;-80.8167;0 United States;Virginia;Hampton;KLFI;37.0833;-76.35;6 United States;Virginia;Hot Springs;KHSP;37.95;-79.8333;0 United States;Virginia;Langley AFB;KLFI;37.0833;-76.35;6 United States;Virginia;Lee County Airport;K0VG;36.654;-83.218;430 United States;Virginia;Leesburg;KJYO;39.0833;-77.5667;0 United States;Virginia;Louisa, Louisa County Airport/Freeman Field;KLKU;38.010;-77.970;150 United States;Virginia;Luray Caverns Airport;KW45;38.667;-78.501;274 United States;Virginia;Lynchburg;KLYH;37.3167;-79.2067;295 United States;Virginia;Manassas;KHEF;38.7167;-77.5167;0 United States;Virginia;Marion-Wytheville;KMKJ;36.9;-81.35;0 United States;Virginia;Martinsville;KMTV;36.6333;-80.0167;0 United States;Virginia;Melfa;KMFV;37.65;-75.7667;0 United States;Virginia;Milford Haven Coast Guard Station;K63W;37.483;-76.317;1 United States;Virginia;Newport News;KPHF;37.1167;-76.4931;12 United States;Virginia;Norfolk / Chesapeak;KW39;36.900;-75.717;23 United States;Virginia;Norfolk NAS;KNGU;36.9333;-76.2958;8 United States;Virginia;Norfolk;KORF;36.9;-76.1919;14 United States;Virginia;Orange, Orange County Airport;KOMH;38.247;-78.046;142 United States;Virginia;Parramore Beach;K64W;37.533;-75.617;1 United States;Virginia;Petersburg;KPTB;37.1833;-77.5167;0 United States;Virginia;Quantico;KNYG;38.5;-77.2917;3 United States;Virginia;Richlands, Tazewell County Airport;K6V3;37.064;-81.798;808 United States;Virginia;Richmond;KRIC;37.5;-77.3233;50 United States;Virginia;Roanoke NEXRAD;KFCX;37.017;-80.267;904 United States;Virginia;Roanoke;KROA;37.3167;-79.9742;362 United States;Virginia;Shannon;KEZF;38.2667;-77.45;0 United States;Virginia;Smith Point / Sunnybank;KW71;37.883;-76.183;1 United States;Virginia;South Hill, Mecklenburg-Brunswick Regional Airport;KAVC;36.689;-78.054;135 United States;Virginia;Stafford, Stafford Regional Airport;KRMN;38.398;-77.455;65 United States;Virginia;Staunton;KSHD;38.2667;-78.9;0 United States;Virginia;Suffolk, Suffolk Municipal Airport;KSFQ;36.682;-76.602;22 United States;Virginia;Virginia Beach;KNTU;36.8167;-76.0283;6 United States;Virginia;Virginia Tech Airport;KBCB;37.2167;-80.4167;0 United States;Virginia;Volens;KVQN;36.950;-78.983;185 United States;Virginia;Wakefield;KAKQ;36.9667;-77.0011;33 United States;Virginia;Wallops Island;KWAL;37.9333;-75.4631;14 United States;Virginia;Waynesboro;KSHD;38.2667;-78.9;0 United States;Virginia;Weirwood / Kellam Field;KW08;37.467;-75.883;12 United States;Virginia;West Point, Middle Peninsula Regional Airport;KFYJ;37.521;-76.764;7 United States;Virginia;Williamsburg, Williamsburg-Jamestown Airport;KJGG;37.239;-76.716;15 United States;Virginia;Winchester;KOKV;39.15;-78.15;0 United States;Virginia;Wise;KLNP;36.9833;-82.5333;0 United States;Washington;Alki Point Coast Guard Light Station;K91S;47.517;-122.417;1 United States;Washington;Arlington Municipal;KAWO;48.167;-122.167;42 United States;Washington;Auburn;KZSE;47.283;-122.183;99 United States;Washington;Bellingham;KBLI;48.7833;-122.5392;50 United States;Washington;Bremerton;KPWT;47.5;-122.75;0 United States;Washington;Burlington / Mt Vern;K75S;48.467;-122.417;43 United States;Washington;Burlington/Mount Vernon, Skagit Regional Airport;KBVS;48.471;-122.421;44 United States;Washington;Burrows Island;KS38;48.083;-122.100;18 United States;Washington;Cape Disappointment;K82S;46.283;-124.050;55 United States;Washington;Cape Flattery Coast Guard Light Station;K93S;48.383;-124.733;26 United States;Washington;Colville Municipal;KCQV;48.550;-117.883;572 United States;Washington;DEER PARK AIRPORT;KDEW;47.967;-117.433;672 United States;Washington;Deer Park, Deer Park Airport;K07S;47.974;-117.428;672 United States;Washington;Destruction Island;KS53;47.667;-124.483;24 United States;Washington;ELLENSBURG BOWERS FIELD;KELN;47.033;-120.533;536 United States;Washington;Eastsound, Orcas Island Airport;KORS;48.708;-122.910;9 United States;Washington;Ephrata;KEPH;47.3;-119.5158;383 United States;Washington;Everett;KPAE;47.9167;-122.2825;180 United States;Washington;Fairchild;KSKA;47.6167;-117.65;0 United States;Washington;Fort Lewis;KGRF;47.1167;-122.55;87 United States;Washington;Friday Harbor;KFHR;48.5167;-123.0253;32 United States;Washington;Grays Harbor Coast Guard Station;K84S;46.917;-124.100;6 United States;Washington;Hanford;KHMS;46.567;-119.600;223 United States;Washington;Hoquiam;KHQM;46.9667;-123.92;7 United States;Washington;Kelso, Kelso-Longview Airport;KKLS;46.117;-122.900;6 United States;Washington;Moses Lake;KMWH;47.1833;-119.3133;362 United States;Washington;New Dungeness Coast Guard Station;K96S;48.167;-123.100;12 United States;Washington;OLF COUPEVILLE;KNRA;48.183;-122.633;61 United States;Washington;OMAK AIRPORT;KOMK;48.467;-119.517;397 United States;Washington;Oak Harbor;K76S;48.25;-122.6667;0 United States;Washington;Olympia;KOLM;46.9667;-122.9033;58 United States;Washington;Omak;K4OM;48.417;-119.533;374 United States;Washington;PEARSON AIRFIELD;KVUO;45.617;-122.650;8 United States;Washington;Pasco;KPSC;46.2667;-119.1167;121 United States;Washington;Point No Point Coast Guard Station;K97S;47.917;-122.533;1 United States;Washington;Point Robinson Coast Guard Light Station;K99S;47.383;-122.367;0 United States;Washington;Point Wilson Coast Guard Light Station;K53S;48.117;-122.750;1 United States;Washington;Port Angeles Coast Guard Air Station;KNOW;48.133;-123.400;5 United States;Washington;Port Angeles;KCLM;48.1167;-123.5053;85 United States;Washington;Pullman;KPUW;46.7333;-117.1097;773 United States;Washington;Quillayute River Coast Guard Light Station;K87S;47.900;-124.633;1 United States;Washington;Quillayute;KUIL;47.9333;-124.555;54 United States;Washington;Renton;KRNT;47.4833;-122.2128;21 United States;Washington;Seattle NEXRAD;KATX;48.200;-122.500;185 United States;Washington;Seattle-Boeing;KBFI;47.5333;-122.3136;4 United States;Washington;Seattle;KSEA;47.4333;-122.3136;136 United States;Washington;Shelton;KSHN;47.2333;-123.1408;82 United States;Washington;Skykomish, Skykomish State Airport;KS88;47.700;-121.333;304 United States;Washington;Smith Island Coast Guard Light Station;K86S;48.317;-122.850;1 United States;Washington;Spokane-Parkwater;KSFF;47.6833;-117.3203;609 United States;Washington;Spokane;KGEG;47.6167;-117.5278;735 United States;Washington;Stampede Pass;KSMP;47.2667;-121.3372;1208 United States;Washington;Tacoma-Lakewood;KTCM;47.15;-122.4833;87 United States;Washington;Tacoma;KTIW;47.2667;-122.5761;96 United States;Washington;Toledo;KTDO;46.4833;-122.8;0 United States;Washington;Walla Walla;KALW;46.0833;-118.2842;363 United States;Washington;Wenatchee;KEAT;47.3833;-120.2069;377 United States;Washington;West Point Coast Guard Light Station;K43S;47.667;-122.433;4 United States;Washington;Whidbey Island;KNUW;48.3333;-122.6506;8 United States;Washington;Willapa Harbor;K2S9;46.700;-123.817;5 United States;Washington;Yakima;KYKM;46.55;-120.5336;324 United States;West Virginia;Beckley;KBKW;37.7833;-81.1247;764 United States;West Virginia;Bluefield;KBLF;37.2833;-81.2078;873 United States;West Virginia;Buckhannon, Upshur County Regional Airport;KW22;39.000;-80.267;498 United States;West Virginia;Charleston;KCRW;38.3667;-81.5914;309 United States;West Virginia;Charleston;KRLX;38.317;-81.717;364 United States;West Virginia;Clarksburg;KCKB;39.3;-80.2247;360 United States;West Virginia;Elkins;KEKN;38.8833;-79.8528;603 United States;West Virginia;Huntington;KHTS;38.35;-82.555;254 United States;West Virginia;Lewisburg;KLWB;37.8667;-80.4;0 United States;West Virginia;Martinsburg;KMRB;39.4;-77.9844;164 United States;West Virginia;Morgantown;KMGW;39.6333;-79.9211;378 United States;West Virginia;Parkersburg;KPKB;39.3333;-81.4392;0 United States;West Virginia;Petersburg, Grant County Airport;KW99;38.983;-79.133;293 United States;West Virginia;Pineville, Kee Field Airport;KI16;37.600;-81.559;544 United States;West Virginia;Point Pleasant, Mason County Airport;K3I2;38.914;-82.098;196 United States;West Virginia;Sutton, Braxton County Airport;K48I;38.687;-80.652;387 United States;West Virginia;Wheeling;KHLG;40.1667;-80.6444;372 United States;West Virginia;White Sulphur Sprng;KSSU;37.767;-80.333;549 United States;Wisconsin;ASHLAND KENNEDY MEMORIAL;KASX;46.550;-90.917;252 United States;Wisconsin;Antigo;KAIG;45.15;-87.15;0 United States;Wisconsin;Appleton;KATW;44.25;-88.5167;0 United States;Wisconsin;BATTEN INTERNATIONAL AIRPORT;KRAC;42.767;-87.817;205 United States;Wisconsin;BOSCOBEL AIRPORT;KOVS;43.150;-90.683;205 United States;Wisconsin;Baraboo, Baraboo Wisconsin Dells Airport;KDLL;43.522;-89.771;298 United States;Wisconsin;Burlington, Burlington Municipal Airport;KBUU;42.691;-88.305;237 United States;Wisconsin;Burlington, Burlington Municipal Airport;KC52;42.691;-88.305;237 United States;Wisconsin;Clintonville, Clintonville Municipal Airport;KCLI;44.614;-88.731;251 United States;Wisconsin;Devils Island Light Station;K29Y;47.083;-90.733;192 United States;Wisconsin;Eagle River, Eagle River Union Airport;KEGV;45.932;-89.269;501 United States;Wisconsin;Eau Claire;KEAU;44.85;-91.485;0 United States;Wisconsin;Fond Du Lac;KFLD;43.7667;-88.4864;240 United States;Wisconsin;Green Bay;KGRB;44.4667;-88.1367;205 United States;Wisconsin;Hayward;KHYR;46.0167;-91.4503;370 United States;Wisconsin;Janesville;KJVL;42.6167;-89.0333;0 United States;Wisconsin;Juneau, Dodge County Airport;KUNU;43.427;-88.703;285 United States;Wisconsin;Kenosha Coast Guard Station;K16C;42.583;-87.750;223 United States;Wisconsin;Kenosha;KENW;42.5833;-87.9381;219 United States;Wisconsin;La Crosse;KLSE;43.8667;-91.2567;200 United States;Wisconsin;Ladysmith, Ruck County Airport;KRCX;45.497;-91.000;377 United States;Wisconsin;Land O' Lakes, Kings Land O' Lakes Airport;KLNL;46.154;-89.212;520 United States;Wisconsin;Lone Rock;KLNR;43.2;-90.1814;217 United States;Wisconsin;Madison;KMSN;43.1333;-89.3453;261 United States;Wisconsin;Manitowoc;KMTW;44.1333;-87.6833;0 United States;Wisconsin;Marshfield;KMFI;44.6333;-90.1875;379 United States;Wisconsin;Medford, Taylor County Airport;KMDZ;45.101;-90.303;448 United States;Wisconsin;Menomonie, Menomonie Municipal Airport-Score Field;KLUM;44.892;-91.868;273 United States;Wisconsin;Menomonie, Menomonie Municipal Airport-Score Field;KW11;44.892;-91.868;273 United States;Wisconsin;Merrill, Merrill Municipal Airport;KRRL;45.183;-89.700;401 United States;Wisconsin;Milwaukee Coast Guard Light Station;K15C;43.017;-87.950;179 United States;Wisconsin;Milwaukee NEXRAD;KMKX;42.967;-88.550;312 United States;Wisconsin;Milwaukee-Timmerman;KMWC;43.1167;-88.0333;0 United States;Wisconsin;Milwaukee;KMKE;42.95;-87.9044;206 United States;Wisconsin;Mineral Point, Iowa County Airport;KMRJ;42.885;-90.232;359 United States;Wisconsin;Minocqua;KARV;45.9333;-89.7333;0 United States;Wisconsin;Monroe, Monroe Municipal Airport;KEFT;42.615;-89.591;331 United States;Wisconsin;Mosinee;KCWA;44.7833;-89.6667;0 United States;Wisconsin;Neenah;KEEW;44.217;-88.550;275 United States;Wisconsin;New Richmond, New Richmond Municipal Airport;KRNH;45.148;-92.538;304 United States;Wisconsin;Osceola, L O Simenstad Municipal Airport;KOEO;45.309;-92.690;275 United States;Wisconsin;Oshkosh;KOSH;43.9667;-88.5581;248 United States;Wisconsin;Park Falls;KPKF;45.933;-90.450;462 United States;Wisconsin;Phillips;KPBH;45.7;-90.4;0 United States;Wisconsin;Prairie Du Chien, Prairie Du Chien Municipal Airport;KPDC;43.022;-91.125;201 United States;Wisconsin;Rhinelander;KRHI;45.6167;-89.4822;485 United States;Wisconsin;Rice Lake Municipal;KRIE;45.483;-91.717;347 United States;Wisconsin;Rice Lake, Rice Lake Regional-Carl's Field Airport;KRPD;45.418;-91.774;337 United States;Wisconsin;Sheboygan Coast Guard Station;K21C;43.750;-87.700;1 United States;Wisconsin;Sheboygan;KSBM;43.7667;-87.8497;232 United States;Wisconsin;Siren, Burnett County Airport;KRZN;45.823;-92.372;301 United States;Wisconsin;Sparta, Sparta / Fort McCoy Airport;KCMY;43.958;-90.738;255 United States;Wisconsin;Stevens Point, Stevens Point Municipal Airport;KSTE;44.545;-89.530;338 United States;Wisconsin;Sturgeon Bay;K0Y2;44.783;-87.317;176 United States;Wisconsin;Sturgeon Bay;KSUE;44.85;-87.4167;0 United States;Wisconsin;Superior;KSUW;46.6833;-92.0947;0 United States;Wisconsin;Tomahawk, Tomahawk Regional Airport;KT08;45.469;-89.806;453 United States;Wisconsin;Tomahawk, Tomahawk Regional Airport;KTKV;45.469;-89.806;453 United States;Wisconsin;Two Rivers Coast Guard Station;KC58;44.133;-87.550;176 United States;Wisconsin;Viroqua Municipal Airport;KY51;43.581;-90.900;390 United States;Wisconsin;Volk Field;KVOK;43.9333;-90.2667;0 United States;Wisconsin;Watertown;KRYV;43.167;-88.717;254 United States;Wisconsin;Waukesha;KSKC;43.033;-88.233;284 United States;Wisconsin;Waukesha;KUES;43.0333;-88.2369;0 United States;Wisconsin;Waupaca, Waupaca Municipal Airport;KPCZ;44.334;-89.015;252 United States;Wisconsin;Wausau;KAUW;44.9167;-89.6267;362 United States;Wisconsin;Wautoma, Wautoma Municipal Airport;KY50;44.041;-89.304;262 United States;Wisconsin;West Bend, West Bend Municipal Airport;KETB;43.422;-88.128;270 United States;Wisconsin;Wisconsin Rapids;KISW;44.35;-89.8369;307 United States;Wyoming;20 Mile Hill;KTMH;43.117;-106.333;1743 United States;Wyoming;Arlington;KARL;41.700;-106.217;2179 United States;Wyoming;BUFFALO JOHNSON COUNTY AIRPORT ;KBYG;44.383;-106.717;1514 United States;Wyoming;Beaver Rim;KBVR;42.583;-108.283;2072 United States;Wyoming;Belle Fourche;KBFU;43.933;-105.450;1422 United States;Wyoming;Big Piney;KBPI;42.5667;-110.1031;2117 United States;Wyoming;Bittercreek;KBIT;41.650;-108.583;2160 United States;Wyoming;Bordeaux;KBRX;41.933;-104.950;1422 United States;Wyoming;Casper;KCPR;42.8833;-106.4731;1621 United States;Wyoming;Cemetery Separa;KCMS;41.533;-109.467;1949 United States;Wyoming;Cheyenne;KCYS;41.15;-104.8069;1865 United States;Wyoming;Cody;KCOD;44.5167;-109.0167;1553 United States;Wyoming;Continental Div;KCTD;41.717;-107.783;2146 United States;Wyoming;DOUGLAS CONVERSE COUNTY;KDGW;42.800;-105.383;1502 United States;Wyoming;Dead Horse;KDHS;44.217;-106.100;1241 United States;Wyoming;Deer Creek;KDRC;42.833;-105.867;1543 United States;Wyoming;Douglas;K4DG;42.750;-105.383;1477 United States;Wyoming;Elk Mountain AWOS;KEHY;41.725;-106.459;2225 United States;Wyoming;Evanston;KEVW;41.2667;-111.0306;2177 United States;Wyoming;First Divide;KFIR;41.300;-110.767;2294 United States;Wyoming;Gillette;KGCC;44.3333;-105.5419;1320 United States;Wyoming;Hiland;KHLD;43.100;-107.317;1846 United States;Wyoming;I-25 Divide;KIDV;43.933;-106.650;1531 United States;Wyoming;Inyan Kara;KIKA;44.300;-104.633;1319 United States;Wyoming;Jackson;KJAC;43.6;-110.7333;0 United States;Wyoming;Lander;KLND;42.8;-108.7281;1694 United States;Wyoming;Laramie;KLAR;41.3;-105.675;2216 United States;Wyoming;Pathfinder Hill;KPAT;42.567;-106.850;1912 United States;Wyoming;Pinedale, Ralph Wenz Field Airport;KPNA;42.795;-109.807;2160 United States;Wyoming;Piney Creek;KPIN;44.567;-106.817;1392 United States;Wyoming;Pumpkin Vine;KPUM;41.050;-105.467;2420 United States;Wyoming;Rawlins;KRWL;41.8;-107.1997;0 United States;Wyoming;Riverton;KRIW;43.05;-108.4464;1664 United States;Wyoming;Rock Springs;KRKS;41.5833;-109.0653;0 United States;Wyoming;SOUTH BIG HORN COUNTY AIRPORT ;KGEY;44.517;-108.083;1199 United States;Wyoming;Sheridan;KSHR;44.7667;-106.9689;1202 United States;Wyoming;Sibley Peak;KSIB;42.450;-105.033;1500 United States;Wyoming;TORRINGTON MUNICIPAL AIRPORT;KTOR;42.050;-104.150;1282 United States;Wyoming;Vedauwoo;KVDW;41.150;-105.400;2542 United States;Wyoming;Whitaker;KWTR;41.683;-105.450;1888 United States;Wyoming;Worland;KWRL;43.95;-107.9508;1271 United States;Wyoming;Yellowstone;KP60;44.5333;-110.4211;2388 gpredict/data/sample.qth000066400000000000000000000001451427377236300156050ustar00rootroot00000000000000[QTH] DESCRIPTION=Sample QTH file LOCATION=Copenhagen, Denmark LAT=55.6167 LON=12.6500 ALT=5 WX=EKCH gpredict/data/satdata/000077500000000000000000000000001427377236300152275ustar00rootroot00000000000000gpredict/data/satdata/Makefile.am000066400000000000000000000001741427377236300172650ustar00rootroot00000000000000 gpredict_satdir = $(pkgdatadir)/data/satdata gpredict_sat_DATA = satellites.dat *.cat EXTRA_DIST = $(gpredict_sat_DATA) gpredict/data/satdata/amateur.cat000066400000000000000000000020711427377236300173560ustar00rootroot00000000000000Amateur Radio 14129 14781 20442 22825 22826 23439 24278 25397 25544 26931 27607 27844 27848 27939 28895 32785 32789 32791 32953 33499 35932 35933 35935 36122 37839 37841 37855 39090 39134 39135 39136 39417 39430 39440 39444 39446 39770 40012 40021 40025 40900 40901 40902 40903 40904 40905 40906 40907 40908 40910 40911 40912 40926 40928 40931 41459 41460 41557 41619 41847 42017 42759 42761 42778 43017 43137 43678 43700 43770 43786 43803 44354 44355 44419 44854 44909 45113 45119 45857 46495 46839 7530 22782 30776 33493 37854 38340 38735 40030 40034 40057 40071 40299 40300 40301 40377 40654 40719 40909 40958 41338 41339 41458 41558 41603 41607 41783 41789 41790 41844 41846 42766 42791 42829 42983 43019 43155 43156 43158 43186 43187 43188 43189 43192 43199 43640 43669 43677 43743 43758 43772 43773 43782 43784 43790 43792 43793 43798 43804 43805 43814 43855 43879 43880 43881 43933 43937 44045 44083 44103 44104 44339 44348 44352 44360 44420 44530 44878 44881 44885 45115 45258 45261 45263 45598 46276 46287 47309 47310 47311 47312 47313 47314 47315 47317 47318 47319 47320 gpredict/data/satdata/cubesat.cat000066400000000000000000000020561427377236300173510ustar00rootroot00000000000000Cubesat 27844 27848 28895 32785 32788 32789 32791 35932 35933 35935 36799 37855 38767 38768 39090 39134 39135 39136 39151 39161 39268 39269 39270 39417 39423 39427 39430 39440 39441 39444 39446 39465 39466 40020 40021 40024 40025 40032 40037 40039 40042 40043 40045 40046 40074 40119 40378 40379 40380 40659 40660 40926 40928 40936 40965 40966 41168 41170 41171 41340 41459 41460 41619 41788 41849 41850 41851 41852 41853 41854 41855 41954 41999 42000 42015 42016 42017 42765 42768 42775 42776 42777 42783 42784 42785 42786 42787 42788 42789 42790 42792 42793 42794 42846 42847 43015 43016 43021 43042 43043 43044 43049 43050 43052 43118 43131 43139 43140 43141 43142 43143 43196 43197 43467 43547 43549 43552 43556 43557 43614 43615 43616 43617 43666 43690 43693 43694 43696 43721 43722 43738 43759 43767 43780 43816 43817 43818 43850 43852 43907 43908 43940 44029 44030 44031 44033 44329 44330 44331 44332 44370 44371 44385 44398 44400 44406 44412 44419 44426 44427 44428 44429 44430 44431 44854 44877 45113 45727 46504 46505 46506 46507 46921 46922 46923 46924 46927 gpredict/data/satdata/galileo.cat000066400000000000000000000002511427377236300173320ustar00rootroot00000000000000Galileo Nav. 37846 37847 38857 38858 40128 40129 40544 40545 40889 40890 41174 41175 41549 41550 41859 41860 41861 41862 43055 43056 43057 43058 43564 43565 43566 43567 gpredict/data/satdata/glo-ops.cat000066400000000000000000000002661427377236300173040ustar00rootroot00000000000000Glonass Operational 29670 32275 32276 32393 32395 36111 36112 36400 36401 36402 37139 37372 37867 37868 37869 39155 39620 40001 40315 41330 41554 42939 43508 43687 44299 44850 45358 gpredict/data/satdata/gps-ops.cat000066400000000000000000000003041427377236300173050ustar00rootroot00000000000000GPS Operational 24876 26360 26407 27663 27704 28129 28190 28474 28874 29486 29601 32260 32384 32711 35752 36585 37753 38833 39166 39533 39741 40105 40294 40534 40730 41019 41328 43873 44506 45854 gpredict/data/satdata/iridium-NEXT.cat000066400000000000000000000007171427377236300201430ustar00rootroot00000000000000Iridium NEXT 41917 41918 41919 41920 41921 41922 41923 41924 41925 41926 42803 42804 42805 42806 42807 42808 42809 42810 42811 42812 42955 42956 42957 42958 42959 42960 42961 42962 42963 42964 43070 43071 43072 43073 43074 43075 43076 43077 43078 43079 43249 43250 43251 43252 43253 43254 43255 43256 43257 43258 43478 43479 43480 43481 43482 43569 43570 43571 43572 43573 43574 43575 43576 43577 43578 43922 43923 43924 43925 43926 43927 43928 43929 43930 43931 gpredict/data/satdata/iridium.cat000066400000000000000000000003021427377236300173550ustar00rootroot00000000000000Iridium 24793 24795 24796 24836 24841 24842 24870 24871 24873 24903 24907 24925 24926 24944 24946 24948 24967 25042 25043 25077 25078 25104 25105 25262 25273 25286 25319 25320 25344 25467 25527 gpredict/data/satdata/molniya.cat000066400000000000000000000003311427377236300173650ustar00rootroot00000000000000Molniya 7276 7376 7392 7780 8195 8601 9880 10455 10925 11057 11896 12156 13012 13070 13875 13890 15214 15429 15738 16393 17078 17328 18946 19807 21118 21196 21426 21706 22178 22671 22949 23420 23642 24960 25485 25847 gpredict/data/satdata/noaa.cat000066400000000000000000000002041427377236300166320ustar00rootroot00000000000000NOAA 4793 6235 6920 7529 9057 11060 11416 12553 13923 15427 16969 19531 21263 22739 23455 25338 26536 27453 28654 33591 37849 43013 gpredict/data/satdata/satellites.dat000066400000000000000000005240641427377236300201050ustar00rootroot00000000000000 [42784] VERSION=1.1 NAME=PEGASUS NICKNAME=PEGASUS TLE1=1 42784U 17036V 21023.87089358 .00001322 00000-0 57573-4 0 9997 TLE2=2 42784 97.2727 77.4821 0010826 337.9591 22.1180 15.23871195199335 [40902] VERSION=1.1 NAME=ZDPS 2B NICKNAME=ZDPS 2B TLE1=1 40902U 15049D 21024.06417653 .00001642 00000-0 81703-4 0 9991 TLE2=2 40902 97.4651 30.2274 0012289 329.0142 116.8413 15.18972471296028 [28222] VERSION=1.1 NAME=CZ-2C R/B NICKNAME=CZ-2C R/B TLE1=1 28222U 04012C 21023.91115178 .00000681 00000-0 44278-4 0 9998 TLE2=2 28222 97.7082 353.4639 0046856 357.7532 60.0776 15.10666599919277 [43141] VERSION=1.1 NAME=SPACEBEE-2 NICKNAME=SPACEBEE-2 TLE1=1 43141U 18004AG 21024.20260209 .00004677 00000-0 16392-3 0 9994 TLE2=2 43141 97.4365 104.3771 0007001 359.5519 0.5714 15.29942926168930 [43566] VERSION=1.1 NAME=GSAT0219 (PRN E36) NICKNAME=GSAT0219 (PRN E36) TLE1=1 43566U 18060C 21023.57993751 -.00000051 00000-0 00000-0 0 9990 TLE2=2 43566 56.9431 35.0314 0005656 278.0329 81.9469 1.70475977 15586 [43140] VERSION=1.1 NAME=SPACEBEE-3 NICKNAME=SPACEBEE-3 TLE1=1 43140U 18004AF 21024.14455503 .00004350 00000-0 15477-3 0 9990 TLE2=2 43140 97.4349 103.8956 0007130 1.0859 359.0395 15.29490207168903 [28059] VERSION=1.1 NAME=CZ-4B R/B NICKNAME=CZ-4B R/B TLE1=1 28059U 03049C 21023.81335024 -.00000008 00000-0 96943-5 0 9999 TLE2=2 28059 98.4912 308.8321 0049933 183.6061 176.4781 14.52631525914829 [43226] VERSION=1.1 NAME=GOES 17 NICKNAME=GOES 17 TLE1=1 43226U 18022A 21023.68285778 .00000111 00000-0 00000-0 0 9992 TLE2=2 43226 0.0579 240.8011 0000688 72.1621 278.8489 1.00271387 10654 [40907] VERSION=1.1 NAME=XW-2D NICKNAME=XW-2D TLE1=1 40907U 15049J 21024.08635984 .00000741 00000-0 41171-4 0 9991 TLE2=2 40907 97.4823 28.0515 0013310 331.8728 101.5254 15.16720620295718 [32953] VERSION=1.1 NAME=YUBILEINY (RS-30) NICKNAME=YUBILEINY (RS-30) TLE1=1 32953U 08025A 21024.08236538 .00000028 00000-0 12906-3 0 9992 TLE2=2 32953 82.5052 140.7252 0018480 291.8926 68.0188 12.43099453575047 [41170] VERSION=1.1 NAME=GALASSIA NICKNAME=GALASSIA TLE1=1 41170U 15077E 21023.91651809 .00002113 00000-0 72517-4 0 9993 TLE2=2 41170 14.9874 234.2878 0012372 346.6238 13.3755 15.15362694282894 [20625] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 20625U 90046B 21024.11894272 .00000210 00000-0 13353-3 0 9998 TLE2=2 20625 70.9985 265.0272 0016534 267.1176 92.8054 14.14665837584075 [40001] VERSION=1.1 NAME=COSMOS 2500 (755) NICKNAME=COSMOS 2500 (755) TLE1=1 40001U 14032A 21023.80211075 -.00000032 00000-0 00000-0 0 9993 TLE2=2 40001 65.7473 20.1093 0007861 223.0155 270.8903 2.13102426 51460 [43070] VERSION=1.1 NAME=IRIDIUM 135 NICKNAME=IRIDIUM 135 TLE1=1 43070U 17083A 21023.81883740 .00000080 00000-0 21632-4 0 9996 TLE2=2 43070 86.3946 65.4513 0002148 104.3206 255.8228 14.34218875161730 [12139] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 12139U 81003B 21023.82765367 .00002236 00000-0 10569-3 0 9997 TLE2=2 12139 82.9521 132.0544 0458256 243.5438 111.8074 14.57870445 38562 [42939] VERSION=1.1 NAME=COSMOS 2522 (752) NICKNAME=COSMOS 2522 (752) TLE1=1 42939U 17055A 21023.41158973 .00000059 00000-0 00000-0 0 9995 TLE2=2 42939 64.2725 259.4471 0006206 255.1134 239.9611 2.13102021 25989 [44031] VERSION=1.1 NAME=UNITE NICKNAME=UNITE TLE1=1 44031U 98067PX 21023.99828496 .00019382 00000-0 17290-3 0 9990 TLE2=2 44031 51.6373 286.0352 0003388 157.8903 202.2241 15.68446303112939 [40042] VERSION=1.1 NAME=POLYITAN-1 NICKNAME=POLYITAN-1 TLE1=1 40042U 14033AJ 21023.80563579 .00000460 00000-0 54792-4 0 9993 TLE2=2 40042 97.9355 314.8794 0013283 287.9725 72.0044 14.89090619357787 [20775] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 20775U 90078B 21024.17856412 .00001091 00000-0 52244-4 0 9990 TLE2=2 20775 82.9250 44.5024 0569018 230.4034 124.5599 14.35201426537382 [28932] VERSION=1.1 NAME=H-2A R/B NICKNAME=H-2A R/B TLE1=1 28932U 06002B 21023.91270955 .00000616 00000-0 62387-4 0 9991 TLE2=2 28932 98.3312 32.5225 0087650 321.0841 98.0288 14.92421847814028 [10455] VERSION=1.1 NAME=MOLNIYA 3-8 NICKNAME=MOLNIYA 3-8 TLE1=1 10455U 77105A 21023.26439306 .00001426 00000-0 29746-2 0 9999 TLE2=2 10455 62.5326 77.7574 7342262 278.6337 11.7609 2.00611903316905 [43250] VERSION=1.1 NAME=IRIDIUM 149 NICKNAME=IRIDIUM 149 TLE1=1 43250U 18030B 21023.76465120 .00000091 00000-0 25582-4 0 9991 TLE2=2 43250 86.3954 33.8549 0001817 98.4828 261.6574 14.34214716147735 [41861] VERSION=1.1 NAME=GSAT0213 (PRN E04) NICKNAME=GSAT0213 (PRN E04) TLE1=1 41861U 16069C 21023.63054856 .00000026 00000-0 00000-0 0 9995 TLE2=2 41861 54.6912 155.7318 0001964 259.3174 100.6172 1.70473754 26069 [22236] VERSION=1.1 NAME=COSMOS 2221 NICKNAME=COSMOS 2221 TLE1=1 22236U 92080A 21023.92994266 .00000179 00000-0 16827-4 0 9994 TLE2=2 22236 82.5066 255.3076 0015634 313.7359 46.2563 14.88002681502069 [4327] VERSION=1.1 NAME=SERT 2 NICKNAME=SERT 2 TLE1=1 04327U 70009A 21023.90838375 -.00000029 00000-0 15407-4 0 9996 TLE2=2 04327 99.1661 62.7835 0004058 276.6495 138.2941 13.58496147525869 [42958] VERSION=1.1 NAME=IRIDIUM 129 NICKNAME=IRIDIUM 129 TLE1=1 42958U 17061D 21023.82568641 .00000071 00000-0 18402-4 0 9998 TLE2=2 42958 86.3994 128.7026 0002163 86.1331 274.0112 14.34218631172380 [18946] VERSION=1.1 NAME=MOLNIYA 1-71 NICKNAME=MOLNIYA 1-71 TLE1=1 18946U 88017A 21022.99771386 .00000486 00000-0 00000-0 0 9997 TLE2=2 18946 63.5103 182.6279 6859891 259.3894 22.8028 2.00635154240812 [41557] VERSION=1.1 NAME=NUSAT-1 (FRESCO) NICKNAME=NUSAT-1 (FRESCO) TLE1=1 41557U 16033B 21024.10567537 .00001532 00000-0 57307-4 0 9995 TLE2=2 41557 97.3969 118.9327 0013962 33.6644 62.0734 15.28795254259472 [46390] VERSION=1.1 NAME=CZ-2F R/B NICKNAME=CZ-2F R/B TLE1=1 46390U 20063B 21023.87211445 .00033561 00000-0 13615-3 0 9990 TLE2=2 46390 50.2029 28.8034 0009170 195.6672 164.4029 15.85824799 22402 [31598] VERSION=1.1 NAME=COSMO-SKYMED 1 NICKNAME=COSMO-SKYMED 1 TLE1=1 31598U 07023A 21024.16970833 -.00000095 00000-0 -53805-5 0 9996 TLE2=2 31598 97.8837 210.1221 0001409 90.6906 269.4438 14.82156986737523 [31789] VERSION=1.1 NAME=GENESIS 2 NICKNAME=GENESIS 2 TLE1=1 31789U 07028A 21024.14943652 .00000552 00000-0 37379-4 0 9993 TLE2=2 31789 64.5070 341.6652 0028680 218.2894 141.6193 15.17575962748650 [43852] VERSION=1.1 NAME=STF-1 NICKNAME=STF-1 TLE1=1 43852U 18104D 21023.73233670 .00001560 00000-0 66619-4 0 9999 TLE2=2 43852 85.0318 30.3346 0014421 5.1466 354.9921 15.21910345116947 [33499] VERSION=1.1 NAME=KKS-1 (KISEKI) NICKNAME=KKS-1 (KISEKI) TLE1=1 33499U 09002H 21024.17609125 .00000119 00000-0 25356-4 0 9995 TLE2=2 33499 98.2887 250.7434 0009903 135.6710 224.5293 14.75609545645560 [44412] VERSION=1.1 NAME=BEESAT 9 NICKNAME=BEESAT 9 TLE1=1 44412U 19038AC 21023.83765874 .00001189 00000-0 70994-4 0 9994 TLE2=2 44412 97.5690 348.8644 0024056 92.0043 268.3943 15.12830281 85587 [22566] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 22566U 93016B 21023.89298109 .00000281 00000-0 16986-3 0 9998 TLE2=2 22566 71.0070 183.0242 0012453 286.6129 73.3626 14.14974333437513 [23560] VERSION=1.1 NAME=ERS-2 NICKNAME=ERS-2 TLE1=1 23560U 95021A 21023.80165560 .00000946 00000-0 43285-4 0 9997 TLE2=2 23560 98.5536 213.7802 0004259 129.6534 230.5076 15.23616218375662 [43257] VERSION=1.1 NAME=IRIDIUM 150 NICKNAME=IRIDIUM 150 TLE1=1 43257U 18030J 21023.95494075 .00000082 00000-0 22379-4 0 9991 TLE2=2 43257 86.3956 33.8246 0001976 90.6853 269.4569 14.34215294147761 [39161] VERSION=1.1 NAME=ESTCUBE 1 NICKNAME=ESTCUBE 1 TLE1=1 39161U 13021C 21024.14752611 .00000149 00000-0 31275-4 0 9999 TLE2=2 39161 97.9498 108.5981 0008417 252.3082 107.7252 14.72414109414514 [28874] VERSION=1.1 NAME=GPS BIIRM-1 (PRN 17) NICKNAME=GPS BIIRM-1 (PRN 17) TLE1=1 28874U 05038A 21023.72626159 -.00000079 00000-0 00000-0 0 9998 TLE2=2 28874 56.3223 351.5102 0138109 269.1018 271.1912 2.00580299112314 [40928] VERSION=1.1 NAME=TIANWANG 1A (TW-1A) NICKNAME=TIANWANG 1A (TW-1A) TLE1=1 40928U 15051D 21024.17158316 .00003754 00000-0 83123-4 0 9996 TLE2=2 40928 97.0916 52.5812 0011862 100.0578 332.7202 15.44324906299411 [42806] VERSION=1.1 NAME=IRIDIUM 115 NICKNAME=IRIDIUM 115 TLE1=1 42806U 17039D 21024.15213462 .00000092 00000-0 21202-4 0 9995 TLE2=2 42806 86.4478 65.2130 0004399 76.3388 283.8303 14.43280650190118 [43118] VERSION=1.1 NAME=CORVUS BC3 NICKNAME=CORVUS BC3 TLE1=1 43118U 18004H 21023.90693230 .00000896 00000-0 40094-4 0 9994 TLE2=2 43118 97.4210 98.1317 0010212 7.5741 352.5648 15.23845495168566 [29522] VERSION=1.1 NAME=DMSP 5D-3 F17 (USA 191) NICKNAME=DMSP 5D-3 F17 (USA 191) TLE1=1 29522U 06050A 21024.11463857 .00000020 00000-0 33544-4 0 9990 TLE2=2 29522 98.7918 43.0739 0008842 269.5857 90.4303 14.14033887733915 [20442] VERSION=1.1 NAME=LUSAT (LO-19) NICKNAME=LO-19 TLE1=1 20442U 90005G 21023.81105231 .00000005 00000-0 18494-4 0 9990 TLE2=2 20442 98.7225 338.1179 0010945 222.9095 137.1235 14.32974210620112 [44371] VERSION=1.1 NAME=SPACEBEE-8 NICKNAME=SPACEBEE-8 TLE1=1 44371U 19037G 21024.13532830 .00058950 00000-0 63444-3 0 9994 TLE2=2 44371 45.0032 298.4498 0010031 135.5364 224.6339 15.62887841 88950 [23455] VERSION=1.1 NAME=NOAA 14 [-] NICKNAME=NOAA 14 [-] TLE1=1 23455U 94089A 21023.92340412 -.00000011 00000-0 16154-4 0 9996 TLE2=2 23455 98.5138 71.4637 0009248 355.0066 5.1014 14.14155743344693 [14819] VERSION=1.1 NAME=COSMOS 1544 NICKNAME=COSMOS 1544 TLE1=1 14819U 84027A 21023.80427774 .00001302 00000-0 45540-4 0 9999 TLE2=2 14819 82.4842 141.6189 0014732 80.4672 279.8231 15.28496468 16492 [37868] VERSION=1.1 NAME=COSMOS 2477 (745) NICKNAME=COSMOS 2477 (745) TLE1=1 37868U 11064B 21023.83769058 -.00000006 00000-0 00000-0 0 9995 TLE2=2 37868 64.5593 139.7565 0016851 234.0099 166.1796 2.13101649 71786 [28485] VERSION=1.1 NAME=SWIFT NICKNAME=SWIFT TLE1=1 28485U 04047A 21024.03299615 .00000911 00000-0 31599-4 0 9998 TLE2=2 28485 20.5566 280.5060 0010913 327.9510 32.0260 15.04836590886764 [28353] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 28353U 04021B 21023.88660513 -.00000109 00000-0 -31896-4 0 9996 TLE2=2 28353 70.9985 197.0116 0005414 336.0300 24.0570 14.14233408858307 [40074] VERSION=1.1 NAME=UKUBE-1 NICKNAME=UKUBE-1 TLE1=1 40074U 14037F 21024.13593957 .00000182 00000-0 28801-4 0 9995 TLE2=2 40074 98.4426 231.5440 0005085 121.4435 238.7273 14.84436550354494 [5560] VERSION=1.1 NAME=ASTEX 1 NICKNAME=ASTEX 1 TLE1=1 05560U 71089A 21023.95100472 .00000064 00000-0 17443-4 0 9990 TLE2=2 05560 92.7204 267.9157 0013928 267.9203 92.0407 14.48110099591432 [14032] VERSION=1.1 NAME=COSMOS 1455 NICKNAME=COSMOS 1455 TLE1=1 14032U 83037A 21024.06311169 .00000480 00000-0 21496-4 0 9995 TLE2=2 14032 82.5139 225.2949 0017525 24.3920 335.8139 15.18593007 61135 [11896] VERSION=1.1 NAME=MOLNIYA 3-13 NICKNAME=MOLNIYA 3-13 TLE1=1 11896U 80063A 21023.54706405 .00000574 00000-0 00000-0 0 9997 TLE2=2 11896 62.5966 200.7559 7071203 276.0513 14.3653 2.00583077296880 [23642] VERSION=1.1 NAME=MOLNIYA 3-47 NICKNAME=MOLNIYA 3-47 TLE1=1 23642U 95042A 21023.25728043 -.00001058 00000-0 00000-0 0 9991 TLE2=2 23642 63.3699 131.8936 6814924 287.2622 12.8682 2.01964760186736 [39166] VERSION=1.1 NAME=GPS BIIF-4 (PRN 27) NICKNAME=GPS BIIF-4 (PRN 27) TLE1=1 39166U 13023A 21023.29880478 -.00000082 00000-0 00000-0 0 9999 TLE2=2 39166 55.9730 348.0940 0088031 31.3013 329.2182 2.00563746 56354 [46495] VERSION=1.1 NAME=SALSAT NICKNAME=SALSAT TLE1=1 46495U 20068K 21023.89778812 .00001044 00000-0 81269-4 0 9991 TLE2=2 46495 97.6814 322.3728 0016678 198.5850 161.4768 15.03333745 17618 [37846] VERSION=1.1 NAME=GSAT0101 (PRN E11) NICKNAME=GSAT0101 (PRN E11) TLE1=1 37846U 11060A 21023.50808019 -.00000052 00000-0 00000+0 0 9992 TLE2=2 37846 56.7609 35.2441 0003823 316.7137 43.3004 1.70475429 57652 [28939] VERSION=1.1 NAME=AKARI (ASTRO-F) NICKNAME=AKARI (ASTRO-F) TLE1=1 28939U 06005A 21023.92723581 .00003028 00000-0 79291-4 0 9992 TLE2=2 28939 98.2485 29.8455 0088383 272.3268 86.7856 15.35813499814711 [3230] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 03230U 68040B 21024.17452267 .00000161 00000-0 20333-4 0 9992 TLE2=2 03230 74.0366 126.2616 0028729 86.9740 273.4729 14.90717428831720 [19574] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 19574U 88093B 21024.20321780 .00000083 00000-0 71284-5 0 9994 TLE2=2 19574 82.5331 353.6180 0023187 93.8328 277.4337 14.83354121744684 [13154] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 13154U 82039B 21023.91179943 .00000318 00000-0 24223-4 0 9996 TLE2=2 13154 81.1833 183.2620 0039355 324.4807 35.3792 14.98833335100675 [43137] VERSION=1.1 NAME=FOX-1D (AO-92) NICKNAME=FOX-1D (AO-92) TLE1=1 43137U 18004AC 21023.71568028 .00001211 00000-0 51801-4 0 9990 TLE2=2 43137 97.4237 99.1661 0009066 11.8308 348.3141 15.24736248168603 [29507] VERSION=1.1 NAME=CZ-4B R/B NICKNAME=CZ-4B R/B TLE1=1 29507U 06046C 21023.93967714 .00000369 00000-0 33412-4 0 9998 TLE2=2 29507 97.7173 50.7091 0047027 140.0954 220.3742 15.00625341778430 [40659] VERSION=1.1 NAME=AEROCUBE 8A NICKNAME=AEROCUBE 8A TLE1=1 40659U 15025J 21024.14954803 .00033670 00000-0 26212-3 0 9995 TLE2=2 40659 55.0131 345.6757 0085587 34.9712 325.6908 15.66617144 78028 [42805] VERSION=1.1 NAME=IRIDIUM 120 NICKNAME=IRIDIUM 120 TLE1=1 42805U 17039C 21023.83152376 .00000084 00000-0 22821-4 0 9993 TLE2=2 42805 86.3940 65.5171 0002041 83.2522 276.8906 14.34218854188763 [27422] VERSION=1.1 NAME=IDEFIX & ARIANE 42P R/B NICKNAME=IDEFIX & ARIANE 42P R/B TLE1=1 27422U 02021B 21024.11027380 .00000004 00000-0 18172-4 0 9990 TLE2=2 27422 98.3836 342.3873 0011293 302.7857 57.2237 14.29306354974793 [43480] VERSION=1.1 NAME=IRIDIUM 147 NICKNAME=IRIDIUM 147 TLE1=1 43480U 18047E 21024.19405165 .00000014 00000-0 -19040-5 0 9994 TLE2=2 43480 86.3996 191.5902 0002173 89.1080 271.0364 14.34217601140128 [39465] VERSION=1.1 NAME=AEROCUBE 5A NICKNAME=AEROCUBE 5A TLE1=1 39465U 13072D 21023.82943995 .00004379 00000-0 34842-3 0 9994 TLE2=2 39465 120.4954 242.6694 0264239 110.1352 252.8333 14.79271513 73934 [11267] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 11267U 79011B 21023.83313362 .00000089 00000-0 67309-5 0 9999 TLE2=2 11267 82.5235 66.2778 0017229 165.5284 194.6431 14.89000995250181 [41337] VERSION=1.1 NAME=ASTRO-H (HITOMI) NICKNAME=ASTRO-H (HITOMI) TLE1=1 41337U 16012A 21023.78272974 .00000306 00000-0 17862-4 0 9999 TLE2=2 41337 31.0064 52.6964 0012283 88.6387 271.5655 14.98775242270584 [39136] VERSION=1.1 NAME=BEESAT-2 NICKNAME=BEESAT-2 TLE1=1 39136U 13015G 21024.14485173 .00001207 00000-0 67947-4 0 9991 TLE2=2 39136 64.8745 314.1906 0028869 262.8320 96.9524 15.18229197429003 [41175] VERSION=1.1 NAME=GSAT0208 (PRN E08) NICKNAME=GSAT0208 (PRN E08) TLE1=1 41175U 15079B 21023.33838979 .00000026 00000-0 00000-0 0 9996 TLE2=2 41175 55.0309 155.4283 0002034 330.3026 29.6436 1.70473687 31766 [39441] VERSION=1.1 NAME=NEE-02 KRYSAOR NICKNAME=NEE-02 KRYSAOR TLE1=1 39441U 13066AB 21023.89821235 .00000220 00000-0 38256-4 0 9995 TLE2=2 39441 97.6667 357.9469 0081495 355.8578 4.1947 14.75112357384900 [43478] VERSION=1.1 NAME=IRIDIUM 161 NICKNAME=IRIDIUM 161 TLE1=1 43478U 18047C 21023.92521191 .00000015 00000-0 -15500-5 0 9997 TLE2=2 43478 86.4520 191.8600 0001852 81.5131 278.6280 14.43278950140958 [41019] VERSION=1.1 NAME=GPS BIIF-11 (PRN 10) NICKNAME=GPS BIIF-11 (PRN 10) TLE1=1 41019U 15062A 21023.38605085 -.00000048 00000-0 00000-0 0 9995 TLE2=2 41019 55.4590 107.9740 0065303 212.2375 147.3893 2.00563938 38307 [17912] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 17912U 87038B 21024.09070612 .00000072 00000-0 58675-5 0 9995 TLE2=2 17912 82.5007 254.6353 0019400 210.1259 149.8842 14.83064201822902 [39417] VERSION=1.1 NAME=ZACUBE-1 (TSHEPISOSAT) NICKNAME=ZACUBE-1 (TSHEPISOSAT) TLE1=1 39417U 13066B 21023.90975993 .00000255 00000-0 38325-4 0 9996 TLE2=2 39417 97.5800 15.8433 0057216 275.2492 84.2194 14.81413925387678 [42778] VERSION=1.1 NAME=MAX VALIER SAT NICKNAME=MAX VALIER SAT TLE1=1 42778U 17036P 21023.86115388 .00001012 00000-0 45710-4 0 9998 TLE2=2 42778 97.2771 77.0813 0011062 333.3356 26.7311 15.23155003199278 [43049] VERSION=1.1 NAME=ASGARDIA 1 NICKNAME=ASGARDIA 1 TLE1=1 43049U 17071N 21023.79997671 .00004954 00000-0 10866-3 0 9995 TLE2=2 43049 51.6390 63.1123 0001952 140.0501 220.0630 15.45945201176418 [21426] VERSION=1.1 NAME=MOLNIYA 1-81 NICKNAME=MOLNIYA 1-81 TLE1=1 21426U 91043A 21023.11506337 -.00000060 00000-0 00000-0 0 9993 TLE2=2 21426 64.1443 48.9713 7070589 270.4608 16.1875 2.00610789216925 [5730] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 05730U 71119B 21023.91113084 .00001644 00000-0 10661-3 0 9991 TLE2=2 05730 73.8956 324.7673 0688807 306.7077 47.2641 14.04781488390409 [42812] VERSION=1.1 NAME=IRIDIUM 121 NICKNAME=IRIDIUM 121 TLE1=1 42812U 17039K 21023.90470748 .00000067 00000-0 17007-4 0 9996 TLE2=2 42812 86.3965 97.0523 0002255 91.3069 268.8385 14.34219581187424 [7004] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 07004U 73107B 21023.41913360 .00039181 22664-5 20338-3 0 9990 TLE2=2 07004 73.9162 14.8519 0074134 264.7266 94.5498 15.77013478441765 [38358] VERSION=1.1 NAME=NUSTAR NICKNAME=NUSTAR TLE1=1 38358U 12031A 21023.77800361 .00001001 00000-0 30681-4 0 9998 TLE2=2 38358 6.0269 108.4444 0011723 189.9291 170.0606 14.88434820468853 [11416] VERSION=1.1 NAME=NOAA 6 [-] NICKNAME=NOAA 6 [-] TLE1=1 11416U 79057A 21023.92816560 .00000052 00000-0 34939-4 0 9995 TLE2=2 11416 98.6642 28.9647 0009719 327.0437 33.0140 14.33614569168512 [24870] VERSION=1.1 NAME=IRIDIUM 17 [-] NICKNAME=IRIDIUM 17 [-] TLE1=1 24870U 97034B 21023.93080215 .00000113 00000-0 32208-4 0 9994 TLE2=2 24870 86.3988 188.3505 0001515 148.3646 211.7642 14.35973297233123 [41171] VERSION=1.1 NAME=VELOX-II NICKNAME=VELOX-II TLE1=1 41171U 15077F 21024.06580812 .00001642 00000-0 54385-4 0 9995 TLE2=2 41171 14.9912 285.3970 0008725 229.9355 130.0201 15.12167732282423 [12465] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 12465U 81046B 21023.90943030 .00000084 00000-0 30828-5 0 9991 TLE2=2 12465 81.2442 310.6925 0032895 237.6197 122.1847 15.14825066153652 [32384] VERSION=1.1 NAME=GPS BIIRM-5 (PRN 29) NICKNAME=GPS BIIRM-5 (PRN 29) TLE1=1 32384U 07062A 21023.27802653 -.00000080 00000-0 00000-0 0 9995 TLE2=2 32384 56.4248 352.2274 0012775 131.3786 311.0358 2.00561819 95981 [43256] VERSION=1.1 NAME=IRIDIUM 142 NICKNAME=IRIDIUM 142 TLE1=1 43256U 18030H 21023.77735058 .00000090 00000-0 25057-4 0 9994 TLE2=2 43256 86.3955 33.8463 0002168 92.9903 267.1541 14.34215711147719 [42847] VERSION=1.1 NAME=CORVUS BC1 NICKNAME=CORVUS BC1 TLE1=1 42847U 17042Y 21024.17957981 .00000031 00000-0 82138-5 0 9996 TLE2=2 42847 97.4942 263.5955 0007693 258.6526 101.3830 14.92317844192322 [41550] VERSION=1.1 NAME=GSAT0210 (PRN E01) NICKNAME=GSAT0210 (PRN E01) TLE1=1 41550U 16030B 21023.16613392 .00000008 00000-0 00000-0 0 9992 TLE2=2 41550 56.1242 275.9261 0003172 318.8333 41.2131 1.70474641 29064 [27858] VERSION=1.1 NAME=SCISAT 1 NICKNAME=SCISAT 1 TLE1=1 27858U 03036A 21023.68769468 .00000030 00000-0 92466-5 0 9999 TLE2=2 27858 73.9336 110.3154 0009400 267.6521 92.3577 14.77325596940173 [25397] VERSION=1.1 NAME=TECHSAT 1B (GO-32) NICKNAME=GO-32 TLE1=1 25397U 98043D 21024.12321071 -.00000014 00000-0 13364-4 0 9993 TLE2=2 25397 98.7552 330.2033 0002108 116.8540 243.2854 14.23699819171171 [43931] VERSION=1.1 NAME=IRIDIUM 167 NICKNAME=IRIDIUM 167 TLE1=1 43931U 19002K 21023.89203313 .00000064 00000-0 15763-4 0 9995 TLE2=2 43931 86.3964 97.0134 0002980 103.0371 257.1158 14.34216778106555 [12156] VERSION=1.1 NAME=MOLNIYA 1-49 NICKNAME=MOLNIYA 1-49 TLE1=1 12156U 81009A 21022.76894243 .00000745 00000-0 -24799-2 0 9993 TLE2=2 12156 61.8279 240.8122 7189005 255.4492 21.4317 2.05701318210985 [20323] VERSION=1.1 NAME=DELTA 1 R/B NICKNAME=DELTA 1 R/B TLE1=1 20323U 89089B 21024.08495691 .00000020 00000-0 14645-4 0 9991 TLE2=2 20323 97.1152 141.0152 0070271 256.5951 102.7406 14.48380095645334 [28654] VERSION=1.1 NAME=NOAA 18 NICKNAME=NOAA 18 TLE1=1 28654U 05018A 21024.16332206 .00000103 00000-0 80024-4 0 9993 TLE2=2 28654 99.0153 88.3271 0013664 332.4394 27.6052 14.12575396808169 [13068] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 13068U 82013B 21024.12631394 .00000328 00000-0 19964-4 0 9996 TLE2=2 13068 81.2053 158.2668 0021293 286.4108 73.4776 15.07560283121871 [22286] VERSION=1.1 NAME=COSMOS 2228 NICKNAME=COSMOS 2228 TLE1=1 22286U 92094A 21023.91709650 .00000215 00000-0 20496-4 0 9992 TLE2=2 22286 82.5187 211.8235 0022484 70.2806 290.0834 14.88221813497237 [24907] VERSION=1.1 NAME=IRIDIUM 22 [-] NICKNAME=IRIDIUM 22 [-] TLE1=1 24907U 97043E 21023.86819815 .00000094 00000-0 26565-4 0 9990 TLE2=2 24907 86.3941 65.7991 0002288 92.4097 267.7361 14.34369588226578 [46506] VERSION=1.1 NAME=NETSAT-1 NICKNAME=NETSAT-1 TLE1=1 46506U 20068W 21023.81202647 .00000263 00000-0 24727-4 0 9992 TLE2=2 46506 97.6817 321.9821 0006745 224.2319 135.8367 15.01893082 17538 [7276] VERSION=1.1 NAME=MOLNIYA 2-9 NICKNAME=MOLNIYA 2-9 TLE1=1 07276U 74026A 21023.80386982 -.00000009 00000-0 00000-0 0 9993 TLE2=2 07276 64.1724 303.7545 6727990 286.4113 13.7485 2.45094936236865 [44029] VERSION=1.1 NAME=CATSAT-2 NICKNAME=CATSAT-2 TLE1=1 44029U 98067PV 21024.07284720 .00057592 00000-0 28385-3 0 9995 TLE2=2 44029 51.6383 268.5099 0004273 181.6569 178.4420 15.81541496113205 [33591] VERSION=1.1 NAME=NOAA 19 NICKNAME=NOAA 19 TLE1=1 33591U 09005A 21024.11321805 .00000047 00000-0 50836-4 0 9992 TLE2=2 33591 99.1927 41.1717 0014063 173.6595 186.4756 14.12449631616545 [32393] VERSION=1.1 NAME=COSMOS 2434 (721) NICKNAME=COSMOS 2434 (721) TLE1=1 32393U 07065A 21023.56308459 .00000063 00000-0 00000-0 0 9995 TLE2=2 32393 64.5007 258.8718 0003952 71.8140 225.7413 2.13103004101801 [43015] VERSION=1.1 NAME=MIRATA NICKNAME=MIRATA TLE1=1 43015U 17073C 21023.69030139 .00001509 00000-0 11973-3 0 9999 TLE2=2 43015 97.7134 293.4965 0252541 49.9946 312.3138 14.80225906171797 [33053] VERSION=1.1 NAME=FGRST (GLAST) NICKNAME=FGRST (GLAST) TLE1=1 33053U 08029A 21023.69775402 .00000556 00000-0 14984-4 0 9997 TLE2=2 33053 25.5838 40.4188 0012520 38.2667 321.8755 15.11447900696592 [39197] VERSION=1.1 NAME=IRIS NICKNAME=IRIS TLE1=1 39197U 13033A 21023.79066389 .00000142 00000-0 26376-4 0 9990 TLE2=2 39197 97.9598 209.5334 0026582 235.9252 123.9435 14.78806768408649 [40965] VERSION=1.1 NAME=AEROCUBE 5C NICKNAME=AEROCUBE 5C TLE1=1 40965U 15058B 21023.84569702 .00000038 00000-0 23560-4 0 9993 TLE2=2 40965 64.7762 196.3490 0189738 356.1868 3.7776 14.74656620 73802 [28895] VERSION=1.1 NAME=CUBESAT XI-V NICKNAME=CO-58 TLE1=1 28895U 05043F 21023.86125748 .00000117 00000-0 31335-4 0 9991 TLE2=2 28895 98.0362 160.4613 0015633 308.4921 51.4879 14.63856380812850 [46924] VERSION=1.1 NAME=1998-067RU NICKNAME=1998-067RU TLE1=1 46924U 98067RU 21023.89748157 .00014285 00000-0 23188-3 0 9997 TLE2=2 46924 51.6430 334.9938 0001066 14.1718 345.9302 15.52994631 12408 [43258] VERSION=1.1 NAME=IRIDIUM 143 NICKNAME=IRIDIUM 143 TLE1=1 43258U 18030K 21023.93590758 .00000085 00000-0 23384-4 0 9995 TLE2=2 43258 86.3961 33.8439 0001963 105.4644 254.6769 14.34215128147697 [43803] VERSION=1.1 NAME=JY1SAT (JO-97) NICKNAME=JY1SAT (JO-97) TLE1=1 43803U 18099AX 21024.17213381 -.00000054 00000-0 30717-6 0 9994 TLE2=2 43803 97.6811 97.7873 0015400 168.2904 191.8679 14.95705976116926 [44398] VERSION=1.1 NAME=MOVE-IIB NICKNAME=MOVE-IIB TLE1=1 44398U 19038N 21023.90529909 .00001269 00000-0 74981-4 0 9991 TLE2=2 44398 97.5642 348.7871 0026298 87.8506 272.5736 15.13057686 85908 [24796] VERSION=1.1 NAME=IRIDIUM 4 [-] NICKNAME=IRIDIUM 4 [-] TLE1=1 24796U 97020E 21023.79514284 -.00000167 00000-0 -65312-4 0 9991 TLE2=2 24796 86.3979 126.6502 0002144 93.4141 266.7300 14.35271063242113 [25860] VERSION=1.1 NAME=OKEAN-O NICKNAME=OKEAN-O TLE1=1 25860U 99039A 21024.07036975 .00000039 00000-0 13117-4 0 9996 TLE2=2 25860 98.1986 52.7180 0000847 108.9062 251.2239 14.76707063158168 [38771] VERSION=1.1 NAME=METOP-B NICKNAME=METOP-B TLE1=1 38771U 12049A 21024.15461102 -.00000006 00000-0 17406-4 0 9990 TLE2=2 38771 98.7011 86.2767 0002504 88.6661 325.4813 14.21495584433375 [40911] VERSION=1.1 NAME=XW-2B NICKNAME=XW-2B TLE1=1 40911U 15049N 21024.08084066 .00000786 00000-0 43587-4 0 9997 TLE2=2 40911 97.4832 28.7413 0013099 332.6743 97.6150 15.16641847295608 [39766] VERSION=1.1 NAME=ALOS-2 NICKNAME=ALOS-2 TLE1=1 39766U 14029A 21024.12952626 -.00000226 00000-0 -23343-4 0 9990 TLE2=2 39766 97.9205 123.5738 0001504 91.1507 268.9842 14.79470579360323 [43074] VERSION=1.1 NAME=IRIDIUM 151 NICKNAME=IRIDIUM 151 TLE1=1 43074U 17083E 21023.82517684 .00000074 00000-0 19279-4 0 9999 TLE2=2 43074 86.3941 65.4705 0002726 96.2632 263.8875 14.34216384161725 [43254] VERSION=1.1 NAME=IRIDIUM 146 NICKNAME=IRIDIUM 146 TLE1=1 43254U 18030F 21024.11984984 .00000055 00000-0 12668-4 0 9990 TLE2=2 43254 86.3957 33.7264 0002123 100.4664 259.6771 14.34215963147762 [40306] VERSION=1.1 NAME=CZ-2C R/B NICKNAME=CZ-2C R/B TLE1=1 40306U 14071B 21024.12790074 .00003748 00000-0 76313-4 0 9991 TLE2=2 40306 97.3527 339.1459 0016671 82.0427 278.2714 15.46779089347962 [22739] VERSION=1.1 NAME=NOAA 13 [-] NICKNAME=NOAA 13 [-] TLE1=1 22739U 93050A 21024.02880622 -.00000005 00000-0 19021-4 0 9990 TLE2=2 22739 98.4616 25.6885 0009653 10.1277 350.0089 14.12773599415366 [23439] VERSION=1.1 NAME=RADIO ROSTO (RS-15) NICKNAME=RS-15 TLE1=1 23439U 94085A 21023.96075822 -.00000037 00000-0 15882-3 0 9992 TLE2=2 23439 64.8168 249.6489 0156311 1.2209 358.9068 11.27570196 74042 [40545] VERSION=1.1 NAME=GSAT0204 (PRN E22) NICKNAME=GSAT0204 (PRN E22) TLE1=1 40545U 15017B 21023.65676899 -.00000052 00000-0 00000+0 0 9993 TLE2=2 40545 56.5613 35.3600 0003321 246.3493 113.6602 1.70475318 36276 [41917] VERSION=1.1 NAME=IRIDIUM 106 NICKNAME=IRIDIUM 106 TLE1=1 41917U 17003A 21024.18135868 .00000008 00000-0 -41884-5 0 9991 TLE2=2 41917 86.4000 191.7382 0001529 94.9377 265.1993 14.34217716210845 [43925] VERSION=1.1 NAME=IRIDIUM 173 NICKNAME=IRIDIUM 173 TLE1=1 43925U 19002D 21024.20282062 .00000071 00000-0 18157-4 0 9990 TLE2=2 43925 86.3962 96.8765 0002377 98.3518 261.7947 14.34216251106601 [44429] VERSION=1.1 NAME=ENTRYSAT NICKNAME=ENTRYSAT TLE1=1 44429U 98067QP 21024.16979136 .00030137 00000-0 27418-3 0 9993 TLE2=2 44429 51.6346 301.5087 0003866 98.5313 261.6122 15.67670844 89012 [43055] VERSION=1.1 NAME=GSAT0215 (PRN E21) NICKNAME=GSAT0215 (PRN E21) TLE1=1 43055U 17079A 21023.09501625 .00000008 00000-0 00000-0 0 9995 TLE2=2 43055 56.0997 275.7665 0002489 323.5996 36.4537 1.70473825 19389 [39427] VERSION=1.1 NAME=TRITON-1 NICKNAME=TRITON-1 TLE1=1 39427U 13066M 21024.10644672 .00000236 00000-0 45125-4 0 9992 TLE2=2 39427 97.7576 339.1601 0114917 92.3835 269.0533 14.68136487384230 [36112] VERSION=1.1 NAME=COSMOS 2457 (733) NICKNAME=COSMOS 2457 (733) TLE1=1 36112U 09070B 21023.79477975 -.00000008 00000-0 00000-0 0 9991 TLE2=2 36112 64.2374 138.4314 0006299 155.5932 255.4063 2.13101369 86488 [43614] VERSION=1.1 NAME=SURFSAT NICKNAME=SURFSAT TLE1=1 43614U 18070B 21023.71080622 .00003402 00000-0 83163-4 0 9992 TLE2=2 43614 93.0249 245.8799 0013499 195.0697 165.0158 15.40776958132378 [43930] VERSION=1.1 NAME=IRIDIUM 170 NICKNAME=IRIDIUM 170 TLE1=1 43930U 19002J 21023.91728756 .00000140 00000-0 18341-4 0 9990 TLE2=2 43930 86.6096 97.0437 0002314 100.6495 259.4983 14.72247740109379 [29228] VERSION=1.1 NAME=RESURS-DK 1 NICKNAME=RESURS-DK 1 TLE1=1 29228U 06021A 21023.89822092 .00000105 00000-0 15182-4 0 9997 TLE2=2 29228 69.9367 346.7742 0002658 167.0377 193.0853 15.02632467805839 [40037] VERSION=1.1 NAME=PERSEUS-M2 NICKNAME=PERSEUS-M2 TLE1=1 40037U 14033AD 21023.76947521 .00000110 00000-0 18661-4 0 9992 TLE2=2 40037 97.8911 304.4381 0013358 314.1778 45.8339 14.86618333357397 [29499] VERSION=1.1 NAME=METOP-A NICKNAME=METOP-A TLE1=1 29499U 06044A 21024.18005470 .00000001 00000-0 19816-4 0 9991 TLE2=2 29499 98.4939 69.0573 0001123 68.0374 22.6838 14.21496174740247 [13070] VERSION=1.1 NAME=MOLNIYA 1-53 NICKNAME=MOLNIYA 1-53 TLE1=1 13070U 82015A 21023.76003699 -.00000099 00000-0 -12973-2 0 9999 TLE2=2 13070 62.5314 285.0120 7361552 278.9933 11.7134 2.00912692285038 [15354] VERSION=1.1 NAME=ERBS NICKNAME=ERBS TLE1=1 15354U 84108B 21023.79849781 .00003837 00000-0 71523-4 0 9993 TLE2=2 15354 57.0036 197.5186 0014690 104.8696 255.3991 15.51334101 1742 [43565] VERSION=1.1 NAME=GSAT0222 (PRN E33) NICKNAME=GSAT0222 (PRN E33) TLE1=1 43565U 18060B 21022.77291301 -.00000055 00000-0 00000-0 0 9996 TLE2=2 43565 56.9427 35.0518 0005951 281.6225 78.3534 1.70476131 15608 [40484] VERSION=1.1 NAME=MMS 3 NICKNAME=MMS 3 TLE1=1 40484U 15011C 21023.37500000 -.00001894 00000-0 00000-0 0 9994 TLE2=2 40484 32.4030 118.8028 8468484 27.9404 26.9153 0.28555057 11612 [40379] VERSION=1.1 NAME=GRIFEX NICKNAME=GRIFEX TLE1=1 40379U 15003D 21024.21461253 .00001227 00000-0 54325-4 0 9990 TLE2=2 40379 99.0843 126.1847 0129802 325.7312 33.5590 15.17276524330317 [11251] VERSION=1.1 NAME=METEOR 1-29 NICKNAME=METEOR 1-29 TLE1=1 11251U 79005A 21023.83444560 .00001505 00000-0 40633-4 0 9994 TLE2=2 11251 97.6688 322.3919 0016669 58.3964 301.8905 15.39407896842437 [32785] VERSION=1.1 NAME=CUTE-1.7+APD II (CO-65) NICKNAME=CUTE-1.7+APD II (CO-65) TLE1=1 32785U 08021C 21023.81913957 .00000278 00000-0 35386-4 0 9993 TLE2=2 32785 97.5954 8.4223 0014284 119.3037 240.9610 14.88616477690726 [43491] VERSION=1.1 NAME=FENGYUN 2H NICKNAME=FENGYUN 2H TLE1=1 43491U 18050A 21024.15672400 -.00000116 00000-0 00000+0 0 9997 TLE2=2 43491 0.1468 248.0816 0002551 247.7839 123.6354 1.00270542 9750 [15738] VERSION=1.1 NAME=MOLNIYA 3-24 NICKNAME=MOLNIYA 3-24 TLE1=1 15738U 85040A 21023.43956428 .00000152 00000-0 00000-0 0 9998 TLE2=2 15738 63.8352 170.8367 6546868 249.9188 32.0308 2.55627863290831 [42786] VERSION=1.1 NAME=DIAMOND BLUE NICKNAME=DIAMOND BLUE TLE1=1 42786U 17036X 21024.09488310 .00001181 00000-0 52432-4 0 9997 TLE2=2 42786 97.2724 77.1641 0010774 339.8794 20.2017 15.23409762199323 [45854] VERSION=1.1 NAME=GPS BIII-3 (PRN 23) NICKNAME=GPS BIII-3 (PRN 23) TLE1=1 45854U 20041A 21023.34796137 -.00000049 00000-0 00000-0 0 9995 TLE2=2 45854 55.1707 106.6681 0009278 142.8246 217.2682 2.00567415 4501 [44426] VERSION=1.1 NAME=SWIATOWID NICKNAME=SWIATOWID TLE1=1 44426U 98067QL 21024.13568826 .00110672 00000-0 51797-3 0 9997 TLE2=2 44426 51.6389 288.9101 0005920 136.7006 11.8797 15.82384304 89134 [15427] VERSION=1.1 NAME=NOAA 9 [-] NICKNAME=NOAA 9 [-] TLE1=1 15427U 84123A 21023.90048447 -.00000003 00000-0 21605-4 0 9993 TLE2=2 15427 98.9739 345.4027 0014957 167.4178 254.9058 14.16119916864494 [16908] VERSION=1.1 NAME=AJISAI (EGS) NICKNAME=AJISAI (EGS) TLE1=1 16908U 86061A 21023.92815972 -.00000093 00000-0 32004-4 0 9992 TLE2=2 16908 50.0104 85.7589 0011402 204.9034 144.9682 12.44493139235181 [45119] VERSION=1.1 NAME=HUSKYSAT-1 NICKNAME=HUSKYSAT-1 TLE1=1 45119U 19071J 21024.17312975 .00002806 00000-0 93101-4 0 9996 TLE2=2 45119 51.6433 15.9343 0012172 126.8812 233.3287 15.34753531 55005 [43770] VERSION=1.1 NAME=FOX-1CLIFF (AO-95) NICKNAME=FOX-1CLIFF (AO-95) TLE1=1 43770U 18099N 21024.17058914 -.00000017 00000-0 36129-5 0 9997 TLE2=2 43770 97.6832 97.4359 0014678 174.5566 185.5817 14.95176673116894 [42808] VERSION=1.1 NAME=IRIDIUM 117 NICKNAME=IRIDIUM 117 TLE1=1 42808U 17039F 21024.20915568 .00000064 00000-0 15923-4 0 9991 TLE2=2 42808 86.3962 96.8878 0001761 90.9507 269.1891 14.34218659187622 [27386] VERSION=1.1 NAME=ENVISAT NICKNAME=ENVISAT TLE1=1 27386U 02009A 21023.99780494 .00000035 00000-0 24964-4 0 9992 TLE2=2 27386 98.1419 25.4876 0001183 87.4549 332.7296 14.38009755990318 [40544] VERSION=1.1 NAME=GSAT0203 (PRN E26) NICKNAME=GSAT0203 (PRN E26) TLE1=1 40544U 15017A 21022.11607955 -.00000059 00000-0 00000-0 0 9997 TLE2=2 40544 56.5540 35.3858 0005507 263.2249 96.7544 1.70475081 35580 [40119] VERSION=1.1 NAME=BRITE-PL2 (HEWELIUSZ) NICKNAME=BRITE-PL2 (HEWELIUSZ) TLE1=1 40119U 14049B 21023.79177111 .00000113 00000-0 19736-4 0 9990 TLE2=2 40119 97.8906 119.8176 0018758 108.0194 252.3067 14.84591703348384 [40024] VERSION=1.1 NAME=NANOSATC-BR1 NICKNAME=NANOSATC-BR1 TLE1=1 40024U 14033Q 21023.81629907 .00000453 00000-0 52540-4 0 9993 TLE2=2 40024 97.9423 318.2263 0010852 289.4526 70.5518 14.90282454358059 [43075] VERSION=1.1 NAME=IRIDIUM 134 NICKNAME=IRIDIUM 134 TLE1=1 43075U 17083F 21023.86323082 .00000081 00000-0 21818-4 0 9991 TLE2=2 43075 86.3949 65.4345 0001888 91.3534 268.7878 14.34214226161695 [26070] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 26070U 00006B 21023.86663791 .00000206 00000-0 12995-3 0 9992 TLE2=2 26070 71.0027 70.0807 0015531 156.3458 203.8382 14.15471150 83829 [13552] VERSION=1.1 NAME=COSMOS 1408 NICKNAME=COSMOS 1408 TLE1=1 13552U 82092A 21023.58199562 .00001054 00000-0 36676-4 0 9992 TLE2=2 13552 82.5657 58.7149 0019373 77.6069 282.7337 15.28324377 97665 [20465] VERSION=1.1 NAME=COSMOS 2058 NICKNAME=COSMOS 2058 TLE1=1 20465U 90010A 21024.20562837 .00000172 00000-0 12235-4 0 9996 TLE2=2 20465 82.4877 60.9164 0015614 171.2332 188.9166 14.98125994682486 [39134] VERSION=1.1 NAME=SOMP NICKNAME=SOMP TLE1=1 39134U 13015E 21023.91285006 .00001459 00000-0 72678-4 0 9992 TLE2=2 39134 64.8626 282.2688 0011710 219.1462 140.8820 15.21902826429212 [11060] VERSION=1.1 NAME=TIROS N [-] NICKNAME=TIROS N [-] TLE1=1 11060U 78096A 21023.87020675 -.00000010 00000-0 16374-4 0 9998 TLE2=2 11060 98.7105 84.0832 0011020 164.1362 196.0161 14.18293778399377 [9057] VERSION=1.1 NAME=NOAA 5 [-] NICKNAME=NOAA 5 [-] TLE1=1 09057U 76077A 21024.19225951 -.00000034 00000-0 77063-4 0 9996 TLE2=2 09057 102.0220 354.2345 0010170 0.8798 10.6230 12.37757346 10959 [43908] VERSION=1.1 NAME=LUME 1 NICKNAME=LUME 1 TLE1=1 43908U 18111AJ 21024.19660321 .00001308 00000-0 53773-4 0 9994 TLE2=2 43908 97.2486 283.4303 0022563 82.6982 277.6820 15.25686988115678 [12553] VERSION=1.1 NAME=NOAA 7 [-] NICKNAME=NOAA 7 [-] TLE1=1 12553U 81059A 21024.09443230 -.00000019 00000-0 13285-4 0 9997 TLE2=2 12553 99.0648 55.2657 0012361 120.6873 239.5520 14.17287997 45868 [43255] VERSION=1.1 NAME=IRIDIUM 148 NICKNAME=IRIDIUM 148 TLE1=1 43255U 18030G 21023.94860152 .00000121 00000-0 36134-4 0 9999 TLE2=2 43255 86.3957 33.8129 0002420 94.3411 265.8061 14.34216198147778 [25105] VERSION=1.1 NAME=IRIDIUM 24 [-] NICKNAME=IRIDIUM 24 [-] TLE1=1 25105U 97082B 21023.95129527 .00000119 00000-0 31325-4 0 9996 TLE2=2 25105 86.3900 39.2328 0010629 340.1232 19.9552 14.40064419212099 [19807] VERSION=1.1 NAME=MOLNIYA 1-75 NICKNAME=MOLNIYA 1-75 TLE1=1 19807U 89014A 21022.19247487 -.00000294 00000-0 00000-0 0 9992 TLE2=2 19807 64.3675 344.6255 7036171 270.0543 16.7055 2.00572620233829 [41459] VERSION=1.1 NAME=E-ST@R-II NICKNAME=E-ST@R-II TLE1=1 41459U 16025D 21024.27805516 .00003049 00000-0 15313-3 0 9992 TLE2=2 41459 98.1220 152.1684 0162666 187.8932 232.2323 15.07315095260695 [25043] VERSION=1.1 NAME=IRIDIUM 38 [-] NICKNAME=IRIDIUM 38 [-] TLE1=1 25043U 97069E 21023.94609785 .00000101 00000-0 27962-4 0 9993 TLE2=2 25043 86.3988 187.0492 0001134 50.1715 309.9582 14.36235403215451 [43571] VERSION=1.1 NAME=IRIDIUM 158 NICKNAME=IRIDIUM 158 TLE1=1 43571U 18061C 21024.07011810 .00000016 00000-0 -14610-5 0 9998 TLE2=2 43571 86.4010 160.0917 0002001 103.9696 256.1723 14.34218873130991 [23087] VERSION=1.1 NAME=COSMOS 2278 NICKNAME=COSMOS 2278 TLE1=1 23087U 94023A 21023.71126730 -.00000323 00000-0 -14551-3 0 9992 TLE2=2 23087 71.0548 127.2765 0009264 347.5815 12.5078 14.13820844380325 [44428] VERSION=1.1 NAME=VCC A NICKNAME=VCC A TLE1=1 44428U 98067QN 21023.80366295 .00022464 00000-0 23337-3 0 9998 TLE2=2 44428 51.6383 307.3956 0003923 93.3582 266.7862 15.64527085 88905 [43073] VERSION=1.1 NAME=IRIDIUM 130 NICKNAME=IRIDIUM 130 TLE1=1 43073U 17083D 21024.19938688 .00000074 00000-0 19386-4 0 9999 TLE2=2 43073 86.3952 65.3828 0002320 91.4142 268.7320 14.34215863161757 [43759] VERSION=1.1 NAME=SIRION PATHFINDER-2 NICKNAME=SIRION PATHFINDER-2 TLE1=1 43759U 18099B 21023.93349002 -.00000222 00000-0 -14933-4 0 9995 TLE2=2 43759 97.6831 97.5571 0014922 160.3170 199.8632 14.95403490116885 [37855] VERSION=1.1 NAME=M-CUBED & EXP-1 PRIME NICKNAME=M-CUBED & EXP-1 PRIME TLE1=1 37855U 11061F 21023.52497385 .00001733 00000-0 91137-4 0 9997 TLE2=2 37855 101.7264 231.7655 0168578 141.5576 219.7789 15.07114949504344 [16393] VERSION=1.1 NAME=MOLNIYA 3-27 NICKNAME=MOLNIYA 3-27 TLE1=1 16393U 85117A 21023.33797531 .00000093 00000-0 00000-0 0 9992 TLE2=2 16393 64.6251 142.1758 6667292 253.8002 28.0192 2.12398185263343 [26360] VERSION=1.1 NAME=GPS BIIR-4 (PRN 20) NICKNAME=GPS BIIR-4 (PRN 20) TLE1=1 26360U 00025A 21023.92692910 -.00000050 00000-0 00000-0 0 9996 TLE2=2 26360 53.6704 99.9992 0058076 164.5604 259.7557 2.00563804151750 [43780] VERSION=1.1 NAME=MOVE-II NICKNAME=MOVE-II TLE1=1 43780U 18099Y 21023.91864726 .00000222 00000-0 25032-4 0 9992 TLE2=2 43780 97.6842 97.5722 0013773 172.7054 187.4370 14.95691472116869 [40730] VERSION=1.1 NAME=GPS BIIF-10 (PRN 08) NICKNAME=GPS BIIF-10 (PRN 08) TLE1=1 40730U 15033A 21023.34344768 -.00000083 00000-0 00000-0 0 9995 TLE2=2 40730 55.4844 347.1627 0061423 355.8986 4.0496 2.00551217 40466 [45727] VERSION=1.1 NAME=M2 PATHFINDER NICKNAME=M2 PATHFINDER TLE1=1 45727U 20037E 21023.76107461 -.00000017 00000-0 38431-5 0 9990 TLE2=2 45727 97.7039 204.7852 0011745 291.3941 68.6021 14.91300785 30854 [43467] VERSION=1.1 NAME=UBAKUSAT NICKNAME=UBAKUSAT TLE1=1 43467U 98067NQ 20362.27906033 .06269310 12352-4 52456-3 0 9996 TLE2=2 43467 51.6190 354.3668 0001241 137.3285 222.7838 16.38845679150702 [43570] VERSION=1.1 NAME=IRIDIUM 166 NICKNAME=IRIDIUM 166 TLE1=1 43570U 18061B 21024.10183839 .00000075 00000-0 19760-4 0 9996 TLE2=2 43570 86.4008 160.0706 0001822 99.7963 260.3439 14.34216978131022 [24278] VERSION=1.1 NAME=JAS-2 (FO-29) NICKNAME=FO-29 TLE1=1 24278U 96046B 21023.81614362 -.00000041 00000-0 -70209-5 0 9997 TLE2=2 24278 98.5839 110.8661 0350680 164.1616 197.0831 13.53102169206689 [29155] VERSION=1.1 NAME=EWS-G1 (GOES 13) NICKNAME=EWS-G1 (GOES 13) TLE1=1 29155U 06018A 21023.91351571 .00000049 00000-0 00000-0 0 9990 TLE2=2 29155 0.3803 103.7669 0006320 135.0018 275.0507 1.00274551 23612 [42768] VERSION=1.1 NAME=LITUANICASAT-2 NICKNAME=LITUANICASAT-2 TLE1=1 42768U 17036D 21023.86466532 .00002435 00000-0 99453-4 0 9990 TLE2=2 42768 97.2794 78.2773 0012934 322.8565 37.1777 15.25254680199426 [44330] VERSION=1.1 NAME=UGUISU NICKNAME=UGUISU TLE1=1 44330U 98067QF 21023.79284657 .00023408 00000-0 23452-3 0 9996 TLE2=2 44330 51.6353 304.9554 0006508 108.6167 251.5536 15.65403492 91395 [39533] VERSION=1.1 NAME=GPS BIIF-5 (PRN 30) NICKNAME=GPS BIIF-5 (PRN 30) TLE1=1 39533U 14008A 21022.79901043 .00000092 00000-0 00000-0 0 9997 TLE2=2 39533 53.7078 229.7583 0048562 199.2383 160.6306 2.00553542 50161 [43076] VERSION=1.1 NAME=IRIDIUM 137 NICKNAME=IRIDIUM 137 TLE1=1 43076U 17083G 21023.80615607 .00000080 00000-0 21588-4 0 9996 TLE2=2 43076 86.3949 65.5153 0002556 96.0457 264.1030 14.34219028161755 [26464] VERSION=1.1 NAME=CLUSTER II-FM8 (TANGO) NICKNAME=CLUSTER II-FM8 (TANGO) TLE1=1 26464U 00045B 21024.98687746 .00000136 00000-0 00000-0 0 9995 TLE2=2 26464 132.4214 343.3504 4682622 188.8074 359.1939 0.44219256 11575 [40059] VERSION=1.1 NAME=OCO 2 NICKNAME=OCO 2 TLE1=1 40059U 14035A 21023.88861015 .00000063 00000-0 24038-4 0 9996 TLE2=2 40059 98.2151 327.3980 0000965 79.6212 280.5095 14.57095676349123 [44406] VERSION=1.1 NAME=LUCKY-7 NICKNAME=LUCKY-7 TLE1=1 44406U 19038W 21023.85842196 .00000841 00000-0 51578-4 0 9993 TLE2=2 44406 97.5704 348.8908 0026055 86.8553 273.5658 15.12616812 85883 [40660] VERSION=1.1 NAME=AEROCUBE 8B NICKNAME=AEROCUBE 8B TLE1=1 40660U 15025K 21024.19219966 .00033842 00000-0 25793-3 0 9990 TLE2=2 40660 55.0103 342.6596 0084386 37.6331 323.0573 15.67226577 78050 [29049] VERSION=1.1 NAME=FORMOSAT-3 FM5 NICKNAME=FORMOSAT-3 FM5 TLE1=1 29049U 06011C 21023.68485046 .00000047 00000-0 34585-4 0 9991 TLE2=2 29049 72.0209 104.0290 0034182 21.8918 338.3670 14.28825913771041 [32276] VERSION=1.1 NAME=COSMOS 2432 (719) NICKNAME=COSMOS 2432 (719) TLE1=1 32276U 07052B 21023.71215019 -.00000030 00000-0 00000-0 0 9992 TLE2=2 32276 66.0504 21.6863 0011711 317.0707 156.4664 2.13103470103103 [25344] VERSION=1.1 NAME=IRIDIUM 73 [-] NICKNAME=IRIDIUM 73 [-] TLE1=1 25344U 98032C 21023.91983157 .00000118 00000-0 25546-4 0 9997 TLE2=2 25344 86.4431 6.3556 0002156 72.5980 287.5460 14.49270838197944 [41847] VERSION=1.1 NAME=CAS-2T & KS-1Q NICKNAME=CAS-2T & KS-1Q TLE1=1 41847U 16066G 21024.18040487 .00000055 00000-0 19548-4 0 9995 TLE2=2 41847 98.6242 82.5594 0364361 290.9748 65.2817 14.38138204221145 [35933] VERSION=1.1 NAME=BEESAT-1 NICKNAME=BEESAT-1 TLE1=1 35933U 09051C 21023.51261673 .00000105 00000-0 34534-4 0 9996 TLE2=2 35933 98.6046 220.7577 0005763 174.9368 185.1888 14.56544140601939 [41891] VERSION=1.1 NAME=CYGFM03 NICKNAME=CYGFM03 TLE1=1 41891U 16078H 21023.66755783 .00000553 00000-0 30337-4 0 9993 TLE2=2 41891 34.9551 123.7497 0013366 224.8171 135.1461 15.15340518227532 [36411] VERSION=1.1 NAME=GOES 15 NICKNAME=GOES 15 TLE1=1 36411U 10008A 21023.68468973 .00000065 00000-0 00000-0 0 9994 TLE2=2 36411 0.4085 98.7735 0002198 311.4808 191.6075 1.00280436 39913 [23088] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 23088U 94023B 21023.72829497 .00000056 00000-0 53846-4 0 9996 TLE2=2 23088 70.9993 38.7783 0005621 262.7532 97.2951 14.14679943381460 [40889] VERSION=1.1 NAME=GSAT0205 (PRN E24) NICKNAME=GSAT0205 (PRN E24) TLE1=1 40889U 15045A 21020.96586555 -.00000007 00000-0 00000-0 0 9996 TLE2=2 40889 55.9837 276.1094 0005809 12.5340 347.5455 1.70474789 33370 [21423] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 21423U 91042B 21023.89811044 .00000076 00000-0 70192-5 0 9998 TLE2=2 21423 82.4948 170.8737 0016168 255.8890 104.0527 14.79813389576269 [42759] VERSION=1.1 NAME=ZHUHAI-1 02 (CAS-4B) NICKNAME=ZHUHAI-1 02 (CAS-4B) TLE1=1 42759U 17034B 21024.04868778 .00000207 00000-0 25902-4 0 9990 TLE2=2 42759 43.0180 254.8716 0010754 333.8159 174.0720 15.10049135199310 [32958] VERSION=1.1 NAME=FENGYUN 3A NICKNAME=FENGYUN 3A TLE1=1 32958U 08026A 21024.18284135 .00000014 00000-0 26631-4 0 9991 TLE2=2 32958 98.4322 4.7589 0009746 60.7677 299.4473 14.18645524656127 [42787] VERSION=1.1 NAME=NUDTSAT NICKNAME=NUDTSAT TLE1=1 42787U 17036Y 21023.91552036 .00001958 00000-0 79980-4 0 9994 TLE2=2 42787 97.2776 79.4852 0010571 333.5205 26.5491 15.25515452199290 [43926] VERSION=1.1 NAME=IRIDIUM 169 NICKNAME=IRIDIUM 169 TLE1=1 43926U 19002E 21023.80681485 .00000087 00000-0 21798-4 0 9990 TLE2=2 43926 86.4251 128.6411 0004786 12.2990 347.8324 14.38613380106941 [43928] VERSION=1.1 NAME=IRIDIUM 175 NICKNAME=IRIDIUM 175 TLE1=1 43928U 19002G 21023.90493317 .00000138 00000-0 18018-4 0 9996 TLE2=2 43928 86.6082 96.8908 0002098 111.5666 248.5775 14.72255248109359 [21118] VERSION=1.1 NAME=MOLNIYA 1-80 NICKNAME=MOLNIYA 1-80 TLE1=1 21118U 91012A 21023.00624823 -.00001149 00000-0 00000+0 0 9994 TLE2=2 21118 64.7557 30.7935 6876674 283.9419 13.3349 2.05250499220515 [44854] VERSION=1.1 NAME=DUCHIFAT-3 NICKNAME=DUCHIFAT-3 TLE1=1 44854U 19089C 21023.95340461 .00000337 00000-0 33517-4 0 9998 TLE2=2 44854 36.9664 235.0538 0007815 35.9237 324.2025 14.99300656 61409 [41923] VERSION=1.1 NAME=IRIDIUM 114 NICKNAME=IRIDIUM 114 TLE1=1 41923U 17003G 21024.16233007 .00000011 00000-0 -32080-5 0 9992 TLE2=2 41923 86.4000 191.6471 0001924 102.6336 257.5075 14.34217548210907 [46839] VERSION=1.1 NAME=BY70-3 NICKNAME=BY70-3 TLE1=1 46839U 20079N 21024.13884355 .00002369 00000-0 77443-4 0 9993 TLE2=2 46839 97.2568 100.8510 0007580 17.6623 41.6693 15.32683718 12094 [43767] VERSION=1.1 NAME=CORVUS BC4 NICKNAME=CORVUS BC4 TLE1=1 43767U 18099K 21024.15772050 .00000317 00000-0 34293-4 0 9996 TLE2=2 43767 97.6812 96.9361 0012320 163.1624 197.0014 14.94846560116879 [14699] VERSION=1.1 NAME=COSMOS 1536 NICKNAME=COSMOS 1536 TLE1=1 14699U 84013A 21023.80387603 -.00000068 00000-0 -66902-5 0 9992 TLE2=2 14699 82.5276 134.1937 0011570 237.1302 122.8812 15.05722076990019 [25527] VERSION=1.1 NAME=IRIDIUM 2 [-] NICKNAME=IRIDIUM 2 [-] TLE1=1 25527U 98066A 21023.92325712 .00001388 00000-0 64333-4 0 9992 TLE2=2 25527 85.5311 333.3829 0006366 288.3540 71.7009 15.19106601218092 [43817] VERSION=1.1 NAME=SPACEBEE-5 NICKNAME=SPACEBEE-5 TLE1=1 43817U 18099BM 21024.19575798 .00001057 00000-0 97050-4 0 9998 TLE2=2 43817 97.6925 99.2372 0013898 157.0652 203.1193 14.96877123116522 [23343] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 23343U 94074B 21023.93298426 .00000024 00000-0 10672-4 0 9996 TLE2=2 23343 97.9694 80.6029 0007495 150.9243 21.8837 14.76858999410959 [43197] VERSION=1.1 NAME=GOMX-4A NICKNAME=GOMX-4A TLE1=1 43197U 18015F 21024.09139257 .00001045 00000-0 44594-4 0 9994 TLE2=2 43197 97.4622 157.5813 0020083 52.5828 61.8097 15.25011286165531 [41889] VERSION=1.1 NAME=CYGFM06 NICKNAME=CYGFM06 TLE1=1 41889U 16078F 21023.62666218 .00000538 00000-0 29520-4 0 9995 TLE2=2 41889 34.9581 124.6969 0014084 222.2059 137.7568 15.15354354227530 [36402] VERSION=1.1 NAME=COSMOS 2460 (732) NICKNAME=COSMOS 2460 (732) TLE1=1 36402U 10007C 21023.52070868 -.00000032 00000-0 00000-0 0 9993 TLE2=2 36402 65.9185 20.4682 0002659 272.9391 265.5750 2.13106521 84821 [40128] VERSION=1.1 NAME=GSAT0201 (PRN E18) NICKNAME=GSAT0201 (PRN E18) TLE1=1 40128U 14050A 21023.31413919 -.00000105 00000-0 00000-0 0 9991 TLE2=2 40128 50.5249 352.6066 1652068 106.5421 272.2217 1.85519364 41759 [26411] VERSION=1.1 NAME=CLUSTER II-FM6 (SALSA) NICKNAME=CLUSTER II-FM6 (SALSA) TLE1=1 26411U 00041B 21025.05575058 .00000157 00000-0 00000-0 0 9997 TLE2=2 26411 132.8448 344.9340 6099436 193.9910 359.1498 0.44222407 11604 [6235] VERSION=1.1 NAME=NOAA 2 (ITOS-D) [-] NICKNAME=NOAA 2 (ITOS-D) [-] TLE1=1 06235U 72082A 21023.88413213 -.00000022 00000-0 15120-3 0 9990 TLE2=2 06235 101.8853 359.3968 0004100 333.7932 80.2382 12.53131615208148 [37389] VERSION=1.1 NAME=X-SAT NICKNAME=X-SAT TLE1=1 37389U 11015C 21024.08938433 -.00000053 00000-0 -50600-5 0 9991 TLE2=2 37389 98.4057 76.3230 0014220 9.9390 350.2079 14.24386288507694 [21706] VERSION=1.1 NAME=MOLNIYA 3-41 NICKNAME=MOLNIYA 3-41 TLE1=1 21706U 91065A 21023.50684346 -.00000740 00000-0 00000-0 0 9993 TLE2=2 21706 64.1315 218.9643 6713399 262.0024 22.9523 2.04358080216490 [41862] VERSION=1.1 NAME=GSAT0214 (PRN E05) NICKNAME=GSAT0214 (PRN E05) TLE1=1 41862U 16069D 21020.25812656 .00000029 00000-0 00000-0 0 9994 TLE2=2 41862 54.6891 155.8205 0001077 263.6389 96.3100 1.70473719 25997 [42783] VERSION=1.1 NAME=DIAMOND RED NICKNAME=DIAMOND RED TLE1=1 42783U 17036U 21024.09685390 .00001195 00000-0 53021-4 0 9991 TLE2=2 42783 97.2721 77.1298 0010994 338.8155 21.2625 15.23411244199334 [24903] VERSION=1.1 NAME=IRIDIUM 26 [-] NICKNAME=IRIDIUM 26 [-] TLE1=1 24903U 97043A 21023.83732498 .00000109 00000-0 31206-4 0 9999 TLE2=2 24903 86.3940 63.5197 0002127 88.1300 272.0140 14.35436713226365 [24793] VERSION=1.1 NAME=IRIDIUM 7 [-] NICKNAME=IRIDIUM 7 [-] TLE1=1 24793U 97020B 21023.84227334 .00000074 00000-0 19482-4 0 9993 TLE2=2 24793 86.3987 128.6887 0002046 91.6675 268.4756 14.34360806241699 [43132] VERSION=1.1 NAME=PICSAT NICKNAME=PICSAT TLE1=1 43132U 18004X 21024.14914216 .00001645 00000-0 68357-4 0 9992 TLE2=2 43132 97.4253 99.9474 0009240 7.2277 352.9093 15.25216026168687 [29479] VERSION=1.1 NAME=HINODE (SOLAR-B) NICKNAME=HINODE (SOLAR-B) TLE1=1 29479U 06041A 21023.95086061 .00000062 00000-0 20547-4 0 9995 TLE2=2 29479 98.1541 39.9621 0017824 38.2572 321.9892 14.65119077766172 [43786] VERSION=1.1 NAME=ITASAT 1 NICKNAME=ITASAT 1 TLE1=1 43786U 18099AE 21023.91836211 -.00000060 00000-0 -20382-6 0 9993 TLE2=2 43786 97.6848 97.7661 0015464 169.2774 190.8780 14.95488244116880 [24960] VERSION=1.1 NAME=MOLNIYA 1-90 NICKNAME=MOLNIYA 1-90 TLE1=1 24960U 97054A 21023.18986574 .00000003 00000-0 55192-4 0 9991 TLE2=2 24960 63.5638 283.0474 6315875 300.7741 12.1298 3.18685659191745 [43131] VERSION=1.1 NAME=MICROMAS-2A NICKNAME=MICROMAS-2A TLE1=1 43131U 18004W 21023.88014654 .00002228 00000-0 88454-4 0 9996 TLE2=2 43131 97.4274 100.7263 0008566 4.6210 355.5106 15.26383012168702 [29051] VERSION=1.1 NAME=FORMOSAT-3 FM4 NICKNAME=FORMOSAT-3 FM4 TLE1=1 29051U 06011E 21023.95941848 .00000027 00000-0 26529-4 0 9998 TLE2=2 29051 72.0060 5.0942 0070642 263.7072 95.6015 14.28862396773653 [23802] VERSION=1.1 NAME=POLAR NICKNAME=POLAR TLE1=1 23802U 96013A 21023.18799829 .00000296 00000-0 00000-0 0 9992 TLE2=2 23802 78.7065 247.1010 6123474 276.0281 21.8626 1.29846395119269 [40966] VERSION=1.1 NAME=AEROCUBE 7 NICKNAME=AEROCUBE 7 TLE1=1 40966U 15058C 21023.91491906 .00000064 00000-0 26353-4 0 9994 TLE2=2 40966 64.7763 194.2966 0188702 355.8185 4.1330 14.74987341 73827 [25273] VERSION=1.1 NAME=IRIDIUM 57 [-] NICKNAME=IRIDIUM 57 [-] TLE1=1 25273U 98019B 21023.92572903 .00000073 00000-0 18866-4 0 9994 TLE2=2 25273 86.3957 96.9530 0002266 95.6217 264.5238 14.34413620194593 [44332] VERSION=1.1 NAME=SPOOQY-1 NICKNAME=SPOOQY-1 TLE1=1 44332U 98067QH 21024.16506129 .00022122 00000-0 22311-3 0 9996 TLE2=2 44332 51.6362 302.9635 0005796 113.7936 246.3668 15.65279165 91424 [39741] VERSION=1.1 NAME=GPS BIIF-6 (PRN 06) NICKNAME=GPS BIIF-6 (PRN 06) TLE1=1 39741U 14026A 21023.57515696 -.00000049 00000-0 00000-0 0 9993 TLE2=2 39741 56.2953 48.1496 0024720 294.1553 65.6433 2.00561641 49018 [43142] VERSION=1.1 NAME=SPACEBEE-1 NICKNAME=SPACEBEE-1 TLE1=1 43142U 18004AH 21023.65115103 .00005051 00000-0 17396-3 0 9997 TLE2=2 43142 97.4372 104.2451 0006905 1.0816 359.0439 15.30477094168863 [28480] VERSION=1.1 NAME=CZ-2C R/B NICKNAME=CZ-2C R/B TLE1=1 28480U 04046B 21023.92114816 -.00000068 00000-0 -10221-4 0 9992 TLE2=2 28480 98.0591 47.5228 0140788 292.2957 127.7501 14.25736728841830 [23561] VERSION=1.1 NAME=ARIANE 40+ R/B NICKNAME=ARIANE 40+ R/B TLE1=1 23561U 95021B 21024.16745657 .00000029 00000-0 24545-4 0 9999 TLE2=2 23561 98.6969 72.4157 0006209 326.5723 101.5325 14.38005475350515 [25723] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 25723U 99022C 21023.83323616 .00063237 00000-0 21072-3 0 9997 TLE2=2 25723 48.4064 223.6915 0003719 264.8172 95.2363 15.89526530212507 [28773] VERSION=1.1 NAME=SUZAKU (ASTRO-EII) NICKNAME=SUZAKU (ASTRO-EII) TLE1=1 28773U 05025A 21023.66561118 .00001212 00000-0 53820-4 0 9999 TLE2=2 28773 31.3830 24.3520 0004634 263.7417 96.2703 15.18030290857444 [43575] VERSION=1.1 NAME=IRIDIUM 163 NICKNAME=IRIDIUM 163 TLE1=1 43575U 18061G 21023.87985563 .00000070 00000-0 18038-4 0 9990 TLE2=2 43575 86.4006 160.1596 0002053 111.6482 248.4933 14.34216733130978 [17973] VERSION=1.1 NAME=COSMOS 1844 NICKNAME=COSMOS 1844 TLE1=1 17973U 87041A 21024.20254218 -.00000071 00000-0 -11803-4 0 9997 TLE2=2 17973 70.9007 17.7795 0033394 306.8848 52.9213 14.14120503739324 [25407] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 25407U 98045B 21023.77190928 -.00000172 00000-0 -62978-4 0 9993 TLE2=2 25407 71.0112 154.5739 0007923 340.3950 19.6868 14.15831651162261 [21196] VERSION=1.1 NAME=MOLNIYA 3-40 NICKNAME=MOLNIYA 3-40 TLE1=1 21196U 91022A 21023.00904048 -.00001237 00000-0 00000-0 0 9990 TLE2=2 21196 64.8600 24.0087 6913304 280.7042 14.0403 2.03025938219326 [14129] VERSION=1.1 NAME=PHASE 3B (AO-10) NICKNAME=AO-10 TLE1=1 14129U 83058B 21021.82556569 .00000147 00000-0 00000-0 0 9995 TLE2=2 14129 25.7887 179.0897 6065622 303.3308 12.4702 2.05866858254908 [43924] VERSION=1.1 NAME=IRIDIUM 168 NICKNAME=IRIDIUM 168 TLE1=1 43924U 19002C 21024.21551238 .00000062 00000-0 15156-4 0 9990 TLE2=2 43924 86.3965 96.9022 0002480 96.8647 263.2831 14.34216561106615 [41168] VERSION=1.1 NAME=ATHENOXAT 1 NICKNAME=ATHENOXAT 1 TLE1=1 41168U 15077C 21023.98243990 .00002151 00000-0 75189-4 0 9995 TLE2=2 41168 14.9875 242.7139 0011205 318.9303 78.5190 15.15097126282830 [17590] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 17590U 87027B 21024.04135212 .00000162 00000-0 10494-3 0 9993 TLE2=2 17590 71.0014 256.8613 0002824 100.7364 259.4077 14.16792816750635 [41920] VERSION=1.1 NAME=IRIDIUM 102 NICKNAME=IRIDIUM 102 TLE1=1 41920U 17003D 21023.93401269 .00000007 00000-0 -44994-5 0 9992 TLE2=2 41920 86.3998 191.7407 0002180 92.2535 267.8911 14.34216679210883 [27601] VERSION=1.1 NAME=H-2A R/B NICKNAME=H-2A R/B TLE1=1 27601U 02056E 21024.11964455 -.00000091 00000-0 -18071-4 0 9996 TLE2=2 27601 98.2041 54.2633 0071715 341.0695 85.9667 14.31993519946267 [40267] VERSION=1.1 NAME=HIMAWARI-8 NICKNAME=HIMAWARI-8 TLE1=1 40267U 14060A 21023.84631160 -.00000263 00000-0 00000-0 0 9999 TLE2=2 40267 0.0529 187.2488 0001330 113.2169 268.2321 1.00271483 23000 [20262] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 20262U 89080C 21024.19800671 .00000050 00000-0 59244-5 0 9992 TLE2=2 20262 82.5943 292.5195 1237846 133.7986 237.2476 12.48954594426123 [42807] VERSION=1.1 NAME=IRIDIUM 118 NICKNAME=IRIDIUM 118 TLE1=1 42807U 17039E 21023.91107055 .00000069 00000-0 17454-4 0 9997 TLE2=2 42807 86.3964 97.0376 0002499 96.6997 263.4484 14.34216317187549 [43056] VERSION=1.1 NAME=GSAT0216 (PRN E25) NICKNAME=GSAT0216 (PRN E25) TLE1=1 43056U 17079B 21019.86809192 -.00000012 00000-0 00000-0 0 9992 TLE2=2 43056 56.1023 275.8549 0004044 303.1674 56.8596 1.70473922 19344 [40905] VERSION=1.1 NAME=2015-049G NICKNAME=2015-049G TLE1=1 40905U 15049G 21024.06008181 .00000698 00000-0 41108-4 0 9991 TLE2=2 40905 97.4949 24.9774 0014943 343.3660 101.9049 15.14801558295470 [45113] VERSION=1.1 NAME=ORBITAL FACTORY 2 (OF-2) NICKNAME=ORBITAL FACTORY 2 (OF-2) TLE1=1 45113U 19071C 21023.95976913 .00002207 00000-0 75898-4 0 9991 TLE2=2 45113 51.6438 17.5107 0012786 129.4737 230.7379 15.34636659 54975 [16719] VERSION=1.1 NAME=COSMOS 1743 NICKNAME=COSMOS 1743 TLE1=1 16719U 86034A 21023.82941313 .00000710 00000-0 35341-4 0 9992 TLE2=2 16719 82.5537 141.3994 0012906 46.3530 72.8496 15.15891915894817 [25977] VERSION=1.1 NAME=HELIOS 1B NICKNAME=HELIOS 1B TLE1=1 25977U 99064A 21024.19756209 .00000039 00000-0 12001-4 0 9996 TLE2=2 25977 98.3012 193.1346 0001602 41.8224 318.3111 14.82526866139124 [43013] VERSION=1.1 NAME=NOAA 20 NICKNAME=NOAA 20 TLE1=1 43013U 17073A 21024.11302541 -.00000016 00000-0 13363-4 0 9993 TLE2=2 43013 98.7412 324.8546 0001364 83.7198 276.4133 14.19548543164962 [32791] VERSION=1.1 NAME=SEEDS II (CO-66) NICKNAME=SEEDS II (CO-66) TLE1=1 32791U 08021J 21023.70416107 .00000497 00000-0 55260-4 0 9999 TLE2=2 32791 97.5581 14.3484 0014783 88.6481 271.6431 14.91253887691201 [18153] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 18153U 87055B 21023.84756860 .00000077 00000-0 64545-5 0 9998 TLE2=2 18153 82.5020 308.2238 0023017 67.4078 292.9568 14.83312373792451 [21088] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 21088U 91006B 21023.83222595 .00000010 00000-0 -47259-5 0 9993 TLE2=2 21088 82.9436 121.3900 0021624 231.6959 250.6188 13.77146754506544 [43615] VERSION=1.1 NAME=CP7 (DAVE) NICKNAME=CP7 (DAVE) TLE1=1 43615U 18070C 21023.70334920 .00003328 00000-0 82006-4 0 9997 TLE2=2 43615 93.0252 245.8504 0013670 195.0499 165.0351 15.40541256132363 [43196] VERSION=1.1 NAME=GOMX-4B NICKNAME=GOMX-4B TLE1=1 43196U 18015E 21024.09693033 .00000597 00000-0 27006-4 0 9990 TLE2=2 43196 97.4633 157.4194 0019629 51.3894 308.9097 15.24694685165519 [26931] VERSION=1.1 NAME=PCSAT (NO-44) NICKNAME=NO-44 TLE1=1 26931U 01043C 21023.95149712 -.00000022 00000-0 23457-4 0 9995 TLE2=2 26931 67.0519 293.3637 0007411 271.3346 88.6906 14.30603564 8572 [10925] VERSION=1.1 NAME=MOLNIYA 1-40 NICKNAME=MOLNIYA 1-40 TLE1=1 10925U 78055A 21023.32882720 .00000643 00000-0 00000-0 0 9995 TLE2=2 10925 62.5897 118.7019 7110541 278.7893 13.3126 2.00524480312452 [43641] VERSION=1.1 NAME=SAOCOM 1A NICKNAME=SAOCOM 1A TLE1=1 43641U 18076A 21024.11060481 .00000019 00000-0 89830-5 0 9993 TLE2=2 43641 97.8857 213.0835 0001386 74.3441 285.7921 14.82154875124283 [3669] VERSION=1.1 NAME=ISIS 1 NICKNAME=ISIS 1 TLE1=1 03669U 69009A 21024.19696133 .00000017 00000-0 13730-4 0 9991 TLE2=2 03669 88.4379 2.1697 1710357 261.7073 78.7368 11.29495618137646 [39451] VERSION=1.1 NAME=SWARM B NICKNAME=SWARM B TLE1=1 39451U 13067A 21024.14413364 .00000385 00000-0 15345-4 0 9992 TLE2=2 39451 87.7540 213.7548 0004001 91.2085 268.9619 15.21900804398095 [42811] VERSION=1.1 NAME=IRIDIUM 128 NICKNAME=IRIDIUM 128 TLE1=1 42811U 17039J 21023.80665190 .00000012 00000-0 -28350-5 0 9996 TLE2=2 42811 86.3993 128.6320 0002144 77.0930 283.0505 14.34215477187563 [6155] VERSION=1.1 NAME=ATLAS CENTAUR R/B NICKNAME=ATLAS CENTAUR R/B TLE1=1 06155U 72065B 21024.11920679 .00000089 00000-0 17492-4 0 9995 TLE2=2 06155 35.0051 40.6276 0037959 203.9604 155.9328 14.71639940586056 [22830] VERSION=1.1 NAME=ARIANE 40 R/B NICKNAME=ARIANE 40 R/B TLE1=1 22830U 93061H 21024.18286754 -.00000023 00000-0 83284-5 0 9990 TLE2=2 22830 98.7361 81.0815 0011449 39.9021 320.3001 14.31464581426656 [32789] VERSION=1.1 NAME=DELFI-C3 (DO-64) NICKNAME=DELFI-C3 (DO-64) TLE1=1 32789U 08021G 21023.82903066 .00001268 00000-0 85303-4 0 9992 TLE2=2 32789 97.3943 64.6816 0010349 280.5208 79.4854 15.08415915695027 [41330] VERSION=1.1 NAME=COSMOS 2514 (751) NICKNAME=COSMOS 2514 (751) TLE1=1 41330U 16008A 21023.70778111 -.00000033 00000-0 00000-0 0 9993 TLE2=2 41330 65.5498 19.9304 0011482 225.6190 18.7885 2.13102830 38623 [2802] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 02802U 67045B 21023.92773584 -.00000022 00000-0 18732-5 0 9998 TLE2=2 02802 74.0105 235.2090 0066955 332.1432 27.6145 14.43794182819007 [11574] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 11574U 79089B 21024.17006837 .00000013 00000-0 12218-4 0 9994 TLE2=2 11574 74.0714 307.8586 0017066 239.1303 120.8174 14.40785108166803 [32711] VERSION=1.1 NAME=GPS BIIRM-6 (PRN 07) NICKNAME=GPS BIIRM-6 (PRN 07) TLE1=1 32711U 08012A 21023.25438533 .00000098 00000-0 00000-0 0 9993 TLE2=2 32711 54.5534 228.6488 0145089 225.6720 133.1820 2.00570794 94242 [25400] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 25400U 98043G 21024.04844847 -.00000018 00000-0 10847-4 0 9997 TLE2=2 25400 98.6290 322.1094 0010840 55.8128 304.4078 14.25468878172672 [32275] VERSION=1.1 NAME=COSMOS 2433 (720) NICKNAME=COSMOS 2433 (720) TLE1=1 32275U 07052A 21023.77353586 -.00000030 00000-0 00000-0 0 9999 TLE2=2 32275 66.0379 21.5929 0005332 259.9107 311.0993 2.13104182103109 [40032] VERSION=1.1 NAME=QB50P2 NICKNAME=QB50P2 TLE1=1 40032U 14033Y 21023.75931810 .00000280 00000-0 35942-4 0 9999 TLE2=2 40032 97.9124 311.1010 0010546 295.3505 64.6619 14.88827376357769 [39090] VERSION=1.1 NAME=STRAND-1 NICKNAME=STRAND-1 TLE1=1 39090U 13009E 21023.81095815 .00000049 00000-0 32291-4 0 9993 TLE2=2 39090 98.4365 229.3202 0009042 356.3799 3.7319 14.35165116414291 [27651] VERSION=1.1 NAME=SORCE NICKNAME=SORCE TLE1=1 27651U 03004A 21023.81247629 .00000142 00000-0 28883-4 0 9995 TLE2=2 27651 39.9942 181.0715 0021199 131.0775 229.1849 14.89223740977051 [27939] VERSION=1.1 NAME=MOZHAYETS 4 (RS-22) NICKNAME=RS-22 TLE1=1 27939U 03042A 21024.18855647 .00000121 00000-0 30363-4 0 9995 TLE2=2 27939 98.1169 162.4981 0013166 22.2110 337.9664 14.66935735926376 [40294] VERSION=1.1 NAME=GPS BIIF-8 (PRN 03) NICKNAME=GPS BIIF-8 (PRN 03) TLE1=1 40294U 14068A 21023.04229319 -.00000049 00000-0 00000-0 0 9990 TLE2=2 40294 55.4643 108.1561 0030792 46.8076 313.4758 2.00564281 45673 [3597] VERSION=1.1 NAME=OAO 2 NICKNAME=OAO 2 TLE1=1 03597U 68110A 21023.90428609 .00000028 00000-0 12980-4 0 9990 TLE2=2 03597 34.9929 254.9581 0005965 329.1579 30.8760 14.45871013748127 [37849] VERSION=1.1 NAME=SUOMI NPP NICKNAME=SUOMI NPP TLE1=1 37849U 11061A 21024.17001785 .00000016 00000-0 28283-4 0 9992 TLE2=2 37849 98.7247 324.8703 0001176 59.3856 52.9971 14.19548667478933 [41852] VERSION=1.1 NAME=AEROCUBE 8D NICKNAME=AEROCUBE 8D TLE1=1 41852U 16067E 21023.79681492 .00000893 00000-0 82704-4 0 9999 TLE2=2 41852 97.9399 140.0518 0008449 229.7703 130.2780 14.97082491229427 [28474] VERSION=1.1 NAME=GPS BIIR-13 (PRN 02) NICKNAME=GPS BIIR-13 (PRN 02) TLE1=1 28474U 04045A 21023.87369729 -.00000052 00000-0 00000-0 0 9995 TLE2=2 28474 55.1098 43.9552 0205645 270.8081 271.4478 2.00572495118918 [29601] VERSION=1.1 NAME=GPS BIIRM-3 (PRN 12) NICKNAME=GPS BIIRM-3 (PRN 12) TLE1=1 29601U 06052A 21023.03023342 -.00000034 00000-0 00000-0 0 9994 TLE2=2 29601 55.8753 292.2142 0080410 66.6122 294.2776 2.00576214103874 [43552] VERSION=1.1 NAME=EQUISAT NICKNAME=EQUISAT TLE1=1 43552U 98067PA 20361.21801847 .10316869 12478-4 50011-3 0 9992 TLE2=2 43552 51.6122 8.3673 0000676 209.2273 150.8717 16.43170683140619 [7530] VERSION=1.1 NAME=OSCAR 7 (AO-7) NICKNAME=AO-7 TLE1=1 07530U 74089B 21023.88902491 -.00000030 00000-0 99037-4 0 9998 TLE2=2 07530 101.8346 358.6594 0012075 301.0092 113.5472 12.53647062113611 [19531] VERSION=1.1 NAME=NOAA 11 [-] NICKNAME=NOAA 11 [-] TLE1=1 19531U 88089A 21023.89827540 -.00000011 00000-0 15277-4 0 9992 TLE2=2 19531 98.4057 36.7961 0010708 202.7239 157.3463 14.15266703668742 [20511] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 20511U 90018B 21023.93844338 .00000074 00000-0 66495-5 0 9993 TLE2=2 20511 82.5241 167.8006 0018854 113.0868 7.6380 14.80063765645722 [14372] VERSION=1.1 NAME=COSMOS 1500 NICKNAME=COSMOS 1500 TLE1=1 14372U 83099A 21023.74495657 .00000688 00000-0 31136-4 0 9991 TLE2=2 14372 82.5161 120.9249 0015026 178.2223 336.0381 15.19074985 37236 [6920] VERSION=1.1 NAME=NOAA 3 [-] NICKNAME=NOAA 3 [-] TLE1=1 06920U 73086A 21024.19233385 -.00000027 00000-0 13988-3 0 9996 TLE2=2 06920 102.1390 0.6253 0006249 148.9607 222.5389 12.40342067137839 [36395] VERSION=1.1 NAME=SDO NICKNAME=SDO TLE1=1 36395U 10005A 21023.30100359 -.00000078 00000-0 00000-0 0 9997 TLE2=2 36395 30.7048 117.6180 0000614 249.8411 121.6294 1.00269212 40309 [44877] VERSION=1.1 NAME=EYESAT-NANO NICKNAME=EYESAT-NANO TLE1=1 44877U 19092E 21023.77171854 .00001481 00000-0 77209-4 0 9992 TLE2=2 44877 97.4550 209.5394 0012839 339.2667 20.8044 15.17467199 60995 [21397] VERSION=1.1 NAME=OKEAN-3 NICKNAME=OKEAN-3 TLE1=1 21397U 91039A 21023.88388420 .00000250 00000-0 21430-4 0 9994 TLE2=2 21397 82.5237 327.1503 0018516 147.5096 212.7268 14.93028290585155 [43678] VERSION=1.1 NAME=DIWATA-2B NICKNAME=DIWATA-2B TLE1=1 43678U 18084H 21024.10249706 .00000244 00000-0 29955-4 0 9991 TLE2=2 43678 97.9052 148.8323 0010340 160.1125 200.0511 14.91700310121914 [38857] VERSION=1.1 NAME=GSAT0103 (PRN E19) NICKNAME=GSAT0103 (PRN E19) TLE1=1 38857U 12055A 21024.13622429 .00000025 00000-0 00000+0 0 9998 TLE2=2 38857 55.0177 155.7077 0002117 242.6753 117.2583 1.70473686 51577 [40378] VERSION=1.1 NAME=FIREBIRD 4 NICKNAME=FIREBIRD 4 TLE1=1 40378U 15003C 21024.21639351 .00002157 00000-0 83744-4 0 9995 TLE2=2 40378 99.0836 135.6886 0119655 296.0831 62.8124 15.21318451330866 [38337] VERSION=1.1 NAME=GCOM-W1 (SHIZUKU) NICKNAME=GCOM-W1 (SHIZUKU) TLE1=1 38337U 12025A 21024.09972631 .00000043 00000-0 19661-4 0 9994 TLE2=2 38337 98.2156 326.8822 0001782 36.8971 333.6233 14.57107671462138 [733] VERSION=1.1 NAME=THOR AGENA D R/B NICKNAME=THOR AGENA D R/B TLE1=1 00733U 64002A 21023.71457130 .00000017 00000-0 23703-4 0 9998 TLE2=2 00733 98.9935 289.5470 0033112 311.1422 48.6904 14.32423396970359 [41853] VERSION=1.1 NAME=AEROCUBE 8C NICKNAME=AEROCUBE 8C TLE1=1 41853U 16067F 21023.83348895 -.00000101 00000-0 -34355-5 0 9996 TLE2=2 41853 97.9391 139.9724 0009048 234.9232 125.1141 14.97046581229421 [43687] VERSION=1.1 NAME=COSMOS 2529 (757) NICKNAME=COSMOS 2529 (757) TLE1=1 43687U 18086A 21023.72207958 .00000063 00000-0 00000-0 0 9998 TLE2=2 43687 64.4850 259.6166 0008971 279.6029 49.2296 2.13102079 17298 [31114] VERSION=1.1 NAME=CZ-2C R/B NICKNAME=CZ-2C R/B TLE1=1 31114U 07010B 21023.81592893 .00000051 00000-0 42661-4 0 9990 TLE2=2 31114 98.2378 227.6257 0059465 345.7917 14.1585 14.19345732714268 [21610] VERSION=1.1 NAME=ARIANE 40 R/B NICKNAME=ARIANE 40 R/B TLE1=1 21610U 91050F 21023.95703679 -.00000004 00000-0 12252-4 0 9990 TLE2=2 21610 98.4416 96.7175 0002473 335.7213 122.2539 14.40931362549453 [9880] VERSION=1.1 NAME=MOLNIYA 1-36 NICKNAME=MOLNIYA 1-36 TLE1=1 09880U 77021A 21023.02888955 .00001495 00000-0 50003-3 0 9995 TLE2=2 09880 62.9357 344.6538 7441373 287.2049 9.2730 2.00755490219165 [40380] VERSION=1.1 NAME=EXOCUBE (CP10) NICKNAME=EXOCUBE (CP10) TLE1=1 40380U 15003E 21024.19428397 .00000893 00000-0 42816-4 0 9991 TLE2=2 40380 99.0885 121.1422 0135468 343.0984 16.5751 15.15092299329975 [18187] VERSION=1.1 NAME=COSMOS 1867 NICKNAME=COSMOS 1867 TLE1=1 18187U 87060A 21024.07136269 -.00000121 00000-0 -78994-5 0 9997 TLE2=2 18187 65.0109 143.2853 0017117 282.4509 77.4659 14.31118761752444 [43569] VERSION=1.1 NAME=IRIDIUM 160 NICKNAME=IRIDIUM 160 TLE1=1 43569U 18061A 21023.86716547 .00000082 00000-0 22198-4 0 9991 TLE2=2 43569 86.4009 160.1908 0002339 96.8026 263.3436 14.34216125130964 [13403] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 13403U 82079B 21023.94269326 .00000161 00000-0 90189-5 0 9996 TLE2=2 13403 81.1669 200.2507 0031581 255.1370 104.6356 15.07298302 94826 [41854] VERSION=1.1 NAME=PROMETHEUS 2-1 NICKNAME=PROMETHEUS 2-1 TLE1=1 41854U 16067G 21023.88398053 .00000240 00000-0 25874-4 0 9990 TLE2=2 41854 97.9413 140.5061 0008914 231.8060 128.2360 14.97466689229450 [35932] VERSION=1.1 NAME=SWISSCUBE NICKNAME=SWISSCUBE TLE1=1 35932U 09051B 21023.81572298 .00000138 00000-0 42195-4 0 9994 TLE2=2 35932 98.6068 219.2156 0007822 164.0249 196.1196 14.56479352601907 [13012] VERSION=1.1 NAME=MOLNIYA 1-52 NICKNAME=MOLNIYA 1-52 TLE1=1 13012U 81123A 21023.36527781 -.00001427 00000-0 00000+0 0 9993 TLE2=2 13012 63.0450 355.5312 7300109 249.2284 23.6555 2.00654420286412 [25319] VERSION=1.1 NAME=IRIDIUM 69 [-] NICKNAME=IRIDIUM 69 [-] TLE1=1 25319U 98026A 21023.78244283 .00000135 00000-0 37438-4 0 9999 TLE2=2 25319 86.3968 51.7867 0000157 158.0968 202.0237 14.38887500192109 [27663] VERSION=1.1 NAME=GPS BIIR-8 (PRN 16) NICKNAME=GPS BIIR-8 (PRN 16) TLE1=1 27663U 03005A 21023.46679844 -.00000032 00000-0 00000-0 0 9994 TLE2=2 27663 55.8821 293.2742 0119444 36.0693 142.2750 2.00568004131780 [41340] VERSION=1.1 NAME=HORYU-4 NICKNAME=HORYU-4 TLE1=1 41340U 16012D 21024.19241758 .00000538 00000-0 33686-4 0 9994 TLE2=2 41340 31.0066 5.8523 0013922 180.3638 179.6989 15.01719691271086 [22803] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 22803U 93059B 21023.96077956 .00000055 00000-0 51251-4 0 9996 TLE2=2 22803 70.9913 354.5627 0017507 188.0225 172.0621 14.16829753414536 [10114] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 10114U 77057B 21023.88915994 .00000304 00000-0 18334-4 0 9994 TLE2=2 10114 97.3340 171.6665 0014800 44.4432 315.7987 15.17664179382999 [42803] VERSION=1.1 NAME=IRIDIUM 113 NICKNAME=IRIDIUM 113 TLE1=1 42803U 17039A 21023.55878494 .00000077 00000-0 20324-4 0 9994 TLE2=2 42803 86.3951 65.5933 0002121 84.1637 275.9801 14.34219323188738 [39268] VERSION=1.1 NAME=POPACS 1 NICKNAME=POPACS 1 TLE1=1 39268U 13055D 21023.80596802 .00004218 00000-0 11549-3 0 9996 TLE2=2 39268 81.0010 62.9048 0607546 286.8523 66.6910 14.41283885379710 [38858] VERSION=1.1 NAME=GSAT0104 (PRN E20) NICKNAME=GSAT0104 (PRN E20) TLE1=1 38858U 12055B 21023.48406907 .00000026 00000-0 00000-0 0 9999 TLE2=2 38858 55.0184 155.7253 0000871 228.7298 131.2200 1.70473618 51562 [41549] VERSION=1.1 NAME=GSAT0211 (PRN E02) NICKNAME=GSAT0211 (PRN E02) TLE1=1 41549U 16030A 21021.11350665 -.00000006 00000-0 00000-0 0 9993 TLE2=2 41549 56.1259 275.9808 0004570 340.0358 20.0117 1.70474555 29034 [41851] VERSION=1.1 NAME=OPTICUBE 04 NICKNAME=OPTICUBE 04 TLE1=1 41851U 16067D 21024.18374116 .00000277 00000-0 29374-4 0 9994 TLE2=2 41851 97.9389 140.5917 0008000 229.1733 130.8795 14.97025541229507 [40910] VERSION=1.1 NAME=XW-2F NICKNAME=XW-2F TLE1=1 40910U 15049M 21024.15647900 .00001229 00000-0 62761-4 0 9994 TLE2=2 40910 97.4722 31.0133 0013202 317.5695 106.7362 15.18540272295828 [28415] VERSION=1.1 NAME=CZ-4B R/B NICKNAME=CZ-4B R/B TLE1=1 28415U 04035C 21023.69118130 -.00000079 00000-0 -74779-6 0 9997 TLE2=2 28415 97.5863 68.5002 0050437 322.8032 36.9705 15.07007479896801 [694] VERSION=1.1 NAME=ATLAS CENTAUR 2 NICKNAME=ATLAS CENTAUR 2 TLE1=1 00694U 63047A 21023.60838894 .00000451 00000-0 43890-4 0 9991 TLE2=2 00694 30.3597 118.5337 0585459 298.4480 55.8337 14.02744035868033 [24967] VERSION=1.1 NAME=IRIDIUM 36 [-] NICKNAME=IRIDIUM 36 [-] TLE1=1 24967U 97056C 21023.83161659 .00000085 00000-0 22523-4 0 9993 TLE2=2 24967 86.3991 126.3072 0002116 102.7692 257.3741 14.35807149221774 [43818] VERSION=1.1 NAME=SPACEBEE-6 NICKNAME=SPACEBEE-6 TLE1=1 43818U 18099BN 21024.14851368 .00001192 00000-0 11055-3 0 9994 TLE2=2 43818 97.6879 98.5868 0014174 155.5083 204.6814 14.96225587116642 [43572] VERSION=1.1 NAME=IRIDIUM 165 NICKNAME=IRIDIUM 165 TLE1=1 43572U 18061D 21023.88618765 .00000071 00000-0 18234-4 0 9994 TLE2=2 43572 86.4009 160.1784 0002042 103.7530 256.3893 14.34217065130984 [14820] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 14820U 84027B 21023.90915243 .00000078 00000-0 64625-5 0 9990 TLE2=2 14820 82.5423 195.2634 0019654 39.4616 320.8026 14.83685716970102 [24836] VERSION=1.1 NAME=IRIDIUM 914 [-] NICKNAME=IRIDIUM 914 [-] TLE1=1 24836U 97030A 21023.85666481 .00000091 00000-0 22921-4 0 9994 TLE2=2 24836 86.3968 139.7962 0003746 99.9117 260.2504 14.38964697376178 [19120] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 19120U 88039B 21023.79743700 -.00000045 00000-0 15164-5 0 9998 TLE2=2 19120 71.0130 62.9275 0023294 324.3064 35.6502 14.19217893692913 [31135] VERSION=1.1 NAME=AGILE NICKNAME=AGILE TLE1=1 31135U 07013A 21023.49401416 .00002761 00000-0 48607-4 0 9996 TLE2=2 31135 2.4671 272.7855 0011581 14.8762 345.1632 15.33023631398477 [23705] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 23705U 95058B 21023.77293645 -.00000196 00000-0 -76529-4 0 9996 TLE2=2 23705 71.0231 146.6925 0010011 90.9168 269.3102 14.15148415303140 [11057] VERSION=1.1 NAME=MOLNIYA 3-10 NICKNAME=MOLNIYA 3-10 TLE1=1 11057U 78095A 21023.87172716 .00000283 00000-0 10145-3 0 9997 TLE2=2 11057 62.8369 230.7560 5894921 303.1276 13.5522 4.09810867362858 [44329] VERSION=1.1 NAME=RAAVANA-1 NICKNAME=RAAVANA-1 TLE1=1 44329U 98067QE 21024.14579475 .00022236 00000-0 22114-3 0 9991 TLE2=2 44329 51.6376 302.8709 0006545 110.3461 249.8238 15.65623976 91474 [4814] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 04814U 70113B 21024.14829923 .00001273 00000-0 35135-4 0 9990 TLE2=2 04814 81.1404 251.5188 0022926 229.5640 130.3600 15.36024302736450 [39089] VERSION=1.1 NAME=NEOSSAT NICKNAME=NEOSSAT TLE1=1 39089U 13009D 21023.54295085 .00000044 00000-0 30828-4 0 9991 TLE2=2 39089 98.4497 226.7991 0011252 359.7159 0.4018 14.34542923414108 [24873] VERSION=1.1 NAME=IRIDIUM 921 [-] NICKNAME=IRIDIUM 921 [-] TLE1=1 24873U 97034E 21023.88779174 .00000545 00000-0 28708-4 0 9999 TLE2=2 24873 86.3957 162.7139 0007162 178.9483 181.1773 15.13154049286804 [40930] VERSION=1.1 NAME=ASTROSAT NICKNAME=ASTROSAT TLE1=1 40930U 15052A 21024.00367400 .00000720 00000-0 12057-4 0 9996 TLE2=2 40930 5.9955 210.2329 0008265 151.7708 208.2868 14.76365759287824 [25847] VERSION=1.1 NAME=MOLNIYA 3-50 NICKNAME=MOLNIYA 3-50 TLE1=1 25847U 99036A 21023.13158482 -.00000100 00000-0 -25186-3 0 9991 TLE2=2 25847 62.5454 56.7955 7422178 277.9888 11.3752 2.00592644157870 [14781] VERSION=1.1 NAME=UOSAT 2 (UO-11) NICKNAME=UO-11 TLE1=1 14781U 84021B 21023.96173348 .00000095 00000-0 17699-4 0 9995 TLE2=2 14781 97.5900 30.9456 0008148 186.5755 173.5354 14.83239830964512 [43547] VERSION=1.1 NAME=TEMPEST-D NICKNAME=TEMPEST-D TLE1=1 43547U 98067NV 21023.95726941 .00023680 00000-0 18174-3 0 9997 TLE2=2 43547 51.6345 273.6856 0006113 154.3577 205.7725 15.71930784144067 [43907] VERSION=1.1 NAME=ZACUBE-2 NICKNAME=ZACUBE-2 TLE1=1 43907U 18111AH 21024.11242470 .00000621 00000-0 27573-4 0 9992 TLE2=2 43907 97.2482 282.9843 0023122 84.5186 21.4635 15.24922239115631 [40912] VERSION=1.1 NAME=KAITUO 1B NICKNAME=KAITUO 1B TLE1=1 40912U 15049P 21024.12891374 .00001598 00000-0 75050-4 0 9993 TLE2=2 40912 97.4474 35.3068 0012956 290.2808 138.4729 15.21014056296253 [41888] VERSION=1.1 NAME=CYGFM08 NICKNAME=CYGFM08 TLE1=1 41888U 16078E 21023.61994968 .00000551 00000-0 30430-4 0 9996 TLE2=2 41888 34.9500 128.4970 0015656 223.0595 136.8892 15.15067962227530 [44370] VERSION=1.1 NAME=SPACEBEE-9 NICKNAME=SPACEBEE-9 TLE1=1 44370U 19037F 21023.85289238 .00017700 00000-0 31992-3 0 9993 TLE2=2 44370 45.0044 319.1826 0010830 69.6759 290.5296 15.49457614 88703 [39269] VERSION=1.1 NAME=POPACS 2 NICKNAME=POPACS 2 TLE1=1 39269U 13055E 21023.25875967 .00002388 00000-0 66375-4 0 9992 TLE2=2 39269 81.0142 106.7468 0672630 40.5809 324.3548 14.26893835377318 [27370] VERSION=1.1 NAME=RHESSI NICKNAME=RHESSI TLE1=1 27370U 02004A 21023.85185452 .00002310 00000-0 72852-4 0 9995 TLE2=2 27370 38.0322 269.1992 0012748 329.3622 30.6404 15.33974974 48175 [43574] VERSION=1.1 NAME=IRIDIUM 154 NICKNAME=IRIDIUM 154 TLE1=1 43574U 18061F 21024.10818810 .00000076 00000-0 19964-4 0 9991 TLE2=2 43574 86.4010 160.0891 0002337 95.9454 264.2008 14.34216723131033 [20663] VERSION=1.1 NAME=COSMOS 2084 NICKNAME=COSMOS 2084 TLE1=1 20663U 90055A 21023.73656884 -.00000009 00000-0 17259-4 0 9999 TLE2=2 20663 62.7946 152.6519 0047857 341.4027 18.5316 14.92179699656226 [29108] VERSION=1.1 NAME=CALIPSO NICKNAME=CALIPSO TLE1=1 29108U 06016B 21023.88372103 .00000129 00000-0 34900-4 0 9995 TLE2=2 29108 98.2584 336.4731 0001189 85.1157 275.0180 14.62495121784536 [43521] VERSION=1.1 NAME=CZ-2C R/B NICKNAME=CZ-2C R/B TLE1=1 43521U 18054D 21023.94887050 .00000411 00000-0 24056-4 0 9999 TLE2=2 43521 35.1531 260.8396 0083202 262.9700 96.1546 15.11290690142529 [37839] VERSION=1.1 NAME=JUGNU NICKNAME=JUGNU TLE1=1 37839U 11058B 21023.67865955 .00000309 00000-0 23111-4 0 9998 TLE2=2 37839 19.9629 27.2106 0018680 296.5571 220.0410 14.12701203479969 [28499] VERSION=1.1 NAME=ARIANE 5 R/B NICKNAME=ARIANE 5 R/B TLE1=1 28499U 04049H 21023.91423590 .00000032 00000-0 11497-4 0 9991 TLE2=2 28499 98.0619 132.5164 0090735 280.9414 189.5264 14.80082204868704 [22826] VERSION=1.1 NAME=ITAMSAT (IO-26) NICKNAME=IO-26 TLE1=1 22826U 93061D 21023.90695542 .00000003 00000-0 19092-4 0 9995 TLE2=2 22826 98.9183 37.8418 0009996 84.1446 276.0875 14.30441780425560 [45857] VERSION=1.1 NAME=BY70-2 NICKNAME=BY70-2 TLE1=1 45857U 20042B 21024.19423800 .00000883 00000-0 13372-3 0 9991 TLE2=2 45857 97.9962 101.4114 0009750 322.1201 37.9328 14.76638133 30251 [42758] VERSION=1.1 NAME=HXMT (HUIYAN) NICKNAME=HXMT (HUIYAN) TLE1=1 42758U 17034A 21024.10514093 .00000188 00000-0 25340-4 0 9998 TLE2=2 42758 43.0178 265.3617 0010807 330.4530 185.1156 15.09041825199208 [38768] VERSION=1.1 NAME=AEROCUBE 4.5B NICKNAME=AEROCUBE 4.5B TLE1=1 38768U 12048L 21023.93858490 .00000538 00000-0 54728-4 0 9997 TLE2=2 38768 64.6653 231.3999 0128669 50.2835 310.9536 14.96334398 74867 [25262] VERSION=1.1 NAME=IRIDIUM 51 [-] NICKNAME=IRIDIUM 51 [-] TLE1=1 25262U 98018A 21023.87980992 .00000853 00000-0 58130-4 0 9990 TLE2=2 25262 86.3971 84.5618 0202048 331.0441 27.9691 14.89552045205977 [44400] VERSION=1.1 NAME=SONATE NICKNAME=SONATE TLE1=1 44400U 19038Q 21023.88535479 .00000859 00000-0 53044-4 0 9992 TLE2=2 44400 97.5690 348.7348 0026723 87.1606 273.2683 15.12280578 85884 [42776] VERSION=1.1 NAME=URSA MAIOR NICKNAME=URSA MAIOR TLE1=1 42776U 17036M 21024.11514017 .00000998 00000-0 45909-4 0 9999 TLE2=2 42776 97.2708 75.6659 0012467 329.1974 30.8530 15.22521836199254 [16182] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 16182U 85097B 21023.98166878 -.00000191 00000-0 -72053-4 0 9992 TLE2=2 16182 71.0018 117.4989 0009443 237.3285 295.9171 14.16250989822658 [40900] VERSION=1.1 NAME=NUDT-PHONESAT NICKNAME=NUDT-PHONESAT TLE1=1 40900U 15049B 21024.10678691 .00002861 00000-0 11622-3 0 9991 TLE2=2 40900 97.4266 39.2360 0010616 291.1512 139.9611 15.25351735296810 [17589] VERSION=1.1 NAME=COSMOS 1833 NICKNAME=COSMOS 1833 TLE1=1 17589U 87027A 21024.18390486 -.00000295 00000-0 -13228-3 0 9999 TLE2=2 17589 70.9196 297.1900 0015607 143.6473 216.5712 14.12901848746323 [41999] VERSION=1.1 NAME=BGUSAT NICKNAME=BGUSAT TLE1=1 41999U 17008BD 21023.83085730 .00002794 00000-0 10237-3 0 9998 TLE2=2 41999 97.3431 95.5262 0006273 241.3695 118.6914 15.28824347218609 [42016] VERSION=1.1 NAME=AL-FARABI 1 NICKNAME=AL-FARABI 1 TLE1=1 42016U 17008BW 21024.16998889 .00001875 00000-0 72727-4 0 9996 TLE2=2 42016 97.3358 94.2850 0004440 257.1224 102.9519 15.27350790219203 [21819] VERSION=1.1 NAME=INTERCOSMOS 25 NICKNAME=INTERCOSMOS 25 TLE1=1 21819U 91086A 21024.16026756 -.00000632 00000-0 -13391-3 0 9990 TLE2=2 21819 82.5822 354.1016 1517042 161.6334 204.6318 12.05154527270896 [41925] VERSION=1.1 NAME=IRIDIUM 112 NICKNAME=IRIDIUM 112 TLE1=1 41925U 17003J 21023.94033374 .00000008 00000-0 -42967-5 0 9995 TLE2=2 41925 86.3996 191.6750 0002195 101.5080 258.6363 14.34217847210888 [42962] VERSION=1.1 NAME=IRIDIUM 136 NICKNAME=IRIDIUM 136 TLE1=1 42962U 17061H 21023.78128312 .00000074 00000-0 19352-4 0 9993 TLE2=2 42962 86.3996 128.7069 0002339 89.6557 270.4907 14.34216361172411 [43479] VERSION=1.1 NAME=IRIDIUM 152 NICKNAME=IRIDIUM 152 TLE1=1 43479U 18047D 21024.18773107 .00000010 00000-0 -34847-5 0 9993 TLE2=2 43479 86.3995 191.6216 0002090 100.7944 259.3487 14.34215806140132 [24944] VERSION=1.1 NAME=IRIDIUM 29 [-] NICKNAME=IRIDIUM 29 [-] TLE1=1 24944U 97051A 21023.90228038 .00000078 00000-0 20588-4 0 9997 TLE2=2 24944 86.3953 96.1508 0002472 95.9064 264.2414 14.34784366223002 [40020] VERSION=1.1 NAME=BRITE-CA1 (TORONTO) NICKNAME=BRITE-CA1 (TORONTO) TLE1=1 40020U 14033L 21023.49999431 .00000066 00000-0 19262-4 0 9999 TLE2=2 40020 97.7307 205.1536 0088705 90.4835 270.6535 14.66700248352905 [37214] VERSION=1.1 NAME=FENGYUN 3B NICKNAME=FENGYUN 3B TLE1=1 37214U 10059A 21024.19430966 .00000011 00000-0 28799-4 0 9990 TLE2=2 37214 99.0698 15.5892 0017131 5.4874 123.1235 14.15973173528914 [24795] VERSION=1.1 NAME=IRIDIUM 5 [-] NICKNAME=IRIDIUM 5 [-] TLE1=1 24795U 97020D 21023.93224437 .00000296 00000-0 28908-4 0 9995 TLE2=2 24795 86.3959 91.5051 0140334 54.8378 306.5896 14.80432973247304 [27509] VERSION=1.1 NAME=METEOSAT-8 (MSG-1) NICKNAME=METEOSAT-8 (MSG-1) TLE1=1 27509U 02040B 21024.14922170 .00000145 00000-0 00000+0 0 9993 TLE2=2 27509 7.1139 53.1526 0000578 301.1361 224.5914 1.00267000 67492 [40045] VERSION=1.1 NAME=AEROCUBE 6A NICKNAME=AEROCUBE 6A TLE1=1 40045U 14033AM 21023.86072261 .00000279 00000-0 47066-4 0 9999 TLE2=2 40045 97.7096 241.7230 0057875 357.7625 2.3318 14.75721466354618 [37139] VERSION=1.1 NAME=COSMOS 2464 (736) NICKNAME=COSMOS 2464 (736) TLE1=1 37139U 10041C 21023.77189118 .00000066 00000-0 00000-0 0 9991 TLE2=2 37139 64.1006 258.1941 0028773 11.8859 307.8469 2.13100728 80886 [39135] VERSION=1.1 NAME=BEESAT-3 NICKNAME=BEESAT-3 TLE1=1 39135U 13015F 21023.94312070 .00000959 00000-0 55288-4 0 9990 TLE2=2 39135 64.8676 309.0359 0016286 206.8134 153.2152 15.18849693428698 [43578] VERSION=1.1 NAME=IRIDIUM 159 NICKNAME=IRIDIUM 159 TLE1=1 43578U 18061K 21023.87350542 .00000072 00000-0 18538-4 0 9993 TLE2=2 43578 86.4007 160.1558 0002238 96.7203 263.4248 14.34218432130973 [43078] VERSION=1.1 NAME=IRIDIUM 153 NICKNAME=IRIDIUM 153 TLE1=1 43078U 17083J 21024.10083443 .00000117 00000-0 34601-4 0 9990 TLE2=2 43078 86.3958 33.7402 0002608 71.2381 288.9098 14.34217078162909 [43600] VERSION=1.1 NAME=AEOLUS NICKNAME=AEOLUS TLE1=1 43600U 18066A 21024.01605431 .00028960 00000-0 11337-3 0 9996 TLE2=2 43600 96.7190 33.0697 0006550 86.9841 273.2181 15.86926262140340 [46504] VERSION=1.1 NAME=NETSAT-4 NICKNAME=NETSAT-4 TLE1=1 46504U 20068U 21023.80579841 .00000038 00000-0 75078-5 0 9998 TLE2=2 46504 97.6823 322.0028 0007575 227.4016 132.6573 15.01959988 17526 [43042] VERSION=1.1 NAME=AEROCUBE 7B (OCSD B) NICKNAME=AEROCUBE 7B (OCSD B) TLE1=1 43042U 17071F 21024.11963245 .00005666 00000-0 12237-3 0 9990 TLE2=2 43042 51.6377 62.1305 0003985 126.8201 233.3152 15.46103521176489 [41460] VERSION=1.1 NAME=AAUSAT 4 NICKNAME=AAUSAT 4 TLE1=1 41460U 16025E 21024.10933352 .00004253 00000-0 20385-3 0 9999 TLE2=2 41460 98.1185 155.1806 0150420 174.5034 185.7908 15.10034204260928 [39466] VERSION=1.1 NAME=AEROCUBE 5B NICKNAME=AEROCUBE 5B TLE1=1 39466U 13072E 21023.56812410 .00005131 00000-0 33943-3 0 9991 TLE2=2 39466 120.4652 290.6855 0234933 120.3274 242.1242 14.89558127 74321 [43850] VERSION=1.1 NAME=SHIELDS 1 NICKNAME=SHIELDS 1 TLE1=1 43850U 18104B 21023.92249298 .00000691 00000-0 28703-4 0 9997 TLE2=2 43850 85.0279 29.5565 0014198 349.2524 10.8412 15.21661150116997 [44033] VERSION=1.1 NAME=CATSAT-1 NICKNAME=CATSAT-1 TLE1=1 44033U 98067PZ 21023.94654774 .00058782 00000-0 29008-3 0 9990 TLE2=2 44033 51.6382 269.1770 0003964 179.3117 180.7892 15.81507733113093 [44506] VERSION=1.1 NAME=GPS BIII-2 (PRN 18) NICKNAME=GPS BIII-2 (PRN 18) TLE1=1 44506U 19056A 21024.01854212 -.00000049 00000-0 00000+0 0 9995 TLE2=2 44506 55.3882 49.3843 0011852 185.1214 358.2690 2.00561915 10544 [22285] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 22285U 92093B 21023.92456180 -.00000176 00000-0 -66440-4 0 9995 TLE2=2 22285 71.0236 329.9857 0006847 276.6698 83.3646 14.15055821448516 [28912] VERSION=1.1 NAME=METEOSAT-9 (MSG-2) NICKNAME=METEOSAT-9 (MSG-2) TLE1=1 28912U 05049B 21023.85445110 .00000026 00000-0 00000-0 0 9994 TLE2=2 28912 4.8965 69.1761 0001342 254.5790 110.5336 1.00274815 55285 [36111] VERSION=1.1 NAME=COSMOS 2456 (730) NICKNAME=COSMOS 2456 (730) TLE1=1 36111U 09070A 21023.76267150 -.00000008 00000-0 00000-0 0 9999 TLE2=2 36111 64.2547 138.5444 0002563 331.7608 291.3857 2.13099123 86475 [24946] VERSION=1.1 NAME=IRIDIUM 33 [-] NICKNAME=IRIDIUM 33 [-] TLE1=1 24946U 97051C 21023.89805803 .00000066 00000-0 16689-4 0 9992 TLE2=2 24946 86.3867 95.6483 0005715 272.6029 87.4512 14.33715240222672 [43929] VERSION=1.1 NAME=IRIDIUM 171 NICKNAME=IRIDIUM 171 TLE1=1 43929U 19002H 21023.89837682 .00000066 00000-0 16354-4 0 9993 TLE2=2 43929 86.3972 97.0932 0002472 96.4014 263.7464 14.34217059106558 [40105] VERSION=1.1 NAME=GPS BIIF-7 (PRN 09) NICKNAME=GPS BIIF-7 (PRN 09) TLE1=1 40105U 14045A 21023.66455519 .00000041 00000-0 00000-0 0 9998 TLE2=2 40105 54.6112 167.1559 0017786 104.8036 255.3634 2.00574350 46583 [36400] VERSION=1.1 NAME=COSMOS 2459 (731) NICKNAME=COSMOS 2459 (731) TLE1=1 36400U 10007A 21023.84478433 -.00000031 00000-0 00000-0 0 9995 TLE2=2 36400 65.9362 20.5330 0025750 343.5772 138.2159 2.13104997 84826 [18421] VERSION=1.1 NAME=COSMOS 1892 NICKNAME=COSMOS 1892 TLE1=1 18421U 87088A 21023.80973257 .00000654 00000-0 30992-4 0 9998 TLE2=2 18421 82.4986 55.4248 0015576 26.8468 333.3568 15.17432219817968 [39444] VERSION=1.1 NAME=FUNCUBE-1 (AO-73) NICKNAME=AO-73 TLE1=1 39444U 13066AE 21023.98128786 .00000306 00000-0 43801-4 0 9996 TLE2=2 39444 97.5721 18.2397 0056292 265.8903 93.5876 14.82299034386629 [41850] VERSION=1.1 NAME=CELTEE 1 NICKNAME=CELTEE 1 TLE1=1 41850U 16067C 21023.81131954 .00000544 00000-0 52127-4 0 9992 TLE2=2 41850 97.9416 140.7236 0007408 226.7978 133.2625 14.97341684229472 [25991] VERSION=1.1 NAME=DMSP 5D-3 F15 (USA 147) NICKNAME=DMSP 5D-3 F15 (USA 147) TLE1=1 25991U 99067A 21024.20443288 -.00000105 00000-0 -29821-4 0 9991 TLE2=2 25991 98.9994 3.5737 0009679 188.5612 341.0839 14.16463980 91698 [22949] VERSION=1.1 NAME=MOLNIYA 1-87 NICKNAME=MOLNIYA 1-87 TLE1=1 22949U 93079A 21023.37170307 -.00000659 00000-0 00000-0 0 9991 TLE2=2 22949 63.4654 148.5438 6786594 287.6695 12.9074 2.02882060 64581 [41922] VERSION=1.1 NAME=IRIDIUM 104 NICKNAME=IRIDIUM 104 TLE1=1 41922U 17003F 21023.94669884 .00000006 00000-0 -48578-5 0 9995 TLE2=2 41922 86.4000 191.7481 0001599 89.5673 270.5706 14.34216912210879 [40890] VERSION=1.1 NAME=GSAT0206 (PRN E30) NICKNAME=GSAT0206 (PRN E30) TLE1=1 40890U 15045B 21022.94513904 .00000006 00000-0 00000-0 0 9994 TLE2=2 40890 55.9817 276.0510 0004097 6.6912 353.3836 1.70474830 33431 [45358] VERSION=1.1 NAME=COSMOS 2545 (760) NICKNAME=COSMOS 2545 (760) TLE1=1 45358U 20018A 21023.64188230 -.00000034 00000-0 00000-0 0 9994 TLE2=2 45358 64.8809 20.9614 0011474 255.6528 342.1687 2.13102674 6669 [20261] VERSION=1.1 NAME=INTERCOSMOS 24 NICKNAME=INTERCOSMOS 24 TLE1=1 20261U 89080A 21024.04508030 .00000101 00000-0 29590-4 0 9996 TLE2=2 20261 82.6020 237.5147 1202174 298.8383 49.7207 12.56166783431280 [6073] VERSION=1.1 NAME=COSMOS 482 DESCENT CRAFT NICKNAME=COSMOS 482 DESCENT CRAFT TLE1=1 06073U 72023E 21024.17478680 .00015415 54642-5 65507-4 0 9999 TLE2=2 06073 52.0452 16.6050 1304882 243.3799 102.7739 13.19090828531196 [43253] VERSION=1.1 NAME=IRIDIUM 145 NICKNAME=IRIDIUM 145 TLE1=1 43253U 18030E 21023.92956391 .00000087 00000-0 23881-4 0 9992 TLE2=2 43253 86.3956 33.7891 0002039 127.9887 232.1493 14.34220443147725 [42017] VERSION=1.1 NAME=NAYIF-1 (EO-88) NICKNAME=NAYIF-1 (EO-88) TLE1=1 42017U 17008BX 21023.68385482 .00001906 00000-0 73787-4 0 9994 TLE2=2 42017 97.3353 93.8158 0004479 258.6322 101.4414 15.27396525219150 [40485] VERSION=1.1 NAME=MMS 4 NICKNAME=MMS 4 TLE1=1 40485U 15011D 21023.37500000 -.00001894 00000-0 00000-0 0 9995 TLE2=2 40485 32.4031 118.8083 8469160 27.9371 26.8914 0.28555163 11825 [29252] VERSION=1.1 NAME=GENESIS 1 NICKNAME=GENESIS 1 TLE1=1 29252U 06029A 21023.93770714 .00000470 00000-0 32627-4 0 9998 TLE2=2 29252 64.5226 300.3056 0024909 340.8271 19.1912 15.18438029801578 [44431] VERSION=1.1 NAME=VCC B NICKNAME=VCC B TLE1=1 44431U 98067QR 21023.91813133 .00021965 00000-0 22659-3 0 9993 TLE2=2 44431 51.6363 306.6084 0004052 93.4511 266.6948 15.64719940 88860 [41849] VERSION=1.1 NAME=RAVAN NICKNAME=RAVAN TLE1=1 41849U 16067B 21023.87380551 .00001235 00000-0 10753-3 0 9991 TLE2=2 41849 97.9483 143.7479 0007543 212.8116 147.2638 14.98835438229639 [41884] VERSION=1.1 NAME=CYGFM05 NICKNAME=CYGFM05 TLE1=1 41884U 16078A 21023.62679953 .00000543 00000-0 30180-4 0 9990 TLE2=2 41884 34.9565 132.1197 0015867 214.9472 145.0198 15.14846282227481 [12585] VERSION=1.1 NAME=METEOR PRIRODA NICKNAME=METEOR PRIRODA TLE1=1 12585U 81065A 21023.91999584 .00000656 00000-0 31809-4 0 9995 TLE2=2 12585 97.5645 19.4535 0015557 115.7802 244.5041 15.22024653156634 [39253] VERSION=1.1 NAME=HISAKI (SPRINT-A) NICKNAME=HISAKI (SPRINT-A) TLE1=1 39253U 13049A 21023.76860083 .00000094 00000-0 36820-4 0 9991 TLE2=2 39253 29.7196 154.7481 0137282 247.1736 111.4284 13.55237817363916 [16882] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 16882U 86055B 21023.88444372 .00000068 00000-0 53802-5 0 9994 TLE2=2 16882 82.5203 80.8112 0020601 31.2344 140.9624 14.83253019841963 [35951] VERSION=1.1 NAME=DMSP 5D-3 F18 (USA 210) NICKNAME=DMSP 5D-3 F18 (USA 210) TLE1=1 35951U 09057A 21024.20657759 .00000071 00000-0 60500-4 0 9997 TLE2=2 35951 98.6660 12.8945 0012127 97.6148 262.6403 14.13327688581186 [44628] VERSION=1.1 NAME=ICON NICKNAME=ICON TLE1=1 44628U 19068A 21024.12710499 .00000501 00000-0 28721-4 0 9990 TLE2=2 44628 26.9912 33.7371 0018761 206.8719 153.0867 14.91837108 70408 [19257] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 19257U 88053B 21024.19965160 .00000003 00000-0 98364-5 0 9992 TLE2=2 19257 74.0504 315.0844 0021624 240.9544 222.9277 14.37499512708005 [26410] VERSION=1.1 NAME=CLUSTER II-FM7 (SAMBA) NICKNAME=CLUSTER II-FM7 (SAMBA) TLE1=1 26410U 00041A 21024.98739738 .00000136 00000-0 00000-0 0 9991 TLE2=2 26410 132.4249 343.3621 4681703 188.8132 359.2118 0.44227374 11567 [37867] VERSION=1.1 NAME=COSMOS 2476 (744) NICKNAME=COSMOS 2476 (744) TLE1=1 37867U 11064A 21023.55374422 -.00000006 00000-0 00000-0 0 9990 TLE2=2 37867 64.5514 139.7074 0019402 233.6043 130.3473 2.13101819 71821 [40354] VERSION=1.1 NAME=SL-27 R/B NICKNAME=SL-27 R/B TLE1=1 40354U 14084B 21023.89088277 .00001096 00000-0 27514-4 0 9999 TLE2=2 40354 74.7382 291.9060 0036587 7.3049 352.8687 15.40726226342078 [40936] VERSION=1.1 NAME=EXACTVIEW 9 NICKNAME=EXACTVIEW 9 TLE1=1 40936U 15052G 21024.03486710 .00000782 00000-0 20240-4 0 9992 TLE2=2 40936 6.0019 207.3390 0010116 148.3090 211.7647 14.76645126287847 [22178] VERSION=1.1 NAME=MOLNIYA 3-42 NICKNAME=MOLNIYA 3-42 TLE1=1 22178U 92067A 21022.98770109 .00000124 00000-0 00000-0 0 9999 TLE2=2 22178 64.7172 272.6650 6640132 274.7400 18.1979 2.20433344 68928 [40906] VERSION=1.1 NAME=XW-2C NICKNAME=XW-2C TLE1=1 40906U 15049H 21024.06301836 .00000912 00000-0 50266-4 0 9999 TLE2=2 40906 97.4830 28.2776 0014063 335.2618 96.1848 15.16441589295686 [24948] VERSION=1.1 NAME=IRIDIUM 28 [-] NICKNAME=IRIDIUM 28 [-] TLE1=1 24948U 97051E 21023.74125621 .00000079 00000-0 20591-4 0 9992 TLE2=2 24948 86.3956 94.6629 0001860 90.5302 269.6108 14.35738972223408 [39430] VERSION=1.1 NAME=GOMX-1 NICKNAME=GOMX-1 TLE1=1 39430U 13066Q 21024.08807427 .00000128 00000-0 32404-4 0 9998 TLE2=2 39430 97.8092 315.4921 0149886 209.1860 150.0904 14.59524266381985 [43549] VERSION=1.1 NAME=HALOSAT NICKNAME=HALOSAT TLE1=1 43549U 98067NX 21004.26885481 .06549442 12287-4 57988-3 0 9992 TLE2=2 43549 51.6198 324.6215 0004053 189.4390 170.6560 16.38331810141630 [26102] VERSION=1.1 NAME=MTI NICKNAME=MTI TLE1=1 26102U 00014A 21024.20956917 .00006479 00000-0 86478-4 0 9997 TLE2=2 26102 97.4798 283.3351 0007894 120.9483 239.2547 15.58433499158868 [44427] VERSION=1.1 NAME=KRAKSAT NICKNAME=KRAKSAT TLE1=1 44427U 98067QM 21024.19868848 .00014569 00000-0 17444-3 0 9990 TLE2=2 44427 51.6424 310.4969 0004219 74.2474 70.8539 15.61212231 88890 [43252] VERSION=1.1 NAME=IRIDIUM 140 NICKNAME=IRIDIUM 140 TLE1=1 43252U 18030D 21023.94226109 .00000103 00000-0 29721-4 0 9998 TLE2=2 43252 86.3956 33.8043 0001230 99.1513 260.9822 14.34219673147797 [42790] VERSION=1.1 NAME=VZLUSAT-1 NICKNAME=VZLUSAT-1 TLE1=1 42790U 17036AB 21023.90749250 .00002022 00000-0 82576-4 0 9991 TLE2=2 42790 97.2766 79.4675 0009465 332.7429 27.3311 15.25491042199440 [43194] VERSION=1.1 NAME=ZHANGZHENG-1 (CSES) NICKNAME=ZHANGZHENG-1 (CSES) TLE1=1 43194U 18015C 21024.12715919 .00001114 00000-0 53227-4 0 9990 TLE2=2 43194 97.4592 152.7325 0014410 59.8769 121.5256 15.21044916165207 [25560] VERSION=1.1 NAME=SWAS NICKNAME=SWAS TLE1=1 25560U 98071A 21023.87649611 .00000132 00000-0 20861-4 0 9990 TLE2=2 25560 69.8975 189.0146 0008028 345.5491 14.5434 14.93989575201949 [24298] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 24298U 96051B 21023.82839555 -.00000207 00000-0 -85834-4 0 9992 TLE2=2 24298 70.8360 165.9421 0014363 17.3352 342.8256 14.12473760257477 [40534] VERSION=1.1 NAME=GPS BIIF-9 (PRN 26) NICKNAME=GPS BIIF-9 (PRN 26) TLE1=1 40534U 15013A 21023.17739245 -.00000020 00000-0 00000-0 0 9995 TLE2=2 40534 54.0586 285.8084 0055885 12.4070 347.7851 2.00555264 42297 [20580] VERSION=1.1 NAME=HST NICKNAME=HST TLE1=1 20580U 90037B 21023.92702125 .00000504 00000-0 19569-4 0 9993 TLE2=2 20580 28.4701 301.3001 0002484 307.2707 125.7796 15.09540527489243 [42000] VERSION=1.1 NAME=DIDO-2 NICKNAME=DIDO-2 TLE1=1 42000U 17008BE 21023.69326925 .00001083 00000-0 46274-4 0 9991 TLE2=2 42000 97.3288 90.2834 0006674 261.5815 98.4667 15.24974167218324 [44299] VERSION=1.1 NAME=COSMOS 2534 (758) NICKNAME=COSMOS 2534 (758) TLE1=1 44299U 19030A 21023.27196688 .00000058 00000-0 00000-0 0 9999 TLE2=2 44299 64.5560 259.4676 0012506 296.7002 181.7337 2.13101915 12933 [33463] VERSION=1.1 NAME=FENGYUN 2E NICKNAME=FENGYUN 2E TLE1=1 33463U 08066A 21023.72760987 -.00000198 00000-0 00000-0 0 9992 TLE2=2 33463 4.8020 67.8048 0003881 316.8837 87.5938 1.00271911 44330 [17328] VERSION=1.1 NAME=MOLNIYA 3-31 NICKNAME=MOLNIYA 3-31 TLE1=1 17328U 87008A 21022.99138162 .00000323 00000-0 00000-0 0 9998 TLE2=2 17328 63.7808 183.7326 6739092 258.1698 24.6769 2.00536820245629 [41784] VERSION=1.1 NAME=PISAT NICKNAME=PISAT TLE1=1 41784U 16059B 21023.78035384 .00000080 00000-0 24416-4 0 9990 TLE2=2 41784 97.9898 79.9319 0031375 341.1710 18.8330 14.63580720231139 [43071] VERSION=1.1 NAME=IRIDIUM 138 NICKNAME=IRIDIUM 138 TLE1=1 43071U 17083B 21023.84421000 .00000081 00000-0 21985-4 0 9999 TLE2=2 43071 86.3935 65.3128 0002254 87.9729 272.1725 14.34216944161722 [27453] VERSION=1.1 NAME=NOAA 17 [-] NICKNAME=NOAA 17 [-] TLE1=1 27453U 02032A 21024.11977454 -.00000004 00000-0 16679-4 0 9993 TLE2=2 27453 98.6125 332.1503 0010986 318.7879 41.2470 14.25086065966329 [46505] VERSION=1.1 NAME=NETSAT-3 NICKNAME=NETSAT-3 TLE1=1 46505U 20068V 21023.80881491 .00000137 00000-0 15106-4 0 9991 TLE2=2 46505 97.6822 321.9917 0007222 229.1323 130.9276 15.01926486 17539 [43816] VERSION=1.1 NAME=SPACEBEE-7 NICKNAME=SPACEBEE-7 TLE1=1 43816U 18099BL 21024.15232243 .00000915 00000-0 86723-4 0 9995 TLE2=2 43816 97.6859 98.3221 0014162 155.4876 204.7022 14.95937525116480 [42809] VERSION=1.1 NAME=IRIDIUM 126 NICKNAME=IRIDIUM 126 TLE1=1 42809U 17039G 21023.74615721 .00000060 00000-0 14233-4 0 9997 TLE2=2 42809 86.3965 97.1019 0002175 92.7120 267.4325 14.34216641187530 [41886] VERSION=1.1 NAME=CYGFM02 NICKNAME=CYGFM02 TLE1=1 41886U 16078C 21023.64705984 .00000556 00000-0 30455-4 0 9997 TLE2=2 41886 34.9588 125.8788 0015137 222.3580 137.5963 15.15364025227584 [15214] VERSION=1.1 NAME=MOLNIYA 1-62 NICKNAME=MOLNIYA 1-62 TLE1=1 15214U 84089A 21023.05536822 -.00001310 00000-0 79067-3 0 9999 TLE2=2 15214 62.7158 100.9544 7403845 266.2692 14.9327 1.97957623234140 [43689] VERSION=1.1 NAME=METOP-C NICKNAME=METOP-C TLE1=1 43689U 18087A 21024.18145000 .00000002 00000-0 21022-4 0 9995 TLE2=2 43689 98.7082 86.6977 0003461 81.6364 278.5205 14.21489001114950 [25338] VERSION=1.1 NAME=NOAA 15 NICKNAME=NOAA 15 TLE1=1 25338U 98030A 21024.10736938 .00000033 00000-0 32207-4 0 9991 TLE2=2 25338 98.6981 53.8080 0010063 346.6040 13.4871 14.26009836180676 [25320] VERSION=1.1 NAME=IRIDIUM 71 [-] NICKNAME=IRIDIUM 71 [-] TLE1=1 25320U 98026B 21023.81816976 .00000110 00000-0 29125-4 0 9996 TLE2=2 25320 86.3953 47.0306 0002277 35.1200 325.0149 14.39285721192588 [40926] VERSION=1.1 NAME=TIANWANG 1C (TW-1C) NICKNAME=TIANWANG 1C (TW-1C) TLE1=1 40926U 15051B 21024.10578910 .00152487 10411-4 49793-3 0 9996 TLE2=2 40926 97.0492 85.3590 0001410 295.4614 121.3231 15.90667520301728 [26407] VERSION=1.1 NAME=GPS BIIR-5 (PRN 28) NICKNAME=GPS BIIR-5 (PRN 28) TLE1=1 26407U 00040A 21023.90999806 -.00000027 00000-0 00000-0 0 9991 TLE2=2 26407 55.8288 293.4627 0182777 282.1752 90.9140 2.00564471150434 [39453] VERSION=1.1 NAME=SWARM C NICKNAME=SWARM C TLE1=1 39453U 13067C 21023.89659120 .00001284 00000-0 26124-4 0 9993 TLE2=2 39453 87.3437 50.9396 0002254 97.2150 262.9364 15.45148541403172 [20666] VERSION=1.1 NAME=SL-6 R/B(2) NICKNAME=SL-6 R/B(2) TLE1=1 20666U 90055D 21023.81933835 -.00000009 00000-0 17483-4 0 9994 TLE2=2 20666 62.7858 68.2602 0078305 17.7061 342.6733 14.92424257658183 [26998] VERSION=1.1 NAME=TIMED NICKNAME=TIMED TLE1=1 26998U 01055B 21023.88784804 .00000114 00000-0 16398-4 0 9997 TLE2=2 26998 74.0707 214.3552 0002130 251.9018 108.1931 14.88261223 37230 [38049] VERSION=1.1 NAME=FENGYUN 2F NICKNAME=FENGYUN 2F TLE1=1 38049U 12002A 21023.94788093 -.00000347 00000-0 00000-0 0 9990 TLE2=2 38049 2.5740 82.8231 0004162 27.6878 106.1941 1.00280636 33137 [37869] VERSION=1.1 NAME=COSMOS 2475 (743) NICKNAME=COSMOS 2475 (743) TLE1=1 37869U 11064C 21023.42634672 -.00000005 00000-0 00000-0 0 9993 TLE2=2 37869 64.5668 139.7740 0020335 256.7589 145.4475 2.13101775 71786 [25994] VERSION=1.1 NAME=TERRA NICKNAME=TERRA TLE1=1 25994U 99068A 21024.15962205 .00000054 00000-0 21960-4 0 9991 TLE2=2 25994 98.1922 101.1263 0001339 98.0304 320.0605 14.57121931122450 [877] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 00877U 64053B 21024.16477850 -.00000069 00000-0 11197-4 0 9996 TLE2=2 00877 65.0781 43.9787 0079688 304.9770 54.3864 14.59414844993697 [29506] VERSION=1.1 NAME=SJ-6D NICKNAME=SJ-6D TLE1=1 29506U 06046B 21024.15791258 -.00000294 00000-0 -22472-4 0 9993 TLE2=2 29506 97.8297 43.2160 0003670 103.6297 256.5327 14.93569587776115 [43940] VERSION=1.1 NAME=AOBA VELOX-IV NICKNAME=AOBA VELOX-IV TLE1=1 43940U 19003J 21023.84791144 .00002771 00000-0 10934-3 0 9996 TLE2=2 43940 97.2008 73.3176 0023789 158.8471 201.3757 15.26106562112247 [27540] VERSION=1.1 NAME=INTEGRAL NICKNAME=INTEGRAL TLE1=1 27540U 02048A 21021.60952539 .00000757 00000-0 00000-0 0 9996 TLE2=2 27540 59.9782 96.1357 8999555 297.1376 1.7819 0.37564767 19232 [41885] VERSION=1.1 NAME=CYGFM04 NICKNAME=CYGFM04 TLE1=1 41885U 16078B 21023.65383048 .00000570 00000-0 31152-4 0 9991 TLE2=2 41885 34.9496 123.9472 0014436 226.9294 133.0209 15.15365166227517 [40315] VERSION=1.1 NAME=COSMOS 2501 (702K) NICKNAME=COSMOS 2501 (702K) TLE1=1 40315U 14075A 21023.76297100 .00000064 00000-0 00000-0 0 9990 TLE2=2 40315 63.8141 259.0564 0015687 209.8924 59.8402 2.13101313 47868 [25867] VERSION=1.1 NAME=CXO NICKNAME=CXO TLE1=1 25867U 99040B 21025.30474678 .00000474 00000-0 00000-0 0 9994 TLE2=2 25867 58.2889 260.4988 8097747 226.3937 0.2373 0.37803455 9909 [22825] VERSION=1.1 NAME=EYESAT A (AO-27) NICKNAME=AO-27 TLE1=1 22825U 93061C 21023.76247076 .00000003 00000-0 19245-4 0 9993 TLE2=2 22825 98.9242 37.7709 0009475 95.5356 264.6907 14.30104195425302 [41860] VERSION=1.1 NAME=GSAT0212 (PRN E03) NICKNAME=GSAT0212 (PRN E03) TLE1=1 41860U 16069B 21023.26485533 .00000026 00000-0 00000-0 0 9993 TLE2=2 41860 54.6891 155.7376 0001970 350.1718 9.7821 1.70473650 26053 [41882] VERSION=1.1 NAME=FENGYUN 4A NICKNAME=FENGYUN 4A TLE1=1 41882U 16077A 21023.74828003 -.00000317 00000-0 00000-0 0 9996 TLE2=2 41882 0.0536 75.0638 0004680 352.9605 69.2577 1.00275808 15223 [43923] VERSION=1.1 NAME=IRIDIUM 176 NICKNAME=IRIDIUM 176 TLE1=1 43923U 19002B 21023.91111978 .00000149 00000-0 19678-4 0 9997 TLE2=2 43923 86.6098 97.0398 0002643 94.6615 265.4904 14.72255366109362 [36799] VERSION=1.1 NAME=TISAT 1 NICKNAME=TISAT 1 TLE1=1 36799U 10035E 21023.75927469 .00000264 00000-0 32472-4 0 9994 TLE2=2 36799 98.2023 208.7225 0011529 333.4538 26.6088 14.91577735571768 [41890] VERSION=1.1 NAME=CYGFM07 NICKNAME=CYGFM07 TLE1=1 41890U 16078G 21023.60525752 .00000543 00000-0 29757-4 0 9990 TLE2=2 41890 34.9520 123.8227 0013885 225.5863 134.3712 15.15353833227524 [24883] VERSION=1.1 NAME=ORBVIEW 2 (SEASTAR) NICKNAME=ORBVIEW 2 (SEASTAR) TLE1=1 24883U 97037A 21023.88545623 .00000002 00000-0 16675-4 0 9991 TLE2=2 24883 98.6272 142.3073 0002782 153.0066 207.1264 14.33591980240293 [36401] VERSION=1.1 NAME=COSMOS 2461 (735) NICKNAME=COSMOS 2461 (735) TLE1=1 36401U 10007B 21023.42238578 -.00000032 00000-0 00000-0 0 9995 TLE2=2 36401 65.9313 20.5115 0019835 359.0445 160.6753 2.13103679 84825 [43823] VERSION=1.1 NAME=GEO-KOMPSAT-2A NICKNAME=GEO-KOMPSAT-2A TLE1=1 43823U 18100A 21023.87931339 -.00000331 00000-0 00000-0 0 9999 TLE2=2 43823 0.0503 244.9636 0002365 36.8446 286.3965 1.00272846 7861 [39151] VERSION=1.1 NAME=NEE-01 PEGASO NICKNAME=NEE-01 PEGASO TLE1=1 39151U 13018B 21024.17906160 .00000158 00000-0 27630-4 0 9997 TLE2=2 39151 97.9758 127.5524 0018387 104.8612 255.4638 14.80274572418333 [36508] VERSION=1.1 NAME=CRYOSAT 2 NICKNAME=CRYOSAT 2 TLE1=1 36508U 10013A 21024.21213618 .00000029 00000-0 64009-5 0 9995 TLE2=2 36508 92.0192 161.0923 0006502 158.7018 201.4461 14.51909917572280 [43700] VERSION=1.1 NAME=ES'HAIL 2 NICKNAME=ES'HAIL 2 TLE1=1 43700U 18090A 21023.85890014 .00000157 00000-0 00000-0 0 9998 TLE2=2 43700 0.0177 90.4698 0001962 250.9694 116.9304 1.00274139 7929 [37847] VERSION=1.1 NAME=GSAT0102 (PRN E12) NICKNAME=GSAT0102 (PRN E12) TLE1=1 37847U 11060B 21023.44219462 -.00000052 00000-0 00000-0 0 9995 TLE2=2 37847 56.7608 35.2453 0005629 303.4384 62.3213 1.70475586 57532 [25077] VERSION=1.1 NAME=IRIDIUM 42 [-] NICKNAME=IRIDIUM 42 [-] TLE1=1 25077U 97077A 21023.89972317 .00000111 00000-0 32390-4 0 9999 TLE2=2 25077 86.3991 191.3223 0001695 78.6920 281.4466 14.34626964210956 [41788] VERSION=1.1 NAME=CANX-7 NICKNAME=CANX-7 TLE1=1 41788U 16059F 21024.22867478 .00008358 00000-0 10429-2 0 9994 TLE2=2 41788 98.2556 124.3096 0024969 301.4782 58.4471 14.82447412232479 [15945] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 15945U 85069B 21023.93801293 .00000078 00000-0 64264-5 0 9997 TLE2=2 15945 82.5294 339.7531 0018166 255.1991 104.7212 14.84062516895232 [39260] VERSION=1.1 NAME=FENGYUN 3C NICKNAME=FENGYUN 3C TLE1=1 39260U 13052A 21024.11342485 -.00000011 00000-0 15708-4 0 9996 TLE2=2 39260 98.5211 71.2871 0010087 305.1010 54.9222 14.15856854379842 [44430] VERSION=1.1 NAME=VCC C NICKNAME=VCC C TLE1=1 44430U 98067QQ 21023.94885828 .00051398 00000-0 37855-3 0 9992 TLE2=2 44430 51.6344 297.7728 0004299 115.5207 244.6237 15.72511775 87876 [19046] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 19046U 88032B 21023.92665287 .00001048 00000-0 81443-4 0 9991 TLE2=2 19046 97.3919 41.0739 0037381 174.4829 185.6816 15.02836951770077 [39620] VERSION=1.1 NAME=COSMOS 2492 (754) NICKNAME=COSMOS 2492 (754) TLE1=1 39620U 14012A 21024.14660462 -.00000031 00000-0 00000+0 0 9990 TLE2=2 39620 65.8081 20.1987 0015046 316.3074 221.9066 2.13103171 53257 [22220] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 22220U 92076B 21023.84327712 -.00000276 00000-0 -11444-3 0 9998 TLE2=2 22220 70.9999 167.6475 0010718 61.3252 46.5910 14.16465721456888 [43481] VERSION=1.1 NAME=IRIDIUM 110 NICKNAME=IRIDIUM 110 TLE1=1 43481U 18047F 21023.92132467 .00000006 00000-0 -50168-5 0 9994 TLE2=2 43481 86.3998 191.7435 0001588 90.0850 270.0528 14.34217409140070 [39423] VERSION=1.1 NAME=WNISAT-1 NICKNAME=WNISAT-1 TLE1=1 39423U 13066H 21024.07400035 .00000067 00000-0 23642-4 0 9999 TLE2=2 39423 97.8026 296.4778 0174060 287.8001 70.4272 14.53180251380465 [18749] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 18749U 88001B 21023.89691698 .00000064 00000-0 49217-5 0 9998 TLE2=2 18749 82.5158 151.0618 0017352 293.6148 186.1141 14.83243161764544 [4793] VERSION=1.1 NAME=NOAA 1 [-] NICKNAME=NOAA 1 [-] TLE1=1 04793U 70106A 21023.95836354 -.00000051 00000-0 -43541-4 0 9997 TLE2=2 04793 101.6291 94.1029 0031639 231.7964 301.0508 12.53997790293726 [40482] VERSION=1.1 NAME=MMS 1 NICKNAME=MMS 1 TLE1=1 40482U 15011A 21023.37500000 -.00001894 00000-0 00000-0 0 9992 TLE2=2 40482 32.4021 118.7974 8468561 27.9500 26.8880 0.28555189 11872 [41038] VERSION=1.1 NAME=YAOGAN 29 NICKNAME=YAOGAN 29 TLE1=1 41038U 15069A 21024.11175594 .00000001 00000-0 71078-5 0 9998 TLE2=2 41038 98.0285 17.9389 0000539 90.6530 269.4742 14.80482339278921 [42788] VERSION=1.1 NAME=SUCHAI NICKNAME=SUCHAI TLE1=1 42788U 17036Z 21023.80817423 .00001633 00000-0 69093-4 0 9991 TLE2=2 42788 97.2738 78.2333 0010261 335.9406 24.1351 15.24547355199447 [29670] VERSION=1.1 NAME=COSMOS 2425 (716) NICKNAME=COSMOS 2425 (716) TLE1=1 29670U 06062A 21018.31783351 .00000007 00000-0 00000-0 0 9998 TLE2=2 29670 64.8853 260.5245 0024580 348.3591 177.4395 2.13107776109477 [41926] VERSION=1.1 NAME=IRIDIUM 111 NICKNAME=IRIDIUM 111 TLE1=1 41926U 17003K 21023.92765916 .00000013 00000-0 -24481-5 0 9995 TLE2=2 41926 86.3997 191.7080 0001917 82.8990 277.2423 14.34217292210854 [10967] VERSION=1.1 NAME=SEASAT 1 NICKNAME=SEASAT 1 TLE1=1 10967U 78064A 21024.20528204 -.00000079 00000-0 16906-4 0 9993 TLE2=2 10967 107.9991 172.2598 0001380 285.6186 74.4806 14.43856897236682 [19650] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 19650U 88102B 21023.70954738 -.00000242 00000-0 -98681-4 0 9997 TLE2=2 19650 70.9989 126.7572 0015354 330.6740 29.3520 14.15798556662057 [43690] VERSION=1.1 NAME=CICERO 10 NICKNAME=CICERO 10 TLE1=1 43690U 18088A 21023.77360723 .00001236 00000-0 54195-4 0 9990 TLE2=2 43690 85.0386 293.0992 0013060 214.8008 145.2381 15.20785463122236 [25861] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 25861U 99039B 21023.94437014 .00000027 00000-0 11153-4 0 9996 TLE2=2 25861 98.2091 36.4687 0015901 165.2715 253.6166 14.78616453160203 [41924] VERSION=1.1 NAME=IRIDIUM 108 NICKNAME=IRIDIUM 108 TLE1=1 41924U 17003H 21023.91156100 .00000076 00000-0 19941-4 0 9993 TLE2=2 41924 86.4006 160.2005 0001715 100.4162 259.7227 14.34217032212701 [32260] VERSION=1.1 NAME=GPS BIIRM-4 (PRN 15) NICKNAME=GPS BIIRM-4 (PRN 15) TLE1=1 32260U 07047A 21022.84959044 .00000033 00000-0 00000-0 0 9997 TLE2=2 32260 53.2536 161.7009 0128719 54.4482 306.7132 2.00576022 97314 [40901] VERSION=1.1 NAME=ZDPS 2A NICKNAME=ZDPS 2A TLE1=1 40901U 15049C 21024.08225065 .00001518 00000-0 75795-4 0 9992 TLE2=2 40901 97.4636 32.9605 0012389 332.0564 113.2631 15.18955923296059 [40039] VERSION=1.1 NAME=PERSEUS-M1 NICKNAME=PERSEUS-M1 TLE1=1 40039U 14033AF 21023.76789366 .00000093 00000-0 16852-4 0 9995 TLE2=2 40039 97.8860 302.9636 0013175 312.4552 47.5549 14.86239331357294 [36119] VERSION=1.1 NAME=WISE NICKNAME=WISE TLE1=1 36119U 09071A 21023.83275412 .00000858 00000-0 31553-4 0 9999 TLE2=2 36119 97.3035 62.8632 0001948 3.6602 356.4653 15.30546550617500 [40069] VERSION=1.1 NAME=METEOR-M 2 NICKNAME=METEOR-M 2 TLE1=1 40069U 14037A 21024.12689972 -.00000032 00000-0 44603-5 0 9995 TLE2=2 40069 98.4780 59.0262 0005835 13.6794 346.4556 14.20680139339543 [39155] VERSION=1.1 NAME=COSMOS 2485 (747) NICKNAME=COSMOS 2485 (747) TLE1=1 39155U 13019A 21023.52665387 -.00000005 00000-0 00000-0 0 9993 TLE2=2 39155 64.7184 140.0251 0019904 228.9061 158.7856 2.13101781 60290 [27844] VERSION=1.1 NAME=CUTE-1 (CO-55) NICKNAME=CO-55 TLE1=1 27844U 03031E 21023.91023947 .00000064 00000-0 48232-4 0 9998 TLE2=2 27844 98.6817 34.3049 0010634 133.4509 226.7555 14.22283724911433 [21263] VERSION=1.1 NAME=NOAA 12 [-] NICKNAME=NOAA 12 [-] TLE1=1 21263U 91032A 21023.92927066 .00000006 00000-0 20223-4 0 9997 TLE2=2 21263 98.5051 33.4380 0014270 34.6421 325.5686 14.25930975544114 [40732] VERSION=1.1 NAME=METEOSAT-11 (MSG-4) NICKNAME=METEOSAT-11 (MSG-4) TLE1=1 40732U 15034A 21023.85384045 .00000012 00000-0 00000-0 0 9997 TLE2=2 40732 0.3192 259.1355 0001181 356.3432 175.7275 1.00262425 20288 [41921] VERSION=1.1 NAME=IRIDIUM 105 NICKNAME=IRIDIUM 105 TLE1=1 41921U 17003E 21023.90475354 .00000073 00000-0 18906-4 0 9991 TLE2=2 41921 86.4012 160.1966 0001406 91.7414 268.3942 14.34214519212739 [39440] VERSION=1.1 NAME=CUBEBUG-2 (LO-74) NICKNAME=CUBEBUG-2 (LO-74) TLE1=1 39440U 13066AA 21023.93895815 .00000331 00000-0 52797-4 0 9993 TLE2=2 39440 97.6578 0.5815 0079646 345.5270 14.3659 14.76146559386307 [40931] VERSION=1.1 NAME=LAPAN-A2 NICKNAME=LAPAN-A2 TLE1=1 40931U 15052B 21024.14219262 .00000666 00000-0 36246-5 0 9990 TLE2=2 40931 5.9969 201.5844 0012495 159.9963 200.1022 14.76659509287932 [37372] VERSION=1.1 NAME=COSMOS 2471 (701K) NICKNAME=COSMOS 2471 (701K) TLE1=1 37372U 11009A 21023.83630944 -.00000031 00000-0 00000-0 0 9993 TLE2=2 37372 65.9152 20.3967 0010534 234.9807 349.1973 2.13107335 77101 [39446] VERSION=1.1 NAME=UWE-3 NICKNAME=UWE-3 TLE1=1 39446U 13066AG 21023.88843742 .00000297 00000-0 45887-4 0 9998 TLE2=2 39446 97.6205 7.6019 0068700 311.6279 47.9061 14.78681910385143 [42792] VERSION=1.1 NAME=ROBUSTA-1B NICKNAME=ROBUSTA-1B TLE1=1 42792U 17036AD 21023.87073839 .00001563 00000-0 66270-4 0 9994 TLE2=2 42792 97.2735 78.3954 0009774 336.8237 23.2559 15.24547851199393 [16969] VERSION=1.1 NAME=NOAA 10 [-] NICKNAME=NOAA 10 [-] TLE1=1 16969U 86073A 21023.97105543 .00000025 00000-0 27153-4 0 9996 TLE2=2 16969 98.5210 15.9612 0012468 12.3909 44.0551 14.28121887788113 [42963] VERSION=1.1 NAME=IRIDIUM 139 NICKNAME=IRIDIUM 139 TLE1=1 42963U 17061J 21024.20623776 .00000073 00000-0 19112-4 0 9999 TLE2=2 42963 86.3997 128.5599 0002017 90.4516 269.6911 14.34219085172485 [43616] VERSION=1.1 NAME=ELFIN-B NICKNAME=ELFIN-B TLE1=1 43616U 18070D 21024.15565135 .00004921 00000-0 11290-3 0 9998 TLE2=2 43616 93.0210 246.0859 0013780 193.0617 167.0284 15.42661427132515 [43557] VERSION=1.1 NAME=AEROCUBE 12B NICKNAME=AEROCUBE 12B TLE1=1 43557U 18046D 21023.69919166 .00002376 00000-0 91782-4 0 9997 TLE2=2 43557 51.6404 127.8705 0007965 7.2404 352.8690 15.30399228141034 [43617] VERSION=1.1 NAME=ELFIN-A NICKNAME=ELFIN-A TLE1=1 43617U 18070E 21023.89329533 .00005421 00000-0 12299-3 0 9995 TLE2=2 43617 93.0265 246.6859 0013218 190.1488 169.9504 15.42999638132482 [27424] VERSION=1.1 NAME=AQUA NICKNAME=AQUA TLE1=1 27424U 02022A 21024.11674737 .00000073 00000-0 26292-4 0 9995 TLE2=2 27424 98.2155 327.5219 0002169 51.8009 37.7561 14.57103616996053 [25732] VERSION=1.1 NAME=CZ-4B R/B NICKNAME=CZ-4B R/B TLE1=1 25732U 99025C 21023.95578487 -.00000032 00000-0 68274-5 0 9993 TLE2=2 25732 98.9219 59.9498 0036486 302.7923 118.8554 14.17687222123060 [24871] VERSION=1.1 NAME=IRIDIUM 920 [-] NICKNAME=IRIDIUM 920 [-] TLE1=1 24871U 97034C 21024.14918118 .00000111 00000-0 28973-4 0 9993 TLE2=2 24871 86.4007 171.3163 0010703 336.9560 23.1157 14.39680469235812 [41887] VERSION=1.1 NAME=CYGFM01 NICKNAME=CYGFM01 TLE1=1 41887U 16078D 21023.68889589 .00000538 00000-0 30088-4 0 9998 TLE2=2 41887 34.9529 133.2138 0016397 215.5599 144.4020 15.14653174227446 [29048] VERSION=1.1 NAME=FORMOSAT-3 FM1 NICKNAME=FORMOSAT-3 FM1 TLE1=1 29048U 06011B 21024.18582247 .00000070 00000-0 44071-4 0 9994 TLE2=2 29048 71.9669 290.1019 0043669 356.8832 3.2025 14.28749351775328 [41918] VERSION=1.1 NAME=IRIDIUM 103 NICKNAME=IRIDIUM 103 TLE1=1 41918U 17003B 21024.16867462 .00000005 00000-0 -51448-5 0 9996 TLE2=2 41918 86.4000 191.6501 0001992 81.5029 278.6392 14.34217195210874 [46395] VERSION=1.1 NAME=2020-063G NICKNAME=2020-063G TLE1=1 46395U 20063G 21023.88977502 .00014415 00000-0 75493-4 0 9999 TLE2=2 46395 50.2056 31.3350 0009018 189.7026 170.3783 15.81027468 22367 [40904] VERSION=1.1 NAME=KAITUO 1A NICKNAME=KAITUO 1A TLE1=1 40904U 15049F 21024.07066888 .00000627 00000-0 36078-4 0 9991 TLE2=2 40904 97.4834 27.8690 0014122 345.1894 100.3094 15.15973285295661 [43508] VERSION=1.1 NAME=COSMOS 2527 (756) NICKNAME=COSMOS 2527 (756) TLE1=1 43508U 18053A 21024.13578734 -.00000007 00000-0 00000+0 0 9991 TLE2=2 43508 64.8837 139.8995 0006997 221.2171 141.4290 2.13102527 20296 [27607] VERSION=1.1 NAME=SAUDISAT 1C (SO-50) NICKNAME=SO-50 TLE1=1 27607U 02058C 21023.82218159 -.00000007 00000-0 19293-4 0 9997 TLE2=2 27607 64.5556 60.5960 0029382 85.1077 275.3379 14.75704616973212 [42765] VERSION=1.1 NAME=UCLSAT NICKNAME=UCLSAT TLE1=1 42765U 17036A 21023.86336968 .00001505 00000-0 64476-4 0 9990 TLE2=2 42765 97.2722 77.8792 0010220 337.0034 23.0745 15.24242702200147 [25467] VERSION=1.1 NAME=IRIDIUM 82 [-] NICKNAME=IRIDIUM 82 [-] TLE1=1 25467U 98051A 21023.81583599 .00000606 00000-0 41998-4 0 9990 TLE2=2 25467 86.4027 139.1199 0177948 13.3332 347.2506 14.91234229182923 [27640] VERSION=1.1 NAME=CORIOLIS NICKNAME=CORIOLIS TLE1=1 27640U 03001A 21023.96736939 .00000002 00000-0 21629-4 0 9999 TLE2=2 27640 98.7246 36.0074 0015067 120.9216 294.8058 14.19059093934718 [22219] VERSION=1.1 NAME=COSMOS 2219 NICKNAME=COSMOS 2219 TLE1=1 22219U 92076A 21023.91795107 -.00000169 00000-0 -64325-4 0 9999 TLE2=2 22219 71.0627 327.1611 0018114 186.9827 173.1046 14.13659267453972 [43666] VERSION=1.1 NAME=CUBEBEL-1 (BSUSAT-1) NICKNAME=CUBEBEL-1 (BSUSAT-1) TLE1=1 43666U 18083E 21024.18401990 .00001444 00000-0 72518-4 0 9996 TLE2=2 43666 97.4716 54.2944 0013505 317.1653 111.0046 15.18841667124118 [43922] VERSION=1.1 NAME=IRIDIUM 180 NICKNAME=IRIDIUM 180 TLE1=1 43922U 19002A 21023.73346440 .00000062 00000-0 15088-4 0 9995 TLE2=2 43922 86.3964 97.0823 0003150 106.8821 253.2720 14.34217911106564 [7392] VERSION=1.1 NAME=MOLNIYA 1-S NICKNAME=MOLNIYA 1-S TLE1=1 07392U 74060A 21024.18564479 .00000157 00000-0 00000+0 0 9993 TLE2=2 07392 6.3653 290.4239 0008776 190.6503 114.0547 1.00302016114402 [39422] VERSION=1.1 NAME=STSAT-3 NICKNAME=STSAT-3 TLE1=1 39422U 13066G 21024.06944980 -.00000387 00000-0 -34576-4 0 9994 TLE2=2 39422 97.4924 51.5593 0023188 175.4439 184.7021 14.89906791389984 [42793] VERSION=1.1 NAME=CICERO 6 NICKNAME=CICERO 6 TLE1=1 42793U 17036AE 21023.90101654 .00001012 00000-0 45072-4 0 9992 TLE2=2 42793 97.2707 77.5096 0009306 341.2382 18.8511 15.23649420199429 [43143] VERSION=1.1 NAME=CICERO 7 NICKNAME=CICERO 7 TLE1=1 43143U 18004AJ 21024.20859791 .00002105 00000-0 83818-4 0 9998 TLE2=2 43143 97.4251 101.1701 0007163 15.5091 344.6365 15.26340441168774 [13875] VERSION=1.1 NAME=MOLNIYA 3-20 NICKNAME=MOLNIYA 3-20 TLE1=1 13875U 83015A 21023.10018046 -.00001297 00000-0 00000-0 0 9999 TLE2=2 13875 63.3366 70.3852 7271978 255.5495 20.4890 2.00493864213470 [40046] VERSION=1.1 NAME=AEROCUBE 6B NICKNAME=AEROCUBE 6B TLE1=1 40046U 14033AN 21023.87062386 .00000327 00000-0 53811-4 0 9997 TLE2=2 40046 97.6995 240.7448 0056842 356.8328 3.2514 14.75728795354619 [36122] VERSION=1.1 NAME=XIWANG-1 (HOPE-1) NICKNAME=HO-68 TLE1=1 36122U 09072B 21023.81776791 -.00000035 00000-0 18630-4 0 9997 TLE2=2 36122 100.1133 10.5824 0008180 76.5812 283.6213 13.16358671533862 [43564] VERSION=1.1 NAME=GSAT0221 (PRN E15) NICKNAME=GSAT0221 (PRN E15) TLE1=1 43564U 18060A 21023.72623745 -.00000051 00000-0 00000+0 0 9997 TLE2=2 43564 56.9412 35.0259 0006254 276.1450 83.8278 1.70476136 15587 [39452] VERSION=1.1 NAME=SWARM A NICKNAME=SWARM A TLE1=1 39452U 13067B 21023.89666868 .00001283 00000-0 26111-4 0 9994 TLE2=2 39452 87.3585 50.4302 0002259 97.1553 262.9962 15.45150051403216 [42789] VERSION=1.1 NAME=SKCUBE NICKNAME=SKCUBE TLE1=1 42789U 17036AA 21023.88035845 .00001516 00000-0 64771-4 0 9998 TLE2=2 42789 97.2731 78.0796 0010187 336.3240 23.7528 15.24333645199367 [42955] VERSION=1.1 NAME=IRIDIUM 133 NICKNAME=IRIDIUM 133 TLE1=1 42955U 17061A 21023.83836937 .00000068 00000-0 17150-4 0 9997 TLE2=2 42955 86.3995 128.6900 0002189 86.2516 273.8930 14.34218914172369 [43927] VERSION=1.1 NAME=IRIDIUM 172 NICKNAME=IRIDIUM 172 TLE1=1 43927U 19002F 21024.19647212 .00000072 00000-0 18786-4 0 9991 TLE2=2 43927 86.3962 96.8810 0002458 98.8086 261.3389 14.34218032106604 [15772] VERSION=1.1 NAME=SL-12 R/B(2) NICKNAME=SL-12 R/B(2) TLE1=1 15772U 85042D 21023.93232509 .00000044 00000-0 41694-4 0 9998 TLE2=2 15772 71.1085 77.2344 0034544 159.5568 12.9343 14.21283779848536 [29047] VERSION=1.1 NAME=FORMOSAT-3 FM6 NICKNAME=FORMOSAT-3 FM6 TLE1=1 29047U 06011A 21023.74216238 .00000170 00000-0 82799-4 0 9998 TLE2=2 29047 71.9788 20.3562 0048772 39.7984 320.6713 14.28779296772777 [42804] VERSION=1.1 NAME=IRIDIUM 123 NICKNAME=IRIDIUM 123 TLE1=1 42804U 17039B 21023.73979042 .00000066 00000-0 16455-4 0 9994 TLE2=2 42804 86.3971 97.1018 0002272 92.9622 267.1834 14.34213387187523 [21938] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 21938U 92020B 21023.77013294 .00000011 00000-0 -51233-5 0 9999 TLE2=2 21938 82.9298 103.0133 0030499 118.0379 357.2142 13.75293195443952 [43010] VERSION=1.1 NAME=FENGYUN 3D NICKNAME=FENGYUN 3D TLE1=1 43010U 17072A 21024.09402288 .00000003 00000-0 22429-4 0 9993 TLE2=2 43010 98.7753 327.1467 0001865 130.1040 230.0307 14.19759307165506 [33504] VERSION=1.1 NAME=KORONAS-FOTON NICKNAME=KORONAS-FOTON TLE1=1 33504U 09003A 21023.93066883 .00000498 00000-0 24279-4 0 9997 TLE2=2 33504 82.4423 3.4118 0017604 233.4233 126.5381 15.15848844660775 [43021] VERSION=1.1 NAME=DELLINGR (RBLE) NICKNAME=DELLINGR (RBLE) TLE1=1 43021U 98067NJ 21023.79156616 .00038724 00000-0 18535-3 0 9998 TLE2=2 43021 51.6297 226.5833 0003072 175.9534 184.1494 15.82353544181592 [42785] VERSION=1.1 NAME=DIAMOND GREEN NICKNAME=DIAMOND GREEN TLE1=1 42785U 17036W 21023.63613941 .00001198 00000-0 53148-4 0 9998 TLE2=2 42785 97.2727 76.7256 0010969 341.2160 18.8671 15.23408415199336 [43043] VERSION=1.1 NAME=AEROCUBE 7C (OCSD C) NICKNAME=AEROCUBE 7C (OCSD C) TLE1=1 43043U 17071G 21023.80531438 .00004868 00000-0 10673-3 0 9996 TLE2=2 43043 51.6375 63.7955 0004191 130.6807 229.4544 15.46004697176408 [43721] VERSION=1.1 NAME=FACSAT-1 NICKNAME=FACSAT-1 TLE1=1 43721U 18096C 21024.10169316 .00001659 00000-0 62977-4 0 9993 TLE2=2 43721 97.3997 102.3240 0018608 65.6494 340.0941 15.28126044120076 [38833] VERSION=1.1 NAME=GPS BIIF-3 (PRN 24) NICKNAME=GPS BIIF-3 (PRN 24) TLE1=1 38833U 12053A 21022.93578883 .00000097 00000-0 00000-0 0 9990 TLE2=2 38833 53.6001 224.2961 0107057 40.5516 320.2878 2.00569594 60016 [31793] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 31793U 07029B 21023.79129406 -.00000095 00000-0 -24501-4 0 9999 TLE2=2 31793 70.9771 143.5106 0002910 277.6070 190.6874 14.14444839700810 [41866] VERSION=1.1 NAME=GOES 16 NICKNAME=GOES 16 TLE1=1 41866U 16071A 21023.83874862 -.00000235 00000-0 00000-0 0 9995 TLE2=2 41866 0.0371 228.3588 0001511 94.9715 26.7806 1.00272260 15350 [13923] VERSION=1.1 NAME=NOAA 8 [-] NICKNAME=NOAA 8 [-] TLE1=1 13923U 83022A 21023.95225223 .00000013 00000-0 22857-4 0 9993 TLE2=2 13923 98.6414 12.8238 0014089 260.1902 99.7689 14.28723824969652 [27597] VERSION=1.1 NAME=MIDORI II (ADEOS-II) NICKNAME=MIDORI II (ADEOS-II) TLE1=1 27597U 02056A 21023.84332620 .00000029 00000-0 29394-4 0 9991 TLE2=2 27597 98.5485 332.1828 0002026 74.9325 285.2080 14.27480974943252 [29050] VERSION=1.1 NAME=FORMOSAT-3 FM3 NICKNAME=FORMOSAT-3 FM3 TLE1=1 29050U 06011D 21023.92344587 .00000152 00000-0 42361-4 0 9992 TLE2=2 29050 72.0140 227.0876 0051654 283.4644 76.0756 14.59007734788482 [29107] VERSION=1.1 NAME=CLOUDSAT NICKNAME=CLOUDSAT TLE1=1 29107U 06016A 21023.89913735 .00000091 00000-0 27482-4 0 9992 TLE2=2 29107 98.2605 336.7171 0001954 76.8798 283.2621 14.62294793784542 [38552] VERSION=1.1 NAME=METEOSAT-10 (MSG-3) NICKNAME=METEOSAT-10 (MSG-3) TLE1=1 38552U 12035B 21023.85558517 .00000075 00000-0 00000-0 0 9998 TLE2=2 38552 1.2341 356.9291 0000679 2.2178 81.5108 1.00268747 31106 [42964] VERSION=1.1 NAME=IRIDIUM 125 NICKNAME=IRIDIUM 125 TLE1=1 42964U 17061K 21024.19355582 .00000072 00000-0 18573-4 0 9994 TLE2=2 42964 86.3997 128.5904 0001966 92.6333 267.5088 14.34216876172497 [20443] VERSION=1.1 NAME=ARIANE 40 R/B NICKNAME=ARIANE 40 R/B TLE1=1 20443U 90005H 21023.93046366 -.00000016 00000-0 91686-5 0 9995 TLE2=2 20443 98.5491 91.0714 0011136 50.9067 309.3109 14.38113098623804 [42956] VERSION=1.1 NAME=IRIDIUM 100 NICKNAME=IRIDIUM 100 TLE1=1 42956U 17061B 21023.83202057 .00000063 00000-0 15466-4 0 9991 TLE2=2 42956 86.3993 128.6584 0002024 96.6850 263.4576 14.34215042172382 [22626] VERSION=1.1 NAME=COSMOS 2242 NICKNAME=COSMOS 2242 TLE1=1 22626U 93024A 21024.11816464 .00000197 00000-0 18659-4 0 9996 TLE2=2 22626 82.5200 239.8481 0020317 69.7305 290.6094 14.88073814501971 [42959] VERSION=1.1 NAME=IRIDIUM 119 NICKNAME=IRIDIUM 119 TLE1=1 42959U 17061E 21024.21257281 .00000055 00000-0 12649-4 0 9997 TLE2=2 42959 86.3995 128.5271 0002261 87.9529 272.1926 14.34219477172458 [27843] VERSION=1.1 NAME=MOST NICKNAME=MOST TLE1=1 27843U 03031D 21023.93365269 .00000006 00000-0 22904-4 0 9999 TLE2=2 27843 98.7099 34.0067 0010119 171.8534 188.2809 14.20627164910907 [44354] VERSION=1.1 NAME=PSAT2 (NO-104) NICKNAME=PSAT2 (NO-104) TLE1=1 44354U 19036R 21024.22089953 .00008350 00000-0 11289-3 0 9996 TLE2=2 44354 28.5302 5.5464 0342839 157.2425 204.3764 15.09021774 87121 [43017] VERSION=1.1 NAME=RADFXSAT (FOX-1B) NICKNAME=AO-91 TLE1=1 43017U 17073E 21023.72934706 .00000822 00000-0 68172-4 0 9999 TLE2=2 43017 97.7171 293.3926 0257055 52.6141 309.8177 14.79267452171726 [41105] VERSION=1.1 NAME=ELEKTRO-L 2 NICKNAME=ELEKTRO-L 2 TLE1=1 41105U 15074A 21023.92266970 -.00000103 00000-0 00000-0 0 9992 TLE2=2 41105 1.7293 94.3785 0001936 154.1672 192.6273 1.00272520 18756 [39679] VERSION=1.1 NAME=SL-4 R/B NICKNAME=SL-4 R/B TLE1=1 39679U 14021B 21024.20807632 .00000025 00000-0 19509-4 0 9994 TLE2=2 39679 51.6157 162.7618 0170838 351.0896 8.7053 15.06727854372629 [42015] VERSION=1.1 NAME=PEASSS NICKNAME=PEASSS TLE1=1 42015U 17008BV 21023.69226428 .00001426 00000-0 57722-4 0 9995 TLE2=2 42015 97.3320 92.3657 0004608 261.4908 98.5809 15.26306609218938 [42846] VERSION=1.1 NAME=CORVUS BC2 NICKNAME=CORVUS BC2 TLE1=1 42846U 17042X 21023.93070710 .00000341 00000-0 38601-4 0 9993 TLE2=2 42846 97.4940 263.1482 0008057 260.8552 99.1756 14.92215714192288 [46923] VERSION=1.1 NAME=NEUTRON-1 NICKNAME=NEUTRON-1 TLE1=1 46923U 98067RT 21024.12826435 .00007048 00000-0 12463-3 0 9992 TLE2=2 46923 51.6438 334.2853 0000958 279.0517 81.0364 15.51504900 12458 [28054] VERSION=1.1 NAME=DMSP 5D-3 F16 (USA 172) NICKNAME=DMSP 5D-3 F16 (USA 172) TLE1=1 28054U 03048A 21024.19434868 -.00000083 00000-0 -20437-4 0 9999 TLE2=2 28054 98.9385 8.7760 0006891 324.4534 46.1168 14.13647521891086 [42794] VERSION=1.1 NAME=D-SAT NICKNAME=D-SAT TLE1=1 42794U 17036AF 21024.05203931 .00000311 00000-0 32229-4 0 9992 TLE2=2 42794 97.4739 51.5262 0125501 349.1712 10.6809 14.91431810195572 [41859] VERSION=1.1 NAME=GSAT0207 (PRN E07) NICKNAME=GSAT0207 (PRN E07) TLE1=1 41859U 16069A 21023.41141170 .00000026 00000-0 00000-0 0 9994 TLE2=2 41859 54.6906 155.7348 0002515 301.8401 58.0927 1.70473572 25961 [27848] VERSION=1.1 NAME=CUBESAT XI-IV (CO-57) NICKNAME=CO-57 TLE1=1 27848U 03031J 21024.00133492 .00000043 00000-0 39270-4 0 9999 TLE2=2 27848 98.6879 34.9628 0010358 145.1426 215.0432 14.21864234911317 [42761] VERSION=1.1 NAME=ZHUHAI-1 01 (CAS-4A) NICKNAME=ZHUHAI-1 01 (CAS-4A) TLE1=1 42761U 17034D 21023.97918918 .00000208 00000-0 25923-4 0 9990 TLE2=2 42761 43.0184 254.4067 0011181 334.3683 161.5400 15.10129804199302 [37841] VERSION=1.1 NAME=SRMSAT NICKNAME=SRMSAT TLE1=1 37841U 11058D 21023.86066707 .00000281 00000-0 88815-5 0 9992 TLE2=2 37841 19.9724 94.9909 0011901 144.3824 12.6207 14.10683456479281 [11672] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 11672U 80005B 21023.96604848 .00000082 00000-0 62618-5 0 9991 TLE2=2 11672 82.5155 276.3585 0015174 265.1402 94.8083 14.88027356198092 [17078] VERSION=1.1 NAME=MOLNIYA 1-69 NICKNAME=MOLNIYA 1-69 TLE1=1 17078U 86089A 21023.43150090 -.00000431 00000-0 00000-0 0 9993 TLE2=2 17078 64.0517 234.6560 6636533 263.7968 22.8320 2.00743137250581 [16792] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 16792U 86046B 21023.81912562 .00000094 00000-0 86076-5 0 9996 TLE2=2 16792 82.4812 43.3828 0022647 278.1441 255.0286 14.83268642848954 [13819] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 13819U 83010B 21023.60232997 .00000194 00000-0 87168-5 0 9999 TLE2=2 13819 81.1141 61.7691 0030685 265.7735 93.9986 15.15983502 72829 [32788] VERSION=1.1 NAME=AAUSAT-II NICKNAME=AAUSAT-II TLE1=1 32788U 08021F 21023.96372612 .00000450 00000-0 45653-4 0 9999 TLE2=2 32788 97.4983 24.7601 0012766 40.9455 319.2722 14.95358520692363 [13553] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 13553U 82092B 21023.91861773 .00000065 00000-0 47873-5 0 9993 TLE2=2 13553 82.5683 87.1789 0021763 17.3053 155.6634 14.84258209 51266 [46927] VERSION=1.1 NAME=DESCENT NICKNAME=DESCENT TLE1=1 46927U 98067RX 21024.06650348 .00007203 00000-0 12736-3 0 9993 TLE2=2 46927 51.6436 334.6216 0001301 321.0140 39.0756 15.51471558 12359 [35491] VERSION=1.1 NAME=GOES 14 NICKNAME=GOES 14 TLE1=1 35491U 09033A 21023.65429230 -.00000080 00000-0 00000-0 0 9995 TLE2=2 35491 0.0836 232.3307 0012189 355.8134 26.3506 1.00271879 42363 [43694] VERSION=1.1 NAME=PROXIMA I NICKNAME=PROXIMA I TLE1=1 43694U 18088E 21023.90770691 .00001093 00000-0 45208-4 0 9994 TLE2=2 43694 85.0326 290.9854 0018322 185.5850 174.5191 15.22518994122387 [15494] VERSION=1.1 NAME=COSMOS 1626 NICKNAME=COSMOS 1626 TLE1=1 15494U 85009A 21023.90349559 .00001002 00000-0 39317-4 0 9997 TLE2=2 15494 82.4789 10.0916 0003884 105.7539 254.4127 15.24578111968961 [44419] VERSION=1.1 NAME=JAISAT-1 NICKNAME=JAISAT-1 TLE1=1 44419U 19038F 21024.11813784 .00001123 00000-0 66406-4 0 9998 TLE2=2 44419 97.5694 349.5761 0022930 89.7946 270.5913 15.13314571 85964 [40367] VERSION=1.1 NAME=FENGYUN 2G NICKNAME=FENGYUN 2G TLE1=1 40367U 14090A 21024.14586181 -.00000289 00000-0 00000+0 0 9996 TLE2=2 40367 0.6784 93.1975 0002133 304.4864 237.7657 1.00286962 22284 [19573] VERSION=1.1 NAME=COSMOS 1975 NICKNAME=COSMOS 1975 TLE1=1 19573U 88093A 21023.83378056 .00000709 00000-0 47724-4 0 9995 TLE2=2 19573 82.5218 150.7043 0015144 129.0042 231.2536 15.05053172736654 [38341] VERSION=1.1 NAME=H-2A R/B NICKNAME=H-2A R/B TLE1=1 38341U 12025E 21024.18801915 .00000244 00000-0 36164-4 0 9995 TLE2=2 38341 98.5183 199.8439 0054439 242.3245 117.2436 14.84153051470181 [25042] VERSION=1.1 NAME=IRIDIUM 39 [-] NICKNAME=IRIDIUM 39 [-] TLE1=1 25042U 97069D 21023.90663760 .00000148 00000-0 35550-4 0 9994 TLE2=2 25042 86.3953 177.3687 0017049 251.7586 108.1761 14.46435559216776 [37753] VERSION=1.1 NAME=GPS BIIF-2 (PRN 01) NICKNAME=GPS BIIF-2 (PRN 01) TLE1=1 37753U 11036A 21023.44854175 -.00000050 00000-0 00000-0 0 9998 TLE2=2 37753 56.3242 48.6275 0101176 46.0029 311.5302 2.00562190 69744 [43573] VERSION=1.1 NAME=IRIDIUM 155 NICKNAME=IRIDIUM 155 TLE1=1 43573U 18061E 21023.91789530 .00000072 00000-0 18522-4 0 9999 TLE2=2 43573 86.4005 160.1286 0001657 82.8306 277.3079 14.34219467130951 [36744] VERSION=1.1 NAME=COMS 1 NICKNAME=COMS 1 TLE1=1 36744U 10032A 21023.87931339 -.00000331 00000-0 00000-0 0 9999 TLE2=2 36744 0.0324 124.9680 0001091 166.7682 276.3872 1.00273097 31336 [27432] VERSION=1.1 NAME=CZ-4B R/B NICKNAME=CZ-4B R/B TLE1=1 27432U 02024C 21023.95345806 -.00000024 00000-0 11742-4 0 9990 TLE2=2 27432 99.0899 35.9064 0049497 274.5066 141.8371 14.14103063964810 [43482] VERSION=1.1 NAME=IRIDIUM 162 NICKNAME=IRIDIUM 162 TLE1=1 43482U 18047G 21023.91886224 .00000013 00000-0 -22279-5 0 9991 TLE2=2 43482 86.4520 191.7806 0001533 92.1241 268.0136 14.43280846140945 [15429] VERSION=1.1 NAME=MOLNIYA 1-63 NICKNAME=MOLNIYA 1-63 TLE1=1 15429U 84124A 21023.60302696 .00000585 00000-0 00000-0 0 9998 TLE2=2 15429 63.7866 214.9657 6541192 264.4519 23.1399 2.00849362264522 [38767] VERSION=1.1 NAME=AEROCUBE 4.5A NICKNAME=AEROCUBE 4.5A TLE1=1 38767U 12048K 21023.94220525 .00000431 00000-0 50248-4 0 9994 TLE2=2 38767 64.6658 266.8008 0137516 55.8877 305.5192 14.92555412 74702 [25544] VERSION=1.1 NAME=ISS (ZARYA) NICKNAME=ISS TLE1=1 25544U 98067A 21024.23809123 .00000873 00000-0 24089-4 0 9992 TLE2=2 25544 51.6466 334.7081 0002297 283.5222 220.9128 15.48881006266289 [6153] VERSION=1.1 NAME=OAO 3 (COPERNICUS) NICKNAME=OAO 3 (COPERNICUS) TLE1=1 06153U 72065A 21023.74806851 .00000016 00000-0 79542-5 0 9991 TLE2=2 06153 35.0065 134.7923 0006905 359.4129 157.7705 14.57966437572859 [43577] VERSION=1.1 NAME=IRIDIUM 164 NICKNAME=IRIDIUM 164 TLE1=1 43577U 18061J 21023.90522014 .00000071 00000-0 18285-4 0 9999 TLE2=2 43577 86.4007 160.1643 0002244 99.1593 260.9857 14.34215811131015 [26463] VERSION=1.1 NAME=CLUSTER II-FM5 (RUMBA) NICKNAME=CLUSTER II-FM5 (RUMBA) TLE1=1 26463U 00045A 21025.05318254 .00000208 00000-0 00000-0 0 9998 TLE2=2 26463 136.4805 344.7901 5677063 194.0402 359.1770 0.44222225 11492 [14208] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 14208U 83075B 21023.93747726 .00000307 00000-0 21801-4 0 9997 TLE2=2 14208 97.4211 6.7047 0036960 267.4668 92.2331 15.11307960 46034 [44850] VERSION=1.1 NAME=COSMOS 2544 (759) NICKNAME=COSMOS 2544 (759) TLE1=1 44850U 19088A 21023.69041641 -.00000006 00000-0 00000-0 0 9993 TLE2=2 44850 64.8668 139.7764 0010488 259.4898 165.3640 2.13102277 8721 [29052] VERSION=1.1 NAME=FORMOSAT-3 FM2 NICKNAME=FORMOSAT-3 FM2 TLE1=1 29052U 06011F 21023.87317944 .00000091 00000-0 51652-4 0 9990 TLE2=2 29052 72.0344 80.1376 0040935 340.6524 19.3056 14.28967831771187 [43567] VERSION=1.1 NAME=GSAT0220 (PRN E13) NICKNAME=GSAT0220 (PRN E13) TLE1=1 43567U 18060D 21022.62665107 -.00000056 00000-0 00000-0 0 9992 TLE2=2 43567 56.9420 35.0579 0005739 278.8945 81.0831 1.70476178 15568 [12904] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 12904U 81103B 21023.91221308 .00000429 00000-0 27633-4 0 9993 TLE2=2 12904 81.1748 210.9669 0029284 51.6930 308.6919 15.05920223690739 [43576] VERSION=1.1 NAME=IRIDIUM 156 NICKNAME=IRIDIUM 156 TLE1=1 43576U 18061H 21024.13355182 .00000068 00000-0 17386-4 0 9991 TLE2=2 43576 86.4006 160.0586 0001722 100.8441 259.2949 14.34215968130992 [43873] VERSION=1.1 NAME=GPS BIII-1 (PRN 04) NICKNAME=GPS BIII-1 (PRN 04) TLE1=1 43873U 18109A 21023.72612667 .00000047 00000-0 00000-0 0 9990 TLE2=2 43873 55.0234 170.0088 0011156 197.4152 237.9772 2.00572618 15591 [43722] VERSION=1.1 NAME=CENTAURI-2 NICKNAME=CENTAURI-2 TLE1=1 43722U 18096D 21023.89516173 .00002465 00000-0 89958-4 0 9990 TLE2=2 43722 97.4023 102.6567 0018338 65.6910 294.6242 15.28956908120063 [20453] VERSION=1.1 NAME=DELTA 2 R/B(1) NICKNAME=DELTA 2 R/B(1) TLE1=1 20453U 90008B 21024.17187429 .00001849 00000-0 10404-3 0 9993 TLE2=2 20453 35.6262 34.3617 0278613 347.9049 11.5077 14.86182502644043 [20303] VERSION=1.1 NAME=DELTA 2 R/B(1) NICKNAME=DELTA 2 R/B(1) TLE1=1 20303U 89085B 21023.82085559 .00002642 00000-0 83869-4 0 9990 TLE2=2 20303 35.6428 65.2116 0092512 336.6079 23.0456 15.28470047702324 [41954] VERSION=1.1 NAME=INS-1B NICKNAME=INS-1B TLE1=1 41954U 17008G 21023.93367037 .00001577 00000-0 64977-4 0 9992 TLE2=2 41954 97.3282 90.1277 0007470 236.7058 123.3465 15.25544550218978 [18958] VERSION=1.1 NAME=COSMOS 1933 NICKNAME=COSMOS 1933 TLE1=1 18958U 88020A 21023.77849193 .00000201 00000-0 12499-4 0 9997 TLE2=2 18958 82.5294 272.8149 0012730 118.5464 241.7045 15.03844214768194 [39265] VERSION=1.1 NAME=CASSIOPE NICKNAME=CASSIOPE TLE1=1 39265U 13055A 21023.91225270 .00003104 00000-0 85793-4 0 9999 TLE2=2 39265 80.9666 83.7267 0654061 17.8769 344.4278 14.31099925379313 [28190] VERSION=1.1 NAME=GPS BIIR-11 (PRN 19) NICKNAME=GPS BIIR-11 (PRN 19) TLE1=1 28190U 04009A 21023.74382846 -.00000078 00000-0 00000-0 0 9999 TLE2=2 28190 56.2314 354.1049 0087573 101.8034 70.8718 2.00570997123428 [27704] VERSION=1.1 NAME=GPS BIIR-9 (PRN 21) NICKNAME=GPS BIIR-9 (PRN 21) TLE1=1 27704U 03010A 21023.55817536 -.00000055 00000-0 00000-0 0 9993 TLE2=2 27704 54.7713 44.0181 0244084 290.7452 168.3028 2.00557300130585 [43251] VERSION=1.1 NAME=IRIDIUM 157 NICKNAME=IRIDIUM 157 TLE1=1 43251U 18030C 21023.92324221 .00000093 00000-0 26291-4 0 9996 TLE2=2 43251 86.3956 33.7981 0002533 87.8531 272.2955 14.34216580147738 [40012] VERSION=1.1 NAME=UNISAT-6 NICKNAME=UNISAT-6 TLE1=1 40012U 14033C 21024.13823436 .00000185 00000-0 34687-4 0 9993 TLE2=2 40012 97.6866 234.0294 0058402 8.3926 351.8246 14.74230340354933 [39271] VERSION=1.1 NAME=CUSAT 2 & FALCON 9 R/B NICKNAME=CUSAT 2 & FALCON 9 R/B TLE1=1 39271U 13055G 21023.97249740 .00004960 00000-0 11814-3 0 9993 TLE2=2 39271 80.9652 29.3518 0576632 225.7396 129.5099 14.50757910382675 [40025] VERSION=1.1 NAME=QB50P1 NICKNAME=QB50P1 TLE1=1 40025U 14033R 21023.77362738 .00000267 00000-0 34132-4 0 9995 TLE2=2 40025 97.9265 314.1607 0011175 298.2201 61.7887 14.89310816357881 [36585] VERSION=1.1 NAME=GPS BIIF-1 (PRN 25) NICKNAME=GPS BIIF-1 (PRN 25) TLE1=1 36585U 10022A 21023.32477549 -.00000022 00000-0 00000-0 0 9996 TLE2=2 36585 55.1490 288.0812 0095167 52.7959 127.5369 2.00563177 78062 [16111] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 16111U 85090B 21023.80183028 .00011619 00000-0 10331-3 0 9999 TLE2=2 16111 97.4817 216.7120 0010358 160.7682 199.3972 15.68620090949519 [24841] VERSION=1.1 NAME=IRIDIUM 16 [-] NICKNAME=IRIDIUM 16 [-] TLE1=1 24841U 97030F 21023.92451362 .00000084 00000-0 21558-4 0 9995 TLE2=2 24841 86.4074 158.5195 0000838 348.7426 11.3752 14.36919311236397 [39270] VERSION=1.1 NAME=POPACS 3 NICKNAME=POPACS 3 TLE1=1 39270U 13055F 21023.74700383 .00001850 00000-0 55406-4 0 9993 TLE2=2 39270 81.0171 131.0064 0706817 109.8658 258.0077 14.17826765356338 [42775] VERSION=1.1 NAME=AALTO-1 NICKNAME=AALTO-1 TLE1=1 42775U 17036L 21023.89216722 .00000920 00000-0 42858-4 0 9999 TLE2=2 42775 97.2695 75.0629 0012700 330.4827 29.5691 15.22290122199200 [40043] VERSION=1.1 NAME=TIGRISAT NICKNAME=TIGRISAT TLE1=1 40043U 14033AK 21023.84531864 .00000153 00000-0 29823-4 0 9996 TLE2=2 40043 97.6844 235.1400 0060053 7.4578 352.7511 14.74469445354522 [44385] VERSION=1.1 NAME=IOD-1 GEMS NICKNAME=IOD-1 GEMS TLE1=1 44385U 98067QK 21024.13313861 .00073374 00000-0 43999-3 0 9990 TLE2=2 44385 51.6364 293.0326 0004955 121.9954 238.1528 15.77107340 89067 [40483] VERSION=1.1 NAME=MMS 2 NICKNAME=MMS 2 TLE1=1 40483U 15011B 21023.37500000 -.00001893 00000-0 00000-0 0 9992 TLE2=2 40483 32.4021 118.8091 8467841 27.9366 26.9087 0.28553306 11929 [39770] VERSION=1.1 NAME=SPROUT NICKNAME=SPROUT TLE1=1 39770U 14029E 21024.06136891 .00000532 00000-0 63836-4 0 9995 TLE2=2 39770 97.9061 135.6081 0008199 329.2200 30.8557 14.88136527361866 [16496] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 16496U 86006B 21023.97079618 .00000094 00000-0 82576-5 0 9997 TLE2=2 16496 82.5235 215.4372 0020329 46.3653 64.8147 14.84166236871557 [41919] VERSION=1.1 NAME=IRIDIUM 109 NICKNAME=IRIDIUM 109 TLE1=1 41919U 17003C 21024.17502131 .00000005 00000-0 -53746-5 0 9990 TLE2=2 41919 86.4000 191.6741 0001901 89.5702 270.5712 14.34217090210856 [40360] VERSION=1.1 NAME=RESURS P2 NICKNAME=RESURS P2 TLE1=1 40360U 14087A 21024.10117468 .00000773 00000-0 25818-4 0 9995 TLE2=2 40360 97.2361 114.5634 0010952 111.5013 343.1389 15.33945728340135 [29486] VERSION=1.1 NAME=GPS BIIRM-2 (PRN 31) NICKNAME=GPS BIIRM-2 (PRN 31) TLE1=1 29486U 06042A 21023.54730793 .00000100 00000-0 00000+0 0 9997 TLE2=2 29486 54.8023 229.5850 0099311 12.2993 320.2689 2.00557058105012 [24926] VERSION=1.1 NAME=DUMMY MASS 2 [-] NICKNAME=DUMMY MASS 2 [-] TLE1=1 24926U 97048B 21023.88162674 .00000063 00000-0 40054-5 0 9998 TLE2=2 24926 86.3384 157.6451 0010150 80.0562 280.1807 14.85017493266589 [19210] VERSION=1.1 NAME=COSMOS 1953 NICKNAME=COSMOS 1953 TLE1=1 19210U 88050A 21023.89766212 .00000361 00000-0 22616-4 0 9994 TLE2=2 19210 82.5170 195.8227 0014227 87.0385 273.2471 15.06152503754841 [15483] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 15483U 85006B 21023.62814486 .00000001 00000-0 92642-5 0 9996 TLE2=2 15483 74.0460 98.9616 0017559 117.1422 348.9336 14.36348429885278 [25876] VERSION=1.1 NAME=DELTA 2 R/B NICKNAME=DELTA 2 R/B TLE1=1 25876U 99041E 21024.10442819 -.00000039 00000-0 32482-4 0 9995 TLE2=2 25876 51.7673 159.2375 0530563 267.6556 86.3559 14.04499850 99659 [21422] VERSION=1.1 NAME=COSMOS 2151 NICKNAME=COSMOS 2151 TLE1=1 21422U 91042A 21024.21487947 .00000185 00000-0 15615-4 0 9994 TLE2=2 21422 82.4992 72.7647 0013381 209.8525 150.1933 14.92205849604889 [26536] VERSION=1.1 NAME=NOAA 16 [-] NICKNAME=NOAA 16 [-] TLE1=1 26536U 00055A 21023.87521098 -.00000019 00000-0 12721-4 0 9998 TLE2=2 26536 98.7077 93.3944 0010709 173.6293 186.5018 14.13268728345375 [25286] VERSION=1.1 NAME=IRIDIUM 63 [-] NICKNAME=IRIDIUM 63 [-] TLE1=1 25286U 98021B 21023.94283870 .00000101 00000-0 28623-4 0 9999 TLE2=2 25286 86.3975 33.8723 0002424 90.2296 269.9178 14.34859968193573 [43139] VERSION=1.1 NAME=SPACEBEE-4 NICKNAME=SPACEBEE-4 TLE1=1 43139U 18004AE 21023.89542820 .00003386 00000-0 12601-3 0 9992 TLE2=2 43139 97.4325 102.5451 0007726 4.8976 355.2338 15.28168445168802 [43058] VERSION=1.1 NAME=GSAT0218 (PRN E31) NICKNAME=GSAT0218 (PRN E31) TLE1=1 43058U 17079D 21022.06810270 .00000001 00000-0 00000-0 0 9996 TLE2=2 43058 56.1000 275.7923 0002288 6.9250 353.1451 1.70473388 19396 [28931] VERSION=1.1 NAME=ALOS (DAICHI) NICKNAME=ALOS (DAICHI) TLE1=1 28931U 06002A 21024.22873833 .00000149 00000-0 37823-4 0 9997 TLE2=2 28931 97.8700 5.4314 0002167 89.8094 270.3356 14.62789635799975 [44909] VERSION=1.1 NAME=RS-44 & BREEZE-KM R/B NICKNAME=RS-44 & BREEZE-KM R/B TLE1=1 44909U 19096E 21023.91199383 .00000032 00000-0 74643-4 0 9995 TLE2=2 44909 82.5196 208.8293 0218302 71.1698 291.2942 12.79708328 50381 [42961] VERSION=1.1 NAME=IRIDIUM 132 NICKNAME=IRIDIUM 132 TLE1=1 42961U 17061G 21024.02864939 .00000068 00000-0 17272-4 0 9994 TLE2=2 42961 86.3995 128.6035 0001800 92.2198 267.9204 14.34216244172437 [28129] VERSION=1.1 NAME=GPS BIIR-10 (PRN 22) NICKNAME=GPS BIIR-10 (PRN 22) TLE1=1 28129U 03058A 21023.50616968 -.00000052 00000-0 00000-0 0 9995 TLE2=2 28129 53.4799 102.6902 0070999 299.0236 60.3012 2.00569203125261 [40129] VERSION=1.1 NAME=GSAT0202 (PRN E14) NICKNAME=GSAT0202 (PRN E14) TLE1=1 40129U 14050B 21023.03805144 -.00000106 00000-0 00000-0 0 9997 TLE2=2 40129 50.5583 351.6620 1649550 107.3443 271.3420 1.85520075 43918 [42810] VERSION=1.1 NAME=IRIDIUM 124 NICKNAME=IRIDIUM 124 TLE1=1 42810U 17039H 21024.08588456 .00000049 00000-0 86686-5 0 9990 TLE2=2 42810 86.4482 33.6830 0001883 93.9474 266.1942 14.43274381190959 [42960] VERSION=1.1 NAME=IRIDIUM 107 NICKNAME=IRIDIUM 107 TLE1=1 42960U 17061F 21023.81300096 .00000064 00000-0 15948-4 0 9992 TLE2=2 42960 86.3995 128.7028 0002037 93.2238 266.9191 14.34218425172402 [40903] VERSION=1.1 NAME=XW-2A NICKNAME=XW-2A TLE1=1 40903U 15049E 21024.10534050 .00002540 00000-0 57028-4 0 9999 TLE2=2 40903 97.2587 78.9523 0012975 172.9499 240.8176 15.44255485300515 [35935] VERSION=1.1 NAME=ITUPSAT1 NICKNAME=ITUPSAT1 TLE1=1 35935U 09051E 21024.11810658 .00000100 00000-0 34092-4 0 9992 TLE2=2 35935 98.6150 221.5480 0008114 176.4319 183.6936 14.55682383601809 [43738] VERSION=1.1 NAME=INNOSAT-2 NICKNAME=INNOSAT-2 TLE1=1 43738U 18096V 21024.12352146 .00003598 00000-0 11806-3 0 9996 TLE2=2 43738 97.4058 105.8587 0023685 68.0205 357.9636 15.32000674120290 [43044] VERSION=1.1 NAME=CHEFSAT NICKNAME=CHEFSAT TLE1=1 43044U 17071H 21023.40314067 .00011636 00000-0 18574-3 0 9999 TLE2=2 43044 51.6370 41.2285 0003054 128.1464 231.9802 15.53676371176675 [7529] VERSION=1.1 NAME=NOAA 4 [-] NICKNAME=NOAA 4 [-] TLE1=1 07529U 74089A 21023.86805396 -.00000029 00000-0 10451-3 0 9990 TLE2=2 07529 101.8431 358.5246 0009208 2.2759 50.8852 12.53147253112713 [42957] VERSION=1.1 NAME=IRIDIUM 122 NICKNAME=IRIDIUM 122 TLE1=1 42957U 17061C 21024.21892164 .00000072 00000-0 18797-4 0 9999 TLE2=2 42957 86.3993 128.4928 0002104 80.5317 279.6116 14.34219322172421 [43077] VERSION=1.1 NAME=IRIDIUM 141 NICKNAME=IRIDIUM 141 TLE1=1 43077U 17083H 21023.86957358 .00000082 00000-0 22318-4 0 9999 TLE2=2 43077 86.3945 65.4276 0002415 89.4789 270.6684 14.34217222161767 [25078] VERSION=1.1 NAME=IRIDIUM 44 [-] NICKNAME=IRIDIUM 44 [-] TLE1=1 25078U 97077B 21024.17445553 .00000109 00000-0 29194-4 0 9994 TLE2=2 25078 86.3993 177.4198 0000455 162.4890 197.6324 14.38342990212924 [43249] VERSION=1.1 NAME=IRIDIUM 144 NICKNAME=IRIDIUM 144 TLE1=1 43249U 18030A 21024.10715086 .00000038 00000-0 65281-5 0 9999 TLE2=2 43249 86.3955 33.7237 0001779 92.1895 267.9505 14.34214549147781 [43693] VERSION=1.1 NAME=IRVINE01 NICKNAME=IRVINE01 TLE1=1 43693U 18088D 21024.19146854 .00002961 00000-0 11905-3 0 9994 TLE2=2 43693 85.0353 290.7560 0016022 190.3935 169.6980 15.24337512122457 [43556] VERSION=1.1 NAME=AEROCUBE 12A NICKNAME=AEROCUBE 12A TLE1=1 43556U 18046C 21023.65425803 .00001291 00000-0 54759-4 0 9990 TLE2=2 43556 51.6407 126.8423 0007970 7.9746 352.1360 15.30851699141092 [43050] VERSION=1.1 NAME=ISARA NICKNAME=ISARA TLE1=1 43050U 17071P 21023.89205439 .00010851 00000-0 18436-3 0 9996 TLE2=2 43050 51.6349 43.5626 0001319 123.8160 236.2956 15.52006052176680 [28738] VERSION=1.1 NAME=CZ-2D R/B NICKNAME=CZ-2D R/B TLE1=1 28738U 05024B 21023.93906151 .00000504 00000-0 32740-4 0 9990 TLE2=2 28738 97.3695 45.0351 0012970 136.1458 224.0805 15.12246257854726 [25485] VERSION=1.1 NAME=MOLNIYA 1-91 NICKNAME=MOLNIYA 1-91 TLE1=1 25485U 98054A 21023.31777760 .00000231 00000-0 22925-2 0 9994 TLE2=2 25485 62.9354 232.7247 6982662 290.8404 334.5606 2.36442236166314 [41619] VERSION=1.1 NAME=BEESAT-4 NICKNAME=BEESAT-4 TLE1=1 41619U 16040W 21023.72727416 .00001699 00000-0 71141-4 0 9999 TLE2=2 41619 97.2917 83.7717 0012368 119.1861 241.0616 15.24820269242959 [40908] VERSION=1.1 NAME=LILACSAT-2 NICKNAME=LILACSAT-2 TLE1=1 40908U 15049K 21024.24412633 .00000304 00000-0 20192-4 0 9999 TLE2=2 40908 97.4999 26.2562 0015338 344.2963 146.1389 15.14261056295407 [13890] VERSION=1.1 NAME=MOLNIYA 1-56 NICKNAME=MOLNIYA 1-56 TLE1=1 13890U 83019A 21023.50506097 .00000481 00000-0 00000-0 0 9995 TLE2=2 13890 63.1704 95.9006 7259990 260.8839 66.1150 1.99950854276408 [24876] VERSION=1.1 NAME=GPS BIIR-2 (PRN 13) NICKNAME=GPS BIIR-2 (PRN 13) TLE1=1 24876U 97035A 21023.31374578 .00000062 00000-0 00000-0 0 9995 TLE2=2 24876 55.4660 175.5731 0047240 58.0121 302.4217 2.00562425172429 [42831] VERSION=1.1 NAME=FLYING LAPTOP NICKNAME=FLYING LAPTOP TLE1=1 42831U 17042G 21024.09798609 .00000189 00000-0 24270-4 0 9996 TLE2=2 42831 97.4914 261.2908 0012493 269.4556 90.5221 14.91229501192171 [43072] VERSION=1.1 NAME=IRIDIUM 116 NICKNAME=IRIDIUM 116 TLE1=1 43072U 17083C 21023.81250147 .00000085 00000-0 23344-4 0 9994 TLE2=2 43072 86.3945 65.4631 0002480 97.0704 263.0774 14.34217221161755 [43052] VERSION=1.1 NAME=PROPCUBE 2 (FAUNA) NICKNAME=PROPCUBE 2 (FAUNA) TLE1=1 43052U 17071R 21023.51593159 .00005823 00000-0 12340-3 0 9997 TLE2=2 43052 51.6380 61.9763 0001858 134.4936 225.6204 15.46608084176392 [7376] VERSION=1.1 NAME=MOLNIYA 2-10 NICKNAME=MOLNIYA 2-10 TLE1=1 07376U 74056A 21023.28806002 -.00000981 00000-0 00000-0 0 9998 TLE2=2 07376 63.6309 146.3509 6674406 290.7675 12.7313 2.01153090340105 [44331] VERSION=1.1 NAME=NEPALISAT-1 NICKNAME=NEPALISAT-1 TLE1=1 44331U 98067QG 21023.94561669 .00021564 00000-0 21487-3 0 9992 TLE2=2 44331 51.6351 303.7272 0006529 111.7888 248.3803 15.65596725 91434 [8195] VERSION=1.1 NAME=MOLNIYA 2-14 NICKNAME=MOLNIYA 2-14 TLE1=1 08195U 75081A 21022.98626025 -.00000339 00000-0 12442-1 0 9999 TLE2=2 08195 63.2529 248.3692 7144316 293.9058 9.5563 2.02057853332590 [41554] VERSION=1.1 NAME=COSMOS 2516 (753) NICKNAME=COSMOS 2516 (753) TLE1=1 41554U 16032A 21024.26050267 .00000069 00000-0 00000+0 0 9992 TLE2=2 41554 64.0373 259.1765 0011263 217.6996 342.9201 2.13107287 36249 [35865] VERSION=1.1 NAME=METEOR-M 1 NICKNAME=METEOR-M 1 TLE1=1 35865U 09049A 21024.20937571 -.00000007 00000-0 15525-4 0 9992 TLE2=2 35865 98.4627 8.1196 0001180 270.6746 89.4297 14.22262441589292 [25989] VERSION=1.1 NAME=XMM-NEWTON NICKNAME=XMM-NEWTON TLE1=1 25989U 99066A 21024.92804513 .00000133 00000-0 00000-0 0 9991 TLE2=2 25989 70.9868 315.3978 6794779 91.5739 0.3222 0.50132578 13130 [46922] VERSION=1.1 NAME=BOBCAT-1 NICKNAME=BOBCAT-1 TLE1=1 46922U 98067RS 21023.85321781 .00010050 00000-0 17069-3 0 9998 TLE2=2 46922 51.6441 335.4516 0000610 246.3212 113.7714 15.52110892 12359 [43057] VERSION=1.1 NAME=GSAT0217 (PRN E27) NICKNAME=GSAT0217 (PRN E27) TLE1=1 43057U 17079C 21023.02113190 .00000008 00000-0 00000-0 0 9996 TLE2=2 43057 56.0983 275.7687 0004062 318.2702 41.7688 1.70473868 19388 [22671] VERSION=1.1 NAME=MOLNIYA 1-86 NICKNAME=MOLNIYA 1-86 TLE1=1 22671U 93035A 21023.78051776 -.00000017 00000-0 -26472-4 0 9992 TLE2=2 22671 63.1089 171.3799 4849385 0.0151 359.9607 5.62613615323622 [23420] VERSION=1.1 NAME=MOLNIYA 1-88 NICKNAME=MOLNIYA 1-88 TLE1=1 23420U 94081A 21023.77145313 -.00000045 00000-0 00000-0 0 9992 TLE2=2 23420 64.2345 312.2053 5978947 291.1266 16.9697 3.34496085 96655 [29505] VERSION=1.1 NAME=SJ-6C NICKNAME=SJ-6C TLE1=1 29505U 06046A 21024.13911699 .00000729 00000-0 71892-4 0 9994 TLE2=2 29505 97.8086 43.0059 0005337 36.8795 323.2797 14.95032683776585 [25104] VERSION=1.1 NAME=IRIDIUM 45 [-] NICKNAME=IRIDIUM 45 [-] TLE1=1 25104U 97082A 21023.84566995 .00000758 00000-0 56801-4 0 9992 TLE2=2 25104 86.3789 72.3837 0211775 345.9550 13.5837 14.84769483212139 [43079] VERSION=1.1 NAME=IRIDIUM 131 NICKNAME=IRIDIUM 131 TLE1=1 43079U 17083K 21024.20572582 .00000102 00000-0 29423-4 0 9999 TLE2=2 43079 86.3950 65.3412 0002207 86.7155 273.4294 14.34216298161740 [31304] VERSION=1.1 NAME=AIM NICKNAME=AIM TLE1=1 31304U 07015A 21023.95115942 .00000930 00000-0 55064-4 0 9994 TLE2=2 31304 97.8834 280.6596 0004590 340.6473 19.4583 15.14055529754040 [35752] VERSION=1.1 NAME=GPS BIIRM-8 (PRN 05) NICKNAME=GPS BIIRM-8 (PRN 05) TLE1=1 35752U 09043A 21023.28050326 -.00000050 00000-0 00000-0 0 9998 TLE2=2 35752 54.7160 106.1307 0058205 49.4630 352.1579 2.00548328 83837 [24842] VERSION=1.1 NAME=IRIDIUM 911 [-] NICKNAME=IRIDIUM 911 [-] TLE1=1 24842U 97030G 21023.85679535 .00000125 00000-0 29826-4 0 9994 TLE2=2 24842 86.4502 158.5434 0015695 44.2123 316.0330 14.45205610243103 [26702] VERSION=1.1 NAME=ODIN NICKNAME=ODIN TLE1=1 26702U 01007A 21023.79578431 .00000883 00000-0 60973-4 0 9995 TLE2=2 26702 97.5449 42.9572 0009802 227.6511 132.3888 15.08282515 89422 [8601] VERSION=1.1 NAME=MOLNIYA 1-32 NICKNAME=MOLNIYA 1-32 TLE1=1 08601U 76006A 21023.09434387 .00001413 00000-0 87599-3 0 9990 TLE2=2 08601 62.9828 14.8135 7420298 281.1332 10.6489 1.99974041 42464 [46921] VERSION=1.1 NAME=SPOC NICKNAME=SPOC TLE1=1 46921U 98067RR 21024.12351341 .00007129 00000-0 12552-3 0 9998 TLE2=2 46921 51.6438 334.2543 0001096 248.8733 111.2140 15.51606689 12422 [21876] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 21876U 92008B 21023.91386095 -.00000012 00000-0 -28244-4 0 9991 TLE2=2 21876 82.9251 218.5510 0034059 319.9749 149.4573 13.75668387452185 [41174] VERSION=1.1 NAME=GSAT0209 (PRN E09) NICKNAME=GSAT0209 (PRN E09) TLE1=1 41174U 15079A 21021.94551326 .00000028 00000-0 00000-0 0 9990 TLE2=2 41174 55.0326 155.4676 0002799 324.7503 35.1922 1.70473720 31327 [23405] VERSION=1.1 NAME=SL-16 R/B NICKNAME=SL-16 R/B TLE1=1 23405U 94077B 21024.15250499 .00000258 00000-0 15702-3 0 9998 TLE2=2 23405 70.9845 326.4162 0001589 184.6663 175.4445 14.15235206351839 [5118] VERSION=1.1 NAME=SL-3 R/B NICKNAME=SL-3 R/B TLE1=1 05118U 71028B 21023.91481312 .00000681 00000-0 34278-4 0 9993 TLE2=2 05118 81.2546 83.1080 0046738 183.5312 176.5594 15.14823452703196 [44387] VERSION=1.1 NAME=METEOR-M2 2 NICKNAME=METEOR-M2 2 TLE1=1 44387U 19038A 21024.11705763 -.00000025 00000-0 80251-5 0 9995 TLE2=2 44387 98.6512 346.1204 0001050 9.6840 350.4358 14.23684873 80936 [41836] VERSION=1.1 NAME=HIMAWARI-9 NICKNAME=HIMAWARI-9 TLE1=1 41836U 16064A 21023.84631160 -.00000262 00000-0 00000-0 0 9997 TLE2=2 41836 0.0489 257.8350 0001053 80.1568 230.8011 1.00273566 15430 [40021] VERSION=1.1 NAME=DUCHIFAT-1 NICKNAME=DUCHIFAT-1 TLE1=1 40021U 14033M 21024.07093996 .00000317 00000-0 37860-4 0 9999 TLE2=2 40021 97.9608 322.8649 0011441 282.5664 77.4273 14.91153790358765 [44355] VERSION=1.1 NAME=BRICSAT2 (NO-103) NICKNAME=BRICSAT2 (NO-103) TLE1=1 44355U 19036S 21023.96488787 .00017959 00000-0 22005-3 0 9998 TLE2=2 44355 28.5296 341.8041 0301046 195.9043 163.1919 15.19803554 87355 [43016] VERSION=1.1 NAME=MAKERSAT 0 NICKNAME=MAKERSAT 0 TLE1=1 43016U 17073D 21023.72635850 .00001049 00000-0 85063-4 0 9996 TLE2=2 43016 97.7169 293.6484 0255834 51.5507 310.8366 14.79628374171772 [8459] VERSION=1.1 NAME=SL-8 R/B NICKNAME=SL-8 R/B TLE1=1 08459U 75112B 21023.90088372 .00000100 00000-0 42523-4 0 9998 TLE2=2 08459 74.0597 215.3861 0015144 52.9276 307.3259 14.36829285363089 [44030] VERSION=1.1 NAME=DELPHINI NICKNAME=DELPHINI TLE1=1 44030U 98067PW 21023.91647143 .00097374 00000-0 36605-3 0 9997 TLE2=2 44030 51.6284 264.1568 0005546 178.6144 181.4877 15.87016523113214 [41328] VERSION=1.1 NAME=GPS BIIF-12 (PRN 32) NICKNAME=GPS BIIF-12 (PRN 32) TLE1=1 41328U 16007A 21022.97963953 .00000047 00000-0 00000-0 0 9991 TLE2=2 41328 54.8419 167.7266 0046225 221.7001 137.9193 2.00568528 36354 [46507] VERSION=1.1 NAME=NETSAT-2 NICKNAME=NETSAT-2 TLE1=1 46507U 20068X 21023.81336329 .00000262 00000-0 24649-4 0 9990 TLE2=2 46507 97.6820 321.9837 0006904 224.8603 135.2066 15.01872380 17481 [43696] VERSION=1.1 NAME=PROXIMA II NICKNAME=PROXIMA II TLE1=1 43696U 18088G 21023.77437771 .00001122 00000-0 46451-4 0 9994 TLE2=2 43696 85.0327 291.0800 0018353 186.0764 174.0259 15.22518044122350 [26474] VERSION=1.1 NAME=TITAN 4B R/B NICKNAME=TITAN 4B R/B TLE1=1 26474U 00047B 21023.88443804 .00000112 00000-0 20624-4 0 9993 TLE2=2 26474 67.9925 188.8980 0059729 311.7224 47.8817 14.96070907112212 [44064] VERSION=1.1 NAME=CREW DRAGON DEMO-1 DEB NICKNAME=CREW DRAGON DEMO-1 DEB TLE1=1 44064U 19011B 21023.95544500 .00029421 00000-0 19848-3 0 9991 TLE2=2 44064 51.6295 268.9942 0004067 158.6498 201.4672 15.74836367107523 [7780] VERSION=1.1 NAME=MOLNIYA 1-29 NICKNAME=MOLNIYA 1-29 TLE1=1 07780U 75036A 21023.75814322 .00000203 00000-0 -79048-2 0 9999 TLE2=2 07780 63.1773 279.1714 7255687 289.3101 9.9887 2.00636576335395 [24925] VERSION=1.1 NAME=DUMMY MASS 1 [-] NICKNAME=DUMMY MASS 1 [-] TLE1=1 24925U 97048A 21024.10891915 .00000074 00000-0 53222-5 0 9993 TLE2=2 24925 86.3384 156.2088 0009229 72.5512 287.6720 14.85250325267046 [31792] VERSION=1.1 NAME=COSMOS 2428 NICKNAME=COSMOS 2428 TLE1=1 31792U 07029A 21024.12592441 -.00000109 00000-0 -33308-4 0 9990 TLE2=2 31792 70.8917 169.3246 0004915 113.1322 247.0316 14.12238166700025 [42777] VERSION=1.1 NAME=COMPASS 2 NICKNAME=COMPASS 2 TLE1=1 42777U 17036N 21023.72534974 .00001937 00000-0 80674-4 0 9992 TLE2=2 42777 97.2778 78.4422 0010766 326.3827 33.6727 15.24869761199351 [32395] VERSION=1.1 NAME=COSMOS 2436 (723) NICKNAME=COSMOS 2436 (723) TLE1=1 32395U 07065C 21023.85513501 .00000066 00000-0 00000-0 0 9998 TLE2=2 32395 64.5093 258.9136 0015954 3.5864 294.1759 2.13102891101742 [20466] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 20466U 90010B 21023.94533505 .00000089 00000-0 83746-5 0 9990 TLE2=2 20466 82.5013 220.4176 0019904 337.1553 22.8774 14.81408175651372 [21574] VERSION=1.1 NAME=ERS-1 NICKNAME=ERS-1 TLE1=1 21574U 91050A 21023.88620803 .00000027 00000-0 23861-4 0 9990 TLE2=2 21574 98.6286 343.6501 0032943 353.6014 6.4747 14.37778594546799 [41855] VERSION=1.1 NAME=PROMETHEUS 2-3 NICKNAME=PROMETHEUS 2-3 TLE1=1 41855U 16067H 21023.88289761 .00000373 00000-0 37306-4 0 9996 TLE2=2 41855 97.9416 140.5489 0009075 232.0959 127.9442 14.97480591229452 [17295] VERSION=1.1 NAME=COSMOS 1812 NICKNAME=COSMOS 1812 TLE1=1 17295U 87003A 21024.19745283 .00000850 00000-0 42874-4 0 9992 TLE2=2 17295 82.5151 287.9738 0001815 235.4708 124.6353 15.15810637858389 [17567] VERSION=1.1 NAME=SL-14 R/B NICKNAME=SL-14 R/B TLE1=1 17567U 87024B 21024.14764930 .00000089 00000-0 78370-5 0 9997 TLE2=2 17567 82.5274 46.2963 0018236 325.2322 34.7700 14.83788873831746 [41173] VERSION=1.1 NAME=DAMPE NICKNAME=DAMPE TLE1=1 41173U 15078A 21024.06132285 .00000073 00000-0 59289-5 0 9991 TLE2=2 41173 97.3398 19.1642 0013352 187.4263 259.2481 15.23952048283996 [22782] VERSION=1.1 NAME=MET-2/21 NICKNAME=MET-2/21 TLE1=1 22782U 93055A 21021.07892738 -.00000006 00000-0 -18264-4 0 9996 TLE2=2 22782 82.5470 60.8805 0022041 348.1965 40.4943 13.83831660383143 [30776] VERSION=1.1 NAME=Falconsat-3 NICKNAME=Falconsat-3 TLE1=1 30776U 07006E 21021.85922251 .00003484 00000-0 88225-4 0 9994 TLE2=2 30776 35.4354 321.3640 0002703 332.1215 27.9368 15.39360038770497 [33493] VERSION=1.1 NAME=PRISM NICKNAME=PRISM TLE1=1 33493U 09002B 21021.12969255 .00000567 00000-0 54264-4 0 9991 TLE2=2 33493 98.1698 336.7758 0015788 56.5827 303.6901 14.97381253652273 [37854] VERSION=1.1 NAME=AO-71 NICKNAME=AO-71 TLE1=1 37854U 11061E 21021.51307701 .00001466 00000-0 79613-4 0 9993 TLE2=2 37854 101.7127 231.6599 0156082 133.0987 228.3409 15.08077475504333 [38340] VERSION=1.1 NAME=HORYU-2 NICKNAME=HORYU-2 TLE1=1 38340U 12025D 21021.71626880 .00000163 00000-0 31493-4 0 9996 TLE2=2 38340 98.2532 86.2057 0012552 67.7026 292.5512 14.75963234467153 [38735] VERSION=1.1 NAME=RS-40 NICKNAME=RS-40 TLE1=1 38735U 12041C 21021.73147354 .00000013 00000-0 23697-4 0 9999 TLE2=2 38735 82.4740 224.5516 0017844 46.8816 313.3748 12.42581609384962 [40030] VERSION=1.1 NAME=DTUSAT-2 NICKNAME=DTUSAT-2 TLE1=1 40030U 14033W 21021.51542333 .00000258 00000-0 33509-4 0 9999 TLE2=2 40030 97.9117 308.8550 0010678 302.7439 57.2748 14.88872290357458 [40034] VERSION=1.1 NAME=ANTELSAT NICKNAME=ANTELSAT TLE1=1 40034U 14033AA 21021.53436199 .00000232 00000-0 41458-4 0 9991 TLE2=2 40034 97.6897 232.4834 0058932 15.1210 345.1744 14.74384163354542 [40057] VERSION=1.1 NAME=VELOX-1 NICKNAME=VELOX-1 TLE1=1 40057U 14034E 21021.70459629 .00000263 00000-0 44034-4 0 9996 TLE2=2 40057 98.3057 171.0741 0011395 161.6132 198.5494 14.78045127353864 [40071] VERSION=1.1 NAME=DAURIA DX 1 NICKNAME=DAURIA DX 1 TLE1=1 40071U 14037C 21021.75231675 .00000083 00000-0 18170-4 0 9991 TLE2=2 40071 98.4576 218.2932 0008972 150.7564 209.4150 14.81443120353576 [40299] VERSION=1.1 NAME=HODOYOSHI-1 NICKNAME=HODOYOSHI-1 TLE1=1 40299U 14070B 21021.74663366 .00000598 00000-0 27172-4 0 9998 TLE2=2 40299 97.3028 99.2070 0013917 140.0188 335.7956 15.24427233345064 [40300] VERSION=1.1 NAME=CHUBUSAT-1 NICKNAME=CHUBUSAT-1 TLE1=1 40300U 14070C 21021.79183466 .00000665 00000-0 31167-4 0 9998 TLE2=2 40300 97.2640 90.1455 0019753 159.6875 320.0099 15.22895086344737 [40301] VERSION=1.1 NAME=QSAT-EOS NICKNAME=QSAT-EOS TLE1=1 40301U 14070D 21021.75762970 .00001950 00000-0 73594-4 0 9996 TLE2=2 40301 97.2714 97.0600 0025843 131.8589 345.3306 15.27910539345254 [40377] VERSION=1.1 NAME=FIREBIRD FU3 NICKNAME=FIREBIRD FU3 TLE1=1 40377U 15003B 21021.80194284 .00002044 00000-0 79739-4 0 9991 TLE2=2 40377 99.0829 132.6597 0119600 304.4085 54.5884 15.21268901330492 [40654] VERSION=1.1 NAME=NO-84 NICKNAME=NO-84 TLE1=1 40654U 15025D 21020.34240607 .00020235 00000-0 18806-3 0 1645 TLE2=2 40654 54.9841 16.3339 0099363 35.7234 325.0495 15.61303116202819 [40719] VERSION=1.1 NAME=DEORBITSAIL NICKNAME=DEORBITSAIL TLE1=1 40719U 15032E 21021.56167189 .00000373 00000-0 59759-4 0 9993 TLE2=2 40719 97.8465 270.5205 0015234 219.9808 140.0282 14.77211711298294 [40909] VERSION=1.1 NAME=XW-2E NICKNAME=XW-2E TLE1=1 40909U 15049L 21021.70614089 .00001052 00000-0 53427-4 0 9995 TLE2=2 40909 97.4659 29.5157 0012314 328.5043 145.2313 15.19027158295654 [40958] VERSION=1.1 NAME=LQSat NICKNAME=LQSat TLE1=1 40958U 15057A 21021.76436845 .00000007 00000-0 85755-5 0 9995 TLE2=2 40958 97.8251 83.6855 0018471 163.8912 196.2880 14.73151972284644 [41338] VERSION=1.1 NAME=ChubuSat-2 NICKNAME=ChubuSat-2 TLE1=1 41338U 16012B 21021.38477400 .00000325 00000-0 18427-4 0 9994 TLE2=2 41338 31.0044 41.0203 0013683 116.2610 243.9433 15.00425735270493 [41339] VERSION=1.1 NAME=ChubuSat-3 NICKNAME=ChubuSat-3 TLE1=1 41339U 16012C 21021.68869850 .00000286 00000-0 15326-4 0 9993 TLE2=2 41339 31.0124 36.4732 0013383 127.1058 233.0819 15.00581406270533 [41458] VERSION=1.1 NAME=OUFTI-1 NICKNAME=OUFTI-1 TLE1=1 41458U 16025C 21021.83020136 .00004093 00000-0 20251-3 0 9994 TLE2=2 41458 98.1226 150.3631 0160621 193.7152 165.9686 15.07810077260370 [41558] VERSION=1.1 NAME=NuSat2 NICKNAME=NuSat2 TLE1=1 41558U 16033C 21021.76414434 .00001634 00000-0 57284-4 0 9999 TLE2=2 41558 97.4056 119.7726 0013110 36.8240 114.7206 15.30853876259270 [41603] VERSION=1.1 NAME=Lapan A3 NICKNAME=Lapan A3 TLE1=1 41603U 16040E 21021.72559389 .00000223 00000-0 13397-4 0 9993 TLE2=2 41603 97.2793 74.0434 0014008 150.6730 328.6084 15.19947897254293 [41607] VERSION=1.1 NAME=Swayam NICKNAME=Swayam TLE1=1 41607U 16040J 21021.10422752 .00001792 00000-0 74251-4 0 9990 TLE2=2 41607 97.2902 81.0782 0014049 134.4097 225.8294 15.25094846254581 [41783] VERSION=1.1 NAME=Pratham NICKNAME=Pratham TLE1=1 41783U 16059A 21021.70456777 .00000046 00000-0 18074-4 0 9997 TLE2=2 41783 97.9877 76.6680 0033214 350.9960 9.0642 14.63106476230790 [41789] VERSION=1.1 NAME=AlSat 1N NICKNAME=AlSat 1N TLE1=1 41789U 16059G 21021.80623088 .00000058 00000-0 19798-4 0 9992 TLE2=2 41789 97.9914 80.1049 0027823 337.1732 22.8222 14.64381452230988 [41790] VERSION=1.1 NAME=ScatSat NICKNAME=ScatSat TLE1=1 41790U 16059H 21021.73958106 .00000015 00000-0 15206-4 0 9991 TLE2=2 41790 98.3892 64.2597 0004851 343.3641 16.7392 14.50804218228875 [41844] VERSION=1.1 NAME=TY-1 NICKNAME=TY-1 TLE1=1 41844U 16066D 21021.73500259 .00000989 00000-0 42031-4 0 9997 TLE2=2 41844 97.4012 33.4911 0013299 299.3052 178.5876 15.25355048233537 [41846] VERSION=1.1 NAME=Pegasus-1 NICKNAME=Pegasus-1 TLE1=1 41846U 16066F 21021.58914721 .00000157 00000-0 35056-4 0 9991 TLE2=2 41846 98.6332 79.5996 0365295 303.4142 53.2597 14.37922160220312 [42766] VERSION=1.1 NAME=NIUSat NICKNAME=NIUSat TLE1=1 42766U 17036B 21021.55401639 .00001052 00000-0 48579-4 0 9996 TLE2=2 42766 97.2723 72.4938 0014449 339.2158 20.8489 15.22258839198861 [42791] VERSION=1.1 NAME=VENTA 1 NICKNAME=VENTA 1 TLE1=1 42791U 17036AC 21021.56020542 .00001333 00000-0 57350-4 0 9994 TLE2=2 42791 97.2732 75.8560 0010095 345.9504 14.1451 15.24301569199002 [42829] VERSION=1.1 NAME=TechnoSat NICKNAME=TechnoSat TLE1=1 42829U 17042E 21021.50601665 .00000051 00000-0 10384-4 0 9990 TLE2=2 42829 97.4904 258.6444 0012652 279.1563 80.8225 14.91205280191785 [42983] VERSION=1.1 NAME=QIKCOM-1 NICKNAME=QIKCOM-1 TLE1=1 42983U 98067NF 21021.76704812 .00005502 00000-0 62250-4 0 9998 TLE2=2 42983 51.6373 283.2238 0004090 147.7818 212.3427 15.64216768184426 [43019] VERSION=1.1 NAME=EcAMSat NICKNAME=EcAMSat TLE1=1 43019U 98067NG 21021.84963311 .00013755 00000-0 10726-3 0 9998 TLE2=2 43019 51.6397 259.1122 0004384 148.1132 212.0132 15.72021812267073 [43155] VERSION=1.1 NAME=TianYi 2 NICKNAME=TianYi 2 TLE1=1 43155U 18008A 21021.77040852 .00000619 00000-0 39519-4 0 9991 TLE2=2 43155 97.4221 91.0339 0018955 113.4587 4.8056 15.12068034165901 [43156] VERSION=1.1 NAME=Zhou Enlai NICKNAME=Zhou Enlai TLE1=1 43156U 18008B 21021.73124911 .00001192 00000-0 73647-4 0 9994 TLE2=2 43156 97.4275 90.8338 0016066 112.5607 3.0451 15.11646978165842 [43158] VERSION=1.1 NAME=TianYi 6 NICKNAME=TianYi 6 TLE1=1 43158U 18008D 21021.75276292 .00000382 00000-0 26466-4 0 9995 TLE2=2 43158 97.4195 89.6303 0014862 109.9366 5.2499 15.11122383165785 [43186] VERSION=1.1 NAME=S-Net D NICKNAME=S-Net D TLE1=1 43186U 18014G 21021.17145821 .00000407 00000-0 40388-4 0 9999 TLE2=2 43186 97.6869 291.3351 0009899 207.9106 152.1586 14.96955321162263 [43187] VERSION=1.1 NAME=S-Net B NICKNAME=S-Net B TLE1=1 43187U 18014H 21021.50554885 .00000326 00000-0 33345-4 0 9996 TLE2=2 43187 97.6867 291.6353 0009946 206.7192 153.3518 14.96955035162318 [43188] VERSION=1.1 NAME=S-Net A NICKNAME=S-Net A TLE1=1 43188U 18014J 21021.50547750 .00000342 00000-0 34771-4 0 9992 TLE2=2 43188 97.6870 291.6736 0009962 206.7999 153.2710 14.96953702162313 [43189] VERSION=1.1 NAME=S-Net C NICKNAME=S-Net C TLE1=1 43189U 18014K 21021.37228001 .00000315 00000-0 32419-4 0 9990 TLE2=2 43189 97.6866 291.4980 0009939 207.1990 152.8712 14.96953835160848 [43192] VERSION=1.1 NAME=FMN 1 NICKNAME=FMN 1 TLE1=1 43192U 18015A 21021.73871333 .00002458 00000-0 95618-4 0 9997 TLE2=2 43192 97.4670 156.7255 0016070 44.6056 62.7641 15.26887774165197 [43199] VERSION=1.1 NAME=Shaonian Xing NICKNAME=Shaonian Xing TLE1=1 43199U 18015H 21021.72885502 .00001753 00000-0 69323-4 0 9997 TLE2=2 43199 97.4463 154.3746 0017548 53.5156 54.4397 15.26709672165257 [43640] VERSION=1.1 NAME=STARS-Me Mother NICKNAME=STARS-Me Mother TLE1=1 43640U 98067PQ 21021.54928791 .00033960 00000-0 21517-3 0 9998 TLE2=2 43640 51.6307 275.4517 0004962 140.9080 219.2279 15.76195883130981 [43669] VERSION=1.1 NAME=Changshagaoxin NICKNAME=Changshagaoxin TLE1=1 43669U 18083H 21021.76352582 .00000633 00000-0 34696-4 0 9996 TLE2=2 43669 97.4605 49.4253 0009704 322.4003 150.6090 15.17736671123632 [43677] VERSION=1.1 NAME=Ten-Koh NICKNAME=Ten-Koh TLE1=1 43677U 18084G 21021.83037357 .00000164 00000-0 22707-4 0 9993 TLE2=2 43677 97.9023 144.6845 0016672 154.0227 206.1831 14.90388260121460 [43743] VERSION=1.1 NAME=Reaktor Hello World NICKNAME=Reaktor Hello World TLE1=1 43743U 18096AA 21021.54237749 .00001426 00000-0 54465-4 0 9993 TLE2=2 43743 97.4011 100.1439 0019073 78.4689 281.8691 15.28152052119697 [43758] VERSION=1.1 NAME=MinXSS-2 NICKNAME=MinXSS-2 TLE1=1 43758U 18099A 21021.48377126 .00000864 00000-0 82235-4 0 9990 TLE2=2 43758 97.6850 95.6189 0015819 174.9072 185.2313 14.95882830116544 [43772] VERSION=1.1 NAME=RANGE-B NICKNAME=RANGE-B TLE1=1 43772U 18099Q 21021.75021196 .00000903 00000-0 86694-4 0 9996 TLE2=2 43772 97.6914 95.8450 0014572 169.3758 190.7774 14.95428017116532 [43773] VERSION=1.1 NAME=RANGE-A NICKNAME=RANGE-A TLE1=1 43773U 18099R 21021.75809298 .00000264 00000-0 29248-4 0 9996 TLE2=2 43773 97.6774 94.5339 0013812 169.0170 191.1355 14.95106655116520 [43782] VERSION=1.1 NAME=SNUSat 2 NICKNAME=SNUSat 2 TLE1=1 43782U 18099AA 21021.75137542 .00000673 00000-0 65928-4 0 9991 TLE2=2 43782 97.6833 95.3553 0013136 167.7550 192.3993 14.95429149116548 [43784] VERSION=1.1 NAME=SnugLite NICKNAME=SnugLite TLE1=1 43784U 18099AC 21021.36996642 -.00000072 00000-0 -12808-5 0 9999 TLE2=2 43784 97.6800 94.7473 0015095 178.1042 182.0239 14.95540300116504 [43790] VERSION=1.1 NAME=EAGLET 1 NICKNAME=EAGLET 1 TLE1=1 43790U 18099AJ 21021.44627654 -.00000210 00000-0 -13591-4 0 9992 TLE2=2 43790 97.6843 95.6928 0013442 180.8762 179.2438 14.95866339116238 [43792] VERSION=1.1 NAME=ESEO NICKNAME=ESEO TLE1=1 43792U 18099AL 21021.74500596 .00000550 00000-0 54510-4 0 9993 TLE2=2 43792 97.6811 95.6851 0013469 175.8775 184.2559 14.95677979116338 [43793] VERSION=1.1 NAME=CSIM NICKNAME=CSIM TLE1=1 43793U 18099AM 21021.44301317 -.00000013 00000-0 39676-5 0 9993 TLE2=2 43793 97.6828 95.5626 0013236 174.5264 185.6104 14.96347599116285 [43798] VERSION=1.1 NAME=Astrocast 0.1 NICKNAME=Astrocast 0.1 TLE1=1 43798U 18099AS 21021.74778375 .00000749 00000-0 71773-4 0 9991 TLE2=2 43798 97.6844 96.1368 0013103 158.7309 201.4460 14.96015562116582 [43804] VERSION=1.1 NAME=Suomi 100 NICKNAME=Suomi 100 TLE1=1 43804U 18099AY 21021.43227450 .00000112 00000-0 15178-4 0 9999 TLE2=2 43804 97.6812 95.0782 0015244 177.1128 183.0184 14.95683643116527 [43805] VERSION=1.1 NAME=Al Farabi 2 NICKNAME=Al Farabi 2 TLE1=1 43805U 18099AZ 21021.85412093 -.00000286 00000-0 -20375-4 0 9994 TLE2=2 43805 97.6818 95.6494 0015327 175.7347 184.4007 14.95852251116598 [43814] VERSION=1.1 NAME=PWSat 2 NICKNAME=PWSat 2 TLE1=1 43814U 18099BJ 21021.79135522 .00203818 00000-0 42819-2 0 9995 TLE2=2 43814 97.7863 116.1975 0009736 222.9347 137.1141 15.44519387116920 [43855] VERSION=1.1 NAME=CHOMPTT NICKNAME=CHOMPTT TLE1=1 43855U 18104G 21021.80945002 .00001282 00000-0 51836-4 0 9993 TLE2=2 43855 85.0359 30.6689 0016099 334.8389 25.2067 15.23515529116763 [43879] VERSION=1.1 NAME=ISAT NICKNAME=ISAT TLE1=1 43879U 18111D 21021.76721690 .00000935 00000-0 87373-4 0 9996 TLE2=2 43879 97.6934 291.5522 0011783 229.1168 130.9044 14.96462678111115 [43880] VERSION=1.1 NAME=UWE-4 NICKNAME=UWE-4 TLE1=1 43880U 18111E 21021.17699218 .00000180 00000-0 20781-4 0 9995 TLE2=2 43880 97.6962 291.3611 0010789 233.9133 126.1090 14.96704180113055 [43881] VERSION=1.1 NAME=Sparrow NICKNAME=Sparrow TLE1=1 43881U 18111F 21021.48715766 .00000812 00000-0 76056-4 0 9995 TLE2=2 43881 97.6962 291.7710 0011211 229.0884 130.9367 14.96748267113100 [43933] VERSION=1.1 NAME=FO-98 NICKNAME=FO-98 TLE1=1 43933U 19003B 21021.53494299 .00004562 00000-0 19268-3 0 9992 TLE2=2 43933 97.2034 68.6389 0017533 188.2517 171.8435 15.23597798111716 [43937] VERSION=1.1 NAME=FO-99 NICKNAME=FO-99 TLE1=1 43937U 19003F 21021.57992063 .00001413 00000-0 58797-4 0 9995 TLE2=2 43937 97.1985 70.5302 0023923 169.1312 191.0448 15.25105426111872 [44045] VERSION=1.1 NAME=MYSat 1 NICKNAME=MYSat 1 TLE1=1 44045U 18092F 21021.47555406 .00002632 00000-0 78766-4 0 9990 TLE2=2 44045 51.6390 62.5692 0011304 34.5480 325.6237 15.38368471108829 [44083] VERSION=1.1 NAME=AstroCast 0.2 NICKNAME=AstroCast 0.2 TLE1=1 44083U 19018F 21021.72592693 .00001151 00000-0 53298-4 0 9996 TLE2=2 44083 97.3944 85.4455 0014451 123.6212 236.6405 15.22041824100578 [44103] VERSION=1.1 NAME=AISTechSat 3 NICKNAME=AISTechSat 3 TLE1=1 44103U 19018AB 21021.71629113 .00000917 00000-0 41112-4 0 9997 TLE2=2 44103 97.3810 85.7433 0014622 135.3144 346.5008 15.23648951100661 [44104] VERSION=1.1 NAME=AISat 1 NICKNAME=AISat 1 TLE1=1 44104U 19018AC 21021.75717029 .00001212 00000-0 40342-4 0 9999 TLE2=2 44104 97.4417 98.5689 0058045 155.8466 204.5517 15.31595518101211 [44339] VERSION=1.1 NAME=Prox-1 NICKNAME=Prox-1 TLE1=1 44339U 19036A 21021.57746606 .00000885 00000-0 15898-3 0 9994 TLE2=2 44339 23.9990 179.0697 0011208 13.8171 346.2626 14.53331875 83829 [44348] VERSION=1.1 NAME=Oculus-ASR NICKNAME=Oculus-ASR TLE1=1 44348U 19036K 21021.34364752 .00007625 00000-0 10487-3 0 9995 TLE2=2 44348 28.5141 29.5033 0347478 119.9500 243.6059 15.07693698 86654 [44352] VERSION=1.1 NAME=Armadillo NICKNAME=Armadillo TLE1=1 44352U 19036P 21021.27883515 .00012065 00000-0 16195-3 0 9991 TLE2=2 44352 28.5299 17.8392 0325798 137.5613 225.0657 15.12863630 86719 [44360] VERSION=1.1 NAME=CP9 NICKNAME=CP9 TLE1=1 44360U 19036X 21021.15222218 .00037633 -60717-5 34001-3 0 9995 TLE2=2 44360 28.5107 324.0913 0257974 226.2731 131.6235 15.33798943 87166 [44420] VERSION=1.1 NAME=LightSail-2 NICKNAME=LightSail-2 TLE1=1 44420U 19036AC 21021.76839829 .00007108 00000-0 14589-2 0 9996 TLE2=2 44420 24.0076 165.8534 0020137 0.7730 359.2792 14.58234508 82161 [44530] VERSION=1.1 NAME=Taurus 1 NICKNAME=Taurus 1 TLE1=1 44530U 19059C 21021.81956131 .00000453 00000-0 14020-3 0 9992 TLE2=2 44530 98.5576 110.9314 0013932 218.7192 141.2999 14.45860615 71895 [44878] VERSION=1.1 NAME=OPS-SAT NICKNAME=OPS-SAT TLE1=1 44878U 19092F 21021.22677790 .00001171 00000-0 64236-4 0 9993 TLE2=2 44878 97.4690 206.9345 0013063 326.5777 33.4630 15.16060720 60527 [44881] VERSION=1.1 NAME=TO-108 NICKNAME=TO-108 TLE1=1 44881U 19093C 21021.76345848 -.00000244 00000-0 -24264-4 0 9992 TLE2=2 44881 97.9388 102.1019 0016158 52.1212 308.1462 14.81419550 59016 [44885] VERSION=1.1 NAME=FloripaSat 1 NICKNAME=FloripaSat 1 TLE1=1 44885U 19093G 21021.72915490 .00000250 00000-0 37985-4 0 9997 TLE2=2 44885 97.9402 102.4479 0015825 61.2853 298.9959 14.82181912 59030 [45115] VERSION=1.1 NAME=SwampSat-2 NICKNAME=SwampSat-2 TLE1=1 45115U 19071E 21021.71222721 .00018914 00000-0 43237-3 0 9999 TLE2=2 45115 51.6402 20.6153 0010045 117.6325 242.5681 15.42814315 54717 [45258] VERSION=1.1 NAME=Phoenix NICKNAME=Phoenix TLE1=1 45258U 98067RB 21021.27851543 .00006672 00000-0 10952-3 0 9996 TLE2=2 45258 51.6414 343.7392 0006753 70.5842 289.5878 15.53712580 52309 [45261] VERSION=1.1 NAME=AztechSat-1 NICKNAME=AztechSat-1 TLE1=1 45261U 98067RE 21021.59033515 .00016136 00000-0 21950-3 0 9992 TLE2=2 45261 51.6400 338.3335 0008225 87.2200 272.9733 15.57704873 52434 [45263] VERSION=1.1 NAME=QARMAN NICKNAME=QARMAN TLE1=1 45263U 98067RG 21021.25850948 .00011771 00000-0 17281-3 0 9996 TLE2=2 45263 51.6407 342.1151 0007825 82.5035 277.6846 15.55955322 52387 [45598] VERSION=1.1 NAME=Quetzal 1 NICKNAME=Quetzal 1 TLE1=1 45598U 98067RL 21021.28080924 .00011016 00000-0 16990-3 0 9997 TLE2=2 45598 51.6423 344.5226 0002677 140.9035 219.2150 15.54695058 41625 [46276] VERSION=1.1 NAME=UPMSat 2 NICKNAME=UPMSat 2 TLE1=1 46276U 20061E 21021.78928178 .00000525 00000-0 30538-4 0 9995 TLE2=2 46276 97.4493 98.4209 0002663 120.4090 239.7407 15.16241684 21315 [46287] VERSION=1.1 NAME=AmicalSat NICKNAME=AmicalSat TLE1=1 46287U 20061R 21021.75877680 .00000740 00000-0 49177-4 0 9993 TLE2=2 46287 97.5045 98.1535 0001666 209.2161 150.8975 15.10187380 21204 [47309] VERSION=1.1 NAME=CAPE 3 NICKNAME=CAPE 3 TLE1=1 47309U 21002A 21021.54361679 .00001600 00000-0 85142-4 0 9996 TLE2=2 47309 60.6849 120.9508 0017544 289.8211 70.0957 15.20256032 548 [47310] VERSION=1.1 NAME=OBJECT B NICKNAME=OBJECT B TLE1=1 47310U 21002B 21021.80585738 .00002512 00000-0 12559-3 0 9995 TLE2=2 47310 60.6832 119.9636 0015201 290.5249 69.4208 15.20582692 578 [47311] VERSION=1.1 NAME=OBJECT C NICKNAME=OBJECT C TLE1=1 47311U 21002C 21021.54138011 .00001649 00000-0 85258-4 0 9992 TLE2=2 47311 60.6876 120.9399 0012829 283.7811 76.1866 15.21180065 537 [47312] VERSION=1.1 NAME=OBJECT D NICKNAME=OBJECT D TLE1=1 47312U 21002D 21021.54133641 .00005834 00000-0 27065-3 0 9998 TLE2=2 47312 60.6854 120.9380 0012981 284.8048 75.1615 15.21213379 533 [47313] VERSION=1.1 NAME=OBJECT E NICKNAME=OBJECT E TLE1=1 47313U 21002E 21021.54019119 .00002717 00000-0 13074-3 0 9994 TLE2=2 47313 60.6845 120.9326 0015456 268.3195 91.6067 15.21675185 535 [47314] VERSION=1.1 NAME=MiTEE 1 NICKNAME=MiTEE 1 TLE1=1 47314U 21002F 21021.27600519 .00002661 00000-0 12615-3 0 9993 TLE2=2 47314 60.6853 121.9093 0014024 259.3729 100.5736 15.22276828 490 [47315] VERSION=1.1 NAME=OBJECT G NICKNAME=OBJECT G TLE1=1 47315U 21002G 21021.53785956 .00001781 00000-0 87471-4 0 9997 TLE2=2 47315 60.6841 120.9211 0011955 252.8073 107.1743 15.22637218 539 [47317] VERSION=1.1 NAME=OBJECT J NICKNAME=OBJECT J TLE1=1 47317U 21002J 21019.43891341 -.00000243 00000-0 12602-5 0 9999 TLE2=2 47317 60.6849 128.8110 0017380 287.3695 72.5476 15.20319036 198 [47318] VERSION=1.1 NAME=OBJECT K NICKNAME=OBJECT K TLE1=1 47318U 21002K 21021.54335715 .00001739 00000-0 91228-4 0 9993 TLE2=2 47318 60.6863 120.9501 0017003 288.0601 71.8643 15.20363821 514 [47319] VERSION=1.1 NAME=ExoCube 2 NICKNAME=ExoCube 2 TLE1=1 47319U 21002L 21021.54223601 .00001108 00000-0 61809-4 0 9996 TLE2=2 47319 60.6853 120.9442 0014009 288.1611 71.7949 15.20825001 480 [47320] VERSION=1.1 NAME=OBJECT M NICKNAME=OBJECT M TLE1=1 47320U 21002M 21021.54154481 .00001929 00000-0 97867-4 0 9991 TLE2=2 47320 60.6862 120.9406 0013299 282.6836 77.2776 15.21113172 568 gpredict/data/satdata/science.cat000066400000000000000000000006261427377236300173350ustar00rootroot00000000000000Space & Earth Science 20580 23802 25560 25867 25989 25994 26410 26411 26463 26464 26702 26998 27370 27540 27640 27651 27843 27858 28485 29047 29048 29049 29050 29051 29052 29107 29108 29479 29505 29506 31135 31304 33053 36119 36395 36508 37389 38337 38358 39089 39197 39253 39265 39422 39451 39452 39453 40020 40059 40119 40360 40482 40483 40484 40485 40930 41173 41784 42758 42831 43132 43194 44628 46495 gpredict/data/satdata/scripts/000077500000000000000000000000001427377236300167165ustar00rootroot00000000000000gpredict/data/satdata/scripts/add-amsat.py000077500000000000000000000022321427377236300211250ustar00rootroot00000000000000#!/usr/bin/python # # Add satellites from AMSAT website that were not in the Celestrak database # import os import string import urllib webfile = 'https://www.amsat.org/amsat/ftp/keps/current/nasabare.txt' localfile = './in/amsat.txt' print 'Fetching ' + webfile + ' => ' + localfile urllib.urlretrieve (webfile, localfile) tlefile = open(localfile, 'r') catfile = open('./out/amateur.cat', 'a') datfile = open('./out/satellites.dat', 'a') while 1: # read three lines at a time; strip trailing whitespaces line1 = tlefile.readline().strip() if not line1: break line2 = tlefile.readline().strip() line3 = tlefile.readline().strip() # catalog number; strip leading zeroes catnum = line2[2:7].lstrip('0') satfilename = './tmp/' + catnum + '.sat' if os.path.isfile(satfilename): continue print " Adding " + catnum + " ..." catfile.write(catnum+'\n') datfile.write("\n["+catnum+"]\n") datfile.write('VERSION=1.1\n') datfile.write('NAME='+line1+'\n') datfile.write('NICKNAME='+line1+'\n') datfile.write('TLE1='+line2+'\n') datfile.write('TLE2='+line3+'\n') tlefile.close() catfile.close() datfile.close() gpredict/data/satdata/scripts/convert-celestrak.py000077500000000000000000000101501427377236300227230ustar00rootroot00000000000000#!/usr/bin/python # # This script is used to create the initial satellite data repository by # converting Celestrak TLE files into a satellites.dat and .cat files. # # 1. Copy this script into a temp folder # 2. Create subdirectories ./in/ ./tmp/ and ./out/ # 3. Run the script # 4. You should have a .cat file for each category as well as a satellites.dat # file in the ./out/ folder # # This script is only used during development and is not needed by end users. # import os import string import urllib # Satellite groups groups = { "amateur" : "Amateur Radio", "cubesat" : "Cubesat", "galileo" : "Galileo Nav.", "glo-ops" : "Glonass Operational", "gps-ops" : "GPS Operational", "iridium" : "Iridium", "iridium-NEXT" : "Iridium NEXT", "molniya" : "Molniya", "noaa" : "NOAA", "science" : "Space & Earth Science", "visual" : "Brightest", "weather" : "Weather Satellites" } # Satellite nicknames nicknames = { "4321" : "AO-5", "6236" : "AO-6", "7530" : "AO-7", "10703" : "AO-8", "14129" : "AO-10", "14781" : "UO-11", "16909" : "FO-12", "20437" : "UO-14", "20438" : "UO-15", "20439" : "AO-16", "20440" : "DO-17", "20441" : "WO-18", "20442" : "LO-19", "20480" : "FO-20", "21087" : "RS-14", "21089" : "RS-12/13", "21575" : "UO-22", "22077" : "KO-23", "22654" : "AO-24", "22825" : "AO-27", "22826" : "IO-26", "22828" : "KO-25", "22829" : "PO-28", "23439" : "RS-15", "24278" : "FO-29", "24305" : "MO-30", "25396" : "TO-31", "25397" : "GO-32", "25509" : "SO-33", "25520" : "PO-34", "25544" : "ISS", "25636" : "SO-35", "25693" : "UO-36", "26063" : "OO-38", "26545" : "SO-41", "26548" : "MO-46", "26549" : "SO-42", "26609" : "AO-40", "26931" : "NO-44", "26932" : "NO-45", "27607" : "SO-50", "27844" : "CO-55", "27848" : "CO-57", "27939" : "RS-22", "28375" : "AO-51", "28650" : "VO-52", "28894" : "XO-53", "28895" : "CO-58", "28941" : "CO-56", "35870" : "SO-67", "36122" : "HO-68", "39444" : "AO-73", "40967" : "AO-85", "43017" : "AO-91" } urlprefix = "http://celestrak.com/NORAD/elements/" for group, name in groups.iteritems(): webfile = urlprefix + group + ".txt" localfile = "./in/" + group + ".txt" print "Fetching " + webfile + " => " + localfile urllib.urlretrieve (webfile, localfile) ### CHK ### # For each input file for group, name in groups.iteritems(): print name+':' # open TLE file for reading tlefile = open('./in/'+group+'.txt', 'r') # create category file category = "./out/"+group+".cat" catfile = open(category, 'w') # first line is the group name catfile.write(name+'\n') while 1: # read three lines at a time; strip trailing whitespaces line1 = tlefile.readline().strip() if not line1: break line2 = tlefile.readline().strip() line3 = tlefile.readline().strip() # catalog number; strip leading zeroes catnum = line2[2:7].lstrip('0') print " ... "+catnum # add satellite to category catfile.write(catnum+'\n') # satellite file satfile = open('./tmp/'+catnum+'.sat','w') satfile.write('VERSION=1.1\n') satfile.write('NAME='+line1+'\n') if catnum in nicknames: satfile.write('NICKNAME='+nicknames[catnum]+'\n') else: satfile.write('NICKNAME='+line1+'\n') satfile.write('TLE1='+line2+'\n') satfile.write('TLE2='+line3+'\n') satfile.close() # close TLE and CAT files tlefile.close() catfile.close() # now package the .sat files into one .dat file datfile = open('./out/satellites.dat', 'w') for file in os.listdir("./tmp/"): # open .sat file satfile = open("./tmp/"+file, "r") # Create fake config group of catnum catnum = file.partition(".")[0] datfile.write("\n["+catnum+"]\n") # read lines from satfile and write them to datfile text = satfile.readlines() datfile.writelines(text) satfile.close(); datfile.close() gpredict/data/satdata/visual.cat000066400000000000000000000017161427377236300172300ustar00rootroot00000000000000Brightest 694 733 877 2802 3230 3597 3669 4327 4814 5118 5560 5730 6073 6153 6155 7004 8459 10114 10967 11251 11267 11574 11672 12139 12465 12585 12904 13068 13154 13403 13552 13553 13819 14032 14208 14372 14699 14819 14820 15354 15483 15494 15772 15945 16111 16182 16496 16719 16792 16882 16908 17295 17567 17589 17590 17912 17973 18153 18187 18421 18749 18958 19046 19120 19210 19257 19573 19574 19650 20261 20262 20303 20323 20443 20453 20465 20466 20511 20580 20625 20663 20666 20775 21088 21397 21422 21423 21574 21610 21819 21876 21938 22219 22220 22236 22285 22286 22566 22626 22803 22830 23087 23088 23343 23405 23560 23561 23705 24298 24883 25400 25407 25544 25723 25732 25860 25861 25876 25977 25994 26070 26102 26474 27386 27422 27424 27432 27597 27601 28059 28222 28353 28415 28480 28499 28738 28773 28931 28932 28939 29228 29252 29507 31114 31598 31789 31792 31793 33504 38341 39271 39679 39766 40306 40354 41038 41337 42758 43521 43600 43641 44064 46390 46395 gpredict/data/satdata/weather.cat000066400000000000000000000005211427377236300173550ustar00rootroot00000000000000Weather Satellites 25338 25991 27509 28054 28654 28912 29047 29048 29049 29050 29051 29052 29155 29499 29522 32958 33463 33591 35491 35865 35951 36411 36744 37214 37849 38049 38552 38771 39260 40069 40267 40367 40732 41105 41836 41866 41882 41884 41885 41886 41887 41888 41889 41890 41891 43010 43013 43226 43491 43689 43823 44385 44387 gpredict/doc/000077500000000000000000000000001427377236300134425ustar00rootroot00000000000000gpredict/doc/.gitignore000066400000000000000000000000251427377236300154270ustar00rootroot00000000000000Makefile Makefile.in gpredict/doc/Makefile.am000066400000000000000000000000161427377236300154730ustar00rootroot00000000000000SUBDIRS = man gpredict/doc/man/000077500000000000000000000000001427377236300142155ustar00rootroot00000000000000gpredict/doc/man/.gitignore000066400000000000000000000000401427377236300161770ustar00rootroot00000000000000Makefile Makefile.in gpredict.1 gpredict/doc/man/Makefile.am000066400000000000000000000002211427377236300162440ustar00rootroot00000000000000MAN_IN_FILES = gpredict.1.in MAN_FILES =$(MAN_IN_FILES:.1.in=.1) man_MANS = gpredict.1 EXTRA_DIST = $(MAN_IN_FILES) CLEANFILES = $(man_MANS) gpredict/doc/man/gpredict.1.in000066400000000000000000000024561427377236300165140ustar00rootroot00000000000000.\" .TH "GPREDICT" "1" "Version @VERSION@" "Alexandru Csete" "User Commands" .SH "NAME" gpredict \- real-time satellite tracking and orbit prediction program .SH "SYNOPSIS" .B gpredict [\fIOPTION\fR]... .SH "DESCRIPTION" .\" Add any additional description here .PP Gpredict is a real-time satellite tracking and orbit prediction program. It can track an unlimited number of satellites and display the satellite data in various visualisation modules like lists, maps and polar plots. Gpredict can also provide detailed information about upcoming satellite passes relative to one or more ground stations. Gpredict can perform Doppler tuning and antenna rotator tracking via hamlib. The complete user manual, as well as other documentation, is available from http://gpredict.oz9aec.net/documents.php .SH "AUTHOR" Gpredict is designed and written by Alexandru Csete, OZ9AEC, but many other have contributed in one way or other, see the AUTHORS file or the About box in gpredict. .SH "REPORTING BUGS" Report bugs to \fB\fR. .SH "COPYRIGHT" Copyright \(co 2001\-2011 Alexandru Csete. .br This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. If it breaks you can keep both pieces. gpredict/doc/notes/000077500000000000000000000000001427377236300145725ustar00rootroot00000000000000gpredict/doc/notes/configuration.txt000066400000000000000000000024471427377236300202110ustar00rootroot00000000000000Gpredict has two configuration layers. 1. A global configuration layer accessible via Edit->Preferences, which applies to the whole program. 2. A local configuration layer for modules accessible via the "Settings" button in the module configuration dialog. The global configuration layer is implemented in the sat-pref modules and is intended to provide useful parameters that can be used as default values. The local layer is implemented in the mod-cfg module and is intended to allow users to configure each module individually. If a module does not have its own configuration the parameters will fall back to their corresponding default values. When creating a new module, the module should first try to read the local configuration parameter using the .mod file and the keys defined in config-keys.h If a parameter does not exist the modules should read the value from sat-cfg, which always will return a useful value, i.e. sat-cfg has built-in defaults. The mod-cfg-util module provides utility functions to warp all this code into ine single function call for all kinds of used parameters (bool, int, char). The required parameters for these functions are the local GKeyFile, the local section definition from config-keys, the key definition from config-keys and the parameter definition from sat-cfg. gpredict/doc/notes/ft-847.txt000066400000000000000000000042241427377236300162660ustar00rootroot00000000000000Setting up gpredict for use with a Yaesu FT-847 radio As an USB to RS232 interface I bought the converter from "TechnoFix UK", which can be obtained from e.g. ebay et al. There might be a problem with your braille kernel driver, so you have to disable this from loading at system start (to get /dev/ttyUSB?). Remember to add the user running rigtcl[d] to the dialout group. My PC is running an actual debian with KDE as desktop environment and hamlib is the version delivered as distri package (currently Hamlib 1.2.15.3), because I have been too lazy to compile it by myself. Another issue I found while testing the threaded version of my gpredict build: transponder modes, such as FM, LSB, USB etc. have to be set manual on the radio. FT-847: Menu 37 "CAT RATE" -> 57600 rigctld: /usr/bin/rigctld -m 101 -r /dev/ttyUSB0 -t 4532 -s 57600 --set-conf=stop_bits=2,serial_handshake=None gpredict: Edit -> Preferences -> Interfaces -> Add New Name: YAESUFT-847 Host: 127.0.0.1 Port: 4532 Radio Type: Duplex TRX PTT status: Read PTT VFO Up/Down: SUB /\ / MAIN \/ LO Down: LO Up: Signalling: [ ] AOS [ ] LOS in Radiocontrol widget: Settings: 1. Device: YAESUFT-847 2. Device: None Cycle: 2500 Note on Cycle: You have to chose a value bigger than the communication via RS232 to the radio takes! This is approximately 300 ms per command, existing of the command itself and the answer, containing the result. With a full-duplex radio there are 7 (!) commands executed: 1. [t] get PTT status, 2. [f] get current VFOA frq, 3. [F {...}] set new VFOA frq, 4. [f] check if new VFOA frq is set, 5. [i] get current SUB frq, 6. [I {...}] set new SUB frq, 7. [i] check if new SUB frq is set. This results in a cycle-time of approx 2100 ms - add some time to ensure all commands are transmitted. The idea to enclose the whole communication into separate threads came up, because socket communication is always blocking. This also comes up with rotcld! Still some work to do... One full cycle: 2017-03-02 19:24:18.918677 t f F {...} f i I {...} i 2017-03-02 19:24:21.036607 (to be enhanced...) Mar. 2017, Patrick Dohmen (DL4PD) gpredict/doc/notes/ic-910.txt000066400000000000000000000024011427377236300162320ustar00rootroot00000000000000Setting up gpredict on linux for use with a Icom IC-910 radio. Settings on the IC-910: CI-V DATA Baud Rate: 19200 CI-V Address: 60h CI-V transceive: On When the radio is connected to the PC via the CI-V CAT Interface and serial port COM1 it is on /dev/ttyS0 or higher number. When you are using a usb-serial-rs232-adapter it should be on /dev/ttyUSB0 or higher number. Setting up the daemon from hamlib: ~/Hamlib/Hamlib/tests $ ./rigctld -m 3044 -r /dev/ttyUSB0 --civaddr \0x60 main: #1 vfo_mode=0 Recommend using --vfo switch for rigctld if client supports it rigctl and netrigctl will automatically detect vfo mode The daemon should be running in the background now, "./" is only needed for local execution and testing, if installed from a package: $ rigctld -m 3044 -r /dev/ttyUSB0 --civaddr \0x60 Or you can initiate with "systemd/rc-init" once testing is stable. Radio config in Gpredict: Edit -> Preferences -> Interfaces -> Add New Name: IC-910 Host: localhost Port: 4532 Radio Type:Duplex TRX PTT status: None VFO Up/Down: Main Down Sub Up LO Down: 0 LO Up: 0 Signalling: unchecked in Radiocontrol widget: Settings: 1. Device: IC-910 2. Device: None Cycle: 1000 (to be enhanced...) May. 2020, Brett Coady (VK2KYB) / Andreas Puschendorf (DL7OAP) gpredict/doc/notes/ic-9100.txt000066400000000000000000000024051427377236300163160ustar00rootroot00000000000000Setting up gpredict on linux for use with a Icom IC-9100 radio. Settings on the IC-9100: CI-V DATA Baud Rate: 19200 CI-V Address: 7Ch CI-V transceive: On When the radio is connected to the PC via the CI-V CAT Interface and serial port COM1 it is on /dev/ttyS0 or higher number. When you are using a usb-serial-rs232-adapter it should be on /dev/ttyUSB0 or higher number. Setting up the daemon from hamlib: ~/Hamlib/Hamlib/tests $ ./rigctld -m 3068 -r /dev/ttyUSB0 --civaddr \0x7C main: #1 vfo_mode=0 Recommend using --vfo switch for rigctld if client supports it rigctl and netrigctl will automatically detect vfo mode The daemon should be running in the background now, "./" is only needed for local execution and testing, if installed from a package: $ rigctld -m 3068 -r /dev/ttyUSB0 --civaddr \0x7C Or you can initiate with "systemd/rc-init" once testing is stable. Radio config in Gpredict: Edit -> Preferences -> Interfaces -> Add New Name: IC-9100 Host: localhost Port: 4532 Radio Type:Duplex TRX PTT status: None VFO Up/Down: Main Down Sub Up LO Down: 0 LO Up: 0 Signalling: unchecked in Radiocontrol widget: Settings: 1. Device: IC-9100 2. Device: None Cycle: 1000 (to be enhanced...) May. 2020, Brett Coady (VK2KYB) / Andreas Puschendorf (DL7OAP) gpredict/doc/notes/ic-9700.txt000066400000000000000000000041321427377236300163230ustar00rootroot00000000000000Setting up gpredict on linux for use with a Icom IC-9700 radio. (testing) settings on the IC-9700: CI-V USB Port: Unlink from[REMOTE] CI-V USB Baud Rate: auto CI-V USB Echo Back: OFF CI-V DATA Baud Rate: 19200 CI-V DATA Echo Back: OFF CI-V Address: A2h CI-V Transceive: ON When the radio is connected to the PC you should see: $ lsmod |grep cp cp210x 24576 << is the kernel module and memory size, if compiled into the kernel you won't see the module but may still work, try below. $ lsusb Bus 001 Device 079: ID 08bb:2901 Texas Instruments PCM2901 Audio Codec Bus 001 Device 078: ID 10c4:ea60 Silicon Labs CP210x UART Bridge Bus 001 Device 077: ID 10c4:ea60 Silicon Labs CP210x UART Bridge Bus 001 Device 076: ID 0451:2046 Texas Instruments, Inc. TUSB2046 Hub The radio control port is the usually first port: $ ls /dev/ttyU* /dev/ttyUSB0 /dev/ttyUSB1 Setting up the daemon from hamlib: ~/Hamlib/Hamlib/tests $ ./rigctld -m 3081 -r /dev/ttyUSB0 --civaddr \0xA2 main: #1 vfo_mode=0 Recommend using --vfo switch for rigctld if client supports it rigctl and netrigctl will automatically detect vfo mode Be aware of the hamlib 4.1 parameter -x/--uplink switch for GPredict. Will avoid reading freq from the uplink. This will help for a better handling when sweeping over a linear satellite transponder. The daemon should be running in the background now, "./" is only needed for local execution and testing, if installed from a package: $ rigctld -m 3081 -r /dev/ttyUSB0 --civaddr \0xA2 Or you can initiate with "systemd/rc-init" once testing is stable. Radio config in Gpredict: Edit -> Preferences -> Interfaces -> Add New Name: IC-9700 Host: localhost Port: 4532 Radio Type:Duplex TRX PTT status: None VFO Up/Down: Main Down Sub Up LO Down: 0 LO Up: 0 Signalling: unchecked in Radiocontrol widget: Settings: 1. Device: IC-9700 2. Device: None Cycle: 1000 Note on Cycle: Faster is possible due to USB use but the Interrupt on the Waterfall and Radio itself may be more noticeable. Currently working well on firmware revision 1.23 (to be enhanced...) May. 2020, Brett Coady (VK2KYB) gpredict/doc/notes/time_keeping.txt000066400000000000000000000064431427377236300200020ustar00rootroot00000000000000Notes on time keeping in gpredict --------------------------------- The SGP4/SDP4 algorithms require the time since Epoch in minutes (tsince). The sat_t data structure, on the other hand, keeps the Epoch time and the current time as Julian dates. They can be obtained using the Julian_Date_of_Epoch and get_current_daynum functions. To obtain tsince, on can simply multiply the difference between these two with the number of minutes per day: tsince = (sat->jul_utc - sat->jul_epoch) * xmnpd Similarly, when predicting passes, a specific Julian date can be obtained from tsince by dividing tsince with the number of minutes per day and adding the Epoch time as Julian date to it: jul_day(AOS) = tsince(AOS)/xmnpd + sat->jul_epoch The file sgpsdp/sgp_time.c contains many other functions that can be used to convert between calendar date/time and Julian date. Nomenclature ------------ Julian day The Julian day or Julian day number (JDN) is the number of days that have elapsed since 12 noon Greenwich Mean Time (UT or TT) on Monday, January 1, 4713 BC in the proleptic Julian calendar. Julian date The Julian Date (JD) is the Julian day number plus the decimal fraction of the day that has elapsed since noon. The Time Manager ---------------- Each module has its own built-in time manager, which keeps track of the module time. Besides real-time, gpredict also allows the user to use simulated real-time and manual time keeping individually for each module. Each of these are described in following. Real-time: The clock of the module is synchronised to the system time in a 1:1 relation. Simulated real-time: Also called time-throttling. The clock of the module is synchronised to the system time in a 1:N relation, where N is an integer. Thus, if N=2, for every second the module time will be incremented by 2 seconds. If N=-2, the module time will be decremented with 2 seconds in every second. Manual: When using this option, the time of the module is frozen. The user can then scroll forward and backward in time using various controls. The time resolution here is 1 second. By default, each module will use real-time. In order to enter another time keeping state, the user has to open the Time Manager from the module pop-up menu. Fortunately, the implementation of GtkSatModule is very generic where time is simply a state variable. A module will thus not care about whether the time is acquires is real-time or simulated time. Time keeping works by using a throttling state variable that indicates how the time should be incremented. This state variable is a signed integer with following values: 0: Paused; in this state the time is kept constant in every cycle but it is adjustable by the user using various controls. 1: Real time; in every cycle the time manager reads the current system time and performs the update according to this time. Any other value indicated simulated real-time indicating the throttling factor that is applied to the actual real-time. For example a value of 2 will take twice as big steps as the real-time clock. Negative values have the same meaning but in backwards direction. By default, the module starts up in real-time mode, i.e. throttle = 1. Via the module pop-up menu, the user can bring up the "Time Controller" window containing various widgets to control the throttling state. gpredict/doc/um/000077500000000000000000000000001427377236300140635ustar00rootroot00000000000000gpredict/doc/um/gpredict-user-manual.odt000077500000000000000000135635351427377236300206530ustar00rootroot00000000000000PKs#L^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKs#LConfigurations2/images/Bitmaps/PKs#L'Configurations2/accelerator/current.xmlPKPKs#LConfigurations2/floater/PKs#LConfigurations2/menubar/PKs#LConfigurations2/progressbar/PKs#LConfigurations2/popupmenu/PKs#LConfigurations2/statusbar/PKs#LConfigurations2/toolbar/PKs#LConfigurations2/toolpanel/PKs#Lpl'IldM۬IͮK6yq}7sHlll !!@iZkñM?ꪧG*A( f: >P ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAǜIz g®ٹb?~tϼtDܱc4ټK쟯8"9d6Ҫ񦗐Sܖtfd3/t+&BR*c+-9S[ɵJ)ZcJz 82E ړ7#ٗ^l/͔:-Dn}ku߉i|~tR۷VҕKKlޝƾJ(F3Y)V%Q(9MD[t1=o>ҸmLI<blD徰g*vv ׻n|xsgGN-GE"X;i9RcmDClgnVRQ[?_y^,+N~8>voZ6Nɲl"3qz?:^xJZ,{B_B$UfU9n^ؽE+v}T;J1umg* yמ4y y3&w<9e{L}rYmǑ6ns\za" :&]„pLE밐tlV$GtLULNtҷIO99?6Dh!'GImN9K֫Q1#*RmR۷SSԯq1-_K5;^صB{{smE<؋F=:ٱzIG"20*n{ޢxʶ*T#ĄoKZ!aQm%{_r=Ǟu Uh1VQq<|"=+rK|Q{vA੩Vv `.I2&+0w&R;wnc jsHÃrDvM$5qK:ZHRj}o2w{Š㚡bL|9#( RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~(H RAᇂTP ~\/$%'Tl~h3_ }r7Js?zu۶ݏP⪘ԞvP[o{.S Sۨ_)z7#[I'@m.#.v9lG綷mZuՏ,iتˬ ?+?6㮱.W*mZ򪗉2g\W3e͕Cuo.CA*(P ?CA*(P ?CA*(P ?CA*(P ??~+r5  q*zIVv]3zV蔋ߔyyP1\J$,*ɲD" J]ز4tawr}w*ߜs Pٶ>_YՌQ㱋js#dұDl<3K E_fŹfOz ʲ\Іo}r遣x۽1 :U Lyb"h$¢2Yd-JEnln ]Y]"##jbQND"luAE7(tb(ڇ-䘧:/2kĺZ(Se:*?l4/><)eS73Ldi5WũGBB0ӈѢhcA.WMB:xy[Zh*^[[ ~A^_QQaX}{Æ;Ν;G~ ~4I/]p g ? VVV!O}]@d2&655٬k`rgKNN6lKv;#o}󛳝H vl/t:aEтG8n/4 *v./Sҡtph\"P~(%Kl39%%܂Ҭr L*eD8$^[=H@Ҵ3Jt#ʓp-[ȿ>-HT0Sw0$ZȟׄTz0̖'}#d3ktba9cJ4nP$ $:, lx09 U BA * DOxA]M={W)Kf&^|X5aΛW~Ї߾>;21*:4///#cO~3;_{ kw{v >?PHe 't?ز(ohhP;W_ s1܍% ]4qر5&Nt1&~)˖/4Kv%ȁׯGʈ߇KoNA:CC0⒠W^YR]]xd$}m&?;BnE4م(ZG @ݘpPF!_hy.:~Y>y!a‚^p0 oh "@=[0_P9RglydffRf+er-G/`:ӞT& qXb XH2LF48}TXAڄ)f7E ·J0HQeZ4QbpAҒFxjZOArby>f{G{0E'q&A(jhng3,f9F+pPUUUėƇZ1c_R&7߼;ꦛzzzJJJoٿ~̙ "=_G7޼X8)&?+T636 ZjyFXP6w{= BE 浻}81ެE-?MZ v>~Ͷ0ey8 IpKѥyO[UJ\NυJjjhͤ;ۖ޹şvhۑjj(xbg|&D]&5A䟈 䠤a3j'ȁOnnϵ%@|ׂ ߟ_QWs^j9^jikm[d~+fj'm;zDU=ni"?{n)/>>vy4ЂL(4z[~rB*lbF/p2֜HdqЕN6\ olO:.]*N45AجV|h#'v=??_kp(z͓;!o٬~< ŋ-tV3 JEcdNl5UEΞ=ʫEh$p+ Qfso QmV[0:~8j*x:6 Ç^8=ވ467\V=ˏNdNJ"Z XAIDPxFp6K0GQ6s>b+fUF{4h6IMow?Z>dЌP"BvlX}jSz[3TqD49ܳGD׼*VPXςLyzQ[@SQ. JAIN1jdS +:X@y L2Jk[ayK\4'ݏG_ sϷn.]'Z?G~C:bC_M<k={~%Z$dB'tLun33O r ,u-YuS3fx>b-[P̣G}ܣc??R4UEnhOj9Mفω;7f:b0h>1EX胋-Aev @Q NiVVX.JǙąP CJ#57ϵXyyl5&w3%PGA[(((x--Ϳ{=u"43#ד{GjhhxHpgn_J^fh~â"; CPӰV%t ьsi|H|?k-NX LL*ol<ʮe遞uE o6)nnI[z[Eg{6qGW6f*g<TtOXg]mpB1ߑ 6mlbȗ(J.IE1"-R| LN|ZnieFgQ4gh5^`j9Vm)2evBQ[DK8y}f'OF!a-92 S3^PtqdhtbujvcxRL|6mʒ}ŠG27tX0kn\X]T5j,琟ս1Cngoܢ5qr-uq}hE嶼pjX;P8)phsY=`vWBPW,cXZcְv\ɡ z RRr]ʣ$7"ZifЎAȴf1beOt*iח\=Zd*/*8q)?+sx[V9N͆b.lfܤ {bUE\ͧOF5Dj3J<~yAlC}c;@,0˲>8bbL0acZ'/"Bo>XP~S**Ҥ¤juN'X_o>A{@]Sץ`?88vC >~9&Mxde}QӸ[7fA׿3T//fY%叿5tgJxI N5Xe9îtq#>vGi C1g=w ?whe]NĪkv[V0"G#e3UcxGrP\fטv YuXTեC z,Mqq[|Liug륙RZ0ckoc? 'נڴf+,(/믬D"@djjȸ 2OL5M.Od2&sS7c\iZTB#u2`^h/s 8CaO{8bM擦<KqTY+,Iř(IZk˪^x'\ˣR1'N9!NTk9paGܡ6F E'R >ZT*I^K`hhðP:}F' uB= ۑ)yox"qÆ}\҂SMGp>A *~ʌ_0TɐShE"\B%v-qގY]yvt1ʨ L6?2tku@i*]D`7LWkϋ;.yCY=n 8Q/&Y78HmV-3"= OU~P•/}V9$z8N&DŽŒ}^q=Zz]5͈ʷq#=ǟ6mv킊yɯee~zss3(xq54=ed:Mq @P,XhZ#T$Ά#Qw[gx4qY Dì3~% mx*ZNlL7Yih GE0n0TTZ]oOF5MWf:Z\"=l6+}*m~HM474:%L'Y2l|WN=tlf?'t:gΈJIl>֣Cޮ.f6:0L X]%QbHHV $HCqkCCܳ#+@0ø7 G8iHW~05:/=0MdgT|ꌽ4Lf~(57mr>׭뚟5 0]~̹o {&/?|8w k$2+=<;;\PfrjNya.zwfaB̧Tpxbw ɤNԢP#1Qn ?k4 ϔ,_Ғ:΋nG@!!ᢙ∧L8}gyZ"&t.ٔ'?O?GD|x֭oٳf[v yFܵׯ_ЀGٳ`̦(yF6 `VfzŊRı\4۽zm- D"q'eFGi kB*Aq%Ec>+x8+ϊ+hqa u5vG4X΢謼jTIuy >NP4/H ۈn~GmhwJɏӧ:s,%*0㱄7֨H4f6)g8Vr,',-j4`hBF#|"׳Xl0uqAϳDsOr4Hc +x!ZDpK$уP< ]]خ8+U zJUݽOӨ@ a(ڂ4d?F^V׃$̾P'Qo\Ȏucmͥؓ;QȆfA`ݽqcSכH M~|~r"EaS FڒR}0\FhI<WNycLQB" , zp*8@2Ȥ,>X wIbdEZCђ&ׂhOnt!Hɳ$z"Fz;vPwgϞm۶!p߻wn?r}mKU+ڵY},9~8խ:Wϩ=?`J[Z33K֮-H3uc I_ɺӫ<Ǟ@Csrr@Jr7^;E)#7m|rZjK]P(6odRp̂&5 zXCHg 9EF-Z0yBMc58Aorwn"@[⢹͖?=kdK8B y( q~QOJk맒#05ãTEyl юGS]l6]GJg qQtSu l#ʷ}-JϚ c˄ՑsW/~VgW&J P=(XЅ:vL]V__VOq!Б`,ᛑ>z.S˖iH,?Z2-V`|d3vttD=6rpd"4zkkkNN.Dٳm֢EFFfSIw[z8 ̕≥OAJM]HYMI71K/~<ʸw#^w결) #rAӟ*iVT^q:]]]V;x<Vr'pYx<z/} sd6 lN&ٴ\YY㋳_}ճny924Degu'5!ͧ%<)8,J-ZhhhZӡ賳<3>IOv,M@ 8cq:6Y6%0yST r Pr{WS}@& !QPR()0Q4gDGGl>}:';g`p  N(]` >yl(7X@YE [R\vl}]]қF}ӉGh|cxQQl^d @QIi?%LY`=`KE=G\G~@ NFDMWM mmm_za.wy~:`Ո:'#! m>ɒkYH%%Nh<h&nζY}^qܵͅfȪ]@,SlI؏H+(!-]@JwAYɦ2?(a-,O^bUᾣdK# fQF==Vb޾>DQ#4 ,6 Bs6IJ "qrȼyhy }uhacGMo?+O>pʕ+.\_TudxH>vflP(ъ9і dA4Max|w__CFfNXmCCzVAGQj5b PuU]w4\8B+Ԩ5 i)Wk.t| EveyiEH6lZzl{ZmY!(>~[3{%tA?tjiQiÏܼI3b>|BLc'IH;^Q:DZ$^!˓2>@.֬FMsC@(\sbC3rB]md#M4Øy5kI TWݡ:M׾8馕L%_񽼬t^yWN}nUi4bUL?uhhtx̅˅֌Ox2nA-t:T|ŋѲaO A{ Vkkk!E 0:::v1HC!-7vuu#MS&֓UUV8rqLۭʋ+&Onųjk 㹅a}gϞky?ad4ećlUK}|CUp*:sZx _fyZx58PdV3p PP(7:u '6=y${SWqiT%3#ka [f{h4^IA28 AIDU^vXOZN:\H794 qp;c1P MA c V>%L/Fm|x?|oJ2!T%Kĕ,;ѭұ}wz`N7u"ZBiEF H\E2B?8< -L‹ABxH DIٳgA7n6i -"&'K$xx EXdUqB< 9C_0ϢӨhFLgwMFm תpDˉn#!W$+Aͺ\˝e C{@8^c3tZN|I5 6<P%F#ztԱuf\;:G ^>"Ny4/$}x2z%7[L$'T&hu^nnNqA[y'>k}25gWj,щ-IqK.Ǩ%K=M젬&N9x.&#~ĘkllبlXYï; I/HS[=Ể`*"ǯ*DghPΝ[t)FX/.e n/20XPh ؾ};t?ҁÌF G UA{GZD۲F:TTX y^zÖ+BQ--Ӆ5҃DO6mjjjB]/.OBEҜMA;v'rЉH8DN;3_4\D-(җ4.2<+h5Z^++*ٷoxK 9D.ȨWڴR2@ywi#1HggKMo=𷢢2 @8.$/rnlD[h˖-kkkC x7xB" fwGAZFC"Owv.X:O?&i{B4#)3o]fZs 0EGN9IC$h# Wi|%^t l)8x|[nE r#{R"-~‚M%M×1HǖI-gJs)|;i[ ̒yCi| %o68izu(ݗ}򤟺zɩ'J3S"NS4__gP'^fMuͤ$aJ:+VH^”8woOvTƒ K pO jnN@p43\CH籝Z0p |"4DQ< !NɮN`B đr{{;6T)Ae8^tpzw(.kG0 a4Im… K~㧒?3^EW&%((aO=B]M@kC\l;eiڧSZFmIkKjE3QaM_Nwϣ\ Y6>[/!8'Hp=hfqNG}AɂܫW$'0 $B@AwQ rl|&,d v\-ք !@vxkh D CDs 믿xh%ux8`m.K!eoڪwHdo}J* 㾲2mN:77°ڜe`2L 7) .˷P(ɧ͈~O0w)? /f@_"_Z1 !Ӓ!lx ^D K`8d҆ h+OE:Yn7IΠ& 8O\dШWUN~c6&O O?]vÇui?²s Pc4[WT&==>jHMiςm;;y$ F=? C(5؍G@ H I|AY  > >pv  B~D$H,S/W+eXZus#At9𬮮,|w!|yŮfCܷܒy}oI4{=qѨDA[HҸ? 2l4NDu=<2]9??/z@vޝihV|ErR. ̒!K$;PD~۵Z],|vZ2KhB4_Dΐ?Y@% ;Yx IN4~%3HH0/(+Q^P^I_ B|(#M%>B܂ F$P1a T$Mh^j!@fҙΝv( 0 ]L\%WӉC dj/LݩlHS~hyh( v/LE#`OT4%b,`g&@)# mŁ#[nSԠ@84 `! QJE9sVy ZN3ўZ%qD,' ``U*/iM/6VU? cav+?$΍33Q\yM2$. E &Ql)R, Ҵ?6O>M~Sǝj +Kp޼Uxy\;t FZ .4B$P k>S,y ]a*'|`j^Ӛ޸p$뮻߸l=驪K{뭷@ ZLE4wSN&ۡAO8eZi ]DB* 2W^y@AD_aժU` l7H0 8p7DnmMLw\HjӐ7v> U>, hX1`@ahċP\DhІFmv7n0&=/2Q7((81i')_1$"3HYCˏt&w 'A6x|ᇓ%?rwMI6նyک(;2=6Y@BqI&4fs|=#kKJ4eYQ^,H>N Y,A~SjDP0MA=>&|԰0& 6#тaRkX8}wE}=A(,C$Bd6%@ !fQ CB_P?G܏dGa|~fJ{7n cJ2&`W,蕻pM"7T"=cJ~Z'aJ> KqƎu#-H`˲9nK%egC}ŝ}88MQr4}6mfZDKNn_F<8tНwy1HDXW0  0`@B B^z(|CJ`cFo&*f?B->3١vms7_l 4`{P7>q\e/>>>Ś$;n*tljɚSdߐ82.j\_sCw5_\@q%` oww[gS=|OvO S&]+ir͌_1GfXW҃ rq DfB ,'˅hˆh#/={אPy7 c 6Bc#k u]o1O}"@L'M֨?}6FH} iih"n*3`{W/[n<ڇ,;ς7u-e@4eeS>[U%͸G㭷 æic}}Um*"]]yd BNeE`d$ x$( BF5jBpL;Rɸy>U푢\h7 :;@ qp'Cυer=W,Mi}!_""&KZ̛ lhXc8/zetv83?(܊9&ƍu2kϑ1LJuLzj|/Eo33n?,Sg/vȿS$Apk3,/LM>xe<$}4e_@\lBYÂԴ:84< oxw yU >#agSRdI5G\:oܗEq5g 7V]sVXRWvϟf_“^SX| y>2|8E:hztc?I$d@ (lPLOϢMժUU5ל"S6!h,ݤYH-p at_ʼ^q՝xmg,?&sss?㧟~!f+ %>l (f I6 [СCDտ ^@&??am@@~+..>=re˖c'ODd?OørtOlNt_b`q?ybZ' oqܺu뒕 TKܦ(>(w׍!BQ& S)Ds*xۻ(0<]@jXT Z탑4<&mi)1`iӤOŘĄ_ZBRLbB!`Rr].]. vX0 vhe33gv/* syO9a{>cII[b^MTw_ܮήji,!`x yĀ?rZ骪lJ$X\\cJTZZF.|eϞ=rYgjaU!!))ypXkdU~ک.֭!!k"?fCp>UTTH2H&:-C g! 0i"`Njd_QbK0mS)qe!0]]SӃ0YI~ll gFFF`h"yjW9?]HSھ}:{k~ƒTV|Vb.==zF|yfFENN~mTN6zW޽i=6%))ntBɕ+udf\åKe'TWzwgdJK#5"{lFճ.Gߦ#6uֲV5{ nC ޱcT<_ Pd BQ/777m]~(#Ʀ<f{X ^wz#rۗf~v鸞 tydYG444[,g;ټXS;u[ݻ^Ǯ7* ::q:ζ&'G;x<H9X\ZX o/:@ c:$_d1;rbG̵ -sN%.1s6T Z@ʛBg tŞwgǀӧpa~+UȕfWw֮+nǤ䒖Fn+P(w\#f3p:"em4 o/~۽,Xe Ϯ!QhG tOrohh׌m1M&677޼yR%ܹDQVWW= %&&bB!VRVVv-xnщ?vMnG e"GPS7JOOաA!sx<^[$[ZZ*ȩܐcJPY f(&>K? !-~hAC@ ZЂ? !-~hAC@ ZЂylv+PIENDB`PKs#L content.xmlێX(cPUI!RDFfVMFT9(0-&z~0p ؀a O/̧x&7/HH*S$euuak-Bo/4݉~MsxW?ө5f/&x`NNkx[ \0E0~.#zszY:`_㻱o3|1 @U?y?ͩ P_,Jm9_~cr٥>.iqrd|lzK.X`].Y-4f`NƈЌ禗7v&3Q]|͙ /Cw.xs1P=k{m{uå@iFݽW~gS^o|}l" h~ o4i%OݎlaF/[_nZNaN{[^fai^OT:&Wa9K } .7^RN%]/ KYwFi.|3||bFߛ"j̡4tH)愍m8 q/nӻ}Zܻp[ ~J<A3צϟ^n#n$-D7/v8_?[f ̥!"5 As81 w<' `W6ٶV3ڟgXr,|˜S#2K܅ ӳwXeZ9q='B;Z`[tqK@ u(eUGd9xy\b!z;s؎%{@[yD1Bn;U >©ߙs͂ZW,{ضuJ\7iP&Cvʹ!53//^~&hB[ѵŴ**o[I:s-ͱkNbIbzKhf +ԗ/ѦJoJ_i54vƠ]|2N~R9u_ܛ/3-K\xwKsV34pҴ4'r4ߵwmg:L9pyw}(kޔTa-p"xocnJgM&6;j%܂Hyyxxx{V$sG^An,DCj>|jރyςGƜ>95mA4vwԁ]^KD]ֲ&ˎѰgD# 5@N®o: ׫U*Q[q5@xܞn_ŭu_[C7¦h>iVnrf;F/C?l\iodGŗZ]NGxreJԎ[`LVU\U0%6^_j-ʹoSVڄR9q Og\u 36,X:KvSKη):ڄR׍GLb llN$ Zq3iz 6 -$bslbvK 4#9huNJ۴i:WZ~Z5z+}uF8^!`n^ YZoƕ^t Q|kt%ࡉe/[5%seq2ٲoo-x{[_"[?v|j7f;fz}O>/̕+sҕZ/ }Yj;5h9޵> 1V:Ȱ9l@@sG]DD{#=c׍><Tqwq=Xx-q.k9 Rr׃p^9; ޅbv/daQe5O`Wٙ0@IbJH*Q Ax@5[eK|iW^92h"ef4@I1;{edzu`at lbqp~u\o&{̣ڭx!T 0,v8cL?AᠻϾ9V::VlOt j02ܷh4 :a{J%(\Y?mCQAt{Ca(ڬoIⅎr4up\D]iUzO{i#E;*XNU,aQ0G<58#=j/֣r#7G m=jPCowTkOq^q'!-hO+?YnWƱHVqM*Bc(U֠;\?.Cp5n,;ۅ~nE߷Hs)^^jeV>CQR{ 3rѨ[\6"U6Wap2RnP/׽^lӿQ'^^ɨ~8@U%pa ;o`P\"~7ܸh/./)QruwW%j`t#w-_"XUYpcm\?"<  hOA;gm}w۶{ߥKB?}:~FI U > 0 ߜݯ~HbP5v~F4F-X!Em|ۂ2?<P?̙g.G&b`6$ ffՂ>5}#*\S ,gf~3ڿs&n Lz҅wwY+w|grY,1ޝ2.];DoA-Yx.6*^( RVO;(li·;[<ܚxvHVɿzi~1syvLwd ĻZ'o3@7b4nb3R0)юXLGD;a5H^8=kOH0^vg݅MW%OC/8#,xBHf3lnAu΁U h nꬫ{qRʁp-dz[4XaAA H=;qwU=Ƶ[ؠQd<ǐzCp gAu!w4!dۉN׳;2+e&sk]-r2'}#;#`H kPc2=ugNVJT. 7zY¹g"@\"oFU]߽Y @bȑSa6ntϬإP{@JJ_˫>Q ݵe_zin0F 7p'xZŒɦbdr$ aEp5%;*:n']^:#njU/Dv+-. 7NP nHKHBI\^ kNƷ|xym6c0IȒ˲`ԎR /K DGؘ3k. ,Ft_ND |ǞI?fT v2TT/ |$USvGW]N}r(Ľ;Y~wzDRY3aʹݧn䵋76mf`k 3W7ܿXMw7{үkgmyڙg޿ڙg> ny2oyro}nYFd|{t@o2n}s뛅耬[,5F7!rctH=v!͒kt@al\z,Frw8(qzݥy\T&{j6lc.a^Sn-V;O|-{ʙ0tL=U-(O!K) yi+r{7,K'-K捓NKIB=snδ3}leoskb[?X]Sl\`]$ƢѕIuƮ.ҵbX/.ݬHK< U"KbzJx6ݴT \FgQ_̾热VVW+0mk\KrO~=*y*P! b3tB=͵*vB;qb#*~:Eۡ 38JΩ|x=WҟNf 'ҘNnin'?U8!Onfavml>t Zm3;O#=c&M3Xp1'w\,8ܛ:v<{r]-̻ۦv{I' >IwkEnz-fʘIb|Z-*)O;W`{N~w 3Kj=<:M,ag;~byK<{IKW9@hLWcjt|vv; ճ b-Ջﵘ&0-Ѓլy+E +YYgF5f7 K/i `*S/T(y+rd䄽_!i <Ʀ8䮋Shs׳~>k/$G.Ʉڭvo$?ݻ‹'O!3%Thk[-|y>ʯW|&<G%6Tn=t?^L`)"E?w|dfմP0awϋ@1)M?at}- %Oi[92z/ϒ3gp:)| tzϩ,;:,XS^ xl\ aORIzГ;3>/2QcD?j`/{&UNBq|jYg*b6ܷez^-1rZz*k*bHC%_ivtn9 V1x0zMB<{tg/^_g$}rHUG;K"]&,XwjƳe~ +!#t Ds*ޗز~oۃ5] Sc{XyC m♏/rLgI߉߰ʯg&fc{>6 cʔmkZOe8E`zh-x$?0EKaOp;3Tdbى!65&G!K6%0=hRUs'KH5WwpuCi@jwr=Ʋԅv`Z("Uj9'[ Iޣh=%{tuK]; {gZ\5,5"KѾFJq Hw^w?Wa 隄5ì]2y=qtS{,+,0@7UYX(pZ.s;:<7-];lC4tj}8łҴ9ezf|68ּgHH?ӣ ^iiWlTbGr[u Y?{Ui_=u˃JlLuᬵ:m]8[ gՅYn.u=ׅY*-jjjj٪=jjjj٪o*T񀻁x:x\~]jyky+ZuZuZ=kTwr}7_w|}7_wvNCrLP wq5s M"ƦmlҼP&e80M]^[)Gx0}< :3=QOeWs:类9A>DR(|y^PǕ'{Ϙs'3_F#1y{\/2d]FAybWq_rά@1(iҝN1{awa֘?ă{w?;[Ӡ4g0/b52ͩiB<\.\q"@$u8 ~֏|Q_S]f/g y䠡[6՝yo9Q{3-gv f+E^c]'2%zFT_z ULɕxzi Op3\/4a+\[o.<3oG49yMoN+VL}~%r3k6' z}oöW?-=6Ɓ%Ӭq ̚>+8-O &BN/?}E93m޶;%Db-HGӃ0*?ĥ<r1ZC|o`Os'͆C ,&|p sN09тøgӕM׷w?Ngϟ?f0Y FZ0,3 盟o߽3ۻoo7?kڧwoo~ywYOo_[ƶJ0l0` T'|` cfi6s ?hTsܠ=z`[nDZb\{d| 3jh^'=Xh?yޓ*5/젛~?}j}uM/~ps#0+I ^1f`mKt^W''CkgfNƩ8e n)1:wss02v֪sg~1'0yKpٓ0},;h]\&GP1JFڦ'/t gӁgNK!{4dc'G̋@=zlyB#%NXD(!a ӡ=eR2v[ޯZҳp8^FW"\/# brd7Fq̍ ϹD޽Lxm+-0qbv-Mצ-<GȰ6 nA\5"m-fƲc% )]`opȟ͉r轛W@֜q gsa[w[[ @?[q>/O P4+$&c{Rx,TΣWh,:Qe&Hz5 [%)kyZi ή7:-+ 8ϻkFv*;c{RET[n)> y  ddmITiz[I }byn8SS#vnsUYY\7ç;Xj1#Ћx~CbVQy5p>ƽ>ke ICϫ=WZ.].Ylypa0| Sra:Ps ).A{o/M?FlݢO9#?eLq*H[;`DhkO,vgy7! <GXdrX*#1/:ꄝ-%o%%{lcpJ淤k)6\A"nT$P|@|~IRz ÑQWK^@C[F/ H-&^@^}l[/{/䧴yƂ'Tt>]>Ob^47!cscZ "C.\dda8Qc}HHȠM8 Taf"wuuvN "˚T4bCGDb4d5?ti?-=V޺KHY tX%i~$aqs9sH!qn4C5W]M229kVyLM@>8Ⱥ K_I<|Y=cWQ LΉ-*Km@ƠG0OѹdK-}D8!j8,>: ͥF)=?=^`,ւLt-6J0t7XAcQ.KMIhB5PET%VHAIu1|ӆV -҅FkZvBfw7 O% w10Fzf-x5ɌRЋct{oݸ oFAzlUGYC 5=Nq7+NJ%Ɇ`}aT+iK˒ Lȗn9d_$'~aMx]~w0j`nw᰻Yل=W` wqGY"e ،'LhCĔX]S-" qBh|Mվŕ6W\\KN&$,rVILl&ᇂ6`*k>r!  je6E͸۴M #%85],!d4 #DhGׯ۟>u/o_}j=s=+/jTN4k-Lyj,[ᒨ`](T"s.%s| ނz(tP!bØKJ[‘,XkڜSR<gcK1Xڀts9tIh>> j+y-m@zJر)J=iő  Up)R2o`p^1,KhuxixK3Š?b!'t@\ b21yLД*]0l5:r kLdmngNS1Ffs$KXOeEKZVm<aXc&iTI 8t8pz FK즻J[5V-pR 0W܀ʘ H܇MJ`e`rĽ 0<ёu7Ĭ, )dp x--Yi;Muq'g5]!җ|-5}pqq.)vr" aqBd&rD_b>"l'=汣'F;B?",x:7y'./G`\`%_`.y2L18!U,'o&0Mwwho>Q-fzæ)g[qJ~|lzy4$=X(8_K܌X ^m݄s4TÁkHwM AJ@);,B튬D0 0\ڍ3Ww^޾j, ߛc-RfEQIHx -HIp,R22d4lf@aurM5cE GY B; jcuxn/ 7j[Xxu&fsf wdnI1m(o`A*SH \1uaQC*F|o?/Fl+uER]0_K':ڻԢ œ%e-J8GBw0Bbl9mKs}a~aBjK չ$P(3=OFv^.qb8En>aЍ)ؠbji>W苼㋫n~6 Ӝ͓5#8y )3$Gz$d$@EY7ph\\@" Cᖪ<4PP:ʠ̙f,Eq8,Q܄#O @`söRٚ}v/Z>qmnH 4tQAȔ۷R^-n,LTP}%~9||;5Fŋ#a tBԝW3MTI[9 fLr{t j=fr1Жqp'd@ߠ&_΃`鿸Te[@-x9eh2}#WT_G_ï.AyAI`:]m/wNTLE`TJ`>ҍA-TD _>2ٸ@<0سg&B쇮p72t"bƂ0< @OI`"DBN?aS>`s1;eSR'/L *^5.r1K ȐDV>,6ΤlmPHUTPܼg$ G{^?=c Of/\1UfɍnR|Q[4dv\ڢn7Y0cy{…j7zI L~ w0|dP˛"̚ .,`03!w? K);2–øAOܶ4oW'3c_Uךh.[jvQ/lW,xjW4,ॗedx;:KZcbYgp2YFx|wxA%5WVʖ]!᫛Ldc,Li1YnEMdZr k!n8Cѡ&bjk \Ooh4x-:Հ77O/wXIJ]U(,]C+KG;OUV+yc.C@'h.()?)[9 fkIO*%?6,Sf-tU<ZXAo`UNB3 m9hyQh'pcÀe+ 5kNun &#[tHԖ,ʰt7P5q^+4bSWKI@4Z"_L+pZDLQx%D0y;L&<ۿo4EQpGovIqSDd˰= @ 9C,?lҌlE1BpjA°:َ ̢iFx²!ٌ+'`S]|{ M۵Bm]Y6ŠPsej LAbfxd|4Ivy4~V>T e~ϡ1ZQ_PL b`uVX!m}=f`n+fXeKJz㠓0N 1|9adf%q*mA"0K苺a>Mj"Տ]OFkgyQv7ʨ)H=:^jQSɨZ ݸV+lr]&Z闷 l3>ULpب,<, A!cF P_>I/C[92'}WV^8 d ( ⩰|#wуhqZ\q †)M;qMEKH/00nQ֪&r:? LUD &r`-W@d[ 2 G4\\/Jߧ, Zh:ZXXQh߇ERN 0lMI:MlQ !/~+ɕNThQ{˳v,8cOB]S55CT؜;))cu8( i%RER9%a]a"W KQBS-w /,C/5P(%>HP=/8*.=[m L&۷HC@iZ EzX{4o~oh׭ֿ4cSo@K'>% 9Zf(hrͤNN@3rET$RDFEwz8kJ TV4@猜ZTr6Ei$OW a>Gҟ$aqzzNМ('1_K{~T^ = S:Aڊ")+BIzoPh/A:|`ZPw|ײKBĥI!rQ% $-*zfy/^w%4 UYm[(EH;NYaa}y+%&xb/C@Mgpjs~ O(5<]'ȕp9BsB+YXoBĨ*4!^4Bdz+%YC}@-)J"hcD_srcW%BФ 0N~1.y c y]RyN&}rhVQiL }û zDĢ[0N|='9!W,c ) >h ﮅbvIj"GX '(qbyC`Sh! R?ck:o ل?f(&"M~r38fQK)kR8wwN*\4`ܰCRp-ggN&\DDR;!S+1KIRoMy>~BĽS8 A.aPL"DҤGX4A20#$}é.yeY)*Nt5_(e&)wGĆktQ{Th,+pso3Ƀ˯>>F[7X t`-)#qJT IOHq%Q0,og\aSi5wiw5 j$޶ޏk0F: Wѕ-Wn;9}47sh;1QR\X,ekM4dQEMn=!@"Ylk"BҢ˫Ҝ8’T~QTA[&.d^Kh.v Q&u p] :oMBfbs,B wԽ)s ͦd̨ŀX~)NG O)x`OFůcO)jNbhYF-;į+AH>߬lr.0Bs8 Goe'-qg>)!0Tr.D *e#3QoϋI=ع6I>tABjy:kMэ;j qdZlԦxQ4N(@T`a3>@QϏh&:woU1X0g QصW gkZu/^&>ibÔmXk [B#(pTY`/b˅00#[ˁ$\O('҃k jB0,"N%T`PFr9nۢxWMαd^lQρof;a \=j>/'b*`]HOeB!T=J]0{OOCOuɛ 4фcCԫ=t:n!){R-ɵ51K@[&`uݖ]dBCpñF{Vz.Ouwy<[RtzQSdgQn%6:r0{3h|9zRRIHԎۀ@U,/$}tC Q 1ʼn*Vw0T+|*f04)Vd4YyQ>M`'ñH SB0JHL[o=+~(Y/5ϽKtSԣzgRNt2X!Fmދ'5btO%IN #4ԉl5vk2:Frj~<Dp*R;x8-@wD( eB/E j6B^S[*caxXv`*-1̪xHl7xY<3Z^XZA:tmmҢW 1A#LÚ6CF\gŇH,fI Eur@9ЉN!gy'`}Gx4br%Q!E =0äA'5mNVhMCUvb(0|f6c׻ldbÔ\J.j,*W+}.iU]u0 ӦOS0@A|`󇀗],Cqy?Ju y4`oF+t<~݆C6EUWdĮI|#d {uQPwizGDOdQ9|Q]1:黧YFkI](>U)'처~]Q F8KCToY/ҬD{.W)'eN,,aJ{/ )X#ňzKg)F{>KD>KC2%0 ba ,{FH$+NTk9X~lT:xɡ.Iƪ%8dc+k"\`Q5L;;zf^'oigwmȓ")Aqdx4L:Vg8quzáw7z6N:*s7J{"Z\=TCިGΒHkB3 o@U_$I j91uq3 @Փ"VIYdmSQŧw)EzC.ɡd (ɭѕآU-j2t'~##~*Z-l¸iet^rTK ]1 w5SYNI{Z.#XIQűcZ{bua#&foo kF=2[o [7Q!B$D[ӆ[H嵞EZW #G+n0<.ydeTʟ;\#wF!@6p-zS8L#6ungQrYޱuS*w6T.3b=kGcBWǎ/SW? hUH<V<.z/y $?r9#f3ō$C(`zƖ:;&Ef6Xɗ42GҌjn$&Nw$ƻ/+;]qR W(o,&7HHb~)2t~F%K_D{'بjE\7_!L+Qwoca~k]S*l4O-g]πG7\T#WlP19EGeR-)/Ԅ#bG8M?I'MdmNK̘6pMߖQ.^hՄ+ ocF"eet0N`zmBdM+W* ωJ hc3e[4k8DrM._0!^Lc^nk7>W,W8o:@ot"{;Gu|sQM"L"v1LL\iWiN`zfh%Knb= 7|޾ǣs[xDpUuF)J->r=StG9 5ۭog݄6nedH_^vGN5V4;z)'S+ &`&j{0_$m.% ^xUю3Yڼ&TPm^v@us=qC#`c,R*iĕۓz_w7dS h֟dr:j0Wv< ϗݺ3 {QK &f U[X>2Ya3ɧ0NcCf,| b8SLE5f& L>mi?S鏲1+uvX.JSp0qG0HD 0)`38^d D^=ÛS"Y ue վVl(N/#aذ,Lm3n7AUM)?ZOKEX2cOfO b%7@[1d(^,2*Я50K*4?]8(|U~cO(BC".l3ſ~_7n{8Ao(=:ޅ&7~D?5j~siZ|kEuO%W §{*1a_vQh jGr75uWkN Kg.L ;87-sQEqx6R,C^lFyE;d1M(-mi$rtRepU&D#(GnA QJNagC2"(YI&b(d?»DAŒ Ql'. aD>GN!б{&9J~DW8QֱyA(I <#gzB1_Eێ"F" >q"dĽc'FQ'ŒnesHQh>d=+YIN-ʎعwlBKO"[WCwxT;!POe m,l^"ʺ YMwڼ(>W\u\&|BlS.+ړ ߎD-HTQe'LӮ)5"}CV%}M(]Ȥ:->m`ewWc*Y,Û2vJdZ&iw pvl+ekwts_ӌqB)̇ᛐv2|5\哴l뵨EӅɓca8t'O&C䠜'Q]bRMcq33`-M%W#w}&dq"/F 'j%\pCxD{kIdCkL;R4~p g+kESij0g0#κdl$_)Yo17)'"?T6hA p)$D})ټT/ײކ}R|P32Y="K!@T8٨>"'_-}\jA++:6PQdI"wm؁tX<C y<YlH[|3Ɣ”s*>7(7샲A*fS綛,v {)hb !0 Sf %=1ob 3eM=[C6vO=s0{MErƎ+GWߙemU%o>2e^|3KY7T }]EH /g ~W#~ŻD:pl= #d&r;`iTy1H80@9H۸MMu`0 :~~O?W#[`*mu|`2U#not> pEm*jHϫ <`L l *9b_*U9B.ݻKU`]|l /y7b};3< lKUk kGt(5}8EP)G%*p=p( ?N/gǪ;ɠTOZ(@`:CU6>xתR@JD\=(*SUMEF a@ss yS?ylz>wU=jk&K`WUL`^R`l K7 M!țY$)$)$9Llg Y^EFKAѲ`I*79V":6 K oetEv=4:0ـ_*˖$& 弤t=?l4s_e$@~L3( k]+*c Dz@9qT ;E5ƨ\mlveX:/9׫{ҵn¤>a3Ѝ|sFGzGunbՄ!:f7wq}3c|tpX_UTۇ9XnN m9D4(_dK뿮Ə:H5!C|7t~8EJz./, Le\ޢˋ!$G Wְ -~T9\O7/%\XJF2(`=iiq~]ԍV|i1 Hd=P?5YF7ɵT3_z/`w,UrKZeҤF%dkEL{fpc*YPb5oy1CAt3Ek/♬׬f=޼N^b|0*&܂haZ5*u&aE 5Bi$qG8T,8dEr)t Y˹27+KNƂͱm>Vtk3p%3*o"M8FvFu\ 4$6- JZ T*IPMۂՊbT sIXt hK3-XXW!'N{@<?GOw?kw`cJ„:&ou~>_uv?޴&̙KO&UW@C7Hg>,CJ w%q{ZSM aPԄ!W0S}dR[stj~8$̟ڸLa'nҌ>oqEZ:BK&< Yٌa變s#MaNQk1,z` v?wڃ!9P0x3|$4(,iXlx&scR9Z7V_Z55Hk/L*̢TMCcytxc\hX k qae\.\Z[F$,"Ags8҃ 1]ydu=h$_۩`@a2_l'auQz߁۝,[L8Ir1.+}F9[j,4&'u| P_Y6 PגvCdC"]a!0PEb'wϭbQW"hšlO _OrH}ӕ-Қ`?op$ߨm]ܦ  :}`#}0GzA-jm)SXi^ oao4دGC0˜ ׸C2} ErnĚZcqՃ[ K #|F6. ۀw^kP|c*ؖ4 8rz,D[xuyfڦx_7ChևUat"M ILŒ{(6]3qnmhM\Q;Dk8NaOn쑞 _"<0B-\^$_\6#`kt:W~ʸtoW: #iaDlقE>ڢoN 4} a!mpS;]\I^lB jilv] '/CQz_{жԻW!vG[9M V]|{s B 2ZHʶxؚsj65y}?37IQyB\>m4vea~qyO&" Rfalˡ ߊҤIR6@}mwC,g}W dopzl[^2ߚp؅r!CS*Zc8U%Q]H$pMM^'OQ6iNd!xO-D1B1B,wW(ߐS8N,#6~ƷFK} 2fE1f 0- {Rppt^Fa %+KlR?`^ԱԱ^Ա^Ա^n~~?e4]v%͉&%78lĵcܞJ9mx&INN-6m X+5mƢ݆I=0Z֠y.hkb[|\Vj=\'Ҋny[3؜~L HB˴K:dކ*='lfI,|z_W^? r6 Q2~:22n@旊HѪFu`/5*{Xڃh =O$l;xz>5֌* ]zRCIӽ\b5_yX* y&@MU[ļ$C) 3?[! dWp,wSBVČܵ/m_/1b!z^v0oEuac[DʝZyNMl54n4GN⠩,j鉨&s$`F8/OOK5~آ}^FMHa*52j?CW[5m+wZFMgFxiX{ٞ2jz>3zPb;҈xX_I?)d|fd]bVvnM{ՠitU56\߯O^t|zZ<ً͊Zɮ1Մ|fv Ӯ!ׁ_Fx5H/c:Gb'lOnw6ևEkq/ Q2|Q2|QNsj)c }qnhIa"Ł4Lu)bw,w+*w *wK*w)`zc&J&j1>zV}~9!]>@,S0vO\.P~$"7J:{Ua,ߺbDVyΓj=?+gnEԭIaٯètt||+1&gA8UYGM[~_R>ޖݻl^V4s@z]]9d 蚌 񻚌+H:j.nk⮆x' v;~2}_{Rn=yMG WkZhk߿ɿJ53Ю?^VƂIyz:| F/KbX-T l/\}|AO^h>̙i?^Wݖ.)KwB)&Ui&O3G̱At<.{أӿ @S HwؖÚr0sװ={̚  ԍlfN Ϙ3YXm4Ai} t,5=-m ^vfmL[2Od#ik{R6a q Ot}C֮Z=g>5=-x0٭ז&p/oKU%/EnWr?îv$l=±}q >5W6f։ ⿡17Eaف4řxr= ByJud ($q sDe{[ >& 9lR  /- 3p {[޻1]9"]間P!\hY6S;@ef-qV>}ͧ3wbȽY!r/r PGlzY?){>zO29({ɀ4ǹesYI9L[PyK6@"&z&(x/>.f ?/˃c0qPO b`_Gh! 1 ڔ}R@ FƠz\?D_B8*BbLAڐO_[cYfE?K0&kik5B*gbM1GZLҽ-?oMȲ4ѭxˬ$+cCYiz"##9'%Ű#Pg xȕwɨȴLI=NvֻS\czz›L+z[KH7hI< ط,|Em  .n:*?8~|WNjИ ¦1J}^R%L%Cp L u* VsM[6愯i-ڀPkuhGs4ܼMƠE wp 0iWN[EBWbœEw6YFKpsfZ9d#,;{ |9p=ކ^1~uG,#n zK^@o>? FhnF-ܶ9p-4K_8pO7m\AMRf?pjk<9<)8v872p$`%Մ *Zݝ.ÅhGX&~6i(ۄ}mI(͸- `zE'F/#Kbb7 γYD{$OO^gT-V,s/v"#-O+d#j丬bke⣞J;ְQK|!KNo^iFͫu;n>̆w_^n\uprm 'v/ZV!pvꃻ`F.~Hˇݖ*HGnri*ۃ*i$PkzQߡ{#m+V?U$ -rʂ9ς[StcxKn[θ}\7/Q dŸ_SCE))SlXY<"I Feb):}2ė]bv[P`Pͮ៚[v Sr U8+7gs2cD2h9ŋ~OvXZZ2p^9 }!Ϡܠ$#cxaM5wocJ@qNO4c_oG ~AP .7K,~iC"EԷ\4mB4G›YLV-cԻ COzZ,Xy$c.9Pԭ- ^.` QQҶ džHϳl7jXGnfyz#zն+(S9lZ9<0EZ *;pvktMn-u C+_sy%z+0tN/goHΎUr)vÈI*#zQMt~/h7aKV,!KvLIv8{µׄp2: W(r6qb($_{-?'86NɉBg djIH i8|q4xwFSxkT;=EIPʓY6xhGD4.:u`ufxP9}yO(ş5̊˷tOlxk7|{,JTJŒߍ=RȤ$g9P7ATTb|-h3D{yW셉¦[y̻(Нmz~j7p@6O%п2/Sl@O0t||8rG|ET!`jviH ךoz!N>,=mW$F76߷5Ō?\C ƙ`0IQd$z⫬U<8l _q̿Ƽ)I i  BbA:kY1|D!j&فS"+g^t0aq#Z^M@9@ gv?enfu4)l6^2MvDw§Ϲ'b۹=2+oJngM8z>tGn J0}_r]gT}?d!l7/\3 [ 3OL)5Rs#^{ pJk&3x5P$%\ثLP?~#PvT BRMʻ |Dk:IBjoe 4FqAƹC*X{8f9'Jf- &lBJVaQɠ+0aTTݲHGI]NY^49[Ŷ>wZ=%n@O! 7ū:axUep`|nըn;sd: =v[*oEKJ5>j!.&AceFnQ~1QoVƉe '^fTje(9e*,s U<:T?RG+ʆ6] ysN#|u<_ӦT*kr(XVrJ_ Xv4? =̜9@ߪuEh7h 퀲z=mig+0~Xg{_'[|wϢ)כ0yчw@@H;=5 1kD,ߨiwzpL ;J[`{{)!8(WN 4k&<==Y̼{ %9u]|\L}\ +89'G?:!J=, .r )t]Y!sLr>Ja;bW"7t6V}T~ HMk^v\)ɃsY$5+s{2IUtbΞdI)bS;Ũ.Wh/>p35@AH;24gK..s_ǯ-mBh>(ҟg>&r)VɕQ /C->c΅ch6oVoS:^p0!g˷+I&_PtsŇhNoNSdq_cEw?^ucw|BMZ}ڕߋd{w a_;O -M f`3rSٯ4 R)=HvZbD\{a@P*'j>w?9>DFW)},q=";˶p@B{%k8M]ʉkSEJjfpIԐtF w>^nKǤjK;F gNU85P۠2e  [gre1>CfζKכ=Y8*:,3ǾwXT]55mN)<{_%D*o}U¶uʹgEv\WO:2Y}e:e[I o43~6jѻ0]}owVa|V'wqM5)K{S^„aitEKR6HL'-"#D: kP8$#,G 9f%?uaь<  X`>x*V/\2yu8ɮs˃Q*7Pe|UF@r U6Bd3|Ov=w`ϔV 3b\GmQ|Ͱض3*؛4#ՄPE>7R~}E l!6^%lD!e,̜7IvXi.$=j ?AsZNID+p\%Ҡ9z+^ʔī=xx :EE/=A1myY&+0pGxu}S ?U;R%JxjfANuNK M dy]Qe`4A@tR(m۽v^]wxg{)r-]2t5LbiYG~i( =ƆvTMRC ի/9w@$8{S$8h[²t84&TO/5Z's OGŗ=yI7 ;- _0Bn0DkL+sNn@2E2"2\ur'[dWՐ[#,CJ` ZP:;|c Y"bzM"m^PF"ۮʒNnRy2ltn yW'?3u:nF˓I(OI0EE-QCiE6ɾ ;\(Ƀ!/Ҩ4(dʋЫvv4sj3@>_ 8A-zM5:;y~ |Y7}e/X.4, ~)u7Azd'kbí}tq_+*(;͙Xr4,-j+_ )&&zGы76rZ~"`PC,u7m[ 5[JWtVU|[3Jz>QWo9{< *֣n"; w/4, 6#(:z7PpV| +uA%䦴d%ipfmՠf*we+O"?br鯨|O|uvҔ`Ȏ&=o:a핺:%e$Dz k___vu=)2ǴV)SΔ4aVum)hZċf1r3o*2yFy0nMޡ~8xDNxj< sZSTs}>}<>;8y)JF !9{ wl0"XD$>x(_=hOW8]Ǎ2z/;4o)ssgsiaa&1 Zo*?Uq=W[lLz,LB:m} OwȜta!9iVx4CaEb*5wyw\ч0f~p:j_EfݖI|| lD5t;@%j:zb[?O\s1P<XN("tYòWYED1: :jlJR(]Ηiq%wSk`;h ҭlEMW耘(y.A %oC!%msx_*p'J>4-WbA17LPrM&[ c3S;ZZ")`Y!*_ݳ09B6<&REL#S=o y+vQj86 agiK 7 !$&6Vd+ճ 6YgimW  qϻqe7D$A2ZB?Z>*g+x4£BCuT`P `,4ǖ/DΧFq$&s %TSF?y(!崡4RQ'*:iI.'2x|o )w?f( 苓,(X@ps, X`5m\p6cElXA{C|c l>2je2j{ fásހ鳞FLHh/pIݴozqI6E/5)S2*r}"@ӑe+er7 Oè_;R8$Zêrj,bjy8!{ea p`;t>]c6Nk.J%I4 Ԥ)װVrL&O T@-KwgP#),D×?e.X!\C]+UQY(Atd`bS >e#ӶU b|$sJ4F9O+/( e0H,SGM#e o @e# +JWM&%tQ-.Mj|*BZHuIf`7(uU}jvŹj#rJf^CA}BJý!*Ŝ K2K7ַ'(튻#jsVEa0G=_`kZآoPaOtU*@pSO:N#.~rd?]tam)qha)FGBpP' FB!#~4樤zd8VfVmg9s 2ǜ/&6S`' ,xTlMUbı>Ge CP"L8KE, rWh-f%V.8 a?T!ޣ,`7DzI~&ۼRK`J(SU=iƯWZ*Rm͜P9ƞ/n DŲ३H>I5P>a$i*Rg%u\%$"C:Nw_B@/FUI̸']+'Я`%G0̜.@o,F !^ѵ1%S]N"F, p 1ffdDqjt^IŃ2 4?6nP;  (|^sܝ.]a2c_<\Oux"rC`p+AlUi`?fЅ.[fg&&P2_Z#[e@+G] /?[862gl7zLalv}>n۟l D\ȿAGP,UC{&}z pXc5QnayKR'+*g^Ku__!OIsy&M1{v 4HcyZ ?3whj_!M[)WjJ{WEjǐG#6~SݿF|6'P[~KpQhBK_XW^ً@S{}1uR'jyPx`>_}r֣x?Z3B}S0cQP9Sj'BKѪQlsԻ'Of"k;lQRE`JʆHjLuO`z{rwrjS']P(W[Ĩ\"b7}nqw;=ݍw{V_.`=~P[a|mo6F)d/FTe{HzZWGV&1(DRTq;I:,efo/9nt6jns->Zmj|TqŘ GG(f`8 ǰUр |R9w8/H ff}#US$U(~LUhA8xտ,Qi\-4 hg"f,5 Q'.I/-嫺xb(M3G9w3AнC)58Æ=j :FD6' 5Bz'f%ciO^r$P1{8UOt**o'D􈽛t8pcUHtɲwtiC+JQ qX6H齦:yF r 굫YzFFV0[ A$3QO 1ȷ֒zGhu!HUʄ@eٕ Bm]ܤ'7{ړDck?@T헣x٭fbxQf#'~-}ڐS*P%gCR{#Wb_1Qi b$5Rڵ€a~?=eYdHՔ$2,N ib( )"3jqJDU iY V?\B/ ҴZTvX(idk.H^{^MlVk+(0o`Î$>w"4[~L:@uv\Ј ]?}*Uoq}iVG+FZe=rŐI8< 9+4^)_!,b1Y[8dXaDS.㐴nQZX,@I!k&|&y$D#VV1\+7Ы"!wC$=+I|ܐ^NU>0αqy=Fw'@F&b Ao]=Sp ݛ5l$A4K OVKٗ2TOc[YǼ%drߏ |e%)L(~xVhaVJUFD*zQTֈl:;Okr{_d"' $f0H(|t.rsyV*3o7Ccv7jFN4 կ75W^%6{s\X6 o#9& NI1D{,Z"Ҷ+kx_Di-Z8K-KΉꋳsY7i[$8Fd"j7aB!MTY(Ft+/:8!BGEie(%*-ȏol_zUۂA@Xfב|LsF4[j02^PG`hKB+bo)V-IG]Ks16&]kUohEU^C O2a?I3&VSQptÈn5rkbf+)koth7{=a:CUENnit-@=SUݮO/G"-A_)_ؙޕ[qMا}~RaXgnWe$1cR4-RYIN#j_p OiϤO%S^< u*E*o܆VĂ={ڮ9j3+&EM/'=l95"4_L  E*˅jKk &y"Kِ(1aErPiZ.i ?q#z!$)TZ?YjM%i*[)5F %@̋'q<ȩE84p"/,yÚ5>*>;évT_:,YŨ4 D_ **Fn=弮x =׌~y@l-JvPri ̥`^t;.{I7 t*h-z fQ̢;ѭBU_35l$G/ 3nEӔW/ r3is Uzv+OdR_ _#I!!HZS)@2ȧ9`%P#'@5i\ f^3T(LuU򪛒ed{Kʢ)li (~ (,æX/X&:XC )/9C e)`hr|YK6j J[Ixq.Af[(#]TJHT3B"/)L115בsQ]xUZFFu*KԨ(%4U[xIs1-Uwi0y3T@w0[ϴOWk/)5)%?,ru9>**Ewzԕ4JQ]sV' LbIЀ!g`%A57j2pRih ϒ19!'{`0hݎݖ;(_ #7D5`43.y$zi/1*'}˧];#v8J cdž2{6-+>Z`p+6Q׻D&NGGhjXCl9m,2>3iJr,Q+lGc W`/6_v:/`NlLfXQn)=yLF+Fad ȆΡO7!X1*D^4Y$g8)Gr/-%u.MʘYe kF.J b;\ikúpGv{C4}b 7԰$ӻSjtRfF *"T-3!x HB@+w g0/9ݟ,ӒTUspUGq҉ojc9q)֪Mг 2ҨVig2I9<v8*:8y5Lrb-._=?Y7+ǯZvj؊ M<Z17,T )Xޥf}/^nʬAl&SǾGYXK\@;0S8b[$: V9C>.2*ݱrFM'Df> ;;NV]UEIƓ1$Lނb@C/[?<XNhG.:*0YDžĮ2eωJKk 7XyXm@4J!grz'䌹)w'>(1 ?RezJq?F))r1KrSm廠UpNٟo~Q'[BI;{ w&̖$ Ej ?;7GEqcv#܋{i@켅1[0٫fRǣ߽ʎydytevgړwf-o)qŵ>Uyw Gđ= JF=L)me"Z_=EJoV%#ho^;ȗj`u]ҠD^zj,[gճŨ,d[L4="attFV+!1,?/^q8+=H>"MͼX`OdP!r>Vx)*29j{uܘ'% 57 ^4Z0y$g:WFY+ɥ*@R-;aͫx*IpR0ΒBpު/wl^u&ЯI ;%+{s("(|DpMOdIX.oA{TC$ub?W\iXRv!wîuaƃ[+j&gAE)OEY="aP-HyNWȖBT YojXU[B":pn M^6J g#-ahV`?:BG|M5`T(&ӭ8WYE$ VaXe+ÛFVuV)|UKi4=05$%iO\6.5w\@j논WU2[ah`"ed/ItJ~!])IF 6fV MHƋKT ku.HD(kxS;_Z?)1\ E`q,t֩vOkPӥ5%׶[:7/ې&ׅwz{HU@wӕ7HgF2S!yW )()Q|y qt̴ɭ g[/-aV c*0i\׭ޮ"E !8HQb_H+j'ZnNH a9j;%gt.uX3u 3!fհZiVFi5zitjt{9W8Q"RUcoM3߬ ^jŮGuCףKGۗTw]gŵ+ZS=ȝngPPuIVOv'=z Tի dR3hweR>7* f3[(S^"r0j0jޗ/-'רҼPh 29hԍ4(L=hܦr66ƽӧ{>U 4ߥ7wL*&f0VOcA-uϦl_s[)2hd6ܜ~bT^bX^ ս8946{'bUwV?wL7T<`XxD ~ h;HkH,4`EN:zlyk)> X~s%+b75-4;*&"+-|nLoOe*iRXŊ)NVc%-~./L0F4g>" &cD6$;e^41]Qֆ*7U7lTWt\' u=:}Jn53lG Qolvu[#/+*4mqUUpU~gXUѫ+99x;8?}>=5]*J~66}v@EBLA'$ :•tҬeh:AWZ/r XUG#ocAVSrKcv,羓fk"vGx"6l;9) <W|pf *S?:z{_ dUUrT|@mZQ;j;mw*vhka#X)5 &.*QЕ1W/ = 6@ʮcBRҦPb Zu:_ZOf swYQΥlC]AXmM ӽ-Dw˟KV/MY8MV:1hIYU[X2vW$d@9)@&,5) ^hN|"HY8t{Le*]tYvN4=qC#1 8ZaMAaa_•;[ѫ{dXbJrv(D8*!~) -IX&]c;cy]LQaI6g9{;DBp0 _ ;sB\A*I:CzgI~wY4B_9 zIEsA6!؈c # a8Kfsdn6ؚ-t u J cACεzeq|݅."74#[=iH͢]:4Pl NYȍI ɬq.mԙ" Ȋ>'O*0!fHiRf )$w8+mGJbE#$3Yd2e7DYSMXGbt  H!Ȩk1~䜪|_5\dN[rDNJzj]b0'M׃E4s*S=<괜?:<; ލ p>xyFc4ejC-AIRp^CGui&UTgGa:V"SQ*A$v1*=ܾcTÒUTS IuN bHjR%$)IuMZÕ rΠ[#85V N&%nQh3lVAIK Gr.SZgUvH4ȕiR!qE5~*&#f7lf*M?G {#b/PW1>~;I7ԛ fq9M[=4iƦxMIӎdq>tlw5S ?!#`Zl NU{31>AX21dzWRc cP'ȲI;G< }]?*JNَd& .DɌu\lXhRg':) wa2E Z'X@Zii_iߙ=`,izkBQMp.OY2h:gx؋7UQa[RG73~s3,5g:5 2lHEvqƇΌ;$sngy"ތMxc koU|U#Vm{5VmVm6Vm{NJ?|.dը^Uq vTWnݒ{U;uzxx~k?z <ϪRn|*,Xg]%L L8cYrO*$UiI?p ƥSoE< ' mp:b9O1h qȲGEZB.&Gk2"}ز)Tר7+Fv]J.IUADK X鳦r7w5LYIf3.|I3MvujH&'N RVLi[Aio#n0C0=@A7g@dqZ"4d hLٶp3ZP9,)HgR:t[q{>7u_Eˢ\$%DQsYI&r.erq#Se([RjY\)7a,8JM5gΊ3{B׭BjB~DR"t㝜 DF>;nEcBOmXk].ea!Pc1 *[Qa1JNdEeQRc(rDķe-g9d 1}]x(QǞ 00e@mJܰ/PWC *JUeh9_| ^@T0:#|HVS}U] T$PE&VnWHe¹bTL)Q⺕[zDtI`j>tK*h"!^DR-jbzmM9Yۏrr?;5?P|4=`'Mg̘gG4X_gw%fvŰsnJvIy1S+>h% 5 zztKB9w zMJrzNKA՜wOܷH~z;&P3Idը,)4)`h!1S*r~닋`)BSs3]jlPLԊ &oRZwٵN5 cfǰ;캽:70;ZxT&UW bwPWYFBvro83hH> a8QNuJpg#+'71S:keكFXW2}n([zGt ?T{r_/"rul*. 9}E]0"+e.*Y{+rڸF!f QAlm#(M*5*V$謴m{hWoōx5؞busǡ-ƣa-Sae> g?c4k4P`gEϋk5^[;wͭg-YgaAWQ'q&Sٺ{K;q[Ncv"c"BV^2r]ZYwFY%)ˁY?H"rzI7SɳC4_\=4~4UjPHAˉՓarsz PJ!"2e㈉Yo; Mۻw:3&VG RM{r U;_dDbO0b B1!ddXʼn1e;).{|e.e;5b<ߦ"y}|,F{z =›ǓĻG]C#O3{|M){o*:_w5/V>\h+u5)3GynBY8|52GWvaiU `/]:8(Aj-V۪ks {^|իJE۪*5/UU*Ptt;}vz>Nm]gz~ p@wJ7u\Wۮ6U:ΓMl_nVKiV̆#>j&QG@HS?А%$SA3uP‡T[y7A`R1$dAQY6Mܜ% l>9qVTH"j ^%w$74TM 0Ψ'{Ӂbnj-8@"j(U%&7im/_>}37IUWBJVVzd.M;';C疲d, Շd .L4!$SeFIz*y07sft\isF՞ y;~W퐃$I*ua]yRIԦ;imG%rZMWaQ<''֠WX GV5xA Xv:%A@'g EttS<6fr c$q>sEjSADB]yBۇ* GD77gW:rCudQ ̨>6 %U_{5,M7bu4 i'q$UGȩ`/aA©5C"WiF+͐`, w⒰ٽ2 /mk#=Y%Lے U-/P0 Ƨ%v$@ SHGa6'oV>ꪩ$ѠRD9y-C 5YT}hU>riNǥK ź:zA؞MhmݭTUC?B{&&#޲{%p&'U<ޓg(YateCkiWrW3{oI͍`4^_ȖDx[} wZd[E׷мJ}6%/("׿7S wKJtr+p j qwOCc󽣤ML+VSe?W%*D1mrj(zIjtH%o:?E7 &u% R0)qɱ'_"KbfP'O 冦5`?ʪeHR<7@# QJ޹g0fǜ4{v~pgZb/ ZX\{|<|!c.å{w:t{==YuC*JOm-Y<ܛ̖Sz sԸ]8^wneO[Lurg]Sҩ,J/USpګSpRpڵSp%)82*;d8qLQP9*vt*񧋽mN20Ipz3k]dnC=}s\ h?olE % aOC,  LW.'G>bX0^ѝOx0I/ID.M I(j{ OPuQ"?%1D MdIPS\/UsN  ll֥h`:oǂ^\9lv4]VI8wlr阀y .Ӊ&6IE\g*}'Sfs }p{q'ǫ>>f- v%_bc\]{G$8]h@9SX`w˸\jBE%Hl8`OiX#.WZi2ؽ?o"?lP8?/[N}}6Obタ&ĝo''qxNf&P5&]M9 \qhH:^Э3%Yyο(ԟs7਼9( <qJsc OhFr&9?Ϳ[i4Y8‹PKR -PKs#L layout-cache]{heǟs;mggk6=twtXKKt&- ?" eQIӈ+EA$, #ha <϶<^}\=E%DDhD#|XOoH=Se8D^8 qǢb4i|5d8Gѥ$P ѕ'`|Ret$ejψ<@?eDe̞dj,G%n$ mXpDzHFcg}5 rV*ʲU!ō_S5$}_VQ?,5Kb"Slo tmN^֞y"뙌-Gܠ3YWEg!߆]}?<_9f b|.fX>*+>fŋ_E 8(ױ_{ӊTr[S]_:1E1,Iɾ+>O-Jh+&k\N=a^2@E )EP-W<\hKj'e*8DpU݀i'5St~tl z;PتKPD|(ª'dZؗ7뷔5WhDOvd9>>?DE;9ʛzn; .RSgF(/AwX۟a4.6 ;;qZ-r3X!> Ei;řnC{rK !xO#˛K%]^9".Ȝ,>b_ʷE18˯5<2'SjN{ҊS_J.C½ V2ϦZCIՁYYjچxgulG_uʤ{e:]ԋx }@ח1E9*+C=O(a1/']jhhOСCۍ7jkk===dYYYwݽ{vSjE3cؿSb8ysZvӧ3gZYYeee2S0{OO.r1b+J0 p,!{ eSpp8uWOOj???:sNsssO70CPl.rR_ѐ)`pB2Fϟ %Ν;u۷8Ε+WpR4&& 88(Sܰ-Jᨅa8Pc8c8ʅRϟ޽1L&޽{bR0J555|r#f=1 1 cW=]젗z80gSUUؾ}{}}D" yUNtuڵGInpl3G +ap:P(55|=UuSSSh8~8bcc===OnTRuOt "A b1onnoKJJ?v{gccr:z ݶm[WWH$TX,wE8M=&99Y$PTaW7n߾5tAPrssB_SSShS$x bꆇ]]]۷aC{xC~KF1999}~9r873ѡ=*,,4@b^2Ba0 #99999dBV4έ[ZYY^ŋO˖-sqq)// v Z[[z_xm65k <vZRRN&uShl6"4NWTT@׬YxbK.iNf0,;;iii_jL&{Qeeezz[ۻ4??`\QP\zU"FDDڪߋ .ܿСCbEFFZ[[8~ҥl-C[oXPPd2 pHHH^xI8V;h~S23f>^OOÇ}jbb"/^ _,,,t)**ڳgOHHHiiinnnFF֫VU@ACaOOOHH/_֢ch4naa! ]]]a}***X,V[[\.'LKK6RݩBdeeiQ(t-sDFFZ 0118T*ܝN_xQ.]|~pqq!M^RxWMD1!>>>//[,/] ?쳶;w;v?}&$ʘL)&w^:./_>"MsYDJݱcǑ#GܹEHzSҔc Eww cH!a8EޕC;HKKc0Rt޽P4Xcҝ(Ho:)1Zh4vڿ’ ;#?RIe?GVFδXis @WRKD^ߚ58CH$-$Cmnus.~{tf3#ҐMZҎntuSb,3\.D/eJEْ<^Xd;w85~z "A@ b5]FQd(EE:A@ b1D "Wz^;&/ׯXBAbF<6,,x^5c?1yyy\.w&a4ImTx8::niig٪zqF) @zTR8#:mBĜ?[_LfPPPcc#qFeDq/,8E&0Tjss5kduzi,ƍL&Q8<#fn.իWh<÷n(ꬌ8DRPl2WȣWKHC Us4hOzw@c͋-z{{~ט WRˮ&Lf``Y FX|~GGӧ<<>>--(4xazzznnNPvĊ H$ɚ5$5Ã>zf\zuaaT*UMaÆ?pT[A㓛{IgggGGϓ$5⦥%''t*uy#;y󦓓ӨQmI3\YYY\.vߴiǞ?1hKA@ b*1ECmap04}uXIENDB`PKs#L-Pictures/100000000000035200000250485DA745.pngPNG  IHDRRP sRGB pHYs : :"tIME 6,/֌nɺ%m1 ;م@B6&\nIްɇ9"$ 1lo[%ۺc$]U=3ͥ,C>zWG!$D"H$v,D"H$ԩAD"H$BȔ"O"H$tP{9Je_)$D"HNO 8&⧒X?3H$D"̞³S]&e_B_Z!(H$D"U͗(,ReR~$Ӽ%RH$D"y{ycj/,OM/[~.YD"H$o/s֦7'j;JuL) !(BX~õCLr<%Xcy,<ُC\I+t嚿Kab$`XBcy,5|R_SSLzQgs9cPptt* x4[9t*46HaBl:$LOtrOHBCBݦ#I,)>PIQ~--V,_XM6 4mz8j))gdhP yAίD2 c=}yB0z[h̊HnN~pAd񱱱|=2" sk|y-Ǔo-+)=ޙﶏ"y޼ƆxӖ@dԒ79ǫa8ODW_^sWyGM1^y@A)d_\麮:c̲a~.A/J^4/Po3g+y6[^d4zspic~)D]tE}]Wo;3Gqߠ?k/:?p]?mںxl9wg`|[t߲N}O.Z0@ӑ[.]t tM04G[YK´8UΎ?{W?% &OB`YȬgaӵx<8TUU襍n'v.j p8I1g:lxJ&9_s`쇿4gR=fSJޔt>ڞGΞ__방oky셦eB2;ޠ&~{솛Wrɂ>3[.H4BGӖVQ}>}cEQFFF|6nj>PoFkFx'>c=מ2U 228)Q5T|JeH2knXq9]cOm9UxW, G~JnlIƁ۩_kWvSql=1c=~wiʪE^dqm=zbN5|ƳW,(omˡ+(>尪В|yK+Fj=?ھ|I5au8[h?=b#ou]T"ƂƂƒE6wz\6aͱp~ҹ%>}l||;[uFw<[ dh}pxk۹lQ|]}4kt]SJ |Ҋ"v{;oamޖ)^wo~/QɗK)9,1;=6ru+:Gxlk_׿$S dA.6k.8PwbH$iB&3 &[h\c'ml?7L;/xC0,SVfFzk`|K0l}ݽ=>_Mujy V,͍@s˧; j- <ܾ⢂>ೢx鈷=}k\m2-W;UM]Çx/'ix,O=Е'{pwtłiѾҒ"}hCu%Ew\YYCyN+:oL"T=mWWٱk/3j^%RI$t ,EF`0q!L&vl~< Pjɾ1fi;KY@X|UG%IbKqG8On<ZTUgJ){&lVuR=wʇγܴ=zڅB{{甕n>jo1nٓR",tD@,?o uu=wxyg֞Յ.5k { X1!%{88;_v.гɜ6lu{YAk8,&2 dW甗.)X * -ho3UW.[@h:@ <ׄ qNX3{oYJ^UPDU]WM)9H6Y05w"W7QGĖ:VuVl_kN7QR2::fw-;(u4Mk7Rs~G.f߱|5e/KCtɘE!?r{=VUuOoң/}Pu D9K .H87V4{l=<ؗI[sPyRMSĽT%Wsѹ|J907×/5sCMmÉQu| ~H4u_U('}5GεQpYZGzh Ϫyn!uq 5}K;yU^XsQUfɜUL4EZ!qc3noQ]7>rR=cl|߱cW;6@Um!M_8C >Җ>0*=-CM6I8UHh(2Ŗ1dN/?7a~SJ04Ms|"<>˛~>Θq]xd|<_gDzj.Y׍k'̴)fwi}$ `~C̓v%.ZQל b7wGDtqmNW,|ߚ]pzFqvnٻ3U a4Ϋ߱{<ڪxNn,NeOTnXЧ:wk̦ËK*&oqҳ/^YwM] ?o:u?rŲ='}l@(bPlnz >IgDR+۲mQmѲ%~?ڧ^fiej=9?y3`5EVCyҪxp`϶헯^[fˇm /ZqF(ܓ%ցĒ7 DU]m<ِJ$Y>YZH+ĞLM-KYcgʏݔ){'b#\QP(d!n'jY}IĦ-ѝ`9clghKíG=x88ڛg^O{nnmemuXkWaX[e.\WPIT72:Z AtVWj&!l?$G+ ]ذq7Vt-)-.Ĩsb2UW]#]N{cCֱ@pZĸP[m/|@04nhEyʡѣmEc>mx,p؇FFK+KG:LƬ#]=`QaAyIa[gr!4>04҅ v8bJ*sysKʺΆ XkGO0큰a0TWށsJJ 5xAs\fnlmyb紲 s`DB=m:z}w_N[X{ oYƳn/W$I 0L 'DS4"i*h颩jܣi29O x|^Ukz |yV#ȹ0LSQhD .y!08TT9D"Hf O2Ds:uld|dL{&Tc!8!*F"}D"H$3 LUTm-S}dAQT-inGD$D"H$3# D ,oo-H$D!G^O"H$D"9(x˾~YD"H$o/]?zp,>D"H$Lw o?5p9JI׹w:_}D"H$QG_ݶzIMia~s3eq]Sʋ<>J$D"Dym_yʋk>by^q:_I$D"D/0M銼q)$D"Hp.%ۉPt@)$D"Hf,}}}/іTu _|YQqqm\ssH."yeanܸ_o=g>ߗ*o|㛻v3߾x<FGG36nܸ皚]rwqǤy}g%8iML.Xoݝ;m۬cc{/<|@II'?C=o޽sNyu~_TєH$dd***o୩>_ټ7|M UVV7nܸasiO^/ }{+++{gn[_R[[ {~}#55K,^z%?zkG?^z&Z/`ڽ!4璇xL~'mq[mmE+W^|EDi/_k)߱; .1'?_xCpQa>)J$D23oϣ-7ckο;aComwM{nݺksϷOͥs<ӟoaɩ<裏kߗ}/µy{~|?݊y3׭[טiNİdO7Nt-6orӍ7nyuKܱq^S]m7oޚ5k^sʟd_.a9oSXXXXXxk9"QD"HfLdhqկ3l._R{wMK_~ժO٥`[[[cc#eKZ/_w,aBTM6ݻc06mt%L5&ɒn.}t~vW<譯?/<---[_{mM\s|D%D"97a =\}Ig?hKr95̒4?O_{˗/022B)u\ټŋ#~[KKs{\꫋,˛j҆M%\w 7'v?&^t>ӗ]~Ŧ/Yo??~;飯=]oy5׎t㍫WD"H$3&R~Z.ScRvi>̈1; <-97  v{w_ǮrmyfWbyH 'K[omܸ1@:ظx"nK׬Ysrݻvmذ1l0wyǾ{5lniGT"H$}\$AD.뮆W$i|lJߌ>g?{+=6ZZ]]iZKKenCCwsWkMjf)I9p`gggdp IDAT-[be %%I\|ɛo1cnvꫮ|W#*H$Ɍ>'\jPSWj;d}fm6%_Gd````tƍ/>Qw.((Ff)\[4[_y{?x`u_lF"ݷo69<=sO__3/Y& [VVfٞ{c/1uD"H$˾$їvyg']aY,g;mkf9}?8ʪ}|yk388x/i/<~ ?|:_7LyH %iM"mYe֭ _r===wyǕW^ _kTUu8]wݖcX,**~-QD"HfLM4տ^]!p:^}ںz쾆 =we%۵ƍb Vė086mpŲ8x rq0 :k>CK/F깇MMwwtt᪪$Ccggg 3gj؈aPD"H$S-OtǎٻaEƟ_uL:ttuvn9nw8nz|ϗotn뺮iTQBfl㏙S=V^^>s;ʉRZUUԜ9sV״Sf H$?I]͹OKqqGvNoN[dXD"H${iD"H$9%da H$D"(: N)$D"Hr1.0˅y%A^D"H$(EWo?*?JIA3ˋԈrÙ3f0c0n},wk޻`Th'j1Jc$2=e@02ci<34"rl,90 nje6"=/+z[4\ڹLK{Om`k;Tffsx4m8]'d OzFI lbL]dTm)g/Գ4lW  8|-~p,o|<%S' 1X?vvHr( L1VNYILE@XP:S tJ$U0d"I tDm16I;C4MŜl&4kL}ǁ#J@01?6t78/SMH`oJrm@-`ĥfq򺜩QHu1ӎ6ԫIvvaJuc4=*K^eƌWS0Ay*XuRf*?IS6ڰz#$ԧ=T;^fw:c6H!M8p9,!Ir iv6gH1fS(Пav`ps`I1͢f :Fspm81<5h/E1o \9bɽ^R_q/IyNwE$&>cIM,K{gձyN0_]T&]Ό_ |;Ŏt x\~ |PO H8g{%i *Oǀ)JJ6C̉Wz6Fzd_2Kxv`Y} q6^؁O&9<<,%ThON.b6y=wڢ%^Zg&fyL-\eJW}[,\P!blzg3y˱M;ӶeJZױ\Kn4W 'mJp) | :@`&ե \Ep9p \5xݫLAtĴM*,4Li6 勞gl{?[H? W?c#Wr6Lũw`N &y>ۑݝwv7X 3 ~QR \`,%Ŝ*ܮU{/;?xz pz„ܹ/Lm} W^ 쏉3 Q3(Gp ǁ& ,\*Wl҂ww+?k3X g 'jn)dSZA~Yp+;*<:k什DOc=b`LrϙGZ%SUq'ԧPMS5,3Ap%" `O=l@%P \|T=~/օLdk*4vLVwAf~|p6N`OL&p)@%`<[_ ̟gZE~ 8W,{gΖvmB+diJޛ_6`>ڙOCC ?>4>1qV6&x( TfS7 BBfjMl4늦DI[b$$Zprn 6)VY(mH[˳D~km3uEi+`=8S*ҭhl||x8; X B=Z'8p6eYPBC&)H:x` @4ϩIQnsM)鴓}:L: } .IX[]2 R}!Em7DNNX! $N[,$mǦ2] zQbY/oĤIIu̘L sv?@7Ʉa߇cB7bWi2HD@%`2=]SmV&D2|djWehpn)؈0n5M{[}u5X)S7lD!H,k -=GxRQTR MJ5K)Ta,Bb)BJ@pB B\!DDpB)3 Q5 + ¹3J!̘'B98j9.nPȹէ)DT3@@Ppf B Dp"c$Bu!nTWF Q8&%DpfibJ)cLU5BQ0"Nӌnq ӌKXɅ`1B!sTBaB7UṴBB >IP8$&ɤ\RUɎbrmz5A&Yߏ#bʎdxML̐KyJ dvi@ @8(UA5!1oΙQXPXV^zz{)% U?^S[cD斖9GV]>wuu3##9HXVU6]M)%EEE#6狄#3]aP(D} D†i 8g@(6edBPk(C>S"aT i-^zd4ڈeo2j"k5OE7K aL8eiFI.2͛Դ%$F2'Ho#d|@&dl&;JE)+ϬZ0%Kr;IOPRTXN=d=TJdKM_>{B. TTJ<:܃ [VVY___$-Zt8gnP]WyXCW(5MƹTx3LƍM 5]lBiY)%d=o(4Ƃ:r!PUUS.np||h+,onn!0E"afF|5%ohpp1>KW=o&IAfhu$qW ~!$ûiOMN J\/˩5#60kħ:I2 S ؍NjLhI$V%W)&Ք' '_^rRm$m9-{roNk,iwxfoLv~%ڈTWN$>LTJdc#cY2bqKB?GRk^#GUsw^իM&C**Ng0yVUUv㜱aB0pFcc%%.KP"\Nysn )2Ts~(DŒs7nm|oS4RY$Bi2Ji8C>oWwWG[G DBV hʘYSS[[[ݵb ;Ƹp(/=sڗ_^ݩvpѢ9s*J{{{" Z[[_zWg@PUn9lK]\ SZZjH?:kZGG@_0G#]==P4MJౣGHvSJM #8Kv?qH0}aTTW@Ո|Ŋ-[[ 6а?TfHC}i5ΛzΠ*Uyl!I( u:2PUU!v뱙/,,K,z}vVlP\QhKKsC\B#GzzE!\ps6\uWtttvW‚#+*+++*ǃm%e>n׻{֞E**DLӈpЁ.?-/2&"u y uғkPŅʙ(ZCDױukRnkn(SV*% h]D9!2ğShBvCqE 3nxˮ9x|* (BpB)6 ikWiA`(H (*620ϣ3z}QI͙'֬_9S566AF/yP"p##ÑHXL)USEtxx8ɐk@P5s#j2?KXDһLNj槚\4 mmm}l6[nv UUvunfS)EqQ1LA"@‘H0CG#@0(dd7M^UUq-7CᢢB(*q]UUUn{ppf׫+ !ir΅sMԼj:Q򢢏CAU>Paa>wwwh:88>6qxi2qb IDATlG&>2>skV5%5| ! Bpn@ʅʭ%DBp(!6= ԝF00(Q!R3P(Bp.8!p0Jz*X aZdwD %qB`LAծl6[~?0{m]=!D`0jcTyPqHu KA!8lBE܄ gyf}}6= _9|0M!D,OiU1sֺ(KNLhz*Rۈz Ґ$L [c}rUaIEpA`mDF) Bii2fvgTso6.TTyϹs?VRZt:z{Lӌŋinr8 !{{{PC<ϧ뺦Bp]VVx^i; 1]ӱ|Uܩ>|*p'iO& ~JA4d̠ qkob'\p%f(ee垼B[ GsMmҥK }e;à89 }/^+[87 k^ᰪhp8rh_܆.;ϓt:KJnr{(E%kaUg̷-"Ιq_Vh b2_{ƍ8w~ζfo|vfeyKfo| qLDs!ޯZWJkɍAԁօӍ)XYgPG/$- @ETNOMJ'I'INS*ы@$󵵵rYǛ[뫫QTT1+W:4c,Viif!(C?k t7L!<-9`RJ@?^.goţ1?D~fV.&~{ꁓ3jucc$Zh3&/,5'OkW76/_tvkvvv4ik??Cz9lo#Ç.--܍#5vIonnmdy΅Q9ϳ,M8AT@0 TVSZ&Vh">Zy^8`1 cU!3NG*D9oRm}_ -m]{I38a8E"Z 7M~hԳ,CzvթTg^? lnl|_~Ý8N7֟?>7a…rR õwnv2{kk\yW,˭BdQZAZRe8 a)c"Gκ(bXǝI֢"A$X (x 8Nً{_sHt"pyD"1V)ʻaL׵ "Rc 5T=RJf84TA&@U,J)Zl7qݶY&ŠYjA23R&B PBuX&RXfD%Yv2W+c2C˿j'<Il6{k=2?7i b\}Jei𹳯_|Ys:oq $~eͻ̔w;Z?ᯌS5.NHoY.}[$ x_3cLH1MQ{LFWf;3SSSLvZmiqq~aGM8}z񫯼e^x!Nd0nmn~_FO<ífS)}'uB\__'J!2Zg{yGȗ)Zmkk{ksT.//-7Z婩)kq6 3Xaִƌ\\T83v ¶TѬA}g:MƊ3-,-=)"eATaL>լhȦ +  A SRa4B = F֋KL2 UJ@TBTC6fRQ)*0x< 777WnWU*n4ۇs_'TY@ 9]TZ6Ɗp<˅ [ck2#R,.o`bfDqfҋw_?OsCor[[[ |⥛++W]|ſtN9ZD%xj&KKJJF$M0,ρ{S2ȄFZ$0bF91q:k)3X'D:+HŒϐ[QEXYQ$#$$OKժsZ Q+%@hA9k =TDK UJA(lF'U^ww+ R;K(DBUhn=V "XcGM)r`٣~A?z:Wr / ໨'o#Ev ߢ7kʯ|3vØ|0tuQϦiⷿ{ڵV{䡇fZ햵lz /wff.__8c{ԩj5FJ58NwvT׏>2;7G̝Nn A`48s[߾qcu"|ȇ0hZR@wXDRV՚J8j PH%\E*:6*nNq z>3}y?pw70?{o+T\ R\c!xSƎ4T\o?ͭ,~W~M7t\ >M:LH) PZ 3)Cpa}%;сEIDaul>c2<053msJ/.Ff霻xkFRQNMM%i6??wedfqxy/=$J'>N)coD1c,|kWw]$c'^ظv=èRp\Fݘ 0In7jFa!V+=WEy+PT, "C`AvwPzWEBջzyw*Ha$,ɓ κg>1e8G|;.a*R ɧ;kٹܑVZi6;n95@&v횀H/ч}O|@@dH':t+ .^|O~詏<+3^:}k;;$!Q($h\)e5{ Nw'ӧ!hq2* 5EY,)jH\$dg";`B!JQ+"α0ٹ [.cf@8KD 2c+lYHV V JM'I~.i_!NPsΞ?n: TO?9Ta`ivճg_gq>G"dvwXXg/g>{KWCh4kNSO-,̉ȕ+/]qѠ^Vk((\x/.//7 "\V<[1! [ _:˧_ӝNtLYT]][[YYZZ>|?nR9 K*!P_;^J. @Lf0}ݻҨUmnv7ց0Bǎ=I;vl)\3!/E $sň\wܾ/ Bl߄(@R>rsm LHb]t ᐹDA0:_{htzQk"C1}BN(o>/NeCr@H| +`JTyyn\nHAQ#FuZ6/`Lq6P{O:Z5ۺZ(2lod_unh(̃Ѕ!תR.s8  1h'q0h\$)=|nN !UVVA)EJj |j #6AJ $)@FVRP"ׅj5ZeG#rsUb 678VIDƔ*iXbLSگ/ ۄ\W[4UeGnYc!'U!@|weE$RXV:O}T KQ' jj7xGYZZ,W*.@GJ)g2aˋ ݝ7@?Gz׮^իlZYYs.2HIZcj3VՙYJ`]*kK槤%@ Q#"J'xM0T( `nvvvnZ $\Q2PlC~oˡ;Z~J[.;n#&gYdǞyzumʥVepvўJ3s %BBJ!8gD 4)4kE$qsX>S$ѳZj]sִئs`Ux1 m{տ[Y\ZE7r[fz&!@y7x5)=/&_qNlb Ua"V D@i{=f_ ..Bwd֋"幝 ) ! 00 AXʒe4(=zKQpR9<~4ߨK֚_} ǎc߸~ܹst|SS-ct;3mksD$Yz}>v~⥋R1h4|')ϳW._8+Ǐcv˥܍7ZVVp}ٳ+7o^t>tбdžznȑvV&[Y> Lu֥KWwvrQ ٹz:c*l:zA9{g5qVVѫ%4uBf_W/Vl6|G?tu25=|Qp'tRz ;)h[PҞNtgw;߁BCoܭED1x=I[NJxgg{u}5P]3t+Hk ,N"9H@qp(p̄2qgKT%$"<ӟP0[?L;$7V_֋鹅` H5J`#!J'`2(-@* rTk9WTuBʇ"L=fQoa ,ø?Gw >B&/D Ҏ1efw,ρP 7aE:СԔM͕KU5l4ZaZz^'l@@0=%B"&C&ݨ76V^O:TVk*Ibo8 Ҩs4lp5jҒ4jq%Jz}  NW{zW;A&- ,&'h{kwwX pk8;e>G)僺 㜽Ӽwm2(oG"PĻX5v׮GxWMM0MϺԓH |G/Hw#їy‚ PիƵ<_]]evV{O_xiiyg~_ ?M?j65V6J_r+_p4X[_~P7n\_[][\X:th)Nw_|k_/?Gy=cQM,‡~9,MJoKjxVk|/!c?3O?pdˇ4|J$ן_]鹰_\)YEAVv*Y׻px>nR#2!!t$NMnFQ2J\7Z[DduuujzZCKKkJk5u٨j'=|𩓧(J0x/_a*@R^%w82er&AP*j ժxƕ0 9zY5'IzDk5P"Tt!D;+nu="sW;>w>wZ eLt@"3HnAy-@dȅ?@ق ED&#{/܈H& bfT;P:f>(na{╏~`?uߎPy LPdQj(`g|OH)og  z=p,>O>cF3꞉EDZf4[/^ !wG EWwo9nmGKZM{Ufk5;{ҥri/(/IcG뻃5y,0 s_}m]X".=rZO}g8jbrW*Eׯ_ GsTK NC'0jIo쬭{}w{(rVFq;}ozg'[/I<ϭǏ}guT.`o0h4|fff:SKj?k+7WΝ;''b(W*ݽן{6]v…79zRT^>tQA8Ln77{N1(eI I1pyW"3 *yvdxXBP 9"-\@^q>LwӻA?qSHU'BXs> Py{-LH*jfE )[ {{; ka<5qgSA%Isu&͜9BlS9vv`4 jϪAQ(A J @bXk)"`0pގRqA0(;oY\: -4^'-.&0MuJnTV %"8pb1UBD18IZq5kzĮ/@g:LSlmfLޒ|&I]l.oJYj~.yrTg^=ګQNu:^p}L3= o0QЫ*Jq,{SK%㙙ٳN0aZvQ1MuT@# FSL Ф!v* (RpfGE" JQduR8vN0Ebk@@ 8D}3߸q~c>h0xק'=r}GuD/ 6w/Ҩ7H˚mݙ;dIگn>kMDhDķ @0q+z}mo罳II8tz=Mj0l0L8g^KZer9h4vŋRV; ]TA{+R64TkDJvsļ?==5fyȡ߿0&O/]x잣333^\.Alow{PDZǟ8ʈֶv0LMgff_SPjiÓU"C[Caag((`keߛe!X& k7lnmv:Cs3D@)Ёu޲ 593v~H αRĎZ.%Q_GaTzuҪ!J(Mb0ɤ&ge1/4ԝPܛcm]7Rɕ˶T6ldK%W*ZD CVM:Z RvJsjJirCiJb3 @Ʊfc$IJSH]Yrg# )kuntٷf9<meoJ9b"VϞJi]Q~[9$ND- !"Z*Fz`fV0b4SxCYXYDeY`&yiD z+yc=˲_7n8ˤ 9b6E=w"idMr7a"{4P0*f;l>?gf9ga}i}^W6F}U1a/ԄFk4l+@sVWd@Rv4IQoZ+̩KRDt 06do6tfNB{eoogy(<7ٹ)\~1 f)+SSSapg7;yIe1Yyx x%7ZKF!D"D %(2Dq+HϞ'EUU/}掠ՕŹ奅zzNR.Օ=V$hk{3N$D1@\}wBPr^Vgr9l3ƊZ028vG!NhxH MDG%Aovx @Rla!}ϻvvn2ֶw+wh %J!eBH8MMjҀ`)"P+A[4p40ރGT*X"JEkm1uP涯O}=5|ÇS^0W'~=j|C҇?<Bd`ԋ0+W+GnDZZhjM66Ξ=u07۴\ ĘFw8&A@j[uXMf; \a2Lbh*H)X+?ÄIL:~_oR RŤǣ??_>4a\QΚ0P~7tfiV֏8'a董FMc4u!Q#F\Xza)j633x+h4W8&>ЁIQ#_Oa.j5T*'\f¹.^|[:˿ssss~TR{BfV9c-шVht{ky޴,˱c~f @Ao"Ɯ[>-iym+\kVWkZ1Y\b^j[ZV6U8XF*)Ih

rHA');.diRR9KSD+5:Sfljv{Zޖ}v76-wv(`fXZf&BO:a\c"$TD,NkeiĮ痗G;4}7"Ǔ0+_rӟ{+D pFСsr䳟?G#kVXF0J9j4* ˵Z_{g>x胏../Tjܤ^W^xp4^YY޷_η^xV@$ D*XZy^Ug\fYv g#R,\hY~ԩr%b$/,.5ԥ0<,3ۛO>S,-/VJimL ;;"e&o\ݻp ~|=UWkպl2ski2:JQ֘8XZZ70ǁD圇Qm.r_ xbE Z}܊ۙ-cfTd[Vf:[weܷW8`,Kpoo0zeI6Xy&kZ>Z6vv{J y Rr;FUʶ̛ͼ hFldZ^F^7`5P ~Sϝ)P{K xK;փ~* )X(R4d̬Y0Je%ȳNICB'bD]atO;dHl}>mbDHՁx|o9 ɛ )^$ t+Gר=T?O굫WO>}_?w]\*a7lJ*Z1&//Fpkԭ80(PGp ߏ f:ni9bty1yeU]Ao7_+je-5a6 NA"VtsNXRTVl+Ri L次(pR~{.S( °RM IDATƽ;"aDqefDFfsy~jQ"De R`&w>ԉn9h1n$ws3F| 67x r 糇 Wߨ?++_|bzjӟ2G3 j,"noS܀]2NgywZ}n8yʲtq<sg?|h۷ne"  "ScZ@c`da٠i:ZB$ *ۑT8\<}}3*cW+]P.)o,S "y.E~onEG.o߾u#&nO(VMTn]a,wFB#,hUi| .;|]eEUE]ZNwvl]Ke[m``]yUG:%*;.X|kG:@*Q),4FDe"U޿Njo[fv it)/&E ЊԩrfObI0${$g6B"H@8WXc=xGeY/|9&@6rlnrc$I;Ue$ZiMZfSM|VggGeq޵e'O?5ä5kkfwEY*pdɀ*HZh"*>"FA wwySmɋ&L%"_5JlKG&G? G~xxum;#Vkխ퍍>d˻&nHŅ~3ȩ333-D)]{W='_?_[w;~7vwz͘xmy_ƿd9Ynןx7,xWte/?#yz" ;;Vy+/ʯOO8~؉'V]O~S- `x݋=R8 ^z! ${+A""DF_\<|5$E0^(~`"0*$JݪUYmln[g#~{ DO_rE>Yq`v#k^HULH`fgb;0eМ'0Un7fϻoݴ_}'}ܽ vvFΜIf?=7#ss:7"mwvl Սu]_nVLJÚ/cT%UU :XʨS q +B {!4hD$Ԣ,!cl$J^BO`8ڬpQP,4E^&4ISc={C!X̑3!JWdJJbRD*v/-G^#kw>[?@%DQVQ5 I#U*im8(@cP'ʨ*FY 2,e&b2 !D1E5g1 KZ/ @kR,3')ҩ"D x$MshQai8VϢ2d\zDQ4]FTHF$v&1 /r_VvSTh֞~ٗ_~'ƽ;,<__bwȏ9TUpMvwwWWvww9r3 ?/|{'?Y&+/ݷ+E~'>4,(/(h§OyGvkV|ǟPI6?yR&a>~V@h71sZMgŶը"u7$_Xxk{ڨZMf:Fe99B$M7>v5@$k CT#q_ ERJ sLE^o];rxWu3 H"LƈwCk`u׃ -4%IEnom5wn-/.[{tܛRh`uZ|17͕ mwhk76{w͍vlnF^~4jN|`ԫXįz}m:*6K  T PP0ܠ8 0V.=`'ܗ'ջ{4uTx <~: rP%42DDPBtq={nL&hJνO}3\{(J RB-x~||q+WͥKzFgLYU4w7Gn#3'ܻwZ&q03SvZv67[>X KG6{xNٝ^yn BWKS6QVa:s*X yǬ&tKpwqeD9R/ D֨Nuȱ*8 AB94XDqD4E8XND&yIL lT$IRIq &p*L^-A$NT@DP06ŦYԪrwEYhhf;vdZiLr Dh˚81HDIVU WjlJM '`V</aԷZRL`t V`@eq՛k|x6+J^dyEY2FI^<"-IQQl[:bki\ yY%Dxٯ %w,_8?|[w~g\޸Yqvz݋ 4؂A%$5Ҡ uF~~E1xfIyt?G?XvtO6Iē'w=3+Eߟ ݝ?א֧U~8NwM q!+z {_*`#A.˲h(sJȆ$M$I92Ӟr?3xt]~j|]\<\2j333@VyڝYDvWVv+/\(Kp@ԧ,SQ2[7Aկ=!23w㇟|jjl5:;t^7eYxY^ #4&:sD_{u]0m?) { sXΝoo7@dneF/1,F40[XX~oZ ʣ僲>`Рq>Ӡ3OkYdc`q~Q[C^`Ϸn^51DFԈ*1DH&U@ff>?p>{ ^x<"޿^2^l;2OP-U rx svՌcʋq^iI0`m;wcbQvȺJ"s#xgNƽn%vVD džȂFALmm;BɲGT=""U!s!ٸZ4{$I Q%q,"/(#)EKVPLE@,+^SްYBWQs%LLc jEEYrjͪA0wýmE$I^w} & xͼ(}]h{+_Eq_^.C8rrfʵ[I= &p?C$1 @Yrz *cGOܼq'O7t QB/M_wiB4UTfAa(X<8si2?7|o97{ۗ\7F3Il.9l֒87Ԛv{&TD@IҘQ(y[k6Zy^ ^F?vΝ.+upvo\@ԧ>ED@D|=#qEڥKOT(o~$IT4MҴ=Q{gˏz-}ZK|w}lӳU,rCZ$bXѐ 0!"^mW`HEz#(Fϊ2 8#.`UBPf;8S*ABepNh(J="VUEP,5qX섘gYBQYEϾGmg2d5XV~Ck?_vviV*zjZVi۝N'^W*4M8(xk}ablP^`00 Yf6~WL ݎ?{wGz; Qc},} }dA^Z1RVĻRq}+˲ "+r"tYq4LGunܙH&T$aZVûonn>|=3{a1Et.+/"/Jsw?}$iG IDATJ%k;voO hؕ݉p1 3(gf3 s*xνDd ^9sfag̿.ߗL%@kE|KW5#!$[fAOWI諎1T%cC;/̢"ϊ|4{jf,C3Inq=(>̋*llfoT֣n f[:!}\?DI鴋P8 xaPD̴kj'y@UKW'C2. ugI!I cWx{LdMD☵(sQ;æ$Q[ٹk7n7N8<؎ ,.4Bs.h0nP) `Q A qAADD#"ʊA^A! 3+P/ι<-Z1B靍$"PE`l^d&" pE鼨:=3Ku o}sByY2x hOEP Xc Uaq1ؙo4^y;}iJC2VECE!,)SH4Vxm bq6+Y^vll%ȠH0+!NTE\ГhP)i/ O8E%0我m{tD ׬kڼ('ɍG=H6/U _R XU DW$$%SKfCE ,xQF! }2-kM0W, 2W*IH q EA h$A`MU%t4N]!k@G!P%e`%a $u%HDW-o==t S"AD)DB~o$<= %׀Ц@0MHT_7>nhq>?`?5:ro9~vFJQ%ȞOV%2D,$utΛXx6"Jƨ0xf2lO&9{ f >82-!YC`#%D{8%>QW$Kj(Wx0 1$I^R32u { ђ9lAz͍'ff:3pXwenȆÝ(VWWEިVKK-qy ^{Q>s|<ћ7|~eeeJaѷڊs˯;~8(X$ܨժD}\W_]^ s;;[fǓfxd!͚5dXGCյf(]Z?w>2fO?̬SxN-|W+i7.yQ+yQk PKO8u{>gVQCFXDфወG?UZXk@gΜ?~Б#+ʳ<{{xܹ*`)Rs;sB]KWE\*r09s=^ :bD 0BBkm80gYq/:t8(2k׮]qJ˯\3/~,~5h849#񝝼W2l( #kɠUU5JҙNy'"@ٹimnpJGζdRYWU%q- HQX1.'@Y{`!$`O,%Jk 0]vLفS;pke PLh瘪O?{ŋ+zxR;pHEnzDRd9 #^Y" (g[m/DM8#E)@D֫ze,sP{ًpdAEE90/1&LyQib#;I@^#,$xff,yjzxD׮*R FQٴKrhq?(Vu}-u[ڭlD{71IfU`4bS y~Ki%1o'EtDtD$@S5{V^d9(a(]HdX"GƖ;33Q6%Hy=Z(ImְA Pȴȋ;cHj>~;TQ!R 8N@!I  >D 3 \3Qdo Eq,}XИX+VTZ`SIӮsNqDn7# @{c#fq,AR")aه>LB)2 M*^IUi y_kArw^O+yD* 0{8I9aM֪u !?+}eYz(2F^c fY^" UUV }$ÍFa^W'n2vUW8̶:7oó<,]/_멧Ξ9]U_<"e^bkkJߏF>;Fkȑ7npl{o3;ikV{.̯m/_ygj^fVV?yX^]^[]K_s??>wsww֭kǎ8|dq>IsڵZ2;;9g&nll؛Ɵ{Nxw~9kwR_3&Ϟ;vO/!gp>=.̬?!;8t'2"b2$Ε&$j&"V%:޻N{0"JYl2I6a}#2w(D w;*Py^ Hv$SPR5 $!D Q"`HD0 "lb,`#@D cL%I$B"ϳ,j} U AR=1y=>>wֽ"} ? < 3a2\j@ERnqY"*7]&IʎCH;WXKWZpa4c G1Q 3ѡ c4f L{ l5 rU8!jwcum9nKKN?up05;{ޝ^x~د~K/E^S,[-8ǎwzhַ hu5YYIj(+-PEcLɵ7,ߋ(K<Vb" >^KҀ21´Q4Zgv#pEDB4xB0V7g:NkgWg,":)J?Փ% f WZ 2TZ !!=(E&F ^=ZM%8x* q.d ڳ'<c py6,Ɔ(ō!"ŤʀXޕxfeR"DVe{h`ԬV"!yk PiE JфU .*mLYyQL ,D l @ _ƕk+{T2@ѠE@@7씀 [:uZvf))KnL&("gfcXcXLz%p;ΊMeQ:]EdXN~ ;DˠcKsj*5Kĉ)ɸu-,->2A2viRi*/<ڽ3gqۍٟ7n./ZZTsV;zhTVV66AȕvfL{/[vޚ+_~ '/>^wܹCG;vti|Su޺ukׯU^XO+=;7?sgϞ~k;`Ēں~ک8'Y<ࣛ[ۿ~cgws.:w_\mX!"'w[z%I\p$Y{;f^9}x<fU /TAF@$4Msu! Ii8o;$*;|α{ϻ.nl\Mk  f̗D^$rI @27DZWGpq9狢Pj-P罈:HȢyuWկ?zS 1dY|LO aNUmŚ;tc SLH1J%c$v4 pH($Z5c@$npwΉXkB1KFBYسsLHQG6sj$3dN'ccPm^ңwe\$ h:%DAQ{*)4@(bV[\'BvxK Q$<<~Ó{r||yrF˯EϽ9G XA)ۘ(E ]o%ĉe 8@8Ef!8略ȳngAiW 1(I_NoJ($RȆ0ٲEJdK&Z\ -faǏpaM!3={4]]^X_X3ufflr*Baefǵ(,KK'o{?eIw&++Juez^:$(fDHѳϽS%HjV"gGRH>AJN{FLvOgN'd&3-91&;~[A,N*g7o;{{CQP$oߺoܺyy5{onܸʫOz}}wWr<,Ͼ~vk|ʡCkڵuj.X듳'z3 F?s_KGrRߙGM=lNgg<=\^Ŭ+WhɊV߽us7M#qr]n/ow~h77w\vŝi(IKU%r^=-ETꯩ"3@h[E7kmj|?1sjHMU}S sX&~I{3H .邽$^߸~СC:ۺƛ{׮tssj>/J"H$bƐd5%'s^G_?6M=D =u9"E^dg?jggLn޼ChD14!4D(A-h@9*`h`exS19T "lv`JK*uLfMS!)^<Ume̔|fB`O-|7no/-}%K1&uERNS괳v4PJ~ 39e(̖p8M-e){r꘳No>,+rooxt@5UJz;S1 -9 )JD" "(cpޕUuwgtqF]__ ܺ{%8,MS1gNʦ`r&J쪪^8c*@N*{Ī[7Z77:!23"Fà >oD_"ۦ HٯLOTFw!8D,1QS5w6eL4u%jjf #GT̹'pV;̤! z2ۂ^bV:&H Tirb71;%455&hk"drEa1HT,w@AԨenK䃪5IJ!aeMfղI XnljF`u#*4, :6wzh%ȝwÉϨUp33 j!J{{ IDATvTtΟoí>hOvQ{YzR;白Ѳ. lVRձ+U2 '#Z!5(qQhtyI]4' (4k[ɩB='Ȑ-ZȗeƺO9X]1pSwy-e=1"Uƪ wwz2{=0yvN;r^E1Oxiy뺞.-oE4MnYY5tv<^}庪V%#GgnZV9y&bV9xͭx4Uix,};^zС;wGko~}}峡2̷,۷tO?w:ϝrF^4 {gev…MU:tdgkkum|9}_+f{{'xt[(* YB ,1ڽ&!@k\W|UwVg9;5[H'?ԃ}hzߺwߗEUk<4 mじT%s"NE] 3U}F0Z#;u![|ɡcT 0Nkiy3uKU]?/]G7olLS*2g$PΡ; QTjL:51`x M]VT @}E"k;lu vXY|V7yպp,BY.,%|>;ȳ(Ko!ck;& kØN!n# c20oX*+DXumiJ EQc&c˲&_ZJ0|ȕ:( ٽiA ԓf옑(LgZUH_? EeL23U4ڑP4c\j&`FH#);战 Tf.5v ̴_э| WfeBEM'!v@Hap1re*6iTB$ȂFJhUd4l1ޠ$@3꯴v]1rATB*MedL E"tyMY3x(|6G6lfΝuw^ElARIoXik%F3` e,cFkȋhOᘂo @ĒxfDU"QUH%F!tl*YA˘̴_cE(fΫUVW1E+>d.S3MDrq:ڽvx棡 .q#R]F2@[;rM5~fShij-r!N|6UOEѪcs>N;1GO`eiw~ϟ;i}_zٴJh&yVLê N=t}'oޠ4Jxks:~㫯Jopwo@fi;Rj2ԑݾ|R^ځǏQ~|΅/7I4Ih002[kdի?_U'?vdv#cƫ%a~H^b W haWS R2s$L ͂${~t: uc @ \b20)b`zIA MPIp`ȁkK8 &U۔O}7D(^f"tbOjA``hÏ<裏=>|/|ڵw0!9QClJ0P5FL1Y"@vhD=A}T $DUhQ YxAH‰e8"N'd8'̈́, m|^("O<?#ώ8Q}Ƌ`(f9 e;dsc"5 &jFtp55*]HH<8PZ2‡GDu25M̀2v*1 S"Rt^8vPTè:x^WV9#(Bv9EUFJf>Vsfr yMP5&bǍTeɰqf6Θvch[!(QT)ZԸCAFdf ffjIo/8"JcƒS ?GB\^ҍōk[׮66Z9bց{-/ O (-uH )HdZ 8,!{yvYDP#2X"6ǔoIaG149 ;xgƣ+WbT1&AJ$"i| 3!N2$!qZ.a90x$E0tbv̠1EZ͕7jPGdșsnYSW16*c4ŖJn$d]"Ťhe}ecuPU 3vuMTT]hBو:i;g"G$s̱yFlV;mH-7ԄҚIEd ?8f|.o-ٝy$~Rozƛ6/(_aКH*u5@fγw.־i(9y"A&V0UY1!& Ԝ#SϒEJRkc_֚;BZit2s+R:&3șv\k4L&ne q:߹y]֠u3t9C\^^V3vdww;<.7ASƏ=hp<<U5p2|#G|cٹ٬d'.˗L̇*,f[3)f%CLW˽6!|g싟bfUyWɯg>S9zXj{7W'PF=۟$]Ծ~7~#G>'ۭ Z5)Ke쯤+aiFD $^^M4JH <*Q^`&1op)QMP"BDSuEjX4"Rbé%T=E`DT" fG`]EI4.lV2`ƞJ%آ9!he^'<V7cO&;9N@\6"s#LB-գJ20Ih!( !z3ljK "C昳X@@(MESJzfM !?Z7 %;fk$sy'""BX` дH5;&(A<EHgZb b6U%D$s&fo]5UUFfVvs@(-K}kj^M CϼT!2ZEFDY`y'bZ L0C0za"=Fe=M1 !˲D yHUQSa)$v 1$ w:,;m;`<}:}jܷǓ^m_ѾvuZ{g)AslAu40Dt>˜F@UREu y9+ܾBBQyq,Wjؑh:̨k:>Rĉظ!Ngh15x*H*LbwT A ugP4PIkSKdxQT/-6) YA1/Ŀt1r6W2sVM*UM A!9ʘgWs&Qo[꯬k;y5NwZT v<0WwyQL'xR iP@id4 %gV>,wPUtVM#ftZTcSsDL$M~M9(R y.{?:qg>x~T\_{A<}bJ>8ǩ2Y_)#D5ł ̈I%.ZԈ'b#M}1DfVBr߫ZqffM<bT&Uq63ZgYYvmy'Z[dRUՉc;~gGTTvwf_}'O>0Nfrm`qyb'>vx7H*Z6;hAQpVAD鼊1^NfDth7`pկg7n\ۺ{M^x?_p!~ )@Eb[+'_g?NUp[ ^flv~st嚑3BZ .:,H jIYd]7o3SCjrՄ;jw8elF>T-s{̼ E>df&2'gz̭.}O.e;Cĸ/}q0Vu)*"LC,`1)JJrLpQi UHmFbd盦bb}AD&:rȎܥ>-^ҜLnBYVUU4/V !6*ȇGg-x+V߰dSm1ɂ{rvccqqAa5vQUDDW%h hE'lggHDc *g4JaMhB\^u;ttj L[4M%,b{ԦiPGbF"y$h@$i`cBD|^,ϑ(} "fEUvk>qæLMe&W_B2_FMӱjHX$"JA {vi)mΝwoxxtx]OE|ruzlf#`$"f&CvX]ݾŎ2Wxe];fu(h2s9B?ΙB`eU=zʥ+ƓI97Rh8>vpmm3O6MؼsƝ&̙iDՕh8čS_EYH$_sd&uL̴9B(s !'.RWZc ث("PdW4 ,__]ݫ63_^β|2.4jٷ7W^ۭSO=vʥs V~43y @MմڭZ[xF_V znH}R hQsR4UB@R YΥ]C{vLĄr~~kC|x͝нZ{7}Ó#~? ;3[=p@418 *2yv`&&2/1c4#MRA"z樢*Y\!rZLc1n;Ymm^ZRg\$x]tR߾_Yʲlp9!;#b(dRdbT$%p|'?|p'{??CuYrG#5c&zeYVIY7۷n )ZCN?ēOnnn9nm[/bUKd,ZvȹߞlgU]gy\Y:w~X ;o8~:ѣSBg2of,L0rY5C͠^|饗^:}xw e] lAA\4#{& (iE2*2]__w?܇W`VVΛӧAX]Wx&bQ 3jƭk mO/0sJO)SfF+5<>S:3{—Ɵ/gs> h!-L*D.$QPvOEDRIU0su]fȑ>,6hybc&;E 쀊LE]!RUEqEMS5 UlaH Ql١ ?72*9Gw20 UI=b'M]Ԡ2_U@yUD̲<UDּȣ%7DAdSB23duafz~L@mmM9g~CK׵۷u\\ں}B*wTdFcDLu6v{-%ξs8cĆmRdMmMn,O>Ĺa{gÇL|n`wn߽ssOܜͦ@", vgUͲ [Su_Fl "JY !'<قdHL(u(1T-6 zg!k:2 fd4Ml ղ/DeMn]}lv}X[_atè{h`x 6bH΋D* r^:621Q(1󹙩51%(@Esi",/p$Ld1UjIsPVǾm~zyxz/f*j*q|H@=ݼg5M/j]ABQUY&FVUˢ6UvC M0VˢD,D%oe")cu5MdE&,!%Q S$qS*$ ;18rM b=gY沊bwwKfBc4x<w7uScE>|"l>l2;z^l0VMhVWVc2Vgi8wU^'*ҥ?s?mܹΝ{7|sVbf!YQUPT% `xHn+e6e PPÑ^w.^t7\|.T"yOg/l^O&sK/>ujZW뷪ٸq ]xS{N\m+g\cğ_4ܹ~dzxh,a]}'GwuI8Pݽ~׷nޘ7669ؐI )L~A0%=wwvQ/|5x_H_tm\~?;zx&~UN#:CaY]2!? Ք*huwđ:ryusc>jRV3Ī55 oC.P6uY)UsȞ:݌T=bT~VB IDATL,"!2`:(BEWgw#ʙ>:b_: MLiuvQbGhji- LH(8aLj#@h_>]>KV޼y⥦igyhf,*b2b3Q 0f.Z!m6M12'oYѥge$bLv"QU=SĎTml)\Z"RuBq9;L*Qb]ƥQ/xUP$hht1XMM=HpTMfH`S*fcϫ~ϧ.?yf?$zjqZ;$Ee0gt6|vՕ-1`lKl_N%X!1#FtLj̱t}'~zOFYR6+,s&vudb.unߺm$ƖiN΅aƬt `f47)qe<3U)ZEh˦Ywvj7G܌dz0-LÕ^Y}kQ=W^y`C΋$)*ˑchwUwԵԢh.%ڬ$4.`;" ! &II2p&̆"/'OǞMW_[:wʉfs|λhL&K+|+%fYi;oXNgѼBXD!bD3pكXQ`9R`vv@1Hm5!DvLD D VwN?t]D !#ƣr>G!g"&;[+l8+V{t:kpM>?5}m/\D`DL@UJH$SC2UMtJ/803y ^#QR]z_t9tEe^Ntwo1Ff&D@PDE 2Y^A 1 /JS$.;U}8 Z^rE '2  )!>Q\9؄8h N9f4F@ "QTL<&*jlIԘ,Q"aIͺu$N߹*;#'揟hVҕ֥+KWۻmU0 ~hr4MU'yF>sLb΅P/*4ܼ}"oܝfkV4'f:3w,Lt߾s;6139! M0Ơjx 5s`Q"j0xvVReudJMcld"yEűs콪6uLpђ} `Ty[ Ǔ*o/(@4ѭW_y>'?pԠ[jQPDQ`;XWMlZ"P!",gexy{d4 X4",5!*u 5M#*̮+F~0<{7:ֹV` ̢tLDg|Z:*<e,^Vj Hg"Y^+tH~@Ptn&ޥjQpQ'T1aǩmSiIʢȉy:|:mEQ`&$Ee$6(jLjjwZEEBTclwn.w{%Q;??6U׮o`0Zլh8vxoEh4$j߯iݺ{癡ԛLj"n0gf *9Tki*lk+ϳ<{'>o>W_ G??裏eY3_㍗_zy ^_~fʿ=2޷ĵ/ǒژpv`WL945; *ZZ Pnݾ;λl%g1hb.xvnHH3ܵ:yQx䃋쨮4W1f@s ͌ %FfY PN/'c6z &89J FI($J%S5HO3bOi 2~K 0_J4`+u96Sc&E4r(1/@i+$+O}!"ԣ1/\X`ɏ.a^*2UOT,/,+㱪x4m1,+D-!"*19V&FB̲b?4خ:[>x& 8JEJ&ے-EjvN\J*TN%UT:n'r+t˲dI-Q(Q"17w>gV~s/ ږXyH{{{} 뭵zǟh;yр| FL kW,1A[(LţKJa#P [Y#f~@+hB @APx\t$6Re)oe 7Q\I`"$FNZI>(ݞ%Ibf/R+_ yGGiɓ\~N:]*50a~0hތjj~;Wu=wޕ:;ϝywͱf{"VOo8d_}uCRtKXs,Q _&׾:7w?ٟ~5kݻH8wc>26 O$G!mz:M;';n>(N8Y>QSv1$SeP6[fC A4UAM #~ai)f‹/~_߳nW^mw&炘P{IDȄHeO,ۚ~ ouS@#BUo(Zy'jL%bU5DBUDtL̩{y7)WSre$I(.;xY5/sI'@Uk4Id0tydzs<["!:p X͂"" ʥ)#g#gpR11$ZU ""4%ğ1CB 9v6$B@DBTQeVL.00}B!TUrIhb؟ i C'z)ب8MJ/Frtd$x.TBP,fN$bKb>-jZ^o¸(>>ױ2[HLM$j|'b>6{ݾsn/WިQͦ^=xOƯt|g^ȋ[n%4q.:/P_0)KXslt=@^B\%[lz~0^o̦Mn HL{F2U9PQ c3 IDaGꢦL^Y8rl&#d$ jР"Zs.o2贉Ƅ%ۖ"WZހT% ` JJB]5O>%a Vl;gz|iqIxDâ^opIiJJ'( A`Az@!'"eH8%cU=S,I<'B8SK4o&I:>6>"toN5Ν?w啋/Ks׫_bz<?7nZɪ:D񾜥 H$/e [m~T޽^?f6!z4>F-zvb#jO( 1k{;#'>O=G+id3^7 nXc B ~ UYZY;~k9&*e%snzHEtXDד Vժ]v~L?^K2W92@b7k&ÍLT("hҾ6^-a%aWbETU=ZkVZۮ+!y!Z%!$ՕQ7T$ :‹L"42 ׂpBJUc.Cz#k-n A$`լR{^};%4-_FBit/RODMG@hD<,6E眕)hjQ0[",9رxι(FdtlX^R2?!P'J%Iof0 1jŃTDR*s UGvZQ.bDDqT8 >-&Gy@} G22ӗ'/pYZ&^˘r1pԚDX U]__GD$"8HT{k 3mOXٟYwXZqgN{vrͫ{&ε=+\zG.qIcsǎ95c`0E#J^{{fgw{fW={._02.TR)Ͻ'9_Yej?`Gq !jV}𫫫I\B9T|+ZQ(zQV 3: huG%%YeEǦv…ZAN25TID\A6b ؇ o@C3%"=XY^Ukz}0QH|n@7ώm\_Yj4\b^$dz/1@ٹ'~QHTՖ_drYVAENc|W5@X[? ~lb>tO-_ިػg* C1I]fd4("U+( [o?۶o1@7>1591h8y˗y pQ5H*H!D.uAJ&Z4񅏝̤e\\0 ]GMTYEAbLKZJZɚ`AB%Eȡ,-, QB!c /$L&ޟsҺj+k++kF ǎ;w܍7\gf//:q !*^1rl {_ܳ=gf띥mkwe/ʙӧ^=ʎߺw+_c$"G-X(2d dd-l0,/~{gΞ?SO/w yPU[[_r>|ܹ wv5au{:™1.X䆃h5u&(u<`S,-^;6;IT`ɣAmEW]8S^a1 'J5өw\\v(:ro!QCD $L0PH| `reY2RP ,/L}&bN-x9bO^Ḛ.9pOcoן/ A9t;E!($LJ1"ΩBZ-dn*jV3N[o4s>NpI%(' hL PTc-U qGR{/]Z]Yɩ4՟OceB/|/CME )~>P5S2c`$I g&'Ǜj4AE^./* De @DT8j%~a&٢j fufKEy!tiFt!H/.-3;Y\?䏿D[6G>\5WߘrR !qZIEdYEa2('K/ OMOjʪ-@@9^?KK!z  Ա#d 9_XmE(ؠf ^8w<&ff?z7|;/(! U3޼ej.coK._|yI* ^Lw!vgٳ{w0w׉=m7f6[>'^zo߹kbjf-7nG#@ Gkz\m`,D*@1xEqNv;wqLѡy 4Wt _/|7f_P;ѼWYc02-V<2:&JΉf( !ڍ:ib"fU.cCtjZrbiʍflLMN4qyA^rw"^b#NWhajQ$֪hQqh#*xm%eLQw~h#jZJ\~}!dCP7~TSU'+C1 Z*&1~6uXBZ؏`JD H#3 p~񷈈9Qբ493R%âDԈ4_GA,l`D#0h,G(F",ۻxDz#".':(5[,Ǜf#uohqVje3S 2d17`!HM"$./s9f18T%m.\3+jev^<}_jvlڻj.wxa7ȋJr;iӦׯ?~cjUT4[_k=WΝ?qf8HE0<גEF,Č]ͪ@@egzns[oJD8` k* HXo$F X$c0r2ONc;9}Z&ǻcg̀z~px~~(jׯM>4Br<."V@΀!6)v G.& xlN s!KT <bA s ADT!M25r@ dj4ӧ޽r؍n pj|F\=xN4>Jt;hjefoo[`ǎ;GO9  pu)K_>t?|/n~eb~K\Yj*Bq烵 ˗/mtS[fΜ?k`^o|l/̀0f۶ţ' QT @xɋW*4˚%HlCǬ{X321;4M4s{bV1qEfՊ#R"1IQ`bJ\pQTde G @} puy_Gz)3RCǞx77MtfcG?L}ez;Jz,`p`n}?;{q.1*IsرĔY;w|Ǟ|zQMfr-|*!Q HƜ(@+5-I(Hg1qc9fpL$ZQijh%e.n0bqmјo8}ajD'v!HeOn|H )@ 04uA0U!#ETbL20|UA J88탪( İ&0v9i)TynhbFfQ0F!}̜e -Y@#Ji bu2D$P,_38&YkG1-ocoI 4h[sumݽ{zB+eM|/ɧ>ɱ~l.\O]z7|#͋ʊd.gW\N]kEQ5p18:?9f}Oׯ:c._ղ=DC QRIiȑP\d*O]*L `G@#Vl߾Q_~W~|˃A!ry={?5cZ/'Zfwvܹ}7^?:99OS]n$qk+o~=tׯ_w^iygZ4/j!BGj9~뗧6M_~Աuk5ϋSE9UҊnb=GQ&*EE_ kͺswY2"< iб! /& +Sfow  J%#{ >fh8TV׻( CUaCρ̌y1ȡ7( &'*G>[=q!Js}^n:Wu|q z~ "TmML=r{~&VC@,~ȉLԡ{p_$/z 5 6d2՛F7FQy6q#(0O:fX^Zz=,I MChփH겱 @Rnƛo]>YTJ4^nnF* Y$4jHةiy}t $Q_kZQ V܂bU0l14JXRq*>V7e˫޹syqn~K\48xKKeG6 E!e)\3qtR+3,!xLUsDQPj0b9c|;?O?ŷdI$Pdi_:GFDb%,+i_s. C@xG 3㽨8,i0CoګE$wTC FqD7}Ӈ JӫH50Zo2_'KL!sCBj8F5@ιC-t%^; Q8oy=uD @D1a'fs/-GM0v!5Uoayh0 S)vQ j=qL^Ef,֌욈1AL7VɆ@#fYGCV42ЗB’-|eC@Gxgy~6t%|yb~a˅/_\wcqaɓ?3\Y[ u{4LOu;N^wp#ZXoת5"ZZZz̝N׀nU3g.<\~-7S%j͍Uhf`pNDȲj*},K (wD8=5yUdwcn~]l۶{u=?tJד~7R0#aaX~SwSywf [oNɠTȆdQۉsHPxQS"4ĦdvY? )#hHP D!^yg>gڝ/`ccn1j5竕ڋyl[?֪ՕZZ·;KWs޽w} _\x䉣Ǐ={SݱU|?3g_z0dY$ sRd]w;y;u.h#`{Yɲ4/XD8eQUGL<44KF&ND-#0 b @f*kN;J%MS/R%.|ġ"y}zĐ-;w9q؁"%%t+v31=}ۿth|[h Ԥdax1$j0&{)0QtcozWNHw޽~҅k׮^Ax[AIQw !Łr @a42CLuFdap *X~p~_| ^4K*!*^(s B-DeA#Cn* 1hX 8ŸD@CT-E29)IEz;R= R8v@' `19ƙK\wcQ"J4AqH1JKrd%6xLYC@ngA Q3_ʘYlrcý%|x(W2 IɭLCxVz pp;$Ct8,ƪ!m!hQ0Cf x[Xj|髽zЎ?pOT^4HY/}aiq9MsW9qF̙3Ngw޵4m]rzDXTuϞ]I TǶl4;ે_WpB(01sp9rtay(|T*n|D*j&v;M~ed>(||˹b{ll<ȑw;nu%"RBEBS {@" l[  K8Fq1aB+@U_EfHaJ[e84+zcum43 % UJ+5ڲmGiյ^?VTl6ƚ.^[}$g8xA0k󱉙L|ĉwq`/83wO>ڡs7DzbT$x^>}7^y}qYbyiA1' {+h ]|A찔LѨs<~1+ p,:,mRը43B!qN|QfjD,6mQP&&B14zI&;Id^ ј@C/LМK $1?[7Ϳ U.PRQ2B 2gX47CmvCKuG(GoigCl燿5d䉈XG нUCAɛhA04Br S "YA!&k5 #.6NpR#DO[.Zdo"S@$aX42ljjxej 8ODU˒x h8 U9 A8LXĠ$&2L+U0`wE #"=Ba\ +|3 'I"H**^|ŋtKA}G/HT޲WZLmCϴ[/,Zp];wݱk~b{sSL]iy9CFP4aZ%kԢg€9I-[i"qLYE @feTRH)1"hVn1H$u֍z:{?uXhi¬G4o5Ǧ7MW*cǏ/9 =n47 /Mg;[m2riC;vl~mnHlD9N}WɲS'Ou:Kb턘ktt@E0ٙ ՀULz/>$MPT BdcQX[ҝ1gbb'<%@w_|is^m-{yQj&4oww@o F2 K̰N M&qp3zF`9V%9tXdMBij:@dg`@D0sZP\ bh͋cfu㫸"9 f-^M~CZ#=p(-MK#|J߮j8-pebetOŔ(3bmw.,_o;m9 /Ñ B|4$RcPҬ(|[HMsfa۶=:{\_6~k_XYG-sI1鉙9D*Y$HCdǮuF:f_#GյS dժ+Y暍zV@亝^tڝ4]{h4j₄xQăGhW@QTGNv Tr=}[/t@ &R}0#FS%D tIUɱ嬒>裟5{*iYz;Y0O__=scC{x*a"/ڰωϛ^zv9\Y昤pAaP!rF& s9$!("4Gm0 !!䁂!s@n-'O_ MVݽwH~[գfΝ!L%IH@4cvSB1HD̰Ru  7n=$4-⫵zrW_2{`0PahT>>Ё^g}(m< IDATZy𙞚2աd=`  i ,5-*  m _k©SzUސ̇)ыqzGT*&V̽scODEj&@VoI5wc+Wz^!BO@DנΥ"MrŹ,^'$&(*(ܔ;26 ^s@c^woHuwwؙ7U, s( d7M4JN- lHB.Ѝ~D4IޕFѸ-{7#`c˭|"PA嵅!L2M bZ8/e4 # !nQ SۣaP8~,'0b 3:w ?Pq.ˆ񌃺]xeFa׷=2fDo>2Z$h+IqdI9G"!q碠*V=GpA8nUa}kI=QMK9;(n&b('0FV^/C9DE bo $cC{<=S?sy껧kN'iB22GLMO\|e0tBLM)2DVj5dt]=pQ9}qܕa11K"p]*X#W0ĸ]27VL֣[kFB,0v4jSHATJyAJD{@7x{v۶s<ѵJ寿O=^Z^ZB,9v<>x{ЫvBJ:i뭯J$XbZJQFf *<⠗wۃI͈L+*"jQa6@g_Ϯ>dqsKYEC(B\4\pL\ _KiZ"2P  |dr.h٬9656^o ʵK#&ׂ+28 M qxʌzV}_=1w}Vow "z0+鐇[k+|ftW?3P\nCWԌ?ƛo/n:o8h|׷n90||S☴llE]pMC)8)WW`n  ު YD f!3\쭯,?w>裏<zyێmj>ONN?k/]r2/1_{Wݛom}{>;_j{,eߤކݒ;%f@nˏn_gޚ<Ʈ;ZNpxghnr/15uD~Wx$z:T$IrOA;4 2@5uNcYR߭*& t{"UeYUeYba@ͥic/YZlw}~? dIbR(L P (c @% .c[pEW&Iё'o?;^<0wYeeufӯs&o}C?>`8\,+kpwu:GZ\Xx"3< qsG 0cese;BW]n a2C ]S1;EiboN6u_6]sHj@@7?csǎz6V7O?̡Cw;_R.A23ʪ? k?W__gov7\8~:\_33ioq@HCRb[6dWYJB $ &&dbQg@drdj)%Q}6GݜC@r^[U@ y/M~x=\_Tݺu3JZ4`fjzWl׌+&H&Hlo FASXE L5*CתnHL<=?g`L{/1zC g7n_t)Cd $l]ߜteߎˏg/_ Zիd2Jv,[M8ϭX9q"|Bk<3Sz%J9 ta_ ?_N;PU2_ԄT3]bмA%_zk|48OfnH8j."jε9q"ovs˒Oαs=!]jcltADcU tŔt ;g#8qJ)-63k fgjp8#gt_23qαce)=bkAzKxAgO˃DĔ⒪HTUvy4MDLYEĬgOU=lKEQ@['4%c!":7+pjv7fq1 D'Ih "D޷Q缙SENbN<TU]~eQwSVUQYJ)\45\w>TBu۷ԩS~J4h3vLHO; iD–fyv\B_tk2ljAfg] =nb{hgθ̉$8cfX[9eւM%"Ls;1)Dwvi]07KQ;GUcs6RsQr(ăG{rtƑãΙ Q8TKpyjDd)@UU0hL,q0hBb.yqh50k2,խťu:LOz[ݵMv@SO^"J@T$05bdS.--dGG;W1崞"b.M |閗76Ƽ'{p7pͯ~r1* J<^UT!2`]\r7#0Uf )ʕLʓnJT1" bB3T!Y#h4#QwߙәSR ٕeI*( 3Ւs@V vL!IR%A P̝ѳ;o3KH 2IRRA4v\j2ir;϶ ̆``FSkƌمG-"7}y3Un1&Y?iQSJ)9ēY.D\"& IiS@\>Bz䡇yΎc7FQL 2Qs"€ pnn&sO?J,}Q GbeVGtwIJh}ukssebg&{AfQ#YW "f(J3p:/|>*L,׿~绿kڳϗgV/\\_ٷ=.#fp+~s^x5o7gFѠxNd^Nû /"}" /N?zWe)D1AU-l mj~R[{N$;{-^rc0Suknݾ\eOvCwCs]5V1 k~Q4c'tmm9|tyyo+}/p`ܭ[7NG_qÿ~׼\8KvPUB{] G()v0ppBY{b_ZPwBPp=졵E*mJ d I2{fB(?6:q='ǎ.tϜ~^ڟHi }+v*13 α^3O/|Uj"1*8P!W4k{k(\dA,e\3U+$12PGp|`{BviL` sLj'kכddiz7o➍!Ea L93LvDu:cVѤ&U@@D\45FyO9SDyTUE`Qf-ʲvz޼8q?~,ŅŇ~С?'7;[8OLd1%0PTĕ%t:nkf!3͔o"R`;vLm35|YtMpgL&Q!83sÝNl&el 9@kJx9PBrEK:WI"now849%9M;s~nQ0hL5Ӧ:R`o|Cc?~OZ)@#P2cvyڛNyʷ];s[}gBvԖ* jf`3smNIuӄ&Atu#IcRp̵sn:1( _⼯ ,L*r4JcEt!cL^Ov"RSShBSUU G )#rE)>Աs"L\0ڬI]2304rlb̆WQ=)`=jL3#-jG;WŒ-pL ,k&1tU7% !Ydz q-nc1Ǒg@d$/A0?}xocG~4.\:x{kO߼qcs}':e=Z^ڙLv,9?qrBh;W7 lll:_[]C_%9SkWBv \;f|V@Ēp:9eW<ܓo]YN}ɠ΢658t1F2#W6ϼpر|ʭgv`i;_zmsc{aiрDܗ s?k}a8\Q[jSV0;8hBbdRa$2`LQMr 9nЦvBdL1 ME `lPtK3Ns˗.WI|y: -wr03ݤtf ;L; ɂTbUEYȳfM!!F$+5, F3i>,u,,BT +(CL_hnmmm߷R %IqM@C$ ElH;)L%?U8W'$a_%li߮"YS@s μ ;_N q:IEh&]!:EDМdI($%ӟ_oJehXty.;M-AH:51>}~d8wIߝ`b&fwCrQ)N(i,.9Sagεoum8L1;U)teJTMEEEA:iT HEI2_B_8< `iMo`dj9L2s BOnu̢ʸ'BGhj=g23r,$TP*2ƔYE4,]JCVuʲ"Vw; zddHĞґb!(C԰:Gt2M8wfбV .G|`|W._}3e=z'ө>y]R T̒%KQTAhsEEwmVVD,}qV7cp=#:,LUBMY+KޚlF`vDN%:FZH[{nYP[6CDPk*뗾dIuSޯ}tRݦw\*Kt{b/_=rku~RLu@#8Cg.C33kwU Gr9竲#1I ޗeR w$`x4IJh%/8P´:]/QGeLBUy͵k--GÉeUĬe[^|in+I1E*]Q[#Ӥ&/$ŖԾx{S)@ HTuؑcӍMRyr///Ͷyۂ 3%Db(Lb1IJ8r2 r`i[4/GbL{D.[/}=!jD(ʃR4!$rPzn0q(BQO}{\Gy鮬F+/G^74M޹nSGa{@:/& kbȽWH{/zqeyv;-$&eXطT BV=Зȃf)ʲ1N^R !20 bƂjvN k~ mx!D`muדf2N_fgi?ϹɎ&ng***:=%xanijW?b<0~)=uRUڍ-կ-񠷶滏<LKz3L45rxy7>c)L̸/5#c|_stWs6!Nb$'L%墯;JB˘O" ƘRF*b"!:p Xz8.ʢmDI"*d" |5vۭn(Ȩj5RS-STIL0UvsU0qFVUYUnci9O)w:Sҝimby 4$QL$%!rD()xNDv\$"dv1D"ll).yiU7olMy{0@##I! i7s " |n`fmevi^D,JTnh`xڭ ¢$hJ@< P.!Eͼn@ʤr 3[ r"{w*QTػi]U0^xێޡ/|_^hǚᣏDD={tw|yBbg>}yٙL_IK/脬"DGʞ핵ͭDDLqק7m}o4s QSvN,ߟ;rh8\]Yʲ(q~ʾWB6M2&ˢt$7>vч_/~v^0 JQvf;DD{F$5M1-ɑC{N>8:~l"VO>].hLE3JUs"YEcւ[c/0k%4# QQ( Ub~"@2CLLFu=q>$ah*٘ ?ׯ:#{Q.@v!)9*̄z媩 `&Οw춶N#u&)MtXE.F@~$k[Ss!{N>ho2|:ѱYi oFî苂у7oLQOKc M[0h@ Y9!aH@&3r#j7N`{Du_oBL;Uz߸?2S|Iyb44DrnOfȮ=.S4JuLujUJL޹sr8ldǨ,0  b| 1"#& #P1U%bbM3:Nd"gV@UI!{!R9F$K}I1FG,& `DD>Ȋ«*)@U XD%uj"w=UQk:&1DI6["@nPt Ͷ.7?>L~WŘ{O^zyCONӂQBSg>j KSLy޷ЃicÝP^ؽpsRyb4˱/U<,jmmKQe<\SK$Ќ%Yhy˳|Y,ibfB̊(KDՕH_ߺ|`{0@+is2UzG5ׯMKy'=[Zv>=S^"W^\l-O-<0GW^)'&U3M{BH #䘘sql5cDSEa!HJĜwL)ۏ !) (Zs) ɓcX6L02bHaZ#*rKIMrrYI %y:ܙd|Fszc*z,Du FP077Sf{La{k#TU]JuX5` WVY4l{ ^A{H:lnԓ<A2N} {*]KhZeA  C;Q| eDZXZwr˪L)sl߽IP.\YD5%ޱct:E 7n}sg;ϝ~#&Ni&)81 "ʎ,&ȳ ' "cFBN%"rS3&4O<' 3g sG?z Ϗ6_)!RQMfΈ"F$%K!J Բ(\[Uw;fm[ -L/InFOK"qQ1GLq"TC fV3ZHM.ZjC0hpbγc߄9tNmmҤUezleQ/(bNI& sdcTSPIيHN49R$VUfqff&SDsonmMQ{O޻>t:y1%"Fft#2HERJ̾HIr%JE&DbyvDliY $!'솃 J*|ةu=4FB`UY wf -Ii[=̮@xgq_sw}7nܔd7팃%ta+MP!A۳fh0k7?!pN^W}T~x7 ԩ.^*/]\R]X]R nha"٘ FVV=Brt8|gէl0%E|́4"obY&At `D~Y6x^' 7Н"sOX@rnӝ)FʄƵ>xpc%[oK)13(JsJT9g᱇_wS /;Q]x/~KQѡw\LJO?w5CR lqLebDweG&~hv n8;>ESUiUE(LD{KQZ"V8'E&(s*`„"1juN4{:˅&t:͈;4ͭ,HȑEvs>J"DUEbR1Ȋt聃KnƍIw:=:Ӊ4ӄ-P$)b^}WҋPFپ~۳|YĥwӤT sdHPt#b_0$DqL;[X z¬jQK@q-Fɽjʸ⾥S\Xm=fO5&)Ϋpd6VcB~~w|wƵ S}d9I*eQnT1YKl,SSjm TP3CZ33J(iyj+:8G9SAfVg>4W?"z7R|OD K3%QIIUS"4tD"D. BgV޳K1 :@˸ɤbDvRemCyvye:tdTBJDTT>$ "EfLvcLh4*|ID" )&Wf}ϱs;ILU *(jɄ}K!B8!'|n"/|YVc| ebBlb$4 6cNX\onmyhaakDF(3:ϹUQR5!Hf30gi33sҴ8fRCss𑘂hbcDԱL\(6 7VG&{%BpvAlt?##PwzsO|Ks`tɇV'0u&T`*8\ `S:m9 fx鲻t}SNޫ?zhG?>y^T^Z]V]R^\ݸYH6|ƾ#rinh SeRJ 1f2jUsnQ}"+7o鳧f@|»svA/ E!"u0f;y*JX7S'N,rmm(Iqᝪwt:5"*}|tkOUѧ7^w\%3[(/\nTr͹~Zb&=LCf"hQ;J&:ٮk%1k)H".D 9II͊H1&3f̤ *(IDMf[Ot]_!6 -۔ԹiW^v j"R1x_mWNYEQwߩsΩjY";G8ߒ)II2t:0lnfiR3`HRAJfB;onfrA2dN7>(-e ](TDDOm'N͛z)Я/0BlN'?0ѿ}q%.=b+~=_Gw~V~w~O_l~wU7.>x|>7oKO|[wd Ħ _d>E]ׄ4gp&Hc\&3sDʺi5!~E_xlKVS3KѩHr;U fc IDAT<+Ccv-̪@p nl?}')kD! #" X(TDA-3HnJA@OF!&Bt^)`4t:UQ1b|4ILYv )jVʢd_DJ4'ݲ 141d|tYFcpz(~'K{Gۖ]3v8ᦗ+T%(, 5A &PC6 l1 2f0XlKV@Y wӹ眽Zks_J }zcs=a~_rt΅źcÔs~^vK(E>8L&l֍RsLո إ$CGd`Ѩ[3iYZ̡*DK?WMMԪ*D4vY$T8EBevXq,DfsYt.㬽2xa&ZiU 3hSޑ<>)-X@,_9=̳<Ix8f) l^5KƾKw~W.\ڽpv9 ׆ W &EYXȶ2+fu|Bh{<_[sʀx|ޓ7_媫%w/]/{]}}oo3̙pluL}4?_X9ڪ-*U#U`bQs=SIE^X}=p 5*N\^{yn+vG=:o><\T=Yu_-Oݽsc4C~WQ&>x3I@%u<Y uy:YDD&kc4d!BS0)AF9rS }pbYʳ,W1چU>\-;ϡmӄDMfs!:DMX5uUU}¥>PYӓ&Br唓cgi3LkRY 7"9(L-ȇu9d@GH 9!^.}\pwEJ#`H(YSJrCQ|N>ml%K 8S}w}7K=7:o~Qw5H__?_Ƕ۞]//y `'~_w^_lw_qs=]߮/}{K|+޺?8Ɣ 8dKcLYqYѲ[D"Ryo5Sm&Tаm,s"9&0$`rf$$r&F1T BBRrK<$U3ܐr|wT] oKObzO)L[W4hc:A5LBPtfhJFMKL]ߗ1@THdq(L "0adTjG9aT5f0m} iPt rFCfFb!!ZHHJ޹bYUؙBsG i@U;9KBH)6u>Oϝ=?qkc3=@얋#$-)G!Tw=^vND 9KVT"&@@D_`A,E633! `t@"L%ΈP ºh=%byf檮awˆ*+!?Ȫ9Q"0$p$K&n{tfl$zP-uHA-sao-h ПφG̦Cp|)~eZ]I=ygǷ;rl@*tSsiO[etpH窝vs>@͘]q** 0r#Hϣn yߌϮH*pk Ù'ﲯtrNoqk)cǎf_xc8qlq˾TOԓ'tcCww}_.ݽpjo/PR^qYt\PWnoΘvHCd4- j267Ɔ=:[G1=zTNyk+gl>w_y>w>[>4,9̧^w]ɓ֛o=uUOy Ç>|ׇ?rd9}gƯ|ɥs9 `* P f6إm/{cGU3C}5#&S&`u^8pdQkn5>@"J s$blʦsrF:C] U?D ёgΩj? 99o9fW(Z*};ݢ3,Q BbGL*U #AιFl3psB6!;;āsD3,(0U7~ӜᕾGA\P5NAE7I 1qIRk"1^';R.]tig7nYi}!AcW0_8z[;/{GDxs04'nK'^7,XU$iˁ}i(sų`ŴP[21d(g U%Kr0BrV*%:DLH`f&f"̾+Z"HL+dm9釪W 'JFąLussŔ Ѳ dWؔJMpj BUe]#tΧ;%$xjRq8x*@ VY\*o`"vlf*b***e\snBE0KvYAC`fBRCAG(Q(眳JdlA|*Mr ڊnWd~QHH5 ܸ#['x |nLٌKBJ|ۊ'dPUI WGV\ L8@Ο-99>Xڕg/TɄJ"`#=Ncxx=v;*G(un6l3ޟyr}bc!>ǛxIu:D&Ӵ&iNz^ƆlluٟѥKŋCp˭9oeݬݱkv}:C=Cfw|䣷 Q{Qғ{Ӟz׿d:>uԹg qJr:2m|dk[n涛3) &Ʉ.lF"v4JVJdޅ4DvH& @+VJZprϲり*ې2J.vTC$<8޻2`)%Y4ŌDTYrd9X"AS}.l}\0xE2J,@Eb]XNקt< !e"}:/e*Vj g{NDd0F`ITvgD;&4T`/b[.葍sOTp=_/f4=M"{j;ݏxk/=eyWo؟|~3~eױ`]? 1i3}p*=3W} H\8 @`W+.YL8d-[JW,5`= *GuS01EfWdD$0`c*w^w]oo~')FB;WU5y#^UUt)(Yq 3,se œc攒$3"#rU( cT@\Ҽ>E߁jNy^UUC\؀E-戼lYmWl/'ff+-%F\.T{Ƶc G# 0WU);vT* se]ߗqJ<$*(!m5.nZ VT5bعBReDUU<^F g N !c]jyU`"fz(pf`\t3",i)[v♖q\]{aP5fZB$8!@ z)Bx~gog۩Cd_|߇+" |Frvb[eUbq| }p1LIV$dPdR1E rsYNy-9%[)i}ܴ'^붾5Nt2HgXrI}O=D,%L}Gj03t=Ÿz=ګ/|"'s4Z*צQ9k[lqFVJG'Ҷ:YSlFf?}ۃ]<{o/ tis6,8@; Y/]ͧNk믻3gkCr;W9睫*.6-.۶}suv0§u˃6۪oNE{/׾'ĔYr!+-2540QG1%B i8WnQ#,b/2"UP̀TD`Z:$RJ&S"4PBSYSJ!q9eWLI23YD P#bd%bTJDݐ)8 j JU!T̔bbk[C"JI4@!j:ۣQ%E>6\3|r-jk(A+얚<M6L?s^J2bL$tK=7\Mz {W]w^*ǰs/~GO~n=x^q=Ug_5⥯0vwN/jW?Om̧Ϻu׎1FmD 󐆘nq4K9CPfWUW0w·`@fuE@)K,rQ`ƅ(嬪l.ɹxYWtZaP4I ՘PL9S!@d4*RbQcd$Q"Q1%j\j[߿uGK]w9uB+FPSu^D44ղ* >Rfb ̀pt*ZHT  `w(Աc8MFr)4X]?({G$ՎFݲ~ť qT:Ff޹lf=p)O0nدommgI`\.Te69Ibb$>=3ɨ'McIT#",1}H̀8lbĆQhR{ה'MQkZt]<7BH&r1 nt\N{%)x`F%S#cYбa8glk0-'6 @IVAց"K+=m5-7h&O:@ᄏTb02f11:G4'_>}J ,*cN0_bA}9|7bY1jZ!j;T԰wun9rmommonr`:L9$iPIϞm}0%!ľo*@Fhh΅Wޑ?|ͱ4{ ~m='>5 TSNX%g[1\dbfT\,j;s)!(!ϛ# $!f&Vve:t ̚"rb"Iʲ%k iT0 t$("E^L"f"q`FBQ) jO}`6cUS190/±W$S+oj*p:.WIzSծEdG":23@Uc gDr+d,u k[ǯtҳxǻ7orTw̿G6ZGx| '?_ _rlMo=?~}I0xfx,/7@Ί5+πEhO)yLEDH*o`tLqPM b-g)TrfH9^Z  K S q΁ >0sc2rNa R52fkB5 |V?r?/?l?8̈a{B 1w޻ UeSӶh}HiwD*IB!29 frRvqu ! `hBbC XӶ{DywQ,1:v<.IE0Tמ:'O=wn<ޝ݋'W?>j[r0?8q̅)ŵ(` MS"'.㐓xr hLEV#cW9/Q$)wQ$<c*kԁh}1RSWέF)KVyAV5q송d#(:v+|S&2լJD3`p~$ T̀0jZrvES/=aHI\` UE& @JG&9uDL77{tl8ajAګf.^dS(5kԕ̐O?TئO-]{ZE IDAT{pC1>(,žϿ,?Sx!:2K9ѸOFL X,f U:\.cSJs;Bɹ&.>?[ kM}Ur!C5Lb膡[7[n=]un39 )g\ƸӒHQJT-F 9IbUUc`*W%(| eF, (!&0+`U+)mRVL5KM)!Ĭ*NA0Xӌ"6H*nH XArΒ MQ Ph-%|pewUU=/(%KG3I)ndCeD2 0 cLNO/HPf  USgT=GmTyܹi8nCWMlyvf̧/`E`nn^ux%/UUZC~6666ð)Ŕ0 LfUbITd֢w D;6''Sϼ6TQM*d3﬈S]TшH~rHn;W=TW @bPf40SBTss$bz9sN"JD8)ƢWFDB&'2t& EqH WD4B0.}"3}+ǫBV1`s?ayc$6ExF#Cah}F0+R)&f_=i5k"DVl!M'Nl!aiIHRD4dl%`VQLljHB)S2K(jZ&9 ;tRʇbA YPA( "Y[ "nzs`R3.镨Z׮9.8VbuCqe}w!y3U3,MG`3J0i  ]e>_rPmsY,+G?D蝋)/Pѱ5~U6|s̳uxg?O.U㴿kkmUя}lI;߻vt|}S` MMǵ-S۹_(j%2Ǽs1&qUɞwXҨ ѡrWP*02شZ!c*7I!!D$s@i!P弊8bDH1:!ɐP+!clH9UȪU[(6U5,7g]{C3SJDڂIsuA`9eI ؋b,~2 30'-^)l̀}h6~q M[3booԩ#[[7xd}N TuSգg p=z9,֧bab@%vjBx};|i9>ƴc3Sv# (: 3,v{ 5@q?SS'mਭ\E?tP׵\dy$f<ݜNm}`^u9>'k?߼'sbJDb\9lf+d # S^aME )! ҧAlmȶ1fjRb%aM""+hsiyr ,F@Ι)1((LC߫{>-byj( )ϻc?GXI2c;jڋM#)Ur2bƈ0WRb}Xҭ!y*9fHzؚ9hz>[20.U GGo=scbf4rrAkvZh,1BV\Wӝl4/DuH LQeQӔ&\IIW-3GVITDY\)fc7ͣ /!r3z)gǤRU(cGld#'cK9 _:_sw~{WM"8GΓڴz3M-`*I ^B64Ԭ 䙐rJ`F d"]}%wV.SBxC6KXUt:nG}NDX}Omۤ ﺺ _"g]2$ iSoL'0!-IrVǒrBbQDU]G":ϙr -001g4Q]{&BM@s]) ;-K"̗EHjc'rSm85B""MЌt!FxD4YոX 3lY ԍhKe,r3#|Xf@dP&g+àGj. @ kf+} +E=.OΆgg< '}1EFb $D *39:I0Q天k:9tKJY$6Tcӎ1B?{" ik:ZS+Jl-v]{?{Ñr2Urى. %昆!6uSFI$!x5{z!yόm=,qNSףɨmڒ>v]Wf`Pו'66=)۪\@QhV)) oI` y@,A%X>WRHSAc9rbԴM]Z[U!ivTH ͬŲCԪ()C]WVM,Py_9moz}oyūnOܵU.b]} `F$.LHN+Hm Yh1D儤jW5;6hJ&ʐsNfs. hꖘ|XZ[?rR]w3gw0\x1a7U~-2YԎš { q69/04`6/L;6MŒ+U!f`TT(VJ)&Dpއ HȮr̅),YbKF䬉R( `q2f,Fdv2Uhd@$6U@.GK㳰q}(Iz?gY~ܠ^9I +Ѿh\MF4-ܧ/]8z\ V?>/S̪{g_2BvԎrҬ \-}u8MԲ܏k3>z#wIS=5_sons"  rdUHAG.%)Q(1ab}7;f%R0f0Ⱥ1 #50w3S"9纮7嘆CЪD̢Es(Xp4@Tp(X5!\8䇷R0ީA&FUp;^ '8"9eֶb9.Lr9Rx&Sd"{p9n}s>/1`ذra@L Lj|DotG?R]0ݽ ѸF1Gv~H90j44jZ(+1`kq/>ͲT0bRn3M,DU"<;G6ƅr)&5]iVUwq1T`I*A`u"mn.vP#$3Ua'YT{"_HHRu 8/`ne!{_P;jy9 mv?X̉5)2d0iR1h!?xƧ|'^9njŢ}#ϫ\͍mcNqHˮ/y+#rD;6հ\8 YLчགྷCSZ!Fb'x1?xd2Y9y"'^qL{sFb~i溤S ⍝rA~?2q{т3j-^;9.yUpx  'w_UMzӛ/!Ch͌Q"R89KƒUuL~;eV=|e8@ ()FyВA?"Rr>Xf2iW˺{ԟ|{}s. UǾk19Uᔋt&0J)Sxd6{,*X}.xaU4ޘUȥELIb%~RLSCAw>ZQ:wT] 绡MhĔ4ŜWLC=>:%7m|5FDn؏C,n6 m^U,Z pq3Xrk.JRr6T:g읒1ڏsaU0w;w4]Ni.J%lBe}@scL4& ;R;`sF+RDu]adEP 8-98P3QP^ 'D\|zW͗_DD"/}6}G: _ W #ͤ}Μb!+l 2f6׏GeSKvݺq̢5j4ހfcL9Tupv>GiQl* D tw]?Zd3rJq=Q۟|4M7COܽw1*5UcRؚD gp~*JF\JJCB`f)CO9BU8 +51&HTU@sV>(@a]Wa쇱 x֔:#wؗe<kvýp7M0)>BUuX69::nXfL 103SݏoWnh?s9_UU4!4u]WJqմr1aiTU%x,Q1OޯB9^Cy&%/47r)hLhyDn7nw^񊶪͛Eג5(s]{֘nWU58Ut0M۬)rr16!vc.4,޻3sq4B"Vλ1nR6xuXrJ)e.SyCwٔ~ŜT%;go^6-RuLcAWʅp۳ J,*U]b;s(\8h ~Fc5lqy?=OzR׵VDs7nvRBbb&C\,\>'!}㏿6{Z`y?'ž{GpYpN1=x70^;< S o߼ur4 5DD(̗r0ƴZE +aվ;W{1 4B"Z-ιPy1e۴m=L5ήxw)gR jd}c4d;HjUi1Xp\U#xUB]aBUI΀fKMr)@Xy}s.XVE20c,9. ڊk *pﻮɹ EdNpK " zgɹ\9_bL6د*o_on1$r.T5es|xxtL;wuu)P}nbqn˺Bk7nv owaVOe|0;)Ӽ!]f1] |`άڍO({.s1DΑ1"%!)@y/TH!8"O*HЮ M/%r=NCJʴ`.;ܼ';.g2?_gYۆ]l1yEw3TvYpX7Maʇr^7=~}o}KOh緜>p9.z}p:fB=xهE#>kW²ZNG#ŜXhuKH\rTt.(h[cma.8bQGBTJvoV=><4 M&;ӻwv^d޹s'<?g'?+y^G%a=w?-^cTuZk6M;i=EtYgօjm(SgbIn)ްn/.6Hx-2&0Mx 㣓#2X\-ifF WW UX4mhw}ɲ\}׋fc4hR,Tw^yksLs{@%c 6c\Q@YZ,[fCNSLTUhó^su]B"笱vZld@tΩj]UOT>WŢMqw:)']'{w@ y:Qe\xw8yƐ!G7CIl@`cR`٥9^^%13U΁9}y7K3~j??ϝ? /} @KefZF(8{1.g%;t}UgC~7R7 ap :kT`ha8X-9ƣP!M~Cn7JI%zÃ5(\P(x $)EzCe{?Iw|q:|s?}:Gv ` 5dP.`Kԍo!TOjOO/0y NcR2:Lv␜d%MXc*Z(ĵRؐ!DCAsʢ Β4YtքنLSSNxZ e^鼻ǗZt. (3xФ__b7F_ 5EO>叺IWûJQ0HPX%J)4w~cF`XdjPֶiV/|7mw59X6HPu?Ƨ? \;Tv'KF2 (޳@fE U@ Y̕uv)rֺE.j$~vVD@ 0)dr\`y8L콿خ֓ȢD8E,\!8GÈI6$h"*wqQ7ozk9"~ShNT͛'K11h͇?鷼-8,jq?ؿd4Z{*(ǔXpL"Z?Nsn"xmLS:"Y8ʇ&MU{u9w꽫`\Ӎc]7,:NYiqOόCְX,0ÄiU1榪Dxٲr4X`.Tu.0P79%kXZ2 ZrR.R83=XuBUfr<)B2S2!!a[7u]UzkWձϟo7h-+'Υd6%"2Uq gk#7ϷpffɨbL}wAȰ@b-vsq`p@2­?dr\ $RO/F_Oy(7r8h}nte,@V@:z1ZJ0n7%nq1kŠC|=pe KNGŅ0^Jc-0V>{-gL?ݾuKc*16}uX2[k9h13iOO~~߇>{PԐ jE5jWל֭#p,cKUf2<GM)VqD2$afHlHq>a}x,$tmO cv{~R4MO?bd.Kh¾[4Mskbafr%-8ZJ&}p)h8]\YwYO}*W 9goݾSRU#rnw*rq^p!b+8c:"2#],hsު-"PqJCn#cڶ]ԭp"H!D ǤeUqh 8?#*8V:7K.8A}CX,[kml[o "hb'@wIDT`HN)2°Z/1 2cNX4vgǾ$`f*(Ќt5 *SQǕR] g4""EQLsyr1U1Jv/׎xhoQW<2򢷔UѨul"u]9 ͢m Jr4ufx,Jr}RNUF2۽%Sl9} Gi,%Us!iX<#8;z{c(8"D M"v]%g.ng%eQM{u㘘7=~8x_rZEt :L1T7s8A YaOIR~/.mctΫiH CaQ `UĐU$ *[5XD%1JC7]P kN^2M_‰w#W! Iy`Κ8$$<<8DCp֚ŹmW2nHC]?CbLe{l浓[7?_;X-ιŢEqyg@`£Aa..UI)_#cƔ1Y(dAD@doG-zY|#Y4Q=x^UBq*xtrjV%fs6N0H%:kQEDZ,fwQ-G5*I8jaD?#)K?|9 ~Wz?׺D׍o߶}k/?"rN8^kk:F!$h*LS,%{G)AJ/D`Tmv&@l|5~~/[D$)Xv~7Ŷ[-Dn**U]W!䲨4NηU899YhCo{gmjy@adn j/%tr|lijf:>b%,EJYbM4MC>XcD9XQ,S ꙺ0Ӽ,m9 " cڤd:DY2w}k*\bL!ar1\HfFCK.E8*T!!35Uy֩@X!!gnYG\ثU af`2j~F퓋]*zkjrKR#|N/y?BΪ;"R1q}OOO9;p4t7܎s4sG~_JaƘa=X-o\;ٜ劀{~qn !@*@ )*3Β19' $$aPFE mzQ5,"O׿ MS/ w*dhilV?\xX4 iv  QZ@TQaˠWM>21 Qy!`^:4_SQ/a",~z2nJo{-O}p M4 )U#!ZXsnڪŚ}7BKU=>Zg?=i DCdM 'agO'?]# dxnNtlOI 3kA!csI00RNlXƂJ#2RαB BQϮ򋕛!gZ dAv9DbE *-_yU?0|(=)}wR␔tV%.50/`/K|Cej<ffiě<{n?)7b""( wxJ+,GGj5?ϦxƭO\~xIWSl qljXQw?o#媭Qݻnykyr&6a=sgeI Ghpzp!8\nC""z^V)E`S _hTD*(J8G4I- k +0g0^Q|PL9^?iM:$ԫ' !|իo|/)13o@?߽Z\swVѢns< `v?Oqpϫb(McBF+༂Z;cmLY~M__y~#U@T's `f$1jhBԉETu85i׽}/x~sN~~߭mONDŢEħ>٦n8pj މh9E)۪n4pm΄ȺGDQN)U>+k gfPGDE5X5Ljږ HSHLi4M1Rr*1E)0Z;Xrvfhi`}ݕRH̥ ]C\1(03:dfBL2 Mc<f~3#(^6M#Zrp`ѮE4>M+w[77Nֱvv{?HD)3?o S@T֢Ee`5-컼vO׮hc.o=iw`V$ I6׼v.‰U jaXn8;YmWv6Ƙjvs{^EXJز 9JvKcA cDI"v Q*vf7F!udHYso|h`t8vm7ud]u)Hn `ɍ!ȃAQWp4ZbUMR@N(JiQ:RLi,E'I\$hCQ|[<<_$uxa.G9}HZ-$1Eiw;$roϫMQy{66Qdl={vJ\Dp0ZwaKdȉOE^Zc G63u=af֪ZoSը R,E$"I>X5 1b3UJp1r)Hb|H\>hmݹƹʴJj$vw  %H(k bwBXJbko+~@]Q p!O lf(uh^u @ iqs!A}@WDa!pY-W; ADy2ܹGp>(,ۣQ ey|{>xAAQ8=y|}d')(D%EYm\_ GI요(3K/w-oo=zѣ' 0##$JJ.9FLqDM˺ >J(BG}a޳?s|VE%{ܸߨjw7~{_aN)HDTkAaV Dk=, CVLcs݇^q ,+[_<9Y_}ebs^S|7۷ bDEJk֤/h`O6[ D"r>MEA(Ed hgӋt40wmXdY^-3AqxuC>nG7oV,י5Jq'!y*3h|S]BjCkMfsa4p54 Ĕ"`8Brmu^KW^8ڇ$H F(2ȏ}Pܹ1 YxX͉%l vS{:f)ps {iQ鴮۬(ښtԑrާ[c%9ݽu3tqyA,;Ũ[jU&3sNN։dGMu M@ZQkLl)ybu]%,φjnvqX\ngxog7hF|2?ػ?|Y5AL΍ǣo?V: Gj%~-s۵-f9(J[6Z+TQb㚮:o;UӼAb~D$+Oáv]mbb *"2e\/&l6CJ ?2I 3Vf6uǓɵZR=K7"c)cBL)Ojp3f RJMl&`PY50sT Z}yya"D""*ESDdMVỸA@FϦtB/uӲH麶sѨnd9\z "]a)$& fmۦvvw2Iu]ք(uMfBH,H E+L6wy`62f$T)1N:ƹŢ: 1QJ)eYcEYAQSD$rՀ/r)I"`I1*%4ɠ 'Q4'q67бN߹|v||l߼Ws|Q%dCxy }1 "Ro(W >_2gQ ~x>_{ךϹ0|Tjo>: J(GM?\֛T+H1ERm%Uhcxz9Y,ڇe9zG>z$p<WFkD25o}^['`Ywe>2Tno nmZk3g(}iTfJk:7 u: k(Ȥ&m5x#2kMv4>hGY6݉ mw_,rkVVQ䪃i up-̚lyy1(Un9!0s$ "x8]լoᝳwW@tyY$w0kw)mD5]hlf~8|ll&1SwxWZ!BAAE1"r:E_U6+ l6Enёsm(,K)30'Bh5ɐhC1ƌFyOD8QZȊ$6h"XP+ ެ7ч 7umBR(/7MpJdw?3D$Ʃϑ{Wqs{{/~?/'?8?8](?؛m V蜋m!< SfzR0CҠ@u_{?)B?rR̠Ma3l'@@r`HLSJȊp6>y<ۇqh.DZ@w<~t7O&j۷.G h-T]u;z1'*61r<%xqfQTxZN`X$׶vVkc mL5ʒ!ZOʁs#%| gˋ`Z\ 7<~$ " *a@8??'O_7^ M ]MR#Hu]iQދ&A@,Jasmce(%kr`ЫMlFLӭ(OO_yos(j9oƓFEA"Ub \%Eɜre@DD B2=鳳 )- jlV;G:@\+D"z~qY_-L&PZHs^ʲL2Zy)$@l)vDk>(E bujȫ3pP~2fQ@D <\l<s3֛biC14ӭ`4 Z/ (OR`A0 └$s򬀹P!@TcL輲:d93]&(d>b2f?<$~d>g>/g#CA<XO\-z\.Oʑ$pއ(x^[k;be^]>6d0._0%}3,׵^Pڝ̊ܦ2L+2HBK$$Rcp1bJA8 "D- RF!!i$1)` 1DLc]舨^VS2U~b`fQ?} _]l'~O~ڍ/y7Ϸ/^~'??qYUq?i8ERD"8} W`4 XMVrTU%L2d}cGq$ QM<8Y^T] 6\S,}jd_ >  !0@\w/!r^,۴gBRTNe]:&amzD{|t:biHZ$` !)Ť*vgk Q(Vu ]@%Z([ 'EqޞAY1B\4;"X N7No}ލUfi2綫J$E,Z o.ƔRR9G/_wvF[{1E#j{6_2+YV?mεZ/OO%!^vGGGw 7QhD$H$ " >AB _Hi@dA.t)EBϼ\l:1aY%SY(TfSzsmG3绘uaq9;MJQPCjL55]1%h9HȒI(@S li&c|]RP޷$Ǭ!/W'*}\^&|߼ ׳k1fuS&!EA)Ŕw1G j9 }\kH|孻/^?L'O&i׶Ea`kUA09Zu""fcw5BDCn{£( kF"$Dd@DL!u:P3c+`()hv=N.N_q~_ #aQaA]p͛UJ+6 IDATΝwTO_ԛo߷_ݤ_ϠA 8BUmoCȭ>BaVZ8Sղ:q>l!W.u-q!&bTjZ 73VF3!C**#" ݗJIJ I Gcryb߬D*1 (6C(Tx0J`ONuRfP` -Ҍ[C 4BPtw{/3ᣇ Ʌ QI jmL1UZkB"blfl߾K&˽r4ֶ3|"jz AqSwmfmbf,eYcf"6*Sbi ZQVJ,.n?4rPF,`lod4N|YeYJASzz歛0`6t)%N (czD!,/1,mQ a4@ѨmrP"68 ι0Sښ]HgG Fm Jk3YV%Whlr1\Am#EYlqZVMGնŠ$"!M{Ni2Mr ,(MbuTUJ@eVF1p!``]뭑듥srQDzDB@p"S I-pT !$mՄ W?S|& Ҹ//8C ߿ܿ痏!c@RZ@-}o7&6yF1J@k.=xѰ,w "*3?;+d6:GOk\7M`hR k #`1DtЩj`H'@tHO1rJ)BD{[G!"ի"uP] {CȈh,O'pW$6)GPi x +/;o]\ =2GGI~|bSszj%oE,]ݵk J}yG~{޽⭷m xuRd0#R޷c_ͧyJ}be2bO믾8ۙvUˉz8Ir(H%"UeAe]GRyAt"ߍ쟍ǚ@PS;eg yӕ8ERR!DBRD1%AjFl84 1d4"n00shc̉ќlF]6˲ϺK:Ș Pws<8:4]ߝL⵽=꜍X] E Uucl~inw{Áͳ,ˮR,Pxw< xƂ̑FaX "Ia6 A*&mhpm6 Ha9\$bt" RlOZFI\ vWB}Poc_&gSObZ{~!?hشk?@8ܞ0ׯT/9l`3)SbE\g5)y躝}0]]H[Wfⲫ2nڽ9t2ε5he8) Y $B[|xNAkbYD"} R[k%"mi{"1EI{1=U eyJ,LA4YVmPe`cwsw[o y#]S{yiť^.|Z}qOik;nm$ww^ߏ'G#|Oԃ}/-.|HWؿIfH)%(TzD̠Z- #cT ;Je\,ݿFsP"ޘS8^"L$I )$H[e88XOYWs0"a™4\(Db1ynoj㳪NE@U]mXjSY;ޣQ>j}sy^w.$,hXyk\S$m/Ƈmw2k0EѶlDE$DژX+-!ƺmb0MsO<)aJiPd:p||4޹v)0_Gj*q1$AYΦjvŠTF7]g3{q9OsZń]pE]_np4LF+p'ǧQ`gkiPcHu=GdDVMc1,}JR۶Y!զc1Rjoԝa=>=:eN!IצDjUG&Ď'e40D/ˢ{I$ RW_@A$1""#>>/4H/bؾgO~E>Nx}'b6!Ѫ3D=nӳ3:"MSy d8Bµmck}6fP`\Jȳ"ۮnM6u]is4'G9Dc 0PF"NY$5VPZ8}:J`J)F6]?pb9胈0 AB$N}[ƫ˨M\A$ "m4Y"]Yt^7 S^M;x9Wj>C><ݼ!]ٖ=fkd덙Ϲt]Q:6J HS>Գ'0^"  Feg<LAh4l|K:? |N ''s'!b݉(e!&T&O]Tlt0'ԤI 6b ,OhgE+bEIyfɏ:3d#HFn\ۺuꭷ eCPGkJn}tgbM^7JNQXzж ߼q;y|EEN)φu.)ʌU5pf`ЮZ隶ވ;n@JTc !CIܹ˲, "Ewnkkfm!%TBܬd6ò,Xc߿w(]vۺf3o==v 唎WW9{"EYY͚J)V1(|>pZElZB чJ1. .7&Ww7 ;8]=|Qr `Xc\6/ih=PBKۻv|4{ 0'm&N@0Lg- LmXuHhbPh 2s'APE?9?H*}Z/}L`?(!$ RvrR s}(#I7^{׾,M]e1{b|1,C6燻ۦϦ]E^|q0O7k7jeeԛZ} "((:1RekcHRJZ'fz9Dp8c0RJi1(WpB DD=(}Y]EbH; !NH,Ͼzvgg?R,~ʬLg ɘSZL&qvi~+?\!߅ph~_! H ]nm? -rզ$z8gu\ &%+%xֶ"Ia9IA;w'ṛ;Zt2βfVK7 vvͯof HCӽg_Yڴ  шժsqe1YHbV*j?v'!5wn F]OVyYE`wcZpq~yL޶ѪȳaY sD3(lm9ĐY4U&CxQr׫ @ƃ@2kꬸqstz^5](hF7 /;\]41R4rJh4]fhSJFB*CJ$7-bc5yd"jI 2tbn{Iמ{N'GGe/μNXmGId2*KAYkw)m]ׅ۶&ĝ-T8qr.E9nm<'qH«:&™u)7nϗڼݽIG|jk;By}8ze15m^RD*L|8eY&rC[1+N9 3% R2Z+0˪[.VVmVgY1h#uO"tm"1&A!]rG@J!$X&,nB)iC1:hhJe„d{R ?DO`3G;|<_5{vEgux'ؾOR|#?ɠD/IDI8;/pc3Դ {޽}s:Uh^ߺys^n k$RZZxGGߙMvwJ۳h`β{X.{JyShs!'u]XqYC$N,Z+TYJ:3 HEIJ)a^a12ZR#$FsV^!uW߮spzJ"<}Z>R)  W23%j Ae$b"O/W]C B(nq|m.Ϻ9āP "*ݾ|~=::]޾~IUG}rR߽uH]WϗkAtbo-rSdZwIsHꊏ GM]ںn.fZKPd@gʶA q:6]뭶UVGoo}}o2UZ]En!CJyYC(2mj2YD<˼s]Hw|1E|XnݺSn4=>9z|rC<:=iǯ^=zhڃ{ogF]c7~7j;笵yaPǮYD|95㔊[Q׵֦ZJ69'aL$U YP)DfN&W[>V-*+RJ׮bS.4T*DWW}xb%ٲ }mڿEޏ㳭{3~PrJPn8;7nZ\FpPm7BYQ6M}(@۶l?yrt^uZoLÒ kol+25K@)ZDy/!%R"ژc*bfk> oau!"]9/!b+BD?{mu܉UN_F#@RCJg$S`k7zͬ5lFG# )F(!/xU5"hu?z}sNkWUmB%9iys`e]PE`p ƒ_8`w}]X @IA#{'êdn1?rzb WR̃#I_מxQ՗4Ol\\! d56x 黾Uc}=ӥ^zUH6dP #@*}z4!!ߵx$cor)0"o`vD5 v?ॿH>LyLlRMk߄`6ﷳIeH{g5{pـ#.v6f~.ɴiJuupe%R(iU1ay BRߣN)$1E"TQ~R1F)EHHPԻc 7ZT}L})R?=;&۾?/zզ'o~䭛gn?gw=LB?tGG''9g@|p^;޹8眒kn:F- Ƙm߽w7^{msιdA ~]ߡз\R&kPE^&7D,JxiS[ڻPkqwz.]dSB͓֫~ |NSס9gkPEF/(̣^^=iك Yڵ{ @6Fҥ*UTER?1H;+T.W/(sJR|dA2RJHX4sٷd\Rly6dٮW9o^f? Zb?xj5wGf6aDnݗ]jw3i&''\M&G{e;c,Rwzڎsz.ó74U}ջwYAnWU(9[cPSZkL*%pQآu]?!%$2ְhJp6c(*O*Џa9eBޕ1&}DڭBp*(Z2!!c 9C0e@. dA`fk\^5ZA )/󟹽:8}q/ l]w٬/Hs/|gny^8~9Y*C~\nZ!1"p,871Ɯ>S  ~ < CL>{pcZ]uf: OW=|p'a{n],boF.YBкrCl6IC_y+BRJd2SI]o7k1s\2@As%I,f-m{^9c&ΪJɹA2pƔDB3 IDATnUt:8-Np۶)s>ʇl!"2F ƔIX+_kLó)3 H@G"rsO)XIs9a 0ih̕kΙqԎ9ڵk]߽{H)pS.g3JQaF"K?K/>Vb1.~Lbq?h8#( ҽ/$vdKNdTsS뜪:g羙\X]*  pTJR˅0+B 12(R29*N%}ץmx-,KaEF5H1(À{G1s/9#$_C&,)f @KdGKn 4]80u E"_O/ }?u쇎h LdH'44]oR8tQ"j64ɤ988PB֔PM=m1_i\.tGfۤJ `Q }'wk~@*d=?߁32VG1@MƐ6d(fբZTlp@tQriy?ރPJXrY"`_W#`|I23Tb0d('͗duр$پUթwAcUUO'96ry5Wf}*xOo]O=#үVřp&2nȚf}psNj~:B*AH)yCʀ4ĸnCU9ka>Rڡ|V" )1ʢ9۪v׮Z;aRB, (0m'׎zyttxtۮH9À^&8 ٌUT}$$wjj֕r>s7tn(\GO4,dXǮg6cNZXT3[ԳEYcx"91ãCQsߘ̎`vTgn?Yu3i;FVƍ3 ˯vp ]OfZW%3R3RE8g"ʢ" EU6nTĀJ?!t#EqiȏXF*eo郕*$ ,{oEe_QWP~c ȏqTQILAAUXNˤ7'_җeXcA4oԖ.&Ӄ+R C7Qd!4Mc "!Y?=Z/HUZPG^A@7wɥhHF`1($<:b"hJ"BP"'ZE,`@F+0 % AA S%lv2s& Yc< zP"P5dA$w('^]7tIuDK)K 8Ԙ^yߪZY,0ky덏1zS`v6f,\rvMe7퍵"h)@EbTjoa*)Mg{gۿ_͢y7~ z٥rIW8&,8 5tl1/)10$Z H`q/wJn㠈1nϞ}o1v[ YƸ$d~9N/b*sZ})%K0 `tf(9"…TMMD Vu(f~b1yM׭{Q`RS@1l)1  y 3Գ'10/ 7.yh+bL[oK1TK0z]ԇ{&GO)N>Ew~2{ȏ)&>8!x/FiK DtU>go] ,RJI}o'MMBY]9Tn(g^VlR_rs>:99n+ *TБ%* Sb  -"XCR!.*Z::E0CTg L9'Ur3Z8L1HB2=@ П9rs?Qλ_ģ~z;*" ?,:eAT"[6K/L^ * kIS7ͦ(@ફl^+sNvsz̠-(*"dER,1P}=Ex\\]aדV>jʛM?Z)Nj8:DJAֽ/|ÐQ6͠z\Z~[{o@ tRVM]U+W`1ϱM8qUQ!d%gS)$C%ct;!1@I-B]עU@/UEFfG!"ZB2XJ ]^oID"~}M|hA>X+8zh#|LRńzWn Dz:M]JY@9TUMU)D,@.a ʱ- XX5P=k7I୷mn[(uThX#` ?sS7jr嘍}gB%o ӱAxʊ*ȪLD@H,HP$(ѡ,E^{uo}n޸9J\@zZH6j| _%sl[YQаBIU5 +G'w߹dPNYg a* Y#YXuQ5̖ SUã‡ض]EԜ\9(뺮J)m6q۶ժ{O'bcXWڗ͛7}7UD:݇*8x_ՓŅsN{iQX`Rbn U"dOl-%oPO.9b.E:w]LX[Snv]gŪRNB@5g뺲0gI"@D@-%s)H2Φ 30kEg%hm[ U]r_Q vDVu78ŢX8s)Дb" m1߯\ DZ~ꂿ/DzkC_0"R}Kgڮ/3>^]EUgg!D9X.lڜ8Qe^/("jL8ʹ1&.bbs)Y.u]Ю놜T tȌD˸!sK"p]5C:D$s2ȪsĬe(HdLBu8S!D`"K:}$R=բ ?F+\?[{R'/pKnb]e]e!Փ]\f[]U L&spT$24 " +;k*Cᔒª4n-WB~ǪQ~r![RJTȀjL1x@aH0Ip.T2 0'ASTFM-j Y2܅'.֯ B@BQ} C YrUe6VqGJT$ 0@FBe} E~ 7?>}p X34v?0ǀG'>b?~˯ܹշ98>txH)YD!m?fueZ**$Tn>K)j5ip;"ֻD@ (O8kSι( 1@)P2āXD2ƌU:)R!A֌&ADd `40]„=QhEwޏ{dOf=}A^,iﶻz:TvhΠZr61{Ac(BAE@-ZD! &+P00g/~?yy@<`%Z@ _׶9'% GΌ_/-ܹ90 نYU޹j¥B$(F֭8vZl2ݭ7|:gD X;<8gevuq^] B;kf"3'BdK*;Ȼr8>j:c~2SUbʥK1XtW1Ldp"a 1Ŕ(O*tLgi߆>9mɤzc  a}oÛy~~#roSrىf+m7NP)l>/9 (W!F"b.cyf\̮vSnHn۟vG'Gh;EJfʹxCQY׬`0d"c"$]<"bbJ D)% DB4D~1AK)RƖ:_olP"[KHܨCʼ\̚CTc"d,>A$CY @Ci1g!EЩ"#8;X}s3#Sr<'y{cGz/^%+[<45'{?Gɢnw稜r!V¾kHb}w! @]]YCH)vCJ%TYkcQ؄HTU<91 Jξr˩}2G'oS`bagɢSC5;o*eDu#~O~] \}G 43k}wp<vmj7vA,Nn*( 3&T~2]zDhTQFƘl:$lC-- (X"Q"fc6)eg:)uTX~>s}u=8{_*l!nWg~D` .Ҟ{hoG SD+koշbɫͦV7XX{UTɉQDi=Oݾ}v1b#eV!M(3#xA4dȐK7nWY̶kpyxnB=KC_3^TyN7o]?XC u#%VRvL 8I WU\jnRDT59Ŝ1'RNvۋt6kVھm'ӆEVqb, (TNl7۽w9SO~v^iۧʇ{FȸtS|paKDm׭+k\3.O=%KYmۦƄxMcouv?=(H]WROC< kv:y8軞Y񭿼zB%'s){EDl*\JΈvhf@i ]78w]%"^w*Ĝ(\Xj\_rq cEPXm:zc9b[zի" (D(, \ \~X?E'N~ͻ|enK>Ow ઊ lInx{扻]:oy_6.X۝Irz~6!}_&Vwεb7n=1ĸﻡ,ʨ9cd’#REĻ P "||L9AU@$T U `T5 bL!DIcuPYb% *0rMfOѼ~.ð+>rkD2H)}wq'GotɠvnӶ R.ՅlM)zk*oPk+vU1TU7+OCD"*j+9 ΐJY2Lp??|WP/~'Ȝ'i*хJAAc¤L̕zw$b~݇Ɂk}_=^~_fK&knLJ IDAT*wfR#(lA͹(yG#TZ\̔5zߵׯ_/əm& a2oSIUX op[p߶J᜺SOH@8 ΅ac¤7I1LDfBcjsɪrpuuPW|b7=m.!k]HYduɤd˹_ReLyYksf38* ͬ!Y'GWSy!Tg6 +'w޹~9P/vCzst̜s.9CDG'\3N4&CF.c4ɕ¢4MLZP@9Wsmߍz18琭.-hUIRk =ѥ1ѪӢ(""tIl33X_o{D|jҾ}UO\}+/YyH UDM~߈EuE1J웊Y iyț6=YSެ''M]Ī&HֻͦnsJ}Ppqo7]s&gn6✛fuqࡏ"dv軡[ qҢκ\ ͺUݬw9:&P7TCחݠ'=FȣJ%A/b'"na]4bMyEATR 粽]W0k3钲@2:b9oH:fΠ*i7s\ 4ބ| 7BDT9&9g˥B W@cj?+AA`Ud'{_=:{ XXQ5]r=#[&`V$ , ֻ:C`MBcq˺%EBtd >kƒј>&uꬪ@;0=HÝߎ@[Z@R|f#>9a*eY xIa|ӳ٥[/\8s'~=O<ʢZǬ3XƓqLq fa 4R IDAx1Cu%e7IY MujTyu]e,"1Fgdx hs||GAXG@EUcH)%k*0ǐLbDkc`c򬪚l}q8yYKBKrCFŨE3c rc qsk)%?8`k7EfK@~][]p7>O,}H˽# aXA&eKٙ "ֺ__}:`b5{˯Ư}jRfY6 ZbT6m׆-UHJdWdݬ?n,6]FY̫Q92%NyVTUns@G|ji5!igDYtduQd1`>-GQ{FnCLl3I:|e%MwǎY_oy4|<um׶mYe=/:{3Q9rlc?Sd٬Ȳ{ڑES'(L!ᅼ,\TUڶ# $\cHTyXD]А[^j;T}RޯyNeNrBjVpRɼ'W7aN:K=ZhI-NcEຆ$"^]TAs}}O-?=.\.]=u>/-/M78y'{_Lwk/W̻yy\;PQ2[̀4*\S!}οO޻m"ж[{2Z*-e6McaI*Ze1*WV^t,ƗlN&yN;$E$+N?{^ B'<0"PIAAY-HRyAEfE=*3D( &UR%eQB}^ ~{[ A  pUUXNz0ڸ4]UQ馓7>ymg?wo^>-具 VW:d ԣ*am4b c A0>˨rΥm#,Ơt|y(ʬB-H( Rx]6.eX:Y6u G@bݪ+>XC֚pLD bJJ!DEitww'ӕ<ʱ>{o<GO~XX-ƥuI""p 1prXPS"o G<4O=7}I>'/l~[h[qeue9%I&-bR!tu :Ay2 Xk˳o Zk)F_^rl'yDLRH#Tblz}C9 ^CIE P3뚳Kkrw zm~C3˴>97:cg~ýj!}`:yvUxiSlkmm;k&yU'U.kꛔd{!Eu|@Rx! 8M!/}3G=Ǫgf ~豧>;Gt^5 5pp嘘 CRDHȄ7\<~D׵ s;Zn`1/w\ySh0_\ tCzAT_UA $$r,<͢Rv hIIC̬XЂ*allό.ṟ^yuNUb&'V=MRiOn:§|r4,*#*QV TYd%t}c"rbkx4d\ھ u= reΧ ,Rf; )`MߵI(ǠԶ+]y>sCB$ERlRȬ !ƘB{9rRPCDτUTmNJ&7 Ѯ.s vH}/b 1&8]#﫚*H4΍'t<;2IU @=ЇuU7 cEQ,sz4P5q m.28lޠy9Tļ][GbG_^Z7~Їwy>o[>c4?Y]㵵ف t}oADyH Y iv V}{Rbf)SB"g)(14 Z4mk #zRϦ+^xvM/|Ȓ1*2t+zȗV'}o{H?Te;yuٷf;R_7Cܳ\ŗ:M^nѨƷ^[]$oCգ_MkፆgC#"|رby3PnD3>ww=sKۗf<0g~ەm'JG}yۦC:}-%1YpE-yo, ckÜp5b۷l_-Yc~ivl^7  N0FߚH{y{Woq1kYDZc "$RF>{7.v:88:{(Z} ADs1bQ hN!E9GDdx$ޣԷaÂI}Uy%ŘE5/FP噱VWWFQ0!zPԼX̳̑wxB d Nkq2(Ka$̋2 =vlkk+o3vo{^~n{`~ Cwgw=:cI> lHt "wxKj %g3"dAu?o>?,Nv.]DW>|yrF۾5Rn;{WG0XGA}Ru)6˲*ZR!Ybsu}r2<~̄ ̇,0Pc"sL UUwKiue^@Ad1 zNȋ3u('ծQc!S=]O 3='W5y3֚bT$I4|rS4 \yf"'ez*Dye n?_P}\۶3Y!$QQ1q*|1,]L)* Zk:rc7/ހz`QMD/ah3k&l^&oy&c_)cOeYvmv~MM*?s:?‡W(Q[ygϝgNLѻo{|+}+>pq^z\:KdTx2[T.]2Yq¥L:XD9B_A󬨐\')zw-8s;g}vh\VbeiWa^^ٷQTAVE8t9O ~q~O; LCK줠HDI[O8M,YA9h׶(Hd霱"yb}X[;Ҵt@Y }bBr}F=VoUZ~1M^f|HD*"*ֺic{߃DU Qtei yRd(r笊p4,(|Ǫ{{RIVt0 ֌1"uu"(&ֺiY?t_D״瞿(1G7mDw>;XT"G}Lڵu./F)r)7WYQM)0n6 xT HBs@,'>T.6s:{~{e?MG~jb1E~[6]s͗Qï|;Zw!2#w61 Bꚦunڪj^WmJ\ώJ0OT^3/ ``ӣO_N'9{zyyVH;mӧΌfYJOmg=:^9]Mӷ@EUc 4ur"&1&CpGJΈ Ruբ]TL'1HLO}S+=d="$@+@  J߿{khO(#M5}-qv5SZ1Ҳ*XDql!DksLV) 3/0'c S+dW4qJ̬H `y޶bQ+7/3=^,bImŨLBl^U)d\ʢ(FI}lv@Eq>Hv u(Π%J}WU[UZ-/-dHq r)[,>sӪƩf_>o]#/\UKw?z? HD_<ۺS'o}hYIUV" H9Q1B e8g?sITTE }泷~__h<:sTr*F9>Cֺ !fxDIH~>rgwu=,Of)mӅB ,\۶ڔERme4lT,Ӹ(ʺmۮUUO@:}>zkۮTmRc\⨊)%ФH%!CAc!qT,R״!gEŔDzR a)lR2`Pb 1!UfN=#`LwVX>Y᧤hBPFPhPi_QCwYT 1d^=07u<~s y;H=}d2׾?MNy~/o$Fcd% bec+G,/~sGQ@&H&ne`Vj{ՁUU{N>"zus措)Q{8Ǣ""|DDD'#+b 䐌Zjk}ɹ,˱[u㧮/˺k'ɢ PĂг#ȜXD*+I!Ɣgyz@-|ۺqxc NmY$ssbN磜,l}kieu9RF{ι;i0aP1$j-ZdӘ քekh6a PP=4%`q8eImXlw@ˡ{ͫ;}qTuKw/  &;Cú ~CS5h ؽy[zM|k^5!WY}㥹yWxV]R(6 Rc&dϯmL~˛uӃfuզ6ˀ/9^Å "Xsk'{YUĚVh}uԩ-G־U $EU!Dbո2ǗصcyK97`g!U3,HBL-rrSY}c46r5;D11Nm}q>3G"ERgsX4ˬIcd4dTR446m[Fkm'n>υ'Cp葲,f3U%Cn<OFDe0KJb"/G1u >s(h#ރ0)p4DhȠBӇiFEB &sb h>6gG.߶zTljX "w:zd?-m%A^׋m[wo_,GI;qlBz7Nkeirp.#3uS}?}]o_TtdchE\`-`^oo_=({G̃+ѳO_׾}׭Gݮi ёцqH]-Ub=d:if&"KBE80G6 1:뺾ljsR¨c]He MwUEg˅&5hxDИjf,KlywL1uv`$1C: ˋ!$hxS ! 'XȖu6TW,/1]C6Ey,Ślyyͅ6tª[ۻۻ{HnNM) plJ* ABlRGZd >ti{vw^}•㻛ۢY;g ׋p޶7Sr}[6 nꨞm&NBΕ(()jbZkZmWd6ϳ{3k $ck&H"BƬ ٮ64L 橇?٬2󲰆vwnz2ʋyg|Cκl6YDض-!9g?_~Чp66p9@au!6L'քK"*'Q&2Z9[4/}u~䑕n;{tty>p`"%Ftr8QA -jJ3h*ӿgg3AX,*/ݘU/O7% A9źjۺq',i9=Y,O(4_|2_Apne&i'fg(Ǐ2 MAB]>}o),kT]7NW`gk++(sd愈Y%N!|3;A}S;=*}cw޵qvo{|yemleʹSLzgϽyvݝݭq|u:;жd( dST Sg5TU5e~hڦkN2SJb UUeUھxu#$ITqv2$nU@@X[ ړM04[,TrUU2 2?;2%q!)BҔ .b !%.,yv=8#hE,\[͇4{խ}w{R0" ̇_dbMkT}/k/o ( ?\_# <ߢ5̧ uuP"sŭΜe{qP4)8@}o9{d:-CdoȌFŸK b Ջy+k6DEP_$pj{Cw +"[Ӊ/r߷5N߶*myw k`G7fS׉!_~goG®5jks2̶sC}ܵ]ʬIQUDdB{eYZ:kUEB Ɋ9']PDBkQ[ ^ NyMKЅ.9Q`*9 YEՄT,e\.Mۥ$q608~bog;s.^Rͳl4:dmjg܉ӧߋTD M~sݧy&z<ޜ|NHT!yɛϜG/팆"1CZB¶iy̶t%D Dg.()@$Pꔛ"ň(pud^q폾EP0͐Qc^Ýd_%c{W=wa: QT3i9Hr%}2;CI)؇x2L&!,ϫGț<$N.Ԥ MK)bJՔ5䀊<(EVƓy]7},"蜿e6t !Tu}ߓwH"ا~ƪH q4jqdX]Z.]E`hGfT.o^ߺb@0wbB#Uɲ@C|i o 9}E pApB|IT":= GFeWn~:=?^p]k $h=3ϪoU P Qs[G.mY ]HI.nm]_heUM}սmfQ4 VV|ezaT TI]NJ .ycHs."3q)`_DwG}AAi@A3(K6|xBPܸs qr$]e0'>nqU8ؤ C֗Wb쫡%10q 82 c2"N8@`"5U]%(ڦe~~^OKc(N8Hdg yn TuAXBκvhPBԅp7,9K{3Ѡ5ʣKKdq3vrz=Ƙ{WXXC;m`[dq]I|e䉋f}Y.]Lk>|G+>W_1f<L5aag]Z$L" mZA P$. hGE]E1~`A Y3@b$c>_c$@R {=BZd]s4vbjSZB0 4ynz"%,G%"{3BaEUiG;;sͼW!@^aڬYۏ=!6Od!\D_ܺn}Zfo|.o :kFd \$@T@ĐQ0-poHyCCku g`; Ӏ,9|iubzUˢdKo2;8Ǔ% Q$ĨDRk-"׏&N1ʡ\Pdup/)޻ږ^gBs]{}Ω{$p'iD t $" [qWxjh Ҥ;q҉ر_}Z_<̵T\U*^:\k㻈6,*WW\O#x_5.l=WU+eA(Hᾉ @Uk&RrvWj_{_wԶ3Ɖ,#}oJiW}1#a@.mXEK.j.RDML!p RT \P)5ue_mcö IDATPK/'?O,+D;̌ T7%Sf+7ߘN皩ub6wI.W\/ׯ4KۗK/m,G7'Hׯ4;Y* N)xbRoVFڽI)*Z$ u勍dO}Tr 6lJQto*|Z.&EH.2RAB&rΥ`.RR-+&!FblS3,jF &MSJ.0(2R19T:1;:\nuF0ː-T,E)yT#^ b)(fjLY2#!ɩAPb&R͘ROH.dPfpI9W)!񍓛׏V8VLG| ќbfB׮f)Ycm;K Ng8 ~^hέW+U_-#$ D s=:W{R}˫7;w] :ܶr+*CN{989[8!,ONN!9L.X!@TQd83\LLP (s!+HcbaE/<f{ۻ7oV5%)?8­U%3QI'"*YMG}O'fU͔yDkp`}4[)U5̈́/G?x{p~5xǸvGt\rM QFy+AƔRX9bʘ yOGnfE*" PաjB4 8|gvzsJl{d345hUUz3]{\@ m]k׃sm׺ ^H%.&BBU50"PQ؜s}$<%S1Nːō[1r!?,dK|gwvqhvήCNUHDZDx_D4)AH4Nȥң!VUEm槟~1g#vj!_ڿro;|g~M>cO ;RjS@)kDZi8V*m Z,1C%0:xvUmj#s;]KG\hT]g9+\-E R,Uv鴡~MC+"Qɕٳk`C&%UUR2V+if>460ΕIuuh:֒$ n՜f gFkƬCEԪv{&Z(ЯdII` 5^<\_(ϠHtVnq}>'}OɄd"Yl*?NOi6 `FG[V]My{DU$Dd5zp`e흹` UiX:°\ttqo'L&`DIe >xb왐 {oFL`jL(uDPՁUJsMUtuxaXomvIG0 $UdC6GۻR Uu(9FHC9dGLj:9=~@͊i*5C #r"bKU)@c.(Ԯ;B aھ|eozmZ̧?mytC+vZl6f'+t6OKĎ("yldī#2:9C*ρ@k[G˷ĜvB;[Pd~.8R0%09?+˓'~q",S ]c*\}KIC.{L1L\ ]ZlKA}+W{ av33fU-̫ j/_4U21M>g̥0:9ecϝ %K;䣣Ӷ nv7/vb{sfP U#rf#S ət2{;GJ?IuzwjMߞ LGzj.Wxawgyz4 fv -p{ Yb.׆굣_OvUrV0եd)v'sF @H]{lM$BC޴8~`D4~4:Œ`28A Bfy&umYxivV]kW[&湈7]B F//SYwb^x`_S#8G"Cιݪr>2{ d6[<T"!5z3CFfRՑ"|56sιhʠZ!WU8c \g/<S#94F@WSba>ksJιay |@0QsU)uM7^j"j* CL]@tk[ /9tjZv(]җc[듒cU*}ŋ%屈U@>xf0FzƈJ`*f쁙7Dw19i3ݯS{xHQMo]/˪CNȫڵCx侪3g*i4 쨦*BG{RhSB'j$j3U]דy7.%ƣ4; @}ey SqwOf0RNRJD:!bLXP8RU% 3!V/>z3taCW|`ṞUiZ@;ySE"@4%䏺}o4z{j0yS#aF`}Ÿf.vmc>l{g3~tb&&ޙ'G ֧)Gb*`NwOGFr5W԰ ; a6ЕӓX!20%0  sԐ`%)Egs9^8Wպ 2 zC?m k{a~n&\g䜻fhȒ?ǿ`X$v4u{z\$8* RrVQWyD>vƟt3U1T"}gQ"gÐcdk:zrrlώ~r|ϙF PĜ.\,)m:$歛*SCӪr*-&MudyZU;HJ:DDP!'th%KQ ">Kl\n\G9Óv2A* 3>׫b{ۻ LVɀ 08331Mm:[%d>:> *j]BLG_/?a'/@fjhbvdOO<۾garR 3d3P95#9CM1z紘R~2hJ;WJ6>%O\jSt^k4f: bS⡩TYy/O}l{qy˩c?:C3DwQ1d9bpaB\ѡ}ߋ$M3t1m"@Qi,t4EmԂ~Son9.w۝3qT5@"z#ӣv]ڹ dI\tnsE c8ss6Dp9!30;KLJQ5rΉaB(K~9cHNԀ{r&vFRT}F1"qLUi5xqo1 ;;G*BZJuDľrxO["#@TQgLR$ͤ;)]:u hH+nٟg>QK9XpX#O*@f:Խc$4311C0Ub aۅس*rm]yK`h !ގߺNҽKlgA* Cz⒨I9$3WUUH0 L*Gv4[LS):<.z#0Ȁc{P@F3K[_;=]^E`EDйa pPqrά!T][7 5BijP 8jFsC`]]pD3PD3S1w]];ާe{S@T=s:W%3[1eX6b{ ЭOR u\ $tl%-NɄzkFi{gn0b FHb()3Mux ,䝈Qš:gFg0o5;?i%4CCu " 4m#N y?S9׮Y|#.Gv륦% $ 4fVUS9sD3C:/dj}."9>-R\i);;[uCnZjujd0'&P tqFŖD EL2cqLXW=A-?ԝ~u?ԧV!H !0FQz$IF@v޹3TrI9 /ر* LKQ{)O,X0~ 1"֤yK~ Q5 ,jW~ˏ<rՖ(gLv@`3^[B"& l\SQQ@CDfUU=+fj]a00őQf#/}tk+zUȝ50dv|x\9k &"OZ9=9sHc4u:a^lp;2n2fG=9A"@Bj\Y=+!EE7A@ aP ݽ/,mtfʇv9UQŔb.yo XQ"@@RB`77OhCpE>^;܋Qwr|U1'gh`xhf,#n\ѡn4~ذ+[zx'9.9;:mcL)f@kg͵_Gݾ *N󋈠ňP=v/oUcg=*@ʞR<:@d!w<wԮWQaF.-PO̕f+E4@nb(m ArCp3L raVČfB0ߞƼ ^o\?p<.ŽfZo\?nM&8 f@B0:SGg"y*_mªc6 θkڋd_=ܓ2 0a5iEziU%#=;'f˥@U FU+`%II``HU(9 |60"O)Jr*pKкgakk#:r)%Jɇ@@5`&d2a֫3>,>TmQ< iLy<9Z  TTJ^gq3>aN,,k@/l/g?T3P ˗чIl&&j@ ф\4sDLD!y |O_ʷyy8VP6f۶9w{ވ5 8 0/ f't=b"K`Rʢ6!EfޙO&0  wrF$PCn]ĐOM@嶟НaHːn\;e\jݽx|zʎUyZ-DRbF"R3l H-UL%bȬ2yl1$»`N#U %;ˆV1PR7 CB@+@Hli}c=w@wsgOf^x^ܱ!qUqxN;^@tN{-k A}W J `&HbwL|kZU`@9F 1;]ɰw%`6ζyt蔐9;[|h(Gs,8wi+4n8>n% Z,_f^z|1+/h)CnZ=ݺ:]))Em9N|o?@v&+1-kU{wۭgʗ?#Bg Ћ FZPuӄPo&@ rL1cJZ"̄j9 L`j%09GH.eӳDWć~9v90s)0MMs%Klj DC!$>b."\, W96#DѺ2 r)αcX%+'U^lmnPyPDR~^QȀGW[Ï Ccdu`wg! "& F;_mvTG5-Z,Um~b6t DGR¨{[O=wB2;A`(Y)Z.bl1eG1`&ETMJ̌c\̧!00dڤRr!jaK7^x&D xߔ@t<9?m|pvL@VLJ1UM4Mۭf59v!9n:kI1mޚͶ|W)ԟ}Wi9=b J40dcȷMz%0W} D!M7VCN{{[3|S֊.!#b7[!6E71>>!: Y pIn ܉si+#[9DZ 2n6 0ݮ9X"&r Wѱ708=<1 J&w>K{79Rrŭ70#^@(fHT~N)!:3DU͛Rf 9 읔qFI$bJ΀#f#TLʨNt0]#BLHʧ''?H AУ|6/*9 D Jm#󾪫ٳmf*R)ĎT)w,jDD1cc)ņT__ߜwv;@ ة9)EMTJ)i]HJ) zuZ"ĜAD:P6/w~SCG@U\wmGj9އ K<R~_}yC%*_O'O?ssj`CG'T9s"F@#GDөwΊp GeuY| Tazt#d#Aƌr!5Q7FW9 IDATzt1 [[~h"/c^.;ZtJezFי5܁~G5ߣ>$xD6#$oEr[ז;zf2!e2 h6Έ1<ĘQKN2džōFǖ9 FFtlIM 2xB0Cb0=N=۔/*2BM >`Ry[VU%9o`? cn1k^`#?ÓcGYedS,YԌW1m^L ygj)f1uբFLDJ)H13z`y")4t1 33C&+ZTPJq,6`%SFn]ׅgى5"fGz!fC}XlC)|6kD/ja삪"tRH>|g^2Q0OsL)7P]7s5k5㱾a:oe 5vς,/4Xnr|3Uiߊ?:g92S4qS`ЫiE)ܞ\~121N@5rHFͅuަ}Kxgr\ﱯ;kY9t2I) 0^r%v{9љm>Ͽ򫤭ml*""G?>9D4 XI-reRDĶun#Lι2DUP,E1%UEU+"b*x85%aT*G>,"0+ӦB>xTOG,\v'$1!BDB@bBbz(hB̈&ErNcX\UA9ǎhNI\a/P72;%Kbbru=-9}1nH ƪSVP5PqՄH.n?ⵇ嗮!_*;8X?tчB͔!YN%4 yrJ #h*Yn*#W!9Ly"w. |7~/KmmW/(@$}΋YFDdPl4Hڥr-k ?zt:_I5FݸgƸeE3EvSOef?6+(]#b{/#h} 똦Y`Nӭ%9qA3;59J i\7u\4 DwKa| ]{ _='o"u oNNx"G/ߍT:Ijr)9# x,Sjb"&UAE dfmbhS u%%vЅPIEb3Oom {뛿^\ i'&N sP$e*({'U8g0Q0CRL拭.= n*bC8/S=i iyg~{{IDr4:77kgkQkug0 U "21`0)M/)vSi>5 h)lյCbEmdCLWPWNpu4 Y~7tĝ{HFoHjHo-~bCU|9k>c(O`*"(|g\C`3S}JŔcfA-9}/"X."uD<3֫R>TXw{7ms3UȞRJfZO&)d]59){ofW[z~S Q@-Hs%Q yv!2TDM JN`]l{3!@ISLW^xt2LX@c"bdPuJ) p9K.*y.;O~9a)Yu_aHI_11yRʦ& U|k33@_Ͽ77(Ӹ|`<-BI=udRMiRԮ\9x1-|IJhtW] nHF**mz,Mvy߃u֔M`nwbSmBua{[h@}GEdfdĠ&M ߖb, _ڻ'Uf8i6Yt\OXE|vCذC6ƂGe]hhN<(Z !8+?)=_~"vy6!qLU0 )fȘ]RT-vQ  8tl9Eqd{eH 0"RJ9F# ;6P+~>$LSb:99FLEPf)x4cP.*;<:^,~X[&2QPS"9&()+h僚|:RNwqbI~#(f f)B;40 r_8<(us~:iĠLf pҥlʎiv!INfU)B)UJ3RCR^J/T"9`⼻h=XZ9{g?{F#ɶ!) B9NI0R!lLJ+ @1" Xزd[lI3WwOw8Xk;=3=33#Y?5}ڿo~d>Kg^?˃CtU..uT$_]yO 슲"Xb*; %2:-3W/8lKuܞ5E28gVvgɴʅ]UE0BȄhZ U^#"2ޒfح,T^كISM&< ]3P<;'`EDbFĤ ]UOU*uZ?[W" |tzfP!#،`N8ƀz"?_J5mTMsc XD-y,#l"Eibu7E ur d )^ZѬE** hإ$D\CyN}bgw Gk8郜&hW^Q}zUۂ$;i"Vhݶ wf_R!f)>ُ| |RUEOk#rG8#$aq88cS\K!, b-E":*R,-]僚)39\9WDxF(, ]yUK>~stq}t@]nkk+RJqN9Yдq!1"jZqݺNGyiḍeOW]-$ ˩ҭ2T g4\/9ZK~kǿ;ч>kM0qHf]lCd"]i2~5, * 7B-4ADB 2[[;ȼ`#/~R՜՞ ИYdLmrL©D$HFf&F{ױuLϥ M( UӦ$ƀVn]|G,}t]ݸy y}ClZ:_$n>ìlmOa$)^fUPS!_4n>[;۩!  F7_NW תvjuyM PʭI\mb }ʢPϚGt6jFHu3OݘmO'DO@|]K*+f )`wSR0 bl6ڃyD. Dc:~b&TSS!b@0妧Ogqt/%l_L @G7VWQBMmyדWSJE:X20yO) 4uq8:Lj+gI X;@hCJ)(8WSBՀeųcTfRZsar]Ƭ[ƮMɳTS~}gnT|W|>X53Ӂ@P r)&U.LvONb۳9 rFĔfS!X"Nt{3IJ)lխQ S5w}=4trL}y'駞>9^? [[UʪM=of(p}nQyb@HT 92|O OwW>ztgX.j'&˾ .wn!rcH@@Q嵅L;w?Fh@P7}(e0m?SSR*i&eДZdrͥ UzNd5IQSd\ESJR7<:A}{QWz!(u.pm|sO/~eQ_zM-q;\xgO5tb@I@[>UXU"#*j<3diםDw4:7 ;@Bflip;xNDH̎s5^ ݍn\MU,{4Z5tE*E7$2# 9TYXĤxsȜGLM a1!:v 1;iXW&jW}Zsq;z+|EN}b…i|L] dQ)8"$q艨!&!jY whדf)!8QXrT)\3:`VOvv](A1A ? kՒbگyW~3C[4u|:C\wQ S@&gjj)Qk|ބ쳻~G??<iD b9x?}JIqvUm{7Mn@`X-e891dS%hT1A`=Do޸  /_ڻVןبZumž9K!tU B%I7kszt|\ %+ۛC\]XUAׯd[Q@7ԟoFRzj o)yo7ah#|}MY6 SoGMNM2Dh*>&!ڮ>~a6/s?h"0l8ukgN,=N*Nir`H$z 3ՍKg/ j A)~_6ؽ} RЉ: C)H\WX4^wdu%YGX*6 LrbB44M2sGd2MjJEcroopNڎ~\[D`:*I)1_oY,{..xr0еf2ۮfPJI*2V1:cL! "Y'I2<2ǜ Hbƀ ۫""W\b߇ZVlTC߿=x;| uXg?_ + 3 YP@P DU3A`41DQ_wx'k5b| l&?I}=! ")y3: :XR\nܺ>(u\FݍTT3eU !1l` IآE>>CEɢ4[|_vE+=6ݤ&UcZ#$1fn*3K9w4sZ`&Hnd}IۜK]lWXɨ~C9TNkG:݀NuF7#e`P5õ/_2GFq: ={G袘xC xC{4Q||739`)r4SWKB]8n^{o54u/ΙK:Y]154xoÐRU!Z* 1n^L&m?T!hN[<)]'LA߭m\!8bFZHD8IM4IݠsSWH !w g0j?].& 7aZZIVm0*P"2=aőPM0ZdlP"[UT[dY( 8TN@,vX0Q=aTR),t盿[O}\Y!b%F,DD  *1Y UD@^]SnD^?_lp^e@q4U;U7Se#FXmFcf; 95&>L\}꺈R.wΊRADƔL #0$jVCLbݢ3T_zCD* :Xr̩U1 n臡 sw|?gEQ^_|Ys@cպ>: J3isj:NDd#$nHfj)!pX Lb.9 *DPE0GCJVʴ ^!kAƪ`%K&YSkKuKFShHP6ZSē%'V7'}__o}M7 "83_K#TI'G+wy~DM_sFn|hY L|`jj t*ж-2xMBURaê=kN,`pv1;Z,PHDr.4pmG`ی3Q'1(&T"|{XcQiw.̇ضrڙ›j~YpNlM+Õ}@=6b0313ݙH TU7ia[#7dZݺpqFyH(14X"māOu}(8"qo*{˗w _xOo/\rʻ9bс"r.4H14&&qbeTg !xo2/ w}a<] D4 P;:X wTVyR#{C*Ǭ }?އP=S%k "ys9lw<6}l]o a]ނ:ր`im anA507U S>wr h!Ēs^RE#R׵L&\ЌFչA'R10X۶/-@z`ԍPJL$IKSJÒx=$@\.lr-fV5?O|@FthH` @vay{"ҕ f&SE W#f4S ӳr/lo?1qr97m.q ]>xqw_:9i'U_UK!&|2 {0E(CC4D2S! dD2.C;fa6>ʨnFh %JJͤB0k.i Ptw=NoYW;&vYe4 HĄV5SBM{v.\[,_v=Գ-?l> ȧI=FP}~Bhk%컗*7-}^⾑~DW[{3o2;ܺSy f/!n DGcݻ0K%tZu˜x T FxEQ}GʌՓ_XʚfH[~wyo׀fb .Ly!;t&D_s|2 v"s^'´-AFJ֑Ɏ,!^o`2i#ހm&̗7Sj)G|罊xrN)b!\JqLN 1nSB&1 㰗uyj9-S#} }։u} D=in.vwv}9|p~xO}zv)*q@S KϹI% CJ|Y>j_RBCEHc"D< yà93i9Lj !:DU-F1X<@ 5W{mɕ˗|;qeokԜ c5 \וCB@@3Bci?/ǿ>AdM_7m)UpXzokOR;x ڀdrX阸8h@H٩5 @ Hfh`H:Y1AE0bbZ֫vROX!Fe?/& 4ѱ ~'fmeMH%$PQLd[E"dtPە'dVwsS((S ۚ=R}&>"yT0C*)*V?ݝ$IтՃ*){?zy+}>5!C]U VEēK 2*BRJ)XW zշ(!*5O'318Z,WI ;dCL* h HQ04%F)1;Rؐ HrJMn޺}҅mդvYmmo_Ɔ &gaFzĿ&fޒח&{Q>Vȷ. pRr2 iwosN+ZfB \Nf ( A66kT&tfֶgh+@16k'1uSOf~vVJFIiHصG@ HA %5lfOaS/ v(Wd(.s.nmNjܽW'4i]JCj<| OlbV]NֵnQ$Åh5KRb" =rNiNjǬ 1T>0ݮ>xQ7 Kx'Ɨa|2X931"`bۣXck&*E"jFDj*L!Jޡ6 J4JYGeI)UUUI #CP4&Ӝ9CI-=abu̮jyd2NQ 7oM͞sJ]b9ү7wvwokz֝a.Et'aDdTO|diC ΅9w EJޱs^HJ*xjŠrQ3 ?v)8"uD)XԾ>Ko͘i4ꆭ9FZ hQ@" ]I"] =^o\}O|>;U)jU?x正m*R_u_8>`pvK_ }!t2S\cCǐ@dE f0bpn"Ϥ $p<]u7^D JIUS?U"!V9Y1Ԗ۷yY-$#@4S/ȗWkz|fUV=Ӈx{ocS8]U}eCUqU}rJq2fuX!tjIHelՏ]0߮ sE!\l̶fuS -ffȒK\`A%yD~Ӿܳn/;?[?mjNELL@UG79e+qEL18ׄISLc.fsAD8`o% LD TRF Ʉ+lۡk̳'EGȊE"bHO[+vU;Y'~ BdP vnHˏ4m߱}iAlcڃ# dkB5/ʟO| Qq2%۩R^=ve{yV)`a=KF1ͨٽxș"bs~?&Q@ l tri֋֋w"* " 'ṊTEؙPi&u` @fے ib f0vYK&0ڌSm}Xվ^y!׎&b{ߋg3 9[4.pq2iDSDi3+,:K{JLup% G'[WR)탛(n2 #TDơƕ!ӏ1@S?ߗ[۷v FFgf$딶PP)jfV@Mf2m+MB@8lň4 9烯Bǀd$Ry\s)}j'lVy|ͬ:d$ԬMd"&fJf0cV"ῲl?>OD}΍"2 PP!#1̰"D뻸:c+j`4t{0,K"fd>TRQUfV8Y]t:rRN[7k.\b {P IqMNJq0 |h6"&WQl?~>dBn??< vz&o(Iv履)٤ 9|~AP 40UC9Q}6b1w\ 2&Q0_rb[׎A!\Bc3WCGGm@kb/8J#mBΐfNT`[ڸㅙCpYDPI899!I?,b>L'}H/}@{K<+;Bב͞Ynp7|SZiÂoԺױc q@v0ƀ(F nkr[ (EGW&C%NURՈ!:UxRR)Ź9eQO n@ȞJ)mN <:'VsQ$yOv/1ZUZ7"6Ψ~6عbwLJ$.s fR1IHjHyf1$t|qSDbKUghu SF\M#"$9)v}_L96@0=G'G>>ړ{tURnμ S $"*"*))j9Eјb>(RwJȣOj 띝o \Ʌ J|>iڵeA$Plzg~W}>A<۹!pz0<8oCz36{M<}|O=u"&BX.O< =C1 ʳnc`> #)@rp㸞 IL*l`^) pYJ103g0QGG賉ZܰFmpx$%1 L a_3cv*5W!yF+ܧ3~֒YDVZ~Jƈ2ϗ/_ӎ}K=Ҡ{{@w5}W.o҂W}ջ8$S vDИ1n1Kuf<o]*SRr6Òs2`SʥMCR)#"}+KIRRΊ*P$ %IIO?9FG#i:T~GAU3TiM9D4uZ0;t=@̘Dd:%/s&Z-g[{Br̭V*T}bXLìja)om}\{q4`5x__g߼spHG ޼n&i18 U3SPucTJ;:l6=>EO@Q̧/ֱ`7"fhObNUjj,ʥ7$'E!nX_%@(" @!$@O١D&fjdr꼪H*b FFllj{Ŷo ^-_tck/>lxpHP|շ 9oI =xgB#O\L i&Bo*/>#A FfHTw޲PWhj;1:LAq H9#s>> tjA?Tr]{xnXRaLUMČT50)"7OF KQ !2iKfo6! .s{|RMg FdLAM̠b聈 PuT%Tw예٩!WyМk6@,ٺa` c3hXW#c,Y 9oE1 !ZʼnGG[o_9<*z13)S zgs,؅P%L$PTr_Ձf.PFݼnaPEK 9E?Rw;>:Z@L n8I ̓u1?UMls-r~<orp=g:WZ Q%d$cu9T]58dz"!;3ÿ}ߜF!h/]}hʶ69P1M']G՗SC<}f@aܔ7RE$"m ɤYLv IDAT+ hj&̊rɛi= پJn\[2&gckNe\tgh< Hx֤Q!þQy{:ֽP"jgchR8"E0b:e "!84f ̨>j=S H@}& !EcR<"ILlh fRX $2yIRra7a#+Ef?s4ԱSq y23*˥8xSOf<{cU Rn-.Ϫ""QD3s 9_ND De`5+RHE mmpҮu]ń=6j&sV 1cP3J)k"rmLM~W~_K/??K6;L7OӢ!"Q1%0D_u. A@U332ȼXz^ʺ[ ^kPe+W.- f^8P͋Iu?tg~&vHM c@](E4W8j|hc6eB6^yF;oqy$ lc4 SDKW'v!41F"(cql#)ף1t;XlH*sUKPy"GG&,39CwkÝ웞>/ڙuK 2u}_R|XegF̯8^u Q;U~{+ W  PMG#T&5133,39g7"+4${8g%ͷfeC헋N MLQI1gBTj-Zt*p|kw\:bUȹح圣 ;Ss<4t0CT0zXo% m` fXT 0#l7g&86TUB#V"*2NB"y*7U\絠sU: :&{Z(9&$lۮ{ .YЀcgC@YFZ0u9"E0xoC?u?Gvhw" c6.(c4 Us,)IFPcWL4\JY.< [/(Kɺ4wvd5W}&djŘS4SG^,y3ދ_A.];8oS8di;_אk:ûm΋& 6Q$D丬`TQE^ OeޛYar]ޒtUuuO,@ 6c;˜@ld!?dX6AP8?$P(B%,fXfary/{s}2**++!#[|oQ"X5A01KJՆ}]|f+S@}>50G@2> @P}Hyr `"Wk FCMb;o 1 pBH*ɶe@  ܅u{PypJ-vl2ٯ}z!tq <;kQ= GzZs'% |b y0f cW <%[*!,JRLe⢨\Z;A=UWxIpgLPTh%SPR50`s';9M"0~6m]߉!!AYpLєzRU^C8Y$IS@*/ﮝk2E3CB.9eGV"v%lqw"HʀyL##+{S$麦 bD cs95!/$I#"} ,7';3|U%<D"BDUA(m""Ȏ sщ`A];:sù.Č@Rj. `mskZC޻rR3r!.foܯ[􋷿_?Tsjٓv`$fZ5tE>gfJdK^Kp˄΋~p!BJ&H"gΏ#{3bv)$35bsFòNsmhEŕvڍW'M1:1.ЗDH:X^UHڕp1A6!sU,#xHf)rPÃ]~GپqUgx-je xn N$OMmz}tc~N?_?+2KF]Z); !j.&6t!3"1a`vI5ӢXElOs{lT4&U< ŷ^ PouxvĻ>c)*W,txmP$\@⭭ε='!Gp<жv9 < oA&2"Jٚ>쥲>+Ms  Ll{ 9gƞTERTQ̀}@4 `v_ۯ|]ZQ&(iRC r`j XQt蹨="0bYuYH Jg67C@RCYn}<h Wy/zT:HQ1x>}R7m @~?%;-bwj1ݲmҳcl0&8iss'_hBҶp_]$H1 zP6sC.1"bsه3KƓD F݆= `6..[W^h/Wt-b k ;,_Tj ۨ뒛tH0 GPT* ̾,H &6ŢI)s{:mI3\,ƈ"RqoL^5UU@{ܲBc6̜w{Å+/]߹@]VjjdhFњGBSCCYLEUNEkj*PgFYզLl:#2!S:YLRVx<TѬ@9K)Ƙ$$_E4JYU[yr۾sN枴N=O{D;8b F!F.vAEemxXƒ9RI@3QKe]UDt]7-nlMREV)G>o;aU~q p=.+ؾCG|oΦsvu5źsׯk` xy11w]; 2|I#D5ܟg- *FZnC18+#$ 9QE"]B^f=Qu')1J1wFHU'tM1clkҙkU9#H"bʞ̜RÈ,BA,,S]״n-?>Gs: U8r$:d$DDF`1.]vdL#!@XhRT eQ0h `m9O t Z#A[|v<_Ͽgs__Dw usG# C{ "nl5@1I:mKtk;`j0f$L^_f@DUY2ŢSCE4@Tb;ufXbT:d3cvf84WD͘^jCk{zy.y |r'=:s`gNyx߾^gIg  L"l*}g7<+UJSJ"sHDHTP,!] đ;s,mMӔDPhUP40Q@ل4I5X Bg))T8[ <:~T<| )#NJ8 }fyTKCCruxF$ W+ -s\z?n_Kgjbc)$3RJ2@bMspִ8ή线MW|7sN Beʊш* L\(9PL퍯\~ٌvnm{3Cqֵ+lmh6pP%l`c69bd?/|jӽ򇶶daL8`w6wgFvHe`FĮ͝wq:-8Wp 1κ0NUڗwEZF*zT=ׇ (K?!5Q@ L!WmΘ" h"rmIL T#"Hgjy`V1wʪYq zI%gfXo{UQDdDd7ďxxY'"|sc}h]> R^@ eE#N 2MthځkQDM̰܉Y]r)"(fW2ʴIS4ƒif`)"*MWb<3Z;f}7v/khE`Kg-9ekm Nkej!c<d:Y},o|kO1hV^1W(}S@H <{\W8yyWNW_酳t|9u}ۺD<2g$:#4ԓzgz'؆z:_L]$ /g!F(TQ $;d?;17O**Ni}(q~7ޞhUHMNtb1JȄ d>cWW㢬n&'*4)p@*TlRZP_3*3 LDV;>NS" (,676DKD3R Cj"< u`D9Z|xI;F̀)!cۢ;C̪p8h\6)5̮ӧ޸КQ%ѤbY Dm%3ٲLr#nS_5}s:H {Ddf%eL6!hsǘIT)\:[|Wh T@Av5ɏ)XUqKg>p{k rci% TE"xILM?~07MIԔ3)Y*!sy }&$9j>of bH/|S|ٗy?1ubZOjXJ",\3ެ'Ԡ)Fkl_jcvhR [JFbBYIu4!G~ÇIssH jڹ O𩏘I"`t%xOeQs^5ԝ={6Eܺ[v0#tЩA0-( 1g4&u]4t]0beT].jUfc4L)k9̘2cK`c|uOi \ϪCs2oo?wa'f[j ~詍ŋn?C("w9ɝNпr~tlZpe*y\Vo/Z`ZWTx(ea-Ҡ{W'dQD ND$7{/XsԔ!!BQ$1wn4X釿6"腸A/|yPR`D*oy[dFwkxi-ےKs!v'C IDAT"1K!szњڿ[z>t}m'Vgz(223fm绶/xSá!J ,S=K- 72 g<%# duf`*KfX+3n^xׯ?Uՙw ^t@GUg f m3 `pЛD&9w~w&;IJŅ F7 CG677N*n^5g4[$ס',1 vύ`D,ŋOZ1ިTcT>ŔbaX#ء[hlpHNN ""ELie&"F4UefZUfE&8rdgΜޞHJY)G@VFl@Xy'bj,` f UKMZKd\dg{Tu.yo+=7[ށLU‡'ݾs=R AҬǢBV3LIѠn&K ~OU;p} @WX`Di<Ƭp8^5B@$Q9D슞g@9#TMjF`=]9Da> Iw}SYFq2p]1 (DPvo>:SU;I4t+:Ue")Pi$tVgp@=b"(9 z3?a-@DUUo^/Z=_|D)C(I3 "y"X b' NW܉%QP34UCPQef̎$Pb]#˺좼}~Woxw|KxO7dB|co{s6auH85|gҔ͍kS P^qC]K}En vhc ۣXn)ilgbEtN#t)ĤL =/f ;&DrQN ^~/ȝ4CQ7oL,9O.rjnFxg/ 09P[Dzyl1E׵l vm &~!@0` 8f6Q5eq]$̶'7 Aމ",KXUE5]b lֵA=9@91}EZmʭcvh1v_71_pWz"466u?_jZp, $04EQuY墝KI QDDwx){A+> b/  ^3t^'|[_|7v>xg6k0>I3)NǻӭW^_v#hվ2–YiB H)Krm)jQy tgά{\B ")#1v;D,ޥST&7v{vOIk/xh6Yh\8PnyJ /Q8`*1B00 b1јd^EtcdOZLb@I+\Y(@ ! " ֣a?/]g! YG/Fjv+K'FfSW)r.]ڇ_e_yW/=y˾ ~g6ͻ}O]Gfr{Df%!2Nı۵U/nҽd]TA=&eJEFӼe"o\]>A<(jיy=#HG&/f]YV f}A)LEWծT K#hCj TM A-YйWnZMf!r{b:z _pŇL7| bPg?r`8̪TXER @Sp0\1!6ARpd=ȯG*bLTƇJ2T)j0f5&2g.S_/|ߧ~6@IBbzk.λi%w* 9z}>cH&XNh}ٵ ny.!$  $I +Vn>M&#¾OeYllАI!%uw &bx5  9PBj\ag1M4,\0i)e[)IREq[3W90!2&Thf&&" A|azqoڣ{zkϒՔ7lx1zsuG^ DT;,E{7S?FĶDX3!Yڢlq8\smѠG)#d#Zs&ͳF q _.Ỿ;?/~jS(lQV#ʘ.&M)%1 VUә>vQxX:wUx@j *MLTJ_SU#1àrgOM۽W}Ƿ~s܍wO_Q ";d7{{r0a"|cXݣUYځ Ԏ;Als T`bJ)2Fc˪dbb) ]E8;v&E`0ds(@e ( cGZ%"NTW2(EvMڨ0++JDF2Rĥnh$$dER$vU*V.HgDMp`vxIi8EYy0~!켚9R{W~$ Q,yDҔ9Q}b~I2ob l6{}mNҺZqR,+NJ'7SӐ},%GR^^YzMh)LXfzS&fl1(1%f>3UBjf*S21CD`S [uD)%3s8+r!g< &Ӊ!9M-ϺՄ y"ٹGп- _|.1:& ]Ϻȩ'ee ?O<;n;ʓOo?'oko~ŢgX5gj[xm Uo>I\!$m`` FcBhŐIBK8}=Nڋ!2s 0p3`\ @肅dI7szP2kˣucG>S?v=U5x}grc|eow/U35qDȯwoVpn*G=<^Jj&"dDTfm=Zs$. ݠ54] <{۞z4ِ "亮%@MCfV J(&u&=#NUy ,ٴ5֪,u.5`(I4+[1 08Ss @6ӭ`AAjE$@1Т+YF"BJěqe ƐbL` . 5)-|->(Q]Kcw8$xcks_7}p\c+iӳ9r= Wyc߬ZqT%ŽIxz/.8qJ禃ϴl+`fY%$i0s1_dڇs1{08s:TEBUsιU-8HcUɃ)1uz_S ̖`ׯOf&:b)-.-:%Ǝtz;Yb5l?p1%< Kg'ݛm8*5sy!m|QWU3(yρ@`B,ýԈjQ\[tW5Lu銢(39Gٕegb}mݿn8~_<=/Y;mw'-3v1E@@^V\['".ii@/|G Vb˵,w|9Ÿ}crS]jU _ĸ@f)Y5C"_U8t!N#PUd70rQҗ숐B+狠iI0FĪtZ]צ, G;Z[YIu;z_TeA {{"# Z,$A*ع:Cq7|Am-jLPBS(vڵ- B!@l-cJ9{s^fڃDoOrOA>U^:yZ$%>3yيiF]+-y+!S_xrmwcYQBHq{juŝ\uTTM9nfR #"̰>g@U Sq\;?baIs6 G#Gة fyᜈpz4#)1#XE5>v?囻~_u88sUE,7s`0Iu1bDEYs F,LٹL$hEQdAr3;.isɢDuf)#C]yڅs(4ismPLfV C옹뒪l̏o|Oc.Bu܌A@etxD͠b@+AQr?ԵDoOBIdfʋۛB`du#_RH[FپvzmG_\JB0!M @ ATC=Iߨ&ЬN .7:ۛ8d.v-#?׮Vq:9Xޘqf@̦6]۴Ę.!$0DM 4F)Q:Mml}!Ll20"H^l2+΀ 3׃Dl涷BJh7f{D޻YA*"t_U]ߴ~~m_{{x;[;zx]w%+X o?8!fݝyDV Ssfފû3823!k0R̲Ds6h[M|p@ b("J73R9Jg\Sʩ#TRኲ(E\l2Ig._=b&TCa,-z{H* Zs}Rg\x\k*SE(ʂ*b\uYu!v]Gz$IBD\u)Hʨ.#rXS"Y W8NHpI. yUKmmѤi>U-]r?~䏿r1(}<6'e$x\{vGe}z5t&j1t;[rPl Rl4SՠXklH@Л X Ĵ57UC"3D,4*&1d\z6ݛb=db/Sz>P"SPHdIER/1:.SrVH"@$w^TE!HJe]gDEdwZT5̦p /ap(얹ҜI9]/᠞/U ~Lۇ}lg>lol -K$"V |>~_Gl, 1#3 y9{=hkU:HyY!zvJi/̀$Q\="ĘP2MZGLLA DFp zP9 P9Wrٳ xO\—dgFO==]Hf_,Ux wD,^+З{ K/[zp1#t_z.As7wv҇Ɣ8D3+f&[p^!Ϳ" `E>w[@%B4 mp2Q9hwKZN:'8cht(Nu#Ezdeئ1 MYӏ^TӸq P -Tq,>\W|~cҴqfuӧhT] `+@pP-%2X&Iʹ`MDHXd Qf R7`+)z),`Q)y3!D+&QR4vADD(Z(rq+0kz 3*:j]Ȱ޳1W&] >r.cOZT7;(<7DBz_ް#ѸJ{B Q&W޲0b彊)#O'#U㈇)Mc"9'Bjs6Ss.XR`G;Gǘ1"R#m/  "#J?_C7V ( C?=#%0v"cc̠'u[T&0]ivr%8iزj  Q8ߙ, A0A,]d&۴w `/i޸^:/Q\=IINB׹y+ Z"λ'~ܼ1vlB, \mf%ٙAΙ7[}[]= ܎maܶ]Tm4Zx>pAs_2x2^aNUb$$C{a]\!ŸSq?| mǾr(YvV׮cjV&bއjf8Z۶ӘSԐŤxx$GLH!4Be ݞ4%ioo565 ,Wl"\IFv}ɈWø2Azʯ6{_Vp0~d%PaGpbc o>CAfB'4B)O.s[ CFW&ܸwv~T!: DL9gDT̙+SRNE˴79,qb0Sf1 Rrh tiC DG!c"ΣBFH)"X۶UJ)VNHo[j8]_Ul~iP7qLP QqH²M>ضg/*{*]T񄂙')>|\O~+Oʇ^_z;~⭯oouE~5 1,fdrV(v&Yf R ""PQ*-l\7o2E&dXtEU.KfBӝv @*"t]0 ;Φ]5rSd@Qd6iP*,1F&RQ329M㠐 y]W ELtǚ}j!Goίȉ+ }߿+Ӱoc&͹m}gOba_9{d+]'ǡ/l{[d$=ws<)B2DDk YV_)ѠUPeԌ`۷P+l1s%(!!UU%9809vZMDHLErSϔRޫ*9ZSOT`jcJbJ9%+HV&$FG^*Olu]4"cj'uC":4ݸ TU2Vd-#yvN̄^c?_/j'/;m&z 71*0)l fc$վc 4YVW0Q2,Эtj*SM:;;;wƘ*MgS~x>KuSWYj]rz1#xBxϿG?x :=e h%>;>J{tG|?{|j;y1d@"Coza֎38F |81&| ,9ER3e(~-L&0NwSJLM .2ǔpZ-ld >k6{')kWa4QE6 [?>˿>â:nE q[FUm1O6$v{փ$ǵ9/oij^6{( heLtX2;"uwsQt3Wsi6/EwcDQn]/+a 6-Da7>y7޼qu^]]AYdoNCpβ㥫D4a~9HrdgYAyT4'$mlnz݆1fb鉠 "HZ\vm Ta`޸ZYQw.bL)9r`1(QV}Dhw)F0SB#ܶĵZF/Woh[ãST[3+]YQP Lf=$l( TR0::aU1@"ܸͯq[~Kݹ}?gC&|] >šWJs]aDS4T`(vxGXٶ5O&3pvU(I"&QDM4Laqo˽JNF2CL vﭮ޸TAډQ P|.`Jr rͤRDɔ~߽?V5 $ZNr}3si=\|9

YE"`0ia1g$rIND4MgeQ[zvU3s" V8zZe~ֶiڶuH b*Umfaܴi-e5 ޭcT|F9Kh)YU~엫e3e %#|/3XŮ21ԳZp8yS?+~7~mn2";Tr hCЍj{H)(YdarfNc.NQY7RAPD#OE!ň8uV͢n0ӝ{7/ cL9SfP6I^ g ?=f׏a4ݑƽMa-S#_o{"fZUo&9gHYt`!hs'M=iM򘲊"G9Nq$(L{z:cNQU4|6#bߐsR1y;VպP!\%~L9Z7DM 18 ir6,)'g? Fru99<Uo-y鏓k>sأ顷úVвnmH$ܤ3!|&kR*D_x~q EB13*X>ot" D@4_`9YQȲ xE nźP89P3*Zˢan@$MLq@t/Of2Ix㍧L~,AtO_:tAA@{w|K]psgg3#UDD `x3Ĕ9)q]DO19Wvfz լlLcSW*;"#skֱ'U `HV_vmX>Uer̓8 >uJbPi2 iѤHIbr\Ǘ]}jʣO|BC`Ct޻4u*02C2!fQU,)&SH: [,]u# !%"9"? Cu99Ta40$s_aSE\&!^0R%><(wB:\;wI IDATq2-?ϟ5uXӤ?k<}x=@'g޾6@c]{]-~@PbjeV Ƙǘ9_T 18M!Y8kXJbJ ,jPE{eY!CC@b5 !<;Q_-w;/10mۆ醘 ! 3ITT f'`/ O~dhj=TifB&d@.ݼUM*h#= N3XVneTTB#42ؠ~\ÌjCBTaAWz  )76z @a4ʷo 4/.rQ-3!L,1Ib@ Ǎ7r4!%#bY4o|b#PUq01`[,C\wg<@Cx i;?C}lnJf٬1U7 ϽHgIb_vikqx16MX#n 4=;!1Rzݹ<̫MLskr2l u-5*iCGI"sM)0JFȑ6zO#he} >Y|'TucG0Ґ9mfb12sY@睨 cLYb'K;C]iv(ń-؃ !s@`h{ށb;W^?7ChK!kYؽߗ;0&|~I̢/j9"+q8cSSZnF RdD*CpƕIpP{b3ԕKc6r}+Gu\lth JrĎ4%@4` rj$Oq79~U >^js1^&]'%ɓ =''XV@*wo~bIW,~~ybؿzs^{s3 6d*τ%^0檪0v1*uSk;-lnP$b4Lf:m'c8H*S\zU%ªrJ*) BE@sNc\aSgPQO?fS]wǿP!ds|%CD eB3)vH15uC~>vKdjPf'1ʱHV|)&vlb &0@`90M1dS ޱuދ݊53#oӟ|IGFɤ:4.dSrNHOr3ؗi fYp`C'jX"N4<&g1qNbcr@B:׽3l_ Z:.-HzxN'}蟀o()O|/7nrr-qӾny˓Nr ț(Z7> wޑtcٿ/>{KeI Px<0IPPDLi9(d9E4IL)W7U5{fM[&xoC,I hLUE;S#JD8&۽=SC疫rGTǔ0:4r25g6<Ͽ?S{RxY\497_9r[1$112朋 4#s,)cb59 *3Lrr1(zv$sp)8gE޹k?Ʈk:K.+g @ȕR"! @}G[S`".N}.QI =^$vBpqW~t#W n<+7`Ƭ0ysʕbc*7Uַ5[dXf@1qTMc6zF?ޕxfMTT{;mZ`̚5I$`be3 " s~ ϓM'{8f 涧r<~AO 9y|GiO.="/< t;(@CF.U;??vG?{WѴ SΚvڭ>"GI)Y j*R  XD0 I{Z "{.iH\T΋ʲ%FB^W>xG49pP>?0F8wEUƜePh%+{`HP>1F^`iDھGEo+'Qoytq^cfõ+K+=x3e%CB16MS>rrmxErkiԪg)}jy4uﺘRJ1٬k) !hL|^U>ҁL0"گӿ]S_+u],I;PPw1-`pS!-xCT!@Q941-ΐLn5_1}m~WڊBR-98f5M~_Uw-17 3E$FTȀAcp.xn84 +?*SQMOEW=!9DSCbBS罌#J0 b͛*!"J~1lY~;{Fܝgz>rN䜈 9'og?[-wtL6l:9cLhj*|GQ%U1 ! 3` ]Zda94Q"PC̊uG4I\[U&jѤmРU%v>,圳(3/K@yfaGIH`YM79RC(NW<+".IxfWƦn qGf&1KbDdy2#"Tm jR,,(jZ^scv*,X[rNr#)~ESUӔJi&*jUB줩)V~Ӧ~+s3;vbӝgJ[%"v|S_ozV*`i@m \ڪ]j|iyd{*Yq5GPĹ(ѫ;qTpNl6&PKlm72D8.f'ġK21>':&j9BO糾RAu+R̀fh2NNlkЍis47;wS?/`qu;W}W5ӛ)AErfM% okW߿}TdIiꤖs$dwC`chڴwT l2YҩN*HXD4FM)wYMS)UUnj 0Sh*dHIƤbQ$p@RΚn hcL[a/2 o3'6|@rY.؛r帺j `Q$jDiZDl4E6m%+SJM1}*CK1L뚈b GTЧ1L[6PQ׫3bQ 0Ꝼbd`% # 7{ڝɭ<,1I<9jD9遾\/.:5`deCHP3QPZ|e#ߜԎ,ig>ðŝ3zf`B0l=q_yhD(<$ÀL`(S'1Pz3_$̜ f>H !B1Frcꢤ¡!DLM@_Pw"lG{r޿v^LJKY&vics< Rds@!9_&%Q A)p4{,T\p̒r(ʂ'fm"fGyF9Er2%@rySy|# p&7O붩gEkò ;$J/ץmUYۉZF[ud293B^\D9>](%֘-ƃ z}ι33 GF;molۚ {##>pT[1N}z ׻CO=C~g®ª D 5Įm]S'ߑ /R:^^[2$1Ssg)!Uȹ=uj4(ʭ-ͻDs1Ƙ"1#1 RT R @ $!$HKCXg] ѐSj"t1x$qa;$3c_l IHvQ._{ n5"۫ݛnzQSA7"b*gTLNJR>Ԍ) X!fi/ӫP"@22Iʝp4+W%&4*}U-:l>4i05 P @DBRxz\Tŋ]6(AC:Vm"wJXx)<'`G4=w#b_ta 1mY8W085h7騿!/;>-שׁ]_pqc.Mpi\9SZY^FLM!H"$"c5#OS"@$Rb郪Ώh*9vD* jUeǀs@5e$ʎU9 &f*CsM&Ēt 9r>Y>"D_8]b(苲iF)0 ɹ,cngZ@D30sѱ',0{c;zCM8}luXxrvbLȔsU5 Q8tZ+08k=; ط*.`N{6շs(Y 5miw-_K:~;b"x?։=:Mwqa@Dw7} (bVsKIW^}* u쉉4  0SNɼUE&QS]W iY2N7`&FkyS|ȩt>ws<@p-da2Ո/Z@Yowq7f:T婗GDKLI@j7UgGKKQ1i4{fWPFZkH{g IDATkNzʇe> ދ?޿um-YvnsŴm6f`|m{"Y*8{۴sBH) 9@$]UUۮe""܅w&*Ũ*Dλ^˃<";v#t1P RLd{4 b|uE[ߒ.\ 7`Lv3|SӜR; ~#WE4!G"090 !)3)<9*,Yf4K)t6ߞMIM۶(\ޚZF.X:ʿU&.tm/gz/Ϙiq1+; `bj R"*"[cfEPD 趶WfP AyG&)gHhYb'e4Vލbv蛦%r،C^[ijۣy$(`X'Lg*b99v('v0LwЍC>&3^.5t yJ,QmT5rͰo(v~y_3ec-@; #Јٌ}˯//rhkk"޷ox.Z Ϊbw#7p ^u%5牙rXQD|k;@WN=vErHܱw.6˛ʹ]^[-\ jc+dA\Y1Q g#$ ,"1;qUw{LBc$bΩMQD ȁ1"!9S8ސv7ό}-:؞|7|wf9 Rr>Z[U^9GBJLŘ]9s1!1SV8.M;f權uӖʢ0cNbTKDlI3M(9od驇 b%ykKl,n|ڤE9ՒsX%Np<^e{;,ayIC9{qv&ϱ8 vEgh *`b&j=@`& 6.8ȩAIdhL1)IFj"Ġ.ď<;3Dɗe"Aj@̰4*BjKC( 689,,)eR8@KiEINc#xBEQ[x};o쉴}ܸhط.hf;JSdDG5g=l|i1>Zt zwD{QMBm9q/~ &SPUv!:"y5}`0'`9j>E'7J)VP ~P̮iꦩ"x*0@&JʒC3Q3`#Xwﺔ9"2M)u(9ORFv\v;H\бxv]_gܠw!9XyILSY (Y@=Q'bPԋyWG,012wά-fU;LJ2l5Mѳ//t2ir@OX UD"g5XV%+/dWBgf (!ۭM哛w˾JR@w4VVO姞G}3 )5-ul9j4H7x^@_""}O/sJwW\PfN3AMB;05 4Dc?'ϭ \p%Rf]FHZQ9(*=9ޓos)@dݼ.pFlM~p+/lNfy8A&o`e UDr9'1,Z w.I2U5e"B1s/#9MCLH9;&rRL9wխŮqL)K«_J.‹G<{c?V܎C{ n A dҬs&ILd0D E<#y3-RU9**auفvӴpi4 !4]% iR)_Ӧm Б3d\˴ v^co6m2zb nͲSz"}n߷T`0)u]vཀྵ D$"_x ߔyxk<_,^zxïz}]~GluEVWs⣏tc?={i?O{9[?v[2^R$FDLdJfӛ|ڹ?dyRȑsQb%T DKCal~U EA'f3OhYȀ8vF]]m|Yj٬!fu4rDh8 mSVUz4PsAټŁw<1^~9`Ct 3S{v w:`Uy >rCUa1x$~Qnr~NPn`a=S @ MM $#4ox&ۛFԴ]6lc7 {j`*LL` f!®EPψjwuMCHDl`] 昌 VqY3q1ضٓcDLf]W _B;=Yc17=)_z5mAQL{vVfj1OϽ럪,|6x(I(K3Qo<^}5O7 蠬D!,甫r43e"5<ƱLͰi#"1 ;/bλ`Hw| 5R x䘀Mά,- KG4f-"M2tÍkS4Fn.Uef")@_ 3b}-rλ; {ߓ?7={|3O~酋V nl(nlƆjSEo~s槚o_l<ۿտ|V$DS;,]lזL!זݠ(rLTb;=<1E cJ5TRc4ʝT6(9e"fELSth"D e!D[wH.kdOFdN/W)=z)ψb&^,YTMYEztstCWvKDUe|O㗾'?}v#[rŗN$]G<3|vt~ϻ&''WG~گ<Lf,Б++O<ζm=(|"IҀ Sn }(9CkmspY1);;`"Wof,#daΞHM3`vL0&ʩSR*5C&TkԵ1DŽ222#4zA}3-}Eo|c{=jc=/ N^hlMm#p]juOn9?ߡʹ߉do'w xCw]L(5[D{ohU ҕYvz>Ɛkmaqٺgj8`:321aĢ;98D HFf0Q30_BL"%*($QR0 !DD@sXMd@(*G%{`vcrRy*{Zo4#D涉3_k@T zޠXR<~ s&VF+FMd+W^Kn{! LDl,gfzm}twbTEgfLTRh rٳ MMf Ȣ GX '`@dx;3 ~_-ol j*~Ҿ;UۓLN=o? {>@wS} r  2hx=fYr;^[67t7)!!ys~4A٦zԹMjs"b*;9=9@Mm5#{gYz>UPS9:YU35C*tcG:}xF{ml~рc@$@91oΚ/z~ආ^B/g]@siEĢ(RӚw뒪Ue6s[3׽3wNjp\V.=xry)v |.˫KE4̱kcȷmjü@1TUĮgBYM=7`TArjD,KJlc$Vc !r]1RXޞL~Hsʔr sFA[C޷2sH㨁[]g;To%]fRNOGxi8ԭAC7YK7Ҿ{%txGulQ\w|x#p?#QBAYNIM3p }0ͫ.^xPm[6b9[*ʢ*d>Q0QӘUAsCQMݶ]5cDTȥB9g!Cjc۶!"RŋVh܁w2/cwzWWwNW;M,PRRe#y?C= xtf1 T]9|JTk1%B$Ƭ Hγw]rИ+D22 )e1PMP4#$F@)eR蕀 Љv8}f%hT̤m@3Q5욮Zi[*NAѐPl!ny/{o9tv9_ߟ~]? /T%et=|Oؕdre}kGtH<"4@rRZV%{ YZQؐu;0sqXTmEQFS@)9BP%s1" g&+bNбC+#f9eVUĶm88QEWv113"hk{Hy#f2,jr+/tIș  kw)*2T!:N 66{΍_MJ/}2 .;vwJYOv?H=^み@#jV 'xUL-3WVu::}mۦK.hD茺dp4*Wb16{%"ZLt>ڒua{DL=J[bRMt]BEy+mcUp(B4iskFjy>o7h4|k#8fD Mn =}_[Zeehd佻hlj؎&/4\Z&3en?W@,b1:*ml`蚶4ZNx6smld=u$AArbҘa />l1^9pᵳ+x"&s0WP:|f;xV'`m}qv{s>|xս >bď}|c_}˛?ucF|svicVWV#؋D˂j *69֒@EUse.n"{{m|maSO-CXZZ]c XZ^:T8Ν܋/7M@&cyij+؋H̲=3d5 fDSŶFdvf, H޲M'MQ it}}m67Zd@`$E}_E8ٮ ߴs{ѹMĿOVeY[Vbt?KjZsٶaE@O̧xv=v6eh BFe*9$9Kn6 s'y2.vDuvv󗚢YLyiTqplB3muj)E#mIp#+z=oTsY?c[OJ}~S~/ >!?߰ T Ď  ș#Ϝ`00Q۶1ds"er꼎w`Y]ϴ.zn.݅3Wpbג?CU TDhnLjmcצs{LI&ӹ 1!aL)FmE4QrN); &I[iY$jf.bbPUP7l:Vd:ڶC@UB&0@ `<5E4"Vѯ]듞P*.'y7ֵp Rt_ytq0j._CαN !u)Z /|(obL]HoL(x#0&}14^ _ڑӣ֫8hei6M@&#x2)z)y??+{}G}(f\y>zPY lUs.g-$YrJI͖cf/$ʀaؚ.^1!Mr{]y $Ue(GK苬;0 zZ6r:/\9]]ߨ( hdjUzꐩV-2T ҫ}wRn.V&<'krevg!~g,D́TDd6nv Ft,mHļuZLSRBDܼ}K: l!B!-E]$83sJYr3؉4&bY( ;fYJΦ+k+q1#t{)h톮e ݮ._\]M.l̦-!!*9^I?+O~[[n%ՑO7B_z~?yWLdvsT54츀P 0aBB(),(J@D3 y9aS& a&E1m++kkF52Wgʲr 5mlb~mmm5WB1/^y]^Z<\A%1յmrT2.?G2o7Zxx|o?JjH?:ܗ彯CIR'A(tEH`&`Lf)I, ٳm_BS2nv$Ts舳ds{3\D6%3h8JYA4Hb*`׷6Ϧ9E`vd4oobJH bw:N?xk#kpPqvҚ^v"$ $?;ߚN>?ofRs&hmïsW^]^4f=u+/7@9"C@r )Ffk]w]=wxd҉u v {asf܋Uy\='⪲-> T6:OR??O4 0;f\QuW"~/;/_9j[YpAL @1gC6v,cj:4 vFr@6#umV+zqBd*1:7/YQl dxS̆ƃjk}9P@8bx QVo8I{:zB0 }uM3M۵]EPkAe.xbV|DtTe sEUe9*ZkqveŝxUsnx49a3$ƀ1&y0q.b`` ,9 6̌g` FjIN?V+F3>i߻{N頻/j^sNʳq*Q`Q~gt{>"|Qe`Qw} HP;r򣫟Ao<יk)T$ݬPMYg=x 2X60o=i y14M(]0 )lZ"L;뤟Y)JH@/a2R`4u/ݱv-ȨU"Z큚g\޹k%?hc [^)W<򗺿;LՄȬjIG,dE^%2iAB? P+XR*\nv;ihZ#ÍF:uf99 9vU+oOkKuZEݽw쓟7sGϺ놚ޗ^)Rk& tX!B'5>Ĕ V 9pZD8޺$I"=b*@CZKCQ+BE& %$%~DIjTYz }kki+IF Sc Sیh6$h!U'e_X??{ؖǣ{3ʛH=PսxD Fׯ[o{s,ϭwvgiIQ6ck`"fЬ%Q<@Z GQI8Hi@Z!"DQ,6Z-K/{oUS`C['me\Lj{AO\p&;kf_[__oΫ7u$_~Sw>6q@/L[Z`O4CKԨ'((Šs$2F8hT %HaU-@BH giG,[q8_ʩ?/|zw|:ՊQ^[6ۍ vf_֍!lPYU.x= H}UsffVOϘ={޽g3ϒu_9suOz֜G#g1Q&JFQBEPL2/ 16I JDiP($,("TlAHt|L5)uϝw'F_FqpvvOF;oʢ׏4bG ^8ؘ A< &qL*U}gY|pL.^hTm5&L9ѨI Ҹ;;ˁ̤ijvf=s\[iɳ> q\9xoZ-Q QD+QAD! sJNc"Uf6FRA8)Z-vpkAe"K1 ؍}wߣOԊ )}'lxHivC/*7llqj6VH@hR4EsϒJ>74G'dłYdqG9P]T`υ+(V`r޹oAqmm )Ew^qхWuVQݻ{jӵ~&tn׬8IBᇇʑrt=vmaOf3{ҹTkfſ}“^x8wK̳\)mɬUD Pi5 ĩq") gB < :O2غ%ϼ#ёhxB,ׇ[`FDRIs!eY(ZӋqp^$6Z%QA# Qz^%J)}ۍkIbm\GE럖_}lJBUK"mT9xVBUQQH81Z@^ottRq{ gӸ;7•p+Xk ^+T&%zN xhwDVD AZApޑ"zd(2F#/;qORaء|׿w ,{=Wݎm6kcCE/"e :.X>")f)BrDk,u>3kHa ^n( HrϑwG?jxՏl6` {$ o}-3?r;_a{~/|ϙk\xB RZk #MzU(9QqvdB5SbZkFevzD0bBb@Jk s`vދ6:lrA&MGJ8#\Vq. q}7xACZ-5Zu{3/JQ^(h˲>d[nV 8Ɇ7t냅Lnk]cV 0ѹpa|lGޗ;N|~G"EZ~7jF("-ʢݞ4IsQ IDATX9G0 YX}pC$qZk{g k*(e)v'`ιo>}g`z~T˾` Ba/ ȇ[òVLfB Ε 8XQ+$$aa)덚hws&f lctecn8LNͬ"T>wE<~ܯڼRx?sş>fr19V% dp,`[g) \#I(/C|3h_ظ񪡩k"<AcX(F* b!(R,J;(J굴V+(ّVkh0{=yQ$&:’@>뗶S hRͶ{_XD:3{6:fBg^p LqpIKH;ow94 "Foxߎ]~ݚ'?v;4ԼOM^$n4j|n{jA\f%#tlTxGMO+˼X{D$3N&˫%&l1V8][n!h-5$Z-MsVu @ ,l"BpJeYIQ+m詩nrPU4pJ{6P^:@"8B} ɫ_N. :p\TEE]9|-+usjI/,BpSs~[Tenj-c2! !PdB`A 8gO *@l'vg4DEK䮤0yg?1?0|ýv7yꖣӣ>\=}On93&[o:w h6@$^ze1 )P$%r!\~;77(\k=s|Bܗ05YY/#0qPXl R4pbR<)')zyeNGڴZö,BW)nY@$dhdL@3D "ژeHGZ+sFIS)dR eW#:#S/O`GϪln3y/q~=oc䞖FlY)M($QfyHc"FZqsY"/HQru\nIJ4j힚j!0q @Qyő"/2Rfff62º^A)}#'bx*lA-6S`.V$ĮI91'F-G=acc߿f8mKω)͡\趛;߽g( [(ӭzΊHT +l6 H(J%w@D"L H8ǁBy41 (qB|C_u tzn^ "!ё+KDRTi6ұ(]klYm`q%s< *;bv?yH-MZ-ͲZI\wmY𛘇azV[Z~WEwnu'c8i8>k<"@C[عkڍI ~ah ^y!cղDҙ86Q!Bim@CQI%D"s,3hMQHJ~OlѾuUeԾ{GL۫*J+VkTU$, cݵmݚHǥpi=E2D;LíE@-̞14`L}GDҗy͟'q%vge/(N o?sk_=f}i5&{a'<k=+-}`'g1őwb(08foJF֮yşk}$J{N|\g~_:h}kryWE 8 (d(z]LqѶ=䒋ڲq]=3dfK1̵QuueȖV7CuUq ((JMETyAJKI>(vOOmؼwy!F*JwRx{/5uWԷok\n$/}ɿ.`ί ?(rˎEhs'HtGeن~͕]bY6Pse@'3#ñ~ *~gQJ5 |GRR$YuDE;} E1|`f6AԠa4"#e@#xے|kdUݿoӤVm0 ~M۸⸰vg5s$*w^wLJ(QEq4=gRQ)%yPcӟ6??/W]mNeأ`%\%h@($zQ-7?\x;S53oKeEWr AĠ>^9whP%`{-wS;@Es{fA\\4͡f3+i'*6CkZZr(ܹwftW`eX{̀?0io`>T zVTKŹzY}纛~$qje%Vxپk&٪|hr#{*yL׸D,_z&HD"^QV9'J@@uFF$@)eY 9ff 4[C,ow1I"-0(3T{>Q2G$DfF@".0  V W̹iXAቖr`j7s};v'FnPiTENw{,aDe"(mK[ڠ̇D Ŗ@ñEQį]G8HpmBW^8ۗOuW UY*hxXE'"( 2(H !@|zE\Cm$Du_xŭ/A215  @H"_VGwjVoV5T $zt=ƺr2dllyh0QPzV ^9IP=0D,aγ~I! 2Kdt`D@h l!  .+>t=jYZvޗB@ N5h#7;0;0xVuƽֺ(ܴqΉ=[6g#4w&rxB"@o5.s)'ri&/ŒOj0כf+MkJ8RRKH =EἋX[DAIih֭mL'J;gE<iuNs @AX_ + ~N^'>>W zj@o%D!ٗh_r3 *Sf~VRo4;EP(m Sge?Y6 "H:2.J΂! J W뭚 /8.ؒ)A̵3lbbt޻@J)_nε~0/,nګ,B0/uͿ~myϝ'7;ʎP.去\x4v\a6:uH:0&STӱIVTaB4[ AkB`]~+eMmf~~wXeGPfEleܛT OqR!*@BY4031;В$~3eTW_s}պkUWNib{ I PJk/1gu̞(BH:@Dι1T\@Il)EĘH50h+kw%3"!{۵kw"$L=vvÍ_5WrMo>8dB-,t֬ifY^PQ,Jim--($belKr{Nߜ'#'<۽.~X٥z;y碢D%纄("g|-ss~fM&zO23 \xOHk~HC|n_[]- ۝9k~k"gp=N#yDX,tHZG, heGqNbFA\2+m4iRⰖikjjan*.%U;HHR{rNPxI|þ^/gRϗɩ]oZrfvN@z۴+M>k&MkBdJRJIiC@,  ,޹`K.gsG_^G;7מvlQ/r@h$hrIծvnjPfmK';e^\xp%X@+lK JEI3Wɂf&o{]z]7tfsCCWy؅M&\UI}H*8eRʗltuggR1F .m*k?x}XW.2z6}+^5zTI/̲mD祉H=}gܺf[[Z(!+Jܵwh4Jjro@j1{/lm Íp.tOwŔ q@X`$Eψ I 2eHHfcv|U,DGZۢ| Oy0c$"m]A Q;,*UD@ "L!@H+#M!={L3kb.m)3Yㄉa BRtz:?SpD)!P AŐJ" 1& 0#FԼLeĄMN~?A8{DxH?zœM>xDz}\ FԀJBT};c /ޯ!{ ko>-ohq#(u;%Mz(Ӳ01JR+I'yo;_B(+%XPX?7ߙm{sasYڷ9?UUTQ4T/ukGC)(`ՈiNۃbpC#q)fѬ7yfz`(2EY+5=c(RJUUJ6Z AV`x{w[Db6A ?)lZ-j-+* d`1fâ9P43F:/8k_yEt<ٸѾ=[_zx>3GtX[ " ˆ0F#fŢP2 0 D@֟Y@G}?d}^yD(R:J6*ڵpmovag~psYz=eHr}k{Zwn+J9y^?y鴎r3$Rs2ska"V  9PqgX(Dʕwٯa=Am8ۡZ40Pw0u{x8Q>T7ßJ0l+<}q1yR¤4^cӓ{ø؛ߔ wV{mgs TJ?r̳KWj8C +Lg1BT$Χi=H>\i+W U%lظi5\mm ~^(,$&LEi(Xs-;DB"HȂ΋  ( @tn3/Mޯ'"R<RH O؃ RDQ8zyx=w{_q'BTsX轤K,|a>bDDd"}W_Q}3#޽5y^7^B"0DPҫ~2{yOε{kwsg۝^ˋ҅N?kwܦ6=[uN,8FB?)z 0BXl$BH!2 v{lx#mF?# p"ai{AJB P4BD`f|<4W|cYf#qxzݞL\ZWXyq!x罵A/ϡV`Q;*-XOB P$ J0m{ڎ}_o>9/zCd@0 W|.)$X쯱 GźuJ1{moXµ'?O޹mۚ?{vlt< x0(>gICh N=Z5 MO]ppk7_tūG>d[- b jӶE^|ׂɺ&U> 3Sqdݻ$"]w߻sv!{* O @ypP*5@ Xuz`d96ު#`ړ q ;jڷv EF)J,ow[v狢'ʲ82֑^ IDATI]a+Y  01hX$lS֭Y`Dr;65E ~s/@0{_VEܫ٫o6ݝPğsk_?+Q$?Q?$߁bVnU !b*ڣmwԜ@߾(ϚΥzB$B@Rs{:z2#-FljZ$j4P86ѱ^, z= A@Ǩ#'{˒V }&GLD5ZkTQc.Dlj8mAL Bā2/禣Hr`oKMdKD(KR:M!@rAtK>\{jcYB@|Khq~ :V%@۹+?;y7z[r+ZX ԉjwA'~9{;ߕ|wW'1sa?o>;׸?4w&77:~ƽ9謮ߦ?};`]9!-_㌟aӟw4oQpeUH&4:*֖Y{.E[zDP0T*r2J&Jju EB!֪((kZ^dB<42L*twNx%Tz`0hʳbu;vn c##y^ QBHP p5Q#j9"$Иm6kP~fjϞA@!!WB K3>=:U;/_7pfiO"#KRLOc $AřRx^t{_?j2~9gK.ѣzyOd}*}G?`MZLRA|_^ea1< DoG\ #8X؜{׊$~̌?==֭[uԷN=~K#8YjFDL@,ȴj7ɆbYDH5*{B,;yn͋$f`hn"+ QDc߾#+6 :!LL#i[2d5̼C!JTL)|~o_w׾6#Hl<4Xi4 4MH 4IRTJZD7cPH8dS b<6U%'$2NjBsҼi aecs_8)Lq΅ SScVȳ!p6`!X "`&A1,.@X}Ї|~ߚJMcЇnwsjao#ͤs"dDȓH[D'[ SGToMrȌ+?tvs"I$5,J(.@<< [h(b8 Ybu0Wq]Ah 5% XYi|-n3>0Ƙ BM1=+3yl+iMg-݆Ri9Sd6s;gঌٓQH"!QLېnݱX4)s߾#cp<%LSd2JvuMw&@RL WJhD2 5EB` tIeK8Jg'W82n}ДiƬ-3WQфo: 1-K px4nXH)s< ۫F:faIۉ'xOyU\?"RgW[4ĔDzvdGD&K$bPL`xQ|3e )"`HYXDA4!4G~]BȲ,(F"-)@̧cr)`8lLc4W}{n~%{eViۢU|f:Cw>Db".`]d~S+=9bR4N'.8B]شFF^6uwG:ۣWY3J&MjjtM' E-"IY[U4|b$Ś5}C fJy5)>opP7$#(N Ez-f@'Go(+Y'G[ y@pWyNPxM΍A)iH&FG-K(MFGG^OR(e577].$tH>Ii-dL"b,># j9,`i[ s>[v}݋ߕYڧ JRXŁ=e /j dRFӎxb[:;\ y&`Eoܸ*>+[ʓNŸ2 JeJ)/h=Sne_׎@ND&y dDF d?K |E/_tvÄ Ie `@ڃHȀl&$af44:]\s/ qM{Lւ~'+:\鷩ylް3P .5 !:wXeYffa455.cۭkn]Ӆ566zN>QHQĉ)M`Qh mhE}M)c}^r`;t~VrW^$9v:#,t]K:}.~CW/=¹ 9j$`fmU4)"~Z7Nz[Is|c]f%Ȍ+%`,Ӏ-ۼ'h9#OX0߸SG3Ĕ?iZ‘(6C+KXH=O2E)ISiOY '&Rj oq@Hs,aFLas_}X }]2c=u/iyH>.uc]7wPc,;BWN/@Lg=ɥKUb>,0gA_#x}vЃ}"@mR @01B!ӹ9jkRpYg\KֽH?::62P{,YiBl 6=NIV.$ 3 4 Y؝JGTMpWtS*s(ú2%_UAWxRq; @1("%5m˗-; Mͭ-"-иFI0"HZcށ ft<xVt0%$jlhX0MDuxMÃץ 1 u,ZHE`?L$R Ɋc: [8²w|~d woX0֮>r࠶cs˽ԩNJno3;$X\qd|ŊccbzOs=JMZ#iRP(Md]) bbecDI/Ϟ<'f6W1+۷k=_"iu؟PHT/ɉf),QAS"LuvWm?LB޻ iakZHOܾo_λ>] .I\d@UsD&]1Kο[6#G.[xiXL10IKF{2#cV 9PTEєRމLިj.Jdzם2`³<38:LǯZչsS)SC! 'DJ Ya @H@2#J&;hɢ=(tuU0!Cir:n_=Ht,qm|\DPX&FšRdU.|߯fjo7[[ۥ%o7-ͣN;5S&)iB4RIQZ߻i ǥW򶱙 [o[N֞ѹ.y[(%Vk`F 77j^/Vc6f.UB~6lz-iQwlgg|zYh2E)v8fԄl4+E[ع}Ia^}PRY6t9Hj.~ޡYk95R* :lopI) ̆^/ =]=;wܺy˂,34=<gD"hB8viGnZx&tvcexw]18;׹ X.{eIH&n{y[X2ptb5jkw7/Ħm{c %$f$"HMwɮUD 6sU+?w2 *% EETS{ADaRzIm& nq{dh;CawoL-頻~כkTC˗nY2^.VI!,!t`L-:Љ^/8Kђ+Jji)2ˆT50|  \^oSccO~Y:svxсەJ¦ aHM*3Ί-2MLIf@&=;`Ȓ"g)vнW]QTiQ|Dё4nێb^03 D"FDNGX IDATb-G_v^GFE2k|l^c? e"W}2'm93I~%?c>7Lߚ4bE PLvδirP϶j:~pmkMQS~z> k9fE8iB;wٳS twҲRTzoPo43\`;Kf&@t߬2.V XeJ4XaY2Z Xu.n3mRHI3{2HUR Ll sL7b4:ʼn? hshM7-O.cnu,eϘ-Љ&p5k- S&gz?]1JiXߌS4U0`!RԪU:jŞ={FGG}@kKwӲLK!݊9KJ7&V. ԑ>i31؁가B^V4׉՚gVb߽k8zeϭ5Mɬ[;~AYQM2WH\ݚZO>)ZM?׌K^-q̓t"Ȥb\=8ZpN ;S[W -yUJe)TXBD]]--=HڵkGz6"YE 4F& }h4Kŀ&@ .>br) iuex8#/`PuY5FLB{677  )$@P4>1&̨ϲU_o]ăfۃzR^W&{~q#߾21zEW)wDYy>kƔn1E̳VdSBr;@[J֜q@!t;NYV2y57ԷwsYf@hXRbfML4`4<!  @Ti'Tm4؛E&S `է{L=B/2VtYXM5Xp[Tԙ,Ħ%`o}KjJ.8l:1;8  ٹf'0d|3AX*ęťlN xNXy0U SQh8-ܷhiVH ŒX* ņ<1$K=]l2H(0)D`!&Q Ŭ34?<$\, Toްwpvj f @g(rX]2D8ԔYɩS=:sXwXp؟3s.`x%3Hb6ihBF!4D (s-|Y?QZ(Їyw6D)r˖/߸qc<Y|֖??ַ>[Ծxx,0@65)e.z8ፁ Y@jl"7á @Ԭ\ Zg>ؼz?k kn'3G~c+|Ul"!>l]q΀R7VT46CJetX\`~ 5SNɌ}. _hp"K]pgQc@)Siē] ̄ ؙ\EωpΖMo^6 !CBZ*.P "DR(R)ǭ4] 3S9N8u˳BZ[wc]y=_Vm?}lVwQꮒv\,[Zr&?[{>{'e,v9q,F\ĚtE[X QBjoG.ߴqx0/ojYgG{?iFHpAddM G #b1 DhX)521*(ԧpfҪBty7*0CiHZAq"uR-[ns?@6rQ3,R=.Kd2 !RD.,s-NF^Hb)k_(=Ty>xsVek{~+K>I.]&¦j>Od28=PL#[k_}檛ʛ?q+P(g5vOy:s{ "[hh扉=z>Ȗ;vt>~ܪSxh#Z|JS2 RI(!Jvyx $`)P,̀XwVW (D^pD ;{  XxL4BDUG5,OgZIS,~sHD+4D|P8DYMGLnךE.@QӦ>hVk_0Қ@ݓbb_=wǙYi/J9徨#Ce;%cԙ|Xy֔m1"._۔ɥhM늚?-w@SY5]x; ȣABb w3ϭy&b,}SOI`#,ϛ$4KY?;G 1j`,#(&kL-3E6|!\.WcccSsSCIR4Mc",O7UסvV{. 1JQ2 2E[^8CTeS%DG9鍍˒zG/|~:Z&K@b&}"HZ)&t^\8c3R^ ]#7֢E)]/"YOvxE-l7%NzN+!uT^,*8rDʷ0ʱq#-ِM!0RgmK p,T.J*GɉY=/jUUwH+R`aYLvΑ NfG (SֽwN[y-o \vʩk].A^FenbIL,PH;1/ Г @̶k'`vD!h_3<|^xDv`qdX.*jP N^Uj" ߛ|a_m?߲v.̹aJX=?]w=>{ё|{WXposeeѺ;{вWcݞip^_k]]rZ7B7={7~SAuMӔRi b·ϹC3zsutQe t\hR%[<A2 R) @TjݳٱkձǮXqԂm-knn? Cg񚡑>e}TrmPtw0Mh˲,Ӵ29l{" Xˬ3bwf.`h&;wܹsou/!FCO5_^g;[sʄ뿱yǮ*dpp=Q/\{z\7^ڿڒG9־evVYV]kkPsZݛ6TgAK )1sJY9ț1LEB#HH81e 9 8]d 2P N[[_s:#v3 r #aB&Lf7sҞ4BٶMwG0e,(>Qu]M{?O0LL%`?sC[xGF2&c_zȥ"_noKExҎ|g{ER ؔwu 8$Ԭ[ m U2xg|xG?o4cAMuc6RWN;-rх<]ݮ%)vZyTǥ,ũInmk3C߼9">SO }[I 8.+Z}Sg=VFt&*(qb=되w<̬iXv>;ff@Y~lڀy,t,IRBD\SsZ\>{KiA ?Žnu_xh'I369?7C =֭\>cSw<LG 64<`Wᓟ[KE<[{L+{ozo J\,__n\-PvAm1?ߚٴ hxT?+Zᑉ݋߼9s]C/ٴY5oY1.p֒_W+S!Q/j3 xK?L?|L&f2PuiR &c5jcfXf.xɞי6d3gif/\ Wo 2rwg,uYN3xիW^_MgsKb*txIJ^oݼۛ|2EV vQpL{iӡ񞩔ʦʨ6SK M'0\."2S)L3)׌>T%MqZmm```8RJ&b`VɅ>R !~{{h(LK)J)Z%KH#2~tKv~A oڼzy=)'ﺬ}O4g5-չ k^<1]{3olؗ'`6<4k/#^yӆ}e4GH)|>o43}D²Tf(0?N."L?X "\.!eYzPLe^,Tb?*x1gmt] 4_c#Z2'f<vΒ)s}"`Bhf& 1Wtn> ˤ5IM& 5=֤zOyEo~SgT/=|K/1 uɛmCu駇מ\fWڰ^7̡]eUenC9[gR)3H> k=# 76O[v~ߓODb.1̬bf)Fv_+"Bu3.`Yq-h]ֿ#{UN $T">JI)iL$tI@@Uye(%Z(IJ=:d:9Ā_>FK3]pyW~ڹ˵a]g U k'93M׭*fq+g`"SGؓ 2[s>g_X~٧>cM ۗt,ܶTdneH Uu7^1' f}Rn7),+L"!B0QJG ~JA:0+IهȀK!O>wܹs,@#Tl IDAT4-@oo@?+DN8v·Bid[U-R.[HY2SA=RfZdR>@΋ +޲IrTD'';MGFvcavh0PᰜA9*cc0.>4kϱ6ڶͳ}gvߎhL:VX v=ᄛ;]Ѿ)] O-$hajժ1+?ZAy۽{)!]QRkqE-ݸ )<][^Jt[c"g h6#kҥE 44nWo?5gh,~)Ƿ6?ƼLY}1etÎ(ڹe uUr+q9H@wPxΔ݅@MB!,R.KR̠ R*7ڣ boBa1Y2 L6 uZǘfr #,)J)R)eL66;kPY eK(!R oi8ڥsBy+RJMp'bX^4(1ӣza6d+L0vg\<+B\BJrpuJٕ$SO 'ltbKǮRccbn޽wwk`@gy ̿|$WЌwI1QRZӔ#j}[-YZ$|y#+Lbfqݮm;|,ΦWټQ6NU·jU19l춶pgpJ:gop*óRmkR쑑 7g[%|>ϭomiڼuW"50kw]gqn&UDu$oEh*g.e}53DL$JV (0Pb7)ҚEӲP ˖jjim[ؾh+^ٻk'l)ԴyGtt DcX4&tƦ>nh3'gTIB23@D.(6C!N &) VQc:ENCeL[8fίsձ,+~fHkf Ǎ'GB=:zeWuO5\>8P"l >SL"n+t̶f[`~=UW#w>&oOBb5!֢|Of07;3f ^KIYNZ1aZ>D>mߋ/m4 ݗq]gdt|N`2)訨fOw?qvLrkzݘY`fRd&H̆ac1 eY7(r (ҘO5k6qtld"2жxU^}kZ[s}|͟駟4LMLD(Y$ژY8R nD%0Nd5 ƎPcDW Vs3y<42*E/^X=\'ԇdV DSg9rYcWǍAP~?<:|~g|1{Ꝉc xc1PBAGǍ1SqO@rQ[\a#~bi^I4b8k/sHUr4XSfFFGFs~kok p8H$;hCwesg;A,oiaNrNs"'a۷, ^Ȥp(;E (L0!iO!Ys[/W{wKS#-X rw♧iOlIMKRe$' I%w<ƺ¤P"xkYo@ Cyx=%5McT2ǶtM(B,{^#'œlgD}k2ըyS0¶RhlWAJ˲ )]Lʞ)zR} ̻D"PX+?i9O:iy>eG}~]t{o'9j2Q0E*k^N ,JS%r}M`JH2-D;KLP8)u͌P? DficVvF^p|+D*yмǴ?]&24eBH % ̄  5 ɮ0.]`xǎ/1azz<NrS#A+gR]~ F9o޼驩n@[*qig7oc{g=<2Nl6hNOOٳ _ol[EMal <ac<t c c0{qE̪$BSeϠ 37[V\dI\gfG֋)U;'d,D4U0 ߿vs7/IO?mbbЮ9;Io6qW] |{DIeDNUyȄ|J9ёe˖/_bxh>lܘ䅡"9 1 1;^2zWǪj޻r8ѤLLBnޓYHtѢ3)@ī>'D0 {{ޱ{[ϲڙ ,ʎ̀ H4"D j{ɹg?->%.@DD.wG"t?kt~&[c?u+ahUW9 t:rNDO>唩}Q' H~sl3S3Ƀ{9ɏٟ^‹ؑE֞MA5$۷;5=`$U vU<{y=4,;K٢% L W._SNO̧2dxhpۖ'ZNgthOh:0Zjk(!ƦpY-ZxEλ1S1$h ysS{NO"<15@4u{^7~hh̊BE^x;oYatt7nxULAB"E&r~߸{lŗ\|嗮\bݻwڴis39{ݱc׾}{v{'~pp>_.[>==wrL{[-O G>Oٙɩ}{fyyͲn^h"3rJDj*%ivDt׽vE/,T?VE1<:bŊG~1Kosz O1<ʟ*qO~w,S?OR?Swqj7Eyf+LYiEQL?Kǝj8Q&*媠:1mo޽[?kg}p(BkPLEޙYDv. A@c? ɯ=?{]gCvq#$bN U<3LL<#?.ⷽ"*`j!fZl|;o//WZ.31|)xN>G_[XbwԵ*b&b "k|͕W^lc7:6ofv{7<4XH$q\,n5)޸pȢ 燆Gۛ9l/] T$2{-MӼ9U!)3Z-$T1B ,P+V{7%ۿ>S[5k6ͼfDslxt}YعsvWݻvyqںuf‹^2}꯾/{?>>W.Z4?:Tնm~s  EC{`ἅ; Z7pO=C$ F}Q5S3驙,ϲ,ڻw&ѝ;w}~i;vl㎻[,8s-~֢(~2[y:]XԾ}_p߻f- !@^}}g w$x!?ՔtR:gʧPM#95M8YvE|I"Ec(cAU=;Xv IEnZ& yD(xQh\PDE-.=n?.7sv33> `u (gP4򼭄Ffc]tիoܶ}hd䵯}W\hо}S߲es` hc&S`u|/&ALkwik}S3n6;;ۙiw:$IZ&u_~߲{r[2E !cGXADTL~3Q 鉄Jn@`&Yf 488S.]fx" A="Zz6=zIk` "Q"lD$fU $rf$^͐@Ŋ)!͛7_V>կE@BFLd6O\!` /[t%/~*b'qD㣑H:*f&k*MDSC<,!4>g×dfVKNϣJlJ@m@?.ׯ߶u~ S&c.OevTxofzf5CMF|h;\*8UVL}Z5[#\h[8 >?߱}-ZEtt:EwmׯGFBP >#! `(eS EHGGFX2႑Qo`T@U%qEبi7 m-[1gngBg _gS=HHcA?dUѠⶱeoZƇAB-X`ѱwuWE^Ĩ( $EŁSh4TD,X0nIl[+o# l,@=Hvz餭}իV/_׾jA p¿͟ԧ%> CNG=*٪~7Pt8Re+PB -3!0 :3I? wCgj}ynf윆@B`!Tй$VDVѐ 9HFl8yOTe`ih IDATL IJF#Ml5GFFV^q_v>a璁Vsdx4ijqp{)1 8U0b1ʅhġd U`b"4 /\ޑt-[x 3U Z/''vYE PC^2EL $b9AXj+_=Vl6K$?2ϼ v{jS`"G\ u~o_Q fL*SU ve] i""2"B^A{efbZ@LT'1uc^%ZC!ॡ~V'#"A}nѕ闈H H@Ġ`DL5fi^|ɥ]t k.[F?cݏR'e&Sp xR<R̼e:q/V`kO a=,wo8E 0;Xh}{|php=[n1$TӸfv4{krrȨXd͚5v۶[(q*Lg:#>84|U+-i2o|;2c]xi?oD^) \F30f9oof E67w=!|B Z ڑqRm,%BRdREs;mݩccGzhcY3BTfLD"#a9:B"꜓19W$!w*jUUɲء(s"*ط%fSZ"=l |v0 yb41'l- Wൿ7o|򗿲qÆ'n E`@LDBHU%nN;u9^|X D"D`D(bD=EDrU6JAbY%{1ehLEPDl61zQ͘Y|ӛE;]vŋ.=<ͻvz|ӦmT fDhdDZ$I#f3-B`fBVf~~h]vء4òT$$"%"@`b*JTԠwspj+@5f̱/9.AD.υ]|uWRǹ_ǩLK XLPW5=,cx3UìD4H nkjڏ^+L>`E1g1}gs.n$)q3{ >SS.ڸ'YyArC, }EW_q;FwKOu4Z1NL\\HG=!D#FG74<(ڵw4Mts`bM ,^2`{d33ۀL.MD"csމwk׬}ޕÏ<߿O:1S+Oks>DtZv_L ƀګSɜ&RE5-.QrwZ"`uIPy)Wk5TD9QTNXW1El]+%xޤa/,DshV"Z~E4McQ /AnE(BjfEwY[đ$XN޻\xtwEp˖Mزe߻w _ុgPAȎB{WEBn#Yp~:\Oiw(kvN:ij:#r N8ᄿC0\~ -Z̮2}w`EPcfYV<3kPm4W~|Ռ;b bQgTADL=33#rb9餓G~uw~ӟaݹ{Ϟ=YEQ wDO,i6ٙa3gdxx`p{?26k\q^.?yw\w,ػw_4lڴ[n9]vOL#@s`tjj:fѱQD2O5'+^|'M/$oK"HR1ݭ C<ߡJ;U t!4N^Y#FEF&YF㝰:+P^*11a(v'Ĉiu``f1L# Pkc,Mc.C X> =չ񃈈d ; X$޹{=y^&Ov7c!jf`s`N,FǯD?;{&g>}~4)\UU{f*9hY-FywT)/NOͷH?ա5hP+A4U.B0.GTQ8@X Yܾ*N煒W LEɱܽ{dV3CwqUS)㔚!3:*?*5`Y:JQƥ()Ǜ%;wHd#Ë.?F` '>FFGZfQH$\Vk IN o~J,066o>f733ny#͏/ZpxxHOLi6[۶m%u֗>.\}DhZV y^}OhԎ;7nܸshرgrrcMMN,^lR}9/"yϛ?33p9s L#uULUH#M2@fy6>6J57_ZcW1UǖlRX `4jb}ePs)!|]&֥a,5*C4&QSUf8었.ů.(+ LUPדSS b45tPE!z3K+uOtjρ>Wzm 5AQ%ZIcXOuI]QW{VEt]bͱPSilncKb\mbZi*G}&9 fhJoV!dZ9DEUc.yTEĪoj`?zNk)sg0MEAiڰHWL+ )uGy|BBB!s 7h5ٹW<+ر!&G {r;qOnsgp 9G]5@L paAӦj\cPEKͣ &oU<ˊ"K7 Fݙ曧{eʆ C?p}E0D&Qm'^r/z/ .xȠC$LcgM3Y$hм'(eK',)6>ExB0Cqj-ADCc&o8Ƽ(@UT (Pb>IijrXaFUd40ЬKK5c&k6S@@ J֔8 RI5s2ɚ1f[6aue'N zBNL}E90!:B%.v0̀WEI}#HrN/U)Mgz]\VV&8[VUqU$Q`[XMY_!% A$V!vZ\ՕE@IA?֫a1="mcNfT&cV/:5QRZ|cЪl<1%# gEj ,4Kq,cB'z)33QD4UIk9XS`4U+{v qΉH$=%/r3;&]qicm6mq#͋Lya ~۳_(gfh) E@dV$`Gιq@+[@YIr<==dbɉ'5QC2)(RQd1MMu*9 k(c7 Anf%-rO}Ӣ-Yڞ8ٿ͏oVРŢ&^sUǯZD,ILvf fE@"d A,fą Qf=n~>H?#c#b)<#xvbG` a12IHZb>y[rk_xB2:H}#MTA "eO)/b30V~LL+P 2NEk,( 9Gӳ̬$13fȥ8ʏ 7P圕f*Lyǖ("2SDٕ &5̲J$ ~iNN秊jD5(.ZU|xb:'Oi}@Hi: 耑VuU 8,ܠ /R8j!voz v[*Cx剭{gu;gFAE HU/;Tu>l,ETSbE0./-:Ao|RD5_9> D P{{Һ`0Fy/oVo D-P8qfF 1A$]vܹH捏 yey&Y@F#-D rz .8Kv޹cV+}GC~ƪ6.K~'5QxE"B{0"G4SOb7aii[+bRVZ9dbox/B!1DONh.v}>G? `Lϴi\jttaq-ZhA)umݓȥit̤ `j@@mv)')>$MeScfu5V*̧ZCb˲ɕqF/^djU= %`5Vo"S(Pewu.7 R٩@ee!9JW`>۹kؽ`0Jd`ꊪƭLJ|{BK*x, r۸}K5 )uk߈P6g-FiD *fP5dASwE"#/~HnRX#%vnTz%.*"&h>6wI.;K EfLyQtB}<Ϝ'PBb4<9^J5J5=lxv (I0GPR݈RyQHn6;44eů{İHȋ^{ǽ>[Woe=c!j\#pC;䕎} ["C2{to|㋯lbbu:y9Z-"*wW|ȸcܷo [{&V&'xh>3N7 Z}߼sN :=5k׮Ό$ilsڵcצ'h:v͛# R+z֝wyc7oڴGY3=5ȣwlnw>eʕxƙg 3cD@fvK 2KDRmI>c(w\1"AT FaD@U{Q >~Uη!"18B_f$^Dىwe 0vwU,jƵ $DPQL|RV>ͥo.t<%@Z(iq宗 DƾF4@S_E*9}ΡwZ:, 2TQ<؈}QBEwQLe{k|c!|(˲_U?4OkU T#U9ӊȊUjaS.ر*"e}j\t]J-)[o\뭸jc"D׳zJfHE &&6 "Aq^b)m IDATxHj 8Fe!U8g"4SIj ν)ջ #VzdH%5ቭ;i(V,I[Ӝ 0 (pb\4U5$@*+nb+L3ң UDHr "-K~@YOF|O6 }dZ*ZmHDhLN8iT\CEP1c&{q%##Cʞphf8ǔJWD$tX5w|;Ͼ)Mq_L@U8,f"JBH\c25ECvja6Ro%D!sU2f ISuUCHUC :55;۞|o|޼'xBKnu4#U^R (蹩ǰ+wVmbH,alzgdRu&Pt )|XMKEY4կ5"qȋhre0F)RQƓh,ZpK-[tEibEo߱s=yo۶v:Y==3Ξwst`rԎ;fgg,xuֽ{GF8iF4"T3PA‘/dv_ 7tSQ prr?lZ_W<~{ODDE6e"ѷ5g9BcjfE!!hQ&U %K&INI͢sz\uկ)B# 51$)R6x j/A TR6jV"HWkٙj@`U%wEyIה8B a*vֿ9/dK|6(M\$i`_^ַeeJ0TOAES}m1[JrRI&WJ竷+ر֖=^DnGl͚tNi|W9X_CuE_c?gWJj= 8iFee,,ZHȑ`t4W.EK[>Dt33+PO/>cy BWrJU]pWVMJ8wjm"ߓ]Ǚ/bwy~ie1j:6*Y5!=3GW1M)ED(4*YuY_?=#E-]lg[wܲ7o$Chd,Es*ʹ@ѓ}=GuNO,*RYlk%^IWԚש?F ;gC$k2Ga~" y@2|ܒ:f yoOaD#E9wιڽgzjh4ͱs9Ϛ7o,y?0002<6R"N$0==9%K&&&g7jIѺ3Θmy ȳBh4Lܞ{?<:n{&w=5=5Uyh <6o[:uݩ\r^yի/")3c!6Tz/| W^S֭E"BF62,_ni(G#wJD"7V@EJ$C04I!y`BeYFDIB1Fwi yV(<"Bɰ6 - e$iKrD E̬|;ߞA H 2y9x8NQ.zxE?)N* qټSCB4 F!(̃ͥ˖=9?wh4呑ŋ4[-DQu:HbJAz3\]4Jʨ*(u [c PQDq2i.H_uuvα{ZP흨3;LkNsx82qO[ٳa2X)ZU 0n7#"LfOB({_2DDey Dh]Wn>6\rel*7[_A7EtҹH wAZW(ƺz4u[BVKnwQonJ?ށSGycyPef!_+"1 iN@/Lҿ&: S/ݧ2'*"2U+9>GJfyJ 9^qQGyz ΟY{gn:ׯnmfD.*gWPI>Sl4`?0W!<7dO_,7,#]ٰj\dT9af8O>ąL{MjbO>esLI@#MFFFCU$ʲIDhNU@T 1vhj@yREY5ceP齛3#x)KO@I~7=w=u5o>ē:LB}[z^ݐg6oz'n Wy:9}Obdvũ*xsL5^#eV-ުO$>!EYy I"G;V´FCfp;\U.6Mfγ,NQOLIY";$Rn_wu?D%Go?t Րh~>F}tleAlA1A| 19֓I&e~,YDMlfw{PZTun3-w8{[au*Qc<88ٿ_W 3xYyȈ@,rD[,e`1*9;.`9q3PO%-48cFeL=&i WNU:l<fhHz /Z?]VjRؕh}0S`"gR^ ]1C8>"{˛7~~V(fǣq!t C$,ŐPS5ۢ8$TC`0! ` z&"/|/?:::X18F/=]g~@ț:)3u]˿K+8w‹/^l]{D0jԄ=a M,PGv>8ة!j̞to>;V*!)VUtg(D(M33{jٛ,8z>i"r*ξ7"1`co{[ܾg>u+jt!uQA#{ >s{v9,K2_͚Vh2RjaV#?\o]oxC؂dHij؋-Mdx =*3DlfT "j`W%" '?H (YrDbn"`rVXX7S5`VgfTkIVu0K~0-7Y8o۱uc,̼ۭ/ޮ ~ &CIG!r~e_n_1S31@ Ve\U*xioT>kצ:ވFGa~#y=&E-acIwm&GMBK\uiQP$1W$SaȔ}0٩ װ6Q%{D@@HQ1~쫪_1TZ·!&z~@n5ekqͼ Gm3<f5"2 lקO"naZ- ܼyןҋ/: },aZkAF$q,KLDrboq j zٗ&0d:J_Z&o l4)k@X0LiCc O\3i6k7/;`^o|uxbu!pHrDGU.W Sf:Qq !iN17drh .X:ưladLTun?wpx(0`]oxx<^j役u\sl{ܛF !!s az K3tHo\6tē+j9KDS#hGA@(0xiA%"Q; Lvt=]g>?wF:23Y|S3by2!f=6͌]Oא3Η4cetfifqȠ%z`rrFYk{.b/I">+ЍO9Q'`*[qVhNt40hLJRJH_IM:q!(gJ3xt_(j$%f8 kty)6RyQsl}޴bsokzx2˽]-YE:՚`%/}M,~eo ߀ k_Cھ;5{Dp \ƀ³ |*%yM j+ S@Ps C~0 % X$<2TU1SHfp=ʷL]o=ov*CH0?G=›,H8&\\BiTz| xߺ"tU31~2ap%j1ʗGCw=1*Q$@10^p]k!"4Q5EBg:Z->Yi,;[wnnGbi3M:}3ŗ3NH P2"|.2x&RA㏿o~뺓Ãf~׼t]O]pok^\-fZpHkNR nS@H!I+TxQ3}[,zDO#ܿMŲ8Irxw1lT1w1̄`h` {0 *BK3L U=c3 cc@d)_oBS]ϰj" -~7A֜X.H"a >=ggƻεUیTso3KLSU O}O Ux?ٿ|w_۷HȡlSӞ63KdFFV8giǑ\-D׾WÃ?:ʘc &*։08㗱:Z3j} j>jaf0̬-MNťV:&Ko)OUaHRMђn-_ ͵M0j#W/"`nkjb|o6gne(BNZ[1DVH.#I~?}S^4{{7L_VMf{C<xp`R IDATx`xx΀b?S-Wl[pnD8 N^8B Naz`ۺxVd,U,صJv]> ̢ .'ѥ۷_ַD2qqt~>߻q#P!u]cdq{Ly@DIOc@ôi2.D"?LrtXI9,1@E! 6 !CKyLTGBD20vC _+b|0 ;/͛7\ /p{߻ B'v/|sGΗji{/t0!1 @Rxas?c]G f:$I,E)~b};F8ʭV/(13FQD<8X:3#0c( &Y&P2 nYHL61Jvs+3E#"R(Eetu"Bb`9lwbѹ8JUYsjb`A(* z&l-j5+S dl ;|["OE؛ӿe^N_u{/W}7oܸ_7n6 QHFc"$ Ir^sKT>ʕ?͛7~> WFF5 .q$v{O>M1v_b)RmS킲oĨ^a"b B+'{!:/})6]6F'2n'E%mb\B-5JZeKBjYxk+9qFݜRX}URlasw4-uk5骿r8A>`bp#e![8C ,qB8">pDf``[pؘnQP(p @8<b 3;@\'c^׼ y9wg0woݾ z==>9}rntĠND̄j 諏YQYy>gkIuDkR&rW*J2$Dw# 1;:w;kWfzڵwػ^Z.pyy< Llw c'곡{8e]8"zd$z%xυ+zK`1Did}c#D2P]ۓ 1xkA0FbLE^bTDr rh(gLՂ:*K)&'Ҕur*";㹃&6/Oͩ*s^5YqB1ZQ Mh"qTs{ՑI"t%=84dC/$>W1\4[*QM0Y"D9Db?#zŨDnoz֭۷n|~6'1FDCX.W|>f矗(2T<$F_C~+{bыU"ղS@c4$9 s=Y{%E sJ8H_@f&bFYu}SMQ23vo䲻`I')E,5t)'y=Cސw[xhgdGlRbM.&Sb&@i]' rq&.;JַmqS Rc+d1m3B)Ӊa+p^.Y 斨 MMsuHťe^~073 ߓgOf:3(/U(l׌.C1уF錵9@#"97dYY4-xP^ 1z7 yY4JC2I8c8Jazۍ'''vݭVG}o|o[?zʕK? ?zs\Ln}lyk!fۍk8nzqf+t/ ^WW6fvn8"qUDA@k%켙mJwUDCV"]c2.kR7P?Cuc4SavG.te瀞(@`F5kV6UT<Prc3TS@Xv=x,Jt4 4It4?trv ]q:3$^GyL|!zs=o|㣗/_& d޹shuZDT,lHQ躤`*})Fƙ֏EHD;B߄)DP*,(,fr{d]6P]K3eḤk;nhsUu60hJ9Ct /M6J]0Qh9Ru8kЎj^ZU@}PYmy闢h' <\~!´a!Ψ6/9 C2@Jlm^WW¶i9`q85?Ll 4SkCt1 %ތj8őUߑxe:&nP*_Ū*c\%lR UJD@LG[-rJDӕp[T08Jf>d7H}8 $fQ; #q | 'Bv9yڢ8G&f0w`'fQ(P"3 cP"̇Izɮ˳\7D1*2uE=lp%WvS8 DL Vƀ@2AB*@.^@ fhQ8 7DC6"YP#͚ ou$#Hf "bWBʄ9Bj#BVs% lREvFܶ(?#J(`pNDL: edf2Q5(1C@X ՌI% ,{V.HDHfE dhjܸƣ~тyl,{b6'7}T?}v|TĮ9.^ i)Cc6 s$N ںqDED=w3On[,!0*UXdR5S 1lϯ95µ! B[,Cm[mh"Cp/(BfL@Mmbgs[%"u"zNג@Ej˄sM߷rJrx\#Lj>NBZ̨# X@SpET){ݝd,f2T5zIbB(>455#fHS'&)12)jz%1R/OEu"]u,Nl'XDSv":rwBAkb%iZb,29l nE.6:~298Biu& g"Yy~c6 (6ɰ2lUNt:Lje$ ռ~28)s[YUV+3;wbMzjBeʬb`ZS<^rNBDJڡDm:& %x!pCs8zFcLϮ.uK]/ETrd\.D+>Fܒd ;g;퉦a f y,l(cϑ\L,ƌ&NcBN|먟рC{T/Ƙ^M{qK;2hLKEDbJgi(hMW iC-MEbT5+jL =$]D |h?\4wʡΎ}ek"I3Kl-W:~LZz/i+6vI$=f.iM+k96 vEX֮'T6-I8ŗ-5< 5&(K2Y.GPVG#ePېLK2 b[[2ْ.{A fTo)zޭ UQPR\&jd?o9פ>̳jfR\oz;uO쵳zUSm& ֗9SX7}f62^K8~/# B XD%{X$; sT5wTNe*(l6;d&&F':G kk 0E}i2KŚۛ&6F)tXșg(|g j\(󓲩Mgt6.'bE:Vb1( F)%Ħa$;elZxQL1TgpP_}MƁF)m5odٯڳ/ |~: @]73cИep`gENtPaN:R1o/U+Ȯs}%`Y+L 9Za7[u`|@x)M!.j~}@:G6]T͏"Lݖ7DĮEv BY!M8A(kU.4cKT[{o˩!`eTMMp,1&GQNE< ל5@vHќB|W%9h[;J M=/o4 )/ zPmE%cis;[4]3zGOlioPDX=gDVx"w IqUjd4EŹ[iF)ZE]UM-9\6- غՂM+24&梪mRw2o+p-$3>`gb[ b.\V6l'=lJGl+uܭTRWc֝|Q_6+ux9fm۝eL=`kXLϮucQ{ zrebX0R;Fa4Z˫Ik!:1BB(-|iP&.@SY-i.Jpjܚ~ea =s՝[ϪSyv!sz"GDAqϧU(3qvGNsr4 {QNgrZ2Z3Y92eѺp|F$wiCP8jmkCw}g%oRj)FD5 buAЕXwjچۜ6qrG&xA?ofaee0 G ' IDAT~n9DtqV54FR"@ *S~pk+)h" CJmqsDDP@ԙ奎H;L8D3gG)xC@Fl԰0y-AbW$$LaN5C-afKB2UΏVD$"_q6JӾW3=_ylqh8% bBuբM6(½ft:K;V,vʦO41hGi+ % M3YOz 8|ۚu)/JF a BldB~RIXe-g_b3_ 5w'd % ,yPwg6;.3N}6;9i7(v~: m^='i޴gD3mEc$@bJs7<2 txuo_:6S&``[>u!ZJI=/P3TM͍LP` .0+:}300kQDqAD8$#3%FUm؍]H!Gu q )݂pĂiKD}~0 ,(A@-TSc*c236RcnBJ6/Tݪ)9:ajc4P}FG7&1wCV1~^E9} '; O<]L&,lJ~ni 3$@2J.s=BjB.9YzE(wGϵW]U u7eP\~J$?DI sy&zhΌ9?g^&+!]#OR)r (S'F߯*=Qa`fKTN]P$D:ĒLPZ'o^h*RC\xSZxQ6qﶕZ;5ٛ>3$ʌ`j,e-~yΧ+B=ˇKV !P!Lb戇-n~W-3ڔu+e5)+-nq\V&Y,prA)} M#*a[Hi25W'0 kn,'9ˌtxJd1hc ~1#sPG+n+nT: 6z$4|H1X'I(Đ{=㕶k٨XO)M4Ӵ~[৴ "j0`vZ8)1rQ8py!Yq JA˻ 0/u]j_utaʅN e_1@զ|ʪV~^,.o^N~N vO2DhM5{`0DҌV6tRc+DAĔ TvuM/n8JVMJD<$ Sc:C'vL &O:T$1l..SUw.7&h!Ţ'$Ɨ!gii+ 䉪[\ḏyd3\xN0 h0to*0?sĜT x Ȱĸ8u5U`WK[,VɁ$4PaK M*wΌҧ&pфeo_gƦ_m]Ȏ+ .9dyg'i(щDW{\v1T5ܦ)1zWXTrj}RВ&s#Whn.@6(c"RU 1{0\tAefגD%&7zX."rљhx#, bTh R`Gu@bD7#t/5,)şj0 %!n5|[\'H=[EjQ|l1X'B4 :F9:>˒}0K,0MhqapAO5к$?hQv26W Yn&N/iJ sSN%x- Pp Anmf /$)&!a/'\ue wy@u!8M-6CE,2kց3E@zc`JU)Zr%A/\i>iRH]x{,\?j֖l-;׌ U jS{=<)j:HΦy([hVBt(bd(#?(;xo3AF@pfZ:9#+ Zh+3`f114G2jgg ͩtp w{33;$5͵C8'R~aG:#ފM m߾<ԫ)t ɑʪvH f"S;╓" %9M}lطfj~(f@{1ׄ*"PIU2.qn߾\./^ q7q/ݸqfXsYG hKN rj ]O1DA~"onD޲oB̻R 9\2)GMU3m Ua"T*"DD캾C$AhӼs~{Gͬ6v9µ*YL1z.ԍcb9X‚'G4;ڢa2༣$hj"7&v s9N0y$,; 7 fl'_00ُB?FREXһLXrLDu.oPr|3N۝b+BI朁Bn{f3]ŎʪhuL,bic,Lr3PP REW&rHDۜ4|JV/dsGe=(sVYV?!zJN 2'<[l9=w"X]H(Tk) 0. '"$)H9A #v P,)+Z'%;ˍYOJ_ݭ|פ5vtm[ʹ+%lbd`մ"&ZoC- (d$ KIFo[( 8ݭlJEil -4nw;0Aω RX@]Ԗxɕq1Wƹ&$2 ӥc58?hoy ,PQ+1<@k6jҢk׮7L۷]wEBF & "6 D#^#NaWbUq?o|i4$bGTZÃ@I ׶_묡ux݅|g Tʢ%!z(DѥO9F<~қON\5[R:J\ {/EQ+>[1Vk&M"7HLG/-j2iyBUmkw*`2>f2s"6 i:PҦ/)8܇]j%otR}a"L~:P`%pxu,j,@p&1.8F%J7xڜ @ewZ\Uc!N\:6&|odv8rp}y#B]N; Zmzj8N]KɂQUC)[T[.4H:"*n+1ՊjXj=tԭW:o<@0Hl4/ؒ!\R8Z)yRxQ~ێ* R1tld 5a(13 OB!?+bVwgV2S{=u¾ZlGk``F/y翩l9_xj1!jkfA+j8w($P0̝ 2߇jS=ZޡVI$49["`78w7 "`D8"* A<(Z hHٮyuwME80"(]3A%s$I߅GRwTHAv01.rIL8@בȸmhZ};sT ;p2Dn?3I%Fiq_hs ]Hбk!xV)`E-' qP'C(]$r9 Tt, '}[,ka:ԹЬb^0z4-2]*k|6"fK4,̏f.82,s52)'XR UeNLp ;uK@̾|ic+*"yi΢ <@]Wαľ '쬦fЇ|xmELGb坐s E8S1K=I0թ#bvBw?v[jLW2>J4[h鞪BpTSy4)> pB}s[M1 hT(]axplffkwL,.M>*ͷzcՁ ~9f~U?Z#Dj-W7/2DG)xO[j/jg$aT$IN p?dY1 QeG ઑeԜ¨^lYD:jqpWNOw̼Z-)Ɉ]8E?%/ivr\wazm 3,^ĕO苊'J25HɣrQ<SL&2qQ3jB@B'qn؁kxVG=\Y*}RT[ͫCv;HGGL`6FYOlj1ϰoOmmo `-%ELq6suPUONO ONeY;+Ys|1BctFsz dZf;L*' NO%PT愪~38Tِ; Sگt%;w19h?`̡foٙ#NvC?2 ɝÒzz\eǢjZdSIG+8A푖RǛvzhLbÃ4`>].W@3 LQZfFJi`b6cLpع&%n6Q)Ӄ"$ӓr/S[+]s̮rZ&J[D60ðlʡ>z틥<'Ձ;XYrHy_˹oX~w^s%|_NOOB FLƬ%h0}ѾOffK4Ysã2^'cP&gMpt-DO}_tSk~w7S2|[S_? /޹}?}{D3~n۞=rgUMIζ,`G zt{dogpg??x;O>~'Yw9D`gQκ]Bۿ1"= wn~O_v>YSLf1krOg 5䌚۾4=K/^?~۷o駯^=v=9>~ɧZ 4η^X)3h/^O|… ozɧ^fܧ{x"<T0Q{xx澶9c_,OOpO<}~f{rrA9p(`}47Rk4KmĔ}o /ǟ|r.\}{}cSaxq`cU|f,[y>z}ڵDl}$$a7|?p+ҋ/}"=`zSO0h'Gک!>ͱSqasΜ\{/OO?{U{f_w< /|2}'z^Et,}{uoqގ#ty˾;Ԣ_Cَ"4sWLI l@D&Zlby~a}Vq]]jƍ"'^_z??L+ɧ^wַZ8j ;:mOgy\6 cn )?[? B?p5sOşoxOܺu~;7[GrŘWh{`[ˈ>9>g> ׿??G? {g f/(XQJXĮk 0hWh~`,1BP@E%TQ8zv+?nٻ]*$yfvߙyߙwyg޸8O//gg猌7&NHDIII@`,####GBһF!4NTf `ynPx6V W{xz89;d 'e4nlB1s!Ŵ٤ z Ǝ 7)333>>~⤉%%dfdӺatǽqHJzS:W[zk 5ڪq8-r7< 'M" SRRn޸1z q^2d0@Iq@@FFFZZZnڨ049Ag&׿P_c:uԧw/pxR)A޹;2h$... 7q0L&ː3 511Ψa`DcviKprбc>/?Oze0i63sJs#.}SLvF8V\R뗙)Hޣ&"Q!ip9.І1$HG xBJ5wW8\_8< Z MU ]m1Ի8.y6Ajuv IDATxȒW9cfkg 23 B9V./pLM8^RRBx׮]pwvv~M%/>.*,>D;`\&jRR*j\%p9d/K)Z깳mj#1a. F&&>m۵i"H^.H$C=< z4`k0Q<|qN8 j޸cz9nS5QJ<U?z𠛫+erP"J^i!(,,٫@ гҏk >;eQS$."LP+BzD \" ZXPfSv)큑`V7h֢8A++/qW\ɱԩX$hmE"\^.=|D^O5?Huqׄ AלĀ) i. pH^x\(.4N05 l 'GG+kcׯSoߺҶ-ŹY#ګw ./3\&µC  3;s4K w eeWE zWTB=yD©ZG ӟW4{эEH31Ѭ3x<iYܼjooo# *rrM%B MlR0Fnpnp*~󦲪_1LpH+e T.21τ0P5wq` bm׾ڏtЩqE()K0ށBff(R6R6@wMs.U*8<˗mR[|L✑!DbΜj7wU,( ;u6za 66&ZcՌ7oP*~~#-,,~Fz."H,@0bh15bچi)ZbD;Z ,m]sFBw4't"]`Rm Oq 8bTuvvvryiiiv)W$j¯Qe@g2֭Ԫ+/iO+**z9ߌSP8fX zM p733+*,XHu|)`Bj`'G(Q8uݢi>}+@j;7ҊCbh to촆 ڭ. ]Δ<t &OZzf^kZ\s׷Nٜ :_8AcF 5` k}Lt+Zw1Qdތuj0qa"Hօ.A@]i," [IpB `<9''uޚ9SB!;=x:ԉ*d| CsK|J)j~ؘ F>+rp8ঞbPԆb1@3O3(r5ޅ Foc @dgej?)MMM|@ RR*ŸbX |SSSӞǦ5ǫ E5jw֎>@j>֏;<SDէ1*m}Ѻjm  8u4bTDy $ o_̴1555ѩm궭MD R jvtmNcL?S?O<:uk={?;zOd1lG_)^]j|ӦM#`ԑEN~>Sn6 !%#FơCv9::cǎ##^|%8csᴱKGݐi\ndјk\loo4yJΝW|֭eW̞5+00Ζ_ N+WC_D۷~ݺ]~Zz}ݻFG^Tj#XjcP۶m_l)S;Ӳa[>)e*z~A@(hǏ|;Nfna*ĿܼbhءG!}JT}M97:^JF<~xo6m<2իš//" S ii#G{_~3{=`vo8DΞ5{%-0GǏt/_Ȑ***&2-`#F $$ܾ?\㢉_O+W7O"w9j)Lػ{ g{8cyx 噘<{˗AAYِj}LSTpbZzzZZڙ3?<]Q{𻃧Ot釓'%'MLLyR(4ݻGDN8014S]b9\n t߾911M&̘1}>8P#IR_ss~!UnjB4hUVV&&hNlܹYIII^^B T*=JV@\ڭBb\q^JVK'k׮^0KXp4h~$&ty׈{ `=`  ;w찳6r4e'Nx zs8iى4e08ݻw3:յ[SQZPxc<fv#D=Oҥ UJJ!4ڜsPSˋ]pOqqqwq0=bĈ @w:Lji{yyYz5A)>z.]:߻͚g:SW53lR"|Ɏ/uzhi- rO~ jABA 0- bŦ MgmX=[HSJ]`QH9:e>?tZ8jyiMl>bIjbL)~S,iVR\,"zahf^:u~xСNN)};ܹm{XEEŚ51IFGVױcG *++q/_!b8'74p`eUٳgOB)ɠz_*Nk֬]`aXpEDr_~#pꇴٳDDuss#u(iNPP(nJ1cԭj ˗%׭[ LLT0pʪӧ|UHyز٪PoiVlbSZ'MXe0/?ԹM!As)G...}^\ҿ_?7ҲS-/m 0  b ()-z5 7oD5h ;pǎ6L4| iS}9.77W. B___oo YFk)U}ϭgwߗAׯw^9ԩS]v.[z~8uk#G0 6.`5Řħ~<5axj ~3?yfӦA v?.[nkg?~mlV~Ҷk[L2ojngi9޼;w21- 4mjjz42roD[^۷1Ą fc:UN3 2fժUr0 ۽{Νk.# S)S,4e0z3Tz +?xC=ojjjbbpIy `;ǷO"hɘ^ ,b=ԶF2- mmloܼQXTח--GZ4n[L-jr;t+BhƯ k! }- zٳgOjj={o߾*,X&R넄m.^x͛G7k֬_|ELLLaaY}~=](;v=]4GGp777m۶BCC{m$qqq/^[p!DySR.X(\>cƌ)-YVVtnݺWTv튋m߾}ppGQm۶ѣGs8aaZvJ^|y!pƍo˗$00pŊ|>;v$''xN:}gz2K)ʰ+WXXX|G#F`OOOO>|'PlʕGme;<,3,eȲֲ suu]t-;?в1({}گ_?___sžؕ+W~}Daaaq|ŊO6Gb RRRLJ!Yz5/sΝ?~C(4-VZs2 qUUUo޼ٺuݥKOۮ]& b]t?rss̙cee5gabN9r}0/jZV+* o߾iӦ-ZdLֻwcǎ1K_{왗W\ 1a„Ç3g<}4 j~*~ ӧL#6nܸn:j13QB"::wJc߾}aaaDKKc޸qcҤI|Aw駟*]vuf͚v% q3f޽>)Jo߾'O$󔗗ٳOpw}SL7o^pp-[ߟ;w.666))˗eeeUUU jw8ٷ_;v1cˡC_||}zʔ)&MxbYY 99`رdHx5ggg@e˖Ǐjs_h<ܳgO޽{?~%]Rafbb=zDuǿ{TVhRט33me$SZ4론O<|w6BQǏٺPϞ={ׯ.LcLh)aUݽcǎׯ_Gue2ۥK&M/B!5ݝ;whVׯ_أG'66~-r_~%==}…0qܸqB?=z+WڷoϒDaa!`۷oW* ?dJ8qB9;իW^%SVܱc;tPWT+V jd] XdɬY&NX^^>a„8cV3UeD!Ĉ7odyH]STFEEܹsΝ/_ݻ7MHH qqqQ0@ \jUbb"{hŅ㑇RSS;vȒ-H,X"`ſˢ> ///&&j1xHF333VeeeQQQ{)h8N\\קOxQ6mu#ZeY:<ߘqLeLZiA\|9??k׮PXX8}t6$ɢE֯_+74 L<"n oϺ*0QiJs6lEQ`Ay^80N}/޽ʕ+ɔׯoݺrվ}N:PXX}v=WLuȻZBCCJ%ܜV={YY7YYYG޹siiiAD"[pڵkYBaXXhjȑ#Ї)~رcGDDsٲe7ndH k׮U({m={vEEũSZ1I߿?!!ɓ,322-[W5"U.>{͛96ue3fkݺudիW?䓿 nFFF:99mܹsvv3srrlmmk8Ǭ_^.۷ F̜9s&Ao޼ ھ};9Ц\2>>TR޽ʹD, 5, V,ebcJ3^z/rrrZ|iHU[[osE; 8wY[[Ck֬>}߲e&N؈$L<$nnzZY8!555ԩӸqΝvόև YY{OkSSS>/bT*JX,|>Ą0 ՊꜜXleeZAdggWTT888P8U]]쬷 s<330CsSzcr)lN@Q:XؠQ7i+ʌ >o|7KTWWgeeb=5//ܜ˷~ "==]"LYYYJŅX޽že kփZ|޼y_dC@@@@@@@@jRڇ>fG}t8p ---,,޽{?CzzH$1ca\$''`Ν{bb[^~>uԷ ׯ_OII={6w"kkiӦM0R넄m.^xzdɳgϞ$](ѣ]v> 5Dyyڵk;wzjk_>~X  >|0dSPk֬iB8ϛ7o֬Yw;;+V]԰ƍ7:aooyfWWWc(g)˒{IMMݳgud}vdddjjX,[`^|S.ۡCŋӇ,rT*w}5ssE{Ldƍ.ݻ򰼷VI4FtckLYZ5jȐ!m۶M<ϏQa&fk8hŤN|R={V"׮]۱cǪU\XX'|Wz٫W q/^DAdddxX,&"--޽{KKGmذaȐ!%%%ׯYxs\\\YxO>zW_޽:tQk׮,TUVu̙3yyy˗/J~QHh6mjB-[ fP+V!p_hmےW\yYgggnݺaÆО={fffP,S~=vXZZڊ+H0Snjj$2aoh3'LƼטHNNvww~zSN󣦓TWW3q5pM"&u1cFP$5pZ+Brrr@@\.OJJ?,XW,W^}wƌsErgϞ˗XXXt1<<ц۵k;;{&Ok7WXѡC􀀀ݻ;88+%% >Ӿ}:99͜9Ņ\`ӡC8Tĝ;w҂Zׯ_O0A*vmС_n" qqq7oޜ5k֔)S>}zҥ(-la@- @ xwϟ?CСC?7l+W6޾m۶5rLYpN<9**׮]$JtrŴE84RpWXakk;pL, D2,˔J"x”N-^ggϞ͞=?\p!S0[H Ť}t۷vM>6\paÇj%^^^o6,O?-[?OMMm]-UXX~-##Go޼gl+ IDATԩ -**1bG(;::;w>{LϨp})Geeeݻwrss{K:KToooc]OiR󰼷!RV SzZ`5ko6F|8(LbR|(j(o|1`vݼy?m˗ٞ111G.,, zŇ &H|~\\ܢE"##ZKKEEE?^&͞=ё/Z~@G7<#G477|ٳg"K.~mcwQFϒ:o޼%K̝;<((\7.[#ƒ]ZXX>}zƌiiiqqq(԰@QQСC7nT*!!!JrƌP^xL&133ssstҤIE"ަݝ;wb~1uT33aÆ]V*BۿZ6RJKKX,.++cIgDWWWX\kʲaY<,mSۊicq=z<{Ç]vsPXUU7 7n,]tҥ{ 2wYr%ZQK}ᇿkttO:E8n: ölT6OPP7lЧOQ茉9s̙3?䄄iӦUTT(J+++|R7oٳcbbӍ sуs//+WDFiXjC0`Ȑ!seb$C˲K^?~|ݻ}^HTYY72v0`cܹCBB`N:uH98T*V)S׮]ieYa )x”΍2F\2??F)>Ll ԃnj/ LC  /Z JKKY!k**::0ŋiiiݺup8`:A{ڴiSQQѣG oڴ믿611a'jcmm ~AیP(w^NN4+JJwyL&ʂfffGy z߿spp8k֬ٳg4,mllB%It0rcpvpBv"""`ʳgRSSܸ\ݻw AܺukdY>dɒZgAZ9rttxiiiP]HKKk߾=K:S@A,S֊R44dkYkkȹs~駟}Y~F01F&0I=x̘40Q^Nk]~yLClo޼1H1+FiaZ;J_|rO/^6l5/\h… 1 3gݛ7o#H{PhffVPP0m4///;v ~ߦOx}~̙+9sp\@=|ӧåo ֭͜ ˗/ ??????ab844t˖-(..J-?Ѳ/s;wT z6zî^zAAA*f۶mz]B9mYiFIM ںuGa6aBÇ޽{ݺuyyy-׮]Y۸q%KƎ[\\H-cJ]ZZ`ZN3ՉXx20QCHHHhhIǎ>G1Zq̬P\RZy1//O(iӆ6A ޏȍAnnneeZ3&""4`0rrr C,J!\$eff|vCub@NNRtrrj04.fܰl=jʂꜜXleeEM/+++((666 y>A"HO ;eĉynv21Ciyyy_pǣ@@jU6mtp8>ݶ| P7'!ebʔ)hfHC@@@@@@@@@jBA-}3>B<_ۈ@>ڇ>! enQ:BBBF5dΝ;kxx8yTX`07n8tPFF͛]]]_~Ǐ/^VB~111fz*j׮]qqq۷JeXXؕ+W,,,>#F>3==>{𡃃'|BMOO߶mۃBѣa`޽{7:,PSN.Xy(CTT\.1cF˔Z`jMéõkߟw  ;δL?~7/_H$+Vϟر#99u?߿=ؘ%YUVVr#GEGGxo…ƈ,w11=iK}ҥKubX뽴wށqҥرc'Lp322g̙N29 >D,{xx̝;9sן| ɍɟcƌwxTQWF@n0L$uy}Aj_ԾdwwwgQQѣG˗/xxxرcɒ%c[nmذ!44gϞBZSNgΜ[|T*ez JIII}WUU՛7onjggwҥӧƶkQQQ)))sm۶-MCƌ3vڕ4˗/ò/ҥ;g++9s8+N>ݐPN^vܹχ?B=dff0дP aFؕ+W~}D0ӧ3"δLx^׬Y뛗:sQRM6mݽ{WPԏZ6^׮]Gb RRR%X)I^۷od86m?7{ qUV_~fff<믽mmmM8rrUE(" xTXQjAGxQAQQ+"$\™dc~w?IvلCh/2}yٙJ>, oٲ*<<0** yuuu7o>&$$ZJm"D%QڎFwG0k{т V\zz'd2RT*455d*ae4iDZN_JJJӧO?|p ~:?88x՝xɓ';wN&I$KKˬ,Pvڈ999fff࣯oTT[===޾}W_Lr"RSSbp۷ouA(ͦ]rIr//3gP7Z"Nzy|X,5jԩSH4jԨ噚bfi_+WLLL>FDDQt%ruTҧ޽{w޼y_R])GrE=S?/ `w|T*H$rFwYfS۷ׯAwqq>5K.B*ѪQ!233͛ >{{3fpww ݼy}~;wdgg~WUU555EQp@g+++ ?RQQSVWWUlGGnj |[HfEO.**zqff3>U\YYYPPpܹ"E1@F;x`ljj+kkϟ+>hZZZ#G̙sر-[DDDx-[cqiMMO"a@y)Jmi_{Ypܓ9s愆j*= gJ8[b6osTo]vQ4c"MK"dddL6M WR_lllܴiStt4F#ѕ8g9 :-ShbXm)A { LkĈG$33nG6"! OT:APm-0`۷C^8yK pJ=?x@Β<O,\>>>"Si̙3.\x#mt:{^rС۲e o޼9h U``%KΝ+<<<Ǝ ---O<پ\)Bƍ7nJ:SR RfӎF .8pš---˖-C/cGb)//rX7&&&w9qDttY ̙3###{\"&I9l05\I\6sΝs߿\9^WJǑ\%bAŋ:*))y݅ 8O9r$%%744>|gffzyyeee&&&III|eggŋ#G憆 3&$Q9IRRRs%uڢtoozX,JutIIy!۷˗:4mذa\>5~O6CDC ?~|VVH$ I$<}J1]{*ww0k+++ +d߷oŋl}}}PG__A@Bi$8::#X177Ė0@PǏ}ӧO$ɨQ)***))ab̙눎(\)~MIw^XXX9ڕo$jٴhiH+Wj*amm ƍJX,ĉ׬YC5̘H$&[M\ ߖ,((ƍ=z333ɛǑJy{ :NǢY9ի O͌3֬Y3o޼7qUWWGhG=>v/I$XerfInD$Ѱ~T W·%q7`YfĉtE4$TK>+V.mڪ+W|qVVqy]Q4@Wh&&&UUU񺺺r֮]&H ߸\ndd͛:TSSc``hnn;w`>?w ]͛{{//S re6 nݚ-H>lnncttcbb{yȑ!/! Ovuuߗw~ۻW2"Ea6(oڴA*ٳ\gΜpLfEE]\\@[Fjތ00:>}t333PhaaqY==۷DᘮƑd|zV_b͞=[OOb;::3]|Jq<8~x𭝝ǩLRRA1BRЈѪQf͚kkk8Cd׸E FuA]CՋPYYٳ'IR6aq>d2;^*Ddw5)S9rb\-bd4tr$u`U ƺD桪MJ8|>F%DQT 477GhHL544ėVTTD$*W׌37l05Nm{hF8oG;2ϗdfff}S]* _KR fWojkk3LrX,&mh`W~;}Ŵ]B͛7l8ĝFYYڷmi @ m444KCi%o9^@ }@ A @z=@ ȿ8@ >@ L @ 0@ @ hTï^а>|8ǿw8ŋСC H$?ݻwutt,Y2iҤO۷oyfĉ޽W\\ܻwM6YZZ"ws1116O?b={nݺbŊiӦ򜜜ݻw#ao߾^z-\Ãr(@$_>[vm[$իWϟ5|%H:\L&+**—߿ƍÇدnYfgϞ 200ꫯˑ#GN8Q?~xQQQpppȽ{ٳE8:I__?''DS`EQD= PZZZWWe|ÇpCCô$sssj*PG*{yyE**C԰Q]bŤImۖr>} = >|8uꔎÇǍ SRR"##y<ބ BΝ;beϟh4ړ'OZZZHNL?RZNwjkkD|["O$SMicR]Du^"[?? /55ㅄ[`K $΂?@*U]Lުuv*4a„l??????Q[SSASb7111AAA7@.\}%(^r~իW^NzʕO???Ao.JBBBOp}vo߾Uz;V 022222rrrJHHo鍍2LqL&&&7oxv{YCEEEnnn= Փ_p+*|w//seggt5y6 +5삂pYbXǏOHH !z\2v#F$&&O"DEE_ AYf]vmBpŊ 8;;SE'R&w9-- d'JE$\[HTbwuEʱj"/^XbE@@;H$ Y)Sg;D2,EEEDFv\zl'BN%t/,,,q|}}_NTlݛd8pիWW^YX,,Ń;wnժU;v(,,%"h!C^zեt$lvpp3g\]]O>]TT3f(=©S,Y^~:t(hee XXضmvUUU_tRqq)SHNwMMMQQQgvmC4Dx@ 8p\yBB;J!&B"h4yyy{ŋgϞ_D"A󫫫gΜaَL&3::<_ݿ?ɉ$#r.K$L+LT'T7QݪHڪq^*dgg[˓pIөUg!1Cbc;u &݂1c޽{p*g׮]ɓl6W644|Od2WXqQ333HDӱ\3EDDb'/^ o``H$rssQl>k,]]]_?¢,8u\.psРAr&&&^rԔ{o>WWW#% 7R4<}4٩.77733s… bE 7P h7o;`RRҰa[bÎ9{CHHȔ)S8zC…#F<ɓ'CMLLpre̘1ǏX@bsr(*ȏʉ ȭ[+$(PH(n] VR!$$rӦMijj>4(99UPt" S)^'_H\`]rkg4zhwȐ!t:3f >|lmmmll RCѣAMM͒~!RRR-"l}}}Q__*%1mڴ+WW^`.TSS"}؀o9;88䐜J^zUVVcbDrΝRA~;;xk_DQ(~555RmfCLѣP֭UzX|վ}Ƃ/^ZYYihh_؂0Lv}www|0 TL-Ee)2HN8 DmHߩ!nѣ>>>}֭[tN1X:=z *9 ujGۉl\\`)---(([S gZ1ʒdHGxzzĔ777]]A 4L,C?5jx" 7nPiIgNwrrv]rr2xghh`0 mYiii`^|y- Xl!^}}}KKKKKK l{AUUUZZ':;^B͙3'#!2rw?~… 999-D7PݴiSYYفv>}9!&233޽;o<5>--:uGNrl4xjjjΝ+ 322ďT*.J&R&.ȭy(-'Rw:DǤ8D`m8/EzyȑOFFF(rn݊l%Eg!1p15bR+GM2]_J?֭[Ba="##W˗/hK.566~iLL9]f P(\poY~WmmԩS?{bcc> ?{Svڠ 777Dbhhm6A\ndd͛:TSS6*))),ѱyl6dVVVz{{~DDDΞ=Y{KjhhXREw 2s8vYw\^^hll^Ctv$dzW~/Pbb33S{sssYYbШ \.а-'#r.ϝ;wǎC Qmz"E'Ct3ϋ(x} XӾ񰽌;(^T)"C 1{zV[[dX,.g``o``>r\d2t:x#FUNeK9wܡ<& ]\BΤȨB H'}7y:/]_BΤ-y Hw:@@ @ >@ HtĎ.ſ@)`m;g @@ }@ A @`@ ZhTױ9r$*++ѣ\._/ݽ{7..wޛ6mDQ_qɒ%D驩/_ttt\|9yT*]`?D"޽;==_~&L ?Wvv6HkkkGEE=~f?֭[={fbbaxbۯ_z3gUOB*޽^`խ\rȐ!<\T:?CZZZUUђ%K+ $FH4DׯOa.?~ZGG988d"RPPs\MḾ~7G&:r;vDuuu!!!GQ:$2`m>LTʠح[8PTTdjjeeeE1g["9߿_w^RRΝ;WXѣGoܸh۶mO>e'kǡh>swwǮD)\ |||?(:1 oҺ$v>J477/[l<F=y򤥥|&L  w'k߸qcdd|>FFZ K>:rrr\L&{Mt:}ڵ>>>~~~rljjz-[-ZtΝ}kBQ488̙3%Ϸ~HxbGGݻwggg˅7oXXXXYYUOB*}O*_RR() uFf``z>}888P4BCORNBMM͑#Gtuu333A+W֭[}SVTTDFFzyyd…-hL^] W[ͪҁ&kKT؝;wBBB~QFs88y7o?P(|IGY ?˗.]ڳgϥKS77)S=zh+W\z5+>e˖v \qYPnd2 EQT*J[ZZd2YJXY#++Դ_kkǏ՜>}ÇxOqȔF\&Z[[b)'O>w1===޾}W_(uœ33z7**JD"׮]AV= IMMurrڶm[DD_|q%٧F%3{ybcckrShDCOTNN||ŋٳzjP"Gu)H$5jLMMKIIIQQQu\+WLLL,VJx^'OJi 2N|[tEԩSyv۪ࣵ-! ӦMKLLp8񇻻{7M6EGGn)ʠJeeeAAs犊f̘A3gxzzΛ7ڵkuuu ٳgcu8[b6osT?wA] QD"Ș6mҶ:mgϞq8 J1'j[[[kkÇ+~UQQ#UUUpΜ9ǎ+,,|AzzJ0r充{dW#w(VA4$Nkq_~ŋ ,x=p8ظR=|ɓ'*ܹsã)Q(޸qCqMDb8KK˓'O8qbРAe/7lذawwo"2tP}}~ D7o~Aamm-N&uttjkk۪'a`&b.Q];wΙ3B"RU9sL``ƍ===Cw99992)) Ar.+Ĥ\GGĉϟ?5kСCCBB@|@wʕgff6LGGUm+b[:mt8p`ŊVSԕ@dj †,ȅ @a``/Ν5uԱcǪ*@޽cGY|kvvvDDD';1PjD#Nbiv>J3<;V(w^WWpҼv3&IIIÆ 8p`SbBBˆ#HnEF>)))_~_~ Fcڴivvv[n9<;y#f̘rd2QH$cSSXqO-AtoozX,JHv = AAAiii>qƱc(!vO>믿\nCCv@_xqȑPPaC.(?%%ٹU+eu2 rZ! ˖R߶"cll\ƍ>6bOO˗?yٳg@o* ,?~MVSSuw\WVA2Do'Yyd2mmm7o [CC㯿d2mllLMMD!uMLL9l2oQ >~xcƸq[###HE۷o(JF%W\SS͛7 m-,,0`ŶA q(IF C$"  Jrss_~mmmm1dsڲX'Yfn.)/^TCDutccc~000,g'D 6899W+***))yL̙3Tcf̘1cƌƍ7>}b~hհپ `UT*ׯyXjjjΝoiiiiiiaaAӝ]rr vO|R\|f;;;s!g6o mSUfΜpLfEE]\\W[n֖H$677A,y|ף(HsjhhX,@E =QRΜ9_K<<<6lFӧOnff& -,,Ξ=WZZ} SSӲ2##b3gr[۱ J/V@ɀoK"'A'2M6y{{;88HR##={$sEPիWco6l؍7tttׯ_S]]ݳg#G*!8p 7AvGxx] q"KP4L|| Pe0UBAht? B.khhx*++r={$9eii)Fk V2g2eʑ#G/( >}b Xlnn2ݻw:::=zh-:D l_Ŗ644wVQ4B'*W/7ABWWEϘ1c߾}Æ S۶q|>F#$maEX\\\d2:CP*H HJ{^yd2Y,300700\.b2ZZZt:F*}2:"J7otrr경Bw&eeej߈-trp .~Bw&m`@0@ i@ }@ nD+/p?@ >@ A @`@ i@ }@ NGz՘++3f`%?N;xb߅k׮ϟX,jK*?SCCúu>WdD(drD%>=v؋/P0`̙3DQTi9x6@TN4r;i_̙3/))IOONߺukΝk֬?~|UUUll +i󏕕u#q֮^W^֭;qℙ'QG^^˕dEEEXass ́?~(88 s*9v-PJ䤯qF;;;AݻgE(J~7FFF>lPˑ#GN8s<$[fϞ=[QQd``W_-!zQ ҷ~ B%3 *hVmRipp DA2|xMiz~ԩS:::>7n(LIIx&L ;w ˖-?>ǣhOE+VL4i۶m!!!ϟӧv!V#`mꐟ(Jzbehtznnӄ 볳P</$$dݺu #777>>޾W^j{QUZN4^鳍]ʉE7N`G ''~͛7 ͛7$ILLLPP P== **h߾}?s| fw<==rss?U ۥR)Vp;𿗗׹s粳A(OHH8pSBB|EEEnnn=cbb￿y8Nolld*ݞĄL>Q;!Qy ߾} '!9[dISSS~~~rr˧ ̀FajOOOgX'OWA2|rΫؔ'+WƎ;bĈDI$׻!b``;k֬k׮ }ǙDʤI?fy@7* šR޾RI^xq_|EjjH$B$??z̙{HT.Hh4mm<,e̤"ȩZi[|p`RUzV45d&qcƌ۷{.v<9mjoP(ytŏW{u Э398GYfرcʕ̙3i4ZUUfXO}t&bŊGR֭[N:dȐ,T ւE[.[WWያۋ+Wx{{A/* V]] H\\\DDX,xbx`tuuY,Vjj_}y *C700G$ak.Ր 1̮3"/sNBB)-o_ȍ\% JJJL`0͛WYYp0?x/ ,`0ӧO,Z?ץ|pss4hРAb1v?ܻwoԨQ~TTTee?uM8c0`aH$z*6###-- A9sd}$00|---4UA[ZZZZZZXXt''k׮}&''---ؖ/_޺u [kIH;CCCEQ|JETx)ϗ[lDRГb"c#7Bq8SNԩS\.P=p@MMܹsBaFFJYYYX:$#B333޽;o<A BQߖd8:Jӕzh<Ԑd=z4eʔ#GECq\oo[blnn&$*DQ$Wm@;uzƫRENljYYY?˗/hK.566~iLLassel6 .tpp@?D1I{aٳgBCCKKK/] 6n"""gϞ]SSkIIIaX`W Q(Yt*--uqqYhQ[$_vmPPD"144ܶm l6ɬD$$ˍܼyCjjjWd$ ȅ qJtvlK8k,|ۖ-[իWh4*ssx]]={ݻW^-`次AwAhiiI${rOiU2|[9 ^WkKbTdh</22RKK_~gnIPz(ALŋuuuAsppS AEI+x6@TWd2R) J H͇Z***lv=Vd---{"{`y[d|>_ƶ%XnCL[@Q?@QBXL&D "7DFYVVr{/ \.а}L,a<Νc6QoxEU=P1d&q5z( PcbbCDQIy'j~J)by歶6dX\.WOOOOO@__|r,djkkkiitRI^'Ҟi_wiq*?]_BΤȨB H'}7y:/]_BΤ-y H瀽~uz@ i%ys>A t̏hzʴL @:544h4Q?M"ƀ!@:S=|·H&l5 E"Q]]]mmmGjkk0% 6C @ZZZZZZ8'$g?2N|@  ɟT"%K% ޣA {GA`0 x-!z5gl 68Z@ mO??d2q?Dor&\ۇmN~{ b1q@ i@ J''`ÿZ* _jii)`@ ivuȿ !O%#2 |@ !hv;T{ vt)䓛i@ H}rW'J&b3y2d @:(/te_ڧ'h\>Ak0@ z%D9YڇGn.) @ iw8<ŵyT>ddn|@ ?* IG)&|r} @ O1.>) @f.HQJ=A tlՄOf{@ "k@ MC@ MWIENDB`PKs#L7n??-Pictures/10000201000002E1000002C6DF2B28F3.pngPNG  IHDROsBIT|dtEXtSoftwareShutterc IDATxwהӷ " "EH"(&b`F51 !&B5FzFذaQ#6@l_~9lwf{9 `lm!B! ݣH !B))x¤ޏ2~BCB!؇NO_-"B!>pUդEB!7w !Bn&Bm66(β !B!mClB)T>Tm0.B!D!2I9^G3F{[;5TWh%x}yhB!4$h?GYW̦e:h<NMSA@md 0GAąpbalBQ54-@`ڛu_Q5t_h$TAhO+(ѩ\P44=/0͓7=Ozӌ`Xis{J& @ <}s;ٞM!XۯGYfqm7w*/w@X FN?o _me>/OBq7juMPRմ`F>؁i5 M3/;hƛ3RܳɔC hkP+~v?F2pȝw?F}}Sau.nQwm|/_)lH8Ʀ;xa73RP:dC"S9|x B1>%+r3{3z GQϖ^57kzi߄_[ULdh6oޭ| [[@*-duٸ]&iD͓JrX1P hl].}OK&v3isϿ¬#aчmT[ƋXF^}5~3^v6g~n%cgrٕǸ%,l.̺-Fzo}'z2 BNiE>yk<}Eİ}T.\p To`QKCFl+"@5bӋϾD{#ʎ(XI F `%- ˲i_)(w H$k{m,! n}Ϧiжsˮ2T32|vy&[H,לX,g4ϿI2id?[I ,)|?2zpڵ|鋇:!We4#7)>C' !>EUUK{+mcJs%EQSIۚ~Y0vtoABݫ`%(<UU[ !zشyMb\HjzfJWE/2Ǟp1?pcsu{ݦd a.6@H%;:̜>LJ08][ǖ`S&EQLٔc))RgI$:IlW\~E࢛ZóO'iܾ)Edlܧ_Tkb vm{1GY[YWh Q/rtw4`6˸cE\tc?J >݃dQޑ469Щ~x'xEgKkhNT %ě<.U~(`7B.8T~y_U>|sYw_?'pѬ}Nddu)BQ^],?D{qcF2ftG !_7FR|6BnLx_q矸臧q˺= g>6.+~DOْ#WO]H;s _[ӟTQB!ОpisAg=n8+ vA2Wxbĉ{ܮ=|$c;PPP@[[ӧOg˖-}eqWӧs '0gΜ=Mv}QM!B +?mSVV&?/ضmWo;J!sl'|޼y\QSSÅ^O7k,^$w}w@؟ٳ;m~e[d o^zaB!8B7H8fڴi,\?~ԛklu]ǓO>ɤIH&9?7o>0n^`ܸqY믿_e٦NʩAĥ^M7t@=WxI&SOq;J!>՘pMn(B10zL`(go\w0boہB!J?_-s[% !B *M B!p!B!$ !B!cB!ts-lɒ%9xB!Kx@!Y|4B!8;sB!&[NZI!BH"B!p!B!$OW__~y_^^.,B|MfΜo7x̙}rYjGycʕL8+WʫM!B >Z*VZuڵkYvm>+W2 F,gᮻ#f˹[8q"SNeժU,_I&q衇3trOs=]gAee%GuoV:֙=Ì3wB!ā8k֬n`͚5bL̙37o_y{9c9; xgYp!g_*=X{O:$֬Y]6P\p lz)f͚ń 5kVT*ou]\i]nӼ555ܹ;3gi鿗.]… ټy3/Yxqg}]v;C!@ /"SNeر~݂U+XliOpWr-dXl{/6lTڵky7k3ҿ{I2䪫bɒ%QWWׯOGaѢEvi݆\|AN׾5N:$׿rI'e?˼yH&_y啙)S0wL.+­ʎ;, EQrnOvxoWr v*z^}U^~e~8G4MضL]]v˗/c!Hp\m۬_>l`&ǻB!yG!B ojj7dҥ̜9z<^78>/n`},[,Sv5^{5ktZtx_=?8W_}uf(K$G_zfHMM gy&>J&B!7xc@ 3͛_O[[555\xᅙrVZE4;WB!!?S,XS׾O?=_h駟Υ^+)tARwuW~f@doskʕ|_4mѢEKʲew̙3),,Tvy1o޼E7x#piӦpB?̼W_}5W]uӧOGuy !B|FVZO~NN93/W]uW]uU!Czܦ `K.$B!ľОpisNK,`ݺuJ[oxZi W]]˗/6LF!Btwe/qJL!B!7 B!BHB!BBB!BBB!_ޢp,Y" BE;xi9'y!Bt[v_#>|FB!\Ƅ !BIB!BBB!ti!ByիٲeKy?>C̶z1w\*++Y`^O?1cp֯UVqG2j(/jժN\~=sL{wqTVVr9ёGW噟\?3f̘^裏+r&NدM}B!ālTTTlٲ?^3s'xw|G||ϔtMTUURUUM7ԯŋsײe/^iO>$ ,賞K/:?y| v?&g;W>_> 7n/?AupW֕=G!@e̙TUٮ o0cƌa6nw].]~Wo|0?>B!'cǎ {#u]B!G kʧ {-׿?fڴi^H$_Ζ-[8qbfhIZoe7|3?~<?r !9;z9r$gu{n׸z]e [v].!:u*߹;:ҵ6L:kv[}B!> WzxwuОpisNK,tw IDAT1íʴizB!g?>;{>!$Q5@-^BpO@ Zx}1x t`0XFV6:@PX֞Y9`e=u,S46ZV֧dﵵj͊Fe> zXԃ5e1 T&4U@0ܲ@0d ʱl4jwl7dO3󛬧W0;k' U]\ڹI/~j_!Ɓ/TY:`ti@>p 0l.ط_ܴCޮOom+̣=p7PPP0?"H:$@@ E0O RѨT5 C%H4Ix\4T1'F:$)DK2 e(ؖB4g$ VXܠ@=MN_lS 9i0~0+wf4eCDzpf?2%َl. `C27^>qzWO?i; b@#p" O^t~ d~؜cjyY3>}2mYGA]ha݆GCܽQ_F3[gP2$Jqq8E1Byq)._ D:pD#h!xFuݝWq994S &<"W+eK?>v= ɚ섬}Hc,v`=ΩӺkmG"rlS.ޠiO[8=郃'm;==I>/ukzhb^s*C!^ATl#[))fWںnuAZZ|hB|km8a5 7sNo"w[ltnV3=4%Wh.nkW *Wv|mﮣ*rQOumKG8Ne=Q'A mXYGcqC/ U)iIA Żn }0'nyr` 8uk֑S8u$?BN0dFƎmblߞ<~;9 vF`uִ8 <88g3>\?򞙕_ѯw|.|v){ڎ]Hr:q/2; <Ӄ!έ/۝=2/7_3* p8wM[U\~0ŷ}3d[zwwĬ8c*ԳFq\高ct{ڽEǶr Ntf@JmOsbHqӶ̗cgݪ>fu(vV;dݵS34u0cvM3YGLJ3w]rDNo:`p{^s3Lt[Ƕ.;W{=w QpRi!S98gpFwәak:B?g8cdg;-[?>p8BqqN"$Ja6ikX0D1dDw˂T21 ӂX4N2iP[?yD y6I&M-$ ,BMwr'[P)遉 n*) 3GLRë 窥3ilg&{|U}>@ү>j4~4 )ؖaؖiG%//2M"(eÆ2{I[[;Xh$i),j`IE*:-t] ˲jUU0 4))'#(ZF2$R`MQTwL޲X6lQö;裏5?P@O x~t]i*PCSS+v5Q9z8ͻ[PT,`򔃘0~^aH%M,}@Oy0‘0LLGv?#(69sf* m1r8MM6@CuH tM_\DcS#Øyˇ{!,8$mmQlg۶]2ܹyymǟQ\p[ LY{xSAP.QUm;Uiceb>P(ȘFimi͟jfC4]'/?@YY)EE5c{s@(]">O"eبεZV[{>M´+tUGջcguNgjldu03aJQ|\@:g+(lUSPU0M EQI$hF A8  Q)^B(/m|m'px Q2ϊ$mlE^A669-l}a`lP1r(m;hoĶ3bMWt 4i"mml1Xs&嬀8045}ƣ}ʏ?ϻVSSoF?Zo]N{s 2vjΰBƎ|?xP;>h3-|^˄ cH%Mv쬧bSN PiH9jmR\Tm[jvD46 (ϧi:*=*a[`) R`'H$45c{ Mm7*^JJ&)*ʧ &LKqqk@iiڞ 9]P <34g.u{{s 3}ܵg?=Ctfw:5ETJJ HRWHQQ'|yP :4M MqzZZZ0 ]ŝ@dٴvc֝hh;Pd.\ϨQs6lW ]۶L Ӷk'T[ Z:ӂƆ& 0xlFWB#N04 @6b+tӳ )$??DAA>yyyfQ#Gj^tH]5j㏷E>:GTPX0mLTm~>b[vW;gOMB|>>+kޢDII~Rظi+;wԓLz>ӰwJ?eÇHhll&4J$PUh4EqA1cF2/0}$ B41 PկWUY +W3OWOOG;#Dϧ,SnD՜"k¤CylݲzgA~qFS9`Z[[ضC=Bi|዇LD"Qֽs=;&RJs54DtڛhkEyoRPXВBƔ$?/`no7,'Pѽ`\HbFX,Jʰhiaf㴷ikpzul19xhTECQD3v$C }(u3=nf=!]ެ0kzvHi;5܃i mnaw B47|mNo v j>g}?ⰩXh=RƊfLi{n熙6Olh (NMS0M /#eE9|$]VFA?sa#elݶTG#hSPpBx*#QC*eُ}TVX4Ev>s +)j#|~L@5W#];1 m$J%)(n7EC /Mik렵0mre8CTUEAWTapH$WwjM$11L1cCG0ahPiyOm:Јţ +fO!/?DMM#~:"q>` >AQMl[u?TVVO=8pB8@GWq60yJ +N"!vj+?K%mQ:CA^n hlhewk\@*`X;VxqRQk׾MN<hM{dF:bI 2j<W1r$-Bia!h`Ɛ`0چ]Zwަ`8PV>0hG,@tb#;M$inh'1M;s7h,ܹVѱmm"PP(Zpq==Ӫ}Z]9@^~JNxt<ݹWq$ 2,tP^PC{I~5ĶU:::GXp`-Lf½\mk>ˑ_Hb[[xp!Shok6Se쨯gW}w7WS>䉓(+‡N,jli71<سTW#r’g-1\T!foĹ2غU;!Ű,˲M}m3Gi4 [Q5t:iǶ- Du/Tt5jx Ey9gjc(;}Kxc-kywmD|O>#m)zT8qPԱ&CySR1i(hs}WS Bb&瞻.;K+~t(Y=b|~È36H$E[k;vE ++氩3T2NEPZؾmeL%{ۉDޞ" ; Ehii#KH3ecJ*KB*2~  X R}-lӢ9BKRhIR"4PܥD3s]L IDAT,**'ň#q::hnn R:tab I+ JSn6}XG#b^]SJIi!~1Cc(*Xx(*ʰ8xd +@ 2 40T@A04Ȳ{==F,R 9vIQlIeW)ND+|bRJ*WDm)dǑ-T(R"  v`f0Lr%YIl$TtOߺK?4Nzׯ_#I ď"JaY.\dg}̙:%{N9|sk/>#?'~xQ>}p%ᅦ~?gcԡ>z m,?ȃhy \koM6/n2LJeQ8Wp( *xRDOV!H& yUd\t?6.g '=bT0 n-3-a0 t#q AwNsl1FbK[-2/)Np_j=ILwoĐc'Nsc8O2 'N'N t;Vb2ѼE6ֺyq]ppp,SǶ_x~^xݕpC޾&n I!B8:-vvL1ǏV0lo͹r8Ny| o'㹯ڵuX(>պG=EkvJ9T:,QA兔Ke3 T7t%Nގf$i N$y"3LF Ü8yTFe~'^18THtG 7<<_Yȁ},_^zT+./Ӿʫ/2K3JR.\]+k\AF̩Sݟ8I䗞bgsn0֨M碛#D(OۀK{sT7g!~qӗHNt|ݬ?}AK9͋C*1ո:Lٟ}=Nb]v%|9뛌) SZ? ͒0{ǓO.rJ_W8xp>J˻+m uheIPƚ^o|z&i3>/JIL{g_z]w_8+9|d9w*O}傏 Mr%Vpڒgr٣[g$v?r3(rpRcͱ&i*8w~ЦY/#K|l ZL3`iRNO=}AAwl<$K;DTwY) uHaKɠ?O/!Y3tM~'kH %ZZ,ζM͖ig++..{B57f 탦֘B<,ύ+iw/SqD B]dN'4gzJA,:;m>g $avnn{w nC3|H'd/|FBz`%Z!JڼEc'X7TnjzB[$7 2kGt5&ɘk\t8A,o53*$)31~v'? ݁ ᯞ8_| ^?qÑ70d;}]D !tt sTpWY{ǧ>u2O!}v~%e&>dImk[ Nd,ɐn7g8ٷ/ bP";F\Zd46oX[= ATIΐ#5cg.R Bs6W ɄGR٣ӧVs1:;$YLD,51y|ϱ_| ĩ{.1+9Cei<:;=Fʧy_JMDaD^!*IL|pBjTFĻ ]Oz mF"dQ**dee4SCE[6Ȳ*G8'('3G?(Q1/tWqVo[Giz\<) vO?yݾ{!_'BR%T-Q_{~=-1]1P 1ESBxgLR N1϶Am VgO2ybG?tz+W⢙yzCY,ł7 fGV}C4gAK  _M۴wObtn$'g,'EWA Rj*.ـ8“_u׃Yk L8|iixf=r'}BJD`Cd;RFX )JJJANBJ4'd8ᜣ׏ Ke)HLDJ OI< iK2cOjɠ/Jt{}≾5Tm&5NbE:u:y,6ȯګ*?F 6Қ-Ӛq琞# %W88Ēf\B[pǚV/"l&7n$Fh,8H3(R@")CApRI$ӡEQ _'IR׾&sO*%-`kckWõysIz8 Iu4Ʊ$Gaqpߙ8T0,aQϳ9!I| p8O>uK׶xjUbkVk$#% ]vGT,,md(Wۢ*y+ݹ/llĩb ⭁޽- IDAT;:U2ZJ٠5ms>(Q);@01ժ#S>Y&J/(E8+!KsY, I( H @J)I -X#T1#t`-P(xjj#XT 6i`ř| NJ|UR 󩗢-6 1JxB)Қ_[\V)E%To_pƐ[C-yC Tt3bqadVp~`n&-hRD~/G 9xpLYcsc+Wy:;;U=~>çӽ|+o;⃏1k o^{4Kv~\XZvb W9wk=7>%$+} Zgo\E~o x{|{7Yhj"X]1,HR6R%JbIb #(GP=VW}@8Ug3 cݔq!"*aeP EܠuA8k;tcNO9 ,JyVj|Mb:{S L1(9mna@'%Ҙ[ b0|@ 1>j:t@ + 8E[AJ#ͦ!~bA[u򢿡FŵI&E(ZȱPtUNF"q&Xbrz0d-:ʿ%E |E>Q4ZDbrH4)TQK"IOvK׺LA*Gl6! PX]#ӆr0fbu]FJy 9ngŹU+@ub.k y\&ixyi._AR='NraBOvg;Id'T#!Yy(,ќi$NZBYXh7L2K`a^}\j~ Neq#=NpxcWr"_ uO_^o|?mA(-37=H*~闿sbзUBΙ9/ |OL岡\NO?%g2#AbA~J~-@vz 7d۾􅽃JuXbȲvؽ `MQ1Ƒ ^J$G:AHP~pXZr!1HOD!硍#k(3njGz:R')u8! c-݁#MR|ȬCx Ki&96 8pu-E1mu1t2ɸ`a2C _+v U\Q?{ۡ^Il'k,K-ql zn9r$Iw@z$BD]ʥTAY{ P}H$;Nd1W.\'{ &C I-;z.'h ֶG4IƵ!tfk+W?D*4(Q~Ai.%QF-QUQJg=JJLQc Zڠ5ߤ0FTzʾÁO*N1 Z:Iv|O8n %'J@jrjɉcQqFθ+a!)iwvXZ K!-rU Gj%ցR[mڝ67nP WϾN{rq =vw{ty'i-B\Zȣy֒s̟fmJ7:[_cS h1d;7HFD*Gʹ(Ԅ A Čc7,;~>ý͙") Ik5`)XD`B06<$DذHNE5X$[94{`Ww|p{÷ΩjjDr7Ѕ=9{kw7.:4pxq3xJ}|$E=$8z /x^ȇɻ~Mm^>_\@"-ʹ >s7 Άw[#W*œ{w'_۾GOp!y+qC)L 5"CRIvТB"<1քǘ/d =~3 fJX<4ņR boLK0Q3kC&-t}rix c;B?e،!9s66ԫG-gsD-bt3ƽZXubúTR$ jĥ,ql#˓moag_c*Mw"44zm@."},ҿؼ)L ' 6,;8SR R g^Q<ؽf3!Z {9dJmj{P* {n: #l(yKW-Ν%h,i%7SV٭[[urX2xֶ?\Fw8pXuڇp* g?s_?~翙O U*ݼpRhx|Q˄VP]gHVS"$lfڋڐ({9(IMH2LAC.NO)>kh$M+*Q xE%ᣚo+J!DB)t ZuJ/k"p͔7=QxL)ptt^}`LӉa(u;(:zxۖ~^H_/P r&]by! ļ8):GkXE-v(c7 *{x>uus pr:̘`M^""}bY]`0 ֛5C\!n'n?u5rH7~{aY1\u}UeN4%4i*w\><ⱋP`&Ajc,yn߰a(rď [ _{7?zK ~g_F+4ʈUx`~0y8f$C" f]aVv( !DJT25EM`xJy#rJ(<4m$TNOȴqz'2WVVjTYoiag; ])\(Tk\틵zYRHxUFG-.}e> bRY`|p8%Ι(N eMi"!=.⁄`!BHI? IDATpPg6RlӅ>D%# %e6C\ :|(mX.ªў]98o!Мw xDWJ{ojʎj)PT)Z*]v3Xl42z+B*c&a8#vH9QT |G͕i,luK}R2d1Tb!Fᨤ_ ӜO~մ._[QHD Vebdyѳ{d1/y\ _T_s+qEMс(itqGha]2_z+ c&'^)db}aECW d%Ȱ01Y͈3_$zooggaD+tl-]kcrŒ;<<`ggnߺ{7qj΍::g+O?=}mW^9;?/>d (c&xXv6kqL2iJRߙ0P+m@Xq ^+(գ:bQԝ+gBa$#!rv8} Q R%~O|%~moow?"xLAuO*amŮ W sba3|g_Vj鈝wJ)u kأc rQR&Jجƫ׮w<#*D{gs/ ]p%'=idx\;ޑͼd+!j$<榝TJ&Jwf2ieJ* Ard=0 @-D +HIzU 4$X=W/%ӈVTlAt+)iPZ{JL*9l#Nk^/ MReL**MhcP+qmϵsylyl1N g3TtY'r57pÊ*ED͈sǰY4R&eN/*Eܕu_Zx7ej#!xKG*&#';35>AA)}eS3A*bBAN{x|x0! .DR]}~c){%xa9G뀄{^a,"'7ڣbtEHיVVz̤\)R ,zǔإme8*)^O-ib{BzoYJXh4UR.6(9O4 }{7;4V>} QGf'@`Wb_X..+#ڃY Ǜ2.:#0rpqTutp3:r7y.Gb6I=WuB#F\8y5++G0֎9uM楗gL'=yT|s/83XO&6OR)FfPTӸf8ls퉫|ŧ>,r[wNc"OZVi+Eɷ"63_q->f83s?õkOK{&?,eb RUi"ƈ]g|-o/_'YW](4&֤ 37ZY[@U4"jKG*@Qj)>0m1P\wqŅ k60r! Y Ίk4 SK̗K+ wO̻ }΀T`HmflƑJeur/3z]SΈ* ;X2"l829G6TbLK-LL2%nFhC{wjC8LG|cQ6m͛lXҭVTڄ&1>'IcBBFLz*ͬ99r{cTl-~/Husf@lN~ZRӍ ɉf2|ḎYb?  d$EEm֛򄋖>zT3{9qjZpQKJTs&Ik\,L 1КLg! 4y6B?*LM+^9s=pu']K =CؤʸEeX m҈H}},ٸx#_{??Os| /e{ cӴM.ӫ/v"e[8e1tH&;OXi!O̺k5IgZOvrk/QFka5!G+LPƭ@NȮUٚԴ稒c >X}F4qD!jPlzeA.P1mzQ0¼S|1S\;փ6֛̱6Tyʔq^ ˹eOUIU;J EZ2 ¼w\xjcJ-46wE=ś6NJ{N9a5T*Z --Wf,W8VEAʘlqR3օZ#Q ™,X虨ٳʕR3N'4K=AN4qr7op]^x5n8#M>4T̀p/Z3GW. @9.-zkʮ:x~wNXw0N|ȯr6C<,h6}<=OwsQ⪞aeB %ǯ1=S Te=1摢˜'`6ɚI5Q'gWX7Lftf8<[وq)v(LY }*gc'YfK~Ѣ d-\AjFUϧņL I31v82xSOg[2\1 ΢l5(9'wtt 6loe7✥3F9 آt'q-!.fbt`,Vxx<҆{ ŮՙcS$1F>C/՞)M;V9k1[VN&cR,TKl c,&q,Vaʣ|r0I5#Nb6bJs`^Ե&]Z4ska:5@R|Ge{^LZb.t灀tU)9z+'m-bDY,<Q>Ϻ'Ղsmznd5$^o{ʐ48 [3ŹtݯaW~k'?_K}#̄:??@?Cd1 xPI vHg?S 4JfqPxڒŞhk1GrArrvfEuGK&}$I@-kv`9\*䌊'eKJSvQ_V$[ٺZqQPj}EVsoMm a>7 |#~W0 oQn&DHqc mn!A%[Dsb~{b BIRY)lB.:!E֕ܳ9|yBp; Eu|N/Jh-yRVrɻ{Xjg_#3LGJ2:Mx/VUחyl6jK3C֔= 6H™``nгD]1Vw'\T=#'iy1WYl8D'/>᥁_IĹ|/|$e *)6| fR{=Z|0ՌwFV|uQJQJ%@&_vV҅@u"bJMtX ` CU$5ݕwFn KjϮ'a*V2UH-L6iO`Dחuxc`oFÉȎ(…Edڒ t76EBlMVPIEXD;|e);>a3*z. *ΕޱT ujQU"ye0˸a%="Tt\7p=*ʝ5>$.#c* S"^nBvEQ':Н%.^80GjBЃ&n;f&JrVm6yjQƲ[6/@i6R9l -us=D;B?c&p!dng'JUXk2*BOeZ+*|_x?G/w~wG7L !il b-~V")A[\]}l&؜  aL]dωNX ga )O\{>oMMVM 8UzYZ "B 'f1N60vxZ 08RU\mvƦ=J1ٙ;rzb hCχ4SV؛JUۚ-c x>VnLܮSbhMd&1jsC}Sa]:Cu,l(n l댽jz{vBb| bY) $_fUlRBp;nx<ZYO}YAgwޙTl۲ԵZSRpB=Nx6LI[DP%64X1+"ޓS!ЄP't|>YP;%jg6𾒳ch{Ybj^3qnl s/W,VL5Mw3O/jͳ{zM\W?:|-#--@axa/s_,+|g3u NZ ƨ6Es?S 23G xݞVˑC%%c{\癆fK?Y(T$`#xEeM?Vl1)[UJF#U-2sRE_\Wqo7o-mr:ې8S+ǷV{®|żCklJXqp!s! ,d AiG^'s4_䆢\PU]e%DGpbBfj=bm -Y@iP<EL iM%WTl^J9L:hWvβm,jzfi{Hco@ v` @!TRLQm?^qi7Q$)b~,;jܤ&/ Mg K˖fHoIц.ۇ0fs DrL<,Fdܖ!`X9mE(+|-f.5{+ twKTFz8^=*wIqWij8rd)vޞEKeYĶΥ4pI:u0fn3v) 숝 oxktMáfʕqX356:<5p^W'/E\݀/{z>FSjٴE[ؑr&LJ--,5*/klʌ[-R? i _Ιn;#AID:YlD'?в IDATI"W>PӵȒĮ#tx ޤ1vhi6; cڠYTHE(SA WGO2)!*r~ >K@QiE4}6$N´>tL%&O]4<M]bkimuf(`HyX5.  Fc6 Sr{aƲgQw l7lvqGxГCed_TpK{kǙ{7.xϲSQY+>A8[ 9Mfιw%.^9ӟjek: TR {+h6JNasrHAp ]ZR% mmj%@HZ4K!+yTmي k|ȖF;\ :?OՉaH_>}n/g+|Mv[ ou{ 5Up,!MvraFVyXK+5Np|8ooUC0s_؉Ԕb3ٚO}Д*NW76*L윱Mj)u7 K4b%Zm ֔oXc6QnujƜ&C'-llI!-k\k:JUfDC6ݤѼ Z~Mε&OF;\%JP#DH))1ɮq1.xoCV(plˮ&.6*eJ+$("&eya_bs .s]Jbqe'7VefUIBi$8-:K66ݘ}+ M3FH<>ǶR8>Unܶ1z?/\2jt|}bԖ4H _K3ۮDӱ{L6 ypnQCtgD1yA#`o".. |yQxɺ?JH 8=q*hP/+K!fo^mb_g_`qmuE}__+?EK$ ZRnYt²xӛ?K/|E|\})@OeWWܾ]VQ&ѪFH<0M+z8q&Pc@QPK|A!.IpX: RIη-ƺji UB,-)OIB(tСbF{kxjIoﰥjknp&KxW岭.\h6"M{?)J}r̟RI,q 4h:a"tpz h5ͫk&g͘#crCUU ]/j6$4T1Qs% QR7ɤPCQma0$gs$el:<))oct+7,&5gkbqi{VϭNRH[iEoC$@s6.I-m{$>]*a|>áT:1Jj2ڊ:/4QV;Go1WHYW)E:>E-WU%LEO>h -a2644ߛH4p-lNY{a3Ps!FLeWbVT1kjjfxs.:rTm/$%뤑h9MTд\1 vZ V̱ƕf:c91[t0: ": 煔 M=;w}nE+!|"{؋Q!xJMƍ=eP/>wt/,ϠL)jZ#bl)ElpˠNN=5'A'SN=ۚAs͊=3Vt2Yǔ @~6#:OS1y3Bm&~EIk1zHQ )NvýֶhV3JfKL`qxV [Ú ]V->R gum/:ʨ3%&ڬa\U|,<q8!F) cf8Mx/yo[zgXp>Q@@XEIL!*TT*>$#I%)QJ\1H Bhj$μwXk=S>Z{Ԃԧ zku_½Süix t̲X{dq]tWTKo>z24ۭzsAV,Ŏ&.| %O ! 'QRώkX.<[\:}/ujh0zpsio~YZ_?jft኏џ z*Z/7}A|l*1Ԁ-lVV 63 <,4S7O~) Ösot*9Qoؽ#F=%xPK47$!Zx!Fm)DJr=3 uio;ÁqdwZ%DkbIji(504[2lvi[{[bͲ"\8"u# ACd%ǂkΜ;˧>3WuH`UnԈXU#sNCbo,0fJLV$ԙ>Tm|crZ.DPbbR_b:ld2;#ǡ8Y*< )jJPw o`pԍCU)H yRCEhi1Ʃ.5zNP .^=@9 9W\tFb4\3L##_r" cl-L_4XDhq፣*pJl 5SSJKq88w*RGR}ݼ3`,^R"@x+,fKo]=& סwZ!E8 1 ̚'M [@R3d"3hfLi@v4`e\;yLu5D]I!L$6KwxfP> spRP~aJlGrWÒ#-9\HwQok |O`]CHu}f&k_NS| 33ZߐB`mUbhYJܹw]-''kEY;D*)U=2+p4R0ծѧD.bȼSo[\9Fo#I5'WY(4!#e=[#jEq͢Xu_Nz%BӨJc7ղW{Ή!XV ^4yN &"' h9RND fC8=CĈ(f.?`)X+⋙H.5C}}W'КŒrqyf;_|,ۉ1rzvʭYo^za+|] x{_oU0"-)X4+2N/ʫ<׹ Kj tZzC4!Yf39kK^hAHmPƜ?ڔy,){D\3vzUK! 笈[,bΖI 4XJ EDĩ7LWBl6дKW#)\_.f,UvPmզZ6o~ ?~ܾ[aS}JU[K7Ѕ<-0a)uW)ggߨX (Dm bV*H$im)CAB B /"5[UR+:)wPÂTjPZ?qeT5R7c-םjҡTOR4L.hccrTu^BMZzdDRyʠ%aWvrX{oJ`H{$$jn$lY$V:R2ЇY,#@?j=6N7CsMʫW?#b'Xi2h 5LY0V!'3c0%֌94ZH(s0u˸z/gQKDLɆ&Aq>od3o 0to4pr\i%9}G#8g#FLcy+ w%`_{?=Ez ;;2+>DmFEy>>^+mO9?$Vgܾ1lۭ^f]C.KH `rct!7zJ9d]RC̚!nja4mvPo0ZH gRyun JnD'Hq~XzٌZ1ks,D &"iƉI}d6 Ę釂wplt!3aOC.Uq3qAJ۷ Ż] 7_L)U=N'' ,8YE>55o\!!rXg)Y="z4h*G6s/oXY-vۍWUDNG<};[n 2 _) r^z>r|iy 'w}_M.pZ / 7^+$ Ι/yy/}k~%)pR 7_:Y}uC^H*X^묗(-U)V`D\Y,4l-FqmC!L!Z]&K(#;uC엤t Iܥm-ޗ}^̆a0fg &Q +LkGdp.",Ϋji*b& 8QE\C~dE֎;W$x{G 8&ڬ"VS۞R7HF̔ձ`j! QN \=!'0aJ>5S" pcg:'4kBBwR+3zjIL' O ]Aj]ff@۩R@FYJ"JS YkGCgcAaNF3sFv۔2C?ӝ;BЦs!45~~r'D =bh,Za !81 ]#VUia*C?8YB EyLBQf 1Rжꖊ[-ͩ~X:HR>SBF7e9GʅY㘵,0 7j*԰kɆu2V:zno9<;seaֲ6ێ<_sf~?~~CoB vRF(# Y+~H\=xϽ/ݾvAaK\c=3boz.Gwawo)[e֫})o-N,n>SEE'M]C]U]L,f !Flq @e9RgsYJ&fVf*\-3;%XeZ)`G\#tVP&2`]>/q)Jpb9 P ݠ7M~J.#BLJ )U;bX׸FE2CcrREJGB-Drf9͙pzjnzNvv3ׯϹq3p|4`݃JFyo^ Op:luL? C*~ES@)T3-5aj2׈W~n/3twwbxŌm؜U22}(h7 hv⭲1 i!rip 5[U RT0Z!#tkX,`K;w̩aR *ZA Kf ǎYCΦBkŕl2l%J_ȺrųxG%X,3=򮥝5gw:3g(ꙓ"gp4BvX:}E[hg 1?8^|ꘗ܆=;7xo[Γ_']QJ:b+K *_ɟ'j5 }/z}_=D}ߖ@3y {]v6\~ r3}\t]NG'g2ж MӰnEQs+fd HJ+u؞zvR‚dU]*d@,)-k ⠇MC9ׁ\RORփ]rZ|8V Xw=+lzaV2Bʴ0Wq}97!Nw7 c(` o$eMGCuP*iC:KD9 )zx*Fц+ubDt\øF *7Q/dS@uv%\Qt#N'9UB)B:0Q aJF.'Mhe[zB_(1 f1JWF ۮp|#\]AYDucC\$.GEPNNzѳ<]g9:̜Wvݒ9;n捵Lм 'W^y* muxfZ_ws|= "IѦ-1N)rfuqppWqt"nBEH cg<(̸O;_rt|!Yr>O'jdǻ=m@̙pttã;>&lk,,J>[!1~*79^Ql_*U QoC`ȁrAPFQ\XWe ~_d#Bm؞-6wٲv(tqЕm䟌EW F RWEzQ )1*WrޕB4vK?N[Zft0g_:1sU.'XܳWuv8[dW)Qz2햜̍3)Z" Cdela\ݠȠ!qzZE= 9/9pw1_5 G<3X|} =6N66<2{fx{_e{_~[_W}xdm^7=l^L?. =vк)wolCb=t%puzG״:Sh6Z1z18p h$ijqlDL|E6 ۙ2g[l5"͖GwO.iV# @}̹GĴ̰@+CS*Z 4Q{e5LTzq|2磟>y/&VL*0-zRlJ-:c)V9faQ5xae2Nٟye`;چ2.ՀK8)8c*D$)WH2$ alMgP8P:/ \%c0R?X̨͆JM^5ϣJhB;[GE. zYh{Zjʨ6qWpΘTxԞg( _(%]@!u{%CT^j%IFSUʭb#N90kŦ iVRhfz6_˻@vsF׼'8d`#gCjPtXai-HbvƆjb"bIHfd\gX4sRջoyXö͐LUt%a[a0x-zϨ]AvZTޠnNKQܡ39G4xpM: {*U#9UM4+#$ZCn5lb !3ԡ;Uj*ڃ1LlS=nLZTu)D/cExψEP"ES!Qsk;JuX4P-m0D0pIܹ99SOA8}ks4i{CHYFB+B DNv)0 ,&]=ޱ=ql֎V=bbY_0{}U%Tߗq^<o3[>{WTh֐3 򯿑|xwki(.ea3_;Ÿ|)͒#;K?§>4}Н$b?୰^kǽ=.=ܼy|Krm >ixy'w iKo1 A]m"6xomX()`yz!7qs20Îev92꟬dJ0|HeŪM.xsXW{TfAijWgblNuY{P̐T8#%b-TIñj%I=x[cBz,Y-FhLB,T?x-sgD>hh:DK=jxԂC 欢g-T+PzMĐ$)F(ͺvCjs勮1XN̉ b̓<VMxV8;rܻz]yC]`@ +rxy{&7 /M:Gaiɬ]LrxnumTLTqOl6Ju"/tħ?}a1 |w>ۧJhD $؈+Na>n9|!l~>B\fgo|Ϊ;a ]m E89oD54 z3 .om l1jQwLͱjY rJ5&lUD9 QwɚJ :6A>JҀBk,'E}Z ݮ`fjVb6Bgԗ}RSۺZC=ZMCDL 0To\Tk+!`D(qmr.Pc3H% g36 g zMR&߻* zA+̬C6\j")J˕E$19s'ێ&qoʚ%b7Q]*L``q\p6[ع<8G,343xF&e|ߍ7D hv]:]}E+W+mٟ6BfQٙԶ2vGK1S2*΅`<#gVilk(RRY^160]"G~!*gal9Jn7V{)udQ,=Υ-ѕ|Hר!n ۓlpzC_TFܓ)H"f XSUqX##n.מE&k F![B5tcuٗ'JAKTHyHԟ^9zDq#ՐM$w"E}ʥezmÂSR"FѹF!bKCq p?Gi FmE61űpgpzQ((t{"cj4u)XR\Pi-+¼i@c2C%O(_D)lݢEF{鴭vرp>Ǩ\yʀw.+Ea\$ueD~}ڲ93m#F9YE0=t:qNژbu[m E!t=d\3{m`[./keV'B-GHjj+izޯ̂[7·grt8Eۖ,7Ґ_|?ox7qO[aCt+RUTm^AF~yy;{CZ3/~mwܵ*n<.BżUb %3p))rt~*NU( e]bLNjJRj 7^[;`ŗKu{a nFlmŐ@ʉap(6ch<7ƫmQb1-ERLJK]kx,ɒ<6fePuZ2b-ZeLʄg[.2]æ3$,,*2P׏+~HܺFckr/-o=ŗ| 3QbcgqxO ;xݥv;2wf Vx|h1t 8N+凹*H3fV3Jpm~6g ̴tzJjaNElMIB5lN2s0zkCxUĨAn-՟47'ØfKlA%n6'-͢a~i:;I }SVA:WJSшաG-]-s$k7n8Ȋ,&Med+G9g!W|~w~G7gX7 9ot_RUr`m9\X^bgȊ톒+  Q~JUm!SƣX"DmEȶ7Gk.ytL(?^Nپ5X HGglFZ.Rӣq=\oY^ax秚i{x80[}' Pωы!2:M%RMdˀ궅w g܂ 7\?}~Y ?03\X&^ \srv aHʼ @@(޲fe^hhH"B׫*=趶aRRR@Lbj)vוr %hN{WW.T0 RS3N"ńB UQtLMbo,jkԞRFQmTg*Y5GUSjJ)RUJ1C^ ܼQEmq1a!\؂;kkEd=1Td0 Ċ1pHMTyGIuy^r⫝ޗs<H$F%P+DjuxN/8պ7zs,5P2s) ]Jd[KZnƀ1 cK"B֤n'sC6R b 0`*Fkc#[A!Q*-$A2͵]v1]9oXChS+OE54+7Uqh`,cNtnbB ~0w\.}Ůd϶t.E {zɰ"w{kVGi_ӊoni)`US&sZdq_Ϳi~{>$#',0oyԣh IDATK\)ΐ3?k]?i֛C!Dhжxsyo.mG*\NfYޫCUeJcM`tn FJBu> R<àN۞I9'5:uAh$EZPdJmaʆMz䂥pj":bPBo~d+ItgkyRQUW`EmJdeAYjp.I*qZ}ybWœ3wfʕ--mͭ3/|4(vy=W;b`g7w-'v|n\ R[/vxil9=jXW o [g #52>|`.;l\(Gu ~עoRF)0!Suoj(]ofHM4"1Z!YN֭䡊H%Z3h{RBd;Z ^,ǧ;\?Ս^P$0ԁ/mhI-R0vjI%j8\m 亁7C2E 8~n(劤r)wA[6K AQMwAD&QqԂw C l+RY1oGmRU`S2!%UsRXs5I-g=wbZUm-)x+4ΓJPb+ {GB(3Z.EC&^SLZ;5t eĺI:vz-F ЕԲPX'_ar|q0n_$| ^0maqh(!R`81܅,?<>,lJ%5764zmW'Ѝd.<X&v/GKij^ٮ<뇾_|M~O`}M W[t(*2 _Yv %<'q,f X.\GHV'g7=zs {iU8]Xw:mjӤy6PaƓSvC$D]18˓6B wa9h? ,z3!$(!F 0H1}3( -1T %siYV*~jKx${N+ *_ݘ8/IXDRZ9k9T\:_=6s9HN09gV?c GYdcXof3瞻ƽ<5p$"N Sl3+lu/}aqM@\Ghy*O|б8V&|[_{Os|i(+ !EvĚE^mLF-r^ik̳^!F:aʊޒf-LW"~Y g L XY,t.%!MZS $Uj$ c0bsam*KhM2ζDm Y@sLJf" 5oz<gvU_*$h'Ú$1=?^=OjЗܷ~{Fw#N-!-uj!!E389 QnN#)Ntx+ѓK[L)@pZM7ӺjCʄyMbV^Sm0(6hsh#Ś2ڢ5@y\;<6E}!tKQ%#7L,ө$֜ƐjfMe6{ qmI{*)U&M6!δw2mS[6ފIS *r$JXYS7 Tb uP+-g5c{tI ֒7+1Pu2,{oElTjImZ,bga7[4"^hPFN90U*kCDpJǻÍⱪ?gYF!{AP٫^(57[/Io umi`{mG)tV_ >msS'5Dȸ :JuD87'XGu!LPD:'~̥6mmӨOTI6Zn30nj!sdu4w>xJj"oOY--/`tJQGA"Y \CVvS*ICz-IҒZl:Q:J3{9:&7J8_ؿpt'@--1+-)O,49-fZUsYm 91vq˶leʖfNd(aăF=1I'uݍQbP1$L# X)c&gX/G6ewRΤ4L3bI2*]5'*1^77 X5p c$J#I,D{hhfFVPT(cz`9j2k^ZIwZ57pM$jP2(T_0ceFR䨱`m I*rP,#òPuZCy3 18zx&;΋q c& pTj+@K.h05 .4jo֭4.6(W,2O}d/\8?a=ԖS :U XdJkT*Ud^9 b%HdKjh ə FQ-91f~4BRڂQ(5HZz~CveϫTzm 4L\ՑJa@Fxdґ 7jD%oH!pSUhŸ.ÅƨV_s)bN]tJ xp^РX+CJis>E 思B 5rja:9מk>$)iWqɍ|bib:_R*N |E-PJ9єTHH6M[3r3&zZ2)kX\фI1b  1YSXMIJµ\X ވ C b5̈́: \QҰ@|R "&bά9$NzCm-6-B0Ʒ!4j?Sږ_-C5u\!P&*:`)Jqc-Nw* M8FUBO O99PEbeG&޲;㧖z D9,輣En$~Zi1Ww3d1[iiTYdTU8KcXK '%D\*=BjkSgv06)P)Ek)ld*$ZS1y$(mQ1McgC8Έ n~̤+ޘ];I4Oۊ&wF8.We2 (nwIC+ĥ+OfRx'Fg[/c[ c)hza4f\CD͖AnYWͿG?ZygϽ&G 3ZA1j(Ata:qlM/9B: -dkZxDoӞ󶡘4a rFJn\k ${le"H5R$/'\ a`64SĜR*֔\Q(xC- ]")!F".ʹ1h;Q%j~-e9rX(JXSH \G]!]Ѕh#Wtz"EEfD棨L:CɚuD,-:t$ Y~&}FWͮ "=dưvh#G }>AwϼwxTl*3=N3L@ہa\v2ؿwFdfGK1˦Őm, S݈HrzSGC *~'#~JPvSrNLvG󈶎䚧>(k#HW}ڙ6iIIb߹tѨ^N14InU+epJcnEtRI3RJ"kw+1MJMe{jG7U(#,j. U+Jk>\mXʐgH1&C{o"qVIA45T9?1lȅEIݨemhQ݂Z"ҍV(RU 1gZ$`('V)QGE=}gKg*&eF&lIbN,\_X۷f:FQZi2<6@A~fv)Bxly/7<ǣ-54 mqM6~G^nB|89-穪 {^uL&1ԖL:M=1t_8Wך1$( dR1VN(pZomIۃ?n8ƕ#*y9+U-)e-ʼn`f; t;XSRR3ԧz><<{#õ?zI{ыk5O_` )'& >fKZ7LpUmJH!ѐԖ*99 բ u蒉m|V(Ja\ pAkU&dHcn2",n+kcySE&3;S͟eS2GZYJ _Gus0k5xܢ-4u;WL/,}AUμ`g$1oNvdJsPfcp* ݁5(~Bo<$+A%)lQ5"J.)Ցse\0&ioֳbZ[p"d|YœB&kSmJJ% *]OJb^ZC{QBԂs3)L:efK?#t7mw}/r$!L8FS,aӑSh qoG76F(Mkɩih'_U9Y(W_w Pmב7 NjbG?hdzѡ(RIX[C34+n7"i(\CW"]یҹX&)50MXA:|4zr 8ӭ/׿'.w :`h&FZ[hBt(+#q9?Gݫ:&ng8k/w~;0.prrWlP{ʑ'^L2_U;7$D)w5E-o57T^L&+su>ëE U3FY5%J%A*%d)njpkY*pmCSJJe: B.-a*Y6!LZ:bHT+i+KZi}3T'A7.tm%E'w1qS茡vqXeGg,(rFl6Ш&`VaqoJ)e)9G-Nن1㫥w,K]q4L"+ %IjqY.PU')Io: ~c&bx12RrL( Qa > 黎%!q:a9 6"0x1p2K'LgYH>bmQF63JI>=s- kD."}*m/}o35cUKeM%iZiV*K;iըDKu[MrxIVIj)No-V7ɓT`xB{t㟺T7D'&W$4.pȔq١it'6;{2a'.<啖<<&'Ks%T:Նӂ{rtTElCNOWhۙ^gO0p^א7:3KӖyf%­Ӑ{XLo^ 3`qjHM:A'6$3?c4_%{<.F^x 3,xyeRR-D͘/<7_p6[IpkTd"%1ڰI *Ƙ~dVQKD)CE^OsՊMҭI42"!mr\%--e)Hyy_.}|winܘ?wjb&s/9#cG4*i6nodp] );:bfxjDο[3.kO\K?v'^Z.>>ռm?G{ޟn7$(ݼwbڕILN tJ3B%[%Q9ɤ-i#;V ZKYX[b90_;e0Y3JĒRH~1jF9\)5I3bdc dI|ZQBum=3F:NAtzRT!YQ -L7تq`C=50R,f0cD9Fcwi NBdSQ8I9R4U6RPIM4ʾRʦVʖ*Yc&5ymn;ɪb{B*'U~3TuuFӡJeXDi gjY%2S}ZݪtmRs!g>anf:1nhA׬)]qRi[/tsq_6_OpFnI{}hB| Yڵ8:Ya]FkU9 k)8Z0vv=GG,STo y R]5K 6dJfHas?m ]g8OUT+CX8Y{ޤ91XgcG)jjM!a"seg.?{M͆i9Yz ;U'#JΦ(f\;UiBaZfa$c'kFz!bXQ9 2+MM7nޏ%VmŸ`o_A$(jQ,eH[o$QVYMgh[(Zub\+8h'Bdq9j|XOCJ;RmYg?9FO-F$̟kU [>nb1ԡԋR ł+iܜNd4VrF5cY >?s5q|/o}o ~^Klsvͫg:|-\ )or|>>?ȕK/@UO1xG89=i|Sͨ O,Xמ.2L4gLQaj 9-\(U!* ç0 T9E#th+ȱ 0FY*5x+<=<竿&5:l"ȵcȋZQ<،7g!}ߛKMU7YpqHU& HHlLYWɩ0.:R-V0l\ 2SLUMתdcye4:!gy.{f᜚'cbnܜ_3] } pr;No[vTVG(aa_^30bm,G\##CiR#t_|ǿ%3Ԣ]=ٛsztKXOwq|.uvoW|)}]۩|_FОgޟn+w3=)X@AUG!ƀV$0V\Z1;hjI"+Yqz22M%I#(+-y#BQ|++HsV&b9KSzcJ[y(~Jr%jɓ3YPpם7x}wk<ΊN=)FJL^8@U"A,I׉NR=IT)E[KYEhj$,!nrN+=7PX,34U;RL''XGb aɦVY6aT<5E3{0ޱX8h!s8YeV18UYRO|'([SNs笪Xّ "U T\7]}jK+Ao*?c螟OVi]Sse U:n^+wKsۋD1c>I;À0gX$ֳ^e5Y@g5}PZ0đNKer4ZfK1 8Z!L.br]L{:Kϛ/=%}Be+>0嶋eRXȵ%EѢT 1F/hzl3rVw tU[SUd\љcDۊhOT7/ݖksC/;ºVq vo;`4Xlnx+஻&//JPJ+LY&{%qp/C~=W)JseA/2)`˿[|%d'Y]B4SP5R!D]D\uF+M7UZ۞UnҎ72'BiBn9] F)JCn[:k4RXm,6YK)ያfBWJ`;CD*"sO(+mO8e$> C6[+%*C̢hqY+L›JJLM"r :Vd5#OڟJPiá bfUmP2, IOgzl9Na3#R͸+s:93BҙM8:]1JmGzwX؝NKb&bMY]BɁ1 (K"0ъmZ+5;O<]tNߓSviRLSlPB$ɔdA^'׃iVFS4~Qhe7\ֶ AF|ΊT&QREf #YV+! R%̫&;M]2<$,dNmʔhXAt3ųW?*ܸ+|OLO|4srePEB;c\&!X2dRo7? f]Go{v-9VC$v!-'\ j1fazk)RRR)Y@UQTy=G<uG ?2;F~/pp\8x;ߛM"ήAIl^6/@h*YTY[ C՛jyV\ikQBmAg jJMFRf2i4 T )Y=cvWj '=o/X5V40hW169jQwwVr0d݂K"ӣw!7~9wX;bo<N& S'X^|_zSW O%?V#%n#Ēģ`4;Oȟy#w1Desy?n\S9ŭ:+S{hy%oJe03JWRTq5rȭR*uiP'ZnVLmiAU3c-㘱Uci Vk00HHB91 ?tFi:ߡJixrjjJ٤IIRqƠj]pRbQ VitJ8I9Xm<-o&K)'YNF: J &L:4`5w=\_G^@Fm/]4z%i1'cZTF^rt9:%N*%L_Xe "F8~j)-K"IMJj (%nzPq7w6E`U٪mg~@$*E+Da.ɼ> .nI 0U"RK}d:?AWyT:QfZ#c'SxK]ݧeq)DQcKLÜ#{[rжAuhKntDI23:ᷖ#!=PSEI }¡tdz$J׸[|w۔LkU[Gb+sn.ٴWP)zV4Q;! ZO]gem Tvmꒅn_,gSXH-fS-$A]7(e$]t}$H.'Nkc .4,L,RE7C(]l+SkU.2AT`BdE84 R/%+`=)׬] l5󑧯 }Ua "ۮgF4XY75K\ ^S\Hp!UYSCtچU*JM;*cƁ Y7")]ijBFISs=7rQHY_Ri+#Otq e F;DL\ň#~&)KaP"u WjXޏt.V 5톦?"tBQ{.gyeh1ãS~C7vyޫ:z_,lբ(4 6P+J* b33 &KC, -gj3-IA@XG4' R2@.V$ѫGhcϿٜ)ij(;@ i2V Эa|ńEcSZvMIy%_:ډyl6w jT RL4Ltǎ\࿰q|׿~z e'{ƿ8o{υ|uS7HXӝt|gTUHڦ%Dz4f7wy6"sj bԲ7Jji|k&gb 1- jNCPFfZ1 =nV; bLRR u#18A$RT +IfBIe"19r[PB n h2d6,RTƓ&ǍӳkQLyʝr\Z$35W׷X Wpuۃ9:fwՖ&rTE(Df=VdDapˆevĔɓ!di4|w'5ZE.5EՂgn8=ݲ^prұCtgC'4M 8f=>r:t0EnO3vvTך96V}AR '3MThCI e|Qt,!NM"IHQLFZղ-.:0Rk[| !C% +Z!Z|wfYB(,iL<JsctaGa0s*E4dڳ1?$sTOW"Hpŀ |cI}|~7~[q}o񓂺2'DŽJVd=g~](_YX` Fjj[b 21V\,irtr |%F@ / ŝZ|iQ"U)?O˙3hƹ9*;[eԑ$16"% U]9ؐ)yT2YlȔs)K1nk)qIk&NGN)]"(sp<~EhYtXt8 a"S'ƊfgbƸ GNEր"LwRY5lM L^xQP.mkyMn_=GGk?oF{E|䱚{&V22C_&3I;űndVr*򄐘\Jհ\uEKӘ罋w$B WH1lCBDRNg!.8/ ~2t+qyæa-2glyy]9x!4T-o|_Oo} ~h?%ζVVXSbClK AFY(sN媡 Ǜ gۡ`zM鈃]$q9+)l%-_bRdIFH,\V|td84FF";\ ! )$)F)ybX$HIPФLgŤI=c#7Rx:RW[2;UAw6Mm5}~/w׿{ܾU}_嗽V{\ H{|sJe`%Om8@SX3ڽȽ2P&Mؙx}r|a]0@P`sUjI(7,g( OP2Q5K`=>gQôYE)mEkAH d`O:2*RZyIb)n d?2KR eEN=מ D rb"_e} _}>iȬxqU*q[ _^ͯl~viWUhE \7>AL]q`; 0m\̚ht@ȞRѝ!tr_Ny`eIRf8N4lp.ORG K/Mr..J06gU۰XVSm=ctUSq|hޟ⦁em0u)j )@C#z_$;!֚j{_RtޓSd6]OHEڈHXBdU`RsZU1F3c!b"z_<;֐WKxJp^nߘ*lI 4f]Pt"Q+Op!%L|.2eč0%yڻz`n9Op21:RP LKn֊0$>XT Y_:É.@;!SN&9,/m]3i b¹>;op=㌺;{ %( kӢdӏ'EIlNGvvWK}O"4wqodXw~ljRLx?99صNFkť]Z[8<9EjMm-HH;@!nD U,grʸ\H`8Bq3YV*B($Qٺ! 4;O9C&#B'2ӟUga䠸 2%G<,kHe[p4H_FDLs8PR. N Ɋ4g? ?F\_rx˘W~գ\tw~#>ķGc^K2. !>IFpSJ9gʆ^fH)XXX8H-0BH4J δ&'r,E4ׯfYå5>M*kKHnp}:ʅ=U u2 IDAT:Ι3HCAJ,.<:ɒ\PB_l3[W0l [D4˒M}/o~⅒~w$@X6xɿ|\S)XQ#Ģ,m:cd fg|yrɫkFB&̟k>N|7=ƭۖ|dI[Iд ގx[o A=X5U>ܸc l%Fb~SI&RWm!!\HAL~ˆJ׌Nq#SgIUw2RC|qK$Rz!2 " 倭#B8J@Y5w3# 쩤BT>9V(,()=V|ѧw_#UMYjdޢFfN]$$Ygܟ&,ի_Œ:%R[!.zΆ'=愃f>"62V(LΣdF3v;g]Bb)]p2c(ynHBX`9nx6Yb,OUE?b,^;%/.pr|UCb;R,۝"C<Ο!dih!<{KW|l [X]S4eSww%%,5meLt%K{SY|ĘN-ۮGn;09Oi(i+˺]V 9%Vl}4 E5cNRdʞ}PmSb*atsn .y>t|DBEpT=}su(u+g"qݹL%eIN)*blO$^^,3^I~/koo~?Љg Cv &z)9C/B,hKd!&F73 "ve%2EU\G k4HTV%5G'枼'E$pT4YYE i͕n oU~ꧮϛ2{~zj ih#J KԪD 1Fr *_]+Ƣ!g24bVկ.0]Gr=mo N1FO|ɗ>o}M}b2Ֆ$ w"ƭ'$/O7ȏ3q"$7?a**k4lیu]cEFBLb.(ok\_b 0E_5L ^dt 7X݉znj *'яxbZ  ԙ}r`x+gy+㚿ek堵\k8THU *|;>N{No\د\;(V<-16[b%.YbWeDfhe2UjUE HRL1k W,l&L0R)XN o9U$+\9s1p|\ߡn-i8X55v98 {'&ӆXatjgLYRI~)-լۚZkwi.FyHR*xoJ+V,[RPՖ8 J#zٷ{Fuw ǑnXTvQ"6mR`=s3Hrr9:6wt!Ē%Lh[1Ӽ)pIO g/הJB߰.r^ĊoG_~l !ڻX@I,H$+6SO[Y_'L"wtq$ĄE,x;[WX% -F|,*ȂJvk"n" d Ȣsg"N9͠r-KE? Ҕe&B 10 -݉$JiTfծ*=+%V[9HHDug6ERiUln.cS઻Z;s'$1>|l6[˛~!?_0i*],F~QB 6RHˁ4KTp>DxlǩđgK z_8J^93?u╉g9=i算BSj\VMj2,8ؿX̓qĩyɗ|:ly[Y3?RBL!3=H?"d7I!j2<%EY{<eMwB婟ɛmôT Gq@5,-|*e[Y|n8PS#y5߿Z sj)3L@m9B1ET]6|r,N4u45;4P4us [JEa3"&[HS %k=ϒ{ȸdaƞ"m8ػ|-n6E]10R$ 'YH EŶS 'zrQa%2T()]&*LLnb'NYfgDOSfFZNP1S5E5Y۠bj2V/Bd31QU45{43"fNI`{;kgQpyoͽ!xϦ Gر2$!"ʉDKѪ) bܞ6mKtTK °`s,%w   gRr9EeڕvD ÉƏ}bbv=.->{guVɸI"*NSa vK?  +P,[cjsdlْCJKm Vf>땟8:ݼΰHS?6zYmJU($5XRT:1e7_ ps ylTyԜlTY_$%UIcMF9MS5 9ӬGOYA^,6zB:I౥ H,R@*T[@҈4dKf|[xkAo-3{/^ /~+?R1?ZSOLTʐ*foѰڡ BY]xG'lGW񨉅FR-o 嫾TUMpީ]̤$gk_\tqv ~[d6X[#5 (&j=< 44TUkf#?o7ȫbTjZ!K#Osb":*DfZS˲jQh3B YF7"ɬv؜bM#u.yOdYy<,pq$@0:Rπ+Bi8Q"~Ko9Llf{X!AzDV<2<:tEfݲh,&ܐܚ[jS"*u|\=Y|_o֟G~s"v#^FVM $p"">ȶTMM pvw۰iruږtnIS;5  /"`AI:'Q| Ru a2 Ef¦@s1lcE֒V Ae ^nht,49;QܸicV`G(LV P}JB,&:$) s.3h}-x{n"Qw)>_6}E?WQ|NGFRћ2ueYha]/81kޚՂMa!<ֆn<[\Wo1D3 ~gg*\6B!pR-1J^0pfEZUb?I\STgOci8]jvBMTm& 8h$Z/"FU%퍌}il1GJ cl2U8;HY0utҟ숻 ),v2UcI)+Q:󋢉M9 O|ox/O>Wvĉ\xQ57h?a‘2"b׿(~>⦅i8lxckx"]y R@j74>n=ݻ{zFjE FLp ve+I%SJbW Tqd$,Hbugzgw}ilgF}o=]~~C33u ز\Y~z˲ktVɨbD"SC<1']d{g]|RSLO0nD+@`R/ 쟾__Y?'x.a f"dR#,'9fhimzOJ #˃>:ox7BJmK&%ْg+gk^3ta{2=~C88Fg0Σ&|p瞡$ƈ8LhEHR$Fw*!qR 䋆jcxRĨȃ eC9DB cҐ$nIEJ DsܐUc>{syӳo~/?C_A$ՈXy3ITiR#|dحK9ZI[bIRYO|_;?;*Z-iys•gf|]xK׿we_p$ٷb:dH nl`n-Ǘb{dodI0c`p MbdRh"1FcQ2 * đ)|fKv(zGV9;-yȳThaNSl@@h[>c 0LLeb/+EEQ}3|2𶷯yEĠL$wYڝ-ߟbLo{LDByhG%ǹEBv c %Za`4X+JQp4491Bkt-J+=74>8XGG.mYxv*uOW4JB:,WSɓHݿ7<`aD$5vV'WF}o+_)WG=~ꭟyƷM,d@l(XʢĄ@Yfu$0rrr76cyƤ|z\ l#v|u3+J~qǧL)G .]>. :!6ɀKf(Q3t6zp6)Yr1@)MSV6I;L4,!y" 6Ko//zE_?~7|?ſ/? ɨ bB(IA78ț(Ƒ5,2N~a%8p֌|J*^= 瞛!D<M4o~q,.^d lSY#k-o9b:umO~f%|?W~!դ샜2gpHKLʌ8:NWYDGV,(jnZ^. >({;V\)ՄzRM4BjArȒb[d*7CY@"3JӸ,:MVp0-δ恃}֓u׃^/0Ol:z8bK ؖ!8J<[p|d}hMBOУ>GϹts~B)""YL&XۆYLwP3tlFUH˒B6$Fe)Rk@tv/_GD&ydR!rvFcݙ"W-Oȋgޕv ] o "&)yU`Vo1,;,c s5uvhSД*`PZ=(J]vrT3gtvt01 -&"Xٖ!CKLI: )$6yhI(gO5&DAV*w KDv+ã7o+'O~ W{e_)fخ`Q]!>1=PCt@UI1[73E+M]Eq1 vgkY+Fh!aLc1d1-ݙƭ~)=u{nʊɔ` R<)QJy(&}kV'Em:1]h:Gq(gg'8X/jIA% %3 -iΎsE*dPJc|tZo2 IDATRǁسlZt>C-4}gI@^dt@E,+1|@<}9:P\̥8 9Xo&0 f?4f(C c_ ^NMUXt5^wXK~'C/_y7r [1yIQg,rId1l`ybSd$ #JD8prS }l<'SvM]4[xiy1M<6жBDh!8DdRrE˄%JH.ܭ"uİܦb !aJ ,獟^̠GdnRFZ ٯ=ٶ?/Bږ@=.hpv-2;"&eqc٤ k}a[\3' g-3MsmGIq"bdF!9:h*E"/ :.\<`^aaS%E٪JlU#t&ѫ42ܡhIFn"I5&JyNNЬ(PYAӍG 6?WO4ac@JŅ2!v/1Wx7`fR"l@](x18_}h4CYrsG`IQdJBL])4 ֍gR4MNsz$_lD Q98?JD!_ R'dc#*L奄[멧v";/MnXR{t lR5yOn5@ 2( 5dFuZǴ(y{ MY@F΢O.u"|gՔ5,SmQ"=EDQ1ICt)i/Mz!]z8!6l)aDTݍ,8W5n32H-SQT Bꦋ L3Mli'?TN7ߠxY'w};42mn?nޚ5U,g(D4.AR:LbUX]0LLNƄٝIzu~ƪIMUO?>|G%Ӧ-"m\4-|Sn1%wyʗvpb~Lӝ*}9>Y BJQb,ܼ.sB'θ Xe : j1xV̀٤[\e"'x fĩi#\Eė 8(U\ؙ#UtG-^'9Os-->m}?gַmV85Vwm%%t1j!mwӷ"cok:dxkL"tHZj]S$|Iu#JkTx1!qq$=3TXu^RLdȔkBJF5k|d2Y`XrY6=yF4'LJg3L6 c!;Y^j[5ق($wfDB ЇLeD!Ȋ rT06GYi8tJE)A+Iy6:iHF@kAV 4gdb6dnV1eGD'M<Ȉ ~5ER/{r›گyӾw}CĽ2aT\ <0\ bbZVF꒩i:F)2OcRM4xј:MpMN u/['_Z)S@Bn&!wTFHuȈ5,ɳlC vEx;> $7EtId dyIKr!^%S& 3L\J 6ݻd2rJ ("?ZϰK{ȏO^AYnN Zs.B97 Ωڱp.'9TEFg HLt&鍥slMkfUκ^h"pS~)BHM-yGpw[CvHonΌaC"JeD Du9\} MۅR}qTL_VXhfsEQD3AQetv={޿҄QR+|4{#!Bo\LS,R:Hq!b's\!Tt+ϵ { .Ӎ#L.K.cou>S=>t~4ܧO@H@=ǿƇCsã#\eVIՆ 3X&98E4Zʪ'TeJ[f<Гe4(q&2,u9ܰ&ׂyd( =S၇Sw( hBpx:޿R%CQHa D,fD=Ŋղ闊3lP/ewL0@X7DFWns!EٚǀqvlQ!};;mGp{*DצyLO3#YI %QZIIUլhiQ1IbUҬޔurX4̷1zHH1S(V_"\w=ӽ%R8t%$:~)q>zÏW|d+o~_jU8 ֎/IPg4ơk"Gjb:eNM?~yOnBcZhtƶI׳{GeqT`c*|Fl7r-S`BH!Q ؀ @zzM`4&RMf٧TmcEm37q&EL&C3q5:g8!Sջӑ?gb\YݚpV:i8~.sr˿m{oOWIh;dIKʢ$DOIA ]0.3V1o%Bo.yyG>"LƸ3q-wǐS'bkW4!~LǗȍgLRڝv{E f(f6vY±y$9ƲZV2!lfY6g b:hȵOJNߦe`g>ghGN[G- TU΢6'ZGQʼ@ k42{4R*ZI%^wʅG+u1+|j$zIipG$qmMcqCOQ5bQ=6CjҚ-JmɴFMwic<;f"{l&.ΧJnvRl +M %nXB5GHK&A+xp^ZJ]@X"m.\H~΃w1XkJ#Y*1>2Lf\6*vm>1@ UYqv&)6&4zaomFYq1lwa2:K` ;mӦ،L 7\MFH]CwM'M65L?d̓:moւy}x7~'y n]~g"gEeAd[0 iZتkJ"ҶM O5|醓1m EBa^ԯc_6}3@ F;GeIoM:u_" cFv* }qi~H 12w둣c1Q&"x6\m cy?HI&YN0$uxε['a-IM]eN۳e1R  x(V}٪Flt,[L{?(f0;;YG/( = DD' }~c< fYA S> 8\aOy&p]K(SD* bVW4]C^dL&*Kdb /Џd`%. K{H6 Jpx~B;6L' X3ƹd9a4}O߷w r~瓬Џn n-F 5e] G5dQy @]L&[ |RZ'Slgqqv|βӆ0$q?j@7 CYZ0Zä 3MhONXi,y1%;bc<̇^/D˒&r>k[#0vd:cZO6дEh `}LsL׳r2ϱ!PMs>n6 ɗ!e܆~d73IIֽsnWLR b"9c(q%~wrnKS4+eOR4]F{^Fz9ֽ"osg]q~}L@&Rz-q<2dBya5~YIlF.5RE۰p2Ko7:n[ DΌcE #'lRB)'D$0c2*E1a( wk"ڸN]. RMf14jP_A~/#@x:A?= bLj*Fr5) _ 掣)CB yno|k~_!"AJ f甹j>py?g6Pg9!¤x+זX N/d\ &h_yJpz|?A%vlȸ3`KΎ~3ah)98::`o 1l80&+_xT3='0p<֟>Y,K|#>X D$g9W?*C\IJBA l>T5̓Jd]Zݕ̌NMH57,.6 Rj,MdQ+exx?Γo;$''Tm$3J<|.fZb3pq{RT&o:@댶"rK){ Lْȸz퐬TdZG&2̹s?xtUP(A$ =wzx14EJ4E\2ݾ LR|@Fqg ӊBD>?|{>Ŀ'g,^6W`֖&l]2 K9[5%M].lo1dR&HaZ1ڌsvvx#ͧqo%&ɕ!ɷ Ϲ Ljw,<%*)AR/g}1Co74JL[7KӉɴ$G"Sʒ ; y]VXBdJRi}{A>qioz~1CnD0|{I1a{>a@EptD*vF4 Cs.<-@)B'hqȤ{5f7c 89o0Q%+#!sd#[,#[/Ɩz>ՋTcJIGFHAh"AO^x qi"QzFc93R51hcd4l 8nd>*/R`9}҅+7NUN^fp idm:J딴Jj<1ɍ@˻'ẊYzʙF[yyfNV v:P:BQ"Oڒ˜1Y~ "fd6<{Wz'c:O_|=LckeGŕ!f<vwxeF+'9hK\kX[Ϫme {K;,9Un=mxv>x (X>%b D!"QD& IDATn>D h~s5B D1%Rp~0'}wH,GfJ!,>0 M6WMKȗ'?o‡MMg70x2^ɵ!8't൯K,A3+y` %5^\`6n甹 }g)U=rf HQ g\3)DˌB\r.S[P#9Dj9]CWH;W͠ݦ͕$m:<5$g.xOx>m"Lt. pcs5AE sGI[w̍Ӗ/WXcxʪbk:dfkQڃl?H=ZCg:TQLfL RFpvrʪ-m1Ʋ5 H(U5!nlL]~tTE` vdRY>zB,& !\tEа;+PaC A MooQ*eyN"xCّ12.vtƺ8FkȤ7:qI-'Ƙt|#$EFQDb^ܿ}ap}Fk4<حgٝ.Xdqnlӎ("zDzᎩ(T| $JGtBƍPjSA~ K(غOs1!ʔܬ"v`y\"1&)KVـPRIk1ɩt^mI<Y `pOr/?O=/Oy;+WmnWnq4P >Uv&3It:EIŋm9:o(˦EhA\oK)[P {Ǵ.Q| OL\JE)x!Hp&fD v)AS R-&%fdYAeg,w+k}QKI XG'b xcۃ#&~/HMׅd/3V!w_f4\ƦD́RR(MQdUJd-5`HPRf`ivn:,Vh@| ~Zb܋aRr}|_"S=_YD|*Ïtڈ("HFxsgB)AIטn1&J'oG7>!M]$dW1E`4 FÚt8 H%Pdض:E9 `JP9Rh9kk`</3(kBtNk {.bE񸦮kbE2ڞscPzkrЛLlޱ5{dTyFlkdJ}O\ctCk5YD(I4!,kĬ#!FrdD5cEF3aY!bg6t&E㜣.JrXΰ^lH"k|D抨HTp6|f"ȩW9^鼥EȊ s2;(FE6>:g=BTWqQ_!l>,>;bd.+ ޖ40#vPshP) *]S1J$[OyB-֔hQ7(7Ng|z'?oqZFǚ6/hMށf{n88 C`w{ݝ]<:)6ÎX^d:_P Q۱?oxy`}4$W91:.Nmnz2:%WՑ]zx }"/8ya右a=Ӫ.4HV|EoPN= I$R | e+786.R" Oyy/rxʻ};G_U]oϾ?oo瘖Ⱦ=}aS([K@U\=)<.s||Jc*:TeF[OB+ހÕYo}BQWR%;̛3gNa|O="(-m;f}g“O|D!뜹iɋ9t>~F35GsnwyU1Vf˖ȴ:Cڦڟ[5$QJL7_¹=:FJB+l HQz ʂHβh)"EXADbŠgЧĴ]ERcI@R!>( 6K??WKH>|.Ͽ> ~.c%xo? pIyOD~r0>Vp[Nלlɔ#Eqfs,5eòGe@N|XGC<1 YS=QdbhD!A.y=1 ~O)/ΈJ pQ@pć1T4D(BGV$ cmX3hd&>eth,A4(*?\П {,P0R!tDמc O ZlKt)0M B]s|(o,^| }_$쟽G9Pߥk\^zNJ2FQE %fY"f8Y z"0:EAM5ZHeA"“ hY`|IVR%ruh{>}@%*努K`U|C)t'Fj`,)2>lu!h& /eY9/ m`̫xiUυ(x׻[Y~G>/[QZ/5($ck_ZPh yacx0`mX|A2 H4zw2'hEGHP>0X#P£2Oh:s=sL<WONxzŸ@ %\7_(8Qp:<Ĕx2)k2$bdknQ %'qHk!2Qe&AGLqGOqh)e>ʨCvNm61/X6KuIǥccgcH&{ :])!uV0i (J=})t"D:diXX#kz8ԩ ֳ5Mut3ΞeY.>{2Ynr)4S: Ȩ8pr8l˙KOP꒳۔Ys-e1*m%U]*pmn>tA <-;>Tj!>2 %|`V(|;_/SKOW^:sZ  "H(r*(Ȳ d`MWT)HPTc]&)#1$7л {W,!^S$`Zzm32£j+G <*U ɍ"za՚W?Sr߀\J>l5/q-0snftPLp#ep@c:͔sLNɷwPJ&Wd`:Hbõ"Q,򌭝Z)adJ:67/4%NqHL&, uUcpAJZtW\:y+{{eSTu,HضBKDLpkÔ5zD:̛(ˊKr0dJ667 -eQYq|1EU"Ai$ pA0],"ӆZ+**2##ׂPDڶdAZU)4@!:1 Y9EN f$A#VR%al2yŹPj&Ma;Kgd5Ḑ5e9 |r1xy>Ӽ_y^BRR7#R\KWp21[ܘ-83]b,֪NHZktb0i|eQԳW EBGyKkZz | zpѣG+uۚ "2$NU"<$,SHA4=2ƴa1^]4-ֵo}evf.^G7&v(6Ib lJ6J{z5,ZglP2I4j(R!J#*CD@ C9R'toG=1+Q!b. tB<\XqtuSDŷ$u=L~_A1rޗbu0)~z(KIQ=gOo2v.+4^e.Ξc2-Y, k#U]S}!V(9#"hM1 BOX`{VG#ˈz0f񦡪kd%邫ɞu=2F9y6F%!Dh~.Y,A8d2٢\0sK-Kc O |rE8isb9$Jt>t]2˩:10S 2\g,KɒE gZyљFG)2ҙ7 :&IbEJ\{Te x;K*)19ZNU5Y.e6`=/ApfTn& e"2us|?Ooޝt݋-`,pjZ [5{scWַ(rqHlQ{pڞI;&[!G6,h2a[&c7`XEkY+ Z5}B \ 5$4hp AQet[ %ϒr]"جB=.eHSH˜`V/3͏;ykj?z97.#?A~^?~+E9 8.Lmw(ϩUJ΃@* 65E3E r<9+UK"D=+d AdebqK :91Aރ)2Ӡu}B3Fc3cmo%[C B&~=Ƞ낛op#p1 ;?7vMw.eǬ#EA߃dU?n $H ""{]xKVhɫz8&z}j =(Y#))]RyB{W.sYˡdrhޱ{<fDx 6:AGpɦ`-WN`mYf Yk pv Q2x*\-E"s9 IDAT59gx\=p-ƽDdwLC`L 5*#i2| 7( A3@F(e) C]ih3;̗ >2CVl_x׼E\ 5Q8B{ ) P8D$G,NЙ@:ɓ+KmonVNKlocA:X\W?zA1-du:") =Y3d#e/Kӂ75M킔,Ҷ-s9StKXlnlRu6N@U Z A+GSN+2R=\CHieW uG ]'SE9jL~ɼIHζ#hg=f1tz]f]"znFEK H!(Bxb̎d_!/ Z`G%i4피q JIΜ:wf{ސ1*X Q`RqU -5;ƐiMNӆ 󎰚K1B1#EsEȈ16REiEgapL~PSN^-HsN4ﯞ"/pcP?Μ^4|Gni?_Yv2OW|=>}q#O;b8![5.hIx&Xt  ])]ԘS;̎OZek$EQd%6z>CB""JxYe)rh)ߞzjOkyůkgVE[GL7M?˅dFѪR)^[rGFȇ"@N&SCp1Nj@}v"C| )C* Rip!TYʏ 2mHɅ}GV}Z+E"OCʕspQFJ"dHR8w.>w-w');P˗"str'L'\^5ڌDу3 4"SLg|?FdOlᩇr)^ާzֆ#ڶaoeYNzcȋy1DLJ3,2ǭ,.\إ7,i' w^<˗74ȐeFuŭp6e  U<}/o)K`ڤ[0k{>u#W+ڦ;#th E*Ep wĠ2C5A(^ ,;Rrj{!ܢ&azb~|[LNX kDlGf,הYדIϳ$KbIKjEgL;ސAUtD)]#\9(KB椥Ud(pTl4#tLлbK;lbG z#h0dxc~"98rE Uzؽ"Ȑ%Q$ ]4  D"tHʤ1W$ͷ?0yhF4DgU|v߭Ct (ft#@g-W;YNrk!mk! зNiB4MsŢ'Hsr>* 61[vSY0,'(MY4e.-SmK ˂cQRب8nf̖s| %L's|4G ¾ ScuMYȯaNޠk,(viO>.,8w`4y[yvȆgs>䱧<䔯y͈[O8 T tJ@gޠ yYdmeg=RJ\8p=^<ػ^_.y\:) ڸg1Ɉ 2 -@=cwwοxy_/\)&2Er㻞D?/E:&?{1<($bP.$eC &Z i*ATE*qI9.J1uR-xʐXtM"hGT@e"@+<0\(J@'n!tD$bW Y Gk k-ZgeŸ<̺>~z,_ƥ?*5NGyj9$V azҡCEp'Gf__\(ֈNȉy +;}u_^S|-uMֳ@)AAX |Že8W`:d>G-jHg-ͲG+-~&߳cIî'{tmgm6f8oh}%1ZzZ:ix*$J+Źx0 /2:c!j(pc{A'|l 62ks;1"Yz^5Zr2ߣt96u=\ 8?I:L{f=w.)v''gx3c\`2-YOtUk*v%(O\=$P@Ty'בђS; 3^u1;[-T|O?5dB(Y,; mj}R`|DHY'<"ۘ"frވ/?|񫀈:7_l57u?[a;>GvxV#ǿ!MΝ%7EOg4>ՒɒwtҴ*szgiiXR+I]URLOYlkzcPJc8]` t=nOjٵV\4p(#ֶ4Cnз]?'JQÞ7᳼MO0d}yἼq)\gAhjQR\$F=w1ʻ7pt V+uY Ijk4AK\oyQDJɯ‚0J^[!4ȈgS\op}$K5U2if}r޻Dزؒ=^$MYmcbHx/db120fq%^5e%C&w߾{Sk>mY#Ss W=ݧNտ<'@8":;"GCEg>4,RpM m(D V)]EJAT&QDBSPU'Y "@5n?Ջqxu#_fwOyymu`{gklqsQ)Ps:GhO4iهX!z}b%Έsms {v,cs;~ӛ8+8y8aS'tn6'S+co]("XC:tZW?:?!ɔ:yuΡ!Š11O5SԵf^ѯ\33+^Vt-~E"g1e:fO=s!t'>}pYk;3H@+U(] $5\*0 B'8Axzi~qTSvxW1F3}|n+O8GZ U\dR:goED Pض㕩⟕WŃ<zՂ3 8G/v#k[c6)=Mk(xBGoXc:ҕ4tU?Y.1k6w&Y0gZjI)%^'`>~ DʊԙpբC ME/OhӞ=~{^w/|+DI?2.P-m@~f+g8{+쿗H:pEv\EIhfH.U@Hip'8"*#K9ܬA/piPa3Sm;:P(91 I$̧Pk"6ŊB#G9%jəOseQhWiQ#D*nʁOɞAk!V@$ FAB6AJ8"Sy|z0:c!/E4;v`PjrpγCkE-yE Ku߶ȲN(MbVA5D5rxi2 3zvjM2=M&OnPV7-9.#PSH!RUJB;C&5t%L^xbed0 O5 Z~3R2QBi2H xH:n%ɴ8w:UJbyato""_ϴ *K౜=4ܻrùGoe΀m :3D,.D dB>#g/EYK@e3F \@\@jEc.¥u>>ws?Rj" cCjk/,B}сE[7^|q|S/~v^J5lnl98og-o8twks0\J._bmm 8üqeͽ1Ef5FTd0lt(l\M闞\!R,q|IaH?-p뷠K2-^_m=t_?tv 90>Rﻛo&:3 Ex~gY%61[ 2Fa8Lq Se""\SfYfs ꐥ%{7w0J2% tE7 %  W4&uY0D[K"qbzѯQ1.C,oDbN73Aq8Gla()= ]Xbiy\'ߧ?ŷOK^'ٻOra.]Ǝf{-%irdu E@2Hґ+LDzA͓єRgĬH|@/{Osd.ހ(x]:qb].= C3Lc)ʊXTѫ &}ɴD*XZ:tБ>~^:76p!bHUOZfYޒD)UE^稶Bzbl) yѵ8kCAe-_҅@ ܳ[^hg9we 4i$G7Np%i:Ckd:C2%; @.Bc)19CH!ӭ#;TU`:\k}.\G_gGWCML"#8giKQ(]ROV4̅1>4f)DA(2^/r IDATC W9t0_0egs\A] fJ=0PPTsm"}hgSc٫T< jWBLƴnf3L!D*t!f y$2mz { %|כ#O0e3~E>;HI yZ9Ա"<4*H-@ oyE*d "r(XxIR"!хWO`j}rIO hO-"#KJg8ReYGg=eZ*'9Ci̔iXƤDA)ѝF3gq=7xe?lS$~dPd9Tu3"UӲK|~""eS!HBn)21g#E#E΁1鄹A[wx;/<ι6x+'qb)|&7 J f㒧s=8|f23Xfm$9QVC|p`wLUDt w/N3GgEd$X! D!eɬí5Cf3_䙤 >RC_Ӷ̉"bb2:tyU$VTQ *Ma #,/!Uf8c!;.uͽCd!*"tд =E {Di CU0!QXŶD$Cl1R*=gx矿Ɠ'+U&91xʼ\.YT,U*#UB:cQeD 3d3'$d9W"FfcZh5Κd$ryВv8±<(^d|2s[x^P^d2iMŹJcCԭ6Y+(B)В ILjɌ]hp.TKd&B$S6FvF"DR?2>(X`6X3$Y.s.r*۸x%GhGY&{k)&)6tXՊ,S 5D+E%O :IαqA gӾGI ,ӷXdYtQbR%0$?}'K;>ܸanQK:bӮZ EZ@*ğC*̒E7| 0tE Aq:BP4B bLZwu '9x w~go]<}ghK5e;@;@"[*s< p0^ͣi5a>vx[]L;uok uhiʼ$/4ZBխj DD@qdg?^uE%Į?z w9Lg֔ǞqZt<ڲV-2WDG|DܞY\G3c} ihAUH&ne ,m(1.0 ΃oPS= h8m,{5j'u|^\\!lt5)GtQJc|K5i8A(4'Cl2E)$RHɳLg౾*h65eL;HLD!"yԃ${9;rx/>پgpnl/"?bėU@ @8Qp?rZ>A8}v}苬;w?sa#5XGN+TFN6Y K=t8I1uDKEB6"=27YPai #͘5Zԣ1zpds1ڀ~3' K MMx&wܹ^㏯93,ÁUY Y۟!g "*YBfaEv,#DI1o휲7*v72_vtf zQ| kvTI/*D pqyG?v-Rʱ 778"@ԁӥ@В5b>!hmET! *<2e3b>m./FT{%d(CCj %)||e"˾Je`Ǵ̰c:HWԸfK'.\@kI?zGU2J3 E)*"Y%x YL^ Q(* pD]@#[H]ɣTU /b̈́;׬Y~~ )>Z<bgfC&K )ǐ5,2 FDZf]<c,yPQ @RiI. {9WwBdtQr#S,ádYCTe]1: T:(p6avޢhLȈBaFk.a|ǬsL;BdLw3n^VM&#J㏟oc~yG}e@%L<Wjo|(!cŸ"`(Ae?{Nl~Y,kn\bDYc<},#4nЂH`/P!G͛B}X,DQCұ_vXKtnFɜ ÒYRJ.!_ǜۣZz+%雜9sZW'q`BGp dCz+lADq8jIġDB*gDUB DhqCz~ i[x8rbuO(i2Eoe`QCHbz(IV['DL`aN焢CgYdK^8)ynz7NB 3O9z)١ \p/533C@k,vh%B&xLx\(yU`fѦg:Qls eJu>|>SGJ>#A㵔@.I[Xx|ߝ\0loAO}! p3p+-ulm[e4Zmng(8qc%H)5-op,$(1,'PRB,wX/A?2YY|crxcQdžsnsMۜ8S?f-/.ܬ!Tyo[@'jeDP"/Kbk/u5-~~ޱ>zÿ"_C"hq7*Z

QLzD\|<ހ\KR O{#T^;k)2xB⹄_!y)~-IQUZB] "!$s9y/W 㖶1:g?f)477Ԁ;ήqR ._ŋ%h:;8sbbP1àߣW'fx !m""L2,7^J0X|AKTȺB,B+Ή!6-Bk!=Koz]1C K >{Ws{Sp(%uX=Q❥T9.:L dJ}j`pR"dIUD$k=R,z  9/ mzojFW;F7:0N.B*g}0W #4ޔ,XoHQYu.i7{`ʼZ|s}c *GxdZJڠ l q|$sdYN$j yKft2_r?MA6v(+4Q4HN I;aW?L"񫣏Dy/Wax}ig#ȗY]^{C]U(Sd$M|qUJw J!Dv,HWKD&QuJEŞj<"zUY-jl#[k s8{ J H1J֊R*#E£X ZҸL eQCJH5'uQxO~R;#[v b2M !A@.u ]:@CA1$b g-:ϩM;KiB#h=MOJ6y 0sJts%5 uKŌU4mo/KezP'lV'Y`WDm hq0oIBhCtȐ2 60x }EE%+RH=˛ Woqz=1\2 Hi[MjX+ؾػf;bۈ7zZq,d`x8r2yb "ǹךYܼT. Z7g9B>/-(@2&_[?/'_~_\:Ev8 bmd}%/xj&+p0&|b6tC,+YdZc:ƵH9e'̈́gT,hYˆMK}kW8uf]d,#+znŶ>]>l2Ά\c]LR6R<=zvl@%ڙJ* KOyNVxF7tsԷ,t WjTHF0X6Sxv!8?BPaSuhbݑDuDЀ( M uRKJ:G*BmHϊq1.[t*|blZ-B H! S}$}qYt-[>hR}SiUAt]mfJM3>e(LQHHBڐX|1δD% B$dƟ|,/~[pc{l^QOsd\%N#D7?i {D/Q1#;PO>zO"E}->H* < ݎK7gP+PBGbsayqbQOkw^o@IXD#e5cjUڢ_"bo4g5uݰ7pmhS9 !£R$=bE䑺,ѥ;Fx^yY7/U^!.{c0\C3CƤX7_77?E~_uoe?%}Mt[Z38iMh!_M'`Q2\7)YPyRGۘV0A+ɠ,Ȣv8|&7_!Iaqf~SA^2o t1]I/(N6c͌/r'hv`Kr9?LF# = ,_/-n\d sMT-ӛt;%QAޛ[v}5sЍF!$@REHRTIqb+*'e=r?#|AXKY,%T#&HhޔTThHb̧\'\}2srf{F+ƴZ Ҁ@LyeMYbϘA NszT"KTA갲t(]J#%1#N69wص JYˌwR )d ( rcQM($zi$ٵD 3"@BKT˻/Fl @(m9.+"C>||@B\aB'5p !ZJ .;MH41 tAӶ/_lh^XSxla֎2Z+,+g{4W_q]G?a:F3:v6k޴bOC~ ub6b|oAY| \53 :RLDQB"ˆ+/PD̯Խ5]dG\FxHWĔݿ}_w~u y.T@wwXv^?&p\Rds26I":P1ueQPhMaJвy<2{$X9CSoTH-F&/d|,p yZẕ}2K?(*S38|Dfl)<-k/L`}!U"b.9:(JlLFLw#~A(N$kO(cِ_EЫz9~~>|K8wdfEfrV99R%Ҡ)TMb(W W)EH 7p! _7Sŵ=ED%V~5|: HQWġgy 5H )*0~P(Vo\ul9#LN-7u BH:EE#MTFnp6}Znmf M;RGsN+ /Z&c4.(kMGyB/_KyxR(3g%~=$U M) ˾.d_} C\ZF#D%BCJmV:ݒ_~t]VRY !`bwW;M"e' X#Z8xys8viȇ9qFGp6d}Kri`FEr{e,Ʒqy4֌o pd_R6Il HbXG*$B{*&tq5sQ cc+3!|)5REu|Eeh&8]|N+gO j-GWmz]݅TR6'WE䉂#cjm ( !E"qY;k6p=iO|j-C|Z䈄HyMp󥗣 w=xQyΫ'@D9̮X\, Qk6QTD7ۆj$yY9ھ"C75+b>j[-wTp0=,J s*66fΈl989/"jc(˜ |C-eVJ|#2KYRc߭vڀ>˃[1k-BF6lRTP (3FX]@xϧI>"^2HIB!:.(aP!*H)֪6P'1 }G g"kǵEV^▎$%q6H*adhI~m'9ɿ3<zeˑZ;%g^|Q9s|#~yОkHˎ,YLU6&\!*d3^ty/~).u S]w~s" l}'P "%DwaKe_@WfܯҀoE>Νb6U̗")FN<'xY|mÅD"z[ͨ.peGOUh{r'E(sJ$X%Ų!Fp1rJ L,]3me~ JB, adOL~Qr|vQr^! gά[ ߡzSAaBZjAY[6#LD]bw1UF"g1[f+R]0N9U3?v7ۿ^` fs?=,{: PU#n%Y0{S 0d}0f՝hH]!>'7(d >|kvGQB-HQf?;8>n )Jn:kw1㥳Ǹpܡq?ݏ|櫌NpqD$'Cqq]7@1&FJ0B 9X8'c T lm)s66F-:M'-2Eܩ9}U)\[ϓOr6.GҫZYNJ D EIDzLsEμ0+_?ϣ_% C"y(SR #>E‚٣O=~u6(`V2DfsW$Ră!Ktx΃,#T#X[L@!Y,#g9~Q_2w (#F4%F*) ,Bh&4vd q酊T@HE>kF_*%X`R+)_6SʗOB~¿[.?뀮 Zev:b>ʲX_r8y4c5Mƫ:_[R>%B(!BA; 6C)S^\Y\'N?]&=x͡G\^k- ԵُOk0`=JŐ,?<ƅ IR ܡ㽵-,zX^$6?;&Ln,ˮ"* 'Qdkq2~g};XBĺ7W-#QG!a$/]B,=(Xv{KT=*_zl@fR.ȯ__:v !a6 εAѿdy0w=6C"CDn]"RT ׂV2GWi!x"Q +9HdTx&-gྲ92w_~|܃M>5*GsDL! ܀Yd])R2D EHRYӰ:K+U=4@DCP@vO&&|2qtso`Y$g/ b^( %YzK+G"IDR,! M Dis_~΁MyNIz&?qgλ?eQPrWHC`- C?ocJ~[GGw_LzkY.W( I3ֱJ>'"D&dl QxHJ\ ʹ}+BNo{0Lϕ/#VV3 _.hc$R˂Ņ5"^y{l 9LaxWy_x>8~߃n\ W q{'<2+JRNڻӫdU !=E'.a1XR זt2GѿO1/ެGl5g b e-&+t+Çxs7O gXcb\QbѶ,l ,I #pnw-%IM,Uf9H#HI He5eH$d>c B Q m{B hc0ʠ.EIRZ*dA|+B*8RCO򒦵 CQtA]k5>;(x 祳ls#$A! #B$<xv: #{]:+G"#]cfO(\a-Z$瞿}w9\خFQֶ6DhZ*um1bb6ky.O>V.-)!"4D"Jʕ|d6lmit}s"+_"1W>w=a?WoZZk@ra|R11 ]YwhTksF&0 Jk\ptv^}<96]̲ z4L9"iŘD-RHT!QU5P@.QFe=tAdZ(ZΥKS8zdI;|<],1$FcFQU3&cgJU@BJ4 LIUiKwco`LQ`CdY%HU8k!1*~ !Dl`hH)WI XK0-m B/y2S3R2'zHKL?a_{FtwO>pt4sg8~hF/.S _xvg (Q`(V%Uy>;>IN"(3WBdTVbf%=v > Ig9>0Y/X[>K֋1Ŕ: {(#3* z)EVCG6}WS0#^,y뚍# bO|ݯW?)gƐW7;t|I"&vn(F #L˅$!^W=MD  e|sy.5O ת(;r˄oEHE0$G;Xd,%f甗.QY$lʚy&ADt -{-; դ6CIzuap]' IDAT$II-{ݒeסp'Oo8iY؁Ie(5g_CĞ`hk}{V0+f3Ʋd46-ݿD;,+_ę|}.(PVL~w|AM FT9PV!ɓ cx*=6]W{GB5=tf=Y΄#SAgcI Z6%dЂX($I 3` Iqtݼ@ 9_󵯞Sz" v0-[/qz$QUP(cPEDy+DVxR)W)!tڊ|c"/oBB^hB +yX%Qpw~ΐzʢ`RN Ԥp)[YV$B) t!"3 IDM`9{#؄, 1'z;`=i h6xw bMQkJ}*(#iAL![x@+҆#ےo=4}ָD"R9}Ls|thD >RE;j# ,]ŜFZe˼Y} 6$p#cdJ4fmTsIΙ-{( R~O-4O젌A%$!R}NMjs߇%V+Nb4<Ĕy!5\޳t)y9}A-o :DG rQ*qs5T])ErΑ̂?*I|~1ǽ8}w^Cb>/X;UϐzVrSu2rZ, P$r1@a$ F; D(&C*y9ŰЫcȵO~߹5oD]9*7 Qޏȥl9\r";L(Hr0 .&7!ݿ ℥1&$F'VtbcL%6!zRRȓ**胧Y"D1.Q(E$?RLF& fSh(%ea3jDyȽs.R'2 `>,6RԚK.QBPcrLU,cw,Bɂh=}$d}y1\p)<^t͂qi' F)0Gz,-9w"JrB(P)[^am yGu,|O%EiBѺ w8,CX-[(-L$2rʔ"mq" GNs}w8W<˥CF1TZBҶJ^h͑Ҳlaz pVbu1 )T;Km ).E*.*LU1>xB BIRWmx'4縲~Z ,DӴ%_qdQzk1zQ vs@,*QH\(3"7P3,1AIU{׬|/ s #Ao|~xc3uLy~'~)\y[,.gy"m:'!_E:KU~/wDHqͳ~am @@)j5p7$VΗ_TYw,3 C䶥bAaYzgGY,U ,1 v_2V% !EAKУmG>k{zmlU몦Da @kz|JYHI]ň;TQR]b("jXg>,jM$e, aZߵh@ -Ԣ`TԸm9r#S0˶-K,a 'tg.Ҋ()B*2D`:c- bˌY^[AUמ1. ~wV.j^Ԋ$1YlmLh@ok|ڿlkBm+(눍w?PCLs\x zl΅3[[a)n!Jo \k}OͿ?X[)ZKF|!J&ۊ]G{P (͔1*(xl 7h)>Cm޹ AI zC9It3ٚ!_=/~;$Tfx?0wzt O:׌fsS4^Yu éSyh&*C;#sI1WmSvgj΂(VڶCK>+c ϚJɁNt1AH%%֤E?FV}B@KaJH|Y#풡rlꂉ3-A %E8par=¢aKW m^wE^K98=F(an (JJA-ZVt!P)hfNՊQUa%H!^ZNmgw=]z* ƣ*9I hVAJ oT$ .,rmY$yC!'B ( 8ulw޹o/_}EHf ϧ?{!J{#' P5)IC~iNc3p}qN>N+Fޟ9?<9ƶILAݓ[3Ī#ѝ15f/eeL M_uWwJ(j ('o #`,hbr^xa576_ԫ57dUW[~AaR5-'d^G R e_nA%(j`ιޖ5O>n3qv@!Zd$"}[()"x!AD0\l8IP:ɤ(eA.A$P!yw FKE 9E/z $: "Y gŀHGm J-^Y-( a4_ Hi)()]J@ѣغE [ ]cN]Pkl9`RHi6-{G b,|`Bl;e^2 iX@_D5,Y 1R;ЊH![;Ou(!0JO;G6H\^LmZ1IYp2<ڕ#4.& >:&;k#[5qoP3(6x!k[Y^Gt2;x` Fy:g9:Bvg>ŧ#_ΊJoW'רOs;;l8 J̮UH "PGʁRbQ5*լ~‰DULjӯc++6V)ǫ@fW!aIRԞS b|NF`>H=կCkDxI«kc $J*o !)7úx{?ש|KɄ mqm!SN@h g?~'l$._bwz-hgrjP ]&bw+@RM"G[SݳPs5ч(/pˊlݱͩJ +WBBFIl26뚦lGQTĤpGk"^+uPbBI0]`{c-m{V #lFlkM˼q#R mP`$Uyo9FrWBhI:_9ϑ1jҒN>Į ~Xpgc$9~t UmCtX]1(nql:#Őt=B2zR anR߇|/ +)R"ۮgswRzl#hj&݈,d7"&AÀ$Q(tˆvBht7(#f}Yv[3`ےEdÃL/o&ئ|D~Sʯ/& UR֠ch<ޣyP\g*^^s̉]=ILϖĐ2s 1YO (֎c~FkGhu>/Oz]w-8 KPR⼿OHʦ9+]xIo-SwK፶ J39ۘ=Aˋ~L;RaJPSEVl%Q .k5L3RBTw>Μ!}|X ˅sLHJ Z0YT芺t1py6GiIR(9 J[0_%; ! RIVh 1{,CВLNExH g=Ri 臞(QZ0SmVmtILZPXH>ad4[J4@UTthN߂ЄZ̚} MV=Gk.$@?4S}>ȕ~ d@0aTH^m,PZZR -.ΡDI+ȂOg{qQ#|KS4Tl#o"!.,-$^;t1FBB(Q`$z kDǽٗkQLo)6('$"|vzj*;]=2ovkK5$#A$ @#&؅a&27mK| 7pwT=BEiEr,p0t*" 1Fci=뉲^NnJ|< 7CbXyծRc a @(IL #@" 3Aa%l){~j}ɱу4, Ow^F_bJH5U 8 Ejp"EX[ E7bMs\%]yuwOpVTn$ $H6uͤ܀uHHޛh},-5=[gp ҴHCIIP%ЅM6dX a @K$eIZ}fZ{z_*r8]]U]=sQ22"y>\?aY!{,#c.k rhL۶X)%YdC2!t$) gʐLw%0J#c{0g芼$Ր'Era$C915Hu 1t&0rY;GT!U0m֧I+4zL<HYehzWs nFe5Ouzpɯ޽#O}G?z^4U?i~ bn.0Si Nl"+Sv_;Bol ˃uQ^:,gKsF+*0 3Ϝ3y-\JH&C^G?;[9D agbU}-Ơ'hOZҴ-1֋ t+ƹÏbmO}}U+B'*M :Y %`&W U-UBJI RT&g7OLg UQ3LxbNd8sY,;LL8$Gꐥ&RJ<=;C}f_qrLǍXo@AaЂS Yd8oJ`h@.r1[\Ѯ2. x M3!H=킽Ŋɘt}d+|eYWLbɍuBN\IE-^7^u6. E〮O?l*(5 *ZK[4AySÌF{ ;~y9J'6 nS~:ޛ2<|W*!Cn!Zd걣fJK<(L@g.sЗcc>-\ C$s:].'N۱a=(Ƙ[FѸ17pCv[˾;Q4mvT&:N wrI(l9a4]Q%j-~uSR SH1Ո#yr}W+XQ[*ˮyW =*$'81 )c+vpP/؝8l[B AB(k#'4X-̐"F@48" 1P LLGxm>kO\4rkkD*f>bM5_9Ė MO9Qg&>yʕ]7YWU.Zq+Bdy8.;UϯSjޖҷ۰'}j^qL9Ke ƾ~~egx˃n4`,E>dXdF=`:y^ {!嶛9vJ_2\V3>|w(!X!=bǖ#U67z,RQLetg@{Bj5C}ŧ!MX8Gwr/]/IP޹3x @{L?.nS/,72[| bBҮ*?>ǿWI!2HH2 U9=mfQS r.#kfzf<̴`h-rH>uoubeX<㵞 J5>U5.NA7W1^qD!qd4{Kzr.VYѰ{k\_;}"j[~D=䞶d g7j`qf`JC(QK!@F:펝`3EWf`kcKAz}ET9` IDAT~ɠGUGbC<0B b~2%}9~.` ibַ$UF`U:)yl\O+2U_k 62ސC}U%/kBz,ڵ5zhqWP2*yx2z>$C7?{b Bۧ5 c#߱ae(SXOpU.DT~äЭ04cGP,0c vzk#jư֌U5#C}ᜡ wwMϕi(b;dhSfs1EM&AjKg6F}a?eog#:4׸ @5SN\߮+,j#h}"Bbsb<)ym}L̆Ţb,Z1[* g6ntxO^pg /l#k]9e \QNXK5`#bQA)qaY%zQT$*zcpF¾w F]Â⌥:,D<*D&U1`=&M[Xg Y9-N)oE0nx82 @bmATI%Ƌ}%HͱSm1bjo:6`rZkxijKXNU&HD"ٍ~Ex<|2;cAw^fXo1Tԟ6f,.=3UaL =s;Ч-!㭥jT I Ւb UΙ!bT4+Q3Y<2jP]2 Гb &IV1ڕG(,ƈҌz }Ov) Mt3xit]2 Fxٲ'CNfu2=[g@7t+%X9I%ɭe_j+2π$-$꺦j*Y }hf eBy9Z1X7=iVch6 BKU:'N0VJd&bHHgaNTflj|36\آzP㙺1mG#{2MV,!F4ߛ 55eojK:z7=rޥ&oLt1hQ{g[Zs<罙yw)¢li~ Hvˇ,K'8ۑ!F%?ĕ_V[yn~[NiHK1-GS6BІ?qH,xnu"R!}oV*KC||c;[J35w#}}RK`ы% g-QdkKxkpޒS"DG2JEjr[bQbH$x6\ʪV0gl=Mepl;Q5IYpQlg6j=7"{ʆ߇$Gg똬{|p' > $BW5!""]pG pxвZz {/oR5t}K}D}MJ y&d|h6˽T/y(:[Xk4 Y"N \U`AH,tqU9lK\mGY߰J&g6"(.᳣ʎlFdYXrecƒ:c:ezLWQ+4)=Ow*y~מ_3zEE=LdP6Ξg6bǰ%1qc$_vr 2c[A*>0}hF6 B2eiXOM$zR; =9^\xm ±MM}oQr/?nQc5lo|aܸ12[c/mq!STd m"v=*3n-_[$Rʈ!dЍ> x1dM8HmX*Ɇva0-rnƴa,|hq]s;kJBZeӌX=XPM` {lq*GÄ9oi ]:Dǰݑl=o1W~U$zsBVU06a\d40FyBNs|A@\IC|g dQS&KBo1xAa~mBZYɨ)76hJ}W y}vyAj&xAIw[[;2J32ԗHdCJJE0ޡ!ʪA [R[>^`>]*lwESdfSIE >tF "+؎).7J{llf4,ow:nC|;0cbVsBSrڄ +_HvLj`bŠg|@! h=-曑r[MJӜ1I^&͈(Ц~2[qid`~\8>32gR%4zvwRE߲%_cr&xk+CC3Otd?Go\.# ~V j:,#hC\GX,tG-?cLٚbl͑#ǻX3RĬ*T͂gbPP$*\Dƛz+A>Q~{ =uux`FzAxFfM񵒵>RLwIcExO6QӚLL`-dͤ jc!RnR+9G$+;|93XC5\\i MVOgk̻xQnF;_]iӔ c!HZm 01= eRR-~ƹR1(N !'z֙jjIiC 'B Ч1EdO9ӬqeOH~DYυOPB|aJ%f*cA %9{Ww@{!:c5#%0Юx1xם}C|-*DBL3ZșGԛ5(oX uns R9 oE[e9Y3G 9bPM6Wd͘;LyC^[ЌTaNOl>bXkS` K}Nx]HD+Fƙ -̗0GMITsiČ(B%bXg [#DB9I"H,&Ѧh*Vdaf(4':))ϭQ|K8 2lڙD}HF"Dl ?d CџQbȑ#J+VJqy0;j NJŮ0{#]y3-C z`J<_jO7z?ř*$L{9tO!oZVH48cgP'{lU!b}k΍5$[ڳZMX]_ ܯH6_CfqKC #R$c758HYk2FOG^ʨtcɢS3>vzLUp'+n[K~pP9ޭhR79qÃӎ3"g%fb2hJII*WVE*X:v9?07'R=#oΞmHٱl=}84"F|BJc-qC?1߳rfcٳ+>9]&gx1zቧXB E΃-jpB!QB5d6e±P̊Kc76LmVOLߒa7cy?VȠ\rb2tmOJB#9(zLaͭo܎"CNQi͑P'44k#Ǟ3bVܳvV08,A *]Ũ1LCE3rٝ8+g3C0lnɵDiyn_U޿ռ;]ec=W~uN?Ok+̓Gv262T~?{QVlM"پcR׊ * Q({{5:YA\#9Ȅ4kؾD,8 _a4 boX|I4=մÍW12X>XK>QEb- y:^ZtʻS ܔ/+S6mp9z(ε\rŠszm_]#,,fsj״#k.1ps>\zGvg_'K1pnc?! _g_jМHiܪ4C8ZA1 AR4|WYRI<@P;Kqv+6kyerHypxRls7(#Hq4ͨ!FaG $f4[3NYQX Ѐ3^dh*ժ%\EUGhl I e-ճ]G3)L;fƖkfH?@[2eS3c9cߘ8}oDjii;;wՖ?OO߂+_9r᙮>loX䖭_ՇZZu 15H+\?/???Q^}u.ɏ]'/o #GK2Kv UM ZV\}5Ӗ~U/ 9S%-nF:a5*{\%F#4zG+Rt]NSDz O{dv}fAL1_2}b,5;;S9Σg<#H`.)Ju"ś2lJ-L-kyy4).w~u_cDTN1‚:/ʁR%LB҂ݶgk?:bٓ MհR Ci12BBT^}$@UQ͐Mr8WnȐjNKZ)#MKc `Ѥ!j\ma$DЫ徧[&[jJ̑=˕&ΑT=}x3 ]Hґ|ղ"[jϢ]L,KalP 9g6xbpz@osr,( z,n~jƁ1=nХ}\}}9nRHv`9!2Ctf6%BLk"K'S~:1ӆm Zr( ~Ds>яІ^0jkzr8d>!: לc\g`1HwBk'\ۙ~._O^o^⥗Gώ~vcX@., g1FS; BS KK.TQ-Y&E!püˇK6eѮZBCa'֐sZEK&'a(WՌ)ȱt\oN$-XHP %qDFcZ5"3߳cKQ kULc,ؚTlM}!+VVK ״PGnHt. BU%ޒSkopɯ(?׹[詛֙Wn0P/s|Wj|9B+Š?8B&B~_ pXs2[ IDAT/K To by"#Jn&+( buk"yE73 1ٓrfN{^*v1 b<ڎՄ! J&rkMFL qD*b䐊6 t{7eʋcӵj+'^!o|QςxvE3n:oq8;>fDX?f|Jn#sd:kQ2 ?l+Wa}D_~J)m⼠ 48a*_E|vk??{uǿ:RcPj8K\|wՐD)=3̩} /q#tؠDYZ/gA"ր$D3v :%ʿӫ8l[|}9A5| N1(mױ\(E-,PѬX)=~T'a=܌|7"Y*^V]_E>R.^R,o`"[Ӈ@s)kFc,s^r۞$(כֿ&:Sޱ{5Khgw3,m^\k"/-jb6\G'X?¯--@ 3s2-b|^ )K!RF>eb?buh|tAɽLtѷ5{N} gK8ߓՒ@l,YP'6G=Z`ڛv9fucq< _ ]뙞_풵vpzq2\-lN%+mƛ-!-+SF!K.sA6Eb#>{pUzh8 ^y }]I&Z ɘ[Slڎv< 0̳cb*أ8&bPJ+Ōb7荀JVʄ[Ϟ[Ϟg~9 uWT%€[AI1"^%l;xAC:C 4D>LG3&B-'llNF]# 3et"t|k%ͤCou>93A1>PWv4Vp^ LR|5eP s.5E3%{3[Xgs×\NxP;ָf˹&bKi3`2.puqk+~,hyJtq<_7={Ӭ[sr\Pg`7GlbXL=*POZR?,hCX2QW,Ï]~!Hw0F/:kgzjhSHf%@; &5ڊԻ{V89<0 MC(0^L Ԗֲx>r!C*>]1^f3LW˽"qU%]~XO⊒A)$‹_=f5^C ELJ/jRzro1b43bZ*L2ڒ=qe mM;M#]GOV X0>aL$>u,vJX-[$^~oc|_wC:r*{#X:^WmҼ9h OR$ BP5\'u4ŻO=yCO?/fAdy{o4Q A! B`ئ-P7~a)ti3L" P0 fL{Wz<NVU7fٺ臩[7s}KuB;WL21FRV5i( H2-)$DkBȄP*A(rDQ4MuM1ռc!6 9t^478VzvP8z|dsT)Ea)^>$2# MeKB_ Fц3{7Z3vO -ejk39, 6riBeFivFsYz[W1 :kSTl5S:kCf斉DHt6x~۽RW 1\^7_m湅9F06 D,+vCk_LAW&-?8BnT(A Y 9Ƒ&#9Zj3Wt4&4Caryz!0:҂Y|PP#JC=λ[9YD:xC>|>Ȇ`:ȣ6&hU7;7z׬LnKEYe% 2ghՅr(X,H37B|&!+2Pz7/SIV%} <ɏMa Ɔ۱w?݅|Zb-G C1sΪ=S3 4n*weW7Stxk[{%O⾲w m0!vC3FB1GQ%֚uUa44mK&҅Ұ&Mf`./Eg Nּ,hY^iicvGh3Xm1v11 I*l^Ή;80B+a}<M]!fˁH"FX[ 6y8RLggXda[k|LSc68A T|?j}r~w5-t>|S oo.к9&[ɶ+cYzEE-܎R #D &cX7t+z 9)fCmK/ O8Jlۡ D)O>( T~BtmdŃabW0/RQfNm?0VĔVᜐC7db '5$Lăq1n\X wZx.*2tdr|eM"f[XZ(FKl2eN[RTUH#TB46K'[fnӲ3{(pS\__`Ik~ ^#y77T-MiU+y O?f«!V d]1SʄX$)ȮpbR*Mj b&wR.QR~~_O\R!v;g5Z%jWR6Q%3S  A5V *MRZijAe9ϝѰ6syw:]WziZFsthD/ JggBN.Rr%eTB36$ )ήW0ж ( C n&R`{F@.ֶ6LH92if8eR`ixILZlցn[+=@qCst…f菾zG@ĩbY/ EOHa`ȱNFrDvlm,Zw鏼%{ 4*iw{3jlKHN3 P"eiO0W][P6rVT+ 98L*6&p.rpajJ6**rۡFFC1 )]c 6tƸv aCh(ܕN]kaqLd.fA~aopisn0i!6 TBK95cl{Og+ǏԓZPbkwͮ}OAsWG9Ĥʿ F{azfGҠs$tzޢ,ʧ06MhcGe Q" D+]\(1L2>㴠ƄD3bÌC 3N `;;D(./ED)C!Hc]jrcL m "M4hrm($yL$^<;)D3$-!X\-$2c n?tYG!%'豢hf ,xq9v7Rϸ2z XntCZ8K;vxQtV鉓;FoBa; }ds(mI :aVszw_gbFU%M%+x+ 'KOE( hcU]!Vm·S#9`PK;ݐ)iSa޽)AמA1^]Dr }dA |njTio)ؿwC8vlƳy>Ynh@Iek=R5ca>kQH߹Mv X]@S. m9'Ex{Vf/4$`J3LgΗУ ebN!FMX߶(jm6Ҕ="]ONcl5BlRkrHRMMUUbfh,]1cma:U$h]rf8hظ< KMXѢQ@, tfZ`ga0jB ,.LY;H s/q&':ܱəѿUeq7'c9-f2X>lln$edJ6BKbλ \L#BԨry<ׂذ0tHgFJ31P+С\xaOmcHD"6"eVG6CW%+q #}>@k$wkCG՗9?'YMΑJOe!v~&;@ZȮ8' _eQ ,%^A j6,5 y7-9')Q@dniHdل] Ar@h(qwgKt9@K4 `ϲ1]1ڹ[)gMX |Oql0?yΉJ)5\rm_6f[<寲;vm?djZCmUmz|dcJ@Jo*ϐz s..zť&|eȯq1F0B F`!s$DS3/.+4Xc$)d2Lr=A"1"]Q~yRnڀ]՚ ¼YǬh}(=v}NiGV+EZ VAEȪX\bі2*Ñc[lnt9shh l:iR: `J@ \)@/+1uܡ|W*/-p{r=N=&!ZEH?Π3 * J+*Q Ac 3K3hJ51T7#$Ǒ}%E2 ؒ(ds,5z>sĘwP h :vŹfmګ6u>x"|֠PK1 'DjB#xE #TNӍlm(G3k;Fט%܉l2BLD@V\G]Ku iw7ov8}K4MrjdQ2]D)`E}Za5$AQ`Bh)z}1qg~5 G6 g4 (^mC4ú.'S*HV@+lΚ(:[ba3ɘL8CmV0kwFpq|]sh5A!Zs§r*UlcN3) ـ$&98Ta2U0 hgX+rL&367(cpFdD3 l+tkqjSQLvLUo~2=֦cJN +5x_g[?eשj[nURz bOk`ѣ;tR:Vpb# CELe:qT3xU1Zh9~ߘOi.\<ewYvݑW?2{U0( QuV˼2G\>m FH3źrXb1ՊG+@41ހt(ɫW}vr4$ёF-ڈK 'R-/s˗Lw~M| \C掽}z3~MX#kYE49'rքƑb|T}9 n2`efcfDҽ[I!ܑ!2)&[^S n,e 1UF\q:w?ЮOp:E*Fe&WFHҲ|rBD=@$!^îL19x5)*MD&(L;uMb{}gO!b,m 4' Ӂa{?]N׼6|`'<wa2x_T{s9'?RC`/ʾw?%ѻTX(X#  J282`X3 u]ik>^SXscV+Am̏QZs |/\ւQ%"Ɋ4Z,s@6L ڑ$ɁE3q6mLä4 B!oL+YAj~m(AksXQIIN ԫ>o't_א=,oXx?pg~m}l3gK˗vo 6CHiRhZx]()`g EbdqP4 [JA]wL7/=5ϥ 4j{Õa:֌]RU+}}k*`:TI}(͛"X$)ccHHxbg2[k*Wzvg3D!7s4tLh]ͼP*U:ᆯJN&G[xy~gol<0y3Cx^Xx/|ܻvA/2їkmbBN-]瞋؏opO v#qs~%u5h*ɄX|)Y7#*Ua<[lL&lflHACӵB4pfa3`߯[G%/}h[ɹL\Ͽyrpm7[a=ߐXhI xA*jw(Lxb/~4iJRTZQj"mBӶ*j{w112$9B5@6`"[ %Μ_ezm-fI(CDDVH9G+Mm+CcHt1Sv15tՕ7Gey"FSYFZcTC|K֊z BJt)rBD 6EFgG;f1PU)k|gX8A!D|˴9r)KFEQ%%\^ᜲ'I)-=5}w5Y:㩧6/g>_%w?r-qz_ c,ásu~w>O.!@$CY2"0d>VҔQT{xHLJO5n[Y:5^{HX87-[Z 1'Ԩ@IsHiy ݃7 ~lL&TVBoj_oKϾڕ=s<rۃO|70Է΅gϥŻX?z?6cc6n-G"c0Aϑ$ֽxyV萋UaA{bE@ 4ƕ uEњT}eaz5P9 YdGxLdk)bLz"N9f;Ġ$vBaP'CG$ҎؼPܯ, qr5k+tMGuQ$YeۈD*p#gũSѷNckc?E5S9wn@]x>zx+y_bskKͿ&yY!+}$sye۬~\9cDS_䮓`n$tma~nDNϦo K,t}reX mUNeӮ#IXKMRҴ9̦SHWC_6TZ!&:ϟ}|7E{)@<{X)03pCҨg3tPQBN`DΙfװzqlܿo VXX|Cfeqh*D+$ ]LK,Wۛ6  fV>x2I(}*L`ƉFg0Ɛb *&!F*WaAgbd<sȑ}[$fO;:K -~k {E=P2bbQ8t rT<鴩 >p<[_9OaUןd<7_xuD>x஺>k#sʙͻvŬ!ߠmXd/J:0߰2(HZtL︦H 8=",\;|8  0B,qTahƼF|}LMMY\\Hoa}+c |G[o-֊n ɭ#װ {U?wNзo1 8a.-ڹ8oPjNqCGnH/sbY.t3]VGٸ3$FkI}:2!ЪHSݬ5Aqp8ϡZV7b$6P bBڼ@&J.VkJHLO k-FQeJ9LDJ0W+{[ERI~/r]xe%e֨T@R LM jaT N4m\yR8dAӌ{3wB-!`C8Te:I)BqzPJȪlӶ9R5CSI7)#1$(|("8epŧO W"cyŮ,CNZQ{mRíʹ W;`;8&3[.lXi{sw<"]s?'!F]1|rܿG<'%:}\~,+]gYŁgZΜ-Ig'V2e k9b3V+D,>EB4G5R{U 2 sˆ!a&BMGRQ$J&SDfy+E37\CN_Anxz ߉:O__~5'KKpi5.4s|:#,X^X:vm눾# ӭuV/y z-1NԳWx#8y/h*172Xciۄ:1tFm{<8EDЉ"ZJE+YԇPƒ$=+_H@%D][rVyR^ HaѪ ?SEEpZ08z%SYL.(.yDL+180!{AKJ _7sO4$EMPlSvD}?>D^%8pJBccR| <%V&LSݟqѥ;:-, SElZ(ZV(ʡc b{DeôMY heJ3k.¯*^BćYYEZKR >z:n[;>7QY&&ߍN *a,\4Ջ|Csvpp &N". S,/-'LGt]YZBdQ)C #iSkZP{k r3mceQh”"_mK$`,Jxy:Ŋ(!@5zHЁ"5bqpI⳧9|hIQ\t7C5]n,/re{I;z1X1@ے3֚P rⅯJ%IՎ!&8TE4}*U&ͬah^'A6iNX4di/Ly4]VBE]u:.^peDzI 1Ub0<8vС#;gg6N[9͹;glv IDATiؤfc [,9C Ɂ Qp%W~bե;x[}/G7y& (7 'C]}g=q~p(rHJ)S,رiڮ&vc(?#QH\ h&m؁؍T6P9EڒcQv,J%_"9Ν{gXgLCr(  x`9w^cB51-ZV ){D/% !ZI6<{Va,nd+rTZE4)ݮ SV$ `ɿ+LH}$25WN@+^pK%HW(^mgRYF HИ@zYd4(YXI2BWWx_ovm5؁G~uYzkYؘ]yˍWr'\zTP BM9bn[gnN`EF̊$'y)G~y[WllbDОľU` vZ,21g&GƼ[6(RH.W\A 9C"GW5)g*^)' B()̳w @24w>F*0CI>UH޹䑒Q{a4vX1Lfsv RHִ}HԨ,A*RH ]1R b*$)]@*5PD@=OΆed5S?EF=J*4麞H1ɕ4>.zP!Z6.*._&zi҆ˊGfq R&'Qa XRI!?O>'/?ezjo?D"F%:ˑ|׊)ʠ QUhx5esnj>1o;4T.1Ёѡ1y̅ifR"88|@lRb=JTJb-3Gq 7{,L\H?E %KLoR!RzܒkkpRJcʅ(9H*J+9ǼFA"Z)0z=lԩ=7z xxL?,[/}=g\XcZ׬mXJN7dB[L 5H;)#TDX +6'F1lϳ&&\H! 1BmP-5>{?C(F)Ѩ,<#Bg##$y,Cmmhλ(7RiY>g馎a`YceeаQUmDA-ixsKGFK.y!JΘ26]O,ue!2뺫bN!KraEQl/D}Xί|֊J]G$GjpaZu"&ݲz)?G<}|5|;/<螫k C{U gHdxbY(BT5R(c%I rk!'Aʂ.,*tKdw3*K#59B$ZYlrGc7}/xdĵjuI%hJ77WUb!0ۖ9ERNEv5/DR*Ә=0"R^P6>/YG?v|[`[XHP2'm >A;[xmC]hQe󞑵( ]hqΓslK2!&b,a?QD@!DIAɲ9Xr>))~Mll,s)/}O/o͇ԋAHLDUk *S4:I1N8 &!$HD`L\ mT*؍|H!2j-wm`c#R( Ґc$LG=@֚߄HCߪ;=ˋʐEɿx3 lc&J~M^ g/?&՛%eb8ҿ5]և?|_nOUև'lO~b%sVS[w8Quzj!ɦx-XER/M(Wb@(MEiFYT+!@deS"E8sw?˳+B#RfT4uE!(ECI S +t(e_G^\}w(ζ]Yj 19R,$%5FIFJjkh#eױh _^!DOu$ )F$=ˉE*ebh]O|$Q^ӻ`Iw'vlVk# mږa*σ gq 2gX8|t~.~/ ~{<ȝps(ЇN N?U}$ƔpmC 5Zx^Y FJ%e2CG+֒dTl0"#ږ,""A)F*fZ1i4: &~zPw4mŚ̓ " ֓+@zJ[oZر)9 .oOċlM/`dF$C>xXcK}S7/-b‹`)jJ1!dFƢ +-)ebE J(Jp {E2ѐBv|qdw-BR%"\ TI"' |x̀\>7DZԉ;S?>6/a䜾mq.tbbߡ. 9|@ J2창ɡk IZ=:t!S!5ֈr av(itC880%"KbװbM&5QHo1wXh+nrk<3>~?.Ӷ7WhOS||s<+"T V  Z<.{D.:y$E# B xq0 By*h"R0ZU)JҲ=u-iC+F5mĎ`wy#Qǐ#Z2X)RC%go; .6#XH&;-+gsZp!y9l]XiYh*XBYӵ̂#L"\z{qU rYƣd:]DFSM)-[ o:uz?k8kȏMW=7#~>Ӥ!6'PgdžQ;Ǭ4c3C֌H6Wf6(iޅt* T4;Q=Q>ڄhII0s/ʐw1,µb"DEHAPD#Ua=bm3]$DQ@ʚ&'21zOsM"G x%L\ݺu ;Aΐ9@w0&FV ˣMs#u?#VN>MkaN$@c h.=o1L$2Jb%O)%hC\dړHGR.B7FA e3!"DJ2D9Tx%I@BN]C- Ac;&; Kqw۔'OGn?9zxރl{μc>YƬ%L5Qh)*eUz=+ e0a>sq4ӉJRy="g] :S @¨ HiCYkB^-=w(2ߞ;/1EHٞm6 nfğQ*Q(2f|z;pr 'G}<~Np*/>b׿ppk#{M9¡hy|_9aTшhE&ph,WdUTƅ("^(>#.ÌPӝw8!#T z_bL1R1Ȃ KnIe 7Oyף4s> +"Y2M!'eia,U[i2$VvBLMJ3ZXV5o@DN䤐1wݗrsup}Xn45.UHп=xLGy o7߯v _iY[棑g~扫onVݿ)U\d f604#i$̙{NpfcnaX7 gb d2~ӥPRȈEZVB,Sɹ#zRAm"D!~s))GQҐ GE%QisICnj {gf|1!,[5e9\eb"a5Z|N%dJKBN(a@d j6 '#asf; G!G|J,.smJiWf:&3rbb{lmU۫|_{ ͍]dbg>{|(uukѣsmQ0Yf3CW/;i`qGUEΟpL>ʉogmm GK&bR7/hk4 H+\pJa2xYj!\`lт@xf>elN֢f"mQB@ BL>bCb -^%# v֒A-Yi` 1*Aq0(RkzFTLiK0̤鈻lP1!Sx1\Z0YmFf~F6 _ ߝfnׯhٸ<|rBԊԃ%|HxYYYbuh8un.TF-xJGLbjsPl!D̫zY&۶.ԕA)1BݑG,R@Z&DʄPS;@N5>iO\W&j[qjٽL!XDZ$2Rr!fOjKOo:p4qP퍠WBrl:eos!)+LhFCI@)IHՃEBUu )=V\,6RAc9J2K;Oc,Ti]O#.ڙ 6 1Ҷ5K-E=*؞d.KINw )cjyJ IHl4a"982o=J*I1"JTh!ZHRDgLvR x l&8) d8_JO-1D|Ű IHExԳ%{ˬomQ߻Q 7H #[.q>ǾݷKC j-u]!d6+7\MSRm{c{{6[[.^d&kkpa v'S9'M IDATdVZfBR[[bel0@G_(&ÑQJ(+ЋD22NL'%fD*,%#DL1J-K"xT" h22c22TVBP"o3DLm "MJ+r,"yh[7@qyG6G˚,/=޴[m2׮o|Y-5y[{/xa'!1Ѩ60ޡVp3JkLq3 Dmq/"dGKBDDHiS9%b\1g*k1BNۓ3E0PАI4LZs|J1ӵ)d]7(. Bdjfk5%qJJC'5BI  PD.)b`d e2uUh"9,6ihT\f@ cKUU蜉1=1/d-Vx]w;o;oc8zAB][lnloMJnv[,{Q 5ѐҐxfUKpN: ϟsny:r ["Ź500TTBƀV+2"w 2ZC 8mJPY pMMu~ PJRĥH%BKფ+Thۂ+KmOtjWD5e2Xk$x2J@?4b}c3.qa%#"!e`>;>준%jsF ȉ#m#B"b )3q7}q% f^Z >v6.\GaKsL?Қh̝sw$N+ھtǘ! /k5)f}4(JP◜e" I% FV;5{kп@mR}qw7~,- 9uv wݿHg mR[è2Lf-ѻ nMez#FPkGB%OG0@$:I">>Q+'L(׵%I3'4 %J%3I9U ߙɀ =!D?(yIA LdeakK"LJX/a Ց {d-,|DE |nȒ 2ȯ, 067+BXFkA΂향Jbt[cu1dʄؙ3oQ ]dPk5a*%$Dھ+.B4S Wd!|O,22JBL($V2Y&|a5RDx鄻u J'//q|]RC휦 *E*F)ɵ,0£>r;| PY"h%QJ!bxhZ d%p.-پȢѫf03q<*\llZ}6;xp|x7ɜg=38oKoul:g^g^x($Go;]Ǐ?B)c_{~ +OsFrbǑ#BlQu7#g"ƀEb\W YH '|N*I31Pkd _ܰd1 @F TihȘP$"YG.9Q`h.r4gB#f1␅fkZ30JT4J> ~s.\TO 3.߭ݺk?_*^/|_wv>ܲQq>g?s_~1\|/},Ip8 =$wރ`U b^w,\0$B*UVŋ6Ĉ*.HNmOTXXD+O\2n\!yQ ĕ`n2 .]N 10O#E*EU74V@55d]XkJ|8db%dŕET(Qslw-#7I*e/*;*/)i/yK=kXМ=ٙUzK((wя=Gz_ɳ/ܳMύ~KKBƎg:<򅃯3cp籚O_=my Bs{bNP leDP6$=R %dn$I"Iֆ;S)$zGFrvF.fnkU馹kwr+#[ HUIҒ4U <63 dg65Xa֖ZjmOJ| Ȃ2YԊQ]3ۙ1^!`i DRG.*J ^Gp]s]y'_4Ͽpt_tiQ>GRrϻ/4E~|/4,+Ё/%4˸r1 B)LU#6J)#  HEqʔXDNL+%I-%2E}e >%IޡU98fBDƚuusF5 }:k!(UN߳1"A*MekXi=úf6oٚ씑<B˖w,uCloV*CG}s*H<}8|xDNqj} 3;6w" LH؞N1J#뀌 HTmlid%1(ORH|1YUKE4҄c_nLtKaDu{,O|O~G1Z/ UΝYQ)%~y~y>;(~lllܣL`>̦+>9:UH)R2="EHMه3ж-€UrfFJSX&Zi2EP/$`1IE&HD+! Ai*45v^WiwD +5&.*#*eX!16m+H*ʃ{iC֊J[?ObՈvp!bD_M]p!`.61@dhL['I.c&fίVtnTz0.]Y]ݼ>kOO?xύٱ˺]Sg8sz/{=fxwңس _o%)$:Om+T\,荶H>x'i*Qv| nƓI1Rkc9gP)!䀱{[݅2lN4w.Gx[O9gL's-!Ms m,8B(zǨ2>P5F3k=·r~%'ȼ0VSrDdӴb)'ƪ,?'ᇿ̯OnwaO:'|Y|Y؃/麎?Zo.a>'OyHhg/ > Vc,mlicOHJ+()dP)E$Ckێ$[ I:R.lRFQDJTRRyYF⚒b"=#"9& ؋`^@$tQ$ؙMYnѸG ɼK%㺢%C$zO<.c\lN'Sn*+Y%g^X޺.߭[zT&t8nC꣝93b2&}dΝk8tiOpa@˯rĞ%l=g*|[tف$,I"*83* setgѹʎsU!l*{,}N]VUA t't{NwDAqAdFG sgŊM۴JN ez\IbRDrQH5mzT(,SlCvԉ pJ#IA-29 ^Z@Gr]% 1 1 1BD>3:v :jtp??Ry-+Vw+jCF#R 'ȣH2qpC:*\Q$hB]%щIL.M͌TjXRT2k N478wqʩʚz{PTއw#9`N:(>]w=4Ft\EEd#AGeqa$`l>fD"0IL$a碄 yh!E!J)\%CULKDEF|@p$TX&k ,e||АoUs9-hjH%Rf}XT2ImbP b4REd]b"T+V9Eu^ǘ[f"وZm;巳QD +X8GCKɫ }NHc8*sQ#@cՖ0*+$:=Đ$6$&V q\`?K`͚dCh(D̘QfӦW2„UE[Yt,#9J% 5kN:lJfŒ69B(жHbHD?}3"P b#o"j@Ð J z-ahXѷ% (/<>4N :ID1(c0Z# CbcVZs0ۢ^GZVM3aGtX:Hxŋ~$r%$W5Ln+0CP(T06=pS204BJC6ėƦG68R p8LE cX|$D"Jmڀʴ>ĠqA ief;̙%qK֭#7Hbi% HX~}*I'xTlLe$p"NN kX^%8H!>`#toȲic-ZH*>Jdټl"ގC6q'qGs%R)u'cA]ȵ}n[\dӂ(i=JULpq864J@h}u\K.6̚5D q,"IT%Rehghch+ xiedpЧI.q K# `\Ko! 9ߧ8D6 A%8rT MCc7a8(H%u*Sh3j#B Nմv7e Rk7tvY>ABLRf!baFFr[ʺSWxkMF*'W0S2PJ{18B bN4J (ҒXKԉDJ0L"y+ ==O@)x~u ظN:s\300Tַ_-L>_裋xPH%A,1N]HSS3=Ԃ05WSfB@Q004B&HCe2G`!1%9hQJ;bE'8u&*(wB5Fj\'|K; R6l:a*- y:Z5)GxC!hMHt!J7yb4^1hk[Qr\_UB IDATmc385fYjc͚F}Q{*Y(%_vMW=hfl1g,>38=pͦL{=A*Eqa`+b%'bJ2\)bɸ>9סZ˃(m4֘T/0Ā25IH☚PMU xgf搞zzϳ628Zs_&`}chi2~|"| ˺u^MяMjZD>cF9.B%Cs>K0X)"pX,硔FL[S#5֤.iBtbR&;Ċt&1rR mϯ" Yh?e/,s9x1rOv:.Ye9]G_w>7(w|N$`g1IB.RQo5:Zoh`TBAbH7uDPB`:f4# ڀm"\1ӣ1g:9.(ainOjbM)(q0X.A ıRJ3DDQR zrhoȦqDFTcK&+.ֈQe=u^ǘM_Y~?ƈWuӦ;o5dV6lh7ޛFykcq"Zok9mn1uS p+qkaɳ-,001e>O.3&LV.6֢10G I!6%FG(E Jiu=0M|Eú Gy͸qeƏ/Ssvx?G}f~jnaQ8Ɨi1j%ue& r ?.k\zXtN&ဴTkZPE mmBYP(*qH) 4ZC%) Q II)P@1hkcJʕ QMbq@|GR((BiڲNb-2x0%#F124g}c 88`\S K'H)RKbb`1Hc Jb 5 ^N-Ʈ=Y:upȡylnƌMH%Y]jԘ9NU`pkZ պM( 3y*Q\)%*ڢ$b E#& 5ZDq]6u0IUQ4(#J7591c#CYF,VNX}M$N(oRX|hp‰9snA5P8MM_-gn+2m[+k"=F*ҪYŦD$;ڟ`;{>m3]I&o+8y?|;nл)~gȥ}~Z-_&DՑT5# \ZX<$k`4sv$I)'& kE! A_ok5X릉Z8\ƧH-1$R4XՆjU\8"+NZ po`&*e0A0PU'uʘ1G>{g=5z<X1;v]bAPEZcsQH0<ģX~sESY k$&/ljcR-(QZ@k6!5kP,2DfpISlm<*hnȱmg&q٥'!]~#$䥤ݾcţţ`=gn5d.[]=Z׷-`?oxJFRNIt\ P}릛P_u- q"THl@-rDH'q֩ຊhrXf8Wr0%I QR ȹӬ*FU]F\$$Ȫ">PqZfT]$ gd{Rpύ<~T.wEz! yEJԁ1qQ…Q74TrX;72{f﷉G@!iC.#I$Z1RbՆL'RaɤYXOVJ] U9.ws ##=ٌG7k,]:Uq?yh_`vtJkfI\yō;mDciTjJ9&!IQ)TPL-wpHGMLbcI0R&11D4R4X57Q c1:jy:oD 2F~^.D}1Nx73ײi|[Q{&:˖Md9`̮r)?ŘD0so05tu3<i$ڒTRm<(&OV¢S"0֒qp$(j 9ښX ,6z+ohĹrճڟːŜ~FN8a3N;>ROS#/ַ.c\x~I38yz=~-ݷ֭|[O 7T*Hf8S# DQHPhH[ʃ!R$pf,u1FCj[ ~[c!#G}904$&!I,֌#KDaxOyP=?q ì_WQ:?.z{^5wBab}smǒ%+^׮kcݵG=}miꃷ;ZnĿ]g,:ҌtXC8^@&ohȢ=;5# 5ҀC*mV"쮛M(B)h(HUC 3\HT$\63])5.xzߤ>rGp?<?3 H)pG>DǑqDdSY1 U*MF30t$Y|p6>#,Tv<32k'X]ObJ2_[^2q!pN?k^e ˖O`Ŋ?b^'l;&{+QqQ,7/?yWNٵ4HбdxX7ZZd(PRoqSA1D[pw+G`m0mĐTb|OC47Tg#2q)WO?8zi$W>]v}^1Z#r)s-A%G1f %8BN,:4.IaM͡sJ'Ƣ %Ht$V"?óوO}z{~14 Zˡ9<4.#<3<6IGg&s+<ͯ='gE R|k;߹gy~b $VG9a,H5 m ) A,@jƲ!IRÔLY1cph4uILkة?+|}1 ᖛ&%ϥy--|Ca;Q-0 Z`p ױfR $ ca H3*HulӶ c 6lmϡs7CQ {HprDZe/K\p\G 8:\uqy{_7qs#8~.p&ԍ|vg,_\|'9Quؒljqdz"E89$/0H"ޥKP^\/( 4-mM>m 5QܔI^{ױtO꫏aSw無ÕW}?~hf_cOy?CVrc@,HR⬄UQR@*rRZW_w>wr\kW6dΝ8~%(k\ż}wroWK;ШQS]8y|pU7~ז-\wQ<ο`9w#S/A]jz~_r?΁3_IXI-%U O7ҋ4/Oߵ+@F  _#BT%Q{}]gj-惸|cwpILDE8ͭi(5 !Ƣk5&Xcp“ kQP!H׀+,*Q嗿O/|Ë8{tJa9.E\9`į=xoTv[Vx]88r57hON꫎aԘg6TWo+o_4W}@Hȏ/B,c~ZD@fw`,*Wk3!֏$ ZL tnįׄױ >q٥'Pzo/Z8 [9眅̞;|'Mccl9Ep!AX& {R Gb&bG͋\!*eͺu)DqUi1wWp˹(^,fg.bɒfè`BGytOdVA숲7k϶bskMg%n:9szguv7\kK~~=x4 ԽYUTF&!$u@ƄADeL䋤[w 6c~q|/ KQj_.z&NOcr ~x=ąx^6@81&|s0B K6<\W;VrFq@(A #@QRwYl2_xKkQ \y{4I'm߿KLˏq'OnC5ۃK'pU󥋟ebgvC,[y'_`\[˞=BbbE\i$ Z4!J$43BgKh. q d2:['YЖh(Hw+k}|cz&?qoshYCOM}_pRT QL җFG<Ŧ<m4vp\A.gima5m {# e'N=:f">w%]Ǯ&.7zƷ3+n:/~7X7mM5 IDATϒ{.T=t$L{HGDT.H$ئ6a%X7WZZhJ[%aL">:v8}:b_0eu3<<-ڗ8~sTɉcCh2Ԫe1X& (*2Q!$gG6-8D * &RWnlzld<9C| .돿.xc.f^Vg&aC+bot*e`v#"B x+_ \)߽+8 /͛ꪣʣO~<4KtF2}40(w<&()Љ!1RY-=`xPPvA2oڴ糟0 7Æ |x9~#ιuN='?sm1" 3VtLXldؔzS+lOkN:a/*$#qJHĎ;A~C@R'I>w+Ɏn'AKkZG?z'M,Y=Ϊc7(`FyaP}!I36-*$R:&EcE`%290~x/~yp?~N;kcCą-CJ~d*e>wCz1to+o|ۯE΢O >0{L&pՕ.+VXo~ : ٶ 74+Zs(a_ )%a(!ZD#&{~. ؈\E_\]wΡkc.uC9cw}'?Nww;+V`) tn!F&|z A l&k4!( HWPe ̚}Q(TyIpá_gNJr4_Vhb=&^g ӹu33gNS~No\s1>^{渎]j+~|#_On]7]ݽ{]M{ˌi4fLm ?FOMkڥXaw:on|OG>-[Zx=h-XK:_40=xf>|:,[6>ywS9s榛axu7N$,!(2Gr󥋗rճn-v|+墋MAPnHKGL&`AuL! T8FO1`WgeZ**@`;ַu!>w}nsOQXx2OaP@/Dzo0jէ䉂,q#L e͖&C7ԈyS{0UXݒmI.2 z1\ȽHB7{ ! nظlY.%YM93}4Y,K>9{朽W=_k9%.hO=Ͷm'sy| RH) sTzSJ4>g¿|k o{ctvIeӂj;?7I3C:m~xK0F#D$$,r0"d3-[@T“wwy/S$<勘=gcR=_ L?~L&g9T2Ruǿ$^9r ?G?1|Vqhko"}(˜0Sܹ3K'fΚ @\?÷$qSF$rNr.fs q%#P4eh\s.X@6CIkfdӌ߄r0A(DQԊXd]9C-7橧>~|kWK2Y\we E6mqP{YLяm((uX*f̘o﹇ cuPʕKyo];=} ;WY"}AΤSk'nj74ırA"q|?\P =J)G.m-!$$4 :Abu'`DWoW|mB#_=?ιg{y<|>эtuNl%2?_пDAxC@Fyvws뭿Ld?g8#xB32E lؐQ; )TbYfj%'F5g7lظbdgSU cEF\t^`=-[Xrjܴ[nW?Wa Ϸn,x`!tw?@ݫ308XZ5"6fx-T5Ҥ1NcYFQ-gǎv@Ϻc{o}kB9HfpxfQUطib:rZNEDFP`- D`(&Brm4_'oq?y_u2$=86~|;sh-K_ZP%HTCyE|v?6zd$G-oy-ܿ6yN')0&B{h;vtߟSr .q7ŧ\-B)BXҷW5.Sevq0q04wd)P/J$R8n@4lfb̧5`Mrdb^}ƳK[n×1!#Xs1{044v?SOMGJ?,ݶcЈ)ildr4a8<~#O</&o $9_6m9] 4ǜ~dYw\g?ճsb҉|=ӹkݶ =\y ߓ|z Fkt$ɤҤ\ɾ}9kU锽:,E0(!!Ӥ" mTPzNDHeHeOP7drcB@(NGrr>t@vVr oznk&<č7yׯ|`_m)/\˿O~ӻ)=<~AB25Mh;~_kx[_ǥ^Hkk3&(Gy-'$LW25*Vp;Ivg :j }g6lhᒕ#qPQW ӦU'橧(LF[ϬZˁaGv`K$Rmd$:2,fYBlKu3CP'I)4LJji*~Qk? 1 T|#:Ra!&m10:c3X>{޻k%<ĂsRm۞깟xb&L>2<k.橧6se,P /C>S~R\@b6WGL1},)= ?A>'vӼ7h 0z.D`$031٣TrϺ^f{޽9%v__S4CϤ#S{赩SL_Tk \fTjM3} A%HH"DG 41S~m/RH)H% f{|3v\$_L=7 Iy+/fݺggyl> >r`W;b׮\|zuqY9yV*o*^qϜ%IգؾR2 ag˓8ih:'8k̘YR]MW\1t̛Wdٲ1Ɲ;ww^޷Wl.xk٥BB룭!NST}K>M1jfȔ=PLb 746X1Nw M߷ԩZ`6|L>ؓ^w/ed2բsJ)VZLL4wm?z5{ec~ z5ӧu?j`ڹ@r ˗/UZOYbQ2N\s!^NqAʩB"GIpg^qk6n?[xXnw\#ז[a޼j:굩YF=;GwnmnZ MH 22.b4CX&cbJs c })g l ۉ_xj#m_,eÆd"h{H& Α fS`|xv/XnÏ~t0VWx-ߦy }ܹ3X0ٴy;{vu7Vw 3)L7%ɆrOoeժe$q7g;08|DY|,ݶlʆS]n;Py,*MM>28!ukG\5D04;&߁j CMƪ=EjrOb$ R$(=x;JIfߜ_UI;IYct:8Od|~qCɂ T6GLu cw͟F~ٶuozM|;?c峼W;㊣{vgL۶RL+֬` l~B!9, OpLض-9lxv.b?kW! پ~1O}){{LjբlLOO(95M(0hd8 q0-Sbl=3 !֬_xK+n&()&:佄H}PJ1sV{&qy0?Y޿?׿y;A…s׿{{~qzz:GyuG즦鴋R~ΛYBr Ȼ ?Nyر[n!i Opذ[o~zYq_#ןY9O}2.e]_$I4Ak2/xy<[*vd~6/'Ky3z{<׿v qJ@Iv|BIcL-LQS^L_x$Gf \οۏx%ϒͤTI$$f̜ewsCiz;OtmlHkk>ǀ\$VFG3 8u[3ݶ#,[֟4Y#mБ·~y~w>RHb=I_kʼn"r0 ZG]~_yy^L!1,#\}M?\R1QKSqͣ>kV9A!$a$ё$xv|g!duCV\T7:)?0LWW{22^}n|&AIOw'R$03 `ÆV+?]GC%I[ٙR 0Fc 45innk7;ӟ?F_n[6ޜ9%u6k;y-c]x.{*7U$t/ZxX]z۷?9:lJt苵`ۻxb^FF I OpضOzq)aN1 BH#q]u<+W>em+_^SOw&T4 s`3Iޏ_urt%2+xC=ɻv0~o{ov/PpǦ[+)m泏01X3=L?ych6mXnCҡǀ_Z\ 9N1bx6 Pp_{7gw󋻖&S%xyAH!A) eIǥR.ݽe=C6Wqhn\*DPGo~^ʤ/O%G|?sOIB2 s/ˇ?t ^߯8ϰnF\sqBumOeK7\;/~>\Z{L$' 9|3l.b鲁a^ F jhPw7=߿]^ޞ̘Cg{7TL&eӒoŊ1Qlݚx$cciD[9sڜt1GqU(ujo8Λ$ghYÆg b$'gg.aa'FY† $p0D~RXMƾvyvq½}5}k3wR8CCDZЧ)nz>~Iw&8f\+o~Y4__Aۡc9Vc/慛&c` Qd0FbYc:!'[~ȿ_|uwة OruI_6G_XۘS~3g m`i͡A(hm2A/\3Bq: 7278/$RQ1&ɿyeڽcC /_DgGwq[lDɑd_#iϘ|= ! Ah#XXkb n?lan0QD,c!Q`(ĥmoDBU<2t$2Ưs+P,URLnCrelЋ%KPj߿7&'δ|2&6An^FXD)iSyiЌӄ ,k( B0<*% p%sp\҄GWW )@) m(e|xj#r7e+=DORhCdSl\I\HR]7 ^Zs XqS8C*ZP(a& (RVLfЊǢ98\$$<6f2 Xf~}-7uat6oV;O=dxr0 hjqho͊\|/mׯcpm ߯Ǻu)VgDUFyrHp\xu\ֵ׏;0~PWё\+-(u$m zJcoB#{3~ص%Kyb]iQdtF˖%(wAGTMgp^N\O@ V|J $=gDZ֋Ui{4Z[|Vfժm3[f.vn'}w@#ĘY*,]Z`ƌ},^ΝcH $aɒ$ 3ϙo|/rydL$nX!)BtT1U)V|?#ɤh/qf7xA>5aRf386,\8zITe{Mϫ54Iww3fv3sZ+==9)0Py]]A"q]k2h4&̥QIh{{hRR8l6!bm H)H,ۚ1͊ӱ[3h[C;5?,d9#k>Xi JQθ4]l5lǢa|\&źuOgw?Q"jHimPB"DGa\~! 7J|)OLIHxq{νNDZ5 Npc3yvng6kep0hpgє1}KֹBfn|~lG((W+h!s47g0*kz|/8u B: Hpb}| xK[xѦgFRl6Eש&f\ ){=K5xab ERRlFd\ҹ>l;8cb+daa:dR#⠜C#:n7>ļ1ֲpܸDal˦eƧ^)(\`7[\*V_RCkk mm(+z7ՌmٌFqڰ \kU/E88fn |Ɗ>՚}PB9B A[[; ӒK10T`}DWw ҲKd%f1GET5_Q[r nx+ǫ(, ϯ8ys̜B6#CҭȰN8FJFmÀ%@`bx:s\BOW;9E[b)1F.ZQdTlKe^@&2g~cA0Ќ@9*^߂)f`LTkus63{)N_AJ,ec&U O`~ ٰ [pyJ̛_ W=K[[ 514gx8p ahmYLw]]EO@k}(mq}2g\B_0}F3gR.{)@k&㸶"ʕR98,ʼnB0)$e93gThJ}}(_oO72/X#z1(7mb亂JєbYi̙Eطw/Rl6,ZLCG{Lɤ38ft tHEOT\^ujR4Ejgtt(ߋ(hiP.UÀ0 Z# ( PMIww l/#dXy*Z>J'h#RuBaZsi~DZ){Zx QMFTV0E [Ff1:ab"Dxr)E21Vs\|#J2L'hjhiRJssbe` C__۲Yٓab²%tZ@O0WK܆:Qd2i,Kafb&@8\,[6Dm;x(!8JvB6 NE>v+~= DXG LkFm 2o hiڒ߯S(=+W1R`݌C"j̟;`[t%$^=/$ (K JɦҮʋP$:4:00TJ9! #IV|zH!16]UƋYcJ 9ZgXt9Z[4dRgQ(N Qm_DSH k td:BAdyiCttMR|"-1(LTCYT[AWCX.z{Rjϯcq ^p]lű$6El*H9zx: Q!e ױ!kDDY)Yp6TscPqB,K8!JRTlera|ܦ02^ٱ=X;.#)|?7¶J){5HPԪUle{ut`)E- DA08DJ/MI7|@OK$F1Ńy@pԜ4kGf6NXM}yDOKq)zxx$Z, 36\'g˳;/&Ύ94ds9-=ؖqcHdLz:46Z [v69kuui"qAkڛ45py?0OEdmAűl,)Lh i5wa$ʹVbB!պT*UK Ayq!<Ez Tk.&$>!0F A4Qc :'?Q\P7rkKϧW|6Bj0 &X*O%FTdk oFt&vryye4NP0{ҌGY!7*_73;u(7iZВI#F&D71<\dێ1K)J*̘IKk3ӻ̞щ""JՄ_Fa)?1aJ (B2 QD!Qif۾,]'Lڊ ؖmض4BYhgXJb%HjLJ̝ك1PGt7ds) wuO)Uj޽BTʦ5?@mMd CS|ZXAHqd?OHx@VEX{RBgO+, W$ \sT31gp\ɲei5ܔ–nɼ l,F(ʕ2)bt'w?cg\zMq6kmhgBvMHKKe g9x>k<̜`P84j(|&{8EZGY9s(ls{in͒˹(˦T|B8LY5ʕ:arm?+3^𱝸-||0X6NZ%۲t6:ލP*x}C K\|]w+.o[6@YcAjϬ9ihX`5Xf Q!XVvlTRJl6A(k_j>8XI֚ 6p€02Q<祒((0"HGDQTqC axFbf+W~!^ֆ ig0s\$ԂigR8maa25mǶB!J ,Ʋ|idLuj ٰM)'4LnHKY hʚ56FRD2,ێBmXMXlYLTu8a2bFWu302#On$8 bO0#B b\b3Y!5)eF WSL1Ѝ6DʐKBccjgX\ זDK=iIiL{-F*+.IRrm;;e,i+)iMИ˾Q<|'t3`4eB`6lv1ZgVOf/GX6c <4\@8O<={†&[ϰ0! 0sTx5xfp@iY%Kgl|ju#$RZ!by47"a3FFȥ45I,Me*'&ˆ :~c6 qa3+02b1nE $Ƅ#(D(IS.MFӻېBLV#؍1ޞ<As>OW{#u)$&R)y E۱-p(BlV ZjP IDATZH>c8p-%E :6=4޽l&I) %J8i?T=L&_q ˆz=bX%۔X]]m Jg- q4H}L[s .2 {frQ6q/\E0110\*UT&C^\CqF `tZ5Uq&:DHRN:6tsnd-T<KY!1](+DCzHUZ=&^""{DV-#x^@EDi/08\!BYMy,Db€ȫQ.WpW3l,Xv] pmGRjq]O5(BbD!FJPB d\22qT HR!F](6ѱr<O%B "H#KZq&#(DHR(lK)ww0jΓRc)RSP!A՘;gM,K7N9#1 2Sie쐗oF CKJ/,!6) K&h4&*+;sы7%hbQQs}gPRXkUTN" dP +-@XLζ m,yg!dJgCIѱ]GB>Z:*2h 6hcBFd H|=ep!B"o{rf u27Ɛc`ҶrmD1<8i:=wCO-ГK}yNZgk3tfVkQW$\H2cˬdO"/zAiQ,(e ȁ@e+gdbHBS޻D A)Q,lfiP!2z1nO'snިx ׮_gg=Ĥ"l,|L mQ A)F)|H(ei[0֢R7 9Y*kP|`,h1JB$˒YkɨƐ1( 8jtqf,<] NΌR4)$tr"PΗ\HTș#n߼Ns]5Ȥ6>@g,hIcE)Em6b:VSh#9g25e1Ǒ=0|]D֊V$%N"JR[)Z^( )ݚ"8mCtl6g_\1k{_$UGMפɄrxA?Af[XiJXJcijb\Skl6[cs,d01Ũ7_;q1YKV&-36.Hb+͓Gi[am?:rRg2 C;**KNSÃ3ܸ ͫ[彾:eU2hwy//1]vsX_>ٴ-+X# lFD(kyL5[\VTu ZYá`~m!aPICn2k[lXgLf(*KᜡX =]LJlrd]p$Wc5CȄd[lwnpkl0%0E<bIOiKI 2*[SXJ@RҀ ӾI>R!RŏsnSY$BJ}r'O)p+o.aÖlǁ?~IeI%L2~60t燤G#M#2SK:X+=1'ڢBačFL?%\'D{l R$uY Qu)"$F(IR c$àIZcm AaхaIȉ* )18{} h0TD-LӦ\ i#\"O1b"F]|b,sH"HcYWԞ:)Fi%Zr"dj%l;)yG圎$DZ9@$g.!kPdK!3 {L*%v[V\#jAZq.`a\2;X0kjŌGqtr7}rfb#O@yO- OV2Տ^!'kb~0g61VGŻQFj{V͘LSx3׾IS7EwZЪ@#/JML=tbQg kd˜KT(!rv:a|us aFK1B-f cxz3PMʲ>뺚;6_5_YnAS+7җ~JDfc XAJ MX-idpx0pJ5& ?|9@'b&i(6(mޣmH)`\Yi =GC4Vz;bѲrZҤ⢇͜cg#0{1ZP\D7\dzrz!Eo 8R7F֛ 5D/@Yu]~t=?|%?]rrrݻь٤f\b`b&G-G!9w_z=1لbfٰR.$s3fd-]5Zk bߌUg!vgK(E‘ ,_hIh*̸RHYa#q\#/b|y?/쐏|o\g@N :İqtԶ*1Jn<^IZA6hk$s ;brB\}S#,qxA]{@DЦBg:cte*q 8&tbONOy}T3 3De-VC]Ac5zoN^E)HJ}8sՓa{D)1rΑ\JEkC.U]Ez|e ]ۉ  n{Rm"Nhs9g~(֊7C+b]TuJ*eWז wp5Gˋ\_Tܸy55؎e`]ך7ܾ}w7st5c}?SQNO7aq~~E/8X`m )If ]ș,_ys||r TlVf ?ǃ,&|b<ę-Ukq 'F1Enݾwy8XwC7=bbV4}e_%^w]Oӏ6,C?‹/PYCb놶6l7WgH?8b !~e?dZT]wG٬̤jy"mSp1; n]`֙iJ2C5.{ /lY~3Tm(mh"AVjvIt=u3%7rMni:dRDd8$L;"/qo)IPCr!m 3NcFۖ]bL $9$`. bv,#քut5p0O=~hM5 C`12'ܼv!Kj wC8XL+#>|3h1ƵcVRwdbyʌJH۝v'P%)Ga8dIdOc!aOXόm+~hK)-l$"8؏\^ Wk!][ʘ5K-4+jمM4n,U/Y4$bzT0/g n9%n#5`Uԗ\$/dلtw|G+flHƂ5F[K "e!g w{10.Η̦3~E5D|ȄP!3}$b08RHTF,ɴgf(3A"]ĘE!g9O|pyĨcVܔ]3'a.WKL=V΍x8?YXOHfNd-$VgyOWbVEaCyp߯ۏe.f=b1WO}Nxǜ=0^y9>ٽ,/Ωlw?#./ ݡ&7o`e,Mж@t7Ԅ~T?7ׯqv~ISOIǿ7_6+.c6lS1F0{3"UI$a SwE[ Z=qwݾ)x09fR}VPՠ1VS[`5+B`l Hcu0L9!+Nfs90 ÊG,DWĬI9kDĘgBf2sM]EUW Z\nh|g_r=`뚮:1\Ceb𜞟qzvNW[ LJܾyq釁MTMBkHBjXO#J1%[FTx'd p!@̘(d5hC l{659=;gpapݔJ:MǸ'7#>?ounT ]]aUmגp!HJ׵(-z7`mP9QYޣ!Lp K䇻$r\Y4h%D єt%I}]|gʠɋEג"SM]7fS9]۲Zo8={o8:*Xʲ5MV]Չ2hh0VHE.>u%_傖T>z4(ñ422PKSlJvKiM8:1,!4y:*#ϮƐsf ? Uҵ-dBJS O ѱےqYLE'd{$nh5ѺmKIa001چ%lu_z |a:u\{G6`3/<8p>`[rc(29YIײLn*>+E}D'|C`gSPHYlx)$bHk!$-<ucx%(hIF|ʺ,P$ַdw}>W9:>ͦ\? V~EX9t M'ym47o\cZ[ ?n@N!0#v8>/ڧ_ɓK65wgOl{/]g?2Ӯ y]FnB`]Sܹ捎huEN;FOӯ7$70n{G6A+tVwԓ)HґՖɴk}=:Ú|^? _x~|˘$F FZKaUM6ܾמ/ݥmbKiJN|#Oι\"yEejȆg9Bpb2#EIPȮNd]a-!gM=#4-Z޻T$FGܕ3e ޯUJjΡLSK1'*"8åH64"$kM2\dcIe^@]5` g]"bVLŬ;B)wWntKۺFɼŧ$iQ(%ZdTK"%%Jk꺦Z[ 87H,zϬDڣtQ$G) TvUQ[kΊZWl2%S&k7h__Oӹ)J-˾HܴO)3 lvpNt=ӮÖhF2.6 F"K敿"]y0Tا$Gly-N֒A^/;9ӶɌt|6m[V|bmHdbUuEmjck1b4. r'_Hc?pT U\~^>IZR=sY~D>:\ n3Z vٗ\av QU7EX+mK M->xH>ILQXhdsGU:xU1$#w/x2dȬD/31\^y'{RU;,/.ݯ!u71o/z劋d[c?n}Z}.3-?g9Ԟs*%2ͥ&-IK[VL GG> nV@+ c1gǭ玹utA~㽣ΧO$N%U[~>'|>aMϣr >o7xh娭A?;|ߥ y+Pրpy]wypAFp.S={t'^í 789`q2)LG"N}ϣۆ{@ws3bXKm+tUjwB_1o @)s[S/}#c`Zb=onz* TJsyqp q]SǏiJ;l6b9 G~ HeH51i[L&u7_aY?ӬӡKF?sqif*K7gk;&z=PՖ8~Ĥc쳚cʘveN||qZPFtbYd)]*@JkLUɡ*FA O a  ]2c*ePVǼBb#9ݞxōe,`xv!ə-f-ʻ!o얩+K7o (躚̤&s|m^}GS><9ƈT2J{nzf&JӚcWLe饶w}ɾ k C?Ҷ-Itb/+k1~}%>s$dŶ_y//~G~/~=_ayCR4"մkl8ۑlfDN GGsڱ^oH@u"1m7A7k{>=ϧ?2j s<8b;:f Lɩ=:>`@f~+pzË/9ak+3fVV9l[ڮa[zB;vVe=>qQUbpͺ'fŊmӟue~󥘬!zYO*-r}gO~w~77q/vӔK%F>Wu-Ϗż") ÖX(5ؖf~l(m!z(͊mZT"hCR!H*}O(ErGۓ'-1Fa iZCek)ؐ}BlZMJIyI9`Ү=_vv挀YΙIס+Cwt9r('bg.UJ hňv@UZޗeJ](4ZeQꙝ< Uy>xTaS1JM$Q弇 gYsZ\nɴ7[P׭1z@ݲ^.nx/QzF/h& #*yQWZz։wg ot] JI, H#mSKR5OkģRˤrUU9r@W$"+Ϧhf`I4\Qx<:_JvUamе )vhUa{wX#O/7urh1zئe{LB$ˊѰzbN[OL`\uV9&ӎ_ QXY+uO8%KVnB$ rxQ_V!l )3JY~&/|cG)R5o,/l ەd(ӔRb~_w׸{OpDɯw1?Ou6=S\bIFΤhf1;-z%JKل%爪;Lg }~ AU $Wb\ ]k ʲ#`bI1U&@4r.E]JJS. 6꘮jV1Ƣc0eVb iNN2wc9-q 藘q;l+Q3o9+_pU(0E LJ 䓄e2騬%"(YG^kklQ̈28ryI5#V 6uE]smڶ#ðe82#)G&Nш&{Vhi Cn;%Кs7r*S7nj*R2aئªL[[jKӵc={;'IJcz%:ied iж*u0uC]7K O m=\ܧ(%׺ެu9P!Gњٌ8_6Nږ"RTU-ם4K1H(yoڌI;q2lg4-7!$Ce9ɸqOۑa\§;p{dxB#?mج=H6=1@af zƑR"̤kYgp|mwop7n1OfU88bMl֜oWl:֬%N*]zb9ld3MsLfޠTfȏZ[Ct6c5:s!):RnZm0Jl.9ngZf\`{f 6K>(v W+%f *W.88:9fqp@6 zs; 362?h#G=*n'H7D>@yu Z *[죶Sa'%׋R)KU$(D!A4Ey=ʋ^?kMa6\`2=j0z.rt|r0LӃ98Z)FHI1:_A2b7Us7 hq @Ec'f"|.+ĤYoz.ϖ]#ٚŊqtc^#گ,o~sO]6˝@ʣTݜ~:o`&f޺1em[a+y߻ZeT 튤%Bi)uu[XF 3) g ]I'0:e+t;d)H)HU0 AXE[Yr}|lAuQNEn@[q(CH`2(U0K>bN8$&J6u*E& ( Lm!IʮPF\-,gY@8 1BR2Re-Եѣ 9k1h2F(# 50$M)$u],0DB*Uw()5c}:NQug8>@ %hͶCM]UXS:^[9<]= >Pk>*" ߃+4,g@xAܔg>2LJJsٴģGi-pVE"͖2T|SNOOA+6 KQe=r\ c-fܼ6'IU͸u@T.:dFA!# gGRiנMKߓ{B9V*&|CyR^ ) S@#mk%:лH;l7КtB~C,*K>F.i/N; s')K? $A`gXm׫΢;vtUb6,AR2p)31JjCi ^IJK1?|66.Kg^/[ɐ]b.frޱ8ŊZ?:4.`_W?WۿF"UH+Ti+091_LN*f i,V+L]ZRr!Rג/-FѦ$ZŪ(q?(H/ZS~PWIɐ{OÌY@d:#8O;їv?)ArLɓ3X1dgZiZP]:u)đ%9VQԼ#2^ \IáI+g%RaLIqҤ@hDpb*Z)b"DIIU#gwZ QM&we > 8/D\qĕDe->$}r )1t/Ee *SW3k[{*cW=;`L JJr% l1U])![Ҩ$R=dJbDd/YD25{7tvXr(Ғ*(^)BИA)]%$턀neXݳ$H9UeW;3@N(GI11t` pγUSl9z҆Ã98"sfGRAuU&Y{ g,(?B:?+$(+Hy#_gugn޼Zg٬m;윗_k}t]C]1#1<wppr4c lg1FL82-8XDaj,)[lدldeڙ<0It1$bΏ冧knB֊)ljUHir{a:i50X^{Lku<1'IMbs`X=Q"}+匮*#UδmUں,!Zf3 @]@o5NZ;&mMYӖaJf>)k ZB%T(`4itšmˁ!1NY7Lb0jD;Lx~SO$7;tu'7nr~~j^a [~E) cYK9.ZKV %"s0iHF֠`R a,)G6ctXqȌ12:Ic@[MY]G>ucJT)j{N_{g\\^C$E*_=^okKVK"+{z_G9lQZQuSq|z?rp8i| Un\R^(='ʏ;daJŔ"垜X]\#:¸HҒ\ :( C)0Z]ХdgݰMUmX"٢4u ZӴ:ѡ&q>SP4*vѣu]LP (+)%rl5]iN/;SS䮎VHgrPW&D I\h! MH{7i ;k.I8o!HuXcp4Z:AGiU6)m >"ppOWEt↬$X+CVFFuMVW 81RuܟM;rLTཧR`l$BqCj)4i•sy-TJ-67nF[E)wJ}h(ٷڂL#>b 4Re V"4l%s*Pkok[g=472"r{`F4 H#L0 b`a [i\fea++GmO1Y*WJeܸqg75UZ%dXU3щԧj14PZ!?5RC*M>/I! %/2,$@g\Qd-,5%|̳lSkaoMLis* c.t YVԱ4bڜV\ƌ6y/-<55 } R4;s^~7p?e>)-RʋOcI*wݳȥ'\^lȹon,[T꺅5khw[˭G[] ?IW3M[>XZ<+UK=}?A<!(F4+8gX?Sr;Z]ϛox |)¯0{R3>#L+c]5:a<=;quS`q)qTnp $Lj%8fv7Ty.0QӬDӤPooy8dJ6: T\r%3^F6.=_gϿ۞ׯ fV8ӌ%t.F...q_}ζyxeZ8ڗ~m/|ʯ N'r9"SpւZ244gIrb3Lk2!5al[DHknkt^E὜@tve;#^Cbs؏l-o;J'BJHjv +M5g<wk%nϢMU:I,gAbV b8d0(D R ő؉Od4ebrT 5R@i`Zѳ@6m-\1 Vu`GKtJ(e.EI/[4Ʒd|tDžA.t^ȼ6hr0!ň4#U_fn,B0-tމJ53 Qnh}x Z0.SVc4o~C)QW5&%P1s!%=tLӈi DLyŶ]浭[Va.sRT;:u\(-Q%7޳~}lNy6Gb\gff)MPF5r.R(Qzv{j*Ze1KiG5Dڥ[yl6L9QfidcN6hV;E+3T:lExzr=f%˖AT B| V2s-/%@"lJE=}^|v;闟cN |kWq<lRǙGWWGZL㑮(5[wh8IW5hK!Rщ sA >MHz4 R˥+2.q(@祈s!CV0IL5dJY{Il7:^geZpA '8k-~T ~6lI`\:54A` &puy%1V9-͝W׹u\MQ_I8t M83NGlJ0'5x =P^hsyE"}{ꊜgfuO$ .aO3e 1Rj8%TiYn/Vqq<|3>y|gqi`O;ěQ"'Ԛ)5Ŏ.Xh oSJ9+!bsV5H)Piq ~<tkaą^{b耯{=ެXc 9o}>~3~s?7fe޼{a9Ιq5 R< 1)JPt*k"1V3d;΅\2ֱ-ralh7Ր+݁ɊhX36 1QD0`=iu" {{\k#,q<,eX9 2zjT"$'s8(%s1N?sV((uE{j4M M@[$ɩ]) R@ȢThK W"7hㄵ+,E buKe Jn"Zdm[Gー$+Ih4*YƨdP[-Բ#v7 }9~oUp6k_2OgLxmF8҄J(Rv[&)lI0kt,V(ެ Yit[eFs04֪zϚՒ+/5]7#E7NTRӻXi{5ق3DVd"(!ĊIU6NۤqHҴTL^ɸY7a}5 < He[v.Fuf\ a)e5G7I]Ѝ%%˪=, K>i~808x~'?5.1s3s%d|o{rux5/ow\_ "IB~$F `#9:4tG[K eT+xEO8k 9uҡNy7bRikiiIkӷ3^}Cxg!N`HiÎ2WWjr<B33߼c< Æ;qpc!QnS.2k1vU\QL1onDX8'ѝ:gZ jNY[Ѥ&՚M8ȇmEl :+g8խ0H I){е{A0V`GD[?hr\gC"K%MiM)c̽ vb }O5g@RZ(U>ζk sXu̹pFry$.PkQ9Q yzsM 2GJl[A5E|ER63t"Qquȩ0Gjkt!vG䵋.b{&Q&pg5(a]PB@V$!M8a2 }LUƸʠЋښadO+gB54B:ǧϟ٫W } ^LF$ܘK!v}S/9>~/s7xx?lj_9n8x$;^|&ZI Q6TdyVr1RY]8&R.R߇Gu#}'AA!0N=^|5BЪf\99;OG< LN;;B&o-}/%=!g) $5:U5^5lɚx cb\eZ5Nm'U_*n7(M"x&L=B(!嬆>ߤJI(g"K YN~%grC1l.W"ikӄ1;&5igE:\$ a59׿?˜6*[)rP 7YxSk,E y5N\HYUE1'P]b֓͠a5g%[k(͐J6)m4립/ZXj]1,ΟKV 3?4[[V+k0Nνz5DYRwMI7̤ϝȥ_ssx{Ӵ0*cTdxel2!Re1V IY1'١ֈk935Lf"΅Ͼx Fea`<Sڒa?%ĀJe&~g?yǦU/1\t'rf~`G}&xd4񅞳;E"Tbo~W`~4 DjYu2! uԚ#8sҕi(t5O [e2%v{QVaW@Q&it: l[h|.HsŎ.F@R\*nHr{wCEu *S4YYRIl aݒvJ2p}eU&9ަЩtIV+c i*P2 'jGj.+÷jH`'nHsZ}%fȩpw{Ǹ݈46ݻw;`a{qͰrqqA=}` n YyÞÁ)n}%o3Ny|5"MjAE9ʘnbV3F(hU0VҪPUXNR QO}WOn.H)S|h8)ȖqO/<<}Lu+1/q/'n_ӿO݇|UvAxw-bg>"8L#Ht:Kqybs'a]] 5Ga^lrרi348'TIF.L_ ?a=h9IX(eo̠S{GT%,WAݎ'tSiԜhR[ 0%'565)7,6|x̒W `g n-|5jᘷf8类LSe=+`;7zU ӰOI%Lrv)| (s2 Kosl3w?ۛujհN:}>v!qE3"'*EhYL@uiR 7SNgKmm 4߹OEF^ nf4^8(`~@SZ^lZO޹yW]=V՘me#~ mXLF9b`F4& 6$3dXC)ymdh%\Xd:Sri|mJMU(`#kϋwd笧>`1L[$D\_?#0sl/ps{Ǜ;"pewFKK%CƎ (.#snBd)E.[Fc~oסT=WxoVBO NQ4k0EhxJk)kmЉ:םI\<).x)ډ8EnNA(0X ֧la6i-Hm%⼝hۉ+^OF[IK^~"1, =SOd]u H9ʺy(H2vo˰6w%p5s:ULJh.N̚jOē9f%8YĂ^usfon$r5iSUF_FLB`EQSH]̲I8㻜qcdcl]TX Z"RN_N"V9kj=5zUX \~Fy # ImT j֭bf1ʀa Mq^hNu5̳K-&&3*=Y޼obʉ^ ͛WT6}ϓO%6QOSVx}ƨ ]RO575BJԍL*en.ɻ9gQ>3QA;n#ƺYC-DARI ʨ[VW)SV4]%KgMeŞS>$SEIšu-4#|qփb[*M85$]qFu2Q2$r'|`p*"f̊!XGSWaIM>֡NalAk FLF_]]jY`!׼YkkH* ڪk-@^0V*ԓ̜_ Sdlk2 1:r0_eY&}mib\t.YNѦKI)/]9g/z<ԄkBPSMM+?f.i 8u2L\ۺZM)CjiٶB&+X%8N SǸs-:kL(E Ē3IҴ"'hWd꼄G\@MkD3J-ͪQScZoi3J5 V4*&uZ'Q%7ZM& aVRA++μJ7hU1jfüd"r^W 0հ RʢchhxICW8N;LCÅLR0 K&7e ⼗C:J(mZEfS+ eW1$8;Z9l 畹k0^\,z ґQQkji1#JA5MׯݵSVJER;֘ue {6 JN6^uE')ƒS#Ԋbl@9'xT!4μ|1x./xanqo`q1ˍ EOay|g?(1 =1bpck>ќƒYPJ81&dI dA?7yCZ8>Z&D|ԅIn+:Hs쯤$cv4=@Gǡ?aT!y?(<1?"4ì8Ҭ:sΌky>C5_L*_9Qq29}wxC71#tb%WLSy?!) kBXl5>Z&,l.cm y]e|J,l&_ؒ^uϨawD%ת}v$f]Mg3.TV|ñ4 ")NcYke/DyTߢ7֮k-%%7|cO S2I$Q/8k(c^e2ֈϫg8hCyfŠ)CEck*9ZmL9Qcwee9Bpzw`<}1D+A}%=/>|/WG~W-Xs&aIKБ6M~ "39 ;Kv:Hs~jf[L!$?>'ȋ \9/<8v: Wh riuT0ŀNngO\b0+%dNX i[Jr J0nVBY f?MJB)jnseuR[/8IiN.'rmꮶ_fNW%ķ$-V"YBFQl*ŚHGpdҵҖ9/gRA-#% ,֋?6)"DYHj# 4Y&kI c=a/@cdNTc.2g ՐaNd ӏQJc1wV\My(BI 4ϲT,(jc$n6r<2M'=:[W>J@AUW+v NnhUhb3f{ dAs/[)㫡Fq,̛w|}݁b߱ˋ &04d3V?GJ D&ɕ5?onxsJ!g_ IDATR${}4&#Ey˛7pcƽ7l3 xI47]Ln K({^V f5fYi'kԺnUJDzfΤ'my?WkH9+S嶶Vf1#f9gJmL%Ѫ!HC  2*S4+wz41-c93}?PjVCsͽluj y1Gȥr=\ Nt+R2katPR)UL\蟫$Zݤho%ϻ1x )!Bss*pc:ϣСȰLΙTJoUS1-_||q,Q5X..q1'Yp|s'bqʚE@5쪇`ʙu+֚4 W-3֏U/Iv DiI nՓ-\I:udsVU炦i>i0te*_f-6e.)v'::6jFjI&Z!9<兰bU.)!^Y$NW0Y]'58qsu*qI9Qrj  6t ⮏cդu(R[r"4pb+]҅UV*ʰP\RxځhIS"L?=ISi^jNCeK'.a@Q)$Ie*>Dv/DMOc;j{ a]9)uRZ2X:>x1-Ӕ%Zq:|kBxUb_R5ةɪR"]0|䣼0} Ey|^3OikZO9wv+fg;t2Sq7.6<lM|yx8zO] op-@F+7v5(VLs[6}d~K'/61a[=޿ú !>(yC)vI-zAZrR7 5䳰fnk g 0fa=5$f,:Xg'" kt[du2X"Z(ol a>7:m?07d3}%,`|42k*(*'l#jC#ތX7sG=`݈s{?݈u? q/F!͗%%oK+RyfIVjd\&M.Cv-<7Yn8)XR`+]p[)M(?UCݼڔ%v;#hY={kV7j08MeU I;4gU/hڴ̋t40'VJe ㌵qLNs' 5=`C<}$ל+z|o~QtE~{gMKRO)ة̬^ *eWXu}/ /u DyUInZ9ZtYeN#5%=Z>L0b佗M.D8.#-JmWV™Ռm_?YaKdi$ƄR@q(9Bkk{5HTjd%OiMj% ~j|$Jkx5`mEe/.`%FX[V Y"^zYm)W6Fg[4 dWuzNhN Q. 9+H<=[MAƂqIXp2/JicmYZ0n.Ѳ'e^ծR li=i Eޫ8OəiUs-KDS 2j#VؾCU:RT]DW!"XZqVlh sdjbAAx9iS.x'IrTt$M\6}NRJϩ1l4q7߰ \^ϓǼ-c2MMO#|=7nd=}"P|;1D끾|D~\l(i3Gkv3M yX^uc**Cm].❼r+R| 7_ V9G08't }~7$zÜ/tqO#+/*}7~k04F٘Dthm#Hm0DjuQ!! =yeWAeRk(G4gRH'wLS>4a X7)h-kƘ3f87ʪۍX kf3qnIvZ"tu䁜zrc~BP@y+Sƴx]<-d TV4-Ij*PZ^'TSIqpneXlτ4.qA+%[a#fFWyLlI֔ꦆ.^LUz_'׼bϻ%Ҽ_>d5d)cWOQInvq, ?7PuH0F$f΂ A3fwGZ ~c~!4'C l~dpn/taONJ=qx~g %!_ r7#?~~?IB+cie'槱Lt"ن1eyNmZYkv͛DG{cHe~wdL"ȇ4Վ(],Щ/ifΕ'@;(5q8t[hV2QWy)e:(qW-VʫE7{Qf1}w^BoFa +ShydKaiѯz@Mعո;+own^:q"e<I93'Q* fTR%"dHL@Iy]yxtBK33FQ7+?LLV:i8eэaHӤqI:|5 wF0Aj_LnM+;rVQ 2ͱ܍Á^lN ] 0 ꑔa"%p?g_^GB.2$B./.iMk=%~'?a3l緾>>v'):(Og=41X86|w ˿f Ynj,t}y.=j4 QkGCfIG̩ c~$ӷUGV;Up"-S]Ө!'[`W3HW"XfW)+l񠩬mf:^{':l&.[1U?%'f46slpEaBug vV 3M#gJc )5C^ $ժ[ SâԬ%W :L7)UD+ EÈjP(H̺ rӻ8|x.~ahe:[5NJKʢ͟SÇT vE,XiIf;CpгlO %rxʪ.̪[3EYӥ;56bdgDU6-pӹmBq\5ز2bM$#s+ !0X`ᜓCztMm|#vT0[T`=DmDGj3Ih*5 guhQ-!t4 c0& MB#)MwiE ݪsj@U%8Hj#z8+ NL>ޮ<牚^WK" urQJTTR-sZ/zI)C*muKlr]/BJ-ZqVp1'q)3y/0'6)*=H*g`3\K3|_壏_ w=yxgӁOG 49%Iѭ?G#%>y?$L>x9kV0N{Ǚf!\PK!n/r)"7~L÷ >:e.hi0ΑeOwCv+' {JB;,?N([[0~gD (.M9羅\ D!gU7#QLJ͚ E"d[FbkщjpFY aY=.a+m%T,S nk:5ifUJ ѳt}lm=X_#,k9"tXF[}0ʯHJV=_(3>ϯ_YVK{q3Fkb/P5mFҬ_aEy3C!fO9 Vq- GNo/x<4)QLb*0NHp=sDyrЮj_678YvZGJ%瀿S|6CgwA~_ 療SgoeZLo +@ ??{?ߟ;+sy>_oeFZmw1vtCG w$0MaR-KfV_ohFir"wNjMg'YuRQfǜJUUVɂ'ZMcK&R 㪌nמlK;AYSL8dc-/xQƳ Mdky:?Ә2z-,πHNIBCX1»sL㸚A ۛ{чVC y^Aֳ=Ɯ&,0hR (?LɥQ \#yY%A>LN c|mul/.9*;wu@lBT{^+2.ig眒opƭ"1D%(49%bRUH\:'ITb:G qaA"72yxO?/^<>Vbx7 Iw7䣏?zG7>|zIm;R|GWx6kLp!2ͅfg>9esJ+Kٰ^R9e #'`.{'r㺺 *e&I1MRLix< +ejJ\tK(=n#@u(M('<\^y՝>ݥEEƀ(ȏqI8d8j,121'q4ƌQ3\(FAٗ^VqNխ,*y^{֭[|yFr{*2(jODڛ[:,HLE2`U@Z} ښ1q+*GC'#ZK$,::;4wp.\6KR&@bkX`%q%/CgB^ZHmٝ \ #cR`#M8GU?*0򽧶Aӗc6#EWG=?1^>o 0^o׫)QI /SXzFv{|}==6S.ocme(P؀ J|>ǠZq=A@aV6wp<|ctl>:9-%<\O r*@;m*Uea"@ۥ #<#QP?RS쀄/:l' %~Pu32d=dHC]]N@ƕQ,N1fr䳮޸.9RSၤN|J "P(p,g\:[T*'M BKa-(WضfTteQd`W(tw9j\__O(EV_- 6~d)y%e٪)ŵ6:|v-<dž($jvAHIe*EdPg rgC=ME!Ba)4Hظ^( t H dr9H"TehM[Hd S5whmӁ-U(Yt%g[ԣtٱmdl /!3.VT_;bw'T 퐫2H)G ZѿnS:,e\ϵ3V9\L&|S$LoaT- ՜\fϸiMl%9"LH\S%e ѩTVN8.!^MS&\ö!˱y^e~Xd9"ݵ0(3``;׼E]}bDU2jWA;JRDֳ Je6Aɫg@.#؄\$c+Рүb rT C5Ϻ!NQՑ)^dAH}5bh-522ɫLdQUe9 (HuZ$7d$R>ko dc3~*~FֲYa#˲A"p E #E|HUSHy#,\×>`aJ( | 2"Χ( S:]*x+OQQO .O F[QKjtUw&x[^UkE JU$CQ^8AVnT@СbiQv2Jz0 @U& Hf qL* lUH9*׶)!C]\ R ĖMZ"-(V*J!>K34=X{, 8h;Z'J ໳}^Ԅw <0{xVIfA{/35&j-zjǿ'_|gC> d2~j ܆q,P܏ #>cGx>att`EN}[v]'kWcSG'|- >Ku4~"!m*U֮q~4HJZklUk ?bɧ\,CZ)uuP!̡ IDAT\/]oS*0h`7u67ؠ6z*~~TJ%;tu,][;*ʐ\LCEyע 6ofMVZڲq]U\.](Q,.vcG>a~lƥ!WGS}"ɀdZB%P,GC.X9ްRDC[73-llU |PW&P8E峔}(P( JOxKcc9/Y@elPb;T:@.^6KT:syǯH"JސmJBTP\.JRZߠRQjj8ej.1LGFIZʎRVd_XjP]@qͨK")JV[n A(@J mUɌ%bU(EkڭBCJLZGRI~tfZ&,S10Ƒǡp{SXR4ʝH`[TZ(Q6@XшASMP  c(ͨr(ض}_]0flۢRVe PaIATeGR0P\q!#)yH*r;28Txō)>-MTSj%b_v+ul'嗱+Eᮛi#my"?N=R$Ǟ&D'uT⧞JeXz ʈspSS/Rk3wd˓ڞPOyQ!>|7VlQe1;QPQտ? ?\$|w/ԤM?\GŹ'J*=p{Tԫҥ-׶&z4}-=kRؗ}Q G47h}ZH*y#/S $ ؏M;Ym:z0`kLis7nz9(p:-=x4A%HlٴR0~6lP53p`;K,c5o^k ʅHhnj͛oGM͸Brx0 ")YEG;޲r@CCzdJH@]} u~ ik'?:׻udR oZAsrxlZ7"\-E֭L6@SS#\Kl-Kkhȩa֘0Tķ("Q"OI|\GM:RbEm U9eizS nJTҀl6㸩0U غv88OlX( lPgnSS?+iin$h¯Km"4U HI WqVT.QӐːX*S*q:\/CR"ˢo") uXa놭T*JODZJ|t X˶.S(T,KWAP;RY[(2D!JSIR)ExfeYdsYyG[DR`;N2x6aPRP_4eJL.CKʛ6 p\l6 *B%ԥcK'af28AHFhTUWD0!~xuc( ClYmƶctHF>aPIF*]OH[]9RD@tYsU e(KxeO(CZZ[) dtWp]L&ʕ+<RCSNޞxF7Z:'/+<`uX ׶:%Q+oS4V럫?-}lc_vin6ݐ"2AcX,zKUP])*--imGVF ?@>l X{kjr8QPIN ;c͚M ju@+] qmlo/C7cI2ݦٲ,mm-Hl"Z4:,)ER bR~U%q9*aĦJg-: $VU ,ɀخCcaa 0dǢ\RiB?M]t\BBBb1bεȹBGޫbxZFsKS O(ٶSzM"/edsI@U$n tUJO*|P²-r<7m@JI>W¢cVZbێ."B)^PJfsKR WRXdkhT]OFt ؎K>#r6u:MXT.%"uS,EzY>9s,UH:l+Ad4Fx q/ۺ: U0H$ p )%HrJB e'KSPlPuH *aGڣ0B8՛qW€r%b.d\:;Er^:uV#"u)Uh6!3ʋ3BzLʀrKQ%#\m%rI Æພ ikoUOQ ?M>b+% Os]Jc"mDL*ϱ*GjZm\ud-Sm cz\qu)@ZbeUڠMdgkR$b*"jݻ=Yy$!x7 w]W:UMt' e=e!pRhPW،ҩ>3 bFƧ ВűtC@ԡG8 ȁ%1*2VA a.2nɹ6mX ~)P[b;69ŭsahGg!2ڎH* R`"U At*MŶM"rYa0DXB*vr^&3-KkI,^Jo6T#%,B2A&ViQ96muӋ"@RC}Ӓ8y:$G"NE x[RP3'rI$:XZcak_ O8Y XB{X=WmBqRĈlaa.De nf}S黆+" -!M9D.2ɪ* \a5=a)]m\⛵:$ $ MĬ[Hp8m{8lb[O e~?!|H2" mHPTA@#ԠLeݖ r܌&4Q:\r> mDHZ72 % Eڄ,Rcؑ JkwUVQ!UY aY8]$@58P(lRYM\7Ѳڭ$S$Uv5FUC{DOKm?Tt%j㈰i<8SZj:vyI/ec90IJ;ɀPf=I3NR0]P!yWTBݵucX:C@ cx,<\QX߭\e$n,H6v>,]#צ Tly35uboV\4X(3ߎjD9RIzW':R2>/e+ioQiBZѓKjwFЖnٹ466gj/i}s#vo'oqk;n߫_Wș㹣X>KZ>ؘz/LKľLg}n [Ÿ'ǛS8;ezHXɚiPI8kH(TiY^'eiM,vRʳ/P/Tf.lM 93=lLV )ݘNIIJdc(OUi9` QdX])d$LQ*2T fhYJkԥ+p&Ъvvl%@FK|Q|˪a2sIeFG$JhB*,.JҤmbhYCJ]F8*7dzA6"aHwgf*ܫo[:$K*}1c*fʉik 3u3o誩Ȕ!Y:Jƺ(]Q0RUCk7jld[7 mR֛EKB$5>Q~@z ADjFB!FYFH; x6dzixcaɎðU23pdՏ EjEXX"R#BT*# C]R2Uݷ,&9 O"ax]vƊ[ITQ!$$nv+ Biר8 ,JU 8ZME)C5koaqlI)!)P5֤Қ&MBOV;S!~aX3JHQOUKv5(6ꣅtgX(ߝ]%{-,{61;Ae )9j͉h-5$6E_²tL ^'@­(|t3=l(xYp>D^)՘ң1yJs֕^C>*+v9/@ȄJ'`>.=2uBdϧBJIL5 Up ]ƕfړQuEgejf+J3EMOVDNԎ5W༚hVRbuEo$Ӊulj-nÖ:E˽F4IL} =Vͧ=o))E6_^=?0Tu C뚮9$p #=]Ջ`*"(ס +/ J5M_Z}6!V2!ZϬ:)Z$'!i ٗDbnUɥ0ixL8sYPI{$Oҍ*D2r(TO߿#!U!JhZj8Π5eT`u闉g\IrkuRQN}5!{DЖ>o-C{}ik;*qKM%ʾMFȚQRqLG'O*b(2C}szb3Uki2ǹ->6GM)Q4b靼lǚ63ϱAĻr`׉=n;y {h}=~vt IDAT,;ߜe```}+J>P(!]ٱem(twf}BAXr5n~lMK;o78vv|J54 eʈ}WѾ.e 張JEJe%ydw>9q\>mSWWO_ohaٵo!_Wjv{+b¼f>2cklЯ_Bԏ;~<}dkc;¢aۆ$t@]]G<^| = Rvġwx\l-{1X~kW3j}\X_˥30000x`]````s9ޓn````”)Sz=Q 0{# 6000wa*n````ۭ 70000x+wC =8f|pqu%zӦM<Ӭ\r6 &Ғpw4~ioo3K,駟3Ψ! p5p50uԚ}YN^~eFͅ^ȸq㶻މ'hѢ^Wb̙lذa0r,2[Bg k^0;`@ZRrJƎǎTw#`6m3^_*B^^|_gz-Z]Rp뭷2qDqC J엕[KlRbР<@JI>XƍE iy,cǎEJ{nJ~;/V.b;sy睇bh```H-[| x \ϊ?/|X{jIwwlᩧ.7u9Uѭ78='LoG>aY~[X#dls&t /|~&Lo ?N_,Fl~=l6l(pym DZ,sͧqmlTd_'V*!/Ѷ'?^c=FL6-!?8ӧOW^N^s!$]7o0b_QF!.lÇ[ذg?;,3fΩVo%>>.DUcz<1`@=*W_5˜|<Ы|k'՛wNM{  8~,&]Nx38sfM7mmu1'DJzU,Z mSm;:{"ONgԨnu "~˳hiɱp?$r/dΡCnrxr9y䑄,aW\ve|(5oj_{mK׾61!y韎;^qyL2O|P^}uÆc:;nKug.:#hGWp/o~ĄL6z{WL|ovqGl̝ +'8_#x-|f7{xb0s ^J[o]“Ox'cLBFnk9)%s3>d~]__TO>dwk֬aٲeENԩS),[kժ.=z>8ꨣ8h%;{7````HW_ȑr#lc5& %W^9!yxKS.s O?YZ>c\x".]rdgqDL1i`<3<~}7"g?ǹOR1t\ =#,X)%SNM(N2i,[oeƍlܸ[o˲ uů'͕ӦM#/>4^F"-7w+< ftTSGq9昁2Io0}O2~khoWե} k@s׸83?/q쳫q]o>YRXr+Fp晣yU\r{,nKýbg_\˒%E?|Q$0bD3^7s_8Cl=II}}=^x!|G! ,`7q|ӟTu?;(yǖ-[MR7_8Xbѯ-[QZme=B~)&6m*ǔ)w2|x?*s_u-OΙW%e6rds/MYbSm2>v0C!pg'*ja!TӘy Ì.|+)wcU^:|f&RG>2_E:1!1)861|a`zr9J2P}ٷhkjGWlpw}CYl!{ 9?Wx?c3 o%x́i````H?|~maC47nbdl~[o]_dm3Jo=:>2e98 70xwErRDT\.>A>Qka6}qp]L&C6%͒d,Y}OH&ckmbŊ\t1?S|CCLѭ̟U GZ޶-z: 70Ј-[qF6oƍٴia&䷡VFACC\9_uu}qJB.^u:::qOKKKd*IY.~اxIg>s+Wn巿}_S} _8va``````H~JڵkYnk֬a'#e<<wwwqF6nʕ+y4BEIG" `޼Xg>3 ի;}}m"'|_!haoͪUXz5]]]GM{{{PWWG]]Æ K}?TO!C0tP۱m )k >78-ig3G'+sCxٷhkc~C >dժUZ5kпɓiiiI*͍7[oϳi&:t(Ca<.^ye#3g'tmmug󨫫Jlۢ%G..U<'8ry.`ĉYh|0YbbÇs衇2eʔN!V:(|gլZ:FAD}}>9-r/^^ˏkmϯ{: ;l/p}B^{˗͈#0aju]9Xv-˗/茶QFqA2@fȑ̛7o$R~FQs}Lu6lO~~se%n/ܐp` 7`޼y̚5;8;w>18 ~,FH{gpmn_$zw1k,/3rm^<q/s!r9xӧsWpYg`/#tuuK/K/aԩSMn3x`N8/_ҥK~ѣ9Ci 2fF1cx'9Sk*3g䥗^Ap3p5py1{l~O(A0gy~sI'm{+Vꫯo~q5,]l6ˡuM6(8c8p ֭__lNnSXn ,`Μ9g?q>`C lC~:3g,Xi ?0rJB͛W9sXx1_|\@.㤓N}.<'to.oWI&f͚tDQ?:,^̝;wUE1o<><@js0pmBJ믿΋/HP`̘1L(uuuuQ 6} Zlذ{g}6!eaZ[[o˃>ȏ~m6lA\ ?wZ% Clۦ\.p۶mmm~dY8 n绺xZ_ss3]tӦMyk2d֮]K[[9 7WE˗/#1f<@Cޯq8Ї>7.]3<Ç?aFe<z*7?Gy&[ou4!O2~x瞚,Wf{~?~|R;w.#Fy>n`mllܩuuuq=p׼ǽ_̽i``H)%?<|ɓ'':CBFȑ#yYd K.cn{yN6ooDQęgV&wG}%p{ns3f .HD vްgi}ꫯofذa|[ߪyܹs򗿼myGydsW]uz*Guwi`>,9k+ymM+V<ƎT.];I[od cUY3`cexǘ2eA!}߫ WJ¢ExG9:uI`ȴi;v,gѢEov%}Eп_ OyK/O>K/]Zc=ɓ+Łhv~#FO}0 9s&+W4;`aѢE5?6_ʜ9sz9~ 6zaÆ|Op3i$Yfq 70{lsn^}|I/^̔)S88LI&1ydz).\Hf'ظq#]v'Oseٲettt}-[$mٲN;Zi>}:O=TXco&_ի&Nȝwɩʙg… {qF~~[\s _~y'Z@{{;֭ۥq}q'&_|̟? )%K.O't u7;`9r$<|%͚c~ZQ2dO<C ᠃>7;v,s)meym#|W?>ȃ> >62j2kֶK9s&o馛hjj2>#G`ݺu̙38O?pF]]~:fΜ9\30;8~ӟɺuk>lfΜ̙31cFr9|g?Yl;:QG}Vy{tJ%^ƏK/~C %f޼ytI|6;Cĉy_46X IDATjvNcg4/BP`\r%L0!yOd_F/}o|uY444Ԭoƌ\p}_3<ԩS_˟>9V\ɩʕ+袋vo0}{( 40q} 5O\y}ݼd^0 Yp!6mSNu2ҥK}qƙttt0|Z[[8qIˑnP/[(6vfo^400>9?뮻/\//e*"2<RJOnCcc#'|gj?kIQICH\*ԌC1a 1 1~["%TD%).wO[]3?LO%^J6l@ׯ ggg5L_=z47oސ BDY7a(Cℋx<<|`3f |}}accӫ ag- n:% [qygϟɓ'r&xzzr011!"lܸظq#deeWpaAXXvލ3gΈ(Y;+L< w T(<==S qJJJ%%%h4XZZb޽o?d2q}'O+<==+0v?777~R E0m49rDr>>>HKKtLUU,Y[nYf!&&{@g%$IOO˗/ iii2!J`0鉰0HJJ̌L 777!77Bbb"V\٦qaBLLL|ѢEn-9Z,#Gݻ?ϴ4O"Xܹڴ9(8{,n݊G~~~m^ZG-[@g; ijgNpepwwGzz:^xA&DDQVV=.\Cʕ+۽{7;DEE!22<O\JJ  |^r R_8QCYYt_\Ǐoz>uQx <<< X?~/_ 1F"<<p8`0p8߻VTTe=UUUl۶ GAUU'iff/… e&Mob[Z:uꓢ`ٲej @Q(Bnn.YYY2!@VV~:h4ɤL&ǏGFF$%%1fرݺ˗/??}xyyaѢE`X]X AAAرcG\z56oތ3g[n& UUU,Yvgo/^tʤ`nn.byF^ <@AF{Xc+ӧEf)++í[EEE2!B܌:Ԡuuu`X`X`rhllC~~>0bAJJ 4dee!''yyyB\|( \~PSS#ҏώusp8ݻ8vXBcm `Ϟ=ǗƋ`b hSQZZrTVVݻw,''aÆAZZ!!!mmmD\\PTT!xmm-Q\\4x|)S@=pJ >(BYYf͚5$;dff"''jjj9r$lllD2.LMMajj \#::FFF0110`W^Evv6#B!f>֭[sss g&@2ؼy3RSS1vXO|͛>l_k׮ѣt\عs'Μ9Cn(ᢣ&''c֬YCRr+bHall ccc#33`0033Ys L>W^ʐ|EpݻwSJl. 'N8~8ڴq)ۡlٲΝ1EGGɉ4'@b#l6n݂㐉bg";;VVV/`ii9#>gɓ'`Cb!3F[l|Ϟ=j;QQQO0$!(Dzz:$$$0vAgϞaĈ"1 P[[d?fff077F㶴DDD2220fr!Pkȑ#{n(,,m"h"HIIA cZZ~'HII',11عs'/dkMw9gϞ֭[q&` s{|ɓ]G{{{p8l¯+;<SSSaÆ ByJJ n:Q aܹv<YYYHLL6̙C'MFuu5pyXYYxЎԄ2(J\\˱m6xn`ee3f^BB<OgFhhб{*ۧ9leeeťsQRR@]]]<իۜ{E]/Xr%8SSShkkktt4m& >>'N7/cP*J qGc\.޽ !  Aff&\]]Dp!PPP3f̘ϟ#44σ[[[ܹs\.,>QUUŶmpTUU`-333\x.\(4i~7Ԡ۷out:>ޢN4Z5Ο?Z<""'N? acce˖! @`~!''\.WhgHJJbΜ9Xb>6۷ogS `E]]L&叒.455H]q////_~s իqmZ/|ݺuw}'tLE]Dgoml:k, |܇ꊼ< ӳM;rssd2w*3zj}Vܽ{LLLb L:?3Zkǘ:u*٘I236± *00Ob[)#'App0޽cǎkچ/6m";!6ł gKFEZ0 Ke#..NNNJojjB||< <$"'pttDQQbbb kkAs IHHј3gIk?D͖(A?#VbD@=G$''C__Pg{o߆Ȏ>DKK C\\BBB4haÆAWW)))0aYlh1eddƍ#Q)))8;;7n/ƏW^,4@ Ntx<ݻA"::ϟ?Ʉ!Y~L&iiiE$%%accXC@pB<"J}}=\f̞=MX,Bٳg W^ECCȏI[[" LAlmmiӦ6>ͮ?חvo޼ ~ \CX;w`pttҥKjZ NNNXjjjj*70|/vW_֭C]]]t]O!x3ګo߆/xb$%% vf#558022sӄF#F@hh(*++E~L'OƓ'OHdff ZL69'i&ܺu 6m˯qFܹs_PqM888d[pL4 Gt]KsI%K`ڴi۷Xpa,@p<~"=Bcǎ% K1ƍI&!,,ۉ61E_`߾}HOOgϰo>"%%Exx8TUU?Dhh(8&5Ο?Z2mmmfƍXvZ^^~_qK{_[:sKnDD&NPUUZ_5jPc&%yyy";vw 09s !!;vZ`2[D!//˃?6l؀`̘1!!!ذaݻmםckk {{{]L&o5nu¬_w gaŘ5kRRR"t6fEl\ 8}4^,u˗agg'oEEEs<<<p8A>3***'''U_ZZd`mw*SKlڴ cƌD;6ł gKFEZ0 Io" TTT0c DGGduuut$(̙3gzEqvQ(@rr2Ə/rrX,ܺu qJ 555 <<,}ɚ0a@&9@ NSPP:.rVp.C__, E__)ه &@ Jx*$㡬L> ̠HMM%H Kee%ꠣ#Rrgee 666d())AvvHɭTVVErssWWW899aŊ-!W_!=='B&MLL #&>WWcժUprrªUPSS/;z(M#GMtNQ?'O`ܸq"␔3f@BB,ABBӧOGRR޿/R#--,qFܹs_Pˁ񗣢ݻw\<!!!m"ڵ ( IDATիk׮s !<<zzz8~8,88åKڴ)l@ %\hhh۷oahh(22s\ܹsvvv%8ĐÔ)Sp5j @Q())G[h޽{.oFãMyai3L?bEP^^{bǎm^|544Q;N7eL&k׮ܹs۴~\E$S=233add$R䤤$hjjBWW,E__HNNX022Bff&,--"R???,^с&O,ty aaa=~^šO>Ů]`cc8vv m۰f-lٲ}jjj //ÇRBR~ي+bŊvuuuŹsX»Ë/d2ǤIqʘŋdD___9sPRR¡CpAˁiӦڵkX~}e>|}}䄕+W۷:{̙3affW[~|7?ףvz/.Kѣhnn&-@pѡPPP y\.ݻGGGNp=qKQPP, W("(++ .ġCpʕn!&&Ny߽{7;DEE!22<_ ܹRWW'֒wwwtxxxtU;%%%PWWZF͛%.:dff<99"ѓ7AGGO<MLLI"%%Exx8TUU. 8 8~w2:/sqqqZplܸq=jϟamm-9-['N@ Jhb[xHf$-&L@NNDB^CCCfţ0L&Ǐ ̙رCb%nr0w\ ¢E6iv~oacƌ zԟꊼȑ#@p@ %|(P[[Q^t9r|EJJ ^zccc|:6qqqC__HMMEpp0 aii YYYc ##Gq ֢nP` 77Fjj*l6ƌ___Ubܐ֭[Kl\lmXzGŋ1o<,_s@ AsDeAFF,,,D~ι\.P/9ttt`ee%ʵ8zdطop!#Fn߾ot:]@AAͥ Q\\ ---`|}}憴4СCHLLʕ+*oQ %$$w[Ob퐒̙#Ph"HII[nޢPQQ011-**۷n[;be4C *  V-DVJ2/CԾ1a*&_eYTF7obԩ"g566Ƌ/(પb&Ǐ###3f v!tywiϧy͚5ؾ};O`˖-Bՙ![v*kݟ0HII\h7*{BPS3XprлC*-# iY+ôa>ϫi R"!`x΅6i Bl\9p>}/YCrb 3gRVF.gKp-L>['H8u o^ÞgS!#'/tnuE9FF >'L6¨Gc1c &2kЀK.ח_qA[{homEܹC QEϐv RzHMeoG!f84Zb<( /Xbسg%k"-X;|@ 􋂚H)Ո x]E9ݏ§ɘ ˍ )w* UtX{x}W}§ɢb ofSzcEAAH%P/6 ϰt.hܲ x3WO}$$<3Db. !8ݻwx"@*45ATdaPl2 |dh*14Uy*^ƍ.gϞZIKKC]]FAFFUUUE P ظ f,U[c0KwEͫ#X dD 唏Oiּ{Ϟ=*cea>~wLtrWF oM8z *: 5Q DEEEds0@ +V.-W_!==þDQM6miy70|t]*P]\`#WF1"\V5y'%|2eDB GB,ŀ/f3);1qq^ fVV 5S:\UU$%%!HAAˍU;.\ϜD#_3;\ \ PZZZGVVͥ(N))) @`ii{ ]FG`ɒ%pttҥKQTT/+..- qoYous}(*D S}H\s0Q?F6 D H%&"f#%%֝r999466<___9sPRR¡CpAˁViӦڵkX~}ex)||| %%+%% ,Xt)=6~DD.\̗7|(c߾}B;$yF0M$gCӈ/Q]]M*ŔN+2?zYwP Vf}ҞM3}oHLL jc5 f65c?@G鴾.^ .Z OJJujJ:QVV=^^^Xr} !,mllpYܼy Xzz: -- >|7 qz?g}yc?C3eovȑݾ^X7ms 3EnpB߽)-%<Ϟ=q֧ƺZv <)q` \;~ i]Q 8x|eJyC^l0c }##t7oeqidki嶑?{}GQN_ԯc6tErzb SV>Qaѣ;~pR.-:ϝ2 8OuYwԨQΦZR= aֿi8}>}ːzEss3(kt )yΆ+GٶL؁|WHׯ%ErF[~ֳ|'W/b~C__^)%׳e#ǣD`X CƵ`Xy= ꀍO! ;{dF^9_'*)))JWWWnYutXa~,R?*ۺ8y+WޱCr?+1ߗ~|Nųk]Ңt,n 0 Q DH8ɝ;w$ qz+ӧ045f66}~#.>v"(qȹ{\\%l6 8@-<Iq0k!"ôa<>꺺5z⠦ ftP[[EEEFu)))@x{{^ĒR"=/`̛7vvvTWWcժUprrªUՕ_ Xne^c}3(/jWi??6ddePI2,(-TW///|QQ^܉ĸ~Դ(.0d?egdEwn=,ӯɡ!X*d\\dy&._{"66V@'N@OO۝%K`ڴiǤIP{ fSxxzbbbb%t5rE@Tt:e嫫,e+--zf䧦lz#F/5v<~e=uuuJ▕;J>ܹ3 (((%K舥K˲qk-9iӦ᫯BAA[[[?ś@-?y$\]]Zʃа>xx{{Nm<_ׯ_ wke K,[ŬY?nnnBy: Lz46ʯMf'}v9ަE@𡪄lJ9*h,(1.5v[4G@Mi jwZYu%{_sGٷo#((_uiiiܸqطo@?:T">>xa?;+k릦 }>w-Z888Ůinn]sbϞ=:?,,L ׯGpp0QTT>>>]k" 'u=@YY]WiiiJ\KHHt%,+ ym< ڃNx#&Z]]CJJJ6{xAd;fff8{,]\@ΆssS]}-^F +,ii0"#(᭩jŽm<ue|z|弨{׾] 566R:zKW[+s1Ң?蹕_ j/*Zx:  {DA vreԖbuj\+1=,,,p,\ΝPet:EEEk]wS^?5ߚ#F?+Vam-'Xs lw@uB&11NxֺSHJ5k !!ӦMCRR֬Y#T-Z$1f 5=ݘ7 >>z*~~ꊼ< OOveڵkd2ҥի$AMi1;و]^>ErTd[%E\ヌD'-:JC{:`"]UG#(k–W /|+mvq8JPY>a V+d }RZFu]III455QhhllvAh;e˖aٲeǖ/_˗ wc~WW lBRTā:<Ѓݑu]WWW~'mb K vzAː/ pIzQe$<,|% m273|*Q#,_|I錙x9%clS:uׁO~Ii5^FܕPLi nzvj*+;C4J //1 999l5n8@BA*Pv4otvv&l>jMwݻ6LJ0)3fi >LԞ`pxT&hz4$IzpDYAcc#%c]łM \n=W<Q6@QMwn0)ipX.׬ l6OJcc#ڣ}:O& 9A7(*so07ftBυ^q2Rns\BRsVvVD@#Q D X ohjgH,LI+?(ZVxXRR'N87T!??~˽zӹ\ĕ>D"ijv}CRT RO!5ɓ'S+̻w{-e5շANō,uUWG[0 Sj̍ bȐ'%=Z£D#]&>;$:o!r FY.>S}7{Ѐ$d?NFz\,]qEq1n9 wo>Y&V]=/#455Q~3M9mmm} y@#IJxğʊ6ǵGͬٔwV}=dN=](IړѪ!Cp9ݱ5O\\x^:!-#vCf0clo==uywaQ\kћ T+J(DE `17Q4Mb5F xb,XQAQ6hQJÆ=>,9s;1{U޾)JGS*UG7_yE9wK|+[O ":u WWW?ިbyѣqww' SԩS),,lL. /ZO|?On7e+WZ\/hyT[ˆ3p~dJJJl2q77ۨJYI 7ΟOY6^F+CBS-綰e-bK#Z=O3K.]yZ-Zļyprrĉ,Xwww֬Y/fժUҔfͺy(/g)-̬EK1xVegӾ-F2KS.1uU>4R*QQQTl^4VItb߿iZƵkOTu޽F+>oRkUUU5piʥ:֢?< /--%11sȑz]j,ݮ2ߛ=>@ZZcǎeРA|qnn.!!!xxxHJJJ~\CLMMߓ=z4=fwL8}In:6l ]CÇ[l^u,x4,(J@UU{WVlJ ogمt6֮im x?Y鴳Jxii)-iPQQhy~*$:ǩq7W ]A^^Zʟfsl o\oG-]h<$b؂Fddd`ff&) ӓЖțU<&&iӦ,2d˖-#((HfQr6&{/ n~/O#jL>hi+ko璎6 q%iܦdѡ*%9 *_yЅ˧A礧-mۮZ::S^Z½dfP'~ۼ?fg^N,gYIY#3s\||y_fxy?5Kܹsԩ'odgg7y"Q䗂|}}O zWWWOMdcַʞov6MZ9g/zk,j")Kbd{?OJJJrΎ۷`IqqlHhnCߡ> (/)AR^ZI*ҢK/էܱ/--//ҥKuҧɣ*>>Ezzz[o%]SްaC/\;8p#dz>: 275sv.HFx sw<_8?K!.fSCXL СrG u WQSklZhZtؙ_og`@ oE7F>NvTY'>ɶϟ[nr_`&++ PJΝ;+;QUUԻ4&NLaL>~JPP/ÇVgOjaf6&77K_T޽{L8}Ioݺux{{3l0Xv-CחÇ7;Fb׮](T—}8vALLdqq1ٱcr{f7M\?K455QVVXnhbb"J8@^xb){a7m+ݢ%%l\onhb.^H^233155!9SN$%%Dǎ"44///ԩSYhQ ٙX 7|qqqZkT444*C޽hp%99MMMlllK$͛ӥ%fȐ! }4F3j(/ ϘT\?ks)~444ptt7DߠZk(ܹRUY%_cb^M?v/BYOKK)-o{ШGfl߾]ĉ,\OOO>cRSS]̙3N`` gΜQtnjӠÌ?uQUUEuu5[n%88wTTTVKcgg'U~!<"00~,FKK 777$ hkk۷vEaŊX[nTsϝ~JbbLL@NN66=\UU%uO:w@(σvu}}}*++mG6РO%*P`Ouu5q5*jxN}ZB|C(A>}{.$~"##VãrttrQJ"=ʐ! 疎f…RWc`` t#j3e~:j"^o&Qϟ%k֬a2q+נBUeyl[]]M/k(SR{O\?/!e~򈫫+ 6JMCs2 lc$bdff1l&3r! s\Q(C@@' @o߾^BY`AՋp$ [lqݻ76mB"4oMMM#ٰa7o)wߒ+4[QYVBaÆzզ<[?Jz!]dTUU>|8&Mѣ2Ӛ_;y&'qYTfddĥKe~^Uo?|OL<hB ^'}֭[ 37N[߀Gr2R.GRVƆE /*fQQk'888```sv-.h ?̙3)..ߟɓ'ꫯֻ9v ɓL>]*1cO^k0rԨQK厎ꢥE5<.QQQ=6k,Æ ܹs2.'b?iӦɸ4e666L4^{Yfՙegf!7{OTUUǑv)7r~E6gtmZ%k=GcE6k,6nnPY~=ov} 5민[ 1{nXZ®yPu?6-PUU>rWfO[1h R3fnyfӦv{KRR}<\x1@gsM8gϞi(PBJ5u:m5 {ea8.3%K,8#K)^FFFr]GEEKKKn޼0ΥKrJ4տ1U=}*N8kR\˗qssSyy&;v[F422zp) O>\N_[??̞ӧ~{A~6Fӄ.x.b= `jj۷133>vڕ?C!ACo*)+2],z!ǰ ikd};VGiY9#F5k ?B?qpp>fffҡCqz%5LQA#0L2tghR'JJ}Nb a ozܹsрGyCOOoooօӶK,^3,v~Ф IDATM׆24[ :Tɔp]~}\0uӁ7~@˪ ?|17gs?M?vxB%\^166Ν;r]@FYYkk&SFFFxxxwfexQФ;?m"_R7N?&ҿ[/a|;}JF8@2p@ x"rRUUEnn.۷7* OZRQQנw;.YIni9+C>"zo=ʴ˗رj?ΞE^;/5~.m۶e8p(^{5`ѫ%dqܛ׹z')II1 P@נ:蛙Ӯ-V`5->bPWWghjj*3--_~Yܠ5559s&˗/*iii,X˗/ӣGΝ+Epuuf혛pBWcdLMMO緫+SLa˖-ܹsjOz~H.]Ȯ_/2vX^?k֬y` /r%%%Lzcr%48Iyq1%HJQBUS 5mtMѳKqAUSK\x+:&&&!HwN8~8 idСl߾#ZmU:[#99D+Ң}vG޾LAAݓ=ܽ{ =={)03+Wdݺu*khh #,,YBCCbɒ%:uEixSSSYv- ~k8}4sؘO?;;;g`b&+6_mŋ|h˘;nAED&4 u?#%%EaZII GGG8}4{졠@ݻwB+;z阚uਠy9s@ ̙32ٳ͖p .\'12?AiQUUvbĈ2<>"""!##s<**3mڴF(y;vٳʼn(}RWq&&&1s rQRRBJJ .\O>*BXRRBzz:bii)nL 雖j"##i[KblldʕR7oȑ#uJmFdd$˗/~h[,u4._LFF666曭blk?\ܼykVVByP \]]QSSʊѣGdF>}: ,`_Ȭ[VVСC133c…͖0sL,Y?L88~klweܹ\+++>3JJJoߞ@ "ObccZ믩OLTJv#{؏PYظq#W3K_AJIIwB<*ׯseܹ3 ,--%##t_!tܹUMLL]vSzw]uޒ~` 7ck@ {Kƌ#0qFb{ɫ*}yM?rHqCA@(@[[]]]С\UYYW^y$[휴i[[[lmm&77;wŋ{.NVVe1kNZGү_?k}0Ә[XP_0vʟ)J8<7{ܹ&FFF ,si$ }m:"qMTTTkUTAAdGy%TVV*D_}UxN]] 444cǎ)D<qcpͧ"? ,DSSSSSnܸ9}}}tɓ'ׯ@'N`mm0U]"""ؼy3TWWKu~ѣ3f̠{Ottؑ{O!bHEAX^z .(LIKKɠ xur23/^FL駟booϖ-[ */ Uqaaa;ȤelL0{eΝ,]C/>> w^Nse߾}L0/RPŸfffu9ڨ0`[ 0`!??bYYY 2}}}pttdҥRym+͛7 fРA|-򐖖ĉ###C*#00wwwFŮ]%{ӡCQQQ}͒=LDD~!]tH`t邦&a;vtnI*u wGƆ/6oZ^011ʊcǎ $:u$Ejs%z!&O?~<ƍ t{[l3׷pvvfʕ[PBCCXt)/֖<֮]+-NӘa5>'S)Ym]ӧ;w.|i΀GwwoaaaZa  %ի  DNN7or rssqrrR>WVV %\ _}}}V\Ɋ+mB@@Ϝ9C``tgΜ|||Xb+V֭[̞=YgEbb"111H#MUUfffڵ#F)6mZ9{lsS㎲~&L?(N~@(---͹zYEEr$`rQ9kr "7b``+W\룏>bXZZfϟ,ٳDGG G`llZZZr-mؼy3˖-k x Ν;'N|@(Ξ=P}n۶-*_dTTTo>0PjHII^L2k,)//={`hhXo[;;;mۆD"!< ~zllld20i$ܹfj>_x|Nn7n1}yw;w.+Wʊ>L*駟sTCll,u?O6mȑ#</ Jv#{؏P:7r5TR=dddpi|}}UUUDEEѥKzyZ+H$ mcNKK׷Nyg׮]899 [|boIRJ* W媯<(|C> %cƌ1qF}k.ń*ڵ gggKEX'O +駟booϖ-[RyK|T1c[nU8Eѣ;#ja-ZDHHqqqL6E/\;.Ӎ@ J`ffBgѣDEE q"77(hqyhiiѡC1rHVVC A__555YtT^~M4hcYppp`̙ܹS| Ã@RRRFUߟ#GpiH$ >z>s:t耲2***ojj*sK./l8ʺufذa$$$vZ/#00wwwFŮ]5| QZbbb@EEE![n@۷o;vT㨬ĉ :TL2~xƍ=8;;ӯ_z.[ ƌh={)K,ԩS,ZM6ջnbb"UUU9sE!`РAW޽{[tI5J+Wl_|ɓ),,DWWUVI͛166ncEE;wرc̛7~۷+V0`.]ŋ%//k~7888ߢ&. BOOKKKΟ?ѱcGHll,׮]+\r8  8ٳgԩbb唠 ~W|||gʕX޶)))N```ĉ,\OOO>cRSSmwdʔ)ܾ}[0n:f֭xո`e˖DŽ  *ʯZs2p`qss?+V`Ŋܺuٳg7k|3fPDX[>}cwﮐk033ח{RPP@޽\x???XJJJtR%򅁁nnn1j(LTyy@j"##122jt9sD" GGG 8x XYYѹsw}p9BCCWj &:: J6U5S]]@&v}iii$%%f;wnhEE@X[uuuzͱcZ?7nTTTPs0m ssD"!..[n 8@RRNNNº&̚5d)**bϞ=Ύm۶!Hs=%%oÇKۗիWSXXHvv6 ,hp}---$ ?llذ͛73v˗s=شiSٳ2177XkjK,AUUÇ3i$=ڬݻ76mB" B J|ңG޽KFF~~~B/Φ(5Χ޽{ܹMMM|}}R1NKKnݺ?̐!C>|8ǎ/iؿ?CUտ_6'///Fo!͜9b6nR1JH^^qqq9Ra4ŋ?~W_}U!d$ J ""LC7mʕ+$%%Pj#Hرc^^^c#boIR힞@eleϩPgOr~]M BB8&22 .퍋KTo޼INNN8U +qqq2KƋSN[|EVPPԩSdԩ6Fɀd~`ܸqGYIKKcĉxxx{dްaHHH`ڵ :___>1zo=z4=FDDҥK:,?s:t耲2***2̘1#F@ J-rah?}asNNʢEd䉉:ts|rYEE;v $$+V4؇C@Ν5R40ɉ:ܹ͛Gee%۷ogƌau&liI}׮] 4 =TOOO,Y"-I0i$LJ~(.@(/\xUTl =z4DGG{nRSSn$H};]Jۧ9gRhTi>{kp~rϟoaU8}1.3tfný+W֭[޽ y뭷prrz!򬧥qU @prrĄӡC:~'N`…xzz*9r <==2e oߖY788mmml{ !CqIih;gΜ!00uuu9sLpssC"HVJUUfffڵ#F)HLL uR 2v ]hɉ'N`AXXӧOJ@ rF=eݔݻwcooOŀ((6mbƌ١ӧO_quue֭ >H 4cǒ&MVSSWu퍟lߟ#GH;Fb׮]RYnn.!!!xxxHJJJ}z<MMM1c#F'@ KbggGEEvWXrEQ\rNGGG>3e]}}}2 Y~=aaaɬlnDBTT2+**رcǎcŊ2D8s -,]ŋckkK^^k׮PXd NbѢElڴ>=-!CPUU#ӧOC͒5w;_|'O]]]VZ%]gҤIL4IPѻwoTUUiV@),,Z-, uuumBǎOddܹsˏ9ªUHOOR&+V֖0{lĉ:t < H5ݻwټy3s~hR(Yl.:QQQrJq B < vvvk.5E'::>}УG1 kkkׯtNnd=? Ŵ>jͫP]]-]_3gH$xyyIe}iii$%%f |uu5=q700`„ 6&kNs2p@ _p9Ɔ_~]v'D\%** ggg"z-8wF```놇#Hزe $##-HB"O?Ȗ,Y*ÇgҤI=zT*۷/Wl,X\ƽ 6[)1Ysښgʈ\", 5޽Ɓpwwi[L:teee :333{Ì5`JKK[>`Μ9 &MΝ;1k,l̙,Y 8qbx<:k?1E]]{{{d3ٳYx1˖-RG Jv#{؏PٛYظq#W3Ey!;;Xa| Dŋ:ucll,Dɑ~w$)Av0p@1@Qۻ=BK)Z(# 3X_ (&E0mnM-S綰ͽP(0QxSʤEi9?@~?I>=gy)qqqظqM˫$(+"##q8q^UTTDFF2'CLFP 228rf3B=J>|uuu\.gP3!^ϠPhllDzz=&J"""&t#f̘FtTTT0(TTT ##'NLUuI""&-ޘ3g?'O̥K'N@AAù =СC.c uV?p&/^Ē%K0sL{uq#,, j_rr2t:MƓ!SځaÆ!** GAff&1h  999ňb !77۶múuO | d2Ͳao,pΝ;7 We1o<̝;oΝ;{yv8Mg1w~رaaaDnn.oߎ9s ""k+W ""2״X,8p"""m7nM駟˯˗ӓ 8p+"~~~lj'p1=zNBxx8&NȠեKor*l߾&ɔJʂVŖ-[hn~~ߎfˮ2HKKʕ+)))Xj|N VqFdee6pvv7;3}xw>5kV^Zk˗q)`(--囘I8R N$''ʲ40 %%QQQP* u1x`899!66gϞ^yhkk{}㭥3 >>...>}:]qYf 1w\\z?f333mF7mڄph4hWl$%%a6+dARaj(1 GL,c:u*;\L&1e4q1YKbByyyئ7nMKcԩ8tMH$Bkk+t7 GqFAbb"9;& 44ږ[7oݺa9̐!Cl2Y\]]1w\kKee%DL©?PX`b1ZPyy9Th3(ԩEa˖-(-- 8wlقAgvsνضmM+rsslSޟX,\r=mƔ)SP(mws- ;w-000Ę1c&& 8H$:u*K.!00C^GAAʥK܌> 1b^|E̜9L&̙3* ׯphh4>ZۦF7_~ ܥhڿ}=wD" 6 6#R˗?1;>>>6(/֭[ojk׮囘hyi,OD/m^vByQ#(--ř3g0~xX/ڳb)Sj2P\\/úT 4wDD#..ݽ/:dAas=c&"p[jٳQ__D⯿bpzYCC z̞=cNVLL ҬWڐ =|0bcc1c DGGcݺu+BBBdTWWw~jXxU=A0|c>]%H{iii펭j8uTvo***lݺ]w؁0̛7yyyƄS?T* N'''z)XΆ_7Ԉ -%<[| ow}W9s& m6+W"!!Øp  I&!66?<\zwbAMM rssJk'MA1H4`,\))),\Ν$$$~njbccqnmҥرc`Xw^??~/FPP|M\v}+))3foN~5-"jjq 4669r$D"I}5\|/_)S@&1@4` !!hhhI:nŊFaa!mۆ,{? Gjol>w͕ 6>> A0{^Ր9@B$L&FF[ ̄pwwǨQԠ x'0n8t:v]'|+Wvƍn&%%^={P}qvvիWRq!˱bŊ^7ols5@d2fF}nDŽ4h|}}닦&TVVŋСC777(J%okkÍ7P]]j444@Rݝe&dBBBYfu7^u\~* Wt[Ʉ9s@Ra՗hh4"??d?~|inLkZH$j,\ff^{ |d^]]o6>#޽օw%&D7D^(>˙6O^vByQuuuBMM J%F#FյW>,.. 2eJ C]]jkkQ__'|* jÇoàS__o>%U3@~رco 99GO?d~"qqqظqM˫$#h8::BRY/ ?8}4_ :!c0`}6 ÇÇ>V GGGY%VH$֮]d DQFaԨQܨxM444ƍp`2P(P( O@.CP@&A*JL&n߾ &z zHRѣFT~?^to,'!bND" 2C jii^&܌HR8;;RbfVXrfwmmml6d2h4h4d2 ...6qɔsrrRtbM~5hiipl6C"@$YkGGGb5#DDD$"2sk[,???j """"bNDDDD$zk Qp"Op#*IDAT"""G#d, ʳPT]mD=!"">Ñpk| nPS 630DDDԧ8Nv؈OYkbapOq$&b`2شs5L"""k 'tQ"t\(:{L?BapOq$a_cxI]HnBQH8YB:.aiRM1@DDD79 C@ wj """bNn6ĿO7oZێWGuDDDԧXB{/tQjm6^23@DDD$) ރfW W r G CDDDL‰zL"ءc"""7XNDDDD$I81 '""""bNDD}h7@D4rFf;IRYy-\<8Ijɵp4SeLf H'(Y~ W>OJ׮W y09#YY\.{yXk`o;pELA6]{-xolW^ WYa._p4BF'7Drn-s{ R5?< AXt2LDY9tB]<@ܩ >S^({d7%]*[-+,[ 7Peyʚ] r0E DCWLjPR [?sIkP@)an^6SnaώfdExQglVRIMap4X˩37%yAI.2/#3K(j!J䥥I &"(RAj ;]Ta"|{?O-T5CuH"[̣F($ٜ-3rTʴ --W$pqJΧPWBAtJMOx.[F7J̣VߋsֱN?Hb$E/VWTlPFcͿw1 Q5mhIHWSKc]5%ɋ8'״Ӱa]6adĿテpQ.b m̵ψy}c3I$+|07XFIPqKܜ MAHZ##zS/6^0Ce1vhFļXE^kޫ֒l" -멢ѹ$Q lʊ}{7Ln{ǐ?W|cRM-90Pcm^d$ ~-AfM9HMx)k*1;'eVe=h_YQ6wxK Kҙ,UZT2"9lf.MUϱGsh߽h3;Za Ű\:#3/D@t.-sep DDيA~/e_,Pq7^v%k)s1Եt!,:ˉPPAmV!͛OvfdrӒI1q25YsQ.sOtxy].$2WC|j|9 d"#NF+b2-.F]|3!V j!;罸,D |K,k\-໩,M߁!>H?}Ȏk|d[-OYwY+d]+h97)QDtB8E hs?zXatT bLe!c/?79Iutc;tIrJ7U&ȴhoѸ8Ap"4o/&RGS{vlݦ)o#_dc(ZDoyٙώ_Iq2A\舒BaGqiH~q& -7|Ve*"YUP*] Wz[BOJ:6 ,Ut{PDxQs9B8I/e-g 2AO9N;q*H~!*ܯw|I"lu]ut06DrDN&%ȤԶ3S&?2K)'A G/peA; E1W y0ٮ=m/f"x( cO{ sFX Hƭ#)VN`l!ra;hgǦ1/E7qӡWgJ"HFyv24! 2j\|9U7pRk#yE ,"=֒!l!+J3+ L)ʗcW qdcZ?O{QNNR}!E$wOy.H.1R3: )p%LsеϰG񜨀i>J+'Z$U(ȋ޿jɿЁ*%b֡+ݩn·+(;+:/>@K*CO+{Wwgu[FbyA[F'}Үڍ}n)\OοBE5=$qDž/lVg~|]ro5L*iahM&ſ{,Ǩg.šbythdicbdVxcB;QͭuMu\G3ooN<%,#d0 R*d\ǍIO~98BdR>wGxٛ{t(U#T( @n&EI!'T8߷dA?:;Y谳9xT-( tjdFȼ>g(hHo7lJ<:1zqv1}Y Q\TP[d:HX_])kHe1hl4L!$q#K >23 bLFλmO]M$ћ^pn[a`Y |vx5r,TZ9%;O"&P[?t$6PY *Ȭ~(:/LyuHEY wF1V#;Ń\hqM=_C8 ,-NWRG%Yon 8Ux(uqqWw]Vx\<1󯡦nluYU2yHӉ^s 7ݒ3 ;ʕ;U4_/N@ٜg0c3=>:%%/hBR)V߂[Z2ʡw W*^wGzS-WvE Atx%1A xSOd1Je|Um2*( oUHF BVr . E)\N2 TmpZn j D2 u0fLѳK]W]8w\ "PBHD2  (d@!@$ "Yq |PHd]Wڄadu]D~>.Ìx]-=XQ@@$+"]/trqk@ I21)<5sC}>D" gnͻUú FE;H4dED$>'f㺮߅t ?,244Pp 'E*HdQMXY_V_.0`+֏P~`$ \;K]H{ӨW-@!Ȋ19 _hc8([ԏ"ۡٛ_Xt"WbA(©hyX_+{1*@ ȌOKόn9-b23C|?`G1nx,3A]{2ibm/FL5ɒNR m6>xcӲU&\Y7{^x,#o%CUl UAl#7SEwYTL6Ҳn720lZ;]#3I#*fmХ_1=ωa~-W=d={;E(z2Yp}Ś|7k­4! aҳy…[p&rLNY.'"ْWsxM%a ]9}w%XGCj #YjUP"95arĉw[8oo=T e(oz5LlvR`G5lwUh7m'gjkuMVQLl.918s>qJau4M5K^xeզ& \);]0WuT𧻓n1j2J̐MATY*Ǿ˨Z`UP}2\! džm(sx$.!Sh39f8opbs񩠱g9~#ߴr̦oB{O;^EL vNYuꐕ"WЩmSm&0h҉ou:sZ9n7Wס"2aEq Iph (׮{VCL WK߻Ow9do]~Ͻw@1A$ "PPO?~Ꙑ 8nP5^}dQMXY>TPH%[++\%ϻo۩g5g11i'bc~b!_Np}ɝ+_p;uvJ.dޓ@~gZ;ؕ[jKڱcǸq6n8bĈ%"HEJT0Q]W *dA쥿W9(Wޭˈ?vO_{·TKغY9kv{3ɔ[m* K*F x=E.aSO:eO#h_A?f7na,\"&ٸeְ^l]1€n("vW:NW5>sj᤼3la{+N'Fע_9k\U9͟n4,Iv(:'ND~s2Iy,>IIuu@VPY)Б'Zk?Ƭn*Wc&I2/LK1VHd*AO w1za?ro\Q⹥ӂK*QoA#&-"FΞcƸiS2Fh$KSaCf?<ȌA/b3(ϸi!ˇ5RoKL}^Lأ+q#oڙ- Ra`鹯/?D巛}.&XZFMkːg\`6;G_̡'IQjGT+FnakJfle2t?ݚs+NHLejV=E||'ro?Wޣuk_)J_ Sv{[z&X?j61rik$~tP 6m޶R-,#yyy۶m;}3NeIpvcg;N?CSU);OK[岙NC|1ķ˟u}A#=3y_Ku ydog_)LGHӐ݃H=8wNҏ.Ql\ۄ}|Z*gݜmȜF"jeWe6p0B^sKsNn]>& gJ'NKN_.r;k,MH1TæYo'7 "~q[md7:l櫂5J!41pA넓!}Ԫa}5{毝?W^-=rSm͆%H$,>_@tapJ<x6D2¯_e!f-xS9t޹ 0zaS#ħm2t˺Cu=FB~C{j]z:;OK JʧR/ޝn٬LG;|5;²<18k䉲(e/&oT}m7qN7xjƇ4G+u:H͚G-u>=YjP @RH&)$ţ }{0TB^Zd_uJde}O9xas +f慝bUkn݋TX =_D¸ZZd-ζ[޹5h@xPY$,)9: x_dt\6c!\ȿ;Ֆo/@$RHUWidbKfj/<!?d):.(3%%9SXEqd dXH@PR2c,}{zM=j1"~_BfАA+l+z}ԸE-)Hvmrl,YC ?8⋮'澻J8 &7rjZ̟γlZjz-{>K\4T)y(Er呔r*tDYS +ں_zRլw΂tumժUM4)#??SNs}büv|*KwlvM?SWUzufv.1}kT^oMrڈ[E,Ckڛ>wVՐZȑ3);-9fE];"\FU=]I1S"YYtpt/):HV)dΏV!.u>1F{YwJ(7WZ'76l3𖞺C2Ȩ7^LGײQg][|z|F&ú!?"iC2f6ۻב#G6u~A>},YLO] /ʑeo:|*E`sYُS<+ϽuLz$m9ti6JzYLlvR`G5lweu`t̉C]яSd h7m'gjkuMVerfgaDZ+Ś9:ʞK5۴)hj_7KwEETX&Ώ"{zȏה'QՕ2?jVc("gW/k_ۆ6a~+f8ιz.{?n>s!i-˨cYqWwo7svNW Eg<_ن BO}U!Sz5QGD_!Id2lfR$1``ޒu,Fd력'æ&D<V]Ŀ .4yKqaŧ́i=a)NRj:m- oZ9f7!SEĽFRjl4o}".`kZ4j@#fZ^AkF.5lq[߱vM]?O\is+5qQX%ajyՍzFpeF=VBUe}2;d SGopdMr{ᥪ0>~?kƲtgN$,x-9fܢ@FסoUuAPϖȔ)So+X йK2Y`020JJJ,2,.8>~r@iDŽ&H*ecɑKM-S׾EEioͩIix7e'\R! ;;4L%씴aIv㹨$,k0,2u mp"i@)nM(򜆅V "yCmZbA}!6dG zG8srr0 u<c\.eq :k'iOssҭ+8]~q:<3Lz._%t2dEVt3>˿P1 c2)`P$Cft*p<.8,>f3. b_R}ir鮰HN/VЁ{t_37n U wįOツ "?q"Y!@̯O9}=+}:D˻_u"YAa0PD6vRV{u 6ݧ;D"BQ%'&5hPu%''k"w})Evojbp H*)9ۍ7fd¯|w8PɊg0LL(|aFFxPV~ t੫ӱ$װ2?wz)ELH$LE1ȱ}A$+.ǹu] ~Eu"PBHD2Fg?/Qtw JOK8]j$K[KD2  (d@!@$ "PBHD2 P,JѨ)æ3c Jj9ܯ3-hK> 4@{X) .ʸ8pDx;ڰV2PȊdA|"}&`kظx.;Vj$6b165 o59ihZ,P@#9ޒXg^ϝ/JګbuI>]Ѭ,P@R#9տG>qZ>feϣү8 coY}rV} >1fD)Λ/-K~3k\+ 3<:VdaU3Soo^:x F2"7awt[v.2yJZXVJȍCWggki0Q%cC9u=jxʻc{$쥅Ur$UQBQ72fTBPhR#e9,hᯟnjN{S-y4ZzXK)"pb~.lӞn_k}^5ؘI|\;qՄ32 -(WAL> UdyK3bvs9od2&GP-k1dΪ#z̍J;UӛFP~?yQ£kmm:1zp1cfxf:E'+ҽV>C L}Z.U.Y4c?ܙ׺//Ȇ[6W\?7as\ىz]9 695gu/*xY;ZƆ-u5E&Ҵן|&#Mıs'"HE3ٽձj^ Cp}u;_M۔LBz w]~6O24̚Z0E$`L?ZzFҕbnk~×)(WsԂ /ME&59V}3_v>F "n2.cI\pawŧyMLY>*fOFl`콲>Ԝ+z٢9.hJ+NY^ՒdD]+G7J=xUtAW{{Hd{2)Iݴl&{sbՂZd'PHf ݲic]OѣPT>]4 .qg~eKe5.=;O:vm\J=ٔ;g; Gé{o/z?\-L8q64IeVHẚ)7[ lMfVhDpΜEVMu{턝qSWϣWh6R3fnygk^3ptk"ϫFs|hx䂵[N1TаC/̲ eK(׾ի9h=D2Fض!Rg&Ǘ~9`^DÀ5#9\Jzr?mёJ7W~H& $" ?k]עޣ2n<α6>Nܯ3-2]6߹Ǵ&f=qziez;zŮ\ #/gIUC=Ff}}흺G{;^%%/~H[WO˗&ffu]Pk޾yO?Gb-Dh utkqRy Q}yx+f͓wf#Oss }2Vjh馫yi{y  ZV  hM$}zx u]e1|:${ڲ:QL0-&geko6k^FC?OZKRATnԄ:q<11Uazztegguu깜+ 3<:ni]7_~NS,mf~+Q.A- _ոlS,=5[DvHcmnH?=pvsb#g1Ac4Ŀ̾>Q/w5ɒP ?lh,]}0gcDv@wɣەRqF]9;Kv}g.}$i{'92clPċQIOTHFEݜ n-Z0cT΋s^|deCM6bw;ޜ^ycVjXbH! aCk{G8sWcZ&rA󾾻>ZzLTX>9|+)Irx'+Elj~n#tCzt6;x#ton9QWr@Qri3r =ܵ@r'|nWAuZ{>|ƸFc$充#3n[ٸ '-Fɓ6 Cl=vF !ޏunW$GLWs=MiVL_w.,LDUjc}\H>~u]PAr.=ǼoK$8ĭyQXL=^r.Yw̯bm 6¹a5sGqyϖ}m>52ρ.߳mGХWFY]f =g)yuryro_R ݮdIޜ N3aּ;"Zc֒w<۶h%eGdWa<-9;!x NEei1Zmӹ\M(7wdnLR*OS@$~G3Mͷ7Y]HQTd*8uď٪ya-ܺ+$KUҼ}3{e"Y ut;ؔgҤ/gTd…8 ;a#dOQ1rW"6Ѝ1@TҠ# lWr3͉ޮ7n&CM 2SH?M W\WWQAoHDR@T>|-D a~(b ,A#D1rG=nW/u%/޿ɫiʓ)v0JFyF+YloL]z49qِ Jv?:]ڻ!,̷Ú-O֘V&PTdu'_Z (G[P~̭g""L&nX롳|ӑÉ}mVxZ% ,kڛ>ćv 6, x5#OgRvZ҃zvVץi&Y/H2<]1i 4eQֶq&WU6,C{Wٯr; _L\|6ۼܙLŲyqkmW"YY֘yeKbU "Pv3W7;x>o-bn_7Aw"gׯq2>~xz+ ]Cٶذ*_Գk>n+>4>f鲙3*/ՕKJo//ۖxV% ^P%pGCU /rMw`UabL+IVMؿqGGWoO5p} Am Z3wAȨA|e6ܘeYr_D2Wq6T^OU;K.zR18~ʼR%t 8ԩLQ-}5_1]ϼe,kyLziĚXrǒrS {*6N<+J4x]ʴ[%#qfD̐P#{W"a2.thԕsY㵱Q⹥ӂK*QoAүίu=qH׮!3:dUH:6}~ǣVxP0va g~ V ¸gOu]ωcggoobjdVayOCzt6;x#ton9Qۗ#u;vMY 6Έ7{ޖ9v{84ߔHoJ%cj3K6|}ٚlȶhRK7'V-ޟa}/JYjNog_)LGʏ(Qn=-t^A!瞻•Q%Ay'j殉+>_w/Z "?wn-pHjQ)2Y_feǐXp? =xt]zeٴ؆&\g;wp;qWztХ/ҊRsВ=> {!.k^+;U4w}+<yau9Pf=);^4/бk{g"~YFgyuryro_mV "T ڭBHijwhaհgE[7rfOC{_UGǪc 5 :Ka SZMG!*(ѷF$eRw膏;pJ]:/}뫾S  SjfVaovq Wf =w8Y>!מ_%^KzZE]WLΝ9- "E1%BB<. !Oirb'#\`HRՆQP  ޽*ճjlBD z࿨dړȧ|/Йσ}-~s4?/4$qk@n^r Ev/_l?+,Ckڛ>G 俻p+mjX{O, n7 '|aKT 8BUi 5N(,fe9[\*[Y\ [znģ:gguY'J>׊d@MIC}ĆmW* v \wJVj* Uo195KvUPs &;Uq& v[3^]BmmţJqc"&:fmC=1Ŀ]yC}gTQ D2*$!h[!M< PdpdxV|F~+Waz 5`d*%%,娧Vd7кE,-Kޡfɬƙ{ɁNl,>>n3:w%)ypGHT1q- [/M}Qy^GdM(;_g${ەPs*)Ik׾rSj2PðwޡUF?5aJ`ᅮR/U'thi[ڰJ?5킲T޾}kee+r\5wdCfVugJ܇ZyoFZcǎqmܸqĈu]O"Y{%U|շw2"`ƪռdG#bx5qq9?CCW16ɿ~KUGĉO!v"zGOy-?ZC'0B汤-K/uW.(U !O+ni5EO- TWݹsٳ###]\\߿߽{wzrNmD2 xcت!s%\ ֳiɔ[Q?r~жYh76Oo֟+>gi[56!pOZJKէL~rMe?>u̒csYgD2,miܪMs:99LG]\5eƆOX&2I~sl͗aJ&jmviggg)I& 8ÑxBڈ;w}tROȊw<~ IvFLW7VJ}!|nذV.x"NgP=>sZF2fn<K|ju cV=]_MʉKMqyV! GS5剏>/^k#LY)=h63fiIuF*AZ[p.(喔yn:~׃u˘F\fþCR\f>5:J=°yzIϵ/1ïuv1 KiJ>{ht~iwF?\iI`>q:ݴ,"1{ִ"ٍ2r*|U{xEft|U#6UJ5ކ*pkTΙGD]{}TyưLu⾣( ԖvAhjkec> WjYJsG2ufdO+Ǵ}['Zo|"}(7J%(wMr,zQ|S4 1N;ϭ6fyL0BaަhʍOm!=λTWWn`0ɓgϞ]+KF\H^;|n]}{O3G( #Ǟ(kQͧKuKQFz- 5tG51;_.0B a=:#3af" 9r3鼻nߤ2BBN6/&2 ްyTy"_<ȍkxz5Y}nݺ?h*&>|cG =z4j+W0=.!%d2OW^@҂h:~m$7 BMk˷#qMT凎5w  d|L|f$32zNTn/l A6c MMׯ_ρM ]"ZtP6kvX Hs6Dz}kj;OQx6PxaFca,ֹ[)bZ6@i/WY1HX!㴖-91]ny'}w{Ā,ӍA{tbjK ;[GGi޿%gnɉ + 0 Ji}ϔܫ Z20 xVlmNK ]5| VzW3WKo׹a7n&//OyGDlfLvt.MX䱦'xq򮫎j9WQ) oZ\Fwoҵbg./]vղixe^.k:¯9~[g>>>p֙Q9.i~{P'sCtv۷2lE@Ӯ85%%%hE.Brۻh4d}v$$w h*?wd4]^^`:N z7u E~yq*hl]X@oЋB2 (ϗ\aa!,BATtB/ ɌQvz]3 q1 ) F/(̿ǃwn:d +Hўx 0 @R LB2#@Hz@!8d988 "t=?37J>7^CD" g3tpAwɵ5 t9 :z@[3 $t K뺺.z ^O{GOQr]֑+OUqJCv3zeɁnpZRz_;^1k`?qL7p]Ϊ'!gΌ@~uvVDɻms yZ⿌VSu_6 ?n{痏_ޡY'6o9c`)LwSo7,N_~Mw4_;h^a5|BGؤff'˗n:rCq-eۖ;Ip:L+vtZ*Z i֚rhzdm]s+Fc pf߈afM{UYCYZo˿%׼pF<{Wɣy"# K(`^Y bV+!@J<݄O F5$ 1)[$+'YXy)} ixՓ.Cw ܘ._|aݜ#Q#PUԑC]whe>K9orxy,&JbUMkC*X&wn4׻Ζ! -Q׻ʝA1 _ظ|~(V4A)a 1ͽ0lUUA3zJ?Zog7IҰ8VG7l틍-vZ6R_HqY*n ]9H7vG |@[쿵7qHkoȐmqϽ0xC7K)|).{>baBPњh25}}&$> ySG1(B_ szIŋ'2v@>5v;B' bYBH'c0oЏrlG+,kT3zL:Np~uF{WRWW?-pX1K-XkԲ\榏Zw2bMϊ>{U(XSl .w_]-swh82ǴA=+5fd첆Q6>uk;+FzSǬ"5LcGDSգc>TÊx45׾+{4=J^Wdqq\ 4{+osz8X %׼N}8>/c$o=7g}ERFZ,01o*/) _bb SCsyhEP(fo.U|Qr.'n߲e֘3GY/?wVX]{?|`MQDZٴECB Z0 55^嗝M18c(BebaFŽ kVs8X84kS?0Ωܕ QRo˿ېL7ybNZə1~*F{&Bt@KxC ]m/A(D 2r;c`yު&=?Ϥ %t:yq ώW1j6oh%󜚊ZEHyA9NoLXNn.kZܘAy0{a}:=m5;.$=tllpUC'VDQ9񡌦)j5<`Iމ]՛+n cV@gK4#HX yܫ # pN//֊9K4y6]|6/JTKIܶ\_G5^219~5Xn)UCeZ\> ]C[_Y] ,4ʄЁgw2PŔ|~vʬ`}w~3f2Z}]hR/cIߛ>aheBpqp:f,0(bx±re_+ԇ x a6v,- We_S^V(˚+?x檕qgݧ(`~^*{N6&2?iņo=XOHTE2#:3gOȞk9GmL%S Z®Nz+lrw OoGnHȡ!!-@X*Br<۔7_-boPu·t|p>fwk1 'ΦTL`o˿_;gz2;= dsA`(; AOݥ큞_kB,0J rCI#p]?z~B8?S 뎼" 3k?B2#@Hz@!:@/dG B2#@H&?1N v߮l'iܤ. 纷 ϯdjiNK՗&z22dǻ Zm>+.ns\~sEVh/GŞ{'(?xΪ96" ڻ9콗 DYm+iӭ XEBYNL%7`es MEoFГ9Ur(q r־>|W7[f~|_cޢ F/J+2󒥕M2TR ZigXn1?&Bn-s6WHNeœv86[Eκos*4̧<9wg whʗ?>x.@|^k?N `^bFquZ Aj-\)1:J IUsSYգ}_\ubunj(!^ %F(zAINnkK9mog,߯}bͯ\G{,$/"S~)%/S"nCmԴ*.hƟh>qe\{{u:$5v:1e39 q:fxSL=315Y1~8$r)>6KVfXZ{E !NC=(jhbb\^ 33#UX?Eqrradb,|C3'q ~$BkHj`dDbLXZ {'N_͊Alpb:?ޫ>bUiM+,YVĒVQ\cGG%N{u6$SĦ!iKE͏Mj%k_Hs +!{JtDG3e6j2u?t@ƴ#|WnV8kN8=:ProbzN#y>w*ˆ8‘A;c󂻣W/L4ܦ۫Zqd$HqQK<84 ᐇO?Uyɐخ(8 ׆[8zΔ'T#M#UJY~9/3J0OHvY.afIbs!Mݗ'ޓ/i:lCKLV[<)VNEM%!RN! '9`Z(AyoMPö?K'!z٣";:4Cv>pfBb+NԩP ;sꐦ\D۔c8M Dܨ5AiÂêDˉRW%ү>*8i˱ʺR!WX̓m2Js}V-oJe?A?]і^[ZR;ߊOFKSNPz+)NGp7j%rܪ}'bdM!C̼)1ͩe;Ѧ2×?溾2NgAMaCShBڶ xr̙ץDg%¬SYBv+u#2 K]>/,^HBp)# z]X1VXg;VhXhbs[ԣU}˼/n{A +,gP`<ok8uHF=qm7\y#c {2䃣݃;,AcXa_#Nzrk2|kSw$JF0WijDf ۭfhZo!l>S喇,W}&4\jߟ9#2`voe𗂐վ;+2`VoyP&=N'RF+iB2#tL9^F@! $=dG WB25XW9#Ȁ˩o 7>x3C]|uUMGS6,S#}k@x%tHݶ/dE!sEJ[J1?;ɇ3c]u?niDܦ mĺɋC.M?waWC چ߼aOZuBx7^K8/6?Y4*5c[%B/Pb:ݾE h:>`.#Npn( y;9>2[sCLQ'[۟ m:k$}]yY?S1>a9Uv́{6zm\7׈ 57{ }Wy*HϭD]=]1be9iN(6-Zi )k;|uH9?\hS!龃_h6)nlY;?S{v,/gw׍sw9_Z /7yزO.'C%.G$`oeTD1M@ҳ) !9yIgD2DXIS|9har͘ rXwƘ {j ЉL/w-΢ cwG$(փ_kɠex35YJ!ҞOVC#oJr:xq s/- D~2H}hA:}_A{qŷiW8V}|g)6ZqUzZdW qj|]RtлP\"7ق s|j|}n2ظ.ClA[a^`~ª .rb㩱ۻdI.aK !!Vx%Zv "Xc4֬ړ3͍4*Z\h; WHcՆ%n20yR+B:6͒zfGc繅c"/bȘGejZXez!'63hhe 4lĮ mݏu+^m o$SFBwCˉC"W:;4b jX@Hmpj*U/dGm3#hBE0dʳ97?~^Opw,&#UcgrNlo: QĦ!iKE͏Mj%14r+Yz^p#_eK˦B)|U-d8H lu1,eRKs895a,B^ 7GIXȭE $['!JΙ=]MH޾d4ʌ^K;mFza)GNE/:3>!AĆn* ]#MS.*Ā _\<* bMͲÁO}lP]11eשѫFj եմn4\<)QyY_g29-S愓ߣ%G&FΊGl1`F=㣔-ݨ:{ 6M +06|qڔ4QWE6N\o%3}<:Uf8C+f<{\F˘ e2lWǸ%Si1e4L 2,4] b2`mSI'#e%uCy~ʌXY-S#$zOܷࠨt80W0FJ*]-pТqO\./?DĦ W`Y9W֋-k*ǦI|/]j^?9hTjƋ ʪj]-cdB޾%--' Y`@ @()QPR+(*?BD47]X12ڻ]B2=Nzݪ_%-%E"D_![ƋgF%%ũtD$ww,$$g5_rL<}d2}` @Ea2Qa,11R"Q`ˈ&$$ B;maWRB!*vЁF tw!I`'YZKII7D1nc$."Qdz..%(Hvqz1[R?~3xO?}Ku!ވ:~M|nFxs4B *++^~-%)K+ʟ<}9룜#;NZZ۷BQϱ{y:ʧӃ L% /O_{5?oUE֗O=Cy9~>d{nagDeR'=q\L;2b-UwN0_C7uۄVyJ 4ovwЁ_ɵ#n1Oz1# M5K=v3B[6Cc †sk٧7 TGcy+E  |,e)s+`KG-taׂuxZu?niDܦ /s\χf ]pSh/^y"CZDHܜ9a` {.jg5^)xR73 U\]Oy_c܇}]-dѺaFǹfV"d^ mcٔ GW<%dk^4iZV;sXu*X\{Ω7zqFKKϳޓ5`|dg[o)}K>3i2H=(s&:Ci'6uA9f4,|6%k{AfW(1ۼ5CSe͘^qJs$}! a QZy``ah5 M)j(]UDZ#5gR!m&hGB[I|pE>c2zUf bș Cj+h\-,G~0c5Nڐu^1R>-6)dbOqsúbSR=[N`m1+81u )ʚ ZL8h<oa֗g֦?ϢEx @|I3#2㱨(c E)Yv%:i!᳞>Bx7^KG&>߭b;gan2%_Omf@TUј] K ݾE bK!#(^gV }7nW髄$~~[7L9*sZ.ڇ b2t~<|6N\>'?.jSER#=&U"`٨e.Fml8*quBl]Y1bB(GmGԟDY)cg3$F$e]#%S𵛾هu"LRؾy $Gr `unI4}k5fF<>p0y)"][AF<|BF<x ߢsh͛owzx `fx.9ysBwhe貛3=/4|e U;}dgӾ-= qGca|hnzoLQD1t\kWM' TO>HC׻Kc/Ds){IpW^7D#*ϵFyih/nt\͛OىM/R[(zc*V^6?Kӛ5NSng'C<ҩ\t/o76,ڝiUixFO7u0116ۆ6 n}jFX97yزO.'C%Z J*vtjAQVDSu]D9U~ A+J4#AUCS; U\yէl[y>xnRl'f{r|'opq8w-ʎK\zaB/N:Kbɳa31N>ۊ IJsKnNY1CuR͓ޒtiV!1$ym#?KS& .qnOS_m1 uHd[Afl@4QV^IA)Zp|3fc;cL{vӶ3.q}/D !PVVֹ|&Nx ߦ!^z/7[E;)Zv^/*nf ?=SAv901)aO9{k_ ܙ"4g#(+))#-KSd"2d B26F:u滛f oW& 0b LUy9;U."i;Zm=QoE&_uT!#yάrɇQ+ZW%3c}.F/Q, 6O)glFp^ÒONW ٕxc@M+#*L}]F4ZPonߗ/e4DJ/_u`V֗s)S|Hŷio{B}]\Zǎ E9N9f^40'֜}Ȕ'WM4۝P}".gV%T<@E7ŘB3YFD >u C9lK ;d[]]ceGo9fߖpHPMϱSg(MF}=g-ĠuG¿9Ox!y2< t;=UbQX>dd+.fxz:62fmjt1[5e؍7B+w9(:(pV,3ڍ2Fal.YaK*~Rsnm1)JIIdd3߿?C2aC&ؿY@r\+qתeXf՞xLi 9mF~?\CVum%5 +m;DitDIEhC`jጠzr1v֑嵍'oI`@a' rX1]^)O m걵OY"eZ Ax=VmX&ysȻo~6Zr0gYx*>1 9+gkv+**ܹt4t4ZiifcAA.~1hQ?j圦tix6{b{c޲]Nul-?\blt3׹iXsGl,Vi)daVÂh!rOkqȓvi~P$ur1/ظԽ2`_C>9!\Ŝk5ů;K@@D"0͌0LJP(\W]Hlq]M}G_߮Ydad~O+]zl eFUHFvSv6?.oB2"NYݥL(*4]^^teT*yg m!^B KHIuy慅d QB2=c~B\Lizz<8\\\g +(i'01"=Lfc II~<` @Oã*-#KuM^(1>x @! @Hz@! $=¯djiNK՗&z̠h쾺٢鎔ڗOK[c[taEioG%K+9:e.A4\uʛ4%GԿߋVugeWdMo0 RGXAWߠy.|OFl2oͷhXMu֥?Cܗ0 c~!~8Nؽ;^N[HU5؊D-s51*xܝfق^^vcSWISߴ}҄@+jr-9X^ R+/C/t`#ۗ:#=<,Ѥ񇾔5ɋ}7Vr`J;o..^0@A@Ӊ)[vޘͱ/ kQbac-_`?:|o@ X|k"rRZя~:-~K/MqOH9f/d}m7z-peN=JΙ=]MH޾ddVG޻[IO[lAoR@H>~a6B,VnLh@ܾFd%0ʥhq'6tNWiN>Zk~&oUo/>a.+bw>1ux׿ \H<)붱&i!F\>uӋq*qE]-=U &l)iJ9˻I{;ů׾t8c8EPҗRbwF[ ak3$dbEꂼ*Di3kWݰ_xMb2JQ]d F1X@Oԩ#2ZQ0è.0@tE,٥ݽʊTlǜfv$t?ڏx~qܔAKn :%&,2q'l`2z\g.i)55Ghݦkh}+"BiYk)鞐\WW5''.| # hik+(8GESwunog&$)r RPkur.{\d-FZpd@#zţM?Agå~WN0Pб)!,Zjӈ6+BV>- $ZO9XMn \ pPTR`欀?}p[IYtC2$=Zܑ}5Q*q FH M<?)pÅ#l[u'⨏g GK KӚ5L͋B4 kK^g,s_MUJUzB#PN/ϼOk6f޾+`FER[ШԌUպ0[XM]Bݽ}KZZi@OuHL]_uMaIs]dq*>{ n ?RD׶]'K(|ߕcLܾfA`|;J2u̖YStn®۶moռ"ӶNQQ3N‹*?k|cc}FT#ael[b]RXyaI cDAIwdx\ R;2?whQ׸'mx"cD${ܖ]#v0Íe`|%#99uj 2~§pVsE^>/^ŗ2!l>khtaȼkt sAW _RR::z|$Zb[^qN_ۗOMM,P_!RiY++˕TRΧ@H!^Gx|Nx\^^dggw:BBB.Œǃ~ E_` ߄/_0oǷp* ݥ_ $s]ZVzx<1޸}1>& 5;8r !x|5Wak7|A^NĜD"1߹sm[e+KkA@7 _XI$HH{^EADV,xb=_EE,ػػz NH74)S{0;;;,NvKJK^58#3[hR7oP٣Ww]=ik&;zo#X /m72ƆI_X-K>ĩRν[Z$8X7)o)zVT]t oxRO>!?BG '-wԑd,*FVRDLJE?p ƽ\V+0@Ӵz m/ag^X= -GES~8%/bo;S!HSѵ?7ln/Y Y=.}ӼBKߒSHl1#d1uqSe^ݺ24<E;pŒe~M/3}"o<{J{l.*J9%^ԣr 5~3V-jDiË.. E­K:()dee) 2ZZ$<|p-,9`[a{kuu{89/„d. 5?;:ā(J{suqg[վ]\I|]R.0-;}jG)>62Gnid$$uzLG-WNԡ?;2lX.Wg|xK1/YATІ+!/H{ZdH|, &}$xy ƛ>u\͟Bu:O5|scn񃰅1f_ƬZ4ѻN x}x٨~_ @CUJn*ܚ?t-ǻI~vάa m~ƚnJjo>/MAA!-_~ ߌJzyzcSڠ! ?p-omkK>8:$Mw7iqKEY/;}w3ev1ּgx_E]jkg[E3@LTS'87Ա泓AQ)HÐJ}=9ČR" 6S FK(#Pf䛡"oa1$Yoע\Hv߾O]|ϰ"vHAvfҙvz",'gncnJo>ɻ;sc!T@V;@gɞhS~r2n lK!Iuݺ++~J1otވ}tz[K{FǸ$D^&vΕmW ;SEu{Q1+&DޱRFMaD ),b5=R(=C$sKC ~[HMvڲ W r+,h5Z Q9->ITsl0E@ ĺCa岉2 R,,&NN쒰LJ?j,e` Ie2(jaLDj$i<}{wGEik﯑RRmRP/!|s?P1m(ᇕzrG<=/8i􀈃~v1mu ;#TkRYV%'I=X%LMB d rsNX&`aS'Jҳ%uZP;mц*Okıuwرzhq-.I$եG,Äzf74wͭ*CĞt2yM_bjOyRc&tS'f>gLJMz~UJe!K{u}=.j3 G>FoGz8PTTL~ZOנ_o^8 UoM(fd{(tgő+%KVny%} *qZ[|\N~$ Xv,K쎿و+53E"n/搉9W7<ԷNq-P@%h x{֣1E:>9bqߔܛڢA8 jcq˓Msz5tXdyuP𬵣n]Qhѷ;/ph߰Z?%<·Jş?2%G>$U yQ9htlm^G mռ6.|;߱SڑAà#)O6_ݘCA1xix%F6]>R.yA.%H|vڲ W3 Uζ0nw=qߐZvԕ?ȓS_lFJԸ?y:)EƽoěO8q3}.M;6"PQ" _oX*#X1ڢ{U Ha ]-kUbrTUXXXRRbens!b'G--ssrh4FF~O[U$ia\M2'\=w4߰Mtג>$D061B7y>d^@ͩz4}|EXݰKKӲ+E-)=JhP{7Gҫ a/[r?8:,OfDZMܒvy)SAqq(("=+.CXI r;ߪM:gi/cbԗ/%D.kKKKʊK,K.[ZX`X$حpn2.n:7RȐH|vz-ؐ_%pDVj(aE|}iJQ ϪԻOK6JXgVK7=D%8޷t60ФzcU ܵ0hf4[$GzHN$Һ}Y/jB)xz?vrm87 CR)\ee%ebaXTTTLLH$( iQB޷{diE-5S}-+ ]a]an>W{1m8MYe-mrjt(|Q'-:=Ple&?3%t,=5WQ J=4?TjoS~3EӤT\%X+I۽lGvJiZX;ob鿿w'^?j\Ή8ϧʺxjwo@T~f KR{o^y+;gV"bt ~ˏz jhCCZҍsHyGv, x BLVim:Zj|7eF„dW#/~K|}ifOeWMkR삟7YKeqW?En((# nÒ f݋4~y 8j-3ބ}ff+$$I'/e;%iO$T\{E?]_;ӻR+z/╷6Hw;?t VyfJKK_?pfyױB2ٵtCms&(JRsy9YR( NG J6ĤKіP ۺg`XC#x[{{9Yykps%$a vÅd|xAM]<{򴸸x"=FⱼxGh@!HDDDS[GIYbI^(h~ Z&x<,聴z@!h $d] vAɿasdT~Jt=}\Ooag1?Aoޥ#T]gk90( j]8.t)"JSҲtk~&4AOe׼+3/*Vĺ179l,{*$!o%_8G{;psy$v1Q`>5Lo#LZ0,L˨ҙcxUq'vm |{"35>ݕ_FD.ᲊ2rZ7-/Fqp$nE(Ҭ[.Aź οjܒ88pKm[}e)JS/h]\nMf}=:?4mnG˗%_Gp* +*#ׇz+".NLN(8N F`ՔЊorh:斖}Nsd0ͪ{b28=~λ7zMƖ:rȁ>kYj}vTRKk+R{'GlR593Ĝ׬%O H(aKx"wXQ&Z˅ψn;9RPRuinc2L. - m*%j|GJ0k/SUȱ׈B_+Ly7\C6y[:st?C獌w,MQ$fnV.r[tp(Xw:3DU]i)/Cĥ%E(JѱRF"254 %2pxT 象PT٤ߜa Fw>$w.?hfY}adhk ^h/Sm@a˗UkRY^5  YL($A`/gFK :Ƈ[>uI E*]%^}vAf|RY\|.Ch -DD&Ξ?,AP>H۫LnکD.[52Kξr!hd6$}‰;VF_dOe82$@[Gxb&.|{.mr{"Qsn"7zŃ@I7'!6 S8`(=lp'Vg/] B Z>r [(]؉Jp߸x˔iNj2;Qa Іjw]9Db2uIJzz{Ɇ&ֶ~geos:oG?‘˿XBV+Qʟ2A޶-S//M=P/$!1?Tǘ~!_XZ%8Ό?ڑq(SPQ{7؊TFջĭ}Wե"\VaZ[wՎS/; 2|le4\gIfIfS^XWGqb:G-WNԡ?;2lX.WgW_V7oKhռ J=xyײKl/["n_a c =7ReY>h$wD4S~ZJ֖}ptuI2vnJoJ^v7fFy4cHuy#~nK'ͱË^ΎԱf䩦 .-əۘ-Nqncg'ثS^Hf$7̍gT俢^!\(b{d=qTaުvfҙvz^ a|NB|j2a\xE 3Ut_7aۙǩbBD.ed%dHHIfVR,,ĚjNUڞC)!f.,''vI zQ5sqK28=a幥N(U^ ٖ@4b.Jee` ď7TAoblJuJ=#sƞs4Pz@dyƂmu ;pjM 0 ڻD>@cbPB*CĞt2yM_bjOyh2;nIbM' _c&tS'f>gLJFTɚyzSRs* NTl֎^0hE‡4%68J%Yo YqJpwɪ[ƌЈ>8}-Y@>\nVy`R7`ٱ`/ٲ;f#TO&C"V强q(xQc7NՅqNvx甇7L͉"+;ow^5(a5}ϵ~J|O+O  ˒wН$& Z{׹=hU‡d!^rs;y#_8=5BEoOS;bT;]0zgJ Wtp7y#cxdqme(k{N7'CGSԌ,6o<d<]FS'FE'/d b"k&3R_{יOjvUEI+~y6W70zLmd Ns_VZNZGd(&&R=܇ 95Uo]_(pA'E(`s"ڳq8j,d '*wUv'BnU~^oy ^'Iey^޷b֤ᆕ^+1;[%1\o{p,O_qw%K><u7K?fi4 'u7wM5 4")7-tU(K |dLC^` Q،f˹$;HiT ),Nw#KCϬؗn2{J՗oMʋd@+&)U%ⅰ1CxlO83vBFg{/ )bLS5ͳ P;⩷l~i~ P]&N vB&K(*)+bp-ܪ!*L媡k9`؟⧏ܺ]kjiwJ3iAK SS?ex\m1ܜׯ^RT:ؒZ 2ɥOφ]c>qIdr[Ъ%DZb1;#3BN^aXmRζ]+`wo(C2v5]kjD ;u ˱Y,f[ڠ%ᔕJe`ܙcħ%8\K 2;yb*蜠%Kj .ž*0s aAHpyA .$spYWP:b/SrVd-{u9j+7;K/ ɜCmFN:sThi?Y6`೹zՇd#^X/W_}WeIM+wyx+w2"iE%\EZA@_A ʯ${9(U$Nq/d-̕[-$p 5m06w(Uz^x}5~TI܆S Dt&5TzϷ%ܒGKz:'JurY{m tgX_ Q9=1V_{/jo[oFű2?FGox}]r׃7-{9sҊ o՘Lo-}/8Q}N!#V햁}_O-ee &ﮀ5լ#F-Q@%mٶq9-;?~mSm!ۻpv^eOtC؅ϯlv 7-dŝY宽gl:E-?vy@Nb@}ɣS>]7 뭉z_/ ǭ<9IkOAz{؋O7Xox~z ބ;Q*]x_w'3KJCL`t5:3YTzŕ==Rhj#U*(>1OH化>w5 &(GlŅhea+;vv_d"{HiU3l_`9MIIJۚ'C^jг;r}3 r(]æ+RSϚo],60) / sOy5vQeˇYSU -LQw%?MlԻ̛kJ)ͣ 9wW{ԡB{׾ԜBS 8X3˿abcmc3l6o )/(e#dyQRPQ(IB, On2ݍ9%vEF jR&P/=yܺmY9M&&ETǽ-ABji2٬ć_*]4Re>R햒Z̲i?vq8[B@>āSf<5aM8ЂafX~--9Ep(OFU_.DHJ+#P*b~=k։(*#{Svt"6ȪRPiU ~1n<*v(®:c܆ jFk_zARPMo ,Dظ#kK*-+H#u4X$&+sq"x4FH;cWZϑÑQnv(ZԯGLnע6 w\}H~6bH\»5LۭC}CG[o'z{3u-iöAXUlEwm\$ fگ9k+T,CĆcW (E [XK&iZRٺ U\3NRZ].6ݒb']x,./3VxDE"J:"[^>gOjgFYf\B2[ݦlr1ov=͡PM`KrTC.E/l3rPknxE1B|]m6m+)&u׈k谀cu ,vWR72Z.JDE_QSY{Zx9l=~K".A.RtD٢Kk&u_b#om+[i֑sī7%Y/zAvޒ}HV e#<f CV5\>'CweTb;Rn_UN'F`K( Tc[]+ogK3ߔ6#dոXsIkPqBr}Y-_@Zc5`}*L ؽ bwOB{A԰)×?UpDHiKG+m:Qhr%LUzRm ,!TaHƋD >[ͱ]_봈V2bC,Ě,WOTve`X/zQEJްPG`K($l&##7^Q"5iK]TOժnv_ l>J;-jQ톿կpi1(C9l&8fb5Q]KF--i.C/Noⵔ~/hwZe(-`].M/oaxK bo wu &u>B\7D =zOoo ;p8o_nl6.m@KX-!e(gԪx_ZLTjNf*XǑMI(De:h }%B5YBDBkWx@Qi- X%$ʣ;ֿz`bj*BR@K%$(**x#!!{eg---*)oLhiHj\ٓEHѰP^AA\@-!҂P(JR%'cyGEQ ZEDD4uUX,fbW81[BtRgy]acDx^ @h>^ @4^ @xuk,>z慨6R/IENDB`PKs#LBi*<<-Pictures/1000000000000141000000F12A6E4014.pngPNG  IHDRAђa%٥Kӝ|1<=%wrUlybJK\Aww#=Y,-EV!٬UG4̣:OjHO>zPNmܡ'O< ~>~Um^0^xv%Gky4~Gwn/>zY\\А28W*&2 uJSy٥A,.Jd󡛎vBsNHcs#sO=VrQۆpx|Fm=O"D.lɕ*PmMfSVh C`(kgOeX⒊ g]4:nCQΎ)~&|9[wS<x Z۹~iN vSJf1,dJ95{;& pఙ)Em#(]OMs\ncJ s|#:mμb>qf|&ۥʬY5s=XLΚ.LH('}K@ c0Cdf3ϓsr]Θ5b'Fv<|@g3'??|WoZk/|~̴Q}5%~x{+S>fǼirD"/wAyB퓊rΞwZY[IڂJ: pjB?nvV[㙓0߈N1l{  ߄2~]x_Z pE8NNV\rr[[.qgkB:*cdk쬅?>V>Ɓ i[+xaagcUfm;zЍa2ް==<OIZml|<=4 .?,:|Pz;Ry,kfM,Tt_!n]I@U$UW] $7FLq]gR;^%?}ÁcMH6ޗ @ø>X,hhv܋gjԨvCm WڪԝvTv%'m-}]QVsL{9Gt`@xoU>2 rkjMh3m)wX6 q|cMe5e嬉- 0H zIAZd˳l\;54jF ˆh ?CZ<4ޣ֚.XzO 4,f[Go׶(*+6On8V6lsɽkh#1ДvS7ԓ5Zk4Yzrmihl3TBB>O:Δ`43cq zW2 0"֠? àRh>A'̌2T$ elِ%ɭJc &! bHoeozȀ*a@@=L  A pDó|]0q4 @vG#X@%x <^CiQ X_bEg08oFSa pTW {^tzFF~VYOL&!<,"uk3! #t{^h K-?x\Z9i1_v\<ع./.{Ս{=чiɹUi17͞C60Z>]]&A=d0^k|wc| ρ}||f~!JPYY3g~}V8*ʱc^&###222!!md$V]v-k_wlW %eҤIiiouŵNS 3 + vO/ƛ 4 yEFFx{kWZevݿqV Ȉm!c9#Ucum߱cn޸V ܻ Zzʕ2L2j#ٳwM|KWa;MB(OOϼ~M|.] k֬IHH43n[ngPB%LV ?323ǎҶmۭ[`.]eV];wHZ;EEE&NzEGGav-۰qcAAAIqQ~vM1X&ʎ۱_}r*,}ÇYXXL0~Ȑ\ 3<}# 6n5s$sƊ% x̀=z۶[ji;W܊DM <|gׯ믿ҳbcFw=z-X֖ݻwOH{`%sNzĤ9sݻwϥNvZ2V2==tKTT?#5:(6m4q///H.@EfPP޽{w>.v\7A*_%$$BBB.\[o_X*bH-[C> ЌUi]|eMINN Ù4v>wa _Kr=)]?M6 v⹧Pk:3쌁2ZZ=̞3{%؟z_̎UƎMn6m<}t8ݻwev۷eq+,[Iz 8aRR6c4yP~

o޼?AyPφ*fjѾs(C[1hyд;sZ.k]p>]; Kh@3,* pttb?1sl[R\FiV'on*\JɬPgx6f#b =B>Ms;l۩`{laj>SfJT戩.>V0AS N8X_nmΧTw r1C.x:k)\#0Fu-Iᑘ>oOs+YLƪoړ1l8Bm]݋7nT #ܕV'.-(\#]+BB=Q6wsBnP( \AױH?~eg9+5J<c ˬ3&KS嫫Ix`Ya@dYoʀ[g<^^^ŋ 𮇧fطwab=?t,sJjw+ =a :I]̌ ܊bA=MMNvVmMb5իT؄ɠTDf?)>:(&eb2cJsrCZCf~n*/'6L ;8:;8V,R1,K*_&UUU mE/ A>~/ ѤBdXh"ɠ>*,vjNPai~e B f0FIwF9V]NNYPha!|Hʟ[͝;wǎs!o b Ullm"ګF$oT;87455&K)sk$tZr@sKL8qiX!]k]&e\.Ͽq<W7󴐱AO/hNCIG%%9=PCt$m~ ➗ ]<}[oKAe~,VZ_?[XZ---1iDtnR\8*a~P xs@ٳG2PriӦa?7ژmV3N;IO-SRP\JmTTKl]ZhYPh‚|P/N/+-r66Vwus/--Fu G2Pؖ `4vi6V}ΧإE/ ƙB#+{zy7uhtj . 䘛= VVX&4s@F a¸AF a¸AF ayА}q4@aK`P;6mڔ/{hcc|h(Mrssϟ?p@>|8mڴzkÆ 6Z*L7n܍7lbgnB&.%yС]vo[$̽uQ2f̙={^ti5>~PI5iᴸإγf͂,ySׂ!ְ\d y4ɜgϞ%y={ԩt!N޸qAЖv@>1XR 'UՙMEoLL=%@2d4}!MMh>ASN F>}6o޼p-[ݛBz .vzC}=tL΀wC]zuwv  Cpsh?C|ҥK*M={6^)`B}~F 씂ѸqBCCgK fꔑ|Пlccs֭l +!OݻwϥNvZ43ktףGٍ3Z>b"LS 7n<{l…/GЉ'&MB{|Md5?إy#Gk0VSXieh(v)ᓧLܩS}}o߾KŭXWSSlY&=9cV(}(CCK7~r;w:vcv,?)1q̙.2ď;vݺu"{Z*SPإп?|۵S.PuOKw@=.E :BOK ;#̞ `*k̞WyMz)bK ;#̞ `ތ:=$3!4? 4H͓T̞<-p.UM f?0IL?v ZT0{4'T-3=TiqK[l0{4°zL0{BdS>TW @&k=A?@GgKd1H&jgpU?Lfeh=A?@@7Hq4@7Hq4@rb"&Iˊ]@(v)aܘ~Rd@&=A21 pY2pFiTC!b> ӏ]J8:L0{İ'4H&=A2.Kfeh=2&,]<-.v)\0{İ|BBdB,i }P.Q?%1)@A2k[2TM{ !prnu|ȑ1c6F v 쩝?@oɬEqY R2큜0DHBB}'H$֢?4CKe f8OH@hZ-rO{Cj# a;U1|j:yժtww~̑#%)F8v  Þ  Y d=P4Hr[Gm!B,YΝ: Okb!)U)v~7hhE{7&\yk͛hzcJg>(v)t -,oB[zƌG ÆazcJg(v)iߡ|XPPUy!)FإS@QiQ#GGzcJg(v)aԠإqإcKӦ.E Lӏ]l1ni {Bdb$3p2c Oj,ٖcc'^Ő}V1 aOh̴ !4HfV?ubVrE/_x M [Q,1p8nV$ bTTED7FKe%%|>x&,J˂p֖lNb&ᵪ R5B v)Hnj.++! ߟdUUUdg?R;;߻V-ϟcnNA{EEu$piuuU^NmY ToFK}xGG'?IZ<[OOޠ@ %oM@FGiL}LQٰf'%& 4&yܲe6n,((().;v\JJJ۶m5Vv,:7mWC.}ackK))@@Z g! qj*ضv NTWध%%NT3 ҽ"](RrPT<8{ 0 ,;w;;p5ٖ&o,A?K)//r~XH$b~~3^{K*zݻw2ː }c .-zYO?~G˓cn\(XZYyyi6~pxdCpdݸ)}^Sq7vl=ŠO˖"o=-fShYҧO P6􂬆)jmbP* %TL5KKjzrIS+ ̇b.c׼z_? ٓvvQݺy|e`f,v) nkuB@"HD3bFEIRn! .E .E ӏ]@60mL?v)hK0tE"!N< +6veCmNpK@h{@h@7Hq4lD׮p_,--CCDG7wځ4lܻ{v)+Z]]'OܿwCǎ ԇ_}FѮ?vlcc;@U5V"P񮖖55UU4 {GGvн?j4akxnU 99ϱu2̚C%+-Vwқϡi7~*&?r߄J5\נj Dkro+KJIBiZtjVz%E"t҃]}К0.|bωQCa{G}WzPO3{Oń'M#Oa@4,}!-Օ\sKK¦ jo@y]Xjr{͛aaa]Kcii׾=;}li*8((($5M6:° =PFwRt nJ; 0aܼǏ>a-;@ 4[Q.KaԈBPAt:`2CO.?r*̌ rsS`0lڄydyy>U[WaJIq1b2m[i#إ& 9EEwݻ~ޅde_?&PRz( m]Bvufxxdvtں7o8:9pőM h4>wO~z[)BA!m,˗]]]-, 塜'ۺ"w۶mgaab(Φs/9 iؤ||f/o n9/P]N<UeIiIxxȚe1`X4lD" 'z jbqӷst!NgBscᛮѡu8 id7%YX5" ##~~V4@7HH_T#HsH;.0Ax֮uvQk9jzU 7q-O?Y =%0vrnߥ%jQa Xw XbW\Qѣk%f˗wM9r R6YlӦƍw ("d Af,S?3ڸ maٳ}ɓoݺIfxXBE2sx_u̘1R3PdOŽ0eggҴjT^Ri}{V{kٖK28YUU5g'OlhhٳGbB7'L–iQoUfPpPyy˗/}:x Oz9r̙3|ŋ}}}mۆU_dIFFT}o KbtdtL26VmcW%>;sZi/woc?g͊=t8 ^ZZZtnTII:uzGҹ[zahX'w2e_|qC圚 'N]aV, T4mm2ӋGW%6f?@;ka2tuuMHrNO?~޺uK9{vٲeϟa,2Yif6tl$!C,,$ؗՙ E,̙3=z4M: g͚GmٲEEI] 2R5kJX̭( >=sJ5jᢗ,ٰa)Sƣ:iϟ988KNAr NӦ59IFФq.\3<~/sO」}e֨e̓Isѣs~.\fEo߾ M:ct?ÚKx2j ڜ\ٶhxJo5x?K5 6k_RӪN0~O[<11 4rv{O?a0eZr޼y{n-Z̓ O0awnOSL ŋa:t;_3IXrQQ]jk몪*)P0(iTCǯ}iM5Ox_Z'ahRZ\4M5Ìქ#WO?j;MIs&´2OZr'\e%Wsq{[DR+)r%AZxHymm-4ヂA؃%5t]o'аك%5;b^|YHH;ki:6塅ykn ҍW$Ƅ:4WHp[ڠ!e֩Q~򍯋K'nS;]z 8nY`sG.Ұih!&gOnM=-|5߻>>G{Z&/Z-aDw 'ORRR4ְ늎{XJo5YN"eKCkB@6YhaDd˪Sw D9ꮩ)M}O"ҰibbmicZ4l4~=4lhѧzE H&$ѧz\H&f ΀jjGTеxO.i.ND`20ҰAۗjE<(+-qppӛR=|Eg0|>6bs+.5i fddkWDEwun 42D"qIqwf֧rs]PŋH$ &K$>xpo541i`0ީr:H4#"#-U֩rb}?{=jiibp3rrrۧ'aSNfP(MIXyqKi\__ʃӤyIDATxyHT'4 ӂ61i1RJ DZI[QijfaiՈ1Q[IAQ`QioNr̝Iw:p̽:{ܡ}QB1Á(4doF愄 0 Q;h\^^nkk 4Iz殮X\mccc|15!J޽;z+ CCÐ'''\F#z޽{!((Y?G5gϖ/_Ny*))y񽽽 Ν۸qczzzcccnn.Ҭ *Aedd@k׮ͼìj4@ǏGFFo:}v4/ZhnnnӧOnllLHHhhhb fM6UUUA 18vJJ T>|} 5;; L`Vk8C ੎EY9ĉG:]esڵǏPއJNNS>`jWsssRRo:ʕ+_~ 0M2smxdQ9 ]0Pr\L_|$} ^| ?~G kkkbR{Q[qƝV1EO3fP]fMXX#R 8KSNa~~><`244O(MD->;;;a EիP'''5ٰa/ hS믨HZ'#ӌ055E+mpBhwo߾oJJJ:::jFcOOP5558yd(`a,ic(FDY&9m]F+mJp-,,ۡVK_k|S>Q;!6DYB5T NpOsR_TӸWCiCDa =$uӌ3<<x ...|T'(pႱ1سgrIϟ?aK  h~ oV\\x"Tc_PwUZuj/}iwwsrW'fff <0aGDDPFةp-VVV>>>K,XbGHOOLSSSp|ID]v]xcUQݳg,`@ hV뤀 )z `:((JK@ddd#tB: ::-^?NK0DxY͛7oժU?~E$S`^Ό Ʒ EckkXA*1i$OjGnUPQc̙eeeMݥ^G 7`kD-pmi f, h ~k<fz~4^J@IENDB`PKs#LH9 C-Pictures/10000000000002CA0000024C70BB9EFB.pngPNG  IHDRLlIDATx`ǧmlz BHTEԧ(W|v]Qy P: -mӳuvf33ɲl #w9ܻ3s,#  q0  @AI=«@  SU6mn% t 9"5yj3k/  _\OgC/ǜSdNCn2BQ A;\"/d}) B>gVvAAܼrMUxn:/E^"WM  \T tɆ\%EQrD G+ Š~\+Q )k=ܮ01a e=Ll ?S[x"k Yv00a c㉧Wl?b#4Mp~ʀNOg MBΉ!Pq@HLJ@p8hgYUu>[˕jMs By U3aHGYm|(Iye Jc a!Am]>\6tl'- YH BQBRxrD>L\!Ίx>&urJ9SFjoN9 1pMlھRɒcDz,MC䴥u r!Ȉ06Vׄx4֝vz%+J}^El7dYW4ȿ]n#H;B]=(jؼuǐ:ܚWn©-ɣuq{s㌼p}х8!l[RPk*v;+ 5nqЙҡ#glغkWSYjl|5fo߹'jVW\:7!]P6),5:бS/|5><4Xp/O9p8JJ_~vZIU v6fhCpz%o4X~vbmnN6iC%USŷk-ۓFvnZ h ]h#C&6 8QhBt5Ѡ4&Q__:nRAJ-dS$nOoy؛<ߖy~FsYG[͍q "HGytbNˌmጇ,8@e9x-ER®h)/g&eCzWpmW0޽2\eƂ` DBa^\^?getA &JMpa6/.-wβyJpX\TTdlt8dŦfEM&Sӓ}7LO6ܬU1ZI5YӒ/ԗ pɳe95o:;b3Ϸl\i8PWW'/-X@ $m K;i 8OƤ`Lo37>'^sKO8t_spB>ϼ84q`HTɨ83#O_]obh|ŕ q@%\K' J{랿eN7'${Qplҗ.{eyoX,Fw?kSqn׈2%P{vftKT+69MM[НG򚦒ƾ-ͣI-:&ɓ HIUcnQPOW:\\7|yզ3E/\7=kiֆydW+kՊw\:k9UZ U6F:D8Aͼ|;[;_-'M;H99|YSp,hp7ֈыzyɅnw8q S$ `N M}(=tb"I[OGY}/#3ce+?uYlZoy't~;uWl47)\J  ~]GM{Vr8ڳR!~%{U\>(՚:wق6pߕ#3I\=z6ʏ0D8\~O6[׾C]77ͪVo]uz!qbS>iNda+kӗ?dgPϔ}bp|qm۹m6"K*7u8O̊ 7L1Wݯ$'>!u7Ylv[9&!>x_|kԵE,?zءCO7&1QCE +.368ZG9V~}6fJP0ԁSUByT' ]4pG#FtpHeK )ކܯ%1 p_ /TSW(n #Օ&|62[Y5Azʭ7k ~\{=8s3]7}/Lf#B-Czsĩ-d\> qɟaq6o;]444:(,:2>}½XVļC;b^ u-~eO͗:}@MGȸێ{G_w93bvǒu@\gҨUp]g]ըk]\R &z$0.,n6ڄ,"BpslIUVC = A׫Dvt^)^9,)M0βF V:EpH}u"Ġ,G$04BhGKrI%y{GU(+Wf*\`SR iҏIm%,4$:"y^%+3"9"x ͹Ȕu1X\pPPDX|l.RZw[Q_7oY^`khhpTx7G2/ 7]% ԠR|Xi/wMbWi5e 8\Wt+$|>99@^Pvx|RBTTTz@*-gZ aQIW6-CH$ooJN8vq&24( $0βaHKP6D&Dt FfH>8P/OFG1pqs@17#^}sW0Hq=E׭rZ^1p `@lM x@{w^,m˾5ta!?'8縅‹[ 9xL72-96%5%oK1郢{ к >ց ]CJg]H(D^yG^~-?o Y*ٳ2_å88Bjw/9 [DZI\IO} Zx K;iu)#' O?7DN_Rwp=I׈!7BRU7Y)jJ?pfF˳c@+d:QV^scgO ݔ54.ZḱghU{wjAA.鰼33CΖN_˲UUUAןeee sK<,4TPtHkOq:֓7w^ \ci8rp@ힲWsmMMbR?ۚUӯ[rLy]w{=ƃ)J5fE[PO2m)K^v>cE$Itz4۶occco֩S&Z\쥗_yz-Ey;f"DR֏m?믿-==88qӍ!Cſ^IbB>2y3fQي*BMM͏?tf]]˗6LiG>1 _|(}xO*f[;v@ۖh%ktI ~F;4.?k]\YYqu7.[rDĀڸɻvUWW_vلڑqV{I;v~?,| 둕T)o}v-WǷZFSӋv)n_1agg [2x0aQFր+-YrA^t]o" )i*t묯bI_k铧N$%5𬞽+]u钏Rӧ##"!#M;f^SS;YYaaiÆ j[h w9[{M|cbO: e!wΞg&aamEWL`}ڛne_2gT޽sGV%-Is@a`?㰹zjpF6MQ؜4qbcc#Dpum/B>׭[񔔔%K O޳>)6З}Xr4W[7RS]V!|]wwyǞ=3g^b11%RFSӋѨ_zg̀uǙ/y gw&'%uT?S31r)tOmɺ-__ugZę.[Cu`/ݴu"asȀ)_׳YkmVW__ oKwС-ickbfsZZINNǎLߧw9ݣGQn%Meee[ӼYz ]:er)U ~FL%-c͝$E]үВݝw^}rN Nb<⋳n-<,lgZ:3=K/>ԓv~w3_ݪ<>r_Xd܄A8*\8/7;7.Nˏ?1H6$mۊ^{-[?Sh%Mtٲ5V -i ݼ'A@["Q1X#GNjMZAӶH(2z߉E?ܿw׳]/P[[㌬j̺-[Tz)8!_WR\(QUUQ1#Gu>je-*, /O4zFc|B)X 2Hmۖ$>6~y^8{X~qIGݰq53gsf.ApYBZahNqoosr mu.I3D`k?wy'?s^WVZv}sҟwW)J=$5Vbj2Λnk-1)))r">n-'?9 i39j6xh^{姟}.6&􊉗3ZfZ/.x`_-8_YYj <}v^8J^p8tQ z/ϙAB07lϥ:8s4ezGV /ϘyYt1r˻n~\ ,FGGCK ~uguv=gV[z\*i&&&Uף3|{5bc ͔)ϹF7<+ʗni~]g_|^ٚW4׮q_,^[ϙWϸ{bc}USa]ꗒ u~M^vvz"""-Yh4VœiprzZllf jYpN[ϚlW$IʃѡĘж+ #q}((3MTY7M&rːy^:hDkۍ8[}Ty{j(&$:LE;:_ꚰܼں 찯/ªC?}?i&K=-}{E'h*E9gqS}!E/ڸ|@t`ц euÇ]T*?7?ڱlЪ H`.'^ ~P-$/n(S D-6&f˫o/ihJN=j"gqŏ H~=π6AA\EC]C^l Gpvb?.څfO?t H(C``za(vȋC`cCs-w  7j>u}9}. Y,}A"4,,+;\z!@ATjNW_Ww주@A. yGy  HAA   AA: t0(/A`P^  @AAy  HAA   AA: t0(/A`P^  @AAy  HAArNBvA$)bl$eTw/ 3)9YPt;?8"/7wԘ1 I4MwGu8ӧ6_~b"bΝc/,!)}A䯆aԴtܲiSTTVl=(/Ajj:A:ظe;@y47C@y  HAArA@kjj3$$3A(/MIiixXRu</..dFmm-|3yf5553WY!111O!j*T_@~2 أ 0WqW}i ?~\XXXXkd}̚5`ɒ%AAAr?'uH_~ĉ[I3hРիWgeeŏ1b}Od+/|Δ[/'֭]wu~B,, ^0Pa ]Q^X)SvoI[m /УGfGenyyyFqѢEwy'lVWW7 юFygA7a_7_ms7lܨn喡Cu/˲_|M(5z ox37myukjjwoll,\l_uUr~ 3g4ݻ##"ݻ'z')J9n8Ϭ9KLL*A޵|FJJʃ>=ɓN!_ߊCj&|5| 40:wd}yh2;wFFFG*iӠ~϶+!I&vmrb?~<{u{ՠ~ᤤ5k2 'O=z40W\ѮzԳ\_W -_k7o>}77xk!ꫯ Y"_QFz뭇vJ'ܹs)͏?wށ sHj4O>M7ߔգo&Ss.m_Nx{sȣ(޽{!YvlZ=p@8_n@K0㪫eSvFDD{ܩSʿ*yO<:C>ql?seyyN3&iwu <_~9rȚporʋP?AAA@ʜ?O?ϓ$yB{p72=*pxРAiiir&?SؼAA/nXx1/Gݾ}\e®\G1 nJi|s̉0a$VU믡tn VBB|C$|_~9ԛ/p.u nڴ鮻ZrכL=%;pb /,+( .k|UWMV}P]rZ%K #G ?eʔ_z144J?өS'5 $>g^ ׬>vܺ 2>{egTJ8sc*++nE8p-+L,JT_~}_|m1c ,|'M-[]td{bi<88x̘1 ]= }B9k^%$9M`dzPp8U!8ta,.t_.'x{,^Csl9sYfkNush4#Gxν6۶yMu jkj=9^ KߣVa3gkƌ~ػbżzuuu !hZ, :g֭e@{_#}q]F@𙧟|gq[oMӌNuJH|\!/7i䈋-bc\͞5>kɛcl̹7!!gL2:>9gνϬ?ui2(/^w!UeЯ_?(B}bph< pp ɑ˖-juW/s͛w׵˦J __W+G֠|g=O2rRXm >xnn2 is߾}f mjcc…z 7P- |s}syYivcBlKizzr~n'UW]?W`t"::4+| _W6zl/]q X|T)9&r"6&f֭1"k玢"o<_+{ӧOMӹl?;-]bܦ]TU9cƏz+Olت$yJkofkƳ#uVc𿢢\|b( QQQN ۟y隚M6#wر`ϛH snzyBpo^9%\cGWrqg,Zw3 y?3 mѣF~n&=rt0FY|_f }{tބ 9-JKt|ԨQ=w̖Lǎu&۸q!N|UWoMRz,n(/+ @ <k}/vkۅ)_@OqYB\|Kfy Q\x/bc i,+2zTǁp]' ꪪWA.jCCPa  D}cAp A Ƽ/?r ȋ؜{v%E P^ ͈HOw,9GIQJB'Ayi]O! yAA   AA: t0(/A`P^  @AAy  HAA   AA: t0(/A`P^  @ AHl/?O3i7V6p@( ϱQ' 'RRڤb(D mRcIҧUNROAQ` ɘ`U4IA.FP^ ~*cv/ 2D 0aTPk5J zZSoFP^ ~EQJb**<,<)):7nR e׿^;uݻ=ݳg||hV(q A 4ove@d@J"%%ZVkړ'OAѧOo j:U{Anwvi׮ 4zUPP߻wﰰPE' "RlV ".>b_TUU*eUU$3Lj0$$繠@lj2{vY+ i0!w#HAy!0;^zv 4I[ŗO[)bc{I~{VlR2rNڒiM!inի6ZN]m8T9!>axdYBsCeKXa>HGD% J @6Uhj-CS "4(=@J!JP,+A6f]:1Zk5S.)EAC( )&QMSL R.3ZђHޤH5#ͲZ\sk[vAb%TqRɀ)g[/y."" ) 5AM@jHB'2$@'f "zot I\L.! QջqrQODKyDl&00$ IKAΠ'Fm+-7I47Dˣ8^2[EI\ը-ܺ7H4(+Ɗw4 P*h9JS2I1j:_ EͿ^& AӀpr<C)(={ f3EDk@bhfbZm:4q-bBH#)$AG ( bR+uQH2h8$ H렼@hIJL$fk!VHPiSN` hH`cޖHey@`h",Ґ4 ߽RC[[ BlyhyhARR4# P*d)hZ(/vQ] AĐE@AJbQ^wQ#1PVC 8l#Jŗf ؄$"zK̉"eRPR*RJ{m(dA Ac Op1BN " B"BK Xv2<\W[kh0 ݝ"9(4C\?Đ HoyS""t&؛4 H렼@P A=SpJnb5LMhh9ЬC![Y74~H%8uňDkScNILMRԁ:VR*jumЗN $?pLNKoj4q!"PH^b D 'tW_l۾m3 "Cu:n%l5ͅEVMs(HT*_וW@ZcO@D~ڴ iv$ R8)uHF޴Z %R6UMCk@я9s(!&Ç' E@k6[Gmm O.]U" HZ|Phxxx(/RVJRP67jԪ̌neeeii11Kݫd>t1[6--ZBpwrAcS"#Bz,/9T-8!5E8%E ͈3(/T))IݼiÖ8`WTRRæ V|fVn$ۻwoܺ-<4 ,jj2 Ä)I=->kiu&STQv?Tj0PIӄJ9R0,͜*80D enAe244oWTV^A JSee$Ij6a K A\a*(J$u*JF@s C *~6ҧSc#i{ DjJFߢ&?qL5 )+'&9R-Ȕ6TTxaNXCP^ ~ ƨVDz&Jq}|)MzCж=#F ]l`O a($Cޤ%k*CAjjYa,I  4(;Gh#]J?o޼)IU`,v^VBЌ*W!1 H((-LDH^9vn5+Ԋcǎ ^hM3n ਰbb:Y'hϞ^n~;rw@E.Fh"2JZ~h CfduX9lAs%.תZK32©0H hJ%d%hj);20 X ++++ᨀ̌I 9n\*ս{r-eyCxiMZR7Ӕn ,sRW}->I!.Z q{gќ>K Q(+\3|[*{z'cbvw]ݩ:rcE4VP^R(3Sk+3/m~ 8x6(D+p f%ifl@̤;XNY5VUz\ Nօ;+k1)P)IkjZMQ#teeo XG %T[SRRvO V!>d *ڦԈ"9d9Tl1(A ⳻-ߧsQA,R"%R4$JbXذ`Pv(A|H$ S$ABX"IF̼7ozګ~soUuu5Jм?=U=S5CxlQC& `xxX.F~(KKoc9w/pG?}Mj7n޾/Pn [+XKPѽO#jS>g7}~f./]p|,M&œ0}bڂY]y?|k&&`,m\|fciQER$x!"&!㺪 ,`,VzDLTïobvQ=5m/TۑXWLDšٖI{q\ +bk |xtgXk}\^98őJ2Z9 N2zd"G=;C=?OØ ]K_x L hW;" g_z? ˂j̲zÜIM¸ 1#[l ɾG g]R{;or(t,zg#?ϟ<9mggÕY{ݮ϶2Xr( ".^=Z{ncw׋vX[ Tpe\0K V̿SdKW~ 6Q4KVtJ b[ 1Ci%XW| ̀v/a0%D0G Rmiym̻R(s&Q;r:ʕkۛn5Za-Q;77ʊ_$3I`%'iDvjd~ >52zBY d ElK9jKJ#Xα J\|^;w|A5>]F,APb iA^{4}pޟ֙3XkfϘNk/}yj.а¦24ݘzCLP(f\|)f>B"2 cΞ<QwlaD0MX$1 EF0baĵXX];\^C7TZV,'_ЖU4TʥZ-vUSXEA&GְY4A^\Ͽ)r$ ]/*|kR)j5loeaaa6sS7wIiU~.Sۓ&H< /s]{q$ƭ[O<7 [}mN+G8}hد2Y6M?jZiq)T`!]-3-79S 﫿#CO^d8Igse:4QubzZ40hz_ XYEl56KQ8 h놜K 2P,%Tڻ] ( ð)CnyK/ؖ;mݖt4ʖYkWs ą+ˡkN6OVsoުww;~ut'Pu1SQ%gYpejB< ,GKRD>(J1?pevrzr/oE"v۰ FJs@2N7գA~3^MDejXiGrbIWJA-)Hs9]m6֬(Ѫ4M3c2|E9 w`4bIgҜ\$N[m+^}m{kcgkK`sNA]ԋAJ&QtXPWU (@ b`R%L׽4Gϝ?W*ӮɜLJ<;^/J_isnda3-\jD}'ﴛ>cBP$DLژBUǔ'Hr)3DIqnj|iBtz~WC p/T룁3ZѲްP6)h FpD0'!1~5iD; {=x @v{-{m̔s\Gs9Sh43b!^d8P fSĪb¹bGۃJjaة3\|QgaWf{=`æG.CODݑ~ In7j^znzF74Ngnn[L )@눠E0 jmij 'pLʲ$&QB&Dƶ' ܃C1pX #>=W {+SAt Y(Y1Z$< b8W/gŭ|t]ζ;Е2VʸE0ýЎ . rfET;ibn3r (n,5LIbooT*ɑBkZaq0u\.7:I!CO^d8lXA:A4"b*Po-,Z tN.5 .tw&2C KAxyfAN`1_xМz(.^@nx {NNԢĵ_[ cNL;6?pu-< =G@.RG9u/aw[^*o~_\i fn439xĂ.2cEzt(<ʙ_ʚAmURQ bx@X@f{] D="{pXcBYpqͺr9XI8&eǿy^_]]^*.2SG8,|Z 8-C 2zal{Xu?i!Df3$3 }8@%ouʲ }jwU+&e!֖2)3 -b8rA+RBO8ֽ@}OWkKkK>jA_8ma5'x9vzQg8`Hƭ`Í&^;0HPY;B<_U BpniTVIaj0\=K ZH>Cn3ϯO"bgbLg(r8wva}#ǹ4 1rқV)MJ4F0f&a b'- GT;)rFAZHH p1Q[֍C_]wHv|,uma}qe%lZI0IRDȏcĹcN)x$SSLCZP&-O%rr+@ii5u"Tm]0wkɓ-m!e%o<`o Xa(78Tk_<7>AMHMgrEaB7p&2#N$+@rP+[4(Cϝ>xڀ!$<ښ3e%@ؖޯV{Ñ7b$2E 7e)J;gKXD!R&P}$\yC'SZCI/$b… S*`~Jt3?ڕO/^Z:h6 B6IPDm0qM30L/t[a/0DH<ת|: ^+RަPFI(g<ЍD@LCGx$cH㧟/,$QƁam6m)Yb bagV ;!EZi_?ÿ e ]Z==(W>rznX|Ԕ,ozwM+6n vo^9]IiH/!]|m[X\iwJ;{:fÀ|1 ܩ3Bq.Zv$ vaJK.Ri6R1vbqXYF p2t7P ±PDAp" ,'ŐÙ8I҄lû-"z Y<A|ǀs~4WP, qB< sNEӢMJd, }Wvףh m40޼EWQL}fIN,q~d|Zܙq??o߹rnNQ 3-a<}GAKsյ9n6w\wX!:sCPx*"kӧ65hN!4hdkˮ/b㣏a@CfPT R~)]5z (- ҷA?a9{fJ)T ͐#N&gLX>WTbV)b))[XT[XhYHpcMu&&]0k}bpIW7> /z&5_.?mG~lY:2xJwX}|Z0 %$j|<@%Z0 r=&̴r1/A>w4 AمJa{^df4?k++"0_n8>rWMf8җgw;o``g1]%0`#f̢j1^& a mKe,7&D4xiveTK%ҬA|j Fo}߶B^w\15CpbFt\t9]+;1rY.,@7%a)>Ph,kWO׽-It[Q[-,jq)a󋃶"IIџ=J֥"frc|,ҋ^y2@,^^LEt.z /IFܜ mYRQ޼4/N1!T\(JF#ԽP縮;Fd:lۭjϬ4t? ~`ы 'i`wf_ϋKwfsugvgP r+хwC?nMߩ˥¹kfs9RPĈHBNxyFR*Xx;mˍmQa)$X0Aᣦ?pM 劥coblX+Zѵ+-M5E燡bWg yaDV?x7şKV^$|mB|NmǢnY%ZjstG^3op B([1=M㇑2EUQ'$=Trb ;I9e^Ls0g~Uv!yh4Z\\.,8"v:sd$#CO^d880iNRD)goL'ͭDiO=B{n$ b<؃^+XD ()n 1,tO^ǎı23i,&~vÀ{C4 ł2,b X(U#Lg~4Bu*nt"_z歗.`%IcrS,'!z:6WNՊN~~{þ6p$,B{hy5ǰsr#|{Niaidi<zYiQ1B~DRGZ&!DlV%Fv REvvv*YVJ뺎M+C p1eқf,½j%9I43i%w7a 3mPbjl&Ԗp~I/s/!IQTE\w#:iqF$.'#3kOV:\ͺdݲ +Vr e.|{Ue2- GqN2[;?Ƿ|ۏh=&Xy,!Pčf JwF}R^Øw_"DCIÅSp4?P !>z\{W^!-M,dd"%[H\1~?ͨwZ֛~ꪺD}i!$jJu2҈8ܑ4 2|d"IAw|NG"`*~&nEz5aZ Ⱖ'iSO hk+K$Oh;G#+BS rDO"`:dҬ<{luD@Q6K"0pP B3bHnG46ۃw0*Λ_mTז>j:/evuQ\5`;aW˥VLJN_)(Ѓ*V',WhRPM3YO;IYF(c1,grV83۬,A\? QqOu\1Tf͐!'AF/2T@0k_wl{R1ksԣY 7%`:fNg8Ag3,_,(soSF467Z t`(]Ñp n/~>Oef(WUc߈YⓘbZ)8TP3wWr^/--yCqgAյk$ ,3Cpb3IJTv>`YYJy4qoƎn*sY'g$C@$ϐ y^)s,<ʹՑ%?!$urj꧉XQ۶*#Ӱ)YWG32dE Q5~7u+O%HWVjqT8P| X0,9%筝v4ND8IN`Lm#`v<-ϋ%O[A80 2PQ.VIr+c9vnӍ-8gn?s*CCWՂjX5+?b??cĂ \(t>ƽ G E!TۃVpXA!!|V.nq#xŢmañO3CVS"ʹ8K8DN!+a(5+++PE*j~Y4$CO^d8P;u1drnNv{j@δe`f1NW %xnɝ6a% nɚMBWދgwL_q\DZ,+Y}H"'Hژyh2x8Ȑ!'AF/2XQ1nrImAt%rB7. @.3Q)yǭB43 㻣;{֨S;.9fH^E3OQ*~AerkDuV:Dzq~Try52c0njpK p(+;x3嗇%R8YA,-,>&3өHq)tեaa0W[> uΩc&c.;0C>fhIQ@;N>Oۨe#CZoەRdGD p216Qhg7~%) ,ӒvSU%u%(@VkcgsN-i/YzܦFjaa˄V,Ps6/6=z9`hMZmc0M侮e[o>ܢibcbCę.^ēUTO\w93&QټR9E$z,0 Bل!8̸@:6v?kyT͋/-U(0!է#/X dD+1N)3mOlnJ3ҷaF,*a(?3H(8/ɸE pb1MP >?{jq]j!=! hDؐijͅL^TbŒ8ٳ\q}10,\D|AS76L0q[NL77m>|lB(E\,Vq~t〆~O4K/f9Tqʉ:+_R $RE/Y=V5q"sb.ϭA _&VR{3K !y" >=0=23k˲:ۭ:)q% tZ2d N,X;a ~O` ii(9eQb1GLjAM9, OeިH+gJSmVTwR&K#Ф=T2(B:on{dQ\ˇ|HHkb JeDM^\&iaQ~=z?zat 8E$"$EKcVu:sTQc=e,YI[}40)'ko|IspZ12dE..t>*2݌ȅϛ[!`@`ҨV a~a:04,{MaPus2 Bu#xe`= ib[狫݉9qJe'5Lsy j4>V$4 ubokP97Q m!8-5%v>i4S!|<5C Ǒы 'ISo03V3v`>Q޶z'spi1sJ?h31P#$ITr9SƠ֜rA\߃v zruXD F aS˩vzLDd"8X0n(/S0Ɠ0 ~=Zb3XGP3ךCy LhJzF$Qw\wwfjn7fkxz.wFK+b7O4B$s=wc0l !i+2ޫǏ0d"N aK4(RF-N cPoP]!VR*gOd7Q?M~+QyHV(hID~[j|vC/Ķ7DZ "(`>OҚjƭns xo?B8&ɛX=MtjIxza$9S^z $^5Rj1FXU"޾}~{?>~jwr_2ȤߔS:jIY$5 Jɐ!wCF/2L$`0JGfbVK{R%\ryݬK ·|/.}ź:X$nő S(fTwX2AAOSdITbz"r6r|Yq`.rǟKVv)1'|bEEwCܐ\nG#/SE>=ujYLHu})Vp8\/wLB/,8?PGb-78tӧ<ՉN geȐE͞t&(ΐ^veF6So4YaVq# vP)ގx%f? (NܜpӐR$U!i!8B-Av"/w)Ŝ>¤2%)?H[\N3o4 tX]RB ,i 'Ҏzx*9w/ܫBQ.hh$t+=jϜ^SnZKP .5 CPMy*pམ|}BQYvg !2zBN؂(В\i>|?䟘!pb3iON\6~Nc@p8>i0$7S<(7Q4Ql):NȬdx4zNONgY/ΝCNӫҴT3+qKHI$E˂r g"s `Ax}A s+' sH2GxoeyPjP^/}I7or?\.> ܹs+&'l>Gɐpyf9/eT?huDƦ}l3YDCΌÁeAj(0+/~rs0+!^r{ ?c?G`J#&5'.gwO|IE:xӅ>섑YGL:&Cmqo$jp⫹tn>YpG8cz,~ uoxK^̀$AIWg__\\t]w8-,,,.-EqR)oӋ iN$ǮKD ~&v"&|B0TȐ N 81\Z9οz߬#mVJ&h:19ydC?=s)JAWk&V)^~֣LH@#y+ v燳fs-gioՃY?' ۜ@f4i"PKVHq\W흨T8{KBNx)#G$ t:'`q9GbP㭷ުV J}owoeu%}, K0 K.M8\KfOxh ˗1 >12zBaL&p`#d]{݂HN;pp,R0>2۹șo,)o o7sLeFSK4m 1gq}<Ը1i(KQvZ}ol8pYN x.-S-5Q>ME  /(_?4pC<lKF뚚D I `kF(`8,kkkۉcBR;;3F#7|M3@1xL5$8R:edȐ#N2eJ{&A[[4V 7o 9mf~$Sry4qL$,*tѦwyj WkК3 ZS(#'cf?$M1=pY1~;HnC2K+1e4 9wF`LL03( nC]P*瞳:6ե%HA/r-#@Lp\Wx!zQ'du SBzyy~G9?|>}yx$D[ׯ_NX^PJ,mr1I=)΁ȩF82dEf#2T;!M }k4;HL->!.Ujtp 'yU>N80;޺>knQσ#@P|):R1ARcg{LYOgq2Գ${PDZ\ &Ի\3m1 q]׽i+z؛؛($Y-G._Ď#98˽I~qq;ۉdVEbI2(gN}k=3AJ#BDg@XkcC!Ud9ʹdhj(T}i hE[]2% 5jaf2 _KR_cȸdDe'֯OU(EݲL}hXrsI=~0xBT:Cݺ{h8H:t5kΟ?p—p# 2}HiKBsD8Nfnl醔IkL=YOG]ï$UY;,Z%$!ߖ<(}-FpdŶbIG^=NOK|J_A %tOv^xF}: >DE(-N2 \`{dTO{(X0'&JO GQ X|^]ϫY`d\F;oԍ GGkBǻX&رJ!IJjI{'b4LK_*yJ4m۶R)c Fb888xb1 [lo޶G5E|l+c~?XޜNiHvgQ|쁼̬mll#+bXvX( 2ij\ԾqC:=|DV=" IS;SYVtYz` T& SU}xﳸHWƜ9<3-OQYETx>Byb ȴ*zRqik%G*]TDVy4zԐ6,t=V%thZ+x!(T/,߽cNٺrd d(Lx{D8^ɯq\C;d2ɘ<B4'xrѢE^#iٶֶ\rddx4شqÃּիVX,vy#WN$Ɩ-[Bh^U;9잔Ubb0;vaD=U'&bL$<(RN{<ҞB>h!A/ud+A[|@Vʑe,dU.nx'9ECَUd*#dpUV9KEHtʵSt@89ûBB0bTɇUUJ67UU bZT%yaOdN"iUUֲeܗNf1MY|i@ըr^$0j*MvHXPTj)`d4{EahnK/5758wwժ՝DBӴxA`&iii^diDi֦i;>?OLBoEq {y.1Ÿ]`y#,^ΤyS )+l;[ml;wO si([<5>دʚEؕR鴅TsBs*B.JuY؎Svux@6sݖ-wup=;,@ӄ3Cyua3I@J;+׊93H'QȘ;*Xe]#GX4l[yEeڥ\βX` yY+O`t;GU-G4F;1U2KEmdkr̶{Ա1iN4biv8dȱ;Vz\˕IՑknU$d I  >JRs^sl,^=/j|>o.#Q__wqUUUl6,]DQYGx,|.!X>q!JL@CDE fI0Hs/9{ڑ|>H -Iף(%H f29uc{[~OIr(Y!RA5p q_T$< l#?4~!<-m*Z}C(ꆆֶwUP=JиRɔi[}$l&i|}dO&ywޚJG/ߞyͦ#bޚhUq: {lfX:{\&Q[ $b1$Q "u#Fĸ| &ǿ[_WOd)T*y)U4 B;Y\АH$.z0'Ea>2CxPuܳPn#p1hi 9eHwZS[Oֹ6P#y}DeVYԿ_T:_yϻkV ê[y@w篙Jj7w}zv,f )-yi Ng.䓙B!uStVg4J*~Y-bЭ;8,oϊ՗/,mZ6HnI/A)'OuɓXScÊ+ۅ.@@IDB{88aLfmزW|  &Wi|!)>_|RrrܰEͰ< ]lY}yj5x?OusAdR/B9SBxxdɕr>n>F#uU|pEIL-[rYZ'Inoo[* H323YnYyT#\lئM-؎%_QW4ϰy%?uMepBi6m_m_^Ν`5dmi2Ӈ7;vlJLVcy.LZ)9~-]HN-_4DPT$% nݺl6{7Bttr9J\T]A+&NɡT+j^0k /<iz ~Y k̔2bK9%HWwG(ZF: h4a7'$ɧKUp~|2+DZGmu{#pXQ۸ze\L m-02{wnjJVA?!Υ#Q266F*YxzޱD2\f~h"PWWgø㧥TD&.Ir9Yi # 0!SPt͚ =k8ts,E ZhHhк5hIYql#:[*XN} ۩1Ҡُ7ڦ*ڨnNLdϟSd~L8&=IO#GN!B)J ^L9<W\2LNNUxK dǙ8QD_WyB_0{ /<̂n;\ZtY&vv AGʎE"AedPB,SȲsaMZ0(5ZKձRd$`fr) /Αl̀$i좣'?[v 3ΖleͱjsP'PC9Ö0c\9/A+2;-,K.l`H"!5p1*{qee "0ҎHVn yȶd(-]ՅΆQ&3Q8\WCQ{A(RKLhRsJ*ܻwM===}}}gN|vSO-ZСÛ6m|{ϝ[jKxƗmiMJu/ʊb*TJ*>xy'@^={RcWt,x4hW _,N ̖.IR^zJKl4ewtPDqdmx~%Aa+Oe K&VDim)d*9S,iS0,i&]z;IQpxI$S (ak>6j_Q|;vH$2::y(|w3{ ccc/q/ةT-%G_4NYVLμHRE}f(ܺ3+b5*=E=Jy^C׃ Gu&`,{A0 fVGqI >l.)j4I.H4d[d[_2>M5L;(4JQg&"z,C)G6p&x6ir"KTT(;**)8t:44^z r..&6*[R!iq^\T۶FG Hs/SG%)!IÒ 1v 2"Iּwl)Bg|o}[K,L ,(B^lM+w{Tڵk?v0\f STnTஜVTƩx:ye2y'Td ]qLXӴG£i"w9du0t)Eb[dܑ򶥫 K2oKJP%sp2t)w,o9M la@pL~oXrvJ/K%wӔm{2&-b9]wA|ڸ*)A#1dGh)۶^ 9eRIJ5_ ʲ:O'0WS2"RY.IdBH_T }[A#^\ee>P%˴vE2mN%ݰ.K~4̢o䂮5 ד EJp}CC8MDP0TRZ(:H'uy!䕥 d9b!P0J!) >cfLW󄪂d̆kjbQwѳ2ՖxUuEUY&.b]$CȒ71Rےt=G.zS3d,zznק:ఓ]g WUEXUaUMdk6cEUxKmiӬDmmا! ͕y@E\_,օexs d<^@`pcS}_? |/rtuuבd[Z[똧gsK )E$IKdB<Ϥh^O1 !ĠJsTTtq3xC@^,=^L&0L2d|@ؐy.Yy&n2ٓaXgw۞|Iz8}md~,設ٺeK.6 ,_эuuuBݻOm?=X(SON Vr?Bl/3/]Ies܎[n!e@fMӆ{y׳|nӴ*TަcbAQӧO9{ądroI޻wڵk._iɒ/^4-kA>tRGʑ?*n6N9nQ5 0`B֡mݼB߅erU!ˮ˔\l;lmj(Rcc}1%+`Kt>ӨتKfRsH$2lAbQ/kBX,-m-F1_P쨩=}%"m׬ZjP &69S>W/dZتE:UVoڴ)yT/](v^P$.IEcxcwxJ|SgJeg[73hFE;:Ya'D1a9ͧz'S۳!˒Y=s>UƞEukK8iZTǘknNK&* v)grŶO?Լa 9[IFR%&'O 1%';j8um,:N46.I/qVFA7͈^*Zi'5<$~11j)r5Mݰqt@%Wx7H[OM7j HIЗ3456^pСC9.OGGGGA* V=4!, aGᴞ.X2u#~EPL•DVh!ќ$S"WThJo%&MH-g4Z(0Rb&eZ4Gɫ5aD, ZR2 xS^lwM7H$R]]M*X<۱bE6gS(}F۬SYyHQ /RmNVaG:SYCVXNɬ*$LDYpO&_F&,YmvF&JB/=%A@&t8&nkZ͛v2T}$2PIEXիSgxtp/H^P'ZzKiɒ%&Ypp8L|ijjw IӈNDb˖-TCwwwC F &H$`SWt;-")l"N#I$D 5FNJ,'{[08$̨ivXedtweBF؅#AZrUB?@/|W7Q^('Q㗥fy ;$| dV ˧"F PBFGTl,TH@lT*h>P+K|L@R(ndECL'-7DPYf\ӽWY0tJ3s51SSS#K!e-UiYDJ)7i'$wuƗEݨfpU5IKNҌٳ'J;}`O9uni,dr˖-g Bt"FFFN>-E޶mۂW.!LNN{*EMKhnii@ ]VCV"A&52mmm$Fb_@J2t˹sHvP=?rB&ʈ.I2]p;ylrK B[4j&uLB,*t;uOTR}D澢aBMu=:)u~ԥ E$zeKSK/!c5HN<Ҟ=-\BgF`IX<-J"U/  /an-rɌbOkKhuuuUUU{!|ܹP(DS*)6'KcO=RCt޽{ D:@DT rCO<) Ϊ/>~8*L# ,{ڢV|W~Q/>vww-bw= EuxᇩTX Khu)G!ݣy<"JاOeL-G,e1ħg|2|/x@^ylg.)qxx>2BTT*2gΜ!OjŨWn?vM7$|/#,Y&CV 3Ud!@=z^Sa*FHRdR,-SY| -\T$e#98pdxqԶI"B2B*;R=T>{W^ME`$!-E  q܃ ٳgI ]COI+ZuFJiqN8Aҁt8#^L!B/^N?:O皛h6h.ⱁKhvSg{϶IЯ ĎzK*'^QF7LGFhC |-M"q@ vݺu¸e 2Z9n$#={gziQ+QS*/XT"5μ$.j. QbnOEUVq]?t}& 5jpUjN,8N*PdMgR@FRCFONNR$Vp2t/}$qw_iH)Zz]VmJ\@1DWE!S8IڂX{aP BH\S;u^" JҍP*^+IgiX+JC=l߁C,<(>JQ+t awnB3MNNOJRi``,}8.~uy6{ҥFy/ӒϖDOkՎy'do  dfȑ#dӭ.!cpš d۶mRy3… ˖-EǏ C>66hѢ˗/y睕wE.*7SgΜʩuttg abb÷zSo]]]d;}-_L8yfuZtɓ'ӧ4Rԥg}6H9T9 Ŋb]n߻wX&ΞPkM&F;ht"'M %ئ $.^x]w u]azd2YS]=/vNC55DU%U(䩕bQKYB HT5}?qr qo;=Ȓ!KIo+M/Inww7GD$SD&8M6ޑ5JX {H@hʢ"M(rJAVd9~6lm"Վ;ŋWWW @=T-u R tP(ZJR**jE PdIX"XL8* 4:2 ƩD +$xZE $Ξ\3}8 D1Ru( XյNm]XB[<^ ,**?"X#<8rE"KOtM}[t;JM/㰬cAOuQD&.[!,*U{MQaBC0_ӽ@7kĹ q 0'KkT}:99)jO,~*YT8Ez!bP[,m[VF!(v5A^PgS$r @%6\ 9ӿj 'өE C!D?UW[sښZSB#ݺ8?wBl<Ҳ1ٵ6g*zHҲ#N),F9<o 0L Ilv#RQ۶mSY YE2/ZS];+M;S9?< /_}]}C}j /<=\| `#Q x+$`08s#r@^?PQ9 Tas0Wീ&+^ \.y@^e /2p \.y@^e /b0t۶#BQ#7 D.K$.]ȤPPE$mX`A'< u=99{Eј,s#x8<{tuUMUu5@^/?xɲں ȡv y1 /öT2#%%uGn /@ Rׂ/f\frr~0я}_;w^{nUgY*0>fҵu,cӧFGF<OGWw}CeΞ9=6:kmkonmzjk6ei9t0,\xG;{fl,Q,`gwOuu͛lbf ꫯ޺ci?˖-uQ^yR)Mc\9NoڜfnD3DцFדJ&>kfZY[m̩ͦBlٖ%K>lٶ= mf.zl@^\0>>o~'d2>(SO?C\/47|c]=9| Uyo$_սlӟ'=yo4}^/<\[[ۗ>B^< PU+~f{saq񚕿}kll?{o|㛤$D_},H|ƍ>f[3s94WZ](LӈDKhlhppFV׋nR\>W[W?,ː#}zڑk􋆮 JV=9o|P( ӷuر5k477G?mo۷o_"1vw9zt}zA{Wg>}:W\yU5㣓'O='Ϝ>nB?Y;|~@7l3ψΞ=ωsW~ݴLg}3LÐeYUK' ӘQF080pypϷwtV7ښe3y: VG'~oR[+Zȋk?}{ .|dr|b.~&Oo?dŻUW>th׬]&m!.XR8qe۷Irn6Yt)]_e7㣢GD˰-[Ue]0WzU=n52drl,afzmºϨÇ$I^|V[?s~^yq >C~o9]z>){ޗЕH8CxjjRIIzV[)ɤ<-#+³ܲ; Ci ?lFl3zȋkyh6&~'uRyϻ#۶mkkk+6mJ&O>w911oN,X /F_Zz5shiijj\dI?/}?x ~??K7qㆍ{G{yg>#Wp#jP?kU/Ï::1Gٍ-[6=r… ת]Hvc,uֽ궮T륋_^]}=99zZlٶ=i(CݻۊeY>V[Opu@ p7ٌݭ\yzskR4G}tq{ZΙ1Yy0vqz-g_uqYǕ2.5q?s~o5 /fmۉD*BeP_0@^ś(3 @?8yL4KRr#IX+? zݧNW55^U HRLN8~lͺ^@^kim 'I%PA޴v}m}C>@^$)ZZ۰t3C[ 0^,ҿ \.y@^e /2p uUu^*/6o~=1lf\WyV|/2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /2p \.y@^e /Xq#YEѴ~x øС˛ X,|ŊN3y= /ܨX5<f2}ᇿoԼ~),zj߿y枞u_/fYgΜw`0H~+_>PUUk׮X,~z~b_W}>ɋu;nl 0MwBX:u֛o$>teY$K.]~ƍW^}}~=tŊ"p{7ntRM6]]z%2u?Y 76nX'[|eY|z! {cg>izN'o /sgŗ^j?-^۷_׍VKWN<IvY5k(F)? x<]]ӯ\Z /0qp 78Hi kpTesܹ'\0.3U5^JQ YK)̎JohXಳUT d#pOwO?4p:Iw?:y\9<9m;sjtRr]N/JREFFƱƬKinj xTvx'lPrMvvvax]κ4H/ VSA‡xLF&#^@Lxuw-z$ЧO#^| 8СCKm߾gݳgf0aǏp ׯ7n\oMW[[Oש'O^lYR҅GGxӧ|Ͳʇz;z_"r9|xQ/qYf\Z}uuM{,i gtt6l3gs=w뭷>|xѢEwq{gwYZZ*Ho#+[X;BjDCCVNsO>ٳUD3f7mڴy榦Gy$77W}ǧLꫯ8p`ҤI3gy?#&7jo.kڵ۶mKII{믿^N i:O.\P{y7xSgk׮yELGO=/.yBg Z6VrXd߿m&+777/_p>~$:ujōr]~}IIIZHC-Du^~eM=*Kzz/4;vHIK#^~4}t4& Uɓnߧ ;wN̙3徼X{I&Y36jkk%^|W[l9x`ZZ_wuww}W,۷oڵ=-^$aLb̘1>[l4p۶mjW^kUF!^@Lp.+5k*_7-?oo$99gΜV=F#6n4bĈG<ON@{Y6lXRRwvݒ'`%??_l X p6} # ~U2v W_=:==ͧrܔNWz|ݺΚ5k͚6ʫڕj2eYwv|7%=iQF럽3'PzCү_>sh$^X3g\򩲅J|[TTԻwoc3Ƨd?6mZYڲ?o}y55"+a/ Fz16lc"嵵jY>MMz/XpÆGaNشiSII u[8p*t}aBٳgu<|Hnnު $8Ik֬;wiZ%0UWNǍ0 IUTT,^dƍJC=ʦ$??&N,\J !^a^$opê7;'OVUU?^ ߿ȑ#u5Ą_m>%%e-R[o>C0&UVSMͪ+p ^@br˫.rYYle,h'rK-zA $ vx[2A\~{~]t^.))w±c~NIkkJ:˕>YjK%a^]3o^$7eYJkPhŊK>zP'Iڱz6x1!ę SNʫxBHLL&JۉnZ[s˥\&}KOpJ555)@#A$$Y"*=tx1!S&JYH˜J:CFFf˯q58'Uٻ.|QYzvxAoYkʔ [S⣹Xc|np) ‚T{vGfyS C$++v/ V:  D`THGf;}Tʵ9_$܈Vkzzczu:MM23^Pi.@(g w|&jvw9xd租;6>> / ~r׉"=##ꂂ$h.@p8>``包VHJJh$܈=9%kу aE&#^/Ɉd `2j jS #c  br=t/EfWPmD\v#Կ>iC ҁ/ԪjÕ?}w ..N' ,|Z2GzܹsgϞ=}߼N8qKN<)gΜ9|kkjkksݲܳaCd!B}jv:m>-:u$}xCsd l@1^'gXIn8㮍@I}#GJHHlx!/8irMzu7vf;0.aϑ NS z\.cf3Ca 'zŷS!CO4v#A OA HHNNNJJKƩK{;I]r$#ԷRu;@d^Cw`|(NTu9R#dst:u^)t>0^ER/B?BrɽBX[1t:h"THLL§ÿB/ZLSߪPsy1[08ٝPH-G§*ΨxZx@dyzjv̽\ c~ѹxHW;c ^?an-'G;Q0B L_Q 22bh|ʮDrJ5Bg | j2k{9U/7GkT  oG 0dYt1X/t>'d⯚u88H,Р#zB0aX 0b\0n^U' w FeUMSHQ0, !>al@t+Y'`T<^Ёb:(latj$]oYN3@xwa|ݖ.g@0Fҿyt* F\E?xq%@p 5f=qIENDB`PKs#L]E-Pictures/100000000000005B00000021262DB3A6.pngPNG  IHDR[!9@iIDATx_(QGRjroȿ7ʿ2 I,1ʅ?!P_HdMsAn-n(ڍy;={ls|g&p!:HiyDɻ Rt:4(rh,3aaaaa ّnfEd*WۄGZ[u$0-%%%eZkkk T^^>??Ou-Y(?춱Vq#,''#LPH >^wooo{{Ajjjnll=yEnɴ;::NNN򎏏lmm=<SZZ;;;&''iO^fvvv}}}HϮ.ؑuyy aNs)))ˌY#>uuuqnd扉 ғWdGFFxtt;;;p8VWW{{{WVVrsso/N߻;<7Jbbg,++T|̰58P222G ̍خccc477ގyE^_bBQQh|zzB055@#(N)% ~x/ BUUUX AuD5"+fffܐ(V*)"b`Ky 4!NT XIA' ! xE.ܷVP8ql8!!VGHO`GB4}+5{҄Aopv|Á ǤN 7o}z1PIENDB`PKs#Lwb !!-Pictures/10000000000002E1000002C61B1ADD0E.pngPNG  IHDRdK!IDATxߴ^;6XAQǎ%; h"W,`ANG?}87o^ߝ}_7, y& "@8Ppo|ȉ0-/7[c(D@E"UHTnjn/F3Cnh:#@@L@h(`GzC )}]@ .(L4BA@  yx9 F}@ 8Jo!TU% Rbr=cRiq}`)e!5GI'0EEgj|.-5Qb3(ZƏpmц) BRܑL& VV7|NjR`@xmO/x=/JrUUS|.nK3WW§j0^򢏷h5}kS̖9!亂\q163丣ẛLM68JShQ2{=y;Gt+>C *_tS^VKz9~7m5OF#Wn]8eE}5Qҍ*)8Ev5+@8h1,%oaK by46_wUUM?5 c_6_q# )?tso/~ 9|ȚiL?^CWp@rIT9\{ћw-VQ[PN1D V)1y 'ɲތ'Lj+DI0UE6Rd:&F;kx|[v*5P'F*RYjЌ!W/O; ~!aeN_Yǁ"WϹ F8ei2G~ZUUE4Ǽˊ,b ~r/#9V;,7&B @ f,Sַ0-{z}"5z+@ \}mic6Kg^ѿ^SyarHқ$G_e%q#>Qr&aB\l'NzV{҄a&B!ݶ.y}xTV5'',K^zT !N?+V(7k5mQ;NJAQ$1@`/Y ZM[Lx*OקM 5붱&9y綊1dP,Ob`2pa= g8җ0q8P]K?[E!jӦDG_yk-/+7T^5w_vs^œ_c%Ok.&^S@xn/=qEU)m#4{|V8s8 pP;ೠdWS=T&G_䂧u>5-pHrT9j‚SiTJ槥aä񎒂ϖ|im6TBJdTbg贉$EuIȋdm{oVԳt>lRfOik.qW~QSx 횅8O3?3.FC8I.YU~}$nQi ßg-.Xmɼ E%'y7>Q~tJX+YSzUȼ3pdֳpJ}@GI?,VJL8cZ38~q` ,RQ@>&/K&ruG,/ll3$ ѥEoJjO8۳:οo'G* f SZ8uʉ㇎5pV#ˑ&!*[.?rD%>~Q3Rht״.P|yNj\cxz{w$~}M>>DeLnkRL4ñH7{}Bz& UeWֵB/px#a$28 ζ4F3vl>:k\^E*3XMNiڋ^|y^yg}fSEGz*¿? & nt06GaOMl{76n:/ 1a6kqkNL§uvƬ;YV>-UYQTx7!`+׶|[EJ[nH zcOkg/(ihlE/^ϛ MfmE]ycx նJښu_n`cdo~*ٙ;ds&BSӆOw{?eY8myEMWejjn-RӴ]]ӈP(-XlGJqwͪfk(um{ox=%<Ӣk ,g04fK՞kf A@ x!e6MǸxIpdv8]XHE8 Vh3L4CE!pqGYe lˊY'SU@ FQUez @8Hu`FDS c"@ ;^>M’,V``N@  EUYd?i;tx `Q @  ,= ԥQ^xra- @ B^%Jh@ ~(@ #D@B ?r`4J~~~ccIdԯ pkM ¡g4 n>vvKf{wj-z`ЭDЍG9ئO1q2 ߲_s=6ꫯ^reQQc=6iҤ+FUU%\R]]={nY#" H+ظqQy<?pmmmnn^{sހPS( /PZZs 0dJ B?d5Jډs=3_z˗_wu˖-۟uqmr)W^yO<-.S,}qǽ[ '7tӿ &xGAm=6 7ofyW6S@ ~*\Oꫯ>k>'Up|w>,]v?ibŜ9sƏߋgYfu]'?#iږc֛bܸq)@ ?Ǫ[.''&^]]駟Λ7W_}H$wF9; cɓ.\xUW-X hXdo2eJ"#87tW_};۟ܓc&;P9Ǎ78nܸsC QK.gI^3/gU&(++um-䭘̮tΦLD9o[2m& Sa/4J7X7j"{[X@ -{Qm?x{ @8dw @B ?B4 @ HsC_@ d˻(~tM@ \hQw֭{Gw)@8_s2>|655@ z\3f͚CY@ ds=@ #D@>EwqN~~>ٱ@ eժU_~8^'^:H={+Vأgy7 Q@ Q(=KRIyf3fأg ß|;& L&GDng}x`֭ .dYv޼y'tQqnnC=t'gccckkW_rʢ{lҤIhwuׂ  @ FD"_s=7{l0Fa0gΜ?r-;w\h0~>d0`q/zjOugєnttt<}׻g裏&Oi0cƌ)++;v,O9L8X+V.ӟ\Q@.@ %}(/o~P'nB̞=`0`[nE? Q@9rڴi`ue˖=uuu SҚ^֠>k=niių@˗in%0L[UU=_裏 FNMB[NO*4 D@!!=kUV}sE؄eeeDN뮻Dɂ {<瞿oSLEcMͮ0wy~k [oOl07Ϝ9s (o1v}`Gxɇ~8}}/$@ 4Q>N; ~x}}V.:GqUW`M&d -ci&Iwx ]?uYv[_4ǟ_ $C@7n\vvRK@ bٳFN?̙3~haÆnmm-,,s{^}_{n"Y@D"n"1g}|xG>ۜuRVv\?|Nk&5}@ /eѢEɇǏ}CZnݗ^zu$كc@ b>@ #D@B ?B4 @ (@ #5J_-&Fn]@ $(// a!@ ~fq`撯@ ?'zz0YB ?B4 @ (@ #D@؍O?tΝg̘u'G?#UUUFzG K/]jɓ.\h{޺;SNѓ]nݵ^W_qkfǎ{3}wTHO]wc9zW&4ŋO;b9f͚Ge-VKՃ!O?=m @/Z(33sɒ%]v٦MPx'SOrvT/@  ;wIF@w:Ւz?o=!'ܗ Q,X@w`ug}Vh4^z{^ (,**J$ j^)VEEjo&H,X_ 'Ћ'(^{)nٲe,ˣF%K=***]@tRN"I@P#F$ӦMs8:gMխ^@ }DIAILLGCq۷n/СCL@?s޼y7xmV^^# w)OQimZ]nfnAdB4at_Kl):ڔ.t-P0JV`0-R ~ŋX6/^Gq!P-BѸ|aw(c lvanB.B-y\B+Bu @ 0`;A" sYW`L1QxA4pA-n-`idLI6; qu Y9qYY+* WAg'+Jm N`'*} AVLG+D'@b2[bk`{`p1`)Irߓ3,NF>@ͪKc^M $`{"5JSj}(L/"4<Bb!XR0a,,C"TYP#B"tuܧ0Qډ!t B;*DhBg"S!C6:CgO\p8~XsDFh13|Z ;,vhPE:ac1&aF@Ud`#Q͊1:SLuk#!|\$ ?9ZZDM#TYm@hn}d1BI Zƞln &r BY%V";z6 V꧗\܌K5}ySzAF %X*GuD{P)PBgv?*}=o@(Ɣp:z}@ QF"4Irp{'vw)gz#ݰMOR@ rAdflpfFj gdpff˃8>Ymm) |b 'tg!(_ 5PK":Tm{JD{.O:Qcx냨?ܦSXH&ek~Br&Itce9qчBq+'tO]qACQ9N:f&n/@89g|@ *EE|on/'Ǜbsɷ \F % 0ywc3b;߈&>EXlS p9B}0Kpx&aXЇ)w}ޤ<\ ӼJ,`N1Bч+z3s[jl,Zׂ%72k|Vc%<- >k!?BcO(J^BhvFYO\:ktJv\Fh۷C#_# BWEv,c/67synwiX| sɦUw#}({W=kIۈ[y9n1XREG)6yxuiQd9 5X렸bMc#"gQ;^@ 4~r,Ab4tHM;۶VJ+! n1/!NЉxǑ%`:T؋͝jkxƋx泻wnRS e2r)ǓSG^ (G, tmA+! ]KZ|Vc fǏQ!=ٸxt.xޯ4D}Uof0][= K.> TWaRu1Acp+]಩!q/v4Jhß)(s#dyٲ-(ᇌhBl ح[F<,,2> b(Iiؓ]% [Y)@yQe 1O|TQNpz뙅eQ`/޹ O=a;HDxN蕸+Xt&n WFKqc:k|]XI;K6_qR:w/cwD 5IP(nZ?;膟v*i|Bf=RRdΚƥUUpqA˪?0YJ WUYTYQ Ҡo()a5oˠ%HQ_"]'KLyq۲|Rpl8܅"JB ǎqڌ܏EQ+D2! X)䮭'ݪP.>ԱX  2QKa *P)eE|fSb%Ų(<_\Zh4 Fgf: .BDB$5ñp(y</hh8n7I(vJPqT3ԋ9'##xM_Gϗ}m;dK/.ͻBr(I,blnOb$Iq9-%,#&e+zFbyZC\t'6Jn(s}+f/!%ib Z_(獻/%$H)PH,P4;& d0GfDQ+6mРr̈́PfXmA?`Ab CH,#Q3{H8̲!J, )u5@2FVY9s=X^8Ǎ=z(ÇEY/ L$, hb$F]`,ݞP0 ]0 G5崀u:`4E1 jF04Vec2Z yd-f[8(vaLQ-,joƶnhoٱ9h 1r&XFevaeQ?ayX, 2 Ula6JJ}~m6̴حVg,fg۠Ybڰt9lreQ@!3^XLH#cZ#*d6` ͺ2ӎ?c8P,665lPAݝ>_}{]zo 2@1Iړ STf鼇ni22ASJ?_͖L?7pou-٢+V.0MOĚ4ObeUPЄfynaÆ 9_ri2 /h4rNz`FQ4HaY J==MH DvF…a: $q{CX(3lXxaY^0AQ;[:Pd 775=~W>g͜uZL()-=`)wgXy4XA 4HQ-y`|%I^_WW\tY&Z@N)MJH<"Io(Z̚pX^0@αO!* NoWGrA~̙ 9EUW` 8Ţ")3$KJ@W! 4zP8vnYQQ-leO;mS6~AѬ?4u≷UweOD*յJUNZEDuuepb29E "CΎMwP>Nc7 sʝ52~jLjCݗDr ~~A}zRZZu32/|0a4:eK}m1|ιg1k#_믏om-5"Tj׽Rls* r8,,N0&77b iG JL&PhUjBXn6k7XDpETJ#B`0 BIpakdlkVV:RHnh`Pa5!K1Z^#h2m6&h Cvf%&"P0fn1ME6ZI9#m21CO$//[qR9$NFUˡ룕TeyA r@sXJ[T _WײvFoeGMJ@>ڣF J@/BkCE@ihjU͍m`9Բ j/p-Mmi983;ضiBnT}M)Հ2,JYz.ޖMHPblTڬnmQ@?zjMY70j3un¡d6[\ڂ-@Q[hQRZV0`@Ak[{E/B߯tm5MEH{3ZC.ZٸbgcC37x7yp;cm>3mWUD~FTzrک'aV}wo>!?!>664CNǍQ璝:h|ge;Vg9S}5n_:f3QǢReUCGG{Nn%&mI1HU hB5~,zgpc i5 ֽRLQc1`q~tIKrgmKsgCC C9h4#1hTC2xaL 4ݥ`EFQ8bٵ$,!"X]X0Lw!K]sP{&ISjԕ (JsH_h hM8p7mred̙ 8 MJ _(Bmܴ nV}tф n1n:)+k}Qt;ǗN)6kgV)7'KVPSc(*`A tgssX-$2!$!Cf9#b[Al6Qʊ~\$ǟ89T4ִlڴhvE%%Lij;LUeјQXuKM:Qff9P㏾joL9rlv6yUܸ!*˻?S?UQM&# 57D{VD"gr`,ә9tXip~AIuk,fښY:?D IQAFE?[/xʕqiPwS ot R wƎ.,lRUSSM.Çý.#3n˴۴eƉG?}r4&曯|j{lhh7m21#hoh58yٮvRBp, B"xaQ7HXlXnfMnOuvzemJ4|TV9uu `Źfͼ= zHn^"Ho?^㏍X$;?·Ç~kHZPMܼ\hpl,}Ǝ=O$)hJ < @nwpٲ+VJg:nFTxQ6ța#F6tƺ-N/؜]m[L+e6[`VXҠ:E%e JEjlkdY6 w? XK;AhCaErʝM͑=PX_LT8`9-h7*Q{^&%sA/hAMsNشѹ)Q̺3-F7~rq=?:٧"SP_De߲%K,0~̸ qplAjn^zkz7 MSiktCԞK}~}Tؼi%EhimakTwtMka(CЅ=egѮ]k3iF/Ȝ4eĠEH4ݾRh,~-|~֡C (Jnowp;!>hPaF!bX1 [vji#h3&##8ݑhQuc"heMS9d_(B"X,yE]?:*GB7״mX_B1ڮ)pqʖʲpȣmR ̼QLd?ߗ c` .a/DB[w8^0&yӶ@ /-׭s^x᱑~ AL l٪ON:bǞ4SܺbkǷ[ƌN3xД#DI#EI\aӎc}}ݖz_k3-&r׶΁ hV?,EF0}v 4t(YRz4k7P i6mhx/#$m mɹ~y4)V_nr裶}1y`PqǞ =C %Fղڨ՜TvNf$j;|)OPXGM:{38׮R[վzFuWx$qzOF?} '|ɰ])F]Q,(innC#F;Ylb߭&- Vɋ1u;vTO8LIl.pKj y\V]b$JcG tF W9apr.'q&sLnpXmmkouӼh7 @' 6t5v3(b\OO/2n+X\0:ڵ*Z,Oqhc☢ cFӡ^{S\*-[c1 C0H)~^l;o ϳοlz\(i{'x,k$(vtpZ?aJf7PF55? ?$5yzXUC ;l58šf^ºbPe㭷3 E,8Ʋ~U>ɌD74Eک Esh6HI( `zqC:nkPh&V"FTE{F_v"!<"#9566nd97YFP s r;,Od)$FP^P ~rc/H6ճnJk=HF~E*ƎF^pzeeM MP@U(/o3稺ZJUimbMU?|~]yÇY-&^SUm-K^o :1k5R༬ vېMۛYBҞ%mg鄦<-C'hג&t 2ֶ/E{{ -/TWkA} ES\U_:àa)N;2,M nɕa "&AEY@;{Y]?=>@ݞ~ heֳ!RhUe˵ ZxM<eGKM$n*kW77w.zITuxC$"jHU1$kUUN808G{ CS j8m'⨮nt5MJ|!mII̚1\L #8]֬,+ҥe9.:=@XsM2A䏡h}㖌B_bfb{<7Th<0TP6ܥDc!'XjS`sbjb)tv53_X,bxChF%9v)~'m y0 "0Z)el3!e1g ̹?ACkrai}K~z5V3VBZUًL!!ELggVn޺-.\GGFFYK%p[x|>jK&3&/5ޕiudeJKrDe ec@yq>q~ɣwzt`_[WcP,QEAKJk|-- %I+v f/ <wH5ƍv/oY8d)^~U*xW|&ErXZ bQV3CD7}k4(IQ A5ڌcS1l5L=jC31&F#u?l|v0AuZT&Cr(פ ~HcZ]ihki1YMv(/fa: ]PEFoԘљ%YPdfÝJ|o45arSSeG Fu#FiD~q"DoPP{E+G3@Vgw9ݠW[^]e%/Q|Sv`'0iRqfi9 #,o .zB|e `5[!b*ꆎj_SS & ZJI V+OS;;ZZc'-l[K=zxKs[8xSANHGˊuU oL ...ܴaXÆy԰܈--jmEVViOHdh4VICqJlk=C,ciƺU",d빏qDŗ|Ѓ:ԥe2&v׮y/2 Ke|׆ # ?=UmҬ EcH%E%`zm.%(-*pXցCVn@G[K:>w7 o޲0mY.9_# :6_Uu_ Udp[{@pB}p l/5F ȴ`a@6ޣCޒ:_8+**{fǦQ56uL$,89ȆJKQ³݊|7:tre/=o^8o=]6 HXTQ.!9o'C^?d7.nFa[{(N}KXCu QDH !l1`1dYYﲘ$c/> ,A"HhF9Tu_~|: =Q~S~os{3/Gsaj-u `!4][HӵݝtO67wґYY¢Ҕh?qԙAq,/%#y5\7N:}执N5%d )IFZFW2(K"GyQoN6jM_ ZZ>Ǝ-]dzɐnRQ4i4tG,&sK'.>܉綛&q Ri;W_P!qӓSPtFՋalw~??򶭭?p!^A}D܆.կ)Zʨ>2vX\!'ޕ^=˸QŒw^;U& PM4v43;G 4'ZH^iChowt.Ykn)ʙ'MZ's'ge|GMգPhe=#d?NghâYjg|y5?{^-]NMoq$sۛߴ01 l~o%s^m}^1A0-rO&= wK~k2Z.ꟗ #e>DV*yFy%2Aweg\Q/zΠ4I LjOOn?pp0g\63ONVnEaᰵ>FAi; ^z^5d ||5d̚|b" moGF_kj#)T>]Aڌ}.̴ 2x/z - .(E,>V}.5/gFb*eqMӲ3Tyʮ50T2K@>`d*"Cկ]7-lr Q06;0Ƹ#L#S[OOuKib_!"Ƞdb1DS0C6BlE۹jG^zt:wrhCĶP0jT .w/& ,ʤC)v25m{d yF,Rj5tEyB0[Ee#X:zOr4.j|1n>Kw~~?nB0X%6 47, &.$'K^J/ -Lı⩣ɠu0ND,k2d؉{0sF|<PqRqx{'>+O=}ԔxTvΒ nw{ks)[[ط l /.}C_8tH4o\zE_nO}?Ker U]yi :kh09=L~pOϬQ孯Z^p avJIyy}fcg3Dx[o$!''Ӊdz&JniwGrqa)pv\ܹתo5WŒvao{"^Xz_=rd3p Ѿ N6nQR;lk+<@K7p`.'~QjB>^bbw\lwxBi8ش8.EO =R{ HPhG7nFp\Juf ms$:샔 e{;q7۰c+5'b3XW߱A0 D ` Wۑ̕vJ8/hHt 脈PZ=lvÛ{PUe.ꛥYnd._ `ԥaUȻ{U Ik0 (Jt<>nQo\Q\5~1v}xC7z r&Lo-_O~#߱'}s\cV 'Sğcu h`qtyqm0ђ_UA:*25 FpJ;LkMzlgNllovnL6ڟٹXrqma;QuD.4Be n陕u7x"IΜ\8?ٹ FI `(OCƾ̩?ԩ{;\6VWGA5F6{Z{($M~}[o?1'6Qa%x2Q1SP' O};~ྷ;xSF}=(/5 -Vlԛn7;$MfWju ]#*=cG}JW/0Ç-fZ8pg>g5ZI66|4fkr2ٵ?08x/Cy\ԩ㭓'[g4?,+ 8k ͹v0=*O? i@3EV!3buvz3O>=UoN.ɤ$d"PoXݶԓEA1 OL=SC_Y[mS b$_e.»U= u%vP“x}]-BBΜD%H_<0R`.|+J#dc nky4~l vX`:)e2ʐ}z{1JkhġEVRG@iga`$Iap<%%6IM=I<ɬU ؜P~%D.gKU{8Q.fsCht[C%$%qU@£֙ KaػJ9UQ)C;4`\%{97*^2t]{MVonO2lΉxe d5!h^D/ΗWa#7iR*#pwʷW2Ks8Qo7_'y=C$4s ;K{=r}4k;y1ڞ<|g'7XphA:l|oeVI?+΃vD{On9)e1omwNӍF417} ?}cWvd& )׶0^G1^Aqgf+vͳV?2pn޻{_a >~Ct$BfcsMI tSv{v: kX?m9۳'9rw˭Çŋ奩S}sL{>#\/r |\s虷SԞ;<}~v69u瞝x٩7ڂD5aSYaLצ)) *;;Kf8 Hʬy{J/Md=x@ 0B 'fA)Hiȫ^-=* f2&d[)Yx~FqQ#VzQH8QRIYbW.>Ȳ4VJ+9r >8.4S4C XOZW1n]2.>DA[7x1u~Gܝ&k\N? NR$j>+*j|j%w,lPP03saMQE%E$\HSŞѰ8N[s'X& -w˩IfFfuqQW"e @,1 ~8H+rWk,\\W61z1]GbmWO.& ˏ~OyOKUV{#P`W 0*$#Ŝ1e$Z!H{.ouOa1Y]E+dVW? 7sJFpXpi]JMggE8,h`/=ND`pؤ~H0-n"۴^K,"vHyr~6" dFsn=W9r QgŠc&}B }+po9R=GOe`(HQL>3#9,@[]; |߼ر=];KvvX{~H .^+S;[ h[ t;=Y9W.91XRNǵGEƾ Z^qGv1`icf,,Q]^ -2u0@ёA#Ѹ³xuEQ#A=Ű^ȅP9h1.Gd8(gh@0Vf:wz&r0׺I-KdPҥ+d#S|t U:GZ"n3.y%Z[&+nh@{"#՜>lU$V6XeyW3*qvƍۼ-H" n')3`/RM7<6Z.A iNL[z7<V'߬l)3Ȅp^G=H̯jF.DaUYJEc&* ,5urB@ +,6]7QVt*e`KQA &de|hfԕ zJkʒs0@j7PUEB9<.XnJDZM>tO }LDP̉NѠ)QBDwM!JY)`*_>ؠ>Hi9`P [HWGB!r݌(L !(T*0+TY!h ɴm҇"luD:&f<}lu"]seyra~5ku}r,хǤ.%#쿼>[z= ]"902 + Эme#ۺ՘Uڥ( xM<;VY>e#Lv0myo+(s7\zx<h61Q"TG⭚:#G\}JslNH(˵ @Sj`WH2tӏ ZQU U %Wn~)n5{&J'=uB+!ׯ?Z: Z3X`mQ)lmc|~~vzqkwv:+kK$'yjcm7zӾsa#.J]~'vK;޹wlHI{nM-pȅ>}S&IF鯡K\/^TyG؃C2t0 ڱ$0!oNՃ̦i>U\XNvFqlC+O?/wqyxϜn}3 ܮYjuG\O>8Cw$ǜ[k7^pPG"\/#E"\wrU1y^na&2f.~e᥎jd~Vz7yHԄhad5$Fw}5P_=DNADŽ{zh^UҬ:\!|' Tb8>q@#> Ё ،TYyqݦQoh\i\<nP;@[CW% (I@(=IV Fzs` ̔B)MftmJFE92J.TQvְũ+81Pa~?r~R: YMdRfrF*6,A9˽0 h >^khd(Q@X:'UϠqev/W _*.K=x8ea)+!ayz O=5{_w>_([uCLPSsjeH2H|q%BUO^,-Qq&X,rtoqR,tV`ÃݞM25JhG0&%t#ҝ7 Yra $.H((pYW/(!IVe ¶NMcl ]Y^(Wc#A3nq`/dE1Q?J ^b1g@ I^ʌ͋^U쳥vBB/bS,L_}xdIQ ݎW,-\[*h¹yRsyLc(hsp[7=iϠ{WKh@'o  vluxk/[`G5'ܜ???79k|G*m}; c']E_RTҫXWU@z3SqdnfbVpN[k Da3Az…Ϟ=[ټpy{{޻n=Jռɭ9~|Iث1闹r Lw, %ƄDΊCN >,la&83j" i1HS* FSռ1Ze#7c v\u#K}ǝ3g}tOd'g'`@9Xc-lp*>(IgN_sT [p$14) 0퐗MN{ RFK-( h9nOLM+FW Z|N ibg -r%D.u3c6 Pp~IJ Xl_Q7cqtE%DҚlfӄ.GiG8& !Z(yшue nf:,T@ɺhVVV&)` `#e' x~7"9b?1*8DѸ!q9*ZC1yV`%TWQNO5 cf܍fďrs:S ZU"&/n! Eum+`GtS&֦wdrưX"8h9VB^a%K $ǻ9-|!,'^JE$v5c|Ű׊w?OO^xi>7eyFU J=2.h:v0ʊ!ٵO.1>j=ԴtIJREx<' % ` HCxIH*6}Eʪc`qIN*0O _nhDu@U]<.W\gxa$ 1]~ŚJ;ݺbXA8[P@f#ivһu}7ê-za9 OR#k+O~'ynFK s/f\O*סY97>د!Э6UNtr^0&%^q[l$st: mnhsx%횚m09ZY(,)Q)9mlִ0TfUMꀶ# Y5_0r:͍90&e: {Ha`kn"%"l<,2uPHǹىvv^rOAw[ L F,l`VըE^xDw?L/tsB@9 Ms i#VkG%ً!Ɗ5*uymJf)xEBTd19A(&ЖxNIڌ(&J}27- \+x b qdZщpF& fԛu*uVñHrASP 0(R>&؟9H0-_դ\V\:s\j3&L)-Ȏq& |ƙ-eu9>>n}M6 coD XX m8N[2Bu7iQq P|5=EW:S;yf1nXK$$´63ӏϨ+ ?Â҉?hiGb p\qA64#6e_Ժ t ᢑ%0T)f@ĉS -WbqdIBQ Š ;)7u~՞jfg;Jo\]XJu`#,NllGjv< %>GX•[1_yƹ9UomVѣra%lI\NwsWch; v`p*+Id0Z~r- *.L5w6,K cHmU+'q |[),CVG g Gvxژ'pvc;QWrVCzZ{si p2$͘6 Vqۦq)|Z[avm ǐUFEsq R ` S [-a3"`ynR; d{`C.b' t!j,Ά˨7^*ˆU+ U>x֬OC_*B310HJ Sqpva߭a.nwgeA/vWR.{r*#èSbW{Ϟśܞ&W OUgY'_8~U8ˁadT| *Z\Ї}ˇ~HZ^="[w~ xUqVnS `pc][?,v/<,JAQelaOXf8`SGǜu{r٩nNqwxR!Fl=gZƩ &&ךTLm4^+O]m?[w?={w6c]`Ӏemd*c T4^T XG`!i(Riሇ85GZWqW n4]O= V3p\> $҅wN&rĸwTKͩ qҏb8 M;L|/]`qg`tBw R`1 X8((1ǁb- zύ(ªxiQ'Qٕ"`uC9JoTϰ0iWiK`K'`TaĆ\? >)a ==6r1M8'+|-".O w\0dG1~mhH /ŮA)\N@kHtEX2~*jxR֘*K {ؓ%1*d~Gl |B80J)U F LPU1a[JMѝN_1JvO^ lw3?wֻ'aZY> ћTEq~?PgW?coo=%y5AX4aAR:Љ?@2{X`NX坃9  .:-͕ʉہNYY):pifi1{N# ;CC)#, Fʝbuy@o"2WIXi6T[4IIyE8V.\ù ˄ <j`*a-pyߑy&8u8ѭD'(lNpc &;U=CdO`+<&8e UlA^LC+bM>`8gi~0y8x s&6C(y7FϟnX#7e/=lj򉐜\;]`Nnh h#8|DkxO"jr!Yn3'Lutf,$'$vwq;W_/]zR`8Ĕ_ɟ~K~eksm2T-ZowtL>[uc{0TU&xv//uR8[л6Mg$Qu(x&C>x2UTxE˫xAb<:܂0t·:A?I uR ˕@wp_r_{)*e1V$>lF7xOǞ?3 % Na"K1DY{x!Bw\P 0c #Er<P'dqˡޠˑI,4 9RP*E;M>L oU0/~L W4q8f$>p8 jxE }9HTCP8ʧES0Ƃ3إR. j҃{WէrTg^\86-.-:Tzt,U<<*`[jWt PRus[Cz|1E00<R: 7vŁAkr[K|v&Nay}WOa D [L$0c] guS ^m*|a&D_\Y1>u@j |Hs\U4X%5ƃTe'Nb}```ؤp1bK TQjy@c>^ tD9ڻo7;YCcnB"4yO'?w:>e/}SXNӪ-sk`/V7\OZdi쥋?`$*ĄuBL\XqN00>VOD>.D1%#,e UXENB@")P%+ʖ[^Sd,|8ڙT^CEgU6z( fX-ځdvˆ u?Υ*̰<*ET KP F ` F"4¥7ٺ\6*lKJÊs/ BAF|cK235M;ڝ-Ky+ X]Q\n ZV`"X{D0VG"])P9\GY.0|{dz~ɉ;ݨ:N{ٕҢ/6-&cJznt\;5ZܤH#uA B4RI ĞDbĈ0xP9^q `!sUe7Tc1r" gQ'rP: S k `tOaͼѹcFe+`b.-ecK>w"o?l œl6Qߤ Mla! z ! n=ׄ 0f{l7pE *%o~Ȟ0  I^b꠆8u˵L9/( !%8.*lrqsXvqYʴ9F[Q SME TtB¦/τ aVЫ Bq\`򘮹Ң,|3 T52L+D``G@leάWe t`CPA9+9lLh_.FG]0a$Shgp,pjJt8hSyQ<Ё*:CN>bͭ$2@PY<е OQ0Q2YٛoVc4rD=z睭=y /.,gO{j¸ں:x#@[)wϞ{Ơ3^/N󨑱%i^,-Yv?gKZ 5LHHx9:wؿֵòՖ3fYNş?Vm'a= MݔH'H>x۞֧׿33_i>*݆xip^<\tQ~kQ_+ԲEAɕQRF볪r?G^rfV'a3'; T63Am؞~Ч4B zw%lUڀHF&{_Nur) e$Ri .ر 3N `heE"&``qG)B'&E Q +=]@yZ& css$̦5 &ݰTWٰNUS,3OYY"΢Bb`2A .PxհvYhc7չvΐ+\fTXO!wN qK]2('1Hf+Gv91kaX/.+ \ e#nPڅ+1FM iǘL SO9B%. _\xx`a58`Ґm Rjqj+d(FVeB42E,nML.KH5?P7[r!)CgRd2(28?#Xa -:\j8ݪܖaB$cC8,92 FʅeبJWO2 0:篏Q,]`[(T[ݳ bQ_\6VPHiN0@l*r`N&P~O7=rwXRkTG1RRq"KJߝ usQ&1S]?(W<hѣp D7`(3IWcDkv/ "dşr7A(\NO(l !< !5 "n0[ȭ~t*u9e1yPhI"CȆΪj﬒%)ztjAÔr[9^Fklwyt51t8Ϲ 'b+ O{ SG_f$_"rK*uT {3`^EO5H~6. ֬r5[mY TM[g3'XbIh_2nj X3OE>)]>[2u.bռPQ3/t{xa_J6˼'hA~ߖ|]X4p؋a w q),($[ny?]m^7'1)1N3/+ZƢJΞw C%/)/NpqO8JisvGXBJwv& u AH[0\)`pGhԜ1*bu!1,\471J—.zÅ/~횐:'QzN{U+0P4:q)h4ˇ5V@:m3p$ SD:t\=BQ 3.^YFz޹>('U4gA zU2:TH1.U'[LItYųp~iSdski 1!2f3@V@ ݡU`zJdֺlWQt5GEי8!F (vc#C{4aLMUl8Cq qtoʅruSHu aacH|JQ!V0;V#(s;E~½QVX3@ ^ }tXx&MOcC;7Gk%WaUwȳΪ{`K<0ly]jkd3B!Y0 l`FD؞3 9F3" H  !ZjV]]]˫%s2ϙ}Kuw "˛y[. n=pnG[=_t7OHH;FQB`1p빨nm |D=0SHAmI(:ko(Mү3]I9c-Q[BNIFCsIjꖾh%v찬Kx{,!i QƔ;PW}ZdҖ3l: jau5jDI40 eDkEs dױcawgg^'؊D2iC A,!%|Ic(wڦzBF8iTCc+zs#K}KV_HW'ml_8йC?)pJ舻#J`oH`{xKȯE4M~>CDRw.-Gƫ ?!wW~siU v fC74bezP,;F%yןdfީ;>3J>م }=Wҹ5%J yM>Ԡ ]ikJ&q1##26\$ ld˕HW㕅ɠH' =ݾAA {Ph reE],XyOJ Jc%PP@A 9s9q|`qhBtt ².\Z k+Y ۽.V}3(XfT`RPDK:Ѭ X f+>9, '@ہ(J(i1˘Q''xLC_'ǥgjHq0  .0n>%ywm&X" ;Cs|bvB 0fR}%؏~WI_ѽ`.=nMs]c3KR+l$Fey9/ZӛRQb1ۣ/E)g T:]WӖ}kw.>0߼Eh2dH Ou (.V7Tq(D9jִ NJmpu@7FSٔpGk Ȥrpވ5P /*mQ*q +M.j>*Gk-bITSf ̥DbC 4 axES!ҮIģ$2*$}SUǀ$>FJH4)Pf0wш6Y`Q X>Y)P1u%xP66Y`Mpx2nPH:a/p&*I1ڵG"RAv<1Gr99H 9Ҩ1oO`̈́dzHFQ2t d),CdU7o2@MWU "VcKUjK7WGb;l. =XjA)D3~A*4l/ڶcM3̕P^:](M:v*y&K;i8qD ZSeZf}sS@VBE۾t^hOTr RT aҠΦCP1Q)dZ8[Ǩ}Ŵ_^qR+ \{tAgO1Yk?)VMR Ay*Iyó Jӕ"@]ٲ.)ND0=VWV˪'^^e@b ÎtD#\#TE2|US짃?/:F>= ߌrgѝ^,~}K&!مr%Y [ }&0" z,gʼ D)pX͖@r)&? 8÷oJtZ dH&.2u{ˡ 8X Pc5s]G(`-}/DŸ`Q o0^4֙_v c7`' )[19DGNOрE08ALbeJEڃzKlK llabޯ%|/a_6؀:йǬnM?S>FID/%RzyߣtDFO7P}ik~z.c:Xm׾]>_Ռ++k'O^e]G.5tOY]*@4v)2 Rn uGqHYD. vЫtCrہ,Uffe[lyʹ6ِE[4M3n)JiF/ݍܼiG=SW=trD @T5u8C%`ٴnZU{R ؚh`Ӫh#XLŋaPPq2{bvoOFc?S5.fiPFþ.|aoC 4)Eߠ;BT0d\ꌝ9Ƈ_l] G I)܀%Xce]r u$}L@5ʪXƦM}FgʣqGU$D&YIOC"+lg170p@_bd Zdyuhk;=+ť&slhpIEOA.}Lͅ,QqQ Awb6cd5(ڐʭnr}Xͤl+ipJͪvQU`owouD&aӢuPM?v}w¹gd0Z:/w~g^JwoYmӥN! 2]X\aṕEKN*@D[Iছz8zGnPr<BJ:X,U9"s &UȬ~QA%tnPil-BYi/@ae#8;1pAy%tf6-G߆lf:5{*Ŕk>n7ߠfgB YʪGڽ]:+-y]m+b.֍"/t?B+K{*Qu[] qݩcǟя{=CvLǬg\sOɃlm:~w~W#g_ -MHk\,ދț~~jOQi9WOo}?33KW0Zmi:Mq=L2a TՍv3tjR2ph1:DX˳4M) /GF7M<,q4yo9@UХ@e^N zOl fSM*&,{rMYf }`t4[.R:i2r$O9;|22c7Pҩsm-ars%3ij*BBP l9[$ s JWd[ARvBI~Ȉ0Iq|;Nb@ |~x}2!a=%xB '.9ފiW}DI6B6҈.>Z犕uutj 4Tҧ%Y <Ӵ,{Psf>bhs9aiQ [B@_ 2sĞCpZM.+. <׿tw3;<Hǃ 'o<>.o^ ixyvi:vzs#.t ]xsNSV՝w~pGim-4(AIDF1;/뎖V %Y vL}>mmn6u}iPk0 Yۗr/0b1ɳ)RMDHp6oCZ{ZZLꆕ-<7J{y:.0rr(0ζ ;ac K4'ӴQeM#w|k:K=M+%d/;2Q fǎ5{,SmZn(h &/rz.;;~ێq2]B3M.b?ʤ"?P f)JD$ys{řS\t9=o+kЍ(2_v2c x@Wz+f;8^}vۃoy+)AyA5 ԊUctM+Gq@{"Pr G*i-itNcRG7L 45Tr:lPqv/q}[4{Ehc Aǂx^{X`]7'c+:*Q_')ZF(FTᡏR{Ȉ$zt8rq&ILkRiݮ *F[* W̥ FBq=\o:1Y%> Z =J"q*r-w;On=K#4S#4dxcǕ$0CΩ@5@4f$AVE 7&yBxDJJ}d v٢302a{c-; (w|luF8fq@WC*G ` 7VGMݙ]\dRIFzSBnzLGGY}PI1ʑ ?Wu/ |WRg;604bm׽G0w5u%wwtijI'#ɒx*'Kg3X֍@AChbCUt k,qgTAA]5@/ ~_W|u)>C V*Ls ;vjeع<"=\[,`s^ F-Z.)'-ty}o&Zuݽs~,T}chr<-GCor"N3lpEu\ CGG,%kvW@ـAqryEi~mJt% kRʴ79cr(@T-J Z)LnFg*~'"zH+P: VY"a][Ue"]|b(=,wj3+Vnp|28%̨[nVi=LΣLcEGE,j V(ZNGYgZ"I/`e?޿s.^n^2[7}o}S?|GY gк_Ou,i^/7*!f+JOڗ ./\g #'Ii9HF+M+I"̳J§ˬFpsolIDR7R6DQZ +n^Afj-}Ά-RE6PYVk~$#4Ք/v`_(28P*u_; c NdR+(SPxֳ4#i7TPJQcA萎Ċv"bzͪc z[@oR s̉]Y"?(NHnt,4=);%Q;tn0tٛ(׆{`+!x'".NX2^ Jvvk^=%ET.`q.)cb~)r4kg33ȁ Ejh`6-ܻ.Q?{#,u :p bP!XhaCrQɧ:^¦cpsvY! (8\o|8;~6ɼ?7'yGֆ6`9,'!l|ј-`/;ܗ\ `!Ҩ9hzz9J[ru#W xpZcٍR:ԕ(v69=r#Z(5t?tksyi%4ㅮ|_Չb݃L -oKzcqy8o<뎝m=߻hAU]}䁻xǽe6rXIf T:k'!KR tJ0c%֟eQh?M \Bn`?A_MJF)P@~n=s аYa@c?-.X0#OSlGH"0 r1FE&f|0\ vmDz4B~n;R\6Q񬜹g>cC{zmlGQKB_HI< 6af^2wK=tT8nmp{6Zv*Vv5M,&kӮU@kD0C (ò T)* !;hܟɇ):V~1 Bf܈/^D -lA Ѵ}`pGJX{>7]9^ZH EEc/:ˀGVNX GqhQb#\H6{`yH2X&)- [wt(g 籌1GfNp!HD%pza'bw- I%:i@D.MbbsWSѪx \y;[Ew,#C~%+! +R'Q'%/x=ghdZ` ]({2NQ\ Gcn:UǠIr( xTip*y,7&ֶT/`jh$z'v.f>UrXO(l Ӝ**p ANZSG䠳d2FδXEZCeT붧L&(|f8:Cymͮ=W獫Vf)+Fd7ᵟ|+?7< Ϥolt̰0;O_f;%/?}*;״FY(EŌ{/onxGK|Sɲok~)IǟxBM+U.Be+gXxq< Xmlh @0%e?O]`dh-K:\Z_aQS@xmE.@JPr('M:H,"dӺYDFY7Jh;tS+.ўp%bd\h27-0PI3L`/~@7{1kj ~XIɝ\rGQ`'m/2!z_5mv_Q=m^w\i ->uo}E8P JѲ*<@Qg=qK[,)4v-lwwl%;. uu}CgeDV xbzrqP6χTʶʀsV*:]Ͳzhh?0:2"RVvbo4Xi-,OHbҖ9S\R"̘`HxȻ% 8.p[^:X 8)(9~!#:hf$7qCu8 UJQv7X;Ylٽ*T5\R^dYe+q#jG~u. ;Lp8+rbZO@҃*^'ؖ1j,A ?JG 'm50Q(d 9絠D{Y`ncmGUNqðN,lX "3qNaLJg]biqS^oCZVh}Q 8ȏ Tw$ܘYِ\fGp36YupIQhF뮯s,,9[=*zpO]>?޺:ׁؖwf}dqn:cgO}Iw;+ی~1<\Nm}gVzJuWڷvo5{{R䋅N%i{g?;fIeۿϞ)pA_I8W>-|/9ps'~V ׆zm˿ӷ띭s=,Vo}ߙsI'#B#Fh((knDC15Y2@mPG( WXGa 7-W vD7})؎lZI`#, cQ"4IeH}+'Edvmkm>"i,Z/LZ k:]4Ltkkf0#+>SHٺNwwpb) V[WԗvQK||E^v2Ĥ:P঩%bW'}I|Զt\ێiYYEV)APr% wCe Jᲃkʢ?qRIQ[®2u˖O!Zk1ʔ# B|#gͥ={| ,˃3=!kLa0 |A( /_Um_Qb}R@9j;6ʐvE?G~?\tߤ}x, TRQ{ s3dRx?u??0oC_oIkV^f@/% L`k{JhItЎ{>GB1'c)âl@ r2RÁYT3 P#UoLh_j aEa#h`!eZC{+qU %GSl~OkMVU4<.G`\jb8c֟8RS_e$lFidnEdEra נ/:d>/޻'H^Kwse\k NFG<8fQ.{pG̃,3բbD^`rLpw)*|)ð~ybt?C eh&# d?QY3#he^gq.9){1HH 8h/9^Qfk-a8<<*QuS)Nui }AMk@>د|3b7d@[v*@ѬqٱHdGUۭpDyqj_1@⦍wl |3rS&'^|bEH fxI(NsG#qs~ϓ 1lQ:iUfHXd遌IC^5S~pSPx"y,gte1 +H `xJ3/I>*ű4Lg >*åq܃pTT*|\- T,SO<=`.es)6S/YŬsl 7%:5@=?tHc#%1_gʩpk>2jsI(w~/ )et-Nkzƕ\Ùq!iwꑊ҉%h)٠dg?׿} ~JXgm_\o^wU'&;eI`r5 N 3ݴ=}pp7uwY upw8-sO?4=` :*d~iyv"*DsEaMdoPPpbhh({rP/[h1 #nV!n-m* +`1gIRBSo,^GkSwF萋8e^TUW<;ZQBR95 |0x0a"p 5A[.-ߴ(ZZ+|M^}=G{W? }Ű˗1v9qpeLV_TPY]}Ti̺JyTpgC WQ1YoA`zz6}k^z9IcG<U՟M-ŰMT:Pa☰ɹ(w6 2bW6xTWg"v%Q ]ԛd)(=ۭ-}vqXpM/7>p*Rnw"6Ox!XgE1 YKG^Y ԏ"k&IdK-*^pZf)Uy à,8) P1 „ ׏T+-  ō +J+z'[(EoG)֥-G wVG'SeT>a}^X}XL:Yf鞻ےQe'$m1Xh GY8W esR'8JS`g-{a:p>9j9c$i`6)KߕA>iWk*Uxbr{~*jytBbe/r=gk >*#dȋ5ָAsHw[yk>[޷vARw]G99Pox?azo7?xݎ7n?7\wMw?{jS)~33 Uuy6uǯNke`$2Ң5sfb)fu=7hɢSUS0CAOTЕxXF"W"c[|djP=XǙ̩BKOaCpC4)KAYoM |`?S_/|a߯{3ҷ__tehkpPonnzrz0h=^s:"Q=ߨy;X!A$MbWޅMT0sk+J2 T 4](nX |AN~͚ۜvd}؇֔Y?ژa"%))Us." u70sukӝ76r<رďߙJn8Kg*w'7j=Z 2uX 0cFV`y@͉2xԀ^e[NTdO3a@U@f( +Hq}+KX%JM-Me>reԣp0UedCTוΦ{@i%EI\WqyśҨT\a)9b^=V.)vD2Xp>cNlRs)^5^XZD†XQ/M3yʭR-~uzݟ[_+~h /ѳڝ>qkDr_QgMM0k*v}oݲ2]wok:-ҁʺ6VW+. >QUI*K xb$\+Y":&)]t\ SuKx^QjWP"uBAtA&~0I#܋=TOt~0k %F,ѥ.iGc'~qJU+[J_j:׻oBIYa L[Z@:ܝ.\rЇ֍m;h5{?^]<7?. yM*J~8vf;F+|lts35F|5Kt׷o!df/8k +5 keD*22[dlIY`.'2ʓ/16I'LpM=s]t};TN6WޯdT 1‚g$*b *x#M%σJ:M.3gފog{Ip &99Z !Jchײ="DI+*HYmHٝ4sJs5Dt\ӡם5XU YBJG.bdՒ&`R\]`hSYo [X ,HqU!kKs9I'aid݀eN8ӽl~@  \#g{tffxzC~qLݤG!=]?m;8'иkG3wʃlO\6ݍ7j#]lPO%-o_1ͷCjPCM8UUjxRz~Ϩk`إrc4`?-Vila@h٢MUANA$-aض=S5mB9cXF`bg$\$Ơ u 7&K iݸ,UA{ lZdEl5RUhG["&R˃d({g< v1鵯N 9+(t,y_}?27¢syvjoD 뾃wt#(>; C[e "Jk) /db5_oݢؿN!lfBm*0ގ>_:3JgG8ɛIMih|vyktl`-h u)t^:ЖY} [6@<6utc:#=,LS#\*S<aqj1|T⑌m Sd4kڄJPR$;2Y BT9/W{dTbК6l -~)3D 0XlJ<24\y;Z晃l*"Y璎g?{X򨙀ܤWW(kvtv̌RHWOEAU2᫇\,sx45;,&f9OϝM}Y" 8q tu&(MʁI@G Eф2f=)yy5;'!Eϼaɘ!o1 Јy1.Ҷ颈?ƀOHcf;Z|Q8^14ʧn˃Rm*jsb!S Q:,+kE*_cމ(kKbLG?ukƍ49wf/͂K/x3?{?s߳?+_Z"۱= (hiOamln>nlOgY6(r(Y ~67Dҵat\Lr"JMyꦮxJR,Zi ɐGtN+u ڷ ̐F8UU-$sa*X7mGU;. QLndHɫ{\ ZZ6r%%3yn`חgOQ4@5w/#  )PYepR_lWe = d6y蜓(5ozӯoew,P]ΙúD(ӛ2kȥoG?w_30AMbRE9)Cz;~#d9`Z(-bBLL4-Q6=uMD3b#Hp"QHUD}l#"4+]m@IRf ܆G&E C7PȿpY*-5((FLѦPmjˑPF`|_[2a8(aԱU^8"7a5Z=ѡ  t d 4tUſi|YX -?Қn8FuU0Ћf 1u "HW\Zd.er]g\Jsbce:6of`}uЪhSq1 PE%E=*t{DJ=s`CW d;PDZvO#䥞#\%.{ +Y &8<*D"wWd<18%FYiQ]_^-ȥ^֓& +kjͽ"ʕs6u J_׍owiD6u(GA;(W^AwljoZ靇j EqrDO甥ٟ}[fra݄@kłEvյM 밻 -pU3vs՞JKs=2r9kB 5;F"v9vh慽-::AF`Ig*P+ A2:W,,s͞HpFuq?w噪@H&,#+7OsUpLݚ=ۜVߒМάrYS&d~tR: 5&1rb#.6U&MK,+U6 _TaO ^&M(J|򷭯?7_wZl@W!ZJ{1[幻W=W}K>GJi( ϞR^{p9/G[׉a{ ~̂R4yL_ѬnYz 0KDN12Ǫ'+Щ\$Sߧ Jt8h A*KtW7*#yL iUkb$|H'"ʃ+ZS rJ.`UP?(ՍYDBZY"|]YWI_BQ z*x6+S+$jlunY=ɻukEi[}#瞎S@gXRiM' U}jߨVpm7lXwcn"=l>hBSMd8,(軖^ZXe4U hÈbA.|/͆$< 9UiJEBqI @8A-O=LYgx搘Uț-#u;ԫ‡c:-./ry7A4ycdn^bwv^ĶL *G6dB@Ƶ6[Rzŗl+ ةZFo֎&n0p>፤"u-Mն*ϟd۟87~x/_b#s}\9aև:z:v_ CrAYc{C xק]92Iǣw/\>VJJ;P_%UVb*3*_"Uy̵zAK@ N|B(U 0%dF K{E,@bkOqza[ڰ=T(@@8jʎh2Trt̫Fd4`LNOY;#ψL 0 eE"XaJ, )@Arfx| Yq|t< A&>ES~IZIQj`(UfPܑ3Rrp6oʤ֛a֔_y5ٗ~圮\%RIJ# t2+λe(i,*x^"Ju2 d98g<~/MPDь/ T+ IyW9VTe]3,&YD>P]{(} ]in6Es8K_k[<fNV=}ҏo?ۮ/Cr4ȇ[urhuP7?Tͼ.o7NUR mj W!AR'txfZ:ᦗE( m1lub:n֌&MɎ8\2ԱV:e.o4BkƋ `@IXd$g@LiJohŤ&V{bH (Sɬ9Xa$ "6 m 'E;/9+:0EL@EJ*d*Y -*iXjSr7|`g1Af|GKoⳞE!gXlt1:׃FVh5M۬xQR{46#c$g=/h.UQg3> [Vln6X9H+%ňG>txڔ+5RkVMmY'nڡw |,5;^ҭGY8E#9$IJ8ȍ]cbHKkٳN=tm:I}ss/k?O-J7w?ו<$;[x$򦵈E)` \( 4V7AqR(O)-e&j2B1¢VpǖS rNETb@7M7LZPq^.!o7^qӘFO( #ŀVZ){{Z]_|~;^ԴF+SmȅT,Pd^NQnS{LzRpbklljk/]LR=9%@ :p\=߿m ,4%-}^`%Jb^ϒ :p6=ӄ7_}*aՒ ?Z3aP(cNЊ:x2^ (ue[r mf"3zjZk,?*>008'n`c\DѿC:;tBàebp  PXdlA<,͋BUE53TpEOaɲkر7^GJR*oS-u=_TI1MPsF]Yîl A1j_ow2w#] I4lzCVJy@SnD9*5= $HKILAYkm n;V`&5`dS20n(GC=齮 T4-Sg*_NWB71ݕn; eYWm5!{fbgFhޡt愊G鹢k( xb`WG#C$yUr42>Z_W~L+‘"X}`c~}KmES 8wHt_\G]}ǏomO|_ᙾD-vVaϾ.mơݳ{.1bz)[?|(\_[tt>gn% W ;X*^qhNk䣫M҇IxJ2ӿS9tWWuVתY3gkF'. BTƚI3>A8vς<'L{9븢[+KV}B/JK· EZ4,G9N˰wtpЂl, xLzi+Ԟ,:?"S2k_xA[NH\mtM1(lʝ);]xhPͰCctq=y1GQA$PRWd˒>bDRAsp`LV'v/9`TUsGsfsV.4YN5#P jQ)ԩ jNӸ;q[֗lQEiwgt/w"̩]oj=].d "V 0yc9~1 ,ͳ[UYv@Kō7Hk8hwz.2bUm:K0Lg(9q#bZHV3BF UY—\J&J,ɢ'y ]̀L;oUU $"Kk$g рr^ ˌqAyr'e{2MM lE(qw+О~&({#FF6MyV thEۢV5+#Q$Ab\=K5\U)m0ܛеgQiگ in1! %av^w= j=gX! (}dF #|F{k]u8|cD: NH;{?XpTK[+m)Ռi?(z-˕Ѝ#V$D@mBdk{{:K]nq:O'#zd lwB *DS4adKa(  i;xRJ5 BdB) "P?>(* 7՞']K7۳ ]iF~o;`+-{0V<_q .ǚmSNX6n &b_d 0Y`YDqvf,tEvrv5bzhØ7w~pPq|S>G~Ɨ'W9Mj<\1PDڋβ-L{<Tܫ W-wχӓ{oUQ?z}3} H4+ʏ_?7OOO/}Mi!kp\ 5]ף^ީ]y_5؎^hNif||iLCHrw'"K'Jљv22W}3tHFRKINf;]X 0ˢ% %&LtL+:&DGdg:n]CCX֐ݲAPf8\ZPEU8A,CPtcD0 h$u4CK(#2}fv:va)?R%IJj .Q-J)zppV;d@Ѵt%\AFp.st|&JKrp[%!IVQdZ\9F *i%$EH@ɗYdqbuMYBW])YBSl xk4Z֮P'l\MEt^5GN ?AME#wݑtG:yG c e0hiy@H%2OWQaE]B_SG 22F]o,ҍ|t zf:=3LOSL:bVODŽLMg2MR./kL&wQəc=ĉϺ {o<:+ą8ܐPKo ؋WuĉcI9Q'(A VUQIFu)kx^b;WX-=sV34邯6:h ho *BH,-\%iHxdCJ/@ܾY9"[ |/}<^^*NlFnϚ%n ` *\օdXp$;O Մ)˥Qnqi{Y, F/ Q(U4ӺI;JW~0eiMئ!aP hNms~ v3xMNXKT+ TA@ຟ[_9`OLx[ۋTl M;-n#[>zLI0z}%|*k *^Cj˰Dm(Z!#&WQuwRYG f92jN!.q}U3jW_tֶ+؝Gc ! 2Irm8 K$ {o=>ΤMYC"$8`SZt/CfƸ-CH dc0>dn䘰E cœVncD_`C1g*Vu6Gƥ)I;"j@k VfƣT * <%R8V0~`=?PtvrgPRDn *ɤ9m7Y=]"9[`rGL ]FmYQM lTW) <nd'LfYB3B餵Nkؘ]{Ez[+Hn 2E1ghLL񘻆ͭ8&A]ٔ…J2o9PL3´:y?[ɽǮ߯MjE13Hp@ " ~X"F!,3m#;Yv(嶻P;j/>];j@NSߙKo SkmNf7|V~sV\}S\b;0Df Xƶ^؛Si19~YHǍxXj4艏(J eu59Qb<ƦH30mcؙ( Bu 4!M򣯘>m\[6 ۈCӋ!Q Liv8،Z[G>^U[Z ʪD0[?dADŽN6KU u{Plis" $4GVuMfT/i'n _0a$ iҠA:םqu>̞hoۊfO|Tc9'u{0s,k6v y֞ #Ɂ =罽io)ghDiB39?|W{+⸍FO='ɖ_?iwNӥUԟlڳF_Fh3{{O߹1 zt!E\EiB 8ܶI"2xY+aJ0E(Ƥ@RGd6#86D\HHf`Vc(RQLA@ja8 Q< 4`U/0Cc!=.LrCԂw3b$9}I@,}jMfg,|ܥ >jۘvKFxL*6]/y Pc!j~ZQd_Qh'%3U&o JZqjs4 bQ$=rtmZ&Ý^H5fj639i` $ ּy6o欢4 yb08 jABl ;##7ZRII?(8nqG}g6N}gx`]6ޱ;2"TP7iR5S4ᛢR!GEn;_k.ŏ~zw߶~'s|=TV|k4> NV / B 5.ĆN1\܌ L[SnLM7h:kێh됁!dhn[xq1ot.88)x>Pas겤{9Go <3?$NƤ -0 }6vS Y]fSu A!I_DeHX(3 =^̠s֎`a8 QVU #XjTMhMT ;.@v™ѤpFOĩ@ $ct] RI쏃އo^_~ lnLhOd~E쯔nP;nXBF %-U"W: 4ؽa [[~? %_>UAGOL7{bun" l|3ۆ?}qkMq mSBxݔFez5hTn)Y[[ Zx1,iLg z( CϟnlWyO{t]Ӿ/n}#ڣe;^`( c=ۓ;:LjMcmUh5¹SK;mN-Sl6U.t2 =!dP2_PHi A7*Un2Q<>Y_v}vɟnkOrƜN0k*7 ua9>wJ޼ ry?q|D-1^?xÓ~ 6K&ZK5Z;=bkkxh{QGq|¡s$ ͤ*5yec -9G!0ZG궛i\0 Ac9o\`i$)N#17st:@qљvn˝؝ iPC o}C aD\jL34B_rs:K r˄4_>BB''l#QbH%ENNl]..m(Ww}8 DrD SUJGx939miHjj@G*l*-+MsyjJ(P3˶d/:rQX;$D`^c=im ٟ 7'4OKY QpCB-- i|Fp6u`H#4d^HgɜB85!@9A #=2L=3UgK%R5.+_ԾgCum)r܌}s6W>=ao/\䬿ɧ<3;NzO/(9m}{o|)):>smYɾ _2gWI~_#߯S~C/#d'QA0 uP<7,7%3cG[ȼp&- V2tpM_p5+hHY]0UuEON1kA8jCek@6;9n!\TCO𶪌qC RВ@$w Y jmV8i sc@׭kUwTC{B:"hb^@ [rCQrüȪZZx1>_gNhttձ %{Ѥ[я=oo5ؖT| ^) ͙P|m[# L}kSAc9)cmC"&:P_JU>Zwѝńl´uJ #k5Cuya)w"{hh C.I'7/(Ȣ.BY,6iBS+0J4!ՀcsapL.!g[BTP+E`х煡m^VJk۫x9bNvOZg Qiݎf-Quϼx7֜Ex`!Rl\I7ڿo2'yXh BWz L&4QcdRi.!ZꒁЌhw'sݯ[02#f3iꄅA@%<aWQw,^3=kUl<a҉SPlQǫ;+N4d(Ha@jߚ^6gW_]:Z ZX68$SYp2[`Sb z!(JAs wb'He%2DwVC`Qc0R̒-= 6?S“=-}<rqy%_0ϣR9Ȋ ΀dn3M| /\ZCor7fgJP͖q}0 OPD!2[MLfTLdAq' y^x>|$ .9OP1= QZtRDvQ:OlsFc^?s&tD߭Ffvl@R.hmP5ӄƓ!ւj,GsyY Ht|)YM4Kҝ, -? ` iI|B5S׋E -,r58A/Ts~m[1!A`\aбH`;H < Py__/-8Y~t麬Q0$eGR}f 'UZ!` xvzBU2P]u(E]ajhpL @'G# &;ec~ }+M-S*0ɲ!XTyZI3"bik5yP'N(tlo{yc_^Uߙ$,@{^b?zrmO|A6 Gt>##tfs̭%]' ͭqRE(is.+d n/=kyښ[ IF%Hm4RՍ535f)ӑP5%A.ۖ*_dĴ { a~?)e07F#nUlPf#Qh˥=VV{%E4>Tאy#d)l"t:ht6)7å]s;L˂uQǶȇAbC4@a~ޝ~,wWٟ_?V8:} \KtԪ1L4(W2S_&CuH̖3\߯=#) "HEYBZI^cmG!J c c#Dl5I^6IJabp(C*2Y("O p8Iv{fxX̴w!7 E^2Z̭p[NOڲ(=Md) ߊXEA#j3NN4=7K'{~C-ܦH`b',D0f -G>j!^㙮#FPuA7<`^봹p{+HKzm EAzq/Yon]|/ (djt{'p}!^:joOmƓ Y қL[[Y"(pbޞw6lSj{KY7`q B5I5<˕[2}2TU+݋{yYq Za''w̞ (~XS$6$ $J#,##b34Xqc х4-Pъ.jŬv]1~ú.L(5XmB_5q?<}1 PBkXn)3x#X7ׇBa% v3ukTb VV\J|xeͼ D'Zj;CeN*!;_~?\e<74\sl^}_l *~΍?7.PcʜLI "\B\92xn`?X̓s"gr%M_)nZu,g:N2avK-!-?=&DANtùU}kׯW]?vMT7v5ɼLX2=g/Ql]*|CBH XxpǣΩ%H;9/7o4sp`)iay^NWbmu`e?w)M9o=P`WYlᇽ|-4I}(\q` Kxo9(~rET̶uzJ@Пlo4s5ҶN=;#2tHp/(#0LDazwӢi 1BVBQ(f΢:V-CAWRW99M3MG&8$)EiZneȦ7ej:m!ѼyT_$LŚ&+VQ H=Ý/3:)Sd+(͚.\ex\C^YwАG9:'dBĢ֮ZWeàzSYV )Ƕ?K-8ݲ]vg׿!c7\+rÇ?|>VуWwޮ/7C,+E0%(Q-NJEvXQeZ?I2,c\צ|ͯB·l.{CmљC~MЦ;ohkT(㼝B)ZOB¸$0-6ӷ5uYq6"t>yC*Тd;"MmdMڿidi>aJ[:αn.|$KӀkn=ֹ\Ӿς֥~[嵰OT1SȒȫ|'r]I47ɵJ^{oe-H 2tI1Y YIOt<^1cro}peȝ&792 e\OliFQo6dHƃx>4eY?Şc:XjAIc5%Uj"FS ׎h^){v# 3NNgRHuȏבq ZwڹRQ@Nrtx8&ң #1Hkh>e6Q+b2zW,ۈ(8z4zK?y3 -EʛiG2Z%G°!WS!N>T6 oOgE:,l.gEmӯ^[fqj `vjn D83-栨rõ`3Ѥ2kT٦ʽvO=bVW?$R 9ۈWYiD-b>䖊iц4OURUb;PӰail}-O}/x7\X? aXR6tgjM=TAApV2H7#m*^Lu$!h̥ES(2hݔ;١_+a5ŝ6ɈTX4NL\IvkdrB΅'?W]bf\ў{~*dlLww>cexR:=(~3᾿B6Xl ޠ$"ZLMEڌO}3/HR15+$k)]&tg{qXbm96 ػ>ڻ$Y1N "4QGj3mmi5QE d:vw@sg1U UkjÀϩ |&,I4Ȉ pmcrx~fmA[ :-8zR K("&.-%0(Wݾ}㛳9rˮVJ(Y*oTcQj xO%;dqJ ;e^ *v{c`trl9FUe@i[wֶVJ"Ivޥ?>M`:>yOsq0e6H*Vm$ƙ9z6ɗzKr˭n]~TQdsfYgMu?}{whYnn *<~%|'> öN^3}}quyK鶏~rֳۨd@޻ oipß\b,kǞqUWoFQ[ӈ3:xڱa 7?_30K{Kph,axh* $ irAG=g7*vd{P,8{d!>`Ǻ 1=YTʴ:r/_E^ #e)sL,z|Vbᔅ_iђ[0o%۽E0ўO)j߷Y?=]zUw?'|vRvs(9L3@"=5/{s^54DӝG=l w.tv󧃹`eqgE3XPYחqLuNA ȼ}~gk1MV̘Bj7kO=StnNh6x.=X[(s$RU75#T6M=oXyK~M7OIW a-vceymKáQP8@ ~pd@3֦Y:UsS{yžTp][K!l"mgflnQ5d`9Q9 TcQ[p 7haU cHKķ-YY 4ۛ"~_.g4Ҙӑp;Ì|}tSqLL6c+k4QBeUǥxϾMo:??^{|> =pv0| '_21-B8 )] I>WIK # 5ex~'|DZ{v+P~r@_9OdXVOsxUtƃYc}(nl=~#d2(nt@`HYW@Akpib֣ jsQi: =a _NAhTq3¡Ma*Bme[ZQS5t+2ܴJ}^sb/%޶W xeQ빂o1#zP[a^5X{!Y)1 '3i3p샐P,M&y}VmU(u1!N;Ohs[4l^#)V j\ZQl{=) +{*r{ C?qziֳ6\qa0R\;],GF4Ak%yHAZE(l z4OWi6]$GvԎ}6 qY@6UEuT\~L3C:ZAt4E| °lY C7|3'ibTSB/ bahӤ=7mP[d1xQ1!JmґMVZAZlƳcA]T8m' e[;/ο׿]2鋖 p9.*i!膻!w-O~~;\yzruuy2 Kr 7vrlg`Z"($Q%܋k=,ҋtF VZ̲J2t}Lk&ێ*DmXu\+*ԭ'4!bH0A{R?RgT8" #4]2@']=8 7^ly=#r: dQx)oWOM_]M]} O}}Pc6y%z_? ͳ+W/~I/dA%Ν]4zHu( Y^ϓ4Z/iAXK, $n5o'pYqd tګ.XGN6榶'3 κ ^ [ [dF$'0tNh"o21SdSЂښF<7WvhMÔ5tVi`ImTKYomU(ᣖԞ57`lY 6أ6&yaEqq߈4;ޱr5٩—Vdsr/\/>ښi"z![9&X5hMqC5zG觯U;;*Nʗ!zdi:R?y9=Yi0]cVصa|ѧoZ-=ӔKleppd~`-FFRڛd^mnqӐ!/P@JX`9J+agnР̌dPZFmf;( qB'A BCmLDyt"vQș'z }XA1W0O{edPS)-ËUR_lt6ڂ3Pۘ6|`&|Siyp+sPC326OO?}+X76EWԴuWUYh$CWXLIPg0>h a KՀ.5]QDU3C]E020 9\gZ?t㭏)2 @fTUq̰VM(w<EPC? '%V4R>qE79glV~r(mN$"`g2 8x^ԵfI%WZq6U𒣬?\bmEiV(WiEv66S/8ÚV:! 탟 ߳ûd{o.c%1X0'rv9r,vt]O4qp^,3Z1=d$DN ݞFSPQM&3x- ;j`2Q%Iْ<)0 k^E Qd-fm Pz7{U[J)[/wlQ8_d6}mE6D7u%OXS+"ړ ֛[ƭY8vW+7菞v!}" ẓ[ :vis$?xA!$Yцɻ4j<5SJ()7%ڵ@`ѿB)]Wa526 #vMm08U1C5дly^;j;Qiju%!29`n[y5 ݸR|4 ?g~\{mKo/Y&3ZHS^?zmgt5xe~mC]ZZZ#0NמDɾ9&´(*b=6mA^c^‰iԔ> \ M<JFmSфLGp;U;h:`~e:O2<ܳՅ~e'Oe(aA9z,/C- ^]aA΄|o ϋ()Hg( W5,LJSD;i(0QRbx` jM XӛSpq?Tfdm~el|O{d0R+PB3*Q4܇lj+EUEi"v n`ـ?výBqU q.(jy!t /EY,1,t:-h;gvӳ-xBDZ} VڃaڞN6T5D QLװT7MU4ribg:I(迣./ϸJ\)BD]Q,yQJ ktҸ3 %Mz֨ R@N H*L6'5*f$ G qQznj>76®m=d53Pce4eT5$NP]A[ä申[AP/nMi1fia`&8 FUT)2L,{PHVJU]7wW| nWX[*FMvzq GNdbmU}[A%*QG]vV JERRWfp+S )qeqܘ:4q;A@D4BlCt&ĵte< D3EqC$Vn7Ś:%ӔF5bQq3ܤfӚ1کt9<Tn bI/¤@k#JnDkpQf/,G6a/ݩWo}#6#Fw7;Uߵym`R 6hnt{=Xx@D;{Zr/X6SN+^Oϥ́Q: :#Oے#nd VÐx<-}+}Ya6e[ۢv>*V@oxNks 1zjH lUp :bs6 IRCIUHl/5nw35s wOfw^_Y~;d38tmUqM+@9)E[fQh^"^UD, "ڱ~pB^N4ۜBU+-O:u}Tu0Я}l Us%c>9*:#hOpLDT7i.(ۖRuo5L(sw/v,Z8ن+/%NCѨTjx.u1`hZFQ";NyF"rY*. (`c44MCaEx c|gwD$mL؝xk@'TkKy & ""XDfX7Kd} SRC{2](^f&Y"i`*LR|IaV 8(!ΛwGvG9q&[qac= :~Saes~\تeZ'6vz++=u1 v<˳OmmoM ]GLu]ɡ8˲ŵD啠fgg0םs{{ˍߚ&;iD8B%qCӰ*I*~ 硸kѴ]0FQA[ X0jU09 DvHRɒ2 ukeGsNXE EZȍE~5 %=no3eVO{fQ1 Ç;?88Sk}~E}˛za7 -%7ϸepfcѴz'R ^ыX%g,/XOB%HГs=wsmRO?8wec2^(7Ґ**:ۊi-隊h_P \[db3jˣj[>WHR 4vx;&ˋ&M1?xPp~K2/J暍op)f,Vz8{ߵ{Cȗ]ki؋yi$2YǼx1+s][JKW7x5D}ÄO1%kZ^pEBBn 2=D8/(S7LDh)YW ݍOCP+ХŮ艵;ynv xE%vG0EVek M-ņw ,;}i,J$q.EPTQOo .DSL2^健 50$Haä*5UB-B ~3 i1 x.5i%OUD(b[6hj@2:3;*|DY,&5 1:<3Wh0YȪ-%)9nvs%r1ǽ?cO=\2FQ ӳ[+Hx  ,/b+Aڂ<ǰӝ|s-v;7 aEύQUV~#ڮCeȪu0Bֵ84V(BW\Q+}P1'"v\_$pXD[H+֖D`! @tVBVmUkσ_Zje6jޠm7=ɣb+iO;+O/gmw`({| ?z7SР)-XicOTy;$(E˭/T&IY [ DUN@#p]O7 h?U910 <.BzY%m]WE]0'ӝ- 74H4m VMS"r=*?rxc0dzkkwi8%76%^~a໮m0-M!kMWTuXMZ7'o|_Fg/yz-қ6- ݡzڋJQQȧ>RtUBc+Am!Tl,{zkי A72NidQ1ѨGǝ_:lM8vbC i^U +sKU^145HSlΩ+fm>. ;g%YAsMz80[|5~ QYخ% d qLџ8O%&XQ#JQ}#v?y~x߽<@_vɟ\C['i̪~_  8FS <+%c/ (Irpy[ow-iB^Vœր~Jן_Xӈ'xnܳa[J!hL:,\i"XAt7[dYSkhO mztkm-wSB,*9#f:TSnÕ('K 1.y}ђch(EkΠrV+9AE3lѝ9(r]J,B[9TBjSG MLeWIy ;/1raXlDae(ӫZ?-ҒV'VERqae6HҔY )KL8q;ynh(XZ0؆ !v%k4mC5EǀI9P"JoX*D$p{2 : bxyKxk4alYc!57,BPМUKv K=ى&vmw/1 {{%t&Z3bIr 7[JaP 4V?*ehC +=/uVk`8(~Z HCD9L& NVTu=g$.M5<*vwjD:JVh~ $פ.%ßِVRATgĽF 3*q =סw=y_x_|;N쥿x_[[.TmʬXHkL.Kf4"WR_U؉3SA ԫD,f.-u"/ˌ+2%@~c:j^-f4|R 3PBZKIW85} >[{X!rn8hZfj!ĶHEc44UZ\Юzѳ8%'g;뚮&\:Obن:GGM7-~ gv:fФM'Rh>9xڝ63BTx ӧ٣(=ireo:lZhZ7X)7QtB,Ǎ U.[-gu(@bRoπS:y <6Ԁw^_;9Di[<@Ҍ>n- u!9|l  XjG|sriqSZYa# :q;@ w 6j52DSZ6 u+fPemC~XB' JCXuY]g(rYb׏$)I F$<롨Ԕlp99ݵxjksf_]_?q=e}|`/“~u}Mozƅm O88A |_sp [%o\x nIȧ$lϯ$L bWPM x P k)P?ȉ%&NL*Jm Bas.avƆ^eyH,V:6] , RTP[,)3<1"fFk%ߧ*Z'ҁ, u't8|g4p?i+Os`,E@(ݣZ08…L&Ӭ,Ϝ> ܁j:[)Ӡ5f ~΋]I.$.ΙOʢDj݁!KWEoeBZVnÀ0=tlL*^EVwLf E3l#Aa*j)ie٥kZ4a^s?-%<j/QWaIS1[MLrf U(vnA8#-20'%)jbW@aQ fMOk_S*ue$ZȉXcI6ڸlc[:ĚFyOO=.q.UX))Vш4PE;zf1p֦K/_=w/7{v:斻ޣg7]cZ]_rQu{|'.,, bLc2L]ķ-I{d&zJ *3&XQq҈"}3L%$jvx6Nxt$LH BQTIajp >%P',ؖQ 5H4T=ԭv Ɛek Qn;*U0?_$fbV

I1LJ?Oνǎo{C`kXE34VήMWLT` ēP2-`p6G9BswǨp%x9{w AYz%%`X& \gWv4*Գ,S)8SiǭgM9 ["a1i;9F[ƆQ  ׽aZ׀(U5Y Lev$|a%$7\u5eʦLycف ø ۶[Hٖ5ѝC䘵NyhU 1 6\`749^S@ SV5`b9/rVNHlw(TIN#I`Nr2 g]ZYoA^җ$]تs (Ruxf2iPکS}TJYלb4K~+- \\gL z6$4USV`[\S02/sF)a 0֜'?y%?<{;o8y_&XBݐs>;ubо!)_u f5 g49 (@bTHsv8)rJ0B`U ,4H!Jl(泭3 i{ർa&%匶ax$%O`|P+@!wpي#7ڵܘY\0X6q%D)&++Aw'>1_|w\;U*Q?ț~߂+zeax<=fd4+-Ujfr(ޅdZW<ôփthYgj c d>=s;X{{yϴ.Hk ]ܴ\]s$N4eVtY%̈#'n4Cwl30 B6PL;,궪F ,S1I!\c,FC5e _8pm3w|3܉UQe8*d}!F{n:s~ O6A(_-`IZmxik_%ExKȩF>RwBÑeQEM ރӫEF8$s,>v FX݊ʫ JdIq]/Pʲ8|)fjAcc3^u{m C?8v_~~UmOKcMw|}pa_u61ҤLZF ^c !*b Ybʫ(= (FlޢB9ғz[ڴa; 6*c'G$z[ǎäX>?{`;eaNa?BFAXQNCF}m]uĀ+<:߷=S <0(I@JA֝5gl{xZG67t! ` gVB߄\ѥvҋ3Cq ?wVQ8sZJ_7Qˋtjbfv n/Ic66GA|߲  ?J ð5ZidXO&x)R xJϵjM@$2zAҡyv P)I'XF-lreC{a96iDJY #L2eI IX Of -V# N`XV1ZI18[,,ABI2HBXZ8'r-4My]\+0lQ+ 9]EE]YQRkKe%sFx35`פsE fu:bSM5}ہUFqq Tv33q,Ϸn}Cws[8V{Si);;-./?6ٶUuEմȓ(DDƚXcLf ;XJeaQBW7&*]BeI ZX6 EP3H&00L," ع8uq@+ p"h˱TNO Q _xqo~կs]ӷ +([OG?zW[Ô5RJٱueM6pXoLm[dűcTq-E,F*pʼn0OǺgޞa&vs&ESIVӂS0Y_?݀%GpxuBM]p暴mW(>Mi$~[jf\h%XO^gmiLNcʂhe7HQt)"gÅǑv9}F*!M@exH,К6T##'AEEjR^Vcx92Ƿl0:5˃d|vڶcgaDU&Ӭ(ek-Lڒ4#+SS¹Ycɂ,.^/#.jꑨTi^Eмp"E"{ޓ˧Sc#if{uV!GrG}qjS)g03?nc Kܧeչhp^NB$^ozlbRXZ”e2 P&33K;=Weq KS$OͻH+Lp\QrU2Il GgQ$+.p/@np#517yvXRf`(ts;jߤEjϠn<'F9/;3;K|msۭ|k򌅋- ?sU ?9#{Ww1: rӕ0N1e5~p=' <f/a4VaNM)>3#Y.$/!ʈbڄCK K(YI#  Ϫ(Hs|lM d:*55_}]^⨠џԦk=^x+xkZUk*5QKۤ&`^PA}JY6"'C%]D*2$|JIS\bv1O(0-f# $.MVQ#+C{c}YW"!SEZ ?j򪪏;đ+ΰ!]*|*^wYgDKd ঐH;&˄-i۴?r=|?޶CzE9GT9޵k,.w9ߵ;ya }{ 2,贆7$Iqر`0lCeh;t  VtTj8*ͺ`vtlt#0Qf ۋIBs<˵mc\z`h#G!=:gb%uO^:{v,+b,+XrC{;ew$Yf9vݠnC(e^aܳPš;VK 3n4sݬe4kb\eHg ձT{ŏbX'QDbuoUWtei::d+= m^:qmMo*d{J󈣼HE/ͱ߿`n.z/?y;n/tj(2 9,M/ؿ+g/}!- y-b.j"$D\#{W*L5:bk0ܴͬirݿwwde5hTUdOu:a`PB#y!0-4Mn%1j2$n#^'اK&F'V`v>1PjZ81qmsoWP՝|ˁeQGk,tf&v~{>_^gwal4u}c5AeL--*5 u-b;+8@Pt9 PsP, *W|D)u ,fUGX_bUFeZ5yY\ GKnzfmҕ!,db0(`VU2i$IoɑHnrPg͑1+ӮEʋj>tx6v8˚vҭ#G/\h|-`)q*RbZtS&A ?we}O[%=}Lr6ZJߩg>~>$"mzOQUILX^zgiN6,HQȀ3̂ ,yP5q=gkn.;2\FQ?QVݱPW֭A0jZof}',6 ȓ~/͂Tņe/-,o۱i}'P\zw?M{+8zvǨ a^ A%&E~^-;ճWGj h@k.z1j֓p%t_H%DBL JL%AecL#Df^ Q,ΈKUU)7YNH"xnOO51MBQ,;\ٿ>f|ƆG` s fy²ֱiUą3T5*kb3kyar=7j|k+{\}oyӉ݃7gcwf7J"L'i Y-@8X,  ~;LeuxqԦZa$ㄋWn-QJvz$ٸ~*Ğ0 .<7ܾq6Xԗ;s<PKE8)Y yMXEAs2bFOm,u$ե=m$nyeI,C&EJ!eHJsx`c. ,u=4Q(&l}@ץb>֬jE ]Q"?2E-[7;8 z۶Θ'MsoꕞW(,Z:,dHdRAm˷GKkumYZ]p?>sJr~SKksX~澵(B}ς񓫶6&&TjRC^0z M4 cRI΍5'7l2=7Vk1%%lNF #C 쇱y߇>"0 *6T Lԕ mX3M0M:0F%s3ɱ{:CZI"WW"'`Y]{W}W86s?zK[#cythI"5%!RZM T'_Za(5 u_sV~?'ll57ٲ+e#] FSS/|QN6MKynxg:^~K3upC? wuخIov޾>wKtw~}XyD(I&Tۺ(ϦFj>|tPeA4622vq}HҶs/"/$S`,3K< br<p86 `|q)ayعx.h{khW9+IaO_}ך&ux]gv^Gz!%K̝-e$Ef58b)K . C*-a,DkJg% a#EB!,4e8 Q/JR01hs"8渻Gۀě3ض  8&iE?$ɐeuσ*U* @&\#)ǦPxiXؿ?aoIf&%ѢxgL&Y-I`Q\FGƦ^P0͚ H4ighP]e)cQ . 9\/(3J'E>:ZScz?pXOΰ; Q*c!2 xi-\}hܗ|ّQm0C}M]U7 R4;bKe2C07MlU"U\65%mĞCힿc~jGH+Kh HjPc5;:\HcsPTO%_,sRl]~~{ʙ1o;n|7嫎S~+[{SJvj_,^~y82=k^kb deͲ$<81Zi{O>l;վ]$ix &E=5F{q=ED 1XAݕ-iWpgEjg`|x[[? 5~8|ucQV g~_喡JLհ0:?coU5ng;A K:v@Y(k-7,؇ӁVJL[(Dfj80/JiMry8hcqfFԮqXmpTJpYKMCd=J*ՊARJ($*C>`%|bV8 YjyALxw__nC6%qow~l=|hdȖ ; R3{#yZirg-+I% ؀e0$๓3 Xۖ٨YޥW8WwχMD3+; Ґ ĨڝAKs  GZlۺE0I9ہVpE˖h׈MqOWmSb;]v쪫_߻Ιw/!4e~:jl5G)Lus/#3٠oeRh~^ibV3DY 3+]Jla>iKMVW4w(mΊ[\Y>lq{ ?Qx /m'yٯKa\\s̓z,KUAs|_7E65 _*rmQkW%; 2Oj'T2 jYZss1dM:-d\hA1Faֲ6%ұYR9Ձ?3:;.#(o~S*H( kuAsAF2i5Ƹ.(IBRb1LqGa%iV0VSXɝgxA,,Utx*8|ŋ,<18QXĪ#~[0 !(LY:V i"R3°j.#O CAPRpEUgYbz}r{'ZW\zǽw}u<ɘɈgI3g֔cyeʫ!z]+)d?Cn㮸 )hQdẪj} _˯X#o偽{Z#-^WN.f CF A>LeXTvw﹎ Yx;۽x:o<|0jw4 v̍SAeVcog:;5όfg8qK/=qŕwl_Cܮ_/7֨Rʠ|:Q47͑:|ygm ~ECB +R\җdQX XE"0A6|pb$V\|]~Cny0 °mpǦ׽B:1na8XdM>ܜiPjYJ<[j`GpfMsp;qTa|%M> aP!եW~{TSA=yUM Vʵlgmx-ϩ&( p3 oiqVʴЎ$m"or24mL(9~ݦG4R j.H Lџeeg@EэDI96r` 2u/Fh}`3tj!9g"s%ؘ1= x ]wP]DcK Ŭ5W_zi)nBo5pڇYp2-5/|8OIʻ?a~Uj8 P/zB,j\YZ]b+Hkc Cw—e/_~uwdŗǏM//aL_$Q"抰U) f88)^-,Kraԓx~,6v/tIq[WRyLuOmѻIN?Jt 賮Ϙ޴y/to伐}) FkߴvcdeofEO;aVI6`EͽuYx58_]edגr'2}b 1 0:Tcs5@h%SFQVm g`zG): +9p%HJ)3-2"O1( ru<-PB$C/Y˒LQO`MJz?ʃ/>`:_]jwtLK ?`ĩ?J>v=9t-k4(uk#1mcfhT L(C#lPBhײTX7_cPLV]5qn anM3zrip#ӪI*F<&*/p)]=o<יH~)eQcP&=y6˱9OTI5ˊr"[\Bez=ޑF3cy\$COnـKq֖xңGV=/&ÄRJ4D ņQ a#5di"N+v\I0*-6 S2 `;2a%:=| VJ~ȓ 3r*- ЕUkq[o#}ypCp=}Fjϫzə|gSv?ơ4PӶ3F{] ϓm;Nʯ|e|<ٳgf_>؜&rq{sb7[GYXoŒ LŸ>yV`>L W,t,6yNp7I0 #S禸cYnLYoO4G,ڂ =9;O{#g?RgC&tRU|ŔJP`ءGdbU'?% E lU\<m*F vĢ"yDa&`OÚ) 3=1\*T]t<J?*TM8Q(AT0,w jFR^Y fIEۙsrdZޗ<,cn^?yƱ wO=!l2N3$Ԃo?Hm̝蜊L(Ҕ"59ȳ-d^XDy+/ 2Q X2ґfޚT#bKϢ0Ӓ7—]~Gxdž 'q'LXb4Ღ-̍5l:Bi!@cwKEp<:h\dEBT]g(*r*B(mj**UCLô7LJ`X8"kyk=+oo?ƥMX1H֧ g?ZnB TzU*8,@ԧ_}(-%?kr4%?r3MuT;O.,ఁC/=I P``5l`6( tb+vUxYT0)9:Gen%%C% fY7@, ӽ 1~vk>ara6Z* _޿uΌ1Ј) 뷽CPK8--Uf$+GO#X[* `&HȠZESL>V5jԕR!`UX-%\AǸiL1vT2Q*0!{b,b,YN7ЧNӵ$qf:m)0,O?Lekש1 ġkRV܃{}ϝ`7ZM{ea7B볷>Eh]9׏\w٬\KjxSYd66 X.W)6.+aV]pFE˄ȼT a:ei0e纵zI77z_zi-&쑇u[zaˎR#i7Y@qAcamXd r<p/|XFGOk8uцW'(x+|l%\b EKcbv򨒫BeAV&r] ` e 7'YbZ0ۜWz ya N!B KzhIUQ˳! 6-"()Gb7\?ؿ?/̽dk?Q[g!fX4X`QoZe Kto # us0JV:?}ZNL;щVnwpnmfEj qKFzC!RQE# Aǖ>< ($_:e6&̠y6j~yX:2NR@ES{mg6_4޼eeީSO6SwP _K9[Y׉ q/W m'nՑMB 7cDAFVla!)0"P, D7TXF:-G3D 9`rȒ1|b P !B<.1j`-~<ќ *%Vds)U 1J[#YUQRf2zg5$6\p')ĵeJYycd:F$Jv߫.QQ>?Jo՛z_XibuJ0;+|29; tMNUliUQ8+҈*Vk2ǵd:Zrp'ݸoA)M>M`D?^^zo"+XLrԛ]dLdPF%PIUkxMfs j0G#UG6W:ص3Lfy5vKW^/P!lHBP1] $!Tùb~EydN,,+˪=6gI:!;%GRmv9Ku(Хe)86Ak-\ӵ2_];}RT>7;{px>k(n Ydgm="fg&;Pyz<{*4z_y[[6dtec<7{ i|n8ǃMC'm.28ЖFfEi};+ܾ%&hlbFp|07DM6jjͼ. n-hw|(l206-4uhjGⒻ_s翰u&]W\ژxY4c(ǩl4}vguPi\[b؉å5Q@X%g7`\leـ90e>V6sY>R9˳Y a@c(,e ~Lk1|EIe)j o T?c0%=QSn;q6&\C?T4+B_O(-mRV/(~e -mG]qDgwzə&XЅSKgmi}bUpҏkgq*͓~RrIuN; t @p}}PeLIDJزb$ : 96JftSkO|ꉏ1`ϻ .d |q+-a!} jԑE K"C Iۋ8/s DilEN,aPGBɪ+lQKS*Mʨfo[%&1y>EnX뺪PQRթ0 P;+fMYyh𒆫Xv%|@ߤ5X͟iVh%v,y_G;$?\%w:1:׆Zi5&3[fWLd410yEus+l(X຅]_:{MGZY~$F9@!-` \)=/mT tNvC압Knw,otttbIaMoh;v$è4&g1񏆮+vS__0ʤ(:AuMC [oX|%`(WU3LhO A1uA::wEi=BA/ri/kAFjB4YY#Mi\$vJG ijkéC-Itg`$u u*,QffOK4+sGLPpYIc+0.(ø a)D^û C|]'e LU+ZC@UsPO_y],^T3[Ls/(=i/T?4BT ƨ|aFN"gb}kBIx->:I3BXK`+]O:lF̩{ ՓzĤ֭afF8B Umܗ.p{>$WRH&&&evYzeYuNS. *vv yS5X4qFQȊ|8= #MqSpHuw4=jj ~N ]`J+V*QoшS[:.P,3zU{>bRH %MxEڀ \uk'q ;E #iH௜)L/8梥>ߟSU< ŋ#l5<U;S|%_3u\.4U@z5w؆D*Yh XkiSU&)ΧDNxY:2:!1cC=(G j^-_Ƌiu.w)1 ǁKWNF^bHDPO|qrZ?Q8gQǿL'>TɁ.(Q;4ʍ U3*ۮ)Gy}cXj;Rlf'4$x8dn,jV7Nt2E@9:;`|ܗ T^l@N~d{ UB22bsAWej$Do,b'y!'+u\W4x5)3gZxR,y|1D9}]ͫtqf>Yo( <X :zzBq1r= J% 眤\[>lBq%K4nMT<:»$ν!L=]($57,SD<4 {<ɋ CCz?/"@9%. - QT~4򣩫c6.,Jm-XVdA㈭д v+! jl15  LC$)Ljf?l`Aq䤷 r4_>x&8F<ф 0 )V'A5`q )kԮ+{pQ`w>zV3MX'-j!FZ 7ʧlLu'Pځ `R=vG2^9\76`2˒^DHǾKg>6q>]--N@#S[v1ZYbr0MTrHvme0Q cxxZ ObV޹cyzg[Ukpתǫ/w#lBJ8_ǟmw Q]QpLb𖽿䩯1!kX7~ ѕt!_ ^Ɉ("uV_b6XX&+O~oTΓ62J:(X8!l Լ@Aw} "B=0.^&| R/6'88kbL=pOd{z^ yT9C.="rHZ6n(]p<{\,D1}ԅ)wQ>xyY!> %%7[TQ ȷa\W~^ٮQ)i=gool|cHd?q@"L)І_ "lĬ*ZDɥ`@0~t'XNE*IUN eGrx# 5BKzIs:[1O}܏|Z (E?`=,R i*$&e B$gGZoLk9m58;D0CB8V DF,Z̛'N~sc1B[.W=[-px:=a%==v E@&N$q"]$`j~`9dl }z- F !ҲTZ #=G K?G'??˿>;4AY(w-_<1 wlxn/D^9f lhAi`e?x\?3X+‰\"$  E<ţRmI}4{/_prz{+!)xOiф)} O)YߊҜ{>,U5zq G"6qN:F 0UlxGO}2ۼ1tE g5 # ָ 6q|u)&-iRŸd~>.@6@_@KߤI Z?o~=KE7Nn7-ʎ{XUp }j LNv3>t˂p+;?3/gWezyrSwlBQ(iL.Hɼ4e|W)^=o蓿;?ӗ^nb" o};i),֩uXתg5q8!dV$iDXXE«"G`Gm35zEXïS~exq1ʒE㦔w:^[tX֫[.I]&ƻnLVm[;arDZfp殫XEuyD_=*j 2J$ʗ㺸a@#92ϑ"Uqz)t=F Zg&eIy Qgr>wRF{7v5 yBm]h:yw N03lpҤH0&#:ai$Q<֨0TUR&|fqyo;4< α։4-Pyx~jg33U]o_!w|}=H&Gˆb 5 \',Qt ,$&AAKRT]HN7ㅞ/Bf/=?'"M[\`8|`#O?"8 QJp 6%2H \)EM9޵SxC|{/W3Sjk~ZWH,ڶYdc(^P$QBY??}hDa |qˢ.(ezjQaDv}|6GqFVT[Gl_~ҟ˂'.fTo%5T`7ij(Q g d4G SS6<ʅS VB9B9?Ǎ]L,5i P_<(?DH01"ANiQR:-1j:"aC(!sNeQBkK~/|ѿ79m"C}4!8-tȢTlVlIi+'c4aio)IQζN<il]Ɲ6Mp%o9|*U;yΫ)vT51AWGn r[!)18B3}2IY{OΓnZb mR{ʅᢥۨpQ6TXԦq]Fܴ4ԴSL(Rrj8%F8?ϭќuy0j)r AmE$$B}$@ߦ}jќR/9 l{>uz_$Xtǝuƅz$.iiIb!X5Ӈ &b5NeӦmQĄb%16GM|;Ju|7ZͫəzIf>5[_tt 9: Sos_|EyuDՊNk1!e){ɨa#kmO Zkǧ??_!bW(*T⥺{x'tI:f?A%qG(-92o8SܬiXOwb uwʰSU궷p֬?4Om'q]µ_O_?:qfǑ~ܧz@;V2[1:f m Qͽ5UDkzp$T)Yӻc8Ǻ2 {(mPpNs ^H&xBW] kׅ E]6rU=42* ] H%<*կw%|7=ˆ-mYX.qa4Dqso&s]VȶzKP3lդ2RGt1s>j"~_Vb͠U \a@1,2j44 vX%9ú6[\f`ѱp4P**M]6NiiKP2U:l3"EKBBvRÖ94F ϫVkqcd|bm-!.^jۗfs7ܥB?,}3PV-ʦH2fBuAhp( AY(;~sG*"ȡqoKޘ&<}!lբuuߒj\2z[ES/x^〆c`1}MMw/ɧc@$瑮b ֵ93M#^Loj0 V6|xH/q^cfͷK4Bnfr3%"5bO21ߑuI=f{j4nfzRz&#KEEu$ǰVFR&"bdVU(k)gW@<𽩱]!Q$"g8 B& L&ԆD6j[lsz0XOV8HfmSswk+O5j DW:0?X;P&JI?ݯUmRhăojLBٽ6b /]ȣ]p>lw2#!#Sx\>s~ϟ~Ky#vuq y.6VxҋJ=7] ·`ٷ} ۗמႼOGߦv{;FUO-Ȏ?2BL(eͲjw6fG<ksǞzO|\T{+ssv+Q0u}օ|0|w\F`|\_pC52DXwh.rEҖ#SGٟ>-\k6Nn>!\ ah۶tTI3ܪ#En^ynZ.vR7 5֋>YyLPX4,',^aVbhjtM !MsX-&H#^T)V0¸ +W KO\g'֦*eՂ9佢,QѸų",-+dtQiqo1VLZFqb;zť`  ̮$=0m?CbDA Mh(dHȸQYl;npca/Éë )QLdQk_o|>7^goR2DWמ?60m#˳/>S~߼? ڒH8<UK/6Z Xc\8+:R2O|O}Maa(m5 J7*Jxi*1,n=s lk4i;aԨi|Sz}:[ /'O3zL>w6HOz_wOg?̀#>-ģ 1qѩ{`a{'b75ئ {vFYDEKJXn:F,\/uxӣʀ!,54xO٧{Ptr;l.ۖ(3-^Y¹4<|5OԔN"3[~K0R)mbG; oq-Aq<KX]]XCʄ,8 "kjHU tMifR&f6JZjƋ1plGAZyǬr1f6ę8MKzͼB 0u0.>n;7\MU;EI曏}kԖyzzQ"ƓK^NJν_yeO>7NJweU (6@Mv*(0m4bQ.^KigcM_k/~k^EvzO]Z]٫:{}U˕64c8m(K@U/j-(Q";j.(~1^RQSN%=jpYTOc$.lXGCF'>w8/3.':bĸ8Ɨ$"$tUrZ!֍F|_E,a)⃿xCWP`OTȕ+K6Ns x(́sRfIĝID*qCD- sF%2rD$I]GMhT#E&TˆGd$"c> vO*8N i-Ѯ$ѱMKWG'͆|jƚ 6.yP+W اZs]&Iyzx!d]JN98oS426yc<§yMb:S \hC걩> G26\n?oJ$?srcX|u+Q%7dL Sg@nb&JIS>X l[@ihk[kw?0 BZru{FETD s[Tl|lnu$VZ[k ĄI I&h|ɃYR\݆HZxuTKE;3o~__x,- <uoA\>F?xt,p0d;z?Vnn pKL^$ӆ1ph"k 0]:`GXۑnY!/ ǀPhN.hhk3'b# cb!~•KM'I3+$(r;Iy|3ռ4oȌxϗ =Wb:+ ZJU9is;;ǯ\^ plz($bM8(,)`.+Cgby3+2@XN&(pV&NQnFU1_!r?7eןfX6ӮuL&Wz/w>3o0<~VSKn5[(b(x:+0h;ʺޛ[ktcRS+via=cMl=q^g7P F!PjyBuKtH(\8x|T^Ҹ0#l1,v *,[(/[Eg!Jx6,,J_#-Sk]mAX |kkE.eIORmUF,!"xKlU"ϕi$ML8˳<$Y: hW,d<3 RYW6%XOG$$q:l5?~TҒSz5~nREqm3xsnY1γ%Msj(oci?_/Kk߯56Iv.U^%@ ǃcJuQ@KL)K|LحD409E4VΪF;2sxXNX|bE"y}_MՓϪ}9o{_ߒBkoN(VHsh$Ƽ~PkM/xjx,K:"j>e{#ոG30͌8u@0z$Jc߽*E>>9f}Qwwn' ~(0>aɋu&Uz:oJEQŚ4plq]Qɥ`,ZE<$ ceX2덚 `\X(fLլM7it}狦F~b%y.{Y;LuE^{q9'VadP%0*gilf_V#HȲV)=E՞[  *˺HS, X:46s* {t진-|aG]dAI}Gρb9 ƒ2 w[[l.kxfT۵@pt |5⋒&Es |=hӪ_R/|q+,9y%PcnLQA '$&wԱ;K,'VRWpK4Vۘҫl -(4K頎RbT;܉㈩ʊ}Eᥗ6 󷌞 ()5% %Ў?s!pt<&.}`{T$uDt;*۫@z$gIm֣E]4Wfk<~G@Mpix+ `U q+k]S& 'I#% 9<|(༷ۋ J+}hs.uڀoLbDL2Q?e\eW6臅#mYU$E̢+4K69,@ ND5jw1>дAE:+ |pQպ5qpyR8U\|+͈eS3DU\H$vQc9DZ͖N`G|5T<֥Hc2~w6(t(,{"R; b}ױ~|#υ}#'/?;ruz˘ztI"@i4F.v=-LF䱇 x6tΈȶF.Kv#rKRX0嚈g‹j泸?ޓ{ex&nĐ,=`IzY-8#2 'E3F9*i) /<_on-`iސeGrZIoQ;K`'F_'u*Z=V l%mو|4y3kܾr^ f+ZϮڸ]ͨLünnRByw+'J"!֙+y}8ۤ xd2 riCRZA|d~ơ X\Y-[},M0Zf"I6 o ؑ0򫆙}-]#+zH64Pq T"TTP{34v$Bx%;* fb6mD4wr׹ʸoNAzYRE3bCV2nG+`G6WtyY~ß>e'tA{tf@M.t.L"BiVݻkQ{1j=UF*M EЀe*]`áqCaR0y])n`*9(>j w>3Ͷ?l&=c4gNP,#Y5ƒ&ԪcXrxmkonD%:z8D|QX1h(Ķۺd.)Xe4R0xnvS,LQXh%pKc imù, Gcaς4|h0?ᒘcXB;m2YMk 0R ``aQfEYBZ4P{x#y<L Y&J42$Ą>/9KFeE78V5kyXmG!JB$K&\#BhD]++,(E{# 󉔱h)6u1sO hʲA1R*$ hlHUk j P7s0d84]2|:(]ϊkkQgʙIuH2.D $q@94Doh +ḃr+ cO?{6ջcwA0āL^{bL6~ mh9^E$"og,o_"2TjW -uQ;'Xm)1]d'٢s~w|M`a s"7ͪ6v)Gs-oBMgdZ)~8VmaUP,CږG%+ڶ=dOc'iVcz_mv;k^yΦ"fmk q,Huhnv 3 ih@.^y?OW{GYz,{~I<&IZy5zsӽȋV(>h4#qXb&XmpǂwZ@-?GHS65AeM 7q2Pr98I8"23bC.eum0fAcM `A^p z$AwitV,%`lt<$R&<34a?2kV s_㩋ȇ!)Θ1̵XL ,ϲzaڶݺTVe x":i-m9 P{/SٵBͷm^yv":bWz=B^~OκK`4x/tQm#+,Qs-] ՜=А(F"٫DacD.ĴK4qUqhW> e!ucad~T371]=9+朦2~'{_~ ~p%dnɠ^mP WkP)MXnx>%C;{0c^ l]N9ϦW@O>y~mo=G+l)Eu]%rp58iV3]iRxcʪ:x+˗5]Z.VdN@RMdXNO;9fS1޳*izV8ӲAu@   ˘$ j$椝id`Oխn $Epg4xlbzí29࠘\GD</NJ;w9bQ1 HV3Qh-8$ A oU`F5d vºQ!;{N$ krS$Δ Ye`E/^yhiY"WS^mRchZJ W_=2KPXF'pזsOf诧Rspv%aSgU5tPS G/]x҉4\#ae,`4X©GޏC*b͜=EٝQ&7\Ow "UDwG:[(#vfQml(9:Tҭo_^[7+ ˮk,UReEi,chPZsB Un"u+ /:FqГ\@}I}rܫ-$L gKFŁ\kz'FQv&(@f{iq<ѣ(0 CS>]lY"BG!M(<$zkp2Y=aCU̎_jp7bϼoqlZ~iaVWIbɒ4rIZ`K=UMմqeXbo 7jGbƓv&dRth 6v|-$N/K 1-!O$*;>7&G2C8caإ!FK) sQxvjIJn=.%2b[!EH;o 7 0tV+[eU>~<p2o6M:%'nrR>K~ܥOn7ɒQ>5+Q˞qx\e67WVO!E8#'*:{NbzHFf`߈7Ov8SӼJz v>>\/ ΄)ߪxE囍L`-%af+BFښvD=Wk{˾gsCףS$9s!di4ƱϬl=E%Bu>;؋ eպi\Bl/R;Njtaz}nٸ/`gpŕ+=HS{dq&Nr1ܫ!D sRüɳ6鶫p(4<ОN z#p3I΃@a|4e@̙V /+UA{F&0C8$'GqE,Oanjk YXk7YeQ'Au04Op|9wAƣ: Do 9[2O5@(Z1E'6"ꤴٮ0Dpضq{'a aAbgdR)9\s.C:9엖]hD1 6]$cE35&L =UUq?L9S.8uOO ;#pHޢQxuGCvvw^-UNb2\8q;+tA.Z/?F"4kAo49!$ۘ[jzZ '(#TwL 7U9%'Y*+,1iYWʊI3\zZ65`g]!.׹slYچX"\lYxh7uVܴ9USbIYK_}zwS$FyI{5<$nz8ILVO2pc #lJu p2D jG쌶0T,cxJI\uFgl+ =,S9 n=WCu7!o`tt?:pJx6 ŢJE˱s-8N%!IVv<;0 X.v.=ӊmqBˁZqvb+Ry;`8 Opaȷ% " vqlOZ cVFȕ#1*k v쩘*p lLy\ d~ x$Vh&i)LH7PĊFMO—,}I 8_[W*XhQ^bK"pwAev28 X BC|Zz0#j#.⸴Q.gȫYq8Gq JFDWU1_$k[~jafW?WGorMɸ6[Cuq0peë8N "sZLTD!jeēv HOWaVUE%Uۉ!ڷ,H \I۔;Hdc  o7Bj+G+: m3NMCl],^HGUI;:xg`JY Wc, ݕ`lt$)L{&ڡ_$q B$y5cVH* CD 2 x;. J !ݏ Է.#h>0II,P ǔbDi/gW7VLE}O/P˄lx/Nh^W7{ޱ :}ꕯ=7ƿ2R]- JIt#M rFL1G}5`MUΒl26iMj30Bے` t*q2@o|k?*Yok."(ʚf& ⬩A/ ڊ 0&rps#Vm| vZ88<누3tcm?C;K:rehl/l'dKuNp0fӛА84xȭngESg?,!hvtHw8s*#6}|bjݿR}b'.#xzhB9kUGK$JA|᜺Ȳ:ʒQԢT`HpZ4{LauW,e-xHk\Xa7%Σd{hDJNS5h.<rkS]_oʆq]+d?8Hr~rs;qxxc7˛V._8Ki4 u+Me= 6/:'e$tp;!r W[ikzظcvfcHRkm5C7Za2Q(6޵YvcɆ΋]MB׉\k(ˊ)g\Wnz;Xyx<۪r/_r|#8ǝs4A5ZmlI`QE)eݧT& <}j/z2Ul @qZ]k2 @V00T8-jtGJw;RF`z5}ءa{u3ߐsO\ODyJ;ޛ[ve=Je $ !F"҈WAj_m}TZ/GBAAJТ{UZ$B*SÙӚ~߿!JNH}TU{H{^MEQ@ ^0{hES2\`8tZ $0%ؐU3.$@xҚl˹ oLgq2WDdh$wS, Q2M8֡Cyw)U{(Ll ?ί05uV<%;`a_A e$QGUx\6z!22XXw )/B#.{ٱUɱgeUH> OcZ =ٴ@*q$͗#BI l`R1d7xq= tvv*1#`hFQAi#9pȞN ur+`11Ǿ5l`80 O\YAjm6&\?3@/$^3^ ,yx_SP$+iS*PͻV8*Djh8}U8 1b94,V0݀<+Lǘ#$Ռ䘸$~f'W{/{Um3w==bgipgN`;OZiUr{>>P g53UF)k.aT! Szc~,1$\Y> vRLs;?WD+Ms656hM1RܗEQˠNtBp)8a@-[eE]Հ=k5/! bj3j_:;Z(ų7lۑ,J8GNYHksމr%oX 9R`{)g(Ud*F96\'#e,.saIZ Ul㶀$,dT2%IMLݿ0seTZK);0e2oD##.}Om_UŢP6ҭNؙ63*_LV5, \ NJ g+Q҃ >GfYnspaìԈ|g?/d{2?8l0 9ԼY` A]g9,KT 0p'2( h0uiY8& m0C DrjhӘF"(K44W$ۻhb[]I8X֙v+H~g{rɢ1Qq_:$- ʆddp3F-6{eQ0d8Jݟ\-Tkޕ4jd٬䥏3#tv(keXu[oVH1֙7 9j8 @ uFEb.\2Q2e5i y9BSTMs~ΝO99Iox tPjz JTDW5Ē1'ϳy*X־j{ZCIZ1B!KjJ@#( XDƕM]I$NxȠ%E&㣴!1ޖiGyͯO]%J=I~+ޜ6n֑vi18J~w4|O%&~ţ/}Qoap"zrry߻n(D zr_*R $m+(3 bɐ99`cgѥ= ETd*.N!@#Sl$q1\Tg@1I 惦h"y)čQ.F@\͆OJP}M xK_:}SW~k7{fwja\ Fk$%Ċ ׈jL"^?4Ä֞{J[AHjP̆1 _CcAa+x!j*I%pBREc? є/4p籝B:f9^cF c Ib2M$Mai R6 @ 9c\60b5b@>pn`x^㔦 j$|TrȩP ߝ ĖkA,%u4!>ldZFx}{\4Һ1ұF6:g'wp֥/nN߸*+%vPA(,erxțI_{Q}^_o_m_?\{D.C53ŢX7OuVq+d(*Sߵlڠ?QRyHFNo3ѭS⒧=)C$=O3%Sy.` Re` <|塽{'KvK[T=GԵTŵj$ 'To#U4VvBqd k; c 7ő/L|*!| h< DdJH A9:J`߀L6E,tJ.<\06pAaAcI`݌t|B{# rt5%!̭Hl-+ԗwϳqtm'#uH:\l5o =jiN騭^^L.P */fyb&-•e\Ow; p8BC>pf̎nh  T Zfg;v5L Lq{On*}aﯪnt@$p+1f:SkAɣ幜ݯPoCuWL[x@&ZD1zIB`25_߶u $ a& ̣5d^ft玕aEsU)GfZ0Kܴ,"Nj9#zU`~3 E0c+ fS$:"Ƿ?](I 0YՄ6q6*}q>+-߼7jfU_F[Kz HY:X8W *@Œd ,J`bT_[; _ٛOO@sLmt(>t.*$V'lSϣYu,)攴/\%̮T1$[!w@gŽa_\ؙ-,BSN]J:k QgdYU1.ҵ0Ʀ~Wf::jbGqH<Ͷ+k$&D;Jɩ%^c).nP7D.|hV4lg_Y)Sو,G(DjXꞺ{1j~'9:1}Ϧ]uLqsO>P=7?w6h:oL UIz~3I/_WZ]ao-Dy5Rk,sI<p)Y Jl\ dUdG XN80tQyaqbW*2\yLҴI6}LK|Cn* f>#uة&.` T̠2#+DZ?Ⱦ}'7y<<#iwff2aPi!lB0$5/0Ggz@XyߌUmYO[g)?М/?}募7oܟWꖥ-sw5[uq1mʕxE/)sЕ v5#,B#8!Hbvtݱ7OjA QnBll:=՜˲B@[`@>&;KkX$lO):A+cl] (q؛Ɯqyݳ8~ᦨD{IB0%|Uڀ*cf"b&N UՎb/e/l˅RJ'xe/]d~,/lxǾW}k—WlOM%ҥ =:S:݂zC679A4x',M B ]VQ⠙OW4fĩ"S%Bzd p?'waQpFWGӖS8. o"$` a6o(1e?FUEq,M<٬IH !P . aP?z>FIQ\eS[](,T>20H^?~-'o9~A˘hگ*}TXW$P=.alBbjaAP ǒ-S@_]KYmϻru^'~+mBq3 ~0Z'C:T8n*S * RRmM x%3Ď-7ڡdG ]xbl(C9XKLC]jp[bu2Vzo8fz26K\^D|#.q'pw41PP0g: Nx18؋m/1ŕfL|8޺*A5~ЖyK[+V'q駰U}w F?tvs۶{n_KxDhE_Z|[w_%0p4dYq?W~Hs"E柼o|d wdQyq/HiTYt*"FF TojO2wt UPAˁ+. Bd -7GK>7N4Y 0(&/O]W"KM)OlaQ#e@lv^(Ba;DU.@OGQ6yM oy=s_yk])+a+ѢUx [d3WՃ:3^cPvX5C[Q +yݰCV~Pk6r*/nQjgmـTUUVqHr q}6Cg(Ռ!hv(MT eCřb⋍i,TՄ-ͩ*iXҥ$Q Ֆ/ك#rh!w]@㎩?=x.?Сmm~?T5 KABLKE~uE==z@pc[*7J>׻.J{#>]E 6Ɖ.UJ8l4 TAغ9妙p梪 *q33e[Ӧ/D\Bv8H^CtDMpxHUMĕkn]!,&Oqu93OMl8*M HկmHh]cMjkӱNh)z@Kt:L(ltoKG~k;?=ي,b{wZy.;V1(}PYmCO7u+r# êShd tC8a,.z׽3fo}OqOzL]M2 kgpp@$u) ʿA4Gcg+N N1 / {Ʈ^rL: ЉF)`쁏i1z$f'魨؈: c_h^ 8΋,z0AΊ `P9TL+̥X4(92vQ"Ƕm(j'i Ný&3I5f0+=U,$\Ba ؽLlt^/yW!?;:yG#mOp!"0;=o?~緟57ԩ/B 03&b d ÉP5z!) X. K0 vW~o,Y؃I8!KA1e`KcU9NDK$aee0- 2a(.O:+B+6S 1l#z'LT04B * <*bsmCnCuE2<+)"]G`T0޼`,ާZ"i 0J(۳Qs,܉8 BֲZZ^lf+)6o1_u 7g:c?-GS?vW7ziK:Y$[0J@J2{I]{ pW֡эF>ۢޠ%,T Tխ+ LTpUdƘU%_p}6',ebp4+jf xRRǓ+1\Fdmq%P{Ey„b<\9|e.eʕӎ=fR8JJPΗY|cO\(sLLW-3ɏ72ls1ɬעГNسxb-3ֈbX 欠a?dIos9&mx R3[U_HUf!".H֋DNUu.YRWB'p?6[bUV$-nN8 |kuf2RG $>XP ?QãҶQrs1<0JE@cvY' ^S$IbK)*{c)CG`GDy'gBvջxUUR96m^z1{p=.) x{R, 6Ul%hC0i`um1r1uRxX=t?؅y;obH>$&aU.Ja$v8P2ض6i{/$RRZ_NQMDqv`q}` {Ǫ!3Ugzx讈_?㒥|+x-b." )-κ4V#|BN&YR㤏JUE2@P+H+~U%HXdRk II'n[&F%8 lnH{ZHeL=:p)\_w599ZYiݳ:c: I'{NnrsjpdGv[=GYSMIs 5G!}g$%VJR_7?!*/j,'A>,Sh*ye 2rj4Z&jGѰ%vJQZY[91,rfobtx SḃR"Fhz;XΨ[Dȗ}ܢ1qꞞ=0;o|>n)@,+=+W!VIN CyWle Β%H Bj,o8äp->6P_oW7wKJ]U5+c3,'2u=R !:'R0 w'\">XIem}Ie?%.="zHtB<`yezXUD81:T8bbhй`=+Rpdc"SgO;Vu+Z"02z6+`* QTijBdr#=~}c%}/8o'Q_|ʴ^6 ֜S-=RUKO+d#Kz-`Rλ7(aUQp]CY=ACUQLGN|˷<|mG#>=>ar(KǛsr!_4VgImv]}'i+S ޱdm ufd+Y $ /4 ef8_C2)4 e1rHU;Lik9;vCOl肝qw}5>:Ԏ^W?UR+,řLh,5a uSܺjfW"GY~lKDJP(40jbqs-7?z=qp` _`Q K*Kb $ SjTyGd ] X = rXݣN/KPіѽ)ҳi`9;hՙp#a9m^JBH$ܔ¢2DdQQh4ÚGϱ9ZsFh~tM?r̩o 1-QHh7t `'MLlK .Ǜ]ty"} '3-X;nbSΥ?%i⿹ \RƊhz^EJ9ưb=52UE8eq 5 =H hK*C4T$ mME.talqW7bL6r]=Bel@p*:ĀT,$2.FjO/96߻gOe/]qNI v3cۍ^H :Z&G*V79XmWJk$.x`8nBuuE Xs$g%zM*/qʊd18>HH!QH*I: /4[P]BHI5N太n,a>],^7^N~cdӥTBLkBr΍kEtF`'6xsw]yeK]zGB=xߞn5Ӛ\ZN{@+BR0 #7 ?R?-A(Z,B|5whCQ:}kCɦ;-r!Vy8K|/~OkC7B7̔3 9 o= T߅>5Q Rǝ(!8sSފzQKblnS[ܡxs.t΃dmQ E4 6bp'JQccf>kO%HңaI-U$l0XL֭v׷d]!T?Ͻ_m`CNcjM(OMziV;ۼuP(`R(AHS$T%acmFka/E zLW:׽|Jxc0~ڲ ۼ|eaM()|Uc-RʤpʤbdhWIX!Ɓ6y `PHB$T/tȉXژYsv\ZG)gy`rN`rn/oyw[~^IWG];ь I?iH XBD᪱?2^ep QbqWD8[_ ~%Л"w [hG_3?z; _|U]m F"pƣ̘ 5rqs H DAȰkt稵L *"給`3 f7pfKsq p>bb'MeeY0dl+,, #Wb# =.(P&99\#w,v[[E}tFHsg,dY0m5v_8Ӵ>M/-ßgNpJp)~93cZƆoY`#tHEypbtIhvB|T |.R 6TtKnm)5LH9)+M*.Rm!d0Fv6SJc.L!qyߣXG*LbLK4E٢lDmof;_[j#ɄGditpAJxF8.*}l/5V;;S3Q6 L.g~'9w(Fdlqh\s`Ϟn6\Kr\EJ( \K 3q{JXWUG!M5JGu YC8~98~q,'zl~*:4$iWn!bPvtް&kMwQqɓX5S}Pxf를e\ ;m~[` ҼI%l};>z9^I5wqk dT8ayp~B;3(̯clCC6Jܹ}vǵ}msמa|p❻ZMcQD=>?Fy+dS(NAHYUU1QMth ErL(б)jkY(Ve\cdn!?~+]E .IBJg0^ɈKdb DZaI'GTxA6$by-qRQQCܞf̶ok]沪$[c*SV,i ;"550D®eC#CiKJ4⎔F.TDd8VWra?J$ŔjٸwivU2F<""(9)7ufϋ9w}ݯ|euƳqFOy6)%nn٨qtJk6fylQ4i:yg/1cXaNI6vň "gcq[\t^wtUz1z~pϓ3SY۲5{/~CÇgCt`wE+e8MbՊɸxWO]-Vd`7JSQYRbk2DI HxEQyycbfq"gT=GRq[>7}H=^dr5D$7rn;j *RT1i惒 LlnNVp"d4޺FAĻ8VծI)t\GfE;FB1WxdWP'p] 彺o]SoϿ{rӖ]G3a6b/Gt}v7)Cw(VxE6mJ8DYl-L ]]*8r 89li~͕ ?Dꭓ8G'0ό(8QN@fp68>Nb$A\մⰄvfQxDQJ րw,smYfM1{#>HrZ(y"ufO;_tϥfO1LGx'[t=(^,1 I:9]Uu#'>qm+\䮬CU AR'tQaIGYRqsRSXFЮ54͓V,(`Uƕdw<, ?|pksmZa'sx52B1-#[H3YI#ɀrJ"B'1z ]vaքbtlΏ._6 ~?KK'i݃ة]} ubGr!z&.d )Klbw(C&Gގ0L5ā^rVH$s[WdcH4%bx)9 D\PYlP2y'ԖXB`{lXXu: (wɞ -o{{_u{)Jq!"Vzg̋ 8_C±_ˊ*SOjGET$>B@/<20*BZIԎӵQ^G`pLBs{OЎyQIJS b$R FFX-G%1`ȖZt44o/1ylv|%s`*Ub!RYU%)܌ҌI@5s)v ,_wډQsQm[aš]1 w svK8l(qs]s4Y᏿>i.߇XOܛ%gذeP/aDÛ~;:wl+4€ӛYkfdDokUQ_OT%2q4̙uD5rm)׶\o0jzD64A^ўyj0DN~v\;שaJǥĵ@ <(DS:8?B_~j`u[\\]y!wTEٰ!L0dK!LFƂ[ bÁVRfXxt9.s(0͈}+9Y cC_S?k4sQpq+aCu'bQ6TyEb'K!/ɨ]Y=چ|7A|YjBF* ~W) YQXp{6dP܌lDIaY$%WpQQբMUFô[K;U p=*`!(*:Gn6D+37z7%e[K}Qvz"S۷lO#˞'ul4Ogǟ缾GQK$:sGhDl.jd&j+9Ҹ,EUer%<.;hڐ$Kus z/Dȣ~\0 /K!Kk /=ӡ= Fr\ډph=8*;ə:St޹3d=/8\zyZe @5[8"C*W!IӞZnR݊:NN>OMo) jqa$ YNlI".`K^XieQ~җܴy9|= f=[/ސ gUvDg20Qq Mgk $FaAxwe-5j M(CʱʃUڔI˲!pwثLݭh P[`~"*+glb(++8p =T7{KJQO @5nOHUqs:[ĠpЇ}[~/~~h9+mo5)=j,jlC\5T{-+sikJL4V2Bl 5Sڂw2m'M' ǁ:o1@љ-UJ\bB$+ ?T^|xFڟ5Ict ⠞sh)(ט1бq:eC cpb .Ԏ1Z2 %8F^%,@5Hi$w3I6™aD\sT.*  +Zϭ]]Hy)Ed[Tznu^5!K7}_,/7avo7?kEܡ+l33%?q?=սhv55"1ÉB ܲCe-H9i@lqGiW6he>q@p 'IC36||I %wQ/gwUPAWA@PzK$!JjgXR骒JU*Nrjk\cc1?iY:Jyí%U{ xO  !2KPL+A.ʜZ, 7$PO΋^[sr1Eqc Ѯƒ0 6ū"VuBΫ|.nIN 9cROz|t;6(RE G!@mC}9,EarVe , CSF2\DTHk{2bYܯ&n<@Mq#"^hKY:Y%`HgYwa; +WDEaygwLkNw[12)@rdTUdE%\tfU%sA9#p{Վ6V;bOĮ7]W sd~QD;8WG(H~9 2y*Ӷ9ҞЛV/ #Ud&}^xK5>וF9,$H%HPĭ\K6qP+eken8ȴq"oFH RK{kFVCNZE"͘| h i6 t<ΆV+ž_zW/?8 K"/s+ SX){g>PQǞB0ˑ_^= !DF-Dy!"Q<]7ǣYk7UvSJ ; M5j V]O2+uW_tHeU |Z37ѹmkݭZu~k'8e|lTʝ=JVr2 įR` RQJ^ȪmGS$L ~`jwr}gҙ/}qRAfk,Brr ȠVI\(WMjNc !+1}̼\l7mB Y4$/y=7H:ys9k@y^x2m<RWJ (%\K./\ k_݁#ò ,/pTK"]Jj8*))=C1̮fT(#חGCRݿӝuTֈT G`,={j?'?qǚ6o{/p#o{YGH׎QsKxk:܊qBZRV)aQ(  ]0I@4R\\7m}tu֮rWxˮ։`=G!ѾSJYuʡ. TSAfr򀸱(pnH}ԺҔn984F1_TaϏTz hǂaHg%0,ʇˆq)6{Y3eKz*mW{pc.qp~ivhp{T%t{0xf^7s1fII>NvSgwz~zqPmpeQ$|lWM=~)r}~-|^oxCW(.+QC(̦% u׏|,.dF8~XjNMY5ww/aW5 Ѧ("q%@RJ%0a%ZMS|nZ%֢26-T'[9^c{ <rrG=[ ~ v1+ "Ks|ХJ@DP<Uc*;U Q NDPdBA94#A>oE↺FB ȪMR$\N!c9WY0G->E*\cPQ湺;tҍF [x:NbI3f/nX9*Jjex#0b;YZp8fq>Lv4.e׫ :1V\G5%i Pyp2-B#! H-),qon!K&f;HCm(B [FVY)Y`S,&3/}۶}կ'ĩoկGp7g|`:"$6 4R$؊Jh3e)l_#}oĮǁF1Ԛ62ӳxva"Ryp^z NHpiᤵ~_ >6<@EXi&@0;K:';,|oQ,jg e׭TuE}"cPaG5fҏ9XG2{+%*'0$YxlOov՟MjDD5R`E3dQeL#w#=A"/< 9_X_z ΖԪ]{ˏ߾sgݿr]ugXIeLX'nojpm.SjjHF**%H^a; cσ$uX뒂JHề)wY97! |; 8R MB{MȰ wӄCd1Y_Y >JG dX>/WeQPT'Qx~܆ʅ5P7cŕưnG_f̰CоÏm4xq;vA:e^ņ5T9*FZ0 1$K]Jy T<͸2i#m7U,jD%D%ӻ]v̷A Cq Id58&3e*^Ѓ9Ϯc6S|`zqcIeLVJnpq=\zLe8h;h׮Zy D 'jGBBQ!徇> .t- qA\ ( EI<8uf[(/{ІE>[ʘ15E[I.,"jځ=̓qO4q0={L{o͛omo;+}O8W|={Fه-v7Dإ*$84(UYS4088%@sxbڙZXɘӬ:Q,LREI >\A*A`SXt8kF5n=[>A҃ { ΰQӱH",)=|m09ü0(H) )y4s$ 13`Vysr я@P`{3.dV=gqV͙STTIԚc~R G&<7X$Z0DQHy01h)H أzDPp" )RnFp0)Y\-̴ J 0Aѕ蜑Z%©h]AwK=L=j~'lƌ]}ӭ3szSS‹jdߗL.]7V=sۯq.ɱ^X8H+9!i^*rXѨA*(;Y>HhQy=;kfتR)UDWDleBʹo";d  YᩫK8S?>|-lnzZV,e[_Ί%[6YK+7OMwwvkɘ _0>*8DV$9pmYE8bB7x Q䳇zg_Ծ82 -J4ģYoDH^6T1G2s*a tXPaҗ(CPPU+AUF8^‘-gH9 ߷orŊ;q70fXi !29уnI+bV[(?WUA+i*wҢd\1229=VYc^5Fs֬FMpՀN#q45 ~ϾvQjqE}Kc̕n;I2Qg(qݰ==W83'Ft[հu!!"-s:y:&]jj/ QEhl.>ryKD'C]:r;~uk^ov|ga玉p6,]/zNyڿzĞjBѦj-F#;DSKqPk $(vniyLTQ*d@tײNdP*I`1gJ"nǰZ H0 S KF(AMm v'TڝB'T}$atv c Geޕ:Vv! Z!["Z}#>\eI V;?"uKcu:NC '4k U bXϻ^iR) R>QUw ⎲9rhדo ="DFC>m"33l =@.3X0&)t6';v*3-u)e Fie  n^./- `[+QY  H^PTXdXƌᜱ05Qiy.)\%ƋP2GY\j5LX/ k4c;hSRTr%p4tH o+ U+lmpeiRjPE'@$= e`qKSΏQtCeÔ0*)9>j{,V„Vͬcw9; Fwqp {d?SGu?1֯OgfO>yi)x;^?U% A/z3YOAWM6!Z^>DԢX?Zg-a)RZ"cX "iUD|Ȼs%c~-,Nb:SVR.5&SJ!-@`&{B o)ܼ*ʷcFNHs| 3=tMkU0u{~?,R`/w,iġ9Y b9jlVl-C bxG"ˎ))yr< ݸ>PUYk._Mt$e^!9ԦW[8,(yU'Hu#m唲_R<=g/dadŊL)nG$^{RH0ql4V+5;[۵+'n=sz!53\{V]O]Y@Y,(Ɓ?ŁB<,s8g̳v, )EiVeK0pX ^Cnbtf kԤBR,LchU~j!m5|N=B.j7#ˆSƇ-@ǃ/>ԭ^;u+uW[Cz`i:NC4;.ԫc{"1<a5O|s\-ן8B;PW/ @YR i/U>6{vv* " !/cC{IB"ҸU w⇘q (WJb>꺼ܢz 灅arL<Leۮ-n>f|.Ca+>'vxnXýT55xJ^?>:,GZޕKRHZ*q{ i_- j_q.D ICVY] b-VJ Pe%B+2G*Ȉl/ @,VeN `T>K 0 udQ`@(r `4c9v |ʫ\ ˬHPyhVv{x4m W Zݒ&$+Y@p֒(zIx4=p1d<2^:+#9jh Yb+VVpÄKDQ00 9<NY^.-/OO?O;ro[hDVyԠV gL(-QdAEQ7ʠ:RQRױ 2%gY>/ZViX =X<oZ*Y\%Iӵ܅Ȣs!lU:4K \ˎU(;:{<9'43OxUa52IN: ܫ8φqP$f{NF. `hh>w9)f{" RȰedcq\MAt1TH?BnR45;վbX# wK v^N UUe2FplEEi)n)J/\l4c  )f \:0J4Ҁ{|ѐ" ְPRˆ^MvCaV H- pȋ3C' Lу(N XU9HG0O qg}ΆsxkoX _%{Ͷ{AEf)C ljaYoVMk.삩׬wڹnǩP}9"܁esnvoaD݀Lyc~KpQ!v 8'P&3Al+ D0㻡08KfPjeiCu%>AmKv05ւK«EcO9doTӬUm %$l8D_j3?p$m#G6`I,F;HKAIGĠިR/lnkn~!pߗ0J^V !V HcI!KTEU!!Z$vwQJnUPVz63;j^ Ȉh&O3p3,Rf2k[9`clƘ")ʼe! ' -1;FtVIDH\% ܁nTcFoIf>$wRq"/۝7D/LSs2{hDZ3XKϿ.l(;vݱ}{7 ( 7ϰ2?4uV:oW v޻k[H線q9k~{R%*P!ݎ{$D8!TT,*!' lʎD5d:dPB\ץȋ:,pHHKNqGd ,=)pz8|GѴ("Jb"?s8eYF|L G6ל<X&QkA@bF>5ÙUV!/gEH4-LH@֠B6gO9hTz+FB!,^ (&ȑmڱG5WBwK+:C%hV|+.t%޻{}߿{)7:w+^|;o7|M7ݾ9 s9Ԝ[g<:u^RыB`I0Pq2 9iR 6B>?E k Q[sNq{@Um MFIdY(/ūex'6I51bmьjup |h"@n8#,@A.ʳrn?xq=nppS$p}#e=e9r<9"o`_= __M_֭KUkYmx{Ui +gPa >?jZ"덺\SH@Huܾ.tVeNρSn!RޯEjXπ$&Q*p(xU)͸].s_ʪO45ΜI,sJd6 (`*!}͕ |{ v TqMrk>dFuu ʢ2HV:'2DE8=Gx윸EKիwyA2Gcor+^_H[>,/wڹ^{S9_|+_yo{^wwwmtSUT3 LcMK?DQs#i4Qc^"VHGЌPUj YQ?+8N @$)![ Z7!rb#KTEtk q= 1B zȜ:,FTo*dYJ*HQy{ O;F9Nv\x!OҰuׯsl9-%}{{||5*nu\]sWns6E!{oryyrϻsoLsa.% *-G"y$JJ<!!*q!>qh=Mݫ#;MeQ  -vwmQЇ *cRmS\b%!^ԕ(qVw XwR<~AZO)28I}xwFIkn Y3;}K0G;S=%oaqh"3=s;zK_WRtG|p1S[SPeH ׌~Ab u 8T4{@uSԲ9KzhsvM.!2E?399z/7سgh;g^v??X\|s_z?%I_z@2rƂCBnA>G+e/mY [˱wUcuVԡ CWJڅF/@0.dA<(hxqOLVNޥQYVUO0RrσCdW3%<68xJ-: MP^$q4qEh0}kktJ17L]ُYa.l_>s;v4֬IӼ\tѲz Sa8Awƛg?Ȍ㲥A~y 躮*S/@(7z)DjD p÷ɪN[nW> \TաƸj4ezNrr}{6N\Vkd&R,5.U//#SfbN!p^ӇN"GInz՘R" ӨKͫ雧+uxr 0š`E~KxíGoS:S|'>ͯz~[n_Oi%)rsFKքbصRwj 7j399(`"gfF8\1W+k|x13¬vB}B!p5J<ONƫhBw4ٺU;UF4NH<@pOQFBαwOi'PRBۍQ2[#OF9M#QχK'|i_~}+f:y3n}Ȯ?_3[w֝2y,ґk䬬FqN f yې*[EE+e%%Pc"]UAI $AdO,$%dr2 Oڷ9}}jzo|FW= F:iϹcl]yJRכRU(cQVMB褹eW-kykp 'a>SK1c箘h" Xr_5Y./&;˙za;D]೒@vW70H\8)N%VYr8" `d0+EӉ?YQNxmVQj{֬=yvv5]_|yx͚Rg">Q-aF:q%Sg??5/rݻ<{\g\Q.a4rU^͓Զ5[75w޵{FN>K.9 ?_՟ҧ>uY!{NΗzxw0+HY*C-- ehF)t@ V\E  he(*F:H\r"`Ina-^kD.JY:8E[sN/r@ SE]+4u!SnֵH٤ 2F: <ԝg6 g F9MI{{u37Ʊ2MqOn_Mo9>^|}jl<{fO/|aݮ x ¹; gW.N4=:sZrӋ (s}0 PgA!U569QЊ>ya dQ8$ JZbĶpo?OԮZ]Y^\ONyAOR?MJiLivVqϮBy6H5NPQ? `+i a*ke_c|a4djGBJ(n_J+ $ϳRjIdqKɘכ}^o}kvv$|c^xlܸ?ֿԧBJKrAY&C3Xe EpwݾH,-b7+bHN>E?88(9])uԲ3GaaSnT?b?BiS- z.1+7L/@͛go<9_h3?w;lv5u릯}tz%S&c {;o DA䖌no2z}D6ip:j-ܰt%֛bkxƾ=jI.n#FzE7v@'މfg?o+wԧ=dц\7 .$x{IVHT\BeD-I߯xLS Hy>Cjt Y2ͱT5C5{ ,h_Yy<ܾi4ܫ*iY(È dYX1Z /8ΩF9UM&?t {ߝ߹Ϯh mEj➍c y Ip$;~b/-@ qКFFJQs +GjƝ{FA0]hRWc͑(brG(ўQ%!N) ݌2І~zNѸQX!q്fn]GK{ڦMK/[z%->m۶GϝnU5ͤbsMx8΁?:yҙg-uw{2qc$u}χ  V }c1b1V"bslp"OtfLjlz 5$H;WLfIow"?PV,s]43X$p]^u8%nҚ{<%Phv}S'.]bpeSSp׾;GJe媫.߿垷{O`3δ67ng[pq8.CM,OU''[ r!D'WI#"Q=,$u@N|!c0(RV X4ƒmFm+W^,^AuK3yijjQh rBea'86ʪ*$ӊ")D ?H/Cyj=QcGcz|oiSWxwlQsR/ķ|t3W~;۾8AA,In$uNʺ*J'0M<8X*AVw,_XwH}gQj_xk_g7nЇ=קl :slo -.N լzeZ ?^&HXtYH%u={K؉at<+^kk_[u5kչ6w\x9뮭xro׿o+Hp7,R@! N<[ ̎6B;-( pG/"睾j:!Pyq(J'Iվiw\⋣Rlnwc<%Y=]ԅiߠC +~Ԏ(dq`ITixĔ( Hs<^^K[FQ\OC9?Qow>2UӜ;ܲ>ovb..g# 套yKwN힝i/.^祏6sqpq70c{aC?;v~>1P>3_YU DbߠHNsJT^} :c*IN!GXB2qz (su"J  q]$z.EyT 94r/^u:W^/>V Vh}ۻ~wsvͷwg>o|{0 2ܫԆ{HX JKpW(gnk6!ɒjZ) fWSe}ݖ]cF YAVŁ[ӥ-Ќ1X +2WjV̥<Ri#d/,OW$2̒2~~>=Qv9bv_ӟ|#{d-$˽w3;QU:ozzO Q*Vtv}* ݊e,k]Tti >}3Ihd0?'8;ofLVFw,3'`~2$hU8+_z/==$(e/^,F/ ̼փU A=TU4]Q:,iW,Ϩ\t{cN^4xk^^RZiN2wTѱ DH24 iAyE,sQUT<<`r/wg>`ߧU c, ǿ;mGҿ&M|w l(Kd%XB "INv4PRP 2v,t)%՚NYh[~}vf~=.X#NCڲYa"6^MDU>Gн Ǘ" *K$ 4eWV=[$x H-.,j^#Trgrn <_qEɝw[#0ZNNշݒ%Dt`4`Rf%i(Y,=TtVdhXx(Ru%}=zϹkfe PX H)=oA=VVOh =/ ꌛ↱nmYLsyt]_2qBbb:T_r]]6$u ž;]6*+k1M5}o,x|C)SuQ"hqYI"on]n5V= Vő4#aa}Fv=@ h04ƢWL(GHI >NXSG?k.NrDQ ^fy5H PF c f;?cR@O@p`V#@ !2jR`XV=oe[w],M^|Mlztuu/@~0j-G^?ʵ?>>EG8g Նd-XkPeD2IG4DkRQ q%7C/ Bx첵+VLlo O *(AlB xUIxF1pJZ#T0 z݈Ԭn?fM?A,GzE.DpRRig[KqPf9?}#NZDaa.//CH%(-ǰaz?f˖]Gn߷?iQ:.-mY(Z_2ۼb*Uꪠ/SSKH]q,AaYG~v^So_Ϭٻ[O=n1~79gm{Fnn_m͚O?yBߝa!]|n=D^ILQpF1;' u֌.KJ[T+H.΃;(=ʄ JT|NZ8"(={a=O?uA[x9s.y woJȬهDӴ Ib,h!9@ YMt|"UƯ_?:+OWmH JDI! &(GG{LG.+c -{MX٧WLZySκk_ye+/7myoǿ{Ԯ4w%Yڵ9<9k˛68- B)tWE)#H .i$Y- J5f$u@c|f 9ţ@/)ʲDxtvS+,]l۶wҬ'xmmYTHP>FzL_ htGAFϽqpzDSYdIO%1ŻO/dB':St\3 ^x₂? 0]׿nz/]68g e 0 L%QqV/L䟜NөhT|q'$$ing %NDsGꝓ  U-DI,sd4D"(IJW\;o9ύp?Ck֭<)}!==;I?U)^'|#)Ç῾ҿN3}w¨Q=mժ>͎Tvx^[o}*?8r)MAQi4ҀR䫍#14G?pgDhA8'cxd`0H@ V77]{\>&(}.D+Xӗ]rއh+:[C%de ^/a(1x>d4Mv JuNρѼ $-2$wC;o3OzM7mٳoܘnwO?y㏃#3~͏O$|d؟x[^zyk ,)ih99{,ͷqcՎH* 5&1$/C"h64i0[x!@h 4 `FuVSb(M zzIhTkbyڕ~Š?6gy_^nG=" EQ* )` Adɒ.'Bi4 8 ő@TIeh(! v^@FGuW(8ܝ}yϧ:Vmvɧv&%)M&>`Ϸ{i}~w'uVܹۿQ~fisf8$&s$m iE+䗴*pDDR1[RJ!DJ-<AHЋM7YID9JČǏw<MPrzsbVV 7L_Ǯ_?Lꀠ4YE!5p|4!ƴ% Ф`G(  h z|@j9L#cn ܏xWyQ*CZ97~ݸ}.7mq0?ᖿ1lx?>x( }{Vů>vs!l}ӣ޳A)VdYqֹn7:W6;JjٙCG zX1ݘh6H<ʨ4$6"r0ꪫK0A ;z,+.} zt^uuy6mCNć9&4LBoޒ(:7qbF&#Iы4r֠"=]:aVs|wܹ-vĀo\ye8oω2E̚}kYYwWUum%Ym];}~g[o~2fK/+ҲF+hvɐ-CY'(zu LwvܰA=c8 ?2Ӯ BS)@.wKs(z'?Į_pGaaܫϋO_x6vA۷  }nJ DIB0 H }SVgiZ%DA F3z{O^XA ?oyy?yGv<AE1ξ=g0}Ei .i i\bHaaCoZ<{tkT!|~;x?6xJxhԱA d:!LjUtҤ?ܾ{f;- mdxͲU33%BMX7AI b ($ ?{КBҪ:4t~Ϳic7`Q^L/^|wo<5ի#A2NL{CU;&/س7.{0m_/,,,8Ʃ'Q3~}2F2PWid:PJ,+ $A(AklԐ6JK_9 U%n/SG,=K|Cn)7 GPj^=`.YCc)2bhV.E9Q&&x -ݻ_`ܚ7?v=| ϿiYElSI_zhki5K(f[ H]hpmz]Fy*byMvY7\X<9;[>`WǴ={ZV#a2) n(駮xG3\pNzz~A H3g_LXԹL_;=ŋ)J Ny87={wߍ]99"Y5J!Գ!vlJneΉ(]\S}1eS,;)5bbZr@sViHRe&Y7ðD kTu3>|mZ*RFv̝7Z3wۉwi²A%t [۾h0>jXUњg;|;s}EZ )&P YesrӦ"Fݗ]V~gf.C3oݻԉ?Px +j*H$L>QUT!Uu+r2˖ck7m|Dw#=r{{#-y/W-Gf:W5ӟv.\3gE~i2sk˫)Š/N~={ JLNēwr㑖(vQ1⸮bDOǝS_VU1ghG yvkR߁-&+MRES 8#CH@U]T(J@}X|+;ʕ`(\Rz/sF\vdõcǾH p^0[(gs#jjW!={Ʃ_-[V[rx 4~k4~/(.)ۯ#-KA8i Ծ%m`hW B8xxGRDUR`4CbldB*AA2;Hhnb zθy&{ro iu9055E&e'^ k"H&B8MԺW?49-hZ)!ay r|9Z//1`(A vaaYEEmi.6mA?ȚP)刎bVSMM]k0 o؆__#(huD9ud.]۷;8qԚ5[#-KgEH F(G/"-U~u?L[pK( Y|M>;| S,E'mrA&¢ٽ,K YӚ#$ >Ǽ5O.4\m r:`Sz6l2)@gr^DQ9M࣏-$I3;{vd]]f3W'-̚}kVVZu###eٲ_>7(z66֮i:߯Xu&}Eg_rMWD9JhBxB1 T1krN`U5R8*''wU%ϟ?ӑ,˯l޴9! #E;>!&F:F""H'!CBY0pώ-& 2gd1) #H_NV2^@=VE"ͩB~~Gs1cjC{̿ta ܇$ɽ{ "-H~}/I~O<>"SiIy9s|{Ad[_}1ǿr:@4׎Yzk9@wժͷ1=--:Ҳtrd (:ZD9JFL4߫1 6p?6$mqE)Mi(& !shrcMI$K͆ZgmLR$~]k1@pDZjQ@,Arl6*HM0DG!fz mq, +!4hk/xQIIԽ1uu붝zN? yLStk,'oFz9׮J8ל9okn_9 IQaxlvtՔ(]m'GBQի\qyK|iY=%Q:5|ikg24P=i:ٛ$4t T 1-"J&._I%5K4Zwb'DO쳯GZo|py:I2t^^?m袉J+-Dd(^nۼyWTj( [ȋ5]ݩytvPT1/YZwݺ5λbbFȰauD |i#׀/s./y~ɍ-M WĤ~Zb.K"USYLX GT|$}AZAts1ݦıj0Fq)) v~_}9r[{[C;#S4t#-H?;7XGl]4o6n34 9dH_nμ%>S&Lu}7|cpyy1ކZCUu(GTfMxvNX(EҩS/ϲKK̩cwĂ_?7 Z!dirc#@hDZlOH2 JKO7bZyBHjY@zcFGrCZ׺_ב$Ӌڼ9yyi?4̴ؙNz`W۷f5`Ԩ;si;F.Y*-5ba;KQ+Lݖ7lL1FSJ߾=+}Ho1;%%uXiͻ19m&lD9JFy9%|cԖXyfTc߾Q¨0aqE7DH4)b0^/ƣB%κ~h&>I( TQ`uW5k_yY3RM$hs)`<kѨ~ "BU''}&fB|Oq?dV^nJMRTX>kK cIwn[`a[nqq=K+$gxJj:7OBgִNi*WCemPYe1>z77n+ wѢ%?r/q'/[?;$11xa2(ZpIx0qhͼ`,p쎻}f̸2RD#Q:5n{}::2,\0-~=qiy#7μg&VWDž JKo<pUR  !2it5; aĈ-[[wl5{ע]óKP-iyANtQypKiA ;sӲz8[&o6NW8 TW;XMW7[΀b6`e9(;vRS#jx<Ӭ-G[&LvȲpm>yiiEHsֻ}?4;y~[Ԅ.[X?U&wƈ&i3v+w1LS22΀pN(GԀ|M楗z ;c 4Bw߽SfQBM*@zFFEy҈ 8Z"Xà(VUUzH, $y) lq-"<؃[ӕ(Gtv|E~j򡕝#luo1bg]݊c$"Cd'/`޷733P[kHM X]?/OL&b6Moiv͓e՞1wM?֮WywPB^j xBm8C_|q@"s^_Qd|塥1mZ_/gFyӧZDPw1Ӭ;aaCKo,] |$>DFt|I/@D|S?l8V=S5U3]UCtqYvJ [ӕZbf' J+lޜ8єҫ̄Jaj$޽'س>pv+)-JMMl[ˑ޷j͚dAIEE$(GR?{_X9eûl՞a }BSll\jj-,?鍿%QU^ݓUHBdr¤jkL6隿~N Y"uWxȑ+&UٜNC+)+ۭ붆r{^^ʕ*i4ɑQU_]QŰw[',X3`@K&ՙ"-Qg a Ix ,)11< ۸)UaOi_=#iN/5ʍzD^{m{^KI ~}1S+^wuuܣ"B˖eNyÆ_.>rwQtfƌdž FD9J׃aw97|𥗾ߗ#8z3LPB~4C|^ojj]wm`om*966f=d˫jj /vjNiҍ7[y;') ÌFlV1hI[Oz{:"]sqݛ8K.-=Ow$x$ʄ _vD.1r. MSf?kԽ|ֶv7cB UUaNs ٸڵk23E6p /hDA#gfZݻF"d/~ݶ396Mïߗ}թUW;B җP<76Ā ny(N(G(*2;s܄ Uw߳q۾^6dHB@4X Ǵr'pe't W2GM|ESr.u3qbՌ93nWd]Bdl圉C}^CÆMKZWt $ rD4mYHÆ96?sm?q ʎ15l$mojB{ 'w_}W="-eج1rTD =;^J}͓qwY'@#Wh8p̘!) _})/(\q d l#y4 4||^"Q Wƶܝikٹ3@,ʲJHM~{Ǖ_eP EbƚM$\kh I;`ҹU99] }um{KӴ2rFҮi(x&&(U ݱ#l3vcUUCBI)R?fp3"TM>YpSRm,y}A/E,b(ବv ^Ot0 B`@h}]QN`^QIX,sTA,2Urpn 7R%P*?(Dt+_x :ʋ.~;wm@ZVr?:A =KJ<8vL1)0x8y`r2aB?h[\n_wG}pd iHT4?D<ۭq)4C TbB"" Abiq馀>Iqx !G8ׯk<4TX"w a;PUǟdI zgd*fXxÉ~ú4DYDOB0(IjhICGY̆±%6^vԄgL+pؔZYF!d`i*(9dc2c9g{æ]zVnݦ%eU{;|Y%(GiIO_V&cZZ۩%5y^D%Q ӦUIQҝtr~_, =1m}EE %Ɨ43b=jG|c:p M.؟wM%A(Rkƕ+*Y601^A~'^{G1WX'g8"3/K/XgƍăC$838.7%*#4MZQ}MU.k]G:O_HQJxph|ԛf/0 /|[^Vl|| IAG̱ 4bc+0q0KD$KHHhK b0Ʋ tTs3[(_fuU"8΂w#EK.$!ФZx`3RvK+ )1i(Ÿ}`2X,_VϿ|*8kհWpAUSHF&3gؒm=b-fRJYHEjyJ3z5 J<:'O`2R2l"+$C|5BQy\hL0N2Re3o;NǚjK5(o:W0RSq1[z #!ی@>Ta`XD9Y&sr gYπTVĔWتUZH},''{S+'&g;PvUWWNUoyNUSt:/s(AUUKNK `Il-BB8$Eg6qS/|΄$3L&ٹ8sRcH2>CJ"R# B!OҜؘ8H/ɠȓ^OZxHn, R`88#4I GGU o ?T@\!?IfhPaYvР~H HB\=>Θ(NO˞x΄*kw~3D`@޼c=P *HD M**<WJ朳;RCz|ALPI*;$K KBL*rP%$W6SPt1wI y؈AIXcd2R={\D$s dI.h4'e7rLHS= #G\id42B@4W( x`בTv_q@UY5UiG@ޕ%"$G CSԖ< Kk,khCAa(`(Z i J@oT 4OuXgXIME!DAUi ˸@Q B2GB^14^4&Z0 A ߺ ݁";߿wsGU6&B e;D$Q,p,)a^kwx_Y8St#L$Qyyvj܂b\,$& bbo?9.Nl6dI JeTRi?0T# /ruulm`1M*yIOF$O $67Q"Iږ*4-A4Mns:X#dE8Vsm픴V~ 7XAX5+ue 4m Gb:Hq[T.ȼG6 F3Lxhk| 'C+~ڰk~ÉITt/)dY '; @3ͅ:yx;,fpt_o@ JZmEv cX9 `d"U㹕&zX,Aoڊjf4(JS4Ɠ=$ Kf\1hw.UAm>,JH!ϡBzxO4Fe , u9R Jh$A,(<* ֹI@1 йᰖЏZr4uł X&U1fb! ^(b#X } dgzďO!'TύX^_gQ=H1Vj1b8ox $> ʐB|ΠkADLP=ez?fwyd:* }葇67U;~_|`}D!RMVw~ף5mS2*\(L:މ7aWg5imKƭ[+K͍]w+~%|P>qίEϼRsB;<-by7nIi99~p]{L-zY&>L f8zp#|˶ge{+5EZUu<,fq ur+\qC?ٖa9 SfGvݻه>WێnO>{_/4qc/-=>maïuce/b#iv`Ar> $WC˳L :CM3 5k+ .$ X'h molLH=eh,Rr$Zfg&!G rՇ~{nsW.M5j<ɺtBjRrgX"t(.ѩc*xS.֒= dRZA̋pA7՚H}õ,vӺqcUOl}UNm?t~WBS5>\5Z*|u40[\Rdt`]kr.%UǴ\|c!fזUպ]fl,tǭe,%\>wu{Qk)WgYX >c7V;YvT?qg"{]/ZU\>{~/xY}3_zZ9>!7 |/VF7 xVVs/w3"*fv~+#VikޥmE-:A/X$Z݂\={ \ŋ~V3"a슪]}1uv叧|<ʊ 4Vt&2ƳhI.d/ s3;k7߈18&t: 3ǣ{&eGѹsg=)X> 9*6}NgXI!j Omn@l}6E]+XP^w;?4?  (x6-qN&M9(VIdAhtg7n yQ|C=*+ϱ\r!*o014bĚ[7Uox0IZ+.մ On9"s) nc"5+V{ ahT_]ѷ&n̲WΝY&2M12(zNGR̜mi1ױq,Pܥ UjTRb*H"I*>pHIӪ̟9>T36 ,Lhb,ΰ-'je9 ߖcA/  ea76`(d=6tzq6sٲ6Ν}Goݼ7ܵul%l|aYt\$υO6W'3?(fڕ\U]^!tD۽Ҥa;066ק?z._"}0˱mx;e;n]<1fVI6 `vo/񽦡F7O_-^>ۄhXS_y~|{яs;a^G>myt3*2igE)߅/)`a"9~8~GkR ^MS7Ct71k'5 ?x^g9l͠?b7'i5˺i{,LYek]8w@czOO֩( QM뇮F?FQQM ju]?뛛[y&Kl<2)6څ#:Ci?$p*l5&,ץ%YYĦ6/l\+"id:ىkV2_ygYq@:H-+/dL\UK7Lt؅6 4#o Z_XI-nYjH9%󲒄gH2K!;VrIyHOJL?u7ZVX66ut6Ƿ& -p 4lj+3dudngV|-3?rǪ\ن/L226yU,dFD5 r bLYe!Koꢙ@vP,\Dc^\b-0ڀ5-!V,%%vQOT8F"76d eb  }?6Zp{ i6TK'g{u\z?^ܹvvk_/|uΆsǢ~_xi|:U77$58,*?bR @7m")x [ޓzSwWٗv/<"o}8'͍5&n;潽4Dܔ~/-.a۴yaM77b˪Oݽ#s~Z}ŀSCk~'Xv/^^;jm>wgpTј8ˆX!]Ϊ-m첤i`M["Ƨ6Wij:)YpuXDe,Ҥ"mkw¬x\uIvp`*XA/4Y8.pp_A0K8}̋6h`Fz `&fPnhA+"W/-rܹY`nT[;n=IR "֒'*P{u,TėƘmj*f k[Gk&Vt? ~b"gﱪCZDˆD@EyU5L޻׵~oݿXI.Gwy9{%rNNk,t,wi\Tei,-C[bk[Ɣ %pzŔ 0J wkJ[!铕 z5Ӥ j0Y!FtHT۱iF6x_+ a \[tCw\@A9EjZM]:',g9?- Xbj&0i@.`ۃ Pz & r8hWK/쐼cX \ln#Y겺Ne'26L𘒰ar6YZkn'~8D5LkÞ&tﵯ}u s疋d4=i 9spܼ?Mr N7N`?*>1z^;}ϥ.B@ͽыdnl 9ԧ^gI֎`oVk QI/1J>{40^yV{8L\oߒ;?֋yYp x[}`yC4Ġ99 _ ?Ď|_fNN hhhU/[3<~=~kkZ~/ůhX.Ffkl z&pu7Ya'[Mm|zAu ^pf4 ϬSj̗f Ӡ0/K_w^EO\9uz'/n9<_iµFP0L;/՝"Qmڞ0#QV*$cv%#Ǐ$W.o~c2(JSQh}ϋ׮a^Fl8Qgjy"hJ4TOEbVuz㓿Ըm1{GaUl}e:)U6X.1)[ зTU0C Ie/)p D#=f<'Ae|.'bp! ?2\;;tt8>b]L{2kV8V鲰l̳ggm_q7M&ѽ;b|Ta ݊/G.oƕlvo7| o}nB\<އ> \!ecrQ:S#?s?~yӋjI&c<{8C9V< `w]v%bѦٛӍ?}t}+??}b>?y,iI#:wjg( :sf{mnxtjR$Zim=Y#X kߝ8.)Bp׏5ޭlԮ,/[0/0ss|"]m_a+p{!pKbgsStSMIvV lIkdh"jҵ\ՍW3F n똩< AZmw#&"`-Y%&jO Ah!hw nƆR|,|ր]y,-ފxx gq?6 3̙k)9{ʮWXͶJpA lʶ6Ls\CF(H8b"K~&QR\l %M7hC,fll۔A똆96FAli:Mٱf8q7:A/cdYdo~ҕo2-- _N0ʷy}sJ#iF;>YVL&$+qmI55\=$ڶSƓj '{tboF<a9>׮_'׶|`F:6\7ʳIጧSӍ-7,~go!,#t,.b6=>1 f̍en}Sחzn' | bG>g}֍wYr .<^ǟFzWk7hccct<04S{ڶ-DbԲC f"k0¬hrtѯg޽wwg wcu1V+ANۮs>᧞أ.T V5F_dbzĩk=Oo7ݺ95ͺ)tYQsPkohrZvًE2١^u@RdqƒO5mY03s6&6hm;qlv+9ӷ{}|bԮf8ڛ!gMYMՊjx{zw: md胋~xٮ؊G 8ڹYx%i%tezp ua5:&;\Rn9i$ZX nxVf4-2ܻi AٶY=޿[d)nxӟ~̺=u,*y6fsHQLC%M+HHp|>4-µ,ED5{L즴HR`2I2`Kc͉(kmŴ_a%.lU PA0:F_},/:UrX:@23p% 8Դu.X[n v%(*f`R})^-p*)7<'\[_W4q XP[y8?װ @K},cX2_NSP6q2l7lKBL44N )|S='M1=;MFyzի^rg.^k'M z2;+o|+חB]kXSQ$('/]wG`eTJ?MFCՁI?'O}ٍnݾ7&+5m\eYa|=+9YU3'ѥg\ߺsw5h2WLRDK_lw^z姞|lcsmu;5-#KәkA_ ٜ^XfxSۑg'ɬ̗=j3[k;3lS[ѳ|g?^m|+o\Cac~Y|sqhUؖ.L7W,HM8/:$p:ZyjqCH3pxZϖQ/~k{{G&ozݿs?/C 8}&Ut;=|O\{x!EVwãcVgn'0mUZ=VGB$Q~kٮcٝqY.~/r{Mp aNz"M"=]suTCh@ ƍ߳oFkiAKk ! -_ҪykU;V_x4I/7ʜ%=vضN@Ǖ ?pbIWd/YOXŬB3'y#HoX4ǫA|Vrc=+*Q㭴txl96׀I̦(6Yӣw?wY|6ϕ&vp3FCҳr/3pLT5@XR"[Ǒt"q$LjʅH N'LO *RM@Fq Kǣ;{wD!}'ǮY]v]!N^1%ܢp,y(.~XXF̋VEYOS`gDŁI $B6$".fr,ZZuJ}ÕTG(wU414<*>[U%bFpYFNeߺ}6O} {^k|>gLMay.өJzr[7 AVظ #v*lcoc3Uti,&`y]q֙qD,ӊ]'A[ߦVdUy Xzpɶߏt֭gOC׳3tD-7ݯ_ W{!!'t2ʛXmAˢ4; ãZZ_س@g cXEwg;7o=jF3Yqry>Pt(Qly5M܁a?Ia" e.3n.JB!F8 elvQHٽ6}76yb|ӯ~WYnB\esߩ|o/gQ3QQ['~B?F54ƁA%4BkZ3hdAv5ق6"Cqja겠_@2M)yS5CA?m ܗx., 9hpIRƜTlgVcFS?tXʰU<>8$KN׎N*&#:5b U#sUkU- V1d$L A]jFҨR-[ 70DL^eHMSIFªPc,fG0 #=fGZ ꋯu =TqyU4mTpW%<>-Ťs\/\k 6`8| q_1m:M%iE5Ҭ*#49n7Il1XL~3y>I$ElTD`(УEY[}oBnEaƈ#d:kr%JFg[) 8Cc73(<ۉ)-K;Iaje*kЊ1qy4d|\-EsYv3L] 5B|W밨Hb:drmoa)* “ʘQ~2,9Pmڔdgڌ)]MPuhZjt7Ah裏oѤ`ێ[+{a!vr|괐|ȟ.",N 2;ҷLʀ7 % cPZϴ: ^tO/_%cO~*$u^,].T|D[;yiLUn4Kgפ]ȍ#k0PUF3׶{ϣIõye2'}{7>_/RoN7ny.*_?s0_.*=Hfmy8lJË&{_+W\zS؎/EeH;Vuނ\[[iDITsWŕ`fc@A܋uh0/K8L|/ `& ҄ Y/iӢYӺ&e|'g4:h[M%>QHˆU \㙿~Ge$ C J"{aYbgyHYԬȎ\m߲m5e6;V\ۑ*jֿ+mdy#\c+wvSrFN^2t1͉Tt}@ۊƂԮPgiua8Ez3U-AJRwZpw8U]J3rT*1O ]dA$P3۝k*N \`5"cU |aj0T"yAx@~rQa(Ǖ%r<. E;0+cŶfBC+ñ_(G)p?=\gks@"yHX!gIaEԔ#ul+l@0qmkV&}+8WQUbQ~\eU_/bT2s~ĚS |6:>vl&nt@.9 !m[qgaг[TPG!2#FW!tXn,Y|l+(ˇXv # iU4rXPmhja'Qސ!V: А* Q}KA]ƃa3~-9>ww>oFO^~sd>FwS%Ӊd߾YA Gآ9 *Xy^O% cu_L4}\,௓t) _LƓC-aO <;m5a~P>?[oaO!86MWzs4ct^t44{RXEY'wuDzcIGM`Khp6;b"vX^2=jZ3`blhrޅE!"ΆGcu ]w130~VVTܽif@ANU <؅ŭ~cO'׍FW_~{oܙ˼PeU ܮ:.Կ+WӿŋǿO|b~{g_Նk Xų+ ̠w`!ySzk Ua <>i&UWK*ʎ)2`ZV\r%WKbT4UmF01 cDž:AȑSBJ?9&h-N;l֓x:m\ Gz S!)z+ܣkY ]Vh*7}q[Vy_YKz*O$2ux &32:eÿޠk--ѤUmR"f1b$cs̙stLI_sJM<QBK-+ ,I=ѝʵѥW_]ǤشkIaρ8Aq VVIЇqvN@b 9}b~%v(åbނy{@ZJ0Œ{k԰{EA0GP\ϒV;*C;V nLcjmIɰQf* a3@g<߫}4j{25QYu9jft @RȗSE/|^& -_otUwes5[׮_yrZ?b>]֭w"ЉAZi?Gt|498'I,#|G3J|lT!V~//}oͽ_ܾAHղP,{CܥS;k^yVKl>ubk31mݳ5L6 ۑv}}T̊ Y d>HN)u:j9c/f%5!ATY#WWZҫ;:@Fe;ՅN}/o:M'fb,ͰqAMSrFi\ʥsT:ȱD^;^WD߭fJFSx֓h;VT 1/T81fI6ZGv6,\p.>9|[%*]柉6db *o;^F39)[sȡVGeʏҌyRM#||u̝^(E e|1=S{`_c" !^?Lfamv̶l<{g56Z ݪOq +x6d{SϨ$I)bttll|$JmK۲ԪLgW-EkpU]&a&V1;Ϙ# B1V0t0K>#A[߱ٸPL2*UԯNue,rVf<2y} ʦd>J]r#˝LFE",Adh gY` 2iط$jJ'ԝ#ȵ Kosܶ<BlBS~hͮmѰںln0xiY,* {I֑Rr-qXϯcO3NO2ioim:V0^NoI3,י́*ZN  ГiTEԔLfhao6ͧi2ix"SRrm+ RR"Ct6Qܫ2EV)-1):\#2긖yzCHRxTt&GX|dC9sǚ ?S` +V2 b/4H:_ъD3j"`-Q?&#tA.yB?!XHjѤUr9Jl 5<`8bZ`l`(M<i=*"5P9(tP#V r*Iu}GB*Jpg  ©Ҏx+U3MEUkuuM)@2K jX#`2: e޸7<-Jwb1,*f FGy&):h·0ԘUI424*)tfjRSbD{ E2j SgrIsd2=gKvAxISv,PEoΏu.),Dmqd&P[j)7ۍc^r c)T+Uݭ4f'=DnI?X<0d:؊iyc㲰%(r2%Y 0j~嵵s' FBME&eC{gټsv vQESu&lX]*[ <:J7㢁0W3(QuBMnAdryV!e161 C+I.e`Imp亖qJJ780!%@Z:@PmσuKAm-0h2ԸO#FQLZ,ѷ{Vq /TrUeJǸfuIژZxdmr0+jSrwkRC)UrH*X8!!9%TꚈֱL&:qѼܹ}W_|y[L 4@y:.˪n.^"n/ ӈ+򋹍t~}Km0SI$MJJA<z{ehvw:Æ}?4׳7qd} +|}>G~"A㗏& K.c?mӮbg{GaQݡ^r qQF4evv0DZfӑx )Xu;`V__,sL;uYhTnΒpySc­FٲxelKo:+WcխGw0fW^KNWuF@ 1~FKƾ;Gwժv&[?/7^җm}p}ؗhʭd˱Sl-:+e)dlk8UX!f0cYN3yU%}5N #(L ~,iFd6YG8LJsӣD ぶ#GL`V WHhI1#g0e,T(?t.}0\X6~"m { ˒=r0hLnq$oh*wk?ɉ7+Ղ%ri,U_yX90GvR0o`׫RzKy4uFOH7ϥȡ2S]S-5]GEϹW@;ڲR%9vcnOWX$4?0ف20JIYLrG/t=SͿY&@ԘC(bgPG v[V]hS/ŧ+UXAS^gp{Lc4*_oeaeN1 y4gBTYvL)prIH?zfA1 :&$Gס365MuH2"l"ciO鉶BE|*p = ??öc!FlSۛd1`Rwz2Ïd){wNj4cHzxf`eMB 큖˜_ ~e\(U"lլۜ ^Ɇ<^}Bb)"8< ;{{wn߽7767#rkk+(1k!p fh<:+-[sW JJz.kWLN]iVJc:KbR5>$Щƒ"%ld; LhelO0#f㠛U|<{S SӾ"ZsVb ƊܩSGvDmR`DAh8P@Cˋ( nJe':,AIosDMV"d`qP>;3(JS HT!t0!gPue(rި=Z&bBGcuђUquG's[ÄïDjMTEX/˚ГtV=K9;H5FcĬ<]eD}eTǖՖjZ۪4j9԰SGkOfI:e 1Z] SBW 9JxTdH.[=dhə1)W|pCGϭ`Aelj7>lggkw߻;~<Ϛ.2ec# ]n4xb.Xɯگ}Gv]q$mnP&ͤfI 9^!LYT2s߱N}x$xreJa,>uJD%F\ h!#R%Ta{B2oX]9Z6 M iJ,C]"Q,ER`C^2?L2ȭ3UψrS5 pBA.p|el' Y;fOX;[jߨQ+.H2|gVB=* JŃP? R+0)Lg?pJ$*W:KX6M+&X($ 5džjGk6rYߊ< 9N*5̌IuҲ%mİ7 ` p1ٳO\+V,"Q=S 0itisct%>_p~zۏDqxZ-ȷ(˼NF֔0ԡ@ix5"H^)˦hFx[ꚃ,\Ousxb9Ǔ%Iêp2׻߮za/iG N\gn#s.RUuY̥nMխ438?>Τq\IJT+Dő:3A gp6-'brVBE=#hy)xp{ݖ̼"^{u)Q_Xإ+d=aKQ'VX6fai͢cmL/VRcY]z㊂AÝEs$gxgGt::Dtt8:KTDhT>קZ{Qa.Fl9VS^[{_~-ȓէN 5972KʐHU)Y Nc 1L0 )1}g''HVG<ǵ=/hjF/x`G=,YDo\EQ}Y60,e[{|\T"hN_;~*Οyy{7o&>SlYrSg%]E%Y!RؖcփD%LzN(b=RTHR OnPYC,7F;VxH_)Ϥzt9|i>!X&~%Z(tX#aP˙iEX~O ^Id*ˣ7sXd| уf1މN܋cMZ+npSp} Lg_n~_cM !l3Wv=G4ʑcZ}g~Q+t8Hfdy_$#_$ lEKNqvonNp:|ϳX oJQ)\]d*e),KKd07Gc&WuMkaT@GW,pZ/A)U(l i9<~ɠF@MǗN2a7-g wlQ,?:ҒJ-t沱1+XÄlR[G#H+ni#g7U/lKA R\J6Nl"(!P!*7dqV%r)H/$Jԫ#j+,Qǩol&9^,V# ؉K ؟ڐҖ2{Q[nl֛:Om8LX T0zl^0]nƮ `,#Z+¨G" 5k&ĎE11$CR7΅Ϲc]]=28H"1JT CD&/Bh4*1*K h? BD6[Zܺ]Uݠ@Y=>{ko}K< ң'Qv@_DhV!WG@)~Z+GxJlДLw1W]Jj{J}6 ҃ ]=3SJh5~گZvmfgno*C~% &}ΞD27ܖŹ |_Y *.MHˎֽ0FHǶ餑33Fwak(2a}քdLj`9܌Hz SHL72X3!@ +F^57RΣr#t$2C }HK>DI7e ի7 5Eb~71[**([SnJovؙNkrU$3Ss 3ԁO Jh K8{TR.-MBU¼CzP[K SY @ONyXbC_S CR#WvIQ/eՔGh~0k:UxI&)P%"c 4.Ei23a)+q, 5inE&# +)dh}sic5Ӹ2Sԙ1[*ȑ" |zJNd-gj-$9E|¼w]VMPtԻ;۾cZxjWP;o9Nʥ`J;ߝ *Ⱥqe#!ǰ1Y(x) J:S(Lx\l!4L'-qӋ8|Atxaf֠Sr3KKSc91 \5ȷx Y1jeqr G\ICȜ& ͙ZivY#%b- QRCNsV>tE!/>ckZ[X"" r: JJG&1DWذ6ڎ ZNV'})2E 5Obh&;Hҡ\PF#ȩѱnˑy9&=Ǚ K^E#e(nwA@?8h@z2aAMg1F(3͸nmhv­v4V\|n.o޲yrr%EvZ=\ B㮪 t7own[ӍAWwݚmitoatʩslN Cn1 ƠŁo&t .79/Ũ,iN#CU09wÞG֧G|- PK !a"m (K8gPcInT1^Aއp·)(܀$(9wbee%V})CyvSh4c*^?[0xIVL++3 aDKiHcsA*KPht}~iWѿRekZ55;t] enjhu™]9K_VҌ+r"p;t&+Olrxg|lO9'ZEGbzn|vv`l߾\nǽO>y=_YRFEIT3wv9مozaVqii4궲\=179̴=axZ5:Yp?4c(b0̐QVr"PgE:\a3"qzF闀+i% 3-"9~]lϩ؆bhޚoYJgfdAwʴM?{=&CDbfzukS[͕/m}xMx2&/a"jdh@Etp2O,Y]-2`ןgXf>tERJXVT_Y#JDG(q)FU45Eqv7eAY iz dGR~ vY Q8 VFOR ͂. E(u&5 Qܣ-J' A! +^7EA"ƕm74 (&j!Jp2h1-]=GxXJ:pMcϱNM}2kͽ XrOН0[tr y( l#CPrq=%G%X1:K;mњ35BD(D7j 2^Yl̹тT+ہPc 2=@X~\G:>:hU dqms+\!pRYEf" 5|;ɬ Z]{m555=3~ųjz\F>7[so0~ٹhԪՓvnMf8smN8ٷuNukvgg1ԦY=1Z ):vg(Dl4Q2 c$ꍹM1ThEvǙJ;F͍wM,u^qG,C%Uc<(- L>K{-D '9-Yr^#mOחdZNkY[j}C #Hq-}S*k (SziKb bEhy:V t$Aqm_Uv;MA]%KbF:VW*R|ީY~p8nt{W^=R Bp mnL r9HS3c Sq4TGU:4Ż||E[aWxf u2ϵe]0Qc3mTgNZ讳ce;[8y\7rNFX pa6lFM _ SLL3sxm6LYD;VQD <6@>װKM?{:Cqm % FyFXf%]4X^h$ܐ`Ĩŝ-$)bӆLO|daET z *1& @$X"S9 6_IKk̹?j6G92gh;?9d] QNHDv1Q 1\‰R*-Ё<>:WVrC=hG%h T.?Ke>XYvѿ^́$'~s&FXI ,=ć!_PPRmd-D>2tlt/ _!AYA΅5WJZcšF+prЉw}h;a3g, \ϊbn},4@?EH۹X׷lݺg\H rri.F@W".C, XpPyԥL!ؠo>`=:HJ#BWH3)xPzd(p5T<#NivC:͙نc4!!IVX5@N&πl鎌:b//\z$Or(E3]St,`2 #Aي'ayIe$(93҉H|yȀn"OI_Wr~)i b ,?'@]^h~|xh|d,*txfL]Dڎa /T0ݵѝms1Ks{£4٘bMGf 2M K&%);O*DÐ>t7:%ִ &i1vrx.Pho1Ȭ/4ufr]#R į޲LÅ:<"6gXa)wd ضˬu 79jل8-"7 KsY̷)} y=n0ЇlFϙهI؞x'U &hRΊd7=w!sk;ss_ݳyV;u 5B0!8HfAG9WG cDUt*nt eI;mQlysFHT'>kNtUh2c%J.mc_g̱' A4: Uqd W?u~ڍZϛeqh1мd àC6IYi?>Z鶥AB#`h2_"֘U$9HGO{(+tU"5COk!ܲa_Ll erxۦ<ȶztףАks~Mi詁&Vtt-+4+ -3)a( zR+^Wrثa5!Y8e:a:Tj_%v0b Bn-d1Q@mV3SB5@2ȥabc.)4f)|ŕ#Uy6G8LKl r2ɐUY6-? QMk5`0Y ~Bncg~ XK}zTŭg` IEBEq| N,S ^BHK.Z:sM<J%PlE ҝ_)Fi|M_RZ|P)FUj ᒫkĖ |ݒ|!anUI)wvST߯T*PW>\OB?ZVj3b+g&`Kc["y{&JO*ݙѤ )gĄOE8h9="jX9i}9j>M[{ҏ0H9u7+oFn/$qL{˃8rd! 4~:4Mۣv]Z5!ykh"T c~ HUð搸(!߆>/v ;e܎!eF[40|2 #d#qhhm_N`BIpP~g 2C]t,ÎH7VB w fBGs B9^@XDg&aɳFo#v AN@/di*rQa`hNq]iE(Gop@'^hg'l6(#+ 'Js5JV+Ctm4nӞ\jFm5KnVϲ]9jE'RN퟾󗛶nxxǭ 6;4%fgݞgA@7Wc}5o+z7tv68PfCJ_c7땚QjJF,}ku94p(3h abpNq$HP2 $hw@vGNm+5zeJUkԢ'K"rXˤk;f\G4[RSR4s➂(VJ$hiWh;~fBQMcDb"G"5@JJOץm+e.Y.:_REqb5 9Nx޷BdӍfMXvV`q1Gw]'6;=Q4rvtu>]&ȞIϱzP2'pR99w!єq!{(% wR}7ox =JX$Ti$Q.J'{9K(9!B -qљu@{^Ev[HACPRmǎes1׭ڱcwn9>_716~r'l[T\^] v #䬡։&-UV&=ӴW^lwgFG0u4Þk}ni">1͓v2EZɵ#iW+FkGA9iתU4iw V@ٵѺ23@Cg!kX\BGJOW#WaK.ɋTKΚܴ@d2̳Ő(tz fZ'瓸X_˜D؋_нr+Ji\!)V38}2% +r26Y9z!n#~:rLNQqD I Ϙuq4G9DjID@jnݚO~^SY1Ј "YQ>ڑ0,>S9cA"/9 ,)G71Ri2sabM6ۛ3c wpZJFo6l:aN0htf-@<ZВ fڽ (xqqkm_RDNWy6dRS(qBBnG߱hS-t9IJ]G>38-c$_H#r]܀z [c-o:s=yڵ{nuV֫t:\&ui_nu ᮽk:SU+FVҥaЈ_REs_u#NU$o,&p^'14lKXKzS~%blb|FKu#O-+pP.-k[NFy 2w=B.u,"=RnICj~$ ~ u^ aX#D9AZQd(9$fq} הYҸ!|%U}h199ZgMe2C >d2z!2h"u˃:B^LH{̜<8}A2 @ъRvCKzE a7$˩("âS#iDC%FU+ݼJd+MxR+/w R_#zRG)1J,?>|eWv?'|ls4eR vgKŢE'E[>artyk֮t}1۬kG JCwč9XQ/ݾcf{gʕ]7Q2T+-׆ƾ{+X~E׺~}c>6#y׬ܱbb:4_mDJZpӚW.T+XKaTm4[l5׬Z9w.iccCu_l2VzMˍ\^|$륒_.y Tc( &4+jsvZ֜FkVO#Xn\tG.s5Bhv IMۢKxzSȣe|j:&HFNQ:r5lj9膖<٢he*7ȽY2m5lOD0RAZ v;33[UuBe)f[ZOAٶֱlms[vQGd,(Jv}mN8PUZh[/m= *<\&:dlnAKvL.mTw|вV/& d8*/N0fgliH!NLJl o;%4LMT,ѾBSL-KF ͌O 8=t^QCQtq44Z=H5/ΌΜ"3,@ 2Y( P*w)<0ƣOŠ~XN3'?( R gYm+M\v'1J g=&B;Mgo+( ビFB(uʁQAǽ!܁苘ɔ3F+N>:à[D[\ȁaq~݊%kicEntl4T)3  2ȃr1z6(|g7{=[fۛNng7?M{:SOsV.;=7eqrVVUVm-I{iF}ڻWl txt1S?c6#oTfn=Ep(flaxUWщVPZ&kM6{زh Zl2m1꣣|;Nk١ {^:K֯b 㐝 }+͛` )()5`Co.U/N%H(k Ցg zܙ@ő{lz~ª5ǻvZju՜02:RT[ǷSj4IΈ!I'Dv\YfY=֨>2Bd4~h7-.&@76=;X2L$;cmT.4ͤ=M[pi9,JsLncJ_D^K5avY;赺l :*Ѻu[.*tc4 H lKҘqm =}In'^u[GfOiF'bHhzラ_P̞!gC:,cyG[i1O, j\gx~PqC\N.'z M:H{ԬTGj +X.rFfp!75V-5 0֪"9+ " R E 8KRC`PYaup&` βLf׾)ZM9i*KC)G(+~JП[̚p9bsMDG*\Y&H鐜IfF?d,Z02+9D`;{E+9Gs9|a: ogR-3{$hd/&cx\2CDIy dq$pǂM.1JB3׃lJyCmrjl?忳\yvSNXUڶsi4F[@P|;%'ݽm;L\*ѕWHg-f;t:I8ldrıGX U0FA莌8g<Ɔ֯Y4am\=|&c9ѱ!TT4|̈́v[vMK+Wgf6èlO>kܺv(mkLfNԍpajgkc 11IJ#kE*vsRϒx\ j Qv͒+-XH8m)2L' ThެddW"T!ziہO+GI1d46aRCh"V)\G}j#Q)޳;*JWfLg'%bHkWV243vz㺜En%Ӕ:#^鶨g#"Eیgy&!LM בEUlKU*}vCyK&fN##c hP<%ka2E1 "vt!RpՇT[`gtVZaRIF4.;)et*6c^Z9܁FVt;gʴb£:7-{$SaؠI7JE;1Pf`fJ5ޚ%ڌDB(vҪKk>b~iIl815ZmngFbjg&j5I<jDrkʤYx/GSC_rCYz>oP̅XA })3>1> 0?&\f#ypO>[oᾙj %`0"GY>"*<;o OαKEq mwB>'^9D~w%Te_kp.(=W/s9(e/ɟ|?5>9^L԰\5ߔYF4qϷطSVD5*䃱)`T.*cuЈOņGTm{b5,q<|50xr|;5=YDf/Uʝ隕 *;Xx]+ ɏ=Zi4f_1-DJ (Y!*l:E^@L&mwұP:?2O,A4beC >3B6-֔iČgA'F-EAF)ۆc#bAf~GsQ,&:WPUch !qk\;G0GLM cif"yhshnd4 )¨\"e@`kID$K2N(m@X7EpIhlI(>U 0? oFH(r"`+vMO!!鱋mx ibUocޓP.8{h`|WD!>kى; Tx*]I `eJ",MIUw+32DB :9c ;8ɻ6G2}T-iJĠdxdZCG ;;= Hs@r#X:c! 0/fW Q48 )CtG$=b͐%5cJ-`WKPqǕބ`R/ABE1CCstq ʤWn8ݘ,P9,pd蜎yJ9L9e C)X(`#,EYXT|풝?Ϋe=G;Z 9J#iʵ<㪼9JJ]9V^}ëHoUX&d,&.WRJ~\{<K0SF攚f>8qv2O)`Nbʗ8C?8dIλ1?˘zr"ؖ(Lʹ14*#<%T5LKɳ̖l︜.b= "w,j@b%eY :@Ǭ=(Jbszesmp5Wv)m:XvfciBz*q:!JVN`p T*ʂw= 9s!C ;#1CY>`$HUi?Kص H”Βj,GZ}$ 1jƤ3$#m.mq'+p P;Tw6h P?p'#rZ3X{4A-BO#VtboY^*%b1ˤmH~9=0trd~ˁ9TIT~۟##x|-VI |I(WuwL>TĮDfkT9Jbt*fT'(FVF-mfg2hRxobƆKȘs A 1˳Ґֻ $m_c]'Ld Iqe2c5tky7mDy]\}{f%<4 j*XѬK++2*)*.᧢cS-S)̙0"NHTcW=Hsqmf'FzEO6ʠ\ dC)E=L-Cc `!;%b8$CZpN8=04?-E&J,|Ҟ/d19og|VS#`p(' |N%BFM4qGrvt <3tw"0UJgSP l"'a( .I FF"]']$`tzKq+#&KqLW NPk(Lh:=bP ^C1&E(9wLEO| 7(cLF657 3#Ua+}!3xe_S2{t0(?f˫[^\{p Gߕ%dzw?,,]h/ؿq; K~ Ic9pC% u=ۡZ([Hyͱ&'LTp^?UGO1M~{6|Yi˯Jw@6aC8s#%S> %ؔKCq#_Y[o &~beZ#fN^05}oylWZIW l3_[2Tps=-$vw/1Mn J 4@4]Ju`q#A~9"̢pg/=6L.J;a9Hlv3S- FŤؗk`95SK,Z*N5|tg1Ίi gAaK@I@ 4 c"0oxpg:%4uH`*b"6 8@Yl&I`W%FB.h }i ?hf)-`OsO OF@960UPM)kZ#4ڸϗ@jِ~CS}wGKhaN'_g.X֟k-9F~B0a1`[Pv`\$Kqr{:F)zNXQ)o0}i^&4_Ƃ}#P 1^bMZ+SO=*w`poEaFc?iNf`.G~z!_n\D)uX8`JѼxKޞ/3Jiʯct~R_Ja7IeNH:,3ijZRyL3+2Y͌܏螦 Y2i_,ʔnѿ!a>m0)|r&xAG76eU{hO-,|z5?8sqT<&x]|jnS:p/:>xh 3ʁ`[]Yx]wcgjYxG^[Cmm_9_Yp/v7wl_;+>}0<]Xa=m +믿 vVXa-iF) RXa=V` +(VCcF) RXa=dV` +0/~ x0O +ߖ(+V,݁ +~ V]v-zG) +V` + +hF) {;77 +VXa 8ĿL)TQ +c޽7pæMfÆ gyxP +0U` +족> 299yy-7L[Gk7҃O}S/}KG?ӟr)o}[,+盔رcO~gw޽ +jF)ەw\izӟgu.\O?iXaGaǦM(d~/b5hѮjlv51 WOySnVzz/~KHE쪫K?|^VXaҎTg߾5u!d4'7Pi[7dtM4tS0ma׮D^;/ ߸s/W>OWY xibpD-KڎN'Z~{q~`=m18ҷwLJG&8Bo}[txx^G>{މ zJ^=X(eI@/VCoGF5vƽk{-oy;/η4 pvz?vo< T{ʿ'/W&&.|ۯٰadv{[>zd۶Ww=}?oL<յo`ɏ|[q(}ыxKX]ݻ~ -993ӥ'ܻ'|Z>ōF83#}-sW+|%Qn믿ϧ=N>vI'_?ykc=c؉'xX[(yޫ^e ]w-4?Y/O?3t)OWi_Vn¯rc?=cK/=u-y?e ~n309W`g??p>q'}y6;ۻꪟwɃ/%reU.kS zol3oя^sͫNY`wݵ;ٲ{{cׅ|O}yFi.wj\yyM3_zNgnӇ7mڿfMYga_ګ?[g}̂/Qv~?xW_}໴.f_:#-ZMB)ue۶m?DmذA^۷o<ƍ'?3gk׬YiӦ=M5za`(?ٞ++O~ʻs $_ ];yLѫV[g ~n7~W_>F?lܲut{,ۓW>ǽ7^O<@{ֳ{>wd2Ė-O}g^c;nW)?r i>Gԯ ,~; o}ks38RA- ;$| 'r@yK_O}oW7MW/_ʽo/bι}??3f=)O9oVXa;0Je.Ң_N:i|x'aՅVZKK^rܟWoaÈbma3.9Sw<;/r\"!ozɦM'8Wq^o ,bNZjDX7|= 'gfy͵.Ƀ~>xT %aGV#P.~q/Q|_G>"QO>`E=y, 梋.ڷo\8BJ;0'O}Tp-*J~oyo`+Ks޽-r׭bB38]vz׳1-|SN뮽?ƎS]|ý#N=u6ŐwK_zE֮Eq5  ۶=6Q'lڶ) ]G? ‘u}Od}Æ ` @%esqo~OHv(9XXŶd;VXaY;0 M񧟾>g!oOMYZ?8wW<׍Dnu_#epso'?yPR| 6joHXGp>pӉ,+GRU''^/FYV.;ss=fʱǎ7xu?_rD-9VO| (IoxfxU.˿gYߺaǙgy 7,(<Yu(VأҎ0 t.9W~}o~S_'^|[^tѿӿ'-\93ӥ6\y%Ÿ+;~ۛs{EMyկ57|um0}{q?c~٪ڪNooۇ{G"9?|^36EAb EJCnec1u){v'ΦGF~ | '/~`Q !curD.8#|daVXaH(bCC>;OvЃJŭTFF {dm-١G߇{ +َTRXaq&VXaq+0Jaazk +ϮW#S`8]RV| +jF)ó禗ib)>w|u|#®{ +# RXag?DD-4ےO}9ftfW{ +ߞ̙)0JaXSCzkƍq{gY@a 4rffIqNνw=g)0M /'>q_"& +ǂ1j?ffgg/Y"D28]%AH0JMDAXCT*GagE{(}[)cg=kl3 W + V`DŽio߾={ݻWb# |;eϻ?:zzf9ݻ MOOvY66::(}1k;8 *m :nڴlRx_) {,XQFXa;vضmΝ;k'?Z~c#F{[)aUV\ٵJL x1N_v5}KlRXa(<,[{wJ=iy&]m\??WR׭[wQG^%4,[SWy^>3֫I1njW + V`G.ٴi-ҟs9?2uulW={l޼[nSb#p%;V^ߓmR Qv~V`#u]w}w:O=ԗ%Gb҄S0 >\ 'j{}<lO@~SqI~xŕW^y0ԃ%\B 6~_ve"wyI2?ئ633svmvg>?Ͼu{׻? ZQ-@=x;}?ض}饗:0d"ekWG?O> A]C={|[4 \uU]v!noAp`?}{XXa M1MN=tFpd ^[n׿~)z꩏Pa}k_;ӎ;8{n"zx(ۿoo袋~tM{,A#/(2fC{ޅ^H?wwOzғo'A#/HO+Ν;'''={VCfH4Vn邏N:>lڵkiYZ4X/}KtwB'/B+oo~=#laCEgMH7u}KӔwqUWo'$;GDQdH!VQ %DH 3-#e ?] I=em%fgso~yytys}LLLH1"--… Ra{)j̙3g?H0uzR=m4fG ?=v-~ɲJ__>jMQaF! JӧOѣEQyk=zrUwww###AQ(0}P(9{'OHVCݾ};""@P(PBk׮]~qܸqzV͕+W6oܡC5p+P((|e``7%*迮]ٝ={v۶m̒VuQ( (wO)T6 quFTExf%u2|4,ÇZ*55_mݺ&Tɉ'ǎ,EkkkgϢӧ Qꁔ@qƎ;Ǧpzԑ#G#}񱱱JPR>}:==ƤéԮ]ӧQQQ<ի]WxԩS/_niiٱcG 4_߼yzҥ31+Vpwwp dQ&O|;;@f 7u֬YJDsپ}ٳDNSRBlȑ#lmj%HQEF\PT>|Eۘ1chu(ԩS(U =R`ܹܹsgLĽ3.^IB௻vGfVX\\|E5=[dd$eK)̤I-[0233tNSRbټyM)(EII Zl(PF'B-`//{999uiU9 ::رcӧOM;bT=3"tɒ%iiiEEEw7֪Ukĉm۶eӕ)8gΜ!C0NJKG:t(<<\)R(DR555^[.p(ؠzȑhkkR! D7n̦ښ=zF˖-zj77)*]֖ԑo ((e˖;wBWqtC5A1ҦMΝ;R ۷o믩7Jӽ{e˖-Y$''N 뿓_N+Wrva6nRyK ZvmDD\PTQLBB*}芴D_ n*5jʼnl3{"91TS7,5* EE9ize"p({8O*A(UZ*o߆ںR!j֬W_]pa׮]>>>}mxz* z')('))Cmذ!X(w߾}Z"%K\v-77qҤI;ʘԴ\bS"V6l/,b9{R((ƍW\>|84jhذaQ7ƌ[7T={/\WF[p9Kd"PQQ{鑎R޻w/ۓG4hjGHipYI8Jf͚>>>n5VC3nܸ'O@N_9stߌް~oر @lg Uݻy5jӇt$T+W$%% >.TERXXXV5{:ͭ{H1~Y/gmm]"e޼y^^^SLYv-{st%@EEE:uZlYf< =~`HHHeN4iqqqΝ[p!(B5J(k& ?Gٳ-Nڛ,PG7xhfAXYecLZlcǎ7oF"R֬Y$J;{^z4qÇ+x7:eBǏ)A5Jy&#F =t]viiiۓGMhذH@''' "L~_x=t-cc㊟Vڹ7pfΜ)!T*?SvعejT9"\FQ+W 6LGGt,2{5jڒG8qb۶m']sqb``_|}[l2e͛DNB~x}PPPf2wXP ( IWWt,@qwޚ5kZZZGFJHLLtttd=X88t2̝;(~ڥK7n#H&ӹP̲SrIUnȹ4 S$* E8PR:Ϟ=;uꔯO3...;/EEE(JJJ=zTXXZZ5hԮ]w=ب^:KD Rn]###0DHu-y# 4D:VVVϟ/((غu+4sL壸%a АqB!(ۈ XǏ^ʂ.S+57n -E]z ӧOO>eMNNDPP%߿GI|83𐢖 TȤ(22ұTc5jԀV֭[eAE@t qqqP0-DaH;xfBPjWӧׯϹiQr=&M@ԫW0lEhޝ!Ĩ((|N^~}9q0J,Fϟ?g֩YYY7o޼{Q˖-{-5]ۉsJJJ||ѣG[j```@:&%%AA)):k8ƍv횳͛ƆQh AÇZ -;;_[Aд>}zttRF((@@\(99OP;VUE|r*<ѷKr@5$j۶ M:Abee۰aCfz'xիWQVkŜTvvvh2PP f*YXy]={ִiSlOY\t A μ5xիlP3B^(wvvgWP(~h:GE:χ:AaoUY4j/|=J:4۷o3Jcǎ(!IǢ1S|BOJJD \!iѢǏkix➅J8J5=jtA1$$1jŊ}瘒%^Gb?:88 0(01e&M233+..cf)jIOOG#iԨQɉ'Q\ Gek?s # G"7g=t}OBG=z`*C-@mBE=ݻwCCCu&)?PQ5jD: BQIF)))9~8_0o^x'>bbkkkdd/QhoUj֬~ر#G RW7ɍ7 Jw??~ /FAA__ B?ɓ&LHJJ6FCP[[t >T|>}8ť~(YWM:uP\|[ncQ%fΜ/,(Z7w\?p@T;vD9РA|| K.1+KxIJ "+˗/o׮e֬YhA1v!?;NgANcBDf&M÷f$~7d (25D%T\FJePE5 k!Aty4>dkPJwAApEٵks1}" E|rz]j֬[UȈ#PU Ù ! Nŋ#NR,(y͙3?(_gANM?5-`*wT,LlL # Ö-[L)aSJU()>@˭["Sx*(zВ!יQcQ7l L;k˗/SiGř4eY*hdXAZjue= 6ɩT",iLșgϞڵkd&QY(h }իWR<*b>JiفӅQ]]]µk UQ\pA8wޅ@AͪG:u@__%85jԐ^&E)xkݧOP[θq> %!W*cƌ ĉe"2e ^ׯ_oooq̟d۶mWꅜ΂ƄP 5=5eyB=xfQG%qEM. D^fͭ[QFJeP4ʣGPg~+*Pn&3pYf&55̌t,*`i:q'=<<vN2*ӘYKhSfdd1ck+Elxk+(+;NgANcBĀDssUViH9 r8AN1%R<*λThhEn Qhfgg;99 UAFҩr%&&O>'OgAGHUK2+ Ϩ;=<SDOO#FՈ[cIX(7 d3hii^x0/+V#GP(;'8Md?Ӗd~0֭[Z"uVJ-Z *caa㘘777aQR(,=Y !!!!5^C8J24+(N[DHӯB&QJJJPp'GE6 J=!V2ؓcJ2 @,N:dK\PY24+(kPk'O9B֫QCoW5zh]ktrEe'+5ի򬬬24+2I5R(D̛7o:88!66 w!,Bfff/_vuu%KVy:xIP&޿ETD9)..NHH}zAh5c%NxxW_}%.{{[nC|R/(U/_>ykyX~+)flHLؑHd)Zj9996MPj.'^ݻ~-YKٳ#G >^T7j׮ ua4 !MGlYn޼6i˜1c… SLa43P(iׯk֬ (H111_۷-fggir-3U9H fdd "H~D.fΜ/DDD'3odll\3P(iRzP5{e???R(=zK8_%6moƍ!yT e+?8;;5"[޸qӧ%zv ?ݻz߿3P(Ziϟ?\n]F‚| PuttH\ԩpURkãmc5^#)[K._TRnW=|rht6)p޼ys2dT׏?-% JV۷ #e^|^p9(]]]Ͻ^zEEE?~O0cQ@Vcǎ ו!#0aDS).'44T3(E4 |={Fj7o !Hkn۶m-*JP|<1ϙl8i$33bz3o%0{L$f͚-bnnj*9ĝBQ!ENJpQ4o\B[[8%%֖ܙikq9SՂ Ff8HgVRdd$®q"T+3PTT$Fa_ɫWH=ggg"Y@֭Hi?WdR~;?Z/fffR٨F!'++ ?BS..رc999u9khX3ՠz111z~F!R6[U^ҙ;|) EFV(((a #Ԧq={LgQƵOZg_) `۶m6ly3gƭv횳͛ELBkM6Ç]v խ`0P'":A0W=Q"x"]FϟUZT@ao3 ߱cǮ]Yo/YK.dݺuӇwիW/\RPG}4 u" T nݺ?~9S5 *(pZJ'2]汁mfjje333毋-ڸq333ٞl̚5 ZZZ+V۷Qe֭ ,xh<Æ c4 CII a=Ϟ=eiׯ_;vmAAAjZ|{6o\F>}(x)PB%77CyY|8(>l"t"KCڵ޽vyٳI|ɓ'dq Ϟ= "}6H &Tk֬i׮87kLT.]"qpp`>CʚŃ3=~`M| p!&MJ;w (>%QY m#˗[fM",XRycf%jnN @D ;&.XszԩSW/..Ưېf͂nHHȰa؏ӦMG%k s!YrErF78a>yqcێ52<,B̜A|;%%%ʫI&˚ŋ3FFF=F߿?}v1:u 3EOؓmҰRIE(jן^O=6uȚ{Mt0IY'gABjf^^5Ƚ999Kj\F >å @cVx(N>} XعJ3$$[YY bӦMݺuMx?6ӨUV⇠XgZU|5:.K: ԆNբ5SVAe(vғy[ʻe˖&&&9#q6Ξ={ĉ/677_n8s@9;#B̟?_"jժ$ K~Д +Q(@v;;hhy^$m鿥ߞmGEw5*`FAA\"!.KQFaa!92&l g"؏D99Q<ݖ8enjG__߾};3~!7999H\3*Φp俣5W^UGoEa,B"ZlKVX\$oǾ&]N4TW QW-?>XPP&>";"K&3,V|Dnrqqtu6k~^MЋ ,9Pp5[NAN³hZ(ݺucG;éh{_>?ɉ=zo߾&CiiiuQ"ݹ9( E%Fa}pfNƝ4DeE h(U% 3>L Bd PDVT(J4?ãPʇp5u]?(Z٭)ȉHX}Μ36fdeUCj0#C ٳs s_}z~ҭUC >*\|{zTTҥKӛ5k`OOO #hݬ뺚te>Ҽˁ{(ȚYِ`V )kYJqی/,!8f6<<)3f^paʔ)FLPAkm.Y?/kgR3EIՠA7oT\&.|Ii~#IE~'N8pW_}%¡ t"?:vش1cưg{ԩS/_lll;99IDx tױۜrš5CL(Ѵ?k!?)R+("CR;lmm@8̛7sʔ)k׮eΝ;p;w̘1ŋG)OT޽W48= K)jhRZK ?q 6.̆ :TC^ٞ={5Jz*1a„5kY7::zhvh9s 2$$$٨} EPBꝋӧO(11|Y3?~lذ!QDJVVVLL cJ\zuiE O&GII ~zJYn >>r %K )(hPjHQ?GGW޻w35jLE%Cx(&zzzhs??:88W^^/%%K.gcU}֙P(*Zi ZŋV~Æ xΚpiD/_VA0J  ,P/«WJ߯hݺ;wUpD&QH Q"TP(eA5@[)++ϫ\Tzzz߾}boojЏ"p{^8EQ7C522:uj\\]]PypiV\Ei(xWҥKllۈ_ŋ+)U+ {q&}҉'11q:!R&Jl0 B)7jQ555?~5h5`DJ[FM*tքO޽{YyEgΜqwwP~s纹EFFrݻ?8;;Kd7 4hСCk [F3.]A"hҤI˖-CԩGND`e2}6X˖- 5B]v%Wf4 {H(qYYYk4yΔs(hx[zR6N)7n(h(ի7n"8qb۶mDD~:sL97m$L~ a| AƬJzW^!ÇJGa_.Z7Ã]+r)Q7,U&~hL`ooMR*ߓr!YFۑHj³zйsŋ}"##Gn/?F =1iѢQAewM4_~a>7СvA7 ?~zXrѭ[7NM,HǸ@jժD2&''egg|={ԩSGݦMÇ3wX=Pʊi+W"!!Fo;u|E8tjM1M4= t@mu("N)2+!!F]ݻ֭*gb)k $cǎ]vY[[ӧ>w޽W^phMPP;?~X/BTSXXXĐؾ}8!h fBСC!!!%@?8p^A-7 _?~1Ճ5k'r 05۶m355ݲe # 9Y8pȢE6ns 3 vWlݺ`cc#C{hv#Gk$=+!iӦ(Vc`rʕ+۷owww(x޽{NB)/\e~ҖHyyy^"崬f8::>zt }{ڵk͛g9y8 ,O<)Mk}Fbcc'L1fƯ|޽l޼ÃlD<<7nT$T QO6ZQDVV!ϝԱcGܓǏߺu 񯟠N8'B!:t@]T|5D7% *4g",o Txqq۷!Jf͚uY$L65jģrСpγIGawq̙`O((r?۶m[Νutt 7|a6my]r5pCބV@%ԏ[& !Rkŋ3`ԩS^[l9,,L+޽;44ZPj ˗/]KK 1%ݻw''&-[AZC7HǏ wAhVR^Ap+j [@ҥK"s?~<!z3$ϿLdMtz[YxT{QJ"/DH;}\g>~ؼysHΝ;3kL D򚠈,))oH@P(BF5JݺuիIʪzݺu;s挷7tI[8_xs(tT"P$)EEE GhF4iҤ]v52qpiHXcxq{!"L-)_B!:k_577SEHCwޝAqy𡦦&] Bk[[ۭ[ڈT z466Vi~%ڸj PΞ=K0%%./K͇"@\N8x_|accsEH%R1P$pBV.|}.Yڵk&MbfH})xС~ӧ .ds&J DXЬ;w.ZR |FmڴtN:رٳgFFFà0@Y?j(aܼyՕl *Ę1cw]]@FAjNOӧO4lɓ&LHJJ(aM?R |Fرc'GTTQu =Ix 3 ` EffAT;`7ɓ'P3ׯ/v4 lٲjirY8⪃o#rssQr._SQ(}zСM (ߤJаaCÇwrr(PZZPfA}D Y&ѽDQ^Aڵk9S(JJh| 4`є'zM=zÀ_M: Ϗ۷o=۷G}tS]p: 1P8UNmӦMI7{>|8]4EY{.$$gϞcOieB>"nG9r#.#:FEE-]4==Yf , k T9ܢW&E˖- v=dȐ Gy 4_׮]0Ә… ݺu#tAZbb"jjժ_qT3f]]]L2(7nرcG~xBᕪQ7o%5kԨҊM /^ ѣYk ߿_N4IbT`͚5W\`F:u˗$a:` WXqΜ9h0#SSSTQ:2ݽ̔4$"`İ}ٳgsO"˗/w͛Q0~a!##c EEEFɈb̌8(=CCC  P*Gzz+!rA#X CTttt|=w܁ܹ3&&fƌ/^usqqիW+W:tY)ň@(c7|?{^zGͤI-[dٳ"#..ܹs .d4 -"} éa;UTDhѢE||<~~c/ZZZzO$%%DF67׭PǐDlAرcӧOBSN-Y$--̙3Q7mĹw 3gΐ!CBBB~GGX:u*n :4 =~x毜ҥKׯB*Q@Νwagg'3LLL͚PJ%[,qZҁ*#.))ILLhzj77<cǎȑ#(:pq D;jϞ=kFPӦMcv^ DCc*+eiy!*Su5 ~hy dt~~~/^@GZ0QCdʼnx6ULBK7MNxHT`AA7̙v*t}ٲeP`pթS\Mp?~zPnJu 455Ņ@I0oI'Hs"r3g\ADQFTEiEɓ;wd =~,R[Iy~:22y"lκ#hnnI=b֬Y8ܹs%a;657 ~1D. JRۼy3Rp"rއ˗O4̬O(ժU}?~ QzYvmA 77n&L P( !*5k:/B-Ǝy=zY\E7or_m\S*+4RURTT ?}Qڈ۷ommmq>ٳt!> B TΝ;SSS@rww:9}t||<H%?|~Zn wѯLL޻f4~#Rߧrhї!Cޥ֪__aï_:uZj,>|3F0 +'NXP~~%fK'fgg7ڵkhp. m6UMY|-[3f޼ywiR4556zhA& 0??;w0nQ39ޟwܹ|MтQ-,TF4hXJuVVVׯ_߹ske}є)yy~s_.;p\Mq㎋_]TZy=:p`LZZ38 h5c'''OOOa9zֺ&ZZZꫯ5Y~1Rf͚qF }'N8prQiii'O PO^ZMgΜٻw/Oƍ6lFX`g!Z88]P?k.55ʕ+*= Ν;#游84СC%}P[u}$mΝ665aiܾdq'dhjkϠmۿbc`z-u5\Uhull,T6mHOAz.r7c4hxr||ٳg-Z$Q;V5-t_~kQ` m޽*@T>>3|aI,v~ ny,YYY!@0BR9J||VSffiFFHy$jkkC-^XOr< )C5 L#Tk#m-˗7nضmں"K<:x֭/_ ??yt3gNu3ŕŋϚ ڶ>achظ}'Oމybд`WOaa!ݻwKʖ'OH$r:q_ooo(Y2qDΝ;ty?7n{ޞ={"~iӦM=z܁ YWg!"pF+**_~c)Q&''?¢EtwvkQ9Qǎ%ў{3fN0 Mի^^krvL"Geg}[iSfB4KLӴQbv\PDQ{;j@*PSgQU[񨂢S)zjQ<) Zh+D젭xP*"ڿ[kN$I6gflEE##9s$$$ie>'2|pnhhx1%{Bo߾&EQO\UU% +**Z[[EF/^Ъ555{<==MHI{>~0 NjMDǓ]J-LOOU^^N3׬Y3_t#4$s~.j AFꢚ?Ny Ai_h±cDziZ.m`H}7nv1&ȉB;v)1/B mrf7|CM` hdN600dnnus@hAA@QH##K2W+⋾Kll,;S̲3b;w23eV=T"&<{˖-;sL{3;|@hSZBF i$G}TUUz rĉ4-~DyTC@̲QQQZ(Пs|UnׯwsspnݺE)ccyQSiT ?w\--LMMÃLK.ݰaܹCcf3F)E%FfUV-ZhذaLUw9S'N},VE;T hG񒓓O9s& δiӨ#[[u)~noo/Thh(E. "l! EfΜYQQAo̔YPRj =-pL%nܸɉ @ t N:z>@PP@O?988О=pv4us@J )S߿?55Ң$$[zPGVؑ#ίۙ)"fG$ҳAAAGQQQj*'Q?tR||ɓm]p#44߻i&ܸq#gN4=Cm(ܻwo۶ml]3aKKKx"K mERRpR(C" hWB{ûwҮzSjҮ|٨Vbpȑ^^^7ol$ -[xk\xMA]]]z_)^lڴIH EEEѸhϞ= m BFQ7ڭܼy3!!aС1dPrss)z{{5J+@j+1(l0 ŧ "ݬ)H222y̗?~\h8d3fȐ!.]:|@ ._xb[SSӀ'Odff޺uk}\rh/dQ`SiğKIt immCj(E… FFFԿN*UVVv@0n8:L?R>PZ-2!hSZTTahho)_kk+eׯ777;g555Ǐz93)T.g;S9.\tm.Q4 oѣG{yy~AAA7,--rrrE>>mڴ$4MshϪ# _5,,> ,J0MD***_;dJ* ]ӧN  4k,kkk[Xx1SOO5!!!11QGAzzzLLLyy9YtB`^t9IA'--V"79hf潨_}iDDJcii%K|[=c  aҡ wasWB+//oڵ׮] ڐ{oʕQ󛛛oݺu-[PF_v@s hǍ{} +quux{ùmmm4.6~4 Zd޽{)=ztŊQS1 @CFobzuؗ/_vssswwy}6EG}p. ܣ222>}JUYzؔn3`Ą>ʪsm8PXXX\\[oKf|SUDPdC(z³kkkS~!!!Nڳx˗رCUV-Zhذa ȩJ(MN!eM6YXXlݺ  #"")}yS-ǯ\6MX(Zz7E|ݻwϝ;7p@&X[[k'O0ф 4,F4͘1СC3gΔ~ˋWTT_TLLrJSCYbĐ!Cԩ0srrZd {,e:.)M۷og?`S'077.#ϟ?_SSC1VrA#ſD?߿? ^{5G=qff X^"`{U ' B;;~M"tXXX{o*HWWlZȑ#lYG׷Qv %hee5Pdjn[mmӧO+++444P"|?}bcc5MiI]]AٳG=mPd9?￙OMMM/655566Қ)WMM 53!z| /Gl@! /_Rn`ijg|>M?曈100`N5)**jnn,¬&ffflQ<'!RE$S?(Ex<1YЄxP d0|@ VsBFM42 tM42 (-0%,๝{q(ɐQ@!CϗjMIUIDV2 2 te1sڸmx(1aBImS-;7UCFjI3y$I3F@ I?Tӱce}6uZZ`OuBFMhM|oCp.豐Qc?Dz2=2 t's+}^L~5Fr.ɐQcz' O|f [ }\ z2d蘥enhsr=]AlYP5dP)};׭42 h"dD(Q@!j9s&VQ.\vQq42 h2JfI&d'j]c]ss%0({eȬ& 26YIENDB`PKs#L .RR-Pictures/1000000000000196000001509C9CD23C.pngPNG  IHDRP+hRIDATx@Ǔ\@؄ ܨ(u*T*jpTuuJQGURDQfI!$!a1q}oLN>4A;0e~uE h3ndyෳ>ФtBFSӘ4N^J$dHqÃB/VNjF"ݰR41sZ6bĴ*HZ@*s42QYiMKwS :Ad6el#AO-41K+;tSHbҦۗ{ Ӯgz64" / GO*ф_=ҭ9VwqFܧѴb/&k@$bg_קYgWy)8Lm nbllnjR׌ PU{r[75kX"@J|sv](Ku?ڠ,yyzkI%LBJrD ݡc?`XW+Vx{~*I-tʥ+i UHTW?}f\"8a@ ߨP*B#zpaǮ{zx\|MiU GyTXlfj[;v&tt@(-xk)75{tyf\Q1U;>{&nDL3CHw@(:c69[?}K@ a ( 001u s4ࡩ_Oy3sOzб7DB>ȡ,ټ©sp߷n3}QGKrGŷœ,8Ӈw p_o6u^?_|W #N[sԤRo˖b1ʼnyN:\w^xImL/9׼S f<R u]q)*}W;zv% On闯uv;O4-J_Ɋz+=wOPkٸΓ6d|Zsj.yH—/˔z+_"/Xb$|lƣ9UeM()yفfP'[38h^jfADlB]W]R嶆n2ë'˚~ Go࿙׽jj=KFR]MvMbL%a܁cdb&*w0r7OE_nz+ԉ7LJd^8ջ;pV4yݜp#|R,%hQ=^=vooo3 69w/npᖓWQW5t9mҲjP!_$UTkEtYfM*Q_U'[OHd {Y_t?Ձl1t? @<)6d c,lTv\ߡgݼ{800'HR"&7 {s{pUIM/ɇV嘛|Uojv{9+vE򇇑!ƭߥ̷D 3_ (lUm@MՖʯZ&J^&nIZ~PYIFԞTU/_q{.:PL6](B,Iĵz@ r+vt2IN=SPlXs;:ñsgog//qTvB_#|qgTZLͷGzvL.9>z ߎ} 鹌G0sv~߮N9+Vt&p=vPUY I|֨oiͪUl* wI.\ PjpRO$ʺPTZ_l0Ubj#) ŵ/8Ņy3K^hhl60a/{|7frqAw.jȄ9계ʪj|ҞL(dZ ڟ,ana:fuxHɫJAc69:8iOm8_Jqn@â}]wqpCtɕ,;OӪUJ7ԭ^3UUʣm Pe(rMqjgjXjCC0X\s)-)tstpxA{cC>\N)j@L9FLiHJtȀ͵01bGZ*1i.0as&@LY&;Dn̼w[\n.F&1.Mb+xjF:w_0@@Z.;^yGlFIS a톤iC b~[` @0F{#k׍MQFabH"Y`0\:s="!e`$ AVh{B1Ĕ~!ʀ(F?] q~JXCADkl(u=׵3 ZכL Ǡ!Ǡ!Ǡ!Ǡ!Ǡ!ǠF"?w `X,MQjQQYy= OJt Glx.n" yD A?+9wBmmVA&G,?-,:p*қg+ %j>Ǿwxo|cAt%E+D XS҂S) ͉''AK%BzLLGGǏ@ HP0J zFfem3rf?kNA4B(ի/_ѣGz Jg11_~_!")ˍ0lP2go۾fmXĤ$&A|ޒ\XX89Νsvv߻w`n M%?؞p!CR,?AJM:h+FSNGDF\v?X1cǼ?wyΧ5&!~T ҥKbccC 28llHD*N`ë|*=mtrirrc̍AahqGr![lݿ9o˖o]\ks'_n"B>-;9$nȰo @=C˗/>c&5 ebb5kj^ɠAVƮZzUyyyl|@Nzٵk׼%j>\jXs;y<;{ÇDDiD,.(ȷյ#qsw/K2(aP A@(a1I9dǴiӦL~*?fzKAFa|>ʕ͟M-jԏBsUBBB$ӧMٟ9w޽!Wrss\QQ'NGϚuehߒԪ ϟR$EFع{ esiE۶oo7m1bDS1AZZdzat19oޅi)ӧH [ݧwCBU* 2߸igF}Of9 ZjU山hO֭[q|@Zmٺh@L)IIߞзo2(7!Eѷo_2( HAS 1`=;zΞ=iQQܳ]d ٵ[בowuuzf2s 3bq=<]DJbXڏ 4FI$ m祤2dQ 07'9 ϙ󕚵qPjϥ1{AǙdz9|hND* k  mmmuh{AaZD"l?"zAj:m%2Zҟ% ALf'P(lL)ݺ41ikkښ@KL ճgOEw܉9{lUUU^GT4Ft~!N>5 `0ŋڏ3f„ w633p† PC%,;'',,<### `..!=z>k֥Kq.gm6t(9KN”VK?_hl6{ƸVDPvK.ewb1̬[ÇǏtAAAԩSSRR\\\v$^Ksss'M:B "$ٶYm72c s_@q(KP(5iGDDVJ7I(qԩK.E Cbooo=jJgkZƍ.] ˾}zzz}ѡCgΜyMRJΝ;788ɓP*"iF޵`9~dfj٤Dy:~IJe˳ӧB j9r3* uJHxI] B;wA PӧOJG3g۷O^(CS݀y[xM>ր:h ɡ!y5!9'|kNYh8c[7iD5kVd s\҆*E&.U|NC(aO&&%͟?{BBPP_2388hmDS ntڵTY##܇do i pWu퇆/:p`E eee` 'N3NOhKBۓZ~_|ݻ^Z~m޼yŔPgg縺4`50 ׅڴis.]vH"703,,>>Zbĉ`cfϚE ׯRGLi4=}h"ic!IPpƌ+W^|Tl߾Ho""";v*f͛L ';ūW;f͚ث $nﻛ2y<.3y$阘h2t)ԬB-j0hHfddf +qY!K#aCdԮ\j`ii+d|Yfӧs@WwO#HFe Iv&$Do6mZdd$V\IӟO\!HE;Ј{왷i ZGgH O IG9rdPjA׊"Hw 4$]ֿW/_o7hYֳ&5(d„%%xV>sFV@vV=AuL"/z&"~y^Q3Cu^^[@ bwq~i@uݟojUIT7Ǭm| "{wo1铇ƍ>v/tb|@~?zdӝ|5X{;orw(/Wn{ap_Phˑ>rl>yLC ;t:^^ޝg0}W/ ((|*|7L/Z?0Z@2B?/"_B Cp?߸Q\’N_Q B0cmc`͈b‹vf+6(aa .?W^h?s8~~VVFڣ!HN3,wwwGGGPɰحib m2ftE    k"P$Û4J A,ns㼼72JJJt0 s3s__+5d;%6 /z$^ P~ @ʕ!!!.nzm%̔3g&0%Y.>ŏ( EN~^"5 ڏׯ^>6 ͞^>jgggdlktJX >㼔3C sptR?8J|H"S󔅕=9X IqI1N6Nμ%P'"(a5TRSսG]hA. H0s8cE }o v6OP\5L&PӂVD,.(ȷյ#֨!G' ˶ JX-D"P_rssg̘k.GgvkKԵ#%aV6 M3g~{ҥӦO߽kQ;A"&kIk!Cصk'bʪ|c&P(Ԫ'_CQTi,fTZsUҊSO{yyUf\l)`phh#ŋ;vkbLD[$2 ĪUw5vHHJj@m =Y͕ R4$PT\QXsȖ<4?<8fXJ‚8ww{\ұ42ɿI 9st;/_L^WIm())ڵkBtfϞ 'NЕKKW0rqq JΒS/2RI'YYYL΁0p'sΝ;%>woŃ k)cǍ9c/6x(N>O?}u%FA#3mL,nxcnCrٲe-&Lzjn~WWW,|׏?& ɞIU7o600ضm;C'l6{񑑑]xl 7O[ 0 Xv|DDHBQ66$?[hȑ۸i0:fS74ROdU,99رcsFdmLHGB~UK3N A2@aÆQ?aTT[CJP}]ѐJXd-[&wquӰHAUUU-zF*GGǒ;;;K@CG A#3m PҪJ5e!P  U6lذgr! SLIiY8UATTT޽{Μ9dC;>}:DgVhrHG0_v-iddŅ'o) rCnF'1) KA]fU xUv}0hئ3pe˖ر#$$DCFf"QXU:R_nrlPP_8n?4*>~KppUJ9iҍEـR߿֭dCF &lh*ad'_UEHTS2ZMh9/#ֆJPHd`2}***D>%\/5p8JX-coHj7?翚/R\kxG@g0yփ.y%%VV*Lwh=(a5YN?αtֻ[įH*PR\~aА!u  FYY9ASb>JPP$%B#{ߏL+=Tm+K7 prr(/W\Ls8ϟ)EE,,,tݫ@ N˻?~mP>D@sg{e0=6XY ]wg N@ SZ@rseiHߺ!4p u@ C)t3,wwwGGGP#h0 CvJҮ!,cf     k"P$=t:A0]zv@ xwFFII}anfsueMUH$|7tNo%Cʕ!!!.nz!onvfʙ3\SVʬ ;z=jEN~^"5 ڏׯ^>6 ͞^>jgggdlktJX >㼔3C spt~ϧы.8%;;?OYXYkG "bϵl>y/JKa}B%j>\jk_-Da q.(a5|+lJ j2L0%X\PokkkGQ#CNNEE#mZ4~prku%77wƌvsdvkR׎^I¬mh ̘9S8FӦO߽kJUA"I~2dwIӠ_CQTiBU5:}ˋLǮZ6s&5H%,ŋtrZsssM hDaXj;@ƎII ɬuR5 EB!*t5lsЯ~0L4|c) h"aqqq{]r%ccc51hd&5hxMԓ'Oʕ_O~) 899A42`MX:AB,N>O>СC}_jH@ϧfAgy(aiiiw400;g`d9b… {| s>dFE`EwܩP<99رcsFdn& m MU-}w8m+Apdff߳2e… Gcmׂ4 MFְȀVUUoȰWe}IIҥ`Kyyy=DE(7CUK*Ք Z9sfBB!|>ޞKYZ+U`EEݻ̙C6$!۶mD56L%o߾IInOH QII;"E&*=dddJY9z[n JVDe4he5WƮJLLPW^S%aM6sIII˖-klHHDJu:&}a&&0%+Iyuw#3rrr4yC+oed\0a/ m$EϟmX.,|֦Mtc[_]3uo'NfWYY uƮ\"Υ }v[lߴqエ~vvK,ѣGKK߿R`;d %z 3Aj4DEz4wn{xXlrsr:uVuԌJ|Y SP?,!2֚nݺ :4??m˖-dYz C,톐 ss_uԨ] _!뢑q՘QioosgS!޹kҥKL6tT2w ^5 ݿ_eݻw.TS42њ׏߻sܜSTTط/>Tr)'YY 9yD)X._ ~Ԭv!W*v iH,~J)-\Dpt:=a|@"Mn&bnHJOo&^~U"QwIh5'/L'[-!a +ΑdTTT4}<`p8>#!p]ߐn kT5_d"@D@ `s9xe]/JJU^Zkވ&f;y8ǂ[>n#(BIqqzACTWW5`0eeOyt*).j@AHTXlGyS?2ծr|S"8,0ɹ\q1p?fcc~PT’N׽ t:\̽;G>J A?w6wk[CT%ϟ^Lе{w6[M0Ee a .?W^+bLsP 0A7rwwwtt E8΀M04lo!2fߡ(a1(a1(a1(a1(aH|÷tbF$(a|p1=)>akg'KIm|y))g ;banNri+3_ H%j>\jk_dz9|hND$JX%X\PokkkGݽ VA (Hۀ là!h$aV6M A Fa1 윜;vq?z(|֬K.D"*"rqq JΒSQZ,]=!!??&NA$ 蘐G}@6>QAbq a0+ߐTZUA6N%,--ms 3SS&%&'-[Nz/\abb0i?4e_X]eK7.nW &4P훘4 AA}-[}Mb\ F0]v-U(7!A Tx6_>kӦ]tٱ#߰~̰xXLvX|IdYT~*++UՃ !IXǸN89wɓ&LDKOM= υ!Ǡ!ǠՂ 1~m!Ϫk/%:ao}ʲ:V NG/ot;ݿw3Z JX ,6G<݉w"dog?QviPjl~aPk/0A0A0A0AH$|II6`Xvi.PjQQYbzzaS|.L/rU-"Ңs'?/ooIm|y))g c?O)]$󔅕=oaߐ%j>\jk_-ȨQgGAKIPjvFTT_hBHKHk=3fڵŅavka.aA6& iH@$R !CL>}׮0x<$JXJJʻ!!! `Tm_xcsss]{(A"0HZZ6&1c # ih*a=p`] Ȗc D`b|5ѸϷmf6}NbR z[o\.7.nðC!_~uЀO&NmAE# ;zX@>{=ztܸq"Rg9ry7m2Fnj?wߑ]841O ^5v400'7bǎ37&aׂ$4W1ר 1bx5OM^˖-Ζm,YڳG!H_򒒒2} e0(2UUU-bzFV7+yyy=A#UUjʒO$PiOEF۲%~o|W72sU99'X~O?7))14%?|C.X9s(##܇..FtttC TSM( L׬]KeBCrӧO֭۸>hn/aX+7;nE%,<,,_J/ؕ+AܹN2u˖6n\vɒ%ݸFpp___ ](G&{,"ܜN+O8 5{,*k#כ77պͩ_RΜ ̡ۗk%#J3Gz~d:*jH;L/[LXYYno7׵H}~Gޝ朢}|hRW%LjA@ CDA CDA CDA CDA C6X$D4ﺷFt`F m@8/捌] חbG C6_ \Gfg9C0 υQ(aWyˇ`RS쌌MۣF"Oo#:'<E$bϵ}j"y/JKQ}(a|p1=)#fmhkg'KHW,QQf(MC A?~rfȐaN8 Қz|ƆJOoPjϥ1{AǙdz9|hND* k  mmmuh{AaZԌ  tJ^ԆсYY(UCO|a#OS\ukѵ[N{+e˖-?BuUU#"#+B6@ xB&ٳ¢;wĜ={W^#Fh*g#yKXPPs@rrs/_|]oo ҃&a~0n-.]0A4 jċ`Ӌ/ֵ3f̄ vmffv… 645%_p3g&Ov.CuF*a g2ܹs[{$@(S.aС,9%C۶ogٛ6Ƒ;BiUPdUl ;vQ_sTA,~ nX,&ƪ[ÇǏtAAAԩSSRR\\\v$;JN4 tP$A0HImaV Zv-$Ξ;`+<< Q Fnj?wߑ]8Fݑv|DDH*BN^t))a')UD9 $W/w! $׋ IфE)ii7nT_t). :̇s>:tPrr̙3o޼)_JҹsBɓdn4@H0Wض윜[nÆ}힧OB{Ņn;vlV4pĉe˖ggg`ȑ#ϘA( &&J^G[lY_i~JHxI] BvΝh8ȇ(i\KUo>RFw$\ ={l۶ !Vy#^82rޖ-|绸)| *XUZTH .cI]vE CBnrhH^vlHF ߚ/rZ`+ᘿ0M4w͚4ٙ}.KPȄҥ Pif| R#B|WAVƮZzUyyyl+|O##܇ZҪGF٣ă_J]$9/:p`E eee` 'N3fЖᅦ34 V+vz*o͋/1ccWWlŋChRXYYOz;rƍ :.Y4^b9Eg͢j  RZNv+W0Yݻn W =}h"ic!IPpƌ+W^|Tl߾Ho""";vs_]j͛Lif^>1k֬^Vh$annn"Qi++}U0>~ʕ4JYԼ# gϞy{{>Ơutq YZ]`pȑ#G %A{ |PMCڵkv;Femm=k]B&LXRRl7(a5 {{}wtȽ;`";*Km_PPT?;Lw;o_~(azI ]{ .ee~^E m:=ncckWBqs K:~E C6 Ο;ػ-7#BŒ /_ڽ;lڠ!HA0\?\yYZ*҇#HhY[Yk m:dB&bt8ohh1JY&˘ҵ J z J z J z J z J z J z J z J z J z }F R/rHX- v(QQ"auAZ'    *DBc^5t:A0Bݱ; /z1v3,PZq^%%m^0073幺aw/J^laZ!&&&\GG''~F 1n<+,rrHHc/ Oٙ)gLsa^!|~٫Wwi;۷os,|z{0ͥW usе/-^>jgggdl`;DQ@@7+$ ugmcg`wVDR\RڏəD *wHm$bqYYJ$JI fna'CQtX zDbU#Q!B!b]VCpF^j J(`JA W-Z胏6mڤk_GB(L)(a ?y|{\/\lY39+C6T>>** m۶-<<\}~iڵdp^ K_˻RФ3%YmH,,-{Qͬ폛;83^{k+WΛ7\ᴄN`K0t2رc111tPu:tЄ[ 0W12ԯѣGk[\h;~x2̙3b6HW12Leff, 5 ^o&e\.٧b ದM+33l6(5|U[*:˔^|K`0w7Ͼ⨨'O| ~~~ŠĄBΞln*!H$EnWo5$Tj'LN2"%xC~M>`"aAvAb#oI搁C캫3`ZXdVyY+iٿ/HK[^l⊛ VA _|Ŧ5 Uz/͕f iVJ$ w+:9* @!8s=z_>!!'Re˖_lwɾbbbӕ+cir;ѣLNhXlgƎU;A$ۼyŋ@L~0P7nf"Ô/r_ffl-㹸^xK7F^ݻ{ǷٙFsT-b(a477%Y+~&x%1RI|,8Rrh^UVV͙37++M 'j|7;zAuŊdU|!ΝCkf jxxx_T#3Rv&I7o4eM6WpJIvQvܙT1uqq!WLjEֶtfƵrCCώ^LG'Hsb`{ (aDawr P.OΜxHpo-H4R/K?|t 2gѢE EwgGyZv̈́S*-;Uez7J>}JLa@3̌t_f+(my&&Deղ l@:zݒנrHNWO 5.ϗ %Jp :9J+,-}Ǜ MwȚ5',BrOH1 NA &: *CHCɥtEg<7dOQ9lW5%UаWg{/~Nsr'NH}}/UP1Z{h1cƀ/XZ_27GTI=zױT` ;Mg)@칪W *hS?p4-rpEYYMOEvȘ1C#éd*6PCS:$ɷT I:TiZ~ QTTDi#tiC=䬡BR2/Uߌm堄 aiiI ~Mt>bQZy,p *hk;D KU{ FYyxSm1p(;%i h2 %Ls]}A'=ӕCjCg0:tfdlʊÆcp}mlVyB,<Vx1BlC`Nuh/$eeYtx0 \,-dY[Y5Ͳ?wLb,oemI%Lt&(`Ɇ(-++k74w`{|(a2fGw2tEk% A=% A=% A=% A=% A=% A=% A=% A=F*a~Og.AD nf\)sמ'Oֵ? 7pXIENDB`PKs#L-Pictures/100000000000005900000020A5B7CFFD.pngPNG  IHDRY DCIDATx=hQA*Co::hP(BwC]J.R.`[Nb]D EMBlkl$ w}1öGdq.p`d4u;炂sA`۾-X 1Ni٬&NW,e26 Ǵpa2RXtH{{Fj5ϏVjBt@M"8]TOWL kDWJ[>'IYGc Ẩjd=ThZn\.#t\ H(. "QRDfO??eY.Mt;i#]#9(_T߿j/WɳB wA/-+ ZmƅFAn%ďa7ir;#b$q6m2l4wuf '_.PP ,\.ʐGiWnGqYm0 9g姕퇹 / @XZspt:mXV_d5 ] 炂sA\v?.  ö]cox=IENDB`PKs#L^6CC-Pictures/10000000000002920000013EEE449CC4.pngPNG  IHDR>g9CIDATx|uMHtDG#"Å{>p EEET|QTLeC)нgڦ!3m&~w׻|ww ".y^mtwtƶӨF~tֶ1o;Q NӚfx۶:] l#)3̐6el3^8@&4&ʮyl3gef{2v|vLf_oz s_Q-y:$%Æy3RrFFeQFe/)SEcFz61y+mLW`0feLٗ.m&lT(2(5e[Sj- )(g/=L&s^lb-/v]cC %/mؤtXzH:3(2({}l3)F VJe٢s(̦.$g36CΎMN¨,6M~A jQ+cp%ڄh;a!A]{ks;4EQw{ H,~JP˫j}}d~mv DmFvF`ų&w$g&\|H=j]_k?^|z zd4${yl}p&!>G" tcUMCÌB]c'}ܒpno^{46뫓+jBhAT-et~"[;2qZg2 3H@QAY9…iA~1o9vd*nܶsaC.,-w1fH]kog=涻ܱOl~QU7׋RU4X 9p9sAaB:,* v_Po׮U/$}SΖ//nr_d3ʎ@[VbgeCF2hk4 ťelmfL&yUb˹(K̿4?_2ҒnpuiX-/ai,e6FK")V?yMYm۫RlSfdzwOw$+|ZX,bYR]uYEakvUt",~ud`+[Ą#zUc h`%UDRu|HW71Ys!fڇV*lT*3*'nm7g?{|h'F.Cl 1QDB"X>";IgN װPZ8GNC+k ʂ-X"뗚dɮ=)eaC&888!.v%%e!AM5d WktZvRE+KM]vEYCv;邒FeP K}A#ЎXhܳT"` k.4OB;*4;&,"i4Cxpd^@L7(S`Kf1>6GܬgeʤZP:?#l6sP,_<8Ko[S"𰐐:ݜStcƆ\=$qȈwsşa x7톷y{;` <ӹcN䢍e1mƳĶ?\fzm]jݍ2-iQxħ`lij(;2eUcLJb?ٽC\lCej&!܇bMG: lwzw5rHzd`͞ZF;|,==ݗڗ%3,)ܰ# LN Y/,RQePWQ_xA3Rw=`{2p%3R /L7Z=r`W}Nzj6N^sQG>'Rn= 38so4־6^UT]~) ɳ 6ʷWHUuW\D1sb@vhуMnxQrBCN|Z*뚳*|:̢UR7jtu|+K.JZfO~u]"?&:r :,hQk݄&+0 `#ZF Lضrw yzn0e*g荖gEmȝхV-1]Ql-6Ϧf/Li {WZ{oIcNMfD׺UZd;&LЌ2.Z FοowjP6x-KTm0pq\;pm Jɉq4~M]o;XG]US9C}7>bcY=C bՔ\9j@e>])|et$2e'+jijVyȨoRAQvnvRIFَ%ɣZ=5zbBr_ _*DJh/+I!>+e)m:زb{t= ݲa)O2 2.Ɋ=8aޒ6WQJL.mmWezw„e?RjT),Ϡg[3\h馿,gDeMq!*WM&\]rl\neNFUѴT`uv;;V*%mNGl?eo,g}?8;,2>]i61MvPY;E$MA/0m.Xgmw/(41at?5E~3 Zg(Δw~Hٓ䑡~;,vϠ+#itJ233hcnllO6au֞bTgh:PK1 ʘ/–\{_fhN*i}mޓ1QCo"QEG: wl?zk끢 %kj|h\֜2GU>]Zմި ZW*rPc{Ŷ~Z4+w\'nY#wӐAt[T[ՠ9ˈ8>,4D$4:P@Fy+YODtMcrGƹ[\فW~X܍/lϺgP655Q*ӧszggӦ9=S3vl7qO"aTdZZ\tuc*k]ypxL"V(:s蕚Zh[k:iެWY¸fqޤe /eĆ># -W*3#}OrmdQ=r?2juM퐾w>|S׍+07gmukW<9/J\˥[9z絹,yBaVBz|&^,W\kN93J&17Qc[_EnkkyֶNoKC}ݶt Gs jVsT-5ԧrH[QlӂHٽDfVgp6bT7TIvբfu6NXcm fO3̳F\̦ oOf\} ӟbOέ@Pz:WpޥmQ5U57(:p86P޹ >i˱ݬ?ⶫ|%Ro\HHoّ,}'E?-.d4TU׌̎y%uNUһbߣ.dΨikmWQYI{M͖8EȬ.Wlz)kfc5,*jj ?SV#MHZd=FgW9ھ}U&46f(Xj=5lf3l~6-iJo^Sr:> %'s[w><ѵ,N7yUzk5viWKtL d/3x8Rܤd&-c9w^J'[7:=̒3C(dJY+es쀩/nz߃7йY"弴^ `ީc|yE;NE{J\ Qw}݀LJ/Uy*"g$8_տ=U,Hj2)1 EJ'/ \Eygc{cMO<]m?_zӷUF yt:^sNV|јI`1Eӣ0{.h<[ɹUmkR cügW6U0]`26mjWm p[_]zy@ AS7p<@ 1MKd8^5&㍳V}ZJ|^b| I%&==ʲ[՟-&uXhH"`*eֹkdbQb`jR|3ߊDBk2'?<4v a$64k}|doک {Ty+?Ҏ4Q Z?u}5@QAE㣙e%iuJZY*_/Vk4Mo} - \q䓥wGs:%1&MomQk&0JKVh/'a!A6WQ>IK߰h\u"Q~).݇Tb>oC ]ߤFb\uKknw [wrkӳhgkqVUngdm<~j歛|)7Rj5:r2pцh<ANrb2~KSCC#^]M*FId~-zar\{o/+a0͆vȀ~)l9$/8Џ)vc2Ӓ]"OԖ{GH ihm_~b\F+Ӓԓ@ 3$gG()|}bCtzG\רP9Z~gֆD,j*=-<,tWƅ}BOvԤXvdvl9ߗ)"\0.*nG&ӑ?nhtrӡ!|A?>=zWcK.{rvkqZ[;tm귫7PR`3m/l6C m?ढ़io}xSU4*hl旫7-̍f)b0Mu ƣgc";PԄbI\k2A I >,H$RTfJIIǏwbbbJKKg̘f;w?;v.X 553\$D2{츸8*w+VxWxGydРA999K,YhTN߽Kogy# $_+sN*+ʁRkjjnݚtE9}WP *Ѹf͚ʔġunz2 Xzb۳Altl~bbbƌj &d!:27LӧOgaaa4^3i;~ IK.h43f`3xS*+#GDGG;}׳K܂_5 輪 .?oGFFVVV>S4dݺuN%˖-۹sgcc/,J?c-\;OOO_dImmmhhHd}Zy?tck!zKG/|?Hd~ G56/9,ojW:ӪFu,] \(0o%'GBlbzwXS|LTyaB"\{R5:)Ço 敫nkȸkf>}q&iJp/1Vo?ȼ4y:+qn m^oyhxM5S&DҐ$ߢbFcb;'N}-%@nZJkFϯ/}{*%ť#G?QRh4_| ,Od|# *F=sux@}We;#N(eƹ?RYg1Ϭw]bӎuWSfˈ ŋ>ʷ lc[ҸnOˎ~h שOq"8N,bBl<*2Zz>Rt4=&U. 3xIRS>R N2p񝗤 ]>oo_z4oĶ?=%2)yIoƏOǼxFP->>kSIh>\z{l-]bۗ%1P|ӠR7DŽF;'U+/7=YQ_'?rxajnkq Cm{NãnA@z2P LHHi'W6tHϭt_=-y]zxp 3Q/:uGu5=ن 6g 8 m@lpb3 6g 8 qڬs/S`r! r/3Њ7_bR52'¦ci6W1U*Q@00vIill+b';P_ch$1<>^FwBa7 =>[i|A MzKHi]YM)"Z[2ރRܟ>Fei73z:H_/M(Û4jvHe|ُh^/1 &g兄rPՖI3uiO^B[W~u? 饡^I{k f) 3v/dƿgI==Sx~nWi O;f6<60yB!_tO& UгXN(-Cç>Z#6vTvB}ϫln}y= 6'-;oUC|3]3^L]pI\@Î7S[|g2gUkK iGe}2Z~Ev|ա=fY>`XO/8aKK([4n/R>gv9:p}||͍{F=S i43ZƵAx< U}|ݤSS&1il[wTB ]z%ҳ@'W1m9e?zn`IT0}Mj+7o,B6067}T' 5F>`( fϟw0n#'Q_,y J ~Yox>)<ӫ4ٞM52᷺=Bl{d8> +`Efԁ;_.{7<u;KQ%_oͮFn)<:C!>qiK]=`6nĵ4vopФSnu Ydu!_d-n_ErĜW塭>O,e^bĘILzzKZ}+F6=Mz-4{6R=lu})O2y9\/NGhFOvX}g2& ,faCFUÙ3i+?@OAlwlTXGwSHz ccK8(VIhtƫ?B8H <]lՅl4O2].W(){=p@l$8b❞nE/<K ГFbk0!8 m@lpb3 6g 8 m@lpv߹g^S%̚|h@WxyldAuYbRn{ݷor[B`k C}[ Vq6.WF-%͇?0ŧOe\p |ظW7䚋qhb f~AHT~7o۴?pdڤѱRY|8u-IĖAkSf㞼6*r~w!@EEo~qhyF|'c]o%AUwŤQ4vy.^Τ&̹y~]6vo4^7͇)^{޷)z7 *k+ =zz) HsSLW-x^fɨtnWbSHwYclVoI˫NM}oZY#ӭc;`h.xylx6g 8 m@lpb3 6g 8 (hǞso7=I}Ow|q/?Vӏ$:˽u+aH"n;{ /Df/|ہC]4.Z 8`} maX smhlr:\_S#~hw}w!':zRӒ{:{Wa?Uuދc&|iaLvrP UYe6UqyVzÐ>3Q1ݞ}\.tܕ߭OyYf8v>) k]eMI{NECbʅW띙 ϾI]2ŵ?n 8q羬5(]IDX')bfsgߦ~Z6zbҔsĤ\28 }c#i)B/;,׿]lsl|DzbR⛈7S!솫{N[Z3qA_tAYdw;xĤU/3_06~LKip7=$ח|v ʦz7O-t+Mԁ|ülܵO%y,`Egn\ UṅhalF?"@!/ Vq??Dp`԰uwƗ>~Sch+&:x%vtzztGnȰ[B円FCRʷ$/cw4[O7 ,3i4t+z6gV'!; ;VK|&@{u_[!8 m@lpb3 6g 8 m@lp7EK=F{8d U]dTi+Bu:CC4Z*8Ne4<3S|)kMmy4T]=M1)H]K)28>O˿۷V_/nR3d1-G& ]/ ?}+uT-gVfwI`w.!z۝pTuҕ'm 2m%3c$^. *u5s&QG)v2l<ׄkcݟ9xƞY%zul+ "P"3/|\qe2B67c@1Sj]!LM_)I"Wձ=,`w4tD"'NȅhCP2B'nڤ٦ܳ"}uWkʢEnzr nԫcbOrw(~[hfgO}T74@Sbde J}j3cQX^:˴:9hhPB<̂wUڗ ͌{z`&T4&~ȔҘ}|%6d/[bQ8Cիc"`Q񖼛QיO}E4*OXvUG44̆23?N{O$$䫋XE=5ѡI2ylt9J0Ck7)ף%DY\ݥr_+drl2]ө{bP/qx(fSbq8] t#b}!z 6g 8 m@lpb3 6g 8 m ԩS=P 8 n݆ qJjٷڃjΜe=0;y%K\it;_ z`v]@yK+8 m~Ut+/ҥ?ӭFX@rb!8 m ݳ,, a u S<.Ao3]- Ffړ^|Lf6N! [@2m/VZZV*^狎}dg_Jqq*V`?y籉/ >|ڮ]lߚ5_hԨǷm; oa裟<.qAA~WMJjhhQ^w,6+0<<('c]dx [/y-$W Jv-W𴴸1c啸}=H.]ZTH}mqbc'2瞛9[@͟?^%Kt6+011IMv?pƈz]AM7=wX!}v…F~ʟ|Cqk|eevt v(I ӎcY\'44=$r\@&&NG{aʁ<Ͽ瞱>VO`067Sš2sfEN.̦9W Qzu]T3&B߾ EM{LtRPPɆv䵺c6M>=Z3yUc ;oذ-r'P?'G̦t)# q3u-<Yt|}o0U11a|>^sLL8 t3;qz",/c[,3i)m*ʷ~5{Sf:=zws(/o;umWmvӟ7GEҧ?=(7Jֻ _o\DG3|n%H^^IUUc+)r ^xĉ7lx]Nljja'j0ZZnoq\Ȑݻ9SN5H8e][_~XAff҂hst3;_у[_t;/;;(KJ,_++<e\ϟ>]}m1cջS>渀11(S sN.>>ۏaD/oLwp/)!fEE]s# s 8vqq P#rCo~$5j~yz[`q  l oO{&_FFi+3̜>  m@lpb3 6g 8 m ?>|y9eC3g٦Mo9+u綾fϘ1eɼkEsg[  pA5`}<6} W_z&fϞ?ysOh;b{e<ͼEO9se?1~>c wClxAFDZ@{=vmZf>Ͼrdl\& Vm Z}}SXX Rkt5}Fi聿GZ= pA۸q[~^o+פj5b 6Ф $Gy3$k@exoT12~ m pNU$F 4D$[BLd2L&6i(ED 4F(pj*T%EYئ  :zLP(I$|G/kA>E[E7C{ݻw|>_  BH$H$T*d2LM;GQnFYGE=fIP( E[[B`QsE*?hT]lٲpBLh:`,ߖ-[jggvVܹnF}6im|~hsSӂ `d޺P ---|>WE"X,H$@)D"~Vr_o#HyyyBawԨQ h~*˱Ǐ1b\.,{~999ӧOm8..lb}iI ڷw_ά sLtQ,D322T\. vL`D* T*l9QsBm|Wnnniii/_y}לI<=fs[YZ]..]FA֦hn uHPV8 d5FC0?=(-}i#Np\%5F8q̙_ 2D.: 333pjWWe}p"!Zѐ '-^h‹.555rÁ{?-ʪ舘3°аQQbX,GEE?ۆ`8;_~C%*nvKX? vLhzOKK _T*l-2Tӻp¶T9svl=ի*^rܹǏ=Jՙ8qq^^RRLGM8h_;),*z]Z<ۙF،KJN^cb2d= ?Ŀm>Ϫ ;w;~v>BCMeZWWdl:8';G%z]k++===;X*gq`(R)lak D:::Pjr#'NHtI uӧN"#\JK::ƚZH$X K(,,H3ݻw~*Ff;%?vf\A/+Kŋ<|+ڝK_}婔p Rt=o7nܠI*F|>Cxz).Ѵ4'''S\.HtL<;8 NJ_JR=[lTyo6_8nРAz~J7Ɂ@Tcƌ!wޝ~RG.߾}0qAk <<<bJ4=WX/c)+te>>>><`ii 46>TNY rӦWȯ^v̙!Cdݻx?>;'J&ٻg^$Lyw/;w~戉l'N]¯429n{QϝN@@hL]Uj5_j9}UI(4@FԈ@ 5"N˗/8q)S{Doo߮ꏎ(Ç=<<<<<=zԮೲ<<<Ə?gΜǏ$ɮ]\\\ƏyvEHt:aqOOO6=dڵk֬YϿuʼyyyk׮/,YAoۉC(.\+66D"/M6888DEEy{{9sSآb___333KK9Çk֬2dEl߾^d{GG7&&2,((ٳFvڝ;w; :Joݺڵk^^^}E؝5Q__0,,dPO>=qDiiiPPB'OX,\^ZZ%dz۶m+**Zv  cmcqqqMMͺu댍8dɓ'O,mRibbbppɓ9ӧ{,XYY;˗Ww-..vwwp6(/L 6[ggO4bv9~ChGGQF8::Z[[CE%%%M01)) n_YYYQQ?X"((hذa B(`==)SL4 3m!CtzttE,,,3QTTTWW7w\lK&;N =z411< O?&+++ѣ]=z/ 22ѣ/_d{|Fѩ̻upuV cnnn~%㕗9]*E}eeePrͣFXZZ*?;w&HH$fɓTnBBݻTٳ_]]b̶LLLܹP[~ իW]]]_nnnұ캺MMM=xϞ=͛+Wb]]v͛7O~f{ G2ɓ'{o.ׯ_/SPP=z<_IIIIOO///gq&Oٳãecc#psssss'OkccsFdXVhuSfffܸqp"''ݻwSW=RիW7TD"٣\U ~~~7o޼}6$S8RP 0|p^*s٭]^NO6mÆ oM`'[rFFF---CR(bX%%%qK6>H$JSLy!tM(zuklld2 ay<މ'TzhXgoggWXXedd1Ƃ gÆ ӦMR$~-Lvqqfr<-- ;d2ن \DZv@UޏH$z5և̄7*jgg'[ZZ._7T_,|!L&ݹsӳ'FT8xપ*##CBBBd̙3MMMΝ;ׯ_?|ٳg3LVSSrYfaO9ٳ{, B---:r]]]WXѱ ѵw_mcgg'JghΟ?FfD|~5.[ meeYWV;wnCC_|ӳ|>|8aCg̘Sg.kQe6l'M"'*sk׮9s&/d@ U. R#Q$D{`)S`wYMLLN>]\\ ؁h066pBii)Tq N2e Z&?ʎ=J&L`ccrVcjj͛Y,ӧOy<~Q"`ٹx5⩯r"IIIPԩSfff˖-Ö v8򖖖'O0֙3g.X~m62ځ8 DCCú;v`_){=u>566>{N:UQqttWBB4"#ʫR>ޞJZZZ^vӳd*t`RihheggPc쬧Go޼x .u&r8rHxxX,K,1%D^,_|ժU---?"Rzdƕ+W_^YY`ccc޽{ǎR<===ÇMIIꫯAT?~o5*%%vAB7dfffz{{{{{c[LB" tg}A: Ù>} ƌ׊+Ə?yd___2Dn#d/bx>>>o޼o),YĉIIIwU9r$^NӧWGG'&&ŋ'<<|ԩ]@mX,|G}tAٳKKK--_~*r޽{666 Cd7onhh8t萲cRJJJh:!ׇ{]%(ԭH4Kyy9˅c *_`.xzzzO<[^|Yy*ͼcƌ9y\.'HQQQ1133d:u{RRRX,Cs\(}}} 333LYUUl)TTT#zD"6ŋ,tt="ɎW\7k׮w_D !JΆ޽{Њ#ʰznn.~㪪*r}h&oCC0+((ϟ3gNO))) [[n͚5$۷C=z^ix"`dv#ONNvttҡH(.X`hZhg& :hƍG"n۶h/X,+***:: pJzD@---fn/_Wg޹sG L6MM޸P(Tm6 .A/ƷMBaUU0`w!ɪD"&^As9x&JAOʽ(D(+**h4B$D^ODUȨfDykjjb_o"_.x@RLQ/4p >(E9Bmmm+F 2.L^eĞSEh(]+k(BR#Ԉ@ gq:@M8jSE HR#@jD ~yM>ys8pyΝ~իWNNNAAA*_ʊ+--|5zhM–J ܹ333۷FFFK.8jj---|ƍ5Iysq5Щ RWW6mqpp>s ^vΝ;ǎ[VV-81bիW-[6`e˖u+,,ROGDZ__uVcck׮yyyegg÷y>|X&ocC&cT*f]4qd# \.RJRQQA">>?@݃B|>Ĥǥ3כљL zKJ6_=LV9Ө2]*y,DevvY?BvZZZd!@jD HĿճ8)2Dї/FTR#Ԉ@ >C;ތۿII)ycǎX,6>|?3~N9}eee}we2l6fб2p7|gi~RWE؝>|~wvZfvvvWY»w?UVa \.xÆ #Fa5666:uJWWdddDEEEDDL:n׮]V:r䈂ۋ/ƌ}*"<}ĉAAA$ c?2~}d2Yhh#G4\e?rҤI ݛ`_}Q }UUɪ`6m5jTeee'_5O0:%%Q"s8xgg+W<Æ SvNt(dIIIqqqFFFFFFIII7o&Hر3ftLLru"N>q)GӧLdث[yyfە+W ?rSSS6ob>}fϞm`0lvnnO:lffl2l_B١[kii+))Օ]el۶L&׋D}ϧ.ZHy]Qzz#V  22ں;vܾ}q}9N kmm1c[T*ڵkL&S666W쬧Go޼x .PD&dX,</;;[{H1bď?ްmo;9s.F믏;_W__޽cǎa)XvttTX8yb;bnw199pd2T*Lfff&Sp:dmҮ{Ècܸq_v9##cȑxw?g {@ Hd2Ykk+\ 3f `ѢEׯ_I5˗/G;ógJJJ,--~HW.߻whl/Sww(O|2TjqqqMM'O'\xqt:sׯB] Y1~ {Z>uvv__?ŋp͛?@vۘ18֭[׭[fnbbۡC=zTOo  0 V[[fW^DEV;wnCC\&'';::*8;gddtGjl/j궗D؝B???AR.\†^Cq@eV^xbT:`w] ª*5`d*Hdbbk!DEr9stGm#z@jD HDAƻv***P(Ç_ns?+]]]'' \BVVV\\\iiccc---6NNN=R ;w|ҥK-Z>],\~_~k֬QX'PstDe>|p۶m.Y(\o%޽{srrׯ_?uTUNN͛7_xfW\eU#K":t(//, (@/#G 4(22:('lܸtZj .򊍍%HH$_oڴ)&&&**̙3kܹsرeeepULX*v3Çk֬2d|(=66(%%LZWstDe>|X&MAeimmߺuk׼?#@aa!t+..gP% CCC 333.]4tPD~h P4w^.wN/b[.K$-[xxx?mڴToyBBB,I$L֭[ /)5/_ Q.J?nlllllpN>/PL&|\p/pk\xX,Ν;gSN@5B͛7+um*!b2[lx{{?ÇP2 sP釶kΜ90h ,]!o~~~ii)_mKm52NGGG/Z;EEEuuusŶd2NNNYYYx5677?zd gggecDwww"'=z_PNhjj=:99YMGr_[n 'H[nhRxx<^yy9\m.M\.f/?|΢:sLl{7nqnBBݻTٳ_]]b@&&&p15۷oqqq۷oׯD~~~uuu7n*={699͛7+W[)C'uuuUyt*eaaq.96\ap vaD &JCCC0{e///RG bxɒ% y8{zNu)))Ϟ=/**+Y,ϗH$-Y,VFF[DD\zj[[[;;$))ں&00033ƍǏW8a0Wjh_]uH$Ҟ={zäB*xdd%>^3} &3&-- KXb'O y.\bL&tNBӧMaÆ`CryNNĉ-d㗐(8)9sח(}С Ȓ?@5GGѮ:.x'NhkkW%6op!M<  >L/_X,Hf͚ƚL8$Hrssŧd2ٞ={x<ŋ ,-----dKjj*kZZ~ ?~D"6yX[[-DT*f8qRRŘ 5GGTfG4s,BLa.{cB%"##n"ɎW\q5ͻUVv5jRiLLL``: !3g455333;wfwg#ۇpqqaX=xBr]]]4Q:`{ޘ`0NM] QcVTT?ٓGGG'v:V^mCGVee%4q?~fxvmܸ100H$CCCWM<饦GfTSSl# \.244T r7PYYMLLF7oKWqU_f\F^.^=*++I$ GD+R=H[nfa_vB5T --^n# 5"HPРy8jSE HR#@jD m5;zhlɓ'qqqqqqd2ǎ+))aXl6_:Aux\p;ێ9UTTٳt:}֬Yd2YMzaa޽{| chX*FF>~Ν;K.>}:L駟߿п777ܻw׶x12{Ffffj<>LȈ:uj]]ݮ]VZuxyaw{5j~aaaXX j:\aÆÇ;w&00dGhX*FFÇxСCeeep#F9AOOӧ۷o4hKxd2M왞˗/_|WΛ7O"C#F}V f*rԩKFDDzJ[ߡ۷^xbYY=LEQQQv⒘XZZPx[ZZ0gO?k<ի\.sMHH ugv,6o޼qF--T777T[[d2V+dW};#` ;\|UVp8S@>bĈkJMݪRY"BZZZd2Nyȕ+W_^YY`ccc :c̜ԩS)Jvvvuuu~~>`2@`Lfff;wPRSSo޼yD9"X|r7o|wj;BYk{QՒ%KN8t]w۱xzm$sMMM?'Nhbb6ZZZ 6!ݻjccok1 ~ߡn@__ήtι&J/x((yuJemt&&& S^^|>w-jAu6u{{{755988{"(00PKKF԰lOOO;w|~֙?3\x+ j_>yBb 0hZwP/Z cC0gΜb]>X\QQAһ[]RUYYd2kkk;moJR.5"NvvCoD.U 2ܛ_B FԈ@JT?h:ӗ/:6"@ FԈ@ 5"F@t9d(Ԉ@t1)hOs3F+IjH"5"]1#zED;%$@ ګFRJT5;H$ AKKKsssSSS{߽{BH$H$4l0PM6Q,){ ͮ~2L.dF$ED_$&H&TZG}( !ܟD"!L}Sd2JJRTh{j/(*_4^H:P(::::::T*zoVBHRT*ǁN_/EH$m?Fm#^X"4'HO B5=UhGѠ7l''z1p܈ auXCK|8h%:O>I h47k4վq64 8%pP&}mgج l>$* Ո UNDP(T*lM D€NG) ErA#BBal*$oN`#&H0b3:9UaLc0BʆѧԨ IDATxw|Um!=$B- BD@]EײQإ*bW @",^nrII~>W̙s973g(T=ʶ !~ܠVf \nOEJ>bWkQvi1]-]*]eԻ]EjK]eSmP oZM˽i.O_WtZ?eQ)BWLW1է-aKR{ս$O]j]*8y^~5] ԥ #FuEyn*\D? \t)N+?(+=H`Fyj-ݎ21=NCmNfe")AGXŎjQ)9'~^7U]qɷq IlDŽb8\nܚ(&+ޘN݅Kd兏̈́;( f~ \9d9 t r򱻋QPU6o/|L%oTUНvr ,62ppي k-̕kg _Gm`k_ 때ApLt4S1kBؕ`-H4L. e|ޫaY؇4b3~X '.o\+H_'-ѱuFr9j0n8wO\@p䙈0Q; +-}WP[|Q-67̘>޴ JH+Gn{I,>gtǒHL|OT-> bXx ЂfXYn[)7յ:N'jL}9][a_ϫ󗰹x9m<ើȮugSҀ]M]a<0}ymkf@/q鴺6 rMP4M1=?((&};ctT3sO콊zKqV&Å=F'ݽBKծ$ Γ誁ieֆt!L@8ONa,Zv5K]D3fK$mSו%ԁ|t'3?ѽT5>5\4cD̀iXlގw?:moqbvxU^|K7&=pL@)N8 _kVI| :6EA-H:9V)_;ͮiUWjP+ @kY`92aI = |ptڋYiɼo|I2IIܙ'KUt'`aϴll~L޿/w^uݽ\ύe2ݝPJcSQ7\8dz_ݍ3/  ظp2sʦ即?"$zꃼ˅یЋLJ~[2+l#OµבBvxS.iP3QQ UC;܂H!ޘ$S](6dy~}ь_3|{oޅreT~Mrnpq{aZkY`uJ4By0-~SiF1;eF7 Kz[`: tMF SH+,ኽ?,XU0tDZ8vL̦r+Se#=-OWnV9K%BLY *8Ŏ]D &]A2O~a㉡ ֧w7wJ֧0,e޴4 ˛lOpT4Q!˳xF'jVjc= ËjQ@={;ivg;H2=9NdNauv'U7׉<:2LU IP4Y* V b6GZ+u x`PO|`(>i%tK7v `Ibd(Tng5Bi(p+Ees'l\yi4^ƒj~E}-$୛i٧? #<+yor&7ٙa`} ߼1{g'Zл[36uQxX굿pQ*k\5љߟx*'m pr:f&Z&twQ^s-( l.'ٛ9&1QkPo<̌ xs0Ø,َC>)#E:”)|CZj$TA=C)t$ofm䭕W2sh(FO%}~s*|1>ryZ WR0tkd?|+a.AwTFpx^hA`(Zp)mĖz+]ž农kz:Ym pҤ0Y(hy'2bh◖u-8tJ yeVPLvL{grq):Tvz\ʏJ6^|' Vo, kJ( &SMeƒլ߾=;a;QUf}iKֳd:wOزc(&Ůh.Qm6TW{ش#E]նRn [AUs9t<5 83O,jmdQp`Wڴ&u*Y6y5 w^)yca௸ٟtYC0ȢZ\+ڟX SUE)U Zqizq*^x l5aQ in w5ba5ƩSu[ # i<b28_:]q+ f٤,o5pRW*R[6@UorͫZћ*JbUFr%xPE\?WS{Ծ5+0*Ba@5 d` Gw/l!Ǥ`hJtii5#q:${$#Bq.NډS|QjL 択4#( |կH`*ݞFDueEB ^XX0g5J e>,B\L ÉLB:`*BԑS!jZ*o#L~6aT@!gjƽW}G!hz<捺Om$Ǩ*=/]OHBBh޶7nK' GVDOkݷ=CÈN_\>x: !h <j뱼ud..OŕL'_+>18^c{Zl^ăoT^^:;tʭj/ʳGr4L}Ks&\7u凝Bp+ n (f̠t @\h0pLȻԑ*>̓% !hpZw K8@Ѩ.{gљa@ `Z{Eu%k->uK!|j7!YYU[J#BԕS!$62&UEK֗!^!haR= LUU.B\NL'&2]yk-ol0$%ڀa@DxߊBv|;Y1L%]Z_ʡYh|#BqT@kO.n߂`ژ(kgU+B:.ӣ@ L%Á9BFA>B!DI0B!HBQGLB: HrytBOUU 6ͣL<sDT!8TU%<<))t]jƖB 108ޗou?0A^D>K+繎Sѧ}4!at|?om)R5Աeae7n~}[-/gPBChn0ow_NMm #$4kna$M;(}`[jOrC'R,i_<;98:E2Jz#,0I @Ax[NBq~Ֆ[}'/^|ʰB>{$WY0e_ϞT6c/pۄ S|<(~2[bF0xvWL|S8AXٸ+v|BILvYl_G'SŪWp忒ܛh-Nrۼ9:3*~1ζyW2|n.&dm`:@f k(/<,\gͦm !hjt+'m,믩31cAR}Q1ݢSӼI.2!@.|}{У8#c53WƤd,+,_`^r h׏Wtŋ 5*Gn]܏a;2I Eb^Fjf> kxeb6`Pv_ҟg~%WЬ.cPxя>v2Q@kզB!]4!MG8ݬSdI6a|'Y<;[q߾ 03g'LJ*S(YQèCUZƩ%!MM{F+  ;+ |vѲm[iPU?S7߿WZ$Xi>_J 9,linL@\{5m[# 42)bܬ=^1x夒v$W'Y/i͂-r_ڒd/^zoJF+K<˙ro"8)J6 9؎ߺzBSB+p @T$ˊ I8=Ǘ}ɲGƿ'qKw,i쩗x!_=p/X:ߘg0|12Fa05ݳ#na{yON5qӘ7&1 x't)ZrDFBtAYYUY&6BHH0B!Yځ)O2QG>U!hhn U)=FDUU#"8|PCE!.x{v&"2]yu bGf;؁[zBqιnv>xbٻRΟajS.b2Ҏ{H!٣*\9b$۷'//c$6& Fbb:$%{|h"wzvr=+0sٿ6heew4dff_qգsܳyMgO+HluӍCVgB [4wns18bD5Gdgp'^c S@G_P˳"κ8BBQzhff3>N59 =S;] 4 3Fk`xjggp'y;94*aoW%<@7pͼ~EPh|qǫ׮z6;nXGy.xe`'x:3m6-_[C!W2n/(YUU 08]SC ǻ#͋[:|r[??Y˜tV>qw Si 0㨆r2=?FO#({qXP u9.'ᕉI؀A}ۑIc\A`jf<qIɔ_n90yW%;k?{k"ULCRk;ϼ͊AE?XG/ks!y+4$$Pڳmx 1t7>AdN%Y=^An6s]ݧ3rxg [FL]1ј-yyQ<5q5SNÛ`zg,[?vtHυ^yG7?G0ėI MuFk@ \b6L\0Z gA(8WOQktGpfBq!q]8 IN@:amxи0t7OP r<(/|_i1 g:p8,, >aYݟD7Н85 ?|\¼4gu>T=O@*o5t@-ߣ_`-ȿi6A{'Ri6cU7V85yf/'xzS HaD$}t͓޶*Qɠzae8{dz˟«O Kb)s͔QPJFahݺF:LhcMgݪp^Vֶ;VFw%OQ>Fg~x %өŴ *K̭v'BQ Pa)?j(*JPxa E5Y 0 ]CQqbJkK>ohٶ-m_7? MG7[rMAV| 9*+[M@:S2DpK~9SM=Qߙ3[^ Ȕq |znbtrRk;<^"$({KߞdmIJ/7EAK%Хl !JUL~WVvyyCC±;sz9 Мm7{.)h">{ulֆ:w븞IzY<>Gؓс[nA3sptՇ|G+!} GyWs6[.;'WsMR R:z,>$=3Vmy0 2/r?̔'2* +K.B'3lO<#^ƈ፧S0g++81! Ƽ7a#=\0/!j{cc󶑑AttKl!8?wQ4G6jLh+0p*}W0 ̜Ӹ)ڄa}*V?´b}"HIF@s4θOzɯdOxsѴY08=ӊOcDr YۮGS#P>X1`А:48[rY&L|-8BcdgeUt88egknٷo/ǎb/&zǭ^U`9{ QQU>DL\\CGqس{75vL kU~ 2[,·߬"$4։m0#BԎf]|\9b$.gKQ39S7"6NHK;^7I!DDDr刑oߞj`25gEy4<LtM#1 =*r: ɴ4"72݅ɓ4k|.`9XBPU:azzRbC78q26бS',֚)#T!.p&8 ]-uA_bRUf͚ѱS'""# B!X,'&*n낟(*ţ@ LB1L6t1$"BԑS!$ !u$T!#$ivlEAUUL4iBTrz(۷FFFFCGUU }UQ7L!Á庠oOUU 64z6m_ŷ[ŁXf5a*A>z"c߾}a='NI@<5UUU%((dڴmi5oh:lU#6mQ?HTTGZO$6"N}fj JTT,v/<޻o3Gy2y͙::a1\4y~5})3x5NEa%'S2s Ə7ǏgL:id|/~*>Ϊ /^Lrr2/n袈"5S-72SkwWYoa'›h؆- W!hX6%R`?v<({_~gxxy.]9>]= ]ZѢuw߫lͩ&הczk[V햿l50c:uY+}\܁:i nh/^̽KΝ{%6 7kiŭ|ƛ`mBTιg OL UAw9q\850fpϘv[ 4.k*`\ >Sa\k Mc]~#߾څҾ?m}jڏi˷q>6y'} o֬?Q*OlbI M_P *:r8z>Ě{u&scU uF?=->?YQ`^?Y슽WW|O^#Wg)la˖_y}@@q^Ig,[aCNxyyӵk2ۻvWLYYI%0yW%5ήq\;2I ?NLtyտ~j9FG~mǢ4Fjf,:HʼO>9&[t*_x=Iޥ֪tgr褆Rs|jZJ\0l8x 7-e9)W2p'tD&)}Ab/_qn57K?Gգt.Qs!)Csr93V2yNZ=pE6\ԛٓdB0_7ƕF7;"vZ4\A]dnxӏKwEߥ5^=}1Uĝ[tsNWvߑ1LW)}} F]/T/Z G 0cMo<)+:8g`vt>Fq0  E+>(W^>aƂ7)ʗn3lpϟO.V&NȊPo5ӂ߳a@d:uvA| ܓYBS߆5;mU+aJ%klۖůDZ;2DΑ4 j[tɁt bNJ-+'MN T)4!^ؼvZ,6s^w);LadEw>`7_WD[EK/.?gټ61cȑ#ܼy3#Gd̘aw16~Oɔ /!)bNj^$eov-IIfX:hd˿t=~}[f!-#QlTaJP?} #,M-Z ;bh'#1iV:(t}7/jByZD3,%zd>{Wgyn3{x/q-Vo8n~-=~1~5\E:=`_h݂аǏɓt \Nhq3țg}mtdmoO^?OKWYZЫ/,‹(<7\M]*?]!TVoÀAӮ];vɼy76uǀ)x: sf1Yy^hX80x36nބ7t=hsϻq?O:12. V&.y9b:.a1)\>h՗}ɲGƿ'qK`ˆjb>-޽h'{W,@Xy܌gBK9)M䎜`:]8s=yUfBb~e MHH(ǏrA_;=`Zip*ZrxǤ^(6YsC*DwŒ/f30o8)! ۮGSs%EAJtc$۪Vx!5Q-p]2˴Q"I0Bd2[BB\䢜BQGLB:`*BԑS!dFkmEAUULZBTrz(۷FFFFCGUU }aȢ Ei#t8p\rsWbXlU4#Gشi# .ۄ\.5 *A>z"c߾}a='NI@7=ܯu&l{I^ސA9F|/|0t Cg˖- 6)S&~)S&3lذ^(Jz򪟗m{Z+GߘqYz?|=`uP|y>y2y͙::a1\4y~5})3x5NE2ԩS9sǏۛ3s NO5ID IDATz{_gɗJ,^d/^EEjZ*o#d7ߝɏmh"pqVf_<״g㪪b 2! 9ۆZV,Ueh~,sV3G+ Yw UD~>Q99{>sNtԇ$7˨n}u y?̀"q/Mo.:feӴ]ux蹏ٙq*e(?佖| {oUQݫ7Kf=Μ=zw$FuzW5ngϟePĝqk*O'ʻE0X̻il"ldNƣ>/ $w#9QLo~}NOg] /XR~}6~t"qnKޅ6lBwrhq Ft[?TQ| ֭#>>۷Ӯ];x\Bq[k=Ϧ,6oc-a㇖,܎0>xQ ߕq G@܁MߠHkڛwwi/c}~m9Wщ}6~gPoA.ݚl>> =3o+G?N@}B /7j>OҰF^փX;& krbS]p$ t9:kv!-DtHp{gij,ҕ=3{j tMg"~JnW6W &ٖ0O' 4'N]fgnq`0`e`{{]Νˊ+ >>+V0w\rrrJA[Ls5=J`I|x"61mGݛ8tnj/_h5/wɦځ~±p}%j鯟dt Y~=oJ.zMsƿ?= |=2 DlvN#Rh8r˗L1 & 2௟ES]6Mxs.N<>C-׼ puOD'ml>}դ@Q6uқ}-gO*;z|>+YncØn Zu0~ܰUAz>\{ KؒDRҟk^eNNNlܸظq#NNNT2WM]˸:xsDjIVf;n=}#?{dcZ5É&4 >ʚKYw6#6 xG `=ԡ"re^ʹLXtWeqhT=_㷫g#$NQ. vAֵ\+q)i#!^9,T7T*R6`X ώ( G^%_isv)jb)3jƪuϡnBTרtۜkd ,\P9*`V4㎆:&0[PTpFddx5nlwFPf鹓:Nl\/hgO8Ӽ7oJ0C`-Xȱ '7ۃsi0 ߔ/b܎gz9dr.\)q ޮpLMMѕJJ_**tjslU /(yc5bMYM8|_/Ow)gbU\c&2u;pw^?5|Fwk>oaxH,*Մ-th2Fz0]4}d &u.M+.=z2;5ds>\%ޫB$@^7 XRz2~_/l{&Uflm4=:wOV)|2.,ӧ/*N<ߴ\)3&OȟX\T4-.qsrrh۶SLvs'C az!0jٴ0d 8VC }~iγM׹\, ބz]("^:֡C*;~"3dw*իS+*Bރ*:2]OgY;7puH!i.m k%w(bW^Zؼv-r,٢8IZ"&~jxRpC+a-cI,{"!;TT+^p1%,p;_W>ӧ7:u4ԩ}ѱH.6i>:j'η)#FxJ;{M݋2H$4.0wS^fO0u8]q! 5̪ӗ(k2UxBTgC8)^usل7EpbWW^o0.nc+Yk-/V]3> Cq<(zBSP?Y`cMm )#nKgcY4y^ NJX*, +5u C>ϟ-q+!=2~_Kyv܁`eF:3gwkQ!_΃B\P&0kTHq]U%RVQ3X' <UQ Wˉctu`+*UVZɾ}gɬ_w @msZoZΓdrnպAx0='Zлxۘ!Ko̞3c6HݯycK}^gԧy,.DE^)|Es+M\|.c[צ!;~^Ĵ|&v!P}x//Ejl3,Hjmd=B&Z7Ll\g2=;N.^Ku Əym8yP7b:wfa'tPQՄx&=م Zȣ t*.8P4h0ӦKϞ=$͗[)r\#w~獚v|X4?B"Dմ LŽvPD2ә9c %r2-L?KVi999ܱɄFMX3E/^Ƞ^&=-CbZM7s˅n%}ޡ7#L oɉ Z7 b -W>\{yc~u-b֎a@3{eGf:88PłAZ=,LFZMVʻ 7IJ3)=7{AYiZoV,.*Vkˏ[P+&M`jrss͕{D* & ==MzK ZjPg|ȽM aVb1,;F`@Z$ !JpqBdPN!(% B!D)I0B!JIBQJ2rs1r (SZ?I;S;ɡCغe3OH@eB[DbbkX]$!hL)7CnZZy@YI ѣGXj+! Q Llf-n ʻ8.hdK`*D)Hǎ(ʻ(AʩS"D)dgEG]F7ȸS!$ !dTM?t3J!=*9Z|yx#xtq e-B-X!]nEھ65Uv-ȶ3/G9ڑRi9d QN#I|<_w+~fXk&(U/AT*cO2$eNC]IVBqK:k7_BcΐhV"ɪߌwǭTL]2h-VjWن5?1i4~DEa|ܟJ<ǥPӸy !RyM'O^ N4Aξm0EU `xY,!>TmǬ#}ٻW!xR_Ŋh5צ0&'/FJ\ӎBܫJLpMsy܃|ut8 }! /}p#Xև5Hϫ\rg.dqB1sذ.oU>qM10Szyk^4G"q޸w FŻ]iJzA8e$Y'? %ӯ:Ck:U/QdR+By6ՙ]|5t* cGC [1zx4}#d5d,}gqRc:vyOMf<'`+zzt&v#5ф6W!({//PjS@Fz:3gLcV\ISHOK+qGZj$BS!$V" b1J5 DiUdGZ-*q.GؿJ~~(B!D)I0B!JIBQJLBR HvȔlbDj )KBS;ɡCغe3OH@69VӋ5V=j-Ò q`jGL:tukҪCʽf!jSZYj*T%Hn$֭[h!wqJUz""aӦ_ `*D)Hǎ(ʻ(*\2LEns"D)dgEAӕw1ĝJUU$k$))z q H0.j$Ziiݦ ۓI#([L'00')~y-&t yx7*$%%Ѷm[F1b8m۶o*_z?-z<{ sl9BP.rxӏ;k_m\ol#zn?|y qRU.w9q2`0`ƍeȑz˕55ds5[[u`j=%|n1KH=z13MFjWvϛJ\\:qʖOӢvU*>fg=U[*Z7UEw,ۄw?NentfusG4T9?ij8\3?cm#kޤ_qBE!yͼ[N[;Bҳ93cq}3|6e5gmo]^r.7C6~p0c1V~x-֧*>Iyib[b;K)k'މgY7+{g~2" Rv6oIgv$DU%胷1GdoңQ >F7;H/2s.mzO\B?ϮCC6Vƃsr=y6ߏf!xCm fPDZNVkw^^YpjUwxz.k(36S+Wct~53XroI Y~=oJ2" z2 Nz.ddsB'BÑXd ep7ٔ~gtoYNocG{&4Z@-TXDAWޒ`wNFG|Y*:xY.ߏx;s@O',_53ħ&%˕e'1zޯvMnO7{-H/Mlۑwq>3ʯ la~ӿou7+tI0bJOl;ע]/o[v~ض_;SFٻ-Ț\olgPtke^HʹLXtWeUaϗ-?8[FuG&c»,5 \m:d>TוNq`X$2’9}۔νz#7Éz3#ڿ;M܀Dg6~ۍ5a(}Rf:Wb\%Ӑ7!'N:ʫOn~>!Z3$GUH7q黸%tc_l<=Ѧm aZ]<.YRQ;.gK}b˹gmR)Zy_<;cKSI,dN!7LLI0Y8b /|x& w̍My@ TE]mN}G0[Os6G7 8nEu+9TFLu{Թ8L۶6?^<<wp`m0#uu b#gu9+~3N}o,7P8>Fޱ>֏czlOHsWRjR†`ɎqT9; x{gpmAQuFC\NAHzt(jƊ -f~Ϩ;"B$͐VNdxzʢ 7F䀆, h@IVr͵j=zM&>e`Y ǰZyx?"^>)-Y4"y?ifOFf|R Y7uy'\BR_-%Tb]mag6sfų݀|z5툑*/x"V}[Xq ބz]Pk]rC5oRDֆ8 ػJnՋLcuHa=\l*ۖ #~Hнh(n{Y>}j,y,F6_%> O5lZ}ܺyݼd 8VCcqfOZ7š?fxxH}:}1;̠n ~czu}`Cor ͢LL1ңѣ1q!W'73cT;zzka?Uy( 5̪ӗ(k2UxBp(&]BTgC8)^usi<ƠHNʫmmx%kjVwkҧa(Ι9E>u"K,}eјy)h8*`[4B-] k+c4\~dΞ9CL۲&s0gSѺ`YOkpN?9o37%7?;gSF wA*eH-hG~z xHw^cw6Bhn0DF{uA*KO\lx:h4ʒC |nw<֍cmh֦/e^1V$a~{ѯKg>7y% vǢ.c[u8wO2z z31O& я:n^Sdxִ~x0_3i p(9jKxWXlh\@mުMyC̜1CXryGa&O|~%+Tv؎d@&P fi/dK/V⎷zJrnёps@&ͰZL6w (.rcObdU( LVjEwM*Y\UV:(-VŷR%;ZEw(U2ɖsg-3{I0#ze5ދEZ3-( gϞe˖MY(#ݝ˖rJZ f~̟7ǦZ//o5iJЪdf$ (V+Ո)cYL)d@*- 撛[Ba#i!$T!(% B!D)I0B!JI& !jXf3hjI B!0$8]Z)WZwwwjDE`(q vȔlj 8::j|8۶Af NwSXfbúJhհ? v&+3CufNN*iZ_J$$&[j-2b{n6kN\Jc0VF# W#Ԏrs9t ֮UU7jrwDDD ]@phr(  aX,J0#f[кC$$+!AFbWWS-(6MȒ`jGEtJ ~]!]$<"Sl*.p䐝U)0F NNN7T;S;#^o(t0'O&c>JE7};S!uQz>0o j=‘#S+l h`j=oMg {4.B%.=< +s!<9YR h5Zn"#|5t+gUoT-rУ>Mk_YКڏ?ʣU6! *JTS85AEѣŔ,gټ;?>R4dpujH芥Ku{eKDRw3mݷB_)59m- !DȼA^8߼WLr#bE䠐c.GGw7,La^YrK[Uk25-ri?++{':?Ǧz8ؖRǯ䥗rni0K:0lp+dsU !QŊjfVQ=/^AD Zʙ1>3͉ƈ^2u֐pcofu,/.⯬J%ֈpmS$ kJlA,؝v!6o}ZN;;:?F/py/O[]W;%Uz$F<8W6Ocg0WGvJߗ3cHJW D@>tp#zq.L\+z'U?Ӱ^z?W-)A7 ۔q~= g^Oo{%)e3ƒ_?@vJޯWr/ߔ|k u@AW ME @6;'t⑏0~ %li$c>cLO3v _B>-nA.˱FgFc~My;멶m J89X )xDW*A"/TxLeBѹԳd_V[EyAGJР\ ;<[9[Hݜyӗ03<+G?˳mF8*!}\vӔG(R rk K h~ӟMCiXn%܀^ZȂLbpLu#628[FuG&c»,5 \X j&1iғKATt;Mymíp)T9V߳lꇗpݜQ^|4s'=_z:+ТS׍&U] 4)BŌ޾WM@-UTłg _dm[zV3}S,GMh-90 } UN;s2 ke=Ɨb IZK@tp8?/(dSDڴClPHߵ4)9& _7+/aH(9hK>U1df,-ǀƱ kSuoX6[%!'o#]'KY,fLk^I N@:lc}PpEg‘myi:?NaԇB9KMk᷾!8  \j^8x<9& bd*9}ڡ_ٝEfAh ٜT9_zʆ[c4iOՑޓx/ZI41ټqCo1`Q/Sߘfb{a?&mOLײy}쪔 2ZLVj9kǒKw{];h5f*M!Zr6*VK.j~b\}-Vj U-qK z AyvLcyɒWqu\*/4c ZM㟪_{M:MD^<3?+4Z߃̹T<~>Ga{Xҭ:.L}#X& C@X*ɕ`s.lntK7DSwgl+Bط&msws/,FVgZ8;Fk;ipfFTMb7dg*=켆jUPTǀnUN)ͫq.^t#h s؃Oil+/‹-.H5`x ZNwP4 98Sѧ.dfMGzWߖPĚN|xfK5*yZq=l8ݬ MlT Dsn/iSͩ%xB;VqAO_yyŔh<&+ΦvbU+խ?LGc؊t5hHS x= ⧿.ޭxc@M&?BWksF2$rf֢̬ӟh%ԠuSu3Q7"Pw =ãO3چ]$wW꼱o6"kDt{/N?/ɻX7Y|LLxEtZoZΓ{ܷ=^wOsN]%S|: G>On=d3۹t/Eلž]{[jّ 89:_ f{eh榣\@Paj:QUϳ?3gٹ =`'~B@BQY>1+ަG|0VUcc GNIUg{g~ KΏ tW*7'䩈]Lz3]_’o͗[)?]Fz:3gLcV\BE^"'M!=-L|{v&S09t 'OSyLU} 9OQ̜9 ŝľЧҾC*zxfv6B۪n^F+aVڵx!;);xb/) UU@%YE1!Nn{;%T!DUE-S .͵TYWQtcVʙt4ukH03ZEF_bF-yZl^0oU+`Q@ɋZ6n[ ԮhZ|+UرwqwSϯm-EI74_zr`*n#@BDoj'B_оc'̦h_$RSGGbbkeKII9U/I!(VR%?wD5̼nڋ3gBVզq`j_4XDDT#*D!((MRF;gRR_l{͙3gD).`jrss͵}e!( VK(lLBb">h~@UTNI-[Ec% !=N({zIA*|*א`*@hX8XD$F`S  B!t:\\]KN(!3\BR`*BS!$ !$jEZtli4Z-:YRRΘfO`HMM-∻VݝQQ\ BI0#Vٶ4kNHhUY'S aZTU%j|ׄ( vDZٽg7M5jxDyG ժhoBL@#vU˻(BZZ"MZvFQt:L>?Fs ("7!JIZB!D)I0B!JIBQJ2fjTU1,Q <<6F2{(ظqC-n%-dڒ24|j֬˻(BSl>d!z"Y#n胷W ?Ƨ|n= Ʀ;nі^cݺudz}vڵkOxԠnǗY+`>Ixz vgXwiٿ iF>ՙN{y={= @%g% -:S__.FFK<Dq0p l/ޞ@+''sb gŊ̝;r.wiڏ:\}9txࣘ-L}]rd5_ֳl_w s<9sMcPGx xdZ G.b)/&ݟYk/"EJaDF +f3FCT^6 F}hY5bl6K]&J`6|B؟LUhE4Z١Rc_Lnퟌ__wl{ԥk]=|ݺOl3Ughibh_ύym'܄$,}1 u;m**R@xds?Cpķ|9~ռ*UNǖO e 28eLZ~_+KΑMUq,ݮn![I OWp`-FKDM?l~"b*^8֋z?|=lHO)uXՌZQ9_1.^rRܽUc8ȳctlfvkAjޯUAQ]ߣsd'SRɲ9}=yPIyi4V+ 4+- 999mێ)SPv!C|+D+9VTLd~&svgO|6j!)my~E[cWsX?Zsci8FoC@a,Rzu_~EPŽ|n Q+ 7mRqtt)_!+9Zhܩ7|&OM~.e?ϟW{2)CO{Ȏ\PRcg?V+V cYx%}7BCC#mvSJkOO?oG n1h:b~'*?sJsɻ;U-.naJC5wJsc4#{!0v閐(|7?0) )z!wC#hZ.^@G~ŭUz Ο;{KZhXc!JKh4s&%J]q8s h4P( vDR#*-[6O%4ZYAzrL lB 6/*(S; AULAzz2jVL pvv)y'!D$@hX8X2sSF T[@t !92@!(% B!D)I0B!JIBQJ2rs1r[(SZcyE;S;ɡCغe3OH@eB[DbbkX]$!hL)7CnZZy@Y7U ѣGXj+An<^%ԎfnB6X`F#XJTt|&IDATS!JA=vDQNPERN!JI ;(<~M6zA典$ !$T!(% B!D)LM'X3Y5o`uO"C3|ߧF>xۘnLZN m $< FikyS5_-(<B2fӭ1$nߖܩiX Oi_4bSX f}GUNK%dB I( 5Dz. a]VĆ*@Xn(AJIH2) -LHqrr%s=w0r8{>1$9V,3 7W;٭1WX839g8vh+H[^O @pRBQŜ'S57G/j-S$?)Ļ:`)=蕐GWh㽚9FX6c;^%ѡc2& tA9ߕO! %-]v s^fAdw@W8p2 taΧذi<-<|wN gU\9\G#eaB܂neG11=ɪ $ cuhi#ߦs: u?aҙƽW^/?;}uK~Dz!:zgpjvN$ip(BF; :ͥ~y qɓQx[ET}%thf1$Bxx~:7`ܚC[r8먪j)I:iOf?9?Uz"t`pErӾ'[+'a:Bܚ<h !ox}3=7 خN^]1GɛD4dIeĴL& e8%:wp=sfrkz&\,yZC>uBJ]-:BܒLq_9̂=8MlMD ?ZDٝn-Z+ ^uu[ؐϾ4IKw}>ۙ^gzu !92in)| z>{˵<7͈Ds?G㼀{i?^g}6mSKf?TW:0~x}zh2s#Nq$9kK@YpO?Li@#,lBh*PB[K(mp/n\Oԩf/Ćcx } q.S̛8sv:s"# Eb|`茄GТߛ(BDž:U, ?B| ,yc4^0i[S!ĭFxj0Y3Hw7G&^gRߜINvFE֬Z)B!*JBQALkVnww3mnǀ%E5V%$4'O)6q!BPyԈ!ɴ Okװ}إ*ngϹ{ly !' $Ȋ8wDj 5kF^^$D&ɴ&рpG2%(جVIBTI5bb8/(FBQALB d*BT$S!j`dYRZ"D'ɴѣlݲIB. WZ@-Zפ)Q-'ɴZ,=zѳw#dpg.d_ǹTfq֭]HK dZl6nB}h.w7GR:-뉍mM~qIBTt{jEQ8aQK(7l64OfFQAT(Nsw3DmE ----HKKgzA全L(zsZzȑ#ݛn(#8IBRTTUAU۷/&'33 ӷo{J&8̱-?r$ n͌r!j4Urĉ:u Æ 駟LJ'|2w6S[zg_T)⇻U_%(8]l1$9V,3 7W;٭1WX839g8vh+H[^O @uܟqGyt~?)d~t02 RtcQхN-q7GGڛ#ypF~)WFXO]0iJȣxo+^#,|}%ѡc2& tA9ߕO! -n2l!UOFNIedb :9VM}ԯqd2{UV:C,4t"E0wL~df̣z!jեuB˖ǫdt (l80ԋ'6,?j$rfpB~џ~؛|h:C61@JۖPp~%SB6F, ߆ůQy|}Zbj7;8 _mBs3]34QBKaH߻?G$A1w/3'>|]}&isg:)~լA^1x=St7r??;}ryEy|c .22?I+=PO`DZL"}Sqag\{5B>\UPAǵ/oSXf2.g"RLD=ᧁc">|/槒̥P L_V q&LLI\CE@"# "翓Y'yMlMENpR`|N%'2ц8L69F-GXMQ8/ݲ4FҖu I[3*YۗtJuZW͙*R !*yFHʤY<~(S'&,.ӦZ&6#:"M>VIr f x巃;p1O-Iuzݘ\,]f> *g24VfKŵ];Ipp⟟= HT])}M˹DtGH9zP D]1?>0 tF£chMV~7{w]rI;{ڊTF{ z,>.VӍ?_c` sM$_MH֘)E86;psL:'OFwN% Qi4}v@nNsޞ1ctwsD-3c4E~^^{3V)]Fq(lWU-Z_^x4 !YR܄׭3$Uk#8V̙ QdP[ʍ_IvoBiu 93Y(F_ <^$UyCK|7"\;Y/If.Yٳ'қƇ̳}4. 3&g|r pz<7%*G39~2}dWhs(_nshq_J]]N&(%5$S!^e[d_.4Hn%6 bfZɄYH-S Gz`i$uŷy/4/-y{9Dn?m6?;x7*9XWp)NƦ]ѭ t!Vu/Du2}/O&$U\ssꎧ;lh-dXyナ9ˎ>ȁC.ncEMzoB1g[`5SLER `jP!@E}~MAQ NlobumQ9Wɸԅ|4yz#^C)|]tʊKqr@p"FoW`=x\Bg͵@|Ki*mwՎr}~CV}¨;E1"ҷv} $S!CGԄF^q!̣)qW^*m8缕Li}UA->&lTɇo%jaO5WGr\5rbJ\;N7X ÁM mV#zJY݀T7֕Fc[ 糱 L 荖sӈv)-8u=;6mu[=(ϥ&MUx؁ !gD2T4ڋ4ޚC>{wۉj҄&[,Q~:WN86hȕ;GkcB\o6NhM!W຺ϩ;b6"#ǙCX 4b2' dZ(5Bt3ʞ)y Y;)H{ z%X93ԇi~_۴F6܇xH3SwYx{$҈7xg?{}OqWYHkq}UtmBP&>ݐn3c}C㕛N^E(@w9X \>yA;h}~bp|Zs8} w@Z!p{ލOrKւLU (Dի+~MpO:wf6/!M .Gg{rmiXQe&}8J3v7}gԩ</SCch:&ʌn"NW޴~u5+y|V6O4Ȳϑ>sͶr̵ޟr(GO~ZwjC -XJLx@d}5NtE{vw;p ?穑:_Q?X%֕Yssrؑn{_ͭF:ޞZ4\ Ũfq>ZZOAOwSa7^rxpĚU+g*5nKۋbb.ܐ[iyH2w-~$G j#T>pnX 'ĺȅKd*n{ZٌNW$J;uŹkFCٌFS[Vj<?Iⶦh0\8{zݜZє!/Z[fs.uUcn-fs.uJ}bךU+tC޿EVg9T?o? o_j#WjUQ9w,۶ly|s1 XWDyb*zǏ[HCl6sa6'z7h(LANNv=Vj B)ĺbkOO"3q\;-FC:~ķH 44˙͹ů%۞`Q#"mSN$r58%ܥ9Vq-EQY7$Cfs5üLt:>nmAb]}, y@F<-T!pCWBQ5V]kIB!DJڕa^!E 0BQWv~-_&B\r)RjEükVtG[B[vP]IENDB`PKs#LPT""-Pictures/100000000000032400000260EA70402F.pngPNG  IHDR$`0IDATx@Gz-`.`/w&%1$_bcĂ]^A+(H򽻕yw ~۷3+J  R5k:  3#1 AA J}M*+ ,T] H)~*). ,AAz5VU.o-  灦"K"歒\E:UlBAFSWQ4M~ElܰAlAAO7o-HʬE(-F^'.EU]AAj--[4xIS`h4"LSz ~)e `--[- sqfBU8N01a c5-*DPP`#GJKBi"-f-L&+KuR+~0a c03xC%%%Dk*T* -b`0 X*W-?4v@ɑMIq!Ł$h\a c01\DB***TZ2@`J uߍHJ}W}2"S_=g?.]R A,•b1iF(ZokWWuWA K၈bԻ TIr !P#LcZIjz68@M| n}-U79U5@~~bh@@QwxL5 kJڵnBo;;. îamr3AnNڰ9M4_J2rZ/^p\~ɠ[[;YP,{k +sxK 3wg2^jr,s3c{+tM1 \EbfV-W(s % <\>S(Zivt%%$΄o`nē+f IqJ2%-JQx L[ފyWZ*oT|*\~Ԉo#mp˫ȫZ5oѽ쩪"SZuEHnbKsb-UN04@hK R) RNaDީmNNfG7$ %pE=xo@X$*)`GMP^٦bl" ;9(o7K!n@37q7Ss%<.GRJjBJڋIP0UMn.2ʔRbq)tsJIqk \u:=wRj˄dҦwT?&JRDQſL23+URx@$Wk/6f]4sٽȻ%|WȾkQ@陟k~-tekg3oYLQ \+;{dzمEEok۷FJeRu]zg:fU&SEو p?E%TmO -Mvn֢ˉ4 o`P 2jlݞ#|%K~g?-jI52MX:R,v| Ru L'^ o}@X"S2 h=۸ۛyAKzX<6#3 UgVNx3,)(]<%V\ZkBn3 _/w:ܭxTv[f9%.Ho}7ySA>=RK%X;F{]U ?S)5V-JblE"rA$9FnD͖-{wr,<'5A`ps>wǏYg6M-=B>DPPXak/T:<7 .W٤Y#sMԬBjYKvnV̋̌&[ټXr31#KsNvq/o?J*W)QVA33Ujz>RL1YL{;UJ@k%4J:u x#6u/r[lcƛWfH]W쇴17]%ޘuj0Sv"%nXt1LdrvZs@iWZC:ߡ^Nxá[-5{_H`(Kk{35 n.?|I.+C>l'RB0d[Tyl kF)k#jIRLFio&ZD 4I0i%B+=%ET*T*~{kּoLi<܍ 9QĨy h_%29 7b꼵gZ[#^ONR3-->r)*/VYl=*;З76QjD3%bq;p.Mmꀿ~JERSC4cc+]BHU쇰/l kdWocTC͸[Oḷ_#}Ur1K9s#^diYOw,899[0-(l&QRi][j!'ws)KlA~B>{ bȄV:u̲QxŽ5_FQI*((-bDM !ѱH-ݔӲE3|sFT"~4=Vt?f fM6q1Ho_3h2]'q%z<LRk+߇,cCgْM%Ҭ9 wV"~OGH K$RVgt_3'x=N+>_ݨD4phA|īw;ݵ(ڕ/!DR Uml vR"SkG•NQ )Y2Psq~}5&@SJR$9Ꝣ{g2)T`K0J}YrV`, "[赻,2n(H n22 |~8;6uK5YZ*T$}C3p,.+Ԭ,ճKȠ.D֣~.RYZvQ'y9߉!]8ڑ)*%97tj6O'zerr ֆI N, a1 *7K䌿{?Xzq/j{8K(&mJL{!wom)ʅް2yH( xԷ炑m݊WL UXx4FI:g$SsGInN.OHE,b~7Q b1Ѧ/Ѧf5h7gKL.S웝4=Hd-48ꎇ +`nt"w!36aL?%<.\$p?4J*ɋ§OS]C"PwqOXL<ʀ\_$qsUa/<.AC&F8VlDZĈfibSScKffݝmRX\RS",ޣEQMvLUT*q757;F/;7z"HDTzBXs^]+w ~G`/*MNԊ(-Yr 4SbGo#e k6ˤgv Qbbӧ im>1fܶ TH&J̉ f6W*/IЌg3J2P7^Yl 2%T ՎA'LKyצޤĐol'F6XYҡUvoe]υ  FL4pDtP|6ZO`Տd  ~E=|*B|\oRɡ K HեaӲe@ٍ (i/+EN ZۺBP`֍  4u&ifu&]%J`E!1XlFJ AAeKWZi9^WN.oj)' ALSU:OZX ץ\ RAAOoؠz\5wK  gGS:̏AAOx]%(Wl!  㔐G 95Oa߶M~WiU@ޣ؇ڴ R.([ج~`U@PTTT*G [];| !r,TRUwrZK HE԰Ҭ^Tj 䝠ӨGxoxwNԝ;9EQcb\T*e0AywեmOAQQRT&srTsoRRH$b2Z6 {PwAF͈-UKJJCC2(\J\WU*ŠThՋ/`BKǏXV]reUహ)S5m~Y N_l۷gϞMرk׮fff QOBԏW) u[*JII oiҤi3ƍLܺukA%Bf]Cnq&dlPC8"r-n߾կ_.]͛MfV梅 ?|wղKW;,9svݺu7U߹c+_~ff_ '?x/o[RRSLMXW2{竖;4%E$CC%E H-fj#[ZZ>}|͋w6|D֭njөSG& 5ijY2,l2j@߾wfY,RԓURV?{D8997Ǐ7hرcYYӧOgڵ;??gΜC,--1c?;5z԰`EEEWu )SxzzڥKg۶ ݻw5j8_={޶\P@gZZY UV=o>Z"y|;Wt:6w7II֯ D_~u_ڛhſu 4B|>C(zx0n`ԩP%_ZԒ|N{k6wTܹ{75ҳg>{C@䳤Z,&c7a94O?zw!߿ Á@}ƄRS<{L;V 3N{#333\/ohhv[nw܉5j5kl^RSMQ8P3=8p@pY7nر㵫W7m|Y3gBL62 6VVV`|><|Νcnj!n߾=(0Ws??WW;PJ%okcS<}E{O}象CbnnМ¢[;V w77bz՟NNNٰ2aݺ<MiSuV:% Kܾu6x{|N):#58uoϝ3{pDߏ?mZ(.RA-ڇ㻺{DF^ǥ"sv*lݼ~7BKZWoJ+""b[޾2##DbŊQc իٓꕺrֱ@`xr߾}6mۧX,NKK1r}PPXhblܡCPؤjUZ1SRRoܼr_~MXV͝3E=+8>m*ǣ0  UA]5mzR$<.wU:u:x`FffP``^=,ڽ{k@4W7a,ռLH<ٳrsr!/ǀ~K" -,,?~n}&@gddL4D "m43x`pRRR Ol *v Zl ) `T|HNUX*F?_¢=k/^8JjpHSZLݒ%.  T'uuR{v:T\[E,r; <2`gىa@y9χJV?1"j]7ly:%%D,9o5o@h׮]"wqj*ZEz5l8uʔz}3~hhdjm5o ݻO8eZ1*..e5BٙhEiJr2 4O6hV~/g,:}㠕>>A= vw`O˖Ė~ضm/B e yxB6n`ei lg͘' Cns+.*?nlvvδ3׮YӸVggeWw*󈑣N82!aY?-*.EA~~\\V}9ތp?=<5͌j8y&~D$A<߼ukE-[k@>$D57q 6kÅ #*-I=y*LÃ@s+*"뤼4}LԤItFLL AN5-%III TlH6I= MtzZzVffÓ4!6u3 *A742I)cՒoy&;IMA<Kx𰨸uV}}E?-3ݒэ֯[_Хsys"2>~ܸUBƍ/_nղØ[נA˗uYY S%%A-?lP48u EEGgegr8|P֫u՞\ &-[!0`@wwXu=q!bD8_uQ/^|AASbG}ٶu3LJesεn,+3M ܻPB,@m9nW#/<U 0X[͘/zwojJ%Z*K!Tủ'!Jt rp…ĄDM nywssCCC;uT`@@NN__4̌tM6p8~Ęѣl )ec2_~KZZZ!Ae=Y\\ҷO7ZڔzȢV%FxWW"对ӧ <-..vuuM QGN>y~~m߱~z;tOc5n5mcVX|/*_hkʸ5022JOOW ❝odu2o~ : r߹Sǽѯ/\ZZIwT^ ˅A]D4wB̚5k[hᮺN_8{5RɃ H- ?2Eq~ԨTB1aGGݺZ"R)!:4f҂ N2YqQ7.F "SJd|3]ۧE9%KNĿ^ޚJybK-͝CBΜ:Q0 ԭ5q4)d8oF&@~~>@ aQdfFBҦtlߞ {ĉŀJ<P~iE ܽrjxN8kƍun]2O@0aK~Q@(oB œl22;;Ҳ sx?Vȫa``5(?V@Μ9z(X[GI{ž Crm_fةSGݲuY|;@<>///O+%:(ze QFF}sp׊ ~}3oYoݓ61ٳdΛK{٩sT؜E?x6="_⌔]9-ML5{*mllnݾݣ{}~S223t3СfTC nӦ>>bXXx;}222,&BAH%$99<%r9mZ~zJJn1tWY%p]hݪFKڵk1(qcox9rh=?~q⠁k@><6ՄrDQi2fg̘լikU7<ٓ|w?.[ת?)N$T*, h Pݑ+}PTG˖ReN JMM9~PÆ v5yYIbY7jX&Ka%op41)=D˗qqO32={qO` ϑyMnRSJӊ!Rq. :Ig*&Z]+i~{ykF^;vҨ4oFeQ3j̓2c>{iv;B(|{Z L_\ MJrԩUkK!Wzݺ070aգǏnEEWw_"HLohEdX ZZZZBhREA\C.:v`k@>4|9::lw' T7h`;wfIs^>r4"6NQeYwN &/XhPq9[6U R˩CkٺM9gM<գ^Wqϟ*,*uԭk[yk5mtoס}{t?b؇hQR 9m׶֖*[U><6zCSt֍Dd@έ[ζ ݃ߓ'^z, S&-6lᐔR+++3$ nj HgOA X+Ft71779 33K WWdW$ލ$ek@>$dml;Lgee[XX7'[|7˱SRRJ6㲓ROcǏJJ@o=(~\lr>c΁]/]ԧiVN 5e(77+5%#.yɯMLmŬs;2~W;w044f۷mp'O ~&B9tĨ.k?P jUϒ\ZBs),pU |5lkiiIZW)ai RK"^7F3ʃn[3}133qfnNnn^ɇT. 9x0d9I@A ʳ;]w=(*eb2-,-6OVp7 Ң[oٳPxV,E֖frsc޷:ee6 Je5k~<؄ sv6ĨlUׁHP{g>#?GLV-/_ֿKǒZU8[9cƌ UBTآ  C~u7tyݬmmw/]=oʗ71NbanzxvV9>=|=qO  ÁXZ*S*`aO%#z`dGCs_5 Tԍ˔JY ̿xMqB!C "BХK-  ݀!]g.3g'x{YpV?s/X8qdWW׍mA_UCQ{;QwAF5H-Um@@%HRBbjaX|XI;UwrZ8v *nf"*E}hv TFdAWd=UjJJFz*H+3s o|s`n=<߰Ġ&GT Hm̬ף؇-Z *(eN)p%Sf3gͲ5iEQzxYԱ[YZ;9⢴k.nN.wo]1cn}V/6lKnn5>\a#c3##SD.+uh8c/ <zlwˮ^w  FM-b\.JZOgziY%z'x|v Xa2^TTރX,YlΎ{0tv4xP~}w޻Ouk׸p8[ T35&T]ju>ef;LL:k s@p2suqFlJŦfލ8xYXޱS'k[ $%'srs5;y]+++PZL&  HݤfĖzj8|t!C~strgd&gʏ~jRt&|>N xyxg(&f~~"C<r8b1T.*հzu-AA[CB79Ii߸q~Q!}ԅ3Njm +-a#+V"џ/UR4bhN  HSMb %۶of]ӥSg>]T,MLvṆ{,m-X|󍋋 ZVb]B"kbM_FAnD&r.*+KKSӥҴqIw/YYsDgt#@lׁMɥ9у0/AAZF*(Y999y, 񾭍Pr6?<`~}B[ĔҪTBi  HwڽԌtiL"eedb9gyN1"((P('rBAĖjR߮׷es,7'og|$OZhnRB  ȧOu-z:No֬ٲԱyٔW?yZ2ɦ11NPZo  R.ESͿb#ݻo={YZX lښJ/ATP(j:!oLjj< QM݈7 AlQo 1|@/Je2BBdلb@DA={zմ4\^=;Dӆ^ =<ꕖVOA>'Ol[Epd J"8-n"J_%&^8K`W++j{س{+0">.YSSE@Aφ{Z6: \j>"wxYA*\x[>MUΕiO@nn4Z䥈GVgA>OlQ>eBHII6WAh)o-LFQ9edd7Aރj[T\.GZݻw{n2ҀNmA>JNN6C^ )PZݺuڵaz Ay?Ilݼykuߗ+n0`@=wc͍7},EffL& *JIgJkZ޻ףGŋ=z֭ݻ8v.Dp`FkUnn.kRRRKK\.]EmT؂zi.^?٬;w^C50 i.L/E#Gj"KϞ=wڕ 3޽={rs6lXvɜlG'ɓ&Tu?;wdff rXX޻w-*K-_)> M4WtrVpp0N'o9b!H?X[$\uo޼}"U.333Iv N~ջ׎;u[A^= %%ya:u\jݻw7o%CLpѢ 1=b1 \m5ɻy戋\QZnU'NK࠼Nsp> 4v<,;; 5b(֬D}znٲ֬TY[L4ÃHbpuum~RCT-[4Q1o%??mUcˮ?gyp &.>~Z?AxA:k/^uwyƠ zE8qD"IKK>l4<~iN:ww;wjRl 9=>ctB>cL++.]h_0{֬1cBq1c̝g.2:t_ [/yWC ҹKqqa˳qp(S&))...DP(tuq&B E궐Bz*^ GgȐwk_|f>`áA(3Y,b18;EGEWX>iGZlɓΙ3*v$+=] 2TŅ *аveƋ//[Wa HRbK LXչ(X[o۾׫ Wi" d2yoK-,,_7a:dH@Q۷H{,nЋؗfJH|~n^ ;5${cnn^XXUE1#ż\s#Lr¶A:~X0>ڭOڹs???޵sI+WMh…yUƸYލY[[[ZZ~BHTuppp|v Z*e~(:kSN tz:r:y)BajjNAgP;}t@@@NNN,bdJIIINNNk+WVl 6w {>|x޽5`۴i ĉĘ-Fsg!Cɓ RTآhf͜>}ګ$BaccCv4ikpΎQl ٳ[aGpcbwNUqUSXhS֬] w=+abb·%`&Nd%H.oook++KOOO"~iӦOWNS.{-Iۿ|r{ҵkW;jzzW_}TERMi~pт -*,2x0(?Wڷg; ^n===[z*eyP~VM'A" t*mZ -AA*  Hb AA A  RBABPl! T!R(T55AA-۾  Ri! i񉉭ω註5ALhSI([5FV5AL(.*$ 6 |,>ITCj:!  o[ srx\.$yAAj-5 {lȜf`@[z%1AAjj[2 lYsme>L&S*I!PC4Z  [>ZLd^m{1,:`0 P AAjĖzQd2Y,a z   LlNy)ȀBhHjϟW\z.o/" RT_˖\-ZjզMr122Rs$>>Q Kݦ/^lٲIHx)LM Pu&DAAj:k=@ZX"77wimugB<);w;j }vXXhlb l[s85  O t#ڷo_zz:sbgΜILL tU:bQ*]@Ff&*.*U uduAAD[?# E˜JĶ"IʺH<D,Je29(  I Ot#@8R'~7r-@ޮ];p[{1̌E&g/\jz\^*@gJ)!666zǢU]Ay?ClQTV%PZNegg_vȈם$BCB06:;ݼs_"&J!gLPSN+#GʄټiM:׭xFލAJX[:dooN*fx|?? _ML3  .5Ӳ0(/^\pX[ZJ9rgϞLҰ M}Wk0,,u5)ؼy˂!"#/S_%z'W+Ww)Ǝ*UEᨱ'O9r49lCAԌFl߾=EZ1O,D"əJAܼ̬z.ݻwRfZ [̙3[*ڵaUb%?@`?0̣GE^ܡ}@MX۶_еkPvXl\ q]hGy{ :D7%;w^xI"~Wr~uРAW^ w_~CTtTVV6nҴqϜ9m|>_ody kg{QQݻwk1 |TjFlQu#4/@T:;ݸ-J_&TEiL5qq|^<)^We;v -((9r;UdoAl҂E6%@AIB…:=->r|ڴB8p@$2{caEE 4(\M,СгgNXRnkkCJ*uv: (FEE0аUIaasH.7=5uiP`6(ALF\FeHH2" O.)C AAZэPZ M67oh<.W t+m.88z/RĂ X1WPck%DԨAX0" tr3vvogfgMyhfj̤Kxz R'L6u }„7oRڕ‹˭`@U[l  Wu|zx_^iT].I=w=ZrPZ^^^btr{)ɗ/ǧ=N;z艓'=Z{X\hmmՁRx(-M}FAaիWUP-?ޔ010#dME[܈ٿa4u??&ײٝ8;F711QItr++ˋ/V5hϞ=)))GQgeaj? ԩSNN6Ț9TixɉO"o>u괟_gI%RR޼y7n:N" iIM/'\_ 733;}|V]؈N[ <" "vjD =n>[|A)/\TN•+ ޝnݺ.[\$n'\m_-X:nnnfȑ ݻ4|il6Xy .Omݶ=m/^h:P\\^! H(,5 w~;LM FiYyVΎ۩L&#;L*/E-yi0 X9yҤAAEEEjmQEB~̝;weo߾UMJ5wrrs@h.Z}&)z!/?ᘛoٲYUK"MKKK@*9"":  F j踸8bSu'N@˜5w'bmu)Ԑf)9ss RzXA$e866$9 ാv+s inD gzꥺ!eaewH`maqAuP7oRLM%x"^P,0AYlL*3pA݈o߾%&55:V- 97R݅9y#X //Qf&BRXHa%%%ZWQD˖5  ! UD ɓ',oĄOG`ӲI4Y> ys'wΝ; t  Jt'T_vya nݺ"ҥL~~~ج  HZ_NGN)?ILȩhK@ϟ-[?} [Ait-t&z NUIAit'@fOWVVŋY𶠢B$l2 by:ch4\T2[ - zT. [-df> ' lf0E/  HЩآRL&|!?}}@ H;_튦+tEdz 2hخ  ё"TK*\&cx\X,UF٠X,=:N-AAt@H@DNU-@xޢ0 &Œ1[ v#Ңl2Ab EzUGyK"G:NUb iH:)]c@"*ADANŖ\oQ4yGlAX]dPipOo^'HtogOWWwHA>&t''b MP(|u96@ξ%1Q-Y^EX33b/YXYYL"|4tRS=2L)}P!Pp%!a!^;<ژi4 Jz%>xDnE.=Ch䉟uTZT*1}J[bxEC~~>Jխk  6",ъD"i JFO&''GGG{yy)T Gi*4BQZ )PZ*,, [!ٖP(|捑é,ill 99  r%oJNI|=DAo6!!!//q…]v%v}Ww!l6{_F%oZfƍ'NYg`9yd-GŖjAe[X0\w},#<_TT[YY;w.$$$>>y+--C{pXW:vFSߚ0a|pغ A?HygeKaYs;vloѢ{ߺu]8 }޷o_ޛaC506[ĉ]v;!.,,ӏ>pܝvAVVsvuu y曼윜E PFt 2O9]XX;t<;;;0^t):PYY]XX(hMVo5)8x0tAÆu_W9Iii77?{{hKjT WPȔ}zO4I*n HaӦMDxLJJRϯkbȖeJiAAjJ䔂 lB{xd/﬛Psgdd&Xl}A<bjb>!""#._l"8LׯoLxRK h׬Y kEbϜ5<,4 { j$x… j 3fᢅ nHz{} ߔ@:gϞ˗#>3gz;Vff攩ӾnӧOK,Z555ՌM6,^Yh=ocm q1 ˆ4A2e*\%KiTV|^jժ?8::Κ5KSDYݬ hE݈#G9DG2@Tٳ7%%YfIiin}ѭkWߧ5k.[O>`2맚X,LrU?a|ţllÇʠ7^ftPnځM6CCclll'N4ib•ؚ?^@@֯[s.9}TffA *r[IIl6DuVxxjaa3_Y;w/x&oq>|XVVnbbһW/CC:@kjN?^-*m۴a2*1^29r/1&]'OUOjwܶm[JM.\U5uU>bTm@/ sŸO>uqq޾}RlQXX۷0~kka *?Ο7[׮뫉sUTTz[P0m_"#MMMf̜mV{{;5m i$@߿oԱcu;99#CCgDN#A<=ۀl%Ҫ L޼y'??'OŋkX$d䘪d _FGǎsO?K$U>4;%NeARSԣ:uJHHfϞ=;}'9n\qϞ=k3^kCTX,&|@eDzTZRJ@p8ryj1o޸jJ8%%bf4U43MMM=vxbY֞mI oׯ._L[++H5Y-)-..TYRR̲R[QafvZOueH҅ ߿<,--k~HH&״  5EG?G8Uv-[M cKeEkR_ժ 77ξ=۵k8cƌ"yQ}<͛7OLL5jTAAƅQuܙ9r.irDž =զj)SL;.WΝʂp!x0jZiz C-Cׯj俦jh=o>>>p]^Mc!dzg)l'G#ިUj-Z('''**JلFRLrM\ܾs(l 6,x_蘘'N>t#ёزuqqj#޿S< o{00p m3(eY0Jy|X+kīWԲ޻gܸqsÆ <.oɒZu˖-9\jܹvCP|}jK׮bo :|(fnfe\z͸q!}?͙;Yf/^9rİCk)(vyyyXSNsvvYVVv(&ZӢ[HA-9)dAѪ㿦jTv2nznvԁiӧo߱Jϝ=a'կJRxHX֯_?}tP~Wx 8zk ) R;t'Z@m#F|:d`nĉ\][q+;;ъCpdjÃ~fپ}Áqʕ3f΄|tPҺ7RiWjte3͠izle*:Wve˖U:+*OOC11f~^ ŖfI1&~꽗/_)ܧO_r=JaFBF[A>^l!BRܜf*k嘭*(.*h- A ѽGsgOrnDͽII78) HA Ng0Ϟ9O:kC ܼWJK*^A [XJnm4Q>(vAIb AB ` ȇb AAA  RBAGPl! #(AA[  -AAz  H=b AAA @  / d*F #[Xr+ӟ޼~=//O QWBytuuD Ac4 B᫬˱mlluuLtgKW̌؋ffVVV:S  [Pn_^d2Y N Wձ3U}Ѩ..*q A#@b ~i|D"&~u &L&h(ƌT*1}]J>bʨZTn]CЅUVV/YT٩jI&q88i7Eg69^^^J#FklA .G\(yc`` cWj1L&I1x"&<^B8q`H$bXA!rKȔ-юBk-@i 85gΜV[ ȇQb |-~~~qqqqF޽^ڧO˗/+;;暚l>@ d2no@a'HM99p]Till\+Γ*?3obȵe+9%W4iRddAO:վ}GgeeAF vu}- ly-B=F? %==_~#Gɓ'3<<>ܻwo-$ ԥKAWF8C=̞3ŋ 9N߾}N HJz} $p jZ-[hT矯U{egFkaM6ƾ}tބ Ǝ[2h-y֚57n8qϚ=K ;x 7v]uuݿ뫉m<=#"k E7" X8M(-9}w#c:A4:L"WTT02D(-9lj)KcR$X*+.-aP;p+^nٲeӧq_N_CBB~C"ݻAAA\rT˗-khDF@` ێ_i$LLLRRRBCCw^)l;v oʄ ッV?ևo۷o۳goRRRe Rt-wZsnfnigfx| L) zR "#X%IaQ!|ߤܘ'D Iu?77f֬Y%%%BX-5k+KxFl[AgϞkӅE-Z?\t):PYY]XXh5-b8<<<>!֟4qb׮]ֽK2p@ ԵDL.s׮d+K9sfqU+W000b2闖~ygϺw.[ Wkp"""\) 9zV&&TC?}hbaLX(BS3cL(ER[$~gjd"z96$22RQ')/۷D"gy<.RqqqSW>}˗P9O?4l}>rÇee&&&{244СxMS233`3## ǫES%/ֽ?,0p_q9>*JJxf}||nݺnڪGxvdz{{kѣ/y'>?KX5pcdeeճ'8ڵkG(6m0 pIu0QK>Ç?~dʌ3kV@kpqUsQڞ9{v!III'[Uܷ M-:ޱcG,wWAw޻5t俒(TBd1dt]Z?2DS(T `I#:yE {| )ZtiJJʗ_~ZQQbJ`dr6sww[rO@LfIIIaQQݡoʵ]v5k_g5KZcTګwo]3KsUv٘ͩeKCmR[(QNN\gq4R~ H*%ZUӪU+M#F֭[\eȺgnJ5LM#|5bubc ڞK]i@a9<U}"4Et*@U$&&*HbR):b%RH$X>(/id2FEBM;~Z>x"Δ7ܺu-&&~{+PZ9lllY 8zh"z{), 6[{!mq/[fey 5TҚDDi,..6T*g U5pJKK%%,Ku5ePTEEj1L>˗/gdfG[n%m[hNN۸O>$@#i8^R5]w6Ft5ĉnoܙ M ]=zDDDܒ]]NFf)/I%"H mH( ~9lPhv| $={[nƍ?_ϽuVVVI[^͟;w'8~~.ǃQӲ ,9rd(y_H$8t:]-j^T( .;zM_ 9 !ǂsύ zد^M֭ygϞ5ξBHYP`pVz78;;ZdiEyZ4!ԯ^lْuy({2lذ昈9qCRe] 3ftpȸ]:88jrg"4t*TÇ!gPX4IТE =vg.\323Dnt%jKAb:dk U-ӣW>ʄ8/^X|9BܡCP ~Ǜx%ڵdvssL$TYY١hM 3f~u+cr5Z4ռ4+~Ӝ5kzÆU+Νk>>Gٳ;d877WnW(R>5m;vP4}}gww3 lml̴J& _nܸ\O?2zzz999C :uj=%T+F 9vPZ۶8]+ZmiSٳ&6g"4t*@nRX$u1i ^43!و*qB|  l=β+ |ag`-/6\ebq>}χ鲀5Eñ£:dH}_~ W5e?>"Z;*3VjAԀ>Kܼr%Au`ӚQƯ,psss޶Ql Q+KZ{zD=f5krO,nEZz+Iv;[ۀ_ezg޽{7##nK 3t*$ C@(UT}[f"Br^g{ʛ|]D $|`G Rk ͉',*]lMs, ZdrIqe__-[j Aso6uY:A$rAYE뱕E^5t@"a5M-ZT^4 toEy(&f O:%jKO@e]ȈPե4ظ8Bհd -x%f_?L{9ps:k+Z}+ xeX *+"lwzI,CR,1<D"bt. M&5%l+_ zòJ.TkZ?ò@i 17WJ<]& J7 Vr]ǎ.?r l3fr2Jv>,oȰٲe˜9s-܃N8҄}#Htr%Qǣ X|yݦ ѵزDqF T$C˽}{~K͈*xԹ])=:ĥe|=͠!A>ptt-dX)[j \ A2669t:rVA HSG݈/)zG "O@wt~II'|E d2i^ѽGsgOrUTF[XXt? PPMAUt*R)1;O!1eP^$1R$9~Kʯvj՝2ѧt_Q&ХFҭ.ncѢESN1gldܼy3:sv˭ Hc`̳gNEڐml""|{kЬ\q AAbgJXHgُL:M~j;~Xeѩ42O~tۭyHd鳗Ol:O2;~ݻwϚ5-_BH nm4mA&gwu#)IRVZv۩wH|1S!otmeqzs#)9$tUmt}&<~~T)],r_@jnnn{i֬Y۶m҂r=P jmc۴A> ]lA@""}x]$J^Y|C9hqiy GJE(hT]bLJE2CvmbVllmܹ333i4Ǐ " IM-WPRX^QbHB%drYqr&E;l{D,2)§i||~ҥC^^J566ruY@AA5t6"1[&q P[4&#DRYaAI≸L;7-H'f1 Â"H-11gϞSNAAA[ld'O>qrAAEc$LLH""#K@^L2B( jDgPet s3@ e|}6K BFJc1YfR/"Rjhh:uTVV" IM oYeDT\To/Rx|MgFfeeTWTZ9GI" If0zz'BjYYYītrrhBQ .  NJ577?~|TTEu3gAWXbcsg̘!h/v! A݈u֧O7ofggl®nnn`yu6m^zժUO6k쯿j޼y||< wwwLJK*_>//b ٲeٳ 8'ϙ3GDAQC-[ ~={nݚ}7۷o믻v/Jum۶yxx?/$Zbk\D\\\|~߾}o޼W_ݻw۽z\"##@OO`YnݦM/^lhh8rHWW رcD"+V1w (3]Ftҽ]@AnEyCP):[hC~ǏdaaaÆh[[m۶hT!lҥ&Maϯ]d2& aׯ_ Զm글է1 :[D 1ݻ Ҽys"ܹs ˭e ( h,:>}={@~3--mƍ ڷoojj ɷs  7Fd0ƠB!ؙL&h)##VZ6p@Dk׮r?) Θ1i@hf͂hߵk(_v ę.  F-2LPh4*\blllLLL\\\JJJ*lg " 4E̤EU ɗqF7@:宮 zyyEDD Iؾ  EJ}M_FRXɇC {b1"‡޷o*UףAAHib2BuBHHxfI3,=|xmǏpw4kbk kAnį6m2d^ 7.h*--ݳgСC;Ȅ+Ww#4hPLLLQaQgηn{&''gAXXRRҙ [8Ν3D_~D ܫW&Qkʱq 5y5zׯ0ݻw^꽷o X;L6M_!ecǏj@Q3];RSSgϞs)S\vL&:pJPYϜ1vl8*ȸ˗ٳ2,D"՜bCcpܻ7hݻEA/|9>t@e'Ç=w>h'7_Rg,**Z"~?>fʦ&3fܶu]zz:H+~Mχ{t'NƝ8{Feddԥ_NNӧF3Mc}m۶nݺ?z˳u#F^wss344\~Taa!ćH%*+"L"W-8vP`v(A;@~ p捄[m<= [ڷov Ϝy/===̌P-6l([߾} <{,@f\HѣG>zd0ϴGޯsR7.BϞ= Wq[XXt "|~NnnYi!C._~ӧOe2Y^6l=Dhx*kPZZxF wob{앒1`@_Wkڷ+hѢE]@Aiԯjެ9035ՌcDүLAEE+Ek׬9ygggX%%%EENN-Ն{kMGkvΘ1Ai??zf|~=CBƁQVXXؽ{w++~ Z~vخd21k"V-t7r}Ց=V։Wh׺NǏvm:@ bV=lƍ6lqyK,M=w=Zr4^^^Nb|MI.R/_O{v'OzX|Vce 5@ԴC= ׭Wqtt$s 2*˨2o=J{loo_ӆ  Mg#¾<ףGGARs˫R_D`0@'!!!U@᳢ɓ''~?߾}ԩ~~>|$H&sC/((h۶me? ԩSNN69gϞѣGUUeT͛?qÆuwAbky .Z ]&8xlfپ}0OVcevԱ]}lmm]]},_"g͚sN*f:5SCf̜ګ(9r{ >mr$i߾۶ѼM MdSinn6lаPV`>둰k֮%A,\tU•+ ޝ*2z[gAAu,TEرcO١C[7od@ zQB9|D頜:&߽J:88TG_eeQifZ{*u4v##ϟ?hnnefWY/srsLLL,--I:Mc53"ѽ;="H r'ݺuzO5fe^ ju,""AA>&r=JA9# e˖5h}_3k5[}WUyA8El! |BAGPl! #(AA[  -AAz  H=b AAz[|qna)W*t lfjƸ}AA S[Pv55׳!h1j2m :Ɯ  Tغ0K j{=AA*5[J# nh/@$J҆vd2J+r'>AS%(d2#Pޏ~txr+ӟ޼~=//O"&S>NPLMBR^7[QKA>l*~k,||Hs Kg ErXL`o琟ORu ǀ.ĖLT*tҁ"!Q(T2BƍD"Y*7T4Ri6lAPb ~au>dX :BBOCD Ϝ9AlIO5?yY@@LC##cCC#&Tz@sr, FC;NMkAԑk-49%eW4iRddAO:վ}GgeeAF jHnkHfk H㡆-[5T[]rrr… CkkLNSȔFո5p Mŋ=(TjIHHx'O3c ]$}p eF2h-y֚57n8qϚ=Kɓ'>CN>>Bƍ;|WxzFD2)ACw#6wHNN %"lI'vE-y"C8]XXƿtRt̡2{;͛sܝvA^VVsvuuUMsU+W!L%%;w6ϯX ZSdž z8 z>MsUTpLLLddGGGɈxT E(xM{Ѽu"(""" һOɓ&զ hсseN]mB@5#HDEU/?-?""#._lѢS׷S&O^depX6m۰X,_o'''{ՂhM [&J,Xhcc yndggzzzm۶=~xm$==]vzN2n%Ki:AqR5E7LR@>OЙ#4t~`=vv`I&&\IS233sx@i  ")*BƏ711ݫa~[IIl6v֭uVj6mLWUEj?(7.ǣت(,L=\u#FU'7jֻŸ>yإ_- Ҙi-eZCTn4֬PU`dhԒCĭB -D*ջ71YEyf"Z"Zu Ԫk 4kLZmDն]{PEj͛7'ff9 IG|>XjX$d{ƶ$y;i<}6A>zmDy|CaUݻw1Z$: "WgSˀ0_Lw3BGp n޸QD*oׯx{(ÁT*TDʢAթy/ @:33e˖LT\G5-UCPn'___ͻr||QaQ-Fi*4r=Hܙ9rd(yH$˳Q|:pU`VVyJJJ.\_TTt豯6pؼyDHsBvyjB][ujH`2}ٿƍ~M1[!!Æ ;0GĜ8qCO (iAX]W() k[ A & :|(fnfe\z͸q!5occ=e4ggg> 5~3w^f^x1raCjʹsڽBx;D,,444,L*[nҍT_wᨨs\ Ə߻woyl_9\bcnjm15zjSew遨iӧo߱Jϝ=[R 4Zwywξ ?TqZ`6h{g3@'JSL?"ܱcǻwngee BU,'F":+=mdnnlrP:wttT]/$$4 55Uǖ.YR_cMݥK^|pLMMk|!jEVkOϘ胣nj]f-\)I`V֭[7o޷o_I]ϟCL廮wUT A#Z>`TV՛=WEu^t:ٹ8 cթ!5DڣE[Qyzz5{{B:cNx5QGv"iK-ZP'(+ H??xR@ܤ]cgUR [X}:YP.ףBY`SA> 063f_H{(􍍍mnNv&1[UP\Tdaa ZA?lVu&Ҕ\M|-?ޣ繳]ZRTe-{QsoaaaRM@A6EATnDi0L7ww:y̩YMDOUDP(fwhVVZBu GCMVmlB RճM6: @Ў 4IelhR.ikh/mZ F#gKuTV  Ҡp| {dR( e  # #h̖ڨ:g AAhDcpmDAA>>`RS'~@A1[  H#U_k#" 45fq2ձVA& gAAl5A[$\ibH(|YL&S4byGAٳg.\M^J(d9 ."=tu(gOWWwHA>&t6b@@@  FPkذ4fB᫬˱mlluuLtgKW̌؋ffVVV:S  5m٪"IWn<G/23DBTç(d (-ccɤRy H Wձ3HQ]\q A#޻`Y[¦yX,)Jeeechh'iHs Kg EX,qsχݺ 1Pb $&ill &&B~5S,(-R(FD"Y*j?^^^J#FklA ޲dcbb&eUT*`@!0i(B Ϝ9Al}@A =Tt v5;9---}P###SgXP-ȵ둜2xիVM4)22rРNj߾Cibb;>t 4ÍsFOǎرu:W^4i9Ga<onnu6X&$$9::.\k׮ĮΝ;Df߿yH-[k֬޸qĉ _TT[YY;w.$$$>>y+--C{&)&>/嘭cǎh4Є ッ  n`&Oy˖WZr )&/r!QQrssBC}ǎd___@J o߾7yÆ5ja lvwC8]XXU}r;wĭ,̙q7yy99.\YC o^ʛh*))ݹkEаa~~|kkk eךKcمi&"<}&%%) WWy)l[QAj`@@dddYl}A<bjb>!""#._lѢS׷S&O^depX?_f5h >s슊аwpMIȒ)DD8Du:\uU;uU[PlmeEGk+NPA"! Y..=sOӻ'lv;v;~|֬hS XaafgͺpbӧN񱱱hث7DbQt,;[6^~;9992% gAAm6jh_155Y~>W/LmB͛7gK8)SP~HU/r[xQ߾&NT~d̐>o~;;cfؼ'Oak],^7͛9rm*CL)gok.ܾuА%''oC] s0={\bR6^^zzVzV|9fh ݻkN!JKKgΜٯ_6m0%o.G߿)u.?Q]go g4GP_\Wnnn̂+LᣨѪum>=zHOcx9^ +}w+(뒊+_f561PѸ4{/Qo7^ٳK,-z^$s>ųfپ}yP˗@e?ÿGGGI&O>|xvvߎ9R n߱K;l\_\\w^fP(dw'Ϗǃrss)\MLM=T} ۤabbbddD^@YfϞc===M6*Z"@kּB9[#G80"ظÇٽMhjc.X3֭;vXLܹTs*߳;nwWZebb𣅣FT2m gg{ 6t*WGDEI"%K/VVMavvON+??w\leF.D?j)YdɤI(ЫCɓ' UvK.aaVY'.FxCu,l=+ejfF=>5@ňGا "{y7So11[ ӟtڜ.8991|)iYYY3qM7ohkkkddTZZ'nG3|>SFڿ7??6 ڮ}<<7"\˔*-My_vʽwHtv̋.*,?ijNΓ9QS׮)mlm'MqCr>}v~nSGkkk_j٪mĥFR(?x\?@RinF @]Wa+'iGr:VpH?Z{;|Uin``W7nܙS2m޺yD'ΦOoG-=ZU6 wl@nǎbfnެyji5I^(6''…A!/pkSʫ /7Zl5vdf-֚3 ECEETݻM\2uZxލ۷n:4521Q7LBWW_|!5ٺEE>oieսg/G'gyuQgz8Dշml^yggm+=}`gP_-[xzyնQ^(I>[|;@e?VZZ8onΓ g;t씕81#^OBY^s.cc/OӽP fQWzzܙ[6366xp?rACF,|Uԉn͚?/*mZ#֮27ohn+aIS/xO"̚5f;uxgSziB#ҁA};tzQ xYhx¹ib <:Ԣˈ,60 ؄99*To#}Pl[|>O,-ʎ߀]%–a"K3#zS۔{uX%V'O?/j`eaTo%«zo@Vege|߇׊z>S525 hLG@V M鏣44W._t6>R6.ER[SP]8!-!lpa C[B8!-!l[A ([tUm<4)Ï?ܹ/[nҥ666*69p`vVV>}U7ƻH$~{{eƊN:a!C0%iiiSNx;wnR<-M:tkSnpiQfllܴiT5k֦8;7r?nc#m[I [9u괿t]NVcj–d<|HI@?%咞V3SSSfƍ._I~;v&N422ZjՃh%$&ޭ[IIɎ;O8Eޝp>CkO7qv0tĤ-[RP[d8'"#gV5.]Nؽg_tƍ nΝ;C 733{N~a(lX9",ƍ#G~),*X)[oܸaF?Pe˩ca#h!liK.ZCG%m۶ݵs-;{8gOHL|IbB|nSRRU~QϜ>Emۃ8VaZDD{{ IEG˖}HǢlJ…{睘mۢ׮ [U)YYYS!Um 6mN aKf̘>dȐ?칳i(:,[o79t圜KKKz`Ҋ-?U돚 8`97oLNN޿֫klmmihh;0p5 Ϸuڕ}LKK+))խB ƎCqmWl,%T*=z4*r\TTxs[# ?~0jHsss[diF<={Redh^ZZ*Hh3Y&fffتǒKؖTZk ոq=zԡu9Rbb۷O?jߗJZeI_GGj''MZn?le v#F gzfj6P]4ȫw׮]}۵֧첗X,7n>tU9 6P#۷x@fijʭEDSﲓ^%‹/9KN-SMHޛ?fwrpPx5;O)4O?L `jXb˗-faKcΜ9U~O>ΥÆQ|o4q!%3fYєN-GGWV^<СĉK/ [n_sSآ)Na8–>t4##ĄYeffv")ݻTbeeW+ح(\rY=_Ç̥@󄭣lYdP4klӘv,,,؛)?yŅ=UJlڍ7޽;[4{rRԷ诚TKkt#/ôL6?:gl> 9-?ݍMzӠt_^B؂cٚ,-!lpa C[B8!-!l"/^ Kb;'h2C- oL=lffH$6|~F^-Zxš@}P+OOObggOfcμUTu?,-mmmk,[BIɋ'N ۾w.!ik ܛ5 N&E[TXP=jXaMXZ*--~?NYYYfP l"ƮJH^;uҥXP]ۦ[ ]yz(i믿H-:AFMuղDVٙ ?Z|رchy)TO?޼o;9*<}:YY!==-O}vj{ͺoة?۠U-O>~;wҮ۲t֭I'N3vlou?cv;:8DEE6iDYkEEE߬[w%[iӦhBz={n P6GA~bKkU>]K^/_R!e7.@U[hk >+с}n}'M ;v  rpp`7aK >{֬g̘9s1'/Eѳ۫_nnnNN}PJ*ٶg͊651NZXX=n;7jh_155Y~ML.\|I'''Wڄ8U(^rhܸqϟ?5f̘܁DKWjRzɿI:v Po lڵJOOy&_k)oooYRRR(;NΝ3'$-={.1)M//==]p| L9%AoM _s綁=}[cƌmaaѣ{wSSS:4ё&_pMCCCurr֭1/bڔ˷oӣKJz'Ou/_. g͚URR2qjց3hpuRz)|x[v.]s[n5(x{M6e's xG,-=xX)keׯ+!)?ARXPãS'JN͛n7tʔwʷFJI)o+^ֺ'7ӫ Po7n*;dӧ=]؝2eʁ1l K.:M){ITu ZrUbb;w۲V|||rU+W";;}JˎRx*VI ]s27igϞ]diWؚӼ<ӧ ٳgӼ6*zXoPTut,kddDKB3h:3O,%xՔ^ $I'Njnݻ}{cW\\;<]K>O:ݥKgѣȜ-rCuޝ?LR;{5g+bȁF3űqq޳{-){IjVDZeogg }}];ǧ\hw~*$*222*J)YxQ#\{vMULLL~ή )5j~~XeS -ӦpvvwްaC vÆ#GjٲEQa[ouRK… ǎ lllVZUҴ+ >`DxE0JZ׬[o#*{I Vٷ.@]ywfx<ޭlɓ'}?? >}z,Ln޼yȑ32 ]N|}}'''#3TBRւ7%-+++n ?WGQ;UP(a>xߟ:H$?2% }x@CP+PŸRinF @]P+tv/f͚j7 %_F_s!l z-=,%%%?6333116kOңV%T@Ҽ3O.Yµ/-]HaKE K,zcΝ<) ޹cOwRxȻvYYYSe'OzqNNNӧM6lXY+mҥK*:NCcccZ6thY~ҭ[&8ahhر;%s8|iv~eV82v=fzkkx{{{g^߱cÇ##Fsڵ.]Ĝ Tխ11ϟ #cho֭lmlMڢE c9̾}C3@#̔+<4aTr(k\}ٗ+Vܺu+KX,l:PsI>ߣgqCbˀ{i!}Bƌr* Bت(c͚=oG?_<-)l+GG [i_L4*P:dٯ 6663fF8P[콱h͛'LNeq&(L:u-[;ejaaATdTvvwޱcGbmYMDa}n -9^m:vpsssrr C{IHL3{vnn.5ثwǍ;=k LJʣG`^taafgͺpbӧN:99a=zt(EϚ]Z*bv*hwܑ _e3сQcdn 4hޛslXDbQt,;4@݅U]v{}Ckӑk.+++==>ɺwF)}y{{3hi/?=zԞ{o{{_п 9>¢GԦ}|,u#Gܹm``@Oo߾E( zmݦMӥ 'EFΤC}ُ3yg쉓'(TնmZ[[yxx&_pMCCCukŋE̙3iaE|C򇖟_ 3OPxck`hrzzz:tHJJi;7h:g2wfϞ=DaKPo lm۷t-SعstҥKBB"}vޭQFy>/~xf͚RᤉC[=ɟ>,7o;o)E3_W$wC"ђH$-=<7l޼9nW`fj,'}Qa]+DJyƻ͕WdEGV̂׭۷eC 3 תhl͍AH4{#U`VT {ҲÌZ-2#[uXIIɏ?l2ʕ+7nܐ\xΝl|aʕL\OO[{z1:tG ÇJ>J|o7^ٳK,-z^=rFF 󳵵=iN|}eVݔU8 Ӛ]+cbl4oSڼ<{,P2)Ca2Qx Ϟ=c=շ@1+7GAUx*E3.:/qdܸ;wxR[n_|1e2 [WXPбcZǎlBaa#"FܹVLڑQ```bR[դIӧO><;;oFp訨{2SB!qttTv+B&eVjTUZYW)DR9~xPPPnn}? w}ǎ.]:kO!Rc/9;+xiږc'J_PnE q԰sPuVsa.dG`TtEؒVDZeoggn:t.`g׸e˖V'Lذa_|޽{Æ 8`@016~sR"Xˡq5pÆ#GjٲEQa3%Kf;vL4iڵᱣGsE4O (.+r$V1_ w`>>!!׮2%<Tɓ'e FCdee;1O{z)}э1xРށYYY...Ԭ|}}E*,))qrrs3Sv=di#GFП|le'O*v--.AppHaeeŜ?&LXhaNN 38^alѢCaQxѣGԲN]r]Z˜R>{1 .-ܥsd Ku#f۶H)'1;\!r2ʶie;YL踻WqrQ~+|95.O~w*6$Դi [f?,@]aff!UVO(LbqvvY"gδ@e!liD"/LsMWWt/?N䧁@]!-!lpa C[B8!-!lpa C[B8!-!lpa C[B8!-!lpa C[B@!*'H4ݑ|vm3&Px?=99O4Q233oҴ @} 233/$'˹@ tUZZz:&.x [޽]j/5A[[ͽ=>yqƆFFR[D"y(GP鎨POb>_@f3u-?d-!lpa t/5[ ܹLLLw>cƌ7}?зo_kka] \xqȐ!iii^|4h"OOO-۪2"ڱ͛7|Ç֭[7o7nE^ڷoO mݺUOO–!lBzn.Hz.]PTHė/_DyU+W펋_415IOKhGvO8M(,ϏՕ6jșQIŋit.@?3[gΞ)oek-b.\HNOO/):99Rɿ^OO-pvvxOv2ը0ܫ~6[IM\#3zqum*]ZPE꺌a Q>[/**xH͡dIG^Ta >eaaeieԜ'O,-jyBw[3gNw$Ivv|w`Yk!lۦӧ>M7jԨMoJ*[{fNNBaC&uut 6C?{A8!-!lpa C[B8!-!lpa C[B?^@5J<}s>VUݻcѨ>twJKKph[UңKlT a x_ӎ] lUEk/=ŚT753kՆ>9VYYП{8!-!lpa C[B [i?4ˣ'ͪ bD\.U7lq{ s8!-!lpa C[B8!-!lpa C[BG$E"Dڪ>1 BT(|kWssr4Q053hE[GGa D?ĥ@ t% ݹ}")ɹb@j`[ЀE)zvi-:gN504"l@"Hrssh#5inP(4[[аzL!l@C@y> w8!-hp$4݋Z)-666(ÃT;}U\"##۷oQuw^___گF.>>LMM8|3L0!<<<00ݻ7}ɓ'0fpgO _"ǏO׬YCO?nݺm۶Lk-1ʆn߾}_ѣٳg~/^ٳ'աFkVBI)J;?tu}Badd_~9qDט1ch矟ڂ2gQ:xPfrss?Τ$ӔyFCZv횛.._,(]1h/L BaΨIQiS| *Z;ߚ5?lgkss3ґZN###.]mǏߴi#$-hp_I?)i:-S6lڶm+N8ѣGrJ?+7Zj<;㪼ce&dvallԸq _?ZJ ~wPG&i1(iZoookkk} 02mu!!}NaR7|upT|}jnnsP(>znUeM6M2 (>Y}}}5j0ҠM6mΜtvvOQ|-a7o*puuu{Ŝ_`A)mήe˖l7l1v1q5k##cǎR='MrJ ?5jR!+++o66m2e*%->_ ʓF*go>.Zu1++233a7p@Hh駟pAuxZ K5{oٳ߿OUv+)!ik5fzCU7o.ꕻwjkk;991ڵ.R#%%%THʯ]n롼զM7L:ֆ iJlmmOoHCpy{>EIUZܹ23RQsСC֨ >,i筗%kU5"4iYpttԪLPpqq4RvTFdֆ MF[*QtT==]WWW:* W͆BCCR*Gy/S F ssscUeD֫_&-%/eUMM[Ч}\uu O=D,yy19٧];]]]  @ hlguRJ^Sqݿj|>RO@ l@âTfx|]Ce0 \CG iS[B8!-x<,?Va @1%N][J^zYV؂Ұ7vGk/0@Z?C2ًlbf}'7nMfdSWZS\\g򞖣|*/**zEIIIiiX,D\-@ `#%* [#K Tb([2$4,0{bw<8EkN?LڑI]ҹH檢S\MK$vO#hO(ik)lS-ӤgQacOtIܪĜ-=\L ECT"9*%r0H iI?UCU`Ϊ BMZ8u{qr3[+}f=^(z5Ox7S1yK__ [2'l2M3gdΞ_a2ŋ夓is{,朖D%sr9[ {@0 [lc l@%eA`ٰ9[ZgK:ͱ)JzH'--Ö|bN9w:6t# ~`$2W r6~0@"i2@HIẒkZl#5M%%}ْ&-yZHZP~a,Fdojd2-EIKK^,&o2-gc'2aK&rKߢVzU2; I %y'K қTp-LbJ+ I SBaei/#yKK괖 e?yRU0iiœv_ZResW&- 'kd~?SPHUb)[Kp( U{8li)X8 Pe#ZaMvАU:lƚ&DYIENDB`PKs#LN|AU-Pictures/100000000000007E00000070DA29978F.pngPNG  IHDR~pWKSJIDATx\ TUU܋&)0iIer) Da*fLHXIX>2PD|k-L mVI&r),TeyH2^8gۙ=s{qpYwٶ* %`Yf)]DqㆲEyPUU"ZO(RՐwTQ:p?Fpq|\ugHPg~0x vU~:n㧇N)%ĨGfN{z͋W+ZjNyݹ? e0I= Ze]}.4Wأvc Js8Kns9s@HOO4iqsA2dȼy󂃃SpsscJOiiiYYYIa~otrٔENأ hqe-lm;_ԃÇkZ3+mvv Snݻwʕ111+Vѣ$W'O./NiZWW碳gd֭[`y̘1w9~8naÆ~BDD:)Į]p>*u6 .vf}#@-q{Cnnn[[[dd$/..u$\ccc\2hР͛7Z!6̪m- LN?&AZۇACk[ͷ`555pQK,!/iKS[ct͗pEEEˋජ'|…N*f=<ڶm~!L:u͚5eLR*MS'}vgH'*_\ _`^p'X1Ÿ`Kt{oCd6`tkW>LRoy'ǏqxY;Ygx7?:ǎކr99Y3Bvb,9<*ͺ-}pxr1_żP[}};C_'\bL䞲>^1P^1P^1P0d{O'ob),}-VR(R(R(AK.}gٍϯ_~ԨQ2C 6@aÉ̽g0c k{Aŋ755ݼyӆZͿ1bĄ (]֭#aҥ>aܬI |)}g!+W/_~ԩր9s<բPV$~ڵN)))@#Ž7ntpp@ꕅIII^يH'}fٳ5k^|E\v->>h$'N ځ0 ={ 847JfܹZ >uʔ)*fmaaݻU߂Mٹsz)6\ż|GFD+䲲2{ӧO7xoԃُ?XPeLQ`ǣ(wppq؟;J/Ad8CxbGGz=~BYL,qhHXhFCի y%K > Dd駟~7o~ѢEv Dc!$, \:".baܧMv˗/}|GgϞMBP-~aÆ!fKLLܻw/j+?Ad7@TJ=П?筷BH]5:r`0ŀ zaaa|H gզ\ƀ|oR* ȮvS@?S}dr 3gΐϬX֢@ ZPaNN7h Bc|wZBKL!na6&&0 X0ȑ#oߞgCB&_1lڴ :j*()Xuft-[444̚5+// fgg[ۣ:m-s(H bCV\)bQ7SZQD6lffS[PmV5#h6+$Ȱ]`H"\ kv_Xiر*-Tx̙hŇOa$''*ўyɓ'WUU!& CISlxpn%YġCbz{{O>lN}ݱc7ڕ`KpCʀ0>Df`` c?y$FwD[bd6|Sn'!$$Dy؊PKJaXg+LK%R(R(Az=|%.CB ի>\z A=x|2{Neq-**lԗ>}(`C yمwZVdh t2!k4$Y{i5ٳ̍mۡ>u*8I`W***\,- 68>>>BBumcc;w|ϊFt(dDv6-- 680/UvC ^K9SA,]ޞn>,- 68?y$18ׯ_7?G5Mkk=E`yWX}.g fj·8 7t|m*8ؾ-[ӑaÇ҂_DZr`f.|CzZUj՟<; jmMuɮ#q,[ F#. pW#͇ŗ35s[ý=z톆;6,J<{FƽzPi2"DJ F0J͇ŗ35s[ԃw\nMu14׹yzܮǹ}Czֹt|^<~sJ.҄ʲi:z\l5~_QZ|ިqcfmoZ]Ya"vWHSoJsuw<8~RltJ1P^1P^1P=')z߃j^1P^1P^1P^1Pv+\[ع\c$!"uuu111K^h0`߃n8_^^/ nw!9曓'O 9v&&&yrss'Mpڃn8dG=݌L^9"4 aa…III'N̄F'n/q --T9ndpL;!%%%00Ѿk;;;///v)p n䁛ef Eȱs p{^{5{xx޽{ n9Np<C::WrhE9v."""} D???~:"' n_z5lG9[]\K;79 \߈}H*//O< Hh֯_lI3Us@_)Jb+JbK=di}tR/~6L/IENDB`PKs#LMj -Pictures/100002010000003000000030C9DF8FA8.pngPNG  IHDR00W IDATxY{L[lc!% hAkuuk5k6Mvihe[uJ[3M{M*i0~sL߹ws;q{{;/Cl<]}}_>@QE>76w[y'?xPNV:H;tkh.~>+;~QDq4 :m!jd۞ǶlWfvH n5bxwHooMMM\ FAi^"IX=tPu8{3kzJZW˹ܮ. ,5؄ūWbx șK``h1sss);pxk=`Te`o"\ω@F K1xFέ\`:DʜN'7ѽ,-6ՍFOE5}fE<<[?VIZ bDaˆW i0(݆0|xS I17niAVFx(),%c:̜} Wi/BF*e#+ 4Yz&F+WT嵕 keO@-I> 7LbM{EWoM?חu8}4ݸ@h4UF9/pcZm;w\ܢV;^RT%0xu0 2VQVN]㒔 ~EٳFf"žX&`!Ss6V3玡,M[1P( 4/"$֠>S?ݑQ>xr;ȠT'a4UyA_\ eؘ54w===<ޗ[**51aZ+ՇcpnH]hlW:n٦Jb׷9}etX+Omvv`4q4}k-u@@9wP sZ~es"bۏ2xz+/hIqc '~:GI4r fgPbG9BdFmu{m4}9gDlD5*fl|,30;c4Ex9\pљ$y{hWW[ڙf'j+ PzznOH€Z3 1ϴX\\6>zr M&}1;+UG3ʾh C|dHD~9v// `+{w4uCD }b6sB$!e%L*}ci$"fgɻ.xoW%cL&7RCCe{j@E-n{$a.£["piM<^Tjoooh՚ 33JKWz<ΧIG"1Sj.P{V3PZ,(iaxYwZTˤD}\aVNz΀`}s Sufr!$T؈mx%QH F(x|GNa%D굅Bь֐ xSB(R*tCӡd+ui;KIu$2a/&3w8,{ʋXMpN((8hU<2@FhZD $E ǁ#"^nShz7YAQl-+Qs 062sic1Rw(.J^9NGLJߊ NW ML=\d9jHRi}9."@M;v^- dl֓ S"ʯC"B8('OXFzff++tXl(Jr{htP봅l F4-BMO V%0;9%}^D`|r*1昌Lu"˵;>&Ψ?,*)yԩTrS(0±D,>knv|͘Zq3O#[śĿN*N2@ܐp-:"r3r9i'5$ǓUU0e/GJFvG p]31–OB7<Ůz GxIENDB`PKs#LLe-Pictures/10000000000002920000012F5985856D.pngPNG  IHDR/yVIDATx\轋 @#[4b-XSL4j=$5]Qņt.8֜5w>{ogw쌎H$" t4AA*KdCsAaU+%j  5AI~W 2j  tjV* -l-  ʐdz>e[x+m y!# HVh"%4}eʭ@aS6 ͼH% > _X,dYXXHhZ` J[r+m$ж}GG"U  u!*bݮYR d^**WRy8.Pr0UTS˳,?spL K^ƥ,zY.#Q4%aCnɮr3r޾Q*3|^amZ8z԰sJũ湻5YcTiن84%O!exKPh[1+٥g8:6v4IY+-:QP-f٘9lW9D: 5IMbW\8"Y2yr8TStH$()LrEDkbhXAya{:B}DrIѯ?X`̘I?Zz NA|yX530qe8 MyOỏ̚veV/+Ϟ':6I?6[.ce:FN\}+3  , ߣ'>!+#m:N\W)#,=D*jVVOrXȡ |956.V4SD,tAXi!5[[ţm);0㚐~eA/MqN&g ML\CCDaqut8kcluvɊ_7y}[q).^Tf&t:(D=xzrPmSÌ?~h%qsԵskSS#:Qb\|f 0%d^8 o~džyyoMIWwѣ;򛙙X#\{2'.XQQK,˘[PGAe&o-?h9K>32U7eWXҁcdd myS&{ YDy_pe^CqXYnrݜ7qn  HiKD͒IJN EM(h4czlDgWi$XűtMyB.To3/ 6`x9>y&p^ʲ1qkdHE6˷r,C 3#K6d#톄_ 1 }r_)w?lYK!߮'I_fzsf m Ka7]|5lG/OX0wP ]{;\`i'*f9o׶|޽LkZ>O˛*㽡cLYf3żYCɜ/j H ˠk`lNQ7ɾ+WyKO|=¼"s. h .,2kW%f(5X[b=}[4)h*>5 ;JA |:Rn]D Khu[?R_W6V>bII 6NBfC"5yFm[Al‰2!c]-u–Nq"}=#.W_2  E=9֌9iڴn^^/I?w!ʾ}vΝ̦[zTzwyxy]:¿/YasdolFH3;L-~AVǂ` 1UVՌ;egg{]Vwplv[5YRMҧǡ^|3ިv~̘j9x?3~2gJ++}HI /CBDuSx'd=jWOASSC;)+ GWlZfOҔ_oX=BĤ PVXo(-XBE&A@liTJe[ KtucKJH,k Scz l!GkP9:Y3^St]^rLyyUpX\WQ{TH6[WѣX?_O[G}3ݚ8@/6F:J{Ӳ f˫5y?Ȗo]X G\W3ˉLc & u>Ҫ(N9T$*gD,4$ _J]d1v\ҳ20.)ʢY$0kƃfn$fnnQ>t:Mv<웉 1v[h?x`1}M̝w=;jDσ{V).8|yc?pWn.Y8>î݇fV͊ eL۸a![6elXf3֤Q懦oǛ>k}\HTqQdA9¶ETgFfVU&gIqV -l=+%ەn 3릛6uKWTq! RyK+^ŎeE][ӚM ֭*V#G=ۦQhg锖7Qi,s-KJWW |0h7B8=GpzZ9tֶ-tS`Amby? ޶ҫƟ^/{.m__(~N<ϾB@(ow zfZ qx'XZX`st,eL{9xԷ|*;Bkr'Fƶ%|c؋WF$Z}u&gZ{ό*[Uk4M_VdmȈzeB.lŪb_re\q_EN@&l6[y*mʵG,|5JϰNc1qvnaySGEwa?B#*&Thݟ\77($uʌ 8&:F^OQ_5L ,_]U|e]+f4ًg`Hbf l]{OeL)&s2pUk2U&qO -W\N01yF&M?][6nf顣vScK=}Cqb3I2T8*d[4yra trJp ,WDOXO `4AQW\O+WZe@PH(\pئvV!gQqOYXl==c=7H#HY@0VHA\}]]=b". &ʶHIAƔg]PȷAAjHD ( (rĄţ,2uHAE"@XZ&((( 2XQQaQ T1XlJź2uAiL)S PA΀  umA3l# HeAA ( Rg@FA:6 Pk: H=m۶iiiz"ۣG޻ws`A ZԪ0e;::zŊK,QA xT_+e!]Xh!ה_Fپv횓|*m:Px H.xw;Xӓ$,1ɓ'NLJJ p8SNm߾=Q~OzÇO:&M秦B*I^^ަMbbblllM֨Qs&&&/t!ZXXL<]v2%+)ׯ_oذ!>>uٶfÇrG.پ}v-7n ]v3gbcce///Z>**j 7-HW4`ƍ`a׮]X}ҮLXcǎΝ;/ZǛ7o^zu.^8h X{(#lzGP3 d[d%.] ,t:; ukaI;w .js,]GmXnC'TJ , >?_~%88X$?{޽"iPnz3e<}tΜ9P9s$A3-=B7]lHtRXXط~#{\y-~B:)˃^1=R= }|"^6mB|uvv [l 'NFްy c6N7o\~[nP)[n'N|U5nee}۶m$QOO/##~Ʃ:KHMtWW֭7nܸRX>}8 Wazxx8ԩSX iAL6Kjk׮M0AޥKdMF'V1cv߿I"hEx<2SQJ\R϶'O 5c ssQFщv蔏?xժUзo_ɾ Kb 69rI&fͪ|&Ajy믿JITҵb ŨYhbb_Ȭp8 )=Æ ?"X4(i @FA:6 bgg3==JDHzp8lz9?QjÖF ,{U$eCzc^hggdfV# l[h6KjPiZOp4::Ӭ9s>.>7dnzX^:bڛqq񱣷*ni|׭{۹nHD&[yS:uĦM-[>|x&aUvNN>G;Lae Dl#p5 (c!P~kם66&>Ann ᄏlM;y$zݻW徍V/\e+s8''6 4+ޛ}] Hɓ7Mxٲ+lBZۚPf@ ݻylkkCs͛cǞJ$_k_^@k6ޞhY Y!-tx:lT: Ǐ3<<_F11Y/ VEuq1gbkHIJz}^ZiiyNNƵޱDL9NpXgώ}ᴄ.][5~ogi:/HŠl#@D*۷J:yy޲Ka:H56,@\>}ɔ|GGS`?DDܣMOz3T 6 ooO$;-[ڀN߿6gΙYZHu'O233- tu]Ӵ%WrlPV& nܢmLi[ws>r3T 6 Phŋ/[ 㰅 ??]D"// xh氰O ""ƍ;B˶ 6ݸxС'zL+A?o/h:#Hl#pٷoĉǚ7_dyw4݊W̜y%[140`o^^)[;;-٬S''Pˁ! .g'4YnRЪMkf6對5PiXY;6d87є~woCC$%1l;Por/L²ׯ mmLL4gg-ʒ,o52l#17ׇlf\\kx8cce mA3l#4t"""4bKZMոZyXHJ" ULiJ՚O"F-MWITLiJ՚O"Fn-]%IRW1i)Wk>B;ihxutt XWWWGޡyٖTIjڍi)|P(} |B>3- ,Gaa!lfnnnfffaaaccckkkiif5} 6T=2|J6UwyXH$6999E 5-H,- wVѓ;///_޸q7n:O y6 #TiSj5|2v/1R8111666..Riggp9Z Iǃσ7&$BsF(/ Hc|cbb@;A2 feeU;GA|!227mڔպ( uHÄggg5.Vb@%Ĺs\]]`i|u mA:GE>ojjڦM~i~&h)=gϞiݺsWO@Fj###7m{W_m۷C8nooyA*7n;~uT/n%?H "uƦgϞ]v>|y.]5: 6 ֑VTTԹsgOOO%ȥKW_O? Mgr@ݡC__ߘ3g8::j:_umA-"++ҥK999jJ?ׇ>}d4B7w8#B?nmmݽ{wt( ZAIIɵk 6la@G$C;Ȑ!cGӳ63[}༼[ly={xyy*eAD<~-Z:uAev!ScɆ {wү{⩱HD#޽irso۷o%=HZFٴfff̘l#h>ϯ&sS3f+H˖d\mEdR^6||2Dl!^^?L.\I6ºudjTǏuVHHH```֭^@F^>}pرtp 7R7PKIccիCX={"#DZiBȜ9R ȵk3 ,:uj޼'bcc[' mA&!!gπٴ) `;\!U+lH?;94nL>Zv_{7nիWo>`|[!( ͛7ܹ3p@'''ח\B!gSBݲm z&b.-mZCyBm`srM݁M49~x1j 1oխ5.Ԡ\BCCEGGrVMoݺx:v8eʔnݺU˗/ψH$փ"g:up„ ƵpG[ITHbb(Iu8@ݧAFF3\`ooEh>M4y+OP[P{]\\ƏnZZZ߾}5>WVQd܀Rċ9rȁNz:uTBDxx8( ~˗3Zr[ [l%_#eqi樐% 266VrQL5jT-iļ}Z}ۃrk0Wa``Gզ)P(7|Zã&֭o-C ߳;XxHZhQM{,,,_Tڕ+W:] ? x` /RF zQhcffwAa'5Rd[qK98ŹD"85o) Єv/AjxZ׃fK\~>e%+7jcǎĉkÚSw>khh([F{R T>Ot*EPܯ_?777MgG[.--駟`&*{5,,XcU/VVXשS'àBjO?8BuL tO``}L{{޽{ϛ77t+C-zóg.\?IuT5Uf C>AZɥptt 4hYlKwvvv_ƍWmk111Dm۶-]\ṟ~HS ˗<^\|-]BEDryǔ6UHe*N?znnnPO9xѣk푓Poen57umd:1hJfTΝܹMZ/yitW52:Cj™3g Sk=4t޽%CT p<""yDȁz^^p5p\$C nM:''ܹs5Qdᮂ*SV-iS6mnɓ'3[7# jP͛aAvڵɓ'?k,Zr݂(?4H)f|P!C^hsݛHxͥD8ݾd&rEo"j J-\DMCD<05MN:edd'O0`@m bX|G҄R2hYRܺEߧBgSɖ-ˋgE ܱ#vQ 3ҀTLRRҍ7@uKJjs|CCC'NI˩mAqy쟕|Y QfƒWqTJJ3gDPk ;vJ&QkKN-߹~=5aRiJoC yy@#"H~$>[t05776}^vm֭z)"PP |eA?<u`'''=2# N=uzBu #㑑# =⪷7"ǎQ<<,_7kۖj 8$:(|yё\F!$=zxyy;v,!!gϞ5BLMM;vjj=fAF/^(**jݺ}Q;;W2?@FKFOSGxC]VVFؽ;8(ʎfjJ32'=`D|h蓝;bc^ 9}@S'Lp]v 8P׶m6:::66] ( U˗/` Ϟ=޽ՠcեB#ߏ5`Bm{m{}{~:tEg VnݺղeKzvR1zhbˉ}΃z}7k--͜|S'v߰M5:p@II =E5\@;AFOT!͞-7m׺zQŋĸQ!!S pv̘1oaaZ5> ^J R5\ҹsgN_qܹc28:(HL,HHȜwJK|>ڷ;sĈm|f033ڿQQQ^Ԕ+. nFƚU7( U ###33Sz\p!''NLl|fnۭ[E}滵"mXh6x1c@ `чtRPP2֪UH()|PPAk׺v>)))Z ԫWLkdDW&WQQIf&,相8Izv?~zeX;wl#T"~ALL ڦ@ҥKa$EE9׾}mڵ+)=.H$zn:2ܢE ^~]I }NӦj\d <_,b\~]}}^| ǎ[ST19?iRɓ[or*doO`ˬ-((صk^‚K:dumzDjH>Nd <_,bdee5mT߼ysܹQF˜k ح[rx8-d~Pf"80futoٕ֬+Wrss^myنGR ɤSj5|2v/1RUn߾ѣAAADq|r֓'l֬#ݤ\{5uB 666pl6X;޼ySSѼlI:>Rq)|SRRw "tpp^ԴaWfnnw~sܸAdX}ٝǏ;2#ZJJJ ޽;9P|hl+VIiJ՚O"F*ITT:|XRuOl_'ر&FgOY5)Fz;;;3 @_/&UL 6Qj)Wk>B; >9r$fy<=9Gu^۷]r_ϞƎu řyO?ٻ׀m3GY^B7WjurrrҜ(j&J-4VuB"FT`jjj^8*Mxxw0b_s„ÇoZtkV?^ʦ&"*>ƍ3QRRZ% Zȃ1AgFFF||6WH$痖IZ]% mmM>>[KMY6~}UV5wHH0AfM4#p2p\8븸*PATRp"F$ݸqcС̚Updd$h0(fp1B>Aør劷wǎk29zzE|}n֥KcǎyxxT^!`ӧ( U*|>QQQ[AFQARR-7o짞$z*44iʔ)lBPPDۗ.]ںu+dյzF.\ ʮkNΜ9ìls\;;dEì!PA `X}R GߟYNHH8y򤏏O.]cw\Q'dX_|FT`f탲 Y?*22R}ӈcǎrO8QMyq8Ç(7*{_Q)͛v&M?ΠA BgeeŠ<5u ￶}a? 9244t߾}ÇF'sIVwO NfccSTTT\\lhhȔeAD1ɍ7fǏ[jM8ݺucܸ

|8a>VsFٱIvUTagm(P(V(ZSAPAcff Ġ@gΜ0`@  gϞ?~|5K2jrfcMMMp@FQׯ}477&22YUlGG;wtСX $1dfflkcRSS5 D`#LVV5;v쒒O8Aզ[n;vƤatS92Mp%%%5mڔ|ҲT%&e~ p5k믿i03Ǐ_rebb"d 9Q>}TY?m6u}; mCXC͟??>>7uT] \غu.P+p3D"0Nʸ{FE"oyM~M(B?"bC|/Ho|4blL%.]'MP33(/_dZhj:>g=^\pa޽\;wnڴiђKvݺue۷oGnh QQQ!!!˗+dv9x k׮-ZHb&i]7w ­Lbeee<4i6+(qR̤&%3mvn=NF\d6~,^LΟWzmSѣ) NNNP-3s 4Xh\WWwĈK.fdd|PT$>E{{{zEăN<Xj7Bê>|k߾}H7n駟V#ou-)bi /޹sE$/^"300 K^AD` vvv6~=ť-ҌfYC˩n;;ȍiA:l٢`cpzJDIݺk*g\eXp4Xh^!ۿ%K 2/]FCM- oݺ5oĉ wܻw/VIlhU@=rHZt@=ͣG (_pKm0(4999ή]ZZĠ͚NVd2":9bcyzx7qlHz|o+ ^ɀop2X"` ֔ZC϶΃FDߗybWx@ dfY[[/X@`x.\iPU0Ѷ"3y1Vw]]]FW}ˠ~B/ 6>3B쬑UsA rs7$-(|1->4iBtt-I"j`@~ ~ .\@}CCbjbkkiӦA}P6ݻw駟 W6l@ VA}gϞ?FjtRuuuo.3!h0|8 ҧ#~ ޼&YY 6޾_O>~ rHAd8+m3s3c`my&j}ҤIK,j m!o{L2E׏?8ydF+lٲgϞyyy~~~x qƍ 58dOƚĆ6q,X>ر#[h!vww0>\EBXmxZ.,aHV'nxf'`-f͚1hTK$/n[vf&!4[~)'^%ÆAdLUm3s:ږI""|چ&%]MC^Ļ2[C/ϟ?^pss<\fSJs9T7}]UE\a!ڿMMMmegnO<;1`G3yRm9tbwayy#XtbU*8V=]NߟZE.F P)[eR-Q a )ԛfnP`q]gE/_ٹ3|lCz2.˔5PXTTdbb”Af@$/??2y2mxkQ fd]vA,bAph666... d dAp+9zD㻦@B3`H0#o޼a 6l[XXddd0hǾ d6m0h077~"jr'0൵ >Fɓ' >}tG"cRJJJpp06>(Rse[ѣG'ݻA ZCA.11Q!2fpr0`GYI3&jmcRSSwٳMslA.fuD!N=zmc4  GS&11ӳu0ڥbt)cǎ=uTnn={@֬YѧOǏӵy^^ަMbbblllMּys5߻u?/^8qְ2HL0,,Aߢ攔$&&~ ڔ=}:Yg BO]w=ن <&6o,~gSSSX޹sgǎ p^;vܹEW^ v0DtB:]E#$E Ç\I&q@/EDD8p2dHwA Ŕƍ'''3(\.uw܁_"S6kݻw!KpѤG3o<(KÇo&j'He:t_~ V =-e^@ ظqcTTԮ]hVm۶m͚5ÇQ5AG tqqۛ~&`g~'NXU!!!A%ܞ}!_|QM(ewwoٲ>҅Z̡5wuŋ:vXROkРAuaݺutBO. td*S2pz[[[4t)f~C ?ϫWՋ)&,, f[!҃f҉fl%:L7ɟ&`,ږxC ʻBE D7n8`a̙DUVB߾}m3a„kמ8q{ 'Ou3f5NӧϢEx<޽{qZC3 nڴ)xc F =-e(mqy޽{_e L j@ \\\WtJs?v]]]]ӡ^ٸ:]^^^XXXB{Pm#baÆɬiܸʕ+᚞9sFRN&&&_=-F}F!$[/_=w\:BOKzYzrnnn˖-ɱcg AnT͛;wN~ɓ'Z}D"H۴i`o; Ϟ=ׯ|:T-OG fffZYYR5J1\M{{{5ڊOӒ^(KzrAb; QaJJ 󳲲I:t|p\!pP;vȸeXP*.LHn%^5IIINNNOChlk] !dӧnժUttt@@6i @wPqerrrFpr)[;iԉzJz'''3;L] 2'hΟ?ϬMЌ]vu֍vZ]]!C8p 44?Tw;H$f>AǏl77ȉd*fv4eAD1FFFVVVL411PXzzz#G}ޒ}|^e766y<Ԗ!ޱ eZwAFQ[\\ t!22RMc:4<<|ǎ}n5$>>ɓmڴܹsebzP$Lr[نAȼyZO~|˗IP{=dvr2EMPPTAFQ >vwwvZzz:#JRڵkW''PGG=z05UaaŋSSS!wvv^l6YYCߦܺE숍 5MȖ-o7^<~&MUEEDӛ1J$66V{6( Jq:vgvN:EDD IooE7,[ݻ%ՑM~(O>b5kT 畔$3%Im# fxAb6iŋ*{>~ jdIJiiixx8޽F5CH^@Z:f_tԩ T3JT2_lWky֬Y3w\mͳ ƍ6Dnnnngr622*++H缾y&x?v,ٽ[lGEEVլv ˗/w o^j̙3չs琐KKKf-9VvM8|ӦM%TQHH.// ~u vxx#+=MwHO6o޼>ӧ]r+hmEGG~3n[nK˖-7UɩL>&3'G!P쵏d>%}+WnڴÇ3f044۷̎ºu$˚2:H˴ 쮦߶m|ɓe!>"##bj l6 5/_~AAI۶mrQ pW\?襌[Y˷F:9rʚɵ8ΠAvm#YZNfffXXF!ei%D۷yEqoTD@Q)|i6"jX FƊy5QnIĠQ,Xbb"(FE+X4f'낻;.>̜9;sӃ zR CvvvCקO/^X aaa-Zixb %sѣG5 2͛7qzƍiAnc 5d)65jTDDD.]m(4oVhf9axfbcg̘ /e6#qv:E7o.tڵϟϞ}~W}6xɍcǎaÆF]uyĝ guF*w- -%!Fd[le.E'xZz)S?~ulvgΜϔzcN8|4bҨyfģp2C&+*޲e D]ᏊjsԞyVU: 63e a5iFNN/d[s>l{{{t!,(xdxq%sFvr^U#ω638(~xx0+USt/Or-BpI3a1k9^^^;w%%r*~&0Rݻxj6yrr2"_&T>hŨX",}o߾x.^x)fsKFѣG#ԩ(f믿paXɓǎc巔gß~ p3|}};T@mڴmC FPlfAe{Ϟ=-[ƾ‚@*'U0 .|'sWwީ:06f+[*GtܸqB=cck ;KٳgXYbb"] xxx>pp_JS5*oNƍ8>T;Q˜Qׯ_g[dlNqrN9-) r\ : <\J$͎ KJJߺpz>XZ"vtt&Ͳ};w<׵+O)o.эϜV,*۷J(a<`ٳgCKz왕5ydTFuԙ:u̙ck66m*5[3g"6Uֹsg(7<$(7*s͘1cұcŋ/Z7~-*f"}իWhz"::uu+I )fZݻk׮UV}Q||<+77WLbϟ?‘MNNF Km͔Ԛ͕J/6m'wȑ䍢Nm۶ťĭ ='848t[.8;vB+P;w8<@P_İ}qҊT?΍=wۿ^PF|#G ^JL&_K#f HMDw@elz{{C ULcT;Aah:0nQF.\HMMEo߾'~{\\\v휝<}q'Is1cP+ӧO#G&Zz ׾VI8K%tn'|ݻwQڱժU~XM)5''4vwWlso_B#vuuݹs'~ ,L:[t-YD@7テxu.&MVـ5kL2Ǐwbpú~بx/32<KOp^LE7^hݺ5/}m JK9|J}&k 3 y=޽{С Ns IMM߿MI:N8XۻQ]߿C5R JK9|ʇ]FDD8;;LAq#G?stt4̡5p x0X'M)))/_vYD]5!tECWpB r1QJ^zAAG!~XTXYfPK.-j GI剫E{ifC] G 0h ZKD ͖H/هڷo_>}^xaaa4f-5X|UT޾d^f#:j(] #mbbׯ_m ))){ٳee[nذ!>嗁 Csq}%XYY޽7<m۶]xq:uDw777Wd@oe'н{w G]m\^!޶m>?rHDD 33sƍf͂7ǽ=zvډ'HZ#WSfsznݺC @|"uq'O&&&B&lmm.,XVСCq#ZD50\yx8iߌe060`ٳ&M0^yxxt9==UV~-3UTqժUQX9s(&j$_|ヴg̘Bcdbb2iҤgW+&Op7kB?p@ttX{ׯ q&O_FXXXrr p9.]ڭ[7lW 裏"ы"mLMMDDDIɔ7njӦM˖-.X9"daCІ$\}m۶vvv_)Z2kݺ Yf!ټys\\ԩS?νua+tI2G ǎ?>m:ԨEe˖1(3gTwlpo{yyoߞ̅/]:"}4c\2!$$~޽+T~uqV#dDǩ4wJnBwǧǏ x͛7믙Qh儺u~83[lAM0?~ of͚G.k 6! <<YtȧN| .ϏYt; &ыBNXt?G c'O<}tǎ7($ۄ,8q̙3W\٬Y3%mO6mΜ95jXhZzj⪱ŋcˬ,$ G˖-0|-2ʕ+ve8}t>."EpM6uvv>tPrrr@@ 34l T%֓f/^NMM݃)f=4'NL0;~7-ZPwy Qx 3Ew/_s$s߾}999QwAMLU㠐j7EAժU4m-倌d䈳DDG/,,Gy塡G[ 4mvQjcKKK;;;跕U͚5kԨaaaQCx"###==ɓ'=BH3[[[J-Q:d$ۆg)S|S|ڵqEG8dss󠠠 Aj@@.>} EX|.7??۠КUVҥK  pΆ`?᷶FڵCXKEma-|}uݺu[~}NTw>B!+*Vh@8 9c3ShH5C!Lˑf^Z55@FCûm ?~|F|||2L>}ĉV\o LЈsCsbkI5(giFR%B.-*r(<Ν;5l\z[jȁ0 :w,u!&&tm!9rmC\&quuq=Q \ d  m(tR___@h 6whI9JtM66:%mj7ڜZTT$'Oڵkk.+++uF#i6|2g7zxj c. m ]b/f?~ 4'j4.xJ8Q~vq͟kMfmnw3A.l͛&MxbƍW^]n]&O|VZq _`u߿fgA_~٥Kf 602IIIΞ=[PPuĥ8p@ttZhD׆7n3f .ѣy9vڸqnݺ-WZe.]&#'äi%S?"Mh &tɬY~={GZit;,߼ys\\ԩS?ׯ_ذ O:-d).8sѣGLgΜٺu먨(~!u`j0 %5{=z|+V[J[M6Z]^S?GQޣl-l. mB@kWReĉ͛7Woll,B>wsܹsV҇^hB:m![Ƅ %>>pq@ubB\ܵk*|7(zO>a- yRb|wNLڹԊϳsBH/p###q2唞>nܸ?5jx)S\vCWwӦM䰯_d۷ׯ?WȓķzKk6 \ln\||VT2* uԹuVzp}`4 t5K^9a0[o\ DZ(www|2ٖ-""1ҟ}& 6dȐ۷CT;;ww6::aGRR~D[u~;.^'6++ oV5<84|,___P!!!|M>.ҥK/_5 %%9Fs޲eˍ7~^%'t̻yy5~yZ4LH,ه{ uR9m677G82tP&W\ b+u3*--mƌ6m>}:BhoooKKXXؤIVXѤIUV)Jmgg7k,̙3j($Ǝc !7߱.\heezi0U>1cUvI=xj$|AȐO{E^եyQBX<A_(!n ?.oh9;vRA5ݻ  *8xOKO6Mu>訴6CpmtX׎vuu=z(KϞ=%D9~-??u ]iy}4Ee؉6aÆ!1`Hu-9K.2eʧ~:rȊ+*q[hfffnܸ޽{ WbBVzjۇZBW>j?KAhGDD ݭ[7,m]6"f6IO:uUU8!dk^u;E&=!lٳGP}2qD ׭[7o޼wԉ#r n^y5P 6\rxx O%)7MkJƂuem.i!!!ǏoԨ? !G e<<<:wުU+j&BMF/h/$`eesN 8DnG!MR#u$!Hrpb cd  m 0H h & dЖgJ] dMͥ.AD@G7Muz'##C"D t#T!+ݻ'uB/лm 0H h & d  m 0H h & d  m 0H h & CPB>Ҫd  PDZK47)AA ^R+jmn 5q &&foZX (Ǽ|IEJ*A+U-W'ʲͶzqO}/  rչv%jP5rss|Y+%++ŋ[|)& chT\D怛oqٮ @)B{pxH5DbMMAA#ܼrP&ƽ'a=/ k I !S4 kfa7m Go sͦOa -qd-$A!Di*Ufp 7 JS8Eq~6 .x6v '& !¸Y8-:cZ ;|gs$Ao-ZLE[UwLśuLcPFA *WPYlj͉ΒTw p/l Ќrs^-pj4HΔæg*6'Pkm Pjp%V}7-xOr~jsA%1V6+ٸm^WUm_AUylN}63 I `FP+Zߥ/ AA{TY5~A&HReMAn)lA!! ^IENDB`PKs#LxawGG-Pictures/10000000000000B300000017BF4C1B94.pngPNG  IHDR\IDATxgL[E !ѨQKTy{74kK=KDl`G;FcYn|˜fvE̽g6/G~ /30^!3}֤ITTԩSy1UHLL|?~<7fkرcGn.\ ӧ;wO fcǎ 8#NJJڷo߆ 5kZjV:t۷j`%gΜ9tP? {vȌ[Ppa(-̈MNNFUԩSq3gΜ={ׅ1K. ->rH_:y]ܛx1c0UBBB.\0l0ѣYbŊfPPZnKVp=zhڴiժUTN׊+6ol:3^xF; ,0ڻe˖͝;~ќ̧-E*5 "r|dd$O>>|X&LP`A^KpDlR<6{9h9r$BoU^a-ڂƍ=欪=3 [Nvsfp?~hHDD.]"p޷o_eG'M$jŒW^I/$5jlL իW_ފ+Ĉ>>>N>ȪJ>tb'#t T^z"Xf J,qꑒ"iCٲet͙\_!zf={V-[Eڵkd!,Yq7jܮ];v"nܸQdu֬YdNƍ"T\Y5uW"GV "uʔ) bʕ+X[yeڵ"p˧MA}EwA333Ik֬),*T`ը&Oܯ_?ɉ>i׫WF6ժUv, -wΙA ށ)YzOG6mD^tiV(glӠAڶmke`TB8Lm6H/SٴIiŪ="۷o'9=a|" 4ܒMpx?ʽߒXAJѧO͛G +0m4!@!軌+5={Ta8yڴ{ 5?~\Jçh5ظqݻwE=B!}M[&CfD(R.k%J<{̦8\K-&9i8o\.ph (`e$S`drBޣGi944TAΡ7h6L@d{8Z+ 88XԩSGdUCJݺuEPɻsP%8wEO)r2_a u3zdv/O{5FTT 2DAO똞n*pg3d9iඕk׮`H'= ƛl jT95jfeeI . >QBTӧOLȠa6-ψDSKF@L'..BL>+4xDgĉթS'VLYC ;ڿ3pq/Z@eu/^㓜LmxZ,ZH=]ʕ+A9Gyb>f {,>>^p E+_oذalllNXWIýRV) !D2JF_guйz*R RAA)pW@p귮_lڍJ>;;R>Qh#1<&n4q_`T6LOFG o7LHͥC+V4. /e2 s>IENDB`PKs#L㹸,,-Pictures/1000020100000125000000F99AA20724.pngPNG  IHDR%a#sRGBbKGD pHYs  :ݙtIME  mtEXtCommentCreated with GIMPW IDATxyXǿI"J7 -VuimQhQ֢k]z]ZŪExQjťjuCT ْ$M @<9s;yϙ3<0 Ab+ߺ% X `fȰ@8s.&V#`0`P+F$Eb\xrX}3|[S+fT`\s[PfpmNlAm $ 1DRHpkn Kup8fF $J,-ڪiHP쳗2BEf e tCKÀadvCbrؐ"x;JI** <7#JyNPQzI:22T]/wgUO ѐ&jV*=+}-/-,,-QSSR20俽gϞwb=lKm7)/r0yO\PZq&/OgS5T] E Cl+aoo6j߶7ҾMANx՟Oi DUS vgbld.n0&JBD_q̏+.=p: 5pD\-eɆu1TOjHksamXWX {=u-955U={)mԏg`m8rnӘg5vAc|(> S1-;Lb:;1RT?GXXfvQyԗgY,pL,`ѥLLGqTխMIꊇj۫&rd21;I˄JEhk;6W ~qKWXXX}3|2Q&E+|Sgx/}1;T<c Lͬ[iQnX==F@&Ab\2*ELqU^Wksacc*汵S7b|u$m̀L\K$Ȼ'Gp;eŗTM #Em]DEN藽acc%g}(&_^^GYz Fn1V.|hZoi;*ے}bpͻ(/g/sUקGh~ ? z ^!|n&~[7`s8bg7?JjZ1~x 7n$fc!/e0 ՔkE?N²34^8 /OOaf#/Cg#juWHݽ o}GU{*{JUy^ԴGm=GMѩ ǭH<sfٗTYT>c=`XXn&À@ ;'7RU~{)'JN 87GṣŹ1C5DlbpAcmv:80cn iH³Ʈ^37bSߟѬc0.6<548G˫_~kȎO su>N}X bQٰucb As'gkL} \/Ǐ?]SaMDDpI~7m|s/fOS*8l6dlct.Oũ,5`x (tN_C^J-g,ϹW`cƏ`c;TA'_2xbD>}^c*=/ÿ꼆'+0MUW7-=5/I cb.TmߧvlfR~TiS[߫<,Eꁭ-BM3Wvʩ_Xz^ {'pqm{TkkG ,>ߛ蹋QR`w_Rᗆ3{w-ѹ.SSUҨn ϶} H >A^vW&TlݱeX( QB ڝ6 6jGzi9~1] 7khۭN%Ԝ- qcr-t{;joR Lw_ZÇ8߃pd`g7y`jj D*ł-l)ýs*ǐԠ:$*ׯ?/{^j߮ꘊi2i-AMUB{tu#QUnUA&}GU$BXrՕ%P7u^łW|C 2}%z’{zi;_Վ i66)_/w㦵 g~Vuf|QUߟk>01/?!#'OÇ͛KKKL0b̓&L7''111pssCxx8,zƍ[[[>|Xi{ll,/_<ܺu (su5c)+e/_@ @ G,f/^7*mŰH$]1cvZB̝;2A(ifذaVڶdDDD`ᰵm~xףC App0ƍGg @ PZ/ԝSu{{{Й% H Q" Q"D _l'; Q;9A}#D D D "a0(Bn3a(Bn a<ИA$JA$JA(銪HKx D R~~>&M>_<}7@^담4%/>.A$JMj).$$$W^[y… qFܽ{_}.^`h<¡(Lϟǎ;r1g :T+V`С?~<6mDg Sj;V\?ظq#}:AdXk.bر#GT꾙wŲe˔[XX(?A֭[SNO>8s ֮]+O[o޽{#&&6l͜9cƌnhGŘhmnnn8z}OӧL[h-ZDg S" Q"D D % ց"R\ Q2(B.AP D % % ?!h1 Q#!1'OĬYtʻsNj0DIP\jL15whL %1ajD0.A"a":(ՇXruuرc![Vsٿ?͕X,Etxzz >>>JiJko ahr[ @,#558}t?77ɘ:uj4aTsQ8qݻwGff&BCCSiǏ(}333CXX4Exعs' ggfG}1۷o|>l68uJkOj :Tz\_)ȑ#HJJBBB8 Ow} 5%:H$BXXn WWWlmm!Jm۶+uw)XGpзo_lܸQ]S\Xt)}9s ""cƍ Ï?^^^͛7#::gΜ)IMni ={gTp#u+Wm2lll5k4)ؠD[ѮhFeFiQ)++ڵk#'O@(bÆ )͘),,Ը\| sHwNNN駟Ƴマ={"'') #iijFm%3f3fL0єzGt*Q"SoQ@%h Q"c"CAcJZhF7AP\ФHD AcJA(A(ADT5M Ѕ={(5@A}#D D % CЩ_3Yp!YѪ_DI3dDoS#(Faa!5aPhnИRK`SsS`TdeeaܸqziLIbO zJAvE7`+t9x<4y_} !!!pssCHHB ={V)}1b~S[՗c,X{Ig}fxpss… m6??<<<0zh\xѠ549'L _Td$taL2Qn޽Fbbֲ駟B&aܹ~<=22\.QQQ8|{NNbbbpY_8|p"..-^׿p]cѢEFQ_@7oCBB|L&ǵkvn;yJm(JEEE8wsΡpc׮]055Z?u8y$<<<Я_?1 ˗/=G5Srrr[PPЬAxE~px<\x@XX.]d4Ftt4._$rDXX޽0i iNRґ#G0uT% Ñ#GdJmx|=667ow׮]رcnjkB(B `ܹƎ;v;wī6*//7|СCAzz+ۖ]lJJJP^^d 8PNDuu5ND% {C$JFa|@7A$JA$JA(A4N=НIx jCFDWENlRִ_CFxJIII2L)вfddӳQ|rׯ/_Ǐ/ m/mGʼn'  h"RSSGB*a6_CF|.Fff&\n;III􄗗[]]'N`BUUKSaqN/H֍mh/CEVVGG۷O q8ysزe 6l؀A)yImVl2,Y&MBRRV^kkkqE:u +VP?~x饗cǎaʔ)JWJJ ~WZPP>.cAAA_d8<ϟqaժU>}:p N>-oԩS?WWWݻ#GlU5m(pqqA@@ĉ6Ç2e 0ey޽{? FGj*C*ʅCԆ72 rl޼8s @*ؽ{7"##qڵc6yrɒ%?~|tJQH35^ll,+@$) pttl5;Xf|+f̘KKK̜9jfFwq}wL:m8r표oVVVM*wĉHLLƍԩwݚlO, "HUUUƖ-[P^^Yf2`033Ö-[-O4iRRR0sL`nvIFFV^mXx1n޼ L///q]Xr%BBBеkWԗ,YH; $5lDh] e4D>FmtzQj5Q}찭lS=&S"D D % BrCd KrAr6h$(B:(B.a[)aT(:A/!Z6:("`g5:&ְ vkCEmI|P\w(L)WvxexyybҤI(//7:mr1d\@4ۘ!WWÈDFFǏʕ+Fmz )WPFir3g 3gķ~kt6ڮ#cH~ͽKQ?H[#R>^ž={{Fe{JҮј6)5"wڅw}3glvVHd0pJ.._صk/@~п:tIe~W3f |>FN8xuw=dff/233&J:?SxXl>X Q}pUTTTTޱc| ܹ4ϝ^j#RxСCZÇz*ƎxL:;JJJB'O1i$%UDFF}_x"L& iiiҥN%''O>LMM憤$y >6"x< :YYYJw܉aÆٹ]%Rm͒ ///WWWn)5uVaqFɓ'Dot|8PZZJԐ7o"""}ţߊs0g0ax5t9rNOHH@pp0n߾UVaJضm.]=2j^bO P @SXb^VSŋXf>#"//@Qf۳ <{ Dqq1jjj0 PTT{{{y}aȐ!=z4aٲeضm2 t|ape%'66˗/G^^nݺam(L =daamm/Nl4 HVi$uo44agg-007`}V b:\j-39b,]_ ={̙>H$U3f ֮] P@sb1 Mc)zHӊ+t$]ڶmdH$O{&##!!! $LQcyѣGQQQLO… H$RۧOxzz";;Qu^`cc0 :dsXHK ??XZZ*y!|8;;_2dwyڒ%Kn0=j +Wmf֭Ctt4z L&Wt~3fff)Sߥ$Hl6=zX,puuٳgQVV.]`Ȑ!Ó'Odggcĉ$J 8p ȯmˁ9)p9O="J|e,'Oɓ*vSRRT GxxRDUQVXhIWaԶMi3uWWWdffޫ;?4%%%J”H% UUU055mnǃ'ajj DTiӦ5&__FH^xJb _DdBs[Caccpww*HfgCnI^j7Nm۶.$ggg<=%I3FA2 Q+;Ӧ\_j'q +C 1OiŊ|Զm'LB!zJӦMC~=}M(Dy˖aԨеkWTUUwdz&ŧl¤D˅rOI"h>kb, AHHdz&E,,,zHD cCjW'kёdĜZ = ` \ &续1$ EIENDB`PKs#Lg-Pictures/100002010000018C000001B7A7DE2A8E.pngPNG  IHDRb$bKGD pHYs !dtIME}g IDATxw\TW3 ^AQ؍hFcqݔM'f7M6ص(ġitms*#B.⎃dd2d4~@&7~@&#Yt;2]ڵw;f='/J'~s8 CF,?|yF Oĝwx]jnR`tl86 L\.G&٧5XZy a2Vdsןݻv ~%:-EN&h&Bh[A%Ch4VS.hav^cgIx~(V}f^>>ک1;*)YȎхeވPm-()瓏?VL&J.?;ÍzSs;wli5e*K I#턌槥=߿ݚ^g,^pOd^NoW485z-BX* 4mV-juDA&Z|o2:R aS`ϛG8fs,-,Z~l&_u\)?_?/όg1(qf0b<dg/C徿m<1dD EArl]vmϦSzV,2*w[Y4{ 28 wDel?omIn[zNVj mMyah\hsrKO桭QvU +lk-rQPVиj/߶ܗWgZZ${ӑqR-EYnl_(e~L׶B.BxLn'ſiۧ/?KϋM 5;ZZ1j?^4l# 3X5V(;vS _bEѰm=[E}P(i>x[AoZ^*=C\%obBa/P01wt6 x;/Y@C}zHE4MEKP8nUI݁%>>j[$徐@lmma<@N~<ܖ˪DTJkhK ??%طju?^דڇ_{7]?/`;.t2IHuULnxL/-b_Km ܭ!³hjn+-BYߙ0 @ԙLV.`䁴ṫ\Rfey tm PUU'҆|ֲQWKQBn$ DQ& YcmKM9rd 60X6(K BDQ*Sзr*3u6ʻO1nnS5@PѸ7n[Myuko،WIw 8Low IJln`jT>;p hų96TɒsD8 ٣U8ݧ= װh)z]iE A$v Z-ק7;)E ^/{y'+D=I/Y;EgEH $A@ `@@ `Aߡwunu!E@{ %}Z%%8tvx~P`'Nե+Ӑw;L F/yk$QBYfxIO"ol=LL\jG|wb7;;a,-yxh<jlg~/#]>>UUazv3eI@pLnՆQ~ûۯ9 <^mzѻƧa*.atT D0Ώy4K^cs TV=)#^X|3nT騯ɖ?4]cK O{t9j~A6MC2fr[jr~i٫\vw}X@`.Fܳ.aLp+hlWq+'^xwY &?Melޞ|ݎ=:Oe^^ɐq9_~u:rY{կ`?^@c"8zk!:ZgՖŭyuW+O{}hA$J㛏[[[:cGW~0cc:$-|д7Ozbd2uBJM_y}2<@#s' Z*ƭ@] M=aa1@ #~Gdѭ*)!@ C !@ !!@ !!@ !!9::'rVNo  B0غ%zHlsW}jba``lvG/rF ׊u7 #}mhock-2U_2e`241>aI;6c1Ti) C |Ţq_+Xzov3C>z9]|?'<?0ꪱ^Sy;0K˗9S{Z0~{7ux{`7 Gtxf1-mV$c7ou;0q3j~H/ʯShOSQ(T^/FmcC+/䀇B!4 =߅AGnN 8Z 1\=^3Xsf 1 GLs\˿_fYLp %[رܹkϠѻ9ə+I2?/ _[ȱѰR pĪfoq]Qs4S`7CsCB0l`a^GW2mRs GqWdq唕 FUUS<ԏ[+:;!RjW7В˪cb(]{l",3h2ԑt0# ޫ Yχ(Qdx*Ak(xr?_ ɍ%$ң_iuFacϴCy_X|4x{_κk@%zm)/\Do3Ǜ89v9VRF^Ĭٟ렬)Ե JrFB,ɕ<_6}((:ƍc{(CQ7l8A{^{.>E ryEvyX6⣯{o 9SmC\xJ7y0,Zfœmf(F&<0G,8ew}g.WfFbq FMG|Gk9ߜ!4S,̵3. ^'hT_HKaִD끛E伵y^;/[oIL-/[yXZԼflHؠu1NKnn Nm2]vV'/&RW_E'US]BfmJ<A/` * 88b{0q#j%AAvX5z7xrjj(oZ|l<^ 5nzSֻ\"(!|_.2%z^ztpwe {,O@ ;ӧtǏ$ !`A:PGR:P7vy] @ %h+KN6?Dzͻj86TW: gꏉ+ ?z!Hj֏oİiw[Ĵ}߹}Wpjg/NڛXWuPQ:f:)},Fj3L  z zҲ%d2juB#W5B{M[rdw/d/}Zu[0xTez;)dSvg,l|v[O hz ! ˩*jkkEb0(e2Yk+(&񱰰@Ramm5vvv888#ڊ\]>+{V*Pr1ނc;)OH7|ֶs !A7<[nQ\\ܼ5 JjU0{{{cgg\xT*JeeeeNc]NC6TUUdgg7ߧVmO77Ex(5Lbj* ;M -W-HN(1`zNGaa!7nܠ"qrrj.dcccBxTTT*^ ɓ')++wwwۻ["'~X9ж?458Qi`YT# \ωYp_MkZT)QPP@AAxzzIpp0#GP(BHHH~ȭ[(**'Np QQ dx5~Ȗi7iN O-%cD_/o*0(B0fKMM p5F#0x`8t\9" $11\ccc#2S!}?=NqBZk/T zǾ Kk+&H"++Jϯjǻ݆TVVr5z*2AGnN-Z5$;@:t:\Bff&999899´i=`ooOdd$L&nܸAvv6@BCC =m$0DStz233 //ԩSQ@PˋѣGhz*.]Nhhhsa@"##WKDD6!M9pyyy,\P} ,,,3f ܹ,&O,~:6md2zj!~7Wd2i&_."< d2q RRR:u*(~Rd̙ddduV9rXQhؾ};WNE a׮]0w\j0L?FTI=@Xd 䰳cɒ%**aT9sW!421c֭[?~<1110 ^ݻ9}4+Vb!0BCCYbOfza!⣏>B׳b Qf+V@GQUU%"CЖ7nyf ģ>* KKK}Q ͛q0J?AaYYY޽3f*(8غu+3g$$$DEx͙3gػw/-b!!44Ew^Μ9# "<1L$&&rYVX0@XgϒdFa> oNQQ˗/ wޞ˗STT1 (B0O}}=9 ŋcee%"t+++/^B?^EtO?ɉٳg# *rfϞ~)uuu(B0FO>חS ߃S'|F!jkkٲe !!!L0AD L0lBmm0O3fa>2f,F 4UC >xagzJFEղe СCAdС 2-[jA`zC' "qqqSB0M,=z0@Ћ=1NCF`0m6Eo(1aٶm.{nlmm2e0F?yVVr?L2[[[v-ыͻHRR: cF#TTT4oh44 h4 C#J\NNN|F#:hn@VcmmZFV舃Cfoo/FfΜɶmHJJb B0gϞ%33+V ɄAzJ(..n,//ֶUA\7J?NktGP^^N~~>TTTP]]#nnn7I&{Lٳ(ˉ'X|y{7o$??=z4=T*Q*888tzv90ワ/aJ%/?ٙa!bk-Z0HQVVFvv6쌯/L<[[>urWWW\]]h_]],t___ kvvv,\[h"܄Q`.555lݺGyDdd"?? 13d̙o=9[[[ rss&99\Npp0<[neժU _~%#Gl5+/sL0`pE.^d…H$,,0nݺEff&""">ȑ#/Yt)(B0zCLlll*+a{BbTVVFZZքrN ...1 .^%::hp=ƍ:tɓ' Y)((`h$33T bŸ 4ȑ#9r$%%%i&!44T4#ӦM?$==Ha!=CQQIII,_\@]]ΝԩS899-+&Mb„ dddp)2dX淛XXX0o<>.!Vۙ9s&UUU:uTBBBXp!0PEFF͛7INN7111 >\̜9۷rJT*0Ǯ]&00PTVVr1222ᩧ}Ãٳg7 gԨQⅦͮ]Xp0}@TgΜA&1r./ɰrrs3R߿M6ammͺu8qΎ'n:ٴi狀Z 9Lƙ3g1)))ɓZ^LnL~gxcu1PbfKK; d0 k[wo0`4n _q1Ν;GLL k׮EVPT78N82dF3܅3g/:^w ;wd| K:+B~69KˡqD}Q6ՌfMvL_(4y =Jy2,}}N&ÇO?-F= j5'N$>>${=ƍ@Nl6}tvʕ+E' !FRR~~~-0Eݭ]f$u'n]^ՐtyW: cϙ&ʳ\&ҳ߿BEDcvƆ3grMӧ2e 8DVVIII< ٶa䐓BHʠGS\è+@&WaѢJaqdꪾZX]] ر#Fb !}VX#رc b0aBs/eZ-{a(Cٻ̡y2lQ!̶sW[a֖O3{}\Xf  OJgРAYsa) gfϞ=hZa{9F:11aÆ1X긾 P262CҎPp~/O>$lذ\aQRR""<۷9stڣD5ޟ%5{ɤͧR UBbvmke(C%`0pa.^ȬY4~8q"|DDD0n8CqTӧOgǎ^U@F3Ga][Ըϥsx,NaعXQq,K_cLH^ÞS7+R s0V忁+ &ڣm۶իŘ իٻw/7off9Sp[8p Gi͛dffO{|eo P{ eW54:T>;~Kەv[8NTc>k>;;1cƈ%Zf޼y={͛7#lv5j|ۘL&)>i`S`& :Kbbb3fy~ ӧOgϞ=ZJ |Jf}:^^^"7 z///O֭[h4fQF^@jJHH666fp|g&rG #..>l&,!$$T$F믿[e!57_9>>SNSRK.兽Y$Zrr2:ɓ',U&ON#99,Yv/`$''o ٳg={XEd2fϞٳgͦT||#//KKKhb׮]̝;W-x`jΝˮ]||4Œ$P&۷3vXرcپ};&I񍋋#%%EFRJKK |B=zggg,J+A`8;;C~ӧ|]~aa!/^dʔ))Lŋ),,t}ZFDs%"##%@:]v1k,J(} RɬYصk:NqҥKf= ƥK@RI:}o!d2ONBBl|}}h4f/#55hI'ѣG0`B+7xxx0`6` %-\rF͕+W(..`ZN0H2yd ( BI$V";;ҷpFFM+W`iiI``(}4ȪKQWWN…  P*XYYT*Q8;;7o˜@PPgΜʕ+z?<< [Z_ ^իL6MÇ?(uAQQQ\\LMM m+aP*3tVBhpccc.E~amFpp$7,,ͪ&_4++ ???`;u8994 .]"''\ ::777:YVTTN#$$sL&<^@@ 8PL NNNs)IST*#++ H:Jr|IQڴh$++ϓGpp0L6G nL#\\BRRDEE\.ԆQFqFbbb$9ZJF\fΜ)ɄHNN&&&+++QҴd 22Gyxjpt\tӧO{n7%111$''3n8/44S__Dff&LFCzz:O=(eĉ\x(V^ݧVTT* <SYYIJJ ׯ'""#Gwclذ8UYZZ@ff&fƏ|2 d"8qX1`G{n6n܈JbڵL4OL4kעRظq#w簾STˉ'$peI~!&Iv5h4\xX.XF#OfÆ ذn:ƍׯJj5ƍcݺuذaN>h4봍ŋh4-00XD ITaa!Βr)bbb̦MHH@Rl2\\\u|T*Ǐ'**}ƴi6$&&SN1vXIŭiNaa!>>> dgg,9zֻ0$%%m6FҥKXŅK2bmFRRzIrb`-ryBBB̲?uu5[l5k0h uРAY"lBuu٥Z&$$ sRYY o2HNN䠦ŦM eѢE_ -ZDhh(6m"++}Ĉ$''KӓJjkk`},Xȑ#ͮ9r$'!!ևnR{drU!}`buTZZhÇ9w+W4`V\ɹs8|Y=::4\`\v ???IBd2{nXl;,[NNNj `HnW lٳ\|狕뺀˜={Vm\JPPP A(++Cr!-]FJJ K,ӵw+++,YBJJP#""$'`6ׯ_SRUagg' U[[ˮ]3gXaΜ9ڵK)d2<==~ަPr}^e2عs'#Fgo#F`Ν9%j)oooɵ ())URƖ &?O~?ʊǏK6RJIIަwww X[r-Ο?ό3Di1cϟ֭[ rݝ"!h\RիW lFJHH`ʔ)>beeŔ)SHHHl$5 咝ƾO FII NNN Ihh$3Qzz:֒YZ[[.)U.Q^a,qssF# #G0ydQ'Oȑ#I.n~~~H\R}R0~qMP*@G%&&FL(؃ѣG%7R7o!Cx 0"##ÇR>|8!nnn -qtt:bJJ C  C"Im&GGGIQYYd,5=Z-bE/Kzz:ZVRZTVVJťPuu5*J2UUU!4Y۷eC%ǻ{ IDAT֩Sh{+++9ucƌLlllTUUIb T*ՒksQQQ!)/5fdpe;]萐nc4IMM'x/3tP>F%nM Rg FqRkyUML.ɑT<<<$SJ}N0aH牊"**K*NRYaaւQWWGnn.aaa~@+|B0`K¸Msb9;;K&\|`,--E$88˗/K&NΒ^=\FAVK¸h㤱k(\|sMR6A̝nS&4WԘ ҢUuW8r cE !##KU.֖JIaj4 !]'LL,_#%FR_M Ara5WHZK2m);MOfou>8օr|pb9iT+ʧO> <$7mS5 !]kkk!w D!ojrc)+kZ\8\.cljc5<42vcld׮]~ADD $;;;Iͻ&zkkkINҧ0 FQ2=%II`:z:C/g [8D1GtnX*dLdVK@@`2͕!,--1 aRjV,V4bJ&o A] E([XE/C_<i m'n\., N|X^^Qa_?%ߟ4$#R_T-%{}J0TPSS+ G8 cўxNu|KSz#mO|c_fځ~Hmmjjj$j)) FjQT=\"ꋷ7tATcή]}G}S(/q!q5h&6K{ۦm{kjLfh5(,?XDE|_ 0ys>s9O7%f{7ЛoVRJAEgOB58q :QlD]]rRkG qԩc[cTLav-big?fh<+Dsp٬Jj ͒*BVSONm9cWrT-׀2kxýe18r"(/_cYr{n_Ihss )=JΎfŵG %5 ~5k^Eř[VM[Cʋ{38rot)I!v!b޿$ 㨮o271Ɂ?<Gc4ᘪ(**Jff&س@IYYYΊ8r" ^pVJuk}ܸq-}W[eǷ٬0PSٽ*zhy} H|mz= mʙ`h4*b*ZSS͊Vg4ijjRD{v)-mY%]gf۶htX?_ԫ5L:J.\aʲ7#ệOsnxGo 2uk׮Fk#F~ֆ.K&%%)b5J=Ǐ2~<ٺ0zU0vQ<̺ɬ3Ru`Jʿ_))\y0dlFK _K j9MBBbrm(mպDWWW󞛛fYqwF"##C6Uz455Q5fDcc#"wwwEEիp%--M<"--Xŕ̾z*VTtRV06Haa.ѣGsiEFN>ѣ׶B_[P̢]ٙN<)9y$111,7q5b???*++]kG&L@zz:uuu:ә0af0T ) K񠍬Vq hY7qDv-ؽ{7'NTB6^J@@f}`<`|||TT rrry˗Ż2/_XE/''Ŵl6SUUŀD0'7nPCCCPg̘]dm/Į]1c144T1qㆢjbY`1<==h4 08m&ضmqqquZZ o? ]:WFEJNGk2vXXyyyƏOSShjjb_yqqmO#,,LQvu|||D04)111dee)bRT̝;cǎ)~փI/رc̝;Jvfee6/4h%%%X,; Zjkk{A9;;3g>s)Nx3gEh{ $񠱷Kqw111\pANo=THMMeъ*.\P\tQZZ"\i+jcDEEqFKL&7n$**Ç+JLG)mź k0멬TS4i|gJ-E*>ۛI&Ywc $fz^\jb`Ȱ g8}tj57n"]`4ٸq#jӧ;kE3d!~}“! 7!, ~Cs]ַN1oȀ09X1L,ޠJ==R0@{IOvvM8FJErr2AAA]V RPpڵv&/>&h@h^W l>ݯ5*y;'T5OH= ǿi+<'Oanjc 6?P{ʵk6l'OrowO! ^mZ>RGm+}8o>QVO}U!Z`AӰ0*++mb##GdƌlܸGڜX=z72c F?ï[oj x!OqB➂h !]4`F߶>X,+& 3(.M3f;fsN3<<+VÆ lb\ 6Ê+߁o3pj9.잹?7CN&BHےjn\i8rss6',]Nǚ5kTl[333Yf :Kj|rpφᇇO<7 ;M,8:5z\Z7E9"Fmb}kגرcqtt466rرmUn#<{xe,'h:y`r'rʚZinnɝaH8KZ?myB -~o^OEE Z`T*BBBgȐ!''' BZZcǎVQՌ98o͈#=z$zN8AZZQQQ\+@uPNCPU UM4ԷiiiD p4.0x'螅g<(-SkQQQ\tI0n80 :...$'' /իٳgO^YSSÞ={Xz5 $''[XO? R, iii7N~XX9.]"**fZkڵfťnɓ<#ә0aǏ'%%???bcc~A /^󔖖ϪUlG$zɓ'U\*ZRm$''`7&''Gqi)1cƐȑ#qppO!HJJ"11\Ν;޽{ #22z=dggGPP#G$<<\{8HOOgŊl_NN65Cff"ё#FptBVIdd$z/Ŏ;pss#88 |}}9eBuu5\rjkk &$$iӦ)79r#F w#++CTZ`c "7)5j>Æ Kٻw/'OV DCFF" 22SNqeMW닯o+ b>4776feeos}ku#uaaa+ԩSٳgl8$XF={0uTŶQS\\l3Z04 . Kdd$$X&22N e8l1eisĄ tK.1aE3##c/J Vˌ3ؾ}ba̘1C899-aM >ӧO+st9rD<Я9r: E >fj#::o3uTΟ?Oqq1)..膖*DGG`XZhΟ?gΜ9lٲE -[3g"vDGG E?C a׮]⡄~Ů]2dX,}E0LۊܜwԄ ٳ⥄~ٳgP(h)4oD0ѣGs wJb|2Vx蔖_`<ĉgD0 mbP͍9sg)zп|g̙3777ŷf $?nټy8͛73|pqǏg̘1Jh6-޽[`ၲk.mƁVWWSRRbSi'jѣGs1ٳgSTTŋB3{li5j쨨$RDOr JlN8O>i3[דku-ZѣGT '''/^e%g}v/^lS9rѣGB= aˣf:ˋqFzr6nmjZڷ(c>AAA̜9SQQ!W+TTT~zfΜisSJ>رce^% @||S)nC>}O?Yf1qDhd̚5&jw",,e˖q6m$[*^ϦM8s ˖-i9r"]Y_xQe$%%1((( %%OOO-[E/^HK{Z-ӧOgv+$fϞ͖-[طohd߾}lٲٳg$W[X,l߾ӧ^"w&88N8!.+W{'X3{԰rJ^_'NG"3L©SdáN8::2|ٱcMMMb+;v矓eh'9uꔬ78k,6o,.dժUYL1J?'335kj*"##(0l޼Yf'6 !$$3m4:3A IDATe׮]:uӧˌ~Fii);wh42|(ݰ =իW|\ IHH`Æ lݺz1C[aX||2W^%11Q!qh4ΝePT/;þ}f^Ͼ}xwpvv_$>>^f۷ogܹ2SLرcٺu\ wޞG}UVa4Yz5Q466rAV^hdժU<ۋq֭[;vMXEFbѣbc=Ɗ+hhhf߾}֊qzZoMCC+VU=baĈb cΜ9ddd/!̜9+WyfJKK8_R6o̻ ʕ+9s&bOFFsc̱GGG,X'|³>+_{͍$yΜ9'| H޸L&HOOQF1}t8HMM [n')"}N#11M6ϊG;v,G&''tvM\\ CׯιsgԨQDDDVK~wӦM$&& "}Gll,رd1}V"**222X~=0d/W]]ͅ ʢxVX!m/cc`=III[4,3qD&Nȵk׸p~!DGGa3(߸q.^Huu5C # @.^"-- ,Y"x0h4q>  Ez:u*dee'`6 #,,`L5 G^^j0 LAAG矗tƃŅŋa/^PT <PYYI^^gΜa˖-x{{H@@V3B]Faa!Ƙ1c#?ŋm~r/gn9&F9r$#Gl6SZZ޽ZN׷C6TTTP^^NYYYO.tmud舘O>arc'p fܸq_{NV1jA1h F Lls̗.]TUUꊇG鉓NNN8;;te0444TUUQ]]~.`Æ CɀC`0~zƍ'céa,\Prwww݉.Gdh)mVd2qf3f4-䄧'ၻD͛`bCbb"7of̞֭=[ "OOO<==|X "ÇSPPO<>6%`kxꩧĉbAx8q,z))(a]8::tRΜ9ӧ Ї>}3gΰtR>+a899OsI?.>D"]PRRG}Ù2eTH>fĈxxxaf͚uKnAurrrضmɄA$Yx1;vR"ʉ'رc/:2p@-[Fff&_|E `k477_ɲe8pECL۪pVG}DeeE)*++裏jz[CZdFG}DNNE rrr裏9r$h2juKLpHHH@ӱi&JJJ0abdddxb $FCW Ċ+z*֊QEQ[[Kjj*W^eŊ""סUHH)))deeQEEJJ !!!RJ!HJR?~#F0~x#kL&_}iii̜9(1𠈊" ;w{1k,0Bm۶ʕ+qqq`q.]Ndd$G/hjjdggcITaD+Wd2fY'>\?1b8;;DCCŤI"½Nxx8zjBBBHHH $$DR, Ott4-O#`_???f͚ԩSp_~%۷o'>>\]]HV@]]dddBBB2-`= $$$PVVFzz:k֬ߟC)MMMdggIQQ,ZN'D0N#))\ؽ{7 2Hs}H p… e !< D%::hi ICrr8gD#._|2/^ʕ+el0̠Qwnh\ 4|Ƚf`phF3gKn f vvv 2!Cfggk.',,ʀh()շ=?qb`X,JJJ#77JBBBb/RinZD *L ]{kb2cTPYTIYpkP_2.tG71NPOIGSKē+f(NnwgIĭ~!7{1H ~'66X, cjjj %,,&O=d2qy|23m4 $"qJ?QF&SO;;On <$sL%_{?=k6obGz9=Ms} G|Dփ@ge2j=&K'3Q?]2n7n!<$}heOr9Vo sPw+CaIwqYڟ ũTlcnPAR?&M<8pf @B.(++#//L"N<S$<=fpq?_i_FðStп\7irQZțLRLZ|Թ_\nFwGEzt N#u?ɭHEXz{Ն0U~-2g>_x oyrxg4,[7pqq7W\ڵk={*E1`ŊlƍQ^^|ޠA;w\@q?Oiߖ=N?XJc9~f`B{Ch"-}*`=c lSO:&`Ea4;Pspfm)k']}!4V`a8\c"E?r|"g}.O&#]DJ:AСCU0 =JUU^^^xxxXHuu5UUUxzz%66rYX_䕟c2>C]>|2Xw|?rs2hܷ3|9]Зo9ә*e Z[ܨ}7a4MDo'uXix4c$#(4ʜǒ01%{|]JLw?g!en8Kj38E1Ur㲑?Vsݾw*g'Pwv?v,X,&rх{2m4owZ=&–7):(7x%υ-enYuk`ek =4EekhĽr~m_?ҍWqlrJ6V0hjjs!Ч+ca,wXʎ%tf^*{ ?3kŢ;]&T%v_XS}mYx"?y{ܼaw)g:JűCHL$_pY<*~_W|UgoF@4EvԻؖE{IFfzio7~Sn7ot~9> .L( ZwRZZîTXNHAFY0[,:quEX>GH:H|t0c&K D.?n4UxM5WwfB8w GjLFեe&5xIaB,T[;^7ka;RtЖOQa|hNFcb&dz@PiWy- MG)ү$?ܲgަJjM[{ʮN%f$aI=Qw-Ly൯c6l Æ $!^v?LFfoϫiKػW uԳ̯NN"yȴˤ־X (>g__&YS/{+_ᖙJAj 9:D0*߿+>0azUfRHc[ ].CR^,yܭ_s5ҫ|5eXC~Rt OWu9ޕүR͌騂϶@&uJ~qH saB.y9-^`x v܉2w+,g_yd=UUFxi(.|.7y,>„VsQ|Pcs?NK ujK s+Y'F'ܩ_ui5e5&<|BÈ# K;|*ߛ:U00A S?]E==|K'jZA:@RR %]ԛ;DMvtQGW(FW(c7b9Њ` <0v htw2=*ʏu0`i mޝ/D Az_H H -Pictures/1000000000000147000001571C5330EF.pngPNG  IHDRGWsRGB pHYs : :"tIME &{tEXtCommentCreated with GIMPW IDATxhm甓~xyG_ @-a`؟Y?VVv8;~yq{>HX @1P5j`ŢkܼyロH$d%xbXLRxl6{{קR-[a"LMMo|O?q733gϞd2aE cǎb3c9駟^z… W^=rȏ?x .nrr>5#uwwݻwpp0a,: óG~^x֭[E--- G1ZZZ^~g`CCǍUDd2;vhjj=[o~b>ݻwyǏb)lyӦMC׮]_-}],/aO:eG\D]rJ>k_ݻwC[n{!ܹsǸW^ye7n{6l8p}jYy]]FC<0.kkjjٳT*˝9sf6YX,VzRRUtѣGl2NkjjΝ;'X][[m۶W=822BرcqY]]]tcƍy!T*?믳GhKKqY Bggg"%]C}gx/hmmwa+&X,6dkk֬bDBMMM]]]~Wkkk ݻc!B.r>aͪ^ c||<֭[Lfrr2HkzzKdvm=Vέ>N[sׯ_@jmeߍf;T l{1"7VV$qYl}. <T P5^rg }vr-B{ .ޔLfhhh۶m;V0,Vxv3ۉDbAف zTOեS @5U]:v}Yف:T_Fؿз?<^au m1kņ[>;=jG-Vi6UT P5P5j@ՀAՀUT T P5jP5j@ՀUUT T P5j@ՀAՀUT T P5jP5j@ՀUUT T P5j@ՠj@ՀUT T P5jP5j@ՀUUVtY|H$beʴ[X\+'b+bj@ՀUKŋJ9qķ~k)?pttLPA~oěoo꺺SPukkka||\P=ϫUT T P55,Vyf鏑H|b1ibWO7,VŜՀU+[lݫOR[lTjՅBرc===GbXgg}Lyӳw|>ۇMYW_}s}駍ht׮]|IP5T^lyӦMC׮]3TH$?ؕ+WB&unIoqsۃ`hY\=ꩩgϦR\.w̙R@ϺtѣGl2i^WCQ5P5j@ՀAՀUT T P5jP5j@ՀUUT T P5j@ՠj@ՀUT T P5jP5j@ՀUUT T P5j@ՠj@ՀUUT P5jP5j@ՀUUT TPuuuTUxv(芿2blJ&Y8n +ɂ5IENDB`PKs#L5ΐ9ii-Pictures/10000000000000DE000000810A8FF50F.pngPNG  IHDR ݓ0IDATxwTGǯZXP@ĆbobPTX# bW@BP%G(Ix4 XПh XhT,w縿{m|س;wvfv;-2 Ez|R PCI(TA-$w]LK͕&9fffsӧOU7\iJJJ}||ܒ]c ҬUV6mV^=z興"Ͳŋ8q  _>ֻu+V̞=K.k˓}Ą 7NFs_TT4iҤGZC?} Qj4 ]vd߽{!%..Ν;C>LIIfrrرcrK GC K3fٳgJTTT J64hI'SA{qㆋ!wԉ[ V?~,vegddhw|%cǪ6IWb/ᚅ !n֬ƍϜ9#c$fbbV۔oڴ{~ooo:ue|=z-EL/.X$Aágff¡˘p >&cc)S +׬Y9spi,VK,--?3h #{hXΛ7ˑ#GM`mmp2FFF[YYmZ" ?>SM8G572ȁ`ڵk즹۷-[ GJ"q4)J"Q4)J"Q4)J"Q4)J"Q4)E4]_H?'mOuB4*= jԨT4aSnjþX+7n@-ZAN>E|,T4 G<֖H^}nbNNcǎ&b'XsG-ڴG< }YeţU M֭[O6MLAaըQ#QsÆ ΂jʘG{.7[ر#7CO䣏Zi|*[X~򉨪7,KKK333>ܤI]w^6D02f3bn"-cR䣏ZiAEµ|kFh$|Ti=Z':k,XW^:u*00 ߰a .jѦ=e5Ϝ9WL:Rvb.C<%"5 l ̭7 NgQQիWO䣏Zi\2??nݺ[nCmT442"j/fEvŠ 7o߾(/Yr!|Q6Q I(~zʡR)ϱ#足377+B0#FhɈSah߽{W^rM0!666==m۶kli>jѦ=tɒ%XquuՕn)_7\b%WQ7M6qqqD+++܃t$]"}">6xzz|+j{]S 999CXNNN3fǤgjZ[[;;;#755DOAܛ$f9+m#}_"F7x)۱%| #tSusrQB~zޅ$QIPiR$ &EPiR$ &EPiR$ &EPiR$ &EPiR$ &EPiR$ in޼즻;yjVj9i{mQ!M33[XXZJ9i{mQ!M ĨR{{{ .Y9i{mQ!M###__+V4nxɒIۣn{i^^^*eQ=G414|jsT3D]<5j6gR#euMDҤH*MDҤH*MDҤH*MDҤH*MDҤH*MDҤHJf-XQ,Mgcccx—s_reܹŎ111uEÇCCCݻײe+V899od#_В+[G465--m%%%suuYZYYٳgAuolfddx{{hևJ&v~M^^^@@6%N้www0aBrrƍꫯN>Kі-[UK08ãt钟駟|1vڵkWHHWشiﱮek!HXXX`` ;w0`lmmqǍ! ;o+KdyZnnnV ;;;Kppp\\\ii)l6~)&$U"YHX(Nڵk{u,I333Х3gİW(M##~ K\ƨCձfҥK뗞1l2E )( w̘1w^`SH:*:z¶u)))nnnl9QQQӧpF8n~ ؏]*,2)**۷/٧OOOORƨV^V29@4~x' PiЙ3gm͚5 >$o $~#G ֑}0cթSGe3T~eÆ (#{ʔ)Y/_xbF?ֹ_A 쫲$vC+++ K ! XBBܟ4CD #EzE7zR&bc  .x@\3dS@Q0>ڱcGM}Z͛#ʲ{.֕e6l\2P[1 t, _&$$!"ݻ7MDDz/^[n֭bD-~Dܜ9sH 0n8xy9_~}C5bM;p?su ͚5C8^G88UV% P664:HD|> W#ۦKSY+al:O_Ơ2-aÆ W*|+̦0ĉtaU8bV( "3siРZձ)G'Qj:xEZMDҤH*MDҤH*MDҤH*MDҤH*MD>Ҽy/ .]PwX.'W~>w܉9}f͚9::z{{[YYy?}СN:yxx8;;[B9_XXu5|pnSPP۷oy_½FLH*Cr7f~g 8psss{rUv )O>uqq~:͛0\reҥQHBBBpp0y)M2#'c@UG8RVz9884mڴ6ڵs/Y5--MYO`` doorJX,H'DJDDtiiif͚>}Ș;y-[5b";1vQ&V/^ٳ<`v"IW޺uiӦ g4h VY3gbυ"M=}xp,U>kF^syaCv,8yfffiDxM6s ƚh y3wy왌 H:s/5l:-E~bPD^ӊ^Ed\vm<\T!VZAdl:;\aa!vbS~Me%D*! 3t~? fG.ʬW nooمUDD蝣GB(11﯂iEG :  UV2&(۶m1nzJJ  E@F20ŸY'VR5 쎤 "ˑBy^z*IԩSeǎ.$1tlݺ]Y6Q> #6"z"B윜ݻw8paa-9ߏ2AcH{Xϟ16O :Lk.hSN߾}H\ib¡J0` #s ȉFBon1)Seb`S!" b IENDB`PKs#Lc vhh-Pictures/10000000000002E20000022C22F060DB.pngPNG  IHDR,8c[/IDATx@TǷ` E<(vbcu&" vA#펾[w. |̛͛7 իQ0 `/^_W `0tl9^]#n?|"HQT*>\8888?)?%8G PX d T4m8888 Qzzz"1_ n 2L}njSgbA҈x,M^n>ӀF'0000/$ CzF"Q259nTjv,>gfΥVr!1/ARr6)kw* n=_\_B5uZQ Q4 X_""tU =|R>.w.o-[t˗5Y9_2E"xWZ Ȱ=OáeVv06*Gl#O#<.ؐU(9=#[zJNr85*7N[Mj )%݄Y2̈MR:O=`F-M`^n1;sm- W) SrfGhݚ4=UA!J"{M4Z=$EpD_ҏ\cgmyN1thT'9[VF-xlf_뷙[Ca+&L)x䤉Ryq&<?&f sڿ5J[TTT)7#'_y6ONBM]֤)(R"YG D`ةtv3u[s  k6ޒ3Pib|(b=0Ϧsh5-{ N=jsP :mסx \%Yl|z]OO5yS]D` #,-#'OssWixwl {լdnB$4 a\(SvѾPFyB Xblslb2 Q h'M⨱8[ZBX$ Ue$95Cܗԏ\P|XaװNaTv7q}#@  "5'sU(K/Țzk-qZHeĈ~\H6U|Bٶn~n[{hFޜA(X7|̱)L'&>>ڷ|,v|&Zt"gͫ_jg"wkjdPLBeS lKFnO&tb3Oaw\x^չ3$}q}o{ Y1Ɔmkwe0h'm=kJ&PBl#xyԼ ŋ%N?yֶ+Npߧox2PE`bbv9򫲲9Cyl2xłt~:N<175ۿj3Oo V]o{onfwdZ#m8ݧ43 9h9j5rLmaк0\;ÔDBQ?Y|=""հCZx7 dZ {&CS gw?uW-w LDb AЫ+> g~GCr/F+~*ɷo\zJЍRd*U #L#.]QeDȟs"?PUcmӻfv_Rm"?A0+4:56 io&Dx n׺~=xtv3LsݮAZLJllcB7$N*ȃ?F<(#{tn6{eoNe`sBYY*.*.ųEbrU%s~~ωU\T"UtNNfPd+RBihG#2QWvN]^ͺkj;uSXEʘ[T5>joeMZ%.!? 1_@_ TDK4i,RzO"0a+Q](DvAd~M}n`oǿn+^ =mnܨn6\:A0d04s?w,=duk)G?xyKo'*Ul#VC0\gmhcmZNTw1Ȯ>>1Ps. Y+z262s /nͫL$NQi7<&Ɔnعkѐ\UeĀE=F'_S69Gޛ"_|5kX'b aΪv\0rtSy$ <N%M]K{/3[נ#B:],I?ejB\Hs[;Eh ٍͬͭ-ŷ1CE_>26QQLa'$ֻuMiĴSLM3d ə7[ޔKz1_gmZZM|>{+=ܧԐج*ԯx;`ZWZTWvR;/DDU%]]Aٻ?qQ_pٿp^:qrN^&C |")ҴfF~4uRkFA-/RUI! ~ViIIQ6_~ɖ3~KqY#KF÷O0JfYٹ %6pvBw-7 D<~ta.ǀOөlu%3 S6ؔ7Fc\HWqG+$VΨPo! íﶞMI'),; }c,=ToꍩϰdlhfGU|פN 9)TC <"!y J=E'wdM]5t:ȩ=5&?#LH D*q/_`Dsh2Aʉݬ[vF dohj)q& 0]lcPJ呏Q"WeG9^9 &hkIR?*C`ge daHooe! 墩UkR' 7x?])C Az.E*)95ʾ51U(=BѥY$Wg.F>~[lSs :!7#cE4:]~s `0!@Omڜ"%E kb$ !;" .?U˱z]}Qfxހ`0̯{KjIZd Cz6N|ч~$87bv01 HԪV䵁v"(ҳ)bH"oFsRE,1YzLWX`0 )%$l EzϬH ,Xc`0 QC*S*T`0 ?V>:&)SV*kO0 `~:rzYϴԔv`0 ;_|Y"1`0r ) 7^}LH/kG~4]%n-yU.k_0 2s^ť5 73oZF&f9bڝ_Cc:^Nye m2p޽yQ֎zhTjw mέ Pp"0>!jUY1XBZZϽ||-* EE,$'n^K}v痄F5J$:W2T31LM ,2^=^F &zA,A'1{ h߼~UX$0huX,]P ^)="QR˷H𙀒S)3 ڋ";ߡ LAS===P@)^QuvtJ9_]ҋ>o޼hG BO]eO^~=5(Ν;|>O```!bjL'(4qΦPQ`TsO^^^hhSϟWjU:NEcJQ`JbEC{]RVѥ[hoܸ1pիWjR__ɓ'ҵQ{}ݶm+{UڷSX5>?jZ`Qz-e`0tׯÆxĄw/O1cF7nXOO+ OD"с#'Bv||?l'3;B:sӦbl;R$Sh^ۗޛR ֭[۱CX^CdleK׮[˗ܜ옘 |=P-Y֮]dnX?w'&6v {435pƍҀ)Xd 0666v>VٱG.X(66lM8`i) ݡS m ii8ukt-={nbPGgS223|ܯߟVVVo_G?zx32h@_V0f0u(B wnݺ۷b1L("Jj>Y s)1hנ4ϠS$T P{-[T5ֽy;`|@@־/_Zt)UO??/_25L LعK˗+l>}z WWW"ssslNLyM MÇh߾r[eƌ{ر'$$,YdL+V5+V%(N)I(Dj[է,j#M~¡ b-ʡKLEBgSDb=}{l۶?[:e@߿~U箽mڴi===U:i@eeȶ%&|ջW NC ndҏYqc-[ρ}\aL0~]ϛ]w%x/[b!6899BLrrʤS?x`gglɒ:uӧع+11ݛW]c/^tw_&Nق&jii`\V" ~=jTbШtdH~ܳrQLNv6 ,Zᠵoٻg/S9~*UmI@~;w`=.]Ʉw&AW\`ŋӦO-MUv]]N:mܰd*唅#x ÇQc/ 7f\=}/t~aB#Mvq*,u5&fqt[nCG&krБ/`0tS[xyXTl㉟>Xwn>>BilظNs a_0"$ԱqO4iذ0MҵP{Z Eq*Th[Pn>Z|I桪wS%4Ekk:D2R4爈 yH҃xBV&0X,0 :CvHy^G_adlJYjYSu6U!ם;w>sH E"1Ca՗&+Z vR% 7Ը`VقzfΚpF @7ZA#FSLvsM'O^l gݔa]n+{uAҳW4x+<=w܁V-Y8`Ă^ƪ+o͚5#F WL cȐ,ڪO}{4#GW^n^^vf z 3z4aD>I-c0FPdU%rSLML(Wx<5 4桪k'DNнGcGzhCH5>kx \ê+`0tQOٽAk׮7n쓚3=~.= BAΈX$~̓$P@SyyH m>{zz۷PF#5^聃`(ڕ)Hdgg>>>㇘ACF\ɉJ#Fz*''飻y|P'>7/W (dNp:ADBanN+|~}LZ,jkת^8)0p`l\5ifgg&x%=ky Z7VP NM߲u{˖..L 0v|oۧwO#kԨIsVvO..P{=0yO `aKn԰94AS&Nڹkw>)7UX}ATE94H!i$AAS'عݺQH&=Hz`0ϦHNN5426^fevkР}>UB~W? FJJ &N4H$KO>A$'ٲ׭^i``"&SϦD=yLZA$kCHĤao9^j\BؿWB}1|.{[XTC& %jΦ(JJ9FɚUi5*4Hǎk5lXxLĐ$md>Wvv>yB<&#JAzБ/`0MJ&&{M _/;y̙}w7~fIP 2`qk wΟʹs lŲH|yK9޾ ۶럭s6d2kJnaBKzP7 EՕr(E k`*0ڿJ:uMK5lc\l Gq^=5S"0;'FoG267~)SZldJLLl~_>F~ĬǍngc"@&SeZM)k/~U?#<~t B8SѦLABs}{ow֍:^uR*U%s}KMS&23|hbj|y Ϟ;3t0'G믽{vxz؃͛wŒ>x<6ҽF>0,RMYM)e~2b0b) S_r֭53{DBANnO<|2i#J6Vn5j}KO{tp&MA ֭Ws#FLe #܃a@KUJQ PF S t S@@p8됐6m`INmlC6S O;SSĄw,+ٞ:{!-59pRӗX,ʟ8yQ^\.WzYc@?B(ZPF S tpGV7C!Eiӂn޼cNX׫WO'G'CCCH勽/Y5dòvRv+K!^dukmm]‚~2JA/?u|~Y ;ߡ3e[`(742RܢZ-MJ_/fek԰avv6??Agp\Hfkk۴i0sҤiW.^t03dٙ>vXh٤IAӦ5u۶-/Qɨbӊ)"a0 ?/CўF& kuL zz,%bD }1ukߍCN4pmmxFYoB,\0׷c(I$n,xŔa0 {Z/_hШ*|zxNQbq|P(~,F|c/^<|ܨ!{ڶ2CsfFzb§|p}Ɂ8:=~= PtT0 ͹<^ƷtU:)HKOOdD""a6?ɐ SRUspnkuCR§_@Wۼeۇ;toUZMAwC``0̯! WJP~(@逸P(,+;{@{;ۿE .\8?~ tXlYܜį_>RseGw&kzz֏w `Jʏ 1$?n H?#=xW]r5S>2hyVxxNݷnXYnݪ-9lnfFzJלkٽgz>ϟ 8e:N^a0 [BN@4P(ҥ3fg'̜1) CAٻج}X[[|-x//?^fmSscc3NFFZLPPŭfsf/{CGlDP4`0 ץd $7Uw¼Օݪ'&efN_ԅ"/r,Lٍf\* [^Α3bp srBMQzhSj֠Q@B0  PݻO.۶owrRܢ7*:Ӑ`3\.e0B鷔s8!t^6663g8wq{״ضujڴ>u0 (fϟgrchj̠н;:r1[ڗd1U5&SdH$ 8 92""bE![6M?˟"GS6o*=5û޿|F`0 S P%QFow:[;Ʀ99yͼτމz&SD$7mؐb1 ==}h4AA/K__i۶dmjbV#%˵k޼q傮)tW. `0d{f/^ oWTvfnm_͇"^׫,[%zR=#,WdZmdlԿ34*1 )}$Ҕ0\ٹD "n12x˾|ɿNUZʞa3,"opUæY"pqt7!0?˓XFbIϦȿyV dgY Ah\ 2`0 ,u՗Iu_ wb"_~}{Y+_ѣUqu9yvlAvNǴSe2G{i+zl`[鉖2)lJģ 5R_}`HrFr H]a5錒Z)O'OڼuWԛXsC}O̜,{K3#6إWnˈpdoeĹ~}9nnn]|5 tG81o+;(WЖg({7dI`޿o&o޽}]rN9z)Sz m*h!,,hS2{`Ż[|[s9܂C?~*=+';Kc፫NuqqDD͇k@軆С/0sX*}b땼S_ m ֿwV/C7:tt)___\t2L4 Hy%MQ-[!.qʔ}A$Ednچ )&TjfÆbDzElD OH*$&Gx9 k{KIؕ~x<U{H+MGvRFލǑ<|XGyUv"egeZh44PNh%QjJ9%&OӻhܨoӦ&Ψ̙3 ,ܹkg'200ҥ Z cAA޽{G8⑚riBE:QDDD=渃T˗/-F7 1idzZ[?CSBGWOPDԴoBKjj~A^V|!٦ǻwޭKCCP)<8LLh.2P(#O6k+BWY:]v(f̙֯g2_x1$`lXC 11qذo;88l |*/48**c1>~!>Dij @\!E<=,a3Py׮YݩSbS~(S)Vn^.__6MTSݟ7w.V]j(g] ^&xu0U.]ֹsg”^>}L BfUK*pjzukL:uk5i7.=aM㈸(=ݸ$!9@ SS̘B2M[Oׯm[CH~unesF+{^aÿN23;w5m۶(W//_2h_x~թAڷok'LأGÇݼyTģZPy1`DV@Z-_'FLhؠgU ᗰ~I 7h;8 ʔBw.2ՊRkE=sFjժ5lӽz"R@ynSSϟ?P<{I&&M4<|8p@jPriB)(]whQUפݸ|W.򉥵GPCkyxAg2yy%}BڬiYmPN~KlR'\.5?C=j䨆 (-),/Q̝3gy~~~D$3gĠ璈P:v'=vٳF>q{Ξݻ qƺU"oؾM_sӪJAʏѩӀ*ϲb滬R蟃^zݻH91~k>th\B_h)V6bO&Ød2 he j㨃FLwkڌˢ|mNG&~C RmíZZfUׯ[ۼysXtrL+EGYYY)Ru@n-A*BU$)#R=ޔ&LjN"#aaaׯ_G2#: W lkii' ^NJF w޸NXHIN#_M4"DYݻ⢾%G ^yyy00|ҭ*RR@'2`r#|cnem߿~zpXrdsFٳJ,BKe0Zt)j@`… .\pSHV>_Tz?Q͛}ɓlٲ٣v蠠i-( [6w *SM4"2(x$2p#Fo)M6Νkݺƍ!].Pז0TO Jb0L玑>a}vO(>O >|Ecr劉joƌ%&dI.]2rիԮ]{M(eK nzX iTb!M6J"I )oBajJפYRt/S9x""9mQk+޽ۤIc~0?J(S:vcc>|`T(P*C 1idʹCd_aŋ]8N>3O?ԠbU{]|bGfV`$5 C|VU0?rGׯ'NPB Nڽm۶<O!!Cß}\fTaX喆|5M;v?0~VZ?˖,u:y)=RAe=D ڏOoߙ_}`ЧmݺECk4b;hZPϯ1UKND:" n1 @wNd 'x* )pwW;-R:)CB%H%!ǘ%+RV[$IR_-{Eʕ3[0Ȕ۷oXBvڣGԩū< `~E/Snݺ5beK4߻G__Ө 7b`0 h_,]l+իnNJJ9j;wׯ[W~=2ʹ!!iWDPr!6}5%9 JQ+ɑ4n;`04:Qi_|իuV###U%K yu{رk~D2 NA+khD$jhi'O rqq4oEE{ -Fs.\|5kx{{C ,S(nZ DFFN4 ˿R!0ٳg޽nnn}#uI;>}i'ٳ6mrttG^r%(ݻwϟ? ,PY88nݺ;dɒC^ō5ٳgjՂ40RiDPL\!޽ 1_1Q'[Ԡe˖͞=-T߹snٲ%!!ӧO(ts2dH׮]5_;h֬YժU+IJ:tZׯ_߾}XrP*H^)pڵ 6 C4R9px`XX^z!+WDW^?^2n8PFA"<|p"t vŀ/) 0ʢs#ZrCU0Y9B`߶mʈP*EʨH s\{"PN#ItU@֎QQQ9994j"K.jԨqݖ-[EC k^u0;`06nu bVVVlvYeN:uرc Iܪ 4n%*m۶-[H>e0Yd57 iӦ] fWQ!"GBn$w zN+ŔG | 0Vx"4΅aIU'NhXccݺuǏRR"yEQ*uV)Ξ={֭JYTu0rӧ\aNOA+k?߾} }e):nݺ%$$4hL1RC`TLɏ܈e˖M2"Сϟ|8ۧO==f$J__#c PhqHر#|Ϟ=9boo[Mݺu85Dao$.gQ%&MI] mL){Ъ7op8 W(IT^={&$+dZ&BQYƍ3qD4JQNjc;vcƌ!vtխPK Cct򦈵۷o/tynNZ H Zjhh@ عs{Q3R%,BQȗXSFQ.-"M \tI}kMLL@iY<"ĉDL)5:UmRq ET`_@=#X`0R֭+dt)M~"GGG8/_^֎t>b}ȼ:\5~;/M7I12xLh?wtP*hHS.`R K2E;CA.݋s7/kG0 )&Xh,(k/~dI ` )a`v`0) `)Zbv`0LP~eJ҂`0v|/I@[㧁tJ)"\*8gϞݴi={FW~uA@ahw=|/X"M4u ]H:ر$r>}4*4&xBZRCMo;u$( .tpݾ}{ر AiX`X/^\N/aB&|@3mݺ5._|Ν;B&%Kԯ_"X O> լ Cv faL%%%AJC]n]vܹ[lIHHw`r3]d58zzz0Q^lٳQO*ɓ'C J)SH۶mc0M4(Yjjj ҵkbg)Σ!Wzk<mذa0\aΎ" ħ X$OHMi@URH/$ZX tԩAzG=mڴA)䛦)2E"V^Z(/^hԨذaáC*d͉npqq9|pϞ=9B /^ lKU> 6hРH~*>fI%&&BH?vڙ3g8p@\u8q޼yſҥKfffFgaL|b^CADDDhhy-*EŒsԨQ>q˄LÎ@2Eg&ЛCjժHnkjժD"h<0A]U20ƴmrwq=<<" m8oaጌ ##'N2<) (JZjRzk-MTu,ڡ/ZF1E1c|մiR)S4ʵLѬTj*:  6y!L ev1A L ^RH^`q]3Lx A1[a0R,;h֬YA%l۶ Y(R)4qƁe(`\!J=8>|8Z{zpU>SdߵS&횔͛7tU@;UGUD I 0t&RCb?~jJMW5,.PI#<G.:ˢ|L n:&9::*[#f/rLy@2=T\GSSSҨT ʏT+SF l-BX 'O^֭[ Dnxx8 hJHLL$ʹzߗ̝;7..ʕ+ `SB7ceb SX{@ɷ4"4A```pppfTYsB@ff&4*teO>999CEFDD8pbJO\ 5*R]kR-eTu,e?+ޮ`CW sPSf;wR~12AW2EX,Vjbq\vkPHHŀ8Z-M9rѝn0Y9s&ZCwSj͛7G7O8ѽ{wP h)S@ȟ3fKӦM[vt4wر qu۶met&&tJNd  O%޼~ `OA)*:t:2A=qApzرcnݺAdm%χ&66N)F\pa:cٲeC "J1|p^C354*}}}(Z$# j @ر#*VPA<]n]✖H(z" "oװGWEǡ!%9l.kdhl6\V!lfZ\FGl[5jԤIb1<<\~ 66V4!G@U>=Ç]vq<̜"}O~0:xͥ! )*{0eBk? BU @@t7D2廞Q7| [ݾ}իOxsf͚%ۈ1MLM`ˀr g 1 SB99[Jrᤤ$"0͕>??W\ONN&i'OZ,(( .))rssrah`0_ޛB]?>EJ&$$x-q' A?2339 BH"c`0L@>Y9y~E"d 7̆98|꽅w V, PD"   `*Z)T*ULhKϧݻwOMʏ.?C &Ɔ>/(+8H }EPBc0 5:?9 4ʇnܸeʩS4 9sSN4QnV{67nXc0 )Ct.S<<<.hтBŝo,-,,L17hJVv^^KUW:(h`0_x/Eҗedf%bS" o :Nq9lvauH0 EM2HS8qB*q6FwO}َ;s\Siܜ-!6llߑ`0 F[E(ʧRLMM_^ŭsNhz X>'1&ڵ#n`0 S!)>kFkҤɶ{h49rBoݯQ651fL=̬Z5&%wHc0 SѹL  i@mҥK<}:R:'3ٳhnk+FpBÆ  `*0z7Aj,[LZ33ϋOҋ;_L,L:vhai{Z@ i}j> TxJrM;})"򙙩~fVvmwŝN<.(&S$X `ʖRÇhQ}nO1mKcer9tP… 4е `ʐҼ#qZh!bai[5ĥ}kTϫCuh44SSQJ4@`Х];]{`0 l)>n^VjeC'ҋ;_!Y/Mb{y bci4- `0D)]Az}',,L=gΜ~;~}GQ&߾H': Ez)HA8i AY蝨E P @)6'soM#$[y_^{<33OoffgE6lVtR/'K_|En[h%#ǼSܿk׮r*;KlܫWRd=zӽ{wNPylݻUקj䂫F.;W& 骒)hs*YvbLY\:^+~AZEFJLyyygΜHٗ Vv6(h }PPP`@dDX[ 7>oF֭**m6 (5_EJ-(VQN@Pr [1EFQ#DM KQݵ5$0$Vd2Ċ"#ԩ#V))򩔒PAI2̅f&bg#!N(2Jp`YzWb+!&:6(>(EU>*[T4h4ܡR|#-gSy뢏S nw8*ydneFSF^-ALVL|`4<` b7\ L&\m"< Z[wqA$Wh =ݧz(N 6j#RPL UpLa7^wpyGC)))KsFq:M1h0|.>F>-=}̘>ܶm7^q8Qyԩ~8--}Ѯw^xڵ+66e˺v*9m /fddDGGuʔ>͙>㙡wߝ~\?unٿ8%e괩?Dӧ2dIK^z?5uڈ?aݺ۷mbҤ{v)S*j:wt?1Z1O>Ō3&6Q޽]w~7F㓒V7+ǏdIʖ-[6l0~DsYF|`:u8x𝯼 W3g~oMphZRv$IGnР{y7mE|իj^)[:kݻZz+Vѣ\٭[7WeLLgm8pk-/y;oys[x)S䓓}:tNsS/zqcc_ziiv^}\ zW_}ڹ??uT6q„dɓSIJ?sL}Cҥ>m)eIHHjRswl&gzN. zSܺuk񙔔tQ nҤGDSDE%D@"Иfzꩬ(kn\^*9hRSS}]1S|_իʕ+޹H!"nE)oiժH$FӉ"mNE ┠+!2J݈=ZԒ*((P7UꂂCPV;ΫfsH@)/-5")]kTztJJ*D=zy#_|>hȑUv7sSDF9x(i״A\D@lqF5 թZFđC91 8s.LFb$f.pggffFGG;677joelqqqgϞ_c|&CVw?thUjnš+>b1Vͨth4TZZ6"CZ 52:Jg4jTBKFK5ij^zO>o20lذ_~Y: |ɋO=qW7 2*4T[OOf iKa!v*UzAN[<BXpbp!ùs|MMGP``LFfsaVV֖-[5k}筘;v( V-D0 4ǟi:[A`*3/_0OeUiVcC__Hh$zYdڴiX`Oo50jRjzj~bVbpN}٬V,"eX?6M;;К-K9O>~щ(z뭳gϞ7o5Ç^ڠA3g΄xi__x+hڣG1Ƞ1lUp*u]ulqquTᢾ1[vl1TF- TRCc뾷;sh1}tܢE Knb0L&7Px+ЦMQp:춢W/5 m+&\ڝ=TmEBY` Qяl3"~\a^VdXu)*OuidbbbaaO?moȑ#7n8i$/ oqyQ:y. ?T|D]`1mzբRtS6h]Ȭ6z{]3IrfK'NsI* w֭]vMIIh޼yPPjm߾ҾVLh4,WY糎g;?ATdzm.]XhγUUO6d2n>Ia/F*=^]]ͶμKWT%WCj/ƔHQp$1%(;mvTYQЪe[QTeQ֮6С_ͳإ@N-:!oXLp٭ivy 6ҾEsΉBK--ZmE"{>cNlI}L裏Ҹq^OOOH/ /)Z&~i>yѨ\?z` 4NOkuj&H%}w[>Yy/@ 08upo`0xi__x)-Z ʑw5˽}Xn`o|&uϾwZfCo3[ޑܯuN@Znel2??Ŋqqqm۶yHiӦ<,ZƋgS;& lfݶ"U]c/~eJ=y޴ꕫisXm}omׅfTkN$~*7eK.,KZZNk֬n/ />M>RTX{9 ?5dTIhUZλr/3509vKW,Mp؝V]r 4]g) Я_?y=bcc/\jCBBDX),,Ҿ7}:Ӣ7 $mp:F):M@@NRI6t9;`XE0 ?m؋vC^`:uevy뭷>裢aRRR$IzG>ӧ{i__x)jZ6Hj&*Qר:A ZI(rE-;;[2d,+ENJzASc zN\'< /?/!9fs~٠ji94F`zNۙ3gbcc%^YvmbbNZOĈ}~᭘j#""|NjD2cƌ3gP%ȱV3f]?vETzկ_/6lܹsM4-Zdeel233SԜ?>99ٳ͛7_~ƍbٴVZI$23g΅ L&b]t9sL@@*~:u˖-~(6,??&L(!"ԫW/;;;,,L2ݻw/,,9Ft):ct(_}yڶbŊf͚}~᭘j~;xW_}UW^yeǎsܹsE5kּC=}Ν;sss?cDvXVHZmQQQjj'|ҫW}{)))?xDDDu5K͎?~qyi__xl}ъ+ڴic6-Z/={^Zti֭7nܸ` d2i4ůAGtҬY3ҿ{&&&.\}߾}Zy`RRPx1ȹA|ڱcG1iۋϋٳg O=TzFѢEɓ'+/~m6'33^Blժ/^(V$BLhh4^ފ)HC]d%Gddܹs׭[װaåK&$$("ȑ#GD{fM[b 7n5k("ʈf$D|ٽ{H?W:Զm[ =|gIf/iܸ%ŗ_~)&E%&&&<<| 4Jh4NzѣWX!8pu֫WNJJ:vؼyDi߾}XXعsDc>T8@ŋ>!$$D$ .XVQo4E n޼(" :.^=@'1E~I"mx.|}S{j#@S>^gʺm~VӘYI|nYgywt\íΦdffv[c1%<"rW0 /-I뮻D\/>/eg]xqwe]vΛ;wʕ"_/w-xw3g;p8rrx^x1##C,)S|pv'Ϧ#}73{N#/<5uڈ?aݺ۷mbҤ{v'OܲesDxE"Qv:8qS:[n_/P%NWQӹS .,NI!p#dLFqȐ_ݲeˆ Or{؉ *~MfNKKs8;v\j+Tȑ̜\_.dLE|o6.;WT=rA(OLze}oj6O+>nϛi-W^U=~[h22N7n*~}q[0^AAܹVZY"#>,\ٳǫ-zT r2O>9GܡC>(GOv=ֻ11cze6/egdɓSIJ?sk.;g$I\h1c-[t:X}Cҥ^; w:j$鶦1uk[_s?r9<fЋ>^BL5EP\7b P(b P(b P(b P(b P(b P(b P(b P(b P(b P(_I׹Z^<SCr&ތ).+ZV]‹ɘ"IDd}vXuG6 z^+~ A)355Ճ}^ɓ'SiiBFH* )niӦM)GHQt:F 7:OMqzJ@)@|toJM>nNJ7*Y!Pq(1(M?};}@?M*."RsS7S)^\ rM6yi4jAOP x>q z^j* GcZ}ᓧNtN\αڬR1OF-2JhXhݺu&N+)$n|)`04l-&l6IݜQkD4%:App bZj&),,TLY,vSWBњLŪl 'ϦKΦ0.{lHt:X(Sxoug<SZ(z)_}SiO NP;x>rR)u>1LxRq"""""RzL ~Ř"j-[xiɒN:հ QZɻgSDz(Z}'&M޵sG V/ QF>7k<9o+Wffffg]7~׮].[ֵkԩS=pZZѣ]N9s汱c!js6'Q1jY611Us-[6GSS֭[}'&Mڻg|z!CL4iK/SuAUM@ݘ"Vm޼K*9AAAry˖-6l?a?wy7Fq,)Tvعz*9ZteU˓9ܠAɋ I ~̝;oժ[nV٨"x(Za9[?Q D7]y Tr{Go(9SY’u<AL3f|Ё˗a/}%Hr\)[p$g>Zsvl;r`6M*J~rܙ3gOghpSdsXB T>e I_:C9NFDDԏj࿭#xf/**ᑑq ΞnPіjYZ&Φ$w? 6B M6+S@Sz9\m )XGL_4OH;eZ=ov)[P }˗.G$m{ůVZ6??]F"Fۙ4(dQ^)V*uq)Yrав,fsPQwr.爃ﶬ13_&'j1_DXo4\S~ӧ0gLLL޷~ˣG园ZTVZt)$aPPPPPPPPPO;N˯}jV#Uh(;p)cΞ9}˗/{[|JNJNH*(o()t8.\o߾kjEc2Ҿv^i/j Phn}Aϰ;~-5oj@ P{ܐ)!Iҥ˗bc!~ӨQΕݮ B o1cN|f[p8$SP0q b݄_CP@SBSNj֬YEsϜ9ӰaC_n_ݻԩdϿ|#Gn_!Ss*;v 6lֵ"lܴ~.^ao=4͐!CRSStNwALq +V/Ϊ,yo]8p`M.IÇ裏\9D/rAtg}633o߾qq]~w]Uud]#!?~o_@`Bq◌vc{6mZ͐wd2|njSSԿ7b"dggGDD\ٚ5kڴi#>kS~ҥK 8;T$IܹǏ=uV[fOa!=|:u;UtKjʕ9/ W=v+j۷OdZ=zhol<x1* Z(L4I.W~8Z'???䱞#F8usm̚5k|?Gٶm[ƍ|=z߼ysVVS^)^JXؤ<޶S]vϕo[m6J䄘zo{(.\loyWnټy}U}bqŊO>_Uye,;W8x1ŧ\z\'|" [ٳG%*E>|i.\jYne)>ҥKE#"KFrbErS(,,~;^P ON TPH={]8%))izfU}gϟz5?=쯿_^x \޲R_YeϚ5k_0rȷ~[);vXvd+/X@nYne)f呯J~}QQV^z111;̝;W|v֭m۶\ϒ#ߛ"Š\ڵkQZwހ)ǎHB*92h3gΜMOxxL:ݩU]̺qS'jujN+|]eU[AOm T8W,nY֢Ο?yfqx/"dddGGGŋOQv-[n;Q9p󶫍H ݺ*V5i{}vy=CQHRbbJ&M"## u)<1Sk>-=..r;)wW"(4a??Pץ B۶m \ɿmpߵkH~Up/TIT٭bREG|`ŊĉL4{_e˖~VRne)|=krf^ٳ֛2y6<̙ϭ^wHT>uo|$#K}-2֭[ҔA ii񍫵* ZtbӦ;9|?j#mڴ駣W\"y߿'ĿJ~˪J ~E7S<y:tpM0uTŋp/^u}='x"%eȑ^~HSne UGN:t8sMp\%zp]C!ŠN1 M=Vn]\MUeמ;}m^BLk,_^U޵pפχy6E/G`)>Wm<ԦM[T&1+?znhO\H)?Ӧܖ//U*oGCa;vzѻ&W9wٳm6ۍPO߻pScuG;w'\ɹsZly#Rb޼G}^=;mQVVnfO?qSF} bGHV$,4wVy 駟ӧ6 E~g駟>6[v~1ǀU \ 1œjݐQ+]PRvֵbhr:wjQM1. T1œ. CP@St:kRz$gsJS~ $j2\PPI% €T@t:ﭨ)9w\5e} .LMM}gz!on㍡q[f͂ }ّ#G(>hРGy駟S&ks?)kfztrq%SrL0aH9_}`L8Ol2zGzpO=HR(/[o]JحeH\~… k|P. ħ{R[6l0mڴ'O:Z>}d>|< |+""(/(r"qO*e3Jɓ' "$$$xrs5Vo:OOw(/wVkQK%%%mݺGj~Y֨5\$I. bYRS']*چDBBHZIIK;%ȗiDFyIImBBnsrr 8PeQj6}NCƍ_|S5qмv(s*>bĈJ:ѬYϙ3e3w)dժUcǎu-VE"z*z1F}鸸g :>NZA>/𵪟]z5׵=7|vR/[m:Ѯ]UV(FdREUqzVaZ }ه𽪞wC]wyVRb 4M~AVje@*ALZr);;22ߛ;/eRh5{vҵ[Dd}FSκ﻽o`0mTV0)9:noVV  IJN76`@*GLZM4TˏʂFl2;1kZ>PV(Rb P(b P(b P(b P(b P(b P(b P(b PuIn-Oݛo+뫯(;8IENDB`PKs#LV-Pictures/100000000000032400000260847934EF.pngPNG  IHDR$`0aIDATx\Ǔ^nA@ bWPg콟z^{G=PXPE^/YًI@,}'oLfg;3;KW(AAvwAA>eFlag  'T*Mw)Pu! 9@j,uSCzP`! Sc\Չ-u᪶" | )" !b^+[# QE@/AA>iuEMlP^YJo[΍5|FAu;hh,̪Jo[jyJTAA䃥eᗯ ,Fi*@/'gEsc~()P11a cp)_ "B(8(cI V[DT*) $Z[)5 ^01a cujTȡr7KOODI >rE|g029ET!S~UJ= (/-L6r AɑMyY Ł$܊a c01ᇉ*9TZZ蕀"j- ե{wYs.6K4Cykρs-\/p{i7/LxfY[[X9ٓre7fY[#7hքddg9&l\QP"n(\!H ZURkXq|=3CL!.0;Ifv+SPyTBȓWHeY9U魘xD֤;*<Xv3Đo-ޤᤓ좈둭woJ{r;!HT!VճEQݒi<ݹR_XK-xn8Ic&p8,}E RNnH &??'"{ծ:NGOtpf*)L~;6mӉ蜼\ Nx~!YNpd869-19]8uѫ/ҳrx`g^ytzgĦˏ4p}lpe27<캾sYo"al:v/&5Ҍ~Τ6rsVFC\QA9M"z -`>mm@ Kڛj(`b[MP_UXXާbl" 5<FT t_AN|޼ݺR;~De6zfѠ=W`H(φ5k`[rӢRA3+b%/ yH .p}/{5@0@ 1@bg1Zܸ{o$I~<,A\-*̈W$0(SU#I陉/R}a*LhZ!U$Dꘞ LVAY+?ԌIiM7GP?>6L&XQRH%JxjgB'QPC$W(5*:Ez%"###G[Avz5vqdjoZh3H?NAJG^9o/9~Ռz(Ŗ褐EiIn-JiiKW7onl@dRRZf%.\{иL$z(<γ[G+ORC֣Żd|qYE3wK!fdWsQqކ`rvz /Ws[V #(-HW/2G cSE"{!Vv~ٮ3BScc#}_lH'BWU W 6Gs1c~{),Ccuzk^6Fg\VF)k2 }=drŚC2sg3 l0CwGyp5¤~8ݿq'oØ5o`:}թbɒ-BhjN6}ӢXz`|Ѯ=#?а$PlY} _#;6]^7_g7}  D*RCs0֌)^cz5T u5bC"@iȉ\IΑybQg `:m9~1?#I`xݞ>.ƏYg,B1D󡸤O^ʩt ldN1)yYg3MjeOvW J+&1'V6Փ ~D'G;7sp3k~\6"OR=D}'zO?? WHRT*#`_Ӎ]ÿ7JeVaa!1UB*}Z䓉|8Dc-yhzdZ h4g@R*&%FΞtꤱ͚4lq^TVM:[xs@゘Ӹl&\ל# mE"GkwNblGVO  X,jJ+(4KpHk\.s3h:othnȝRĀrQ2mmC6E-aQpe$`K$ҦJnGZ[=xQDk ,>-zf=\~{\Tdf&6[Lޢ(2,ދǩfvmvvmo}8¸r?j-G5''Lh4iڣ/#_^WNϬ%^ݲחQT} AKX,bE/F ,zK;Ulu*\!/fq^ʮG۴q/G{ѯ 4R&T|7MInlSxIyEnaBwwu++?L _O[KfD$C"GYj˔(ipUXTbh 051yԓ3rn|qrIVrCb+$riV:l^yiS\C,KsUUq:S< 7lb7MP@ˤzZy_XچoZb˃3Բ}x*,)WH5A*[Hr TIh{#9TRR`0EEQMj'oUEjr5S [rsFXu8lf ѝ'-.fBCS--A)^]!&)ftJ6\y9kh'qc[E d2X9{qO ])aBk*Rn(P"RPgΤJ:ixwd eތI-)p566QԚ>ƀz?ڨXw)10+qgt=7c MYl%_J(=2Sf+=oQnc٭EQ4<|b $g[znifn'$JXGs;R g:E){;p7U r\zRZ"Y͈e/*ZY5r3xL޾(KCihD r ֙ 3Gt$5x_ QPtwS7Ri :+ިrC"ӂbJK}+~tM*_Jd=0Z F>` ,.9?m1m]~9쾱@9'٘ }1MШ iNze^ yݙ'1!@h4ad puңD*S\rE28 vw>=IQ)vlfOR GH251lbSE4&dTrN<%DxJoiD2i,g|;W6OLvMߒB$}csyDO Sksف3ҒNpx5x9qFdz WOB68*jˠ|'RsSgRAdhel723,-Ў&'[}mѰjL/ z5Gi1Ў x3g* (|ZmVfƾUetA>Utk)ћN/5V or,C髐}Zj:gFӓɤrUY.NN<9tWnұ.WȈz<C_@QͦWA>+zHI흆ĜxBZCsFX#ST1TB5W+h'@l"3;Y!+սzSe @HÅ;Tա-tOzԧzl>(0FApzG:zQe4:{^;OKbq2\mfii,I,6Q #G  'Bճ-4^]A*zIeWMO_娴ADQ:OXLצJRAA_#VoPCUؚțAA=Rly`^n{:  DzZNޮT)AAw|}8)#R[l hnYiA-Pl!9[OD5oָc[SM;|ae~D &(eG>^&"ɾE_ߨwǡBS[4IQaa}'F .nnr{-Dqexx>X\«W±biefnQiA:Pl y1я ͠|쬻!˭z^9 NN]@=biE3ML;9T qltFlvIqQ} X,DQVLx⏚A 6bx ZVwZ[oCqQ@ L#PhXn5SVUf/pZHE[o@HKr,BW>~&9}NN QbKyR7/ o ] ӨʹLGqAfb Robx]vEEʛ.7o~j05Xt5N(rBdz2X1Djyyŋ9|nnnzzzJ(5\J\W-!P5%HLL7˖ݿNÉբE͛7vٳYӦoz8/ܩÃ|/A>4Al(== Dކi3_oS0 RuV-2K&fӎ`' I魏.P|gd@iT{^/?(JqDݺ;?~}5XDܱEþ(j;}ҹ,꫷:&oԳP(^]|,u A~Z+ا铇/߻{Fݱc& -ijYRп'gԑs.6bZ ü SR|>M`!}d 7>Qi>>ޣGj󭽭^ ܯuk̜`>q!ӧ|6gΞ+VݻmۓBB97//_߾};8źvJlR)lڸqK<֭[k$  'NhԨss󜜜f̘nܹsv.**ftppЎёY1t==?mڔ>>ߣW];}G4*ϛr޽7rg=BzNA>FgKb2oۿa‚|G{ǽ ?9\NRKҒH$~]!):23#}AsfͲw?nuu n&.r}#\ۦO:} ̟K+[m_!x?V9::BV6d_Ձr:v!kAA#GKJKOl|;6:^M-]`#Ah&7m߾=8Mϟ0{,8GMniaѥK0 WsfG\:id]_*ǗΚ93''gĈ{v"(_EA$)''H|ѿ_?ݺuwn|Bȑ֬^mkkjӧ1ڳ{b#epGFFB i1SѨrռM<|P(5AJMMء{Y.11.7" ݠO:UT\qfA͚.RMF/^={8 r‡ "?ӌx<EysdkVrCJ9$cǎ  ٳGє;Ԣݻ\qjyK֢˿u`6ճW~ѤrpK!D7w.H\vK;ww^\\ܙӧ"՝Cgw_$&ϟoظ_SlW۴iS޽E"Qff#c#7m vm] yBBvvɓ`.$m e6vBl| Hv_BTPhF^}+_/[Ed ULU"_1N:}={oܸ W@@+┯I-EٛBLcDӛ>m~ٹɩ/zʆC# 7Čxhv;~۞3i"/(. y`t)p?;'vMyl6;%9%[W} yII3g~r++Dˏ׈Qw(:'7GHje & _?jAG \۾7N֬үBj&v8i2H _~P8 =--,`oan^$$&VjN Ϟ999jOpC~^mJaA)S7jQtWu!IEáo]yWOãrs@}/QT1N:Ig̜ϟLJ_ ~{y5_xm-Eç.!z *z֭vv`2Hϟ ?&D"1Vk:P*or{=RܭYРQcqyK}ѫ}`1Z[+D,#wqv9sTNqqqAaW6:4lؠCxhĨ?EE>;x"`"% <:yqcmZh8`E<223mu $Qy䋪9y0332sҥd혚|5۱mH$[dɚ_طo!C{ܿE>P>߯S{\.m1Wbtsu%+aUNOx;{{8ՏRZ N-Bi<<9ERbqǑT\>qǏEE^/Ac=J$P\I 4==:JIe U*1镫?^tR:kGN= ״a%B-Y{~OR&NЎ!]6h2-Z2{Z"2E<WAh]EEŦL5Uv/ z%_|ZNu633stt8zʎI[J7S_Fb#| =T]},R-@UP^[HeK~=frWZZMH(^.AՈd9{v2u*գ{wnfs7n_[ (99K )4|ZYYYZZzxx@=x=fDRT\o^LQ]Jĉ}Ydo+W5lԅ)sGoƾByv>lFTyy)Q-E䃧.z@egg];o`hv#((Dnj=[7ҡ{8:1(:kllWYMyrr@\T 񠪲޴36ɟ~`1]ڴr_^/C '' i͛1<×̧9{n\4S̟=D|zyyGFF6ɹjGQla&"ۻI͏?Y5y])-jafV!#-??w^5I9þʵ:<Ժu>>^"xXx}s,--j3zTQ*NH+k7U933S__‚y?{Z7}'((};6m; ***lmmIҨ{8a?}GD Ъ̾ O@V4N7n8(yii_N$ѝdCfΜ۬w|ś߮S=i@81b1yQ ;5|E%FFF :֥KpFF㇏=:tÛh*o[*ݼ| e7"8+(9D4ŋЂ藕>{s1<|= #Ǣjs& xt innf&:;9O,X%J;F)LƐa#ʙ%S'OAO?,zeJjZHTeEQQTf̚i(//oԧ!;GTPfΘֻWO"ڌTWt*v*4N7n߱Fyy5a  } IeP^F}GPjWK7n &=-}ڴ)ky,PX}qst`CC՚oĆ /Ss;[7rm:.V@{-Tߡ,,̳LML*M:8o޸aIP8ߎ.]tv:*}‰ MͰ@l'*Ɖd_-ZyVh-jXK#Gwt^$̝3{i f? Q]F^3,߾];ht0|G4JYzbTJzfqhƝ'MPJ-تCW^t++iviӣ[YYB 4b4/Ǐ;ftzzl%m[=}"55{bϐirX2ܱCV-[dX[YӿS'=;2Gg(7[׉.;jgccCW'\M\PXhcmM4hܨѱ`DbiiIiTX;j-zk:uxٜܜukגS>B+..UT?kkǏyxӮ<9~ܘcF)W--,U*JHIU'RRSzzPIRA>|j]lr>cNA]\̧Yn~ #E 7#=;>)Ei)IF&ryǎ;~;w000fa۷mpN~kMrbA; JuϿ;5o^Ck[@kh9K &i.|7mk~d-.* }}|K@5w.?Ʊ/.:ު|_/UzG  =x0taU|߮zjbOaozP1жZ E]lTsXLi*𛯿`L*)-+sh}/ika&0uoYf 0~l@@\t_7?v|Fܹc;́|bjZ@$&ﭩ1|KUꏏ5oQ[yyG |ԉآ  Cp n횵/_cݬ-׮՛\3^Y 33$_37>rD^ns=pd♳N4zAcApq8,mn- wк<{W[ ||7NOrxqA>UhQ)-PE^|yӦT8po`؏v vvud \<`V*?L(ӕEWQJ ;EWChҢ/E 'J]l)_C "޸BХsV-[bCu``ΝfZ2w'O6215rEyɉv9s.j)...6-05XtNb RGO#z`pUPvt  \b*aH4iN:YvǍli 0(f ׭3gNرC)V:ReZ+6:`XTI;b '[I@ nBZ:Dݽv/FdAWIRL& cK/>y 'OGl&h)?xp!bfaFs[G&fd)t:>N^%<o{ںkϴًV~ MLYlXT,+60)S{"h  Rgԃ"A3EGG6l冝Ez؎M|  ?[-Ҩ dX OiIܹ3k֯=sn~2JSfGh۶C~nWSS 3  gN]-RiE\:y5;f_amgkhlZZZߋ<{p7D-lNg0l6F7"^>-LÆ YTVZнWNf._AI$:,  H-bF<( Sl=t:@tY'wSKkq$.1{Ν{=uworJ N, "Y,RpqK@T5t=gT*߷{3g$M" PRl^8qۋŊSǏ8y[؊be6;~%φVf&e~s,U_DANŖL./,,6m΃aTњ5z4q*)Qi{]75/ܣs!!}8\.-Vo&ToZd0^.6_SSS9l6lx-⣈ 5u$^vkI/Y˟?[HDHN_uem<`7or٪-D R-:-e ̈́BTQx" ԩzIuܶU&> v֞Eٖ6BERmlmbKjbQ-e] .#%L&MiN/[ =u!yYq L;ob[s.Kg/(LH:ؘ0- x׮_2www>G!V2iQEbAA m߾`]۹c'>]ZV7ݘoX8ؘ/;hggg>%$VU GqE6 B  HSwÈR&t*-)$䌬 IEfvɩ.ZښqFguG تjQ'K}i^  uI>HSr IZn8>Bء[__d|Jlє/X,//{ۿgϞ-7p8"֋GAxaD❆ (ֿT!c1l6;Qi! iPwb"T(*.#P x!BASFV,|!S\B%tAA[W  u*AA>7> f*2N  u$nߎ\verk>}_gBoݲۻn  BRbSM_doeYw?۷ooffVGGAGj]lI$y|bŰaCࠠ.;+ Kҭ[^rުeKzk׮0&w8$$dϞ=yׯ ;qT~^Ôɓk;  Pb999}Q$LZZZ:uܜqoۺw۶.O6U&ϙ;¢S={nlc`}޸~MOO  R.@q\_W''@`l6+ĉqO8'$lQ'Ϛ538(7n޸|2ϟWe JWI&̬aCM}AAZ[`ʔs۹c ĈD"qE7o^^^~QTS333mllt\$ u̙  H.9]pN:ݻvN4MhW_ 2X6joeeeaa^CA[4mY3fLOIMU֌ܛ6mz PN֖Xql 9k@bnmAAD'u==={;;lmmko AAV,ލ  R_BAEPl! "(AAj[  -AAZ  H-b$99YPX[[/ޠ" 3f>}t1_|4q$*sǎ&^2,66J֏6׬]s"k.gͪFH!AG햭[+*$ڻo_D-Z= ǫjgΜ:lX, nn))+V|7y$> |D(J[|y} ,w^\\ۧl]nL&>}ZBBB Zjv|@ 2H}}}ABӸǏ7Npr_=<<`e˾=|ȹgEEpld|}~qPG ;u۶K,-{Y8uA_,!M{p'OB feeA-,۶iCf|߾}!##d&458**Jg99s-A@2d[g>B'O*ڭXF$U5}j%Gڲu3O uyPZnnn׮FջŋCCKzNNYVVZM9&j  'rd#F' zgϞ3gfgg[XXo^F{.>=xmبᢅ '''baH a˾YFFsHZl TچISTT‹=;'屲I$d#6HJ&?=ͮdM5rtuq #2d`[hFFF?ֲe a:]͛`Ĉ۷pP -p?~^e22  K=-b^!777//*4ĖNɅj AANŖ\&NχL**(?U!FfAAԝ-e*4=E vq! RԑRTvb rL&p8l[@oBAӞ-"PRRR]HFr9EmDRp|MNN|>s|zAAzdתU֭[_#""Կ$$$U/^*KLLܲe B BL  uF]zHMZreA,<ϯ+_GrsA<)ݻw?tRw #c a |FAaDPZ"cn޼ZVVF?\,Cٳ#LÇawC| UVZȺ'  #"""/_N~MLLTJSԌ "ؗU=4Ya顨㕋DRD*Ҫ  0bqi9ïD\8s_~!T/^l۶-Ek:|xxc|brBS#K׿?!)9^.I**d2e  C]-*ݫJɰ7nڋD?rHRT\FN>WT$+jTRKN  hP?=[QQQ,]LAi%&&^t.9ۣG&bkaPVպ$,,, >2  [^^^ÈڵZXK9\0&\h"xu,l>-(,o4  uL-aDKrc#'G[w+*^$&D\8F>/NU |`|ÈT ePvp!%ǎ޽!n7&9lR AAFUTTݭellr('/?;'c=h $adduڕ  !A #jo%hݺh4.^N̾{?ؐ`x6tH#b%ךgV D!P?b+""B}>5l@`>}X4 AҢcǎWSV6>D1։'ZllAu˗2 hݦkHLMK2Dn*ڨ'fffp}"T%jTEM/]?kL711 SY )´ cCh&Fݻw[>!Hm8/op+Vb4 92xР.fT{n!!ڑΝ:m}||j%HUdٲoڹɎ]{=ٵkwPPSSSkv=za]Ĥɓ_xA~_{:"ȇ1h``mx;NQqIFB7{3LMR"QEޑdmhRRСC@王-" ^`7ܶnZiFjJDDK=Y V%ޥJܽ{7[H퉯7muSAi%&&^xѣG! 4d%b,L?N`3!bg Ⲃ'NhѢ^rPXX8x`]tiV9,uk"`0{6&n޲ʊ=zرcgzz!C;vܻwy3O'ht3'ڵkCJ[:wB"ܼV>!!!h4͛4ccYNN"ڵ^Sx<"߃x]hĉ4dA]@;e֋.͙=;??1:uܹѣΛo&42d0O8dИgƐ孫hYg6k߼oO fUk(oXO֭[‹[Wy<[MS޺JdddacccHF̜9s@}Z׮8x营# {Ot'@f=JyXRR&3-++OjYI)Y1O] 7 Ǐ@ڋS?޽? S ˖.UU-;bԨ}e˖/0A)Ւŋ>MDsj%:'йNd[L&*I*(-333+#$1SU)t=1ifl=@ U"HIP ǡ>ڟECóueb٧VE LBݗtb:j pmڴiaS,& >Դr}}^EH${|';J]X, [P(8\w؈?B~M7A4 D4 iHlTKZisBQ h4:[ JȈ҃A=قv焑&4t'JLh PZ֪-Dxޢ0 &)Ū&l! kDPZ4:M&3tP([TG+˩'it:U -AAtNVޢRAQi4>REGA;X;SÊ 4dt)D">Ai    mDY |>ԃBA|@  EPl! h. *y9NUAA4Eb+hܬ7G222"bBC޿[j÷mF^4C ?~k׮uScAACbӿ͔)_p<&LE# ;x8fGbɓ#F v޽'99b֬NNNY\\u OD,gK,100 LA  qS͞4yR^ kǏ/)) Ԣys2  .Ėە+x1:: CBBݻ;tkW'Mlee5/$8..ر'M"AAJuK___Al͙TVV*/7o>tY33gmmZZH./  M?nѣǾ H$\854_ϞlWw=tȨQSRNa0=z􈏏װ /xlf|~ĉI⢭CAQW_;|„ȗ/Z"6;;Ș%A@@@633Ÿ *((8/֯wuuKuˣw˗/l5oVbѣ!+W\.ɓ6A D2/Yotv:|%yw؈"ͳ}ᢊoZXX3OQAK&Q-d]'// <[ǀڷoܹ233GrĈ_=m[={/_,8$dϞ 4B,+:*rpVXaee5cL(WIIITdTJd[ㅭ]nTفd2h>}gΜAUڃOdđ*?ٳ:W }yTd?F3jJ$(dFՠd]fWϪﴄ:(,,HLI>oy.YMj VYPiu222@U3 ooLٶu8ۉ|~mjRPiPC: `*חH:Ch jYɦCVR;+zƗ[n}e~lm@C1㒥^<=/Ywenn?rd^=ʊѣ{ddLlG6$$d47(dʀلBl)_"7l7/""R*Qyy;"T#'U.e^%/@zz5 Nmدڴi`[zdZ.l^HH,7o;;wfXnpcS.4{ts ҦNٽxX ԩ /YLSRRcgΚ]VVoN8~k2O7{}ni2]4zI` ^OUvΒ!kvu-_~iddt#MR"컺L 6zjfͪl=+VNuȍksUvrgCe ϙU|3i11*DDDڵĉPTQг'O [ֿ&qzSSS4*;T}AR4_˪ @Y3arx!_6jժ,xk#EDԴYOtHD6mIIIyaVj-V _k1svBTB(lR"W1t=nݲ\ )w&- 6p锇,VBz;u&UZ]-$]@R/cL"+׿_KǫD>"QW4t UPl! GpK6u͝=zlq?vڴ3oWd1|352*jN` 4YYYP @3vXjllܫgO,XANإl;\]PPpMTv\}|%K Ɠ=ݕ;K"*IһoleYO"Ce˖ߙ3gjr2///׮ÐI>NT:hTW粪@DKB*i֬36nxy"bFGE ^zu.] Ca" Y3qb,>22XiVxy<=<Ϙ XhFFD|;}۷S4}}vKyQHu60+V/ǏNV>O.P`8'Xm̘#j^Mh!t:q„ 3g ISʝyA`W...6Vڵ#UZ]@3g@3j^(?vve[ZZ8p@>NT:zsYr %Pl5nTjdT]U, \=4t H}MC} 8?N{\vԒŋeက _ӧX.}Y /U$xb^z>~+ѽ{ރ|>" 0 WSvF>>>OLF4R$Q*;KڲP(N VY7 [В{0 [ۉEEE999FVV]~Qىu$ZsY*At ƍgV B{z[޿㇏qyy~Zx^Oy5PH*WYSXAZyʠ BZ5 .PY5ΰ |iZ*TkW]O[##ca#}gC&UA[^^ސ!CMpih$Fge貐 FD"焁-[Θ>]{#uMit|V&. iBA"(AA-AA-b AADBA"(AA-AA-;%٦">BW  HBlD|>ǫҁ؂T*d4 %  Gb VII/g,^D)rŊ)Sp8t:]# u%H|@ilח`PTP`zzz c'Hd2H `S(B4D .@b`/a/@ 7BL&>BAк<^-^z]vmo0`͛7x}ѣG:t:uz15kAVHxq ˸\.ȻE}AAtn^# KJJHҧ\ %--ðϝ;<٣y栥@A@K۷]14 )--:hAA>.^#  EI1cw؀f%$}}6 eee }=D(⋋\c/E4&ET!%EL:$޲e˨QjӧO߸~Lg8q" xoCNGAQNCtƪ9Ėv&42JbE$[`kmU-U Y,&WLJzW-јԛYg͚UTT ͛yB'  TL&;vLD%śMVex<.$L2[LB&E"Qd:A37(S("d4dRHr^ D|~qqq߾}6Kő  Hzϟ_C ٩&4BX(K$=FX432z)6 D2RṼ޾}~X"HͶr?~x5GGG  <:[t:{`Yۂ b@$!cuB *L=NK{K'Q  2l~?E|`A,Yqಲ2 <;#%Ɍg4t*drBBXTQHʶmٌdggSPVHg1z"q@ 9Z4{\Z%d:$  S.惞8<~ԃ̒ڵkwQP] x (-p&&&arPTϾF^HQ_&;s33Qc ᯱq` Ykշop~iEyQq(/UZaWke\,IEB%wl_DxeRn1߷{qɐ f͚?{Bߑ/8֢yyIH0~O?ۖ)up;[.//_tP(8p!p吐]`áU+W)Jȝ_=slmm!rÆ~#"""^"tH,~:ԑdMkͭ,*]hEsHęo@8I$_e'''}}}>ߵkW 6^Xׯ_K##/ wnJ ?tkBBDbѼy󭭭 njM6 Ou+hܯ'O&sKx\RwҝsX,gv)r!4%ɥ>|K*I׏,II _ 6:w7o`q09gNs9&M<\r…C xz\x/^^H]]]_#rHKKp˗zz`8p0\j^:np3GO ΝU+駘L&M\\_HOc;III5w2f]FΆ]&T*goٽ#7b9zLG7@l3YTR)TT ('[pY[[oٲ%00p!/%fGEE}(ãgC +V=sёd-Z ͲUL ӧDbq$N/+-m׾}-KaH].pnZ6SD{QP}M.)S.& ]-sssHW[gWBrx^]*_ **,Rygq}{%<=͠!Ca-[x DͅB)33F'a%D?˝`3:u:a2U&c*d@D@"!l'e1sv]N&eGi9R'h#(ST05'Ui)..)**dYT.=(HDaa!tr]аO0~]p+W̙sn6\I{۵k[^V޻w/"fػgρ? j޼yff1G;Vmе"٢R)"173&NuDOMfҐ@XeC Пw >ooo*= `m~2ϙ:4 Mz$#_5xР?lR~߈޿7l`j:7 ORAi@A>+t<1ARL9/OO {wZ8qZ?~wK\ޝěZu}hŃɏ T1](Td̈́`]ZZ{n*UeiӦi~j%y[lgi?~haiǸSjyG&QHQgu^6L`5IYP OB@$ LHTB Ӈ$r%߬/ŅťEt=_,'#wrX()b@"aH|x$u~?x/_ٳ#Ti`dd;ll35ƠW~-//oȐ!{&~ $E!~QSVEyEQ~iYi%!$ $!%. bx|^yy)CL Q? |P"&Qx!WQ9V4h!޽{&''J*// DR_nٲ`HM]tkDby:& }}DB51h==6MBĒ 3cenK+BÐm`1-\'!!_~ӦM[l7ߜ={vٲeWH@,Sʹb۶mkhhr{QRRDAQ@׋ eg}7bUX%b _P_"py\Τэ LKJJKJE--2R., " `0eeejݺ5F+ " (SER&Mum?ApŖ-[Z|w}7~釽{Θ1CDAAzAׯAoyzz8Ç666o߾uppp۶m?~خ]ly}Ν߼yŋ͛_-Zc_|٩SK$PZb8444''by\P斕|AA~]v1޿?((6* D(-CCf͚AKKK.۫WrPc9dH-[EsWݻw;::V " (SEdr\\СCwj7o9rdXX${uBBBQQӧAN B8Ր+*Μ9y/b˖-g6333p[CgϞ=z(00P'  l :qݻ;vrGGm?t7n$f*ܫ`Xħ@A&<Ν;[޴iÇݻ׿(СCp`Np  ~@-ݻæP($v _z{YfE3m۶۾}͛׭[' lHپ}]v} )fbbL'  No֭Odnnmcc?j T!cHlɒ%SL9p!uիWA$ ",114\ff&ǔggg  <:[&bƕAfAL-`XtٲeVVV) 4N>}ݻ!ArrrשSO_dY׮]5k[HL X| o! R_5"066!d222rrr"lС)V^]^^?p3 VppH6k,H6x;w>|[7AW.d2BѨqㆿ?Ų611qtt,***I__f#40Oģ)b%- ! ~Oiii۶m/^y4*o! {tdBrss%ZD~ɇC  B D5J4AAnl1 ssw/IO tYt&A  K.@0L++ˮ]ڔD@lhTPZ _#" {trF䲶ҁؒ~db@W  :t!A@sX:[D@{e#>X4$$!=8e09Fuu @zx6Ž}tsFޙ1  ^ZB&Q'4nh$ZmzXi˵ͭaLʽ<^UFU}ٺuh4GGǥKUQVΝ=ۡC*T+Ϩho33*28pyffffd5mTuYy}$Nv̙UaD6#tE׬Yuk7 j%BC><*2R@eXؼe J[6TCbq#Pb )U͔)۶n\vb_T7ϰa ݪ{=~P=^||ʼeKV]D\74ׯ_ddd8993 6`bںZEײC6[DFAAA}nܼٷO SA6Fl99FFFHK\EkQ]+V\|<&v{v9rF;V*..޽{܌{ C߸fOcm8ì׫[EzVG-9pNP333nj=OS(ZCtΜ9Ӽ5Hf`4Qv$22j1~B[yzG!^Wڽ{Wĉ{EijX\ҐxUU~c'ѣӧ=TWn-ȬBr޳{ז߾}',,[]xQmNޡR<S.ujFVV]_5xР?lR~ϴIAK :y"++Fؒeݻwd|>ޞX:/.ʷ>>>Ob033-]-+8e%yB$@oeTa4Hf6mի FUI5O);Ie.^W1bAW㓗34.a->\.ɓ铏y\X,&+WRnnns ɤʜ)/YotpZóue!٧IQH!LWMZJT6IA6L*l6XdDZzi8ԃؚ4yU&L9kv?n+G]8pu"WdX5k;T>}32c֭[*))y=FFƾFT hR4(;gI gK-vϞ>.\ ?6ut6!@v$*cȈ#DB?v è,AOw̤Rʜ[zXebPN-[db\Y# 9 El! 4IPl! h[  Z  A  EPl! h[  Z  .,;\,hB  ljֺq}AAFL5Vvn͔,N-,M AhN P9y7S2tO2# |j۩o{wieP&͍|oկ]}WAAJ5Vna󅳮Z  ҈%2'k?|4AAJuAATOlBAΖDEF&7K" XЅؒHEdKb\ BP'k4.nigRTtdX :B6=>arPTϾFզޙ1 DͨsxN >###XF-Dv% ɣ9[bh)--֜tW/_xЈdOetíaT֮7kn=ƌ#INN^acG'2∋mffHmI333)dFU?I g=|B.Y8wlt)S8|S<ޟ\n9ҧOeGpڵKzlAAsd VYs%ccŋ1xhYQQUW;wpppcnj0`+.>[֫IkwJTpڠIv70擭jʷ"nݺuW\OZYYb2Xtn!MH$RC&%hc.y~Դ$ > (tFM /;w?ޢ SSM*Ffʔm[%x;ϯ9 ̅p0W^ cdgΜ]w7nпr 9o ȵ֥\MKO7n|-;w"<77SӦNcǎҲ2bo~d~7j4?$hyY kӯ[pw# Fu^efLJ$Uرc[ v;t Iӧ A?=~\pVk!'O"" 9qΝ;rr޾{gii!ozj֭[+~?! i ?o]h1,$ hǎY[[Q>efuQp%FEEwߘ\F}T٢ys葪U<Y[n}%[[;6dIڛ~#__x!?UVslmmU%vD=#;[ې-Z(gݍ]ْӧVq,\XXXZRDB!1I=٪1͚56thdd䦍a_!3JCCrss:52րFiF Ͽ{`o7NVPPxbSd};;wfXnp47xȑ!5k/[^/hh6m} Oeׇ:tҥU+kBh„px3gV638+3۳VX9i$(<|].l^HH,7o>LXXX~)*w+[ 3gL4xLLjjQiй&&& Gݺud bFNd\VB1T@,54@t t߹EbqE:JK۵w1[;8#68vvv/,--ܾ2=p @fW.ɤv/[*%%sIwT4޼yuR'0&ppPxUgf ֢^~.]2A՗Y,fyy e=YPP`o~.*Ѽy gkW9۴iSE [>r$#M ݻ73g~ڠMLLrsseS3O:0 lvԹZ^Z ?}{ض51114tm9|ҥ1zAFLt1O>/Tw\} &*&I#rxÔukCaWϞ</&& qwwgtoooMNM=p^Ep ߿ϑm7 =<nnneee]O<AL(?tx[Wuxl}qq'V/(w WОݻ߸iO;tѣƏoM"C.+IR{9++ZQ邠G__z\# v7R/K77ǏS\ecGϘu60+V #:9A͛7̘# >2"ܾJc/]/!!`I5DVwBпsC`h8a„3gw=IP(brZxҧLHjiN}.d585eS$%1vM6]zrٳLLL;C|, [y"|0<|ykÕ-79z{Qh#E9qƒ?lvqv>rpB3> ,"b Y.]^¤ڪ]vUW ݳG㏩Ӿ^RRrhǏbF[*Z1䕁]uEݻ|=:e}||>I7gff&{իWǏR^zeV 1ǻzhFmLBdMz*lRxU4U r;1(''Hv(ȒŋeaYAG*Ll˗ϙH>ղRIwU)AU8Dru*{ŋ'D-/kawwIwϐ!'*Ω'i4:1[!7yT6zyyx4O00m*(dҴihwy/d/ZXwڔ._&óuW|g5ȶ|t:]yLUV~Pxxxppp\п!% zRgd+bk/Z?[mfY~_ߡ*6KKKnjmkyZ}yIT?G K|yVA-(!uEciݍ4Lɖl~U feUEFFƾFΆ M>Cbqnn. +e"uM"x\ss?WߐP(3p\%MC6]!CٳXΣTikFD" n._kєѱIF~nHReAAM5l5I[$Z  ^#_rE7eɠ+ AAt~SC:A(TJlUTd2##c|&(& >٪"I7n'z׳'/_| Iӧ(d (-ccɤRP &M>LN]]8qϾFiw FTr*5adMǢtfo߾5mju"HcD) \fFFFVV6iVj! =W Ri,- &&VаML&S /l*p*>}l]غSh4% '2∋KPen333A;99}1jTm61 藬YQQp1V?wࠍچ}yTdʢjczᰡ.\b?ٳ:W5uTTCp8^^^ӦN.CihWl \`Ą_Q! Z( ט,(-(*@PD|(- T*Ffʔm[A$N]JuJJJI>oy.j 56 _rsN:w;?v8--+FU gllt;z֨Irܹ[l4h˖=3`5,]OևrR)d˗W[t#H@OF`2@nbb*dUT*`@P}+1xnzBMJ  (MB~ҫҤ')ZPT"B(FQ +UzB !dÎ]6e9Ógv̙3ggN>?y$,ꤝvOwO?goo߾wsڭUqqw4h27|%%%W\9rX___+Rrƍ@֭zN;:TZUde˖w=\Wm۶7ov])cQ^zik z\zbbֵ+W*,53111͛7o(4:zr7-- ~ +='P wE|R~۴i=DH8`ed.##cʔsѻwo{54\~st^F4O.]\tixۨͨO6o:%G +Wݺ5kl]A8{ܖ-[0egvܹf:7**200g#Bt";8de+–r^D44Xvm+];q٫wj&N˾}cǍ{n %l-_b㣢22ǏPRgyFѽoܥCm+bEp)ֈnݺ8xȐU+(_qݺuYP9kǍUmF},53"cM8Qhh}.罫O^botn)wKv+=nME רQô|ڵuO9ՉcnjU2S-Z U!C:u4r䈇I|ƑZ>ԩS##LNjoK1C,$c6l#/ ys+-B 8`XNѣ+3f7}Wv>>k|OWGkgy/Zj(ڥy=ݯׯ_W?5vOc۸[XѰAN?jR#Zoݽ{V^6p#2 27HeVLNa9j%|{?{i¬IG*aM68%ٽG|kv}?qb֭Æ۷ogee[nCСSLi>B|7M7QzfddzY_8ӻ_o ʕS4k4[howyxxO*ʑ<̋ }f挙3{ g֬;.R ܹ6nX ׷R5kִ^cIJWޯ_#^0uk0b{yxxxeƀ -Z[o=bsAՌLX|k뛫7]gcćbfδX^|~S?gݺveEaƯ̦FEFFFE" gRS7ĉC{U֮~$g6Nw'==팷+̩ρSRR>OO+ԋGaaa GoߺUKeɿS&OVy/wJ{{q̾4SVN_r޽+L+ O]Uc@lQDD[r<.ap=W֛С}2oDD]$e˪/_2D{-eyg (֔)S.^Q|yui/uJJL6u?k8s?#EWVmqw J.' O̜+=[e… =Eis}&N.6uC,ܴዧZ-ST;ѡsZŞIIMR ;+WS>V5˔&lˈsĀ Ŀ{v0z܄Ӷ]b_O~{GukVמ}5j|7SS/&aͲ Y:;R_~SB777^Uj5Ÿg 1/wو6X`Lk~n=~&OukQII^¥9| GO}~S-[W3i#nj?'Ĥ899y*W|ak׎m/n(#EҊY ;{f[FPI+66gΜQ(`qƪU|`iZ|N[|Y-eeRN1g-@IC*nRRR{3fqc#""Y3?hrR/8ɱI&JW0???lڥˡCu>[@Q@*.\УG^}U''ƓUզMm۶oP޽ >tjfME6Q㉐!:v9r/ k? u>s&u>lزeElٲA*(~+(N6Yfb eFVۯo͛M]7ogv;SM H xx=3;y=`K([Ł^z%wĈ8`@MŽ=ګ&{xxmvϏ?řXjUx-_By<<=\W_:;;ӻ_UL(ykӦMUJ&M8{:qĐêUCESO7~uEEFFFE" g!O6tE~-+ @C*t:ݝt'gg;cRzĤfc~?q\8ןqqqb ")}INegW d߿gD_vo/Eah oԼSpGGǪUZ)eK^b###E^| P0/R:u4S<:eee%&&N0A)a3 zt8؝b a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD a @"D-[$"lHD42 ]hZ}a3~F=t"Y^^ԭTCAWAfff||[i FrgB-~׿>L@P傮K~ZO?UXͭk#Ł`HJPW~I]k[YYYZWt:Յ| [$"lP| xa X0tгgj4-[;1owر\ryUâ,8|p#""bcc'Oo<gΜYn](2XN*U:ujƍ^_dݻ܆ڢE Qr7n4iRPPPb+WLIIyE.<<222`x'7o~ GgffQ$Zj5jڤIΝ;5#ًݹ.޽#zEa $/oܡC{/--mQŊլؒ%{={(FU+w lP|u;UN۷ӿ^zϢ;88xxxmfϞ=qQQQًbW\6]ň!ːG2)K+] / o{֮yay􈋍{e+*V:lxjU32k׬qrt^l@"# YfySɢ@e־ {i3gT:wnw^h, 64+&F5_t1@qSW&:88TRtb%a ^ʫˈ#-D](&ZmZZF),Vt-@q 2Vҥ˖-䟤k׼E8t!KXfe˖- Cbb_6j("lPRȿ}zrVq&j˔)S^H..]k[ժWgdnŒ@ xa @"D-[$"lHD a @"D-[$"lHD a @"DGjo.Z%ʖ+/t-@aG a @"D-[$"lHDְNH@U>B 2kkؒz>[$"lHD a @"D-[$"lHD a @"4 ]hZ'> "a P32.^x䤤t"UxzyժU+00bD6̼zue6Au:]AHgqRKJ [$+3Z}&rK~pppV PY$VJ !99? +''gdddDd*888Ω; "a P_َ a @"1t- D*Eۅ ʗ/Xe-x1/ޱcǴZmXXXdddF$駟 [DJ2k:Ǐ֯_?{Æ jZvm;rHNO>jԨÌeɓt&-a]bŹD&ӧH{{ϟիWRDj׮݉'t:ҥKw1iҤ1cTT}^~eLe9"ݼy_LHH)$&&iӦZш2Rj_g"6իq1ʙ-D6"ye}M2^IZݺu8˗===EV>)***==]D]_zΝ;{zڵK?c˖-qqq^^^b|ߓ'On޼Y,U<}%K [Rriʞ4h`6F3޽[^lYxxrޫ!lJ>CR{g335`箷guw>˭[n)gLPqի;99%''_/`0|E.]ҥbĉUVuqq6]ѣG333ER.ԪUKYBF] b]UƏNEEݻVxeroϗ,n:JyVliFKJl૯^!C|bVUO-@#>m3U$֭"{3%ԯ__ݻUVETǏS~aWv|j+ciln+VxĈ"]LIKL )W\u5hD;wG),ڲ:5zѢE+o%ѤjjصKTz)7.*j_V^UkӦMM6JY֭[cccM2Z{4 {u_}K*Ȍ+WԹAY?9r^ш8J1>44L2shѣG⤍73gkמ{nCEo;v4z E86Fjժ&7ߜ;`j9ԩg>eGG֭(gqRSSOިQ#Eׯ[R5k0=rvv^5lt:77[_|n͛7c+ P UlِzxQ"iiLcZ,+I._>Μ9C4k/!!!((o2ˋթS1c.Z+?[Ȧh2w/Owp.1ܩS'1阜hL,+KF TRʕ+k˔/h|@ Z.^~iV\VS5ːe :::f/@t+HJ[Zmҥ{{{;9d/@dqpp\^Qzk4ZGל %Nsus+Z"4T-[$"lHD`FQ`i2V/.@4{0x [\Ba+fͪ:!y]a"G팏t:fKayRhqc~رSN bռ,|ˈ7?==۷nݺarH iiiwܹ{^3vkDrppaKݧf/+}–%I5)ʚ+DSIZH3?J1K]쪢S\6IꚔjkr4rrrIK*–xIEi,pأD ]'rglMr,fedd( zz`BdzJ'}JR2sZ/-w7=4iWʔEEaK=ߤ\FIE!%v2=>[ 4ZbMJRJx.lIH9ťܲDSBQj(Sסd:P% (g222j(Դdԋ{.9R3[i-B~Zbi-zb#{*%o9;;aV3[갽٢VfgϲS*Ν;z#ӤEEiy^)K9Ji2;>[b)jR;%l9L)CEُnvWÖٲ{>[iNMQg[3 [rIi_#.DaD务:^_&_ 4nm Lo$-寕kv9ŢezR餥&-~Z$-PiL0x ՛*RҲryK[bX gLca 'fa,rgQxQhgPjİڑ%yKc$DYrQ--;J%Q)c+3I 'fIMY-;Z74V$-Pd>1YIJ-|5~ٙ,53]=4i=݃Y\o4=4Y ["Lov!(9,*[==>>qqq7oFCUUՓO>)<.0O5qQE2;b6h"]e֬Yyf<,311q垞={`'NlhhÉaNai{4>e?~iΝCeݻwըvSNc&ژ/55 %C?N(%DH!]JtI(}vEEuBãGœc"cƌab@%IΟ?kQULKOd6ȑ#[z/ %B*EEE<P"KB. 9xyy㏖_.꼽O>裏w??p@JJ B y7k.KGIIIW^6lXBB^aI;Ӣ 4]B|SNݻw/YG9/((ذaCZZ/\ԵkW_}U@}fggBNƶ߲ev~pp"-mLD8{͝;w…vvv---PҮ]7rH)7n(KmmsѳxC|u@CCC?۷ogS٢ HVx"PF??ɓ'Uuٿ~رc/rqq1 @? /bcǎEk4hPss3 @233~C555~-yc̕999NNN-UTT0]´{xxlݺU>ZAc`^ws!gVA~o<)oA'b{h˜{sܹ#F &,[ NK:ujӦMׯ_4rٵkjmɒ%0=J.є#G7e2LJE9,P:;; R(پ Ln6pQ+Z&f,U:v*[߉p9{"##ټHTT<]_w%wڵFh5m۶Ĝ9s֯_/u޽z ܺu+""bΝ+V%Ν;{w}Wjk9oVtt4a#~]~eXJX봴4cheJKKܒ ڟŸU-Z4юΝ;… g̘._`\\ocǎN:_yIGgHeaa!:k# |Me=_T 'O:x U:Zn]޽͋VcJka/ߏ9̙3oUV2eJpppJJ .̶/ll|XXXIIJzb`quuU×0577;a3uu!p3C'Nd9"; PVVvĉ+P$nJ|tc*BPgnn.F&; uf4c&9z(Fk׮b %kRǕQA&r4  QX,&ZX5=#idG͜9w%?AX1 k4]>F߱εիWNN_|tkm׮]-gܻw[c0-j0DO5D%\ .8!F㯷FU]jJ`ꪫzׯ#-aFvj _8,KСC0eoRtrrW_uM^#`.%S/p+,]%е)鯿1cp@p9* ̓QVg`<ŭ߼y&Æ8[qMӨ 0Ȏse-,@i .[$Ʌ;ŝ?Dz#ҥKL TWU Xr%t<vo $ߟonD|-='|s2߉`0=ȉfɴi߿?k֬}I1H%S[Xx,_Z-b\\\XIc0]pR Ɩv f,w;3g{ggwaaaaaaaaa3 0 0 Ї$%,aa&O ~`_bf{ 0 0 wC1drs 0 0 cVO ڔP 0 0 ]6Mلsz]pe>0 0 ØА;(Yȵt5qI}zA%bω]aaF/-WР~gOZM t-$z,+EZ{/0 0 #Oh-4Wj>-R< ZWЭ ez:^ZH%puuLyk; 0 0 jK2B6o~||~ۼWjYzvjB qRaa@Qt9<mp[YG*ln+ZW@*խ<d4H5+ $茕]۴ ʳ{X6tLv0],zĺʎ6Q/Nل~jL.A!JHJ$JHر=ry[>0 Q*R!C;R<Ie 0A]YYB?k5_@&p7ρAb? i֪!+Rj_0LA.t#RlFgncŬ[AlػRJBJ"_<öͻpqZ]I oq-zRIe@}_ WeQIQ8w4 +\I\hfd3 è V-\.Z]}>P"c/~}b_OJ!%Y>3 SPh)px9!hi34Rf"B#oK;b 켾9gێaѯ~3CB)˸L`=a^ﳮX4f[BEuq8aYf ZV%tZJ3 3{W܏},VU&"@s}ňeH$Z0LBm& OA 5%2Ϯsl1|e?sODNڌ>0p" =Oy^ũ QtTM;g?; 'sVmC1aH'ܾ2,y/-<[Z|sX'yiاeXA2>CjA$ʋƵS*l9 `yRg\V?7q(@ ~aт_ÄsOAs/,oַ]77UB_"Tm'P.+ 7koDuA-ҥd%V7siPX dh(P#EaoeR'xEu1k.@C(~g2mqYܓd%mώgс}o{5ӳe|^׻3ʾW_*j:>+ |HVSڸ؟-ݧP\x;;V9li;gm٣Z+_B)þ=3kjXB62 *rX9I2^, ՖZ0 "=ޭKՄ~jȷ WK.aLS'V}ŦT_ھ#(_,^gCP"tFZ_/ƴt\VO}d2]?EB^S.'NfgPc k/oŸ qv2tXk_(Qu30̇$#f_ʢx-2Vg }Zm Ɠ\ooO$'jf{~οx1+ |t$ / ,J;1/*KO׹+cBh=FCkY]L4oyyLIN` 7PJ>#aĢ1}ua9G#Y. 0=T}hW K[nv.4>Qn@ rG!==D$Y+k0<dP:FJ>u\, uE'l27܈9'IeHSAR+(=!K|G 8H2c=ikȓb MO$2fe~5{M9Y;8rc5Yy4ʒo$X*wfߵmd)(k{>;"avȲBt%:Z>aaFCːB]䫋 "뚴_{Nd2 0 0#AWio\7bh` ̽aaa2P̬6cžۖaaa޻׷,aabaaaX3 0 0 baaaH cogaaaa)DFS<ŋn:pww{o6?H8y>ҭPvSL>l3oIJl=qpDvAX<-, Sgk 't1#TR+F{qJA{/'.ĩ!H JWK/[,]NgI~xRS&?üqP]Ѡ0<ηfm)~Ϙ2 0 &NW/|]yh)tJO¯TI4bJ%Ep8P=1l< ͜NNHH<ժtʨѠ-~`2 0 Øƍ}m(cnjxvq۠3xHM| yaFNPbc6FsݪkVXVB@|RK _KVwiO+嗘,m8ځćcˌHO}G}̓ߥ˸"u$.Bψn 0 0x1?MQ؏Z}nF]kywR߭$+S!{NKhKm-W|[|#ޯ³\~w?.W'ĬkwXHӎVAhR*>ºu 9+W ttg(/0 09qppP7n&ԶgIMe+tHkj/U^ oEtDCXo34'ޚƞ: e˩^ l3޸/µl/,HRn?C1w}aaMj9Vumo??&մ0wV4/#j2d!BHzyCmESfƇca>L~-ve'76=&ƭN{Bh&SոeJ<چcE{uыq9$y~ cE6{y]_aas!eU4~߬\֭p&(oH#, [[K{ 0 0LAo@ @<b2hf'H<(@.O. [{ 0 0Lf_ Ik/]aa&/_?baa 0 0 ðgaa>0 0 0A={80 0 IϾCkeaaaAxX$ וQ4\>k)^t "۩ ? z]~=?1p\vq] Nǖx.0 0 PX3$%K+aaX3L6 6|aaX3A(>0 0, e^ga{q oc 0_c?},c2O  0 C}Q&?ÊѨN-)SC!S£uQ "B :l rB*k (Wso Z)>e?G#qI<@|Wb|c}~ͽ9TLuT Ĵr˾!9xFl*-{ljqP5bs,5kO|'gUd^ܼumƠeqf y )1km _77ρX ~&V|̱E1w4|V >G?#;Dx/*d2 R__1|3bP1yԱqA)uc3Gi/j7}1R(>?jVRϣ#KZ_-c}sѱ%QZU|]8'5Aef;fl Ka5s̱z}b_=K;Z0bw:=ƀYܽz*=GA4`{E)ܾx͝ϡӸ 涛_3jM7NگsЏYsp-M4x_~ \{`)e,Mg!Űi߿e=Rɰ-\beG,ywn̶c*n}Yd EtmwL<Iڗ-W!?~ ;46˰c:YOm1n{-|6,DRW_1|3bP1yQBswޒ.:F ؞erNl {K<~c[qDˑxs7kxݎ;q7[϶}_zqx0 \s=>`/a;G$L:+j9k ]>M>- [,t"Zݟ6EQ2WO,4e}{??t¬^"/8m8D^YnsU<+1?މ "0\W? AD"-e# wS%KC_aWXcAcoO} -jv]{cƜ^qϛZǓ)8鎅_?@ ? &n^:`ƚh;m ,c#p{LRJS⇱ER__aroG}PQ] XQE[8yB<~>T(QF̶, 6ξ{<ܵϝqx* &ŀjͯY[ͲAScd𫇷wln{Q`t&eJ$[&_*$-K@Ohn6Oz$: wi{'Fa&ބU1leKG2/mD=w}AbaJ7ILVVd*5GÞF Atp2d6}/_4;>u62#CN]b LY$|`)ڗ {s<rgTkuPB1vͦ٘w\8V~=5.񳸵n'!0G}}I(ƶ2] (gÅhn$"51 gXNscꂯ:j5fGF^ij^byW[Ug^}>ȯ仕UAuzJ,&"SVk6?]0'p,={ ٽbP/UCcŠݥ)_N1le7?t Y ԝc1MmyV3r[(k{@xV{K}O(7ԛ zN{B|6uZ5AiSMDUzAOt_b_]L_{vC֢g`ƤU~<'Ñ9-3ǎcݖγyL1ϡb|sԇڗb/޷%n=GduOqp0E?=IA@0=h!Y^5,Gݱub|c4M "Z "Bhѫ0c[`>f_淾9Oފۗ`8s;pYe1Y@ @<b2hf'H<(O` ?x'X5v6|N0 0}2?)sT=TN0 0a~X>VE8m"wdaؗ IDATxe 2?0 0 ðg oaa>h/0 0Lnbs#>&u J{rLbr;<$? z]~=9&1O\WSfD-Ƽ t\\\ 0 󑐗?{aabaaaX3 0 0 baaa 0 0 ðgaa>lno'+'Lο0 0L.Уע ;@nmUb˪t}?r&HTT*'j3/Q?P*0;>צ6 q;KjAf#C%wkú.(g[G@u:xvw 0TP`_h+]Jêh kG/TaLfg[4q# }Qy]nԄg!(='jt ( &u'^'mԨkCZ) xoĂlqMy?C'bޱuܰ*l,V TѾr]T%,m]PA}/ھ9a;ХaU!uAՆ]NL/6ۦQx WNށmqk"ʞs/txD>{BHL<4Ş#/< PN1s`ruLzR&k~+o;\L[Wu  Ũd`}cXӗsи[W@b3+DD 6=MH|}J: Ћ$JKN{QUQɲ 4|Jz:6-9)ѴO=%tQ8)mc:rTfTjbM$kFlPDP[_3Lu.l rkGJ6~M5ւTn26rAgUC64' {uwBt^aQ*{1=QPRZԳ,*~-iudPzDEE8J~Ձn=L/ҖɩD_y&Z']~NOe\Ut^E,itR7!87"%E%W4E@Q)֍M'uwo{jNzBqdho&#?;70)HNW'7;?hx,1MƣPz\@16_K kQDav{bPbe*dx$t?C G? Ur [ryJ~HwTezN@A: i@nn9z6Rhmɹ!C!hK7\l̸[W][́9Yz_8 (} S @3T +L.|;FwLb?KGFt'>" ADD4a""||Jxq:ҁ 6➮&o)%CF2>w&wteus&΍qIUO"Ǣcu(liA!IשwӦ~c#ʛUg?D<""4RuإQ=Tӊs$-~hRFJM ͕`L}CR ;ѾRLZ؍&QsSoMuqҺ]oBQ(}Smoj{.+N.'ƇĴCbnrvA)Jžx$4bO>b}Wh Sv5:Gmu4taߐxh7\AT8VW}[́шvr b?"֙%`N>;U9:Ru[XŃv!* Cw b}1G &ss#ZґvGZqJFiiG$*ӆ܂BOM !oG\͟&xkb?c9;#Q 'A>7 GݙA~4pz⇱fXHօh{v-$-K$X4v +=U"-[$ }B9mJ{u泐Hso^DbWtO-O*uYE"ceѾVMYa)0~.}y1>rbm*4e U轈D'"&cwժذ3J=!f'צC{*Eǣi\sh{BG^]*TNyV[9˛e}GH mIkd<2վ2εUzCu90w/+W-t ewpR+ڳ=`d'Vӻ~GUg -5zΨ79J]K:рfDdƓka~~|qV=!&ܡ!- gٻSYܮ؏س?%9ЙB~#YU:Jͷ [+Sjvs[ӵ:wQcm*4}d+²ˢ 0=6Zԁ_4j+6"%?jO>B뾫k SO۔|!4=BeJM} ڑsa7&7/v몫cZ/bs]oj]Ɋ6Ěj#Y9PPzZA{)5Re#kh抣"j{?EEXD"%>J%}hx6^3<#"i̕fD}:ܐGѾ+Eo^?$!{ssdaYwvL&wDzV}F*ɱ[}습bS"=]t,1G Gea>45,V=!f'B+Ħo]HؿA^F?Bj W )f>5767/f뫫Þ}s#SqOU2%_:B}s釯ȭbWr%Szj"\Vt/젊oa;/Et'.]#-q4~LMlH.[loChvAej{)S^S4Sչ'Fo[HQtJiO+JEQ:+cɹڃ74S}=>6F7 5{H7P"ݿ:yӎgbj1tzI_%#jK[|T{5V}ϳPdo(:tM_>bAww5ou/bO~{n+/ y!^"[70%Sr\8^=l}hڇb{ Yh< nmK-1 J}FK'k2VuWχM]ԯy})%+v&6⭷mO}Wh SOIoNPyG'z$)9>.ۜBSܣLwyNJ%žz@k&'ײo싉2}_/FDD1Qf5r*Q.rICy$}Q֏lRlȷ4]t'q*;A"xfӲ6q%TF^m1t5:SC|)חws):|T.D;VF?1KBCοҵ@+di_Z _3e>b4' K ݖ]4~(OF_&TJn>Tt+b?kZ0[$K;j:p!EhgANJP~?PpxG#uJQ~HV2r_b W+MQwRZF2kG\#X"V ꭳxJZ?y;YƙjZ ؕ+,7hV{:hJgOL0 0 0,aažv\]]s?xB(T8c톜ތ~ϫ0G?^B*]Sz} oO)^}glC:wCojdz|JEq5:Yϲch *sQ|J_\S[0}T4*TA3p=&EgsbDX6>#"$1M#KPjTμS_k9HK FbZwDVuPHa.RuZǩ >W}/|t1I pOrh}8;Tt9b( &u'^'mR݀P:ѧe*_bK]N=1~Ұ'/OL3ߊI7?MSy-oEm yU@rax~4kWdƵEv8k1N_YL7]mm0՞9Z]s:@c@}8TB_~[NŐxrZAPp$Bf% h>Ãkжe4k2OSSo>FG_k^w_v -Oy mL/mڮBӥ} Ww^]M5Wu8u&;*G:2g/ӻ?tlX 4bȦS8? (}.p ڨw6:p3< QЭܩaO0ax\iki~8)WqlSv]Xp{w8}W=p=x(:=A|t>3nSkpeC5r({bnO_#!T>11ΐ~+&ݜ4eNUO 9C6Ev/-Wʵ T~ô ۵Wn,[Yhy|c7rev׎bƍ)@W[;.LgV`o??!Z`@AD iSW'e9lj')[ =]hȈgO~%2~8M ^W<ʷ,j7!ڮ^/ cı[(p1ŸOu.)PL ϔ1(SKk~Q yp5ڮ*Q^bXQ\>Ru7xΫ8ZH2x,<#2PK ܘ|af|p/2U`mHֳ7P|8sc?OQAxX+c^Ũf[76#ppy~SL;wB~3u77Wbȍ>[i%AR*s"M"нh(sJunbut;~WDa=LyF'rXM*6L5{lY ;Oa_{DߧX8ll3onÜg_aS_ G*PV*#9f>+4_>eq*:[=y1wdw{߬#&M - 1ϘX;[^& ) Bb%X7-wdUl z`Sv{WmC<3WZ OL3;^OSTu`]8Mi~ L;\tUP񻟱zv¬0_tҾ2wy+vwB6t\jϔVhn0U7"6(}n&ȟx2@T".m@31_hXFuˎ=5d2|ClA}*6>8Wldy0_Vmhfo߁6ei LLbB}]Qd*? ǫjHtmo$(CP\]]VB4?cU1 } ^߻\~4h4?/Sj+_/aai@6o'+X9zϼwcaAkF=!?e'%|Ĭ;c|B͘4eNU/7_] ǯ7 &js"c2qk: D??-Ûgѣ3/u;qcj?jkCEn3`o._9c^ Ӷ>uܫ  #j]qmF̦4l:4 FCY嫷3]G_c`ߘ#냳>wc [o3yl ]VGgs36uo<ƍ@L[2.r˞9Su}sTll(~"tj3t )HIM3lj(nڳchIAdBy8\=\Okٸ )鈋Ö=TŴ ojy 腸 鈏|?ɱ_֎A)1.4/Av"9*լmVmvЪ-,?n/ z6kVc^؟Sz5^ʥkG' Yg ,CU(iu6+'OTs]fq½xd~PH ]&z9Yf(9|s۔3jBY=HV(UVm-s75ES%@9cӶqx|~qp(jubϱI$o=Ѭrq }KsZ[ {DXok ܙ ;1JD'm&ҧ ~ӲhgLLW>1gn"&~w#-W%Q h,6c.,ȳx#BN߸1ǸjkCEn˫~g0W`؟07&/07? ͻ5/Li];3ݫ`n?p0 󱒗_)f2qkM F?KϽD=a&a0 S@#e0 >Rnaaa0 0 0 }aaaX3 0 0 baaam<~80<a${^gaa }aaa0 0 0 }aaaX3 0 0 baaa 0 0 Ø,%갲uA/*](WV2 ػ^~|*X{֡sêp[Q42SĘ$;@Z`o%7QƷ+aՈrڌ\ ZR1l]čHWKo:J{þPxu{t}S>S,Z:󻺺8 9Z׃Wa/w\T+ҟaygs"7HK~9/tz:־>wԂFZKhM]Vr[Tmh16~˄Ɛ`:б~8HO&?9. .Ҡ >mO Kr˞Ðqpڡ'Tvi ѮB6|m9Oyt]'v7BsRa6~B6u7FjjMS(cC׉2VAmz|H׆콺MԃjXB7SJF>,NK>4E@Q)֍M'Ng4}E@nn9z6Rhmɹ5dCsr0NW_yWj)DaQ*{1=QPRZԳ,JdoI{E/#K:%(UZ0^xH[f6'}u^麝icY8|tInG+YҲޙdi_Yt9), /f^qgqm#*t6w:z*5rYggK#JMLN G~vn4~a S".Onv~?^sבW7P rS#}# 9J㺗L~5򥾶QDP[_3L?l rkGJQeM mFhn25^ %qh|-v5fe7uLUYz_8 (} S @3T +L.\DDi1$Z^YHUoHjagt:}(-Ƥv@G^GߟDEǪ^T;^6InWdxFGP {6rZq>?e>h/o$&gLn\){;uW#47KsKw/C|}L !MGz﹬;u.ʞb՞IjaӞv0twsW1ӗZD>/#'燕p~g^hG/MK^&P‹TH]Đvo&SP?Ob1b?WV[C~s*S՞S7(*!Fyqf4ot:%ґePF)T<"UQk$KOM !-㨘5ٺ*#^=#}/[ʬp@5am!Rzيl\uW 7+}/ԷvGZk_XѢkCUjŸץv _"CBj (@.Tp NLU:emC2ǡ95=J) {^k9W=1 氧>B3CL%VR wy7#=LqoI򥘶 1)hWAeM igmFhn25^ oW;ʬȫde8}%)ϝObZcžZvS}3}ҡ|αIhbXeZ,u6j(tsu-C^&b_%i j!hnHO%BrE"Wz E3Zҷ"I$2bxVϦm\;SZT6y]ZG.i{7"M'=T'Tj]ȁm1'#dc Ee4=5>#Q Uy~r/1%4e U轈D'"&c;wժذ3J=Eʏn1 ~cL 2t ÞP}!fH%4;(M=J!TAb(? AЛ J7*RTQ!iL ғY6ݝ DF(iMD374| mv > GbvdDĪUTFמּ]ȖBIC6t<5rSQmO0GX+zo]݋:Lܴ^;cW엟c5دbhS{wg ;,*.-GQd_F% $+׸'Z3mtC*()3S^Fm%@N-ؑzoyF? TEXG>S1/}-o:6%у˴zןG-ޟJ.ܤ4vtN5z}'oetlIۯSib߶NO(_Ի^E7K)g]#*B;S=iH~{ ;)9Zx _!؟SQk(>3 hH_ 27sRݭ/ KVCӦX% iԼ|aնWDx4RH7%)ԯ 8N?N!ZX"j=k7MB͏x*()+4w 8T֯PB̺Bh]טb7fh""MZؙc}MƏRI*;.j5]&|]FvA!RX"!I-dSWc-53*_ ?cJxgoo/?)Ϳc釾 JNGp6n0 _>{g ? ~=@O1 (+ae~Y.eE0Yqmaʇ}aהÏd%ƕy{ zzξuGhܠhB{{{WkNc"OF疍ѸUW;R̺qxwidfw1nӄ0orw{-t;>{bl^npj-(D=oE"ct@'rw{-t #*|mL Eބb6?mܼ%O)U9N(B|)&՞RǧiMZ/t_rdSݚPw5=[IIui[JBKϚW,l[="BLZ(VB>]V5T8Fh|Ƒt]kAA9D#V~~ t&H|VG)ZKOOGzz:?NETq mPy⧌/woFo!y'nQLC>q_V29z'aƁs`:&i#kCw,kSlٍfLPKr=/WK;N`=/ GGy{X_{Uq׎⍔1l}y{KP\0#}ШPL{WvODȰ:;ыq \pÚ%chRƖXjR1|2y-o=6ƪO^J>\<8tq/ҿB-RL/bS :CEg=\ pQ#xs<=ڍ%OP^:N)&՞ڌO[]w 0NT&7Ă4"UѿK_3`e"BLh-RhAp"9jGuԧ|11(%} _bo?rr `/~ ؃=Ci"Tg6UQq&|8,tv߉)p4|z0*?חcZc/n%MEܤx͙ l5 +.d?}uă0V [zx99I6piq\#-5b=TzM0-2Eɯ_$D_ 7uIJ|RgBk]oUO=oFD!uuҨMGj3W)ubeZRgOQ Brx 'CO(x)P=ggeD*U[sx8{ ZE5L^.Ff^vNC&&.'jպ]0x6U^K}0fTv#" }HޣToKn_]MCUxyF`#5Rw<07OcI~X5lfCzPIQoFvV~mhNٚ(PX9=¨e߼$TSOel56Az~1І pj9C~!V< /mwH(WFa:Ϋ%~@aN>M^N|* !S08Jηđ*sZ7hSGH!2rDnyU*tAY,#SOV1W}U1 sF^>n/է"$^A؂dßw|f^3p NнE_ԙRSf{%L%ŅM芘+Fcyز 'GҋPP$S YYsPI!F]ªY#)URD]SPbr:j̱"Ům<>ghOku̽Gm_<܎!]h{[g#`, ^z3PWXe @M 8>~,_e R9Dtٯkn[?>@oO ]I|MŒjQ~~KfZ ősp?1 A-D~̵eύFmg?v|/힀CmƠz0g,|6ϛpv Fհ{xi3:wYK; IOş5߹6)Lm<0bHs~mRwMӢ'nzȼD6i-[AGeEzԭ+X7?RPVŹ5M1ƜoG޹xQg=}|3T﹘"Da7+2jz67܊y(H'Ƥ^5l즃A?,O,2x6l%?DΩj'B9NlbsOhtA~7ZքpmZPi.sDWJ[)HhQ7o]3p5~\#T?۴\ IDAT_e nжC>skQO~ 4 ZY`wZ^MZ;ȌY뾁;񙘰>%ۃ[' Sqԑ+zN#pjBONL|;-cb7oFmoCѿcً*gsHHFlQ=JA|eL9&Tkfn#C}^WݏfjfNCPSň}Ņ uGNǺp03z_;E^?GslIQ!s~zC|8$:#&".v{CE-%TXHDdԙ1퀹u20C}aLq`9̩|O"(sn~˰q̗,yi=w^dmSm2k=)@av"g k?UL ''()ƕ'/uR\JBai)Sҏa[gT9ti+q5&EIVMoQ~k HwP"": EL'{ײU_ _3` CxBD!75 nAl|.za֓H}Z§8uz͋Ųo{'bBjL E]S̖ac+)<-$OUKG(,-E?ױlxvS'&)C,O1 ,®=nӴ&f?j-54}f_YGby낪2}b'ŏL A9D <]9wÙSk0gh`A+ B~LgX6/n{B2{m_֎mֹlӺ 6Rpa-s3a7_b+H.suV~[V_!nDݑ; ;˿{v\0Py=>E-W!b?'?w7) .&Ϯ֎܂1(ti2fx@Y qYhЪf;>n/vzBYa]DڻU>wJs-~ SjhN{s+l[ O)pD'kY j١o͗|\2Evph-scj^ YE!sjubܵ'#L-gFVW<~=~`/OBzjC`=3B4Y<\ﲜewk|6 ?՗8EaR)u|-xgHЧК5xr{5}cdGby uͷR4W1ubU]*7e7-Hy&ÈL` g]%1 WWza9]<&vfVNھn܀aej +t`.σ Q V. }zFtB 7WTE1d:P5|aɶK*e8z³^kx NICCOw2-`gn [&h[|}r{u{۪*"'o)&" =/u;Q &0G.p,>G0` bnQL-R7ojq? KI:zWW~Ln~aHSrv>g'YhY$&Ơͽɱ't;)e'ݤQgk41u'φ]GBL~twBSғ<*M+]ʄ6_KīdbRm?>:~D>N)-Z3-9NSy,Ayn%OztQ =h-MhH{f X5W{l{iy.P6z񗧉{ˮ!O-Ghmzٛђ̾o7!bJ( {ԦT;(yVnJ)dڵYy'֮FԧG5I#u;IiNiW6S}k{ Qs؍=wM}:.iد(3 ݋Gh-&%h]ZOę](Ů޵:_E}+Vb8mmy꛲zcp ~| g& yobRfHE%'u\s7t$NtRtOk ̐L6gpeLIc2Y3o cz=o!cK_}OZJ,,.7uV.$1m8IדECyYAڷt=_^L^chLuk|%U$&IrL 0v1z_DC.%g)3R 2Y'F{ή 5UM9OZS_}u2^XJKRGG'Ikk['OvʮoR6DLI7Bq-vզoWE.ʍ$Ym%ӧעnD-?GG.\E*4م/|[6T%[4ffSX{=M~~ddZ+} ž&}*4rh8KTYttGjD8jڛ7bίɾ$ՂTيLu1tQJ9ndhdJаOQbڋ/};LܡM bQ#Kc K]žDQE|}3lq9XUNߤG9rPKKr̜b_$ [ֶrQTڻ< Q+Ol[rb_JSwPΓCe977E9nT$kҘ.|nΪD(Τ~jӷAQ^4z:Nb_b8/=4KfFP݇N\F ol`P6KY204c\@nqwįeʲK@ƕnj}*|үOE->5</S}zC}#9݈K7;_W8qj]h_.yU!P_?yVGoE"?([6牡(X|9IL~aBBzϊG֞SEm%e>b<%ObTkrn>U]n'QhaεrW|2סTgIh-hQn:N|)ž(E]Iv=IOO'wSr;).Y g_Y{m)ʍ$%]'4RM8/9'obQSB9L]HRYiD}*,Sӹj upukZx5M 1El@V5iIr}kkҘT}F[B~"gRs˪T]6̍ɛF,YKƖDJh$\V?wvAr sM4~f_b>nCN6>"( etgih].xb5E$J)ϓ_YQz2d&|}P,Y~Ʊr$&M1%Äڅ>ӚegnhPYb*6;dbs?ӿs.{`19;sQݚB3%]S_:zPTMlV7ƵřTYߟmm+]v.z~ht?%K)Q}7+ן,?=iH~{ ;)9ZxҞGooQ0O%%wfA~Gm%wN-ؑzosV!} $+׸'5x.] JJ(+)39|e/KcK~c_7-Ґ;x*p(iҽ:ݿ؏?53 +V%.ߋ[ȹyʶI9IL~PL 0vMz/΋!s3w))-/݊.Y␾d>Tdl(#[gJNWD%iևakFFv6`Ra[zm)Ad5^RN߄K1%sz'_LN+o1j$v?ׄlLHfbEо,$Ubs'FΌC-i`13 I:ʌ0 0 0\3 0 0 >0 0 0:g.{ 0 0}aabaaa.aabaaa.aayWtC#*on+1 0 0\쫣(#Vƪa* VGjQ){0 0 +.)x3&Q O$|.V1$_;G'gVsguԨY uC>mG' 2"z="UΡSͽzq❺迭bGwkj.h_ARjwqkVӄ0orw{-t;>9!=³ dۥri{(yBv Oɶ(΋BM./=^LcM4 "r Wl?BhwbRULABK}Rl/"}תW][?xI)qS5%fAr=NKErR"&8DG!MLOWp/=p`S>ӑQ1k)Fg9S_*ǔ9c斱vY6ZK5j\>.:ajeSq)&1)t!o\w 1ƴz~]>{6>tg#n!v >X%o;z1N]kcXd X9 o ]sW_VڋO&XIO|G]\=}hzE 6SAxG_D;::+eroG q+s8^D;=7O}ˍn(yBvVhWM5A[t֗/̱ʈMv݁;:_xVBkXRFHbLK}Rl;_>rU@/dѷ]9:/s*Og'G#bQO-7Lv~1 Na(ap=1L]Œ&*TN8-a= [!St|WԪ7מ'0lD8@>\9|P (@?c&/on#3XcSV֚ ` }9gt #~ST\KgWoy(|6$o$I(ʹRy{ [vQ'ۡ-Q6LSKջ%8y:Lêg4?ٴ`Skyo6xvqaf4m-7Y:+U*w^\ [QZʈ4Pyu>tWB(e| m9yiEu5 bV^Q_Phb J!S08꬯FḺʈMVGqs:rKI繫~F#tK)~JRP k>uJW3w}SUbOaU1 sF^㟽ָG:Z[{Nj*%[!e-֧.UJ|WԪULk98r'&ܞ5hw]H:F7q1[(/mOc:U_[hvq]j#:7ˮUHiw,6L;>Vgr]r /تK7 bO;sjߧslQΊ>> Q HDxw rqMyt49z{{?vnP۱+"~)F! 7SXa HXP;b}!ftSAWsɾ+bb7r+@(蔯fы! Kv)!3&]!#ak SXR\7D'dgeyBA?.~Ui;WD"~G}ͭ /fBhZG+sB#wTQWTlVf~՗.J|sW^ -߁ǷVp 0 *n0 NuTN31a}K,ĸ=u2+vX{A|32{vǠ]A)r3nM큯DoA-7b]s;z&9~-喝 E/efOCpLܱتf3[t \w4w2AUAATyUK,nGgm^A}RsFg򏩤=MTF bxp},],ť$";5?.uF2ct܃u+՘d"'Z93w }8=,Iم(IƶEczZѯm f>[qCǡX{877uEll.za֓H}Z§8uz͋Ųo{JW!iJCnj$ݜ!ۇ!6ѓf'"|`6>BB4Y<1;o hӟ<}XMMe,®=n>Wl?B먮=B~'/Mzʧ~'_uե{eMZxbªo6+H.suc)-JEZ-ōݝT3ԀS 6 o !4/c㛪X/ ~Ĭ։[{b_hҫP>0&}U[]ѕF9PhSJzoѹY+U]eoıMbߊWoٳ=;0/ [ ?*)a  >nW:UIy 0\W~ofy=96Jca*CV0 0 p0 0 0  0 0 p0 0 0  0 0 ÈGx S9pl1 0Wo xgaaa^Sgaa.aabaaa.aabaaa.֎ٰ5X 0 T^o`` Y}@n;&~ 0GˮvfcJ4Cp VoadnokKؚڱ:[J;gW~J0ށ),c-(ѯ:yBy!9[ʥ!>? ǐmY}ٸQ owppcs4rWoABsm 5\Q?Vu=Y5BO<ҋOEq' Nk'"7矣ԥ-L`ba]X|S& vưh9H:_I*F٘ |[ya]$9O`|1~h ##X;{Cݑk^7n@@ư25:}0  $Ƕ m 7d(/Uz66dW]l$s}ĵYQRsb:@m UFLQL-E(;('KڬjX:ҬÔOt8l9Z֠ɹL~WӍTX\BOЉ@;,-nfb2FE_aa?)=2(|95SC#ۋ#**ku3)/c=V_uʄ6_KīdbRtQ:|Hk~:L$Rʣ{d[{hY;9|LF= Оzl}8KHhĶ;M҄֝g֐UsHƻ'G(/m "/vSJN!d'Ӯ}#Pt\=MK^v i/Rfne=EF5q)'tͽɱ't;)e'ݤQgkv!EmjO'rT Ol!KyB .P+G-t'1ӓtfGe?; )Iɮxb07/' _:+jnzݍ؍ʮڌ]HƵ,k6]o]s3}~!ja_p1lP`0^h vuADDEy$3vu\sy7t$N[ )DP9W&X""Sݚ&_Ib_%EPfT%;6ZXRAW&2+zaH񚥱McaL['S-dlsyz eZAV4RKScRbWܘ6آ^ؼr~^_RfqBA2+qσ_%<$en10Ӛ#3gDMۅND׉\J%OٚTֿ(Oh|^5trs6 ytZҒщxRZ+\׸!v& k|~&6Nj}G߾t1yO"c򿃛9Qˏё )iZlL?ss\kљiа|m5;Ne,>4Oԏ3Y8z1z-S/'ndhdJаOQbzFwb :M}ۉegJhJeV~_"*|J{P!p$C#SrӜ,Ly 1.dbaOmM"<$1ijD_\q}22.]H%9ffN1ZH(SKt-/&)~ʄ.Ms,.Ȣ>"V$Ŷʻ O cFU؏>ߥZU\׸!vUP[*LlOO+w*"204~aܼXjhjӤ.ٚCu8qSdnـҟ ,-Jt4=}dF$k;Wur(j;5)?+VlJFwP G,R Ci݇*vhDjpvrdX)d` SyKT߾mWџЧ* G3ߠs*v 4;U5Gn{tVz<ϼkLʔRZD2BzϊG֞SEeyw]h|Ā*Kybǧ2[(W݅2C(dSzTqm" p I.cWs]ZN 6[*;}ע/X:R>cJVA+B;h5J*;ZsoOh24p}%.|CuѶ[ խi4wfަoY9yӈ%k(#$Oh<>==q?zNN8qT&jg?J?iu*s:Q=t sUةR)ʍ$<ϼkLz4j =bVSj:+Bmc@<)[_O nE?;QM_;O ׷VUԃ:vU:5 bsPWgng_[?-J#yݹcd3b9dCnk8#srkYpWCS؅{Z* -?EuelL\EM>qyB_yI19MyUv!OyqY <žfOw 7MR|GNU80Yg]QݚB3u^Wҹqm~)%V\mrhyZ8ҧ*N~Jы8~JSƣ(nvW?GCUܙx> $+׸'ZmN28?:|l=hgBh+I~NGMIii 2G'[?]IIiis4M^j3'OB4ǁ6_ Kǖ?ZUtx&4/YQ0O%%wfA~ԟZCT@GgE }%1ͽoIE;R-Ѣ58/)T@Sw.6dh #kwj} }uczѧ!Y;yQ׏5ibTћ8su̬oO/$lkWmw s㺼Nl(5vu΁:JKo/+e#>ߐ1z~ldF獅l`*)aJYm} 5( @'22y{.b%J.ea&+N?¸UVwTǿ.ҥlcbF#`cQ#(&h!1'^bSF#JS,tC\Yݙacsv̝;ogaǐM0 fra+a)xeaaagaa}aaagaa}aaa$ m0 0 p0 0 0  0 0 p0 0 0  0 0 p0 0 0  0 0 žzlmmEGj7#|+"f RߊBOAe&P N.ЮY`cpj;ٽ67A!zCЬj6G?cGPvMo?yJGMx,MFF-1*~{n&BZߤ%' :@)wl:6ͺ`$YN|8?+7G@p^t\JUF0Է:;W+,r|!2;=,̹I{K?zB%{U^X>:*{ԃ߈/>DĠ]sRwCQ}9@hED ; ͪzy57]ɥo?QXNud'!|;;{8W h淈(r硲I]>~)կd \,&'|Ql]"%uEFI96 񈏾`_ul)9秥!--Mlۀ8n go+;+}Mvp1&0m&Lըֶ@?}n!==5oᡘ2.!ʽ]B pkr 4L`TUٴgD^ť;0e-W?!ř? =+]A˕Va8q|F7 SW_Bq9&q1}wg?؏6=op}{rS>//vME(妯u w~9'=ØGCnʠsG%>ݖ1!;έƈ'&G'685m l6^eM߉)] 1*`m\C.Mvx0wbyMѹa|sqR@oyB9Alnb)1+rW =5n b#5;\;|bs;?B>K^V%& pAN,<ق;WgqnnHJA!5%^a=.o>\#z:a'Pr$'Q? jikʕ}8knhy9;E ԪZyjah3h' =F)A鍙W?C%/$ŁaC<ܽde,O6ptP ǖ59Ogc$;{/ϟ74U'*?_'E>c/!lޯ_Wgb{|68/l_Fa~c>ANC{LiooPfN<9h\#pyJ> ѰK>ٯ6܌mNnVh:} ^81+HMӎݒ1w``><{W#XI1&$ӄȴՊ+OJ\* )p/"O .e9-N]bcn*Le#ұf[3|߽#z-8ڔ6ԄECB-kGB /e_-oyB9A( ~),bsB"yZV~Y`h꩒ؤ@f=h-jUg=f\ MApd$G"l x>Vla`\苶"%XS}]Jg`1u=S5ۄwRФ]?tꥎKm;;Ѿ$Ue|L5Nb|C&\1tOxqeq0rQ #:+HM&U1rF($ݵuC!ەrq#:v^Ikk_>!?(O,zp َʜsf XPO;17={:: 8~#CqmgOҏ9&D^ez2yKS>;bz}_ B9Hb3FvKL1́}%͇qG^ga=yVFauP؛=ƬBڍ3æV6Џl L!p>ofv._µ]/zPxz۶==˽wrU۫ȽR}Q1f)VDaxō9YSAnîۉ*y%.m_M%}ťF-نWHjW/ѢZ|~(Ԫ()ƄBvݱ= OJ+˴CTP朳S|SeHsȝ䛛Qѵ܂́PS(ZX7JI_jj -1єv|嘘ɿ/nAB(_/ؔ5ž!#%3y)8y>|fb=tmRD$>" .}G^Ģu=9Ƭ9ٸ5A0wS9xhH \V3^c_Xwcg&"<: HCb "@؂!.aJ?NAYd.aRضe .g<37Z}i3 DP 2+\JB^a!_}kiipq.$b8CL6Qob3=1=I0{O %E`]1S3kFSXu(.]P Ř\]CK{&]H6?PON#⯛WXWxXu]x{?ELOز)xgbw+`9Zw)Bvfa1j̵8HKs~e ۅ|QHuAg%´49#)3d ^vңL?Y1]]~:`޳lռAA h'"haҨMq4GFQu{io/dXWB6 Jr\vnhmvwרo#wF6; wV9ﯛp(mR><+Z-mB5S{~HW 4 {|W3g&`/jSNo7je.â@Ţsϻbw_cKH~Ѭ}9,M5T}fR*cLHͮi!s}=:}B9nV5+w3 Uw()șr=7u_LWe!^򀁐_Y8WDЕP䕘#qR@oyBs]j]2#JMy՛ R_yc<:|faar:1B{aV^7 Qo`\"~ca.aP~M|1 0>aaagaa}aaagaa}aaa#msRn?=`lh+[ ?|P{G[Pos4jb\'2čܵT?/|v&07P Ίs6[y99#0@DD1Q)&:i0ژ3 Ԧ+Q ;vPΓd:6,oY:]Oy@?oK fh<>ǮT7 ٫VZ9JzMYi>TsR|̥r`h-zoAx54W(z2j񸴴4IA,PfrI:JqНҜi٦ EMo zuaJyI%ƴL$<-i=h҆ QQ]-wNz4r$ӎzkF}B~#5H1yBtrfv4r&8ݿ>%8b]N9~}E}Ɗ;s:JϋK[@/ǰo 8}@(Y@k xp` n7,d/S.M +ψhTe+p)EE+_yyV'[$G ,LjogO>%F^DD*Yɻb\{ɔ|uYԓؿߡRږs?ooSH\t_̈֞skȼ,~lvmb_J?͊#ӕ#B婲ŪTڐ+'YSJLk~ 7u>{^su={ ,J>eoJ'}K.&ڮY'Es.*+'RGOߴ6!?#ntkJjs26|H>M߉k!VB>/d11#T_br[U/m@9B>rhTE^ˆ.<+u^E}Iƹz2QwHU}wp/^ɱ|@t }CrlDmle%@TƔojׄfh'~\\Rb@'V_Y$uZ+8$Rߌщ喣T׸kWRڶ.=b%<ʡG bX3|)h[֘qֹEF}nlRA=rWv%Q ɡrEڋ=ڗ*񘼧W6 lE.|I)}Zc4>fbbE20vU?~^K#5p M\b@JTYcU~!I((_hxsrh4S귐Pe-?+ ç5Ez}CYh35B9@H9rX}e[ WqRNn8O8}qMݽBA9C喣T׸sUWR]~f}* ],꾔ZH\[[ /[+fGsTӏmnv? $b E[]W5|'OKKnb;dϘexfe$E~*BOsPY(20vR~fEo?L_Գ[Rb_{,3+뜴KejzYbV&)*jf&2n񚹏$[˚*q#\[үtwqs/k+1Ηbr+ː߈bo(Tm'B9ow%܎ %?ɥ't/܍vU@~X1J='q/^I#QBAbhsPPK4g`-)Ob_]_zW`HIw:ns~4AIt'oZ1-7p8/%R̕S4[eYGmQ=iuQߎzn-VATmZ(=xD~?~ޅljM=Bv귐<>TJȡG bX=rjav SEh}.{B&K Ajbٗ; uN~xUa_nwSrQ-*{P{!Px4eRa~EA pc u9\r6?5nkJiO Tjv%*ZH^[Sj;_"7bs[Qq@A\xUpvR!VFΫiCݖ.ײ1瓸am]dOVItы_PJaP=Seiij9W0!CSkj3Je9'~C\H_,ܨ̝$5rvNϥ׶-Ma>KNdlDGrƪ~1ȝ"Onmɥ9}0.J v균]aZ?r6%Cor. FzSC20ho#FrB&<9OHsR4iP7X օZt@~Uq? Dzϫ 链y&~1TtQ.s6?5nk5H?Ι%[w>Rm*ZHVBYm狙[Fl]}=5@!6?OHOOgccÃ1ygkaVgNÐ4<9<@Fі^E,E[b7Ed 0̫7ctwWV0 S aL>~1 03 0 0  0 0 p0 0 0  0 0 p0 0 0$M9¾0 0 #^gaa.aabaaa.aabaaa.aaba^Cn*`l aaʷz$8 :aJslmm5nBH9M  *NQ~#ffP 5z Ьhi:^ݘ9:WY 7lce";~R[:zt0 AChТ;Bw\֨$@ǦQY>$KNNSNI WnZEɸCUgGTj[.JK!2;=,RFGj7#Q,S] V.zǯgc_^LrRwCQ2N`Dv'jh{NԬOo$m8[­#ܪ{'q)=O2/̉;5xVKz6+ EsA Tuk RwK #4u4 :VwŨUmS1KkOjoyͥb}ZȖղRBF9ЮHu3x'|3M'--M\r_I޷A+B%'61K8|-Qom wbSsV)= m&t|񺸢<ÔC1ie\9!CfsGfؚRcccUc۠zdEh2x>^?,jucU$NlA#e[4ppn ݴŋ`?Xÿu{h$.]pyQ0 DJ96 񈏾`_ul)9' 7c bRH.ns1Mvp1&0m&LըOL"18Qÿ2_>19e;mze/qFb8q64bO<~W$%s<=uT7gխf4,95ۖ[߅Th\7Zh7B-TLRBZ[UBOg9DgwWΥ𭇟vaW@MwYL>woS‚t8:GjJ`v=wf`g 훏;+;+u5&x*̆oMo̼rM-:a'Pr$'\)A7Q) '.nCZ54TZc?H1{!be'WzxxVz0jyk՞kcc#q T51PtAN MʾSru>uqCЭk ɥj0 ݫK0;L\Boby.6؁C먜w^ \`P_"5&bc_y9ssGDR *)Wp!5%^>s?Scc8TRS%_}bs^YZpN"<+ rbܹ:KpS.OD^<9٪mD$klWAٖskijFq)׹MjW]󍔱U7I-_siy Rl|!_Ŗܯ`? IDAT Tj"̩c2| @(ҋH h+P6yV`50&)c·9pT~t @vNsLBa3b??- _FÞ!Z,}iL]6AzT$4[0t~5F ݖKF1|wg }M;.CrS\[`0bs D˥}ܯh20nI{:n{9=Ko6R×)?A Kpb2  ٍ V&xي7=BZNڱo:U>1p34mK"P7?S8=S`=/>9򿀨zSvg YVot5uϾa{/8aA{[MϘLbTh\7bZ'wc.Um)%*.@=-Œwz< AGϓ}y 8( {,kK8np*x*̉15ql}NXr7(eiL=Dat6;4`0 ?}$0>Swb a}г_m\3H\,'1?[oa3 '3}Eꛗ[F(ȉV~v(,G@܌{t٣QMի"ې".ba`?R&?+9UdžD /U)\'uN؀si4sq7N|]N[y渵y:\\E* w_G_J>Sq5߈k s{.Um)uAef^fj0+쳁ˇxi{>m!ōy&8.fHS[Hq%V y0w'1 U_S axt'L>io>V &0rƠk[S6 L*b蒟b89YѨh[[[9VGtV_y;fU:og]9#^D\bZٿsאrvݰUMApd$G"l ըO,zp َgoa o|2_>9,h;f=h-jUg=fǹQX\Y TY˻h[ hu nҖ/dž )/% _h\7B~-'ܠ-|<u('4b?PG3+cL.?;uޑ=9D-O-U;3lJxZln_L=Wm=K IbjnY+[93ԧM|;w 5|͠2?Yۇס-U 20vsvNT w!nXd:od9Ĕ^eט.]j4AВmxx}KI!vl=D[A=`onc  i7VhWi~VCӊ:,O6RI͑f5xaܾcYz=×~WM,%8nUpAX+ _h\7bZOJ_6RW˳;eoLPܚ/Ã'(F哘5ËϚ "N\֕3kFSXu(:5pF+ldDbnzq3 DP oyOb4aU(~s5g$=Cdl? 'iipq.$b8%Z.{!s&Y7nwǑ<>c/*|aӈO})(9?/jh cRHn%=/9Ƭ95A0wӨON#⯛WXWxXu]Xf?2+\JB^a!_}kCRy.EDc(rwE,ZS8?g\pC Au4!0xkV: cː֘rPU|#Ư>)7bBW[ ˮ#7u'W"ihU*zͳ)ﺋGϡӋG<~Wv|ja/-& )*V [|{^F\R!C4򛯻Yˡ]Q M Al8F{ /ʎۢv%#_RGY1]]TRVԽg\8+}?OԠ/cfl0NY?-W _h\u7bZܧoČ57|#:za^R^:"՛ #Ӂ0 Zzay5Yy.C;aǐM0 fkl+a)xeaaagaa}aaagaa}aaa$ m<.p)8a{_0 0 0o(\3 0 0  0 0 p0 0 0  0 0 p0 0 0  fs}tXXcl aaʿ؏Xfh"B<#bvi s#۠iA!WOOԦm|32uWo]41*i4_9160Me MsSVp(&oj:Xұ< Ь7lmmUg&P N.ЮQmѹJ63k#0xJY 7lceh>=Ʊ18K5VŜs"6 *N014:ǖQ!SvH ;6FE3#Xzc?U)[afMwc`ư17 w#O5 nf*㪳dΉ%wZK#XںC񸐖+~Bm-Γ[ޒhP*ϩbM(.t5B~*ƅy@׹VVȅYxI&՘zE7LQLuN)̧62J}TŽ'9$M#;*[riy ط1+ :\_43hmɾ R}3r(;.-ċlUʣ7$#)A&=I׳^ƴJ%^^OVM5^'--MҶ}'5 >ATwfodJsz/@W~_ݍl>Q|y cC׆+-iHyz%[6ҨW 9Z6-QeDn'/:{bcֶu!(QoWo`1o94]Tj֕7ؗ:ƪ!gNREA7EÛCۥ)*$w31TYϊ$cGi pf4^_PyؾLuPe+w9Uߖ^濬4ڗ*'~bX4JkH*ו}u݊}M&rRM~*RB<:rP+\?_1;j~Deems[ǶIq^%cg.ut֡($:C,b E[^Cέ6*?O|+ƟMJ=g`*w% +3oR/u,uUmk^+O%=3ISBvOsPy(20vR~fEo?L_Գ[RиeL{GN9}s=--܊}u݊}M&rRm~*RB{*UT5@~Xޖ~IW2 eJ*Q}ox|FԷ%Ejie% 1og Jur,YW#r%Њaȭg1dfBOXR%_I(1W6άL,؊\6|Ҙ-,O;U߽3jYL ؂jC[qiH,zZJ)eh竒XbByr mK.IOߐl=胀)t)]ZcJ(FcHA#WkS24H-+W/ "k$}a[o`bHƖTyY,^jKN,ꓕ;ux]y+~e]Ը 9"zEX\oTk7q!G R@-5:䁗QWs`}=5@!6?OHOOgccÃ1ygkaVgNÐ4<9<@Fі^E,E[b7(d 0̫7ctwWV0 S aL>~1 03 0 0  0 0 p0 0 0  0 0 p0 0 0$M9¾0 0 #^gaa.aabaaa.aabaaa.aaba^Cn*`l aaʯطU4 :VwŨU"b_TsqK5tD>:*{ԃ߈rێJMxJB?f5V9B׹z4:M9'yOpjJ'^}Z6w]|'3Fnj.NprvGLƑnV >KeKdXw88;{XZܤȽwk=ܪEl|1IpvMPW $q7 mΎ \TLJ S)}21-K/ȎBޒsTY뜔/M ;kAFaRװsjhڪ f~1%w\>G;?uwBv/P~ҧ\+V*GӪ#Q~qҮnE6f19)Цc\}q!:날mp8%GPߠsG%>ݖ^3-Me{ۑb3(Ѧڎjᡘ2.!dAllV씣?MK7Ǟ尼Xc۠z c6ĉ#sP\O mЦ2Le>{rݛBJr%'ƥ5-.\:nUl_;2:7쀓s4 -/Kr>CubT8]Zm~'BQH.sX[iꫮ9NHy GSY&@!6:ٝ;4$[NVcO0 `o]l{QC>‚t8:GjJʵ6S7vBV_=:a'Pr$'nʤ;|<9U|kzchji,JR{ #%9\6)D]čsXQ>s:J[_uqRcX.uZ\KM9u CcE[zɳm P&. IDAT&g?rFYTYx~LuR.,p}u=`:Ma-_fBHKh3A~-Gu^Z[=k=Da7jk .G!JSlﻯ>vr _,jbYB_ԦZ{i9~k¾TzyOpjy/S;C-i_mWMlwrɝsflԝ.CrS\[`0bs MYXr+SlE)B+ &0˒3sYr6s* 5g^ƂRH^V%uōsXjwN.s[i뫮9Nj AyC9 ѻvE1onTx# oDKؽtk<⮨Ύyu˧ C[m5LNSM=ql}~O|$^B _l4[MaӱK c8GB(24TVH_U837!_m5 ϙϞ35mݗԮYul,}Q 7$G ۳NfNf A&rӴ#Gad9B&f{O*nĮ2<_20v"/I<&a}!zX==ϾvZQ{ SI}rI&<:V2{޹_7?,k QM*̉1 9N@.촻4wl'[O4!7εN}̵Bꫮ9NJ ˅ -ҁo~cÅU23ĵ?XϺCSR4)7ct8íNK,e;O*_̈́jSum:W.5c{r>V &0rƠk൒/񁝩{ 1aJ?{gUﰯ,HY"i)dfnfbGi.ik?+55@ve_ 3s<<wν==HOpa*;4H, AA^4:;J_ UWK}O1~̆X_?tUOzJ1SàQ jb+]3٧o}!J!NOD2(LE3_OP{m( G cX:5ȸJFf5: q$J0qKv&)hJRnmYmFmlX19r9 a8Pt`'Tqxkh{BlOߚ"T?츗%t(;;c_{5|^2n&Wpv&%=aby<96%|ML]*ƍZL܉=]}%V]5N/r.VkT{Mù!:>v](baіH-BQnoYy1Xm_A׍G'Q jZYJDQY2£:b|Zq k}05 Q\V|=e4ܺˇ| nCrvsRu88WYKqd(F׳t>1^ba&;up QTVXl[>l=or$dzASMm`W&&'IƽR*Ńlb4lvLHA_ƠJG^Z$mkEY? a!qV \:9716#ޯgEgR%T-Ӻg|sG߷aX]G":򙲀]>pTh1' [IOt*,TU3N"`ۨ^/WE6mV~%Mb:A}Iw6cת=`; \| ؀ǠMwGόdDs, di'U)BL)kL^DZex,$ m^gUļ\yC׷p7hxff ^sj*o5sVXqp= _ 3*!=M*FߕRIZWjܳ@_՛ 4)d j7waPjiaE{&0 SX}6 zW[{ 0Lc.`IaWaa}aaa8gaa}aaa8gaaFg0 ü8gi+ 0 0 SCdaaa8gaa}aaa8gaa}aaa8g͍`a҂X, z.052 'ˊ؇a=vhs8Ed>OIM4L^϶17C6 7r_0h ; Xءua8ݷ` Lx*wvm `SH ukݦ ٌ Ź `.h2`,N˕ EFhaa#~1<,zccDqO&?ڔKp4]fЖU`dnN"T$ AO k-3r*Ę`9̫1{kؚ7PE! bP숩*{fu]߿ZV6x2gߊ6́C&eV. m۩ BԯΕbPǂ+0ntļT PVcF}huF)""unG UoDkq)TTRJұ]΍z4+ dPAv  E跔<ÁQM.Ryis$x/)qgr|i6[PjNfK{ʄ6]Iĺm+##C}322ªnt~&{鯨{yQC]-y(*!#i>d:T^҄֞[VU+B-Ͼgz>sԷa-[9kK{!VR|VgG+Ack@Y13ŧ?#3^T\X,VB9"Rs);:[E&hկQV^1=HAKvRCaQQhHE{Bq!KO yi/~MR|*ˠ}_ "[ ǁ>ⷢM WM8pZ)KS[jiWU̕b.57c ]j1/6ԵUݘ @/Dyn!k@N8``. K<`8o7z[PZqmN]W_]ɽVA![VT*HM- (œIVZWȞ1mB)W7sOGj vib۱Dťb35 -M̍iH<-%ُ/Q[d_Xr11bvq^$ժ;K]Bu?""quiʥ44IIMt5j5Dfʷ3#CV˷tvA{4s#^HeOTd_~ 9qi.uup?>O>e%Y)s6+}BO! OjhCcN%Vd_L=WvM8r>qϹZŰj3R4AaytU-V1.}ÿزCX+*OM'fEei4˽WLEigYEmۙ'}vH],Ȕ\ORR}lOuڤў&NKL;ߢt;1REӖ~~_DumMܾM^1jKNƆB8?LjU孝hG@ܾzV$FߤFyQ\vđi-)<#jlM&vqd+0搫9~[!{BlOLnoIFՊ-DPU$vTgI1Sg^9[MJiP| *+GZq32w2ɾviWmJ]ڮ)7QR'4n5WyPVMcF& $%1ӱ٘}ozwRSa"0* RdƚW8./$:#k ȝmߌ~O}a3d=ɽ۷ch{BlO x!ݽvwu#QO~p"o#֯b[`Oʜm}BQnNrn( mDT:Wy}&BW}mBmטhǪ'z8/yѾPV14ڦMnB%J?TQͿ1ɩ+ph~NR%X邁|jdטȠ/9R%?+܇ WWuItJiOľ $Pt3W}/dk,FW܈=i5dl\rNl2i>dMobQQW=LV4"Y}qKҬ =1YsE㪜PʹwbRgK_E2h_`m4IK}BQn!eFί"ZǷTו}v >6Mm;q|bǍyPV1&5}n)N'|{Kg7vQԕɱ7mb'DDJ!V j?IϒK[тqOg@V} ; "6Iw*L# hAFMU|VZJ:D|{5͋} ڞP?)ۓ_%CWEޟ;5FgSs,]W(mX:n,NɾPUs;)q|ӟ}1/6ԵUhLKkL߸PZ(ť>L>IvMMMɷ)% SෟN)ȏ+{Cbܬh=OC @Vn#DJoPa:%ߞF]t}$M]}Oԉdp|/}S6?i=^Wm<--O_З,kB&R> YTRm-y۸΄I@rj, $MoBҨM~7Mܠ-h1? cVS|V>HU}ȣVo唖TЙTXZJ鱗~AOj%T?"f4Q'1hs\=*,-ɷOzbWJ4ŇԱ^}v >6UmHcŌm,VM6m/Lyb+Ln$30"{WOz+p]T|:_hhVT̈jQC闫:*uWI"0fٗj5-~u/^uJ0^v'cCqnH,t}&yÑs?>|,M҉[Ni6߱9Y%5}ŏsMV$XJS+24&΃h??n- zLNIbM5O'+2re4TJ?B6fddnK&W}F( CY?~<@O Re.?2 0ՓN&b|jk'ú01b0 LϯiYvX?0 ' 0 S(++a'0 #aaa8gaa}aaa8gaajnM9S}ca3 0 0 ' 0 0 p0 0 0 ' 0 0 p0 0 0 ' 0 0 p0!,Bh-v0 0U?sq06[^^Zx?6Am'Gx4lAL$D܊1Pu<}0vn+SowFhKejjgn; ŭ r@%u]Z)B6T:_Pkv,Q/p0& CKxC|Y^Y飉x|1q4EV1=(PsgL ꏗEycнm hkO%}֎3N"('gkO=3nQ]P_ǞNN:N"bl@74ps[t #(%oBcNĘJZ㘕G]}__Zh6q=bƉTU/o>MR*CۗwcܚSt.uOBǗܑoӽ6` sq :).ukUŇk b4E׹CCkTݨѳ c|,/wa 6?TܺxSCDUUG2ۗbE^Ͻ 7'xEøvcs٩9WLÅ >issΎ ,:}?\B oؘ0Ls~Бun{~Q6#̥߯+aue>111 M:v(NY?ҩ2m=&Et/œѯ R^54+?K~_8>szh?+\McA|q입_ pxGGiz/~CBB~WB]ǬTm-a\F۵;u37i3&OCţR21StW9*~Tvt{}<^_v w~sF~:~ǻ}qܪ?ܼ+&k'iJiP\2*ƅU.\HS1w}huBb["@!&:՛+Jѥ '<oR*P>*J2i 6tlam+'!j{+{W䈈42=Ήiy>uaB:zQP,H=&_ AaE2LoQ[/cggLqpu$R_e !r!+kcVm-Hۏf/Ũh(oK?4i㔿UsXRU*ɂ7%! nyyxݵ!|3t7Mj;$445z^ϗչǭ ťعVp,}1 2U.);>rWy0r$8@<9zɬy J(@?[/0' ɕ8o; \@V~I9-rxpyXv'3PZfw2j3:"x!d8>ǶO_@+G QkOh#|-"x͏:ox-6=^ES<3(١M 4j v{PXAIrzjd%`NJY^ rk;V\NG+rBSP":I5t"`Ҳ5iB?ԫq^C!*/e !r!+kcVm>pXc*v)Q?W!~|l| u|UR ~ꉾsvOrRZOɐ~^\#}5Le\HSsק1j]o:rV"tjnݾ CGOty嫥0f/?OȿIX\@9bl?\^Q;~@5=-ғRJjg&(-RB8W[b|d;WI1` mq*Mm㈏ ؾd<ʊST{ǝ~})5.T%Ğpcc 7~.*uǣ7(o򺶰0t/J %ؕjU~CBB~WB]ǬTmm&;}%hym=)QU]W02ߊ1RuO|6a{n`@SjA}?} A Iw#v9(Lt=ΧUu諟?l萶ԁW뾸^7F^Mj{gRH4Uo6$ c>$l}*qkvU*F Q{?GADqqxkV-12EaȎTX0tB kqI_ t0愜 xa~b_|![GsĮ1 CԿ 7p o*s@v~^65:4;)^Z*-q$FܖzVJi>[OV+KW !r!+kcV%tvtWUkh.Z;ȺNtrZg6 bp\"]Ǎ>IF捱ta&">L>{߉Mj{gRY2n&"\HS!j50U[|曋)h7B|z6JRbѰiN9nZ5ؠgl~s /t>}SJ9 -;Ķ'>4D!}ڛu24j:&n=>.awFuU8[p26Qi9~>=| mz}?#)4_ fDT"_z-K_=B1{Ό@>JO,?z}]~#71$T*P1JEW)#F۟fuf6n})j=8716wyfzѵ:#4G놙{Ϡ~:V5kFoukU.;>:7#Z#]?L@7WzaV-eE)piܾzlFpHbFZZ>.V# ب]1Iܳ ü[ Y['w8{e;V3daaj隣  0 0 >0 0 03 0 0 >0 0 0Ut] S5ba? xeaaaj(3 0 0 ' 0 0 p0 0 0 ' 0 0 p0 0 0 ' 0 0 dJdEðmaga c ;9":l sX;Aap#T)peZ8[r -֣5,L`ba=H|̫1{kؚ7u ٻo!;Yʹ>?d 3y[/r].n eXVɭ \]PcVbn DӺpA!0`(5G;׾Vk}ge_N-`ej +{wt<3 %Ŏ&c^":VETZ%C]F@cDƤ:!mCoQh=~-$&[}kF=c{Ȏ91;fVhܶ'(p4]fIUK֪qFVWRz$8UoKٿZU1alVWt!Wb}_0@DDn}TY:Ь]@)t0|9X֣RHzE9E@?L/͖GoG->\NNc|hz[ Qav ?YsP]f׿(+$ޠc;=c mLI7u[v222D}B6iG).1xU^>ՒޚR(9>6CCk=旣t'!nIgd>u#QP3; =IN&Vjϣ BUt TAD^UbWeΌzQqv4uťPQI)=LKvw;7ۘ2r1~5 8*ʞF(F5W?(~=k{eLNYTRKioU=+)>3{Ӡ1Eo^vI풂82bv{'<=jP7RצR\+ yiBsP_ _C(ϭ7MIGw0p~:x 'W,FxSKvsUm$'CK k ̔ogFP:37KC*)e|{Kgw7No =o cr5Rn&cK]Ֆ[P\}X20m?=5 -nV4B|;4v(nbnLFRudlN+%Y %%vW])]Bu?""quiʥ4ЀҊKRL\8RQ4Bٞ?![VT*9n:߳X W=-[HrJd`yQ\A*icm^J+4ڳ,jw 74Џ5XQǁ)*X[)zq 7Q~!d/jTΌ,<ӝuNZӊR{qt!1U^>3-JS)^4mYG dx|ԈMJo%KF Ndn߀n$%ȹ"bGLݕcW [;}&}ɩr)#}:w2rRL\e9jfNKDe{be4XVWN5iԳ KcGEl7'cC7ddZWt]VC-mjΣ]KmBMF%"‡U )-{*z$8֧MV=oS}.W5wH+UWbJ?d~>|F2cɊI\wʶˊI&3^oYgЙyLF->XAeSA֣ݻ}+b^;I㻺Ϩumo$Zl%]kB-/O;@-M7oIDَ5ɿ3(~Lf(c_;c /[!PUŮX 2eSx,eҜgH֦ZXۈľȾ7;i)QV A<&ڞF(״ ɺ9ĭ>_FU{DT7FcPƒ*x@FD2xd䨦H"" ?CSW験OM!1kSklM;݆-PnWꎯ 5zeճ ?#r}C !k@fHpoKsV*E\*=M~Ÿ^q%?58ɷ8P;L#/'O[O Wkb3h_`m4Id_]*J&EJ)_ŘjƤ ⬗YEe{B:5-.9nJ54K:FW܈=i5dl\th=YpMDDΎVTJ,GBc}鍘㵩5jމQJbJUn_-GAGDMiʃh:߳ d˷gխtgHI]ٟaM'fJ 4ktrnBT* p~U$+ c$SOW -ku5ŮGG2W 2(M cF1)eBB~aMb'UՅP|U+kTu;. "6!#]hTA"":W&GV#P;Xz#xm/u}͵UǚB.W7w+M?_ !a@|{R 0;~ 9XxD? "+W؇*ˣ6xrƶp~mt5!J ߿%owڙ#z ϭ:M3?qj2s6zɾP;:]F_85ת#d5MrC j?'IڿբV݇/W3D UK;Z?ɟ\LʅLJØ}vg_ejD&V{U?B6fddnK&+(KK:dl`HPJ-*dO~FF:@L̆SX6߱9Y%5}ŏsWmΟ}9Y$&Rc_+^qUiTkvK=ߛFWJuǼ&ԭESUOFV )Vߙl-Hf`DV Y(Zu2ASɱ:e14iJ{*uЇKҨg`O_r6%csjز+-vAONM\Ě|;+Oj^#KC_Zҵ*xQs\in\ވ9^W 3ת&v4\VBsP_ =G?/ɾLE_( "D?4V1τ>;;;I_ :G%C|8@艅tPjiaE<>}F( CY?~<@O Re.0W 0L jmaz  0 0 >0 0 03 0 0 >0 0 03 0 0 #Io:g/{ 0 0}aadaaaNaadaaaNaadaaaN9֞EW`a>pruBH"bl@74ps[t #moo/"o]Q5,zTM>c x `-& \ˀ8q/~%QhW߷h#XmiJF)^EOcjZ5o&[/p*$[m[EX{*Y/{jx1$qrSG6"OGxvGCoS\,;TM!hZu"(d3J+6ZJ b&?h2v]1'rXo'fL+w*P?1q u$U'FcŎA:'cD({&\vje}XZxsGOpkыLSۭ:{c<'&N2wg}ϵbtZ1KuuSή-$]Ck^O%2>= A )݃>7w gdd ##CeY~~w1ڏ Wcqg kUG2ۗbE^&xef B^ip;1s.{άY`Ƅaڞ˸$scbb>ǖCWqN+7h<:N 7p1Γ8e &l9?6ҿgAwO%v^pv<"a\D 1Wwva)'t' hKԤ/{F`ONŭ1uK8:DtUƜ_hལ  )*T?1q u$UZ IDAT'FcŎØ+Gg{pu ]:^qZF㧯& uT}ݾ8ngnEh5Fݨѳ c|91qZP?{U5 Z/MY.pm'LŶE!"BLtģ/GWF_ AaE2LoQ[/cggLqpu偱ӯ9|t?ÿӈ2e%pvmprDDrjX ~4{y.F@#G`?s%R<]*ǰv0hei>7DžhۤQ^ye_Syƍpf_uDt5@/&9titkUڱݮR75OIA?ء҇p-:vԅkyŸ{msE_R`dԍ9! sXIО1]ўPġ95iV^j4i:ށk78v}-`7v6ZvIhhj1|y+^[҇ptiIt~O3wg]Z1qV_1Heo9WnVcN_%FuZ\{.PS@zI5t"`Ҳ5iB?ԫq^C! νr:^EmEv~9lpXʏy__5?mDB}qtb9DmZQfxރ wtǑUPL0 -'˿YĘ]M 苡('7̀drVm+@OsO8:Y.l&)DždTɘPRY o{Qƴ=1HW1q"55iTO8Ui7NL'!?gZa`X>M1sY8wU5 Z/ŎaD_1B%F(:Evx_n7NdDW[S0t/J u:G{bh8ұ1d i1{?yBkcwޭkΣ{fM[bϥ'?ݿ KuU+n{TCNaAşM3#VceCU}*-FR%/D[+`v@Y>|IXo&NͬQqS~yCpYzJQ)\M\s +=TZ{QrhtK4i֑pXSp]:zPz.Į\sB~*Uu WȞИV'z%_'&+IiCc3a;]]t~ |,uO_vB'?`aG6 } &Vu\4s~\+wU9 Zȗ `vVOjW / `oo熈+@+O*?Tw Ff^ "S jYsPU\+k!_ےq{0a=O;> ^sT{S.㕉I Eg LXwɽ|a"N_a(o,A]ZBEB?`j.F' Y zhu q2 *ܳ1ߪs\JFQYbmjװ1h!A'ozcbu+Eee* ^&{O!>=T)1h4x_혐:"TIK c+*dOӘVeO*T?1qX?A O߅Χ~|1f81O`nuHzl\:?/'&Vmo.3#6Vu k*Z!_ RL}AnXK&TbHW8o,{{ENxtdg,.V# S0b0 Lv$Uk{L^/cَ daaim< 0 0 >0 0 03 0 0 >0 0 0Ut] S5ba? xeaaaj(3 0 0 ' 0 0 p0 0 0 ' 0 0 p0 0 0 ' 0 0 %ώ91;fVhܶ'(/dj-/dj?ʅvYCPZKSXnF.>O k-3rߢB} V*o}k yyn; ŭ r2CѮ<GرDuUƏ2n{=us,)wz L,к0RbI*:VE,ϊ؇a=vhs8Ed)SZ%C]F@cDzM"yu7vo [scظb?Ӷܡ({BXɞ@HmqPwm ګSw~m4V]}M-Ъ`y= uhЩLaen'|Fa%0C#W1rR\ Pb\ {P\ U9iFiS"7ӇW\SDDt;ݎAK=@^IO%t!vk>vTLwR yizQnƞu烕U@ъi}9"Rs);:[-LhӕdJLjݎ >Vuc˷Z[6QTB %GҦ}u*~T =IN&wQU#+!VFj[AFtU׺-] (DWjVb-W .{*]!P"yL0993Ib֬9ٯ=gFDLt^U_DsS̖_#5FxU1ozԜq}C"ijW|K[]c>Uʭ~j K)꛼h8%9&5LTO/ѱl?X7c0FB~GHcn 㣯}N9=NK’*҇tkj}rQ h|vG4U} 'wFf]'uqc_s{_Vןжכܪˋ0yRZi;jLjG}zfASj\-~ew4O5+ે͞a(돑(v:|gVy<ƽ1b_u.%ƙQ1nf6/u%a癖 Nߙ^7*CaU;\gJIuXD-=Δm3<"=[ySe(Ѳ~yU/ 8z5Taqu1BIN .Ɯ7w^Pos7d>8E˹XD0,͢<8? ~} n!&9r^3 MAji I᭯aԞ&-*j0W.{e"9='=M^,@pܫS>=3;Z[)>!SD;}'ODfL5+iWnGJq;\,D*GvWxW{J2:'\KS(3cl1CȾѣC(^KM-ʰ.{ipp/Ys:l%/l6G‹cYO hǪኼwU9=}t7ٯ\yCsmbR Om+I`̃{7㞱P:Ä%wF.Cm0ҰXyi'ě⷏՗BvyY_;ըTVmwl~oU]3_tk=MjG}zfMvSN~1ںq~?ktK>YB }.)} >Ljfh"CfUGVc~bTVU2=;l.̾#≵%b:TV蛏gֳ=N4'2 `37= cTE)Z}m[3{sK__R#e?`PXeq?QV [[PdtZ+K[f(C6d8(~ #|\MUng,^+敡l^TOjԷ՘2&q*qoSO OϏگvQMJyMX'4Č63:}fߨvb?Ҹ:nHeU(c_ d"?}o#%{LBd?b4&Vwk7[5e1NԢ <]QTݚ}#5BC3 5d'P5+vk`m('=p$Mh_ T>C(lyykS=\VMUny%YHzNq&:`:=U;ӳ.n>/ojVbQz#/VWjyZ6(skuurj%h>^ԯ_U̎vXb#M5kqqf<:kpr;6bOlgPQ&oo*6`jY>Wt?a |[~2Y9R}CR/b+ukٚ/1sx>nz*e"?ٗcmJ~<yۚ WۢJ{Bnܧ?M;Egtdć ?3_n~au؅7#O[?ǩCMNh_:v G,6ܶxD!&=|~*֣35XڣO/ƪmO+ |;?vr6T*j?O^nx;KQ7gEkGTjxc|~ge)ku5n|瀩s<#>mGx738X4w23b&ur]_5sUY(e3{@}:1jfKȪEs0jEHKLCɐhw,9_?28n;ޭe?Z,3HSZ/̚H荛|P&+H@s% t3Jo] .`E,|TYRMBHC' BxB!B(B!>!B!$t)B!D(B!\XO螠R{+B8~{LpfB!(+gV-7 !Bb%L!"2a~B!B:CL;d_D%""""YG"ܞ?9=Zll[B!vV#I@hkM˾3 7Eھ GP{B!BڹuȥC>s3J&!B!dߧq&k_}B!k<r~>B!P;$AovfVd_$O#4H>eB!>@=D~vH˶_FࡹI~hFw!B!$ܻ7 ~HCCKyBnd#]#6OsPI#!B)rot¯®˺!?O2{%|~"E]F_̥B!~kD*ݥ'm8-˾v)^rȾW}Z}>!B鉲~O^ 7?%:$x(B!ʾ\^{bJ66oU)B!@~_IDAT~4Hw}޴k3 ? d_{hqfB!P_׿0=fR)B!˾^#=7PIm>΢B!.#L׬lE?yB!ʾ 0f3_@0¥zPsMxe(@|RZ:4`VTMPBfgIe/ϵf>3/,2&\Kqu,Ť*KyV(Wj1ƥ<+^ƪ!Ҩu+ѱ ^J -bYOey͂>ClVI9)1YDž$bs<6dS; $TMeKq|6ܬ|&7FB HڐH#34سШD\D1>YyXx 3.L 7m^&Pm[v˧'L|Cʄh ˪fBFSQ` r- dj "Mς~Tۋr e咉EKnדSr P13`ڠUhCQzxJj98șk3659T2jwbFgGa`J^^5+序{ѝQXRU7f,-~s*yϨIVxAA7f7)r;@ մI"FFBnL{Ku.BA}oą aڛ0Jbc%{iϞ {VE0m|tV @UQ=@"/*~~~_e&}K 6U #(BOq>zG .gB7B$?E 5Zt &Y A"ePB!PF)»wA^^p&Dʠ2(B A("Dʠ2(B A("Dʠ2(B A("Dʠ2(B A("Dʠ2(B A("Dʠ2(B A("Dʠ2(B A("Dʠ2(B B`Yv,HܼD"B(**H$͛7 R-"JJJAcAJO8"p@{666 v :SձM@ZС(BA'2(BgB3Eh9"4SPLAZDxܹ ťSN& F!1rn +ZhX, [ Ξ=+Fd~=hD.ŌF>*Ԍ6قW|!d>r{t!dh5)鬿@JݳLg V2 Py ˨,W_?5rxZor ~&]rm\]AyWl jzo AwVHnQeҝIETSe"r5?+}C?%Bٕ^vvv`7?ЩWa##3yold9)Gc( >- /صO^M4Æi| gSD *ȱgպ ̆ aH|911V,q-ygisbf^ٯgoxǏ+PC %Wp\ypݶc=j$doG㳾rŷn999#"}zڵiQS jBMalKx)dzt4QeK]IY'Dm`7틗.`!URJ@P$SE9UKF0UiioބvX4/^,1c_TWWZfZw48 aTˇbLD" 5:4\>"|W&^7|zď¥;eeqd ޽nnnĭz۶mKR˂q V\"MK?:b8=J,{T+dZ%@WZki`>WڽgӧFu//BoxQ ё|#U=p31 0rA2s|E!<ݧM0XڸNXڒhspqq}j!8;;߹sFwA~0W8;;; zx?ݛVkXtwMUVjV. 7+W֮LM9kf5"'N߻eO "ijLnݺEPL͍ DdZ7f dvر=}~طCriHpЦӧFk[|0h +"k-[,5k~}x{ʮz E>;SVI8,LkXY|($WCե%J=ޥ5hbjsפiZ_Z]ǵkZ7 wصmp=ks%E8vtoMJ.n~ ȥ ͥwH9a8F CHUpb=jdr{=aDX(0j G ~)/Ow)"bt8-0mDM^us86z drrc߷Ueee K lJȹ\b14B_Q>$ >v苗/?Wrmn1ȡΝ%x V!CK{m0OB#59 jU[[[N^`ji216ӣUoM.U2yU3o>$Nާw/)`k]P*2;g 4`}x0NN! L ɵY } Sew{̶RƷ0&\YF|zFЌU>4(QӦj#DZwb| jnz&f13hm\],Zy{&@:~%t$4$ yAҧQť^OQEh9]D|aA"ePH@Z(B3E AZ8)(B rLAZkF"/|P{aa7Ex59-__߂|+.6o].;}tEeF '8ydvEeE=f~8(kb=aQÇAՈF )//OK?0>¥koHX韡C.EGN2!W:a3ygi7r˻'njO&oٸYm[Z:M<|yjo)[[طXqӞӦDF*>eD@gO?lOIMڸuh7G"kOlR0}i07B3~"6n+͚A' 9b>}zݪ4vtH c'׭Jl٢cOhc#n~]t.\5"'N汧qeq/b!ﮮLڶim&=zd51uz3ƌ,٧#W~}a8!1~tox4AR7q̲ +?+K.`jH~WݡᗥV(9}/(p뎝sbf/=#cj7q]z=jL\?Ac>|_rΑw*Ja C 5gUhy:X#0*ø)L&_d)`=ɓ'j) >>)Ehj۫ 2JvN5b=o5ePIENDB`PKs#L5||-Pictures/100000000000034000000274F3D55160.pngPNG  IHDR@tCIDATx`9}wŵ(Zppw8\[[ Խ[[݁aYV-^/I2I&N0r9AA):0AA${dOp  H~@R wlmAArHqeB 5m  yn#l8NUiuEAA*3USrevG&(82  #TEEP~n`֪8pJTmju1GASxp4P0%%2natӪXW g(   ,*]Hfff~# BU֤b-&1-?҃  RHLIHe:fi4mG.##MRŽpJ7PoQ M+  H[rJjҳ7U&KV RåI7O`(PV s aIAA($QZbRJʋnMٙe>$"!.Y`6s KB\kt?pH'i S~}|:-"R?% <1b6tG.Wo^:WQiZDL"%DI2L6#/]8ET#7wt*ȯT XXaf_4it'X,T (x֒e ؗI'$["ʚam&F5/W\Q/t?9$ %:zs,-[Fӆ7 !!XFt#K8\$ hnzAܑ?HOM2X̌e^[Wsȟ$]_J +յM|rjHDlKU ~tQcL/þJy|< 5&95ok?`9V :cK_I(#{ŇϾL hHDRqFGiZ)AKN=~Z/Az$'$.˻{Y  !-}ɥ3=9 {w0owmڐe~#͖JYQ~|Jϑo)T:͈7Lwg\HZ\jn7eNF6l9BöI2Ea7Ol!.vPTW^e*R{@jfoU2+T[eMߩj~Iܪ y|07b2:/=s@6~ݲT-UR$5cە7R +R3OBi=Zl @*;Y%)иT dL̝J|)NpOhFHKU7߂G̜G"ҋnpwWG}SkfNeN}zT ˢ<_q17np׳ĊJg⻫B#Vw2Y~֝)VeC%LqۦdUZ$#m{i^c;g78t6xMY]院 g22%ZUӬܡԺR)gcY6Dv߳B }rYZzjfBco}G(Suûښ R|uS+*O/yje8[!smV°nK* ~٤Y>Rwr+1:2RsG7p^}Js):23jT]Zc#qBW{[awR$zղ~ꭒ= pUn Hц`%ژ <8dWlL~BTd|?sk%RcןoQK)6Dx p)L6S߉L6jF„+̀HBSyL61W>_[ ,3CsJcА3F)ҟm`kb?4ǖFuͷ;טM'NcF#v%Uf#LQ-j߭K:YqL7sdR1E"ɿA۠"^T~\gWqH@JRf-҈S[\*7F3yJ5p g<]m-O> *af1X^ztK2Jxܵ EՍg=Vl[[oLJ,XuZTSgMQt_e5߇怢Q1eR43-mŇ>Dьd|4q*M8-EWBzQ"{Ka=dP*4pzChxȚIR-M-i)t&G*G~hVεgjy>2u.y AO&դe|z[l8mJj!5g86T_b 4MyEMV7uo 6(Q[yUӴB; ̭}L)s+7O+m8áW8!q~YRCWqWQhul[^EQe˱VrեΝ6gU;ipwlvԣqŇoJVEUޡ(ORIYWԟ˲Ogxڋ=Rg2 }էlbZQͽ YO*/{6߳=3ԑ]o:B_hT6;K$HXJb& rF0[*)L ,տ,rM3LPEqAb_-TkVeRpCQv\#>MB.{/1ć_or΃wnJ 6_`[cf+Jlt}ѫNlTY5m1t#?~}%kfA_#h &̑jO`')=kn%HE!{]yĽϧ>-ި ")׶<֐<˵p8m&\3%ϑ.>Z8jqoxȚIMϼޣI# '$m?=Og;(f m2Y\w{?6V&Ne(H_N)vbQ 66qZȚљeR{5356vD~$ܖJԣAIY)4P4{VƎ vPQqgV)>"uJKuu˭dsKkPEƎ@NF}< 17vtAP.'%2V)N&k맵2v\AP.'45_б\ѓ;9$C  4 U!zEv jaFAB @Q)(! R<1S( r@r L-Sc WTA1 8L& O(WrDP!NAQcPhj %L" G)vv'OEFE͟3T)O:NJ03P)@ !嫌#b&fV׬Q}Eeʔ^br#~)TA)Af#F}!ȬjkTRk̨2 :Aȸ,RɤR߱mB`(C1$*gERRBoRM[yֵl7K1>WڏRyoHÌL%/) ۴j:}x6Uzc8,{ekkt=tu Z½F鳀g046FSD"{?}1<{Zz:/LNIx~톍]V ԔmZ6 7 g᜹ 055rFdT avsu -*:͕tyK/Zd_6m<%W~FDstaܳ}-88{M,,rqCFM4~ fy=ej#zB2a)fG'̟5 aA$U2Ns` :fN-~/4032Qq1iii\ɒ)SUduPo)ɠYLEtu5fЋ_ʕk#l@um޸iM7_`nMBaJJ[I™MHh{`EeH0X[[CBU*߻̗._;nB7/@S958[o}pwrt \:9ƓT?{jM%--Z $#i^0oo)}}4gp# pĘY_rptص}bhbA;BfTzEGGI$b:*Zdۚ2wMU~888שSc HOOVesBC'u9kW6}f ݺvkVyYݻu!5yDvDßr yNL=`tZլ,Ϳ~HQ.tT iZ:w ւ%JMۤVgV\5+ >`iu$  什#[Jӧaa_B>6rY H+T6j̸ދDIՖ-5-M)H$WkLNT*M*"|g/e׋b1+7{h: o_r9a_ۍ{' g3M8BBkKWFf͘:wzuܥsǙ} vm[088$cӆuj93n6VUT8sJM,_7d\lMM 7B 8䋛3>##T[[ɠԜ M-[9#tTZdlEAcR#p Ȣ,@`bjfzVm:nݲwCкÇo_~ ʌ`ZXZIР|U[ZtztMyvr.q,M)cco#>滪M6۵i?bX5'pkO" n];OׁbRVZ6;\uז@kw6-75p3z +p8w䥫6Lkkc_QCv馍Or;(E~CAP#p232ϟ?ӪUgN8yo!ݻQNبobqD,r*UH[dnn>w͚@J5mIHhOLMRSE?vƖ6Yy<.f2ZP߿jSvuaLz ~aG.Zڥ۴l?57 dzԉc[t| 3ﱥ˖e)P\ڶzQB\kM;ybƍX,&N98ao^QRC Loܺg!Nv ǢN ?B-C*  ņ|pb[[n{U#BE џ5l 9)/+&N|GgvS&ѷݻwqy_`m2~Zl&x<ͦgC.Q~)W}/B\K   bXFgX6[6WӧNJĢGz͛۰wʤÆhMh,L%'XXnXoAڻ=B1aA(RNq柘pآ| S2Bf B,AҦT*߾Yy~_SÁ<`04PTbѽ\&H$bB%&:;94"={fpH\9\^j(2y,S{oܢM+\C?M! b,X,OON˧ ZQ~Nk"v +[?xر^* =~d@nݹۦckUYTV| )1>&"\$J)Ubjתq9 VhѲ}&MbXLASsFAAD)9n)|#8bsz0He2X|УɃ'Ξ8cpr߿yx'$$X[ gP̒'&}^*,]{=wi<\Vh8R! i)YSD*gfkؼbt/]62:6-)i'^}_)_T"xxEνt]KZ99\ë`ݳt޽tҾ}{_ݝ堀CA`46U]n^Sf֨<4CJLqz/ 2O 0Lu *niiQbGרd͊E͚7wpr M9\(9#-Ƶ +ոz톛{O4PJ/  H^a'S"H^oЊ;=ljVdY3+벖/~M( BdHĒ:K;;q%scfi3S?_ZA_ڴࡆ 3YL@`" !Fp ݤRPoW?d喽bTŒAW+й؄2ŶPr6p\.Ö`q|cF ~7m0~R=eRJO8ܸqبUk_˗0>WEAs Z{c7"!ێ.fV"QZ%vŇ/<ȥujzcLfhPH:.tP(#77-[*JTYrc"_r捫^f  ւDۑSw~%e32ܝ,߇˗(VjU~yXR5YL?&cS:TX#FLMMgN uƼ%bDoDvpOxR|zEAXPpPoRb?O*ck眞y^Ve!_XV 6 NݔSsP9px\@_fk7= ];WP^@*_h^CA$Ljmb;1QT* N7\[N*%&&9*lݺM%˔strOIK(e\7=u +g䶵=/ܾ}'W.b@j/CЁbp9<O ,_۷ :711 ji@A;7.lݥ'PEX,{ט,Y@D2cܹ/+Qͳ(=JWpp7$#qg0ڵj<b2i4({sي8bFh5SSk+DJӸ9Pp & Q.9ҴUg7qFZLO DlieRœYpN*{簹M:pѡBi|&Ǚk;moedBN<ɑ*^bPjJS x&*]JqLT*S Aq & Q222U&gwQ7/ &JZ)G?;_2aT$Jv4q\~nN6,;SW̞QT)>_b fTo(,S8:M1 ʎ0ȯn*$;"9XI(YWDVJVls@H`HEE.0,rKv HA"32vo[OZ6o!sDa1\}gٹ9ٚM_>;uDw/9R&1[* S&6ZU)p'{AA ȉ0+[cG7 h U&I(%].EDe3#_9gmy7.jټY*B@ 5yGcesE[ f  H1Ƿ"}IMMvv+UxDJRc$b،̴ 'Gv gѵ[N&&& ~|J|[p=HT|^c:ulp^~S^]œfMjfzEX (M4Xgei-96y]>_ZKR)FJ~E/))yqs/|u1lp (gl>={tĤ:qģtU{2o޾;nZsfM/WqMB;4 7WWhƌ:'ʟ?-y[r>~&JעKfj|wv3vϠ35?k֚ujө5|L f$"?3r>؛PW=7zqQo?w>V._I{՚us&9"ٶ 3V/&&f֜'MݽcKA^D̖m;F{xx ]c'zCG.z!'G۷.[H8Rv _rǮ@jR .{Oٺi==~k>O/Q­ǖ𞚚7n.Ft $X9Up*,JAT]*\s#^#`05W3tFkاD_zծUC)ԛAK?v DB˸s&œ;m։OkNo- \>"2LkWPxT Pu'OȽ1F[௵[ĿUN5(YSTH3޺sW"7hPoVVVĵu#K,_ڋk V׮"R{HڶnjE@ eʙW͙g;[;-z_8R#?{-2\Fwl*␔; <[NoZ%Ju6D]:. XD|;w\-r(6GDҲKRՌZ5EP؄q1fЀոJ2m;v8r@h"=bЀ~!@,[a]`~=<R E.VٽLR`y޽z ytֆ1[YJJM(\UϠ1,FfFqcEPPʕ*8JzoeggSUڵj:+!z#΍[ϝEcXo͙Is޹MMMRM|4t'} WRRҳ<{h@P+.5Lo~,ZmL3g߸~߼u s󍛷k@fMN=@B.= nV}ŵ@OL1Ⱦ\e|VZDGG/] zSl1Tʯ =㧐QK +h f̚ۥSAƎ>&w΍K`x2h)yqU+gԪUJaSLfyZ /6ENJ*:}sͱc'Usם7oKҳ{fe7Mޯlӑ0k&͚6{>H}о-<ܹ_fM_ !TdIvKLaW PBC- 2X,@ܱ*?rب7 >>B멣O:~Zp~Ȟ~iƌ\BԱ>y~gxI6_o峦߽u0-5÷J䩕˗\è<\pg#88؃y 4;׳IW@ ##bcbW.5*@Lly 71͟'gȬ9YË7zts7'N/K$ Y'Pˮ{ǖk{Ojmeվ])&~j)ކ"7a$DIzDR 2[$z OlmmlZM5mr!>zf/g/F`*AAK 8d[T*3[_D"S?gT177VTtt aWWzvvr$Y-˘>mJ[6oVvMGzJ^BP;$cQ~ҋO' +gvؼly+LL ikDBAƍV.[BX깭vvyr]:\eIAA/ՖdHL7w,hv..Τ%9Z+g̚1~?~1dciS !EA ׻z톹yUȳ@!#m\3dhR)]RP2Vl5 }iV NSWZ|eZ>=Yjُ0OKE~ĸ[c*@؊rW|Θo@ N{z!i˗%*'c3HonF$,~,&sACF\:o͛65%EY6[pj#{tL*W0M9ʔ+)6'd+W.~eRsCrI ?w'qԴˑL3O]as3MAӧN8ijC\ϯ^lyaCFAv)=~5?kw;"2glA]9ӶmzzoZxլU{HdW ypA4jYvZ@$;w0waw7ӧpnz[rn/ݸrXhE]M]*Pf]6&DjmiȧSHOL*W51'Sn.KęIqc 8㾨X/q8+O^-䡪=ir=5/ 4F!۵m ?hh4^ӼRWD]%ۚh~l ͠>:uڇaCu z4lP~ZOeR .#h-rf+E˕=,Ä 'e[w\W5X|` :4kh`gA$73f͛㝙 yڶ1vt㓭"{ڹcDA .ࢢXub۟Cl,Tn􌌶[N1vt㓭"ammˆ?p* HQ$\xxD]S>zyvpyCgX l ]3dM!b x%(nQ0* s-[8ԵmF''kW(ĸX:$;XI(YWDVJVls@H`H䯀|ڕ gtճmFWݞHϮP  ŀpq$_&Fkƣu=U'9  pA6RٍG6#zܫnOms w d-:; #\M:LS#>B(EA$E`!)۴"Kz}FFȳݍ@ AAٓV5&&D(YCݍ@ AAurtc@n<ݯIͽB! Qp+-AA" 8ĘPT\m R@  R@W@ }vƌׯ_OIITo=(311ILL$ϟ?2eʝ;wLMM,X0dMcNZH{@PvիW+Wnl6{ƍˑ#G۷&El TV-,,={vɒ%-[\|{=#  4(E Bww֭[X[[=D?daV+쵶jҽ|R5˿yFT@4[0L:u8TFzTS $+h>|дiٳgCeٳgK.%(r߿w l?UwܹdS 5!T5kӧ֭>}}ݻwDX3gΜѣGO>]RYl7:gϞwcZPjjjnB#`ܹJ*GQ$KH9bVWw;'O| ԗ7oz ݻw߶m۰a(5 $+h!GBGx57%ߺu5[n`vqq!1xE+ $@W@}}}}+\)Sȳ-R=$"TR]v7o&ṧo߾_1M5޽{[ҥ aٽ{7o3rl{yycc={$3gɓ!EX&bsyh 3?}r|BQFJJJ'tݝ;p{ mےeo y!\Sr(TAES{\V7OɠA 9Jڧ!y $+ Tuٲe;ՙ׼)Q$W>Q@AxAAAAQ$\ F3vDAA@p <"^hA0#>ƁZSit:MEiq 9qqqyZ`~"6 T"|S(*2@I' >D.'řG4$o  b N>s)˽F1 &AO`Έ.7c8aM4: /]c^ʕ+k֬>طh쭭G05j,^t^^^,kŊ &l`Bvf>Z# t@۵kA͚5K;rݻ)Un/[|x}4iTNMCPVZ߾}S}[AׯڱcǪU"""ʔ)bŊzlWmAê&rI Yla>vavdcpܝ;wvرrpOp8j^tJfo~Сݺu#~ڲeC *D<6iҤdɒz j߿̙P Ei>ƍRDJ0?UC.k=)@*Az%o߾zH744UsHu /aBL`*'RxVZP;t`%bΝ}5)@pJ  `~={;w"GɓӧOC)Ǐ9s 377G(py\9 fo dϞ=Gupp9s Cb Xllի 9Po``X aA@txZYh8u1SND}'O$3evAI FԀT se;HLYBB# '&&?c.D 1cƑ#G4lkkKsÆ vգ|7f͚>vX=>}tUe$@ o}z jD"rQ //{Z G4MxN*OFHW[~v(߾}KMMUCAQ.5MVCm(!333T :&,`X,*CF'<<Crq<,].r \JĈ:t~z X`U h+H8Ts OsJKΞUH$bHb̙ t-U|-[Ԯ][UKNN޸q#PtXSSch#""{/!Hd/_|^zzD%hŋ뇪TZ}/_ ]r-˗/׷m۶/2.5CCC؂P(3 7o b /W1$uvڑZ'^04 p-7Fd ,I@%JشiSf͚4i .49gϞo߾J*KtC@ Ç֭3ЗVX,ֆ Ev#*ZeʔyiF38f9rP5E7vZgg<6G*8;1Sɢ40߸us&+ ׮]#Vp 'C^dmenmiqz@ ębnR0H7SSӏ?zzz A */_m66lɓKVJCjjQ6o\^=лC 9BH׮]ON|bԩJw1oeoFU3j+OUUQڛ1b&FP-JQJފڳ dsp=K߯|>{?w'Nz8 r}[r@cynghƍOҥ SO1cPF>/_-**jջwRSkԨΝ;{EVxx8sk…I h05Ey&jrJ`m`jiaGF>3z0o.*|fzSQӇ 6,|+S:-msG(Joϰ .s᭦zT\bK̑?Ix-Q`fhV >UVYYY<"##u떘HaLo;vX_oZ3h8 F?zrI03ONMWv:m4[hhhfh9RL%_~4s,QXq?eq}///ZhPz77>H8Og47c!!!:uҷܹsV%|>?00>H,4 OaGFOoƍ3eѧp.0wssPtL9wS27Z#O8tݻw7')㒝V#l~*y?☠wx1:Fu1Z#o(ç RۄdQBpae'}'mtK!fݏn(o45L7m۶M4I=CA o(hLК6KL?ރ6,<[JT@Q)WvmS-[oSoyVƧܭ|"%E*U*WugTBS՛6mz𡩛[f'q:; FR)WnqO9wU |>`pj8jVn:$+PW]\+sT9{ܹѝI{/`)[(9J)TJo>U2=%ErʋU>c!c;;ɓnn.BݭCJq 5Lz M6q`oTիVg7ϵb0=#U'>X3gB~ۨ m۷?|у9,WoVz޽{Eܦy]4nGt+/=q ~5WITDwWPֹsg/ﲇQ(zSi/^5_DBpiϳ S"N!%%ɓ͚5۹𕫷H =1' T*S@˖- &yy=t\(_֗R^6iPSNx<ŋRBCC 2e<7Gnժ˗/ٳs0& 6_{M[l%JE5E}ʕÇ/#zN:um*cڵ_u3{*6Ԭ1PTlտ323=$%55++[.kԺw\`+$@G(X9 }d>nU*մi헙٥Kɉ<8a„QZ3C ѠA0Ϯ[ҥKVٔL&1b۩ܫW/J0쨬P(_~ET 7nU>|YJ<6l(SW^`gϞѮԩcf,Fhôkt1}yرaaa-G[;v ys'N3LU%Lc4o|С}Fф%EEEk?裪UcLVbܹ2f̘g8q… чʴ)KFa{*SEŦ Dqrrd~2B_`B}()ًBtOEФ7oޕ+W9r$SKJ;wNJJ={69s̐###۴iC;[~m~L໣aliZ7}p9s&n^zq֬YLϴaZbM P;6m2 egϺ.^xРAtDb!&>ESѺukWEfKt*ULiS3+}D;jԨB7%}=wP(|zHrzXуVuZ34iB\jjj-~sA;ǻ91PTlL,Sz6qtp>=}ЈӔF |s|XvÇ˕+G Ԯ]tO?t"h7CF%֯J@CBBO7=zQH-]^bѥ9s˻+%%9kiHZ;zϟyA-Pb*SӧH +Lh׮e[~he˖ZM]f}`$33V`D{VyF-\pϞ=FM0grhyժU'O,f)SEFNw%|w5 XRTT'\e"}Sz]sD(x%(=}oч̙3˖-7dxijg;{숈*[VTR%LdʔzgwQHt]#Þ;HX2M7nSDZkժe˖jժ8Zv鑑_}թS?~br`j&pL4=ڧNĉB4O/,,I&;vlڴif}T4jm!Pp(9ޯ_?оč7(=k:Ɲ;wJ;uV:_:mҞE8E+VTP9o2H(vv]ڸ?>m|w8p ŗܯ5?_nݺ]v1k׮+W.v[ eG1}6Qit*O?]xqiCF[1O%ݔ7o6kLߙW55Νka%hK1Ԇ͛׫W/uffBt2}ɓ'ӪK13$6n6$`WbWk F/_ +WT1r/1l(?޽{WPZ1PTlz қ@(rEB^8"A@{_71ptܿ?88),S9{lK^z=‹QF/HJk׮ecbIR}[r@c)l33Lo4LRhKJIM*eƍ\vv6-+W2hNGF+/:"~UVzuz#-tLkڴi;w.ꫯ)qtWGGG6D} );|pKϞ=`N0v4uJscǎѣGٲeimc)l O>w ?F˅r ջwAxS߮]nݺ14N:E3mLϧIm3V?a\жzo>||ttZf (* p<Mdz_Q;iL135  3f;5[;;:F=e:tC8N;BvE5|耯3999MTkfbm\>n¤{9:: ~hF׺MR[i̬,[ё=:+,CoqcG۪S `U pw6ߗ.7s^/JLJ|F:b4eYߢ <55sT?ld~si׮8~䠳Ӥ3f͙p>zqm?JNNXWrЊv PX7xC\yeW6wx~}wxzzRy]{b]f5hmڼuM~~T6Y6LH$IISSR˕-4'~gz. _BY63|*99BLdϟ'[>Ćwoذ~MHjܰSnؙfT0aŋaÆ၁F1<b4''83 ppp_ .,Ym̘1JrŊR@RSS[lSKr/q_EFF^rޞ^8z(vZTGQ1v-P}[jE7^Bh4Yfmذ>?}?H!Ν;gx]ƍFu:Z=>r7!qr}~>W_uqT^rO8aSɀZ*!!|׬Y3hР'O'e~GΝ;/]tȑw(?т3gae~͚5?m>-k_7o^h7|{n#eeL?cǎݸqJCT/7mԷoܽ۷ot8pvlPJT@Q9rҵ˔3W,iݻua{|uڌّiǁz_F~>ۗ/_ Ř͟;|^tOko7: "e8RUSXh??d7n}[B\N^5ߛ#""?׮]:u߾}ݦ0rrr&NDO>d…P(3gܾ}R?~a)66vʔ)OʦMFEE>XE xٲeUVy{ E3fXhȤd1@رca5 pyڳgL,k.@ٳgWTɂ٦Ujj>.^8|ctԉv'wt>yM6/^XTCϟo8|_MFop*Sֽ<ȑ####чʣF,KFaf׺R_;mĉk،]t:y"S?e҄1'~#ŵc-^4j̄%>>#G c~1lOz|X90pQL}Mll\Jj ]v~Ό~f͚LgPP=oolvv6-|%jAu\J3¥7F?VBu2:uPg; {ŋ;wpƍ,o ߱|&L$E6ʕ+W;i)<Ӹty}6cƌD}._\-իW޽0 @M͇|Q^8p \M%g}F[E/Lϣu :>}[p!WYDdd$4h@G\tȑ# 4~1QBBB:uT~Ν?~巾ӧT׫W]v6mSO-44Yf@;|pKN1Kǎi366~rV wpfA߿խ[75S߾}{ @TG]gC9L?J~_jj>X/(v7xƍS8u;99Y: y=E{W4a@ܯm;"oD"YcԃP(cXIGI9hhrXU)ptT}A7@MSͰ~۶m&M 0?y>xw\.w~Li6,<[JT@QAM6=|VXݺuF_IeXeଥ ` 2pVw tB j: .G'7n=|hg-BE;C/(̱ؔ!#8ykvlJy瘲u]DY[?=y/5$Uv)T$n8o84&r8߄T\ǛFjOXu-fjr p^W8//#a[eu՗\u46%CN *jTF9b̋/M4G×;.>{m%BͦNzGv峚-hRZsM?]7nO;[,A*^Nl/'*ױdc1Ej˵tL8N덋 ˤ)nOgՕ}cݔݾEOW\6kyy*dYz<6Cñt~ߧVykRyVk-*VJ!8ҿY?$~ݪKdW#?Jtwf?ߠ ]xz3>],kV~z*62?Rf!]-FKΈdH]쾜P,c%BM;`}{;Z[*y;g/6Jzl'SorbGYMRrYNJb =|c\cj5/{$2wfv/!;׊2%Whnj<ҶVN1sU }lp$*IcwRVPTSY =/>˙'/>J_Wu+Rj3}>oRIpIYf0mpJsӿ?M7kGKfL{Uo@sasphNgT6*;c!믙.AKƲZbgOmJLNɕ*?6_]OԮ~{E"wؗSO2,X|ojMD~YyPaRg)Ň:Z{-KѮҠ Ŭ3f5iҪgZ^\2e%t2J[58&h-\dn?I; NcR;pI_zF1G;t]*q,<_do i+u}[c[:3Fϟ'SzXbD"ϧTggg \.)%?@JR(R?L CO) DBRA&eddK3;;ԩSs/оX$A8YKl _P2Х=mD\C=HsTLMv^W%{LB\~ҾMxʌt+YwZpW_SQ<uKKFgH/eBXBW{W9 ~͂Xحd ny\nE/m+:'ǧ5GZh, v'-Cl//q!3䋚?5c [^5GczR3{+q7lu- Z쫫/7njqL,<[[5=n;TD#] [Ìw{7)7SVS7z7lQuph~q\3zMk,1PTj,'sɗnݺQuƍ?~s.\hժՙ3gBBBN8Ѳe˧O)S͛իWǚ5k޺u )))*UkϏh9:TOѐT*8~do2hȗI*>5S%'5c -N㒃Ѵ=1Qw_Nx05LF\e'ehً9*V|0H7GRAȔ=Di4!59: A"s^LAPy\c7ϔ3F8UjC<ϜhzZb~e'v񆾞v'w l gp%1zVL?EF{:6giY?o>̟(om+׹t3>j1@MDUH JSa<z5 bͱGG={5*ڣ7cij]*,<_d7gC?[~t@oYr% JT@Q)T*##;񢣣7l@۷o?׭[G?=ZS>HHѣժUF5R71\ye5~-2|%uQhϵE+QwJ͎RuLTi/s֧f\K=Fb ft8h͎)[oGW?}酼JeVrF}{hY2s}U^ׇ&pۺ$x{\yT5Ww; {r9FC]K0"ۡcm;jx~ 3BҍHsoY{U_ijX-)4REo)]UBz5n9)Y+GaץͣEVWoY}^ʬ1 2PTlq R JoNuTsquڋh^ q9ܬ,_TR6julQ(՚B}$fgɢo=Ohya=socǎ>}0LiԃUocMԬ?_d]N!L\elE@~+|0o$ lU1N7(*XrF[VUQ"m|uazszl1$=qd$fI>1hT>q'cOinP=O1&pNOqr|^05Rhŵ145_o'3@CNMޭjE/Yc 5{5O*/Fͤm> q!_pFjJZJ\R̋\~nܯJFm[V7W?OEs`GFsl˙?_='q|J6Z۱2_RM2CeG/lk],2zU`1[ÆS?(;S!Ekfa֥ͣEf]e7K0SWeJT@QQc~q܆ nݺUp9>Y[ɴ9BkUjX,pB+xɖgx* yG 8lYãWUTI.7o5%vݺu[l9~6H[>/ǥdM۞W|/ϧ f8Gb@,^ QqzP5+K%ӟsOf4IgT8+Լ5w_~LL-Wn&fPw)_=?SCSk8џvuXkv ĨٴN%gkKS H__y|ԺĴ'T2YywكgV (*%۝켼TI*iiJ\؉^8{: :11U-+|PptIOOT*}rǏxJ(5i ioT h%?Ҿx|"+G,i:>;Q9'dš z6 p\.Y: ήNKNB9$z)TB]OTVf+rkxN[b;]j_\V⊍69uNsLO\eI&I`JlL&Dn_F`6 pjԨAJIOO rERhUPm [.|5z-㟝RdFuᯈm7w)ʐ~ }9|Ql96`R W2RS_TugOkjqdRB(8 u?zS+Hb _i4긧єh4 N8ѰaÈN*Ury:uӖh5j(O co֕&'&߾{ -wKϳ)I$cv얖B*+_`fZwԝͪwH~h-~+ @ ( 旻l96`S o WWTs;8IFS^ {''Pig'g;݅)ٹ%|Ngx<5# p<Ç}}}#"":vl{Yb 7oׯ>p^^^TPi4x*JF T[k7"'/[lT N6oFQg{KTjoXL&;vlJJJ寔?R*UT؀O>}kH9'Ulv`7)i4;;GQԢ#4a<;;CQxN܋O(uԩSחJu]\"iqʕ5ktww؀MZf~A%q1RRx\'||&㩴'=o=;--d<X*͜$nB}Gee(TBJt5?ycǎ8p DW Ball,Et@ucU1OB%.MJûB+9p4AfOp1 NJo9sݻwW\9x`T:i$JUNHd [Cp6r9C]q#S;e).VR)ֳ IP!]<f{!:n9ͳjfrZTrЪV_VdJ4ʕ+OiXݽ{ *IBUZɓfdjݲsa{=ezl@V-;i~SdKJSHsecǎ-]ʕ+2ѣG ((޽{-'lEWiYvhx|fLzr/eٙ"@TrT/VlZRRFxJ,GIC裏BBBhM4)_|RRwuum [߅P(PeBFwqr( xvv GPkR^<92"[E2GىS^={E~uh gϞI&rl1p5JJQ(< WE#s_zA Pj*eM<ӧ*UrppprrrժU&11{I*U_WPɓGլY3..ZjқZ9sfRRD"ˤJAvvv@׈p%?~֭[ܭ[gC/Jo)))ԏT*mܸqvv6%< pԙJCkթDϖ`6 pGjǎQQQ5jԐJ-Zl… ?PK,Yti>FD͍Ҟ-'l.],^x׮]ż̙e??KP2pv-rĉvZzÇg̘AэBhhΟ?O0..ƍjղXs$-((F5*T(x:t:)uQ+[ǤI|||4:<rP(ok׮U^~Yݻw(թSӧ3s#*p8OD"WWW^vvvIIIrb13*UPz`ױcGT(3f)ѳAp(K@/Li￧ֹssQ؀xvDO֭D"uss zUE1{{{wLn`G9|_G=> pTI.ZLںu_ڀpP:ϣdt8/WE*YR)(Qpcoс/'[D^^_|Y릦)r/dpG!ӣz^^^[HbX,.SNe>f `@ pttFc8 -N |gXRfU_,"bN@iaGAJ(v)07.׈4"a_bw2,pg]2lgR⋻-ŏ.tVآa۵)E<˛?Hoys^V.RGrrrB6:3vܽs+3sB^<5%\ٲKËnlZIoNTOBbb[; ;ϗ}9nܼm d*[8 D,\inmq+Iq]{|}},W 3kFV-33*VzPeVdu:FscƷlbSr 9c7>7z?2?T&q }L_49jj|;l)é*kM-u4 :8m,榄Q#-_I+;*!,_1mƬ {2Ǐ ּU[ G3pL Cv_&66r`%)WzcG?}==j8NΎџ0P0/l&wBN@I/`8A`8A`8A`8AéC宬8-  ]>飻oInpyxQZڂZ*FB`B`B`B`B`B ZoN[5*Z+k8J]jsqu8:zo"N" |>J[8z ĴkXgw77zŔl+ncΜ2@ПIo6%bPpJSk)1ѣؐobxff͚YulO֗_x)ɔ*%s'@)P _#2ydz?>S`I' G$W(JJ~k -/Upt)?Nft;mP*Cc.Sk֬٣ߚ'WQϖtZ;4B(XDg,Xq^Ww"8 2p,SUnb5p|ibS,2@_Pk roS,2%8=py*AP,S,2%8*%l ]B)TQ?m3.=r<6 pڵ͈ Z|> {嘇ܹыrBcqx/BAylX J%cTJJ9cOڸG4)TOOysgժې.6{FSTy 7mޚա]eK9::Ro9r v0lȷ鏱)YsmR7f԰!c~#@iR q9o+W9ȜQ]7iΣ SSӮ]>p{ ×ܻC"rt PTuKIM 5E١6m޺s&??_*NҬU&ܵ{;<==ǨLǏ*R yлL\JNd}܀_˗+%K&{|uڌّ9͔3sOݔ˗F01gQ]\c*WTXU pF ["%&%V 7vS?e҄1'~u ':+yfW :8m,eTFNFK1l˅BgG߻6)YG _p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,2p,E3p9\7.W|31tFhW/F"%GVAMj&) S)B8A`8<$=svuLB)HKsvs/V12-I\t: <>v), 8py Z[7.v(]j/S]ZpyrSIՂk~*@(U _)Ujq7?p&QsvsJO+5.TJ*_BxC,_8u~{[Ek:đe+=h4hCxͯ->xxڞj] |w&-}c;%kN(?' `9K YC(r뽬r) r r uZn(G)hsICi4MC?+ɓ'3O~Ɲ@5Lh"|= (YXX{znmԸ0uDS'~߱uS[s㧼Ya*3/h,:88$^ X yˮ~w}72 şFO$^ίpWI^ r5tu%MU[ef7H0S~,fS *bV+eW̐[,%Xh7Ⱦcԋ4psI0Bvク%۬ʎ8̩ g' , vپGpb /" r[KsMOJQ%u\P #jF8~_Ze8o-8o~_I~j{;;N)}.(=%@%Gݎ800eM,7Jlm8\<Ǚ'hWk1-UP9{n@d{ 0XDQ>pRzlj *'_Rh*:yAb: ]ʾ!y^>yR7j*Ij!hߓc1@!TEzۿ{WLzZw̽xΡ!y˕/\7kkr"h ,u|Kq@%d#Ύ<Ϲ+8o 0&ѮCŠTb=TnNTZWv;(^8gI.G)9~$-9vzhd,pWu9eg]v|༥oWu5lҢMfuors>Bl6;uQ+8o}Cmჿjj@5.{h,[-v6Bz ~dG78?C38?C38?C38?C38?C"ILBHX|=JAo0Xb8>U΋ /{~X|/`ݦm&-J\hsTe8o1f9zܟ,90(#1xhm"*vzfWcQGD"cសvv5 YkI,U~`hަlܱu㠇R5ͮ>8U[.7;+Qb3p}~a=Qg @F})@p^dtAO~֯$GkJ v>PHr-uRT]qYtrXѦ2Y4b+I}lY䚀bOUPm8JAYyO]xرc[vj#7p=s…];w {o1444777;;_f5lЋ#X8༪xO#?p}$$, ` UHoۊ?~Q~IHH|eU^t>եbaƴ>)C`dU7:Wzf(-['uo*lj_l)PVrrrZDԩӪUlsC>?KhWze;Wa}> ;?an2UW $߀A"iw>|p/Rϗ1/MʔѣFjs[uh=7SOuyJ9$p<Nc`%9|ФI񘙙9iҤӧOw5!hYzU^==L|v}rsheψQ}6,,48z3/>U~ټlkZ*`O-P#<]Y듖S;F-7n…gEE tBZa7#꼼#GlyǛo%N㕸HJ}*#ymzaS|ءUvWHWƌ'/[{_}f͚ß~rʕ7~>;ukmFoѹwtҬiS=fW}䓼^=Y⃬Yeò+=hMܷA(Z'3p_eyAeYI&n2nEOgqṴȂ܋ѺlOK)7tҧZ!1R>&. RΥ-7"ZlW kvNrDDW:_vpzJTe8/{ɶ^fbA9rb=W瞿O?XO}c{+wt= JY3Lƅ֭[wO)(0h:Qͦ/22N^~ԩLѭհG^k~5XOExYTJv)3Iw.c?eKE_zFF|zW8ne̵Ԯ5P2n.@G*zFmn{SAҕCh߻\myӧ3g26l Q W۵6Ҥ;Rzգ{[nVO:ݮ}GmHclj[^䑇vûᆪ!km)V.>TFE>M5n8...bD{bb~r_Pznԧzgy"5uO?d ɭE޼Hr:##&&Zk~Wd\QU΋" 4dj3p GNbWuOWN*O?~Kɓ&Ԯ]+=xbW֣ӹjgk  ECzxo:ujou| ժ7j(5u}Xhw5k֜/wBBBj:s5ܦ$ƚM"}]v-flmZ,ҭA 7~O~ٻ?VoѢݿjl߾K)ȵoxnŅu5P/Af@G*$tI'Y|nX;mk%W3pkRvCW6lO֮K}pa¤ K4 iWvf͛>_G4>_1R~3%}(ڻI) <`qy:z@Ap3pM6O]Z+O>}WmNצQLy!22M$i[nG 81)7v:Zl}QQn>txU7l_]Ih@UFst>=;wξUn^Yvz8iK"l:g g1Uŧ|oAJF1o~}Ngd)wv{eڌ0qhQZ'慢СCIIIGO?rԩSrɖd#Os/ZiӶ0r3u'/%#BBQ#< j){AħoVZ㄄;vl...VklUh,΋*BOWh씢m(R]p{[ƐА-rȑ=]\={[JH/1uU(UꦁU}f8ޟj㦫%okͪx8oLs6 'z&yk֌ڳ'{ȍF󖠠FIy5{8O]pPv7u1]>v6z8c8o S7!4,PO9[>g`jԌjZsͮ>[7ѷjש`0|=Jb /qD}Uλ.8F}N   ʙda /zL:A/5O~42*&88TjD"0xi+8w$5O޷ggb65""Zf'b-vWg¤8 6oZÖo5sWs.h,6}&+em7m|kß͢qY~Ƕ3fΖksyo;v_zkJ4>v+MAJQGٵM7o-t-N6U>xwUZ'O]ݮ]r*bYɇ ( p56kƽzZCvvvlLW{y!,4t/7oF֛GEEQ#F~5}byYr㒥|a8m?rxP%|6Jf5k퐺E^E ۵m븭sՊSQiyG?Y?1譿YYAG%[޽ªZCtt٬:uj;]'g޼|ݕ++US^k6LrFƙFmԩwTWOZ DV fĦ~;(ȯx¶cb%v&33>E81c/\vxx:{h|ѿ>3bfׯ_Cs澾S{Zmm۶yoтlNg^aotI"hac]mh„Y#"b隵gSקgϻWZ>dC3g2?)>嫄ҸIs3r>vGpƍӦO~iJAAA֭5BwOᆑ#IM]uv=I_"0~8湑ơ߫wM$=?n˕}j Rvサ੿]d8>"=6:v`痻6IJu_:q-R}N/6?(l֨*CoЗYʼnM7ܫw/u6k|RuܹwOi|'kS:{SDo0=J٭n%vWN0bb۶mO2ܻ WeRN4ҪUu-JgGHy<`?)m o uҋfLݫgP^u5c]0BC@..6]r<=Xn]b;p*oɆ4Zݘ?Y8ػ=a5#zg]ͷ?6[r^llL[[qq^yQ ?˿n~}ţ94$Į_p#Rbc۴jMr\y`b;g_ RJ ULNBP3p{pxaRB BS@X&$I|jW/Ro#}jDDz,'7/'2&iD GB%5߷;D֌=*^xnb,؁T S7!4,PO9[AoQ3M[ck_u@A*Xsb_^`p*b1 +(EEuu/P"!!@Q~2UoKD8fJt8 /sJ3ΜLtP1fcso(ЦNoĦ1 |n꜅EEE999.]PL,|G4LfbZdS)Lx Tў9Kr^ERUEhqM$8%SS2htz8PuSNnM&<&^ pԓbr J`:RիVg/&ۈFeMm$ @? dS9ɏo:W1([Rқkr7Iܢ"%VG!аP9eƀbrWuyrY^ȩ.қr<':)O)3pנp~|c^9僧bNMv3<'<:)tM={ŪDgŧ7G4= F*Cn#]I%**ovso:3Sn!6O9AAq 6Z)6ïyutS.>u~9%ŧܦ 2,7%ɩ[t.қN?{*9%TRxSίBUnL鮝oSV-#],sV)NW:0UN@s= uUnrO 53s p7+m$`J3MVB[cJ[5l>2k  SRIENDB`PKs#Lƀ*PP-Pictures/100000000000039500000226367AFB96.pngPNG  IHDR&L9IDATxxSWMRwRC wC wRlhq2] w ww(VwwI|4 R<{&}s8oK@ f|Wπ % +$ȯP @I0޾qVbX|<[ ZO)I֖fq\aRbBvmz ޱW".1QS->*}T|R%nfIL2kTz#=2+xl&%9B2\ 8"P\hhhܻwjժ2߯VZSr;7֨C˽qLTLy _Sox<*ozK;U^.F-SW:Ix|b_t%w8r|+/ Ekn^&a)R!MrkJJZ_LT7^ޣRprbǚ2@`ioˑ\M =QEvys^y}"dyY)_/ J+G}V[MN9XrP(Rx,$ZE׆ʆo];H3{{됐qN/ {{bߍӾyuQ%tRgGW*o;5֯vY}oRxV2S-0zt2Ze+W[*iV߾䀨UJwu(mPIGXU=vPF]t£t-V "lgHE=4F$I:>UTf{#K4pʻr⓼GEoF)_LӐYbQe7?Ob=5^̘(UPq'1cx/t{/EXV=T~VXح{1#gee<[4M_ }u(I݇ R<\ţ%ݢ_勫VoRV 3ލU*>UTY6^\g Ŷ*Wg}˺;zٗh n]I2 )˯ 4=ަjf$ߊ ?wߋ(;g>XRQ[ΧB Ӥ+QOeSꛪJ(]^WCㆪ^Jq5ڔ.Qf@/N2WMʿL5Mx㽓{dϨV)@+U,~ zիu;^8΍J'76н\9G崼!95U|+$ȯP @I %I^~*P _$A~ӧqA\"֢E 6gggMMM X"77700+D~U ϧ PhJLU%ZZZ|/r?.D~U V&آoX,f+;;[U%Rz[_ fW(4b{.G~UP@X,3+.ᯤo?@«I_مKndF_ߡͯ7/]tȑ3fxzz\J ʮEXeSgѳWE!P"8֧=ٶ?_Y :t{w)eXZʕ VN@OP\srrv?nˎS, ais3ժlSeɖ(;ݻQtz CCUvɗ%z*&6N$|]]ݺjI|3/`0?YK( \v~_ŒW+SSo:( 5))1<,wN666o޻{Gگ_ƍ Bk<䚝}ةU۹s[nז`"@%qANE!_꒕u̬=NHL  *RًQQUT07ONIy_]KO*.}nb +Sﯨn [mذ#1!^[GWKS맯^m}ݺuק*P^E"%k7=ޭ{qc;:0m"0{BOWWfWdQ6\\z=Lя+I+6IrHI< K:rDTte7jUҥDEФ[~m;w9`dhXJ^=pmq^ /9w>2*̬yӟ5i\R>lCB]݄B} s7tEF%g7 J;ɳYs̱jT}"CtttlZ;~[ZZ#,^\bÖ7DZ.Yo'OlӦ ׅ|)C n|Y>w_#nZq>ࡃ]u?zzujs5#"#WJ/h*SyPp/mmkV+:6)9^DOϗ\<^yKˤBTqG\WW7<<+S giiiUT?II4::mW>z عJW%F%g7 //AInia^C}*Ilݔ8(ϯ,r #FtmѢEΎѱ\K5޽קo2We?آ}7l =}Ô'Ԭh?[hA[w0i ʕ}q@PP)ggݝ&:77HIMYSG[ DEJ+g ^w'p%_E5<"4ZJfREgr%oLO~U?8(Z̯,qvɓ'6mrtF>Wz]xnj1F>7ލ4IXͷ999]~}bttTvHKK,3=t߻ta}Oxt!/;>/Fkr@H_ᅣD>~jP]ףe']fV dIw*ehh][:_-.>? PAPWG瓹Sɡً-FIw99:|ƓD_zTG%J Ppծ}}v܉F8H%9w?}DسF[hʽ7ݰiS%դʑ|c.K$ڳItrQثy;vؽ^|gNS@{]ThREgr%o~7˕?^ *RvSjpftt4200261YlQ7o޵kׁnqQb/^Q0v"(w_.+=##0M;_[x}P꾽\=ɳ˥CBþx6w? +NB>9r\]\GhXXph(LiOgG5\R(Yݹ^}:Pғ<(]`޼IHLԠUS"D5kP~  I_GBCe'A@`ХdP/~.3a)z~h9|˧>*ݑw(*_t@ҍ[6'iRҡ}_HשU#p ߯QIF\FLn٢t߆ ٲmǜ Le.M@( Vыkdhx[#QL),Ut6**Wfnd\rޡN11<%o7qP< 433͚?u#Gz}嚵FD٢]+ggo3g2}ƍ(0~&Fiio߼xͻ֮\O=K[%H?nFMMLծōr3JFa{;;[nՑ`=XWWuhKkkz|o`ԙ_)M J1VZ;yڴ]oXljjzk7O1mNvNffoX[>v2.6zϸCGN>ϝ:UR%s k I q6N9gϤSFn:ʯlH-_"IBʲ^sssYgnҤڵk'N?p[ڻ'&FŤ&'YZ];ѣG6ky߾}Ԕ}CwORs~Ib%eMvfrrr()S:ujawէt|AhRb|dDHVVѦMǍ ''ǽ155e]`ٽ= 3r7sw*J)q18J. K:::B* +g7n=GL'\q%STDHDxxtT: ?7oզϞˮZ0l!܂D^U];&|8|c%S^ !2|>_zZSRRƍ`߯0^NǙTYYGW/--52<,4얛GRnݼv[hRRKV(-3/E%Rߘ{&@a(ʓ"Y+{/\[Bب fzum:_jeʛ[X$%DxS5kT;q?}wM'EQ, m6n+wJ"ٳӧOuC}>gwE)okcc斐xWƝ9qlf&&溺q߿y0z;||sn޺s^vS.S,|{ #fלWƘYK]KMOJ2w^=|əzq{.P<-4@߰F~]fZh}X500XrUB ۷o_BվSPLT~MLL=zNj蛬^QkJz&n^lhU-[wrrlJ!(, 8˗EX===J . oddDϸ7L90} VغkQ)OwwԌ ә+w.]Bu33Vv{t_Q5(z;J=mYK---iunY!Y_^ݨ=*T/pw;qғm-,,D)Aq888I^S,̬~#ޝCk|=rȺ0:UhmnϙKJtq2߸va{zzS **C;K^i,ڲn7Ldffn߾}Eo>hg}Դ='.9XikkWX߳gOk ͚Qr՗+'Hʯ<zٱcGHKP(d^@uϯ l%W@WwBi"lNNX,f]$s/ERȯ<[aK]{_&޵*|Mj?o!dP\(_VVmΝ8V[X,@. eZ ݺs7 0?ż/^}n5$6Kn Tͥ#lmlt@Q ڹ2̜i붐P{;>={thזpv9ڷ;vYd)Դaƌӓ9{>ZU]vȲ;k˨-ܽYl\Nm۴Y_ٷ H}Sp \.J'/XgCZuHѭmՙׯ^1sΟjۺ5<|d׫aj\SSScoo's-lXuy :uhe SW~3Azsgϲ|cǐ_Ixxĕk=ݪ#]z-<"UP/Azۻa޽vݷA_Oʍ>GYZZ׮o۱B O{6KV_iw(]nIp8O޴s^_ _F=u뎝M5Y(֬Ql477wΜMKO[!:::u\2hC).=~4$4tm?ͭRؑ#Բ;ڣn]V];r'.*,≮g.lmـd' ?Uk׽z:))J"1$4oQm:tJU`ԓ_ܻ/e:r񓧋w;|hsUk-OW.Ylnװ'D[ظe+%`eee\) {۱](i3g͙9 gD{ں׈ %W1ͯߒC5~hs33ol^JMMbˎ*bܕG +T~Vi4)9)蕫*P|nD~o k[~C]FP~{ָظҥ=gLƓtܸyˡ#GSRS7l8i.'RRSڟ[&Q|ݳ[WAg.}JX995W1u2k Zds|~=\֥2i^l^w͚mV]D"%N=K[.}&O;vYV]|Z#S 8g7 O=27l[ixꌙwyV%@huAٳK,ڕiRt@XjU@BBWjլ ʯ1}xtH/^yҌ[ܺ}ge&MU:}a`[re455it=v100dl޽(\V{>={|TXq----M:i9Op#-qGןžǏ/]Ǐ-d6n޼zْʩIRiwdڿ ھK76zU˖XZZcrUyK[[Y$q}&P~Ue/T!6 >q%$/cTj·tHS6ŋ۵}CV^KдIܓg.;А G:`!Ќɡvݻ|тR..\j+Uӿpr7qFry:(sJ&}rvT|+u \%]&rItttl޶S##/d]jbxܕJ{岕^%%%Kסd!K*̛,wQQQ**>قK^;WhOeXM'[7[4k:mZz%'x$gee9w~hވȮpily6-[:9:r-l3D"Q޽(6jP>UMYQ9YfՐ .;lF? |7uϺ6-, MW!B )@vv6J[uo ~nbjb͛۶K+.:Κ3w8G 6/;۶i=oYӧnu!;p07{R.ʷSJQF _b%Wռ٢gNJ .eҼ-=c: _Fozyh`ٿ}\=9~?Zl޺mԈaTRX=p Θ=g`;[]{M8^I9jБֹfP>ߧ(9r>%W6|1Wh#T^|IUKKK hIYCㆵkVY OJ gޥ3&9;92݋¯g0@zKK}=xGgdhfNhXZX|Ѐ_,Zܡ[7>߽s;w奄L_yYӟ_QDnWOԿ׎ݺӖ֝;T`**~jPu?T@P^$ʦ6/Z={{;ʵyVuV Cry n*-q,/ k9rMsuIʩ111\ Ňk) /S(%]C>e߆ ܹ,ۛ-{ݳTZurS&Ӄ'NcU_&;g=dʕmE{P8mDzQ=9vEdybBBBnn7̓\nm];wcKϰWT~ո8Wپ i+d:{~ P$ > z .$=&鏽644-+(.YڿoQhe5,)TjG46660..ˡ,]HoGFE֩US$}~JN:F]&=w[{ tvvߠyfVD\z׋ ]>D٢41TN?`ύZ`cm=Y%(ԙ_MJK,a>O<]fׯ?ʹ?>}t~ݿĉ\Ipp)q@u=u(R|WsrryJ?PxݻwE=o߾~A߽{.Az9 \>?o:DrhVV bbb虒+-P$J}ԥW^jl~vlHr*W[ \$}}l '+XԼߔ\zS ,rͨ/^lذ!/߯._T}@W,-L-_9_go999YYY\i?ARx=sD\\ܭ[LLLWڒ')9 LM\]>x\+",gBo'}tRT?1}*p%6*_>,^ѣG۴i#9%Ǖ/nrĉu777???OO3fff2g)ZR%5ɻk^?/^[[[Zx}Ȁ^l|_ݥUV2aWfx\Ɠ'OVQx( 6^91)9WkfjZ'YY<-.誩ighݲ]yP2ijjV( ( Z 5<(;ٚ~L9vX֭M &f,.eMN8Qv )n+^7O !)&.>:&|ڴi)ajj,kYzyy  T^Az6lڪgreij#373 I)tw14л}04 Սw3icΞEpuW1u t[6[ZZ{qCÿ-^g({awwoJSg̤;{riC%ٳ#%+J9Ȉblʯh ʴ.=== ƺ Vk)nd(I;:::.>f洩ڿk'۰t&M7Wre#{/_;yʥ.y6gh ,**We^ΉSW,Ydei*tCf;J4IR&!Z(QeŶZm-\6l }/\/))'i&Xsam;uFU&@ޞ ;::FEE)/We^HW@PxLOUox}|qᕥX-o;UL бvƌs=}R)ӼXYgP~_;vN_u ߕHX,K RRp̈́ eʭh -5ׯ[h].r$n\{7-NGjUmP(6i"=h޽M+WAW+̯j %I1ʯM[9wTo^1ʯڴU'GǍkWs? As)z_uutn߽[F 6zm]],@zk?׽ӥS?FE"цM/]JÍk@@kox2ԡ=4~޷ԙiiuk>ědbjҫ[7,M=~:mee<}\NmnνW/ϻKv׷WOkVb*W}u}颿]e!P_]Fv#|{ԓ_555;ww?{.:P 7KsfniaAÔ/g'˯^nj|а*䙳3Ma3W-M؄D+KqFeXQ5im箋=}$ʔ666l.&& Ӏt늈{(7eYӧܳg݆üըVw'W@оM݋uo嘛GDD89:pXX!W 4]VVE2n3Mw[lԵwPLݺtG6XnϘQ4w=Wި|F畯PϿ6Z.Yro;[Н{N4wv4]b0_г{ 656ߣ[ʻv:x--:=|Oc ppptttBBk!oO͘B^5@~-WjjP(2{>oiifggS!7leeG5:qBjը^EfRVVֲN=G-5I`yZ^YstU*wԉfa Uٿ[8դUoپ#*:qIA!7m,]snܼБ))64GWWkǐ_ CppGzz:}<]Ơ_;:8$=00PI~54486m/aZ[ixꌙ#yfQ57o-\Mm|7ݳ[W\~wJ s{5zkW.7739ܽ׭140kվ}0DGGѵ6ܽw._5}DVNj*_T?Rv\~1'O^t1'$q}& w2ԮNs-[4 8K6sv^ݻ\vɔe7:YhVFٯ?+kaHHH<?xt*am_'6b>֯[JJ\!_{{{6 Z4kJ:::pweSYxe\ް𶝺pP/`llʒ:k]vMjԠX,fMMLL>4Κ9n[6sJ$$ Db4jPuW~3~ڕ{ kapdhhȺ/Xo:+הÇO8QUɓk``  P8Ԗ_bqVVVTTW///PEVWWWSSX(֦Y>Ul TIT&D"J4JBFFFrr2BiiiW\7o^- mS[~̤Jڵ355IÇk׾xb֭oݺO?]vqƗ.]jԨQhhӧO˕+G*Tx ĸҳ#SJ_iTNɘnzz:%fhkkkʻ,GyXMMͷonݺFGGM6ѳ/=]VS<LL-[,EU*gNJJ mud#_«^:eM zB 1O__/j4RSSZ윬ܤtC\?-1)'$%j 544j֬gϞ- MlRy NN"m \~nNn%h&ViYi9q|_[[Ӥ\]]4haZ=v-[,W⠠kz62Ե652wM-MVbM83slq8+7Df&iY"A@\ khi&eBCC7nH5''G_O!==-::ŋ#PH~UV==)Y i;ﮦ_+ xc>?'⬫-ںֺw("\QAQBAܸWZ[kݻZ(*802?sސ ~sO=sr$|G-:|&;#'xz<=CޞGI RRgΜyΝe˖M2%;;6B6* W.{Ei| +; ''͵ Z5WF&Ʀ"q^Aű~]YY>p %_w k׮5h ))w} Sq"Ph+k.111?+/7yPˆgp9 r }/>k? Ez,qP};N7ߡN1%K_<޽{>|prrz6N*W==? <#N^Z9㙴hKfyyݪqlɰf~g#c!Io],K8{tx0<}488X ԯ_k&Mrss [UV+/ b /Çuo/7miq.<&{}1աzQA^nn~ƭ~˙}lqm֩S''''((H(v!>> ާN:u6N*WHK*E߾l`mB/S} m'?{_G'Nu%ӔGI$_~i޼yDDDTzLMMiS'V+c>P rʍ?n˯[Q /Oψ#Woע#1X(11ROUfӧyF$.O {6ND(o۱.b\ 1O>C];w<ܹv6gܼm;mVwsM_zU~E֪YSnlO=[f7"QMaޚWB Ɍ9JHQD ?==w䰡rpLƶuPԭKg4z*R}AAAxTӧie{Ss`ʖRᐨ0'8(a˖4 gNrEĭ W=>kꌀ|E>},Mz'(lTPF GV~eUO, eh7<ﶩuևOnݺ4`m(~gO>-rHuk̗GDﻉݼukD{{;oLIrҶ-T=e ޅzbܚX;[vOoŮ%+ & 8d-zkRnP6r&ʆSg$ ^(M[޺}{5qŚ+W޾ s,Jؼoh*Ӏ)۵~`񫞖S ]reSzk+;v.]%~UUxV\zyP|077Wq ׯ+.Y0í?Omܔl]u""jT^E=2tJjZZXaÆ[=$#33,2$ڵjjd`ʎ.wV^=C#Νcan_e&aQыe ݻݺvKqSS6F@GΑ.zDsfS9<:F =7T~m\rS $\%Vߐq<%@O·ysMM\|POUΝ;-[կ_‚^>ۏ?jD4zwܱ500Pa)%''Ws ˝>3(%5Fu~~E2f/E /Os}G,;'":&0dg ZtYBf[a~S?jaF1K90eG; kPZ߱~\Q wlؤyӦ®;93rezڵb KqSS1v qP ǎEo`4]ʞ*Hq?Jt>͛7TH{(/<]fḌ4>6+c,D,zYW"x\ |ƦgO]HiԎ;ԩC@.RƉhJڵ>|?P*''L&&&T###o>,x>>۶m{,S#}?~f͚BBB̙ջ 7׏;V?^)GXXX0KŋW(Q#+/ޣۦM:|ڵ\~ׯ_7h --j^|_RWի?|Fϟ}5jӆ J$ bx^222f͚QSv S:/:;t 4-t:?<" Q ,Ǥk*=mGYJ?]ܷo߬[nM46KQ0I͛7666Q l2''.ubooO26߾}Kif_7^vmݺu)jD4in(Ӊ~NݽYKP\ރWytV򫾾>=|ccc)\~ӧŋ۷mֻwgϞ]x* i_J̽yyy=:tP6m_ޯ_ٙ׭{M0A' {J[_)Yݻwڵ_|@  YbE֭ATTTtt~ԩe˖1\97@522b0uRnիu {7ڷoOGټy3بQ+h+()fee7齞L;}^|I5_|y@@ׯrE1& 6\fMzz:ҭu)utV+Xٻw8::R_xΝ;]\\kժEĄ=ܙ3g1"!!lzԩyQrK$ @>}ʼ^M]\e^[[(RM5!ʝ'OH?˞⬫mppDQlcƌYv-5sרQ,YMJJ 5fނySX\uEOccGz*?? )ZZZ֫W+ݻfAAyrrr6nH }ǎKPZ]@S3???j֩SիWSxٳK(jDX~r<y[ .ںnݺ߿ϖ$jjjjbbB閉k)2PwxՓH$']jWG¨wڷqƉpWʗL6mzI#j)ңG2(UңB077")%;zJI_)2I&\5:]Æ Tf~ *%WJ-%RW::W?Pi#-,,(:;; B&A~th)?Pi2Qdsͬe_C{@W+q)h~?+,2:%5̱{,PAUqS[,@UکG/՗HlГ}m S* ggwRidUکG'$.]:O\F dUXXgSs9[7Ȉi7f޼}˼׋M[޹H,nӧLD"Ѷ]g#x߾{wCBgϬܭKRN^qVԊY6&|O>r{˗۰yѣ~w/6*ֆw,]>am߼1޷K̷'%yD$q-5|n$WJu 6T={9~9q'O>~̒7...jpvmۙdnn>aܘaUV~Ks\B/Ed-[>kpY!&&99y15kPY0gD"vFd̪۷bJ~xEujfݣVNEʎ]TCnn.:Ʈ[?l{Rs l)[_=V=(<.\,j.#||a)q K /1T3Brrf*ߺeKzz!8S(c%ɯ}Hx{ї~ o6o-}Çїo߮-}}Z* t +WuZ=/^IIM> es[_p+XVC,H{:kkt\hiZ\2:@ ^{YW5!3 ܒ7m"%e~} :}gҋjroF' x6mΘ6Ą$ɁÇvy_ޝ)l޺UzkWb}ۗɳOeϛ%5O4鯇wzu?5s yPGoիZ5k tbN,?WX Qֳ~WdZ!:{vÚ\w .ӳ'8txжmZo\6,]&cvv=\]]O<5>_?df 8ecٽl7pw_w433rҞaQރ;fM܆QT9d۷޸u? p4:wݺsg Q?j\qs /̝p҃{vt +afLvBJ0T * VS….nݾɯۓv1vvFb {zo_"iiєyِiǮj>Ɣ٬Fjnn>gh={ͯ'ZllNGm[d*=ڷs)YOGay PeZ>~))fJjjGYzÇbj^+;⋔O]ןyydhFjZ}a3̲8nh`l:sFߙW___vҜ +@aȯZ씖2##ƚ6fd|trmCqfTHjL'Oe͜5lղE~~AK*Ҙ3Ǐ2(ѹPAifOG(T)ȯZףkk7lI2 (̯ѣGP?ҥKrr5} K,eI3mԩSG#}?pvv10`y<.TVZ.黍iy ʀk۶m5ճB.\`˙"2\Y!!!=44)04IB=J2|~X Ph1WI.jp Epn߾ScrLLLj׮Jߛ+sj۶mۍS֦֯qwRcu6}s-T>wy%144,T9yyy>B&MJ[eH?nѢQy*/ڵkȯ= XSwi1k:J >>_C (_KpMX* .A~P9 w:o[,_7mlmlZl0Ҳ|PbJ{*}O:<*zEDdE=r**>$0AML߶c';׮Į>y =Եs'ɓ ,_/rȏ' 6Le˗CG:w{ׯGMNNۯoC\7<|$+;Gp`H^[YY9`.](RB-r߲6(Op-xWyMDLLؚ3wHG*I/_3rԃ:}f[b~-כ<}{.Ϟ?t ;ׯ323̙T?t8&"Ņ3xfPv$O:|H${ ܗ+p@ ufNNl⦫+SvssKOOgʶ66=wO1u 1#cbWwim܆|!!ax mZԴ><6[ԪYNgϝҩәι%`5JP璤}JJJZsX?9ta=poA=ʭڧ/=_dYP j<}qSbز%m٢yxtLҞ&& /־ P9Te(U^>éܹSѾ#tE O ThV-)xzz조<<ժU+tѿo9NZD??e5xq+c T~n740!XK̗Ŗy?LNN(((HixT2:d+YkmFF\|7&n~$9i*ϞrqcUs֭i[oo\2.>i#i׍ׯ573_&nCTe(%k`%$reݥ[9awĉrtžgΜy*mvŊ_~%ی)ڶh"::nݺLMxxxHHHhhh``lwssڵkqg̘aoo_xTZ<QsqY:S*p~ߘVuxE[` _{uFfӂ9'NFG::8P98`"kЧy;|0jը8}Sᘈ0W*=b$_@Pؙ3g:w\ eCvmll֬Y3iҤ=zԡCM6fRRҥ>i䘷o߮\rGۀuQ*qL{/^YfQ"<BW&Jyv5B4~(E A۴jE(]]]nnnEɑ-zN{5HMK3do˗/匍76jԈƑfMbŊHP6>j(2EÇTe CE>}>]3.C,Z|aΜ98Ҙlٲ766T5駟ٜ6mڻw.\m6f4fĉ֓'Of'O޽\4,--ΝƎK ؝'@Yeʖ^͡*ܽTߖ=?Ge?~|fFucr.]~WJ/^ӯ_?sswڕ/CGw…sPd*cbbjʔ)ͣӔKY={CQ|Q84WH/8zFK'$$ѣT$"GtR7nܠa(Pd:vͿʕ+)8~w 9Ct:rO(I]tٳl :\6mW@Kw͚5+y!;/3b"EOg5Gҫ3TR3V!- SN===wM?D=ewFEP#w|隸 HIٰv5"2p'w~xRs3IIif"hqG1͠ݺt^h\* &S߰a-w he}z X8wE\| Jx@)4mڴp' GN'?V.U˦Lٳg1+HK,)CX?A`Y9NZD??PjJLLLjUvm@+%%p3gtIܡCɓ's,11%+WlڴBj =/[6YO>mPPXx1EF ݺuS8n7(dffҦPTTWe#N2=*;OKQϢԪUݻ^^\C :b:5kR{5 Sxvd{UFP:yOjʥWg*vWsB}~*h"ĎE EU7ǏֳC^z;n<9?=~FOP$$R:/vD_r3K:umJ`7=Wx }}ӗl%==yҗ:PsPx#3w zu+Q&۳gE=zKÇ)91!ۣG5j$[I'Odx0e 4irAmǏpdkERJN!֮]{R~{*jժ޽:%*%]eLor*Ҩ-n'gW冤쌾曈3f+; |C?k׎~lŢU?(գ{؉~\HٱkOy}c톍̻#Xx.:Ʈ[O LͶ'%1ϞV*VZ{yH/5iҤ`fܹ͒stdˤK.s̡8NK5yH/SIAG~իxb5ӧUR۷+9@)dSpvv`ne/Lebte(R={6Gmrs^eo_O?D?0Ϟ=KSp_O4Ǐ E+:&r(Q̢Ʒof~QnT%^5ww-PVERܐi]BCCi9N0JzzĉGSOu8'ك,\,j.#||zA_N7_[w8`FPHn^Ex 05 0++ j{qb7Krd&H)2e5lc0TJv^OOs@v Y߿WXVvrm u Ϟ=:xpn]alHtTc(_>ܵ}M*;f߁o޾1Hug3gsr|ߏNgdirFFFc~YrnժOhnnykH aM=ԾIfi +@i9vl`=r(_wޓ{6zp^YGNoצی&lߵ7o2 R[)?%KWg?x?ĚJܶ}>;H$"]:0,t6y"{ e?-Xqܐ_i/_>xvmڬZj>=seFT:dHf –?O'5KKK{ l@@ٹ#W3 =|Θ:ݻwT>}lزVI>:l9UN8~xѣ(@StT4`(ִ` U둣սc5c|GR͛7666̧ڲcPVΰq7M]yv33~c} ۷oeAb;WvPss3Z_~C{1g~|ja<OStl(ִ` U6^V NtԴa mۿx񢺛SzueffqVsuYto/-YbTigg4*sC\C i ?Q쁜WDJI3MiT8 \lŚ8@_F~F_|nldԘޠ/}Ν:?}d_zuehYP.yyy<u=}*@L} 8ؿow߯/ۿzvn=$?]hɄqc]Hٹ{@c+%MW/^܅KV2*NGu++ϞWw4.ִ` U6c'ƌPo vρ&Mumf v瞽e7OxXY<<. }Uϛ58+;aiT}!B*Ϝ,,Cgfee1kQi 6oWʦ|ӮMS1uJH`U C˴ ~C)׀UX)WӮM뮝;x<:4;`H4uiTghttp_V__2\nnLrNF1aX tԒO`ETT٣Iщ4Wv:T(kCޔifT7S88@_e7Ñ&0嬬,{mr޾}bSE!hBd o/*REISJEΞӑKa•jN V@ȯPUך B~AR²TAȯPU TJXV* J P!.A~*ؘ!h5MLL$ 2aG::u<|^z:@^^&)W,k.kyt+T \.g߳t XJCvYTC~*5*aY W%ȯK_@ .A~] t +W%ȯK_@ .A~] t +W%ȯK_@ .A~] t +W%ȯK_@ .A~] t +W%ȯK_@ .A~] t +W%ȯK_@ .A~] t +W%ȯK_@ .A~] t v* ggw]Y$`!.A~] t +W%ȯK_@ .A~] t +2_wX\Q.֠A''^~`_NDQ7MBM#_BZZުU+ em޿?gWE;׮t@Z>|شiSSSSP͆M^D;[[]m޶}5S'M3T-'%^$)r2ȯe-Z(((P r=Sd㺵ʚbj6sIyxZ.@Z$+׃PںokTK-,̽yxWڶnS29yl{en|NpP–-o3ׯ7Hr|fXVvVcc?_^vmjp={P'Sg=_۫ׯGMNNۯo|٪5k߸)7m:v SZi{P8*Ϗ]}*w$eH$ZcYc}G2 p*l՜OJܺm"[| gO2B!p%蘣OP"šѷoR}{zRae+vg_WV/ҕ+[[Ymݱsq-rGҮ7oů_knf<"rM܆Zy6W#𝩉ɍ[Zl!y Bڵi6##.>:!3O_h!֯\2@e߭*EJE?7?~m ii>'loڲ׭g+ e=+[G5Sű\{6*](a1UW8{],C~-#]]̘:HDJr(G=HIȰO:GZBN\`oOavQV/gvpsbD1=bڲ< O>C!=wS_ONN f* 'O`QxhUv G'c#u "*k|0jը8}Xͩ`([G5;Q,(`:Ӧd gP\ȯejbbC=3UZXXrqvRq,ٳofffmekMLtWWW͍m^cFFFyyyL95-O smo]A'O.77>q3{/7GϘ 7QHjӥ?<]Ç>|d,LᡋEY G5 ,AW OSPjvmj+kpJXŅZFa˧ { ,6:ޞ·e9vđC.LMJj ~ RRRjתE/^`RVg'u+1LL]]]N=khhԶM ?Z5·<6lP?:ӻgn]EE/7"69%˂fUs鳍Ö--[GF]{ ,{O9oFFiiѫbVVVOapM١UPRO.WDD-iWDFѦ1(kܧWsX[3( =+YG5Sűۨ]npJXZvR\]". xsC)2 {Ͼ ~w^z똑#(쥯?|+׮1 իs ˝>3(%5Fu~~L}-V[ߵkr];wY٪o<<ժU+t"r91!fn 6jǏ:RvhAT3f/8/Tܩhߑ*Ơ} rcGR={VjΧc5otPzZR9Bu gPJȯebyyy\]'&pEɆichhHm>s•m S~zYrotnHyZ^[W.1ek,.qem݊}v=zefVf G%KCbv SF8W27/_ܽ'4,buLz׉_ʔf}=}<H%ڱkSs۴l9yx###jsΝ={fmc=tݺ2)ܸCPΟ;y\WÇ}VpqkbWDF%n>~h ߮MqFEU&! ErsSZCT$)]P@3—,Sy|U%mvϖm/f~(4k-K$DWy}3{;}>gg^i$=E7oZ;#sڐ;W>DJ.lll?|}=2cJV 0_Х=zpGKwT+M6+~lJy[l̻?/,ɟ1-4$T;sMp8L=~zJ;YvS?@Uע_ ΄7mXպӧ HO>,,,oBi]N~ⱔr477ۛ V+^}_CC|=ҦIJL0L"jm6[kkxtİG=p4hZĠx>d4]@U z9V'ͩdSEFЯ @Uk7ѯ_~PM+~PnrF&GWDDDTWWGFF^W p8]{Wd5@=Fȑ#V{QטEV_c2nsrFt~ЯzB@OW =_'+~ЯzB@OW =_'+~ЯR^^-G6j(wo?_'+~ЯzB@OW =_'+д˗/?~n{/1͡rh9 i~W_9ѣG{QOKKˁĽGFFʃ4BMG!Cvگ4BM& Q 7}~Zw%wo ._y0Я@,Ga_m2@͇;{]SG,h~_tT|= ѯ@m'kj6a>gpEvu:~#GG ʜ>0|P{noN|3o~r„v%_u3NMM8'gv`>^VQ7|Rۻ =ʝ;yc>'.wU=gn+ uñ/|~ђgewO\kkޕ+h]7ekERb£ l6yVL[vb{9fZ,1~ߨ3ܾsgcC7G0@oڳjM8amx{wUeС3gfEvޙ -Z8~5J=\Vm~nO>=TKyFGEe+4;DJ*,.(|:;(oH۵6n)*=tСM غ5kW/Q Vǎm(Yml,-f7~~l5~~Kؼ"kjwqSӦ%*ߎ̚9Km|e$Mү@G \fI&7)x{>KJPVMڻwYaA".g=9C[1e~~b0{FVZfVfz";Loj8oPAy$(oM%^ +оnF3g΄w~K7o_C4Lsoj5"pg(/➮O"z׀K}}}hH}jjj.Trk766*T;wSS&#U{SB^~C=Z3h]7mӳ>͉;_片g?r>W'.?fgUTVf::/,ɟ1-4$T;Ud睩Я27n|6Z1ˋs?;5m#G^-u@fnnG 2QZVZ]wt^KNڷkqVyɩãÒ"N~V\Ubv7]Z[[#S9I˵ޕ+‰ kiAh6MpAQf2.]$6%9ADlkkK2yz4XD(؇$%&u\ﰈ^[/-48oY$M]xQL{7sP /:غpBV'R<ܹs\/[:cs0aE[W:.oJLsKӯ@ԉ6]( +>MQW}D0Я@6Ga_/+4///.~{#jwm6]G8 4-,,:226!:_TQHWiQQQ_|ÇU|2[]?VFWiZܽ7~د1yp}Z'6IENDB`PKs#LG K -Pictures/10000000000000A300000075A00355DB.pngPNG  IHDRui ^IDATx{P]ƭ袤H1!$4#iPM RH= nLt%Qƈ7qQB\EèT_1yI56EJKKZK!DyDEAUUը>|c E4*`Q+ XiTJVҨF4*`Q+ XiTJVSZ ŦX5Ϊ(Ma #rY?D]nb8~R4QF2wiU)-IGI$ij)-!kF8tGoq$vX5Ϊ"iTJVҨF4*`Q+ XiTJVҨF4*pTi>_\\ ӏ GAy֬YVVVLK.555IIInݺuҥٳ ͶGDD#5jchh(;wJJJX'w+=:577å+"AsGEEEFF݄sJwtt[P2 ^:x ΦMj*"tuuAwutt8xbii骪*q ZXX !D3}ÑJwvv5Px)<8@ǽ+WTWW+**¨C&K4"7nH5+Lon) r1Y$䠨vAwŋw\4ԴuuuxpEi a8w*}}7򄿜M?aCPiU4hii !ݶƦMlذZo``7XWˉѿPi`۶miii/ CwNN,:::B|>vg4.^r]1̂F4*`Q+ XiTJVҨF4*`Q+ IH'1.MjU?E` 09qfj)yby%N5SgOq̔4ŪqV]rY 3koVSsY,VSsٖߧ+ XiTJVҨF4*`Q+ XiTJVҨFWZ]]}(} JOgbb¨Wt)**kjj"v[[[mVYYp^sJfeeB#kΨĉ[l a6EQ};::bbbӼ{onnЀԩS{JcccEE'4$ZL( :R*@A q11I/kN&E'(VZVQ*>s(.K:{41iLcӍ$]Oxi5R@ (|bOh*m1r+͉ TRA JJ )E!_]IbR(7BAiĜ>w:k )9*ZѺػw{,--y\FiVy<L(K9gDj bI >iU*|TbS=e+ 2%eXj'pn%E JϷ i\54K$2vK[Y{JZiwlŲsDlf+Ut6X8'PPy\udh]l=\|=u(9R)}~<$7wq%v-C--,>J˭D&;w]˰csB;;j^u&y^șlNRUz{uym[son-h3g:99]vQd)l`P!Ih=KKrRϟ?nZf8o|O+b00b /EtW=֡"Y 8Ef}FKsdČ~A3]HfD8(9d4stYZF!95R?(_\05oşsr v|5VTRv#.=7RJd鿫{4? ߴI\rζ# <\Ll:-bHJT$+KH|Q]s(ed|skI*>JP~2mcl;T i9NV :-gS3]ٜ|k^ KDVmWLg&%P65pҽԢgҳTQ Kf|Шj{q^Q*&)L7CxZy`RL{e'd!޲]f7t-NB_IѰv_myOERXTZ^y_n<8Q:wѱL)кPMw;lKVNH9cI|wn|2,pVJS2$OdtY- @S t7-"(A.Ʒikl6:O᤹dBOp~5O !bX)S(ʴ/V*AɨPh y[9E?XloPmŔ+FiԯQ̙{˨6m}K|R3S8X}Xj;pࠫ+m'ܜ+.XXZlZ,.,*L{Fv~Un7!KIqɣ\YYQFjzo9(i,:*+-ʊ˰Z.W' U"a'[xHڴ-.)Yf ̬&[Co |zl|XKoyo:ʢ = YV$e!/t)eѦEDL~Ot@?p&sǶ-`ð[ĬNជ.3Rfnp˞k_MFϐEV(dQAbRkĵB)O#^կ}f>*EY՘T{c2>SDJ}ALEMTۃ:(S(uYˀ7C@f}o껏 /.pO.`,--\Tjg+vl+ܻ!]\\Õ4 ͛K8R$<"'eI׋} Ž;3}pP Ƶ+ڞT(߻^&F{l:Y\W,312љԬy@ Ԫ/]8ZjЊd8{/ &Myxnά,uRC]"A64ނ4x5 gggAdeeK!`#v- ã΁ /7WTk4Zl(aRb-,(n}Duo3S ׫x3R@ܿ45͛f>i?R)3sܱͱ^g\YS;ϩ<^YP Nd!8AEaQQzUڮR]vO;͸ܸ9l{DWzL$*zhiU,  ٫ A+B"AD _-*m[0BhzE\ױW+EяzO'!Ѩ>B>o[p5Z8 { AӀsKI|Psiaț~Lh^VilJFPʍ ZQwoe;\>_PXswoI$׮] -))!gR?7w3cp$-5hcۙyVqZn鴣M} ϟy38kܢ"W1O(Ҍ4;{lEC/ 77[CBLV+-ֻuL6S;|w@g'Xvow6\-ܻ{69Y3ŵyf[7Ri^;bfbo'ćSXP,$II~%HnE 5Zg$z7Na7Coި46Hju:[E"eN虑Q)ߵkk9gOd'++K Lf5ۃCzYj%3PxՇtiF/JVɩE63gbZ(X]M/Oʥz{ŷ a`e)_X,Ww3Ú7q~NL>΍qѐP Xzbe? f6P*r'CުQoL`t<"| 7jJmf''#Gb#YɉK\qǁŐѣMhxÄgNⲰOZkkk IqGЖz{R enqcЬ♂^>Ϟ>Xzxz'2CugP1z{7;o*P`}n+IERe *!)Jl#_6 ~=S,Prtk5Xd}::#[֖ 8VnNV m$%B,,,.SA~^tZ |/3\ lwnc"Zqێl쥖ڵDBF -E +y opٙi!?v*D|ޜM >lb+@=ߋٴֲ:5Ѽ /}0Eo77+ "ؘ7AL}48Ǩכfȿ7GAw#}Ǐ;w꜐,pe%.䒒‚'OboAGOVɕތg+~UO6v*EG6fʜB^唖N!u|Zߒ  H2BliC22+seR8Js_>xԯeYYYVVL&sww奥VVVUp)}FhѺ-s,a]bgopO|]y-Z:yp\ +mfrQT|Sb-rEAqt=:TV]'E}FQj0///;;nPPPXX-Hb"ܹs y  uD*߮$V eI[{3#u9y*eh)BTg~0AA?šUa˒MQr~;ӫwg |WWbधhnnڵؗ Haim]M3X}T(6_ E|X W3!Ary|8-  PW*J* nLm̧<N: QT}Ft,(^>lZd  %=C0 d R 0_T  48] ᫮cAA*?5/rO_#AAi`8m8A<'Eu$  zTsJr{!𷲳2:(Ap>x0$u   >~츷7NjӔ,|n aoooCF۷/YDWW?:bkgc|–Nz֯ݰ'AAAQaR/-5:`?^}巍:uj>uA$̙oҤW\U#dpus;ʄݭk޼y!#Sia3[l zu_>:[JUDw܆]e˖fl2   H#Ǥ_ZjҀZ{={N22%xl4Ο_ZP}'_r>+aP "Z12 :t-Zۧ˗Q=Y|w]eF   H HV_zե9KHH8xв˶nۺkmف  G'JAxdLlh&:ѽ{_.b_.onmڴYnI֮][Çʭjum۶Xvmv"Ӧ2eѣGEDFIC; BAaA_s\>cǎu4EڀߥKxȨ3f|j7w&\`^fر7[%%%tfX{oժoØ^\FȈAlR֢X*+m*]ӏ5U)  Hm{Ν;?Q <2~?be[Us~~~G-3gЪ$"e޵K^FpZ3ZԻٙaǼJAA'((hѢE_z髯7''磏?>t0{|2.tj޽~ܹΝ36m܎*zh?oСZ555Vt!C3335}0w H`i!!nj\< i; ݸ/ 0_ 6vC2T*ݳ' zۇ CӦ#֨~AAdu AZEFFD ߫o9{7j {JZXXT)0C]]]v3y$Urb?YoFuA됆I&""V?U~AA-99 wquuNmPXXeQձ3gx|26kǎT*y'SLDcF^嗌ٹcA͛T(?`*cϢJHvB$hmǭ؇tn۷yf@>|S.!ݡCThL?ncAA?,ؼ`BB1mǴ]W?XY[ܻצ]{Z1qkUVΚ5{ѢEӧbog7dȐ_ggC^[ӼyŋSQc>2c5NMxlCAy~njF<'7UJ{n0~{{{z+-8Ä̢Cdו˗nsX",JF~5ߍF#1t\w*GjS>v715<.n͢u, RQT>TVRׁ \.<.Wˎ-R1tc>ܰz=:q!*:%-sk_(i_   HcdR@[l>pEdCQ De]Sv-¶A   HMOK//!Mhr$Ri`PSJ\~ >9#YMAI|Bde[Q   TNκժsŋje 1xénA1#  (Ww5o. ˬ!6<ꋉ!}S]   R97??Ojc@ 6\vR$~AAAOcG_ׁ /   '^r$`8ggAAA=,`MVYX 4h02޴yE|}}gΜ9|0ѣG{׮^z75i&M@s'ODLLL;uh|2:}aAAA?OԯaGV.^hݺ5Hپ}Ǽy6n5**ի#G8pMBBBgFP'Nj /޾s;883]tY;ճO>{ݿsguGAAXonnn^/=rH*Җ={>t֖>eh-V2}⋗.FDD;=z0bSJ?lG/y/_j6Dʕ+-Z<`x׮]ѽGaA!#CΝ=2v̘'NJ$C5k̙3;u[[on   HƞJm۟Ǝ- ٞjuk'+KZ$^úwf^|;}t0FFEMb̵CM>;fԨq;zH.R~ߴyO_5v2pvvv_q{us9C_Cqϛ7k޽zkbȣf='L'M65 Æ _ jh-ŋ NJu+zU֭KIN))x>rP&/!5 4rLSS1\;=ӘsP'=w;zXoCT綾h۹c.]:k ٫K/xo>+Wܼy3_aNݻ7`Uǎ;|ȑ#5%9܊ *:u?DB!U|K/OO]tiٲA1Ç\t%KtXKm9ڡ| 4Ęk'W.W[o~N;qcǀ۷nR#֠+Q#ի.Z|ĉOO3bf?j(fqʔS?`"#].\VuW.;i۶ABصt>_x8B>hҥ.,,;n57[cƍ;}ꤸӘ?  fdRqƾsSnko14c!\kڴnd#Gffem|F߼YdpvvD"}]3zif(}զUG⠁Aλ3f|:pX-˖,a G4\8e$v%;vգdݳgqqI;u2k.ѽۀ_O??  fAwKxXKm9ڡ| 4Ęk[oɧ3g|CW2Y5:vwƎ*˷d^4R7;E=Ax3>{ ;OiQ.?ʤ$B<[dkEf9E5R}]U-ҽGO_cU֡Cʫe, nݺ$$߰ٹcGHHs#uYYsg y~jTŒ͉'`Lp=9AchBo~_w(Ϝ= 7oΚ5P" RQT.KQPGM68p:vlbaCtۻڵksλz̙RtAO:dHV*njy;vxϟ_FJ ~}p.]\ٳgM$>>~gh7T*_|f;v $6ly_Λ?o߾>>&l,0e(?x믿m6KUpgm׮s(2b9.\U[%K@¯%;jӧOrժ^zKq[EA~qq9z~ɹR폍]اϋΕ;CΜ>U"`B_ rNΜ9cii9`U}׮ݗ/_߽?fv')ubn~.]^tHM6h $߿_mڼi&l,0eXbEFFƼs~ h]ް~ miݺ6ݸ~Pݻ5uZlI[ze/I۷/Z8>>><<|Ŋ#ȀQF=w}v7jkkkxƍY %y8~ċKmliK~^.S^WRz3uH[?irFzn)uiR飤DRϗ_.JHHhִ邅 ]إ   ЁCcvp=9r[= kzmgWin?G~bq_MWom??_"rC:XC6"\>}Sг`ƮZ͜ٳk#UNw#En}EC5NUV?OGz2~(00p?>sH/]! G[oo/rr;v ylYh z]1ʕ+?~РAzK X|GuK`8::ݷw̘ 1  ְ!;Snk0ظXзϟ߽gyh9s@uՌ#nݺ5fbJ݆Tq3p0_Gnn}MRK6h&?3dff׷j1>Zs.899O?apM佉?qޞ7on(||I*eoov Jw#'&%*ǭ}VY/tb1 ,׮߱_KKޛʫтPݻ#G#|БQ;vܼyJb2 2-[6O21BfdjotKa-|x|\@Q'[n=uΝ;*k۷wJJ x:tǏT*]j /aÿۡC* A ,xLDAARxf[~_^^^f 5o6=z6^~!4k bқ @;n=C5RS1Zt'ݻRܹ˗nAQ_ҷvҶ/ (ϦoF2L?pc 5%vR\$?KUPɓ'{/ Dx޽kNڱ3N#$&&M0^Of;ə={^ާOEcǎ3j;Q(111PmŻw*Cj|Ƨ9r47X$zMfxD9n6nٽkWU ~7'L5kָq7o^>JW8|o٦MH?78[<,b`5~᾽{ yͷߎ;=)  jEbja08/RTTtڵy.wW+-"yYÞXkuڷŋÆ̺2r4Y*dee:̄dSt1T]=f خ]۩S^E-3g\YiU{(P8pg^zCUr`om6Υ|#C.[~ڷdiaqu(k׬13ؼyZUN#g27ƍӺuk;;;r|r9׮]|edd=vl86}$^zR~ܹ_wY&5bĈϿjڴ1aϰ( nzRqΝ>7^W_Y51{}1cvpp;t9s޿[DE=wnرp~##_>klHDE{[jT*O>={6mZ3|85{VYꕈn;v]JXW2ײz490᭷ބOU#DAƌV_Cz^b2>yl}Ӈ=3-= kk,gCq̢Ipe_|QiuBݫّѩSqcǮ߰፧{Of-}u~{{ *gYϚ`/L~jy=>kqk' Z̓?>H`a̝;^ӗm7o>3AAA֯g&<[q[]pJ! ҐxZvC|9_7_Fۧϋ^_P1{SNB__{L87ZÞi,U[eee^^^|i@ř3u Huj9Yƣ@A*Fhu R3<=E9PT"EVX8{:$!(gJ(.Xȯ"٘E ؙ+EQTiq&EcFQ[IT5DA"<ҚXZ3T9CvvӋLۭn@(ʋXqwQC  -/BQ)E>VI(H)j Eݥ(znTdpdZKQ+,iuaGQ6:QT,EyR=z*-ו铅_P?:zuH#(KQW)K:_sMAf" 4"ZT(Ս&^6* 7SZsvuxHI@w"\-4% u:&FD.ilM@A&?HO:IQ$;HQ(ʗ|7z*IQcW{Q-ꒈYRhZ ʋHGOiv#r* IÜ\QiI6RM"ՅϮf,$O.xPT>EYs%ms"v5;N6|{ !V!FI#ibzj);VZBhbE @붕l Q~CQ?RT ufI9E5G |RmN렊5搆a=+4;IcBGIkXViMԮ`\!h2k@"Ĥ+fQPRTqwC4rM+b4Zzint;>FT=E-#!e Y  NzO"GHq8WW. FPAd+X6 iv@ JYW)j 7Zs9 M$i.We4кm%CyI'W#+]ϟ= y@ H2J$_rhTvb8GB*#ŋeA#m$ip$7bue"QخQT!FQ)*dnb?L&`3QCH&O悋(-^}M֤~HhZ(88$)rm 4hN6kk6E}Jn!4Y!k@7Gh I"M%=Ջn[IEFk#$EԯgGL&Xdfqȷ"""Ru[{cv{1 1ڤ2˩d󫤕-"M`nlƒ"]khdqYiu/UE}Gjr;A(4eoWM:bQDmAAEUcmCǓfXHm2jEܰ"դdŊ" ~ƊECm&Mb!F~C!q_#VꎬbkQϵ:oE贳… Ru[{cv{1 1ڤ2{yZ"M,uL=~2<ɉ~N HGRMQ I wv3`rՌ\#!7'3rC^tbSd4E\YV.Z >4b5᪊njyŢdu'g(V Ȑ%A椊ECm<5Ca5k 5|VDc\t64IDis^t{ZkCm7J歑#W&%EI,,,Rs]\;=ӘsmR E}EpTk@.% d#\LQHѥ÷b:Nf|Q2AJICIMdd ILQ2L-O;>m)r@ A>ȵE㢯r^7m󼛢[Q=PWjk_q(X Ec6k)yu4y4nF,CM@!q,#A2YU!eAqD-R[QWdQUdZhd>x լ QiB*_KdVU?v CՌEyf u-*gi@ē=f "-3ԍ4ٗkM 3~)M^V8y#3[BJ'zi5c,ipb|#%S:t mRKm9ڡ| 4Ęk okK&R~}|tK4g1ycт~Q_%9OC_+F8{Zn!O,{SYi~xn{ҕM"ەFBUi#Αy%dEӰ`f.!®spˇiDI>[:Cjmftcmi`UP pUIs*SDjV*MJY"liLq9mIp\X*S(C/KvYIJ*v*`߰۔Yt۔+S"_oo5?n\Q6iH sV9M+N7Rok}a<{DBsVnko14c!\kBEUY)꛱JGuaf$7&VT"k2VJE, ckaĿHP02jW'+Qy TRJ%|֠w=qj;WcѨIH"5)MXHoi+7 `3`#`Ӕ^^BTYB$+B!Rk HT' EVZ= FsÅm8˷\-_7Ui !TXM``D"9:C"Zl8 BR"#==3+g.\.W*rV֖sKKeHVRRhX.BR*%>| *+er㤴2յw?\R\Z\R+U >+ZŽy )Uq4ǝCke5O4`Ѕ_u33E84@yfj,M[Qq_S-AiWv>GM!Z*cR{PIzXU*?_FtT=B)*JTjzbU q EEE SݻP1 \ 6HR0;kR J99p).mvbWҌ8<HP*ܢ͛RSŹ\rCbؠ lf2hi.B5\n?B@˶nnn(..+q9v CVnyy6BsJKWR\:WaaG^k?AJ%\@(D ЮSBۛVRsWH=xp3ǨˇXk-+NzgsJәO.%\H"F3w@p(uC(͏ J R*)nFj&BӖSl(G$Ai<i<},(W2yUM'S|溘x"YPH$}uo6Js+ 322x\2#5 .JKYX2YH$rPhiiQA 2)p9| !(>_blei:+C"5ob)J*o܌e_9ŮNA!̓\]prUU瞞vgJeٲ-Y3 ###c8s c0`p6y:U쮒% gyn{{zjk޷ޫ >rl4xRY_=42Z+{T_^bvqu2Lz=Ea_CVy[|3qX?+Vv=![e혆CR,*zPŴefZ靼@9[TUS5LY,15 ZU: B$r>_6LGUTj&Ne J:m◮odz,/p_qU7<@W (%Z))ry|p55ZCQ)jz޲Mä%xx>g;"L!Q{vYsbb躕C4)pZ6"|!ȲkfG86[ȳAEMpظAE:a au(MƉвnJ" "bwcVvhMz\3E{0|_9RȱU$p[=1Y u5lL6oӢmnߦ8 UqQd;#+2U-H Sg's! Edb.@!@܄/\lY ͱ /2~eΞ6cږM-U@n46oWwc3Ɍ (|ekfYyL-޸rߍДSTES |rc5B5A)MiJSҔW4GNC$iXбrc^4\Yg/E5JMرoSts-k]<Hd+֜벢)m[XxW&RRi@R)^\< |xG4\j𰪪XgTA6FMKrR%U2RF#ĕc~`@$qt*G?"AL%2MQ$ Aܬ2zs1XaXc]gz !,2~w'};Rw &PPvS M)~=-Vts!,{#,B$ r`3qCĀY}nAdLHZ'}!$\NUjz^ȗrͲ1:8,y^#"+ ¤Ҳyj,ZMa uuvoI "E 8?4F iv0vB,]m2*)0*]ӕZ4#n̎DakBnlC" #lAlcvڋ?nNg)pc{II4yW`nе:PJ)u&T]Ue e\eJUTYzSKmȪoLM;z'gL; P8_wOGwwEAJhp)ˇO v[[Oy8K?s3w): S(Tx ! xĮz0\ha0D l4N$R]|hYi7)MiJS& tPs@LE 2B4M'}^w)`mJŋ׮Iض}ߑ1XyӁR|1,{`trHіe u0„Μ``Flz%-pLv$ƴ, bF{ `C~+$^ra#qB*~ N.U&p8(|Kk :|+Ж{{%霢jR2a(jƱx~QWeǻhD|ѝ;]f媕l,]s߾}C33M38CM2n2.+RE׌z]^If(/ө'-ǟUdotNUB25"^?>4 ݇~.2M3iز)\Wg훶eU{zzWl_cي6N͌̔rXO`U5=+Dc '{w,nD0>w4ɨFQH2MiJSҔ"I i;Ĉ4IJ XOJr=.7"I>K;T&x$ζ,Yrʣmy)]נhThr&;:1.U)9Z<+ ŗ,p)J~U0Fb,årY&'t!&&(Z|uYga]C3-V|2[r5.[h+3t"+HɲPa5  w2(͝4h)eZq^{.َP ϑm}T”[6_!i( zLQpC BRuf"?p׃v7i%WTUEdxNkbLvj>Lf)ۙr&ZLմ0TOi0 0~IOa e=͖D34a=Voh5Wmq&s39.ȚT̥OFde  k̂96rX/ds|L6S#kͩv3>?o -ɲLÓU83cd"WOm%RYrvC˚if*Yu[р$OR۰idLsX4 E64ű-2aMiJSҔ4-M}kq,,zeZ8*(c/C⥗;8 bovJV+e9-ҌUwx|Z)cwz#BXtY`ZZ._G'4'(Sf@Eg V^1MoIFiWmIEˎm3+X ;f IR"n# '>/cqAeT&x0bڳlE}~ྻ>v Ӽwv7Xc.\^@64őnO;A^fnUF!T)d JMYz\*q|wl!e[_ct' `~m=;cw.`չ,]qs^sB.g֪\\fd͹6kuY-ǚI&ҙ=S5y=8)dh@}"_RdZCZC|ӜҲ7a* v63Y{X-a=7Zf{a]eͶM6dB&ga(˙vtXfn$y!%`6KwL&A4y@|˲6@0EwaV2yصpۮҴ[Xggo8gɂ\9}tq] %3E]D4)MiJS^Ҥߗ9Y$.a=:p5i9>_u뿧`YWfKwu8$k#EҴG}]rkomcJW޸+{vΧ 7:*1|D2U_?{Ok CP`K;ratrTx*蓽^BSlZf#ښwufq\m2n2ɤ T*{(eM0'8O8$ZzUS{ΞKI'L7*Ct1`/{\%\1/! t9܆A cK$\1{R3-DO>?L6oiYz֒s[51:"bh)Vc>nӻk³7] |IDtM-q(;QȭYo~Ǟ܀qeSP*'DJ`*92R)#IN Ӄ=ZLdnpL&'r DLh=7]b!R ah#0uz]ahm \MT0C7 8Xr4Z/ K]}rSz{"np͛5XJ:,ô8V*Ud 4|0ălwhQ.- |.u&_1 GժoG !@)pJ=}>OHXx& p (Gy䡝#G =ȧ͟w|ݚ"?erՉqhݧZ[(ރ#(rQoh[Յێ޳gqȳX|2~:+xMx1G@~_p׍Xf>*\ʆ\2g 0b23H ú[>G9f "?wzL:GQ,M fc 6 i KX5"#Ú=S=\3ܔ4)Miʋ$M} ga"q87)ɾI7mb-fiUU[":Z<\ҢSBIyֱEZ7+)-yoPaY,qƠj؝,fQn{fRe!ۂCȈcy?@ { 񲟃N6Q|C\<4{|אД4)MiI/FC̼ hO-Q5ڈdF,['W)D?US|뽺xڱY_uag$.9wmR24VK9 0m)䋂N"yW.Y$J\._dݨ|$l}~˩sѨ2pnu٩JOGLdN5b11=uYi@ ֱMMU;RT/2d-/W5c.poFŀBx=x$,[CD8`z#d)a7$nëaDQE@˞^pʸSXl`k=%ޯ}g\ݺպvsPYӵX4oJ~FtP,/xѺrIo6g2y{e:1 p&~ui_5k0 c]@ReE]nWg8;m(8ʐ]O?*w.E6 Xalv.Bxo{!U9mBe`3z#&}?L /d{R0z6şfjKk+,ο }{mzۻ;[cѰ$ 8=26}]i>xzFR"P0)ӴɃ醺36[XIm=92<]ʝL>/LYC<[ v ‘JchAw pnT6+7~KQ x^1W*Uǵ42>SНid{"Ik2'.+qE^fScMiJSҔ,/ݿ&! lo F ,Mހ }r஝T*Oh ÑX)["{)E*F_L,Hwo˲őD p錌өeIJ*߶e/s?fh"jM2NJ%Xd鶶jP]C2ItVǶ >oW,[X}dǫ3P#RofE? 5fg0 b,exh\JM5_VY&avR;bLT3\[E.l)vF/?gО4]u,)UӍ=vh7#IUz(ͭ<#}7 ןBtwy)}N,۩bVZ"/h]r&UU度rqRsbYQl讗n4+FDžÏLe0dkVf?v`݇<v_VIׇSkr1B!cAj ^" 5B?GO\5b!\Iu@S/씶>ûa;>:#A+޶lA XA9 +c_-=y+r*C =X2wz~GӌjNU*O A9Wkv%KdgyMSlM$Iu @*MA$ $XΎ (UEA `H`eTrxnƔ SUQ70z=RG2uƑ%žRXxprA`PQt5IѸCCF9+;CY9ӦLd"!2q S4lħܔ4)Mi_R џajʨ㴢`!ggsODAI(࡬ -qQX t\J>.N6oΥR\ A`O{ؖ+iO`e6MN׷o;u? YpyðWUtMx8Q )YcޡI&q4a{W귾w,reYk Cq891>C[vH!JM/yEg9Cf@%b(kԾ?MPi}SXʶM")W4w"l 5W z[m63kEpLbIP|c幀O mmRkܗOZ"LOPqZ<d9<5HciJQ+(zDep%D;CNUS-˨TJRQkL-QmG( PMZOicѼE BH5k\xb1g2 H!MA[c3&8x#iwUnǠH"X!{kєeMyI/Y,9ə|:U"()8T4j:VDakho4"om8]L"gJCъx]Zb@ 5rД,Kϔi4x}~{EDm1+XX(w K׭ 7޼vm'=o'Te\ԫE&^\V,dsŢ7 @]70:XX:UՐuF\SX=UE j@PG'ei|E }|vZPm yY#Lz6?sgM9UJ-$6ڢڅg}^ic[xg+gfzx{3z֢ל< MONtu:52ܾyL&5fCo/D%ɋV{ߊ+ݲ>p9_km?A6Q-0l)D2!'xnK> ,I"j G/[%ӎJ)˦^L:P)5E5BDzhh`"&H~YKBYfÞ)jq]۶e kQ .JISG s8%]K S :ҝt@dK]xkj)zO*ų=JYuGrݰFQJZ&=GG~r[b V+}} ?R8{u ccc˗/wbSlwO}zf&W:95կ~+<h ?O{]wqwɮ}xϰR~hMY[ O[n[oQ_[ߚ׾zStѧ=XiWh}Zi,_ )b&XaQam6hozu#x:kZad1CccbYKf3D>`fژt`Tj~hN`аOZVUŮI%g xUSt'&'2VokFCQȢX_4Z{U} ;2h+,sR9fAt^Fl1zцV+e ZB XE.|6D=@f"{~oyog?v~<xILLt'K`GH88-Uצ?>i۾L5X uÐ 0 V jw.`NE婑{ c%Ò ZD#;[szw>{r{GOĈ 褉Gr 310ѐX|4Sc`Y[" ء4TW,@9Q7 bI"}dL,l ;U0>NB@C(41ˆj!#8؝-nVM6EZ2Ssm0(*[߼m9v1|Sth&_咯V0 "p-5\꧿'OxYTɨ+AyY.8q.;uX[l&_}aϚu񩩉PZ$YvAaYC[\2Kۚ/ۀgƎ;?O[FG{oѭ~ںebٹs筷o~ǿ|#y/nۼeW+y?+W޽ڏ|Dx7g } ~C|;7y?񏿾X,}9~>u~??G]/KoO,~{4WYE H$*Ӓ,2 ]rxYc60P4Y(OTI#Y,1QX[e%NDaU 3C.Y g&NXW%q\UzpQJRDCF7s,L=;Xx|R]Q&+ n4wo.-Zե䘩 .<+ Rהrf#d9*m0Uz,*uw4^R38ƪ?X=EX+.]uYm4=x#ΜBF.%<$xmҐ OCO~.?{;}K8INX0&I}]A3L) ULđ{˅W .-;Q)gcP hލ|O^ُS$;.K'6+.(]}̿~L=I~_ډt[o+_}a#cZ=px޽GR`$; $'ܙ<2cK׌ɏMe|+.~_DG1scsgxl4OgR&cӦmDxH4izTOU-hQL5&W)rX.Э`8Ĉ 6fbäp鐶 frrYha,Dž#[p4)OixlH(/R3cK6Y26A:r $p#\45oAlBwh*D~M ߁ӥ+64-MgG,i3L#-x06Lt M`,m1$PUAAAS QjUDSELmw5kοԠk޽{WX.Z<>O[nߟd:8/lSO=_^#׿wMT*˞Ɛr~߼4}泟~~v~{-"~]_Τ5"*j_}}z 7`]Ah_G?o;"x{zWY7+'5tvasO(~J'H~_li!?;PeX5DZY0ĸO $%ypOPU#sՙ^(;nXabXp~Y2$f0FCRvEX0 ф"+|ZFL(R ˴~o,)t%,O=9ҙnYx>s|&RYɊ\XY 弼wi'u1eGy)ۤK5=]p<-Y?mY B-XXUUM%cPSjUMDj?ik_ e & >u˽Ϩx9Gӣ`4ސGP4rxW5;7W5\]+zd>5"a{R4RtTQ4Tȅ|Pm_@޽;kP`&W.ϟlt0$1ѧ:x lkm,S`UK3|7f_> MԵJт>7+̧ތ{.8{пxl>m'?}S7mlyG83߿oxébЇ[׷OO'Oۮ~d2 N"' ?eΝXW۷ yuo?혙Iutfd8zx_W_Mop:௠~۸p8|=wϞptUr9 jSwo+K~_TiDWH"klbGt%qi%4IdM vQ|.GgsХ"q<\ڴ i)` ѰBg! /i1TaūV.y)@1{fow2Z=\f J@e^hMsrnbY#дYH^YV+,&en*? ݬ0RgMi/÷ݲ7{<4ȍ.n<k{ ZRkãfgRuK1Pl:3ؘ:$2Ö$qkʺso,xh ^*lau6>G}1 (֒ż@<Pu<*;HrCD}6d eL¦ML$fkuOaíf$؀ .YPbYZL|Mh58 iHкᑄܢIV_ 63-a@\DȖ(+x$)e1*K1Aq=jZۊ"Q1j8hR q;YH״z]g(ӯm#p Ʋ` d|jj$#!4(S\@Aw"%'HCgܪXՊ39[!h.D>l-s #3e딍7臷<|#?-]裏>'.BX˔$ +⮻gN>}׼a:r7/xNX7[o8J6X袋::?|ׯ?__{V`J/| _y׻]TiB^~{¹t6/:D|e#6HMBB:df(f@UUHrN`-Xth]sz:y_31nz$_GhBŰ*VfU{rVTmm]:)t0=V4;3穩i&A]˱gձbEt\}pٚ#/9 >kru33rKsaW-S۶!A8LG%btyY-%˻?7_RJֵ_n?O W/oegz^O}#j+IT$ONz㫗/[瑞k$P5X4ꈒyc\r.%;V.~Op Vy 0tM gY&S+RRȥYch}m^-% r];:M\i; )c7kWu /K՗jGO&nQVz-wH@(NO?0i):|j)Fܿe& .Z=-k~Mx86S`2qwڿook1%!0*'?=xm>ƻ>!l&!6nt~ Yje˖m_#gٶtooT["qӾ\v>3)4+b|'nƟ۶o;Ax{/34iol/#}uǼ&(|9KC(p/VLb K2&v<멛tRt]D58PHPLs 2贍|]mB#AhH#֭,  ښuE.A# Dζ7+KmyP9H~FV@Sd,acپwb䖭uU%1-+5UKF@x/\{nQ+8z)V[6,Nfr4^ y},ֿ*A/K$F)Ch馫7LL-2^ ,tsN4z˳2<0ԡZ0y:o:w :{XAq '9n/:ZćFӰ-{bk Rݘ[zg\-e Hx{MaҐwrwa0I ; 7x0ʩc/%_܏ɼz^#?'rD=Av{"oR*V}}L"afsmA{P΄lŏ`fŸ BdVnbۃ|_TWL(Q@,-x&Y1&Zw֦? K#L:m 2<+q LîegY -Y+kWB-"T ,*Y4i?A$- !v %tH@FQpCy3Kl4ڟ0d])|2iDpc>#M6q LьGdX hPIִD49$JӯG+55+26TLf udN (KvYK-p+(ւ}죍#k׮7ӟM7]pQk׮9\~_7,_7xwN---9xp>|_g>K:_߿g:8?>߈gϞpW3W{߻k_M7}+8iK,NfΤg௬~|3,c_Wz;o/{z{i;oO//~{H 4]$$$Y ;bЖ\KvG~4Y؅ 烃ㅴf|ܺȹ_qNcT1V|> ,01  r:4;#ElkQc=5rΙ^2 T E'X>Wr?.M/E`+*zO,. ŀ3̜9szyn}g3 "YL=ey )#Umօf25lVW_,0]6^T(?kH[n_q[$ -{#6w=k+D4;/<}YNZ_ZRoc++i4Q,ƴdوPϝl'hTc1ȳe\^/pT%MYML8c[J$xn2vv`7U߷Oy̎ű{';=}97ryWXnMeUű6bBՊ}!⺕ЎDFr +ӿgJ8sz@矹^=}٭WMtfSE̟̲"LYrgQ)a1%K5r\ݫBr8xD=R/vvs&4 y˻ˍ?ƗtgoѺձl5r4E!O.˺?I*6HM=mȣE@,6נ}/tfS`(PH˵ Ӣւ!i!֋ ab)uR& RYBsT炃JgRW.EV", ᇣ5&M{>+f2XJl ouIOe2kӓN7bfKI1Jmyݪ}d5w|X:DUlbek- v0.VELv'5oV#]-I.ª*MLn>&&(+t+Სi -B<rѩ׮QC%t5c"nN̳|K^|Z8~/|ы |zˢ3-wid痖ml fi?9m`&r鶚 fTL)d*6ZFgۀ Tp-0/"7k?YrpP-p-GF [沾luw|gxk^ᶥ  7{Z*e.<{9ɝGt&qJ);w.qܶlj~}+]*E֍ʋw /8{[9n.'W~ÇNF#t&ht_-Eb1Hޛ-zM^\8/^G./q3}HZ@젏-,Gb0Lw4uYq"!:Hpj?zd~Y<%diqᑿM7<ȏ0y111NXM7!^~?OpWnhKߛ CɆ-*=v/ RPģVmǬizy,KY72AXl WV}^Zu^lD蟣-%Bx?S8%ӲK~pd?:}Z-f Zƽd۵>R@Dy]~Z2zchĄd;#[4D!!)ej$֕"U1Aȅv,4IPi6N+m|aFYX7> 'o̗޷l5NAWzͷbϕ+Ťw- Nm{biS,dxoX3 #&h7W}>x^7^+X]*iBrhۈ[R+IӅ^A6,(-GNSb qJ絣Jch/d9(ZYNz࿁ӭh򉒩"&b)d|4V7(y7:3!P\UnѢ8҆Ek#ۙe^GN)xM!Cau;U bt^|&򉕝3jN59ᇜwZ-NYĊqk:!xVm7^m|OyWVu#w{Ҧ1"?ߞwba 72{M:pv'wP*YZ\;oC'h-W3c]g_~$`3d7-tpoҷJufe(Cϝ<0E_Rj{Í_89w|=vuFcqn"_藫7|TXȽx,CSYNbȑYjeRAeUfiLtij^[Y𫫣23ֆ WƣںiWwیקd+nu[vk|#/B;ylbG $C\Vjz9SNtPV0'gI,`S2K&, h~neD_]^銬?dGK[+` yf 4Z}Tbu͏(/AYW RГ!#.p #AWß8fHfG[- m||== %hd;~'7vWFWGy}z7=x[U5g=.`-|Y;%ZcS4c*I91=m}__1÷KϞj?sZrfnOy;?7dmo335eՌOgAs^gWvkg9좪YgI80Wʼ{ֳc66fi)>T9c_RG o]O&2fٝԡtjCT8G2Ҵ\> ӅIɲƍ?sw߾w{.Wr)SE"^k]'ѳZCYbK %1^>>:n?~ou.z^NOf2,k(i&e&k!WUޘ h xi:?ΎB:C\$[[#rEmzʤ<v'}Ks %*>]1U(`rq48̓B΍o ):2IQL{;t' ۩')ݱh6DM`nĕy4"I;hL2dI@YCpC,5`&p1DadRq? dJl*kJ(;Fp7e< ,iCfq,!# ^0Zd:-YQڼtDS$^C ҦxxC,B(z,$Oֈ΂5 R{UTɴ3,bMF9Rp'(LB H3K葎M;6dk ¶ Ϊ JSd4r7']Ԍٽ]"wrCn4mOXekCWѝS5[<&) TS]O8i(ccZ0PDAP}d&J 2EsͦuXm:&UDR3t؀ShVQ'V.G}! >1Ck!F/` 6Qfj{"X!&^QqI5^pwd 2k&5=B_G4yVʦ&DF,Mtmݮ`ŽJA0斲vSH /&0TMT[(a= BGxQEpXZwrşW}3~"/xZ_;ٰJWbdl3AS^ZMM Y4hdܤyCqe4j&4zQmv&i3ȲѨ(ccio|rlTnvv? Q P'Wl?]#ankj}^]_YcUp!܋Pzu4ƻn7D( t+gpݷ:yl]-/Ӝѫ$8ܨrQʥ 2TQ4^<8\qTZ&‰R:_˪qR+^Jv_|C=g7<_m@c|W:J*pP+Y*HOL׹iQo&<[LLYVy6`yY. >|ޱT񺷉Gc6hXU%߹gb8O|UETgm' !_SkK>Nmͮfl&G"+he1M(N\,l_ 'gz߾ġ.=!/bSч_:%Wa^n h$L2ˡ/][=fq,*qXmKt b̀s5 'lӜ!34 ån#DpWMy6*XANe.+$#\O,+ۅ,r#f< z9jnUվRJ$3E<.i%I@Wvf/dKiK2Np.W߻Bdžɠ$ mƠ"&L F5[e^l:e5RZ tl36w_<_G4ddpK #ɜ$PK H ad"O!XqWPeĐ =NƥT3U4EkfIv!ES y@j˨(JBRHdh7]lG4M T=]`QU[OĘƐjǓi@DYXUD1ѐP l9͘2&B6^Ѭ<154*c!Bh sG\?ek%[]!B8<]uҪ\fT yVTwi*Fl|C72S5;?5;']әJ4iFLisԘN c%FKv':'$F*);o_\qIE<^lXPr^.W] +lcѳ ,^&XwtH!RN"ÅvEc3 *x M٦M>{?g~Kp+QLJ[G'=3 .ЀYܠ3teWݽ}[#, /ǎϳ˷~x|> MZ5TRڍ5{xqFA "'8o^g<13PRE/rU@>&2P{""M>'oKmbYQEX_fi?x[E_fO FZ0ePE1R 9DDQ԰p$)MD.-*yDꇯ*I(J9۝}UBb^v}?_ߝg%eXazo[f90HTI,U&Nlk[KsڧMF#ΖN ߶NMBˋa97[lb:XG11=嚴blX.s' %vnS~~ׯLa.x{WL?0tK3SjKC$l gAsnl4"ZWVIaPJ+@6!K m9c"A=D-AO&-v; Qm'D񭺹4J"-1V<0&=1$hHH7Rz7CHG{;\l\F.d +t283 Y)]D6  n߭50~woOJ=v<_)}>GDN9 4<:xLGF&N7k= ,tohzVώ -#k Y u<:aȥbR/M߲eC"MP hɈek]vHqIL a'd-8n"MUq(W٪E#ijABNON$FkFI" Ed`( /+1Ա} =Ot sɑ\'(UL.̦Q'aY"~)}|3=so;n< Oel| _UFe3Y k y ]}|-E(C:iUYv0BJʱmؤSXUfUIW;r0k_+{ۤ53Ս::!iwDG(^"]6LT̓FLWO|YDӯH A=Cr 7J:Uټ)]_+>1@͸笵{ս]o>ُDnj^qUU!4WGqi$t3pQ[:[#"Fur/c),k# si@{pdłJBЌ:ci% M@8˜i:Hۄ pW:X'n rݹ-GڟLgAsͰ+̊?("N2x6D5AГ 4@Nh]5[c /9=X2>0sZcCIC.Xѹ&NeT"AC`T3n>W>B0~T NI\QYBQxUZ' I=Y[mok4@1|dVZ ux!&7ƽXZ,)ym5xCo6\i5}7&X(W\ȘTN쀥"{(V[["qMșLM-)+TWd:)TZdUN&(Ru1R#*Ex&jG"NJR: Z"* CNrN`,Ј1" ]eILA"cf$!eRxDq+y6 4* DueH. +P7Ųh!w-zBơ^+~LpWE0CFnnDĜeGEɜJL㝮VⓟtËe@#)YnK7ծ82V86,8˽i9hrBb"wvzs'Ĕ͠ aC<%r֟ND<Z.c~*&;g4V3hg>o{so< K oA\yv&ʼnȧ6cN,5yyqkla-Ɖtׄƒ&,%9=|'X]56csFuLN>xm۱|W.nhwm |H8;ӿ羛G͟g\(SUBh)>knS7qǡ|':B y,eF"5t/ w`M|'ħ1tEBEcl6,nYY]U9 #@2kk_Vu`31RP|V?pt[[zү5{%on'&E+ZB [FȽ%2XPete|(r&i'i4>g,bDTdM#]5dS<[>I찢M A2j'\EegݯO/^ oy[_Y9 InvG.!iR aEra@InI$hnCy;4;L# #~f\YH;،Á/Tk1&4u䶫_k g]w1v寨>%[5bFK965!&OLD9FHAy1q2)`p;/)] {7Yh!4!,%L8Sx-̦pAae&+)O<ԡ!$}AтX^|CzV7u[݄(I`1HxFX-bՀ ʪBĂx2a,<mиMh+[E5B9-$6$*zȚ JSޑrS7McB!{i;b.I<Nz-*MN5!D] \_B4'R ^]P:=7I#I`D #N/&ޘr_Gl:4TN)&sed1XȖES G(aҊظA"aJjr@VX5Fh96"H H]NYom,۽ۊU49i6!K#=FVeN*IHsDt픢a$: H!f ~)hOТ3&&+?v>U5?;?oFC#+x'zH[\3*W2 G\}V"mSFa1̅>ϲt}]>n\'>UUu=]uiLN/ G71 W7F(wO~OμQ4A3}{{;%"/4lC6zoÑ{]tct(ۤVX_HMAJSߤulkMN2<ƎJ՜rfȾhڤxq69{F_211mu2p"+rg,dyBE0 jK""uL^MR0A;>ڹ_}{y(`~h"á z7U]vt[Dc烮zsulmM koӾJd%V#Zc>JhqD֩Kpb7O~i/Оqݎ̦z# c`aa| ULjPܕ>:(Sx@S9P3m;ZW2BWIwx:i[Ȭ62C%MY=?ʷJB[8@p?2AoZef~8^GȎBuhL2=PEuO8LqBD*[Ui-2D.o:x-0G*yW話1do5eۄT>S j8Qd92̅ Y= 1h(p_nl'HJkQ^F!D`JkE଎DC2Iz^5Bc%N7ʦBSqe c`A9H>[$Aيٻ'a5c0͖''Yq F;4J*rrAno 3$hIi׿k>^ڲW AKKJA,"b]_6D# EtjCdL'х!{d#gg0{ݤmY5b(&-tկ'UAb 뷆Js+[AsҮKXߒ @Eai, g6[. Ȯ[!9YɰG5EzpB[q'E3t I\B H*8[(tޱnӶDA2:^DAqtm22'P-6EHoP$tdL64P :WbX/%GUԻQE"29OXH@;35r ې%fA26U|,p(zc8~5C(8(gtm &!c fN4[()<* y`W* xSB#h)l$<P&M o[ckloPkzc-vdDhK%߷'10I#{fbOG{IEd;Ҧ2N˱Jn4l{!e;bCih z/AtQ>ծp,HӪԀ=!+A>ԮD Td6@ƒw ҡlpnVMQ7CS]^u`4DUH$E_"z4&]\CjB)"D L 24Id+f`Rg2h䰂xo!tK&ڊ xF,D%ڇ$7.DNV{yůO??mXCFF´Kv` .k!9E164)ѩ1(/BPքqNn*ƘUɼSL;d} z/\:x'VJnW\2Aە.(~!lS(CW&i!%%%jLd0Ukj&NE)SU"yY\GY&f|6VY;xEV7ίyˉI°u?$ hNhDC_3*y}tF(Q7#-'/6Qi $| dWKSx+F*r [JQ((K\+|Sza#1 B߆Jo,r*!6up[#qMۮƴ0<D]={0 `rm6t8Zl+>aZ5m5o(;Dn5G>tF<`4+ G:;cB1UjnSTҙ,f'`>|fq-D<+ɾr2adΔO?S@3d6̖۱U9* ZU aR`6EbhQ 6*J`I*qJ"}v?TO*$5d\geD4ڽtKbd Z@14A@Ϟ@K!^ ohwuKP,2E_D+C([qfEފK|iQi%2[e)ԡ*8v@٤YM6c?[>Kw: N,6sFXPN&+rSnR 倉t-GpJ):TGp q+L/ "po/t[4]&0/|Y{r_?{K7dBxe}MWu!6 I e 넡Un\KNW6 4qHvrePv{ٹ24DFG0H}ǎݵWW5{cO_Xי{OO{þ:X*[`G;&Wt1kܳ=N)t ][B̑ɥo?4 >tM7;,B~vt7WgH 4^Mӓy~Dqdը'ƫۙ$V0DDKrK.66 qG-5~31ld ;MeeÁTb+,uXP&rA6qSpVU[lѦ7J(l JhBQbJE/Wy>UBkr3OzyHuHT>GL⽤w%Q  | $&o*1ՔͱnN7Uw 5ϽoQU ^s8XiS1^6U#U!>jZQ]C%RͱNaMۛYe;CGn˾7cS]<@B֠9A V6fh*cpM4k9x6X p&z¬2QaP;Y{J.֊ o%l[Pب ɵvS{ڇg) 0]ɢc$l z黈hj#k4`ay!<DdP.PM :ISRц #mB,Y f$hba| M{Z* #<ΰNGOPb(56^@^I詄=l;gm;a9 [,/(zUԅ֡r;8M(Lφ|OEҨLW11e]275x( ]DkuYz01wi(|m GYQ$dJ GF א7lE N|*`4T@DZ .Jj&m4(u$VD1#d*t]RΡQUWSUqx (j6D^T-ķPDZ˽Td;;LK ƵN-"kM̯fKz#V<9WAъW'":#_U^ k'7|baHDY׼8K_@}\,ߙ-_w[:IV 7lNnO $Z= F_^^;rFvgo'M$J taS'K"ֺƖ JioSbCA'1g+ >slsshP7Gh6l;uDjj4|Yfu&Ѧ8mhS 6\#!"VyF+ e9[blWI 5.tü! eAhna!s eBk`úp[^ԯ>O~Y@J2p`D`J i.hI!憸3d^K|'6 C" Xh7Xޠ.N>\ H̵qY4>{ۓy{[tgi(AG\A! wCx섛K{*%6k]@ȟ fȝ1vtBN. ࠲]Ѕls. u,l4871w!#bl;~8ʐ;<HU(JFmCQO,sn8Q8z } #]m& ũHluu^ھCF$nj= [5C#s>DmP9y mg\ ȏBr# kƃSfKy>8_BRPsD/8-C&L0Ce IReUtvd,΂*OIi0r}UIs?D_==奇7\sͽs׮]q_ݻwɩ/ypz#N,O}jz+z˭}5:tkΧ?t]v>£/_^?!t7ᛯ깹9ϝ;w>O}_߾GzҾxeC=/to|ӛ?0;;KE^?{OWnhQ7Ժ}(= MFOj&,i6xm؞f,򜍆fc@\4t o +2O,51jҢԞbl6O#(ŒTLmwi\PtStJDiBkҟ-lP+H.jG?,3]D:V%QP^~dQҚ١-Ef H t.XnkeYAԸ5֐*uQJM 2+سH'+C 7l; J5d#&QW&,BRD HV_YJū{~_Ŀy5%" =2xRg7Bjc M+2ċhvJ(C)Ys4(uX'ID[H'ܡ~ %lin=|csvY_G!bݛQfu.I2koI~wQQdt5zTvlJMO# C/_M=F;imč'DX1l?#CBV:V1UZn!lQ2mDQX!+ d ¹!ZHN 6c__s~76æ3B(JR i1nCr5^! ;tnu&h#S.!A*Ȅl]^!*sShNRsS~'>KJY#0pJ MLSW㚑  iYHW چGE&2β (.U"4suC!;m0ijs;U=>zknz!HS)SDӧbAATВP{""X"R"-@zrw{ 7!~n 7Ι3gf]K+Jj. R\h fiRQBgk1{RLZsKތԳ2X- a仢1lixЫ!:l6*+%pkEBA+U۵L9^JLg$҄$a o$Ʀ-QK7A˦({Cqoq9He Ӄ 3M*תc ZjƦDiRGey%DˋZMjlS) *Jt[*~blKYC|/Yn?_{[99wS?wAƾQGs߿~kqwNo?0}f_R?H]mm_T*o}1 .q|}џ'x/n_xq6 fcv VM/W󛾋U޴hm`QS! )Yvj i|ۄ()RGPueHc ӣC5gJJʄ9 L]@ 9b3f|Ѧ5\O޻|2"hDFCl I=|jr,pFmSDa(gE/ߌqHitι F-H pBY!܊G1q=8 ߯}RFHՠ(ߥ)\O1UT,eR0\ 146f#A6Jj(8|r{<]OH'Tq&"ʵj2xsv9ڌL(ޤ5]$͸qfQFf`{(hZ+B ;s3_L:+S:}7K8$=CٯPt]~MD%0V]𙤯gsDG#T?vN)ZZcq RMp ]q"Oz^DEpx 2<4r\0Wme>괚5*P+{Z/]zzhe՚յZjr_`wn~ \EH#(Tz'SJFbw?ö́,$gS~ej Xg&{FŠ"+DYΤsRh{u66=hMZJ0Ba)H 8PFhPuwg" |ާTK=BW=o|KMP*t:`CVx\h1l.W76T2t2m0E dh5:3;82d4k{޽=?xن<ɵ8<1\>|8h\}ɉj¡C]2h&&zeҎp)F\X`r6@f}g/^ū>iEXJb\,kW኱O!@)@:R\&bEZ_Iθ˙&r)ק,EEѶ}C22MRH]@I6T{za!p]iZiTШOMp:}Et!8-ֶ0 ,{"NK>¨wyԇ3^ I}?/3Kހ%-YBWxc7aPÖJllX,;]r@+gQHӕfABBҥ"}z Fz<ȗ|o}w{9}GcЇO ;{=è{<W\y1q9#eqw}K~3)L1mzWǟy{~ӟn/yCy9sgj{>D-i~;ֶ6sA5#$l53;uԳ - !iDUAFȻQqĥB6G&]||"$}CeZԓˬTv?pwEkgwԡzG7W E{Dg=:ԌZEz۲6<CnQ7bd#@aZ-7vwNR.ĵr^ +i?/Ө^lai;M+vŋ15g{yic*%) n5êwb.wwO>}VOn{` X7uLZaCzԅ2eNq@3BÖq֬v,|D+ˮIل;r o^84yը, p8)Б|,MC2U3`Z2aAhedNΡďߴg2Y=B*i-Lڛ7rҢZZ- 1WӨArttH&q B$\}^{cm+ߎ-gBjٚuE!EIS%P-f{ SSX$R.N 3/ʼn [QhOʥ[ T]~'-MӦ(UG\jlxFȌrh!)-RXQ(v>b}T"s]$poD`Admb5DbʟF#]ƣN|qHσx k$CE Q I""u\. !Y}}3>tΓW%_( #>UY,:GDWO%(U(Ȅ˙w+\eL+8B!#gro͜旋i,p\\,uvuףKuӞ.eM~rAeX%༮;;t™ㅾ 6pU3?Ytwõ&M"z*˗.Zpꕷ'sy-'T3Q"jk2Χ-KY2SQvj#2IiiQ/=cnn )?JC˫i<(u } Å:Fr>R 9<'lA4l{kE/M v{IΖ! AeB/!OP 58FԘ I# "l7C^ڳ>TC1L@ ,j 2!$׆b <=fBmk֕NmP.ߙXWoke{\~c֓g0gHBP?6 oq8 ^8;Os,ve@to\uDAFH>m_\a=89Pmpj?Sz9OL. \9͎Іp<@z9Otw!.mwFS~ aZ+KB:fTb4qOPST'g( ((8PԴ!hym1`(Qi蝐@s\  Tdn;< i ZKB:cgH6$~+ L:K% s`8m9cMɔLkBQӈ4.6#H:;'}1A:ϥBF֝L 0Y= *ii45Yr+ DqC$-"(JRPOK"ӑP4 %D533֠C ĢEȴ$lZuv5zyymix≄"_+<,ZV{{{7on(}{W\yUk׮={)ZAJ.֬Y3iҤ}.yJB]]];Jmo}kXy~K$>яAv5v /kŗ^zٹ眳K+7 .ֶA햟<~o@!ozhsgiYƶۍɭmm/CXDȌ80FMJ)^&tNnz˸)kYobC#Iky& ఇR_KGifJ` *K&NQtg >] 񽟿h_x杷Օ ,naaZ>( .3%[4ms(-4<<!W'*T RQc͈(I,]jjĐV6ZNZIM[ʯ|nrϭFC TƮ՞}:WKﹷYI#f#g9كTA&3t]8/ VUg7Q{XZ?8PXѤn:,Gڛ_|KGgM٥ TLѬ˝ce/Hkc=f#O-/>ВV#+:Lm2qȌd6E5}дem% ֣my`Z AK'לi 'eUi9U*z;dzMQf%:h&mu>R1]Yv:4[\X˧IlY(?`SMQ^8+zͬ`[G>TB(Thj2dh~k+_{mբ03N7dI?) qhJyy2]d(g`8~"W|f[*Я-_uPOɝ^;>W_r+Be #Ybn:k*T#J5A 4WS2y dfrKx&+sq.JUXKPځ(`55A_9y䚃]C[yQk@i1}tAeJaM3q&@Nz$3 XޘpZWs>zWfû¶sa$-P&&S˂[SN,&,<[QeXҦP.\ Tل *0 =gy886Km R3" *\rL=>C0!%n @3u]- b3q"8K4[d ' ҝBJL02'$~Hؤ2#k +%k' Xb*aY =ں9SZdw R࠱5Sl}TWMp25/Ap=wϚ5?3B;6~Usgs1iNK\O}_^H?Sӽw򗿢Rj}ϟ;JN>$GΝ7L`)Oj.`NfDg~%-?vG,Z̄ 7卥L7Ļ׭[㏯ߝtJv;͍m;~uَͶvY :ŒL1OFh$m(A#MTGW>K8QHnPЃ,0EY,RyP/|/.ᷙK=~ljϲ*iGqHQkGFgއ!8G S  elQXMAKY,ʠ`3N«H$B҂&K \cu]Z”Zil̻y,/E <8%oKrk ).ZǓOFF%#3si&2.-zj(NB|a6 Z6϶Ql7Fjus5ۑ_xASPp4GS3&/i\{|XaNvf>2{UkTia3#^7 ק'8Z\Ca"!N{zHJ=hfk% bY_FfΚ^ {.X']׳DZy!'w=R}ѣI'({d es);uttn`ۮ"=mJgW?c?-m,5öv2&{QgoԬz͚Ӛ2bW`:3O4#9@JAsr> JN y@8bkDIz  Q c8Gcߧ*N)]ŦR.E 22#  $tH)M;I;½.:n=")קrրIl#Le&<{3P;_tjVֆi^\ չ1 9gCXbvAs2=puYE~JLa8# \`gWlF:A.6` NGGRs Y!𛅱ڌ &9S)4x˔J.F}pžiڧ6PXW#8;EJ;t6vcj`p~^^h!gm:tB3s$ϴs֖'Әkzؕ θDشf9 ]حP,^-t+CoANS@W|U½CZS9&Xnzþ~PWQ[}I:WnJn\RFt4- 1-9k-F4McmѬ9s`d1ą/@T1kY܌%0kvmN՚{[>ԕ+3b;C*iJ8łlItgt|V;h [^j4j.MV(Ʒ[W]u|vZ;?6J.v7w~ͽ7yk>OOak(ƙ9s׿C<Zt)#z؟i;xnƻT#P.uoף^$|n.?~[vEc+VX[){͚5o;nmҤI;x!_, !aO3'Õ ڵ'-$U62b؜JXjΞO<h%YHY:Qt#[:ʘ⥊W\{bHeE+[Fʁ?zj}267`zzقhz҅b׌mR2Jnh8Wr 9hYB XNh?FhЌ4MhF( °a`/ui)xi-4yJAx; E0|id V ?7W/_Axg?o4*qvrvL$8.6U*i$tM0 i}b(_n,d9if㑦YKp-ǃuReFq_yց_>@:4A=p;"jʬބnqV ,M]` Ӳ`92){ɰSCgH !0vA>᤽d.1m$Lmd`3nsg( ަKF,a|HxUqU<[[M&]=)aiϮV4HVR[L;2NWAʉtT0M?]mx66-QӨwС2 mTktpN/ǜ<Θ1}9cw7MaѿZj=mZd]OF{)j f5k< c݄y 7@`K-?q]wx +-[.@|~wjJͨIkdds=©< W[]Ԗ/_OD=Ox+ߎQ;?80?3.o]r2'/~e޻x?AMv뷺m<Ony\m]f[zT1!ʇS5aՌWTO RS8$%eMLJ,K@A("ksUXjsjӧ4sngz|5E_|CQ뻅3vS$ F1a.{uH ^ج5VX|uR#{L[PHu+VZ|QX5yubS׵ML8eA+|C+jj"Z:dE`Z3JPvLR(Q7D+hc:͖6sQ ױjG~Se3PTvE39(V@WdCrJZ!|BX{e+DGSEoaa#D|ު5Fh)}֢+/87l^T:3`+ C!sR ALařJ-'J(tgα'R)qDJNknV *(_s~iW=dG@| ˦7 TwA>ttHP1ӱi>  fkq_8Msia@wS(iCJ9J*Q 9Sܷ;chrS r`n=##iflU {)tım^Z<ԱMgL?FvBϜUvx!⬱#3Zr%ϡblL=>K{B8;jV0{3aRscӏ̢zW|Db7=II_}8-uL#b}&B@.,ꈀp6+' g[!+5@Squ$}K.$/KXczvmp3ükBKDU,?AaRqwÞTVb?^SV6\]CȘCo-A{߮dF6kf+^k AHcLZoڴ4F|wy&|w7"LLƱ5/aDp+Pvn/yhpyλ?M7>_G>nݺ#SMF 6Pr媙3gboՃM ڼ:CG;Kz_ W13bXծ򊍕~߇z?~3mz׹sQ4o-/w׾f9Sҋ9n7盺q{RrkO=~h~;gG?jM;昷~[xxĉp_7n6?Qv-q]o]sA٦qdcQ,9찒a[*U45a@[ Z.bXB\6AT.ARN>Ŵ ׆Qp@l]> \'WIM_aYgLLtz^{د}v;|ɭFVU` R*Hk:x➕%(W bM$:CK0j[ + U*4]ʂ-I$ޡ!b/pZƦmrl]?{ڞ?q94UuvLqL]gl;ffh,$iqLrSjEVx(c'Wᛩt)l֬.7Cp`){VFE+)DXh0lL< %Y,.ӆP-2Oqn2}x)ܓ&sMt-+/[n@jKuPd7E nw⤒Ӟ fJ0 /o ]o6i(g_0cjK1f%+l[ů}ϵk+~?OCa`np ck_ /GH Kd)ϘnB:!fT@񯴜(F` рl!̆ 9QF~8qK I>&ߕ Gh!KbOۜkK=o"N.]lcsjv|ZAeƞL1%*Zl ѳɽփ}/+ 0uaX4;2ӹG})z&>KNSX2ls$+]3*8W3kCfSv/% \ ٿ1kg>r>|^hSs,,-\\ f'"d̠eS66ڙuCt H"$$ Oc$B+j…e>) P{o%#,e[>$Nsv-6SmD;U4+HXl oOX.Fw*q0. (o87rǀ 2VL8$ ,F 6M d*sgV1av,[X S(A^7Mh:Z$R 0EV,ƿWU3ukH 6H狦 ݠiE!K9X"UfՍ#_k)NZM-/n{ѭ+_wBXߎ>Z!j(r B̏}cguE|sϝ3}o]~/~+c(V* vvϽ馛6o-jus=ziӦ.XPۤ2FGcn#>ABm}"} ޵}?uW[Eo_{1چT% X]y@?q-h w7TP(MU'/,;$bP,FdY7ɳ6FsZk'9զ-]F4 3T.ۧhL]PP)/̞.T|GeU.h+Vr<_uen:;s2lKISK[7|ݏλM_ȒS'F"?\ k|ֿlB(/?=w.YtG,U- M3q;˖լek 5%Gfbϧ@ҽV^z4q61R4xJtSӡa[FsB6_}mo2aka`pWZ^} pQ~:>rSBC}ttT~`M&$L& o&jRt McTYҺo(YTlw|͂_s 9 %vRd=l0r--:ծixEqM-YY\K5:CЖy DOGtr͙v^{Yyݸń=UhQ{'uCL]'|}&R0GI,tg+|!,OŴmք6 r; % ۩Slp9,_&w=]t\$t=r(ilg 'qUW3go@(¢/4)7(~3dm^Bo„iUz9y߄oFmZs(@^veϮXyIH9Z6AV\B-dγ($Ɖt\iHL22/޶/IUl$}qLq?)wpoj+͞\KYL#ʚR&N:R?ROJ)u؈QNMX7@DQ>4(5 ) Jp4^Ȓ0L!Sꌅs>y߭.X]Q HcvZ(n6cS02ql=FGljYikUJW7Gt\5|t`X+jM5?e^&[ 4|[inViZƎ6E e$z;z”C{sȕ*H-]ǁ6k;nÁ씂\iJ Gz Ul] FD|4R7Wyue;QˉI3_Z\N]%F0P[-\MYLgܶS*FSJYg^XmI 4=es.~\FccjZX HSBzP˘~ `ab1H 7Z%j@I%sG=|n̤`&(NeMMgI 2. 7ӀRg-րT>ogc"Шcb v,DEܖNB* clky뺟~"\43Qd wup )b%p+h0 ʹdMi_F9JږNH,E99&F{˘ݼeǡf Ia3iq[Q3IQ+hwXYz"aM^ñVU[\BH(FP Cj[.v yi4̥Ĵd&`!H-lIͰsU#'HHqs 6a/8Ӵ'&LĮVJ,?-stqA7GiJUC°+֢ǼN+YDY&Z֔xbnY<6aJT rJrGy߽xgJ:d34qs9lwH;= >(6CyG ?ٶ}qԙ6l9(~1ǼM|gW?} 7y}s'0o}8أўz}yϻr +ߎٽE߅zrOOOR-yOO:蠃(̿{9׼෾}n/CD&^rD* ?@[ORTRuCBӅO$e[Z?Kgx}=F'KZgGܘ (QH;'vGazeՋFӴĴfP5 BkR. KuYj&롲n(A7p@:Xzhkw={ynUKV _Ǿ箻n֥Pm5e8V[UX۶::QH տ\_[x4uOpG 6P2EѹXzWӿc.&&Es jZt|50R]g4N!ZtbEQhtb-ea DS.um)fGF;*)XyC 7Ek3JiTж?2mB Q2/ (Sn r~NDb<&ct|f P$EkVl+8K ~2n$,i*QH$fW+hY:K-K1vs=皎g-.[H)U A@?g??cmv<.n{|36>z=g\Ovw~x]w!~;8+2ۭ_fSv:.t;JW,6NZVU +!XWW5HEH4椢fv(uc(UM,+&SQ*'}_iggifPZIA iH%Fu19&pG0Wk' -ɇgrvMpS=ڃ>4 O-YiSxϭXE͑ʺ4t"햊96||oyL'ٝV+Z[4W .jILuw-y8C$LB6V)`2!U $v꘎Y \ COr"p% xr h(8nȉ7մ`VãnQ岟S Ʀ kZ5-k[9c-kcTl1oy~Ů$g Րa" kŔQŠP!K;; =a;-V]osnd~lѳ͝gPg+V<@žO7vKDy՚JTt!:H17ؐIQTiN h+ aD%ArC$*1"pҮRN,p[MWx a 6*͑BP+c%,Q(-ՋfeX׈dKؒLcHg @hg9VasڨUnY u !^_ vεV= XWs~_-vP`26lRI6YW"EBtmHN` 8PDz=¶Rƕ+sBpW-ߘ 9x:WFp&3N#m,3 ~[_b7Q ^O(M8HVL޴wd{imA3ERf@+ߣY<@mgwm@.^R,D/ǖ2LePig; P["S MZ<5dҚicOq`΂R5ڙզDFa KB/ޣYwfVe#GXshnԲZխ A4feF&[Y!  Y~@?6c!dԲ[N}jtlM '|/MjJ zP ./u'WW.o1Dei \ R/gw}=k֬q]w֬o|O:{p6ОuW/>LdSO9X,R:Owo^Ɠ'O:?O;#,Ql/hm|}»oϾwRjq;h܁׼8+2ۭIA,g;&OXhDŢ7yryAϳWo5œUlc9zQ7ذ\g0aˡ%)b ]Osٲ;wN0km]l~ (K%O =/nhdf50X/Κ<;GNhx!RL ǴFzgJ)7i&J nJI =kL춡55g/۶1 fqB}X'Ql@.cѿ1}^ 3 ̌v; Y[s*=G8$!UtrO ҉Om6e %lъ 2'*i⡲C "֩"K v N.Kiũ ʎȩM/# ]շ%6 OM[R $hsX3.6J46yQ>!X&!璙.Ҷj/43׋BTz+PwN((ZVXxe٬;aE_N|l.IRe8*RkG)p$%[(1hkP,OQTa;UEJ#N4LGbY֐Al łmK~7bLOmN4lH AHC\9Rq 3}UMu^my׊aX aYլ z0 l mrd3CsM;hꪹ OW>]BpZ1 wl;w.!JKzNPyx MoSl&4NeQG~D =".Ѕ 垣1=Ȣ>`R~ 4Y?c98&xK):N,c @FVTolKAP62Th6<hRV2 1,hyro]ӫr {eukۄc?e^n6^?????CmK"Q%O $s YJ\VfDZ֮SjTxVmhx7:KR45yǮAg`l5([Ђ٬6T=n!ꙜڎZ@ۮڽ.JJBBB% *(G JE|  ^jϱ}/&@ }{.k=ǜcFWfJ^u8  &{W ]y-ֆ+K|v4:8< k8IQ BƘTmaڨе6/:]8(@_H;{GfV'A¡73 X"Wd- 3,Etlm4EDFdW|,Vӗ_3xA8Šeҝ>z7"pxDuTvKGp`Cr yВe\zؠ$ӔvAp ɳ\Bˠ8e ud_XW<'wZG`OkN_ u8A0zgܶӗ)X$MM*Kte##::UC8aV k!=xԴֆӴ,h쬭vc +d( [FSë]qw}!΃7%S+,&h},&kY=%ܫ4[(oe켹w3{?xbn2{촿섷 떷#WBәyj[_ԟK8 渕< P'657=n S jYR@O:yʍ ^Bސ-gз6Zp,nTŵŴ*9͠7&afe=tK?|Uv;W*򉝞s{wo}qW]{jẎZܳoIcWG:,%',̕~ٍJFDS2@H9/"QRg_yitla-j VFEND^$WM-0l\M=$|e…4I"(T 5mK@[}Sh }Pv.+ ˦!lG_ԾP M\ غ%3z}7^Nhu_]V"x'(zRS;[e՚A%p$;!ә{w-u&+f:k7-k8|R dGps|o#Qޏאf晦 WN .NR!WIGS$<{{g\wM CȭQh@=D*kG%?ڽ2F iP sziN64[#0ֲ/6Tnr^;X[)C+&GR^ѴL; 0gJ1t'Bf;1?`FϤ`Ʉ[\g]YƹHbeӬg;{Ƚ~z#b(١oŌ6 Z I5v&m3`Y.nW2kBK2C =7ΐ,$">ן;]vy7u(M6ndi5!Te 3#kv)lXpu>R!M@ h/JEs9 ͢ړ)S!Kef:QڼRwE8ҁ+Vc!TQFlCjȼ[4[?Chܾ3(ƿMBȘ.Z +/TgPM"4SNөY6c=WI3X/'kKNLZ՟R [%1ά,tg?FS_ߜ7~I-+u6hxJti˴KF+ET h;H[4҂Wb2h+u2M 4:DBѺSWE?_Hm+C0Ъs924-D=^ [P6`?t+Qjs*Sfi]9sد[q?zBm 2}CnC8.w ] `4ʧRhzoVF &%ӞWVjdg0<2TJf:ձx؛ד)Oi`7P>ъmb\S)Ia+zEˆe;DH謠(bk6Y°2D[nEiJF#W}JѵkDhj{mDpe3޾ox>{ӳyǜr(˴ng42Z},#]Y Q΀ңHK{K ү;BU52ۤ3 m "̈́2/ye_;E?MS$ϒ:J\@f(.1`3}pv*dqDĎi{xbf׉jǎ~]Z/3w`=RɸZ"mc+r:M!a"񻵝V|FHϑ2h5W(e@0c8ۉ l|\+~}I7uō\wiEw!T28)&3} 6{\djlJmRvq:lS6^e7_t SO=/[__ۤn[Ϡݾ?;c'vs:MۛA/fgg4ؿcnj}7!qPTaa<0eɔJqh)RW CЗ,}hZ7fUhyV%A\bf|:>S,c)l{Ҵi=q|2$V(= /)_g9rϕhm ;Lg M[i { IVAmE0벩BQ Lm*nk715TWY:#/>,h:xR 7YM!mf?ŧ&̪wž?F1Eb"!d0#̀'/SxI@x҇Ì.TwBSMm`4RJ6%X_bM!nĽ?9:1i1LkK Ӧ..Z!RcכdTc7#AӍ٭c+Lx9RA*7cz6fHmlqlcy4+RD2alęL&\Tľ)^4*Ui")Ә*1545P`md,|姟q߽^)IB+6)#|SMj~v@!0pjall u<|buꞠ0" >D"Ct =d>Gǃ_=:ΨR@ a=KnwP&mehm96f5ǷhL8xe1k*ha&8S2ra1㚓/o?9Ynnhy!P Gpa hiݸ^04n7z:i_%~L'لiVVulEojcEIUCqr)L[zTD)3OF}ix |H$Q "]%F "xu4̓"k8c,STe ǩdŚz29(>iu=;o6v \Hy1C&ZRŷ%>?;\@ .v>)TQvyx=P[Jg;6}Kl[l;T76|ux9y9n&M~)%?އp<,/*%CtpN"f\SR9EPnjҡ*Fm ;VC\5/Vtz[ryh|̰%pW(0O@7TU6(DQR1΢(vmm4>.K'?C6!Jpҡ",SUfE:M[krj;"+QUB*K\ ya%qG^cBmFCoQ}::hSEP-~S}mpN5rwtƺ"rgZ}C A_,lul`f23Wi$An0ΡB&l6t:p`QX(BxJr]J]m{aʕ3Bk(PZ gCG54~d\NF)OTҡ[5k 6$B15+,!~Fƈ|=3q((v~;Mjm9g-HyyCEkxciN5) fY3!v2jIw:k^Μ4>MrV[C>A٘- x O+=.&"iBm* Z:VS{W0D!Zq 4Pe-d٠] =cqtH! Qh4E({N2M2@6|qB3P5zP=Ե>y%) 7k;P{ԅf-Qcs?N;{wC(^6vPGJb(wVVL.(\l*wt1D ( uĪ#p\w`Y Ee4ѡ˄fOIW\uRy}hmѢL?&ޠޓЩWᅷ4I.Z"oQFm*^P-:BUVWMC&@U(ty&I  {8\3TlC(σ(ctb :->3^x6g ReXiu@u8lXNt'<86 =EN yWB<┭8V^Px18Ȑ ё%mh 3 gw}}NB-VLP|l E(ϊh0Jt]WrdgQw}#v ;OXo &5Aɷq(._՟.f:w8mj?\)8mY]tf yx3z-6EOM[Fcȯ&g='RN8S&+\1 >P|ϡE3L%caD"Xp0]Ŵ!Ðm!5ɠtB3Y( {.HÊ$*ELT6: EU]Oƶƺnе 0@ZUu֦,\ڧwY>Wwwp児,Zbd7%~(0GYz[L Y,r[c  ޘPݡP JBo)IUpq3^pڟHbC}JS2/07؋Qlb @_(UVfFp{ȁh@$`^T3qzAFTB3Bi7eҔI ,ո\fìt̶l:) C=b~u;,ؖbph i$s0 lפV/Fjn6Jwd&1澚 [rGHU>,Ssgx؀ad2wB"EkWf"m [%XM- Ee&j$cav;G}3L!+KON*P}UJST%ژF#0+ESD¢/R5h)懅蜤e-E-;Tc~Oo}6'| X* HbY$pD,doP8h-$SA(L! $G;׀.ɀ׷?)qW>n';_yS:.+fohQvEcD32р p%=L|>></t2ܺӦ6*af1ulTǎQm~c}gݔ@Fm|P#鞛*ABHˤMLTdGbg&Id)3H^i>Msz,(Ua$L4tRٶ+>oɞ%fm-3`q`h1A? 6r/ utDzV;uo۟: 'ZsRH*cslͱ9e|7f: &J1Ugg&m]>b~s?JOr|aQeU=RV"l//wBړi$Q_+5J9}n'=4i3zLO8V%%҂\:#t a}Eϥz,W`fQzEDZ|e6:uҽOfdeBbʒA(JL1jd h0kN8q?M!&HP`e(^-Pqv *d%pb6C`K~t2rف~CIU F?=|)6K I)TUZ!N4ou&|Ak06Thn S)zk ^LI羅s\cuwF(3_ |᯾z唻,nz ϙ4 0E"gƖ.M2⾭G57,UD`DƢK,6omA0tl=?7u:CHu<8ŘRY8hL!Sv42d:0+^`$4"u<駣!sJ[_Kfh?==Ϝ ʗY.6:Ϲ%L뺤m"BB"][;cFL[֗Һ)ٕD吋0_<p6 cyh-0! m煹;6ēHG j"Z:lc `k\xce͎*p@T<ﻇ/#Ľ6 ETF"c mlHg$Len4`dSӣIe1=RKFz\]$PE G 5 ii2EuuЗ}ywh?Rcsl߆~نA TkkUSWUe Vt&]R і]c.PRgՁcOmZEΩWA^mj}vd*u" &":p/K<+z:쪫֪saŁhIgL.! dC,WlT6 Qj"&h*CڇGoI[P+1ȟTQ'?k]IwF/Ef*͆w]5-VJoF$.+@..RǂFUMBIyȂV-|$/"KA :<p 1^%Es`#y>$;5Mhծd +|x㣅kKW;PfJfi͠q\{h%Ճnq_Svx:w·gm,}]_į;ﯬ9_|o'϶d"'Aw~ߟU9fgnnXן{[fQ;?/h[C4򁰑 q 4guUCN(YVi8|S&#cQ"y3:ހ >>zU\͵PB蔰vnض_zꢧfQ؈;̃Kl ףWYOs6Fq$g0֢)gY7RzT%b9%s/~{^=dJΨQ;ך%R*uuYh)DM&io6%dmxG0: MZژ,45J,EQ lꪑhV'ִ`I =ts/~N$$>*p߲^{44RKo},:3Rf(n+d/,.L46 y\'b!]e*: 碤SDct.} !㤳dm@2s J#3DW{.)+u]ol8x0%fFcԬh:I\'`2?L n8;:C:l(SkZ$c zwl0j[:PYsՔ|EHD2=u 8ͱ96q_z2@ԙ-tMk6QI.6Y*{Ӡh4L;Q5aYlp^C)rJڴZB eTFډ'Rt3sWoZ>\ ŝDC~p ;EKEx_IYQ @*xqʒ`%a9*{0E))xB76j>p$QB L$se(pQj"H!B.($[9p?|C)u[BBFN(nL:)vm:m+W9|ff&Eo8╋[ׇw.m37u*of?z;X?\]u_3^3zh^]zW ?{=dϛN\Dr׉K'/;+qc!j5 >4IH$V"h Ѣ5)-"z'sQ :ː *ZȆж4!c/)c"[V!(%V앿'/g렜QU2]UJW`Q.?BGEEtF6D=+J^ *QHBZJ z;Sҽ!J$:I.QL]{CdS3ѿWvB$$}(@ ^o:w]/̣?`& iC&YlYm S)Zo ZBu (FYcZ2++}3Ӆczr;gWl9+={?愯|l >:~/MP>/W'q;2J(0efF\!:s4*0$ĈGM)֖蟇lpm*:։>9Ҷλa,nlш}u1(sW+:'-/k՟j6*]mBlm;_T; hDM4a\o]5ee?$0ByV0A6҉D*'?o{[v..r:B4j,6ZP鰡LE-+M"Ͳ,}oU5sӭFplejB@_5܆[f{;)3頯seɷ6AaY4|>ʯ>Q {s)hzT%sS б6Fe& z$[с՞&h hEnP'iODI $ݼhӖm ]ml fG6nQD vY(,KcLn*B1gY E1IU"@[@ /#[cw-^kƽ鲝MW}͵|%`ߤX=o_\5~`vZ[8 OEG~25t(z4=x4E`slͱ96gPo59ud!踴ߌf7qݥ bZZꪙZ<4(v]xt+.Y]]bB} `mTEQ !eoj˕ڒˡ@7pjHD Hkm/"LK/rc"Œ%vʶHUF("BҜrrirA{5A嬌$vz'dc8b~cHۈ5P|&ARqiQUIQ3]dbN> _d*ecqTRm9GMI:Eu?Q ~~~xT2bʙ^Sl5̠UɑPMVno7չ*UUGP` io;\$wg{_ \]sۯ|ܗkx;OUWZ2}O ?_EO0mo;.K ҳi3Rw0Z*gEJ@|f)4q\H#DE4T4J稽4@@lö%d0!uˣj\+:Bm菧OGT26Po-.!boqˡ] CPo[2wh 7`tkBOa@¹ Pu%kL"*6C~$c#Mdb(zTk@B V\7YJ 9.C$_m66m%i3KUTjm~u ) u35;u>>s˱{?wf cCg\LTUf\jW!iiaS~41'XFAfS?PtOh.i Mcz#0- Nk]c)%PC]OK"}uudZI(a19~EATMK]E0`똞,M3m5ImތƸ2ktQ6o;fmbpgAhK^?[v"$~Hs#8MkV"pKloϿ?msl.{+^~ysЇ؛?oͱ9~㆘1juڣDwGo,PLZ1xyŔk;^ʛks[/ՃօHU=3XGNFc泜^ H>Q ꯨNJ3fPiaトhkӐxFf 7t}|'XXⱻꉪi)k)bG ;֣6= 2`ֶ$Q4):WyS-:*xQ,,} nt֐C|Ӏo-"2oFs0%ZN{f\o)~D}s-|ĉ,+3[jX>0Υ j4CgdN?ia^r`?_['˄l䴿|O*yyu+@pB~n>_  ?t { s'P*P5saКe襠xbB07*ñtDL,,/BkCff 3Eͣ{ȉ.Q8Ft;F9ξȑF;dvqU|؝r.MG-q%c<\Ds4pUL6wZpAS ְ9A]%uT^@a0..G*m E :.}?vl__V,UXsփMG-t B; B_F4vBHDf崦ç-^4T-tx.F(p\ߵeק&y ϼO%OD>)g{t! +}p1ڍ[d\t=g}l] +HO rNy+t4KU7T`s$mR05h k{*c-Q@Tok㣇a{I]moCH^Q,ΐq6hN8T,ZpW&q59mG:!%0`s= ?e0| _x˛r?m=V_& Q\ (ULRыq{?77ÄK{xzʙ}^]6TxԍOR$Z[srF.P2`E*)12)*yKHz0`t3[b"wV.˞ $(BHG@l B5|йsNh+ấ8O_Q) ʷf<ֆv#]&.MDGnuF+"NVe[pb,δh o;6Ƒ8#,X^ix$kE˴TA).:}+SLw}N?bߞOE$9Kǿ ?zbGyi;pܩkNoh3IWz.| wKiGRw=pŬO&+u׆tMȒ|2+BeX FmA/tM] iNo5XIytaTL}XzQא0u*z0 f'r :&'fFִG=7úW~5K/첧?W_}//ɛAÇ_{֧>ݻwo>3 36-;?~|IMnG>K_?? guV>s^]s5@~/xS?c2 ǣGFxӫ1/֋^Hz5QÖcO3u$5:Y$F(zCS]Nf*(bmJSZC ,E^Ϛ!t@]aL)4vl=zsIa]$yKNcl*!/-ddL!j!vBA 8SKyDѿ( XWCo%.DS Ǹ(e4$Hnki(ǢJ9;YB"eI>l$K(0Bu@tofu`gzD7^1[`[|nҶ.b0H]PשG,*hVM@tnuǞPJ~ןy`sNԇ>dz[?G?=a3>gAǞ։P~\4~ok-gk>/|ċ#~Ÿ~_7.^qOjbkTqig9h=:ǁK1D\>cjۦaQ05t,{q U>NNa&- hl8YH\r-BOoF+hu;yfE  nA 8(TɠW`\PnMtX KTc=_A AQלNA_pĥd\Ѿ1myMky?S(5&)zhN˱-i JxF D/LK>eRid!COiRk:"\3+zyLܖBh.7Phۍ>(%9zJ$-2CO"˳4J65.Hg\2y'Oc}YHdQo5E>P60"JYM'[=(u'iμ9}?ʃ|M><9/+Ƌ_G=ꑿo _ܻǟ}3>/z wq'z׿<9i¯{C78_ߠ?;AGk9N.R2uXPd}+aqd Ư2֖r.n|3aBr0I\>Qץ^޻nn0ux.S@1ꪫG0^Wd~g?/4}֯߸ ?~zsdslxs>w饗+^qyMr3 |ҏ|Y_^y'?/{xOɛtK46g\' @"|uRsHC'%,Յ+.|Pd3چv Sp> (\п6꨺jZ/˷Q$sr.WW,-/FEw߶ Z)#s <p1xq.P"ڃq,E uZaO9ؑ CK(z"ejTdTՄ__}61 p v<㴷$fse^@a_:j@ЅXi, ]_qݯl-e5'6mCe-c!E2lNb'Ys ԩWW_ٻEi P.uO]cyϣgO}/پ>go(Ũ;aCDοKM](Xl#0)ܮHzv;1tb#H K=8 2tIX%.q*a;GDmӵȯrmփoykfgbp)ϫy !o p~/MaRa o ڦnn4F[J#cD돧 PXy6졌Abi8Mg&*n9{ox) yð# w6t؛QM`&O/pe?q6jK1݊¨unT[cA>Pi}fl=Vmj"a\&oQ惕}( ˳=.YYnST!ľĢl& $ʬPrf6; \,x*Uvr?Os9lj|ayQ &;<\OQY_P-F_Vywו{_.A$ܬU pPN R &'(v]D$@!60o"1 @P_jv X(X4B⩮æxT^xQ8I$cAt9J\'>Mxp@ p i0t5 ,oG_! ۆڐ{?~[| [;7m =F=Mɢ|(A\4!Iy/%W Y{DÈ z}XU^^(!bXy.Էٱ=8A ?Ht9?Uwa; y3Nh@|/[M`Na7 v T #TBRIB7z3_(Mgu) Fp>Z6aqTjX x6kO͇|_q0rs_#?z׻aUwos?w}?7o<}?䟼5i%izz"~۷ď'> / O/Eo677O8?3͞o3j!b(Xr{kyDY/9%R @L8Hs{^yi\܍dϯ[$R+cd;'ǭnN],c{F{́|jba1Deo~C!Gts:Xp^S&N85 8s zPyDI!/h;kr%BFꄠP u~JIiiqq}1Sj:RFL7o"H4JHW∩&u8d@%]%RĈ5 5VS\_=YkDZ@>*'-5Q{ML%-Ak?X> y{V @( qycE#:Vv%/r4G%].jva3Іuia9 k [TQ"c ,*b࡛)a "K{=iޚOHuQU0>gjį󃷿k7ӬfYFʈ3f!Mhcp/0FђF_4x4(X(a( > Y9˻xrK>07i eU2AyrmYlX=~S5(:sNSjeufroe°Ŵ5LyqtMHV]T )LQRb?!?0^]=6bj6Ļ3lj[!a NH<Т/_%_+[вZq7nD@1&ܤNlT1O-iNQN=?[}V<>',ra'!ͯ @d34J⮏w;o__[J켹|qUfQșT:^J{K$Fqy<^u vZ˰L\kTe٬ M?yy'Jcmfk%@(HI10h(Qhsk޲`|ry%SLjcY6A #ҷ0Sngfo=cg1Z%`zfBWVWi@j1( ʪNeQ $66-L~nU*bH7]|,¢K`ʗޙ/-*d$Y!fX23*;d',}b@mr20pNMQfwyv}_uSpЧ$efՂ,i*Zٵ $C8!߇Ӆ<Wݵ^w{k-Q8%J{ƲR/ⶈhqsUmիqxc"]!rݚO~_I1ĊA2np}h. fY7}&ń9ݾCd Gbf)NWei떇QB$ wf{Ң9`LR* H#a UNUsc믵0F-rTcDM JȶcoBc,0δu}fkjnh"3m*GȧTI˦&")[ ,_*˽]{C!t6}/ Hxf04V" #a1!> ;_=xAKeEp%= 7젒vwgYJ/ Y]z7'qiM\TR(idjjgc9硏`D gG.\ZTՙ,NW!N̦pCG(FlLЁ` $ U˜ &q'O\UVNq)[0064 aBiHM80A6Vp1ʽXWO i*B,~=Mꅂ-iĴlԱL8,$. 6q q7rP ҹ_;?3 ÆǀB8ut^ 1Ƒc\j8YfȗX yoAE[WE Xd%gM"nնι6`k:E )Lccg)jK󓐦Q1.[1J(pYǮ E=VX\AF OhIZ{XQ ¶2VNuäش}uKH#mSl (fdhY\*puebRj+|4Fi}ãw/TpC&8>uw_{iM)ɮ =,4|Ut`->n p)?v|5@fEQ$AXơKjTi h~~;=|4G>0]ʸKFGz= N2.H[簨V$ఆ* `5 ,dAȍmS?BR8IFi<آSGWBgA(1 i&,/wyXT|l"Hm땕a\#GW".VZÅhlVe`X5EVl/"*g:$GR1:'4n3׆ƼÐx{Jn\ ƍ;ezGyO:z-Xc}efz癗Oݸ7FkɃg]8{]Y^)o+:Ս Տջ滿R$y+מ~muV;U$1\Qn<7-֊xŭ !L !&=]=P&$Gn~;~[/Gp!N@!}%gئ |sA/E΄I6OMODɯ!  %r k`*J\@$k uVH]/FJ.r5pL^m&mttb;F95;}],p 3rD{ҳ*{ҦýPv?CNC>*-jkW/(A}ȜHfvKKt̘XxdȽƎ%r}lSQf b(QSѨ?J5 =}&NCtT:Nh?q4@ @~g#"8FX%+@ ޤ~<Y+׿أ|nb@"$.,:l= {Eԫ"qc,d¬4zL \MZNq(tU_e2< oC.a܋X,\Zp'wW ^'`:24,3gR2vɇ-Ń0QEC.=Po>k^}YBjQFABLԥk!-NP|2+gQw.{>nS}^.&\tf2&q¸v& Cl:om,XZ#LK@#=J>{K5#3X{G\c{ioR?HݘtInꖅa8`{Y$n"G?-Y@,YUTmm(<%y/̠[Fkg\b1[; {=„š(B^<)EϽI;G{,ηҮ A50v,DgV̉C𱘪Eh/Kf{^e0|_k|~䮴EexC͕.1Sfrh F 3bU(#] Ҝ[k$ b~7n-OC!6MOњ.,X Q&/~O| ƯDUÝYv/jNy `6Y>3}z>4} xPŽs9  <}ԚRsR%C>8@&ei/QĜEF"EmjWΓ Ӑ@MLb9V.ʢm't5عn^dMMe^zh(ƌT3( pS!4⢮S@}fjN $a' GW&PӪ?jH["eE܆QU)eC'W4R0Re@H⇕)>[/Ûwdomc?s/Ͽ;_].j,zao,뺂KE~em uCwZᭉ #Dpl4qyS&M(.ESq:Z 7Ϟ~ vsûU Iv92{pu557eH~M˦ /lͼ[`5aUW˜7zHvą)A0 :cñ:)<(L8i{o)qsMxi0D/ |QӶ094X0D88VKf|2cM f_HS)pj_ԣqKh]h-]!hpSa7(rO1n?W\mvڏYaA7pX3b~=Nk$qd/`_^z㷮U Q,1ZrVA*~B. ho^B&Rʲm% 3Nd(BK!z!\Td7YY? ja8Lc@L~ͭU ќC0lPۥl]?OU 1) hAB)0SL(K1Y"Ҟ[; C)XD 2%RyP iɖdʨ\ ^q/C-d`{gG|1tYK\qWZR~g9[bi]DiTQJF @BIIKp И|,B4?]eCE1!jx%׀vp)+q>lzqؚ_rftQ #w="J$}rUqV CXt;L6k0m$E9XKB0-"/#=?b1"ɄV۫c(`5I5puBx^6kBi\3(hKO~s6{rOvw{0a?iIZ.j9  {ZEYUÍ$s7}j-?Ym"oCRkiiчHOt BL}Z 1rzT麀KCiϋ p}Y~Ge${i%EeXrw^k&V;# R>#k2(|ΉlYQf/da tL,'jQ:f5\֕aq̛FXh'Vs?gŬnu O]' {iya&EaQ{%敨byE2܅Ļ'ɍU46bݐ ҔچȇQLk!'jёR`]&;-Žy-LHCdi4g{h#]_Ðl\S퍷].Bep5>WXՅ/ *̫ߺrx[u:4zeL!De@+ߡQL0X!P0faQ6beˆÔV-TY9U{ f9s#(a j} C[Zl_B\ȧç wsL]\㱦W|tGUafP!*]S๤0$F,6)3dĂǟBM;9yhFǦr21C_A=Ƅay{_"NJm~g~C|}+EtF~ Ee`20jt5QuP|JtL{xYRl(d 2/O}cRQl FbuCS6yBMchcQ^V4e51VUA4O,mΆ (.Kc*G˛E5+C6L}m9u?w4eHi@{AՊF(XVk3/ ժF! NC1xdue9$Z"oV]װuViF'u%Z!\<oϪЦk!ܴ v >(!~m5z8 c@XU*>OU=x u!lWQLYT!u5Nzztٱ.̧2*g#Pq`lȗ=P|> Pn|3HfE! y OTu|0L, wE [AuLa-l!iڃkOj}%^4DDa=_Kb>/AxH}֕ s18,z_D,0tL=Ab%J F=aCF I'N+@$("jL'iRIȅ&ـɾ~$J kWvݯQQ %erM|j+ZTZKo =º լ^H%"dG H<3OT`z:[SS̐{~O,B!T|uo}kʺ9'<~6X=2̪uPʗi9ߞל8tte=(ʥeDi#o’s—Kphey_V&9,p?q[gƘ L9(cEa‚~e$Gy`H# d.ܴբE 5҈qʻt).{j<{U͆;^D QQ XL̶Mdҹnk6.)L x|73kWbsӄSRXU%Rŋtl!^n8v]"t½3}.@7Ntu_m|~e>_T;@ϰu;ozAz;T6m?'i\C4ڪ`3%V)nܭ0 E=㫃SWz}qB zI$Z= $z9j%٧f{HhUH6t(YeM!*xr֋$b$QA>~mۋ{jhgzx;S}7mbq3v_g,d* hE;^hWeӖQzK:|]M^=2F*b{ lCcꈕ~J:-0ɓ:Qp9D.@R؇~[>y3Cu| h9N/Oηf7UI ǩs۾}7L'we1XZFH;Ub'!6fzzpTTQM5{mkoK uЖj{Bߧ aܻ_:wWa9<7QyN83\/C('++J7dw }ucя}p`M|U뇓UסZYd}i;k+c^'Z+za.:q4tU)vZ[V+K9!p([pg=ʬjrhczWv6.S&GxẈB"|F+j[b/1$ƚ YSGйu#G#v͡c .Ƿ}{k,sBZfvҜ='|5ѰW5 }Wnft/OJK@j,R~m @n1A 輀[YH\Si W YU}/_տK᩵c~QRNz<F>`Qр''V7,u{d`6e(t$ _,jļ $RdM`5@`yEQbqıg_7ߏ7 7=+&hV N<<-Z(Vm* -ui gb};.#0'$ծRڈI1E aeB:0~kXpU$rU "W^ג=,󲰚 3 >͢;b7M71kyY`_w}򮻾Mo:yg\9)Iga;oq1sí_җ}Cw~WS(v~qm|SIyVG=I,y' -gݦ*9CO$h ʓƉkʽqveE5>|n2a0yd\J> ԩ# !J0,Aр)wc(q@%gh3HUdb/lX#%4 u˘^`*(Txym gH̅Wa vF[/ڗ?\[Q!aH+"Ŏ#qMfs~nQdd>$^Y5ٝܪC֕^▜8|/[={tr&op6ۄRƎ nf P4wtLR]rTY]dVmcU;g%/\3E(u}{_gֺ(avD.ac뜒pKOB;gQ4G !a=)O.r[\[n,]^[{e[{sk)BЀ9$oHSILϼIRdZL/b:Vw*]_AARNFM̭AgP3 D~gq5to;( @.̹Vfd?σeϦuZ;SF\d&E e[)BƏ.% +o񼽼9E:dE!KFVHحP)KqtU#[o"t^`%h.8}w=bkS}9/ 8u ɜ b:}J9NV9:p5%:'}ۼ6Dj/ ^,X]tG_ܼoce⬿=St0SP6yt11iZA1 ,hEw!tx3Bx8R7rŪA^K^jC|NRږ&}F$Чam=N^^D!CҺNkC}w"ZXm,FkEwv>86zFk0t:wvaѷtT6\k1ۜ5 Y7,EiJy 432ne Ia`0^Z7<vvf#"_ M,MHLQߞh/rr]w+^yNb!EzUL0NtJ/Om1x^:1?hFF{1cҫ ee J1^թJ`eiH)Xd8q~H-Dy1t홱bE21` C(vMr 'y'6Q3j\ɾj)0hS NIz_Oi%9ڱHq ܽo_FYۀD&)1WsvF&V\ AB"fndCC\Dz eCxMC'"$ۃ `H ]u#'gNjHL\[VtNE48-;cP*Jum~IG]EyZ#^ba@[  .}䥲ANz PS 2Ӻ5\eb.pE,&4=DPDd6"Y90-`DrH4A``MD>mEĨgL_}6\f1cN+Z]#uS$Zw^ 'BUPJ{xc5 $1dE@0`9"ݰ6 VeaDWqc0)p($Q5r!{u|{?jEA3n!F;;u'B3)餐EEF:3236- %,a $ɱ!\4NT=էFgT۬iGmTm[cj]Q>[^G(X* x@$,b4dCr1t .nj,r8Ϗap9^)oW8q%ޝ)tMsaG6V|tdž֎U~AF\CzOy5r*L ~$X8k VB|`%5aǜ{)-|}&eR>׻!2)d]Gdb` aȤG(|[ ,;R[HbnQ\u]lP5= VkU]+Z}gan5X6^,3>Z58K(OĖrb22hȥX+I.  ࢅ%p+D O~NGn=08Q,`@c-Ja5AL[@\`P$M $!VZM_2^)\v*lI)Uƭ3SE;n 04ciS922dTr +yEf*(bc@9q)0lŖ*R^)" N>v3-"RR v\)}ӂͬr%qU3k%Ĩ3cꎫk+"*I,ǾjlZǩ32X50(]Ahlrsyie43 mFRA!UJ9S$LPU}M,+4MfrqE֑ҳz3) !tٌ/޸)s-+ת"V-aN8$Zޣ[fdޞv`z9`#B`E=UD1M/.ac͚yL!AZsWSnX|-[lэV1}n{uHd26݊MlCM:3U)u]Y=6T^"BNEO"J2w$bCJ&eRRTP(V>I;)"woKwHp}<ӑb %kOYV4h)c@r.ˋXgc+:-߶_O68y&`PWL |L22SM`( +x &Qq=97o,l5P+ J9FJ,[*'bX";dRQn$IRX1|3",Y:C.9< E$I| YtӔ㭇nS)s+L"5 DWq^\|l(tYQHgLKb#1n- t[ǡqLig{!cF U9 ^\ͭ}YlR6-]N|~>gxngN]Ǝ7VcՒ ;EՈe@a7%0M˲W7Tα仾URfʏinJ4SQuBetuCV/{|XQfX6i<fq>1A>Dxd'.'G庙FfJQu&tj.Z;6BiۦtWvJoT4fvƮrjT~-kӦ9kFOO{UPao!2rjXi,"֠*2 ɲb8bc(zr:e>^V~r']7gǟ|ӿ7l*tLQIfb$vwXbЖXiTG9am"ǗnT*^jÆ͙*'egDV{Pד}W'ߦqoQ>x3]mktRQP]8 sR ?e~H<Pb!*Hg$TKXH]|Lm<\ܣg?z4e6ksJC# |OmżlZ»;G VjU)RQu-12&Xi,٨_˚0l9ƭʴtQqnӦfgeHV4f7~s?u1a*Ml!Va*&#ē(b"X98 550-% 4r!cIXә> ٽX0ֲ8e͆mbWRjkxv΢enWrlM6& Z\)KɤXw(G'ՆQǥf5]BtaU!"\܈xhe9cG}?_ݝArޫP 4bz)P]|W#^ 2aB5(faSI5: aURké@"/k4&%O<[B'Rmڴi]tI'4;Ǿx?:BIPg򞻲*-+IWwloeW,_aRlkoK9+rd]g͚yi}S^o_ye2sw/va> ]xǛbou_V򓟴& <̙u)ר-#<Ϊ@zxC$ݫRۛ?9LPG|%k]y·Uʌ:+0``BMؕiۘ?X+*lϧ==zLik=m|zddTV #ma36eGHS&VbХO@KWQHE(Vk#*KA l=0DIY-ghUM\nUxaXIKɂ5 _UG` G~j,>k|#Hͤd5I40Nd"s>)fͩ)#쌎mSwa(;efg4E0ZXSSr#l Pᓫ]L)aG[ rg Y*ƣa| K@@EPuǼ5똮+LYaVGq.ST:>ccw~LO-oxQ#I6]{=wJzqkj*mf,-fӒYl8mѡxWjqR;澒y ~)BB. p3m5]m#l\{@`/Fo Xwg/>qƒNرK1YLd$ƺA2r7Q/|Gǝ~f0idVq|l]ºeY }v))4̥tk4}\hU2M-PE)M&q).(҅w]EKGݝȿu6<]l6̚g^P6|*:˜,'+gZG1U":JƎW*HX6\z;F<6nVwwVkyV @j6:q:gSEĮSƛ28־`4:Zź$7 ]&*H DR#"U$TBOt0tش#ZoIZu|?V?{ߦKYSW}]K<B-}P扺aK,:c*2dp]##UisV͸"K6i4Y'fn-<O<裏r!;|͗\r E='|my{ZByug i/d~_߶m۞&9,\0 =3|>rz .ڵ駞|U|҂EѓO.;,<|Gqݸq#̾+WΝ;0[+&#L"@€o{-/p9??<3W]u Yy!A;$݋"w>K'LyQV_-#l:zFC/ʬD6%耬06ja3$m\SFJ7w#Xd'\q$p!0cJ b:7iȲxS\]?V" _ ofaiV{!!yϝ&'4ƆHgΕMV)esmqm,g\nniW7ŚQ; \ϕM3J{!^DJ6%[ 'Adj{*2th5cȨJNXgbCfE;;-<*ۮZ~‘q;nUoj˒.fy5نrudDTØp%lXˠNGFgЏCT}{{sQ9vãفt4^<aҠCE"M^7Fdl6ybR2Xo,kՁގ5 jL!kJQuRѐ|:B&}u/u0AR0IN.wIeMW?|y_koGO-_e6@qäKѬ͠$Z[:FCĥKh3_&sM[cE4@2U DV>\ǸUpD}ȡ8U(QI,i{TvE5_/;c.~K,cx+/N8z q@/T%^{NB2Z0K_sik˼Sh+˞hpWV^8%.܅-;66v+={>G)++K=G>OPJ[%ϫarwR@0Kӷ~~IR7p??r-gq7 i ۿ'> 8~3LTZ9v^JVyv] b//\f͚}6m:3AMIҖ{UW|3GFFN={wԩ?;찗%w?oc >25EeGJ irڬ~B553`c::;yUq;Q(|vEo}z,[aԾ?ٷ{do,9ƶIժT6L lzV{F6>OGpcR c:YPA&1 c02FH(2L#Jl@0 UISˊbՒ%a)C W~*"(*"7/nWN#O'bM#N\젾+[V7m ySR}4uMĢ̶fbMX黡EVdO2H ե<aƸQ;;q>Tۖ58 `uSSs55稴UzWQզ/ݿFo9\f玥[drLH\,xUcAXB6j \c6 ;e heSos<}@=3Y]RUba5nS7$<5Ȫ.kJm!NY\:桁b"X2BBC"_%=Vŋm,Λx k/Os'?q 7/{V vtt\to98E||v>>w=,^hO}3v߽s<;]w狻ӟ>O[n ̽b@_| .g /E }Q]0Zo_=.Aw^~pWBឪ_[2i`ͷvۧ>=s3׿Ų/c?@_u]~>ڿ[D{Oo[~cIE*k66f]yzi|Rۧ 9rcF2Y"\Di댮[Lmh=4`p8KI \RɪݙnZXS5)]?  $G<1w~C2"$ sGLC H*܏$iDe3ie|!,2q/A }V=-+ 1"թ*$p0`Xi Vy=99z_9 }-q`ƍy}{\spӦMk(N-ix(홯Un/ .0 O*yo&(< vݰaC+o? zJ˒Iq)~}w(V6 9jw!fY r>{3ږ#}?pMlf8C'{F^;p̢z킜fU2$ssMYgsr,a LSGb=)ƨl cSYiv\ #861B")aYt)I0;jv%U7 + -E" "΅"S7aOPՏ~K0I>I:Fd#I=@Rr{C&+Hp#cQӉKgtM5Щ4}B_g[1adi1!(LٶmȋivuUc>bGLJH%O}SՉ:x[mY׿>2Q>m+64-f3DMPߥ"ZQceVA1$-R0P9o\/3I% ՑRf` 9`ĺI'K3`v`:aO{.quk긵ǡ*l-[U@CF7|sޑgn]na37=A};#g?ZA8y,&8 dQ1Iz7 wP$~š;+ &?301vT+xA0^k4<%%Ws?̾o%#i::zzƍ4Qז/j g1orBbFA3 t Q( |{8\Яa ѐ2 wƬf 0380+ bOB҇javmxDlUF!Κ%6b?Gk%"S9[II{&vk=uP&hO  x\Ns 3I 0"qRx<6JW*[ӟ?w_|jLavNcL5xO$ EO= 5G2hn"=4+hRPVX<<){JT7108昣/2@^8hdd; esMݵPNZOH^?+뗉{3l*y"i#<&~ଏ2x+ض%Rǟ_50|cC^sWx}fjCgVtuuM|:޼Ӧ淿`޼;wWk QRsZ.]zM> ??Jwqy٫x7tCH<6:p%q,G 4'M,E;21Kʺ:9zg/e]d(`PD4Nm)DEЇGKɺj؂E2&39}ڶ `RhݰtRȥ;P9 |4r[*6La*)˴l 9meCKgRYb_fW8\b/ HYFXj8p,m E[?r?9KNiSƆˆV;zV5Nƛ~{W{t] =jooc9nqatM+W+$uX'lˬPރ3 c+~ }ǼU.$l8{Yּ~ϵe˞'?*9裿~ү|Pz^ Kݫg>=^\v>/o|P~}򓟼qN09gSzT*T;::~k9Xh"/tfUb5%K\u՟W]uD!A۶_ʋ _/G?j˕Iq̡zT"m3JqP)F86l3I+t]22NTԴMX|#wәoc\U4Qge20[<{d$i~% -zpf5I( `[+ sWR1ƄQ/X;1ł&e,1dBDUPH+ 6Ätf8pXQ#sMF{$]^qDGtI JzaHEИȴQaҬ2t,=fVŒj(Դ1–$dS*'A(]GXILn`g#rb#]sCE_/h˞\ }/?FI2O[ɨ[iԨUg$9͐Įo[[aJ-HN%2V)b4@Ua`3aH4cާkM`ZSVi!$:f|CSfOYpTUu+ `U:*r?XU)VmGl9<\L:`rX101VR3(647F`ѰbJgGS*HtkKq/uJ5՘e+2#CȦ{]rZIApl;)Y089FE'p"d3m,4CPWݕZ' m&Aiєab/4;kɲ괕<}W201fUWu p^Xd wVf. {lt([ˈ$V 2#͔L$Dzg`̥mX}VΕgYwy/ygnR Mn )rqAѬbSYWP)F#.CQR1kT&D]NRv evg䠃:ޞp `~Gn:eʔ}w 7͉J? s;J&mxmINvy6[,8 o~s+g͈0'>:poԝ/߼0g}UN l}`{nLP@P-|kڬ}fq&oƠgg?Vǿ_By\NGJПm '; pV;B1G7/=s[<]z#.3t܃20n1Y;s['tY%Tz⸹C?|foǿ}˿SN9Ep%_WCgy拟 ?sgvGG%_ۖAD{IGW9UuLkN զ̝KB6<==pb.̵}i+Tu#;a[ޡHJ!RtmӶb!N"Da$QI,U;S.@VETb#G`.F4qL$dsєjb8GB)FXri"LE@ `10 tsȄ$ckѴQ*_ ԡ-lxOnD!8"'9%Gud.%:(XЖbw_Cȣ])P4 z614#X(wjz'^SA}W-k8@ &KKHxCO\OSGA )~JE pi;e=?8Xb*s»:񜙹.-!*- a$ITۘE&҉_Roz*,W4C)KW\S?pIrFSm)z*k]nocg*ŖfԽ csl0Lfߔ)\h*"i RRdHD(-413tlTArO+U;DyzٕjW{[48v.dDOx> %3tŮY9u'8xHIxb&بD"M9N3ҀNj"n=Qp ođ }-0G4iVO¸9V4@#Vbw5E6)gXQ[$;LLB"f,T$mvOrE3tJX҉jK\wuuy߹Lj%s5yJ>OAk3rL^ skzVJ\5Ҍ rˤ HYR^ +ϱD]'dn>;}U?p;s؛*ٵpznCz=Hϵq(ssopo_mOhw~B({G_K`=t=:G(iپ[xB!qpOB˟קLm5g1s_M^AP9qAuڗtI-0QDZǻ"x2Qa&[N8= XZ[]!ڮ?%OwGyXV):Zg~ϾșB^#D{Ci,mϬ %ʞ|!YH6y}=|xI.ζWsalDZOWU߶uC8|J+ ǜ9g^J>7X!2s9p XY5TJA@'}(Lᙬ`+.c%pcBQ:ϼˮzP&ijomy:=KoYg;)vuJ\+r+T4 #<\ie,*)mk30 iMQ$r0PDkYV0+vz-6=%#u*EjkNgM+SE#&4 IG\Y/ m3s#=浚ifxXD+zA*_wƶXuu0q V5l9&F~YܖɩXGG*S5ha]3J8F2ț|6N^7 E}Ї?WvݳϦ3t44*xzWG>}FMיV_0e[=&" TUݠP|WYW*RP$a萰?ժMq4 G|dxC:6< DiLTX}Bc@+ UbP$J›7#"bPHTa*pW^G ݽM(^vKdVU>NQ0:;֯/?WJ.)~< .wĹ28@ Uj榕xUڸ4lE5T,dUhښ-y'5k#ߏ<'7u:yR^=xݭz&Zr» N=QWW]mx~ܱ'Iq%{{rr{U8xe +r<˔Ğl z*Ył0(zM(gTPe"B'+4 @4d"֟ FD 0 u=d/~U gRp9mQ/]U8:{곑KH׶װxVmz6.bQX2"B"/l&x '}`d *i < Py YUn(h3}ӡzx?bY:;A3&*Ds8啕֟~s3v7C،7{J3me&/2,H5$|jPeMk9_]DzX9*@k2k%oTPvI-5H6)sBfvXWj党|d i㪟0[0diGjmA} _0Â.GJ:zۢ(04 J5CTzL3Uf$UJp#2wN O E`Ņ#L`?MG*Eʹr萘Ӕ%űTV:FIT9lJ0a,r%@ł0Orjޫ$T:a{ng jnFB$T9"nҔ{)"TQΒ6~8cwfl iHJBh5]Mˀ1-B*(Lr* 'XfpTƕl@h JǓL9#ޙ:wpcc )L 'A\Nf2OB+WKħb+RMѭwBu}BiP&VJꀦ1c|̣W)RWwwgWWGT0IWXyầ^p?o|6a-әv"7VrvH>-)ܬC_թ1 nM;#-IMlJxZVJMFg͚Ab2Vs3twu˔HGr6%G3>gt1_tv/gv氞maN%3ڦ~~P4ȊbKz<_Ru1 5M 'UУ0q~D`j CR0H x\NA&7o|\n^!E!tb0SO0ޛ[v]{:}z5TT*Y%YF'l@7$M3H3%|p&@v0ɒeRzw3:$dYT_[޳>~{_pgVԨwA^hQɖP~ad\@*Ǔ2[KZQ#Fz\Kvc-'/|G_bD7O^eIrpbPUPKai2vYޓwI{z٨\++ nz]]ޯCBUHt/:-v5t'6W7$ԣ,9nZ0(KdLpF* /EY$ STeBgH65 !4U,eyQ |%ʵ\Y]1n91E"XUu_m6]puYͅq|󫛟^!fŷ~_k~/v jNCԅNVklyu5ϑVV `j# D3 m.*Jq*-\D;u.?g.Ih'8heCg B8Źw󎷪qG~vkuS{w[OF Oo?|%S$:?e:~ϩSq=ʳn0,EF7y ˱j& Vj0yf״`53}p_ݏeT uw*&,Iio߻jzWdID%1 7 3xuڵnLNuô0Yߨ2M\Sk??X=0U{|`jQNō8)ǃQjDfIXMMqJfgƺ<+ƹT,X̆߀&\r C[zdўc?ػ :#`W&;$ g za3C]ЌȳQ:2T*, cBy@p8{cgO8i|H f.2Y,$)K, cU ffsӘU0Qc|[9۔J%`sG\ϧAEUFrF%dY?'/?_ԥSYl0hWU(P0Xo|$+6ehOY{^ٯܮxC/_]swQmgqҪݽ[7^Dw4OLonqv0R.n9=q|~l4q5:N U$DѨ50u[6΂J;jcq%0aU"΅39^Q8l$?-"WXz[a(v%4cU%^5mA?Xk,Oˍ@p+ oHW= CСWO?3~QY <#8Ţb 3FbklKg9r8G_oۇEV7b,2epKDwdq7 ?k=Qmqb1vbp(k0 7@BEALQ txFjV:ێZꄅR;6Ov(56ڭI ǡ !"+L9m&wO9iiuzw ߯7*9v }HΕ)!ðJY_]14mԹj9a851VnF>w!aY?{O4"O?{gZqЮ=$)H5;czpMOy۟2a5ZQ@Tf|cRIzkJ2ʏIUoDڕ[6`#ig0C<{.cܻۀE$n5dN-v5.ؖ8`ڠ4q6KJ1p̷1̙Ͳ1P(ic9/Ȟ_wlonyX"g~O}/?\ܔM]2a zi FHvd\uaZOe#(}>jn^ O/*++ n7\_=/*AJIN/̜\|h% 㭵?#gQYD[ɺG9Pq=qtgf5|g~#d\ҁVO͂{@BZ8$U%J^mNG!VJMp+ב80fD$^*'XA\s,AahJ@c[xK,zWb`ktp}jw\*ڝfKcB U(8>(: u ʃ@_xML"n%qX@?W2VL+W~X;;;_qL/H!R{z6h]C|MD4GIdCoԷV(<2W{+PF}gѹdVx¨ZS*GycP&):;qgmFyیÉfqGȋdZeKqhLáXàQc䅖#5l<n5=&o8a(5;!f/QɊrn&8&&:K5V#\b3ih-b/._~ӾMӤZcz-dMDXńnYUͤJuPn<}Lvax{qNiIWSA',[:>?oSbkd\)E7JKݔ׺M(}eljrJbHsԴte{v5j $6\'fS:;Jɳor}cLWmt++46vM_`Q#irS{i]%sfq;)i@ L + `eq8Fh"79\S´%ddCT2j2QU ,0l c*Ս{>13z s55^w퉮6O OǗ׿wM#vXۊiqh|=2aˑ NMS:QQøBx)~]e]aZQw6ҩ4e#b+s7ȿm #n{VWNPo} ij#={~ӹ=ܵsh`Ԍ\3'ZƩPzޘVE~!rUd~RAgm]hF2(l24':c2?a=ɘ~e)D3R{, |QiTƽf1K4z37沄a扵ML.l7%'nWiR+W7#/Khdy9{ߑn~̷ cƉF$LMVVB+Fd"fu1[[iTQ Ri>'0&pQUpJ"gdrØCܬn r].+ԅT̈&R~#a`AZQ}&j=`hq,KA'kϗ6"> vW\q/|oal'$E567W]}n4}G g2Vsoo,nKjSbZx=*++_=~gf-WűDa^ֽɳ!!a+F# B\~{`5эT*ë.l %tc_کBQVpEوphE-O,M6bFC0#ezW. Sh<.TB*XX*,Ԃfgve^֊aʦQౚRLMr_O Ry1n8 "YIJ.\c]#'Q}G>[ٿk7>GkSyX1|B7WU5/ۗy,%0$oFP )2He^C_% ==p|WЯC,1X(pUpM{GcXjƤ$Zkz@pE7\ϣ]:>?iK Eċv~;gY]KXC%,4Ftu[ `B4&u7>KzkZY.LOh޲E)L˒CsϊYoɰLj_p8~ኀ\Tp)I ke}WLlv˧9a#D=k4Nάli' f\<#_ÍAGF\h-sS Cվxx!h4 QKh8(l9^(Ťi45 ά/;s}McebIͱn{h%|{FtՍoג:_f&0ZLinҲ B5 &>Zn̤r{5Kx\u;KΏ$uQRZ{}⡥t_&}?b. ]yA%`S]W)3\P hVqV`6B)*QBL5u&HG!Ё"nçsW'z}_\T/݃[a佘}El~~WFqoǽ9oǮ8659FO*펲)_{-_vƼ\|gmpv/Kݜ.g^yw3Yؓwc)J ~CA'X%1 UcޤdfXxV_[/͔4Qa0]Jq92qkv}׻.gᑍ||_k?ʙٶn$i5+JsL'IV3E9hxa'iXs,ҞCr.i֘PIs0.$S:*クnGâiŃHEDMC jd IU_UD d\8N.0fv'EY|¾H# ĥ_jmm%7=qw;rgu5q |X#5%o;V4;~Hհjߎ0TXT%|ka0Zi|H`S $p/ ڠ::-xVVkcRm 跍Ҝ4(0UźJAm@#Eh1 i@)@FsG\2Yg>^X6Ǜ}S3\Ew\yR_b]cRT@|> Bq !Ńl~g?-ҫpډG_RZTkVeÏlfw[jU8:"~oV:0%Ɯp$9L șQ>ஒJiqJδSW(a;Oܺ}[^{e0,Z㡺{_:3YXLdkcg#[,l"pOJEf\|?K`\ SMfp۰FxSy&xFQ8_^OLNH3 onVk<7GM-泵[ЍXc,%pAQEA-=>= sKRSM_xo<|B-홦-K x614#xC?9éaILT#[|lqXP, C @=2*bdq@CA8P0PaCc8OMXW`+ bbVɖ숓!/%K#k'dMLK" ^Pxj{zVxd~죷0} ߚ3+*S-n38 vFdWT1|cH-dp ٴLt`[} 𖿮|c]:?:~wpK1+*!z0TY{LJ'oifu?1QYXT&Qy=mЖWk{jAueP-6=pTjm=&vՏio ]3rS[ aڪ+]Év5N A"!*Wh̀L0%hqBm+0+PBȰ.C\q ǿ9,*0C͂vr#1t u-Y +(j⡾`͉=eeҌjkjkZJ`F\[s:L.}+ٽ?tH1QSrS1CK/JK0{iS1bd{}}jL RIYǩV5>|{ܔ5▯FEW{уQ֋pu- H.&;Zg R%QCHR^׶t4Qj$5ouSǛ0艇louGko-|977,)q3+Ʋc7~kE+fz"߫@z֏T.CVM|\[X!q vB#3Dr?г{]vX>3z祓&2/p7UjdlX ͉8Āf/l=tO -Rd1P@ >nrfX0&́?zJ^`h$ cnU [/nYka-h]hkyi`T(B+.&tD]*Ea1 y<n2+g[@z,[.\0򉇥x Z]$&,ǥ\pcS?" (ݛząh1:k! Y,AFt.]bgˤLX(  7VNO4== '; ƀEN 40M`tCŒ 5`t>pK^zFfX1 w}&G1ܴ}O'>yǟ, 4 Up\m&VR[ݑ0RJ2d=^axuq^'[>`4~m\s7iLF0lGesGw9e@t[.}jPYcL5hXHD&S `SxM-/?Lxl >\:{`a1>un޷˲N Ú:*0\zgelkYVY TtјHkj6ZK92GDaRUҔ|Gsozß´S;WyÇˏTX5ZA3+޸ Z ^xe1LpPb ݤZF͇=n jaxtX=2s4yyg 1ډRk0 ;uOӨ`1 lۘ {F[]Ո}!=ꇜsM L+ՆU%*4@TjA֊mgJGTS{sǎ]z}'|c;c;cP~Qkyo'/ SZrÕb|U5qj;7^36%=-C'̹3`x,\(өvݙn;wW*K#D8ѮQF8y62&11?h28 ~Ob&]_fЮ^ƵSLyMS{#bQ8~ >"+]o{СI$ (TH/IF>U }Tq#mӛ)(}^9aZjW3nI iu(˱\^ҙwùY/N˴9NL}h^oz:CjL6j3DT,[`ᥒ8EQ sB j;"B$^W =ufD۹pCl4jA-iؓ}󧚍'8ZZwkaypl;n6v(Mf4{ u=$.XOwZ{ݑuݫڙU;8{X:wQrd)[͂oN-e43":),{^OGC'RC<#'; Itg~ڀ!*/ᗒ$A* μ0q^3O%E^:y𓔪 ֪zï՚RtVGbqPS xO|\,YB|1™r<vkQS LʀM|W xaqbГ^]ng '>=3'|){AP냳6y}G:-7;ȫ{ c\w0w,Bp|hly5;!Eɤ3O>K*B4Up6~×K!`_7x`/=sW(cKe|#SXmHyYdC1VsL"ggZs\Lĕ ?XUPq%mrI*3.Z a,a07&vv}yd:J@ LXF h u<9|gLnj&?c}Yr QAXe\&^c(#n ciM,s@B'֠HA07ٺhk?3_8||B%.$o~;ץPZ@'L&E B/dDLAYjH"4C]sȏ,-];ND czg9=嶍k::SխfoML?7o@;ڨ1ٟ(js޺ʳNN?[|bbr9.ӆw1Η2e r~&g/}Z ?kD -+' 5z攖*/q;" -C,R96pm"`a(]j+kn Si⺂o1ƙGy"ͪS #nb-jjet)0@!"0 /`ږXuh|[~jPsO]؞0S[KzS0Ox>]w..B|Rjﻷm1j=g>{ ɟl{E{^[Y :\Xhz-/T0Xm+7];gUn$Vm F,w9SPM[уV!p Ņ~;3qGH]1ԹS+ӳӍȏoTD/@;)ǸSЛɉ2-8bu];a2> WG=/]53n=MMM"5&'vZ=sjk'n- ;_ܽ;|[}>U(4VA7^kalB0G{.?p k_S'o5JXט@q <&*Kν\ev^m وR2PVZD\QHYFs#(^&x,"eLI-g,' t}iPhyD赻 yTJ(Ú*ъi}^R)L7K ,K|3dUgQ1a#Uf@OL=U~W u8Ql*7atw5qlǿ,܄wu/᜿- ܙSg{e_mK1Kwx2qeqꕸq0(LKfDT@ ^&BY'^PS @=LȱrbnJx ތj Fc1:\ 1¥ kE.e !U)/Lp4M gGD"NaBQ\ZDdyȚu*2@ch+ If ˑ`]0BQF+/?}~xk=_xм7dIQ¹Zӌաƭ_aSDbJ`CP:,a{[]{0VϩN3YEVpr=H{)dC=ꍖU4ևaȧg[0{ȿ֟Md3j@Wqm6װ'뀲1qBLfn87h=v{?Y2ќ_}~2sX /6LLZ_kpQ '>1%w$vsU4`|L*&F@YIcO9e},fU`ܫuXΞwW>qc]G.ɪvؚ1WUv!jɨĉn5pi"Ea6ڟr]yӭ /TRJBH=Hr ~V+0ȁxzJ6 Uyܟz^ǫ+0tK+:K,၃ Yi΢a3^~k467\T%5VJ0;&(nTim[_{9в٘ _LLˊbhfFͤ'`4IlFm9bm `3Cm6:8Ivq0:4߬Y, wMH[\Vw'kݕ]nx~WL=0R$/Z$K8(( s?G\`$AͤyV¹N>Ovn}>u#Zk5%ƛKv^)X|܁ѨĺZ?}cDR>J`[߽G&i-kXljJ(PI)kK vSƵk#ֶs av4K38yJk wNbT4=u-O|&P►P %#qW- W)5o"@+b6Eie^5|>lvF\.Ŷ]UkNrLE'A? m?SŚ=v͹^gϾ^3ѓ:/^LvQ-g y >5[{z%~V*"G@Ms&-i+Vtnxrcv}3{"b'+%QAkJ#QY.]8N%8 }Gw=霖\7D!ڤi4Edcߞm*g0Wⓟ_ʲ⅞2v+Ũ$v?{Í7ѯ~QkwS8/y"oigq{+`2}`//s^ut툀I{mKj'OKWltk!^o^zr>*-8p?dw R^>e >ֻ0O˨8>P6S,n0d$Nb/iuƃgF}}N+,cޝ%0c@6؋`Jxoxfd]c$@ߝ'$`XWq'KR*EA&wsUx$1DħUq4\")TV6JZD>8^9̨WE):0 o,F 0vH2GGDcZ@ִv808;[8l^VT!8JB5"Y䴛ZDZ!AjNT >.W Z 0rÍ͐wڍ<{33^F͟iנpb[>dk:GIYot4۰fw<ddl4)4F+Vw=螈ڎȥ욝B6'D+S~cQ\@醌}3^?/C׳؟_/?_'_pBō׼fɈL R&U.j$xT?° sXYc[ٷᚱ7Q .ЀVKEC0J၈y 8M)@i XR43*v> @ƊΤ y]'3gϑeyCO~gsvN9tTuQ<&:$]| R2-?~TQ k ==[N|^r7KUNL.0)2S!'!Y=:1V~Q]5=ʇMalvzHboM [[_u}| %k\+k<ɠPګ W=q6nx%:ueW4_~+Zϩ.衊Y@tN bʛNZ Jg$nxIRIH FIPg0 ђe_(WUUQqtYX<Յ_I>qz h `+T[*EʨvL[/Z?RYRn'-Q)Ҏ1a+*5*ڜa$_;99,/@~ؤկnd;RiEEYBȖjVH#j2PŔX!6@ I3/CO7!U ѴͦYy ^[tRɁB)zEZDA9I\#\ڌ O<1$ 7}>gοWGYHi4M |Hn`""4ffh'zdM?{ga%i&OX{,T1`jUP VU7jmӴ< 4H 0ire5ݎRPf/˼τWRe00j.4E=[|ͽ_Xhꈌʠ`<{D[FKq+f0Eew(?yUv1yBl`Ro3!/sYڭڟDկ|~L䜜srNd>mpiFⅹazKU^ςk{6k3ߠb} M Ё{_ Sd-خˮ?)]=|:9jyA0t@-O0}qí J9Hqjo="chJVJұ GzO4m xḹxUyZ_QY*$c2T5>$[&i7c~SNm6wm& B_ߣmG+ z>jX lDbb+_hi3/j+^IC|`!1q3~Ze9ne%yéV64hb hJe[S)JfK.ugU?)J@߅ᡝI1jIjDzh|ێ7"b* ib24r6bYO%<HcQ<>N-^^zyc@#{{`bvIi\f"Պ) KS"EFFYZ>8gq讌Ä]Qf0'f:m^9(]wZV%zJaD XTwqF:RguZd-s?HresZMK .@p`XUBn*))5˃葯Ϗ'tp1>s)} rLA5+B C (߯Fw<]àSsK3:.C{y]79? k9ݭz5:✜S$ߦO/`ï>':-PqSg9yvN'7^9-_~ͼγk`9dS3,Y?mX߅`yCRbluQY<\Vz-,R{PT] fn4YjHĺD\ݷ?][EJ֍=}3JZmNofpFR's26 Ŋ p+]VpWq 47hOx]-F!:#`*t^u8ozԦ/17K<^iRS뭜/Yߙ[L40 &(e,V7UU5n6\v>GHN"z-u9:P*n?Hf~JpR(N0ޛ !5{׿'iuHLMNܱƗ7VMST- VX]Xm:2&yY9[zȾ9*h<<f6a 3W!\,0T Rbֲ8ƜV{{E?SI:I;|iX͊5<[CRAN#TDqKINY@oAjrp3C^0A?q̂eݹ+ kAl-&68V‚ŦD$EIT\f)i´Yq;'ZX`XZ,,챧/y899rw~~nixD\q/[o9L1=Ҕ!vX^7ƁK㖳w>prU=F_ n S,,h I. gڑVninȳ{ hQ'K U&f3h4^VEZy¶Xwl{ 㖡m Y(j2't\Ի,5Ftjdw?o2L{vw.Z\&Ya-6}(s]BB_/5Y] V u!ُK%  KP3QfVd)U$ M_kۊ%ܼyկϭ}๘`;kjl4f#vn1PTDBU .aۭlbƭl_sɫWTp]AU, di*٨"J.PJ+ƂCFmٲ7[B-TG&&Tqb|D -{JrL3R*l0`* #ll};2ݍȮ :69asZWY #s deΝaoyA|*nj08ƣeyX'C;( W'I6==Gg|߃Kj?=Wx??x;ߏk;>?m۶]y啿;+I7 .|[ZŅjFMozӧ?oϊ=qA[ ,^Q֐3"eт[*1yp\U|#ԷY5Z7KEYS,MHp=Izei7usGu]C_r_.qeiUtypNmL R:(y^|rk~wpvR}Kd4"FVT֕Foz &ƴxa5U,`jc7SqmK4PB70Ո'eKY/xԙ5bb6bgӸh{@#`%Si¨`F0aK1K `ފ.J%4VIyb0ʳ wBՀ.x3 l('y͙W/ԄG@IU%}8TEaPL*4]$+$a_Wzf#&\5LTPi-Ex^_DV}JtәUvVܤX())ST5q JA˙B?O^|޳cFqo_Y|îY#E!F3T6+5=&\5=o8om^2h.P`9fݪ z3{|ł^4j0:0PW(Z<LI =g]lI!Nvl-7UUV-mGhw.p "+}7v=bѬm{K3 kSCa3~ 'nؼyϿ֝aeg?|k^$I?zﰯ&.:w73حz-cIsG?߼E_['Z}r}{]wݩɒowi{PU6@hYZ²o-[U)?c}n~4AWBF/{Ưu]J-]a+@! ,kNi4ן\uqM˷)^jz\y˒vowFQI` 6ZEA|V~tr 0f3w<_^(/sZ(Śy1J`1,Y *leIaL7YNi`!MJ  $fh_c".$~IsN ǿC@J M#ԩjyRb쥣lqZGu[)m2O%O ߈iZ_XHr(-/ݼ!Co 8fW Z 8SxNԎWy Lo rF/cp8u$m$o`nZ[)цuk-/*'&7B-r@_m)a^G[!H%˒k#_j8-H`$䩹?o-,0yğMV;*,}J²si qDqE5#CL}81cNM_<5sq{PL͹g( ? HBF$0;6e{Oռy o~ƅlbF+%*!Š z3QR,*ʸwV*W2 :M(![JfGާUws9Λ@I1HM<ɪKgMP{vMT3ObwNj6Iɕoo^Wvmo~ E]twVHx{s-0oI?p|[oG 7\{~iHsssٟ׬Y?oeƋ^qťozEk׮g~[ߺZ;7̼moWnݺ??;`>W_}>;FX=(KvjVLei&3ʸ$_5>w.`uAZ.GkM/> sgm'sVXff{<Qvsj]\nӗªnx##[ k c:t4QZ`\#d(O:HoXe: `[ƄgD@Hqjs5cu@C4U1IM ]=窨m|]iunr aBΚ@_o7K#}QLm6z7ʃFz|T[]ʦ;]ɝF7X=JワD`]n "Y'VmtӠ{5< h6F'E0X97n0p?Ę?ynV_)w- la++yh;* `nQ:|ξK.<|$KԾl;?o i. bG疃#?kÊʇϓvvkq$5=K.[ze@O|ǁu/K.?|ZxNȭ~_GeO>/?ȿWWv}7_|=??/}7\ݦz3-o?C|M7two6ۿqw~n/oycm1 >03r-p^l~q55΅Y" ZO)lO<-W994ۿ!6{Ͷ!Qicհ8k兂+ t9og!֖yˁ`[eaYK O/Z7U+S3ʙ!6ENC M2lҮ^cɓPXu wM?Ln0 39ә#ÄgK}?a9O.Y1!#9ၤu]gQFTHU SX Ub85ѽW088]n;n?+~swtwO?O_o >O@aq]{ޡw( O./h 6(圏qșO(+d}3!p& =~}[1*-i ;pnjg_kkɱ[^f`B!,Y];D#)N=>ٳ{ ן%yߏƟs_~ V}h]Swfry~(Sԣ>v-oo=(%h{& ?}wц p<ʕ+/_gO/;E9I|c=kO=pO\9E}Aup 7z ;4KzUߎv2.rqݏM] c 8d ":QCcξ|W-\NP(捖 "3-)Lc8RpфNy!۵'pOʋְ{t6uAk}rnX? \Yv<٦_u6&JsF#6&cS'}8@ Ju94aj4XFj|~kR ܳoqaSkF`09b>˨ vDk sDզreUN› 7:*4Tb2g $7>/-Fⶇ y}ΪcA|iuUDr;;((('^FfVφăiޣweh3b\2tGJ.lX'@3_ylez TpGvsn9R4=Xԛl7 /{}iR7E7ڻ_;d{,]Mʃ £<a``*{ϾL?`݅,xj;\Mó;ٺuKGt7,ʙErXĤD t4d!^k2=~Oy ԅ۶{1ށ2IEtZVK IG\Q`ffwOXZ&6n K ,)q, ZJ QV6qhXd|]9j!'@٬pFP59:HXK=W^ʙ.>5hEXXdXޕց6b`ţ#br!&ބ Zӆ!4[n?-LĠO.̸ d': z1 ޺)⼭^kXs躶Ι]pnQi,Wh QzPnòITUQɘ }"i-|M9D ħ :=6ELtڼ<(J/9.ڡFZ ƕ9[khZAaF+-kF hA3/۾kͥص%5S:[jxq.XpHY;cí%5AC}K4x<kA9X'c^ԉ%aW}{ӏLA,Gxv f2b17 u/R Wy:O(5 Bו%lDD&+5eZ1`s,&q*Aii4C]R/_q{& !S֜?zɹ}yv:u+4>kZu+PfDX&Yb<ztl>yi۝w7񪫯8qplQ"'~ gg͉JJOw+^DX^\!xm D#>kUa\ƣ|NNO4x)X FdMֹ6@(*RaުfG5ZȰo]2,oɼT+Xk8 hx/eEnyƠW^ G3<֥dl1x+@lkTdlS8 g8G5q\V\p o1?֯mViZK FV 5iv}4Z3Y3RAlv*hb}#^d!ࢫ l cZuFalt(ՙ4R1~9_7S9܋ɖ{$ k*uf1 ,ohkY>#HeHjb2*X,lFe^; ~N}£\vZ^P#g  6iOO|}2!È{ 8r3yQjC`L)e4)~x葝<>s&m>V9/gd1̩o H$TB7B,."Xq6WVyeyg>[m`@L~쬏qk+fMnL0='L{E&+M'Nowy5@r{t96Yft:{RXM<߷Лf+f횟ԯ@eILXj()hHJIRfE B8tYU5*_'G1ѣ#mt=PB(>Px.{6ZPCBC2R,Z Ib\G@`jv9ȋ7\o\*9mmt8<9]AփVL߷a3**6Uiob;i[h:zc[wPZR7u:-H=苪5X, {7?:Ď=y^RAh\c<4,]"=s"ڔ$As 0 &ֳIOf ֈɆVpޚW0τnܷ/{|Q'&]e 39H|q1%9>%s :)P5eV.r 0΃_o'?0P,˲$|@>_{E?C qt{&3;N6>x锪R<&R!:g+&Fa%IZo/lyi8h˛9Rֺ>CI_yV=r/&CwyCsfJ+  b s%&KEAXL z8u + 4J^`SOzl`e˯K~3B,Z?e0 f"92ɻf^~"_* -Sz7]X31Udtʀ3󁈚9aZ!&\ȭnHc]]['h)NIrhjFcve𣚓q ߩ) bdkE儶Z h#\$qpNL2l <FKIJ!,g~'N t06&gy6E^|j1> os8z9׮*Dn8Y%tF=L겐1b(wC27}m~yppO9Yx񱑵kdeK&Hf~s0< VPƔ=yU]ND\//q$6ffY"k'q5r2# ֒0#GMhM5bh9s%`rmighqZ* Y e uaG#w13N*i O4jFEsas TitIhpPCɡ;u'|BBbF,3a3tHۧMGG009ţs]%(g,m"Hr#݊#g,?ygD j{slK>9}QDCW/,@A1X3LTD9S̺nəX&b3'zN*ǁBu4#}Yqtɺ9Rcџ,߼{K#&LsX< Jx0)2@ڭ{D5Iʑ ') ;&L,3^YjeIm,+qB= 5ɢ@bv RtUXmWLNMvƚXT +Zd^x^H3E&^~Hkl4, apN 7rz՗Eٖ\-9QﵻugNUyHae٘t&^W%܉7eEI7\Ѡ>/KFxݠ@Tto>@k0 wʍ4-ff O=6sCO+uY5}|WND48><˻k(Ado2C yn\(-4M V# +_h)Mf>OQzCAadWǑ_q]uCza4Gyΰ8o뮿abr3m;\@;y=׼eJԍΙyݗgp]l䲥Rs{rDyFQqow'D6;7 +JmRTAӋ cC'=ɘV%oR.K]C^]pC1 ́lsϙ^w港r?}1'L_3+m!s}l F%;SNVyb2+C#X1 E ˃,%i:(XܹA?*$Zh`m?ӳCIi̙ %.$Y T%帢 TJjcS:鷭 ͨaS>ͪ\zj݋;6o#faT~b*)S03º,QEJ@P4f&u}W'A}Jc 1,w YU\:rK&i }L]jT6I~R1=ސR.%)92vfԯhGFY&JC[l6%ӂ+Kݡ>D͏?S?|qX6-Ɲ3V[Ȧ]$^9q1g=tOzF˩:z〼I_{P RWm~5Ҁ6n/IH pJ V L709,0>%ތυ5e9 y_YWys|qs ,Jl%rx/rkP`bYj+^Ϟ gd+˶93ҒRrX:g? Ȇyn‹fSra:) VAltTUFdIԔ޻2'yаc1~ DCng8ɑJbaΰMRrOȮxS#I&$M<**t11Lj EDk'4.54X5?#Tzc9l*YmjRGr @ DQC9ð*Q:,GNصI@a.0jx4 }j ! M&Ga;Z9X9NO%P@~e:xwX GwAw]XZkC^7A4U[f1m%%Xt辟)٘p3L)=# n%1e"dD{u0" \ D EG "577tumM6sX/K^aDc1@ 3L fe׭nu!]ckZf~;zgpMjKΉ{ܙ4?(Ԙ\C mV vZ*sFK{9g$p6>ʕ^Ե2 чEqŸ*SGԠg>0kҸ IC۱L1pQ2NmEW]*)j C M^)CE9\XZلޯFcX&Vc{ƵC[󎥿Ȓ6mDlꓻxशҲO j+A5VJ*A9hVZ˫P,`^C e,D.1 h@Sq!:ְ8g 楈M2VX( z;zx551gYpe\/}Ziz E1#0 aIE cO6YrŘz=loD'22F1'PDkՒZ}]Gˋ%t~~W?w=78pφ0ې`@Ax*$QCPmǹѯk9v-lZ]k Hpim }X;,5x!cqns4G%gB,kn!Co)᡼-+Wn[o׎(PN} RP9zBL:YHVW֡oV`5~ߎ)Nh[av{\bFMB`FQ5 ͙Xt”U -KC.$ύzrEkȖY[vYa$!$*DHXlK,'eA/IQLyevޒv=H* TqFVkF8P:5 DlQ` A^TơEiiD팲\` 1-JEq4T׀Ȇ q H4\XUSHko0`]T}{U\W+Fȱ`jT1Wg9j=xک{򢿬,6z@dAr~8H>˻v6^Ԙcun!ewaƶ7_aM̗~Pak~èjT`ؽkk&`PeW?u⺅[l6VH^50{w^{H}ǕI4;v_~)ۮWݵ@7f-׾ ^y7<>EsTOQM >w4^ [Kh'sN>|ECqr=Ia[ ֐O iyY Fl-i2k8X%oѣږC*aIىtAq-X] (2ljfAh)F-HδEVmX%hR6j"(G6EWמGSᐕﹼyv e ZQR0b<bi*8Y}{VoW(ىxoXژC"@*Z 1"TCZc1f0Chnja"YE$YEl,_A?gc!J̰0,eAP4Dot C$JRlliTb"!Af-'_mu+f1]wj3l*- 0H)D;4`P#(Q#RӠꉫ;$JۊU* U cL2IFP3z,zn.,1wB9GLz{{}3*$Rq)Z W_Գ iƼ^2kVa8{\mE#km7،yYݕR.Cyde:7wߔg APͯœ_c(EZǴm|˿_O;~|q_[]Ѷ&NI>}?itOj`u8s9sjGm=P71mryhHq0sZYR NP 6a/n{.C`Kden] Ҏk` ay8{CVխn;v ©m!] ulht Ig 4N 56 XPAKFF2gJب=帩 q;6lleo1(4XB2MkG[c2"JB݌cwJ95x q^?xZ> LHT棰H)3L4jH(ܔGR$5,ժg]&#.ܨmiPD,y2YD>KUP;JBw64#fLnoEZE~èhb䋚Pe0+AV/I)ECA\E`CCl4L$Pni?Idu *f=Ebٙ/Rž0B5L!߻9,Uhs!|ivc/[LY??F<9nF~/{kw՘U:;Vtve#絍^7˥粞Lm$^? aA+m-21 ! Xb3ԇzRW9TI-(&CD;+;b\9t2ʴcV͟]Wၧ)xg3pLޙ-_q*q#;z;#\ {cܸzceٳ?|3ǾQ1a+öq{O>ZU MgͫHeN>C+(;""X$aC²~ Ifd1. } nj?:+@'ܼ7x]NS5Z LmT ]' ? ՛'m!۳lu[ݶoӽ^ѭ0:ACl|;-my߹tGQqSөxD ْ iiGdF$ǾR5Ҳ1A@$C ub0 k\B \@x؊2. m4:.B!S\wد^pg1<"wU-p\3&I0J96~9c"gL5 / }g)"&SaV #.H7@q#0cb2`,7Yzb^cjfaT{mCom&4185Y"fAc)ٿw U&eŞS羑>t+1@){,*LsSE*nGC>Gu/o*ߗA2n]LaOByޒ58wqs3W d]w;zF{+:b&_Z87yꑬi/D{ZQ=LoM"I9V߄W$i*u y~y럯޹=6Ą T^Z"Cwܻzi}ϽrWhon-WuOwQ>3z{>Ѩxjo*5jG?n+ R°JD^cLKPU0Z@+y oxKzhvɓbrߩ4&Ķ!M>AH%EflKt4yxuZFС׊b3m?O><߼h59Ͽhaou׭XBlGq+?7xgokߊ'OUWz![qm{;eƎ~Ng̜y9,X#r6v]w}/\oV~V;p4noSp(HARG-BEߤ}Y5H-ս[Zb ̨ܹH3S,0 qm鞏m0H( Q m H]hJb#%Cd«v`sDnV00Sz+0Ja,aSs`粹^Sa²yarfuå)IX$*Mpi@ UNdUXW^sd~C $śF>v+mGY?=0&_[P03XMg +,=m.0K *5qzu &د9dme5P$VV_X`IQOM8M3;e+okkV83pߠZW#l-)FLQsE~ύj@f'-[[Q=s9HE͜' VZ:ƱͭB5\\d~}q?x⻍&Ny゚1>FF9c"^=zַٰZb'e*[CSJpUˆ꥔ڍme@b@$X|& K2cCH:om1<=hPXh hz yczk NZhXhUCOjnkQժэ윘& >9~Վաp/mo1O1|KgnΛ۰gD( g_y|ֶ(FE0,yO=%p*2,\Ӌ-JAfb΂'< Yܘ=o++ӷٞ{qE-?},Z#ǝ}ݟlZw= $_͚5GU%X @R + #\.ZbT}@C~}_c.N0WñQCA~N@Zk:~D9S.~F(xJ4eʋTO+nr޻l?U)iSfn.WkGkcVU#f-`z+Ʊ qeEivrGn'!bFgcDyw3??iRkC/D®„:E^TL0Z>h/|3l`$pTv=E1ƫbGGO|P_[/umߘO}?C8pe6}c;>05>ٳgΜsN;∃ wc/Ly ֬e $"|7.Qu~ eض߶Atgf^{O|ᅙ KL Q`\ S40'Bh+'gN?JYa6Hμí0>' @m";CNC{?яanW^ n=S^ogϞO|3=zu?Q&춻w~W(^~wml~XN2E߻~O?{n~<5s?o}+E]|?x—?G?б_~oǟ8{μ7|bCCýkqĉ~駟~w Eߨ>{W\|iz3^gcgΝy䟗~u[m7MyT~<9#I(L G7$Q=<դ$FX %{ llp&{}Eyz2c|Zv抠!HLeKCLpIeT(j,KZ1WpYW,$LL @!!Tm~㿌kOuό$0\Թ!6h.cIn!1:vݽ %1D# K2l8VI$4cr 81= ܸLbsD46 U~tE6bl)dYRzu.h.,ᔐuJdOO~vYg]ږyk~7pxo7xC#5/Wl>?3j~~[sh?w9_: .߸N{-W ߾;NƯ}kg~ K|'_xׇн4~|fVmc)G]Ͳ{}nGb f˯? "j`w8~/G:Z+ȄT3g2JQH^jH90>+X\H RZՄ_V鏑P@OԎ1 ` Ϭ vaxzB x8X)KITkVrożV̏sPшhıvM`]@}Pϳ%&xpy-(I Y,pke\Aˆ˒boNb+B-Znm{Y{Yw=r_-Ct`,5B61P 545(Po=-_45Ƒ78ᕩLk"Q:&$! IH|d-_ݟY{pW=J#ǖ-=v˜#,-;}SJ4y8>IX+51תƴSB2Yن0 s F1(hmh.SnM,(6Μ׿d-@vƏ5qG2LQ":ѬxϞt=zcchS6~kvV$=ѵ|tSP$u {WAw:v  KP#w^WVj"̷2Mo<ÛYL.R&^H"DL3Y(#?Ff%Z?l^KS P:P)L_weR(d@{_kI'Hݼ H -Eq#F淿;z_(^T*=C?532xoZZZ. AuWWg:W_7ē;kG?a==H(6=͚s xNqto\veF hY@gyvcx_SULedV5//q,ҾF(2lX%?`UBE4Dd@eZT X,74>{CZ0%XhMёdkW,P.9M,UX14b'B=DZmDzh5EaammD(ѠKu!]yՈzYORvJa[O6t$7J ~f)McRlg[rq[4䩧Z7ߚ$k^Z{Wuq pLrf ONh8iD_3'Sb% '\p \l''DgMʙ/m7V+3mn竹@AK#3v !,7/c8qE}d>|\qGw;gdqóƣ6r쳿}e{_n\r(۶}衇t ް5M>_/o;߹/|>O}3?暏L˲ҍ?яr{Oo~s̫E]_C1 +;-@!nm*}S髴,I+ зϯLPHyȔ$b ,hܑ$vCEQz';5T3Hrf5jgUDE6#HҧzM k{)Y -},6R(eV.}+yTcPK"+vqIU0h7HKF8PDAB®m9QYm7櫗^{ϟBSb-D ǕуK+5գ, 0a$'&X !4PD28j0 }!2"L޼ʷٮ +I hJJ/h0n)" ~{4om^Ҹ+f66zz yc[v*qF{x$yt- 1#W_җ0c͘W$tw8!sD˛97gJ7`lT$*V!D(ʜZ'a X1 ڜ'I@\Jj X{̱vVu,m~xc]eoQΛck)ْbzP(?lQۑkq!1rF7;+[<]ےJ;V[ mNSyOdT40XwIUgC. o \<CPlWQEL K?-.|U|lib=e$X`lAUT9X)&ل^GZeu]D+.Dz^)ȔkZ_Fq,Y!džKHe6glqAN0RyHWWX =3Lk!%$ZX]X^]ɰ%/Pe@ɽO/Yb^dg>i&Vְ\2ӱv#%@+|o_v{]pF{r4XMpceS}LZIh+K^Î!3ȰP͏ތǼRLY;YAeY91ڤԃ^.*!g1.CRj5-vTI\oڛL>-65w)mx;duB4|0]XֶmnjAl'CIJ2cǛmݾzF4a4],WE悤hu,gJsFQJG\c n0&+.qQ_Ը UM 1l(!XZ2/j@Aq@Ivڼ;SRal8*#[N A4Zȷ%A)=jgi# &X(HBsl4iH2BļFLg<4nbSpǾ⬉13½FgF0c̀B`._$|^,, cA0N(C$ V6,&=@iFȴd0Qb 0B*aКS[nnƱ̱\WG(g=辩|-+UYeLYdDUT$t?R'%P}Kq铇~D&MrcC?'|^5*gւ`ܓ+#[ M2$G5tXu/'1m|CA`ZaG^5[l/1a2@fGvn]v5$pgmr]KKqidGz8On餓s=D.1ʬzuvCA{[6m`ekɒ%goljAyv 0`IAZ3r_uۤӷu چFvдzEkSqU\{,"y.CG]}f$s7eP}4lYs@iTA,lt)=41o@cMV-վExRǚi,]ԧB$qJ]YkmS7IԵP9YQzӽS\y/z }Z3?/Ϙjdf#T U\ф*15 hz| 2٤'헜IC9TSe-x̅B`46@ k\PicˋF(4%GHp"#˫:)PU;ؘ/F/wd)MxXȴq5=3vˮrKɍX&UL7枾FoƼ`~&%+kv`Fz\[$֕ov.u^D<2",!J^!֯)9/\ 3X̕2FȬZ_3ŪO*;24>w!9M 4 vV$%=< n>*q9SOʆ[Kf,:Hl۫m`C/u~3喛pRobIb (uv[l&Q8f?pz*\dv-!g keWӂt/ T_*8 $B-Qh,ɓ$J*5R֘*\CRdz 06:5 4Y4^w4( hVOD/xO&{A b H*$PM=OF/b F(-~C~=b,i 413#< Bd< `"!%zHH)-J !6tFIcL[5jzJ`'f!iÿL!ei`g)ow2yK;' 乖@ |X˕ūHM"GDmjtVgw?Ջ-=jWN[܀ѣGg.C9䦛n* [-6_{oIS?5hvNѧ̣A e^)nas>}m ˢߕ.Hz.QaplGARdbKkT!mS-$0RbHSL'ȅ=Q3^Ʋղ:IaZdѾ.Aʨd*@L45vo7.'hc̥u.0k8lJ6v{.\|@TzXOzfrU"_f`$F$QBMIG JDT'',4d@KO=2pOViX`'#@l;zrLbԞmj6ʯjT DXQ뙇Ī?YTXLoI͚.[Vq-C5g~T}'?v^w ɩ0NhҀ7Tzk5N#D~ pL$8HER;r,o2걨e4eRa\hHE4*4DG(b0d CHMFEw` C3Ϋ1T|<402{ lc̝_*:'?q.K . yu=պmGٽ;V\G)]uU~/\+h[mJb:7&R^qc:S5̰XG&VG[d{5݊MY<.YISi-cMe&$kLbdeU F9I0+D6()SFcN` }),ӰԌ&lU l3Y<\&ښFhhJRO 垮$mUZYBd+(6"c"`gƆ&QziĠY" F%U$ Q71^L_.Z'== +C̐ICD1_ݼnˋ-pX}e(unuۡv͵?WwϻMk}ꩧ.מyIt/}/b箮/|񜧟~zر^s͡9/G;\=8[lau{\r[u={ 7H0ꟼ;%K9\ 6˖-<ߤRrD8lFQ9 W?pkGoذW3rޮ[_+5jMnȳa`j!%a|4iO"MjZ'Xa AQl e^ܙ[^O/ @@JEl{E ):@#3 "6::* AZh ^ksx$/!E"{{ξ笳Z 4į8hfwVƓ>SU+VZq`m7c5pdЁIfSiv~[nWx,n& c\'O1f.1Dil]ǟJ[ {)6"F%X [>="P\WR7ԛYV6V. 0+3(é鬩Rdk[ Z.f AG(c}e/y[taknWW;VXoY?kDѯuU.Iڊ̨nw\yܐBUƃ'|y£8 $l3EϦs\:ey6iԠ/!~ ,$<p`T5ڂ%.M"D *Ng`]cv[k8Yߦc̫v'l;^wQZ**9DnK.̝ o1 v+nyի^5a~7x+_ur⦛5s;3}mf>[rԩSxݸ ߗdߟ|)zÅt~;.!sY+s =6/Zlkqv:z.e ƶ2hOahm$,@#?~9x2iҴz4 K'xA`'HÁ*UZ94 i cK!5@T3FZ!Xb*1.6cНwÖ;41oy\ yvhu_eǨ7u2_7Skq[;;.U[-֐9 MhhcT #儲H%TH"&ItD"3D<7А m/ya&/Wm H ":uʚf?F'Cj!69޶x8Uf] =wO|'pW iqKoMAO;ߓO}-=|ܸZ?иY6ݬyY\ /C5 uĥNE{g{ʌeLcf)͔,+ -H.x!hVf3+WaYx n)ݷ[~ă:QFVm\9o[[1NmtR$C#<-`ZSlF{{n5|;&(wϵ\3,;~_zd#y7nV=;דּ xޚf'|cw?s>o}W*8 =1-2(QfWδGؐ_zw>-Љ1-A!bkN̝3i!ok3qǟ|xŞzm( aQ $JFBL:WP\wAF_ubEN2 *zUD S`;imkWz !{k Dx<,5^QDM Cƹ0vy>\R$_h! krq\,Mt_ׯ=)čTQU c6N,B2.3,/V<["*l8Ol2-D~2 CLpjV%>-wXYDCJdڛJZ  ۽8ISϾ]W/2>h4 u.zy 8@ο} Zy3~rahnG_1.]r䰳D^pV{6E3(Ph&AIPO凎'>mB&a}3D>X0A <9coue(`A)B3U洂Y .`Z4 à+0FR@h6x aDCݧ+})pA{8 o\= E@mIF{^<WvXOO73g^dU]ĉ/uqv8U"/Xi0UxSmq Ș4.U{m^F:b%Dfme_Pg6kpulE*5Jb I-`tV(] L#ԸB saKv]HQV\,xW>Jo!HBRd>^kE*Ɗ|x93 ^l 網?כ$~X,J%"YNZbS̜0ck^D"o۾׭{V&4/u_rڂ ̈́f*|zy}=>M#܃f56l{6>,*eDJ3YiY&!)!V\Sx~$O<|*0Kg)CjAXVLߜz,o\J(cr3 ӬfD2 Zem K:A{~W'Ca(x‰n"6`/f:Ӷ/Կl0UԸe`& d6l}q s{`n}{5볟Gyڞ^xk#zO=׼U.a㥗}k=.?F|8!@5k֗"9ܞ#xn38s_K>tٲiS~3o'2nv~i{Fh;N?s9ꫯ>XqW~_\.U:k_睻iv oxg/󟻬h\ze8m׿]tѷApw#͛wYgp~ਣ^-ܠcF#ܮyo6R _^N'ؿ?0;\KSy"I<*3F-r 5 εIId#@Zo&nh"hKx=%jN`&#gNG+Z{Q@[23' %/sacN R6_ѿ4e]b&H@8Cp(i)Dj!&f^; :>!<@@DyB)RgT&<pe>KTԌ-u{♛nsTm+Î@X(ZT"Y3 ی!Oo! 3[ϖDf֗woٍ77ēN^ɡ'*w~;/~6 ٍ7#͇eُ3ϼ?oSldt8-}~zpK4iW\o~sgض{}Ώ~yg=Ӧ!QL6-8v㦶c=唓 +/-lw<mQJ9mN=upn guww࿿1vnxwgu; Ы4FozFm-4}jJImK'X.--r؞ajq{YPh*X.aaJDd=ŧ |[H V91IAhjgFq()T׺;PTZ HF̈́ _Kn 挚, V,)gp&,U`§=d$"#e ZXLq0 ɹ0O/pI`J=M[R0LX6NkLb Bu 6!ӾQUmi5𘆽ݎM+,*7C^q12xIш?|N$NJ<7ӥ8rtTX~+,řX0򺥑N{s%x&*tPy>3iT_<7i)F)#GgeydT =\r@mU#t1ʰX<X_ 2;q0:%(CHR]|,Wwۻ$&&|5FR+0gc&Pn ?׽è"gn:kk/Y]o{ސa5=/Ӏcw bEl"ň,!\tL44X(%傤F,$[==uvp:y\pL>BԵDMUI_4{C֢ yEsDA>o9Oe{ÛS'ޗ+v,NG4*f妰)=03`b{MŴA9Z'錛fRBrq*psH%跙n ThX"yDSUYSM6hC3:{&!̳?u­;"d;$FHj,łB3jxīPH:K~Jڣ+v>&*G5$F`ώ(Z^&2iFҩmrm]tO?zaXZuw1rL`Կ{1p;[lz{{yB_BIJwл٨fD,SN6f9oV_!Rج0ޖ&խ!'0SݧnpDyOҍ96!O=>c/~?kc"6@WF* Z@kB' C+|6 $7XNj WʈȒMmA]] ɫI145dļ4 BHdqE.&ŒY ki6m➱a43^V&gL3 H@k4Gb]?NwO2C^6={C fr2pS<`T9S^{ud8uV±0{/"JtI Pvt1Qg<) /3U _X}ܨuŤO??{|OI"͗l߾Ɨ|SN%,lΙ:l DX$Y%BGg0(\lƹ6 *w5uٞ3JUVU)Kj')}H s?LrE\ )#Zq26G`'kk7MUK(+BLNTaIw$K H1afK2_HDNeRjCC,ń.%-&ęL~[8{KWȶpݑlmsMnX|D97ErO+T*n?[8FX׿GFz[^|I'?Cӧc'?y׾qDe}ӷXZj{?SOs+9o0 ?/88ٚu饟Sž3v-߲eV[n׵Me JZ'*Wm7#v9F=-{ͼ?Mi/iQlӵHаE3<{h+E2QQaZ9Q4;+$$l`߾G"t Tr {8(T8%bД܇!Q@㙔MP_2oY}lַWtwd^,?gt Cg̘O~2cW/׿i7߂=cu;fC 'Nbi_Jf7{KBJ=ZQ}im  Y Xnk+F,tԳ;*qR^R7SM#+VbNIōr 1ᐤؐ(@4pv6a($+Re~sԶgIBdH#͙ IrDXUب>^@uh7T%B`KvD,O5Q Td >ʼn"*Qkom=}FShAh!#ktЉ*M~@u_z~~p cҐ;<52ʈ{ Τv"bDxL @Y}Pi_^*:5aTT#X2_,˅b D[)j& : WI5*հV )}M3lS9qRZ׌9Gugl"yzyG_\Tfl{1m(Ň-C3FLmuAszm2|QodDyÛޔȈV4Y|CR^)=v5?VZcWdgbKf0s&3)1s@ K{(mPg+4/, 76c=®dE-.eKݸ<W+QHL`i1dYsʋ4juxϰcLhDz4'CXj(kMLmp ,<0(  >Vv|8tʥ*FTнlI9YYg"̱b f,3L½@7+RbuD;75Ʃ`۹Va(JłR Yoc9fp<4`°_řVI*a#lB/β5VV-ԊfJmc|da7GymU<үyOy*u*X h {Y 4c0i TXX'тEk}@[dVp8_Mkk3`cG%㎅n?w͡g<};Oÿm?sg |-7;fCf ~u\7lI0$xwwu浯:uZ1RՕϫVV&Onx[]4f/l'{Qx=-Y󀽢tcMk5ӧ'ϮMZ3P}73(8׸ @H ؁z6_"59 ͡FԼ̡aFvXzڿ)Zs<6"%O,& ۴\o@TI|8I@3v50^jhD7!D`{T!,?9_2_ q15c%[2tRt°z ƞp~>qo8[0;N4G@BmԴ JcE)I!6"3r{ZҸ*,!9 {;I3Aq&UIo+H5BJ5w'sawAh/؝_[ܼVE슦EZh9Z)ZvW'8P}ti.¨in&a:}i')V{D\ =ސ(y1s?㢋>D8,g,6CD@n&VQ.rQwH0+3ը7,L"|J%L?Rj#ℾRXڣR+z.MKHb+@0ߦB +vb0T2M]cEڜ+sC fN5k}*n-"m-m6Z]mٶXsEϰdTW54)F @OcBxyzE1<&Wa2"V3WV"j].\ fΉ톊44's @']&jlk暚^X[(3cm/d`|ک[!Xg~b+}w}Ae|)bLkY( P,DJxC"Ț8*qͱ ռ1V;c週<:DɊlqF%ڡJE)]~O*o5Nvo:e\/>^OmиTV,f\8y N>\L W{KG= D~P Gm6L1}[nGeJp0&'ħ/ce?!/ qLPIj=A4W4YVBYOtM<̼0(B2HSdj09̘z=& 3^h[Lq.&5XCRjXNEbN&fYTݖz1,8fcd=1Z6c̰w;{/`̓猻6@J5Y+.n.זBj"!u`b|d"H(2"/Kӿ9gp\x]3˃LkI|8/cy뇵)>'@I+lVUlD2Ǵ2;{X98p((DF,m=3`()ƯH.8B`r ZЈ%m"̏YZGq( !cޅݬ5+eXR!}T,U36jv,yPYHjm "͚ CxUSKvp);ONakz2 |*mCYLo,D+ͲܴZ`.'|qAyȺ5#s`ſ-ŧv{p_29NZB }BKH"Q̦SJ2jGyӝX$pC[^ )xDR! J91낵"nG={.e~B&$izR-(9Yݬg02U=ӴNN剠XҬzwEȨDz-q4.ΑW3_?}co%6YUKkI`b*JRGf  C Or|T*Yɒf f(C-T$+k;x&mcըTm]i5ٶ>cJZ[aR\v(#)111cV~}T>ç8%|ЂG:S.^-䕁 >uMHHbl،Ӳ$h10F/&8kET.sK]Z沓(9+^c< Q]¡ȠJ,gh-)` qO/`6 c7xFPƄ EHmQQH9g!,gTDFGvn#,;虐2nhe XF|3; ?0:DPbŶ"Q@ n]+ai ظq*Z3A~1Æ$XFZ J}6 46?m֤LFu7/:u;C:6S VV@ඡ0I`1OSka`9jOHI>X2-!Dd A4fJLEgYyGLphBSOP[SRV))_P}+Ւ%ˎ9|/+.n}̄eCtժJdJ>5U.R2IW!̃}0\h')3G 1F@k0\|8(UG!b+2%n}FH* 0,s)ԏ0DI3ᇩ5OYOJi_σu:fFBNͥ [돟^܌f- ҸYlMx7GtuƿA2!2!yi(x4RQeT/E$Qs^gBY{؞.N\wK A 4Wokพs!ilFvեS0Z*gsM2M'kFlbIFpn/t'{N>/e,\Heƾ]xs q|Va#?`AOJ@uO03R.p Ix '+]? 9! Ǵ .8塇JUK"a<0&,y՚aX Xڳn.\b޽nw$'&U8\mH 'P ZѷԷK&jd֜^9:nR, sw0*Ȁy]5i(4Ͳ}caY>1;fcx|~7I혍N۲nٶ 0_K;o2t_dv(dXVf[[`I/6w⊕K ʚ>d `G\3f#sl@T)\0< 1mH @X A6.lX ccNab.LHkҪXPȑ ,!n#neXtȝYyQLqW\$5(INpLJaFWi5M3ISɦecp/άLڠ}rE"s89|sW=I{DN Es4%+ 62V'paRBRVhˤ|;Ӿu~F"^ pq JKHL{#BV4[Gl",[sbS;;ͫ6Gڀ-;-zkֳz15XJ[ۂ^zM7nA5{()n(Sgj [s-I*mw#hRZRe!҂UEݓJC '2+ja/*c/M|mo}1G|㗿CD:(zϋ:n0xF[% nP+RY2ܘjf*Q P&жQj`Ya~!ix~h mDXl,ęsfY.7V[&b4>8".P̰=YR#LĄVNҨh\#l顣xkYԢJe`tFAR*gI$ƍic~;fӶ[m@lA7gȣͻDf ]|󿴳%l я>jVm7 Pb UXRW2cnU-P^B I:]Q9*bnkTx~wùC.r-g %\ê¼Uۋ1FJELC q\bظ><)ETT ΒL@쩑dHv#bypjxhe>PNgjg~RCıL d֞QK}p]CE^ ,ˮ̷e'rٲ.du Iwc կ+PY賀R&2-Zuc1>‚LJo߳+vn:do/WgzMߍ8b‹;`srG^3;@u^[qCԷjToj 79Yj%B3HyXeI S<6O]<яǢkD̜.zv. VMٍ}?Nu~~zw4lv?֜;g4_ZtƔvmߥ~}{MGz0ϯ;b衅?o__{#}O]v7~!xT=/%,_.3&S)ʮRczgis؆k78<fM߀]+lMQQԋ\U4\צt"rZ.Ţadh1.8/AcZ0\5V5HUt4*_+ ;qZ 11-(|:gcz'k X󀽧^xȖ,3_W/]g{qk׮'ؙ)l];f*Zw@eTl",<-kPn&<^*c/TqhU,zo[Jpb8i:x(7F%`(rCNe*HD=6CT?"hM4}edp" \Vtt+};`Ubb80l& Q4SRoMdzK"ZGcYc<Y`nF(UZ½CSijp5 :r.S/GZ 6<K0H] caE4!g 2c . Vx', ZFs0Ya Be_EG='Λ;~b!w#r/hbaono:S;wxo3[:z&Wt죎~q߼?޾j2ӵ2\e }`5auvB$,,5j}bꌲ ө/"|K LO Q[3TTM9'JW,>ߟƦJ! 5WcnObnvWx ]Xpa6-V@sux~J`%$lll&wW!콇Ww@ds DTࣿ:9p;3fωSUm)/ә`ԆqfD*ٙ0'kB\$~EDEXLY@4DmaT(Jh͘C:-8r(0 ̧͌ÕJ/Bp;W,m+U<#kAJqK6um۳)эRVg`H.%]^xft&<(c2d,YQȿN;<~}=WbX !aߐμ.(褎59i.yEk,OfɧqL>|普: wՔ1 +{8ι"Ǔ[>ӽӎ#}o=w?ݗ"|/k-3:?4V=q-Mсڠtf,oF$Ѐ{`+:,iÃb>9ρ6)I0|K "ʭ"3Ip+ =3CJ~Zɸ!X7(Y y 8a=a*tcdY.M%V1KTe1 -`?ݮ~v Hf#qnF,nm ~{$aֶB͗m7uόm;ĆEwbwE0_ڿ̓[د]\K]ڒZ6Tfb9JDž"G-5=Q)b6GUشK/XUG5alٸRd؈S) [8dߒXMsh|%̅qr%IL)鉈 iIOwwu2hx\0ܥ,%6%:ca<zoNw#qRcYWtQ%De._RpǽhmL%qoyoCk,}kr4G Z!9 +!J^9) pX.DTah\uu+GfjoKYŤ?"=ulc3Ol8~w_S{kƌ.{'>Ad~Ǘ, 9|^J袎9fyǻ}ŵ7qo\xm팺 еZ! ;x6Ul,kjf I=I=sřGy-6p4+f$7[ v7@l9EZ-%ٖU?ş%Ondko{`e}mmkkb^՛N٘1CÑp8˹e8!b}IE32Jl}$P3Y̤Ld (sg B n l7w.ysͱ;wm3q=U{WzNm;uq/k@gW?z?ߞSN9N8󬓒$އ?'+~oJۼ4liӄn+G̩Ώl`=q\ $г!))†U]h3q9MENt04"IƬl ֶmSn{u;{3K'"QpâmN`Xih}r7yqbw0F&QsVv 7Cz1#LSIv (GRHF!.vfij[㆒4\ʁb[$ΌNɔ*sqm7!`.=LǙΊ 9*LX$aaMAbhQ%eTD8ЬV$Rktc` ^Ֆ3l KCģB~}{N)mC[4#̥:,j,m-[9 ^3^^5 cMUzWC8\uNt$Ȱ@2yMZ*ENT(g W`Gg|N=+Ng@~^Ͽ n93.;"sϽҋkWf 7o֥IݓJB!|g}t9q͚{ޞ˽` E7Ilr#u]i_@=SKq:(%1uJc@I!: "P^RO0x{p'眱JN O8 &";"mmkkv~B{}' 5 ;{pO.,{pqIݷXEߦjy9l9E`kGG5ŷԖrg=N׍h[@G +vjLL`gP\5c O9Xq̞~*KJ4e9 z40BBSa!  o,&&i0CQط(*Q^H")2KV(J"l{ni {#%;aA!r!sFE"v-, *Hbs W#BHPip@/xN>W/_O HCi@e' 8 \thUۜY+8s!3ra1h,֝=bSמvڅ -zi|C>pBkȁ!^kLs_,^6EyE'-<_Q.7lTjZQo𧠽'{p ;:K=3{gϚh/ѻBV;zǰj %7+I*g 1d^Džs α0 DyRWjL^٢7[VX|]+hOuXFSO8Uo>fɡ)RV=oԶmm{^1 FOqvTLqKmԶԔĘEw{bw?zIw{Q|`uY'g`DdVĩl4~_!̝')5:S`$NX6ʀڱgD^qOąTP*UMc9wA@%<ɼ0e  k2h+̣\ܒ09~зp#7pz:\GI1*`$;mrC̐WEG{2dS4|Knzq\b;b Srb 9h Mee1Op#zin]Y c & 0:j6oF;/à*4CQM`Ij3$M7ɫWoO[o(3=9gy|he*IRxkJ2&6;_^7'7Gup"ӕyWlFDi]榛wD-Q$g~NfŤ/DR\qpP^$goq+:pI 0í)^uM)l$Su9$%;ֶm[lgGtmiAVO0Ɍhe)E"QihA8n58Iq|p,>if*ncd㦞K|7{ڗֽf5@L_2ᱞR+N/xOWkW#Z+ܸx92K,@w=Hm#*TlI,@UJ8}er}LAaPNb< ٷ0J+*Kk*7*aLҍ6=RYr܌/7<v;TNa}zKl( 8F)EAxHJ2\ yYc%J`'SMLrt9͛~O=dp0:R)n F%?ucיٜʈ[ܑOxU%%;t̸1sܹիK<ӟv|6FcA6gNh!HS{ (by9&AⰏ^:'[~pP.Yaej6+V8)o&Tvɶ%u)CvgT2yp\g !K\bmb2j<g 8-zc1g6&`yQgrx3 hֽ%)Ogr9e+j w oa1ki~=>w_|rs'dɒo~e˖m3Y|W .خ 7x=*TDQ7o޼? {<޾ОIҞ~{wr-vmWI_t?Ou{<ēO>yyhɒ^zlA0k֬3N?}?1nw<ӵZo~?/۶Wm~ʼngNl]-PyVypl'RIS)4;ԽiaVLhˉ@J&u't/IXnܓ$C#5EEbK*I̋z=f#qà3#> “`P%e`7hVr109JDi ^7Jh5#oJgsqL*%|^Aa)hl:)zLb6zȞs~_tX3Kg:FvjP~8&q "t4u V[Fҙ´{J7& nɜrOS)0zp&>?mvw7fϪttd=]: Uf$荱+Ci$ś   ֯ -_j5cEb,p^ es8qJh#3m*Os+{6Ll@XC dos9;W 9'i0*3sK ʝYY~ѣQ2"CK/zÕJgSPEOf10` ML:/ΒdʺֲTs}8a#XN28K2^ U.-|m/\D`OklbbeΉ"z|o*lbeoؙ].?gk}r7w{i 1NOsOusq$|2\V19ӹ}ٚǂ_XjZA}LإYeΉNڂgz`a,N2#=8L[d)=U8Vb! :u a{$ }//f`w:NئEQ'!J/bϫv'>r:ػ.;yl4Kv%K*PeW\+"Mk"*6\tXJBffG1p(lf5z̹z3Xk3PN u+F<rSglF*7j<M$CC]ޓQx%}i.[qٓNwg/9!hY΀8͂4r7)x!fH+thVc9(mr8 L ~Yeu,tL<4l8+,pyX<\~$ I2aMϱдBP2407#v+CvLhL 5iBPZ#?,p ;9K?wu>l ?暏}k+Z;:d_m;;q\]Z w_:UV}ȣ·w飏tvv~?P^f͍7~ї}{O\{G~n)m{WHR(#mS4Xʉy``bˈaar붲PlKbg_m,>y":O6O9vL?flhO s99]L5; ozNh)/\jRGIe֎4 `lHѱne4ty, MfIҗId`(= FTSa=(@LnT CgCb8DWTJivNSj*1azF NYWV[5LUE)24*эF 1Ex lnʑ- b]d!_xɱ2WTX! /MYIy u\+9˖"&6c @r31$C5p6/WCրЍ펌tȋMT9|" d m&͝X‹T9e:_yDT£_>K+,{j~go/Ԥɬ%IkD丂 8Go)z\:A'Z|niNw%jF ,箑d^JʠVRZЂS4_&kZ9*UH1j3=f˷,_f$Pb7@clEG9w~)tF#ьFTJϷm>|K_H Zf>` Ν;?~GGGkƳ:]n:խjO: CXM^7'v0/yhmZ }.\ /,{CCC߼w} ,~8X'zvM_k};^21EcyCk?lh::u~- ~)%Z9SaauSɿ=';3 Vf9\ At~O缳-ZpCs'<@RT McceST19 Wr.a5n\Hi79贉6q`I`HXCZrZ"ȗa:)x`QORyR:OYY83yiXf~n*Iw_5bQ?( (L2-fV"I`~t*=57SvUDoDw ].Oo9we~3lB~p8ZAw yeL^©J-TތE` OJ4t! Dv"u@όδ2P(v̛-u;]w+@?'U<sa~`_O~ 5\:VMj؝wݕ}i+/_$ }h-Z?-OSf-[TZ^կ~Piʡ7Ϟ5~>~5t*=׬'b?ʉe@wi^k7z{UWN|tc~m{S0kLVv4uowJyip\i0f vU*Gi3:ͱ1ŒgƚD8GM*:hg %y u²'+?{OdwV|t9B=gL#\yM $MTL:'ܶWM=okdtw/ޮ 'ȟ_ճ:o}9slZ^z>w&﷕KaUs!Vj-~,blɚi<*GkX;zKYϔm ^6!E/O5>mL $@iOrٌ ." 1e1 By `3@ /FMk‘Ȥ;ȶuw-rbak‰%I`J Fpsc~3>VlO>6[~Y"LA0!S_cK;C :hE}+8[4H^ŊsaVi@.qM&^,IpB/`uk2 8RA?Ё0㥡QI3¨*jfZ0&™l+Qs/7Q4(j= /Q.;ʄ\J޶ic?/~ z,\q_Y㏿ {lٳwʉfϾ7F#?ߧrg>鷼x氷  k曧o7pG_[utlll?|goOOkM1o&=5겝(!JO|U}v|)-$]3\*E W*^,_GH&fxpabQU1wDZFDR5,`3MS,#EKCH+R %LR8k+0XcW6.|Fw|nxS2:&N$4H幦Sj+<~)9M/㕚\)>ivߊKo5sj s6b9ǖ*9nT4" -tJV\{`{}'1C2p99bvGgg6 +RGfjN3GH gk4ƧDQ}pqJPXTwDOl222ǭ1MSՎɕJ*;prz+mAƂޥ)FX{ڶ[ַ-2'wc6ʭ~>{⋿{}=O>W^oENS?ȋ/sSf'\j#gl>__].8 o):m{uEYF&; 9Pt h`] %ܦaaݎo.NuY@GExvM5\>;nNMǍRf}eæQSzslxtΜY}#z:WrƵғkN\|'}j0Ř/ 0OJq mhnp`\D(_8+8iU(̔X!*h 0'R,UJQ)=+ܭIS9cpy+>?zCȆ9::ZKf"3YViQYXiTYQ:S&a꾞}; KV r{th)8c<.|KNhbrAjM>ѬRܡV11 6♾pnRU[p|GfgdbvoW&woU\Cު<+>DS3U~ >y+Do%d E'Ŝ*y/*:RNH}md"1>KY 8@b7?B6LMQDvQ?K2ǘg2M43H=",$Wi&ZZ U*5zw8z*aRFF:bYJNj?6:~FX vY 'n..l[vm(6ZzՕWg?cFyÆ :j]4Xy/|В%˖.ك$]xŋ[ R:NXoO{Í7~?X'<𘷿-=c/G^rK/ҷ{JQ._Xnm۶ɶC/)h\j)m9ygo(Ehj q+&qIS/ ,` zr . HژƬkWP,&tIC:7p[nJH%M-Jk$ h:Jlt ;  `#y XY059U1!Jq6Z)`^ #s.N58dlDp5!w,nY cn*a\dRYW*8IJQ8ɵ~40\ݯ궽mg4,O2:i4pPz 8v&jz Ky x-}ʓPMSZfٺͰX((efwߌ/z,"g5tΎFP8Ǵ3IvX `XZsr FT[mTK KZa~4jQftwV)lUOL'C`;vm8A8{Y(_Z`%11\ {;ʽ%)J {9Em/II]_"@Zē%=I=UV,Q Fߪ$ *Xk=^AwKLƽ/*8dIU3˔V#N}q90:LXL)卪v;aq>RE%O&L?r ΒKSTX;9s#)O?gݢO̟[ xYO_0:O(XX tx9CjJ$#{3 }qce҆UT|&p72o#ml+ˢ9ųb!  H;V=nk8AEAm'' "N#sؿ|zgѻB8㩕-1ƠuSfCl"dA nmKm[[w _ W]iƮ嫯~nя|~p㍭+ܲgyX淼yI~wʭum'ug".fri"4z``p/qs}7ۥftO<ŹZU兽]R|]YwZy֢INO+),M\NJN;\(y&;/;N9C:12,Yvs9@ʀIsHH5i:ݑFj-t@:741a;+I 61 $^VcfV瑹8[-kCR[I"XnznqFޑfcY缘88/nD֚qm{=Z^#e+V8I;22׽]|wݵv__s=<ȣu29w%@?~֬Y t[o:dt?wwοr_t?-oaޕ]r[7.y{ן>_hv7U)dݶ~s'H&cfΚrtO&fʦ@`F{CX+qXrN-]QkHq3I)8i67-:{֯3L5ET{qf2`#RHC>4ws,@fb73X1v‘P5c19 xm匲8"tPEFȆ4}yk_CkZ}"yl=cmj3dw ~eZ'VN kY (`@ux`kD2JPٌrR&@5114兄B$Qa%)w;#O;m_b>bci/MPY(sNS S#d4U)OI,-ph9FTB#^Fk,-z`qҼipcZ4qX@e$=2೦=PP m6`m_@E:flKr} d [x%R]ldsg>.TUGÞ]O@'A+Y&F:?a ,$@m>ֶ);U(xA_ }ـܲ,|# +op|;g@߯~+s}mCqm'DDv]v-?O=v\g>5񶻻˿\wk(\tǦTڌAޟd~2u'˧)wO꣺\8Az\LIVjxxRS %0t٧ϗ0NtvˌS)TN[88U^@^7r`65gqGG8bd `M0ZJk6rn%H3O*qCjL cu*ZB2&%29F1O7W_ScdHup=)ʔCJgAdԛq8++cb0jK0j,Blqst-|I̪ BYӒؤyvɼ/0YHTkKЕƨ'60Y)ڭq 3;OfN1\Ux >]ؖLÿhӿ,vp!M\ڢx4`SЩH$[ J%GdQxЛAQMU mB0:tQ )QavsTUPBS:B>/I!gSpf"8+<GiR1@,=4 ( i6_ڪsxwxQ\{mVN*FV]WM[\irk:k^vW]yN\uՕ-fhB~-K-m8g9U{&o~M_[t`r\ƕMIo/=m,r`8r!=dbC =3nmj wFR/z݆aE%d"QQ*QWQifYp.!"B^ [S2V, !Ai̖m]c7K,ZDV7RFK'Qi۫%&~Y׾! jsfEJ2ߓ+E8LqE@T8gNJJf`bTCir0QIG|0Ih+3N(A"?VR\kR '~;R(1ff Uiyc^{ƀO;2Ǟ.ۯ-|jѽ]bhp6~M75?~ˢgoh6Ü#8 I}NBK~u/l~ 3ޑj?4w{9t/0qC便 x7(K*XHTY11A1F6;|Mqu>X)!Eg0aOeu9O1hSR!8hZsҊB,#`7RKC~ q+'0$% Dә'8mrg i\@Y 5e%F4WVN#_!^{guvpټoaY$ڍ<όsgv@8Aq$Ia-Zl2Ѱ?YsL"s-. s ʫ0k3YB{ ]>5MtpfWRT #lʤW9( +.]y!J=i/O>mO= ȏBd3k.XD(@W>\ 8t4 3!YY:_U.+/?[ ¦u9)cϗ0P8tIsRz R)dZwt`yt$0WdrPaNU &}_ҭ'Rmą (ͣg+iN&hSur9a,hg z0CsW58O3ᱪ֙Fr% @[:8d"A[+`Ӧ&/O39$GU%+A7`咲 DPC%Abd[ElBp{qw]ͻXD$@L)*X%r:=|ْ;{[Nl:˺dJ)KHQLb&IDZ0y:U`,̂bS]uGD1;V oD-J<V}Q.:BQnE3錉,J,.%0.@Z|Huoh4\rRGؖ7ڐ(nL8Qſgj‰r)Oh 7(CJD2'6_|K" Y! h+eGq (w@ T`\.bQj Hm$P $|RFq*reHS>r`'s~h."))00\}_Wtt-EaL9Ĉ3Dn&aXXeRefPs$RB(~N@%.IU\іk6, (1 E1Ibc^Ɖ[%E9(%Fr&2X@s%k~_?}B\rӖS5AkGwJPC8v 3 ")8) H++~dj]X%Vwp ʍZ@ƨd 0MZiLym*,20<, aG{F*0E MKpmh@!ROTZ.R haD\)IMBh-v :+w47@?߽Fh4 0,$LYQ 3 msًiSM۪!!e4F>ďS9 )QJJ7cӤj>NPƄTشjK+Q-+PrLPLc2H-$Us6\9ʬ%tqTcVq.#j|Q #?>:i1-lgcAHC0lO(RsJzHNl/ʼnZX(QX!a2rC˱qbXM"ג?/QP0r{?@E\ U %;oq\H=/~i! RCW˗wl۲$yAlQ0MIzXj 0JJ9aq)ܨMBF΄)E.aZeFU+_)Qkn+sTTt,8&vjW FLR,\Tw|3aL\7 JSM;qyTh4w:Z^0.)rm/D_D0",c`RƔ&c"㚣"ZX-q)oDB*K P (AZ*70Rvm6*\BIzR'fi$] Aµ*tmKs*SsLzIy6T8iPF+ k`eXs2U*Fh4ty).[~/m|ָwO$G-&Z(8FbдB$D6 oֽ)d #0YUj .l9L$,یI2,G0[JB7f~cHQUѵhGj8,3(MM-j C1sި>T"R |#, b P"DI)i/ aLG>S#4T]jAlR#{ϴg)%RJ lۼ=ϴ/RRH)|zү"ϾVfV0]*_յ{Om9)qÒc^C] <K _W-Tk0 ܈)AL  U r20hs5Y,,( IJe*3aH t:3D2jY# )',mp 8V_.-~Y1Ã~jjT!xkA\)Wq<66f[KڀB4EXh4w]Ku{_ T#-[[_|øjUhjxYkbT0 mF~$Orr8~MBLT$,'%PQ 'ʓ~\)>I*XMqGpcBjƅ%eQLC'5Ձˏ`x [>2Y0;aGA0 ȓI'B%H ^%RVGj%fRQK)X0-Pu7K5Qā I : 's6T|tRϼzss1x$}rԯl)hdk[G7/y`uQ$)VεE&TͨʈeªU20.š r° HNv1(l&lJ|!2 Lc7J,Zr;,;$nXHhs1DمZVXؔ$r)R#)`!Q8&n"lyǕ̋xV"FP-;F\`]LTn:p"|l-ヸ:[.y T^Ֆڕ2lkH'je7KbOgۛG'h0rŶwrZ6͈*ˑm22N߯[\U_]eRɚUrGLdbMh a cֈ#L#%rU \sDR%:>|#%*Q*=r7\u\ RBP(#.0r\PnaD"lLG!@X9K"RX3 j0 ɄF.~ra//LW}/K y;@e6wpek^ٻ^!C,X*$"a,v8( M&TF:ab0JLӔ6i,aD.P RK,NRɖ7PjMzڠXL\`bKJ dB↡ !Js%*liϑKqw8WGqd9R; 3b2(/ufF\]Lߵ-NS6kÚFmW~+~z63 #Mml'gRN8k]Bvuf0ጏٖ9q W}VTF#%24Ma-3VCS*O(11U!pqj2,$b~R̂}. b!8(aKcHulĘ(VYCjC~ݮe!-V7B 8CP`°A:e!RϽVeko)sb:. /17ږi0Aq|={Z4EL€0)~VR!#R[P:npCe;R-QZpr{abտ<%5!bDUZbk$[;v9`A`T]fP)URZez+TtnZQƀ$(*byA3I0.IX@f@FѼ#xE[%,eO鋂WF萕oUWvẔ)9v@TTX_*J~Kw3ferXD kq0r+ZZ2`9vU<%-3&OT,OM1+2alp`KWp+B37nXKѷ>GRYG$"8Ke r$+@Ma9ܰU+1tU+d\0aDjSX2* [0ҁ* Xf5H?@ ~w3_I꩗'yom^( ,,\a> e1K+TYـ'TX"(c 3JyKvZ YlvP(kG Ժ YRr)!bG&}[TɁ)sdʓ% {C|^BiצtՐƵ[BvRr9 `lR4S9aD~*dPsbWt;zh/FpmuTlzlٹ^=_oݖz WܨH鴹AZd6jXV/均jZro}ނІF%B@Ͷ]Sy b ZY4Eǂ Dz0 S3P 9ʔr0J)!  Cdn̍1t&DN (|y Vl-Rʵ=vBR)1-ʶ+a!6ϔpج~~hZ*J8T* &%R0\WFJ7{ޣ'_??o5ڐSWv%ahCWx+7u< |%>!HQB|+fA`YJ*Z,'gL K& VmH 6YaE,%5CD78YBʾJ6hvl 1t0"Td0@ Q2ZbX rF-&ȱ]L.HV02 X_V#Jҭi?8=H $5e}0˅Q١]KHF\ NU];Y0hCΞTʱSm|;n߾[+5zz+x!:98?ÎK+roG"?09W١QuK>ùrLàђ3;o]{`r .T*jvt18Q񟑃`RXNV E<ۖF}P}n-5c->eQ[llВ%R {v{K6^hM*dџ6sfqUN*468M$p"ۂ<1j#a .-l+l"tb-;#_Zpo!|uto& 6diykĒuA~X0U#7f=G`SB#6bلQHJA1-˴ڲa#A@aXD9/GP-HlhLj"!dV0TM$7 F4Ð U*~J0W }hņ#jUB`Fjwn]a6g{:A/bz]5F\NUc;{ZQgJ!coњerأ&/Λ8+&-ċc#%N<JHd j DK{Z(teQMȰVXqˮQP>V#+V9j"d"CX~qAcJCPERgbTE8U) ! ^խΗQ7M12GQCH5L\o#E; ڑ I 9.Muxӌ dPP (pf[3RSdO}A\@":?xٱGcfK?5{m!3Pn!;Q]q7W1ۆZ'ڽ\i'lf,E?thAr eY1< 4a'XHu8WqG47a S24Y9P2 \Ax>k\(.ʀYX&i7 [5D.rtDC*1҃6L=jPRZ5⩟/fĀ2^kBlWM@Y>40LJ6a%nfA@CE 1J\Q}=!jR0re,(Z^i lX9h[mk~cB0ç&OW^ػeҧ)Hcb:F6CV߷Wژ*b ӶCd 4)1QJm4[xX`ӲқC`@i" gCVAKDo%rHLjݣ0G'ri 8 sʥB݆㓎uwA06Y(ƌadj-@W[h4‚5J%nrh|,H=lYhpqgg ahhh}m;'4M_(hZNe:T=X'.kڏAu)g7ƈn'BT07T*@ F%!A 8-6µGYV&D8و|SP5M״,̕B hA6MCjP| GZəiЏ"d؎J 38,'9V[.ϗ'_*߶կ36i lHfmy;Py |ൣ?+yUvMBj1$1ǖ#e9 Bay ~?P4y_S^f믯o|b+6nh9F9։ ROgwi+UW=K2##J%J&힞,c|J9\YNfK/j!QZ9lPzb1'{*!T2b"5Iʱ KÛzc_mB5og Č2Cl`1q (!ضHfH.GjKS[ Ĉq*W8:ѢBM3 2=g[mp=bŏ-Kpb19sGՊl&mVQmq ?geSHʓZسE4?3ҏ0o4ڐH5U}̸(ɷ X~eOTX5".G¹1Q cű ľýo跣h4Myӕmj,PN96zTRI/qIo)]䋇mۓϽhSO}7uOd#X9rAP Yb\ٿq<-0\l"ĖaP(OU>\@C5O(r(PuHcG<14.uT B`hd" LJږZRޥi:J)DfER>3@L#8< !a^WιtsxѶI/է?6?^ X+_se*0(կX ) cMi @Zof6(V aFȴM7QsPk%0e;Y k\0d7Yswоe_63TQ;7 <-A=AȅbQ!eP)kNxhxw6\*3i!V4C*]})ۚT5EKQ| /g%YI]d6smFM/_1ZMJm¡B}Pqɒ&l륊M[ziOKuF<FC]gWmB# `e]w=T&2m7^?ELUTl`*h91XʈQ6l޸Od N@ 'E#pd8K5MF.}9 ``U3,@R5FlK|Yj&bJ}9I\s/ArA3uhˮ#'yvg)AW[w:49bBrKn@{r a&6lȶ]UgQl~ʡ}$!f*vugQυӱW^n3O491~СRQ ә5k;krcUtvtyǁt0qB꩗X*͛NTcQ20|`1q&_yW %{Z`Z3=*N\g h`z}k_5SkW92>zH4 5{nnE!{׻vudR=|݃W{7pw_}͝;o|r[}5צ:x.ݱ 9jp``SCg6BT>k[N `W[*wik &&'[jSUڰ ;&'wv }S>|X,[9߆> qes֬[?umo+f왭z Ub.(  ~Wi遡kHrbvw%euM!\Kv!;'.cTt] 8C8w-*!  Qy:erŐ-KQ7,@?L|u?h[$3j7G'mK.jwS2==קJw5#{ <[D0`$e.պU/*<9߰qc*Oө櫮SRr5׺{;~3>6*iimݰJV,Z.OO]V@CeWΩуSf Z(IHoϛJYwt\ ӴfLʶ,6km3tc]L6+&+O~ ʹ/]:ӘSN:Wms}3sM?aź.lUۺ_zaޮBrr[ qdϵdbX(pF%5ܦJH&z-?v(R./]"HdPӗ3nWLO48ӧfmsumR/K]jS˅f<\|eoWhCÿrT(G/BPv(3sTj|H?D3_0\\!L񅶥?*jVB \S}#MJ5VhB9 :F3釟-fV2gw&mV8}x\Ӷ5S{vw,6km3>Ƃ)q6^)ɼ3R?KE:۟iSBX|ԯTkt4L플pλ{5m;!.]|($|ˤ\N/׬Y+ґÇZ iYޗԟiwCg>L>wmr.Eu/6Y4UL1#ۃddB)'<ڦJNmϬgfmuK~ؕ[ɗm|Tm2&cC 8pVĨELT:KPny]];$5)~66i# nPHL(ot*-79@OJUc8\|SZPݳ{W&S0 9"ϨY9Bj{13w5'tvt>xp!W* ۸i|ڷ:NЀսJҞݻFG;g/:mٖlc[Gc2rytxv2C#CK%SY߅9S.PޞgmQ ;,6^殝Mnߦ|v}M[2>ݠ/ ] 2S %jb'nƒXzWR^VJC4Dw{"၇x϶֫/y}bdt\8LW;z瞑qT:= ǂDbպuOmY@0<4H}-Qۿ> wNJ<\*kP#\b}jj)ԏ]CGNgk֭Bu|Z/sJUk׭?t;;SUw1%޲#xRJ%S'k՘S?3mOkxL6+e@c;UR˧r|U)mꪗRGO3eI]/)kY,L,b{d}Zf]}u+94!sm9?¬/jzzMVT>bkBZmj xW'm|}ڟƙ4JEc1! ,wX^ J(a\ `@ xQEP0vL4p$!@ɔ4rfH {oneNɲh2F2'?W_1S~eOZD85x,bcf#;\3)d_>".unSL/jZwJ1lvfj:7ޥKNd:eu=S֢לrSjikviU7>۶g=j!M>ŘSOzI-K36W_;i:$fvõhSO7ɧjy4MH-,?3wQL=N}&zCd ͨIƞݻ?֦~u禅e+}/m|o3G8Jej0?T7gRv߁TA-cۮz99C48"1.u)6a'!4yH|2?fF{G"e'կԓ>U_mʜHesW&^u)SF0"һfV˜/kY)G\MŋN5͹0LQUgQO&7oRӯjhCCNFZ$,wRӕف\ną\iȵmĐ67)2ĵPCaHc' `\d2@BJ8C!eQ]éiBϿo+4&">T_o̍3޶ g[۵lQKZa!&$o' #N++V,_jy+5[]g7F0pcZ̵I ߦ%7m|tz5Kog̓-a5%H-} DWeG9FLd \X.0Ĵ-zܹ֨G*v{h[wV/h[$}|N`4MZnǎLfZdDY$FygJϱukPưmNҮso%+2{ν4 W+4Qt{CZ83P` w\ʓDFgrvDg[f)+/l u\'9[_Vn8OgTž&/{;uյm 7ܽi)Jӎr!fFh4;78_}6F)~'@sG JqT+0lyC~P\'.0#;nO?8&`Den$Lp0y}jCץ ݫ?w*'fV.hjɾ}mFeNDӪ_\;?9liT$^Zm @֟ῌ0BALB@9ZۡmB c3˴m𖻬>^dxj~')'?fV 3=m%W^-.UF,FƂԯPͼ|R"ѻl4ݱj!Ƅ Z֭_MlBbxՊvW|S h1,Q%0%6T\/ֽy狉_/m|ѶIɗ~M5b~Fh5QRVtAmMRіCVpcN!AsL'qV96iEp֗~,[+BY0 T16Zgݰ5L}ƿkf (=4ږ9qFr~&G;)Dn5Fify1WԖBJWD^h?c;i~so}7젖JVOV[˗N+c0vm(INz@b!#!eD*Nj-rVދFsi|dpZ̓eNZ_@7O}|_Fh4 a!πW@~sc>=2?(T0aP;1tbDӶmh[ݹd^!gmZ2J@Rf 2Q:6?Z̃O5ږ9iy}{_/[s?uml@IXˁ!ELpXh_~MS!T*gb9Zq&"RUR/n>Kjwj۹Umӏp|ִ?ϨXn-sOih4͹oaDChC棺m|LцQ5g^* ^{Z,H&a'lUo=ͤ%` HA00.#V.@3=i*lƜzPԕrm_'>Kw>ގ/}ѶIG>MC[h4&GƓ=^3m|LGۿf-2}Lؿ=ƍW\s-6[— 5MG0JM\P€CZs7ѼS/@,йPg/2?zf75C|aW S!$ڂg>ֶ8[_KoF,m0ɟ'6d>5˂V-658ζlgd*ݲ}V9ύ?fٖa|q\Nc˶0(7DG$Uu#Ms.dnrXp. f}_39p;Z|߭?0aWWtvQwWIݛNժ31Jg+CȰ]*9[.; !&k4F?.P{{ھFRLKڱSW_yݶox7ï,W{ <"I8*{Q#d1)@Ti.CRX=vtH>LtC w{ß?=\[]{z^xLϻT.Z$77(d)Cyp1Ҧh4)mRλwFm(G{6ڎ =wm/5ڐfC^y{{ײV%+[&l(0"q.GbxY!4 r:ܳFs9^G4oium?Ȑz#~VI`.ċN)t/,]V]|STєOFbԧ(RuW{vk:W,M/} ]m--aP #ό~ H[w@Ar5K C==i$Vi_]' nN:cS^ժ++WT-3і;V~t犩'_/+9z#_}>ksBZJ53ۙ<~Sӿw4˶mFq0+⽍c>hGKЯ6ڐ)ܘG_f/ "X2q~sD( 3| s\~A Oz&g[1D].͚TXY*6g\~R"<{~UR s_[.m.Fim[ 9 d~q+6ڐ)ZbKVT+Ç\k˖?vxHZ"3aTaYU|A=ܡHaBj_jBuk4:H5jOy~翷;ԥ!:ޱ_UǧloJr=W"*ET:  "XP" ((H T@\%w\gvo8BHB{/3y;>~1 i\Ccn֬L. 5,{x#HGwN=B/Nb?U t1Koƿ}j3g?LlKK)CC~` yy~ڞ _Í/9) ^xᐃnii9C,XpgN?|Ͷy΅ _+:WxKImJ>%)RÍ?93AwlI{8lћ%s'=\s5#K@u]w OͻcYs~=䓥f0eԔisu:lS>S~P';݆lKK<*nC6"k* R _KꞐ7'hTP|_݂$i,3Lf[#DV,2 9Y$I4#r8MZKKjS6T-ƀ E#eKXFgX ytWUB $Ih.46l}2GR # p_2"O( %qi)IX <%H d.GixW@bH-ԉͷ$ƍ_ 1g˿vqWO>Թ&d{c,??fkX=%YO5]&E믿  þ}9W\}J?O>|Wo}}}؊y_~yǜRaʔ)5_z9zz\]]hԬO \ynm_*M'_6݆|\(dhK\Z's|(E]j=XDEr2lYJ h/iGyqc042 ֲ]?$c |3jahtl}jξ@8%]8.//o{<7Y޼5-!IrCֈ56 e 5,(ٴ|jGkV"1矇 +{e~'4K^O$ u^ L˱,\ϳ<%>P.3owHž_T~_ @Jw'}R$e*ٳ v{]X:$QN8 TL:\j._V&{z{˗7_es@4~9+p};ODۉsO T*\~m{`y%>*{5?O{={K/`vԪ ^8/NX,eJx,b : ~/~y˯~/~Vý^QPZ`y˯=-;?ꫯtmfӵYnsLѨ?򍍱ٳG>9:j ^;0`3T:F/;~;݆lK4|o:Altqm`PAΪsG}J1O>W*A6n)I5)1y/$8Oá:N2`<e7^<6`/6ѱ3#5HixxbCCfe"Zy&K:e,{c%XdL"{ bq&s_sBv cx`);been><^1EA%B ([4HiK 7eMtss)N[* .5]P*tA>iZ.>̧fg7:8 'GZ, bq{4(m=co-ݢt])J $S3PA'K2M6Ĕi&SKk!a54ě["7o5Sޕ+O{"?ɗ豙۴sؼoWpTIw QAe!ɄՊa Y%RtF1ĴIn(0A;xq.-ׯ[Ws{M +E!׭ B°PCJ>$| vvV,XqΜS,¾-?t-.9˶lmօc7\RG\ZC: <6I[LASI%%Rd)@^Ӌ['GЉt2٥^ x﮵VXjU .b*TT򁀐p#wT,~٧C3!\c{^~ښjkO=ƁN~KϾ8[t$1pͶ( 8g5"EcH ; ^:JvQ]ߍ)SL2nq a7 [0Ehkkn k2~*ߊ}ֹ>; eOt۲UIթӎo<6d[JE^l=N$*-ᙸ9cufFhp)1Rʘ-D; 8?(MSK{#GMNa UBUubQ?챨+\ o'Laڻ,mlVQ x47n >׎nq9Ncgnd,恴zQee_fs9K8 %>69aNgL2eT/J&o 6vk+*r]]=˖r\}tw{mօ?T<5ݦlUjܺn"w/^GbZe3cc~pElnph IC0_̘3wPv;P ݚ<ب"qZ G\|Fg aNuBt{G5idoCoN<C?toY;{~'p2=:ꇴJ0ߟ29P&va،eʔ)SLཹ{04Pnm CuP{=`|ĒWX<Ćg'{6d[%ާ^z-(46xcoT1 0 c} W!5xs38coBޕ͚f5]vsM 1'ޞikKJy:;b7 ٖL|dOMnuO&֯t3ĩi>oq:GG]b1U?L2ehwS 5 qJKkuWե֯|̻|o= Бt۲UUΙug̗CnnC(h),\6xjj5!]>_!%l2;e:~X_|nA̺2|5fk}Tfb I*Xm?YS<`0rct=:|vUL255J& PSbY)ahǪ+ 9٬uun,hNHo1!6k5]!9_Y}&[IJ˫!a$$l|kxe#gP ېG~qg6eR.◸L-{p TMk_sƺb(7_[oj4 ##f-9鶶Xx_bI _ ;x箻mi)۸1g͝,m Қ`v } xϿ`cwx8\3gqtQ`ZvɲWQ R2&핚)>ImmcW^]S^ֻ徵k{B{cOj ٖ|# _nC.'^tvƦbc ɤN66a>@6_W=q8XQ 0m]RE0# ޞe{>^"(vYU7~6Y{n[TKё6ǔ)SvUg/!<y~?T᠃O|?} SO_T<&Xy_dӅ lvP5MmeY^e8g9kޭHjSX|*z5$|o:n,n_GEgn 4ve 6Qa>[2pL4 9sRNG5ZW:/:-pSovϗ~Eo?ݶ2e^kc=ـꭵ|1@ 4M^=^YmhBc:PVZT~x}_-?9oآEȵ%~zcnh?"f:ړl@OِǬ/}iM _W NiY|6dҭm*n3=n[B[c3g{M_*h]],/˿VZ[G[Eu|"nqzj/vv?P❃WI[>ZX=W{~g{%S`HՂcǗt[cʔ)S{Vl :ʮ8@oi/4ێ/[[Or\ƿ e~-EB矿C-~I:;#n#|M.{/n[ZmN++f'[_@#-ç|u׻[+VW':^'^k7A}X֧'Wt+:4rr:-99W^q7ֻK5rr-n(;xa4LvQ(NL+PUT] Pf<Ѩ;.[ƛX̭(sYP)p.Lvn ӥO O9ښ=;Nƍ[E>cYfEðMyDurkF<>1l/-2~}Ģbޡ]$t]' ow?D)ዣ(8O6 h/y' ئPnMMvx52]~dԕ?qI=aO w!j'I-Gꘓ@}V J[8d?}t~υgUtNIʻLeU'M`v&hCL2ejwiΜuq'cǮ^;Xvm,o;'3 ?)+~ \߹s]]M7sO>Gu{ېV5 r'En>6P  8Ei2ɉH)^n SlֲdɬEPD>6zvi%2`UpLv?l龓5-\NlckL/6, ym~{HʉO]Gҍ@n)(P-\_J澾ڷ60VޞjH:Jw7sa$>Pﬔk"W[flT겿~m)SL =OFiߘ7x\8'7.| _3ہczj o\Xw?%LWߧ^{ N猨8 Ja ;];DIMwB# l2}p00X^l&=7,,H cs挞}V $l9  yEL~'Uڡ\uLA>W)-1u}l@@I[U4U׋H\ü#" x$jCo_`O\+NE1jښŪ8FGܣc%KkoypnjR{隚0p˥zctt2w3y|); &E џ}$KWM5L27'N75 9W^yE_98!MlqUV+})HEH 4sLlva!F?9y, m%,32ko|rӔ53]ztw pOX,i:h$I$)gqXQTʺhQ$Ch='ҷ|q8ueЭײce{ |>~Zln[*^K2( pFrN!DzT@7K7Fi^$[H kfSC| qkP:dg8\q%{SҨ6T׮?׎ #Gzy ;.#T~c7\L'송6ǔ)Sx|M UURo< s2~mbfl؀b}.ˑH>9N?Hh^O_(|aTV$I8Jh4GR~4~Rt&cU-} gV|/M>L2e#=[^[ŝڳ.@łh 2IˈY]}Yz룚wG@o-jxHnOu%կvU|+WWuuӇzF/FfLZҵM-[\S*~mIn?>00cY"DQPuP(I+$i@QXy_l>}#CtcB!]I S!O&tʕ+&Je곥*5֞nkKSы⭷N<ޝO]Lfy| 1Zyf4Xuy/pq*3Fz,nggSp)y4,Lڢ3Q1b\bFQhF_<ݮtʲx,H ;$5ƎLzϲUի=k铏yD~w5hj9Wn[*/GCuyYT' R tAѴ?wWXb=HNH%ozIUը#7T# ⫪@`2ioWF"B l "޶LKkZQ޲4jn f8]XGٞ{d9E/n7;ǛvǗT^k{뭥gS`di査YLzwdY>裧ېV[_I$^ITV&{!ɲ鰲JSr򼛔˱W Dݍf%+Wz:Wz;;$_T=p"SR޾~U|3G+zRUY&X2;=&hrxtHEm1y1C^5 _j@WHaW$Z ]_u7#xy-Śadi査YL2mmJ:4"I\KQ`Ă20,z@;(uAH6'pe5Ÿl6yjUNoW[gXSa*quNgSݭ ,P$IiP@Sia#)\WTǟ|$)#0#Jo)@/;J\R,TV %H8#ѲB㖁{eGej &&65gZZ2Vqcs=” E2Jq.Q#l|*O器;\u~OZW&Heq{?:[MJQJ, jsg͙[ h(ˢ䋬Q4i0v[Ul*-ɲ9v^<$Vtg|aБc-#E9?8Nnb'iv[P pޑ *ѡFtOXadi査YL2*Fn3ʠȱk%*W޳"}8Vt4;>ȞȈӳzgQ~f{oUoОiLاe*n[QF)Ȑ YZ*ؿp$*R!_ ,^}%I,Ȏ*+`B(TTr\FѨ#s,YDɄmnnWMM٦lcc&mzΉb' ]Y]N(60&+є,ɀ$9lw#W-[^<5#f2y\p`Vb_Ms{;Qέ)G HZl&3]Y'9hT$I\ ؝m<fGqNSn8aI9tDDN|dG2D1.x1Қa⍳ܻSrPuJ/* 3Sp)y4, ɲ|PAEUUn5k@eYgYն|(NS޹PivM#x!46BK+)ҥ OQz}}bvS//յkݐ֮uT\fޛ,KcW d]__]B0XĊJ<(zA4h(7c]]h8dyF0$R h|Gj貁$TUzf79`y?P:* ahq27 tZ(h\,&8èԥSC]#*0yJ2cϩRz氕W|>g `pv]FGSK"&[<_( @lADn^-TW kN{ j$d1sX}{jI2`,1/< YÈ\w%k("nۼ*1 ՗ ih`7R6 "MR9 v -%QXAEQJct,MWkgNnVA{S`di査YLLݝ~lEP>d2T Vl6`ZqPnx境%a9 _P|6s.@ z;Mm6S6JZIK&kI&l%Q\Ͼo[SV:TUCzvx ٳ#n߬YhԲnkm{{NiG=џ}ևϿ>;?WᏹI{~T{Ok[m[k}]uñb.Q.s;Vb+wa8^/}> LV օ NLZ1[,nO#+m=3)ΫBhh"mb1[?MؘC;$pd4 T&!/_ǀ?pڳ<˰4Q8os5u5k6) pQu t %F#)6yMs* \<v{2y` mvfg8Ơq" _sh$KCE+p8ð\H$V! U+)9,Y¥2YARdU-,WtF BCg,VzHҡꆦ2aV\gsVzZpNq"0%$Tq8NM5.GVuYCH"+)b0V+`WaJ,g(۔)SfTGbȑP{tQq1p[ l Om|N%~]x1ʪB==_jfҞKpN'_^w#.',vZq;TQ-?aM-Al,I_^yoϹo?Wl[ P!VWVe]k\]QO:[Vv4uk n8L2n/Йg{8;l.VQUeZU3,P,@kМpBɕO*++\r:$TO(7sMm[OrL@ x^x!09vQwZHF֦<<; B,#^hé)a,,sbd(=a$۷q(\,K:]^ t/h0Ag,R7C}b5ō]@_U";h;ϕ]6Sn$>`Jd/J" OIxBUA)x\nd< }>(K(+ MY1M8L8W G,1YUM1PN,KC,Yi4lY7Asu]CPQ 5E/1邚V(h:P]TU1,gX4eU *h:1 ]%X-Aoʔ)S3Cnذaƍ5 $_c[xϱ=;x_^2!k1i[?q-q^HRw:^onw2xNt@x T`XR)k*eZ64$]\NL:04bVO46?`͚6HdK>439 D<%I"a`(eY0px2KQ$7/֚j>싓v'Wp4ή8Kǂ=}_ k*w*MOsN=YQ8\r熁lѥs:A149'XacE^edZiSeY!qHI&t]YfmQ"4)L\- z29!,q5gv,0$,kᴰ`YZFXU$o@P4^P5 pBUwk6eʔ)S<{zza駟H ,׿F.$ E.[ kh>y\WWuAD"t{+cj\$uT iﲬ pnK,TWgm1 u ;*r3iK6eT k2.1y'5e.& ߳Lv@*8cN| `|kG?+=7pߧ)ԓV wH|_zI=h }):׳S>PC5ۭ0̍4nOUT'^U%VNAҹ޾[eh*-q"#]qxqBL}}.iT{xO>d,-\5p9AH[|$u@baC q&oƀNalh*Y%e\̱%0QkH|Gq);--9]TN *. UB^#%I:f̭fX4bhUUICa>1~XZͤ2#1>3I*ņ1KoPqO &JQ|gn_-nc-?&x\{|\vx"qW|žqh/ǩs䛛ʪT( EkFG] $bIEƽVnjit:UBnD"hڅ\J z ŋ"%+Js I^svN$4R3lji]C(\9E4f]xgqm"x.I 5)p.+JR˝Ne'K"Y+ټ$#SDV#@4gvtTyx J6$- b;6KGfY 9y&) +5~Wi(>E(W5b$ɲ($3#(4h69q]Y0Tᐇx pDI_8vMppM#2;mlq6VM >Y6{j!zQS<СN{bCmy1~:xڜG$'.=_sJ16xNa%ʆx>l6ˠ%) ]( t@ p/_k3Y5C +1,Ҭ(P VU4ဋB^\H8Kdez.^&ؼ0 .uh(-SK]@hD0unQc{WpzB<$ҶxJQ;[! JT*ccwxS d%o(iM-r)( Y|}}nr٠(%SuCCePb _V%T&X -I ¸70A,$iIAѸvTlbPbP6 aED@`KuUkT;K!BWL+hYc8ed e}FMX,644tA;=_3e2(20̳FZEE,Q-WVKGqc%E, K@ Rb*$QD KY` T/!%ySg~^!r5@*T.WUcj eϱq߱HgGժr0+i,mr H YT]kA38[ wPZEv<_)Q~Ay&ao Ht&76u9-V5IewQL(/ɍMM2aD8JppupHKRQDQϡn:,V  V8a5B4e feDfN0eʔ)Pŋ4p㗿IةbΧ-iƆP'aa]]ؚ5؊X"rH݃Ƽ^ĽFGp/G?v\09/| Gy$03OYGF%ybѠZb*ԠhZ8xt сc!/ Jh 'cY%VN-pBI 6cbk? S=|c"A]D-4o=b=kN =v'WY^v̱:6c,h` 67W2 gs$HhnݎQ4I14qbAy8WE5u4T[gEѢoL u%t5uDd .Wb/KJxs5Jw_j幉81 rTש ATt ݞƇap8Qh ݰC;85՜Opc%/cwpXT g wxc;`qɐhh܈~6P@TM93}w,@Qz=áb FxmnLk`%qz,|x2^o ao|pQry7>w燃駞Z4M$NGcOղ [(y%h SZ Md\k]C7mٺUq䮏TٹY" >+gN Ȁ9QrqinYīN NeLhᖨ4'&;E" B.x-;a`l4yv{n3nX DgWK8ز45/U~ŵS5| n')FfQcJR}66H"ԆFRgi ]1=*ƕjǠit )Q HR V6,F1iE_ib(D-FܡPP8b6DhLz=i Q8A*1 amKӴ16^pֶgy׉". .ertE6n謷tP?4ɨɳzS&bqϝ_>Sx`Nx֑lxi&"Ãh͍; *1keV|k_k{Ν;n^F]&O;zOk<݋f]/'쳻0b瞋?p?z}K/%G'f<;ꫯn6ys(Os oT/(>~S8A_r h*΢ojs~Ѥ-ɉ8 {6 Ƃ^Ow9gaў$aO!DE@Qv%:_~q^s"ajcM#~Pgw߿u8|ێI=ϱR u:01r0RFn[Ό$ GmAcY;sq8YQӢ=w?rxgՍkm[6Z48tmQ'a>m/-MMܒq9,%yHeoHV${{n^߬mJ7""@vD$DijlțU;˓+]v7rɃp@a]%Sc38/0q&Ћ"9bm:cncB&XlN8R"ibXZ7ӌ;I)@N`r‡ËmrƫUZ-tK(raO(-(ʅV- LN6W@2|72 *2Gj^g)}Dz-AE%z/E(``x'U3eId#ANl vC,̯,-67nl6bX$XDas8.Ype|W  gC+H4PBYDvL<quAo<Yp4ls-@W(jZ̔/YH9ҡxib$~0$Y m\ y̴ 2rc4 U8zنf!h(:i\^~xP7&.ZY :"x/ӊ^%Q 0bW*w_+kerlKE]wݞ={>K/{ r }hYA|`GDh '<|77| =!G~URsx'p7O|b׮]`o͵:e lٽ't؇ǐb*Z{[J߭^ublє woS֨[a]y˥ReN]i: ܓ~{2aQIuI_ίq[w4ɉ2 4O)?T瘕)}Tӂvu^|^5۷?0TW wl~ĺc[not]82gzY;Xpܕ<̹7:Z^+;3A;@OO;^ɶLtAG0Mu].VX#e!<ftsjfjyyZ;T$L:?;? ݓvoә"Qq\m~ (J횖%JNcY$YkcOO_6/8@Y.iHXeלFݫj<٨k>׭~.>l-F2^3(: pmØ?m;X\ӦqQ1KT-la4S닆N&ƳlR#IҰ)q$fRy&Ri)DBEb13奖_rd3cXD=5k$Mڋ{҉:l8H*Ʈm"U #W8#٩JypK{C}|D(=e=?R/U9bdG5C W IEQL`ľSu-=.3IRd U0y`h$͕Ƃ&Jj {+t,{>eCLJm3߶tBX8Xj@eqEQ7F=k(*|&UIQb\Գon{[wi?LX]b,tq 'kI|TDG/tw1`1@L0fx:X״V╗ X_cYxfOeIekTX heɴ( @Y>LDE!u/wڕEXjal[T>F̧ԶN4t0/9`Jc!iҙ'G찿O{g2SA4Pl5V+*D@I0ȴ]w3l^'\+0zBY0(h]ڔ( ^!E-Me]fUxd/%uсHmsST̶|\Iʧ؟ [rQ%ʼniǣ | C!V"HKUcm lzܻ{jLG2(T`$Q(b1b'ISs)ղID> 0:ۏm(тIJɩ`3`u'n CVeӆRo"U6,GT`KeâυM$`( w ͎JZ}u|,Q31t`{Zf9]7WۛEs l~魀IYg6(7`'jvQy͋YahkZ_ׇI⤩+!ʚ6X}jܩWe( ]oqid(Ӭw.t&)04Jn2x4ɢȲtiq.G}EI`v7RMcuwnSWt+0T:7,YQl'ڴySY-& %w$!_]YeA( {͸Uz@2H e<45wL+Z4#y6*STeUz Y2@LTNJ*+N7 bUVWD3 RP:3ГG\9Z F4*L@y}JrClq9Z *I֕pu}Ǯ<,`BFV e`DeIPxDX}<1j6N"P(%L)?kI~L˂sVUdJшrSGYzQsQO0LDcԜvrtEpԄM[ɸ- ʴGp K0VX"-=˲ BN;BH q:*h+./^*__Ԇi+ ۻ%=bKmuw.ØLCd_ .D߸K<&&vl'4ɒQ% ( Q~r.2j)t!jy {#_[kov~7~㢋.Ꮦc[g)*|~4=< oo#co{?}p+^oiHpxv}ƷMݿB֭GsFW/~)-C[gþ@yQ^J9"MaCQqjRv6Ms-Ӵm9V+RES3Z>q3t#Nvo23IRLh^pWY'F^;-_^r71'윶LEUU@)V g|J?^'R(/b9;sx||_㼱?km~GMHٙeJӆiη_ų~4k#z{>{˳E jϵ7R0wNΏ{ި_3>$ 鿰rJ^Z}0@h`_8z=CkIb_((JձٱTBzEmOXY>~eqs}ڙ ߼㔕SV j98©}[Sl0tЛLv[04P*Z*u8V:rt=)0Q/$lpѮ[쒟'pR uÆʙg}l/?zێƛOwt<5r<77޽rW ?򙛟naۿ;wO(Ǽw[< Yn|;_|]cV[\Jg>IJ*`6mPP'< ѯ`ۣO`ԮDP0Mш48F(,jY襲 8`%cۆfݟOL8 ؾ:im{ q[+-gsB`6(<F{i -׽8`xbnE?8ĘUfPhc@/S͵)ҭn? F\z&yGnݼis]~_ꍳ.yКHŇ;BtGWg"m2Ȉ[\F*7 ݼ6ƹI𺕹 ̅8J?]툼S*?dR׍F Ă%6ĈV[Gbð=H+#iTR#F@,Qq5 /ęT[R^IY1-a""+fjq|LJ LWJ4̔)cH*_m|{?>ɻw /ܰh\ Ƕ?Zya yy@͛78s`tM韾J@>E:gQ?[< .=r5 ׾?9q0 uCSNqH(ʆ ^|314 ,#~bYcuރέ{ʟrL2֓WfM4NNNaDW륭[gڭ=>^WV Rxmziid%oLKw<鹮ÑH0 熥+E;yoY-~yٲvg:AYh똖i ,@mׯ*5Hu0D&Qb$M052x/ %PV}6{>f<ׅ6*ER#b^۱y]/JVVwh oINЧaَrK='ȋ&giEѕař~iJ'I|߃Kcq\y-M(B]X*~fgv M=50R K%L4m޴5 uT O??@L8Qg C ' 3MSC x<Ӓ OґIvVh:dӄcրz?Wt^( SZmQ&%R7`KkYd`%w5p𥴅L f5,ƅK?OʹԤTy FG"  l-ő ](d@(Z-4+ԷP;wJrAgNKYQk4J O/'a$ދ1yTtp+r¬ha2 $t,ѢлT%]-tjEIē\!ـ֪*MQȉ qT£(SEtcٶyS$Q{*4ya *ЉORVnqρ BИG.ڴ ESr|r]TirK8%lzWw΀#4c_1/V+gPM"LM`h㾃Da0VW.NF9X5r/\s7ksTy4rh߰+Q?[< ++6Ev'>){!ww)IB6O8ߢoe򒗐/'z9R_W>O\zO͂YWw>xY~ndf;.][LLό[^գ_.BP, {]t;ٖsEFsB8 .XHI-}JM@ZqZ-ǞrmX-Ɔ•tif\vw/;/YiSVsGj2FQeBV:~ Cbͅ<)yL;91E9>f30t*\'fL$I#e9ۼ\+M&ѶA'x,)r] haR&*‚o@Sw:m_FvsmCd|<A5ka"Hұ1NJ]yES4: |<y`RVVGRHQfpC#+U^Ql zAaB>'0ڣpuV~NPeEV^)8ibu{2M3]J̨T]'vgb`#:!L5j CIiJ6Ji+T^3Q0cL/Mt<En*' pkY C\urLykLe3eeZQk"sЗ<3QUH@HӲTQ"rq#2Q/2Ͳ#ڿ*؎ieLs ƪ3&Ik('QV%7%0UbT+ƌi21 QƙE(ϋɤAàUBZfxS|@4)b<8ebƃW-ysQ43C>s7/6~3=!t-If~ekR*b桃}f{tʲ>`/IHcv\ez%Z!S.70HrHEn0*ʗ஀V&,FtJU?[^*l՞Yi=_#=˺9v[s gnPQ6ݼ) 0 Txd$cwT_0^bPB6 5 T5UD,MG *+t,VPNÝqk]})l\="՗`p OR:檫\|7_Ǜ"Oc~ypeii gqi=uV|NO׾&/=)|'W׾F>Q<>3C"[@'9< _o}[s'B#b&#!M/ɶɎq Eֻw`\ްil];6Q[2wneyѐ]ǵR9\^^̴IL(,ǴEnd' UV>Yc  wߵ)*9IxFez.J2' ʁXmx\Tk2:!9РQ͇,2nY1,@ c"qoe"%pl+tR3 < }k+LRLr0f:fe$_CvTk*D!03/ASWʻw06`bUf1\V9 6N77OO`tzN;X\hN'e8h{N0L?fY('tB>V$U$>ٮY* ݺn$;_+JYݴ TN9C{5" }DNMh p@ƋxF\R g0HtӇ9d3a麍0Bdm300 &B BV1@qD3∧1+ZP5ӊ襲(ŘR!*_jZ OGQdXJ~hdM*P 9",ՒG9L.vJ)nMDDvG'9|^:|APDZ̩s/a4%nن"בKm`>%z.\VYj w[ 9Omu;VٮIߋr9^o0?`F0)4-AoC0*BIRVV45!^ v`fâ6kMH/0yƮk*"c'~O9ɪY%Yt, Oo>k׮ܹs'޻wߓSG*Ǽws/oo?|jj7͍#kϾOSO= 3 wGQMyF1xW_} ^m۶=uI숷}c]-_O>!@r̀Gɫ+ ,2ar`jgQT>O^r%O]Gq)d#Z?zbX`-IYN6g&u!?WԵWV~Ti=_S.;p˴esj&Zً\z# { oi1Vڦv=^"B)W`SfD O@kP%LX@'Bfz @)XSce4zJu~GǘėE$#aƫ4A~!:Ub A I)+`D\\t !KlrLtd`)P-L()fP Pn,KMfi9Z3K^ ujc1F,l 0[sȘ4 ӄ11|EUmIG(N$F˰-T@u3@eZ4!P7J^l;5®A"'p=hR4^f tkdy& H<*$йf(oIf u(j:#qfPC}ܴrmV}t{69QfH8Uxa& 4>T܋CM{6& e$KTr,5wxu=u>IM/NL aF @@GlP quR0L1T*m#MHsA5l]!rmR4Q,$#8xkT@9-@_JB.L+L2J9ςEDSrHEg#$ CWNLVqMVy"'u7ŭ~ Qk1}}K_Ke u׍/}ekwwtL> _]|,K.!~6|2*r ۷o}袋6o/~3TARWVQF lч[VzB+|ME lrfdޱEg-[ǗrfZ+{;^ `gV*RuEd0:K1Sfr̞jEF*` x( R~J] 2ixs%IA:`Y nԤ8. E p .I.&Fڊɉ|HF,{` i, 4dΒ _863R65{ywklc4 ,Zsh6@PNHdZ&zȔЭeYEtDe`^Tť9Qltׂqb"`$wh5CkX3 v8AwSEvJ-\/P H(3"=.V'E#*e\C" Eo ]kB?9rGkT;;z`ĪDAaô0\pxS0GE7̊$<WBaKhpY;ƖPK1ujکhˀ`d?ѥ6p g+QuHPjW i:AfMJwN|}=M+ Kk;i~GA2׿gX9e1(0-vpZӺavrn*<_^s%hV;n*>BTObIprQ$.Ta"])Ac{P1h L-D9嚱^GIY݅^ I%OI[Kp*,xwkf7\?-"`%:j左J\e^ SWBV"0`C)0ÙJ]:Q[H`r"%h RmFlFt[R*XVk0KhŠۍ;EcsIYa8|raxIR$9 aZ.wAkyٰDa"&evmݑ$;16\?zM 6m|޽-TKۏ46íAU%&*{> 4NsJ P<"Q= +}碵p]E E(,@-TJX:a%/8$J磽BJGc =Amtg퍃s5[T_ }Xy%TdljŀWrQ#Gya8VCl:\O@n~van.3s1:ݶeZLW IڝK°$GbEEDkEhL4+1ꮀC>_1#&h.6]zB%]-wѰl{-{q^O8Oo/}w7HCfU'hÉ rĽT˴t).F"IfʑAҭP^D=h$)8ע*Iix.*p*"Lf#x[CpzMJH L[G4&H0~д48MN3l˱L`žCb< {J=~X6{7BVL,oiU_  /05)fOS?/~YsU'hEUժ AD ݩQ]U )fHXX'OӑnPČZWynLWpx=_}SOzz ¡MwlRr6hj*5슠/)’tܝjghJC?A9+Y>B&[?|񞫏;! mQX:W)]de5a]k % )}#p3 eaT5-Ļb\D9UoЫXےOi7Q ŧVwyEk#LSnCΗ5Ȯ܈,+`N!Rܠ ̲tkVV\ e9U*sh@8`ÄSXJU5hR;\wwJ?7܇M]a)]kIq*`>x :s|;n;0cvUa^*d%Nc:gTb`#( ;DJcHRW`\K"E1)Cn`@\4iEwpBUJ 7f Pܟ3}z8/W:)ݪ_=)z`il±5-{y<?O<| x9y]w}7_ʷ_qXQG<'ָ{կ~bA_x/7ިnI}C[:qu{ >M)M;ΗO~do΍EˢڱN-"ŠQ3 4?WP[o0sݳn}gi[eU)\P4˃EqgyK(Ͷ(b4I(L)LA:z9Ba&Wؤl1r*m ,\6 I2 ;p!!$΍!|;ɳ*h ;Ρ]s0(? d d0ҧ8Yņ.Fl Av~`ir-{AYҿ9Zi|wn:c^*N ڊYmljSq*.M+!\xѢV%Be8AW}_<_eP>hM*'*&UMg `L AUܘtnX`: #:eF#Gp^.(xߟ~K'a/v\dI0ÚH=w؍0*dE@ y96e|n +5])vat~QmVճy>K5 ֝R"< ΞH`w4B;״s]CC#>6*ˆP} tI6/5[>8.?U?=d 0^8MaZ(h :ZFU@6Зg]aT~z~ep}3Vtϝ?hP-On>>ނ^nB_J0p%B!Vg}PKF!J*^AnVjVMw1f^ 5J ח !S%`!ƠSbJPQbDʋ!5w5K s+xSkH`(\,fV{tN\\Zkmq~({r7lweY Oe\c'OC{3p)ƍ%⫴HJiϠr3[L DqOwۙYФ%OkHW_>?r,, 3\ O .@ˤq-gkn.:);b\$ x#Lon1vlH˹2p߅۳}^H߇SkŤ*&$^8IY k순?ϯ7v}׿M@G uN>ꕯ|_׻߿횟>?*x .}kbX.{<[j_Co62ƒeC0\]l4fnhSTy.CsY-hG(ʜK2)^QE+t6;nȖb.,C!5!ŗE8Jf)Y eüPVFv(r)qu`crR*E`qRfeA^Mpf<Μ#(?a]EZ=(U9(QYC!H9K6"TL\oVz(EZatA4I*6\aɔVpVfymɥ{KKy ώڎ1M'a3mmiREUnl>Gݎ@U?ENȆ_IHGA(stq!X.={ /T9)^'bķ6Xeam8($_*B :8fdSZm X몬,^Ma!]GQQBd\-J@8 1p4rr.[VT h~TPmYܔj^";}ZL] ҴXV!|f,hUhGpr}.V˚}bhs:uK10h^^t\SH7s8]?<>w_$9Oq9_U;9·SU,eLz $wE>r0qCw UAh f :A&hS(+Ar\ˮ=U'o.fB(ضQj#,m˚q B0ZqPЪ|-|wtFt6H|g+Yt;l > m読ҷʔvS1!$",q1mM7Rltv(1z`_ukܸ\}y(yН|#L>Yע'v|޴t5;d7e#EQMfR^K!i:^$\Kꙵ{" \c8=åڏn}_jGl~.^v5[=~IzP^_/ۿ׼p fz4l|g;h xy%/9uwz_0!c[Tcj.vuE x8 ,Y,]t:`t$Ng8t,CBw$56쀠j/ZtTe8sǬvffV ʞٯ]# j\'.s^*rb]_zf`H"63a~M0 5y+0XTޑE^ArWtwC^EŵcNKeGG fHo2Ti޶WaN҆.3s sܺ\*ʮ\ѱRwpOzYNNrq5Jy) A :gz԰| _J&7vo-Ew@uS't^7|!+hĿ4`&Q"6^Z^Bqm;3VehzijMw -y͌YuGU]6IO:| =lտzKk>gשׁ"ڗ_~xVԣOīХw[nySBկ~ꫯkoFB_{w_ ={ӟ{^}? 6o>hŻ׽uιosO&+V AF3+ΈR`wR4T %KӢsbT`fJHtx@kA3g:dB6iǖ#s0d=[N`2W(ʺ 9A0 _eD\]oD423!2=bΜp'0bE,]hM+p;o s e#qVQeCh!C8T *D#b@Í>sMJb|&`F g ZkT˽ ~ sX1E|BgS:: )yVkU*2M+d,ϊd] *MC}Ub{v 1yєuB4EZ><_$½z?6uø5(q"tnv͘׻~ە"ЌrްplM*mJ]|+l>]f hoW|i6_iyn:*4r ensÍv|-1ΌmžVl]*q[uߍ[DDuٳ54U8k,53we~:E,#"yv? 7U`R=(Z+G=~[~R־=>L< ~?o|O~ځÐ8qoe8}.&ϝxG?/9߿;W/W}qzSd?<rbK ;v 1TyRfpͱA\t dYK>d_zelNl.#^ՃcQ@U~ *)-z`>% "r˦Cy RXzO1T}LeܖFΫ{Zֱ /@~EtmJ9&,mp9,hAkS7ėI@:Y;4@8?]av8BJDXHV'il_C$w"^H ;TX|8-,sڞESYO!GдMUV-lb̂Nc<[By[_Y Lf$6:Uz6Fa:HM`Җ-| 2"$nej8Tf3^lWb%z }. ug , dQ"E,i MFۦ" eل .MiI.܅,gH$;džN QW~8%SaѰ?h{j}/Z( p.]-e^wwL!u4\de);>lI"` u:dE &3Ѣ99w^Nɚ@.[I%J;A竜6,ɰGb#j,f0胩TL1rlϰ6XO. A\"? uw坪< !,9| ·_qA5j=B,{vz$5"2&tMYUHRr%?WblIdx镩jh"۔Q>[q}_77#o9nF[FIK%gZ^k, 8S]"|h$ u2̥T5R<hMJ`Y),.e)0L1lٿi]lmi d?Ao9}C ЕYxšq Ɩ*d2 nr:+`TYQkwܯ~48Gc3>O~?wul6#Wr/Gw#$[ng}ss 7|kH{8T׼fH|zDDx;>O}W2~4m9~#̽3aI^uCVJ`&qIΖR[|IB]1?MI^S+("LFVA2ZzU]qbʖ`yYt~CPI;VpEGC03 o(8PX7/lg ˣ2cbjZ?z+J<c^>eeR])V+D2_ 6སk,M"#.%$Fټ^Pz  Uhxfo!tVM ˻D3$L ".{CmB5(0 t gWTXuQH+@SiM'+NW.,0EǞkW(tD8G.}0`aFK\(X0V"vJdx Fdt9ܢE<0u[ϗa"%ݛ&qlU]ᄚgM4ICxAgl9IAsRWAMZj;Xx?}>4{qMc#ъ&; qkDAUϬr7v186(&*/'%=hp cRkW:50 aZ4:65fE5i)ZikB\dCfL}뛯E% ˶r{a ;Qut`M`)X$,[l6'4odDYs% 8;(3 B]bMS4շB=Rtk.1wwqUS[a uڢo6ZK7Ebٿ02pg^LS5@)[%HqR[kW] CHHo˭Ӷрv9~T]I2X.7~9)"Yն<{;+< *Ҩ7x6,eQUy]cYʁ}L$9-ݦʲ` meŋjkg?lpX.F> f$I`Y2tx:%DǷ9BGhq8{'>7~ z&y뮻܁cǎE/z _/}oo>>ʉfb-TK8v߀43aU%:4?ܒH.q脵8Lkgc2. lZIq5J4ޘ Y} '4iToEYhBU# C[n7k-K ^7v#\}ຆ _FLXi ۓx4MujmI~Vp w.5܁jEYJ9j!øV$֦ZQi1+XYcs.Ɩ0Οa"@mE]EiKsE^>pAAyC3| ۮ+7| ̥BOȽ3jIGFw)}0LSWqJQR3'ggUTe棪Ӹ+D +pG6Gh:<{_{>)œ/}K^0I{G?Qr7H10}K^B\9MS??{h)r=W|7hȖ,PL1S | U\c0:j(CT&nU M]/NU:RFU\+TY֍r@.uGDDXGQBob.~hU)X&" s+~k@*`@xj#v;mF!|%[U,Eh}A]!āYx pgH"*K>v{40УBl[4<# E6Y&tŴ_@nO]ձq+æF~ą8Af`Ʋ'I{aQZTr;yb䉉ҎPk|>-[MqdClŶȈ0JGD%p #L FJt2OKDYqD̵Jp)mWFA!Ms)q]6~5Hͭw_$m߬r֛~چ R~-¡7|P.0 Cztӣ<}$ ުbn4YxfE5!'dkQlvGo|Wef;ӥktGiQ# z,8iXSM;w&M6qmid،Yuܞn_j>9TjVG$+\]g54 Eޟ.(ky-C6F9ɠ:a\U52v-z$װi:Gh|ছnz}5y}K^򒫮m5oU?4x3[o2 ƙY3m')ʟ3*9{z`P'dt]Tm#픝&GgrݼH1: :`&07Jk ኣ8fsn_OQ6 RQm6,PUK4)3j% ݲ0 tAe'ċ^ʠhi5E- ڪʁm#^9U%H} խS]P䄝 ]>.m인g:+GPI4DHx(`)Qplٚf!-}[ Wn^װ1 t,6` һE@FJq08H 01(6GҖ晁Hk8 ֚NV]+!%r@)< tSt)Q5HX)^c-'lWr2j3]"azS+ RT5F4mN DM8I28D$ZB-^ٔ0ҩ^v.tOO,ڌjW9,C:k4-eZBJ*B2y¢VEo-Cؙ0;J#ldԆ"kVEނ_F)5:|:D{o1,4kU\;5:$I'q}gom{zGYfk.^1.&pHE$^i.f{[Tq s3p >&l@^dܝOw<Ϟ>bͪD:LIS34&#`.7}zĩ:n ػy^ȱt6CJҴG7$Na-w^_:$B}(b欥I{oWriƘ)7_!487㮻f[jЇ>t=/C ׾s=O|%_U0P'W[nsoGӏxX/jM;@8(2]*GuXF/@P $. 9nHoǦ[|@=ni$)+PY>"ǧ؄q@p,%ɚJ(y7)8 0@-5#fN`f.[q\`Ⱥ;pns+FV+pBU*t{FJra$Tf]I=gpKXGM_ %@8Mw׫8:bTgڢ2H{b)ϰ 4 ZڸpyjS`=lhkigprZHр( $vDϜfIF8Q0raf-̩_YkQY+VM*/Yƾ4 mY,Q{`3˲mVNn'㢩ISP|U )huj &r~KꪓOwL~ .߿v+N|w6krBJ;lЪ(/%kdF?3eerpbMl Y4tEl(/V*+jpaML蚚/2x[7t z0@#>(]! WK3v48߃?׿Ow~nzMw zu}#ŏum=QW(4A[o%|5פWPKZ.j{Ž)xqSX2Q2˺g/2pCCA3kRX5K_E qZUk :*l;D>4XKp˰_)s4TUeQWm_JK+Lc!c#F5qb%iZ{ӳHl8D*@`J)Jvfa[ͅ *)7/=ulљ(VyH\CًVQ$RamN"[WP.de;Ksݶa*@bjvA" EnS=FFKW,`YR΅iUd&1%!s ٦@N{%vZHHp OfIk0i4f8W.aPm"/`ezQQQJz@p/[^V{n{lf'L7+kΟx8 M'ܪk&ي@#KR(rg@+wV4LsX*~ܪ4H[(h$z![IFсnAe!Ji1<=W86APEӞbBتsxRjl嶪 f kN$ADm07]:qV9\D8W˲W| DSV~Ϻev.0u-kQb%`t[Y4jF)hřgCh'j-Mim;]x 眑g$e85j͆,$ÿ2q,W3{ '[!1B`@y# |<ٞzf)Q vt2p})\Lv`ì܅ Ub Nq-w\^׉7MJBǮ*ղX,tŌyVFdkgQ]2D0H|4Py5QyӲ$ -PN܀ڔ+Uekt\Ţ5M͑=q(m+g, :I;őpV%)Ȥ+&_Q ÞQ>oJ- KQVYP&Κ*4hZy['L\.WI!:JГ BsvIM!Oh~iM!8ݹڰnBN#KL̟Ge+(eb2.rZɲ B?tz l+uC ,:)oE-R&cТ D; ذq'7= x  ͵`婺i/"?BX mM&q8TSǟi -I/˲8q ad|^ -U/M`c;.43AB孉4-W莢FUn"¢(?5@A>sίZDiLoV6rMi)Q^U%:;*ԶirSg ~>q h-ʸZR U nDt\ȣpB@><@uaLt,#4NQ>jqH8mXȠLkfҏgbAk\HNE)Zu{dUpi_QN{=-vlHEQVh*Tm{Εs1ٚNqRk$)^tjתtLktkݕ%*`tA_L;BIVDU6:g$#,:pb-K @C"qSWEȥɈn ɰY sNN_}jZ2׋ɩ@, ~Buث"&`JAtp$Q-CbAN'6θt8g { 0h$/ h/b@aYrIQt'U\C&loo8'5Рr@KӖ v;M(,NB!q`1C8ʢ}![l/ґE &X,cx,e-δb?XBQ LCg :Fb\P Rj:6::(d#J͡q|dpB֑݌F |E~BS Й=_WirrS8̼=RgE1mϴVԑk;.}JWUU$$k\UֲN+"ud>^E᤟OjUڣ3neيKAiziwLF9i'Te)ʯ{^Ca6l.+UcdhF#¬tJ]_Z.- c< +bթ5톰חq:Zs,/jPQ+][u1!#XhE]Kt tR nÙ4>Jo?GhiWU}'|cYѠ([o?''ԧ^)'穓'[rS?Sx5\yqݕ"+=8:NPB] YBhZ"S]^DR(!|dI e6x`o>[~+gU4o)V{=pov5i\/޵󮻷j&" ߷$Te:IǮ#sp~pR֧0D@6puQ?s3gI^h}̈́{#lE;*^y]q&Cg).nq/"Hޣ0:wn(.ju޳\{ݓʻ8/HvNOO {˓'w|<& 7<kq1TL#:}% |$|,-u03%e ^`5&LM]6!}9ԣU^{E^@y!("wgb(O( 텽(iVժqi I{uЪ#QW9OxN!tIV?HguTXLqq8NbN7rŴnBuЦkў;O:Y0ilMF^8{{N,U&Ȁ2rp4dH퍍AeeT44\G+-]Є@vT!v!xf?LQLŨx{ 's|5ik[N]*]ҊD; +7˥iZ&zygDf<ێeF.(+tiVD}XԺ" t1CCc"+FȰRaM@]6"b.Yg#X3HvH=`ZC Cs6ՠCML|#eVx`VJY״ǣ-M:b},ź xtlWHZ(=4/2.5vo҄yEK8b1ڦ?݉CZHtloo|Ǵ,'i,,nGye8;v.kQ~!@=?8D7. rUY&[#y6TM#_5h6F_*(^~khq4x㍓1Bng=ԩS~{e7t}S쟩RWHgں??pwxx߯ޙLQdl% 4h K\rPȕ ?!U 5a3UEQ: vN!4ACTQ($/<˝5>iOz2.Sy/^|ғ{~ql}jF(lM&0n>/)x;8&p2ͦ7?9W?骫N/}IWv~vv9m`A4ayِVF TcnYP|Lu aI"GފIXUtQ*F;ly2V_9K!ro8MhTB'ԤDu FQ}Z<_P| _@ @#F.ڝLL318ᖬG, (YE4={hRs.ޫpzpd7f:\Cي<mbouI^Vv*c$$_V9t͙@Zq-RXm-41c%KYf!/bUvtZL CɰGfKF} '8ߣ:yl9HGlSDZkX]C' \{v٭ Ɖ+kvPN>tAaCze8,B헵r=9AO2_,ѹqRXħj:T!.alԪW*5vF;j$g֍vn]9t j5 (giЂVAb*[?b =k ZV~TjϬ/]X*I'תsRk#凎4_ЂFAߧIϙMoæ|>5rj8lڜao<~ee`ш+18sѧP_zTyC~@}nvEF|UC3Dk|)a~I 8G{uMozc)}5qر;߹X,>)_}zs-??;;ELƲI B+AYsyQ ]00䄗hP!FӬ&l_:ѽ{NYWcX@IUE5O`PP-g緷FilfB]ѹh|Lٜa?bhȖe[[Pn еz WUe9=5WQQqetVCB[ۈux+*yY)A"Koפ3Ӄ%pVڷ@ uM !J& 4[kTZk!HϨaJP0Ls: gO΂4,5t)pc9(C})ǮNL/BX#~! }ҌkF}k=u!Ԉ/=Fr=JvgPYŠhlOM+2`5͉ꛎ~U !ث"ߪ8k|09Ju]Ik GMGg3.I"6ħD.! hOV5U?=m kY—1*KBTWMUֶ3V,/(4 RlPmh(/X gO u z=Ί )f}Vꪀj.V>mPr*aph<,c${r2I /n'ɃJ@O?;@6ukD Qih8B2H\[R]mz-~ԼP%Qm s]Eᦁ0`*-̄E\|J|tz#]&"F_e.$-+b[r[}5 /_c[z o^z(ЃcC42VV r=ؔ/?||Yw#;Ghqyzz뭏G|^Hn{{}/|땯T7Y~O?q:S% s`BE t6Aj;WtQjdžJ]Bo9&\xѩ۸Y< 5=DKi]52eR<mv 2"9& ie @n# )>aC[0xoZu+jnz^$=1vHa4 HL(:qlѪl9Ӄi~PEDcXi5 ².ٟ#+Q ,WU`ܖJ_j@ġİJ#nbX^ZVQp.04\cbZzp^i}U4`yJ'B[K DnY~r+">ثgN`W'pR]oh@ @0.8t+ :#2<_M9jlFh\D$)3tICɈx|-z#+M][)|qps)vVktADߊk 8綢L+/+(N]tJwz}4OJé\7?={#h^Ez (v@Xcט(D?[bKb-hT,-{A5* A@+߻;wypw<;wggggvgw3YujPYpA ^}bb r-lR kFA>X`RS3h.|ؿ,zS_gH3q竈Eq9bGptu4IFF\pcu# ldCQ_";[Y/: m AM4E$QTH!ՊDFz)lOG@?2SD~)ۮLhgĊX2|Yؔp9"@lD|P 4,$gb8b7pybunxLqf 8rQQ!(#ԱMĕ0)N,@SJ5%gjt$CEMKaei-(R'K}6(4:d˝-U"HSȣ,8H<%Gql)rXș($%]&RޑCFjBj(+'7E(YZښHcWhג'O EE rkD}h.ǥ#:͖? Ճ$bKg 2rh-%X 9M&eI-"]rNIKWRGWt},#'ؖQF_!w'GAA\̊}1IΠ @/BP GKRJңrDu,)HXȈYb.KHNބCkjZT-$/DyFk1kâsQDR^O5SQj[@5Zb,PP@p.%!'S$`H IRH#>s:!DE,kDM,O@u#Qo%_99bs}G.>A}Ғx({5˚(Q%/4Iu/R%o7T 5+r)ʆ`nnFӤ6"HSW!A2ӒUƚ5kw 7gP YZXXQF5 C=.]ȐrK  100@%%ĤI;QXH,[F$&ܹgh_۶g w,,,TFũj MvNm3xi8Wve*ŞDӳ@{-5#@)%MGɃZYA~Se4JVlI!j#-GM(5LUҝGEԐHKܰ;\ozfP)idJJJ߳$s"f@,9ճJIt\ *G+@RE-jJ_.x%{e?JX"P+D~$b۴ !funڻL`Cf(? -n45XFHbIdH4F,#%W RS 9d˞!rҲr`JH+5RO6:-=_V x[kSc=RE5vL~NXFWhkqd% 2c}-P԰q]<%=!$ȉY tK}%@~/HLJÕIrNxN,%%$he.Ib$o<>>Su"Aj`Ifcğv$QYba)k!9GMe|%?FP.V R4%]imʜEdR3S+ԀΰIF֢r[C,IIE"A}!wyJ#VuzjQRA B{k# m,v.}(-Xhj ~D>Rrj!1(bФIuferu =?ϓ>~AKw0ٙ8};xɉؾ1LS{p2DyTy~Y"B-'nʿN$-,ԱʩXHˠ KsSC xMd}5' {jk99 )b˻tGҘAC$ⶦT$SU6)Dt,.ݩ(K3Krfu KS˭Ll(ю6x_ТWҠ壊I]q G/QHY"6 OT:-I,'nkkh8ِZ<69Ш'Tjk[ql DₒMbseR\:%4C; H\^Hr]ָ*WCڔ$ru!'h(C2OK%[,e`Uu%)*Z9B*#d%I,ج&d49hh&і ^>j7h0ieGH-#] FD`}|Q$:şBQ5OO@$DtP֛zDĖHSiDl Y"Q W@IT15H[2St*!?Y$r1dLԞ)t1NM+O}(+_aW6yT婈ӣ^>ƞRTD#jq%ĒTGK2i:]/SVɞdm@UB|k6@UA8j?zPRBɘg Iu"K ~HH5Dl- i8Z|r7$W iCHE"ʽܢbZ雃271?Epۺ}tpt;N6V9nTTOK(<bh_1,M %%%W?6:lyf /;7VFyyyΝ9r~O xyBmwEGhA.lHvPب(X ;v8xeKb߾d~TǏWnBB&M\lT"~9ܳ:F* 3hVI6`k,P] ujcE vB]3RuꊾPWt>`BHPs|͚% C;mtOQyf /; wiȈۚ#?޵kWccui*IcxMN:9OXؘÇYzELL}-D3`ȥ zPZZ& >LÁnXͺ?z8D=)Կ4xwS#\beeՍÇ!Cb,NvIIf??ҳ R%Qy <B DP##22.jǓc`4Z-`0̎&UgP аy'˼yERRR`` )'嫩EÛyUl@<Ғ͕MٙX>8wp@2]/aUM0 0@WQ Ѐy#O؟Uh'Onnq7'239-[:9r$+kʐ!l×/VǤ̙C8@N 7lxyyc`j2|`0 !h```dļ͛&@Wf͠Exxx^ܹ3vBz6"0GT!v$#!̪4TalldggW~1 ɀg<`0DLL7ɦ'$$L8G$kjjVF޽ԔMVU+ҼyK->>zzzpN8^֭ E >{ _ `0 OLL߿?ɂ 377766f6Ynܸoo)S4П.ѻvjٲ%Hh{¥1553&mJ~t;}:AOƍϝ;'Tb^_ `0 $%%YYY1.l2~̙3vvvSNRڵϥKv wttd";{ٙ9aCqxEmmmM366C-pGGǎ;2xE}z#G@3>5o֬Ǐ}}mO#qDq쒒QXd„g88>{9{…ß̝AyD[[#-;XްD92K~A1>?֏ԩSDDZޛ<==?O'֮%'Z&%%_U2rd8'Fy/vL* E)jvҥ鄄ܥK/YY釆>>͛Q Ć/\i.s8;;Ä9H)-4lթk7ݬyy%Ŏ\&Ikk}"V|e Wee-_m1jSE80b̡#"[)rРO\OlO27&_4 8zXYYá]p'M"\q-,lv6_Q^ ( I &[MMMfR#nݺbzx=rHTTTd"riii۽"hjsJ:$?-4iˢ4dU#<ɸy3HXXS+!eBPJA M]\AH#23?#w﾿m[+8V2<}qwC6a[FN \%K.V>Zr&qqYk0}kAWCBE ={Gۙ3c6lղU߾MM:VY:2Y7n,wtԩ.aaaș!,"[Y"1EEE7mZrI/^8_`0 "Baff&F(\]]L*Ç&LP38(4o{{{kkkfwss{6Tor fra`+&66TWGici&=r hhQBB%11 Y{R~~vyߧԩ9VDDÇdƺK./7djs&uoݿ7o||v&$#FL {|4zuko^8Zr@WL:UHn:UADˢ"{׏'{Cu/,3W_}cNoQQQ[G+d-,,PdXMNN5=s P111 `0!;;АTUa!wف*hii 0 ""b̪JvBcjbFb:9[\.4⚚*:#zࣣG yz4!ILL@ Q@n_}*%%ƆlF]{r6BJ?/PuFU]/q@٢ՒW9cx??d[ZAOܭ6*Xeզ*8yr4Z8r̙˗_Ĩ#W鐅[0dKUXCXx8TaÆ V'MFPbsIII_GlӦ5S`0 x.ysrrjԍoheel5ݻڵc0Y((UhNHޤ`#yF9222U ͛[<{YXXJwݽY33Ξ}qڹs'p A'ϻ5tϞ?HNyws3ei>L3weǎ6F 0,-‚!\Ǐ5NNίdZ+c|Pn:)B.N B \ @27nCvzH/&kx{ >QLXT Q֞},FFFC^z5S`jYVfsQ`jGff& bvprQQ'*رcpp㉺ NZRRR: ]モߦM2IEW 733? r?t n Ç{ } Չ(­[I+W65q܈-[G<@e#%e5DðAZ|y***#3fwvnDfΞ}uk={֖z/A_C\I]\][MN:vsզ*uHCKjiٳ{F˰iJZ|9IoJQq[W{)MQe4¾0u Aฺ_LJ+F主3`BB# _U8Y }޽ۡCCk7oj:Dn\b bl'&##/_2?규CMtuA\\֬Y>'Zڛ7y ?[GGcb| i[|6~@\˝;=:TWpqiìev3\ t ke = v˖]ݴiaaYq1q=UKti#ï\FAd޹3uݺ{7LJOTR/TV:urD!3g_mmyii>> |J:o ޽{=!ׯ/H_ZY`ԍ̌!!̉uS7`TKnn܁۷͚1innɓ'3fiݺuppΝ;WӽZ$%RvSFrrrɜ`[Ή@ 2u?Ϝ2Ll!ghw u[8;꺞OU"7? j3 ZZg d*m|OxrXeՆV2rSF895JIAԘj1777.Pչ`7j\Vӿf͛71iF?ZYY[w/Q|| ^N6u*Ɂ+F0~u0㺣moocST*r/\V &`+~blC]oE==q0F#u 1gKiiCw z@kg͞%F(ފ B 7lSWAaYPP2;Ƙ<==o߾͠p kj!e0rsj*!c $:/++cZ`0 SCY!CP˗3 8wnɒ_t[QvoY~+R-3xsH֪lcc&{LO8SہHD:bٓ҅ #noEm 'P&hj.5"uRKG3۷_5Xb[nvI`0BrݔbbbH$zH_ȬY7mعS'x;8:C]0zVVDxSƇ=yޞY Ҍ4'''+n oRAX~I@t4q ѩ @iD׮-( ƍ#>x@LL?^ĉd: :VLG#Fx*b{ogg)1!$a1̧;Ĥ[n?/_jWl'A PՅUR|}}m>gΜc UxoNNNFLC!11Qqf >_GhA.lHv}Ӧ;v qW GGo|[`Kpčq--:F`(ŋ/Ҕfأnn&ϟg<8Ϗֺ'.rucU0 gڴiayx60_Hl iٲD"ӧ{&nڴ=BE \6l\TTAk1=8##I& & fff^{:ׯcͬ,OO2X) B!=̌$ll $UWp@DUz0Vry|&C>|!~VAD<{j|˩SO~#"[MTBŭ_}ukk' `>?UʴiS -{LZ^@rqq~ -/Yb5W ,4Cƶ`|#OsRQ 80`hZN#|.I¸%'3ꪭ{:CpΚEnDݹIId'91-*"dZ NoBp8(AYKޫԽ~1JHTվǏÃLSSfx<-$rsjiq54~1ݓ'Ϟe~]y8/^dIؽzHNx -+ZLʕZ۷IŭyyǏ?KHsb  Uu0 yhJ{+ "DnI:2в-,,g*Af100xH$T`bnrZаG}-[BXDBѺ5_d\rس7''ի$ap+¸ `YYYyWKKpol*xC]e7ae(~sBy9mVII6666IIy~ ""^_Oܻwp~9ŗfWEƀ[q㍯ΝUUX0#o:  S۵]; =WWt]ޮfKgeY:2ڜ ;bVK+dR"毢02r>0wo.]Ė^$}?//8=XRNÆG|~QVĚ/(---]Bff VVVhHnm>D"U p,s > a$kiThȑ'3gFwm E99EҽkWb{= `m v6%^ҳ_ ΐCiA wv QQQtdz SG9'I055U:uB=22Rqa~[Lk:24:QQh2r$ZZŠgYkZ1ccKfv?}]Ӿ;<2'"0B+'&0ƛ!ejj]pPX}43m$ ||v9;7+ݻq~Mnݹs`@@mwVO`0Lo``ꕼ\xr{YEZh1h 5_3 _xqUi֬ H!Ddi'F))548tS}nmٳo䙛뢞a A4vuwvfFF*ȃ7BaNvͽZB\0LœGc듒bOkc<*zn%ho^=>ChY߶mIIIZ{:8ޮ}]* V/(ѣ4jM(ABBz͛7Դet([Er8*|Θa737"//wAfͭmq2hW&\58?ʍƸ`. ~E\wo 5z$"")S*M0sAf]Q5X~ddd<~ںu k ʅd˗/ϟVܘϐk׮ 24<, P:JV/$*&6goS^u+XXbۧMdb& cljjnik}\%X\RzDfG>kii1hSB42c0A8uu=ѷ/qXŭY `! ={v݂//'BRՙFÇC۶m ! `jаMU~էDZ"߿{РATd/~OIK;v )Fe `\6j(==ccc۴i`LآE ɱc"ݺAA@Mt'bYPZZs##ۻ|Do_|}%ޟ$gLgϞ>}ϟ2!y ?|[Ʈ[g۶or8[>}y2J M֭G)lX_~TӾbhCΓvXD"QHHȮ]; >c0 3ZSS'O0 ӧO# &[w(') `0LOϺblmM<|H4w/0ОC''!CkMMhbpZZ۷o޼ G0-ק];www_SN >V;vLҲG/\8mWA:|ɜzRTT OÉھ}{˖-۵k50>9|8t1wH𿂃_8 $D&s5֯__ɓ?"ګ~Mƌնm[4BzCƎ[aEte EO#G ߴyݻw7mT |1JlF"@N.y=R7[~Zi*ºL}={Y00L~ o; V w6m:eʔzva``УG__7nرu(g;#w]vH=--r}VQDjeHX,@!U W]|73fUN{;~UuZp&999 ۷?73n޼iggiFv( /\(3ŋ'MNHH6u7G_7/0TQnn.Q/T?tuuz*yw Yǎ߂3#GܲŤiS ܜ<&&q891`۠ zuդII&^ׇ_dd$h`-Z4Ou&,<|Ν;/Fƛ6m>s_]]ݚ&hccsԿ=zt߼y |K!-WPU޵kF.$ 4 ׭[ۻW/b.WT-V[,ߩsvm:8wܥ[(  =p fώ%3܊-~sf^am޼o!mڼ{nuXb^ [MNNfPx>ҥKxnj=my…{uYՙ4XBCCW^M XpӧτB{SX#ٰϟ_ZV4s&մi:)T"Vȍ<޿?d%$A /ի˗/BbZQOf5qqq,|!A5D+έ޳;g|:3fEiݺo>;44P/ :88qU%,lT~59`A3۴n]\\|! v+V\QXX|m$>F xn߾cY۶ov9'Ojٲ# ˡÕp0Z400~033qFӡlԨQjj5ɂܳg۷oM`JCw߉HaF]6ر!||Ֆ-}&&rEwFܲ?f$畁' gO4 ~Uٳ>}`Q ӥ)(x/D/]]%=c䊙6BFknI io⤉WwWCUV7_?w<HOP|J/WM4$LZl@Q*b>uttu={x_S366Cf!11Yf{uǫݐ2g 7,=q:xmWɓ'OcUأMys"ž}!toReWܙ' Ͽz'OLj=F>aaa_|o QQȰlq"+KDV,)8E!,ꃊ@[{S^޿JO;B777"KKKwE;_,0b=}&"ٻwΝc@Kccc}ԩC4xzmѢh222vW& !YR%E<~LsY L}RQ J8~8C ̗ي+fKBPsA2ޡnR}lLC$+T9C=*SRRT233{h17\. >f֠>`b+@Ғ@v''R$7]Pl.(\Vܼi_~?%ݾ};::{˷4hǏ:Ǭ@LGO&$XEܐ0]ܹk-JܜT }f ^ǿ+Vn߾}ԩK,Vb1>3?X|Z0+BjƇ; ={lu:ub0Mï^+=|83M79,7,!Ozɱ͙dU9߻l޷/i1z4E#rPo߾mڴ̱b| #`PPPpI@0aW߿-b>[ Xo̊•|8|www#Fo*F;v կ gΟ?lر#C544 v̙޽{+{H$ PP֭Ǐ;sj֌(H_Kח"0 ;&v{=%#߽{wDؾ͵kg2Ν;QQQp(աCнǎkӦs)Q_0l!ׯ]5{vtԭݻw9Uwv$]EEV̟KΧNvݺ >e^pqro]>}zɓlټ}QE7n@^Z`0 ggx/A}ؠH /\iLp)xu+{,::,g- [ߢqL{mN`FVjMYYٙ3grrr&L}! ?~ѣGSSS{;IS|;cfA}[ߩS9*(hH$ ޽Cqܒ%K_~-~ݺu];555gΘ܋7w.\nҀ,wtp{,$"_S>ӫ`KI`><<Ʊc*c? EDD߿? @a! q>~zzx89:s$lݬY7mعSRڼ@/kHV-lcm=fmmc,^DyyyΟ_zUM`0x'N(++c֭[f0MNz͝;wzyyk׮.EнѱZׯpa/{o AA*8X)޽;rxHxܾ}{޽ ̪nݺ|Ū+ /_m۟y iS7hL D.b21 Km۷ϙ3go{2zAvҶ ޵k4`jP DͿ),p*m]y0SR+wwwuuu~:3+mŎ;n_мys'''؅Ba||R>Qu^{Ӧr{8խfY@>{YbA &+Ы]v=<**ԩSfff]gggś ѼSo93,\D]|կ9l0+++US3uȑ;Ir%e^r<?nx 棅ŋA#/I*PUhy-TK$ԭ=nT۾PT(3Ce8={ P HOw.]884ibp3&~uUcoDjXު38...Ν+--!w: Ѵi{%$$(0UE@zQxæo V}}}Ahbm+>>LJJ4h*VEttÇGO++cdž½ͬa Us԰=nTݾ/+-HwͽYlx%dXܹmlbbii@%٨gv0FcWwWVdGC[հUgXsrrzⅇ)0aB}>A6C###d--zIE|K1.*5XPƌ`j\ăKE0 A԰=nTݾ/)-[[[*>q ۴myq%Dl{{GUalsr.bյfX xyyݼyqkffږ(^dCY<ܹ3*V•+WGn8eRg$Cf©2{iՇ+W{nĈ`+Shjj9׮]رa/^,Y4*:UVAzY*|Ȗ2hWWS2;wڼeKJJ 'Nǔv?Y͛[֫y8S$:#u';;~qcܡC5˛7o.\лwofS8|ƍᾄ?ydҤI\#U17nHLLo.k@@C7$Ǎ9b͛޽iZ*XZZ?$d9Qn2~-(CCC >t;ݟ&'9׮)wnGO1E T/VAOLޠ """jWԼǏA3xǎCBB@5k֌8PE$=zZs'ʭ~~~>,ãXh6GORX`J!F%,X0S.ڶuvqҹKn]+ƁP(d*P/}…/ qnZnK7 +,Iׯf-WR Nw9sN"Wp_ecǎ׮]mԉSN&|YhAqM-4ql2ZwرcuuuAUPPPZhVkX=w\ݭ7}&W8o/_vpi:P__h9ro߾J*/LMMUV U bPy?<CsT.h]xABa599A E~3! 鱎}988:;2+(hQЮ[d+W,_.!ܹ%K<@pysпST{ԻҬYӐ!5M6::z`7׋˗3;hMK7o:gN$GBB̙;/ٿ?'NC,OK_h-)-'M\cjԂt`empriPýիWrIà lWV#?|pUea_&Mڴmw;:Ą{vt&ywϴ*TW,}f@^xqʔ)ׯ_vŅ 6mz P z8dȐǏõ  P3o<vM62nܸqʕ Nѣg͚:ֶmiB`-..S}o3s˖-}# 2c (4kccyW3--mĉ׮]f̮]T>ٳP5*Ç^[].EEE/tyկ } Ѐ=%)))&4@{ PNr֭Ri?@ t2e̹Cj*p6/?eO3})yh!~g͚iΝ:A5vp,79(h_Z{2uZLL]ݓc=Uò~|9:9Ukk8;v%Kw9qi%?Ïm۶u|$FajJųdɒ P$ɓ'\Fx;@3!w>pWqAdcb[kW"[z%Z8~{;wlaUw?vn'RbiK.WB-~[j5gPnVjٲ\ݷo=ÇmXAXS^*'ZmК@~wHΞ= V^-; 'OFWnL8F:~˗NcF2_k]f``ꪌ===] m*[y={7үX7 ѣǧ;^_AظAvyIɓsAZNB@{}ȑSbfԨ3fijÇ*IMU72*5!1񍃃ܭصsG߾bT-ZyOOϸBP?,DHMME>Y]zsƌէ:ڤ8dȑfBw>|t۷m~q MJݺumd³ԂG(DU"xAAULYU6x`o(͛sGpAzJzHܘϟ3zl_yvvv`ٴek/sC?|]`<[[~QW,DWG'yX?e-hگgkk{qm  {vvvff ,--uJ:/^}6N%܆$Ǐaڑgk8Hԃ׍ӧMǀ [K^zH դdR4 ;zX0$\%++} ;1mGDdI T$jv;w %.2q<ٰ&(߿چḢ6;/n߾V$uYAP`\I l1)9埠;1"mդz|{\/Y}yۼySn &Ϝ9HԞ,MTK [YY^7WRRE!C]vp׭[D9 A 9W7 'NL<^yʅ|.Ȟ={r֗D}JkwON/HOO勫+a'OdeeGOOO&a@d۷ot5(WHdddff}A[$ wUs*-1ƍSIӧπ}|9 FE y@xixTq(+!.7n޺z ˾555 p2^` SSu5& #&*j௿_9bX.;vzy{Ǿjz+ơmmmdooov?Vp:;0`PSvTǎ 2;//OKKkŊcƌi?f=zJ, `lz's|ed%۷rF߰ۧM{ zLqY矽pQ'MLL쨍&8 6dڄ XtiC| .уAK6mHּpck֬Y|;:LC*߾}ȈRQQ]k^ذ^v>A!XXX ?[d& N>c<ɓ'S'0.ͥS_u)X /rÆ *a 5]K~M 0L W27?q2jLvڀ\_xjLйD L3nyFShiPP_Ok)ZF]Sߥsg}zI@  |qMaP$'%Ʊ,Fƌt;o8VnuAk__7ئPcYDde~VUWU}N vJ{ 0:,#8Cc}<ԩS01o޼joooll6<"++ 400Bp}&$$ 4?{!A&2dvћصkW ۷ y=pyE !**:eʕ]Ui>lfY|!]F"Q;Ϝ{o/0)ǿOIIĬjLE|]ve8$4luݻwghL{'1e,ϥS0~<8ؑ ܹŋ!!BB{1נ=Nz.6v6J3%~~yE~~s>|Oֺ9 H:X9?*i͸03kʟan7oޤp!;v#G,**rӧOA{`BL&pӷd%ނ/w ˗/|U ߬aÆ5u"GN۷iiiּLrnFFe{|||0 ≮vի1l 'ы-ڵ{7RGEE޽swEiR),ҪYveSxݻr`>W`B|k#de ^+W2׾א#=gOo\ SBB&&~~K`ZX /XϪ_\l,7ck]>f޻(}w->_sx8996mת:\ ".]r&75'޽KMMܨ"!!ٙߤHr|o:׮]{KGeyw& - 6^ԩSy `g{y?}TKwE 8L&k7!RSIJf=d=46)Y9au55777xǻ^&222>> vTk˯&&nݺY:7nXʾ},$χb͛6;v:u:Ppay`]ٻWҝ;ݻw㉓BuuGTWW#($fjf/9&+'gjf(.A+]VVh׮]SPPB,RϏ?3.\ݻ7} @;ÇǏwrr]s . ϑ-$"bݺ;V۶n9 w\t޵ԬKΫVby߿'vesԫ˗{y{YV__ u,+mMMTVVfee[fIfk2@;vLuus\l {vS\\wHx(v ;ň3 ւ.mm G H y8::FEE=y0O:W^= Y---MMMyy8[UU˗BPj9r$zHq777޺H>nݲ1?~a[;¢K.l"))imm}|ZC+A=yA`ica##$(UTT8~hdz*g3Yۣ^F9"TgH½KI4s&͡, ww%jOKSSy@ xӧACOTTş?b \LfggZL * LhbbRf-!Q'eHLLtuu埚? \vmСB]]݅ *++;xG_!MHH=z4gp6z*hD =Զ:W"jLJJjjjjΞ=+++;bĈ9G3;v؋/m<~x?}AA@ ohh k௡ W. (juttbՔ)Sn-@FGG6LGG׾4 Tn5?~ܵkW޺QWWOIIO`!F}ʕsM05:uӧOC7MEQIcGMj,>i[Rܹse٘FxڝtI'bׯ_Y^ZZuUU޽} stdx||;rrrw03cYY,iYw$Ⱌ3cFf߼y;pPi  |RSHInE0)ZXDYhqQQ![m۾=77pÆm9~VV{?j¼*=MM ډ ԩS'N>ĀbցL&CQiVy6ʹ,/Ǐ7mllN8ѣGWD#DzzGZ >ӽ{\^pam!!={|9RFUӦO|/h_#7!pxOqQ'AHFʘg47Q;vܸalB1c( aǐSaR[F Lf )II#GI5Pamn`UHP(%nH.zzzcƌ9w#xN˗ TWWϘ1nܾ}...m'߂5CF;vX^d>7;L2CWi`,8a|TT;w.Zv/u˖͓&O鬬,,,|ɘ3;YHڒ:=zh3_Ű ,O>.,~Mmͳ̌k׮Zt)l"#ŋVݺugeulgϞook;cL,?p`˾}`h!FEE+$}Qq1 ATTԩSN322LLEVg{yؾM]]fX+(($DZal+g^3pDSQp "χ0q"RFC}6/_ u hRN5eʔgϖ[ZZڝ6ƽ{ ꪤk_RGLLLx;\o޼@ҷUrqq9y$pry\TP ښW> WV^q!͛/^D"""a!{tjkWP~8rӄ`B=%vL;u".н'##1˂>>S]]߿իkܼusƍrddl\\o>{}_vݬY3ݏ4`Ԥk.]6$Zg!!.o]ǚcC\{!222<< [ [~LWnnٳõ1P[QVV3/_ :3} rʧOM&%%kwZR-6==}̙<޽{{(űc,--ӹ 1qq eF+)XVV?~˸IY$?)C$̅DIo:,Ν; 1 "Çirr ^ a[)))1yޑGb~˩ 8]]|CAXO+WÌϟ e#aR[FhQQbSςݻw7ہօ!;aOf-۷Xyyy8h`0~[JVVxX 愄tr8cǎ.ޅϟ?7h+]sa-7UTTlܸ)8ϟ?9t`yyY/_ OVlդ'VnnSῩp† E9{`x#(nۍt[5~o@~ ߾d%KSSdE߄8x|͙;GP;Ό#Z|:_~) ooo777LӲo tEC0;wx28$DXHh=#FPݶ2C??J£,t(<==/]t '''n:8 rrrfFR-Ç6>yyy޽>}:88::;v '6x―ս{E U!덺eˣ^] ˗{y{YV__ u(b ={fc]:w116.}8ѹ|ׯ_丟;@¢!-ܬMyEVV6̙nӑZe˗8' p(88p8C E s1LO Fdž5jd5gyzbkܦZڢO#Gw/f$<,BǤgϞPܺr˗/ڂa.EEEP9sfNxG@©<}^~^z9"***p}[>;\r@ 4HrTmmlKHJQ[Ʈo jjj l(#5 jkj]&2]UUb[|ѐ7myꕫw8utHH0QmIbbbZ0`@;k˂۷o}ؘp~I}}=#GI++Ǐii5a rȭq,Xt{UPX{}AA`_,`rrlb`Y?c#c׳}HHȚ5kBCCqqξ4*YIfw^zM<3Ugcbb֯_>}Ѱ=zt=SSS///4r&H6ׯ_IJJr?뚚qFDϽ#|Ĉ3g~sii.]}k׮\Zsc͚Ҫzg# ;6/tu3ڽkd\.//exwwŋ/\n|M ׍M:>>a999fff;{Pc<7@41cmtf+%% ;w {] `C@/]tΜ9ݻw1"o^~/_니VUUolb R%)24XGGg=8 Pׯ_ehkk ʰU?LNNVQQ8o3ȀB*ONKK֭rQMΝA|) sٳgzz:RmiӧLo> ڇ\fvf5|豅$'_dggO4w͐{tFBCݾ}{ܿ~߄aP ;94l[}ySD34q"6-555ZZ$(W._߼_]‰Ll#GzEi YYRKkr ކFGt[UƳCAAaĉpQݹs'55~C}yRRܸq8Ο@9TUU}'~ŋ3f~̀L&tp^|Y[[[\\,..."""++@EQQSD6Grpp }JAAG)1CLTńt='33G?)4:'OLus߼y3 &eTu#,֭X#);C"$$޽y AR+,$lWlWkz]]]RRRn߾maaannnTWW?| ޣGnO R!;;'~nݺekk*$.saVKK &)) q*o޼ hp+>Ugq(@~F 8he߾zz vpgm 'OF©g' ]830?IZ]֮]C+} ƌF)g t8o h&44 w7ϺZ$}-*%%%?t萉 hӧO{m;a„.]#ހosxE?j)**$r733۷`UTT;'CIWGG1Xo```jj afpѣG-G޽Çm, /W^^歛6nda'6144Ļo&55px؂M~M׊Z̛מ={uh&{c4.[WN XvF%6..>>4uXڶECC}۵dk0KmPNNN߿Ȉٳ?7]?~ogϞ֋|RMӧO<Ν; ~)C irըo߾]QQaaaѫW/~ {If:::/^D.JJJ#xxLin\fV6iOHHcƌ=5&4>|(&&Rwwk⛇9z4>.k **(_)ڢ @&''ٳgnRWW޽~͋/ eH>R>H6]rs~~~]]c) DGtuu'N؊~CǏT@ۗHrrraa!>$w O__իW=zfVufϜƧ^dfo!!/>xxu瘱Ih'թӧ]L:uJ whk+f \ёx劜\WC6T_Z{g:@}r~#}୧Gt˗/y(ӧO@Z[[tرV[m2_hϷo4heoܸwڴi!5ܴ_|III uppޝ_0`;w\]]gϐm̜5s떭?HDavvf ɱsv9sAg3443NkB#]bZ7!>иw_?e˖^,-[[}/%%E>ySG]ظm۷nذ~tu)foq搐o/5kVscl#"*bd 4 珔p z$"pxEihhcڲ;|PqqqUUUꚚ%̹2!SPox| n"lggl[W4Cz6m|WZɓ|:wϛnܽ&". Tpw],w0.]̌ZZ3,;yS|?T^ML< ˗~*ֱ={΂Vgcb&L/! P__ohhdbj>!Q!HE@RqppgҫWt8rrrϟ_~ϟ?~7%%%٦Ço^ /x@ fnvך@cFd!!!U?:444DFFԳ3&N5{6v2  _4@~իW]A@ Ы$4o_EN"Z>s~py<ɓnI4w+h9 kd2OV o@ Z F"##`_MLܺu t@ (H"Wka 3[njF`}(,,|>[EFؑcffD{J???Q0SS~Y{f%hVhoBg P @tX/ C#OɇW/_VUU"xU1q (pI >XʪJHg1njttለӧu?40F|B094f1m~Vobl2p࠲2++Cȵk0s| h 5M#DǓt?1L WU;vlNDRN&W[i^ j؍pvo_!IVNO_8쥢ڨ.S +θMq eZ09@&B\LaYs)Xx<ç e=dH.5@(˴p 4,5(?~(''`Xxɣ-p\\XU}(*;;#׮K`vʆE2ҥeZ_fGڼLՐ0ׯ4 4PiO kj/g}D)()+w36KDP@PJZ Qaa**X,"F3#1\HZ,>-̼WA uv쪪*U 6OKSS&&#a-;qY9BPg'ȷQ7Q1J"] .”~dag}~u "U g.54(ׯ!{Q|HG[UȨž~Iwvظ?a8g\~bbbF&,OOD x,$%5w>iv3$Q~ $ݝ2 ߎ++VJHNG?Z>cHCU?~Z.)%U]]W(%8H xԷ.={53#=yyJ- H"]}}?x$K>|# kDvKKI aYY{)w_=BThlb&#+ _zIaCӞY=MoߒgEEJҝ6R|UW_ߧͨ$FصE- OMy²8)gkhΛ4·r [$IORQUkTS|E M-v)R7))]4iCD+lT%]dCnV,5H %Q2OeZ&!!zM##CBB=:&-7nXʾ},X7+~۰W)ClCEX^6Ν),b*}r~[i^R{"A@.aj/u7ͰH}JH82v32b ؽ{OtL H.M2|ذjsMD-hݹgOXHaF"U‚¢BZɨ֟ QQE( =xlB\\THXt'{ D)Bx| bPFgLM\QC&[xx͗ϟAΕ~϶?3#V6k:f묆ݜ4de,e߾aFUq*Av?@KHJV#Fmm- tjjjS(ZƘRcatSfzX{ڵxu,ܼ2WɯYdrKIIdd1U.qMh2@ 8 uiKoH^<=p褴3iTڣ5@{^3$xT;D , !!ХKUxMmEpM[W_KG#H򊊥>橨SZG)=#%0k[x3`si25YQjF%%✷th5*adFp;1]޽yCSK[W/_S'A}amQQX:wQ16z,cHhXdM[EBJld8_”pCݍM23ѥugYۨ0$*t0 #@8 Y۽kUXXׯs̹ehh,344*lڴ9,4D  | /LYO?e`0mQ cM@٩"_?K J=ߺzT!] r޽yꥰH.*z]iVؕˮo`Bde#A$8p_>"QqgXd*XYG22ơ[o߼/nۻ(QKH0t(.*Rv02#CDB] EY99P&y`QZ,R6ܥ rKk4 D|dŰ;Fu|clEs?;E :OS,]yNd ]tYE# #! @b="3Ƥ⧞Yj$ϟeb[Q~@ :9{{ѣZϬP8kMM}AAVV$r޴qC?H]saeݻw5Diە?g܇ o-e~SNIHHx{{aBQHݻ3f3gyOOPPѾ)^D#@[ʒhң珺_qqīW|RKc@7կzxxQ/*L1|rv&LZFFSKъVB,XO۔"]830?RGEE޽swEi~ۛ7ocւRb{>>>%Q ^z5~+{?ܺu2kk-[hhhЭ-**Œ !Yjge˗=zEvƍmNN1LYe)Nbz>d`vGݯĸqcJJJ BHJJk 3C}H,rF[Ӵu1_Z75(2 2ۊ6;w8?=x0po}Gqh}̜?7o*##CUllܶsss 7lX?p@ҟA.abbb 7p͋/_C9뤤W׬YC7 36eѣ>aP533 ك:=q&:8::SwN,1mjddԎ;7n@Dʗ/_U6mj (f=TQQXpѾ}A$:8e7e~PRRZtljjj:::fa(5.0[[UU٤Z!R^gkl>'$,,###b*JjQ>"D;B  }ܹaPf'OI_QYYy/^>bϟ?%%+(D vww_1K!<^d23UՎ+$CB/^|!k6nڲySEEƍ6A5FJ ~l:/[[}, ǫIQ}ljjʸ>$$d͚5طfF@j3l*n$عcwٳgh(pڽkY.WZEºuk=_R~܈KΙ3{F,dbߥKܵ{Xo}3f۷v+ƒm떙< pm[@tpPe@usCNc|UNNyz9pF=V\9df!אq,x~V!o9='Mb~{v_fYf2P !!.'ǟ?޿˗\W0[pQfk1OX8 1Ҽr9K|.Z}:,$GtDþ}OGɔzY4&WIIie:z܇:3WC]}ݾ~~ aZ(*) a u>  ѣhqqqwwkײzX|:6nܰ Ht1 >"htsQĨ )b5jo-r^v/ڿW 3 ZM]C=:2s}k?Z!BqQQ:}uʔSttuEvҷK. 6%\VFp謬OĘPp+|6,& N8IcYYYl KALL !\D շj})whhgQЀ^G 80@ D`=~~˖-700g/f$l_c_ey賂Ʀ;vLuus\,qhrmk vr¬5MvB **Zm Z!f)**EU@?_E%^@ 3}ѣ>܅~VV)ItFeaITHU"6v\jhԆKLH/_OsptcDLFw@mRRu(]g멣6R{II HY1Q5U5^@ ADTȰhK) c9j=z$"p< ˎ!zA ΕʂuT@VWWcaΝ;B̙y/@4xLPPGd2I_C0E@ 85},#$#3k^!'k/DGA ιN:-xBrbbb6g> n qt: pM(@~tyE:R2?a'y_ҡfA{ &z{葉&`1gΘ1Y`Ø/+7)aa'.VqO[G7i,מҟk, I1N)S:$##={>;vsILdG_@ ͚9r[r ݶm3E̢ xȘ7)c*7ر>> EENN ]'e_J䓨b FFF XG%KO8d k PZ\Z:u +*)bŁEEEwxepH޽{F?!p.6n\UU%~~'͛/(s}Q]]]Z4ݧ-L@ Aoݺk/(@˗/0C |FQ?++/^C:VTTHJJqkw8Q 'Oa[*|k$>>tNbr(""ү_,[6s oX< [߿[Wjjj{9(- ~a|Ü<322zyH6+g''*,BoDs&_q11htNMέslrr={< DMʘ&݇d4*>qoO8o_Whs6o{5UՀӧ3AF2! ݺuZ'>{mg=<<˗ZYY927v :a'5&z*P(hI~Oq'1]ꪪwȰvB xÌGJԩӦy@`ʔǏ1cEPIK*߸uxڡ逇}ӦRRRX+W~<XHԔcG/\c{Kqӌ64pƬY Έ>>b(!!AmȘ.ޚ'nRfi_}tm.`={ zxi K"bg;W+_Uz..IIIPlS77Fݻg,XpM֕۴АYJb[[={j[*;t֭ۡll={\6=۶hTEؤ_"bhso0)O) Ȟ+W2pjQu]y%4s-M_W?}{g=L1ckj@='OL;wj{Ǝiذ!h={`HZ1P X~ 8"/->5z(caa~رvmذ^ -^L}mmmMwsu4qM'WKe[fqd#7nX6d谓'gT!բ[f%CC*Ǐq.g>W(z#G1rE `I \~>}J(qOp9sf-wU=<988]˭KvzaÏ\S@fSϷ\*SױJ3g"㲥ˆvz\ ^i/.Dyj wR ׾UTzժZo,{o8b( >e)!)zFFZ`Yp10d%-:.>7HhXW2ԣ~y[HԮnWr%vFtt;[oc7uk&2 `ŰO_3)+)ikkV8gg缌NIMcPSJKSgvYܹ1LVB\u@Ǣ+y }LznSF^_a@*~o{L3Z_3ƎkeeٱcG6h@߿@UÚiI*! #^5550?;;77w1;{ d>|X-333!tqEGYjS_Mk[n-?azײ3QA-˗Rjծ )5PV(z@nݠ^zKL- ↕tK׮RB/ π(ȨFkkӧN5Ffdӿ|Mm $KEokT`q=$c22sG~q1+ ` \buӆU,Q1S4ṪTGॗ' 3ysqωxKعgb3l,s?$WH!])-BvNNf.-jr%9\YJ@ Wg><~KXPݻwvv7uJSjnܧ3^F'hjfilql5O\^s*tR30OȨW!/([Cxs h\]]6{'Ӯ][Z)4Cb}W G^@N'ML/a@ҞSf*ɓ'KcÖa,l2֮ =z4@led[T&\FVz**=Kw߿_?ZK-S*([J7_+o -BnnΟ[%''khhD"CCô|===HEWW_lao^2 CE u5Qn7 w4lu+|]t|fvtke#3+yیVV"c?:Yj8*MH2A}K'''/$@R4^EYP(@ۆ{Ͻ[>}I;gHG,=~Ma72|eh!Gz"|m6~TH N!Qע(㔾34}ߛ.~#c;BGKVM;MuuS; ç; SZ>O. _ۤ][.* |J}?**GԢ>zn.Z>ثm.W2ǶT< }$'9A)/O C~D- /ժ&~ P]ޠ,~1z(v^^s5ӇYꦹ%aHRڤ"v[րDعgfsZZgcRUDFdzRajau3*t`RQnoЃO_@u++w;-MM Ekx󮖍Us֦[MMGo"!+RW׌';r-BWP "^83-" [(ޱ+N_?J|& ~+H ?W+ۊ B!=+n~~ +'>J J|UQQ-ʶ۷o))ZY11u+OwuD/:ZHXT'7/7oTU>矿Koݚ8߹mӎ|;[}K rw+Gز-32sWo?B46DF4|JCɊNoT9{kcg8v?ԣ߯ RԷ(RQK1;}WSwkJ /$6L(]% D3a $P4~W A9B(yd~-|lO d֭[o߾ӯ$*P}PR4z`XL.H|ʽcL3L`i"wTNvvPE_"ړسee())-Ҿֱ3ݗG?IiR[*aWJQ@s~#ĐjT>{nR`syMi̾x惺f*Ǥ4ɻL0!$Z9^y\v|^~\\^a[YJ$y\))i4"6)v&ii/`2 PZVqR/En֮U0n_zM؝q= $@|ӻ@礧_N[o2m\e]Gdr~d2q\BKĿp!< ;mffa4d p~ d‘#K.rtt\|@3r#!l߾I'ǿgX>ZդBSK[kF\_---޽{}z44Ԅ**yz:_'B}]k/"LS_Gs} z5mҳM5̺ ޛ.aNukJ {7ɹ4[付82\rDBs_ѭK-[c[3@x_45ԕj065ՠX{vn#33K_[Au;f8hjWU uԡɲw@u+P,+}0֮%-3ӴԎ1R!@ڰWߧi@!%o _3s!D߲rJc6v"jpFIKC: P ꗀ@& ?uf[[ۭAACsHRrkhn2v};o},o>kiiB\j2U=~7T6ۧmMw{BG f :>`T7f1h:EC{7Cv:-(MGH7,dWy (!uCm݊A-Z\IIIS_SMY[m?8;'}c d&.<ڲf_Ȃ%|[N>?Mk++ zzD[tw:SjF3}k,fWXoM+o5@=m[N (?|θ(nl OވҢF?N,nюNLz)]3vV/xӹ-䵨~'vV99X⛖ %=k|ץxq=f3基iia#ny )"-HM JS'H귗;? >J.:t?sr tb 8̴gbJn~+GP'˧[c/7?''G[Svu̜< dedzds zEzڱiͣ->+XiRЍTFޛ.dfePZAE7P-W&R$Y,d\|V,7{B૮+81v6*ʌ3vE@W;S rUZU<\,a2gCUU ZQ_G5sl U zQyaֻ%_fpOۋ:=޲&R5 9󙀀>|b޷qc9/a֠ ٽ|BPfSQQ_s__ij: ~CXڕxWMCD2Pxgv-?L3F>_# kY}`nij  InO+Çje* e`fR :Z6lT&aRvF gmZ7׍H*FĆYrdnEwт? 4΄^M;kuh[T1V#jqSUT#^tuO8]J*{Z 4-EyzPRVVVUP󊀀@>ԫSѳY%-[@~,zXxkYx|4lwwYzy:z_Ӳm {vٰ9jԃlތ, =&{ٍ_ڵFEa(9 O-ȹ~_`B].ڌ~՞F0q$zըYHRE^JYgFeM%b9Jy>Mŋ +'piW览-M$-QQQ }qzo ?sƌ֩Y3N̔ #ۻWo#4f .;*PMML)` y3Ok ---(:LOKe-!cFws̘pܼeˁGy5kkM7/!UWZD|Xbɒ;/Zp i)`5{v@U;DF3z $/PPV:sQSWcǎXu.^>2r۷o7i$00P_Ӊ'FFFhbƍ؇N4ŋПEυuEց2 ċ@|+<<|իW={64'N󋋋9s柬_<6\\ 8p'DOƺ=Rۈ݉t`{\R땱15-[ 2LJ: WNjX҃ZlyU=7˗/ש#^F&vvv ߿?r U~˰͏IA\" XH['[A@ra&MhۦǗ.]#{nn/Μ=;mO'Q^I6mڴ͚vQjvP6hx8(̚5k9rO>3H>=}$!>A@ ӿS! ׿^1cݻ{| $y攽E 6߼~secccdPx.jS<<@Yb<_ =) aϧ~=i&gF!a ۷ϛ72N<_~Qٳr9sba|߱cGAѸ1EυuEց8]6HsBBB`={v yW\7n[r}J" C:@C?dRRŶ.+5nݺK(kmΝ5j@a6X300 #F vD(ΥNo9l04 T]߻ڤI%K̞=RvvW,X~w?\͂A ";\qPMU%ݽ~}g߹sd/l?|pҥϣ h111hA9" vQ..0< &M'L`RN틗.mm^xN: QY=U*_~l ̄t||< ;iX޽{{F}t)HR(w"wɒF?tQmll?~g///P-j99rÆ ~m6FrYQZ8pdIϟ˛%mOV6)\?CŋFjj''MJ8p?PUUmes +*} ,=3F2ּEL"onݺo/_1ѩɌ>v! ~;v\llgǎ*rVCۂ2|J7P,Z _F)w˖-vQQѫlmm!1`ʕ+o.\Ƣ*Eυuiii@NѣI{vޭj===kԨ!ՓD^ ?L8mROr7`.sIWOF't%|qJd~___C-(fSMB3g|ylo ٲ3l߾I'ǿgxF2:xɒիϛ۪U+ds}c*ki;WƟި`Tz3g}7WW'OP_!)8K%k\vR^8nwuu lRLf̐, PUQ9Y[CCCЖ,l!{?RfΘ%VBxc߭s*^pR\x" wuF^>v(Ą2i& `ف52""TDŽ `ŋ"ёRvQ\\uɇn1Ɯ9s֭[k׮p*3,, Ūd?B"0O1}Sx؝HwI%#z6J<+ 6W۶m{#F(VS=߱c1칹>*_0fDyPж.]0<V3gVrSN>u+00qs``-.]4jh'src"߼.~~qd3 jJ[[sȑjB/@_a0VRR2335jT+$SO!b⪋]\h2Óji߾}JJJƍׯ_˖-:u*䲷_b;.VWWE"ylHUk캸P qNڻJwU6aƌ3o<87oe61EnҺvJ7BءL%*sIIISWbdg?~ի[>#upi>0`|\غ5H%=D] {\j*y?wT\ul.==`9!jl튦'L=sTz<aG,]4y\۵k״ׯ͋!WT)HJQ;WJJ'MԩӤW\. uAș 9ed僢,o:ŃaNGGK@@@Prȴsiŋe8*dbyϽoƍ@ߏEM?zyM=v(X}| N>7nܲy1cVXI/J Yr#(h_xj`ɑ!Mī&R<(++9TS@ yKM'U )͂@Egg_t7R(ʝ-!P(SK@@@@+!$$ƌ60^:sE y?neэܻѿ?E24t9O/=snȸ66?c;w 6qS@ Q|.1)˛P!)P/AEQr3Do7CCClF3<<Ȣ$DӋ Dߍ 4O$RϦFy(d3A_EG4k쌌d%ٛ$;t߽oy1@o§O@ ۷ѣG`O:կ_e˖f֭Ǎf/wv޾)9At $+<ت}NB-lRɄ͌;勽u޳prUF^~XnOHNDѷD % Ԛ'x;6woLlN:qE*YH+"+EYf;{Uj jժsۇvp|]Mbo߾;a0ou=rŋA If jժ-\_X:g_}$P55SG[aQ[~'{[Кj m[({|GQbKF߿gO8gii9s?O>8qbddd-6nܨ+f[l2d"J/_b ÷p$tԷo[nq5\>@+V3|)))#G}v&M~ SĖɅ˗GGGW^}ٰJExzzBadO9sfÆ 1115kքתU SL~ V\ C./y+\uttP*N:XJEsaEсubȟY8=ztΜ9@KS֯_4㼼Md/+2m`sIUy&#6\k֬ٵk d'O,#6mFJ{۷'&&©xY<=<<ڷo_,z챉% =Z;w>~8urOKK+:BOQugϞ d'Tj0~́-ZtҨQҷVآ~I\w})`޾}4شo"P&dddxF'NNN*U# vq ûs ׋999!{M?}B#|~Y,HqPIWMFUO{`2򇎞---?~1>=ugm#@Fp)@zh޼+Wƍ\:էO={u.`ܺu+LwwUp^v-\ƍp)MPwqss+uJp!޴i͎;Fu} Gr?o CFaVVVP=wF~`( fHO>8s=zt {N=}?AѸ1EυuEց!. #N!:t+ ._hddtE:AH +ك,RFUP 1vl𱹂asĈR%O}^*pSY ...A3 +;=lwN撅>СC@,Gb ɓ' aexJ| 5ʊ w޲eł0>}ƍjjj˗-}@Pz?C/1WF{uG֮uqiؑFݽ{O$f{K.E\\.Ұa_Чw/dV>T2ܶmڠM;A&>ڵ+RN< %44SN@ݻw\ڳg !I<{n:WdTf>ӷmÛM*+n/`J:FtocU?=+ߥ$N oصzM\N=ҽg#ef(;]SUѷdgRrXoUtٷo_MMMl׮R 1x2f;\LArnڴ)(ߺuKGG.SEkCuh@H,ႋ;iڠ ԬY- kֈԔݡXqڴiFP[^bTadOF u[8RCCkFBJk޽;ڔ[=2K͛vZ___/\PPt̛EUrYAQs+W`իȑ#ݙ/e<}^HHjժэ悢S< K[;cKFzЩF B,РA8/^R ;WJJ\n׮]֪_o+99Ott[lp_8H}+;etrt|Em^:m~ 6D0h§Oo޹sW^?ŋyN&0XdZZڥK憅Z*r5gnBvZa9s~%j2FEE>"\-beXҿ j** c[u-o9ta{C+޳מ{ށ߱msgw ;ܱ_T޸_~,C5ɽ_YZZ2ׯ~jj~޽{ ͖LIKp --zqvuu]t)v v &(Ֆ-[~wGI|իWcիWU[&Ѐpo; 3f@gWccC퓥 ݵkW۶+:$&&( hkk ܮ]>|8!!?իsՅ-  e'pDƍϜ9ab8@W1c)U,/GHmxb_\=ȥOJݹsGSS{|l./ #yEDDܼysʔ)NNN_ 8zzz;v쐃;q֎撑 +Wj .䐆k2g{߾N>!dɓ;v3;'J:}ۯ̙5lY/\p h+*_z-߿\CyuػhsΜ9_| ..Z4&&=q(V@:::=zm'OR3&iogorYf*GCiѲ<s^0!I‰6tUJ_uرm$ѭ$}pʥKϏ1D ١ ULMCw {0\YEYN _ZFg^zB`\l٤Iϟ7)G}& WL  0HJJRܛj}x|?~g;we"KOOߺu[bw(ӦMӧOÆ M.:.Ɔ t >uTPPPq|r(ٳhm _.2 4Dîڽ{T؅ 6Ox!_~ 2 <ݺu >O₿Toeej|@P &Lat'.z`2{ 2d,m)V{ ߿ 3g.ZX%HӔYݙg,]' @,gO0&~zWrsso0KIbvvhs MrrrQ>TˡXMh֬YZZÛ6m:x`8$o޼ H kV\gٳfbky1 乘 sՕzB>&7;wWukVk0##ˡlZ9k *U ذZųl`ĉ[橎+>)E ۶m[JF 孭1k%z(ҥKԢ2gΜ-  eqƹpHjY $" XRO %i*!\ϟ0Fѣ?`\b|݉vǦ,xФIu…O>WU2\CۧOHh-i[cɓܫwӶmΛp_FF~i͚5]~T 5yѢE\ >ܹs{ ܜCdggCc-c,%r4a֭U֭[ϣ9^-^,??zs K v5|;v6jԐqMKǂ2o"3&MUw Y/-RZ0_EkgLxPxLGN6ǻ)2< gbbڵ\3@t.aIFpdDDD&QaMۺukʂ% Zuڴi3c W@8A0={6%~+z;&|R;`=eraΜ9Ggڵkv(th_{cC'P|SÎ= 22r#FH… ygK>0o߾6cQ_җD~ɒ%Çc>88g&PxJ(Ie$`Wqرf͚sf|>_Q˖-Cjtpp@F++#GtK;`N\Ӂ=6撊L:D<]!Gjf@+H^j4h5)R̙-bsNJHH>p@ƕ+V:uT19s&2.[l0ZEX \/̳Uzh=xxL?a<w[VVr4QFWޗ] =/2{uj^dCr1/}:s?Yt M Mzj>، Yhߺ)o}{atl2ޞlcff6j(8*//OE/J,X ~SSSAD $/Zlڴ" >& ===GYV-#nj3o chZZZcǎ2e t>cJ`_JA5Ϝ9Ӯ];|)@PvQ\\uf(q(̕K y @P,ȃD'8FEQxʸ;R'\e޿oaa1jԨΝ;SΔ͛_QSSSL䡍+Wcx ,[?@'Ozyy62XXOFO:~8{{{C@ٳgC||G}۷oOLL0j56dzx̹öLv_G[| F}L~.c#zeFlw_nTRz&] 5m#\<^lQ\XlQT2 ]kmmҗ,leغQB?i:H5+VXAVj-u}53Df^ⲕuojz):2񫃙nPW2Cہ8g1-Æk=ḻe]jC+ 5aC)TVսR8е+&ׯ1XO.\8/@F`[vuW\={\nJkȑ4szA>!i&~@:t4D JCC5j~PSS;}rpFK뉍…zrrr@HYL9|"haa!!!-UgSq2y*|~/C/;okZm9+,i܌2V1ЀZn^>|NRmJM<EEmmY2< {>蹰uqElcs1"S,W.,C]Mծn;ϽJ~ك,-^zSE&[.)[zڗ).5wAC],3tO.&RKc;6Xqg6A > .a5}g *XzUY$1AIpkƌX]vm$P,K ^zդIjqƓ&M;ܹsGSS $==L}Btpʔ)-j߾СC&I 'OUm۶Iyɒ%LKK۱c2FDDܼyUtr>_L˜maPoڕEoUgCsz6yS9TSCC5d0҂fo\b:HmmQYI)2 bjaoӯmJF+1I\캰ѐ_5\JU\lmA@[ze2?[zqoy'^BzZVTff6i#h?ix"Ä}L1v(9=F,#YIY5,^ĦֲOJNJ)|/ U8d*Cc!ةڵ+v8xSʂ_qĺu&Ս= $(U12tOhկ_Q ,0a}Ho߾] y ʕ+gΜ93%,sB!}&ՍU5$~wC,l㾫1[tlb~Crm G0*bo2biBqBkxdʱ{kG#9r~ҸQf+.l4kG^\\< Y݉ }UY.cX/t0 Uarfy^ן!nV.VAψe=r(!=F2Km?.=IͩԦ*_| jUG@@@@@ R$At]vm۶RJeLFwi޼9ڄ4Xo/]Dljjomm{H>eʔ={۷Onzp`xD[ YwjȐ!pq~Q@@zWXAjhh>əLE˜abh~sXK`Y_}Em arjve}9( }_xٞ:6&XVٷآ蹰dQrBrQmeǯ ЪW/^X`HVcǎ5kL_-ZرcΝ;)̅jժ=||BMv`#%%K\zu~R9ҥKÇC[ly@98`c\l khcuG^yϣSsrzlk'1F@`ZIՙ{`47*)~`..lh 6L'C0[n6o߾P>To>##cGG^#g;v,c777!pDK@ A :w/\;]`qܸq Η/_F;je5bb,]NM ,|s\qC:8, 2!}7( ָnLɝsnKkog03U 8 sآb%_[(*;*6W6EO jеURJ#ٹu_>\ȳsa!U6+lsYGKCz׎U,4z!ڣ5tx(;v uLI=JHjQjx3sp7"S;?,|H{YNٝM8~dp4t;o1,, 6ԬYzcH 7hҥKFF+00p}=z$ꗀ@*^_/%'-lݺUjXEF\v@FR90bT<kIJ->ɧ~m53wa擮X#;{}{]RX>#u (loYy,n. cF^Q\XS*A~"$+ b4j?FƧ0_Rd"_v`C5GXG7r\e ?hEt@f_߹jբ{btXYY $wESԳWÆV+#(KqKP ;T ӚϥyM| cMO/^rС,,,6_רQ#.%l_)))ޙ՘hӪ&b /&D1^cf%BlSBB*" mkGiD1XJ{<3r ]Oyս\u繯9yN^.OSK_AAU țNFƖ]wٳ<*ZeVy'O2 ?Z ʓ `Z  7[A&>>!%5u]&&b:::SL^cd߳gwֆaaa"k! ~ ":zM֎ }[n4<#c UxtxST#kkm\]\ffZw   *Eyٱkg ׯܸ^ҲeBlll6n@E55kƬ[S Aqc {#UӺ" (Pc'=z5uʵ/abl'   AAgAA/ [|FAyA 򖣮+AAhP"  [EvvkwիWÿvrJx2Abb̙3CBBTwԩSk֬p‹/}ww#Gܹsݺu7nh߾ϸq㈽m۶Lu}}B͛7+**xIb0`{=(h@GsAAA޽ JRQQQׯ_ y,v-\O? FfQ|ܹsat7n[>{ 6BtppwY"]O~~~Νٳgtt4YgT+WRRRҷoH===, 0d) ))v-jlpb"@ 㖟 lccg,F+[lIMM}v]]|$2j Se$j x-C'O7o3P1@{%>zl:^[XX>\!x|Դvuu0a0gwcK/]={8N S]_%AU6j(!ݴieLJJںuITW/@ u`wtR\\Q @AЭ[/N'HT}iim۶ J{K8ٱcGH,YK.*I59rijj i''X P'N&z.z I...0_Gjo/$Ы%}߾}` s "*8?>ǎ $8p࣏>D$WSZTWeVRBB$"#@*eĈԸ?~4119z("+:X U1zjBCC*XW>kykS'Oeo"#.YceJ" JsΝdؒ)S`1~嗠Of̘W\|H!X|y^x͚5D =YկYfǁJOOW[j4@fffa!L|0׭[UUUd6m,ܮ];x$9ZɄvA]~To\]]1x6lQ -N Z~=9&١ԩS=<!A3fݻoݺE!Uf gΜlSYԀ iӆ|-ҚQJJ HД#/âӧOAd׭[7Z}… IԦ (d;2K]( ?z6@u=WZ5mڴ=%ܿ7߬"oBAۚɟi/ (Gpp _,=yگ_?H<8;;|4,,,ʬKKKX%ͨ<==y.YٳjkkeG>\\n\ˏ-d<%L [ ӖҪU+biӦ H`ЩF~ǎcz#)v-j=.)Wy.ӛ9sfBB`yKbhnn\38x{{Ӈ)5A##(DVQzN @GO~)>>^KK zj:\xCeH8;t$O ~|y:%{36K" ֺ\7&&&;;;>T XbT17_ &wt҂ .\7''gǾl֬YgώP[j4 }hh(dV̰9shjj&%%=  &@nj]>\T m]]]QQaly˧~׼<\!a HKKyfQ"RqqqTT  囒E*{ߟnͲSO.j*xzҘ<5S  xTgFFr(DV!?j~=y---3zݻwyBE$>m456"6nd'p¹zjXb__[|/ {ABײeKQo֭[ᡡBȑ#O?2$^ zXf,166F ǘ1cT wwΝ;)I5BÇWTTȸMZ=;ᢺPJ077%Ux˧~cbbqiAAٳOQZn=}tr6iIQMԢEu=j- xK5`Z4B}5X.0z{{IommMN$Sv-jS\(d~eIRhP s-?~oU?@<%=N/^l2oN_<ܙ>}$1F8XXXxϞ==scg%AV-c"R:p-Z@* ԊYYYbJR.RD: XTw}'o⃬^/5622JJJc+Xl_Ⱦx\%HQCM*Ԣ:CmJ!oNW(ʍZ[ #OP%fߣG={( gyҴ> z{ $Q|Vl S ao⼞RCAAU   (EAAA~P" b+  EADf̙ӕ&%-JbA1|dE~qAAA āCCî]VSS!y)k|9<H?$kiiZw<0~ȯƀ  H/ 0gϞdkK̙~}A_~ۿ_?SS<][[[{{{ ͛7S o1|򉯯é ;wyz 6ܸq!44s`\n]zzɓ͛FǺvze fW\ )))۷oddL#7oޜ5kرcV]Tjd*++ z={600*y!(P^^naaL:eee6660j.-[޾}6P &J2'Q ݻwի]έ\XQQ^PPлwCCC.#;wlܸQ__4{GmۖX`2RbעF!GQkFEE]~^#F'T멖<ˀ_(cW qqqpSjAfS8sLo=9@1`|+,,T='qv.\駟JT8'رӧLD#H/{yy2-[+bAAFF˖/j 0gxNutt_ae^-Ch">}رcŋۑ@AIAۋ1 =n۶m#F`,I ;;dcFFlpnnnUTK.l#lǏᚓ{q`` Q¡`w2aFT8p *h"(ӧO83AaLLL fO<)S pckkK.bB$áA߼M6]Ǎ wХ@ :O>DiǨ!|:u*$DRKZXX#I Vb͚5333/@:u 04o7!늌$Ǡ233utt Md8l0&ܿ?\Rbע*,CX@LMuΝdx]1 Znլiӆ'y.XK PRQ-Z hdC](}03fa1qtӦM䩊kNj۰$FB] T-Z{ժUR %@@[o={|uO‰߉̻^EŸFdtPr gϞ |jj*۸tRЍd] '''ןW\@fggg1sE(] 0!!_~[J#>22%a ̙gggOH`h?ȈGEmm-ĉOXXخ]跞C AXfffرCѦ###aAmԩW}}g6%R='88ťW^i,#$ӏ=JJJW/moZCݻw@pB|^ Dŋmp.#n(_ШADGgΘm˷-LLqƭ^ZƸK M ӳRRRZj`N4hNx@o;vAH'x1cBOL6m wj߾=l 9KOZZZ΃̙3AڅرcK204obb"(W[ 2kkR=2lppႂbqFMkQ P]l!RΝK P/dP"a' &y* PK|Ebjj oEւR\|jdZV )CMKJs-[:bU fP"ϟ/lrg >}SRn1iiZG$A۹ ݻ?d@ʖC@Ap.ǶGEE -hA0`@ZZZ@@͛%a 3zhtPsjժYfijjfddv1plЍhw^CS1111  %eZTT9s$қԼ}jS2}Q]o`-R3Qj_aaazRRR.]x"5&y.껖BAh8E'СCǡHeg+[Ew@NN(XX&LʂcƮ9A̠… AAA;=78}]}a`rnݺŰa'4ڽ{-GQٳg@AT֭'_(H?m /D[?2$dq ӂ]]M;nݺo1h֭[O>C'ȃ'K̞=T"/^l$tPs`ee%H v :** FSVA};ȗA_\=S[l޹sg_T#,5Xv0`ƪLI囒E*{,"=]PkQO^QQFC5B +b {ƕ,Ybcc\P@5 mK(:@A$|j$22200ڄK;'p"Я& u(kמ>@?f2 A $/Wr)G6X- FK)tATUnzNg¿n{'//MLJEvoVQDA7U dsJU:^l̘))^#z  o~AukkeW/u￘;WH/ޱFrA Wȱ^\и B@  #~M2jɨQ$/ )Aq~fߒuAYP"  'YSZnUݼyA{e,ƍU"  YqٍA\кDI,-ڴlN\C MLjiilQ AAixQ$nIɳ_1900xJ minҢOQGU ?AT/  q~>-*z/O]{*̬6<::.yӬ]FA  <|T.h]z 55u:a qm[-4_A T  .]?vex cǎK,KʸoYv-l<]|H*Md'\MkQ P]eP_2#FS_<5\-}9}tPP2:5TYpuլD(QHHHpssSNQ"f:#@xC>~8T7119z(ɉX0zgM6/]F)P]]wK{D>xP{u檪f͚iӆ;wC!t@v#y2FWPCG5ROSדc2jkkO:;IqƁA1<"Pbע*)˙DݻK,a.2kFy]K9gS[upPK`-'Ntww4ijĻG%Nfff(=񳦖hѢgϞ\/ o+?ԩvӵk[赶/*ۿ⋬,N:۽{w򴰰ɓVH>YH/!&mˉ!| qrr]Z2t ݑ#GB\MLL$ Ν;ځ|kٲe^7 I~eeaNNca(x:߾}$w5f̘ݻwߺuaBigg)v-jPb ,Ӏx iӆj^.\HiF UVM6ÇiiiZJ8#oeN:FR8^#@, QJJ FO1z ~AA ѣ3g^j]"zut߯YϞxeYtԩS!*<]ŋ۶mȑ#硛[LL̠AGbD%޽{7..cnn.ju !Nw_ |QRRRHH[ vqqիD,mAAA'N'8;;[1EèScBcGyM> NU^G>} f4kN@b8qB"|ZÇ_m۶yFf_VA:~xm۷o/^{UVVfmm]ZZ*ֿ=yڹsL.\ؼy3lSL߿?LLLLOOfbbB,:ڛUA"|˟\J5&U)GA&\?S||ָqV^M3uӬ*D((12p- ==3g&$$Sˬq/vЁ k(=JSNNxCJ]]]QQ9sP <Ȉ :| |}}lii9dCCCaG%A1ozyy͟?tQ=`/Ǐfo8U bbb1jwaaadMMͤ.]p5ֺb` &@zDXPCG5ROUS0yyy/2l޼ٙ($oD)ZԾ 6AF)(GQ@&ypqϞ=G޽{79#HoوY'<ͪN>SUV͚5 N7)Duu5LGxxi, HQYtĈV3f⭪W ,=<<ƍي\.ˮ[%Kgn2̛7;wwܙ3>>` 5jTx| X@q)$ kf/[^!:S[[wwΆ#FZ:8#Fk AFFFx+{>RqVVWIa[dW[6NHS]yerCܑB>PW>KM⍌嫃"YU}Z"S@|SFc nRѣǞ={P 2\%`ajw~ FEOH1 FOY < ?|@mnV[[V4BD B5̭n0M\J{ ot߳yjpc6x*AT"  o"^}[< x>}5ÛW!&AAqͮ]wnԩIxa͛E/  7w߾N&'~A7T  K$?Pu띬;&^ XÃy566n,?Anc țʝ;U6nٲIfgnlA ~  tzIttYV֝ڣ^c{ R_EAi|]Ś5g<(*x3 o9~AyX[kkjBϟז>0<33kۼAFX^۹󏨨Ǐk|}eeRu/^j2Ӯyjbi\03kN"HS/ 4&wFK Rb G)S^$310?nj~Qѣ[kזojg&j?ۣ9}#犊fg{uKˏ֭-pw@(!5UJ]>|/OܰaÍ7BCC;w,Sk׮ˌ1???66& o߾`\n]zzɓ͛o7ol۶ǨQ7f)ޡC`P]wر~wJ??sٓ 2I`˖-o߮#zuӃ+oCrʕ]dd$8LS/|w޽Wvrʕ${dhhewΝ[\\<`7f/\ѣ^LԦص%X@vv?K>nڎ~``bjaCqqqW yYp ev.\駟# ę3g¹IQ7vkOxQھ#iii.>})S(pl/[V֝y~%ۍ*?YW/_v2>}ond)-}~}YJaÌw|ۣTVFGD }nO ͽz{+++mϗHdS۶mh߾}2eD&@N< ƌ 0)~Ac|M.]~@aÆ1\ttoѢE.((rpUUՉ'bԩ<*~! J&T'!js*Y.G%mH ?~رcsrr V$$S/|ʦM`<<jǠu]\~.)yV]]'onV+$sGG4(ז ^]S[vJ]Bcx|B{zcdD,Zm9h5}Zy&6nIlTNB|ǐ>tPO29 EǮ^ ;LJy:zhШ /+sڴi>|h``&3)Ŀor|=zСC?u:,Q dV$cu93g@(oamm *}̘1wu1RC^D?cr\^^NFψF۷YYYL%3_<`6ŮE-@uU}½{+VHM 75AGoj_P/~+[II3f0wz?/7Q_W_W`ONN_ˏ?Ȉh&5k8;;LoΜ9yvv6;NE[(q^(U"tZȲN8- Yi : GL%<<<$$$** >;jԋ̄cEutҩSš&}}g6%r bvqqիD"@ѣ$T<2yEcUŋmplz`AAA'NFt Dtz22Qz"wލWW(:cObN^VVi?Ծyy]RNfǎMLLVXWțHUU7W1qYaao+U,yrJb/*+eJJjk5;0I]fee ==3g&.V{{3g0.0h 𓽱R駟㵴@֮^Z`0aڵk%$R"2YsssП^0~ϩWk<;v}U6 ݻw'_ϝ;GЩsbaaQVVfmm]ZZJ>2.^uPPP@0ȍ7Hm]Zk.eܹ<{zz+xqE^` br%mxx8W,r$Ɠٳ[lW<=| tzD*Qz"#SSSN ϟ/^>sH=IMm-8/ĉJ804l-4Io׮jRBlv'$=ѹ3NpgVCggWߩ}n-_k˖]֟6o(LPMyyyLzժUfȰSc"""]\l2"Jeܳgѣw-ϟܹ\wxbHkO.[j 2fgg~G[[[1 8 \Ͼ٪B60uuuQQQnnnB zS1111s/[2$>>>44Ň~cHTTTnΜ9鍭kjjd&|S2}Q]D|v%b`^.cM*JĐСCG(. pQrdO0!++ ;3x`Ww'ݓȭ^(5TODvø85.\ bv ]?YZj?^{N''ObcoOnB S"yIEpo87;M[!Tݾ}O_TVֽxezclOGiAA.{BweQYYٳgOTd/yzz|[n P{cA<~yw-rss~g`~={6s'''GS |sEEcll,Oȋ Zd +2bj_r\DFF.X\Dz.R/%tO~JDyQzBH~ִ+SY}ijj' }啾;5uuu5u:YM,u?L cǕee]ZTZ\CCbijEEoެ.f.9yٕ+xk+A/! cvANEݻ}}[[vAM/ 7YF7K-֭y~}b?` HP" ZSRtt+ ʀAƍ ECqH]pKy-O[{wUoo AA)IMx[˖uks5#A~AA^;K/;i6; )9;~8b4OaT  nU͝oaBVA>Np{Vkjjkky EAy-mӦ77xw+AAQlk׮(++k׮… ?S*qqquuu7oKnnnTTBCC ƕ+W&&&Μ93$$D u SwU?uR#]hjjZ[[N0Ak\\p!--mԨQv8gg'Nx{{˫_Hk͛5^ݷȑ#[n555=t萧'QRR'M\3m طoav`faej lmm`'?~رcsrr_`Ȁ| /^#ɫM&JSZTWPb (PkID=,ܤ"OmVZEt #lǏ=z%'# &1Sס`0Ox*0O]ԅJK.nDpΝ䠠 خ];x$ _ /Zm\nLF+MajQ P]I]]ݮ]ASBbyUHYu'wɫQP}ULPPȒ2T^-z {ʕ+@d-[faa~3>660''Gbaaɓ'aڵkahN>066޹s'JQC۷oC;gU>}6ZXݺu51cv}-R2@!*_Ϟ}wBr@@{11Rت~1Of͚%/$SMM L ,2rHp;""6bU&$&&~گH#ʃf_|EVV WdRP.*Tg4j!vU$gΜs(C߾}upBL-yoVZvqq!oϳ A 2!VVV/^ܶmȑ#GBBBY9dkkk!Q8qT u p*** p Q7u-*5<%n>p"޽1773 P `U65qǎ7ŵEFFF,]tԩ ƱCu%r5Y4::t\F"k)*;v$w^jj*ߖ-[PC"gϞjkk2W`asYgeejՊXڴiF[eT0:#ݻ؏;v9u ?=ãQ>hFANw&e,cdNp6&?C39?aSZZjii ϵ;m<уp_54$uMAAV" ?]?<0iYfx{+AT  ꡢED۾풒|A^/P" ʋu K^3˗ ~AvA,oͮ]wQȑ]㯉 ?xVD~~ADE߻. HǾ޹Sn- k~  LyOk;tЖ=ҋu?絥--Ғgff-t7:`S۰ iTݾ]NVEKK,-ii1Ş03kO#~A/4o.iѢYEŋzgjՍNlOO2劽իO238910?A:XYi7H׬\ycӦrOOzz/**~⋧׮cdԴ`|znݺ-]T_ ;v7n`Dbhoחkk<fB({wߒGhnRz|/Uw#8˳mkkm y|Mt}ӧe˖۷oՑs8.c^vƸǶܯ_?uy{ 6ܸqΝ;={FGGp:-,,|}},\k:+W@HpX߽{^ڵk+WUTT֙!">wb< pGm[7od:6ŮE-@u GDDLkn…~)W-vE}kQ\v Jaa!5zQA~e FFgxH&411q̙pinnnTT(丸88yYI'ԗxq݅ }}-MM[ ҈UV1H&~͍C|KXXh AF@6;vy ǭZ>g t\5Jg7~VZ BW KKAmK_jtrΜ9|6V[[[WFşrv.<yyy:uG5_Pk.AF@Ł*s-Z )((_ xfY"}6pCE6~c@ ei&洴4鉣0BK.2kf...0 HF)y$sԦص auvv[^Jhɥ`_Z\F*o}={˹νxb&!qR&]-jQZ5vK.?dDfxBE*m8~|LL,ʼxOLYpϏxEEEII '5k©SOVNwNaa&&x}k 2vTZʕo]I렣a'7EÔ/PJk]J(/A_a YF@y}q@~РA=I ¨Q`K/5'P{'s:4&F&AmvڅāBfۺVaaa$,Xٳ-X",ƄaÆ{ŬbgX5J]R$/L}%-TG!;|H^P Gv9sDDD̞=O5QSU-؉oB>RO!.r6ׯu!O?_))lcuJ{cǎ_~%T(JAEܹVGGcǎVZ`~&m۶ JA`gΜ9w\mzz:mjzuۃlܸ333f%p;f=x!8Q%n^HhRJ;B[YYXnZ&Y*y3"!r|v}x7wm33}7Ǐ 5+Oz/֜gzӧÞ I*5U|ѹs:̛7(%.gΜ?}~XܳgO nr{j>+((055^is(6Q?j@LJfjQnݺw%鴴4"A.2FF} 2$::Yߺu yw*Ԫإ*V9 =YLL 1*HX*/ !.-1⣱F!;m]tаM6 `)MI)NL4jRUɉ}?|;9E*¼yX.\F] j|׮]ԂG8p $@oWULLL&L@N&~$'6SDG'0o:u]tf~:pbժUcǎՍ0 bk7;v]L'''NǏgwy޽_}l*ܛm 2Y o%$tLM-stU3dܙφvxDmv/MJұ2ufo1!,5UQSWVޛЭ[̀wOOZAU m|L;v?dEuw Zll,hWk=ɺv}3gر9Fgg#G~W:Rkeԛ0lu;|d!!!]Qj!ao6 [F}BBl&Ma]YYٺukFU)EuU) ȠABphh(sȶJ 4s=T !&&G@ #fFT J M!r> .`OޢſzI;DG'ƪ)a`Jl2{yyy\\ٳkiP&$A*d03wٚ0w{& n0O0A!'Yu;gb/ϟ߷o_ģqF۴)ʳR^.]2O~ڻԩNg"5~Ӧ F\cmlE+^r " .Va0ik+C IOW`8z(x] [Joʕ+0SO>= #4u1c smbcc.\x5nӧWk׮555eWŮm;w1bԩS=AJyZg7n<+[6jڸ}{?k"HavI||Byٲe)))NNN{$<;m_1\tiݺuqqq}~HӤC6,((_:?xaʔ)fWɎ:CQYcɉ]vݼy3Rǎ=c// @= Uqx3f@TGxRkS6mڔj޼g@5޽{~*=ܹիIAFLV.E@uU9qƍa9s&tDL[Jk׮]:0Jc^B._Zٖ@f5PIuFi[Ԏ YP7j) }jN> 9SѴiz-M)uSQZW)ՔI%|?Kf&$<[T^۷o?~ xcooo od{%K@zҥ|ݻw>\DF!\ľw>}PK=_566QQQ0C7կRe߻Tﳇ== @<ٱU+#vA!fذa 0)$ҥAgDi*`{֭P~ 0ih9r$?Ԯo;XPDVdG~}%S`RΞ= Ԅ  J^ҪF`\\<OI^! CpF:,$<q޼y|ɀbbb`xf͚E=y;#YBR TW :VVV"Ҷ$G@<==!F/2?W j?i1m gVZ[նYP7j) }jϟ]ԩ˗gϞM/7=jOŻGmjkYFą:thԨQi0Wݺ',,$`uK0>>>*U={ JJ 駟B?W眜Ya)xbj1*G`/+@XIcBq)NM-ut25`C]]vA^d2̛ _999;Y/PI5wl`rJڷouV[FʢEﯴ*|b Xo@VV֭Ɏ:CQ%?l0 zbԯx֯_/zy7 *GiUu@VV֜9s` B(>5]v-I 4'i*jLLL8p V:̙3dBR TW U7|#yT.E]i޽V͚56 V' ڀK/z+v)jJlu󠖪BAbHM)uSQ~;jR`0aLT*[4(`t|| `3A'!--L0m3QS ' ̙3Ν S~zz:5OFF\aCeֹs:̛7d)G=Oз}A^^^}X6kfд>}AK.iӆƍa733:_n޼)p!C`G-FJ8]sT=Qg(*NEGGdRddaaqzj'N|rIJQRQܹgϞ$M]%PnnnR>Ç3k@ay*v)e U i,ssm۶ TŔ[i%$$\|y`pR2«?>jUm1AP:.ŭV2AifnR\Z>+((055ݾ};cMQJQC+ը{M6=|wH'.8={=~] vٳg=6K.%{6$ȹЩ]vՖ ǏKҤRH.۴>\кݺ{{A]iXzذaԯ`J={!U6s:thv$r+Y(r 1:qDDDU/^B2d\ӧO3##C@|)>V/lraH8Z#g}Lw3fs5u+^[ܹVVVV)^bN[ 888ONNfG!9kԳ6`>vqqIW0cPP9Q\,MM-MO/# nA _黸蹺V%$WK "HC̙3|^z*}}}i馰x"{iaO`{cz]k޼h:̝P`/AyW3fドɄ gn " TU3yd@111$$dܸqٿRT8ܪJQۢ^_جZjرDEE1 ŷ֭@@TQF^`zر7|Sn@ (VpTA,2+ gYJU`:rH>Lcߔ{* Q>OBˤO?t֬Y5T a/add1,>,YO?̴7cƌ͛G̔$!j` #+o99o_S%BE CnaO=D 9ma~W^ d64u]oa?~<\___PSN%̥ p֯_>|2k&Ru#YX3СƍVzάtVU#k"OQRoÆ ޣGʕ+Uv֧NիS?u­J-$51l* Y’͍nG<111ӦMc[إUj[|do:t]}n̓FXxE/_a2hkkkAUiy Q^pk׊֮a!JƏoqEqq幹&ik<֮O5/ 4,455[|-ooА$'% ;KAnW4mwZtܹ{ui4\|ܹsGH[ZZ*I]ެkW-F=g''OJϟٱê_?0zm y4k:pA_AD,Z"۷o3'Nlܸ1%%c̙ bcc.\x5U>}zڵiiiӦMݻ7ׯ_s#FL:Uؽ]煍l߿l2Њ۷_hDݼysffĉhܲe8~xaOIelG4򧟞@Gs̠-pk]y=WPwBֱ$} ~kWNN0aƊ8nkQ/޽#S=:zhXXXjj#?v,XW؞:ujӦM0/@m͛7c~~C)_NjC`b%PصkWdddFFL&#E6D‰qAc֬YCxʕ\+Wtfff|FɓakRm\\ܔ)S~7j`QjUR TWEi)@DDDhh(lpa)|W-SȫZJiAfU)LmWL<`c///]RJ_noݺu̘1n:^mQFx3fWڸQ zn.\@Q|~'w'ȱH#%dR͂ZYYB}a2ݻO>⫚?>v:u|ٳt7NR[F |7~{?o۶-H~ފ+@ kZd QOm׋=*Y)x"XSSKe* vv0(БZuA^za>~v ed\MH<~|/=BB`[%ɤR MMIХK^g͚`]n /͛' 0 &&H>~m-ܹF^z1C~c_ >a ^O?vuuQ A_͗mj7Xc H|qEHv?0o߾fzw`P###a5K73bĈCB֮] T +~?nإ*RTawlXJbV6lu@1|F^BS*E^|M'ٳgwmmm &RJQ_0rC>\~|{ԪĻG-ηŁ/Y{ԪĻ~bXj H_B=*^zTݨLSSƆsrr`3prppT-zh~OI*fZB2{{]POVXZj8o_sҀp8v} ߖՒTkQV'}>Jf].|}=3Gڴiix4̿T(Av+WKk_\=hР"F=QԜubeC;Xx$;Q#Y{oN,B7,,$Fzju={ `X: FxYϰ.kZ5U}a^eo>>>l#32 ֵC* J#/ȋvZ~~J@a駟ҜvovZxũ>gee͙3|={6*{ԪĻ;T*sN1nP۶mȣ=s̹sB׳jժ>@3Ԇѽ{Ǐ$  .,,411ٸq#1~% @vNNy~ 4SR<< fpE ~6{ H_I=b]ݻ[Ը'T-4ihk4iehXN +e-U>,~[/\ 77C}ݻwcǎL:L2][yy#G<==k={IDsr91-*L PVY/_>}:WڃΝ;WVV͛7¨Ҹ,ݺuKiiiNNUOtvvf,Q2dHtt4u,9TUKQ3P]UQpa;Rܶ.]dhhHFALAO+ ~[ȋDL)_ŁJ@aB@J*2ԍS{ܪTr[3'N|rho|v_%a_zuYHC] 4o.**ZlLK.l%I&}Gtdddmyb͛]d֭[7vؾ}OGl ^ %KΚ咑QfgklEoi15QWW!RM:Hi7RSKSR4ttX+Z"))8.UoXxqpppHHDf͚1YV'NDDDT?ӢĪ-uR), ϟ?,\dDHVjs䴻\D]jpUEݳgѣG߯jիW2e mԨQzﳮRJ]fP\]]o޼w^?XְaD6WȠ4D䄆G wY0 NFAƩ=jU*W9sڮ];oj=?XB``M@n۶ @¹*^njeHÜͽ 7n 8p5kj]-[ܽ{7$.^K0̾I~`h@zz(A6m'<#ȫ^uVNQ^v 5Νczv҅|4X d`vshjsh;{fdT2jN=*@;{{ӆѨ= MT,J֭[aDa=CJJ[rr29gE$ș3g\BП͛7 H]Ҿ)~ND&nOB!\V<73f` G^|իɄ ȩjp xTԍS{ U LҸ,BwÆ ;Xϱ/~,X[o  4iD~֭[ 4ʭJ-J={kN |CN6}"O͠4~쉏JAV*6 .сZxx8īӖ#7t")=DB-6릺ޞ s_}թa6 L0.K-pԪ/^h"Xиq;scgP۳y5444i#yr֬YZn*̙' !C]<̶GfzԻwgϞ}G&L`*9vj 3D~oʕ+0G O<IJP'VR.((9F0fIx"Y{P#quBm{-[=sG&Çb[xSs3S *<Զ*RTׄ:Z"kx"O͠4 G^ DƓ́T% Q|pNjƩ=᪔Wo#{Uŋ॒?dUZK7 44Џ{gpSM!WQnN *?UH'`$ &CYimbgO>3[='IUAj#GRTwȑZa bHp#(=GX@ؙ\ R̀ԁ߹[m  Hg ԱAjA@"'5$ 1i2cӘ41ݘ  mie%T*YzVAAAihd ]wgge{toղ^<6 AAAA근<66߿BǏ+66:::u' JT]\^Aiģq㌌xIӒ-))IMMed3:slA}9y?!>'+;7d.]8omcKG #" /~!RV&jVb̆\ HC¢]@InN+OjjjgddfBBKK6iDWWW*C i|ǥkT+ERZR[Stݽܜy653wnT~uHnggo?/~[wCCG nAno]OpM[[{(ɓ\w}Mr LWYQIJe+).n! fVVJx=慳WݍAkׁ^}TgNȌ~o5[a-mu'''IRs v))^̥ +Pq277! o޸~_m38=5ȑjk峳j<)//(774,[˻ܜmûOsRӫC4@`eUn'!ITC&D6f)~ڵWVƱjCA,:g)}ϯf_Oǝb]]//o{G'HWTTܻ{';+e Jed'&+))!gӗDaaa?ȷ-};@7_hױ3LJۦ -P"OUZD!C7㮁'EIz"SYQpnVVVyYSpfe;f驤fƥ5Ӆͼ2#I.!OnnNyY)'`W2$'?{z'(,:lee>9:$=NNzYTXJ)mب]72Yȸ6eY]LKlK++i\+ZZZ66҂DٙDkkkum49qnnvaA|K2WVV,q>2*+-2QSQ.4^z_m2ڳFݻ{ǻy  8vؚ5k>|تU+W;o߾=yĮ]n޼D#o rJǎl=έ[3&88X%:?xaʔ)&_>))五ʮ3f̀>s鹻=zȑ]H1FjF=c// @= ~e˖899͛73*E|} MKK ]LMM ?佴Эof9 ۨ.Hu,vO-m$'񣇹99|+LVf[SwP.. 'hɭ[7:v~'B~SᇇԄpB[ rruQxjYӧEft)1;D/gNܶj瞀-_ ߦWi{驩o-?ܯ=G3M-%޿߲/K}1է1iA%µArڪ/ TIsֆ @\]]o>~ .qԩ#F:t޽{׮]pBRذaqz222rɒ%^t)w=|p/o!A/ءM6޼y󫯾1ҷo_A>a"~:b`Ɛ mٳdkkӧOO0ԣBiӦҥ烂Ȥ}"j81߱cw-dV&ޫk$W8=Vkoo/vq4"=df?L|ηjٳ?/_*--eWֿ]ի.nMmIIN244: {qBrc4,m=Y̌ 8ܞ CLLÇ'_ 5߂| mmv6Ml צyy -Zݭ)|[sVVf1RPG }10'/nդIrcb'y 3@;ɟllbWŚ2H#W@C7jmtcEFahޢ߷n A # PW&鄄aÆ{^$L&}|}g(5n8P/D}駐U ъ+:u$:uݺuoi׮~dee͙3'""b _tqժU ,Ɛ QdX~2Xq389U]FV;}Fv>>>v%gq *aA &nMN%kjvh`PuZipm!ifi)I=)kJo`ɮDGG׷$S) Vu1-Օy6J' n8&']߹aUZr[7z*\-2^T0^ }rңO#:!8)IG3ssX'=~|461`oAc- PC\_C#mm MtuuaahdLs?v)$ͼ]M~+6?s]ߙ S"?V`{Lj?#S{6A֭[}]طoߐ!C&t钡a6mǴ4"f@0Qՙ;wtxOb7cǎe> },A'&N|r^%&&RA50(Łnܸqfff111qF<*c|| ƏCLqJa%o;Iy2i~ުO~鞆D@Z~oX"K7:o{6eݞ Ju _[ZҏZXY P  ׯlwnx4BJwtv_ˮD>إLLʷm;GSS3(0vxU]f-[kԖ]냆zȓ`oqMM"$q-kRZ HaϞ=Gݿ?z)S,]tԨQgnBaÆՕJ 2)'''44D/tgΜ9C%Y{(P<"- t0<<<88 sΝ={IH˩MѠr2b_NW@iTTTm9'G@@___'hȟH͌   ȫE"x3AAA߮}}    v TVʴ^zpZZiqiS}M쥥Rgg==QF(MM|LMSW1JKKK5Y}Ay9}zN씔K;w6KffYnqZZͼڙ…#z{޻|ϞUgJ._=BDUlRCOOCK ֭1…#Gz{?wŞ=`L5<;DF껺ַ]  k͐!6ftzk:ԲE[R/_x~k /էOƎwv0??zObcs^ԯ*+:S^aa}<9qرnG>9~<761(xiMU T Rl̴Eҭ[@⬬wޱ4C.vcA^3P" H\bEҗ_C:9`xtrr)͛⊦Ms~I2%%%ݽ{wժUsݻw *=￟߹!QamjZSlmԦq۶m@(޹|s瘏 I^-MOo}|,IN+yӅ4 1_͛✧Mӱ AA$RlxooϘk())aY\\\^"ʨ,,[t[߬G9͞ꪡM*a݃E7of mss#_*1ܶ-$ <=545EjPsrBCgg44jOA@  c܃prY?5T&igg=ݭVXQG#/#JsNY?Z24e<=gge`@dUM߶ 99F-ZX8qEHza>\2??M^^?^yvsijOҰԝ _AiX:900rc53=qI߾Ǐ:9鹹"Ғ;RBBLLU =xY!Ϯ_9rOO?w:ZPD*2:#yHh4ikc jՍ'Nlܸ1%%c̙;wVpkצ988L6w`TNRjCӧOv횿?ԔH]p!|E>*6 ݻw=z!My"To]vEFFfddd2fmoQ" H}t윜~nhܺUuk%{Z{HDDxqݻ[Է"996q۶VtThu׺Y }|j9D<eYY>;vGzGD1ãw׶-[~3f\pA!Au˳g&RDKHH޽{I0FEEAUƍ>}hjjJRH $(~徾ˆԆ@A믿3BYpPo͛' 0 &&fͳfbf@CѣG!D১moQ" H}qc3x-2Yn74KH蘚Z訫W~6 'y͚{-k?:hTuI2o4 eڑ܈]]Kسo7{͎ eD*| fpp/NXӃ 1I҃ >|xy 'O  ڵk'ByٲeuF?~<TcNNΒ%K6lذxb &&&8wKSݽ{7f͚T[EAWM SBB~vĈlQ[蘛;Ml?n\}bزO X RghhiQOlѫߴiAN577߶mUV}g۷oWvΝ={$rj+s|o+Vݻwhhhpp_|!l'ݻ׾}rR @A6w\;;tvm㢀vС?;w\YY١CyokTo._  4ox+JZZAuç~Z^Orsa!JsccW*MO⋦~ehXh؍m;rdNllq=ɠAxueQQQTTԲe˸v&M裏<H櫘'NDDDԒW\#H{{{s:|_/jI65tRПmڴȵ1+qQ@A\xqpppHHȐ!CsIsss!y׮]*uG SJϟ8/\t{xDAהkkkaZ/L&#iMMM <܄4v@fDD$^ellhٷonjUmM>(_S7n|8wӌi`P߮!u1clƍaaazzz\f c߹sgttmۨ1=O>hРs뤗իWx㍚ې]ZZKjj* %n%0.\TDs1w"XYYu+#rH>K TbccAY[)͚5S0R{Au/Xt)J[NOO<.QڵgΜcǎ.]Z-}ĐqƱFFFS֭A»gyAudƍ&L~͛ׯ_gd(l… lR/T= Ύq 8𕸪{¸G_ FHP E-/^hѢ˗1BqÆ 3+W*=̆ {.))())!00RꫯO@nDHJ2hhhڎ=>`Ĵ[}S 9s&u0{eՍ~A^;afj۶-='''++kAْ{idбc~>|XXXaddT/AE&ܵYߴY|%0i۶Ullx\7wcm?fZ?Xs9"3Z<<<\ZqaSX;xNĄ+BxAF! P\R*66E...쪬_^VVvΝ)S 'Vz#Grk:޲롺D5=z4$$^^^ ,inW3T\ұc-[U'2J%cJ;^}W METƵ8MMx :T|qAۍ@W|4Z~S&wFǿS]˖͍n>)֮jzϞUW󫂶|#  cƏx6Ni׷; }W{fu㭷?9s4Sٰa-QAI޽{W~Ez۷رۛ9<5u#F :t޽k׮,kҤ7UbkLb`W **b l(11BφFET,de-ϝg]wg掟Y |=0dvZ,RyzRe͛ozzz7nXd x?Ae f:*** ʁ-Kmxˑ}Y7o?ؼ6;:MC ss-MƷ_G->n>}ťM(% I4V[[ܹsDB௡Q1噚B̌Z"z/ &-GWwu3S+ kd~27SQVrbfWٜo>2ݻ}5VB覽l}ſ԰SUlqY?AA=޽ZSGeЛ2EswoH GGY+Bqԩ3g$A2i,"%%^^^7oބΝ;WZ8g:]-RR ؊D9 i 4(򢶫lx:{˯%҆YXTHltvDd  p x{;9 +6~4 C_sXX?>4` }uR^^/ƵibbbD\O훔y==zdcc#MTWW_d q)f FPbllcii eQD%!„4vVC=;bJ5+MMMhibq~XAv{28?(9Ո?8g&loK] #GiAQ X~own{V𒘘8b--96 MFMw;;;2pX;d>~xڵRJ)?eEEň]AAͤQ3jԨ0__#G6E^&J[l/hْ԰ F{WY+Z#-)e˙98NʁZEeЎtSe`6ƯE֖*h}A޵+{N ,)8}{wZ]LL}%3? <_mذ;32ewA\' N߯ҥKlllϔh4###ww)Spk`}%7eoPJ veر?pf (H 5kָAăZ9(Q6\쿂҈a:9٧ofb[=~f1#UwQ 5r7 =5>yozDOi8,M^{>:3a` *2%''Gϗ_fgp/Y@i͘<#JKKAO=!\NONuut; 8*z-ե۶i}|tùsuƍشz;zTs0Y0 ϝqsGc "o|eMܠ  }TJ/  %i}]^ozkkDp—aaǍӹv/=O.//_ބ' uƦ{yMMyYAQ44ƏޱCu*,5 f0~{^ҥ?T|RԈ 5~AuQVVwBQf栛7K:vT޽_z/<3RDÇwKї2:##ͭ.*JgOYAx7Nc;wjgBY+^*?fKdbǧCݻ(A>w" H }„Q6hѣv`t5~q/^A}/f愄d5<Ш@VU`bcmWr\h+}~]UUdC>|:Ng`|(&$&/|u$ A> /7X/AEAօyU={{ZMMKKommUssk8z P63 kkk]]m۶II$JOO|* @kHYAMAd2)SnrzNe-h\ܾ}{YYYj[aitz`={1yD" HP_?[JNɩIO֭kZ租MMZaWUݶ-ac77P::HC;tw()c|ߟ8 G 2/ :6#G>mjE<(2ʛ7U'OvFSt+y:'YAZ=~]l1cL j3BZ9fQ**99T++u=sF/ :zVKMUc`+ LKb؞O}z|oun͞= z}r2 hѢt.xqG %S7%KܹSMb.~~~>$sUޭFt߾}ΫW0ֳgϠxɓ'/Z x'33sРAds~feev҅l54JMᯤ̙3MT*++sppؽ{LJ-k׮8p ''k\7n yyycǎٱĉQQQAJAAAZ#4++k͛CsqVvePYy<9xEIRzСӧǍ! Ur\\,5 ܑnܸqԩ怃 133VYիd+L&dcDӧŦ`m˵ׯIqmHսuT̓i&1p@pk׮%=-c)!.]]ԩxJP[ ^  H+yw////} Э[3g.^|5lMHEyL|pΟ?X>}:Yf]˗믅gI(++s7gF+~|1q۷ TK-9s渻2R?Oo b֭^[[K '&&&B=S,\n?sf{̼OeKAxUPܿL"M"++uz%`x>MLLc_)J!KZ,i=JJNL9G -ʖvǎ߹uk֎:_~)kQmZo=TEEN\+i.] cc*t00 9Ǐ!Ж"pJϟ?翲7%%ŪY7]o0//<77אkzLAjjj ,ɓ'aaaJJJSLٵkG˗/h$022{O\s7esx tE4:(O*K+̔J?/tku{慺B,5'me&{/qjQŁՑky>8No:HayQ/Qì,=bTCUIVVEeEa7#*HMt頬@ y]4 Fbb2:kkY+BZ4:ƽ?}ٷjnBuK'ό3&L@y.%K,! 0r:v8o<9>bb޽{*`>C@<o3xDe˖yzz:::O<I_)  dYYl #-Wy栠 h#LkxZc^^^`asdWBï2(^j>N>;stӮ9 m.iw[8gO}?BmiS'JԖsQr6yv*EAڵ7jjVph ]\L?zi6Ѝ"<={VrrQp]l$ZZZMUō=! }x(ۥ̔G R6G&;Cw{j˴kׅug+;jp=tv{W`-Aq8K 9~36|@A>7*O-(0[oDDG^Et Cwnlu `$i;T,m :q_-$"ϲ7AAurxf=|Z][h7pYĐ.ǔF,# 6 A|z:c۷֬џ:HQѱ5\0'$/ ,#! Pkg[q%97%Ҿ0~ɑy&BKQM  BeKٳ.u+]oAZ͞=RSoٳ*0 H@ecx!s}i?îfuSI ăyjQm]ì7ݲO]}<A5yybcO \&AjooU~nonظɉ&/ ~|UU[e08N/+?]n-׉Ukξrgvq446A&77k'N~cZ>4ۅ eɹ{fn 3^W H6uGF,Yp^fz&iyW_pܯ9N:~32EaDdyǹ;ʋNVQR!g{=i mjrr}ɓ3fEС*s'{޷6t=3X[[[DR|(.jy%~[/E1dnxe]uK?TO0G#].OfnL.SHhGTVWG7O H+&;;k۶g;9u'kE煆c7GNJs{hnFD~*Z4%k KuVV֭3guKAWW֊*> }eF \ki2'e-Ar /Y I[oZ ̬m ϝ3pv}6k죢*SRrں͍"k]" "*oΟR{&Cֳ]d=ppҥ:Z /  SAΝ%7nt3WRCKK֊Dv)55wۍM~APֺ$UFFw$!!a͚5޽Ϟ=[rezza:Aرc ,is۷/++61uT"nbb8q"xťK RD&CVJJJsqq!i"B ʞ IMMT .]Ν;B< ---usswހ55G222ȑ#yyy$)@I<" "?g+ -d ADE{]Ol Xֺ$ń ?~$|Ç-,, =99Wvvvvrr:}ݻ qYf5`<سgϔe˖?t޽ Nl( WH"nIq&#pHf@ ʞ -44:qMp==7n,Y.OvGEE@900PG轘;;;>J(6_AA(0N޹Ʈ'T6֭fkGG?9R_?(k)k]⧤,~ݺuk׮L i`w6|Ӂ3g51cjϟlaںuk߾} PF_EEE0'Nw%%% `0 K eP 8XSp־}ྲྀNR]@]pN+/Oشi}Z-(J7  PW^lmmq&EwQ1[d³g_)yyOڞ~!:XtiPPq;v쫯"666gΜ1cF||}ҧOg(wQUUիW6G>wbLMM`ffFsNMMMNNvww<=-QNRh?vAAZHM^GFЭ!+)utq\9Ytj l.bݺuNNNĹVԩS.]:{,sUVΙ3NKZ0СC2];4d ee.=sfo>\|ޔ)=~I'yihڣGë2%%?,-FXdl,ke-\1әV\IMtرX0> sRR~{KX׮]ܹ3߫͡޸qq_ިFy葍M5@3"-W]]}ɒ%ĵĢ166ɱ6w$îwrr"of+@V EAϘIr|h!kM"=z=x&''رCwxZW!\.|Ȕ7444!!wᤥs[bT!fz)x]ghoo[ d>~xڵR ePGܹ6EEň&iQ|}}FMw;;irJ j_A+/?MIp|Ç銊Çkjj%&zQ25ܼϦNUMs>vr w`:t 4}ʔ)?},.޷o8FlχE0]666`})uS7&({FPw۰aCu K.cǎ---߿˿5kָ3ҥKg(O#J(6_A )aìFϊPp>O= KkAddѢEln.J B4)Lk@"qO"]!b%&&vԩR[]KԱN IM[[;>>''[rJ j%8b9t a\1%`֬H ̡c:# &A>Æ,_=z*i.e˖-R؊Վ;-];/ sJJ;tk8wnG%z3,̼ϟz54Y9 4NNN% V~k2_Ocsa`$= %WϱMO2쏕SopAMrz));嗶5ɓ"j { 3|} Z ͡UfMoQW2Vy)eCo-U+ \?U֕~`t4˷ " 422ΜС"yTU咓_2ݻPpP5]2,,t=z;x A+A&Kf>XUK }Cg ˚*yEm巯u\߁8_M[9Xd-=)⪂~V{NH dF^ /Y@DZjڰ50ưq5YUWD+h^Vt2p?7ZWx*ίY8qmX_(w5 g'D^C[-EAAAZHvM,K'h3dV4+9*jȱoRٵ*]ziXzhD BP1[K7/х#   ~T{p;olk߰ӿUV2nHS`|r:ffrq5^_*+џ/%DAAAD m !Ù]Se0*]mt}W M[Pq7%K[˝Q*U/\.WP\3Æ>rqZ# gH^^^UUߧdgg)))X,οk}`EEEnnxBA%e=9?~TTT4>}hB)-=?mݻgϞ޽+d-2ÇwЀ}bccW7e^=~kkUV >ܹ믿&>駟*d+N8cpg3gΜ6mFa }}}#ڟYYYb.]ek8ccc4_|*.@H 7n 166;v!rQ)(m*j SĢy7^0oXVgָYݹVKJ>OWя  *O$kRRfo^Ϊ麝Rk) 6޽{pp`0JKK훜bggSN9::9wmڴ v ٳgJJڵkX\zܹspuHRpkIYOnAUǎ8q"Ϙ1###CKKKOOv]䎄5 w: (`P~}A յIDmmmRRҺuO"~ȑqt6 e|n;\tӇԩo.d2>} ILahARp233mYիz2En݂`Z1mTH/'8p CFwxkA6JAmkr6cv eE56kʮ,W3 `dꝎ_s\87ܕ@m&Nv `Z,ȉoϟڵ+<==8f…aaapDž/?_޻wor}||?~ܥKaҥ8ILaE)ѵPu4Qϒ%K~k}#F=?IŸn3g;O6k֬(( )ɓlmm?b0oN_".oDٿ?Q ̭[5|/3PQQQ@@@hh(k kbbBtN^iDն&+>%it*GAfDG^z_~ 'NNNm7\rF쓖\Őjjj.p ep@!Gf`tttd˅ p͎;ґsssv!߿ƍ Dp}!'Xy"Ϋf"M=z{zzn۶mرGYpJ޽ }ٳ'OD222#L&ŋ:ujѣGeޠ̔r :mÆ ;??_MCppܹs544itAmV~,m^aAh&xZ wP8Eeggá!qFޡ 0o]fffׯ_JJJ?~<|w٥B%r@$%[+V߀xr[Bx஁'OAgB?ڵ Fw oբEAucxhfffphp PuG >z AAAAAfRRwh(o 9SNIOOo%> '&&zxxdr0e˖yzz:::0ČGB~r's``={D #F ݻJ0Pѡ{߼ysPP4Eu{2($/  ӧǎ#KLFFF͛7oNz>PHUQAAAAiEAAA?~AAA_AAihkkZHE-/   A   d~s,NJ`HM HrG `JG4i7})Q=;vуX]YU AA!))\[yf"2qD__߾}BK.۾}{hh(D_YhGi']ha٨D&&&ꩩM?9~ h9z;ᰘt^lhY&m}z~~~8y$=_`޽&Ll6d?ˁSTT|)7޼yݸqcɒ%{}lp\+lJ|Ç-,,ݓ!e&lʠ M?tФ˗ܹs #&&Ύ ⅲC}?~ P¶gphty"R]1㩥[0qE'WLrG$iEB$!J*4-u  544d-ic!7u)WWWHKK9s&}̘1={6$̟?_ق58q"+))qp>۷o'oׯ߱cLj}+xfCCC"H) (D(RˆΝ;2eRfRʦ dSSSx',ܴi=>46 ePBٟ߿_n4dڵR,\J;{"RF]QQ~as_qkÝ˄ѭ~lraP/P30  (ec ?~HPUUիePHןp=BېϜX  آ"r:::+//֭1cHEN9s;w\jU``9s?:t(8:7y B(***"""|||'H6ׯ_u֑#GrITU]]}vQ'XK.={!}:l dX)))Oy&&"zqn:'''b?]&ݯZEӡ65޲kӿUoS ج a1?u`3y·X8G{<0"]$FAAƍ;vط~`0 +6\dɕ+W GpD+EHcʔ)qcc㜜KKl(AIIIP_ݻ'y7n/׹ݻw?7wX1c>|*++l۶MDmF^,Mه!$'NF%~H\O&C_iFPߟgXr%@N]&^ڤ u}˕ì2V=/2a֫q)Klli?x㯤ol*j>U0ˊzºOdAiWϚ5 ٳh``p"U(F >5 C+-- |ъ+ ۷v(2R6ePNkΝ`mllvE.]AWGC!|@?/Y+'*_#&=E:hZ`UU>3gY/ózBk&1` KWRC. oAZ9z ֒Ӄ|&hkk%7?⎌j-'H>WPr35)eSh2~'ǟsDitPUĂݯWQӫo*AAD,H"RwX5/ @i:pGd@ADs   B _AAAAAA 'GAA$N A,F?0tJJJA~AD"hjieaٔǩ MXꪪ4e-A~AD"tÇ]uԄcVYACkcEų mt "4*-fZ :սG< / HϟdAvҵ H/ HAZ 홲R9>|((~~~ 'N*((p8Ϟ`o߾XggիWQj݉ݽ{ /^4hΝ;!N:Y};ҥK9tPNG(Ņ(MI#7n:uɓAϐ3335k\z,,,ܻL6 ې{-̓i&|׮]K] ^(#?)3)NEAA@ii)e( 44ߟ bb޽{˖-ttt$C.̔͡j _-++ AAA@ٟNEAf ߿ȑ#-leH}~-|I.-pilE;fa2ȊXUEY]E@FNPWW?rHE b]rʊ_7gϞPfryj#ҊhvU1! }x(Ae~{FTP׉t XǏGcee#k-Ҁ`tl/ܱcG< !< 5r=}3=dP0 zZ3xlhcބ?6;pzmnny6Ts뤕жݯXn;JtP*iZJtZ*ip8J>[ZT153/-+a2T?_XZu-['Ȓ:\_dɵO>ms5#<  H+f{y`0,aS~ 1Wz /  /!<`  "   t  '''瘝6mӧ%ڲ CqQ+iKuNDU֩uNDu|4ȹ4..la+ )O\=oш *I~Űݷߜ:uJ\j@ G -m" 4 X_A֨XOO͹fSZZ*S^פI_4Vm˗/=YJl(((Z M/  }= 7nPVVӧ\Y}-A`f'ڵ#GH#B;T]S v&Z[}dTWWkSNm۶fff>>>sΕ"AIptͽHшrlGrFF~+QȄORWǒzJ]]D/7L$Q``Y 26SQQ(`033~_SCqt"+UrU%HlUPAUml $@RVYAZ3e)-- xךŋP&HF̨k?>uT kΝ= uVtviwϞS~ajDFF:}Ƅ]j Μ2*-,**曵2W1S8é5VOkHII&8޽)I*+WNIMͲ62ISRǎڷoA?YciMA|qq_̲393Ν[**ARe > ▖xi0d; TEVA<pnP}/vvvB*82|///"`ݻ7773Pؼy={|xСR>'Ư Ν]Oyˤ) vͤI?τ wZ6bJC7o7ՀGwT bP U}]+pwwCHJَ+JUnpnJ.\Hl7Q~vq[[[2m<233]y~aQ+VشiS~;u4vqƑAK_zmn:ѣ3mڴ3g^p~[xKW6A֝Se!2˗/._ K.4(??\ ~)t͛7Oqt!aFFF]{"D0N܈ٳg×hJ<`Ln߾/$w?=3ܶmq>={4IeΝDSTTT\]][ G\=--m̙ cƌ~݉r"33F7urtQ$U_Jߏ7@EEiذslz6UU\ô!Cz1;e-?F ߍ_}$k!7_l{{s('}tU+*>e#Ww@ǎ]%4ﹹKTzT%sBCWHoKY Wg`~U3uuaɓrƹsg477'>.#3-!QtADFQc *( YoDDQ(xb"APD!5DԨh ^JP23nS=̍g>CWgGw+;;+55wzQ+U$͘]$4(SB+7X\[ccpۮcQv ǧҥK8a„{yy.pO֭vB]`뿻r!zں)V雯ѣG j,c_x;c\liq,Z0ll4, Q{{]ϗK,qssSVTTԤI+C^HլۡUrOe˗/wUsANߟKKK\{{{i2N҆ZQQakk[PP Vt⊒X,֭ҥKI=xAA_ZZHdo,&&_:kkk}vW_t馡}sD@M|؂?1p`WH=xΝG .*Y6 ҆ 1WNOJhD^U));m#"W!K%!zO?\Ԕ\߿SrT];#Z)zS> ӵ7nzyRsB>gaY^^^[[{s~CCCz-ȹyf6=>>9*""\CO>qIIqq ֫<MҴ8 XDEM֭[o$%%1ݻw)2sL?V!iӦEGGO87;XNjh&$wds׵ٳ}ܸ$yN#L`ݝbpWwˁ[k䕵S3Z:L ;a`t{=}"wڵ;ƌs{{151H%u/?rhʊUh~AvyR=Q? e }1f̌Ǐz)]\ݘ ?~<3gΘ޴i#ɰxqBXHO:9j11sIXRSW}ٴ7h 5.\e5Ҭ I@4a\Sה)S===gϞ+W;.))SN99Я_{[NKZ_aoiɓ'JȳCy)TeeÇUޕWtug>/0ԯ[PP]~pvtR5Oac\?opCkBZCR0#K-_>1/czf36m2b"Jᅲ=?]Räzep^UMXUuu~ԎC\CȰWLڻM9}֦epGO?iF\D,HBٳgÜUEeeb,#)ogҠg%̚ŋ*=(1۹%b MMDߗ!XbbbKٚ7oefֱZD@gؒ.O+?*,l8ji @Tk2XF]7m4⬬:RY&)Ml忢{QQQfZlY-,,]smʕ+ٙ1;###66633wUb.k@A (I(ذayyy\UgF5JкdYlxk7-mzhhkj{x4?yrmq=[[kSSE@vpEmz̛֭0vIItŊgϮNLZ\{%_Y~]Sx#G%?6,/()s Kܲ?ۦۨQ_,W\̀^qjXlܹSfaalT?KBW\v\QbUϞ 2Կiiaqc?PUT ř$GR/D"/k[[LB7kBܱ̀ͳeؖϞ=#K=A0V]R +̱i*!lڷo߷o'Ot%--YB V꿀訤$Ppw1''8p_ƍCbb@vl4iG~CmHHAٳgC@SRR * ޳( *;Z:u-7nswpz񢮤O#JPuOZlQVXϗ xt2I0PAG䲘1x5`OOgjyc*Aضw_8qy5+.WՁ[xzt՝;F2rӭGG*U_ԉڴrwys@*K@IЭf&P(*//Ϟ $888''\Mǎyn2dp#@e^Cb(BS hV㸣GPի0=zXΫF A5/  ƅTݧ:|}0]~ә3W!}ʭCoÆiRү_> # b$j dܹsɦrEʋd/HNN~O81g6oޜ9qD/3p,))C/_={U>}[bۣeS&P+! J!>L1$v8_~jN*?ѣ@aa!+Fۺ@d"~HH$GJ/^ϝN6LҦGGK_Æ (  AxxxDD& M ݉q&M5jfgg/Xkײʕ+Ibذa_#4Z)Q*\^^h"XE"bj7QԀ7jTxE [ĆAA#4ͮ].]>$H%~ieeƍq Mzj`` .EEEqe}T&W %1dHV]\\ݻv򩝝]NN^j7Q<Ԁ7jTpum^YЎ  b{P>|a[lsԒ%KM6x|HñR.;;[ $!!aȐ!亴&jz͋/f, wTo:~HRr RU,AZ[[^AA{aԩo6Ν;aaa-ڵk/уlB,rssrrr7oȳ4MP[ZZڲeK yMMVjڴرc333wQjQEq-lQ%W3gŒNыw 46mhBBUUՆ |||x{֖c/^L֩rʒ%KfΜ2o޽ 8 J{qYf)Yy~KLL0a͛۶mMT#Ou5 ڥplTbxWEAoqa|c~sn+9y]FAy&bypTΝAM1FFT0 /Zh…'X߾}>}:w\E'O&+˓ZKAAAdԩSM4 JL[n䧃.j ;j7QTuG=,G gΜ[(-Ϳ{uk܃pͩ}QTP(0 !YYYLZfؽ{ݒ1X7pBei@-N>| džPMT#m? j_1<U?VoJ$M˖miٲT*yy[soh/ytlv-V@ Byy篫AD3r?A^SR4 bEA1wA@A_AAAqp}xw,_AAA0g|)DR.ֽ#KװD  Z^@AWG7%2beT,/   WJGu   ^uAAAA ݻ{akkK6Þ={VXq֭mٓ˨(5(,, ۺuk^]VZu-[FEEڀ>}()kVP/^>}_fMfH+xuQ[+JQ ԢfWo:窬L94 4Y~رc͛ jPlґ^'+b8f.AO}[o_^hxBl 2IP!WYv?}@Ҿ݇ ,̨~A(TZZСC+**lmm Ljbl `%Ki&mds;KX亁] 8ХKv8 ˗w䁈M0g̘ѷo_nݺW^. |Q[A5z{{ر#,,,//… 0Gl߾=W]Ԣz4iO6Yٹ|0U5ιNQ2xPۥOsi³iZ+KU)BSתU+۷o5k?ǦN_eQEXQ 555檜AAo޼Y =z#GUsssaGΜ9eKKK2RGGvAzӧ]Z_ͭΝ;֬Yɓ';v >u1]fE0VVV{oӹ|P &KPǹӄ4>MI]J_myS|}}?{ x᜝#2lذeP{HJyMfnnLQeQ B6gϞ7߀yȪW.\? Hp۹sZ2HeUP{ Ik׮W\~~~J*U,udggG˿sUB Jƹӄ4.JRrC5kֲe˺wnaaQ\\Z4<AN^C?6Uuq:] =B}G¥Wk enܸOa]:T bL4 DH)LV@6abdmm 6tP2P|)L4ܹ9c f)O?̬SN̚:\3(:.Ţ@dTs叢E byu7\i\F Q/\C*ORB5LJJZjm;vѺ###awUP(Am;{DG\ݺwQt}{b &&&z􀜬]~ADkH%G>z8Qts˻M]{TG5g9{"ksϭD\~>bF5RRKnB6^t_%խy jX;Fne:Je]ʰmV~:W(j]\|\|Cebeԅu#Cǜ,j~m9 Jsp~*?J:E _(jqrP"   > Z# \PolVEAc|G_}Ұ  +~" Rj `+jIENDB`PKs#L<#!!-Pictures/10000000000000AC0000012030A77589.pngPNG  IHDR V!IDATxXSƿ aDe+ e 'jUTpPD'"qwKuCUT*-u@6!7!@ $n5} ~RQAI ;4h*wrp:ԭ7?[{ bK0^" 6$,W)ql٬eZQ#)/&j]bYRx]o^c (L8˵捚Pj`±M:#fD/tER(, R{vuhZtE[^Vᬗ0J^-e# b̹νrL[FCWܝRm@}=p$/Q"A铴{HRd!;.5Jڑ@P(\Rq%S7dQugIx+YՈBzHJ o4WUs6 S *yf*XUXcRh :*/*Q% Q]?QRseL5ߨT*z]yJöL\ECULUO -.xT`!d:6ƌi'9pPdLmUU.vkZho"v/Fcqfq9p T˾pFkǒ6)0w:٫3׳uNMK^>~  _cmbzӷ"7tv0}v`ڰ+dEe~b2n|rfMQrq+<&L3ggo ^4 e:UnC*]_Td9Ӗaۅ;r)U=Uwj#Mp\N$"ݙz$fk )j{&8t潙۬θi-&ox_%anL[eGYދVV&aB[|{ZٍogTB+KrlvC8cv#GҲX`;02/RJ^?5S6^zę#W:jY.iCmӘ\ tudt1CBRƄ$%=gnðC{<Ŏb[7+ 1!8 ܖ?;e{Pк Cz8ŅwM@ev1"9M/@8w*r?I"if}1We{kIϋ99fXFotf:-""@D @'{8ҋ("@ $d̀06@]]]gkk#|K H%j8xv z9fE*ϟ??|9,T=d꽗V0Ttmǯ=LF՝Lt$ΊTO>=hР3g": Go1`c"6Eu(yQtH~{= ӇAԋn_V[2a&(m3Ƚ7Ϊc+piQiUPc_ݯ=@~h" 9"bc ݙQ#p*q9^UZptf-qLUFGGx: Gtvdhp4jiܚ&(}q2;AO,AfZ.8D*B}^ptt޽;Z. e z{L?yh  + ׃dk& ˗/sKR(*85qʢKmçyZװn;ܤ; f-qL£7ns"kFP:{ Јq3B7^VmQl 2iwV#̽p2Opt< DP|-'ҾWw-ʻk_13qDڢ03Ƚvgh*$iB\?*mO<|QY"ip%U[)t ,"mQXdsYv9`)8ZT.;S P1⣵>}JD,(Z|rf{ Ead];v"׬%Edj,3]]]OOO =+A"["@ "dR"@D D.gg)CZUXDX4տň" M"O%4z-q*;*lLj>\G l&wِubJZCmƽRn|CmP%Qb.3^yɩiض'Ĉ A) m%$LQkaMrt^07f 0vfUT!] Y_,Iyd6jD oh[)}ֽy߈{1HU4cvglwԔ7K MK]s+Q>h M``%'LѦSݦL}hc?3jT_yΫG&`i}ɪOLKĵo"@mҩើ+'W?#6BNQk[s6#}߅#ɔnu6w9%e~p6˵Hl jZֻ ~+%`C{UBlMl#RC}] )ږ}G70?Iy6ϸm{5yszG^!H؂@.bY?_ZDnıPGAFivcdѨeۂ:8\KkFmdcgr nĎ~)t!s2o?m=EAn.=טN㪀P?:o**ܺ[M5d3 EXM%Di NR6R .jګϜˊf-l)Jø+ϽrL[W(h2^7}mDJ|؆]–5b;e)RE)X5hβ-fM_yeKA zm\HVˇm(޴D$%5y˶|Nۗ$lG_ mcmTxS-⳼6FxVd{NCHpO1)?r "͢OUo0{%e8R m[cn;Z !,\0*;[|&xrǕ@v)`SQ\ /KX"a#I)4Emw9E3$^,,-Cm񢸈q*:()PXRs6[$4}ؾ| (7yE#ZxU49,o O7B2s D"@ "@ @.u+ݒC;w,VSΙ?䯏m|=b7wKrEP~7yŹjeZ,D[ m.zS͹vq'u<ڹKEz#~ýV}>j~ݸQ8#H,Wc' .u>A]k/LDc,r7ƢGag,Ͻ{ \&;6ǂ{rVsfv%ysV[ 1wo9ϽpAdmM)#aᛍi*7y 3ws9ϽpCI8<;վX1!cv0w`? G'~2qۭ~JkR |pv4wۑ7.u>ɄKx&7jj%/e.h3!?asspA&$P`Q{6qs7(pm=||K|@D @",AEX"@D @X?gF/FnN5H)gdSD@fȷS/ hWgޑMT&ՆFjȗU6^.a6y`yTZO 7y{$md7c۞W'j%4`u {_xӾ#|&h$rC5٢:ǃ9Q#e9N.KVw֦]ʋʛ' IgrC04-u)/_̭p0nkoRj:ُؽBU|!I|܏ڐS]=}WN2~Gm8+='͙ .'@U >ǧN@fWes_[R7 MK8}iEN9ry]? |y!_&^n)&'roegQ=>3#Sv4on}nx]DPIơ5\EU%|Pio"op,i|[7"D@D[f4-.d $r-7ڲS1m`9sp[i;v-~6@\s~!.zDn9GIspOoyj!tkLcV ؾ}Do9<~Wrmw B[Xe[Z1Wuc3bD @D (aPp D @H"d V ,W=#=f."HAL8Re`d2-(dWK/>f +T!ezd@OOg4!aq.*I8sʍLo ~wL#,^t‹^ʐS&Q]P&~qkW5[-3Y'}̍#MוBT[BN`,6+eiMdu26Vܵ]zJ rʭEle?nOX5rʤ#B>IWt,⼆ WODZD.Rk(MYN!KwCE@NtH g ޻v,iy:Ө{J? CXyXy^?AɐMRL=355 =C|:>tOѵ8ۨyohaen&ؙ@$j1 9h8T I h%-""@D @D  @P (aHŷ.|wF~)܁z\+EaU܋[5hzO>ט]HJC{<Ŏ3}.=Re' ``cّBbrܺ>&jU|ԥ3}h.o$Uph`۴q%n6AR*J:65ג+{z&#RT`\$UχHNf{rO8^uHJmLz^ ].r[DD"^7rIENDB`PKs#LN]::-Pictures/100000000000049000000194B046D2F4.pngPNG  IHDRO pHYs9a]tIME"K IDATxwXKOI (EQQޕW,{{wb(b.  EHcbLHf23{/sfwg) k!BW  (:)A'A9t AJJO @dTn_w} u[OW7$?Q]C"AT_ \ d AoVZ!DhE~/@(Tc,Ads4xʀ A AU 삒ܢ6%Mkhkh2LŅ417.#WS߽uӉC{hQ(M51ˈ]<t=q|3Ginp.إպ#;q$* PPPP~  f)$مY #TQqKشqzR IWv/o E'ǃ#KJvkܥ\L^Y:˭_)hrH DʖINN]x,Ohr4 x\JZvqmּP$JN˺8bCH$uL(1ó{{ vU~o9 |v0/<rջ{6M55ԿgregD޾\ҬѠnmY'MZTôt   %@8$BEBEBEY$/W a [:[\;=(*I~C^0՘7tR߾}@SSs1{poZWPtRuV:HײјsBlB$@Ο+e_jo7bͦ^G7?o^K~m/@ vu쩴/:\a|v1Rx2EjhժղeӕX-8'O&&&kYml= LoVotWo?8 6,$;TM& GwGOзς]^._,U(oZ7oboq=?($MRGD3Jt   %@8$BEBEBEA$IORtGC]P%~.z6܀kfUj:I a p q\[:/S{7AEb:w&x75P(.?|:^A,<\y~M:{[(һVN^O]O''gxڂ,FB ֶgz̜w O.eLf{:lPWW]-n)d+to`nlpA ڶumyP`̐^:Z[}еy?6k߾n[OGMMY(ŀ>kNcյKNnw@h|=N> 4rsSs'XLM}RN+^?d\x#yr$#<1+ tw_|!] 9@إlϿIҳ}̇֓5\`K~)@iG;Ƞe/S;6<-=ƍfcno޼4z(^2eβT^ƴVqv<(9̚9ʪ~@pIcy(+[[[QNKUfbK' ѱo J8JIi.!***RMQ$)DR^an_5*XPXLBVnqAAAIi)8:r5أv;wBw.1%/mt]4V-"tY:_穿{YOhK=@б~ֵؒ])~܃D,, FJM@_6tX C|ԧwAӄX§A~PW˵ʰVZjL.hij@~~>5]ȣip݊l=}@ ΔlwpR1t> U)Bȣm]={v=#q%r 22rޒ:r6M!0 ('ܜ{yׁ]ͦ eM>Q/-.]$U ++PJw PPPj"IfPx[dg5mG!jt6ɤQicy%V$g垾p!CSPߴa}?[[YL*\.(.f ;MD"ч/_4Pn tXӚ%ݢ ~jB^J1#=Fb=XZ\iK===O-}YYYڶPT([C(JKU\ ݟm_}/rbbj@nn.Kx{Iv~c.30vvN/͛%LҲL*r:DbcQ Euvhh(u^ȑIyca)W//#SH$,*2}`_@ @(Vv:[(@(@(@(@KpHT{oPj̏>yKo˻vz+BKdty%l U˔E.⣣g͆珣ʹsg) 4!oܼY_qȑ&3s%Ԕ.z:j:z:n3>|xNNw'  7+;@_[SGGGKtZ/=]v=vV7it+.h hϟ?3y%%񡸠4>Ml>|NܱunyӧNcJ/o. P+^cN*8eZڬa}3l|`p}RmeacǎEN'c]RQGBBBC"T$T$TH~`l-n>qޤh7543),֖ZVnؖi r3 maC/:dpdA|HK;~>F90TD.sWL;jԨgn?z[ xlVz>'HySJ){y2\~ )Zjr_DG/]2+7oaCBZ6?61wGn^Ki.ͦ@t,Ѫ/xF@] {rD2*76>HO/Mr:AAAU:GN]լa={ףsky&>5n_PrR$y>Q/[';jEuHzHPU"QPPP~  )US#CN?kAkiԘt*hddhhHUs:I1Mt_jUVn{o>45oP ҥjE-׵.)gmDrG/zfT:>1-6+d!][)o[I#esZtj߾_~Y9siVnk" ן}j޼y=ß g=8Ӓc54 ż;p -3f@d0rcGoֿ+J=yℐBg1[Om6g}Ѷ% s 9Lѱ/{xuþc^92cǀKj恕4/_%!f@cÏ/ZrIO﫳[Kx!ɭVB-'`CBBBeC"T$T$THRl++ ԨIq1bq9ʏD|-/E=P+JtZQ*92ٽ;t^UXLAghV~"ᙠzqET*2~[ralJ)(!]]~I/Bt):m協3ᇎs(RJ/eҸcLZZ+ᘕ?CIfRaBHHPi"kEit'ঃoJgpLK wԵUV&*^qJh:/JzQ)E]*A5&t^:E$ (4v ]/tNHezQ:hH A~Q'eij¾A^^~TT@5*'JsFbR0D oH$x%&% +<uPyZR(>KXzMfp ˈz3T'Hl 8[Z($8#%['!FqS6PƓHNtA IDg5ETJ/bT<\`|;Դ L5Ʃ4͍ϣUd@tKYzebC( o r Ve|R,M_;@@'͛Ni EF=~:1****(bu"GP<^qq1Fl6`05#C{ѣG SnlҐ֎G=}|$33K+ "UMtoRC\Ϝ;ulaa̫WڦuA#233߽{榚FD!?rrHQQnX5ѓط999ޮQC;UP'y5v*sQf9ג#Fع[jBܖy0/FlAYmA:8$"+WD ={l޽yyysmݺ5BP(|>q0aHϟ0eKB觚 }feiS&iijfC>ΝZb|*JH$R" fee_kVATRðpŒ T*Uc֭w6y}er]ۂ upHD#HHH8sLtt4ի6l;N2dV0'nՀ iVQ~[NNꔞ^XPgt5-fc0p](4TK$F@!Bqf ^aC*}P(YJ*XtdZ#@d[1"H- iӦYZZ@N4i"? G5eJAʶk>>@Ro=L Kr:p㦭sf7vt߿0~߭0D 0ZC*WH?QB077mQ4ǠT egjB[ aDaaӛ6m;{l;v}}}9ΦM/_@$ .ۮ]ۿZR|)T$UzԮCguuIC .zuM: FγgN-7uScB< fqpӧD"ѱ㧖,^pdQdԧoV ! $_́ٲe z0x<ǏΝاO!E *1:~}'N;lr3y%O]p!QŇ<]]݁.Ydʕ={}-[r23֭߸d߻wm8 A/8!!1$4l{vo7WՉlHvv=oܲz߿kjLFQT&Umc4"\uyGWG{ϰ/F޹ѽ YJ!{0xU.l… ˽Iqml6Cc---[wlڰVZuk Kefh_$O.^>^CR9|V^}z-]PMMM2<9sXpK{.BaH"V/X,;;[;;[.s`% הm;v={ԩy%D(3[YUꤣ=mdACɏ`7oE@3Oa0߮C)~N>q <==8:T*Esy->gX` q&Sφ$KJJ<}yJOăT8`OPԵkז90"?_߀AM۷n*))ٶ}תn :2U3FQjki9 굇q!ӥ#ǏD??$s022rtt|2zj w^ UNvo޲=---z(As.غm缹$s*Wb.ѩt*TxocO&/\2s/-)-=tnd2U ޽&u?##+V9x(`9ݻ}ZZZ`:14<&`S+ILLz*fέЧwu7%%%}w'O;B~|uMM@ZIh L& ۢE ܀$~vCăٳftإ"JfSkbٕ1pᒧ H.߽w3F/_k"öfyS(˗+/@ii /^D[)&5Ǔd6}15wV..;޳?%%-aOaKjIIIΘ>dfffMn*SSq{/?52ŋ+~esĜ>skr{ʴ о)**jԺ"JfSkIQ /xt)2yҷ8/7oݺy:Sq!D?9$"pԩ?c˖-3g#G[ӧO;w?mmm+Ӯlii S%PDr: K8t".oK+ uu׭G2(M1?Ne:_SR5~Mթ%%?-x W'O`ep%8c 8\¤)'kImnnO!+hUV))wЫO#L5&LJJްi8fO +V^;HJ ЫΜ:&NII7oQjjj9xzE?~:y_~W޸q#j]vLJJ9PgU=w3gLʠ*9 όuLPX,IV·E m߹{ҿ B.uÆ7s):[IubX:7zz ǍKIm D;@PRAP(:NP=<:J- ΟãG2?N`D *+lHe6;)~ݻTܻw\fB~/ 7&N;qr)kmQrƨ̶4zā>rgncc_ZLM%gD?sRÈ3g@nnnRRR\\]xxUhhhxxxIIfb֬^f yi~QFxi4?w]77W``~䆏PfSF mON>@+C|CLs<%/ʝb|sKP7JrrM{>?SFkHeq_$܉Qn]/_*~7oD^_5DׯgtulZV\ITvQ%țCEBѣk eKgMwuuQنi>7/O$J{,Jr8M6===MMMBE(4'x+kр=8$B ATEWpTeQUbK(yB>k  !Rn)!  .@AA AAA A_BVV  e>|_~D "[grrr\\@ (3*#=J.F$s.}>}Z|nIիW6lP\IXX„ wޅڊS޾}0o޼˗/+ƍb2.>RIIIӧOdX[`w bux-[Xn +@?(Ñ#Ko.]o8ewg&jժɔߧu wg--ƍ1??_x6meqĨ+UJ[y;G@@ܹse/ B//~ >̖yExxxNN8E$M8qǎTAEmQnWp ƌS }Q7n:gqcG׬#^}Z/uu͚.[Zĉ;w433&z/^( S:ugHtT777gg/_;Vb6lؼy͛7k֬BܠQFaĀ*cG=ۧטqn޺CϞDuu<{y}ه"Y, T8v줏0xBN\!.vʿ=:3$??ȏ'5Qԝ"mW^=:u"Ө]:/Z^-[wDF|'U6oٞ~=ƵĤv*H'/I9+A¯oێ)O ܺ5*8֭o[aao9i fC{ys#paktٶ-JW*$VE&&~_<#%%k uk_0_/g . ] 5O^zBCC5 0aBAAѣG׬,.IQQQAA}%.U(((I&)))׮]# OO={8::*n)x*u۵kGȯfj;j-W8f;wyΜ=hzF0wά>֝'s^ٵs+sMIIIfff ?8vcGT*y244<}*۠<ۓ,k:v__d;w=dГŋܼu'{_r<𰞞.,[h1R.% lK,>b9qfVSqK4do}[719wƍ tuNN䶿sqU7==u77$ss-2/jj4q 76cU=MCW Heƍ=zLիW'+&&&Ϟ=*>eʔgfddݛf'%%WMMM\o߾߾|^[΀C?D۷o߹s'!!OǏlijjK rssKKKO:\.B e]'kIǎoCϷmV*1..Ny&ǼyU5lG䩩uG\Bk:ǎrpl!rjo ~GO6 ,Z[3SSx"zM1ycNiЦM$gq8\ L8e \[^ |d&%%/\\33}z\f}vvvVV֪5몣c՚uYYYY+Vۧt--?,ϰjZ2UkS߿Vp`{mmwE}:Yu 7PA^ wc-[[ɨkW/#={vеQ<ci/@`XM4A_ ^a ?phfݠ u၁ǧNJsρ_~"zEd&+a6m~Mall R6S}j1RYU0<ZK?YYYl6[J5h@KKl5550L@ @ xd(tuu C Ԁ  5:D"QZZZrrrrrrBBP($c$ -[udziiiFFFzzzZZڇh4!{# *! CDjjǏSSSMMMmll<<<8իW^=qJAAABBBrrWrrrիgnnޠAzuoA6A6>~O>7iD͍iܸqƍ@ |511ڵkoРA IA6A摟͛7oވÛ.]FMMʪ}4<<\KKޞAGA0`CATo߾y&''ήSNB6@Dbb7o>mooߨQ#UA AA# ߽{fggסC Z=} ۷,] B! _-̟@P,,,,,,u`G7Fff W}VV0s&cAA0`CA~9111-Z5) /^1r%8;äIpL=ga!e|`xd.-[ǎp) l ȯB$}ӧyyy͚5Ԭem}:t++s4nU9)q{'rs-:Dl|+ (Crڵnݺl}}#FdddA̟?_GGGWWw…ⷷKx J2ܲ엤:X,===//d}K񓏂ȫ_u릡ѭ[8uW`B?4\{p>朜///c``|r2H"?~w/^N<]v/Z2)o",[ӧK'C8ٜΜ۴Ck+WAM6͜93##͛7C%Νׯ_DDD:tHq:!Ǐ/׻u릠y喕g$Qv˖-g>ܸq+[˗O0gmȐ!m۶MNNNJJrqqR\/\pqU`B?4S1qqq 0aBZZڃݻɓ'섄w}1 @QF={xzz6Ʀ͆o<@0~{~رub[BVX@EEg_9;u6m 3 AM=a|ݻ;ܿ-ZpqqQ#3!HXpUX>O1hL3F̺u,XP۷o5ٳvvvd )(( ;rIΝ;gkkkoo/N~z׮])+ee헤m۶ѣGGFF*ٳgoڴVgb|}}G1k, 6oO*Xe:;' w]~.͛Iۺu3~xSSSMMɓ'+sA^lРA\BV2' ff? Э] pu֦Mw߿C@X`5kTk1hL 5Fvnnnz@0p)oog϶lRrӧI֬Y#5-$t).8`SPL%$\.wُ=R޷]t.3W`۷/^xb0Ir(~U](sY6mZf+f}}wԩܣ>իGkU&\wG^z <˗NHH@e.8p`L FWEǎ⿏ ۵+|lyy]~]jt>bĈ%K|uţFRl6M;sP ʢdYy+eCdye}||^~]ZZde/s厱qk֬YvmƍgQ~U]Tte;gΜٳgGq; <ŋ˗/'Tp:B~~K\cdd> !8o)FFF>>>...W\tR%FjYY%;v$?~@|Xjrhذ_lDΞ=Is8 &|L0a˜1coի͛'Y͛7۵k`0-+A(YVfTG:׺={ȷڲ uPOv YbcaX8z$<<00e˖4 U._?}=u*}8c 6lH={Te4e$mߞzm|C]mԡCxѣGfeN桍cWy3|xB=7>6ẠG=zԯ_? 1>ܽ ƍegR׿tR֭[nN56JWo߶lATV11eWAj' ((۷FhM5PypAQ6 QF}6((H AreggwAj(YYYϟ777ӧЫ4m rq8oo7n￞xk+ H!6>ҽ{wTggXOQ6ֽ{wϿ>A6A*y+W ި)L pa9 tʕ/_A0`CAjQQQ>>>&&&荚޽p'***22  R /_NLL>|6:ơ0z4䔟Y[[{቉/_ =A AեoXt ԩJef^^^pyrCA0`CA~/|>ɓ}%Fj:pRi4Z߾}O<{ ! Eqq',,,vިp(L))ڵʼn'с u7`u떧ͤI233t /_^~ ?A(NKKK.޾}ۢE e%KWnYyKReI2334i"9?Sg 4̬I&Ǐ-;f333[[u֕ksHHHÆ 5jtڵ0J #vZ>}njQ<* Q%񞞞5@;;;wwwFU+<ƌU.00 RGwqM%!}-("l *.HE[]V,b}>[uUkQEA, "Ⱦ;aMY~\@B pH{=s=wfΜ555͛7sB⧒6~U¯Z]]]CC#$$zFهF]v1PP@W;PyR...NNN׮] ށ/OO<蘟/͛7=<< #55uڴiBTY^y"ٰ۷~Fv0KLL344\r%Lҽ ~ ZtC$`%qB]]]gΜNE㧒6~U3g8qرc~~~387oޤP(bll֭ErqqP(7oބ$c7`ڽ{ѣG$ !f8q+/^VWWP/"ҟ1d3&$$,^#+onn.))yYvv6@ +{n*JRw]O€+<gIV1ӧG*jCAQ5矯^jfffnn?C(577kn?M/۳gϖ-[v9KKKD"q:::TTTcDEEYZZZ[[sKEhExپ2aaa{dw&T*BL2ؘ;STIDaI9K"477T:󠨚lܸ1((۷/޸q#2 Ŋ7n6)y3uUڴiƍ {j?Ν;vָs mmm_~=:ddd .8z(o:Пw^ad"l2 .7i`d;{{{cp8\_Amm˗/cçN*$%)TTT6mta* yPTM]B!!!fff3,< Hcm*lmmmmmmkk]]]t:b1 6]RRd2߾}+''$//O  DRSSSWWWWWWPPqu9~@? _TTԃϟ7N:u̙;w!~o߾e˖ .G=~@ L2[BRˍEHY~ S ,o+H?888,,7B(,,lΜ9}/iӦL&&MB˖!Q|7oLIIٳc"`۵kBݝ[RQQA"VXQVVXbҥ#9yfޓ?}]QQq@Y$.CssUc(da0]pppEEkWWٳ]*6k֬677WZYY CAY@SSܹsU:󠨚={6447RENNN^^^ppb* 2.D! dUUU.\xKbLlRqzzzn߾=c #7odgg#>2,3ݻ0aP$77/,?c ,f `KLLȭ)--ȨP(.6.d2yԩSN}cccGGG Hk$Ϳ_#1+7oVT*uɒ%#T&F &OGƍ7n܌3={6aiՂLF_vFO>ڵk_urrruuJVɯFǣ,4qȲrrr .|b ő~&:{ර]Qml躺`F~8L&WBba<7/LQWW^Y6OwwwTTT@@CJOOϫW,,,{Ϝ9hź&SU葃?٬^]osh=|ٮobttsTTӦM`O_1\w?ut<*+͕#o葊#]覨(M)`xa6syyyll,H\hd:^~=k,l{aGw]P\gpwwɁݴZ/22:zU54BEEzZ9srffCCGX1@p8('3.%.%6ӳq.X=-ijRuvVkaGH\Oa!Z[[Px:::bccOnmm=gFGGΚ5kx6stEf#ϟndd;IccG4˗mӮⱛCn33©S[Ɋ^iLddæMEi`2t:[B ƞ?bi34Yjjf&"5\p'FEa"#6m6é Y^dtuuZkkb>3ZZ{{{>x ''ߟw䪣-_Ghjt.G..htڴ ]|*Z!?Gh:xݽ.Sg;;tgggeet6clLp8TUml,(+~,jllK\\Ki)}Tu??M I8B/~=ܾҘ>^VaqCY| xOUɹt钵e ZB&-[fmm}ҥnyB6  PNF& G-hGks"rtDsj?0fߋ/w da'L n IDATᬬJ6#ffĤҥO>Kߩ+=!dwwG냂tuukpJJJ̙kjttPc#24D!6ލly B߃ӧg;B}G-S["ѣO?|7DlTtVCccϼyYD\eGm-cʔWV&ɹqyMpp%AvFE5EE5tih9ckԜ?oʨ}5e ‚a2)7n C `>؀Olll}ي+/+VxɥKD2_4Br]|}GX| D}MkڶM krِ1r8yI+ssBUgee"y^^ꅅnUU CC%%%BdrXdrw6ՐMWgUUwe%NQod4<Մ_\)Cӟ>},JQ(_WٳgFDDXZKMDQii!m؀^C9;sх \elfx+s $`037JJrЋÇ_cLLĀHIT8EEpW3&&fD"L&/_+p8۷o?#OxeXZZ ހe(d1gw0@ Fg:ɽ{߿?Ȧ9`5~e%Ξ=D"Hٳg n̜;wŋ{Jٳ{~FBB,kdDB,YvU` G?HeE+W?xDE\$'ll_ckBB Qefzz̙99ϟ;i:lњT6`;|7|ؘdٳO>Ύ?_ĉkE!bccgϞ-@+WePbٳgݺu-adsѐ2 ] Xg:ڵkܹs֭/bMsk JP1~u_xgUUUee)Sy.X`ݺu)))Ϟ=/H$^=?́ᡡz$L&޽{՟KTttt>ď?~%u\uuxec?A113@R(()? =}ɓ_ k\$(ڵ>ӭwoš5)+p8ßN<}>yyy .`0Ə_YY-###+l/yCټ<33^j~w r"WxmE:::S=_YI)&x}1*o{'qxxx`srr\\\Dʹ\zuԩX, FRRҌ3v&˫?/C$m۶={ad3gk'O/XwWLb>wܟ~Jɂۼrahll,,,p_ _.|~?cam_w5@ԭڵk...&W^]dNkbѵkh3O~mKKK ]׮!>LɓI66`$ .qㆵ5V}koo.Wieeś:66v֬YExپ2!!!cW_kUa,X6T\F^Xr[ZZ-[IO\. $ȑ#ZZZǎSӧO777ٙq;90tz\SSSkii hM8;;{xxs%z(477 Ng_R7N),gDkl7nuO˗/܍\c߿.6PfffqҐ1ȊjHHHZZvÀ6T\F^HHHعsΝ;{\ WneyL&߾}xh  #==)ҥ>>> )|||_>E(.nHOOg0&"ڶm%&&)u۷WVz>l 3`;rHhhhlll˗ڵzΝ+V\&^^^ܒپ)Oa"@Oz徲 +K.e2555v&=F!+)՝B߿[ v}ۼr!YrmZZZZZZBBB{vʕ4ݻ{@ :^|IP$BURtvvFDDx{{C3R(wDD׳}:yr'! `(DF6̚9ukEEdyygP[HHHyy9Bn͹Znnoozjx~144OZd Htttljjqu&CM0<{xxxbb~BBիWyBj*###kkk##_Ug===dz][[[\ݝ&kZ]~e"#0L89ҥ(%EFJF clmӈD)!!JJ;@0ꪫ&uuuuuu...ɼt:NwKd KG?&NNNp;X >uk1/w:] ('//oڴi7H$cceo߾{NGGL&kkk[ZZjii<JIIa0>>>榦܆===SSSsss}}Twcccokk+'[$!!`QOnn]o:oŋua ?300P__6lhjj9Ξ={-,,pk-o},O^BW}E-FSSӄ  CLLիkjjD=cJJJ KJJ n{vv'|bdd4a„+RLU_mg(~uFFFVVVЛDlii122,+11q#nT*5))̙3L&sӦMsqqq177WWWǢ^xuuusss9soڴӓdFGG9s&))J;L>=11b!G=ɨadd w7 WIuuwI Gyw7ee.^eRq hoRiNŧfɓ'˒Tuu5k`.]JIIIMMMNNNJJzf8>cd>C ?/C!۫"+VO>qƂL^g}YjՔ)Srsssrr\\\V^7W\tҖ-[Vdҥ+V(**yHQL-63ָm6"VVV.؛D˳,Ĭ,k4""ի ?^jմiLMMĜ`jj:mڴUV} իo uuu,1dMM H~Ggkk;,|Sllچ1ll2s͟zՎ'%ؤmXdcВl޼w`L`sql6'/ 2¤R̙zڴܠ7aIIi66E7ش* -׿ͣ{'-22OYYL&Xkvܩ7nܸ]vq+s 6pK}}}ˀE Y:se{ߴin;|͛߼y#=믿VWW )((%"KNNÉ>۷o'ǏR|nJ@1Pm~"}ijjjjj܀7IlvvvRa2?%ˆp8/^wttܸq3ttt${3flܸ1>>ŋ8d//ϟ3L1d==ѳgQ61XX7-Ғ-!ܱutYV?$ի ~#3g}?umhITT jjcGkӧdE?x7lPqvRX蜖6]`j~sx̙/ m/\0 mZ˓'O\]]J'O}vtt\͛ #55[1l/D՟!suu=zB󇅅m߾@ H]]]gΜy~9s'Z[[;燕OAAAK.=tz&&&\R䥾QLTWmo(~S)ً7CZZZ Fffʕ+)))^^^VP(C:&(ʪURRR\"v2a@UUB诗F}-jJ% -'N$BEEzZ9s*+!CCǏWΘ$ ;WBQp^zlmm{h˖l9%%Q_5{6BHkΜJzYBohXcG3fH\gdee޽͛NV***1l'\-yⅵ56]Gl_D?/brg`X;vhllz;BBBMMŋ%il@OGG'::Z;;wBƏ=jsssIIɳgp8܎;BBBΝ;'d\" `ymcv޽w^ݻQy<ҝf_xgɦtzRRR^^0_͛77o޴ 22eʔɓ'ɉ ?rKKK֖==׬GUT XW!CC|EE)댌[{{Fvww}w ).][~xĉiԄއ^9hEErDbNNϞ;oh]33S:22nU$%h]gϖ-[v9KKKD"q:::TTTcDEEYZZZ[[sK㹫Exپ2t}w^Q<ܗ_}wƍ޾}[ZZx7JQ*++۷OKK ' MHJ oA_*+kR eʔ)^iH Է_344TSż̕ϟg2k֬hÚ5kL+++ePjjjbH4 }Z[%ňX7"`9+V(_o 0NF'd2tz 0  rr1!D&slfKŁgLNJjy3'G2yPDkH;wڵ+<<ё[hkkkl:bFF70rGB؋e"l2D<~ılmpBW---RSpQQQٴiÇ??c]h 133`VDJ iAүݷ^U~W/_}:u*yH9p8eee3gΔiiiJ$IMM}ⅿԕ!s};w\]]e\nnn<utKA44kt077 AAGkVٜsl1[9!UUuׯ;֬)QLKs67'qkb)008[BHA]`fFNʪ uvWU~aGoN:߹sW?۷;_9Baʔ)*Z\\] $@/B_Q]fM^^,++ۼys@@@_Y~BPhmݺuL&n߾}\[ 8?W7~;vF2888,,JR԰9sU_\RyZMf IDAT*++t<: ֪)++KQr<'Sa07o,..^r,Dkʕ+o޼`0dhzzzx<\TAOO$jkkܫn]aG;yQWWfPtť$>xyÇ Ҹq..xPwe%doORm~!72" naGvڅ}XQQA"VXQVVXbҥ#9yfޓ?}]QQq@Y:YHY~1_vmAA΂ „|Y@SSϏz08{lhh9o&ـյkGR|yZ۬Yܮ^jee5 |ׯ_s3]]]7o4661c Ԩ?y$""bѢEҍ{1yׯ_$~Eb:`"GeӦ[{"*+=:2Y(!d`:&88ҒXZJ O]Y]]%0{ΧV9UXhSSyDKKZi)eVCq8\n(W<|֭[ׯ_?̲Cs}މ .%1[zzW.^vKqaN Ȣ,F˵k<==[?4ܹs6l^~}ҤIs`0$q!555333((Hv6cXO^z5HmFI{.99yɒ%#+ Q{a vUPi][0%6fHHɣGͧO[ϛ X劺<)lQUdhI&2Cé@DvvDkឞ2B/2]vvHRZZHO(}}Z߹n䢤$gnN=I6y+99\v+Dkb's\"њ0D. uuuJJҜy9i$1F8qHqĉ}||"""d'ޤIؐ J*PԔm@ٜ~*>t߬&#x y @CC#M~aQyIF^&MyfOO,C&q8\CCHR;244{dZܹo)-iB26*++@~~{ 񇙙و www33?CF aCnu >lvrz矎&& 6@V<;;;Y0ūWzzz$dy,(cgg' jnFh`oVn]={̸FhL&SUUUZ 444sA"iii>?~ZZ,lA%///ҬHM=L&Sv**yy.);O D}}x,lHd2ϟ/RzلH$Ο??**dJ]ssoߊ$2i=Y _tuu%5`r+}qwLV>&xaFJVRR)u;Z[[Kwj122NMM&nnn‹XYO%IqA0Y7z8q" 2Z6Q1:IT*577WF 陛KR:1 ELMѻwNeKA ' `DAGGGZW400~111ӧOWTUsO#]5 D!ـMGGGԭ :|b޼8{FYYl (YI=A%Bݻw,jʊb`#j46FUU͖drss3ÁVf@@ۍiiN| 6" -***kgϞyyyV{yy=TEq166x<ik -GUPP mmmp0nnNw45m `DU]]]ZWgƍX,hu Ūƍg2dfb"Y꭭pprn;LNRTm `F`V__)ݕcɣ,H_<==H?$ 6Nlol)~ǁA `ćJjhHmR;A566ZXXn/[XX466JwN?$ihhH=[&Z[}򥳋*6̞=H$˗766bg횚ZZZ]̯OxCXZZ ހe(dBsUQQ166xHFccUmm 4*g޽{zzz[ٳgH$4{~װ*+ńi}ů:J6QζL5"p#(`31A[faA|xl @>7466ihh,Y+?{ӧOsssϝ;'É'֮]˽Dllٳr7,?y  [>%%uڳgϺuGՕQ(O?+/DbyyyAAAii k޹s֭[_| /^ӳrʔ)AAAu_e%0Tv/J@ >%R{vۏGHQQ7C)0irxX6p8Ņ9?+?x<}\΅`?[FFF #S$^",W~K,xbfP噙uuuxtuu쳊 455y{{ X䠣#xJ#NRҺ/.WWWxc݋/VWWKǿyñթTS8# 1z$wq ޵$6ƨY}}vvvnWիSN544ľ23f# QeybXO<600 H-jii۶m۳gHHdy3gru8Gmll,,,ʪ 6l^6..jٲe4SQQ9zcǰ>omiiiiiٶm[GGX__'꯿z9 MM .}`~++ۄUhcccm&;= l4RT.A|qtwVWW~!RP@MM"M2%l .qㆵ5V}kooWUU\ieeegg-5k0}^ ,D:r䈶ֱcxO6$$СCrrpھUVa%Onnn644333#ɃDXr[ZZ-[rʾ6lJ6/Ցwpp7!`w{] FԐHwŪS#uuuR ZD]H&ټ#D"F]ΝF_ Xݸq#88֭[B{{/_b_z]kίc۷ot  W^B~3|5UUՐ4+L}vWWWmmwIB;wĆvܙ ۫_0Ցi\F{Wb 6555i]ZGGGAAa[AAAGGZZ dH  {˗NkXۑ#GBCCccc{E,˗/ߵkWMMMuuΝ;WX!!M$%---ܵ@d",?Y#2?ٕ+Wn۶ /lߵxҥL&f׮]\[\Fݽ{wϞ=w~ eآP(3,J~6/~YdIvv6,--]zs5A@kw% a$HҺw ֗,$SZb-ZOEkr ݬ sn:ooo boozjx~144O< ;|}R U:;;]%ᣏ>Zd HtttljjqVN&׻w!<<<11Q_____?!!ի}gX~ ´aL$MfeeuIQ5g~w%06:N uf--q--fi]@ t'Q]l [TWwOA"â58))YZQJr-(æl2̲{'2$4ǫna\pz-Ņ9%`IG 999ϗ33 &H7otqqK0 tii˗/-Z$ggǵ/GEEYXXm.~BIf{/U…_~iw&` "jI&n޼yeEWM~&>n5NkƩ_]p(s' 1L).^SSXk$MJ(:RPP`2 e]+i)-YL Kdd×_9cp!oeA@6Go^LQ^!t)ԣXۘo>l6[R]ŠKҝ)-D(Yx|wwpHoK**ݍ~&Y_cfFͮ66w#eet]]Eeey0(cӧ=rptTk>& YLq 2E]]!=3/==B &ŗc[»?惱X,y1\%pqLEMMIGcЁȑǫlmKKi*֥Kll ]xx!BCKz/ښtdYSPXHKMu20AdKnӧWΌ"B4,`:PIhhOCE$QkĄw PЄ3$%L3kKi-ݫ3 %%N T.#K#2ߗ:=zbWGgXEVumhITTntP_Ϙ93ڈ#oãGXϷp$4)*J:_||.##IY\aG@0lf»S4ieJJ-f!%L dJkQSOOOwwTNӥXq4N_===Wa0X2`}Ϧbf*<ԔPVFooggfv **[Zz X#ᐡ!̌puFF֭d?<-K%Q* <͟wՒ%` Y 555!!5!!4UǏOJg:\qGlS˗CY:Ցau"Y)d `OgOgzMzBY¿lwx#޾}')//Ét͞>sLknnըH8NIIãWۮiDŽ O?~ᡖ١ Q&OV[{8GV>\qDlu" ze]:99Ŀ&=6DFmڄlSgUU)ڰۈWE))mɓML s ۇ[Bw ֬Њn22›hgѢ\eeg& # / >gZ߯1cF$B><4an Uͧx~b4L[֋~wIZWv$kыtw5\TTDo/oܯ\X:O^T&ʴ$\F ϟ γ$""(`Q@Qm޼7}D>pB^r>`NQ`n>W `LؤD)lc!,$ҝ)pdukIllӧ--$D"I1GNCCXxCC)RFI0 zJIqh @QVVڤuu).~LfCChkkSSaO'<I0+MWW2QRBz=~<0 F?~Æ MMMX9ٳg޽{9rbjjʽD~~Y^^ (O^B!'M0!""&LзjEE WxmLL0Z{w\SOFBH) eAEQZ)Ӆ⨯X;?::kZ*7# MS|?sssν47jii||Çܬ4@]Hzzzh4L:BBj,ɺ|dZ 8[nɑl+WoNPvƏ$ן9sfݺuI||<{Au3.A=p444;_~ްaCCea2h4B 'Q? ѣGȮ_ IDAT{!D"q߾}bSDFF)((7^Խu!9iCeo8+`ض6q]KJJ>.))?¸ikkbC T )p>$emVo߇x+WW"tD7'Of͵fG?}NNNvvvGC嶟Q>{DSSsŊMMM^Ν;ɾCe/$~7ooo?C`k>$srrxWP =ttt>}EԽu!9pPY˷d2Yջ7>hhhcRCMPY] (᜽U~I[s⬷o[m $lv:rOUeID#y捡!{.>o I˙φKъ^|b&$$TWW}N$*/}!YXXpB ڵi׮]3,O["HZZZNڷo{/RBr o_ވw!j]]/,++s謬,3331PWW:+PA c2ԩ(Ǐ'H! ^|p9}}};t[[@-gohhȑdz uύ(tC"ؓxs_~F)*/}~CLMM]YB4l# .$vFII i,}{n}ss󬬬s%X,VVVm`Gj&755 i2x!u23ga$lAAA!!!VVVwؿҌy9rO8"Auçs# >_Qzuffŋ99H2חH(++_t*//OSSsڴiW} aÆTQ; u!9Fa6V62\\\Cӧ^71oǎ/_-_|?Çoܸϟ;88HKKy_gh|"m(t'O1gΜI8 .(|Bx4vvvgnii 500࿲ )UVDWWs au!9i|HLL%%%uww@jV6W\qrrl h%'8~-[/\PH{w:p@ssjdoF5kc1vANhf I]:(D"1VEEx` ^`0Fk -J%H( <8v';4dVAăDlFFF# @ @?G03gN\\xW 9s &YUU5ԀVh wF::9.&'̚ņ|%Ļ B >hjj* EFFfQFuЧLy^B@`@ 0`EEEbC~~CG!I DDJ X lqY]ؽxyAK X .b 755Bad )u X M?D~Z`ATTTgghΨ :L[X3>~ &M xa?堾pG ~`oXwƍp5 d,ᤤZ[[e xF!fgg54**NMXCT$$gg -YY ww@ @Eh/NQQQAmܜOMM J*%%`O=ژ_A}n ]Ğ$''G\akk+--0zk3!!AZZvU] 97dvM@NN%[p A%2*ppHURJHԔHS;D d 066{)S$Ჲ#L$''p8@ X, ӧp\ ,-a LHHwۧz:DҀ#l"|455+++h vpHKK{yygeezJOO򒖖3ڂdhj]]D,XMJeX Ɛע54V+ +++555aZZ>>هYh "HA@ СP(Cͽ.D&N>k,Ip|rooŨČϟz-cc`i <=A]ػ.;;b{~uǩKw^7n ,a&N󷻻B>$%̛Gzf @>#P(Zuul077?w1$D^^ի?72999==O^^~O}( `"L&ԩ[恜qS I&- XY j555#?D0NoÅ !I~K@ 0nܸ21ᴵ%'111,K2+b(**cM~~`}SVV6n8ػ!YRRla|kkwI[|}}$|}}Lbݻwւ馥 '`+..Ӄ[(twr-,>"'<Ѐ !UYّ-,,KKN@ !quuuJԢ#// .?^B +))wɓ%pfmmmWW`[]]q6hii5VAC6%_/ܲ7i\ڣGyWOtZܽK{!*Js'O̙3ÑKrREXH$H&I/yr1oP]$.ԷlTp}lQ;wP(uu6n]\\X7RntWC5LI:$͛G CBBxƦ&ooo{Aˁ IibbRYY"Zrٳg߿/׸gϞZrdFk---o뗞J|H̸}iVLLcff PPYW=g 0w.Ԕc*fT ?^1{u.]2d6ZVVDttՑd5513o:th˖-T*5''GIILJ-?sϳ333ϝ;[AAASDGGϙ3.Gy"ύ(ty\e{5k V/isPPPdd͛7W^Ϳa}G ---555]d Ha /Zh͚5uuuIII/_ׯ_򊋋/\Pf@ѓ'O~dźzyy]x`$^PPpŴ4///WWW,VBzjh΅bMC/XqFOyr, 45e˻'O.Yjbj.,99  зR_߳`AFxx]Rܑ/;р 6n|7eJ-Ɨ.岚Sw*/a]` >ٽ{ݻ/^ x䨨2"8zNJ+x>8H$VUUw';wu3 B (((xLLLD7b$''h'''IZ\\<ˁlRRR/_7o: B'''ƚZXX,$ib˗RROJNdB7 $tu> *+X,B TVvikZt,τRYL,ӧO`ut Oz&+S_kWeȟCUHKKۺuOe[[ۏ|kk+oK[DDGdbb4n~nz=/?&&2 `u>ڼys]]ݑ#GՀ-73;\ӖmOTj~~~FF ڼyu^ʣ5}w;[':R9al.\5kxp,,,^~,GOOOOO)33֭[222&L,ha0>|(,,677g?2$沲ٳg`a/eC̤IM_}RQUTifl٢wp` "x[9@(*JȨ="5<|(Օ-!!a7o444dKB[[{ ͭ[ EGGsHuÿnnǷxB0exx6>~zر+W>{lH8|1>|3QSYxԩ MMMדd@'ڢǻ:;;-ZhTMIIiԩSN.))ILLUQQ!$ K}Ei4ZCCCCCJP(:::nnn£8ggLHOVV5H$xأ?-YutU~~Ǿ}ϟ7wB/ VSPJL0 TGGvoWWw]Kh9~~8}bd۵kׂܹckk}v̙Nj$9}.Au ~nD;tWWWΟ5oÁK(MgP yy={ UqP8ZZZrAjd23wΒr ‚=+R8%%\ uuuuuu'''&YUUERh4N꒕d2?X,DRVVVUU555<x8~ llk )\vee]x9eb~]ee ;u$dHtvs 5-_eq,/*/(6 )vݕ2NRÇ;v,::-{ҥ;vuھ};;9Ç8nʔ)Iccc^^g-d??CD z"g?5۷mڴ髯TeO駟 Ebb4uŊ[n? +V***?޽{7'{ R9!FJϟ={؃aWWׇ.[l4 F[[Օ=}t5&1X77aЉbO:eg}'=Ƞ !5k32&@@ p#ZF;~o 0SJ ֬YS\\̖Yj$۷o۶m܅N:UZZzP]KS~n3D;[aձ_vv6Bڻw/?FX6X;+۵kÄǵhԕ+W~а,wktrrrpphnnvrr}6=R9a!''GPE BP޾};y1^K۷N!4~U\\LP`_H =[%$48a!7_+ 9"}Ӣl}?vZM6.v-G~_]pjeЦ>2haR xH ???33S/z{{K~IJJvqq3W|e˖ skWAx8{wXDDDbsC#I݉f ݺUu<Vޝ$b4w֐ԅ@ a„ b:;;?zV$#ggo1V&L(JKnn#G&h 2TM @ #tE߿/ ƘHIII1^JJj+Y, ;wƘ +_12|ژ;vؼuqQz@ĉ%Ęy|֋(-33u Jc]ii~ac 6 %%%EE>H1x<ݻ"z{{޽*=ڇG&㐱ԉFFR,.^47ӄ @ fo޼c (aHϟ?P(B)m ޼y3BF)-3fYr~tDkk l &LhjjRbϬY aHfJi0}%PԦ&n"F:}}*+ >i< l-5&--SFhOzzzr& gGO8#R+Wpql@Ybbb{{P) "8{숈1(+""bD"QXe>~<lp8CyyکHC@ p @F)))KKT18""&  Z ؆-55RJJ Vdʕ:C/_6xa_0Z@`@ b&33KrL:u*@3DGGS ̂,-T̴$[ IDATzzX!!5o"4$"Hgaa!9+|4-)) VHDѾ  .(Ay & =q 1f4El"f&OA%$ 陝+hdHII`0-e/.NȀF g=WϞ5ߺeę3- D"8qׯ%*ooofdd:5o߾z4b' 4Q]ݽm[x7&Mn@`@ ŤI;;;%*<ŋlXG#;;ŋHzp>dgggvvI`ADAQQڵoYM:U@`@ NHHx=&Qoooyy*0 zRR &pIOovtLUU˳;zt6Ņ@yzzO0aݺu l9ڽ{~[N/:::SsR!r1oP]$nQQgQQl_29GΏmHH=xɓ'CS)7L}@--- fLffW_}enng-))M/D_RR\&tRRR7O]] %%% ‚11g̟ak+_T/dMvĉ%''+**Z-xbRRRrrrbb/BCCyi\8p`ٲe3fQ.܈BwʕYYY&M _/_>jv;GȏmHHmٲ/^ܴi T b_@:~֭8.##ץaaaCO\nbo-"k2`u떫L̖_re EMMmǎoHr===gΜYnG?}t~t3.A߼yRppp^^ DQijuYY)tbcc9 sssٿrssy9\~Q]]gwwwrr3gPuFf:~5kX,ӧ]]]tޝ;w~X,vլ6n8__ߍ7?c.m7?n0? RԆ 35''gg왩IKK˜9s93"\]]ݻl24Z^hX_xߋ>OtzddN\\{{{cccaeAZ{tUO+(H $g1A4444p~P*FijVP"D)%%)IJII#$D6]v]~g{{;c!@hkk-<?~e͛7gH}F]΄=$}޼yhkk?~݄XDL&377~R{m۠Hyzzzzz`~H / k׮_~k׮vUTTK O?;w%HgD*22hhh{N2IIIyxx$$$\xSEEVِ066vqq.] ; Xx→""!?n0}K8wZSR޾mfh=4aDi%%vT&gnYYhnf673--yy̖fS.(gdD&h"@o&$$D__-TWmmmMTT>ԋx"Auÿn7|~zuo֭[|ܹ_Gw cff?۳~lCm|9 / С-[ WFNNnϞ=Ѱ}YZZH@F CCCQ W\quu555U'O>={U^Ӂdo޼biF[ʕӧWکҖښm[JJWULB^OZEEHi3d46vgf6>yR~0DPƆ`mM!L6cǎ0+++ݻw4cccr6G铤...P;܈B711ʕ+Huuu\x10P(Too/!¶AOOÆWVVtwXXشiӆjY_H@F ,;mڴG-YDb411QQQ9sH<#66חL&CCW_~Ѵi|W^l|-}g&chnDh))xsszPnȲ0i2YLVptꮮ7oj.^ɑ$ll䭭a8yӧ###H޻wڳgOTHrӧOX=GTXXYC?|"ϵHFFFG]n{ܑpUVTTT .6$]a6$υT)"5Lt ~2sAMG;w;w.oKΈTd$133!˖-{qHH… UUUa H]]ݻwUUU-[&+;M1ipkY|@ݻkH$iՌIca/5ْp>޽Bĉx E''kq(ME&N$LN#+-3 -y|x8llvpppHxKKK˗I8|ƍ I\4O]$3gmv15yoy\PX`APPP^^ʢEvɿmH¢yR~*ED / ogg7{얖;;PoW^^>y䎎v- H@Fs熇p85RVVv…YYYW^utt4iϛۤYfddCٙ +n䩬jogbed[^ޥ-˝S*-''!/պ+WLG1P=4Z' QQGd3f߻oeԝ-PRRrr/0;;[>8qBܔ,P>#'(zb2Dn( |zKKUUEQ( #70-*&G ~ڵkGXZq;>]pjeЦ,YӕA- oY|>LIIZ`N_̔?$%%uww@VP`0wwwő~xx M+**JCC)?LJzG썬, AϞ5 ^h12rQm[Q}}Oi)=$XGihnnf ]׮Յxyٍ4YY4)Sf Κ%>/#?)&)>--Mi4c[Àݪp˖7**l>}|ke]]ܩf h۶zziqHVGGw'Xf͚ׅ@ &''G'FQTTKKK qtt7\f2IIIHKEGr2RPf_LflX4-[ [``ΝKzzu^fd@nnݻҢ6l=7n_RӱhС ..}Z/p>"ΚfZVvl(9CC9CCuϞ5|)"QyBҼyJӦa կmۻ~,?&nߑkq.Æ(Mao,[jjXt!D@P ,T {XYYM0!::ٳ3f<]ϏSUU]r%A9܎7!%mii3Z;ZʢٛtuϙC̝K.-b55e85a}TYu^Cd$ի77wߍ;=]sTiԨX̙F.q{H+ϟ<>`ӛ㋶n|%% @q4`>4pӖ ok+iZYM~jKM?|X5 k@$EEEgg稨2M /^\VVYfQ(Ϥjkkcbb:;;ƍ'@l,։,+**Y7UWwݻg(/kjʲ{< 45e˻tu'O}6,z/N0Y,x5*!*>oiJ[=Zb2bck¨wIz\@VV++͛wlhjRq|$'''$$pLHHs%Ymmǽϟ_<>ɶ4o2A daffV\\)3nܸ+V]~]GGgʔ)c^|Ç)SXYY?`H{ 03x ֦R{NںKn`m=@2 :ȑtvvyj:7.]{ rr ҟ:UíoԆ]&a'  vڵ ogxxH*j~~:`hQV P~^̙1ZlF666)))aaazzzNNN/hb;;;777i ik!! %e*UUU߿d)CYg=. P]ڼW)++)H]]{ 54Y[ݕcb&aau Ŧ7n`돜ܶm}ךB};g`%-QbaӧON:2f̠z{E=l"q.XݻK.U9lll޼yaoo5*իWUUU666k׮I.31;::޽pBٱka4y3QTĨH99ŋU/Ro]FSVP_B_hpN](iiّ?G Dr3gNhhؙ  wLLLLLLjJwZJ,y vG{|NNNYY?S~A 8QF=~"6fB ktY}ml,7hn|…:U//e55a+dƚ5kִԆ62RrvV_0\Ǝ?gHSZ344TIII]]}T_ @prrrrrͽy󦔔xf2EEE C'`\rr'N$+̜tHXƘ W>]{6)S6b#t%KCTT/Q-S_ #`@ {ddd@@" BP\\\닋444455444FfRUUPQQp2_upkkkdd;umlN-<~!7zYYmHHŋhNG{n5ǫz{z{w]IH}jBp?0`@ ȿ踸ܸqo,SQQQQQ.//|Emm-Hd*L֌Ķ6*ZWWW_____HPlll<<<$!# 7n~4hX1m_+/Z4᯿%܄ :;wK 7mRYD=(H:lYKKKDDf̭%asrbb*Jx<b FFFFhn&I;::tz{{{KKKsssss3%ɪƍUUUEU==_ŋd2#""LLL #7̙Pʒ%H ())͍BW_Ik֨H)(@ @ ёJ>x`c2hw&IZZZXMM Ng2ݽgMMMh4ZFFp:555CCCv77OH0L:< @$κ7^XH^,  P(Z7jnE+?`o6/nܸSWWA%%t@RRRww˘wEw7ػ\:O>moo_d 5 -= j+WgBI7Q VtvVtvRoՃ(RpŬw6ȓ'O̙dҥKT*[b{"H"~G[/kat7.܈B7??Μ9x<ϙ3'??T*U[[!ɇDzzyvHHȠrMMMAEEe݃y ~}z;B0F2...X,VYYۻrf"F$ Jx[d0̗_~YSS3ϐ3g{={/LIVuL(IshmT#M&k[gή]::˖5| =#СC[laNqٙΝ-gqq )̙C߼AuP_SeeeEE7w޽fhѢ5k%%%ԅܬ_Õ_pnPPPdd͛7W^͏mV$&H&9r$88Ԕ7R{f"F$ tLx[G%KJJJ7>+ZZ޽_9,))dɒ%0?DZWyV%ik7ܽiuR-23cJ /dǏ]⍩iѣ=4~W+* L Lt:::H$N899ٳg̙]vx񂇜COOi||ϟ9. Zɿn@c .mnnfguD"U溹eggq_|HΝ;wٲe|ʹ/++#sd2޽{-㻏B%ǰ!d7$0k5"Y8[S4q Vm*?] y>qI&Ao|&S"ւy۔ IDATt___Lݏ IbNhnn޿F :sAQ&aS\+WW_ZH,1vAN$z gsVVu6++Chhi8Zww/دas# yoMMM7oހuݻw"ɇDlllUUjll-c,33'-ZtI,vxdcǎ͚5KXgDXBeee##3L|p8Ojj۷o7>JJٳ`ATA JO)!Awng4֯gÄcǬLL敁kkg`[ZZ֭[ag[[gyyVr6w}Ǒ$%%()) ۟!t9oH׹s甔D 111}N$*T*5???##Ů[77q֭mmmu}WB7X$6(@ 9rѣ:#"F$ Y,VCCCgg7n 999??D1߃M:iii~~~rrr]qUUaϞW&n$gjj8qGGHH+)\91:z±c홙<=<`B*`KHHXxk ykmm-gs-$::zs# +V,]FXnpp; $PVVV&HGd@ss)ibbKm],vxd'(jii+WQH 2<<|,/'$$@olؼ44:{7۷߻r#(a0q<^<$$$xXCs'c+s _Nkyҝ;_M/+rv5??7orknffƙٝIf=R[wCw@nBB#l۷o*==ՕI>T,--䔃$L&GDDttthkkϘ1]Xxdyyׯ_QHqP h4~U`Xh 1.? OL`Æ[y9))l`r|907[ro/[p @I8:: 8?Svq,7o p( )Bvm۶EGGX.]cǎꪪ۷/_C7eʿ 8kxO]$Wd$]SSװ8pԴn}[# (*+Vغu+{"\pp;o9m+V(++}ݻw5X5{@ Fuu;-"F$ }||233 Fqqq``fBD,{oTT\(.3,``,aEFm}3& -% #z2̨(*n aaiLa\jv떊dڼyVICga!̰ಲ2SSSfM9Wk֬:uK`` x$9`߾}۶m.<66vԩiH!#Cu TT{^kش飼 ̛>|׃?;#z* f-IIAAI!!6olߎ0z"HŒMkLIsv a{$Yv&3mt!?gϞzyy)}NKG$!X5D"XXXPGﲴ`i JK|-hj SS׍a8t^T}low7ח2 lTb0cb_oIJRR[BAx$[w壣7n82pvvVRR ԀҎ G}SD"X'Z? ޽3UUUΖpD/== Ԝ?i)Ô"͝K;zVβe(4|e2c؊Ģ @ cKKK7oΘ1:dd06Ձ{;%`g<ǃ T%Kw^7ӧA@&4 kׂNpB]]]vhȨ>.<2RP(k_ߖR{kSS%gg+Ym@UUU d8z{#5GGԀԧSYLӧOI$t8Dhu5.tթ,Ybv6VG".[[v~AAk}ZM@$iҥt:=,, 9ざֿZu5gpԿStҥKa:{,ymuR֭0ZH<^M۷Y FUOh0`@ (FFF8$$ nN:ز{xx@@HkJJƍIZZ쑟<ի Ǐ+NBWDā֯_k| WzzYKP۸)2SSS{Ŵi%LyyBB .7ntDXjj/^&%E0̙ę3 w|*MYTyeA Dr7n\``._`8Nilkׂ h4ZTT@ !€ZVuHHGfN/)yy?ߟ֭%K;k>!D@E"@pQPTTTܫZ@" ؊*n j](.ED@{k YDdْ0$<>>%g8ygrVW72ֵΓLQkp8??~|qgg!C`NӲeČرDjjj||1clmm1-F򘘒'~LjǏWUgٲ>K}…9lJ].|𱰵rW\tuu(W{sxzzꊝ@JտV|Dݸ\O?Y-?ѣz1A2-cz88pp0ٰ<&ر%KtO5f}X&6Wrrrddѣ`NDE@f5;;;GGG\dV&:䧟|ތg9@2H %553fl(..|9뫯߼ws3;W (:6dmm}ڵ)S6EhQ/uu,|2z[OoNn,-՝1l R 1UÅ ..t)Ã` a] HWW?~2^:GSSӁn^~Ok4~]rlɩSsrtL~a8/?̬ϲe}-yqT ֍E b}'w9|3ôt} eH矋OMM9a%ZF 5 [[ [۾kV?x…-[mlzyxϙ 3=z4aLK(..mll6mR鑓C9g[S k 򕕉t"=IIIyaf B~,?99:=.UinQԶ }~ٳgMMMzii'o߾MLL=zA$Hgc͛ondTzf55t^HɴE)ajnh蕕e|2mܹo߾duu &lڴ<$Z lذ~`X!!! ոء횚/_$os}UhxyyrZ_T{VUU-[,&&Zܒƌ+͜?}4444%%E[[믿;w.ܨƯ]tR>qD湉>+V}z:::boNJ/JXa&T\.ɓ'ATTT̛7ڵkTBrsIII122jbspqyxx0 7qssӧO|OOϟ3\Tv֍ z?J111-6L7zTkP~K+/\pq$;:u?(yp0!@ ,I,V'O>4h$0fL۷'O訮MSD ":"T'YNzm: jkkҏ 9sQح544o1[#mh#Veٳg UVek󄄄"kkkcc TVVJ[۶mswwܱcy?><<۷UUU{qqqm9rOiͿ۹$5((- uuu???6u墢"L sEEE/_b~~~...@ZRtɓ'֭;s cmmGCC~Ï?._ j$b%CXumܸ uJR-ݻ_vss˚X:88822z={ٳۘ]]]r1112,=kKڒ/v.j J5wKGCCyĈ?ap * ;;Çd&7l򊌌B]]]Fxx:8ʕ+fff Ǔ+yd#vΝ<o\.W ٸq.|)9ݻwߴiNϞ=ۛ7o2ύɜl/^qss[xKhڒKKZnҠRUU_hmrr߾}Eɶ-GzW^egg|QMcj%un2dʒ9!׋KFLapႿclENyieeᅮ?~leeE?Nڽ{عܹ$V?W222G|n>}:k,5MDŽ؈Ha9couNdl2---mmत$/-9n璨֠[|4JJ<ͭ>**̙3my|~FFƙ3gܼx<>Wbbŋ--- (..tqq={v7&QA>|y 544޿߉3k׮A-^?谙Yt)UVVNII!GDuX2B[nUQQILLkɁ֯_77o....**ڴiTAܺuKMMm‘ʬ,F4R Rի[n]rd,E.H %ssNļyBBB*+++++CBB&M<7&)3KK={LL ФKj J5qKѣ}]~˗2|!/_~}=z4pa Cbbb v…T`&QNLF__oAAAgϖmy%~͛7/ZfÇ{!1dH111x2JѰ]Ao>W#G$O5N~[tsppPQQi5VKXEGa&L`ffv'N1Y~I9vƦvsWΒ+ Ç'%%YYYYYYݿСCc;`2eHΙ7l-lRa<W__?!!!"""&&&// wn ///&&&"""!!A__Ãlldff-4iRAAAnn)1 T]]M޼y3y<~8..ӛuL28**ALZZy*c&''v@2A888OFd-ڷoS 1=Շ,kÆ 6l`8Np H+X&_+UϟO$6~!9իW^Z%L˱tRo1c6f;g5(]СCZ]]ٳ;wTUUԔtXWW mmm+++oooMMM}z󍍍=Y,q~~ ư0Nl6*<W]]ݽ{~ǩSvb2q:qf뗛[]]JMeKXTg%wQFyc@455 6l0a{ejjr>3p444z*???''G؂t@|>R _r y󁁁6lM`Vd8g'''GGT---9~$HFuJ2'NhݣG:% ñEEE999)))EEE}&//w\.wĉ{ƕ #r yB.KO(c|:'SUUuҥN#GyfÆ &&& M[%CT{$sܹ#GK??;vL6 @`X! |>0++ͽѯJMMMo޼)۷Az#(#daaѫW7nL<}111555O=\3>>h-F|'O8p)9&CԩSNNNbd$S__Oz>Lx vMEQEuJ2_~yaaa2켊 @JJJ{ݻAuuudos85559Nwlhh_WW߫W/ss^zawG y晙:u 'O=zTOOO>A{9رՕ|-UTT4|pSSӪNLF4ѳvwb23f OlffO?uX2Ν+--:u*)((d455+++w#>Ȯ:; Y3u Q 䍋;8d5q>AYӄ |hHJ!Y,xX]@ /!PUWW577s8ݻuޝf'VQQaMMMnnnnll$ݻw߿]]]p8b a=G"H#N R}b"XPPBkdjf|~~~~;8fo@!X,-----}A yIDATN؀5fJJJjjjbp88>TUU(N(())ׯSQmZ Р:I@ hhhpppDG԰.p+4l 6GGGLtU @A6P چZw$wS1-a&Om۶A?FGG?|0,,lĉw^f̈́ wܙdoo4l^Ɋ0d?>qDuuuuu'>ublee"K.^zIn-u[  61-i ̥jhhpcǎoQTkիcƌQSSuww/,,#GcixWho͍}  /..;w蠲2>95l;w\tiiigϴ=<<Ç߻w/==ӧ񑑑%Kj,UKcaxЀc77#F >],gY%/p8yyy999QQQ.\8w… ⟦IX2Vr -KӖ\4~PRR|}-j޽;88877͙3fg: @_9;gY[1'^~ݣG L3yZmmmnێqqq#Gҏ 544GLry&bov_ ,SxO<{ݻwnݺ]WWF$ rvYY.93P,qWQDZcǘoTkMԻw$'\Xvl(V.ZA4667$JUco>vnzbiMh  SJHHm6w ۷o466b@$io޼)MZZСCvvviiiB'N5j1cCCCbbqĊ6V4Qmd4Y|yhh(iKCm۶ʭ[ jiib3/ӧO#""M駟8p=E|rILףs۷ozH]]>ߢ֚Pmm޽{ǏތPb)g~8=Y7NqgϞ˔PΎfc@;i?~|C?Ԭ'm۶XB8lmmj$b%Cl,SKuB//6GFFjkk3**jΞ=|rɓ'Xb555%%%׿䞰X'bTrILףsϟ?y$??_MM/ߢbihh޽{Ϟ=!iO\LtI&=z 7oޜ9sfҤITwѣGpp_|AxbFgvYfEGG0Ԥ'?Z8;a&J/-T<رCI7_`+**˽,X [6=xSN OY!&&&zzzrA0T;J~=J>SWWߵkΞ={Sڢך@ x%K|||ߘ>THe){WkAvlvEf:֭[lmmͧONǍ7Ο?rĈWiآ͛w9R$7qRXXتU.X&E% BuTe>ݻw׬YC~f͚wﶰ()|q==ݻwEEE\.wرr$a&Sףs(\2Z ~!.Ǯ %:[}&LcӟvZ=rf:΍7={]XX!mii蛓k׮ݸqիWr9a#صkʕ+ccc:]ׯ^ZfCq _pF)F+a,UL MlMcRGXg1 #ڲe #=<<>}Ԕ+0 ]x144tݺurAhbT} 0O>£樶(6sLckk[VV0GȡG;9QC=NnomgVl@"B dg ,xٙfKbѢEAAA L W%jll8u?(yدh.fX^K:.mEBuENJAh Ȕ!N@]GB-L6P886PDAV-[y %N9  *( qְ^Lłl2 tV["*1ޔQ@ca@ьvvoaC%PJ4l Ç g@G3}be=OCPP>fyoIu4l(@V  a@hа64l 3A(@5'n`"v  >$Æ-";p|M\ܝy"pWCGXΚ1hPP@ΦLq%b4ai"o$< ˟0V_{u4lHH gf7}J֥g`G,硭:d}{S__ dxȺ ݄{δ 3v577ع{è킾Z^[[  @EBEٸ!o "=rP8(~R򴩓闹kwxIII\[7A/_ןNOy4sԺm۾  PW+@2(/cFܹRWW~W~vj]]==u뾾tr\M[IIIiiᷛ7gϝ wouu˗܌E ""l&$Y[Y1uz.+/_fYYۇݯoRfΚ3j[q`QQ$il8]VV  @EBEd[y؈1ubFpzCjuuu yzzzn7}nFrW/ng=O#efm 9,xe΋|>fmh^^~sssA_-G ""Wt YL?zioxDQ&&N4n!nɓė4HWGgxq. z/j 9%f @EBEEEhi"yM߄oӜYjjja~7bw1}S,\2 @ /f<Sdth"tYa93"H$zTw%BE@ERIf+Iت)ru7l vn"66] @EBE"4l(@H '@hа64lpZ 0 hP  $a@T$T$PDY0 hP  a4lh 6@p6eg'<@'4l(@D`0eIb(T$E('IENDB`PKs#Lz] ] -Pictures/10000201000000300000003048AE5B40.pngPNG  IHDR00WbKGD IDATx͚yluμGR4)ы6,9*R-P*l,+i9AiQw Wiq Fn\^buE[ɒBUU17q7s9c#1e;lwhXaŠ ܆+\g-EX ( j:p5`fVX!Y mnݷ{w6omͺu;{mŤi >}C^W@@"'r`>~ "(*x8q_?s@qՒ2Сy__uNr/lWyUz"zy柿mRR*EJ(XkQD29``ͷnػNMMN w ؐ]ۻwߟ=~juQ[8΀fsUIhEv/j]~lo YJ*!sOlpSdž8QUS㜠\xQ+> ru߇ &! {ol۶ZxK~4rQ5(wr<Qjb^W=ΝQd(EU}edd]H=4jSBZ-Q[9^&50|^~."KI$E"f>go60f& I ϟ:y),)T{s-i;O/IB;uIf}o2c3;.ZRrQhx'UO*)w39~Ki\ {RiFhf ?^ eN@|駞{XeRMIq)mh;G4ɋlE,`EkG2F SXxӏ?4<2DI% #!E}T"Aw3f>0 C tN|hr!h#ǧ2QISng/`Ȫ`K7N ><4-GL/p_/g$S't{O ^p"Icyw3NUH6B*u6md]ЈwM ^-` hY"8w_|oZ&#gH}BwjD\2KJdR)”'#^s:"M`0XvE%^|޽ѯg7]`Q%(gM6ej<_k_3\@k_"q `HS%2-"ڈՍO9vy> _ ;r#uh\viō poB{&DYE}Xk R28CN%h"P kQ+bmȷSP~dL c $fvMl9&jtc_nyꗸ1f*$C\fc6h5W\m[zHq_*5Oyܰi ׾HC\B-?uxz_D+625z Q-|{V}VB$TkmZm*ӃLk j4fh* ı~ܹ]9z_jSu?VoE5Aõh FM'jKrʭL7mb'5  I;9O2:Qlʡ]/ PȵzWjҬѨMnHRG;qiAz$zM7_S`g] B2K8%*L a|L/i4?:rzSUQ٪#M*xTKP[W.~]~螮U+{pITk;VkmɊ<+@gM+`wq?l*^3::::ah-Q LB<7l_z8ccc9|8Yhf|<WadIit9\9䖿7Zyt9r7ˉ_mrYx/ڥ>1WIENDB`PKs#L )p p -Pictures/10000000000000A100000068EF4A4E38.pngPNG  IHDRh 7IDATxwLo ~`Q1AQ`D bTD6  #Aa 01(J#h@45.~}|={Bǵ|hO{wqoNj+; 8k}9n 3!4 X;l[*lmmQׇʠ_ruuC';wnppz'bc{{{srrc``` %%E__ =<<^JnݺNX1==3)ǭ%%%YCC(A}}}ZZZ 1_/^ Qߔ|򱱱,h*ySӧO7Z 6dnn~MOOOx$ mllx<?`!,, 622"IKK777Qٷo_fff}}6 P///T2 b䅸9 @;wzabbׯ[nB==(z 9rd}.0+cccr,FF_MMj`;f?")2ٳS _ FR(+W9A[=00L<*E͛7+; v`SիW?}T-Hw.//߰aQXUU͛EEFFر e}}"V PF[!ciee7nr\kkЙ3gR3Fݜ?~$g&іH S(#9۷]7pd奤Z 199괨q-{2"$KURRÇ꺑ё#G9ǎn1<<eI+cvvvtuu988Çuuumll$ Tg! 3W^`\ųRP v~c`;f? :fF"\6;I_|>y.// qhSqpʪmmm۷o'JRSS̊N> `bKKKb!2Yk>\PP@kf LJ%&&ZYYM}b2<:: ~-Q>00211uOOσaŌ 4 $-8/VC ޳g2$|ŋ;::޹s*|T! <<=%zC655利 1ԩS Zcr%w/^6677wӦM h$ Wy(?VrLLLPP A35@ 7G lc#BMOg. \"b2T+uq`;f?1v~cY MB"?&tvv?ёѮ+OB;و*"㪪%K:EAuEj>FT@jkk=<<_HߴI }}}Dgggm>,L)dr& "EVh$ qEE1B**#bC&Ǖr.fm¿_Tiii'%%ݻWSSSU1$FTY]\]]H@4&?BccǏVOlDqMM֭[g̘:::nnn4J^2@T>FT Xe; i+r%* DCC8$lD1ç1m4Q">v~c`VƁa*; kFqIENDB`PKs#LS^^-Pictures/10000000000003450000012A778F9474.pngPNG  IHDRE*UlDsBITO IDATxyX7!5lbdQV-.-mŢ7ZŢjEEJKj.U(P,(($* PY|L;FC>}fNLΜP$ BMR(oT !B Zݟݽ{ʕ+SHiBi%ZK-X=zt$eBi6>o=u… Ϟ=;zhHjժ~y(͛Y, e*QQ0!!ΎFԀ655544d$6MG׆#Rƍ{miiy7ZXXXZZ^tłQ"=@x…Ct6w6DB!זܞ={C 윜>o``b 2gZZZ^^}ڵkeQQ0333''G(J2e %,,|ʕ+555ށm8('OΝ;?~866v-#H$`a@@@tt˗/Ҳ9B!tJdʀݻGlWVVX,2gqq1]XXhccCXBE0Kf&i4°:<{L"444HoXPaT2cgg#B!ArVBٿTTo6tPחM E,9BBLUܽuVdddNNL2a+]/u~s!tQ駟ܹ߿qFHHHPPPIIP('-]p̙#S ~N3 ܶȕim0m.hnn^XXH455bH@=Y"^+5kN2eJJJ B8qbEEի<nnn^9sfttL +WTVPe˖͜9ǎkU27Y66 5jԫWNCggÇPvAEw:tg!Z=U+#V"sxCun/B!ԁ?B!Գub8 BuC!ٰ?B!Գa!BgB!fm-&SB!M^Op[B!}:/4B!pB!Pu!V9B !V9B !V9B u`ŊLp@ pqq #_rJzzzMMw`` UUUrss^0/_eeePEiiiyyy\.ӧk׮%9(!BPzg|yyڵk/\?p˖-@{h+V|>+|wwJ׳lbBTWW[XXL&lmmSSShguaaaӦM#U"b!OOϲ2hAE |P݁7o'PH$OUYYq?#==sٳgmll@__HH$bBbnݺC<$Ȝ(rF566P($`0vBB!A9(PwB[s$KK˸Lٳg'&&9xBP$|}}CCCbqmmmf+++oiisLUU՞={-ZBH7diiA.FND!:[?_~zӦMÇ~5$$dΜ9ƍN *)) u~N3 b K.Ga??&X,TW"K8Μ9s?(^B.-Zennү~!!!o]rĉΝ#_grrrDDɄ Əb ֭۷<==:uʕ+>Bxxx 82::HTP7^BN=tA;Q;݋8N+9Ps,؟F!hJ ;NPo!RBVX!P'.K3Bw;igDž &L^}m:e^;ONn gsڱweqd8>P'c|5_QPP8/;ظh~C}]-fpBHk@JJ jqSLjgx/9&4}}Wsp d]u7vBS[[y)f͙NF9!."ɽfp{޸.'gtgΑ)l3ؽ}{݂YsG=9϶[韶, R=8T6zu㜏ߝ6 tش3'5b=͍~6m|qAB8˿}B!Dl̘1*j2>A -޾|[dczݗ3rO #ߥ0L183o~5W,L8q=uU?=U J>6w_R?N>'5͎%W ut;QP'THOۺ,?zaKޛttfB d2LfpppCC**"veOJJbt:}ĈyyyDH$ZjU~l?!!ΎF{͛Y, e iJ:8d[T==~Z~3/I&2kD,ի/ܢo@X||vz}vCπɨw'm8|_Č "^-- v@<Ĝ T>y"q @ڂ[2/SLwPTvvy1|ڤqk+UG!M X&55 ===A22 Lfss3ϻwwwPtEEDqq#yzzIG+{_754thnl>nh㟥wg\0y٫K?~IIa̡]F ^z@tT#ǃ߭n`bwX2ڈ4{qχ2S3\woݨ}VM8 uąQ5/PsĶ@ hm DgrwwwgiiZM9 {{{>ߪBko~6OwqG.\t=Ҏo?|RRhͶ':s8 (hw6acH@d:?.ny4K;w8pi.vBsbX\..--eXR "H"4-ҲC"D=T'~fk~V_ϟEW՞INOfQyQůyVu(>B~L* 2a$o &'_D{P  U>M;sr#t毗_U6"gՇc`Zbi.yA7446cӰ7/B+<?oX$ң~mnїI;g߮iaɳ>%?$RqO6M '$B!Գ!V9B, kuHW뮵n^<{pgO% ~!hBsx'fjA¹kwBZ ן!xQ7neM3n8>J;r+i+9Oǫپ|}mz}2cR}:J){3mmfhҥ"v~w@R{TAk Tx-VpBHs:/4zyG>V6{g?ɠ pG]0yvon^GDvN>P؅ʽq=&ПG}9+i97K9owhCY3Cro\Xaj1Vtgk$@@s}͋)H?q"Gxx0 F͋g ]$bȨ^}Y}"H㻷K YQN3᷶UBZкIٸ=4%7\?}S^FZMUH$$zLw囖9=̀abU!st-/( L,o R:*z8NF]q}b P"Qsc߯JZw-663G.\ :*pB:jZbaˆgU5Ղl~'z@sSSaW݆ţ754<*{uLfz@bM P?|_P|,JbYB UMʾ1I-T?-?*M.4~v:jЎ%S.~u=oMJIx9qf,Z*M̘+ q㣾;"4fфDJVB=B]xg"mGC"Ο!xB!B!z6?RRRX,Vg] TQ@J~W777WWs)΍euSNw(B!ԡYnݺsο+11188 svPS6WVV6f̘Ϋ9!BH6m{xzznذaӦMK %!!ΎFTD$Z_~FFFuuud$6MGGP(dq.mjjjhh%f#7L& nhhPќ e)D"R GcM(;!5ƍ}Gݸq Eⲳsrr|+ȗ\^SSD"!yʔ)G 0HW(...**xk֬Qќ:e0]a*΀ ͹!@FkllwE"ass3P( +++%bX l]]]绻WVV-,,d(;z6MIg#wmllRSSӳ\EsTU| PvPsnAH$*8]o߾#vСCUwɡ,XLPb2n݊!SX\)  nSfYe X!.۟˽qCrjkAF| A2vah֎L=^;"P[ф?5nر+{cǪ.beeBH$":4j744L,ֶxfX\..--eX՞* -%1~B?I_0iCc R;4UD"{Nyo"љC!5nŊVvZSSӵk׾K!!!AAA%%%B0??_u~ssBrt:`x`eH~~~aaaUUUt-,͹ШC޸~|׶[4~5۞o=aiacm7\sg/D7dN{{bʧN4dC,ۻw%KLLLBCCB+W8qܹs}||T5j䈈 &?^Y6҆ X,mLLGڲb3Ư҉ e)ӝ;[776[X.d9;m@igNDr[>B^;?I}OE޷KdL[3opSso\Pa.>֥_Ξ2}=}U3~45u*]+ 11Czt˚v5m|.Yk=ЁhHt}s청(T/ݾe#ߝ͟q׃:mt|,LU&s&]ɔdфl$]09.&#ʈ95P9ʼnNXiG?[?;i~:߮KBD22+v#St#SSNt󎍽L0"ze[ X9mq"Gxx0 F͋g/Lrҙ{|di6X,D,>{SS&8 6Zv?m>vN>8ZaPӂ75M Zrx +*NgK4[Q :*|8w;tD"9^-𨰀x\t]l2N Zllfr}Ju=Ҫ_wqWXԬBg9#A]BK9w}Xvu<} >\{Z\R~:EYXXa6^a16.QݫMo{e_FRkUP_,SU#6Ѭ纞N Yym3?Qr?w/gO{WԾNq?RPu"Vy3/71cr>O|&y$霸?3-CQE_Lh["a[Fժ=RRRX,V?VtvPk~kKY/!$#>jVWBILLLƍsA|mJެ:eggf!]S#x^g!mBC\ȑk}1 IDAT#[ye5*C{Ss AAAL&d744 %!!ΎF)7ofX ,hll$I_ɍ$6MG`I . :N{rMMM ܼ|}k۶mDH$ZjU~{PGR_>}[ۗ(Y*n-޸%FŨTQa oh+Svx3DLkϭ^Y|)333''G({Ѭ<.ӵkJWBu>\^SS(! ::˗iiiYYYd֧Lp@ pqq {ytt{rrrJKK?~L$egg|x!-P]]aÆaۗYxRXVE[ #TxCD[Cnm i|`cc@P***l <==ʠ(Juu3f  6mt [V__fh6l6󮮮+++vPsZm猍ǎsNgggP~RvQ=NͰ QaҤoh2(?oHihF=== UBljZ`0v[nEFF (X,&|RL'Ndf9-œn_n#oD Q,Ianh2(ߟSfs,ۥ,KYNlѣϜ9SUUgϞEn744L,֒7,++RxNcllrÇn=999""d„ W_}5dwww{{+W8qܹs}||*B{)})ݬԿ2 #TvC ׀s=ByiV͟Cs!B:Bk!yxB!s ;X!j?V!J8>B!Գ9!J8>B!Գ9!J j ۩(s:/4B!p|!:ԃ`*8NF!~!Bgs:/4B!p|!Bgs:/4B!p|!Bgs:/4B!p|!Bgs))),Դ3@ӱia"BC5>G|PTTԆQ:y)ճisCMwlQ SwD"H$\.wȑmhIY+:l̘1W鐳B!Ժs}􉊊#vL& nhh /\0tP:fK$KFPl6N1bٺ4e)D"R GcMDUV߿NirMMM vթ_SBi͟ްaðaÈիWWTTx5k/_LKKʒ""Fd*WV\r%==;00P>0e0]aqqq999|>`ŊM+<)Sp8@ \\\N#oU !JDBcO?xر;wtvvT'''(,,,//M6N]eQ(j g22(cP>+|wwJz6MI~sF݅uAEwYTO ĿGdS^Y?F566P(d0D7(+++&&&##`ܹ)MY~u"Q?pW__ E,T`oݺC<% 4~sD4 ,sH;k9rREl=̙3UUU{YhQ;k*XYYx SBk9??*@p􂂂&X,dJ_[{"QFY 2BBBJJJBa~~/*<ׯ_t񂃃N#oU 8k|!l۰artttrr!ҧNcllrÇ˔ 5j2brJ'͝;G>ƒMNN0110a㕵N#oC k`!P u0n̿2?'O# 8sH;к;ԥpĨ[Bi"ix>E!Ip|NQSiÓB?ft^g!P9:Bu?G׍'UMk4 ! ZN3iNCҜC`O!P>4vb5-Bu khh b2L&388HP(IIIl6N1"//O 1|%0""hժU322kU vvv47ob,X(|H+,rMMM A!BCCϭ^Y|ʕ+555ށ2!(^ egg|+V*̜PH즥qܧO]Ő),;e#KXXXN! !j?D"P4WlllRSSӳ(Juu3f2>+|wwJè"(..vtt"OOϲ2HTaee׳lrNS֖]hݤSkz]M4F566P(d0D7E7#<䮾>9%)X,nsBPE69eoݺC<&S&\94trvii)&x8NF!հz(C!s߆ m3B# xD=!E{C! vPs!ts:/4B)GB!݅=9h@P Bkһ #!~GS_X| u훌eGzDBEtq"`ۗ/z]r̹NZJ׻o!xUOmaS'޷[s82Qrh,a{#p|!bUd?V{Gd:)K}?%{hkNyq0~zlڷͬ=>N֐~>v'3-էAIE 7ӎ0?]f/]*bwg$޿G96j@?9ye 3C߼!BןӬ`4HQ'){X}m̛_5 Υ&gcqݺǥ\:vn0tAtL=?N>'5͎%|II꽇)9x`&ܼlZa czݗ3rO {tvm?U834,K?y̢wƟ4IGwlV}h!: B̚5?TH&04$*TD܂{8g)"paԆ>V c(8Cۘwl[|S-.3/2W_E߀5poȗ8#<< F ųjOIb%bۥbcO{͙Hp ؘ߫/>sg5E!$X, aL_nAz (ͿK>nߔVSU% Ŀ?S҂= #D.a~W| ]F^EoM#T%K֯_C$r\oooSSSCCC///@ zD6Hjժ~ׯ*$6MG>366ܲe|aHolܸwޖO޸qK c*ZQQDZ˗/W3`//T8wsڵk~UT0BX9{ oX$jnl$vYQaE-663-OƐf&]9\SҎln.\K꡺![SSCl߻wc0fff111'$$ښnڴĉyTTdkkkdd~"ѣ }eX;v쐯Pkϝ;ܾ?9{,zyyYE #DD{P  U>M;sroեzd ȁ榦 äj1/Ϫ6.Qݫd mfhJ%*yVu(>B~L/}˚tCCc3&8 {CA!ԹK,iSwwwy["##srrG E,'Gb1MU4QOOB!ل]t-kWW{ږ:88 _Q爆aQgЅ7a7ٶ5ѥoի?3?>>g2/_d2&y󦭭VԬ߿kh؟S'`///OOK.]|y&L~]eb'C- p&$ 2D$)Ům[]1N,?}o"_~M  &3;5'$$$((D(ׯ*e.]ZUU%8<2aO6n8i$ldddAAArrX,?ŋ5nB:S ?.|X›N8{nbѱɓ'/eddXݲgϞݻА666 К\uu3fq׳lr]emmmSSSUOo~ dFBua+=o] mn"LDžvzC!ZOEw3Pٟ=|qFC ӼW~~:O/M6PH$ZjU~kpСCt:޻w/pUevթ_&x1J899)SAu P( vvv4Uu C.;#bۓ>ܟgJ.wɋӂB;(J֟#>d>\^SSH$egg|+V˴,"qʔ)G 0S[+55Ν;g``p9vڇ~,Neձ'0333''XUv%!De5g>Ĕo=|PCVGAQod6}yWWW2U 0 ,,lڴivvv ےYUY]eB7$Z… LII裏ZPPpYf}g|8[vĉ+W9DUSj-fffgddZ͛טũTk $;s=!-|@/[0+M}Uwƶӗz\`Ox;M[u{߬]ǢIce#r0?W|E„sC\.=&hN\:vnؙC$*%%buF "H"bsLUU՞={-ZD$:3B1x]v9|ȑC 144Tƒj5!:W%2-T?-O?K$(ttĮgIR(Ų΋՗en7 b  SE"¨ }&Qp2i|N) =Z5Ղ?S醆S|Z𶸦ϣ7 ~cM_i*]$bty3"B+W8qܹs}||L:xʕ&,Ӯ:\^x1qD4iRmm-ٟSƒR2j`Bu C8˶} /TdP*vPq'' MSکj: u:E~\GGG[&H\Xhhh b2L&388̠p 1JK/Xڍ77ntt孞?z/_JW]*j*tΝ3fW5{477߽{wD)SJJJKKK-ZDV(Ӯkm Ҝ$Ɉ#]"8::SAu ɯQWBk[mGUx\t]8{ oS1v~BkթgpZ{7y:LḪ]Fdzj^ իWWTTx5k֐/)\$_*O<;w.qll˥+.?BɄٚgb_g!-U_Ǽ>> ӂD{P  U>M;sroR( 3 yW0AjpNu=s70ػnUQ"as4q0)3C(T*ͳC*e?'ZO'$$ښnڴĉ`}۷`w{`0bbbdƽ䥤$$$׏b%&&KIIIFFFwinڧO]vܹsh﷢/J.,ц7 =Tֿz%MLC~?\ Dz%])D}g/ W^{'vϾ]%ͱg}Jx.(HG{=ܢ/z? 3e 3Cx‘_V:׏ޮbVm]xO42]__ E,xb7.knn~֭ȜbM~"|.FkllP`0ƔWLuUQs:/ӅRM{/hЅ7!џy󦭭3Yf;V"dee9r3̗/_2L֒666ׯ_'_yzzȯ,l Tx?z !tG' kª됀Y-ΟC!Pwjr)[XիWD k6lblmmcbbZwJZ|ުCBkM{\:.<7oB>S ^C=>' nk6 A!(@zd2N8asNooooE!q-کcg'g;jم)=靏2-46?þM]]bx<Mn(=Ub4g-wܭQggΜڳgϢE -++ŵ-ǔ/s!Ǡ# iAm'Ņ*Q9]Qa+,aꔵc/y 0{e˖UWWWUU ϏHwww߲eK}}}yyyHHH/]GY[MMMbX慅^~M  &e<|ފPHleTVq$:=9cɦ6ANţ߿7#J?UTbVr_pª'Ik#Ubsfzyb['3Cbu̲m)TX 2uN?t7F1iq111e.^0ۆ ,YB{9sfLL w-\0&&jŊ'NPܺu-Z4`SSpM:Ç·&G+b(.99yٲe3g߿DDıcfk1~y}-:T; = HQ@z}6ν&6:8M]EBx((*J>~dŢ]i8ʡP~gpH{7r]-Y0aLx" R>$VEXf׻LDLpĻ5M$2zTO)`['tmO)_{>ў~~O{6dh4WyM(p{VP;ҏޭ_WwoG)i/[=s+zzzl٢ BPh/s+۽{#Gfffjjj HgI?`q1 `1[0%%ѣN'˜bL4a~n[9sE,*92@m W_,_DžĄҼfVV(|f£*+oVVV6448NaX*++w̌zRtz^Zuuu555޽{&i>C*gG ڵk _}cǎGmݺ511|y}%%%{Rl޼OHHںuB3| !,">}<2B>QQQ?`sG~T,gV @o N2 r`EcQzrQ!:PV::|jQ#_ZZWTT_/_kx\X&YZpلEO>Ǐ_rT&QO@xp&Z[[[[[?NWPPpy_iI՞>p RYOÿK/eff^t_̼v z.++[.7o޴Z'xVutt4..Qޫƍ=2fYtjvv6$ÇN(wܹ~_^^nX(..nhh*L&C)e&%Yhtt?<~xUUqO?t @tCƯL˻{1 򰱱1rAy9996MjrCRDI@'0m|||vvvjjʿ3τ#&XzwE[_y_5===_KJR$66viZ4 LOOh4#GڿjV$y7RZy ٞ3auFtzo}ʕ~Ang,Q=gN,++nK큁~ppMLL((R<z?/_\RR֮]W_IVTիW:uJw^%///66vÆ /^ WsssRRR_vܹSgdd8qB^PP š5kN>J)JUJ_@!cl'aV+^?@qP79uP79uP79uP79uౖ2Xnx,#M  '9` zRF1999>>ph9iڀY(~9==]]]&zMMM &r3%)3gu:ƍ+کn;9!ԅzR+//X,p744hN>B);|EΝ;ׯ_[ZZn߾mZGGG癒ƍ=2f9B:xfEСCs(ݝіPYXL3.+===H_&c٤vooܟw]=22b0'ؘ/BcL,;;Ojdgg_jl'$V蠝 I tuu߿jJ+}Z76Ah4'66V>O>tx`^ɓg'd吖y+ڱ `UTT| vܟeۥ(Jt `0xQc1NunN(iiiҲ`ɡ:d2ٳt:"{<{LDX!UVV644ȃ+++Ï߶m޽{ƜN|%8!TfIVu\לA֬YsiBܜ K,j zSNn{Νz>##ĉrmiiˋݰaŋTJIpkұ攔vw\UUURViytO[!ӳe˖9t̸сVXvv}H`" PQQѺu&''?ãG.}\_իׯtΝjZ9n7eee#0&yP/9wa'C4OBzNÇ?|PNݼyjz<uttܸqѣGFl6ˇs:(޹s!wܾ}#G?~y֭[,p8G52O*Ŕ'{zz%.''_jl6_=4<<аIm%|8&{{{Cf{=d`.+===|>a' 'tLLFx;gԋVg0v0 sEQjˍvK9r̦M۝NٳgwrLEEE}}盘[i^sTt:RYY~m;66t:mrrrhhnL&Ӟ={8JǺ̌zRgZZ>+q:N׋X[[+ 3Q(kBnٜb6nԯts\UUUz>##UZ j zSNi]t;wwĉY}EEE _~: Yr0FDnlٲEiTV+ݻ^sVu=z4sa@ݘP79uP79uP$*IENDB`PKs#Ly))-Pictures/10000000000000E7000000661F7FC9DE.pngPNG  IHDRfz IDATx}TG"I8▄Qb E$' _ਨTDh"jie$'ꘚID;AJ3 dRZ}ݦawgg޹{ܙǟc0 G`j့nwߵM4)((H_ӧO߾}|0#Ҫ]nرcϞ=[VV&Z}02,j/_䓰P]] ܭ[7ÿ&** ذa9sf0FFFRᆆBPmpppbbΏFΝ @ PsyDXnݺ%sSO=uŚݻwWUU͝;W<[,GZ"w׮] w ՋPރnܸBjj*NNND===eyP;ĻMMMR2dO?ZSS5xQ \?㡇”dzuuΝ;c._ _ ɞ䓈?c%}Tݻw{%k3bTPP|%7$IH@\v |.T+_$h||| gHʔo䌼— ?HZĤBAT ߄h7W'N@3j%\fĉQ_j՞={8۹PUUuAHaΜ9p)))n۶mx tC%+YGիW1+ЛXG!Sѽ)SZZZS"qb <ֱ1vZ@K1A"!̞=6,, NX+t M*GLR:i 4_ƺ8Z}8#,k|2mҀ g%&*D(n46ɂSw+Y8t cߣGD/2t=zn޺tܸq...+ ^ss!|-Ĉӈ.l"\%˙t+۟~iSXp0!7xCQFa(qȝSb /H/ -Z.@80(*Bpb!K\)ǵ c6D78kj7:yse:"$xٻwo ps!/6a\+x$)1b!򷃒G WFhՉki ZA?SVVa &HVpq 7o;_$)xef^T2tP?TBvÑVcjjMHˈw܉ܱchLI|7&e/u&pE)_a`%KE12%8of9V!0n~?#eAjX"%-Hca{a?լZ _mժ؟vq쫻ԩZ }]wS uT˰?jS-Pjc4iMT-xGn2hZi&5BVJ7A1Ο?/ip႕[b ԬZZaU9'Nbu`몵\$˩QVRmii O6:Kgnjj:u*y8q׮]Fm"YZVpdgg566`e r X߾}(cRe R VPmaa5kBBBPY~Ç/^\UU9r={(%СCϟ0aѢFۇ\;tɌ"''ӧOc8^{?''~h4iiiqAh3;P7|-Ft*p'HE1{/tn9DBXcVH"%%;vXee%Zhz#FRsssj%E(jsMNNƪp#1@/\pٲennn48y"""a Y1h@cSI13g$FADsa FFF67740YGgA...C%qz/Jg|O yL:ݝ\"nj >'@8A4VkctLJJqz/zڝ%㣏>2h dy$E!!C<{ljĆYPPG3BK. ݻw/Nm۶ !uuu{'~QH}8Q8sQMW^|ňsSd{Lp1B F6$$l޼ylsaaZZZ bH)_b3|Trb1ctpQσKJJ!xKPmVVvHfH'>iH,[l֬Y(<3~ sϠObSά^1x nL_yr`ƌMA'CǪj}&N)#ZC%f=GM)g(k^n">Gh-t;JYX( +RWjU+Uyo)~׉V^.VOSZQǯZղ3*FS uT˰?jS-jkjjma8VoÖ!.IENDB`PKs#L)$c$c-Pictures/10000000000001FB0000016512243A30.pngPNG  IHDRecֶbIDATx\CTDT:=;oa'扁bgw(a4{[웼/Y睝}7.VAaXet ӄ ¨H$R|y''@xX2NBOa =QJ_(ae{ =!TsVFUb糐QvG?Aa;'P|#P(>ZXXLO& "ځO>q*k= hBWC/Gbi.l1~ЖmnAp֓S?&GN8YBBУB ೩U~p:}(kK [+++ K % B É)?%#2>>^"Bc>/o}1*5{+Kola))La SXd8+`0%&%Xsp+@9'uyg_+}V'1OHI8˴e NJI_+ |Ɏef<* '1ԔԔtˑ@ NܫέqfMI'IJǏyמ5666 ngu!쿔4GdRm㝜RRRP(80&&&z[f T\9bƔLW_^UrqB*#6Ri]-, =q"R,^EdOlek9)Zӧ/?j?DBϟ>B=c?Yِc۸6AcL„\n7w-%&%~[+#''u>x &VP hQśk+[7^} ϗ+˄~ @CsƬo{jqBg~` [Nqܼ%jG/_dPக_nsL[j]j΢n?w.4珛 ku;9 ϗh3[nWnX$ =B[XOԤb)7SS~XP"*s>/cmsd|n6ojog=PBG>ۉؼ!,O61)) ac@bWTUSdݾzЅlLg%sJû3_هן,7NнYmR_'/ZZgRd-'n$I,9ܹA.ukW'_U?%K{h"GX7;Qx3}O_R}:DkU{^Hjm Ÿ*k% g~bb"=@([& IZ֧?yNs^\4>G\Ζ7osG[XXl31hu;lc?pcδBB8~]{"6YrW)?NK~e9.^g3pc7ngiSƞ{RX[u27h3)G˲nm9Ǿ5oe1u=wp|NAz!ve3Շ;u2k!eus³3ʠ¸:OȜ%p>G1>,y", %-K܇U)l=*i?VTSgz~16NvƐH8^̔PFdd!Q8%6Nݬ |&e%=2_ϟ9̻g=?В n*}:Sј 6Xұ+>aᝮn[{i+6,~%9[n| ?{_p΢򽎗ݹwqDBPrͧ˒µ˚57'`G|Uù[;K,dߏy^-:;nX7L;,-%ɶȠO kHIY^;w2E=~U"W"Id*OHtɒSSd^eXXxur8:j've1eKtvHx[ma}8Y"<5L7pFb  uv͟(: v l1[ށ#B϶*sf.%x{jZ{Q666l1Ƅ=y%&}>yOy’`lMX}PV_KL㛥Zι!r!2Z˷_v=gcR GoJd—C_vv)۱ 6֖.پށY ,ic-bx|?}ЮmoR:\W>>kwGDžS8kX|HsΫj.xZ⿳kr»[!znu.ps!n jWW˟PE+n= UۅkmSOō57PDr2eV.͡Q ˯T_ TdWՄVYŤ֞'/ǯJN{O]6X`J~޿޾dɒ...lAqqO= f-6(lZK+Ko?å?O"[>;-dO4oX[;G~^.vKax5MZtrv f Y?MOi$Hyܩi.OZtfͮ=ߴtLY"3]ᇞxmvYr~K܈G9Ҳn esrٻ9]Vb<[ >f ~;7&zW 722mƫ|#]w$s2W'55Siʄ Ѽ\YT>żw4)nhÿ*Ѧ=Pt WA2Uf|?P>lۅ) UdM{H}gOaB^j7?ŇcԲBْ{.**˗ѣRJA_xQLO>ݺuɓ(2kN''LZrCTx—U-l曅qgc^Gs&)?]DZ1R;,SQNyv3!#_Lp]0b#_b^cqy$%% ǣ_?sp뉳޽+҈Cl|Ғma) 1N9]r]!هC_ޥ&%H,lJOVxaxopm~2+'!TXŢ%GݬTgne-S|8ܼ =k/JK㣣Xǣ;w@]]]sȁq`p*u*NL5?f)$+7r QfzZ(/ gbneɲfu )XQaqe%Cɔ.,BY9T77vΝչc֓/'56sR0ʬ,SR1)M~ʜz|{2Sb*K?[f).~R|d)N99doVe k9ȃ?P¦,*xrԠO+d[NJNI>ߚwv{VJ'z Wuvh֗yPI>, PXJQ&쯱>yXdJ-8%B$2}s6H_n]>,+wgƬ<(~*{?rږ޻d,,=Q^Ä:#zYWBT)>˕yWA&P0E3 ?%o.qyD))e"" tT񙴋ŠTQPrrRB\\tX(?ӂ %HuKh.J_m?g5UaAxzLhaY;AӅ'0H R| s \ '0H R| s \ '0H R|#%_op2a1 B5fHՀٱE֬Y˖-;dȐUftB=d٬ WO8C7o^KHd& )H$"EL6UVL񣣣[ٳgώWJJʭ[.]?~+Wƍ7 8ֶ{g_Wرӧ'%% }`[D m "k4Bh_ TA@Oa.A A)>A/ſw^ō?%Ǭ ̬!D/1bĠA~'#OI1+,3k}E񃃃_>o޼t/^Ʀ[2և^ cǎHƦ[2և,<|/cSR}ԭICfYC۶mgo^rSR}ԭICfYCҥ&0d4d4L)fk'0H R| s \ '0H R| s \ '0H ̅ S%%$$$55sԠAvڅ哏OsBCCwyܹǏ͛VZ -Pceڽ{7J OLLD)uA)hY ْa_vmu2>|hٲOܾ}{̘12W\9yde)4N)>JѦ>jcѣ'R~e˖Udnݺ={`)YْY3Ŋk&^zb'$$=M6;vPR= r1}U"ŋcǎ]xqƍuH_=@'={6"6l4H)>JѦ>Fh׮]͚5nH|-V'MĦh`eʔiݺu5 *daaq%$f'NТY)dfN)~ppZ߼y3nܸt_0vɒ%*T`17om6oٲ3JѦ>Q̙Ԣffe֕gϮzIs bBf+LC1.\/"&?Ü9s"0b16GPw}0G-U0-]GhS-a:e*el ..ݻ3f@Xҳf)Ͼ}ZYY P|̬`ܨt ˗6m:qġCT9p@~%S`,ĀIojR}M}%!B ߣGKKˠ 1jA<<Zʕ}}}dn elܷ[0;\~{Dfsڵݻc@G0R,M,u+֭[1 ˏbȢbŊCb M? *ToNۥYJyQ6Q &@-Zn3#5kݻw+ j%=66r?k,D"(eYYcW|@z*'58k׮Ee˖jժ!;v ='3R}M}ynܸSuj2m۶92))GKDʽR,M,u+?n߾=z &n'O$7SPnI3JNNxԩS1ʎ;.]t׮]E`?;tYJyQ6OXXѣhӦ`i7Ν; +U˗7n̜9+WIYz#лwoK!49-2kmO=/E&DÇWXLA'c)|r aq&O<[ Hħ>JR~XvJ3كϧDB'M$Y2Z-2޽{7mt…/_B4i믿ى9|+W|2| }O O ]6) S66fccQN4*fA}-Ҝ0xtUvs%EdKUJegRM)DY 3ӤicS|) 2K%AjH R| s \ '0H R| s \ '0H R| s \н/\.]+WSR}ԭICfYC?k֬sa\rM28SR}ԭICfYCŋ_|Tfef!}=ټysHiR2S}L2KR5KCBA A)>A@Oa.A A)>A@Oa.A A)>A@Oa.˗ZwY&}[[[B ٳk׮Y簪a}!Ck֬d'''D:t?222ǏoҤpdaaa s6!uPX;v,\ӧCmӦܢ{ʕ+X"[lš[h~ݻwjCS4KN` ?.S̬YتL&g5HΝ;Gc?Z>oqb7n@.#uҥcǎ[l7oޤI9l0\5j={ח" ?ǜ)̝;7((\rn8pCƍk׮:u*ӦMO`"%%a]W? S1K{,߿tROOuܹs[|hc $$cZ>n:^ձP9{'Jٲea9RYVjժ *y5/}||!'O^|˗/h3޿SN֯_u-KJ$lQ0}jj*:!:eUK6cƌJ*!-g,>q͛Ѥ}l)T||%lቫm98Uت L,1H\ѣGR*Tu7WPP3fLڵwڅapر7ndh;w`vMTD2pl֭1>ã>|3gX< :r䈋 ];.\x֭:tضmŋQ0)ӣù(_d.nWy40wޭVjժ p A9J4m߾}{~ͲDhdk:fɃQF,Vy2Yjl O7o^aJVtu^tiٲe3~"+V:qÇ:0莎VCڽJ#|1Scƍ;k /;wKYq2 y|pIlӭPF "z]ՅچFh|߼yA)1K,io~Us6Kx;vdZb>Q%zQ7n7ma]~M&^LDY0g"p˗/k׮ÅNbbbL2 5tQ++cDTRt֭~"™,PgV sÆ S64 ̙3#/~*4KNoذr[M2K r!C2+ f:De'&&ӧV\9hР˗WROG"H1SN̙3-Zۚs{}\Pv0FOYs:ug.>s\KٳG ;v,Q V.zRN8qŊ|Db2Ը M,!47 y ̕+LRcT2+ `:Gv~?0p@hٲeq===ѝTG2fϞ=j(La嘠)5S~;ɓwy/̩Q( '&$[JJ &hdlڴ) Z}ذaS> r߾}K,ɞ{ӾniŋHyD:VUcfCT2+ՠ.HYgn~t#lsȁBEd #U *nFh/Edb!7*UfJTVUR02+Usz0]=a+wAN $2=A A)>A@Oa.A A)>A@Oa.A f>KJHHHjjj]9h @O#ODDĒ%KΞ= ̓'O͚5 ɧSPP>}jggWt={ &2>|xŊwA9ۗ# ݹss?~7oZj*l!w؉'k{nxxxbb"ڿN:hwSk`!"swG}*1DY3ϔi/VKN?\vma7]}ƍ:|"m兘>l,Lo)o3f|rɓ'?/KA E!NDȌO۷-[66Tbe駟?q׭[g %KdYj 1ữ= s@oKf ٲe^ԩSsέ"tKbŚIW GnӦ͎;QO8r&L8իž>}zժU9Ǝxƍ*&y`??=zpү̞= 6d}>Cv04ѭ[1!4i&g2)Su5j(TťK`oB#wI#>[۶mA`{WWwf͛P'GeyfܸqbU G-*U9lŊ.N:够r߄ j޼9G-[`ƀd@kԨQ,2pҪU!jFbB+}kժ׸~ׯ_#519j )$22_{{{uꞅU_00̙Ap:]/_b48p(9%%qFtssڵ/paOi Z-*_Vfy\rw… 'F'z$E7e˵ЙbF3 3CLPi`HRSS5j%K Bc c:D_h}l1 #ccc6w=|p wGjҤ j &w1bl)4HOglp¿d?Çы@Tw߾}qk#0`&G}8b}s,GGqO #&ۥqqqwޝ1c'f$ݛ9, F3 3CLكx4O6u$QvE+4o\ڵksq%EBXu$y+aۧO;;;1&aGO*, ~8,, [r6m:qġC?xM̚5+Yf|$  ~u|Ԅ}ӧO'&&~GÇOSO[n eERB9,SLWB̉{yǏǪYg O{=|Ν;w>߳]'8 +lm:?hxCZb~ 3gL8;w쐤$Ld*.7Fyԩ묠s#&C'$$6gLk aÆG+ޱcGh%ZIh[=HKm֭[CmQvB[r{ w҅C_~nݺ:u0cvTvŋo޼x[ɊiӦCU'?X2O aWqK@bʔ)}k#csD\KtQE^TW`#wAPU>1f˖MT` x-LG֯_oaase҉!n2ʕ+[ta{ڵݻ, wif!br;D ԲO[Q1eQq*0-zg:rz_vRRRurr# W_~ufvvvq8-, :|a)W^ !l;wDnnnEzQyN-^I=ti|8r]-[jOjP;v{711 TÜϯÜn۶ yb ңGrYLЬe'O,0+t2# )Ϛ5k:uIe'^?aVVVc[Ng۷1aiɓ'!q*rR\t 3ALx\>”)S(_<[nhcP/TۛcWбcGLwUhQ/\ںCۧs8>3ƍ3gD<3QMXXѣhӦ ? SX\D6ݻ7{F,DLbzf/*oQQQgΜA#+ 1g%zO}`oY0 2rOy)2`¹Ϝi W\yII)EY|9{[|>2-';yd mRd?i$NGo)7 ZpWhh({E3 >ݻ׫WOc094k {ݴiӅ ^|ikk EnҤ fvvv*~ȑ%K@VիW0`pr+W|2| Y>3.2y`bJDxxxԩSO4d,"S094k`?[.\8 @QN#&gXG ys7Z_8Xf.(i4ONzWVu`&OV|  \ '0H (uτ t %Aȣ⳿ ̒ ?\' BfI u| s \ '0H R| s \б+_/Meu1éS^|9>>B  _B3S&SDNJO}0Nzݶm;99]vmɒ%*_d҄cUΝ{֬Y 4`1'O^|˗/###7""W^AAA_~zȐ!/^tww7oG_0'2=06mڸpoKUmf x?r[[[X5{B3޻wܹs>} GA;w6Ba))).]6lS|~ǏߤI__߅ G;u֭;wϜ9#r ,XvutL%&&bDR` Ah1a3D&̘0rE }COa.A A)>Aŏ G΄xyy c>}gT}J*b53A)]M^mMGn ܼyB}G{fFUIKPysS|MQhh +!qUܘ_`BTTtg'ZBIu| s8vߪJ0A A)>a8^ѵ ]Vse͚|f͚gΜɞ=;.\>34t6m/_>>̿?.S̬Y5'PjHSnސļ%-TPϞ=diӦ[l?0bC;wnPPPrnݺ5p@ƍg"߿tROOu#9s&V V /3+#|7n1~Gݲ 3Æ [dI5Ξ= Sa5GU sVy!Zߺu믿ZXX@7l؀xX3*UIFx _u*>=z4][g 7FEE]r6`Ĕ/^ ߿dSN52d5ںrʳgϞ8q"Sׯ_2ŋ+Zhjpȑ{߽{K.T5D,F&NsJ$lQhSSSS}Tc >re˖a7k,&;>۷oDDD^WpsFJT S*F"E|3g2cd˖M]P4 ˫U%]Fasawڵ)S0gK^Z.\(</]e0+kT-3?0`@˅ yc'ۼy3~;Fcoܸ%B8C DϞ=`gϞWcLAݴ^ӧO>| /SXf}a .@p 4n8??ۣ sN" LaVV-(9i8~LXW\HR~S>yN'_)ureѣGjԨ"K*onݺ'ˆaa+3g#F/^waȽprr@sajgHxӦM8q?9Gg(Wi-cpeRNqu777~/@.J,)}}qq)͛UTHHd8(3f̀3g.Zqj29TZ|;(A`BOi׮ݶmVx׮]u.Lex{{ÏL#!0ol 4U*~-VXѪU+>iӦh̭={>l0?'ҙ={6']`e?߿s +Eӹsg>rie֯_EX؉2lllCu`xFxnSȆ N<[JA;;*ˁs/QKg+?ʲRv>С[#f6l̏pC1üQ_YJW֨0]=*^^!z-fk), &R[WEeHsN&ʊ=$8\Zn*L| 6fҽ|Xbh(L֬YStiU +UR5*on DR`@]4H C$;A)>A@o4hЀA[c7oS΄N`o#¬Ћ{yy#gB]p-dbT ] ' FS^Օ^0BA@Oa.A zQ(cmbxyy ctu S|)AG/~ޣG}L͛7q-dna dzLca),C1cCf=!R2F@aФYlڗѵ0%HMcǎÓlCODCna '0LRG p2-TPϞ=o+K.SRRΝ;5kVÇ5k9s&{*`&#tfҤa$GNLLqƈ#Stݻw[lӧDiӦBW1h̙3/^,;ffc\Ǐ)Sf֬YتHp0ݻw/ZѣGy:tha''0^fͲe˞?rTVyA6mL~N8^… 5<=BozUںrʳgφM.$]f&Ŷ 9~zrr2r0VFƍCV^u믿ZXX_n݆ =*#GԬZ2zht]v #[nxtٿҥK===qy(,asAwX" ykݱcaŋH$⫭!SFj׮]^'N6k֌? n4N@S`ҩS';i"]VZT|z2vXL mPÇ9sI&7nI`/)\!wYs4ܽ{Ww0888/_ C޼y)jժ3fȟ?+W}iӦƍ+['"&#cRpNaaqqq +^(x.{޾}7o;P|x", ѣGjԨ) B/'.\aWټy} ~Ç:fz֭p] .|:_m5>:n݂?rHt2˖-頕*4!!shL֮]<֭?+zuuv㙌bwa=sD"Q0_~͍[T .ز!N1(ҥK0xxCLLǧM`Hر#:+#gΜ#F(^Z5A^~_յkWﺡ0llls MI&a @һwo0\.+(((%%EwTDaΜ99 LZhbŊVZ0dOl;wBs%ylrԩ?9sE8ϖ/ˢ0@@TC.|]vթSG?2[qKL2|w* aH,Y4>/&p37l%.}h߯,+IS  lG0n285ٳ9n8a A0(R}||;UرcgתUqƈ@YcwnuũS2 DPR鬲9rZJ&ʕ+ wY栖 :YfS #2 a<A9A(E/l329@ORH3&@ Ah)>A/ſyr&`Ẁ Md ^ˋ>7l$飞a /9M; wuuň 1!3Bl͠u|0vH]AOF =IR| s \ '0H ۀ !Ssu?^68p eʔ5kONNNaaaRcΝ#F.{WZիWcǪ[aV7KKˢE"Uk#I<ݷo˗/W\yŊٲe|D7Ld pcǎ%J@t_tuqP`` | S'b~g>ի1tuYgKLLܼy3%}d^8wB ]vԩ_Ny"¨0=zt-Z勃@A4/_v wnٲ}NuJ ^~=z5k)u֥K_~EX[[knĉ| kܹsg#G.[7FÇGDD`Z 2dŋ͛ '0g'&6ۅE))).]6lHvڵ)S0?~|&M|}}/qoεn5%Ç?s ~{b2?~N&N03KNNZ*D%TPE`ĐP^= 89\rԩS'O&'}` ߱cGNÑĖCN<#}ACe"YTNkǎ+UIJJ0wvZsS>y2*H ׯ&F$bx?}4TS͛7ġh"}xO+cS >|O- W^mڴi֭VL.  YPRER id6V޺u 5bϛ7VZB Io󦦦{_&զVp### (3r9bad"E6$)<==Y 57:^^^]̃!׮]ڵ `?G{nggKٳQw Ε+Luɞ={)U$ʖn.DK,iٲe*U0@UxA7#֭;c >BK7((s|1VXy=EhO9 dpؑsɒ%ә}||/^"R$͚5Сöm:̑e&FB?. V&#GrI,rذa)pbł׬YSti#G8+pf]*,tmpJN0 s[S`] L sW|SG) ?~߿ҥK2.& )>Az$''n޼=E)>Aݻ-Zѣy:}'X߽{;wF۷owvvV+$?~<l9sfF '58tМ9s,XPbϟ#`xgB/v&M*Vؾ}F0#>$)%kaڐ,Y? 9/:u‚7Zj;v찲~zrrbNރ$=QFLGf>}k޽{ΝܹsrtܙSri"##]J ݻUTTZ5W\p[lI ֭[ʕoNރ$T%3FXL6a^vW0r3WxiƌR-(E% IpŋjރDQ֦;N2B "^xŧ27,YҥK2xrA{{… +VS):y 珈(Rȓ'OW̔~k}ñcmz\LA_(/E7(L:Xĉk֬i ,15,T6šC###!͜ўY$72`.\y86ɞ=;FҥK/=H2r&g/V+ 4hPϞ=xWxiT\J>=}Iu'N9s/п۷osZ+ݚ YW) dɒ5j={ח)ў4mT'Y*..nȑ)1?'Ƚ9kT=H2.' 0#M흝3,HcY{Z>S\֭[|ӓKRãxR>!!"w,RM_b?G߫Rl {3}QWO`X|-[]vG>7>}dɒ* %F&X]F%3F޲@pgUK}IcǏajV _Q?5n8oٛwmu?}uf͚* SNNN7nZ0F%NM*n< e/d쇘U)l x6mԩ̚QWP%K*Ќ̣|I7T$T [T)\>}ʾ$ֳbW)0l߾]vP^YQW2e˖e?>PAf:*Ho<*Lh ~! {˱~ȧWoPʸq .RdՁS@ TU|Tbo<]U,]!kei64=88X&2QW\` 4#3ꈁIS_]e,^^^!R2"9]ڠAI '0H R| s \ '0t֭>-d!ߣGԃ t%A(D[Wa, B!Oa.A A)>A;vL' 07za tӓpA!2Uz u| s \ '0H͂~ݒ/_Ba/n޼ի^\rtԩjժ2)cbb.]zш9s/^| `~bϟ]9W>dȐ"EܿG@:[Jhhݻј?勝]ܹdL>}ɒ%O|*H]Lfsw!5k$1btJTΝ;[j5w\(u͟={Ƨ(w1N>ݳgO ?']v((hƌ/_^S#2=Ç0$jb;993ϗ/ĝGC\߹sjժ!ɓ,Q!"Ek @" aL8޼ye288XߥUP!$`+,СC1BU_L֮]½zR3?;>>:}Z[z֭8wڕOerOD3%c{Ne1{Pb ȕ+W[{۽{}J$p8qW|mjA)DDD:[ cժU(e]_lյE' R/Lhx_rj׮-IZd,Y244C5kO?AuRm 06l`aiӬT/ܻwGzJиqD;w ZM!Wf b! RLCBBiٲ%pLƍ<(Z(Kkȓ'|>|$lرݺuc/J-[vԨQ?~`N yY~jŏfᄃ{DRbcc7nؼysե|3'\_~Ab*@qiBm۶@Feˆ 6ܿ?']?~f9߾}kׄ8i6h1wyljj°nS [#I&fΜ9w\ՙ㺄&L >Vb-Z<0+H33;wd:t`cƌݳgo^x)"Yʕ+۷.\pʕ?z4ZKf,Y@&fϞ=**:Mil۫n[֠$3gf͚'.閂nɒ%b\ {2H33"pɞ{O:?"peR9sx!ɓ'O)'OhYy^ܱd/^i1NTR,222߫e,L2,VM\\`Cņ s2H33c0ر]8j=>?ߩS'ݛ)~9f@ϝ;I4` Ѹdnjǘ_. ϴ{ѣ, p½>d \Nggիhb޽pW[j5a„ʕ+#Ka$`fru# ܹs%njQ?jՌ:`d¡Tҵk.ẖJi֬RVZ?flW&M-E+&so5nXs#2;8l|EaR9oz΢7q*gw5H|h ڂ -jH4mįxW5_O@[$>mA@[$>mA}>5>~;=>qF'Rz7Wg(RJ_'eb5U)t]7ϥe'T%(}Qk[y~yyyqqq>$͍#g>>>'yB*?}zsss=gtrџO/~>^R^]~O@],! a9ToYK]ETP#_vk-HJz;=?4|A{xx^ ?]_Z:j|M`~([DzL#o`9,e9.*ZM#lUh h孍E}XoGr2mȑĚOC:3ԶUY[I2_B*}D t̞ 1]2]~$%Lmv~6j//[ ã -5e߱у2}K[+-U\Y3ݫMGXq9͜lO@-^(mho5ߕG0>^Qk?G=5JC_}7_ x?=B'NЋdP#_&{d3mt?}XiUZԠ϶tR[[[#] $w$7L-:iFۢ&FEz~$}-t?'!ޛ(>|V~Ŵ?@@V-ᒖKjZ/U(APG Ch"{G7eg;9ٙ3<{fw m!aA U^|y_}U]]]BBBVVȑ#wЁgjeMOO0a###Ϟ=[PPZ5HKNNF9 ̙sԩ'xw}Pm(,X(<<|ժUIII6w8ȸq믿yfr֭yf\\v4i$UΛ7oԨQ}ڵСC_z%VhѢW^yꭷ:qT6Gc]dɘ1cf͚{fomm-"=Z$)))_˖-C= ܹsQ~G);;z1c9s֭[Q.T@ j+++yB,+ofc?wc=랠N6m[h g@\.WYY=">}O?&PiӦeffӧB~~>t:7mڄʈd:u(k4`۶m3gDfϞfۧL7"A^ !02 kמ?YfЖ-[Xիsrr؅ ÇheNX1Ðb/2>>y[:w;Fy7v!@zTǍ̅+U0/3vѫW/V9ٍ?B AlCXuuƍ !AV-} A}R-!ZBƟDЉ GՐ+W:vȞʴtˑ.]R۵@_p.܋js:7?O5zhv̛7`'O5kShoܸQqm)UJ3f͚oK.eP޽ڵk޹s_ի)D8ܹs<`5r!Cة|AaaAtB=0J~S ۿgi\\Z [*άWk\r ݻwggg(϶mbr0| 6߃4y}/D=޽{Gݷo׍c[lԥ@pBy~>?P.-><}43Pk8^i՘BgԩSl/!\i/U܂xU4]xqnnnJJJii)EW_}UqS'0&TdAﱲ\|ׯjҿ5JHmur g}K.¿Pxgo"ʞ={Zh-XB+IڬB۷oGo1С,=NS DM3C ٳFKf6E7`5 , Bbb"#㮸Ceĉeee(k7ƥyذa$'(DFF…4 ٩Ċ| @37i.͛#Bѣv$FlG[0t5X\.ߣβM=-ѹ P4@ 8#ZKř;_z*5-(Ƀz݂OkŚCgO?ԏ]mj1 +c5RqfB EE/HDC1 eTKR-!ZQ5jTh>`#"bM^p!]͂f30"yMIU@!֠YP!A%ăTKU+ӰAAOr,Zlq̃M{ ,ZS ^4k[+ڐ(AR-!^TG\k׮{ժUxhlr'P?pӦMW^}Ν"oRs;v!;%jxD+؟K.{U}@(Uhw^ Ν;{)tm /ocСÇ/9m@H-['uNN(l\~ZKsOڷ~駟un=yp&j5yЛn۶Mnm @/^0`w\pWPc]V'cǎ]xs=H1 Rmii #a'Pmޝ析&b7|`\y_~.N&M j`p53U(k.H6::ZvM}>} GG䖛{B֩2_E1ڷo<^RNMM O>yD4IZ,G*** X[4(""21P* Ifrs#FWB∵7XU %K7(^Qv:Q`0\z卆`wѣǁϟ23_)N7E1\rGSN;vI&6al =СC}Y˖-|Mz`11166k t2uTc{N9YE(`(ZiIAΞ={љ3gfee9seٲeL5}EaUopx8q᪍M؞F匌 ԼT"Jũјʀ`jnq午֭Fpر7zׯ__iI S[ ̗JUVV\bjnm۶-='1cƠ'%%%Z C={vZZnFS1pժ9 Y,qȍ9 t>+%%%%**b W Ν;Yyڴi ֭[)NTkoXS"rc{~ tަ Ea_\ʕ+Ճ BYt<˓xKqjSXCD„kn~*P}ve>K9mi_1BR-!ZBuZ-SQ4q?^z_Z 3,*jzmmˎgo35U/(33 ;VbX+}e__}Iֻ4i"la=vIzX:҆ ki)l:s @uu{?`srj>ZF'LxK/}{+[Сĕ+W_-=T q9}}2t[[hԶ}xt:6C1؞KI)};?4t-xF9ᇋ?9<ˠ GMLMXw"a}R[U6~XA zV^  ^~\aa2k# ybO\>YyxeM"a,լt 46%EZV||k]r%@]}O-/o54'?G^ キǰm5С,4XQ7D0XUo  zMGX`~pO@,-V__ -pZLh!|wc͵SR.5QV3;qcs{"Im{ϖ-aSWȨ|U{ jwdvk GjjZf7@7ߺqq}z:%7X311؃uhBaɁtMBww/cjđ,Y`.$$DUUuPn<T8o<d ֜9Ur"y]O:8@͙3fŋ-ZOY)$jW^oaaۦ^K/pv횙َ;ƍ0y@Ȏߟ|qr"nno#XAQH-cʳ&_|Aݛ:kVdAYIJ 26QV&hয়NYBsx 7E Zmm-4___k o?Af$&}*%P-?'ToA,x\RM ّ_&W^!?L&N$61_ݹCÇs}5~ܲeˬáU]]]UTTT-H`ϝ;>H&UU?>"יoʠ"'xr ٓ/d>;dȌElvKn``;w/^lccCv.!TpBCC:U-&g_('[ᲲȍrݻIa,J^{zr&Ek0uԳgfeeXbVh!T3cjd]  O$&&70ЪLD^}ɷPpOϧ?9vqD8Cqƾ}<<<Mܩ{}OOO}}}Kur4p ᱪE#ŌtjSF&A ٿV3 :̙3sxb#RP6mR= /{ #Hj*C#Xi'N0rL2s'2 ¤2!$,q.#'C lfy `C+%ζ6k ._ݻ۴*Ďjp`ymK \a__t)3x+~x?UTT9j*qsċjpR Lkג+0OfffPOvss366usBf͚aLp X>_}E6ofF} O @OOĉ˖-rC\]Vh!C3 lk͟O(-|x]׭[w1aXP-;;;""Flyb(F$~1A#D0n722usĀjyyy|}}Ŝg|LRSv?oxxǎ` b~viᢱ6;::_m9AAo6sXuuut(ƃuI( FVjK'Na3hii)(()**؅tѣnj3555]]R/J]``- ,O`@J-˗/ ļȨގWaʔ)j +33377zҤIK,PG1qo?H[A„s΁ sѾNx Ǐ_~؈j/^Kokk+<]l2]]̵ϞMNci ^M.))1W˒UՑa zDP-..~ʕ¿4?%% üW_vlf~]0 y"2lf\772W2S$eS(@x%%%:tT9sYZٽbV%,rrrC/7\Trw^``tvv&''())9::]]vS\ٳjݸbltlLd͚E֬!QQ̩`d/sgg第؛7o N4ddd~goj0axxx>«҂YdxFD 쎉iwt&?xx&Ç{./5(%KpPRYY CHT{Qcc-VVV0z 솸/ 쎉I…:w..ʰ)+3L~gW愇_U秠kicǦM`YoTUUǧ=xGNx'8%퍍xyݸT#C0 BBB^YK PTy Yaa򬽡ɢ7flV#g1\8l3g9sFKB77.Z;j(h!^^^\ςCAAsC=x^zqjo8TRR #+kb̙UxFSKuwww'hpRqHhL/ڰ`akh֭۶i2d#/^[8X=0: ۛ wT155Zk׮$.,uKw#J470]7ˮgʅ 砺a)v޽$ `:uzyٶm E'+f66e-w-mԳ@_ƮIVjx&L0H heeS>s|]cc^>= |%g&+W?|gU[-???**ʉ P9tf 'TKHHbѣGxAI/_޲և: d+Nx1t˥ }y~J,Y?O<ц.oͅt NGVv.ޝ"}%-j*/p!ȑqGʵׯNקɓA\\ lz.s5뭷oڔWUwzҢE}ɛlaFʱsT XQQjxT"X,''ԁ n>^z C֋E drrI7w~*׬Ϙ1&S }c.\LVJx \򪪪Ы^pzz:h1p2&a7me`E౬_E2eJdddGG]k2ղ '''C) - "8zuA)v/&&Y__2 Ç/\α{p1dCL'KJ;eB7F:;;n,Tm3D9l@m(Yz5js]ΎݿoaSۏ$,GE2F% %¦MFw*LKK_A'{z?::6 m۶ #:ۄsw駟lmmax~`"PÓ0vEg&`L0u&ؗ۷oy* vս{񆆆ëˋqE"DFŋR :TGG)&ոX: 7u2c19kkkh>uE.;3?AWWעQkyӪ& p Cl۲e G"*Txzz@d _fO̞=.(VHj p&Dk;+ՕU ѣG׬Y3 "XX"P u7 ֚djT^EjC<>wd9D0.\H-b:u6 s"t ~8p~N(xM kqM8ժTTTR Txc,FэN?[VV&] 'Voj51O"++dɒDA1O|RT.֢@5t$]D]{R,1>O"5#6xoD32"rrLv&`C~')2;HGHRPPhjj QjFTX0#8?[}mm6&]x>fIi)wC°;t0eŖC@5y"::d_̨ҕ|+Iībcj|. q\o0aBQl9+z&1.ʛ\#Ϧ8$Kmpu?|ۧcAWqQ1BAV>5(!4\;ÒF}VgXԦ(gfMņ_ {|=ToG0u1TئRVV)gn۶1Rdddp-2 >Dqw|\󸴡TGI'*7#~WkcUՌ SY<h9[64d._ݔ6oMq͹{cɲ}5A;<[/ Q$Gzz:ܨ*A 6x~%%%nkl [ۜt Q"(t`g+f,;Jgӯ4@,pnpOI.K]= tI@yִ0g[})M ḧ͓́@ Էssk e,գXvUPZY]sFɓ'?|nQCnn3(VȮx-&9 Қx ը !MM͔j.\‡ Z; Ũ5 SVVVIIIF5uoFִڱ|)IM%#YH%Nq&+(.؜:ujTT(Α vg_&WfؠjtEPDgA\\D7\G_d,@ -bG5jX@%$$ Q(H}3ٙ;U]Y? BvFFX?Չnqw =]m+ o+ K믓ex)//GNEEdhiiEGGSi (aࢢ"E}ptL>6gPۛ]+( \D@j]s͛ts ݿ`h(8...444\r"sCz$W#KƦdpqyrM޽.%Ȉ ml$HmXTKNѤ(4111^^^ȳ۷߾}{޽#YݹsÇ3g΄zl~2f&7ŋIAc/ۙ\ ЪoGUP~~w3k[[[YYހ 4}n^ܩSBQτ Yf%CYYYAT ~ J oho3g>рdl!{0r S0̬YLXL( ]qR :ضJ0+7`ә0&MiTWWWVVQP􂿆b+V8O ^X9[[0<|HlMM=mȤ|&Љtu&c+ibCkkkՠT}}=o#` www* 둉 ꏕl26/]Q/ Ou&23gĆ l-8@={o.42P4(Govg:șMgZZZurrhw6?_DgW^=ޫO z&<]@AdPΔ@N5HX0ۉv0d!<[;f 0W&TKHHTA}EIF z^pp0 A1'dIJIIټy0~z5;<NA}MP3`&YCXt aϝ>8襑6/pES'l鑑tWH._ljj֮%}P %GpqBqJNNWp_~O@Yxeeu**ˆҤ5N8 \t:)22rV,eZ\\|cccww! f1&7VH4dɒϱw4]@._<-- Z676255.`ۻ0&_~)'#<)((c?{념f``pڵ<7yvn߾}7t?wﶱdcj333cbbI /ͭҥK<EV7 ڼG޶gwW5a.[Bu\(000111,, ܼy(f61a"e@S#jcƌ͋^b`Aspp"jZQugh:~WMO0֭Ƶ,--(8#/$ ٳg 蝝x\$|&Dokk  l[X@PSSǣiddѥ>dc`9Ԗ"##չ DFÇA;4@UUu G"""@>==ɓ'ØU7wЌUUUrssaka;Gs=>DF5__߃*))q>9HL);hW]] h̃}fIQ]C 4i̙3===dH/•f\ѣG6X=>eO5˭|2uuuK:˗a6Jī)VZuI???NC@z焙Dw$(-- n !˕+W?~i~8q℻;LiÃMvZ)h< *MτXP#G֬Y#Y 8gh].A m+\>}fH-PQ7{xx>53ds4x]&4/w3,6s#yBlll||<,? bG5۪.]*4K.aM0 T#uVׯ?t萷'1PWWLMMM)/qݻw8ц,?~|sى-A|暮3g,--,X UҼqFJJʪU q9 [n2=x ětEee%@UU-[HD Mb{L79{{{!i޻wɉ\@2~VZZ!D(**x"͛7s̑.$jorr'.\( \\\ya0011a75k֬] hkE I5yƌW\A7̛7p0˒)BRB]]}͚5cbb@8/w YJJʭ[cZJKFɦ ==uAšMښp} +W |xu(ӧbLMM-((066f$w t1T6fb=)* -CYYgOOO Ǡj||tshh(D>nЎ(𠨨Cp`.dăKcccaa!QYY Ω opSSSmmmMMMUUUEEDW]]&8 |r1\,&H< Vuu5h񓑑.P(3n8^<C)))Tݝ<@@677dG |8x-K5As@OC|,@&UȄ h,#9_/!Uzo_NdτjC>/zqꞩّnd@J!~@[g!ZjC@usw1jcRSXq2ru$R ٯe5AT9R ڊ)դTBHRM !AJ5))դTBHRM !AJ5))դTBHRM ! E){ڊR<ʉ IyIENDB`PKs#LW-Pictures/100000000000005800000020CC81DA3A.pngPNG  IHDRX (OIDATx]LZg8Ұ`iִS5kh]ԫeďM6FQ"76™x7hS,6Zq-P#ٳ vvwr='i555ÅAb*++[ZZ2j )1H%g~+e2`o'},[__R*-H%c 'Jw?уA⭕_KD`0ap!<Ogg dBHފ,eQ!WW-n_*~R_@XOb姅Yk7 l;d26ljj===!y+L>55Q!ΝS8y('}ݱ`{P=#KKKsss]]]Ї|!e%ZWW\6Bl0 NU$9Cv$~"!zfqH !@]h霟vV&s 5 m(fy``@VWjkkGFF0t&&&RZlᨨxLecQ;3Rx%p L&g (bP5! IkmooGQهgY@4<)Z/..S1LOLi=% !!r[":%%qU#4-ysgXb(vw׵lIBt W^84ryv8.\CB8YlYVxˍD" ˔܉CX^xJ.B/7TI B$) D?G|FS.IENDB`PKs#L!c"vv-Pictures/10000000000000E900000083402A2A10.pngPNG  IHDR:=IDATxyTGG 1/$oDErT@( Q#GA@M((c\5nh 19.}n*MO0X?tWWW][oLwh  `0´P+L ´P+Le˖X0]N~ve%,neTnv`BǎSSSt/\ӓΝ;ѓ&M2ji4<|鑑[lћ?!![nCk7//oԩժUۺu9MV=LaX9v옜cƌݻw>>>wvtt4Ŀ=pRjԬYӧeee\ii)Rjժe)Pf͚ݸq naĉ7oh]ZȞ> 322ƍ%Rϐ+{6YYY!={6sL.vw@ZZ]׎S˖-  g)66֘nݚ7>>a֬Yt5ZxW 6\zDS0~AZ402 Ӯ,.C02 .C02 .C02 .C02Ԋ~^p}rʲlNfˆ~톆W̞ ==|ӧWXv,c=V^,,,b3eq Sjnjr ;tb*zڵ]vtAq7ngL6̈́ǚ#c2햕yxxdeeн{wOOOWW6m sAAAllٳg.\H\nscǎ߿,XF,hqqqX7o.C||< 1ɱiݘLk֬}vDDvCmmm铚[oA߿.jȐ! ؾ};4 1g\xMΝkc͑Ӻ1v\&&&BM41ܯիg (.!??q Pc͑t4U)&6v-mv2?}xX|ҥFa%44ԠA믱ѣ\rE?O$3%c߲͑ &.x,ߚ-]?|y,KJJsss۴iSlCO]Z5 :Ç5\h `ikbT>|jA`]zu)r0Vߏ3f WC\}9Z,ᡏ92'$$|˿pqugX=ׯ_GVTTHt_]hQii)5?z-[ؐQ3/@֣Fjܸ1&h ;uԄ д|}}1יGY޽{=dd^uJ!XsCx???s 9Wj7##-Ru׮]p8pΝBjѳgO FL<a b9G@ܹsdt5GN㉌Sڵk3p#1Vd2Geӥ4'ORX-33sΜ9Ϟ=CV!Sg۷/v!k< )?9enݺ+h䪃ڕG}1 Ǐ9sfɒ%HGg 96lСCL>b$%%ΦL@\" hF999ڵ`[ǚ#1`ѣGXRyC+Ld?ZNNNgJ:5&~B27,QQQ4Zό?9aڴiAӭvޝD]DK$aÆct=V=jӐ~{ƍ{MsDdN$ѿ#ђ%K֮]+2$@G4Dę3g VQ PHDtuCm"۵kfqO8 @@r4w$.77zI'9g[Ϻ CVB!D*f.--E;ư zN$`7w\SrB^8>4HЇAdG:g7AtKp/q˗/{:|<4c5G/&Ќ& T`?j߿CM'ӳH׳] <Ӟ={zi 4@-}R3D('P,+␙YoGO%# HL?U1:1PrP6nE7@ }KB ?Z bviEc[n~bbb5kfjEΝǎۿGGGǏ_zu} C...^c\ɓ'dJYYYXXGVVrP 8̛7oĉx$6\(t ƍ;v옧, .j5tg۶mFQiހஆ riXXX^ϤTի={]KY}vt=V.^xΝ+<qO?TV-w^C²(N iIυ&ۨQCu/$]%%%h3fŏ^xnݺ["gӦM}}}o7Z֖r .cJ& LLL(/q('??_Q~"6]xVITTT ~\bnCoQ.K4\~'O> F6{l8+Wj=#GbK4Ç~"#vG *|7177yoDv[ i:ɢ"uWwbzE_dIf|69.\?~<:F>}hg.]uRl"?vѓX߇3f ?Q 9y C7byĮT\~%C'!!! x |||H:[0ussmFGĊ0R7npx;w 1N:5a\iG_$ggg4K1^d+QEJKK1f8\N!(޽ OڣH|/$F$BB`V ...,^zB0pR{iBB??B71˖-fllXɨP *̙3gÆ ngTc5D2hfqcT'N4ܘK |΀]ڕ.9##Yc%'4Pjqqis.̸k坜\I_(((T֮]+%0jxߵV""\~}~~>/N~c@/;C% P^:lr[> ҥ'1@K]P+L ´P+]=W6ծ0*r:bKIENDB`PKs#Lf%x-Pictures/10000000000002E20000022C3F9950D0.pngPNG  IHDR,8c[xIDATx@I{轃 *(;O=O={+>{Ů];vA7$kL61 ξ}v6,V$/' Wԕg:7i,7_fHd2Y%A"iOҐ4! iHC4ˢL%NFٱM, %BK.V4! iHCx$ NKbD\ʐDQX9LI |MRk! iHCҐ4K$IF&K1$cj۞; (Tç%)FrQ~䍯?-jlhld2|Sqخ.F<{| q62c* QPX!;7_ޤI\onhVH6f ÂۙrdR׉Uh: :;B*V@{F<[sUOtֽeMnO!B"!K.F1ż6ͦe; #RFVM3{ިbSՖ|L Fwhf> ޥ<+EoSw~5_,"-'dT@u/9y1gIv֖WnUWz9yyx9̂bQBrδMnqh+,RI:>qӄ|֘gSs*t~jR2e TU2 /@JGa6OþeMDBE.Sd X."αKKwp6u0ѳ^-ŅyvUwZl)JϦJ o?cKdBJQ6X!R4*|az35 Q?pEe{<ݴaݫ>?~"!gnM$쥣[ w͇,[3m<-̌qT:FxbwI2Ȑbb2B(iOhVᇣśFdoinTa6`ve`z#e )##m|OP7kΦz?^'ȬL_qԱƔHIP{q߾۾}_SaQцOj9gdffu=/F?CޤOCPLnSt Gcុ*b! **.z:[5gdp׺Q*ΕQʭ,HplaKQMtar'WBf6v1cM,Pԃ,Sc_i]ӎa`z|FI~~%WҘKV\Ð1v@uVr~" ~5oblr0"]JζGߞ)<+ M cCW]7$MF-?M&ׅt)d$S()&S)|S}|\ ׵7q_`ֳrr2fٛċ /ϛw`RO^TCC~vN.^ip+?OX1ښB;O*y[Dۊ?S*ƛ&vJP,!Wh[X\ſ7 A Lk7,,* )"aq{1^]Z5kș 6uغz+@{+ eye<#켢 Gcq-nG?矝jJ&#iȴ|zxflieaV,VͱDG)ZtCPo}4PHR<[YK)2c7! ߉}~G˚ܭoZ}N Yi9% ^2yuRGC+tw)o? "87H K$bɊLoJ%ȉvoOwu3N[NVsWٵb[yj9T"ߢx+[3e ~hصKO9 U6Y, Gݲ)9plk9% ^2ʤHtHYӉд$TJY5%_uMގ.ꩼwO:nMB+ZSTD"~3,3S&?0G^O=oQ1=#3 %>V8skT֞;R)Ԭ&ƆYٹW}٪)X)G,,}̞Jn1ҜbsƯЫǔM 8 {(zGct[ϥ{A2~BS[Or'gx`o_-E𺔉vYAr"N״nN| &"$T*x#K??#FwߪF6&Ob|tɖ3dT[4cnԫUo)4 Sy;od$ᰝ쬰Jnmwo2Zشl<_K>J%s,k Ss -E O E)fl]X}GߍQu`{ʛM'zS;Iˤ"_/Qcڝrc2hFl-'BSh:ݯz𺔉7)'J GL&d24Ns(dׯoۤت'8.$d'}$b$S$b$ ktyCWS&%̬8M@708T \6V9zr(ZaX&?`hZѾV%]П-C342Gڝi)MR&HnnP lKKluɿ7)Y,oMP~VW՟lR%ÇZq6nε4T& y54bST)(yl^is|HXޤd (45Ey."/&}cDZ͕?ʬrxG*m!7τׂۣuIFR5JIH|X] kemP$d (T"~]APj[WJt&dߢ,@9!ZSH1*B||Q rDBkLq*:,wH.S&v5˔;O?4r0Q$HY[*kӳk1+cJcsZTnnnE@n7yJݯp/ K*b[hf-P*t9d,%i7:t}2GGdzTɢt`%=nbbZ@EB,SЏ"Y9/QIsGvzj@WzOd2>r @%VU~c,@jԪ<6Q T$ZYBLߨc`hX_W8ҁJh)pQH ? dJi__K ߼)ʿ72\nAhT||/ S(u *F4J_~cLnB!NG H%+*w]AwdRUdu?#]}?B @)лLAWkQNOKK:}[u L(5+B2?rBAT:UkNw>ce?9FqqQ:BbVzɹZBۊdTS̋#M?RRǎs/|xy>aF4:Fbb:C@"<|dۍ!t\tǦ YD"=m)S?w[lnQaQbVf2kV}v:KΘԩS78;۷夦2ڵ뎎77lsdk~ _%$8#oovprrRKl}جYSǎ"F<8wxd0iā#w֮]#tf=u۶y"111h\HgVl޾~mQb\P Ƽ9۶w#GNLL__эǏ]bllI;Gsjղh;u*b՚5(0++Q#GCִJc>=h;]֭srrRڋ%==#t;w.^^#8ݹs'~OT*1C=flR{ttHbRU"'NNM5jڴ I>} 5' J{1&MFn}jV=glYZZ{(~D`1L潻Q۾ub^,~˦nߞ4ysgt?Iϙ;}vkׇ͜1?03BUbF9gm߮Jgйg~q"SK6>UG_W.uNOLřNǽx4*b'Dس9\~~~ΣGw7?|Xv 2) E9s_Dw]OoۮիIJ*{ L[>$$xڵ ֭[Ϙ5s3gںe! WFnl9s;]&{5axQ W& DZugOcqA^K~[])Ӄ h[44ˌlb9]ɀ֥]^8a+QQK.Ghn/SvV-gϜAPDjоJ/OM~4ywoĚh[,׮_?„H _cWrL`Uuq3BIIsLL̊TNU2 >s>hB[)H+I.(`2\.OPܾcϞq&Fd-5=+3+fѤt2EBfL*J~EQd$2N342y.A_b dowԚ> 1A7 iTbN{w2׮^5FYnia1kLbWD!\|!K.޶mFZc7wnz:z( 0SK*GKeKxb}zck ۣ|es TL>lYsORϏd&$#}{Y-֫߮Cڱ?tB.\lڤ;5m7'+#G4`@ڞ:v80Ÿ$M3F|0܉EK9s^G,QN2% aXXxر(7jPn]-biܸU'M_XXjE ~({I蓰0 3 c޵kA1jߑ >s>eQ ޾Ozy :88GlH%ƎxeAGn h"H( ^HgFAJ#) eeBQ{3L:Nݪt . ?*FpY3oܼ9$t:ŵjZza>S6nQE U!!/D"I2ibPp;7Fճǚu>}Jj{z.[A_w/..~Aȸ1A(_yI-a`foo?k)u4z2S&O=w^V2 Μ9wX,4njggj2-b1}s[jcff8vLI[Ss}&a&a̓&M uMDiG*0't_2dEFz: ֯^֦}mvרC:ksNVZ${E$2U &bN*S>t)E_TjzǍƾ\x)-`(&ӓ>i&h7Q=~x_nTlڴnCo:eU6M7Fa aݻÇn0ZPT,єRJhQe+ƫV,'A84<[,F+W,+1rO$$CH?www-;R I(>s>qkdd, Ϟh۶}JJ򙈣ǎ2[Q f}" ūS["޶x\#cISf4kmfsT*K߽K|,^y,2*jVr6d3S5|$2ai+VO=tAjl9e^@,ga[{NjبqАqGvY33}8 B!w{9YN rv{J!&'tP`sgu7|VTֽwZx|$SM)4F;}hTZS~_~c B u̜1e^G?8̽VOlmƌaCkQ$[WSÇӖX,rHM) u`(RYhW8FJA>,#Yl!kee|m[6̙[6a߼ƭ w񧍝yjJrLMK c'Oge=~~ $q!YǓwrd< OT~*5B @)(7$+Z5(X\<_zͰM+W.\8{>V֦4:F*d oH2AK$%XY;̟84$t)A\^)d'6xM ׀Rӧ%Ŀ}Ļn]C#cZdJ))sRSړH,,3 R)1T* {3;R-ۼy-'N8dhvmy쬌sک= d2i!җѻ@t S3sڵ?{He^^=LfoѨL&"$.Ș S$R@PɗO|2ag;rHamB^(p۶N nոt 0 J/2xFGZd )< r333O_e!-}JrrzZ݆Zԫ[jk.["XDy};4- M"GL1_rI>XL!Q:?/{AGӧ#s5qd9?|]ͭKn]~=(h|Zծ=o&)+sX*ZS0>OFo7UT4+;~LG\r3i{{֍]zlZ_f\SnvFJrAA~ѫA}߈S3xYGMd0t})8ثQ HtsQNQ(M|^-],]ːskz116322eYqq$bgи{yܱk/Ur5ꊣ YYqc) W^GN:k]\X,6)4BE"K$?$ēi~ZKpw7" ;&?I޿_LLzx>qokW,l٪#ob EQgs^rrK++ Jg0ޚ"JeRH,~߁}WoyK{'gFf5MyBePi4\NDo:w߾1W.FfLWP\&ݜ+z8$H,s0a#ʧCT e-\X,}qVlܕ'=u̥z K+barX̭O=rũv-  \.o}D E>Q_nP"RxM۲qȠ)Ȍwҭf-OdF&ύ^Ʀ`2%S A{&s֯VK~Q1Bha[ף-:4pbvlb)oR1Y+.;{Hho`pJbт3f-]c`2N $W5sW^zيfܾDeSeYoZK6b| "dF2t6rfffbJ"|&UTP}k\Ho߼zy;jckYǧXȥS\EDwhѧtk33;s( !1klPa4{[M=2Y#cKg ] D"!#ZGL=7m*̀ Ԑ:tʅs͝, V.M<խ:etTb0bK*#Y4| LA U2~G&E*E&(߷{ooӪ5*(&d/g/޶r4bD^<=6p C2`i424HȂBR'M^ϏO+2k2~m%Dbܥ X&% E%}xp崹18f[{zysy|d42{W4U d))3++=;;;7G,}0m,.Gҵ{]|>g?XSw!DE.-~&ũLq1Mxk٫OVm9L\P}6 )HgPiTm߀JdjC,ȕ&yp_?e0YgADl+J7~9(xz&My,O^OHh[Ǘ YQtq_2TPrBQLF-:G9~^ZXZzlSښ~~ɠѩ uCLٿzL"S)TI(dH,I)d `)`XW R f) QPA/cS( FRb$4*Uc:]>/6fV (mPi0?T>SљD*?L7WVgBWFi2@-q~[CO9e`Y:,*Ç'MV @E=ABƍ.!AqӑL!\իӦߺuK ԫW7(0}QPǔUyӦٽAcѧe˗}gkk;a>}o}ɔf5o?VtH$Z^dۻ_a|~tUWt2E2T crru4&q'N3w |}}aҥ SE(1޹vՓG$qZ o۾+UuXGRRR^PqF_xɒk!j.]:A<~kW,Yc>Aj:z䰫+՝`a 24::)*:}X\Cb`X9JL6ŊϞ= hk׬ԩ#2HMMw7n888_w5u8t '߿?*h~Po߾ۯ_\\at,1̉1ԪUW\JC˓>ܺ11dԙobl߲m 6JI5jܠAj\Zlٺuk|X$~ &OC͙K,E#֫STPxATagggWVM՝̠q O<`0pKT#7o1r&,MT EX |,ŋ&OdJpHH=իWGs/ZK)E``ЁCrdU"_BOo-[\rԺӀF߷r}f]ԢU[lѧO,6i|`[v[er4~ tsEvb9q[7ľ~OKKh-۔T*Ν/_2uڥ˗.X fXu2`@,֭;wlGcǎqQ|[[ׯ_޳{ƌwF5wڞZF1;A\~mٳSMH$ߥsg@tɓAMEѯ__$Y|};wnZM͛7wl߆3zҥK (5e/S=}0 93t폰M;ܺ>}rHXX,s-*r٘Lds&&ߍwg*/S樮L4ZLA"ILkK߶%鸠{?ooG*F~]-B]~Dt,( kk7_pa||ٳ,\{^T6!] 222^tCCCMHlRaTf;k )q-3S&-wX&JX&s8\,}ť$K(MEǎ'Ȱbܰa@XXxpu7jo\psQ 3fl6ʁIƍW^3y$APu>wtS=BհaC@EXbhղEgΜ(FO ޴qCz޿tٲT1~mZol֢J*ԉOY*`0(MQkdsxzyV4n* {Usd 4dyܧhܹC3oom[?wQ޽B=kl//:YbAWZ%J!sԍ5R!>~Xz@5KO]v;$'';;;]F=Bl钾ZZZIJeKܪtV-׬^ɲ[׮1c'Wiʾ5eSϘLW5nb),,Xlt .i+ F T=)PW𴋋KK*jLOKxZCB'.^P8`ғ'MR g֬Oŀ0~崩ݻ CՀџH[ٳ#!,1MJ|=Iu^ t Pe(w4nb%VN"=<۰6kY&hT"0dDgː D7*qs JEL u*dF/bf-џz-ᱯ?kW_G &TM͙! FiԤi9Gw/?|Î~4>@P\>@%GJw"+;ZS ,(d$8@Xq?r9 +2.^1ʷ1He삧?uX L17ry"i}0aF+:q+P'}L2J *) SL2JJ)RJX"JrT G-ʔ,w" ͊CPtJH$zѣ#>DgW@;KaA7oܾ*H*:JJl0n9*R$55-::EVNdNbѻ+t*ɉR.;2I I"#/k& iyQ(VtDWØ{Zqt*hjnitk,8\nyRQW;uͧ^cAT*d2YfVC.;'[$@e KNhnaQсP8|BTt *bKR'JH$2E~!? }=P5R0 @*LA%++0 ڃO4irZZڧܜ*`kkÇ@؝|EG_+S+u!ffffee/2PTfc`h/+U1}=w5hРLif|СWY>|l#eJԔCXXX׮]Ǐ9N޼y3gΜw uֺc.\WN+Wxթ2pHSǏ͛o߶cncbb}~TRފЀЕ2Y`aBBB wyhޜp36=-[}juѢEƍ tݽvڏ?^~'UNԩuL\x$xXj*MF?.+Wp#2ǎ۱}[ ~ ʜ`:uJ/]XS#߯_]v-\h?M!ֱ+m+ ])ChpcG9{fA q޿ݺusFTWӦM\2d2R(n۶}鏸$Eky|%'HtRemVQW-(1mԵk1+?{,,,5k:u RSS6ƍaAF$ŷ?>>~!BGGGf֭C&7'{X\C"YҦ tDFFGUeˆ sNt_vZ[nݾ}I &lذ=/_ܼy3:Kk׮DP 2ݻw *hAYE$8N<ٵkW􉎨NYMMMQ]Rs,1h >s?vf5?c*0D 2{ѴSBW[i2(6n@U+6X]۷700ޞG࠾!tA-`lUJJ^-[`M,={6k˔)S%6H#JXYQ2*+3UHϒd%")~ H(z Y셋'M^={?5zL̽hmUDøV-[9dR>r͛k׮G-yֈ#LQًeƌ{&)/^<~xi|}}{ѦMz_a~ BYw7G[TgB#M̬Y0iӦuqѫW.ŁbB}C\^aN:Zj޼y 6DܬY-ZeN:c?+itOZ2\wݯo{|J{zxh+ J vcfbbr:"/}H 4xv'ᛠ;;=sFe+ [;{DҤI˗h5*蒸k׮ZjacƌAcǎСCcccI&(&''K &S-4AJ ZSD~~O`ʾE9h1)=x(O#եsg}^tSG Pt͝;#cǎqQϟ7o.Wi6{<{i~𱝿=/y(.%HCRƎl2 ܹ#ھ}{Æ +;w͇TtDelJ)<4nm vvv5*Eymwׯ̙N J:rHĩS%p5GD|Eر}7%t[yyya!ܷo_ӧOۧriu3==}ڵ x&WkDj˹pJB&)U  E{ڵMXV8ziMQ~z- ]yׯ+/;99);>߽{<}v,];>of*o$ӿہ!/~dog ԾQDŽ_Qock#%)F-Yd̙H۷x݌Š|ʐ qssOR"W?x eaڴiڵ;w\WЧOt [m;uLkcc⒘Z2ї~=[X'o۪e"4P(Z{7lplolw6?L>C[ss))~4."H,#??/55uwܶ$)ׯ_YIqQ{t}@6EZ*'*2)R%+VɑǏIVknܸqE\+-#ڲoD|iC$%&,6V֭g͞xѢYfoټIqÆaa֭[OxG !2w<<-&K&&&Z]v6/+tܼy37nܨa#C5P! 21nݺ "3KKR YlFzծm[t?am۴ђIR\_x!hilX,ҲSuW*[iW)8iPaZe%,,wwكҚ]:ir$E $<ڴic֭>|$JlB7B:]+~ %NHH(eϓ>ߖ(OKKsܹÇB۷JR8!a#w=6G~ETw*?,>y<^aAPV*իרaaa9sFybC+[JǹsoTF3G ^QQQТ*֍={&{M;vXKj޼yGim"QZcI.]:Z$ sa?~rSL#<00]Cdرczr;޵o|>+4Kݕ27o9ocBCǻ_V}+l, ݺe2(-G 6.h*իVzXxk.99 k`Ç ]$R߱)$E/Ϝ9sE$ʔ1cMMIIm19҉O>FqqX,%UZr MMMޭg˗tܵK#*˔cǎh,}ĉ.]0(${+¼,7Z6a~DDDJJ_D=8TJEŔz)^^^*>EP(E޹+KsSss 74sr232kVVթSN*F%T __%!.n<*!b[_/Cy*xCzFA2ݘ]|ؠH$"Px\Ǎ]݅ 37kviCc#p?)/PP@&M233k TKwOB#G2k#sI'Oܹf34%2 |YI8Π׬QAg8}f@VֿuݥkQaAE|:;^7o\o)Pqm_Ԕw(>}RoJ111ܹ)#+;=#ۣF5w7gbܷl6ccC:jfbܡC|-P@T^g:?[ AXHBRmޏ-BQ.=ʿG}-Qtzƍ7oۉ*6.wF^S+Z۰wrj&FL:S^~ZRޗC@ B 2tusKX2BalN9iR9Ȕׯ+wO$Mڷo9>Øg5t.yIhfl˷0a#r Bk BҸhn@uz+W#xb!R23}sc!N775ܹKE"%2m[:}Sޝ>QQQM49t\̃& S^~yNuW'>sc&!9M& !l*rA%!!!22[T(anj˱2 r)ĀfSPsi}@R>+Wo\>yo!}+斶g/^D(/3+'ONQ(wPLL$r;ݭC}G@R~>neQŀϻP޹1ˍY,(>bn.ʢp8\·P(NLO`􉊊R}ω'>5dO7' /(̍uHdeϢ3gcCh } 3z)ܼypj|<-Uٸq*0dD4lRj֔[nugzQzᯝsڵF8pjժ˖.mٲ"ܹBCC' 8𲳍مQ*K(;(Sf͊2w^ ͝gI&?ԓI'}؞={FGE-\O4۲e={EE>tPTL5͛5z_1d28=@Vi׾{};EdлwnXJt"uҡC*U*>j*۷wۧ(/+J.}K8b"O4q䷋ۿ_Ĕ .u={N:n߾]NOoѢP6}#1H6)ս|[^zutttʕmڴ*[jt\ѥKW8wީS7fjU΂11Ə:ƍ_?Oll㣏fϞ#r@hhI zYT^zuk#bgN2c/"_'|efQxb~ʗ//ڵ?m "58~;d*UjosbCC2e;Wzĉ g]jդ6sf^|4wnʻAFZ ΫYRhҢnݺJ5㣣p6n#eE]ԫWOEbJ:ȑ#":bs.9/rs2{Ν0pbSm8ңX儻}S̟'[(I۫ys %%e=RlkҤ}z95'\΀˞].:1,Y:eJHA=eYSkݺMQ]8}}}Ҥcc.''1呑 *:fڊ;.]Doܤ]/[T\d񸨨uT"%4o޼IƗ.]O}ҧ?WJcYӦrϵkp6%_v޾}[ X;wd0?ϢC_ 1QF[{ߙ?˃'%-4hcr\r||vѣưjëoڸ-Фŋm6t)%.?`K佄p.9rĈ-[ߩ wǘ1e 4H ڼiS!O8OVLv?+߂ڸ0ԨQѦbŊ֋E?^ȎN:>$^v J3g[ݐŏT먟5+N4NGQ :/rs2{=ءPh]3.n.''@SJVgKMqF|oЕJeDDt˜\!;6'9bl 2J#+**%%eÆ ~(?S;իWǕ+WsBD݊<$RΝ;֭+h4"6b ݨ_%OaM.QJkԦn@`)NiWi:BU-VXddi*kb߾{G)춬Lcʩy q 6;+6|Yv}SDF駟D~*P9`T)QjZ#~6BeW޸qrhŻl~FlFn6 V^#Fܹsdk\6aaa.]P HRlٲoU+jMe3|h4&YilVEQ(ZVV2eTVe4FW)Y{*J,UF t:y{o߾}/^,RX~LieeD\UJZ&E᫻Ug6ۮ\Z. Иe4j_l+ժ̻F˗׮]+j\uݻw׬YsS1E6mT|B'~w~J1gf:Vتw̺0)TZJҩuz? 77E"L'?̯?MVh4f8QߡQO<1s̄gϪT'O޽{bŊ/^ жbᩘVO>- zGcVd*rWתq?*mVJ$+꫷jfϾ>:^$YvޓOt?޴_>ZS.=tr)z"C:6BuSTʜ)ϟ MLL5jTLLW+%7ٳYfq+|tbŊryh[%;8cURYtHer橘b٤;2*^=7R4*-˿j*9iN]3dw̙+V1`0ZFt:m.d񳦋|{{!%xtZ`HތSӧM߼i%;9H32Q2?O:P2x.k z??zW:b=~zZUJG#?7 l0>/2AǦݷ|m"6ŬN&zSNFFFrrrXX?~uĺ{Gfb (*+<;|ewzz-\4gyFR?xQ~U| M9s(X͊Kiwm^FW([~Ͼz݌;YZ_f[&]&`mJϲn"ڔ]v%%%F155UԬYٳzжȜxo={ .N4iРEիW6b"%XުUoM{cٲ"?-ZNN^)fuҥ=zt^zu6n(r˗/;o}.RФEIݺu-d0yq/y㍩'%ԭ( y|4[wܹ?:\n}e'NhذwUVM$ UtosωǼIyH\/ŋC_v.d˃wdge=#3#Ǯ*®T*ݾ~h2feelb̶޼rk٦ iiVdmLQe-Ν;wQtަMUju``حfeeyh[d.**>hѢI ~vnjBz0̿=_jtTԙO7SH1EIp[?SRRS||;B\88rԨBbJA,f4)SJmdr*ާ/hNLT^Ǐrc&t_~1Q[W> '޷O~z.hHDiݪ}* ,+WV,WWƯTenܹ%zx≡C}MLLC Obcc=-27pmެYϞ=/[&Uܹ>1r"\=L#H=A;5RT;V:۷1mo)d{.)9kynb* d}ζYͷo_nSV ȼq/jY LN0vlU 7;+rOwu7oh4b jDpжDΝ7s Q.;KQQ'N6&M?Rx5nVܼs323f]ì:9yeLWi߿5'$ʕ+gO/K.-|}}ҪU(`*yw.u֎Is֭8m۶(ë_UR1]vK,2%*S1EIq+rK_~eE"2eʴi^|٘~̵UV >wN{%&.Y+犟N:.]Doܤ]/[{%K]N !RyF1Z6n||Dr=zT-g~+&fX)*j\6rĈ-[ wnsx]n˭K\0,)E :lAbbFY򎹠-Фŋm6|Ã'}DR:vxڵJ*]|F\vׯשSGD͕+W4hpҥZj_ _N,)֭[W DF]zd4X,-Z\xQжDpp͛$~Um޴;{ʳfʼno'x:d`#"{ľ}].[r{CJ|S'w,hxwԸR1K뢬?Ƚݻ}Q۷oFFƱcƌ#>K/DF.(Wh"n:++Kk.:{hѡSӛ7o/K.x5k)CF"eܫ"4OFxxj(vJ޽eDXdɾ}/lڴiƍ{Ν?X"D2;;;%%e۶mڵ;rȳ>8r˗*]fٳ'O5>'6'9Clb۶běl@q '''ׯ_`0̟?͓.\hQRRRzv1{l"D*~}ԬYh4vs駟=ObH_Rt@ CvIx0HA䌌 ԴiSbH5.\r动9sܹs'NXL^xvK,Y`oi6E?\eݺuWXq5"bʖ-`7.;p^ !C޽.\e˖J*%%%'"ȩSD{f&O>>e˖Y;w2s'BND|C:"EnBkD)//Ȩ]x6nx9ۣQ1pLGST*-Z4?K9C)|RjXFH'u ޖBtԱTRZGSz]pp4mf!bGWf]p #͝1EB*4jԨrJVkνhS4uRDF tpIFP^ZQ+1E !DF~ nޣ ]Ss\GL+|uԩo\~=P6.$R3aCrTє͛(,-"9Y-ZأGQ#ՋǛ7_vmZ겥K[l!r(W; ML\EŋqVUjۏn;w^ZZXvBLܵky4l1:yovN>]#8i ?e{:|Tܹݻw R8$evСcJ1eIZڶuCt3A4oի )<SbƏ={ί޽/=f"NY3fZVG}^ʑQ Mެiݻ-Y}ǝ1Ed(}+VW2E-['0LժKwos[ .|yWz-ȳVZ";0UVH'"s8*۶ml'OrPqmL̄㣇}qc<ȳ1۶kg0n޸h11#T6m}9pv} >|ҥ6Me7٫wzzz'%yhG=lLq\W0}4#mû-t/;,ӧNt:___V+bp#7񘒒>ܹsO?Ԁ2ʕ "xs Ss=R9""]W_}9r:4].2FQTPQΣ)6^RsωrAA僂mz Ɣۻs'{uoߺ}=hXx9γH2ex3gT(]lj9?)!w v@ ٘8J'<)#۷OZAm{h\r< S)S3{V<%MyO JX)b )/]0Wpm Nr6(7Y!Pq1ȔMC7Y%U\I S SsmJOo p&pm Pp1Ȕµ)@ј?>@SΝ;W_©TJAGP?֫ر YPʼwԉ4qn@L7h_{f+PT2 p4 ~{SLSLSLSLSLSLSLSLSL)g~>q?"ո)ڴ`[j\Fǵ)@)@)@)@)@)@)@)@)@)@)@)@)@)@)oYUa@BTUjua;\& W˗.>u֭[=STeԭVVuن )1=6kǎSOU P="$-ܞSkaaTN˄ޞz;GXA>VZ=o_HHLH)/{XXWUv-R(b l6[?VZmvLH!)b`|Ș)@)@)o*QRb NX,EEL]ʕ/_\x{oΜ9)))UV:uA<9GCiӦٳgQ… ]v2d믿S&:v̻uqu3f_E/^{_bA͛8T4irرѣǔ)S1SŠbTRE$QrɥKk\.`˗mVkԨvZˊ={j:))IׯXB7ˇZfY\reȐ!{VM6h[ kSļ" RRq71c˖-kٲ(ǥK[}^=r3<د_?o^FCLȗw4ɑKEkxO8Ѿ}{/a7tP)H.\ؾ}ĉ2frkN';v/m۶ݻw6nR7/82xu9/%f'p<eHO̙3'owS%bx̛Tz)8_|1ysYVR騏yg^z%(,"p#y)M*qs犰1m蟎ygVKcfyvUQL.ݝ:uW?lذUVvd2Tt,R)n "ͦRR*=uTMH!kDV^\rjyF:M#2o< ڵK.SQ5flV1o;vl^)o;?t}y2"ʀc_xB:֬YӴiK.͟?ʕ>;;_} ѣǜ?jժ'O֘߯1cF+ )IIhQfwﮨYtرj֬UB.}PH!V1bjYR)zEԋV\n%'fLįaÆoaaaSzocc_W*ݺuu9c̛Q̙=`TGR &%_-ۯ_Oqp.&66V{c<7;w~wY߼yS.u4| >j#FRD(+EQ窗rU9&ڇ})+ٳ0>>Ijr_u۷ ZCc>RRINN5jx\*h=is?XG"rJwFrIܤ 9yx͛Qy#N'm7gs">z}G(ԠA(ly4犘6.(<4!9gb 6_cB BLxJPT=ljWBS^T޼q#88=߼Ql9UaB ELxZnCh٪|pJ3.6kG?ܨIN܀ )1=**4Rd%WsY@NJϦ~qW !6r<"UgΟߵ]?nvfg^E$I]R]rj,͌KJT퓲L%J)77WJJJJZ`esβL#s[[mX8qo&֎t}Dh}=?f4*Mn5F+7_[@9" Q&rRK [UHAv-lc$&TBI?{D] ;;oX,<یtR6zDJ"QÒOwɓ̤E9 }mN_[-R55`N{}REU3!_:U}4JRd{bo>||oMnVTz_<#43"v5_n q`zEe2BJ)jF0ʞ_RsaO;#9so~wBmH/_30|#FԦCn܌wB~e({x F6Ƣ[NZ Z&7*MOЌnؔF/mRUʅ_nۼg[54u cr3 2s14H%9:sZd% -B[ ؕz_-U9+ȓh"fe7bzA W "i$\V^a ;[؅ E$P> ռ7=@@3Чl0yA\k*]f[&¨I1s8̜=g " n&bYoG6k +se7hڧ +p7p[+~o NmԺWGvnen]pgo>rpV?>nc9ٲ~9s9rxw*(jC8&s6^RۂN<3@/Q3T>tn?$&ɑmprXI(:D0aCt-R,Y ʿ)&""K %`r^r\Z8ŷk)O/[xCtrsןwMQq(p1Fzem;ϯӕIS;LCFw{ yUtjlo1>PAQQ#^9)fSzlNK傍ѡь!㩻0ߚ:S¹,?oQBqC%9zMY}~KuyT|)eʡM-|qG(t1ݤ-n˱RM$\PY}NrFdǽ%M'ˎ{A|P)E"]g0.1EٻVIMKJo3ihc>)(j`SM5Ͽ6-ixYj ]`t_o9rS߮ Yy>-}䟸'8z O'ox§oKcoQU,7?ߡ]:B`߅ǦN.<ݫ.^;雛kݷN:yvO}rl\'MFy?'P ixܜ940P{J|@bBc.CҺqF6+ RFHgc yRM\!c3v>q=e3ț0δT>M\1T>5)R R)ͧj'l H*R4]LR%^,,,DfBt!D+3#*5#^hci3,3kc+DŽsw87g;'lGE]MFTLo1a("*r*P60d;/ө Hri F&B.D:\tON 1,M,L z,n[[%9MV.H)ܘWĥJ,M-y+悢DJ*Y+sxz.y غEW(U"b VrP>){qlᵝ]πfy*|ٿiGSWp#$u7?t@Nsw{zs?tF~!@$៫pRJK;Jw-1lC$P\s3_k =C "O^bJeøF\.Qgvc%9p3RtA#!~U1o֠>dB+A_ǁ~Dj'던̑srܻ4ZEO@2n(7N-YFs3st$42qfۈ:P3ϲ^k'=o<..gt348rޤ-=yWE2m, Ft<Hfwϟ_f XUݗЩԾ횎镕Åu_ɦZH/x}<EN.O Yf6r(j{ vN]NЪZRL훮jBb;Wd\fQrR,KB@Q qTzLHWVR'%{fdSssxBxȀn$|II1XƊ ܻH}D< LO>o"Â[I'[T"(=|R]z毹1' 9%T\\O%cМ"y)uFͮ$gi2UTɛ:HMnGo?|܅kw\́4@$>Bcr~W&mpEIi\6e7HޔC^YVn0s?=aPD74j# FhJ"EًeLsb/: ,%{F9qkbŶBY9GNeLP>QaRu&o*ٕ~>u֦#Żvy ff)8HUl%5iz?6&9c zƖ!QX351t;U<0[^3WL6\J^ ˭ujֵS*}RC> m_[J`0$Kj {`^ F[`^ F[`^ F[U'"H/yUTatǺ]) U;XꤸgScth7]ԩW*-T3Y½ݝMZXUS[EIyp,Em|^^V=Mͬ납ZӝwLWˀnRe at2yۡWJ(b(}+z1mVz1mEwkiгG&]b0Cw i紩j"&)Ʈ;`Hn]4qڕ݊5׮]tڶy#áH3eԴƍcS6$l~[f۶ljɄBaTt_sٴ!?2:^33 뾙;̩zzNmIׅ6jѮ+W<~Ȃvs>?C [>z|iSS+VGk 1:^s];w_| 9Ƶ(bVXAfƴ(b3:fJV=bWCwSzB8Oڷ%"} 'O `3[HԦ@ @Դ}CԸ'SetPzz۷$L2ܙDVcbburN 6ЅUwe15m2y%W1EbL&f8yEKEuh^oؘÎmj2SitSiG@l&n ]~ ;[۹g=~Rɱ̟7'q6_ii.. 竻LJCӃ ږ{M`\Lub0 ^ F[`^u 7Baz| !WmPi?7ZSJDSc =='凋|xMI^S>V79#o畔"ի6VNY%nMFZ:Ζ3Yy60,*P)>@/+)lېաqc*;@Y+֘t)Xj&Mu0^ F[`^ F[`^ucTb Rܿ{;+#])'FX۴g+WS?{G84r]# oS^_(cewo8lwmS -8f쳧̘իeX73#ݶCmWSk4rvLO{Q 0gt\+W:M^XJhU'4*iQ}G@P\/Us(l{1j+x܋^R\\dc'|ZF9갈7II6 '"1u;FV/%r]LZz[D"y cVB c;3336n{AS.?y Áptڡ~zY,VzzǬ 4HJ)=g#w 230`w#.>a}SSȈ5_Sa)T<\5P_ԫ++λw ;ŷuO"A~Rzi\5+ZrMq^z!(~98;;|~EnVx g4Jemw!W, A <=%孫Ko%ȹw ˕;wǽ 43g޸qа6lVκwH߻S2YUڞƎ5ҏ=ONAT+W/\t߫+g}իWϚ5kHH J\\܂ zAGxEvZPP6f̘ .RJ^݁DElm* 6bm~$W)ϟ??)ŋDx…(|Y066#laaQse$Ve0nQKTwQ=gk׮eXR񖖖yyyΓ&M _n޼W^E;wcǎ9KF}7n$"#ׯKà ~:j (O֪]l{u511mczȋ/`kkbR۶mStрmٲ޽{m&$$L2իD˗'NxMXMIʐ3'{9rV ٓ'OvJle'h4ꓦ厌$b#ǏWU;ULKGE_)*志Ut/b 77oe˖5i۱vÆ `ϟ?VzgP#I BF ct]RyB-{>nܸgϞ،9=z4[XX-8o޼9C^^qeOg!?13a!Ǝvw؉S"%z++{vx4> & ]x؉po [m ^𛒚JI~ ;h|_FbZss{wB 1@խRzՋ>4ɄBIْ7-Zsۺ%p(CFVujy-]>J썵*V`W_s&3+NDW~ցի6Z›faqJ;b 쿷VWTdW{ϣv]zk̳fUo@ӏNIP۲u+[y Xjﭳh޳fU3/Fc`b0 V/`b0 V/`쿷nBѰ^Lѽڮ :fjݤߋWޝ= um֒W5ˆ=rcck{ȁ/~tv.ZHޛv0bhtgkّz1r~triu ŧ {WDt^[]SSjOTs at*;Tm1@U񩃩"X$z qoMQZ EKsfV@Q۾yX-Ꚍ񚒵Ν ܺ9q J޷S;%i*:jmMO˝202Ecc_qws1sܜH6w|>ݷ۪Yݞ3=v/ ns~BE41@UHHyY._/u"/BnݾI޾צݺn%y+ 0w~p837&ly!£bGVJSdsnV"3& EQM~  [}1N1kmxDTd8uڵϚ%$nQߵ+,Y7|:usf#9;0_Nb^pR* 9 bkcc}(|Z%Ε+x)uy1±vK\zC#N|0hWT ^ﱷ]{Q^9g0(`kk+9rm :p:pПXA8>v}"J՛1fC`A``/({226:x#^ys]P.Z^f t-zF !w=~򴠠BjFJNx'"ׄG F>p,ʢx @(־qjάps?CdrJ9>|ȡ=%}d3 89: !D(l`D< , ]ooDDTЂF7fsV#g'o&7{.02}Vxت^=|LLNΦʪ:߽eF"-vvY+=~>=ɾxrsWd߯j*3'6ťI&_R-_90pk#"W }ݪ}fė)**0hȆo//ѣ!:j#U?о'/*,b1LD?ߡ0NCkd3U{.N1;ac>鷸Q(+VAEN4>hђuk6x6&CΣsV4k%9Y:;phQ'Nq1a`$!8dp"+Rd`~'NusN]1+eb@aGhݪս [rF?vmd47qS\誰SfΝ=(򥋃-jLğ;Q*U<˺h;;:ť񸱣tR%`Xw7/^=R+׎zޚ >п|&Mm޸;o7Rx'#~KCr8w|h υ)I~S2/;ӳ|PEAp1(T&9~oW,[Jucċ= r \)JN^d})C1:r}kRr_Y_0~\NF -ǎQX$z qoMQūaֵ=CQ۾yXb{+k;w3/pĉ'(I{N555=&:ciIDV* /mW?*ȝ202ӻcG~,檥zݹk-=-QD ^u4ruEKw="Rjϕl ͌Ѹ]5HwE δnCQ ֲUdr¥aolmlN7qi>k]!tmF(Z6=ؔ-B4jrE6nӫGfM(YQQE!GK,qƸ RSv| °rufc4vAn[huQoo/oժ1x֪FV.]׷oظM -ǎ~]o1~-Q6E9CZffNqY/?SSS<}i3f G^vY330vE4&67_553]($4tU¦66mY,&'9ۻT sV?Y?ޭKu2{mzzǬ 4H+7͍k+W,nQE rvҥ{׮֬""yw+c88*T l ǢW !xM( ٓ0^,!5(C`q;ujYy2vz F[S(j['' 9c!~GToi[F^:m{ew'pϹNbbAх>9lmΧjd oGm` *ffa.Ԝ]uHgfѱnVc:=}|ͣ9]ig[-Xjϴm20~~^6]݀F[̱/*ȯ^ÄZY6tֱ50 x:&] VALg: V/`b0 V/`b0 V:D~1.|Tg2)^NիN ޿K~^VFZmS FxznK~@ի6\ok/6cjك+O96 ڮU<~ wiBK#Am#Fy 70#맬L'fx[`[|бwzIHDgU?I/85D%:^u"(FT˗u>F -ǎQX$z qoMQūaֵҖ3Ф OW3[(j7o\\+?^2t՛عsy[7'N8AI2-vPE{~x&YS[NN~'riA'<<rț@cvW.o&\wت~ո ݹ|½ѱggXZV,+Y+#>{?v|Bn*LPUUsٜwڽ (eKA Eƶ睻۴nennFs(99eeKnl>z̙SGVY._ç; ~{;}X#*K.T+9@o1+5f"tsgZnu!(L^As̘=)`c):d}9fL 6!qE*wp\ab1ѮW;а|LMLEǢ,[y؇!QkU.{v֬)Dp10иmiin͚mNh![7x5v9Ӣ 7tգOMHhᢐ#@x|l 24 sr%K^uÎo'klKشuu>r K8 ~&% ° nlblwrBˮǏz{{A|V hІYR?b9ֺW1#|{Po޺}9̝>e [|mC&(.&-=kϞ *:6lu(oܼ !uU766~VϞ>o>unAKyJ|čS͸tޗNMM}> ͘6<"*2 ?Ĩ;y|?wn@`7s#"A㥼FF{`"P:0&67_553]($4tU¦xNe,ړR* 9!hazNKE#O~Y U(:*| A~z^&M@'rGݻ*mzFQc#lBkNНh:z޽yS\i% c)4);bV\ѳw}t؁;9:0`8\t1VZcnA1U4jHOϨ0^*NT:šb[8L޵sd&nݲf+Oܽkg0ksg1ٽkٔp~GDg6'6߽{%9 z**}ߺw+6B;G<mddJ>v$ NN0rV~^d$wwƗBa&^tJyXкU{  ]tkz8o[7Tȡ£V_ڷ=|pY.0FAK޼IMH3)`)_۾}zs\u/[buCvzz_NP=NW.A] ty(M{):de!(EEo{̜7\24xqwICW@v1?T^ eCMhog9JC'n>wheK-]bBui"YP 8hMKMKВ굽@nn_bIO?>R^ho+T7}d(Jor"6뀾q8H{zH/ADX6CE-Β[A)Ao{Q d bsiDG*+EDň{L.LQqpYQ `֧0aX 7CXIQ._:cڮ^Z:wԸdzݹ^UCQ_n&3/ck vEoJjTE+Fs"]+2Jǽ":Hu1@/$L7R(N |)ۜO@ߎjS7UT2]?1K~^%GǺEXjCO76l,@9jߝ[ѱzCie`%xmJ31glәcm_T_Q'Xj*mckk;auL^Ãnu0u^ F[`^ F[`^u"b>]%T/XS/Kb‚7H%54wT*MuUl{#׬Z1NvɆs^"emVC굴q^/׬yEx+7ww{8E;266rrO=kҲMF=,]c̙3tVh_|G߻S2YU:7vԨ~&MAfM\zvԵF+SIz咜2o%?|"vy̙SGd,((x&wԱF 5V[իO>ߏ?8m4U$&tԒ&%NC?ϝoyYCJx-zn3kƤhy1qoUа|LMLEǢKr+.]"]@ TXԬ&Hljj a.Xjc*MIʐ3'{T3`wϞxJjY+"-Yq^fzw 6wʱֽ[[P޽wvv۷8\(,o^N9#Vo֢Ew݃ͪeQJ{9VRL}Ӧ̞`VYYYoIwhQD]WoȢCLMM|cǷnGRXXo?tӧHߡC\Ç Az^;ldD,tT~ T  =t!0eJ(=艑dJ 2`S4 05(pNvm+{`[ꕝsuu9r跰𨕫!CuqipXNg'+Π.<٦2pŲɢc}}b;dpr3gLJJB&SNrE0yؐAcGD;pĩ{wSgNBYOv~]7NxO%0HfHTT. VSeb.[X:n"iݭlh R{DAj*)_>]yH 476B!ճ#f~7A@dtt6rC4p{ͫcV/\2\iP`[|L{ R@@NoddtFQAfzDH^PyD%'AY(k> ܪD*WUWoյ.dM` r[hWT껭PzqG$ox\T+h.]=GŮr R`[TW6U8w/~ [&"22t*-PCVJ5Vy+v/[cT]S36B400re4vWɪ -(9)宽Dl:Bmoe;{~qܼym߲u%ks*pNիk^z-h0ho?{M]"^j]k1(kEIUsWs^={(y~NV:86M[]N3d< f߿uqsGWz%.+ tJn-m]~ed >wsM_\l-FFF?ٰ)]OuOϞ ׷erEy (JNBr.^tŞ\ͻ{󜋻Wi$ڶ,CCج ?;s֣;Wy~ģ[V#մb;gw?z6vAgy,kGٹmK""-\0>o{v}I/ 5kٹvx+Wݺ[+++䛋JؼÇԂlZɮıq*?mdc*JN0qƸ RSݾv{˖ _r eKl[pX =Ᵽ{k~q!WdcP\MyݫۉOܿUWFM M\TKY? (حigzu'Ȩm?+/?n/].*\Qq(~}l܃o^jjfhQȊU !oĨ];yQ!KtBz(W* >:r_Z&]`ŋWQJZ@ ^vfff g v"DFD{׌"EIU^lK{ѢSRRZzzȖ)+yΠ[>E+[kgZV\$D7jө7V,lP-JYuۢ%bFGe#؁m#=ADO?Ԕ|O8Iw}ؑ[Ӯc߷P*+ljM_,[gd 2jH3~xtE8HQJZ@ B l, ^N^(>)͌{P%Շ2G551-+646.Ig0Pݿzαq(*׺3,~S;1$--ʚa oдgBOaĴ6ݽ3t3֬*wEfVQ5ݺ-)1[\ѣ܂r<`kgS)Z.Ur9IwР,E9(i%'h6Ga((US~RJB]!H0vZ]SS=}}ٲ WT\Bzc"~C%^|>41cWsΕ8$4di戟Q%P(zӽۑf3S~֒pe_:N*~Bu}611ϷmK敼TsV)%$R$}(7d 0IF.po_jʶU0՝233 D9I"~^MQy"uw??i̪N PKb~1LaC t㦄_wD{QS& 嫘?ELLoSքSHƤ gTɰk3t)u{86MzRQJZ@DƎ ^mfF6EqfbTx{zz<"rH ]ORxt}Ivլ& p^8A4=ʃ$=p C6mjm-,֥qO XjMaaGRsA7lJ8hXjZZ&Km[- 7~:rgd Ҹ1~y(1a'@%NPl+WwU$- YdZ[ Y*`(Lb LZu'C2WA.!,LL٭; 4rn5EVvT_tNކT%>ǻM'3sCXY[)ɰiEAr>JD ^>R  "rR罪4Ⱥ2t!47Cw~R|Ʉ ]4*Ĝ(üJUTyH?P8łDdN HQl%œ01QJ2?~ b~^Nm6fe{Δʿ`lbb2qʌ1Bv9ubs]\+*s]~V{38$4 b^wZ@ 9SZ===\?-Z}}="gvBC DΧtuխV*{Q#?4sss-Z15Tn1hdJh BPgǠm7T5^רjmF,&R4O׮ө>:_ j1t穥Tַv!S׬Es_ߍ =g dsƐz4Pȯ_F$V7 l@Pl/U|rBz4E7&vhYZ'n)AXF2?05_B 5vzNn̜4'wd*d;G}}fJ2sti.Aj*ϴm20~~^]_F=tXY 7 ;i|_ :7tv36 5AU{'B+k{ۆP@wH+V5wG 5D<񠇠NVD 5e`t^ F[`^ F[`^  ^RK__!XL-@VUSeP)V#LT F4 t:I+iXZDEs&X1b%Uo{bx2 1\.@J@  t5SM"'ABȓ|RI3RAX*B`A.A BP)jϙB.L// 6z1%!S,ca) rdЗ|BP"n3ۋԄ@HrKQ4kEDXy)VQ2(mb[ch%?b X ^JE^b(3SV|;`0 sFuAVHD/?rs?^# Y˰ [RkP 1#E"! &,09K edY#ɝB'H.Y`*g%F pDCxDׂG 0"h%J}K:kN7 (UDOS„Wұ&6C"/qb nG}DrV^I"BoT M"4ڙK:ahxo+_R|Ӥ>3~o9M%[3:8`c%umldpbSt닮; M\t獏x5L|oI|iAEiWR$|ӜVx1r!o&c2Y?GUl/aЗT V#N܎.U8s@q:3f .'726<f¼ޅsMv\uTh7>fvj"IF-jIrj6`DT*-c#cMA2!,&]i%7[`bOxX4 0f"%/0BebҪ faꘄ?"-}L=0IL4(̈1%2?J|"%!1Q%1 Վ~ )ݺ2DІH6]ܿnl'!oϛOh\ȸ4MyH"ALmeTqI*f+@ep':q`4;]T:%"HqJ#R0' W hBT3#a1K'z>:ICiEm dE7Z&~O-%[֯={e Be*˪$њfc!&HA\7Y_A   ǎ"uRt L@/طo?w[x%_,)laOA=}TpmJ-Rd6$d6ߗ`I 9p:\%</Sm\9`{a0f A֔/ ng= WzqdeLx%&W3sQ.8a~^80z!}Sp!ڶm#Gٷou2͌$K}4N H dѼw-%ϑvg{h>r9oF ӵu|RQk?}} oǣz&m/^p =~x㕘ob/@^;yѭSxܽG5SfdX}m={Z8u:gϞOqYR|w.@ZN6Ү"F Һ'8w0%쭰W8>} S":5pʔKoV,M>ejo s{1g /0xg.tJu|תɴvs!%V9qG-)?AEI>iaw}A|;wg2[v%,N8%-܆] jYFUppN{F(κc™w/Rjٞ+:BIt+vM^z35pH3 Ĥu|C‘S'hܸQS0/-a5=3^.}zڳ 'dM JV)ʝȫxɽpU#dy:PԨ,A=4%܎ܓpZ=COjqe 5K YaF x~Ogf}/siv6Akp˟࢚܄SL]܄yc:R(%v;grwHno v \="bRe\8 SĤu|q]}٩ƍagvo]9ߏJ|oC6%_Xފ"Ǜ-YNmϋ_=aFkh|}c I(3[ԤdiGuhș?-㕘or|} yczEM3L|-Eq-楒)We:c}8UFqXʖln| _7!g|4ymϘQ4>+u|{nGTL !i`rw7j>6_OKxO,dXη6zi.r&k1!W^Z}߲Ͽ uݩ<|VYc]& ʈ;c0*KTkGm/8{Ĥu|3 U_zQ'"ݽPU=FG(lBZe63^i D$~fVH[1Afc'?ľ3cgB%!$@3)Ihfx~2m{/_t,#̒iɲSg3u{ j& + + dRt2b dK^o5KMA(u6r\ dF$+ + kV)+ Mlҿ +vД i wfvO* ڮbԱ.SN?y63Ar)PB: >r}Ӷm4 obܨ=?\;9rSPavlYcT>b3h?(f]pgs<@M?XٺP(L*?\lnw-܂3&coۭ<D lapys|Vc0Wyoz 0)2wޣV֯U:2NϜ=Y<KqI.@FQ?D*0y;gȯQ63- K,M IL2y  ttw_.k忆 6<&]2_b7on6dC#239!> :=Pt]} @/?Ԓ"j1zfqry*z7L?q_YeƯ+^ߘWw%v1FanCb馹qYo\E*QFާZ~Ɯ~6U]83#_MB{zGŬb_ަnKLa\{at>6cnuN+(3qc_}?|~#>]FL=nV5X7 1w50<Ceoq}Wۛ %M~$]KJw!T=L3fukQ@:;fT1r&ڔɥU)&]|uf/fG}iߚ86UN|?74Iy:^,%7 8uR< G dN6nHH3-XA-̝ԗf(#e0J4>0,TH>M]>TA9&*in,sgÏuWyǻkNT Bv|5]}o ͈?+M}<<1ζ юV&2ZAiZHGA;+JvdiG1Uɕ3ݪ8XTki 9 ]">:|~?;e11Q]<[oa_nGW;#MtM|d>KO|M_q5c']r ى󕤟 BVJ; 'E-#&BNS|< B}_Jխfr Bڐ    + + ɐoAWPcߛ;QVJ|Hfw}kۖϩL_˗nϸN:hN߹tmEZ_:662Uʕ(Bm𝷍ȘԷlȕy$:W&s_ppo@s9I;d%۹8Z®~eUt^ʶ?{moI@oJXPD㫰hJOJXNq]iDmM Iu %?*eOngDoZ=Ij˒߃JS"=S^^^o%G oVҜ"PKJvCunG0iX=Kۙy M/ SiVrRFI| Ss E /s@pcu_a|3 *Fm|Ȋ稕3!}(j!xo2U~muTm}2UT# 2⎶(2?{;SY̐ D'@-Y!Ń9/R{%ӽm?{1•1<"&~CgsSbbx*Q;:5WM.u@l=1TD|{)FO&cY\3Damȴyy1NZJ#~+wwyf $fyTQlJݪ)S(%ʈTwv^Kz܋TczsyJHΣ&gʮRaOoP֥G[J2SkdZSu#uehQˉ\fXYXuOq`J[a$s;p|&CuA7qqvf]-̒qv>L0*Ɣ6 _>vk9SҔ]fS$>ճ{U=kubG;ƙqOkPfZ?8Q!Y?sRi\4I#^#I;dqlxօ.ϑkXⳗzvK9z׮p^T$"3T|{3/>Ur؜/!#[;Фj yɜ.'>ބuoRݞ fqFwρsʘ(~i^yD7Xvf!lҶ@B2D-v>Zm2HD?`ޠ kS{nGTL !i`rO[>V[K4ؗ^Y^FS6)jO$06#NdM4%q;V7{LvO]6?FwQ0vӢؚ hT:]mj k5BA&)o\]~Ǚa.b[:oݴ{%'.b6C ƽ^5ɉ[AoY$ {'L IDAT f " " "   ,,!B,,Ba-?kէkNe!,+!3%k0hX!D|3£ٽe5mڱ`:j]c.M`wxd H! V9(E޶ KgW#{Ұf5J2vxT1ᬚ4:+SB=FtTݬfna]&41l[ݨL*>ou54V1`fBu[{%m!OşOQs=LzU}WMkVRî˜Q3waXS+*doU^}D;W`Κm\|Ѵ,z|Еp<0g0]5_@uye˗}'Oq6J6S"Fv8åGIsx%G d&]r5;PS{LM]3:<Ę\e+Ҵ(.DiEs̵'G406dFndT1 /'VM l-1ʉ[g?BnQxA`[ancW=&|V/0xg.tHQ^_NʕzY88T?t÷\)PM{9b_cZ:F/й+ ֯e65L3\=^C[kct&i66d6<;|)iL‘S6ٞ+:BIt+vM^Z@߻u/ys*m3Skw.]:{[F0WX!ېȇNpCLQQ v3KSuԣW؉.vJsm2}0dml8 c_#kFLy*y"%4RUܸzFZ!CVfꦖ˗.^1{2ۖm0NnLR六_wy{PhGUaDd<=`ېxzI?|>yy2 3}&g<nةްg/}q62z. t})eZsLmu2BBCjUNWVѳx\zg\vkWRƧHL7xv;e!;N6l&G Q,Ѷ+_8Peo VofeutWvʎH #d<=`ېxzk#-,W׆i\Ygj~ӕ?| ߠKJ.8Vj=0c4"3K$l?$G"f| B@Գb-!7oAD|?b-!$  + + " {_pjfi1F?34d|M[G0 FU^*6olt!;v*~+ɑ-"|&0\uט&}+L)\2-ıLړl}CmC  ))!=CߗgҜ:cE>j?7j\5|Nj̫_”]0pS!觔qgtfu#_f#%Sjc;@_ujꗟ'9*ù;jβ[;gcѼd4htk/LZ9Mm! S5T:ozy7A9[sAnKQ!P_u/3CgsSbbx*Q;v3_?|# ʙ.>ՕXʖl.}2F g{%;`.7MĕNȆ Y<}gˌ)W}6I8[-)XNc{AU>]V{ J!dĹhL]̳?G jUTCH5b޵ Ȗ~bfqYA73 f dvLAWAWAAM3%K;Rr9oF ӵkŨƵDX>>qKǷQ= v%cV[ߘ:n41f{~@ZO[ٽ,"o|m|]?h6?$BKugWE*uL;݀)wr)_j#WWq[VMLJ~|j {Z38l@O1356w!j4nOCf릟&_IvMF5xN ;+Sr/A/UZ}4[7ގv6|c2wm"^a\,`nzקd1fy)iϘ!1(e?0}1*u3n5wO36}YcJ}}zև)jij1>N^ |k7^ݪxҋ~RZ:F/й+ӥo{A6ﶅ^zA;hT iShjٞ+:BIt+vM^z35pH34WFc37=Lp-hpgY>eLُRs`fmOQyg kFYąqԟ6.|JJsahу2{"Q.o1`Y<'%ajfC͎{K")]Q~I(G۳8}|;Bullʢ>p:ZΜ[ŅJ񚴔 ۻ;qYT zM JV)ʝpx Mruye@KSd_8bТ'Y ,dZLkiʨ&iw:͵'4o83i5C$w;;ZpxxQ,eD#3ҌV?0̏2f7]++F >~8yWHo{g=T>ao ikC$0aq,:'ﴣ)'s6;%7]V=IEa]7}9*!ohЊ?G}eFzg,T7iKxq qW'p˝$#yze ωڊ֎94龚k7bㄻ Bo:7Fgp붇4P^ ro۞ГPfv3myf[>w_Ddwb%+a̯nEyJ YŲ3 fەl1ۿ^p{rp,VN 9k0x0> vaü"*%7Τc=|7PaqG/CPyvͳH;iȌWe:c}8UF: u>k؛]>뼍ҳ+Ci0O~c43d֟3SgJwE_ݘ_ȅ}S< % g_o=u<}G΀wwãQu^G'I= ;ϧQy2}3cR?Fӹbbf_n>Xo`N8֔PIHsg]\1xEqِݧN/VEr&k1!W^ĭ ,go~?i]w*ϣ,(_ktj7h*#F΢,S fQݮ+5K1d|=[wg㗑B¹slc.m.1St&ż]viAl]ۅ@"_A_A_AAWAWAcoch-_&q̀ytV,H^:c^1&gmxoӛj..uC?VpVMDʕ)[~:(6-[~M:'iN>)jqAczT_'[FO{>4o70o/b]HWʟV  , 밟9cqCLQQ v8ckch cT){Lߛ,xa4]gr>2eV/ 0e _ab.KfЮ~*M2#+LM]D|?0]b#o_frmɭFsܔ٘e;OWâR2gmÆ_5{+cF|S՗qsNM :azÞվu_ĩ_= hBRERWEP*fI/)^l6fy[X|{3/l9&-~ S[PalMSnxkmizάg{%9e>1Q^V![r{k^ s]ʃH"0o5Rh[rY(a4wN3d\|KjSOW'&vϡPP)#wcPp9Z|?${"x_M[avF9ĝ פtiRW1DdqOΈ;9Pr&Ncwww* +Cv *9c!{!f  G    + +)B/_AD|S*l?M4SrjemTltY*%& e]\ M7C鉷 <7N[H1+{2h^~sӻtm.7 ] Hy2[(diGvkJ|T ,Yڑ|iX|$-Yڑ?ҤNu8n6egbwbqO$e릟&_IvM4H}m;*Wfʓ;:fjPZ_@\e6rCyj7CD|3 ͓+tErdծÜ;gVX}?ׯ]/9/tmleek:9]3pZ3:Y.^D~;LlqaOIU%Oj1M?ﳨ 'x䚚 &{%3xp¹=aΒӴN?a}}U$7>&zƢ)=)US3kjvDD|?r 1\Z *L[$o W*A9Pż{/42z.M7*2)& 7H?yW(M}>wtN28;eof#<Ć *uXkۤߕ}}L> efZgg X8Ǜ믙ڣVi1_Sr "eE */biaID?do58oR-qy2k_bjT2^XWdŎXD|ƯmsvF׎\,NPw75D|?ƽA j}[FUJ>[X zըP+/j b~" 4}s[J$鉣jc"3K$l?$G"f"NU>L]A {FR ")C1X.  !e9a E,㻖st\e78 I}%#f TV  IDATJ&; 4; ݏ.P/Nmt+m&l=H_xuugmo޴9ϔzuS/V)2׻)WKņԭZ2aivvy/}ȀV(zU5-#}}o^2 3}&g;&}s_zSCY1KI|U7Q+EB4(j!xoJ4DOWqm)#h;ښsM$nb8qr'sF:{؜/!n@n} -j23Q({tk/LZY.AOUZ `Cs$23U#\Cȳ;,O|xbq싆i%p+1Q{ ӼL6s8w?bbyM3VDzjtAwc4TgYM8<~Yu{O&_\ʓjSgmsYTj؍FkGW0[~GʴMc}<յa(W֙t'_zgtA8L]1SA  + + fU:QZD|EXAdNj#_Lnfȇl6ymi'!/ZEA]ޓut&v*~+ɑ-,s1񀟚IR~{Bx/›YH,~w6i_G_do<:>WjAo=8>a щ\ g5fU7M5ʺԡxZ UL8& NʔPQ?Mz4wZ8TkYQ!gҔGPD0&o2~ZI/#KoSO_AD%V=m[AMM6cN5Ɂ<.3yRdd~ܯk8~1]5xZ]~& .ĒqZ- jtс?NzѾ1>?O-2&2w+RH'O e g޽pv)J{B팩|=2BtPL|xސ`)zJvn[Ah7W>5Ğ39;@y|SSp|5,Z=gmQkNTǖlL v yx y2fSwҏ3VR?-ĚOPKW߾ڢ|˜? iٶ`,fmzOkC7KW LiRbd`c(f6_ٚsM$ r[&ێ.C|.ilVq[P,caBz! S5T:ozy7c H)lS] b:x;ګRbd>;t)#~A(K]>m ˍgD=c4w6l7ah`#vWIb#^^ΟmYΨv Oo|]lYV=9\eVD|Ұuџhȼմ{֮ըڑ46PU>]V{}6*c2l$zmE`to\C>}6Ick׳%e+ixYb~` f\걞:e0ȑ_1bZR6S7!kK"a4cWJ׶,;uVAGR6 B|AAdiGJ)cjoڑSr-le+BWF>dʠTr.ϗ1mhVP)Y7y ]\(J?Mh`=>.mNhe8,A ,WqfٴR][;-1Fob8ҥRb-lR*r$b-"BtH*rD+ݮcwɕkcW$D:L3ff;Ix̣{~}}$q8k||+:JC94_,9å#)?iiOy#gWp˶^#I'젪`:E!ӏ$oMHb(m-܃ `ׄ_n0nֳ߱:F: kˑ[i۸=.WE W͏~U؉}a 5-8iJ^Qh.cA[˘ FL&06蔷.!yIܹ}G3DIů'x]ʹ͆8266ʊ9hӇeEa}]o]GM#إL&7j x7N8Y#Ƣ|cZN~\l]0V y,*=uUԚOOGNRCȝJl_]Nس\ƈ/~lO7IZF(cV ;C M$-j2`Zg0+i!8aau ˒ 3(ewl \#tCt0bV jYy^-Y;\u|on>yw~ 9c{ЧeQ 3u1$AO>:=^LQ A>L%*9AKAKA_dCJIԫ,إ9HI$-TSמ>.ZPb^YcxPvibk(Q3@QX"Z܇J#ܾ~LcGBC _Er(-ިJ"|:vKCԛ"Tڷӡ?iŏ832~>5EMCR9E/ptk$<-D)2p'Po`W772}#،.@BxXwYYy\ae &Sg'7'G~0b^)9K)%zT1K=7̍(j{;!mmLFtU$XwPPfl{ ә<ͳ"/L _ű7Qd˴/jշ4Eu8,$1R;[b 7]Y MQݖtU$wvBb b k_RB b&:4Z`p )^`if~5f0qhdsH_5 jVHܒY8d ;Ԋ?wFX$1a2ޔێJsp*2.߆a*xfLn= "c4̊ǽepȼNaE.<-+ ֦aFC|&ΊGmL?R䲰36ڠY7N_\x+٘9;YCg8z! d-fj* kKgژ9nE{C =S\7A'}+LsWbGM7 a6Fٱx^+NBKM*<=Y9&yoiA:BN`帶R"Goʟd.ʃ66=:}pjxnhۛvŤkX4^)h?ju!ج[TU`ém薀+ϔ6v< y eWSR3Q&.πoeXץQ _sa}T_az/rVahl^\K NgRʸc<<=_D۶ehoڇob]gү4ǹխj?G0w6VW(;DVIY&Ѕ{8 cT;8 >̴p])UOPAiX'b]&GԲJc9㛈9oߝX?Rz hhiCG>Cl*=0? ] H4dH?۹<b؆_-eH3S ;x-܉0[° ~|Xp" WO;ސfB?3AeEyؽ|Mt5M4m ]z0ѯ̒̽7`VBq0l nSĮo]7@ԳL`hqoZyV;t0T3ہK1 X `k0$zk!w.{ u#Rw(3UH*&Gx^x"|qf0}=ny@L/#zDԫA2LfZ8>Ƣ$AezL}2Lokl-Ccm$AIaz} BA$A$A/AX*|l;׉(E{3s;V3u~Ჱ}/l--ӢvCǜ ?;]as$H|e,/4/"TGe#r X? cl4d1S|XiXr16;KGR&ҞHS{&3_`ƿp|$,+ iNм5AJ7fHoS/[7@oO~^꾽W` ѷT~U%:X9ὀW \o"4eb ?1ЀV^qݞɌBYY *rh!Wng=]Īʿj>X]0P4Cr/bŞq3, Rm609iF:GŖq.Oɓ-r.ęK%L?lV={R8Ļ9UN+ %̙˳s~p̯X6fGG(wXpK!@3?X A3X?5ҀwY>/Z^^pY 3u&XUz모5WLf쭜qdgo$xj bvOfk (f&k&Cr@񶔯ى1()~&G&92VQzDYQ>i^3u&)?? e5jՌ H|?)F}cbd~dH.\;KWCAe6,zE?'т*μ+߸,T~+L 4y[>< ^3v'vFܾ~ ƴg2f6$axWHxZ`v2'h LӂR< O?W ?Մ:6KPw0ԞɌ H|?0{q /Gþ⼱LM,0<y?Msp^,6 ɴnS1U +Ѹf4ºɎ7Yt"t?o#$<߷rؾ[n|X51vRLltC{wCG;xk+dN__:ADu 3u *;A$A$A/AbVu _g ,@Xy7 cz;E:`"q[hd.A wXw@G>[&d/x$ px3Ss8`o4LGfo Q?oK>NM2t|_> ?6v~Qd8k||+:JC9bϑ4uwr8Nd^?0"˼=2S'H|k"mZ @Fakp ;&q_~ݻ}ّPXs['U11+k)BSÖ5Q3?;?9bLUVa2S_|!\a.c߿a%hCEC('L !qf~V1-r'r ?ca..6\3{e.$`Sjkl]1)%y{dN5TpZeŷ.iUi!s;>Mx +83֭wK3US\¸CK)Qxyb3<\ak|ʏLyoo vI͍. ^۶HNͫpuqb8T4~3QRQC3cYiۻwn_;U3: -AׂЯf g$3ޕ<ԴAd3lQG',^cd/ (/D^H3SW᫶ bq?0Aڔ.[|Q`f5G*(v<@~ Hߕѱȸ|x@2 `?Z+##F}hP"aCYpc4 ɸ쏅:071.ǥ`q8xO7kXp" WO;dAP[Ch:N`ޢ􍸃bhU/Dڏ2-nnv-UC-Zloe5;.x YtZc&Rz!s缇aN{o㌇`ئܦ)|FgfndPMf β;|6SSM~}7Aqst0 {g y; d^SX;+ocA|m:AL ⫀ė ė ė  % Uȿ _g %u\u%8_g2cg\?|akilŷwLvӡ?iq&3vb|.I8LK{BWAԶ5sK)8W"W9Cp^[cSK}z =~mWqmo"G t?~2JI1&rǙؙ+@ZM"x++ j[|뚹JfXnf-@qoٙ}! ĸ`ءOWCLdgCHmⳜ-"`(Պ "jδK0Z0+ j[|뢹z#qw1^Gr_ BYyXvMu#?멎ƛ[IXk^ ؙcq`V鉬V]qQ[ytXևvAo)h®]>OԘ]5_3)*JՋ3^ fL7QScӱYPV3+ j[|yU2b9y(\R`<¿k(P.yXg;vHp.T3Łr3v;?h`J_wC@ŷ.k5r@hi!x99({)\0V .X`33-o{ + *P usu8>a?h5=À7;\#tCt0bV jIWAe&3u :L +ė ė ė  % *گCL~" /Z|Kߞew!cC-,f54IwO̦x#ٞ"&!'H|8f?:?xWױ+GB!z/8‹A (I~bZ/BwM=;?9ĬKvI83%l1LP{VeX[:G2[o2 FnHm>$u7©-ڛX'?|ϸvʼ̺GU%io-e4 ͳ1K/NA_'7BW8#&J\,L_g&ƻ``4+%'F[84o XwPP\f_Ŋ=fY,\]LdYY2W| eF-uᐵy/X:JxAϨ&GlnEbYfg92<WH ],am #SS*Drs#QqشX3-ԡS+dA[k+oMI]wh(}Jj^ GX?J\wM,CPESH,*+T[`8vqW Ѿ(\%zs>2.s B筫BK$u)K\)p`{ _&mNXf#N]=ced5m83&!z{aX1Uwonoϭ)sx-U:o>oE\m7a^65vhP"aCYL! YM%!]WRGD!X>ߘ l=|^e]cYݖ#mj>ع%愬Gλ68B H|-yh:YX5DxBSk ;d[ans. h.߶hqoZXX% m7GpXvB>xemw ߈AY̫WxY/*tN 2CKLD][iߺ3`q?R!eQfA(E #Dh#%>/ yRT!3W *b_*n^Z//AuM|%e7%zL;j&pDLDtÁė (@UdvpSBs<vHY WxI| +M9A)7WWTbW*(%fk1/᭶ `F+%ė ҽ|E'?%1ʼnlu %.W($򈟸LVTx#$A ./GQ_Wk}R    숰f8n2]X)AAAAa#^Mڦڑ-mIAAAaUxfWX:&vd:ajȮ39nn]AAAA*u2_v{}-q(%%6ki%wO_ԍ7')WAAAʍ7r@ Kmdh"o..ud*a= w$aӖ`ٳcY΄l^F    ž!Rym!.AiNKbq#uڍx0RATAAAax9yZJ @}R ܜ-:Z+XM_|-²,,̫źGV+G,Ae^u[_7x }*1|5n7[ws?~Øs źr%/vJ)*qy!f?яv%S_|Yڛ26'NN5y|λ#  OT?y30z.ox7kI)i7e>Oel+QTA\I\9h Ku CK0jI W9׼m7w%Cɲ[t"S'bIA>2.Y:KZxËVwlτ[z˨jԿ~{5$J垍_4j*~`ĂySwHUFPZz~..;O|8/S?6*1GS>˴ 7QE+QEJ_A]T,`T7[VLpskci 6"SbIA>Vb< `Pk9ң?sxIֳúZL5ۚVW#TJ2BT8vi>B>EOCJ~V$1ǧ]qFkO*G)ioAAQfrA\ѲFjX*%f_ -}4%s8駞"J6w LV?tvŒ  \?e _ i7y!U#ÓɌ Sk_j0agsdm|O򥋏or.ZFH'?q- [8)pÆyKwAaf&!g2iES#Jj԰Tjܶ<+n;\ak%UR+e#K ppq_REʹ׿XN|럐{f|fj^x2ԗ!n|g⚯'Zm Q |ˤkPS߽d^_-g?0eyGAAp4S@6|ZJ ޓŤvAך`lifHԬ.:ܙ翞O:SF  dxM*߶p=}Tz+f㗶a'!S q&+W Xy<2D`$^(GLV4_NbB t  &n+s|i:W9&궛x[cZq@ (cf5۸J&_]Z;ciP#/x p}. 2¥m`vг<٣]ygF)k/{R} &ө  *ʙ9͝ݶ5:mNXvWJAAAA=FCP^Pj&wO_g̍7"]*   ^N>X.]@MN{\XKKe    iw`%[VAAAfI;I%AAAAaaIAAAA!DXAAAAvAAAAa٩׽5<zOK    Uc끄+CBAAAavCCC۸XvݔW,_g T̵̽n|߾-y$ω/SCsxƜR|+w]{_(`t`ћ?_Pr'4ӫ?9/!s݌7InqʤYu yULfNmGy6k?fWVicO?SqyޭRx񟿃O$NAAA8hn6 rEN;~ͭE]8+mK{oq_h;w_\Oruze͜O{~uf)9U|[{KWW~xf'{xNc嫮y_N>=>\vf~s9o{=ʾn?t=   5kqiNNmZ&R{8Ok&mn'^~qt].ӌ=f?{ ƻ?j:W3}:^wqSy}uB~5'Y*W,.^#T~1ey3]_;*=UWSmZv3W}Ql67][߿yk!gGAAA8j}5nMf.1nf {Si/ѵ54\UZnfEfmknQ?W]1VfJ*|n]Uy{r՘2M_~?ǿmfv>9郜v qxGם]ܓXuԳ9ů!Y\ϟI;,GAAA8J:sfw]|.R#RaK~5_m 5[Ä^+b- :}u5k/4wy饍7P}5ά/}gלtqy˗^;ey3]_snjÑlYf:'s?:fO$ GAAA8JZ|ٴOgφ"Ҿ&*.\.78c^,dp37o<}bvgo搗k.g?ݿ-\7ey3]_-w{?OT;[o_|5,cѪȓ?Ьo嗮CKO=z=_rNjqAAAġ|>ߴR:s噋1Ҿnɿ7~˿-^vXׄRdžr҆Y?ƚ rXfů^6lktKyfzOx5/鶼qcO4[uLs m@ZY\W|) wAAAbxJbi*}M\mҝ>.;Geo/ͷ'T=5oNNջNM:aq3;w;kO͑,oκ?H/Ҋ't}_OxNg&}|<0I]{>} Y_f:K<@\/[[>s#   PL'y~[;Z+Mgg Dkc ~U?gQ> ܹwiWAL&q~ iJŭt%,59?9sakvmaOt.MrQ#{|J%$"Z:=! 6՚3ĉE4R#Qs;Zu ÙgqdS^s]WǺD4 yAsC+,L}oXj |~y.m/PGf>G&猀o"4uo?4s;6N| c? $6L?iS߶_Rd KUumx\I5B P1J.4upS@pmy)\6^vM3qzC8cߤ7wQ]$s#L;ehG9128[dS!ߓ͆"bL\6²vB(ҙM| )J4 %X > O.b8"vjPxɸRP*ʹ(ܦRD6-<8P;'đM:eMK9V̖z&TDMX< Lۚ ;GOhN")SkQJM!՛}AS _ yWRmccQn&bsۖ"mIc6qZ8EyIqlS.on־\r DK&x * ,96*ZUVe((=ȢRqF+8渖{Ǔ5 xIsdm?SZ'.6qd-pc^ xI֘o0пsl4ZS+Smy2G2eM?E:C_lWR\f,cB=(NQ0O4 M<8M VI3Ff\蠌NTD*Cl6~B&xh!\"[1^w Cj%A䣔SآZ"IEM #ZeQDmRJ7 )EapgH#eRic["$R-Qc616 +?E&S,Y: ʨIl H8 AT6[sTDKahSj˭zݦTr#B%T%-K>N8.,J%Oppq!FHf9]uQ_;춼_34Ք5֖7і,]hk;2OV1eOek1>Q/Ga\ ŢR~njYq7prDh5g_6Suhw:mx2>,pB[fwFhCMϢGUن ڲѝE~e^G͇umڶ!4כFeGsf4nPOJR(뫱`a*WAd2!B@S(Jb@P.(W*>b@.# 8hq"X*ekd\5Vˍ5r:\ܯMQc.RlڔfP)Ta"tܟoa.]#ziD|uh01& -y_=&{|yhv<#HsK<;s(6 ;;G2蛲m}ܶg-zfQ~/,]^j'Ц[עIk^nUM?($nk7ҊTO-}ӎKuxӥ NӶuS.\x1j bux%U$ `8ʂͫ20PepQyj`aBP,CC9 .6oNj#aT &Av?ժG1un,K5El6AwU92%d2!CCilژfր-[Slޜfhk[Slۖ* :֣f! IDATT|7̻бVeK̠x?~t@sfQ]QvLӶ#ZδѵܩnD-lSis?۶7oGLEGqc~Xbl6gx^֯噧{Mt  Q;lŦM]SO܄ YtŋG9a-^ Y6Ϛ5YV?ǺY6/NŽ1bD7bv.z!Ac|=RFk?O',n_#F(y6:F*1cwRtMߘKwhngB] M0ޮe>6orh ӕ:XJ)|οoxm_BG2Eϖ!hp4ym`V@ iSښ6f:z1Ƕ=m>p'b2;Q]};o9%_lcǏp# exlSO- Ƀ p ,Y2ʒ#,]+dBzw5ѱ<}\ h /!-,bb fЖck;\eq#ۻNuS)c|_vox;@G㪣M3hq45VsMzmQ3j@#]QN+2mb˓Eds#W9S^i۟ɺ8Y;hW_g q=t3I'mGY]M7g?`X)IA8c ٰ^[樣6q8'X#wpmlژT'6yEکW/`-7iJ18X f[dEۣ@(O:5"3xy8 Isgpgpq̱SV_o}sw޹@ܻ|?K8\iAawNG\pSUY}4~T$ \$\\ 7󞷆] \K$ ", `W\0?>?֮FAzYm˫| WY< ’ [=ҥ3g?,FA4N?I]vB>٣liAyN%KfIq$11yi )a!2`)m[XfFeZӲ;6Q35A}{҅RMeL2mD%8AA%)$bl݆61Q\,<ߥ^q\w۶=t:"C6q' Օ+¶]|#<,ۡZ'(qa{:mcmRa=TRVVT+5u("cZNZZQՈ۱pH ]1A?O\x7 ">K E] H3)o xk 1V)qk5DzD=|}$&l1nRLT*4-ؖMh* -9J#DD 8n^eY$IB#ljZmTB'aH-,6bHR ˲L8eͶ˲MlWjRnGub^ѫΝ&ʣę*ذ2;E)$<% eZPq]۱- ?DZTjQ:۱=W_{]K\T* # }P(X`>1* HsKe8 тPV'#m]((ı\òmjU* JbL:uݿaHRjai|@T%#J2BBJPIS&ɖecvK4u:o11U9E<+A %y}Z;yo|wK $`}@7v_vDݡHv/qZJikz=Ru``)umEJ,Xx#8e˖xi\\T8*U86cJHbE\ct8bjm* CCñhQԉ"-*&CʕrѱQm\DYZ bJv <?pq\qt\'&DJ(*.z4,Ũc~V[\,Av#ڴδ@Ewܾ/+ YA%AѢB9yoX7$iӛb#$q׵P aHZZMhX¨8!YurN;Dkc[.>l8sŒ}}tu<(VCIΤq]W$ s$qYb,l(#,U)T5lۦZQ)(kԪU3Qp(V*đv| ˈ!bסR c횧T#l;0V+8CH:CJy5Z󍉱,,N9e#޺J9¶·MAc aRUIb-G6sub! j\.G&`Ye2d3)\<Z8Eq\^ 7ҥ8tb.O6.t68}*H" JR0>>FG:&r^/ ' ΢'G8M*HK(YOiZTYlfllrDEd9cݞF)#"lIwNc}Z{CmE1mLё1\fyvr2JR\l&CZxtuHA$qb2ۊqz][~uwg\8ie0nqq\Xf$nIsE9Zn7ukAOy&qUl2i'˶HXc]E봌P :OǞFa3::N\qQ̖`b+SM'JcŦڢZNی֬LHa[&pSkޏu HMMػ<"8w| $A&NPAI 0tuu10ЏkQDTP(p|N~i'ӛ%HS؎CXS(UCʥ2Ga|xM7`YT*TJo06|V=; Imq`.A8.7jJ* E6tu\j" z qVe9FPw"<ק8vkG< K|6ż_K_mbYl2uk7rw̺-a|.Gooyyll&Mwd3i<& |udrW|33i6lSN]=41m 6g*x d2)%mU-Xz-[nR26:訢R2^ϡZIg嘅"˲q]!Rĉ\ -xMpj?Z*eF4])[JLv$ ux(mF(*Zl&28&2 H/imAP*Q,(lڴqHXSl8XV q䑫زe+[1>Vl}tcTJQi3c$YZˌk&p\V29=!/Ԅ8NZkĦk88J$6SLZԲm[>SOdiQBA?ğꬲNx Q$*!NMFPt&êU"xbr,\t:e'%&vSV,Y!o܈"zz2j!Ih˟Z]IBP8C:ucP8E:%4sF]8X,$)j5$< 1ZZF\r";"?0vr=Ȳb\5.W(8Vc||(0qSֈIbV % cE rj-ZRG$ ,sNM[dYiǵV+v38up ϸ, dbY}$T,l|,gyx~@\ettmäR}}=s*oՕ'I$kM;EPV(P,12RƇ7<߬ mYm#'D&5jCx$-K16ߌRZ@},zF$;XҩL3ޒJLv\#I RԨV |ahqLZŶm#uK)B<%M1uLT~+&mqlڴJcUR122ΦClݲFF+#Msđ+x/ӎc޼~l,#Ib "6.oƹj*,Nx3JS,ٺu# Yr^t+mS,T)K%F5<%Jiw/!gC^/XfnadxzcO\6QjN[x*]D\VAY6%xb-JYL&:7B\tuu7{zÐJJR#E xbqba|yGrqG4ZF6}Idsitu@7H> |7L6PTܓqdS5q""bBLXc~j#JE:0垾77bw\(LMK51F,-ľkdo_tKSqDN7iö1Ym;n.8^֌ݖ4ڒȶ,,|O[zGwOK {Ibr77bl.dsYXao+!mx^9d`e96IsMFɦtgI°TͱCX ’ {d-ĉvA9iYna,YmE&a6n֭۸{xH)'|<[aɒ |\&+Hϐb# %bxhBDZC%1]]92,A6qSũTqUEEaɦq(CBP(R@t%qmtuB뺸-˲HRKoo/jh(|=T_˥*eSNTer *$V JM(CJFY~#6of|HW qؾJQugͦq=` =}98k$ؓg7Ġ<ʀ%KRrYө㘵'^;yb=vB #{ss8&FeVi۟GQT*ujՈ\.M:b,_0|npZ͛Vy֬yecWqCXd!,j5-'\OJuUww7|Tqllۚ0ltuuE0Ȇgy78Qkh[̝*V+7[}1Z%$ X⠘ZI*6ߛIe#DbV"ͤ3š-_$:ޝmY(+&Օ+'Oww|Wqزi ZNjkHum}]J FGJ$Il,m2 IDAT vBP0^lYZG?:ce)(mGl^sB6oJT^QaLGG r.| P#Wa&nFa[Yt[-WAثOЍߪ~ZknĚ?E8d"/_ʢEQ*&I([ q|rl`hhbB+6obѢy,Z}u>TyXfzNVn\\xAq*5c5RP**$"N*K%ʥ2QƋEr<{bY_ ů8֫i5~s8M!f^TyT<%㘾RBJ:zHrXt\>f4Ő 'X4VAI!I.}uO#XF,$-< GeMuj{Dz&:NdS RS}^vhA'qJumۛk QBCØbLdiVr9CYdnzJ\ϥZ,RRV5l&(RR* ØB-ۈBĶl<֭+R-*wfYžV7WolU۲ocD ƬWv16ҡL^w%Xڶm3>6rݝg ЫWc"cc㌍$ ±f~@.!KͦRppd:=z>XDQHTTWfnΫR{o8++\6z{wK6m8E)fk"+>(e8}Çc<7~BX]p=G8:M[/IjO 1s f.)0@25P GyH1,ҊpwyH߄ED.+ZFUTЇwjw!7^wX]YFJ`0pLJܻ'܃>'}Zg:v7ty,Mת\L)jT,΅ N+77q˫5Z&R c)o!?DQWx/SDQ0p#Y:j~\3TVkWwGGq2A)Ejƣ4-ȓmr._o?Z+uQoW?`6Ks 7o>6~9b\ZԢEnꩡٜjcyTt2$Z,Q%deyk.kx\|t;` y`YZJ**|^1iLc1Zr]o43$1C&)Ro$\2 c9>piw+.hFE{(Y&rmp˗Ҩ1 Ma%lR6g!ͽNK`O뒁PJS@'J)ڳ= )w0R'yx"Py?S՝7s N 2\㷿U<#' ]O)w̃')ncKa}ckN2~s1L0S\E O D{-}O9^yr8;gi>e$ HRs=<=jVZ[;}Pkewwk/1<=(:c,q<#4E)W'{5_+! s~RH\uKQ"x$\ŅMVxaժ8۷r LR!n4K}zr{O>ɘADUhTeJ-RJ2I -67<~wĠ?ЕQJ%`ss;U,=ǰ*5yFqrrm&i) ÀjTa09ny筛ܹ#%جR.K+NL&E #%RJ)bn[ZߙKfcX5ƊAsQ8V NH,HR [ǖr׮]s]v.n߻? q[dOznoKw ] Z^^_XL^G)cN|%R O;jD}\%KB; ~5~dЧ֨pZ e\_Oe6IݜF.iHbemՕFJ%pL\\Y@hƐgALhS xTtF2҄HIeY 79:'YRQRx;|d0urQ.7^_wxaJQĂDH3pO}"Ss4)lgw_YAi?<>׋9X ei~nm)C;I)LS % `L98lA [=sV pycu) L6)Wr=>e"9XNh6X Fk&.BXR&V5XYY_~<>8v`|˯ڍT#͵W/o~ )҄tӈ"6Vo}5\㺊sY*ONrk:|ormG,EQ) S2OlJxBfB@pQ2ac(B0My2L'1iaPGQC,89?1 sh@*\Ss sNVJ՚Bk,%uޠ[)zs#~ן8B`eP>._`gJ2pΰbB5y䘃^/3M1Vsa{Wnč7?S>MϸveZ' ǝ>?ѻ-Sf0e*??!A.E-jQ `iQv=U,* YڏިB LR9Yt0 kA"@L%i61!Iap=Lǒx WZ\)\YUr/A2018)Up-=&bt8Ek4j i |kr[pym#t$V[,5km\V_FHHa2 }XK>mxJai2$g<2/EQ/hh9V %H/s%VL,e2cO8::i3!YZZ`Tr*Jx2IbG}GqsoaTkYjqx~6noLY'F{z4c0a dyN7w8>xM7!/,֞1&O~V_A4ΞIOk,Zg7Ect(.ٯY=2d R8>=V r3 3'=g2lZS< iϥy%B0qB%H JV5Ft]!2Mg",BauΆ KMk6V Z:V*FӄѽH_[2 J_<+s]zuHR7rnQZXZԢuң3iIo9(9㈳xO*(Mk*Х\` FG{HdY):@PNHhWa8QoԹ^Q[emuݝkYbi{յ%4nt*xxxC#t(L&1WecsIf(R*kPh<ϒ&3J1I2%c4e0q9p(t pS&2no-`4w99+dl %p]s. ;’e#c2}s{Wo\kbŞ7r}qSJcW7zm9*>Qh( V(hx4ϫZ2'>nˍ:KQ) aR#J DaMZ:(,-kLgV')mora6q\g"!:帄rW^٠XEƧi}-Lg<'Or QBiK.<&9 13)BO;%@# ^f .kHʰ$!+W.s7XYQ<ӤɌ$6G#aNA$I `̓'0@sϔ ht Fʕu.60u8q܀Ҡypu.SVTs@拺Z K7( Qd_K oweck6kU*_.ј|:Ayܨ՗v&L6f{"jzX)RٽĵM t=q̣#n޿Gg3Lr Q } @R3F1J'9qD5GhcB$zTX8H t~*MJBt'`j󤾒!Nvgt_{D; D`=7gFҌ\O?1ߒ>ncYJs;ތ'l>m 3aN 9E_y. *YkI&ǸbW ?C=)=raTH}Uo}o}%4}t~2,5W98>N &$I`^w_ZLZXZԢŋ5^O,ZsUCzTa(8I˄ސ[7VL7>PTI}5֔fA[ ,q UF=К$t$!<^e7YsppD7"I q"EHE<ƣ!asr3@)ߑKK %ռqvP'8ńnwcz)E:d"9Ҁ'KZx3h.8Iӌ4pyBUjlrع2zHM4hM*PT%z.AQh$eeyJSdYh$O :%T<*": TGJpJF-F{ jK+a態mPDO]gŗd g)Hn,p$>ɯէ\"9(tPR!`ҟwG#tNQ cF$N/F?b=tYBhҸ@JRAi~@RdEƊ}2˫8c=s' [g~ĵ\ %u 63$\_\g:} qիD Ή#l3r&%N 2FqEɷ7յ[kkku%6.;u>{Op=E뜢8{./0E-j,-jQcx~x;k6IHX<!Jl[ʞ5llr*ZfZ+4uKQPX[<}fDk{9?}Z%`؋ܨSk8xt@Ym-KU 1A:Q[wrQLry_5~l"[yhN?e0n?pwcn:7\Ibq<|6 t'O~ύ1v$MI m,cmi9nX]_Ջlm8v۷bE XL )LYZmf8`G6贠Hlh,aaw|߼,Xk5XmM:"AoԛAa<{LQ;w.nU+Kkb!o?$s)/ UE#`X#2,SԙOg}g?=&~ΞyV')̒JY| {W:{SU5?ƻo1jlGr7C1:OU;KW_%^}"jd.\5l&RlGx,/L7,x/jQ `iQZT_҈>3;;nx耇2p8%2F)YT̒.~Q &)OyC@ V?s1 ,~VBg9zJ%&@ 1RDeZf*k-~>w۷wg ;KlVXiVMI<&j =4xIK(СZDuK~@VN+#EGB,8e8s6/4(BPO=f m/tLg629?"sH DHT )ʝASPaj(!HB9乡pArC>x#= Y~zxqW+XkyXZ@!rp]?O?o Y?bx@i`,uZF,+fk#0gS;J_W1R ZڕkGrpxHO5u:,hKQ#$E!8<`)HHU0{^^h4Z!x@:ZBVq [l/5%(G>uC碾xS_ m~Ƿ?\:g}vHa8[Ahp,+\Fν[ypp8"5L\ܒe,H,/*t{(R/Xxᓥ9шÃHfE-j,-jQx%k$ԖsǔeRW)l-ḊYa}c+WFBdu*a 8a"A ESrSS 1ƢCܻOx5*tm`N), %[[[*W"hAkd5j=*ÀR^/5?]Ԣ_EQk7L5EQGtQJ!U:qՊCt {ZnP\H|?o)QE9 ^F`޻w'[ 37|)`K׿:z4޿ywL&XiJ $Ն[uQ4O2Fp]. ȂpL7[1?pamn9B'`d{gPxcHb$ $+\EԒ$9uX[ x*kZQo2iwo}ow;%B7Vy5q#e\&du"e(4o꯾K8d%A9 #f\:ty{ܹy}4DV4S_Y;k`-WYjHҌ'Grew277*G ,=[.)7Ȳ h <T2Zb9Ӟf$fhT!c:^dŌOs iZpVV[czErͰ t]<"hX dI|# CZeZ&ZH7{Ox|W(GݥЛw8N!FI*]^ehn?xÃCap9)7dNuOJXodfK (S O6Ӟ';y%;TO>_Tmzs{A+K0#5V w~|.+3bZUCV^;6X*ܺ cC}>NBJO_`ZԢҢ1ˊjF!ՌX^ibwwGHG1 dl_h"CoTbRO JQLor#jU/=<8g2I}DQ(S#γFS>&ZC+6~h<#ϊ](&K20&K5i yLE| @d[bJ1d" iJt:3,MфҔ4AF 0@T<&ijӄ" V8Gq2[0b =NPh.W 8!B\U.Rh_LcdZ0$ĉf\[跻Fc{x p5v7vqq#X%')HiT=^Cq7p]ZX (hTSd "S]rXq)( {ѷn'$OY_&d*ザi0MLfdyF嵠$#ܡC%?w<b^o@;;Jp p9ќ7?wn?@A,ؽ~n0xV(:{[NB@IԨWL0Pe;(prgtgKzC,Ox^[+OGkW7d>J+΀/kOgr_`P ;E9YOܻY-kx4 $:gkk`@ PS6A^H%|l|.t@!sS!!!Ӫc*Ac wٽhu VV7R& /N)={µ^/0*9eQ Okf !_ږ`4LpNv,h2Y, fJMPז٢ĶQ fڀ 7yΘH4k*Gsʢ"tɁRgWֶ.=EY0—>ūt)o>JK>Wu:(aɈ:?s/AUלNy`|cZtw:kyR iieQ3{hxd}?KaΞ:ڦ)-墦\6 pW9Hg8]q""svՎ5oAu6!/&/z@EWXVVgBJR͋/]Oo# V +$YNi}˼Te!9:Q[8l'<w-8> @Y6;riQg$\v<q}'O^ͷ $>P%McS75Bk\2IPU{[7믿q޹͝[y1o0 [7_Qc,GS , |ዷy/s$Q8那''s{~7X[Q-ڶc[z51.IdI9 IDATVB$Y0888n薒:N[f GS9E|`8;y'k JIQZhJDᲈiזuR,H$2U'% WuИ!'9ɄݽCDKeo_&?cnܨYb\Ki,fF Xϣ:8p~u iuR\t+\R"ޗgm [Lm{ta%GWPdt A$%Y ԙ@snj VbCܬ3@"ls/YS $(J%dyBgm2~c@@g\qdLLF#FCY: %=m0;](jsʢ`o}; J l "6gb.í(%cΙhLÁ?Yf~0OZK1e(l: de<61 OXT5a/:<>w8)YMQqd}=ڎMk#F} +_lSZ7Si*xs=7]^{%`c{΀_[_"O'  /<5\EmNN0%Z"8h=X/{w=y?O${\>ʍWѩu5d{cHrF465'SoQRĹ(dN$c,MlܜXT-R%LF}nᜧiFsAxf.>vB)E/iB9ڄTD^ RԆŢpJk`{*wS%ִ }*Lgu[dr :0UtF  8IAla ݸ*\W|qvo}qB/ .'+O|( l"S&;k<-ހ c20:a<;ic$ R дly`霣#泂()%ق岤1KSU5ucP"Ev/m7?! ?sY&Q*{a?7=sZ:0?}ԑ!3]G I(fYJjT8o2O2N!DE0k&uò,ܺ&}kW NBQ}x'${=S7xRhk,Bj%YOHEiř Yu2ʹ~EQ,\\S- "HOPĐ_8W"HAmC !n^I)g.ܑJN2" ))%MkH2Φdm"!HJAjAKX.,''K_ŗn7_Y.%B D+iUJq љ? bV*9:{n y֬fUNȱm=΄YOM yIzT15EMރSEUˤu%Y4lsnRl[!=YLHn9Gh$c+#iٚԁ5(،$ }#C$g4Ni?lmQ,RJƀ!,{1znp$Ixw&(7%Wol1fYuRi]XLg31WITltDJHMecsW7|uɽ{?8focZnF8G Iiz:%W4MgSUYヤ-e*%3c}}5F9 bZšr]X,q2]R g,R ?3S]MCm(s4,"a&6-Jv6qO6(fӤD 'dJ9ݑ3tϑ0g=Mk!`,.@k[ ZY1i˂r4-hE1nPՆ):Vf crЮ֜Z*ЩD+@+IK\p%A ml_?9n?wãM@ICI[E[ NR`6 F#3~Aຖ;kP׵|ˮM4' XZ*~@% Y15xѬH_5X8:4&`ds]>K/Hek5SAAh>݇seímESVvJ]Vǘ̗rӓnj'c66FlltJk=5fHjfF]dNzf JQ ֜N+DꧮOas{WOm'CtXkBbh/k|LtDnjwr663~˟o*=O~%WoA5;wo/ƭ[WQ%ScT# RE]7$e l%K3qLg+I#Xrzz“G\qh | I˵k6ڍ ;{ O2=-ϵVZήyx~G<|?DlbSغ׷ĝ|嗹}~{$C J|c{>>N,ΆNcK"u@% eTCIMBq~JB^\bߝ=.L^z }n w`+dWxs_,4Ӭ#ΐ A'0J,Bc[s/~ϑOqec82rb`qrܑARĶ:,e=$Zq=!QIqm29ob<Ydu,8Xq"D'iic 4UMU.QBD)lleAdYGl?weQR,S5^\ (JF5(@_cNOɓza5v )"dhLA;[}p' hٹz_ĹZ0(R4{)QekKKmiZCk->hS.a~0D T =: :j>_KXJM<𡳺 $YGW,϶mBH!& (,lX佔A?ú''yQT$md`Mu!,RP(v ^(&0yC6Eh gQ; ,:.C' ,A@;po[4{O()uR 64<|w޹ϽA$mLx[1kfYG x~サ˃ m޹J☾S#=u (92>Ŗ>kk Gc(N%i2a0φhϦIuSsp|5,Ԙ-5,ݺ,.I:霝dw[fY} g6&ܾvodHs4$BU$ojRgdy+GO)%i n /;ֆQ/aH@HׯqOsp\s<}弥rn^T3jl #9:m)|{otDgAr nGtBOxl8:rM{Ul\सl*yEK=*>7 "3D@xB g8,A+ABclC/Hi Ck]jqju \dw܎2x/kɲEu}#%TAHb$IR @5 d{R,fUTòX,\K3X.flo)O{4bQƇƛ) [zYkjNG!K{mcS%?Oy 3iONtT<0u"QgltV*C>xB Ǐ(Y5^~&'lJFkqo"+4JW8?)eTdӄ|}²*mIS_3`KajX,fSa_~XO9 ὏&l\k|+6t8ibƢ((E˷6ʪ$$H0JȀqnK{B!]?Dׇm3}SR 8p=K80s x׻h7 !DiG:=pa4T)(9$:Ҁ6/4>R ˿`Fp("8CNckNb9sxo;Ę4hml IP$Z(E5"n,Mh[5,D+x/m.cJI똶\1H~EpQw (IaL#g'OS3G^}vt}hxlg ϼO$Qs )d@ʾdm2)$T!( b9k_{NKEA66GxRfKx՜(@Q8lP:$Þ A,-ABB 8AzF]UU㝆bmKddT")5mk,ei[̚- .djx&PxBjL0K&#C/^ @"AӴԍcGvQAX!BDE P(Xr&SstZ{ɒb>"eKu2ՕDSa1WBvg%.Lς篓{iYo )IсjK<'BJ Z(FFEdWZPhP itg"788p "[Q#./񁝫ܺ{dI4y\2d}!eU/*֘-k|lA^/NJ1 Ҕ~ E@IwcI42DƑ -m)ۆ((HD)E,ͲjR-XOX%ܱ, Q'#$;Ah!OL>jq4  KH 8P7{{Ōټou^N=Jf"8s*N :w,a EDy|7(ֳ\ u]EW<1* y&!dOvaHc}Υ cU>{NٍK aJUw}UzYo-+?kzh 'H^hO<,SM/(ʨqa,[$A X̎9*m4:fg*׆ԭx:eIdd8=X.pOWU.MlV/9`45㛆C!Yɲ8e6;=vdwN4EMSsgs!C:۩ȵ>.ܢ5*[r)-)ZwnX\ i\E)>8FlEiC. AR6ud8HF~*:좽.Eb+G|_$϶]9/C mc0Ʋ( 1l*:!0. Dtnsz)/8% 7 hAnpw̺,yC:w";|PXS IDAT_2EϥpH-ѵ|^Zs.߈FswΘ^t ? ,:Ui:``#HV|C$5div xAUbρg x]is?w=;ZNOx1o@*V*V3Mbm2{TpXg!Pڑ)B(د."9J*,a81z R19ZzHt!V|P]˕S B)pacEݡ^/J+xcۖnӁSIVt5 \$=&>Rp)m#{9[n޺mݷCZiS _,tW {PGM-cB0g-Oy_E(0&TUUAdIN4i"L%$UhjE bϗTiN%kNʃwHP|3Mr[8NIhk8;kdVprbӖxkAy2-VXOYV IO4W}s͍Adeچg*'>{%G-w&e&X~y^#B'3%# {|<,q泍kRr"sEq!.$hɠ/>JE̋9xk$Z Ud~E.НscH| ):Ak xxRRŰ`y`2%pmS Ő{DazHW3!նItxܗ^SC'Y (fӆo_77$KV>[*)~|j^NfcxpǻiMht@/k*'x57߸wx$sl3zFS԰sOrgӷ(u[`ZWxGôqCd_++^&^B[~Nu 7ͷ PI`σܻތVȌ9?cn3fqQhGkJNжlπKM#%"!yp&`[rGwIPMy&ƦR-Jjd'.DTJR-!c"#\wbeB-%cs<߄s $y樊: 299t޹ yh:R"mnidPdZ8__$^c[hZv,J'*b9S E&@g%oM|9'2ZW?pk0t"i\ !lK[(|b9bD)h<&X.,SŌ\`S$ %'t[9eh%u]XwB]ՒUP Y. 36v267S67\IEQ,̖%˹G7 N#QWY7od`OPCg 0J M_osR~V,yRۜZy7[+,r]i{є$X&1$ʒG=QcHʓH%D 'IDRFY!k]T|@8k_}~*ȲL쐝֍23е‹\ ).\yڦ9tE౦ނs`wgBs {iS0&BR47 &!^GO ~.cXVBPy7XgY%Iv-ysꞅ32XiU'L2&W)LD @}륖=~ͬ~j켙Y;V&*Lc~,L-s\`UO.y g; 9ܽjyɷ!/xc7ˤK! 9A9[ sq|;'3ϸ0⊱,kN?k8qc໼.~G_1}W? DСFs7o%c$]0 A-eïշ>K_wao: 0RVzLFi<SGң1+"Ah: ٰ,y.Ɠ;␫ٲ&Ffg14CJ߭7tX3oG|sn߱^71[Yq}gҫ )}fAPw0 \׼851$I CϳO8ܛX({#l0qv^]G!)'U6A`L\}z}>2XU|/[S-&؜g<~oC @qgMf j]Z`4Ngbabǂ \gfCL f z}'Ę$F˖VMF &Jڗ,LG}59;z|1ƒ2bXUL;yW8V75o%cw>ѻ'_eb-j3b0[yuBat{r*uFi[0 gF$3|jvY΢<$v^[ j=]L\:|M‚w;o!KY[h9cėb'biB l *E6ldZD=$=ClZ uı\"&Gkð)gicau)|x|:򵯽qpO$%gKN!G0#^ο;L ؒ"YqޱXKٿFdt;c^g{N"֞@6<16s^]^5${3W Y^_-i'o{_W|!W{MO/3+:&9m;&n ȯ7\̷ù=8,lf9::7xͷ)s+.ί j1xUy3A+L=[Cw>"CV.4RN¬8)mb뜥{5cޔpoY]U'<;ݷ'MZl:g2陹Ƞu[QLJ03.}MfQΑpr0u3nf<秜39y\`Ma%^6}adI. !u4m(-L&= \m$M ![ֆH3 WSË $EsYKhR0Ģʦ$#N/"Ҍ ƙ#GjN-uX#xO~Rؼ8T?%C𾚆sP!3C ށFÉz@YKnwZ>xI&f.7x,!41jCh0{/xtbl1hU etXVˁ/ѩ;: Q/yBL3BIB"8h,+0kά"1 ~5ӫ\'~k .$x|/zNfa`ٟ}ȯwqM:riC 521t> 1Y^utC;=)fnCFۆ{!8 jX.7\\\ŋ5adQ6+^fSN2g<8,ί ?2k>#&E€pzv~- 5gCYBoFߤm?0:>W|w̗ k`'YK8|)`WlOQɨP}>PcIђ"9,W% {hkc`}T֠lBwGd.6:;\5oV!R$p%T-F]Iz{^xX jV`I Z o; Ebn-үڤd÷f{\&xXQ1ݨE"\2τZM=N&/F!#?UB`B %I #x--Uf CD-]'\-3.aRϕyܹ3&%T2 ,BʹDIY)53_7縼[͙_ bJ7{))m#knr.^DW-cIȒ+ݭŪ<o >ж Mp[em|zMmf)LS0rRm`4S!2ČCQmY%LUS 3dDbm LE٠2VymosѸ@\cH!I0Bbt]`<9 !8dAMfF7-C7Xb^⭥ %Fabg+ld6EQ9;[f"iE0N3oL վkh1bze-grq yXGWM'8<;3\n<Ɍ4QbǬr.ptcXm215M_QsGЁnhZ9PhGr\2 nH lF&cɟ>Cg fM0;)EtYg0DeH\37cL3{>ܣ)Řu\ ü tn3ce-*[q/o>D>oue.wL 6rO O99=7s.w/#EJڮh,&6(bIIfr}W7ɈlNQID)c,X]3Nف$3i[pNz{+6痷?mÝry@'z6m-TNJ<<_wWOeIjchGʨ-0eE~1=**,`)wk8_iQ:oAo1C]KL5 w^HB?.d7) 3ZMkz%B' !CʑM?3xb: V,~B4+!RSCj)Q4@CF-Ģ5h.MoY(oܷA~߮tlߔ3")cRg66SõjrgjQu!),pwǒw 6W#pA%|K.. gX6kFRfq1G i' ] iqɬi!cmnSD6Y1%%eb$9\\rx$ˆ){cllp%keZ[)'[dSxqlxlɩ~|b<￿k,^"㽖w(|aI]as7.?53eqo~c7}Fc-ܶUuU6?䃓'{. N#ӑg6%);lx|q~C8VO8m eqd2û)mpo"otނi4Ҷ ҭyw9bɬ:iٟq#CLϞ?_?|r@YWi [8`TRdǾϰG6WxlieV yMUw÷c?cqC1gj ,KꍧHm96u8Qyo>x)wy덷}\:8#uM ._28.dE˽{c;<}Ɓ?w_G|$aP'Xki~P@~pMRskZlD4!TY JW X)qn\]OIMbe(;Z&cHDSu, 9SrrEFuoq}`H~Xw== g mLcgI;3D0#gڐ$cz$i174<8cN=b/% sKG uG}Lo(EV(şZKk`JS~II0cNX c:PΕC" W"K[0d$mrgf|rk榤-j=RR˹`LE[KyvЙآ5x[j2r8kh[ǝ#8طL'Iv~m[9C?J&W]L݄T` 8 .} -Tcg Qb2IG  hH3DǦb.Ds6:{{,TYqq{q>\f(,̻rQ`MY%q`m(}JqTcB\"H3q˺r\\^3?3o~0 t}G"o-SA֝%?&Lll[pv xC-ݵr5^2?]^__̉ki&z{T0eooe9?|}xt`osh̳Ն'$p0q1 my?fԎ9?kL4Ij{ObuZ|f0EQTτmZܧZHӮdgq8 K?Q⍡qB),>Dv|gafQDK{Ma0l |bJ^!RX4XgϬ~\LC7 ˚rfHB̐R޺)f \W>_A,ĘL*[ΐ$/ڑXrb1Q(Hsg`gi%0n=T" QlQH[ϴ{J6m|YSdXNoKLr"g0E.m-57ZASu] 7j 2M3H1١sN^ ]uZ= ;^w!*}ja lk]-fp&T?)9N|a2+tݧX b "2 E?@;F+, t*m$,(gDpdIWB2j2tՕ+ZЫC6p&NeL6WSd ?qr7=1j%R%'`F8\>ֺcRd2Ό*X ꙍE mz&yFl,7&V`7<)&D,ƍ $)q ZS S@lѪΡuB'bBsv彉q9c. 1ls 4I}˴Zᣱs)WSЭWl2iG{B1`Nl`DMq0H[®VgOtLKnM= lm ؄DJl)Hz(Эd2miכDJ⋪a&3bJ ]LĔ+VPcR ӑgm MK;vg3ZWG )'*{WX,,8Bcqp!GLG WKql6svqZHyDGM5M~21l&kSdCIZSF#$X<۰Y ֮V+/Vyٿs'Xĭ$gc <''y)Sdwxx>kc#@Ӵ5.ӟGbďƕ3ubw-1]IalR.#tu,eoX^*J*1MC 7?MW+RĨ c˩dIRBb<4x&l ~cv>J6T//yb:nF܏DMI_I*ZpZޯŜlG MܰN,U1fx*eUAlad,)Fr.e"+"( aNMTSDU/c~l΅~%c gM[fB/c:ͯHS-IV!I&HΥ&5ΣzhGa6?"#xji]zb0 8똴M}+#xUM4ƢUfKDw ~?SUeœ@~җENRR.T@1] Ijn]օEg%WI brJy*K冭:fR%hBO2F^+MfypX{Găx"9eZlXIB*Z:1\XS|ӜrwXSub2n *ڬ4[@B2Q\pIsHXM4Sa6mb\e&C4❂M%&H$*`aWj@֠qΖTº0sE)~?-?f۬29aa)./աP妉s~ \),L1;3bzudbOHAA#*eqq\br5.,BƲwbu6ӉaɆ)[D"♓E93du9եghԛR)ZeY>gOnFT)]BְƙjV V0Ns!?1XO R4XUbaF)FԔ$<7e*u"jq٦CD 8[,6{q#& ͺ3"2:F#CY`6r)=E31e77d-x7qpvv(X9ohga ~e-/N-gz{%xlL:J9ԁ I W}:bl 8S U%YMsڞŞk9~YSdzus=2) d2PCOJJ:X )Bo\NX7^5RaTMNle5+Ĭ'cf 2MOEaXٟ%wyv|ʇ^}..IݒϿ7{Lg|?G<?׽n~RJg1,-=| 91M⧟ǍY999c-ykw?@u .}ܕsf\s~yj%O>#ۏa4sNO )FFx.8\]%!sqMD ?3?*ὯtO [ }ߗ{#O)+o'T_)Fb=l^ֽ1ierXq>CƇ  !X&p@N~˔t>UT#=i`<)f9<7-Y,W=rˈuSJm?[I1oEn|:1y;-+fgQ5*cF2r4vN3 i1Vf%-ʫf8dP/gج{WڀF!JG+5Z-:+P fC )4j#~К2Ţ"Dh)/cN:nmA""20Ğ0Εe2 m#3]zf'O*MU~?O/*cЪU:EC{gpr֒lv BȽ|ŌHh [A<;F=XT(}eXS$i}wQZc6KpaGse0/ IDATj &*e,f'ݲ[0Zze}el l[j/aN!Zr1!EVQ \uC@Ry>d?Uy7 )Rr; GٟCwœK$Z0]`wZdFa\R+oےoYdTŘ3kL%#7RHu~kIRqU4`RJm[F݁n">ge;LI۾c`09wXɵ?1`8C xvu=.խ1Ű]7B>4k>RMjݳزRY2^M̍W/+q^4,kvu'TO-uqI%m!^BS&BW#a2V*E-UT Wԭ5ٔs#Rob0R`*spbI+ a=Ry<K쵲5FXOR1d)֍|jFb!lIe \{WU`\] h*5?ڌ:A&aMul7;{O\k:BM(!4#,/! u0k>l}*j/CƬVVcɒpa/0]k ^m=t֛w:JW$RK"(1RO%6V(Q[+"A [L)!:D[b,j`L#1/0p~a./3'ʰ<UDL/"I-Ѵ Jܘ:aLܱ?0.tBm)3  MEMN~%GC hI;$j0\])LF-x"R{fwq f.h|`}u}.|d:ҶSBci=%dl2z-ǩk\prtgy[$GH]{Xݶ3=1ƜerqU*JH:!Ah "Ѣ"4hHiD"D E"es˺99:Ǯ R+}d9x}ސ D J͛5_wyqo3+e3wr"O~g [?e3);6^q-4B̆1{khlwq C #ww]Cc3g.N%!79ķ.,Jm _R藆V5aW@?Jむۺ/[lk_̿qZ͟ք<5sok ڹ'Y\4o ﵴBc{a\l"q8<.ǏTd?b͘OJ4m$ 'ĨެeΥREA1n@ǨjNgq.LֈoAozbأ` TZ*=bFQzGPwNw[~qcˇEmp/]xq~ ąA#vŸ)?!o% UJ1w•RVs!AE }jGwT=9,[a MKVF5>Eׅ#Z}۞),CmYܘð?kZ~y9ӯяyikEyE(f]UE9*F 09W4JaFԞ haܭzU\,h!VʂD"VxMZs3k0]u? 8!F )UcL|]i -s  V߰T4AJFF C ._TxC~HUz@Copl̳tEc_C ]ToO/fEX8GV( >QBѮ{yqS؟o]†qEqxn\li0JPT"ս!O9Vi?~5X|AV$S6{cbJR1EB T11M^VQ9$ٛ(lT+-T_8mAB_߈Pfo6ٌح%b f:7rb3D.f]b4&$><)LF(g/Pswwb>>3*gV ύG|G@>9 awA\C޾9rpT_| 峏g~w_GYďW\24q;xqsgo??_ KҐHcpwws/??ahWTueD K.ENg9O3qO/nC GMf'޼}ow~ħ9wwB ?Yu—__ݗ=-ݻ\M'<)yNY!jM`(5p{q"qnw *W~&%J<\0*0BZ̜2 %FNG| LHk8PLFcraZV牻e #ɨ1XnyjuÌis[4a^Z]ljͿfc<)pO?i<5x{rd7o$. ](a5,` M*rEKmT)+̓p8 ۭ]w/\AQw{ЬҀ[X"կ8j#( ;J![ =Vsyi ="7_ No_Y*3a嘕(fTQm]N,]l(B2a U JHx[hO2k2qR'PPkY#Ԁ@\\1 T6q Uc"SD,iFe/]pqy$^!&gC ͆/^MY޻`>ag,7<Uً~< wք@j Zt?rzӼ⛓B*Rh(k08hV>}sd7` ]h^V72(oD^wszcUPk=>;\_ߠ}pZƦPOl͆62~nwt if8sVI}#;,|*ہc=s{{ïʟ缾k|d<{ihugp~k\_q:{/!(?u"AODVNI~:5nRdrbif313S>>{)~W8O\Ox}=a%Y獀v;6MCcFbc;v|v`HZ+C՗謜 t]1&?<6F Z!jzY%S8"12|=^B;mqVw4c`c17ƍCjEsW?Yۓ=µޥn%x2q/׸}韽8_/lݩ`ƩUSe:gIYcKL5;/; A>NQe.Թ8Op ɳr>{t$D6%D 1eтJwy% ou4 f nZ)\"o'뎬֢֊i__̥ ZĈC`;r^= $@E#4>Lwf3gL1lP2O̧\3|]֥V*!B”s꺃z[[kb_}3A45x<ᮎGl妑n[橛|?xteH9griLyyoe}(SC!)8C\JotaYE 2hgH!ZH;ۤv`}XWػ8$`+Z dSHΙ'8RkEdN-| /j$.9oQ1\,z|AGUs J5q..8q] kN unkpY1&0nX]^&&Vwr=V./^xi͟ccJJ_Q8]UjihuEz&ca.TzɔPD.ƚXa)FusiG'GyMsZz78EwJ^!'kMc.mg#W^.=2_<]exRws5hVpe^o+C_K;D&EDR u> ݶ[%RZzvyx0^A.3n`]xkhfBMDnyk| n6Pg/5תU#l^gs%F MHAxncT|-y8^+p lMR2gn[_ ]g\8k28FRD1Ȝ+.cf ф,\FwsHi~bi,h2ȡiD i0 o>/\]lN|yfX;u`>9<+w'xR΍{^Olew8~p:)'?P1(Qi%p:|6򹷔gәaJh:*@89e#$<^frL0R'erqW7¹z3>dJ P[O?!<~[̯xλD 9ՙ3zrX(v{|rsby;1^27o J{)~~_$-~3_q/[my'\?{^B/f;2q<$'eoaWM3!4_Kz?zf#l2>1H?4RL9̯Ib$zU{EvPp@QJ7rUE$tc!F)OOXYw@! Ue|:5NGO꿧<- O %=mS-!{Rn7.vg7uHYGQJqR<59[qm$O\aKcqRW a S{ܝŝ6iD1/P|1S;5Q,ؚBئF:nR!qCA-_7.E>z)˙bFҘ LC H>ܖnՈ!4Cp9;UNhaL݁ s"U+9cJb{wETr.@/{tyBD-Ax?S]XXM,q-;jk0ԾDWAƪvq(|fOo-ovЧ9jVmt69*6Лq$aq֞p8&sYpN ӜԐQ g&#Ӂ8\Z `hHq;y0$x~!\Q*MP\8[C37Ws_O<1Fh\Oh``weC 4B @RMKt|ldl_" K!Y!h"UE&Nj> ?;^1υ[;޻D7U_PwF:3g|ʷ,:/O\n2CdmlSRv& ʃ@ MR>|y7}gmPD-jkj6`3*[Oۡq|+ngoy1\lG_d{xO?41nF! T8'{}pa_7|Oqs`w>Ueݓ^s<1-TWGwgԾ'@SVVE3gc;b!R(ܾHÆVR዗q<0y µ4UkYŦZc|(%6)`yYʰ5v҄Bo<騜q'@*ygPs_-ںiZT%Q)'x4泋_ l64R*TlsǢk,Bu[֋VJG%T$΂FdJScq&)_U 2O}D4fkxP4qoHacl#imQTEc1jo̪KiւZ9MUQ ~P_c.ZZ M!O9+QF`գL4m q++EM{tIՓı Ww邸X4z u9K3@$Uƴao[RrԨ>PZ*.4!-0g\QTkΨ+VZQkGmbjfw ͸q(vnVN=A43k8lVFM*_S-0Z2Ρ>ܽΥ5I4aŧAA}2jA1'NwIy{ofR2-.zUߏSo&91MqԜa | wF}gWo 9(B%ǀnu ۀx;~=6F..SF 0׉T! V73TvLP2ۜ9O3\nW6C%g#~%/?7wqGg1|jUr5d. S,ܽ)KbZkL n#sdm`(vF Q;)y}VRD(֢H4D} ԴrqWh># -Ge}`tF h.^y ̓0Mpw'Ԫ~8 bQE :DJ@[)(̓ue =<{fQpo*A#WW;VVl ֨7}^ +($@~#7艅j& ?,w\g4V<ځ>p[Wt˭kBNu=+wܕoA3VPCŤf~/n%fڛ㵱eg<=-f]8@̗O6P|^Uknwu'[D'ԦʹEUQWGE֥TwXxWfDvqX(` mj߂F>΍ gRި]^ gXc?æ%Ċ9P0oZӀP~·vRp'c)=iv0rϿ-ު՝ gȺNJCrET1tŖ(뒙뀧Z)%,捎ZB/9e|0EQrlC2%_4NǙB(Mf#[(^4,.KC\3VPwY܌gDM ʹ긺>P ~C(77;Mn Shm8qo1%m3h{sZuږ{ :Ǧ7?.ޏbǶ:u!]vZs[hk;zﰳЙO~AKj:Vf+ͬ!_=uXq#$ a`3%J.T*339͕VRpkbm2v#P\4ufJsvmo`_d5(md~Dz'df45f*F%؏0(@f`! Cr獨oNw/r`~ C򨄦fr)7b(tRVy>`U#UXk ΍73W؟ ("pW]f8<4§Q+Jl1!2q.X*D|Qo6hsb3}l%BIQ.9d_*J6h$|q8WT+1>n:\A(yʼ/V5|wyp]>x}ve> PMXqg8œ0Yhp=raXnחR=—1喟ܟV?|lw;&y3ĸFQwΥp%*=www[޾t)}-?_L~(q&mO8땀KA_cd7Z)SJӗ` ,;P*u(r ?p:Rte[D= uyhR0(H;?F+*5G!Ikiݣd:{|!ѐшBo>DsNځ,ܾ<xBCِ` Nv"bL !~uGkQEDidm*2ՆX{&;Z o&}XHwM[S)lNFp<3*~uAw?U9:z@:k( eb,RJJ;_SkiMlzӒn)u3q<p9<fT<1DԼ߂x}NBLB*W=[%i5Ops)%v+4 Cx@Z>NWJ ħt@oV뽥O~_&D$]KRJa+8aJJbpGU[Cv8O;710&%iWڋcaPUp*>D y>H%Zl%}¹ymf&{Z!(ź J#nE](D@ZE#3,J G6;0..}S5q}yv{ DJޖo_ynEOs88EcQiLM[/%BĘ2 *91 >Dj"Vw4q7hGi9,F"5GJTD~h<5r=?۸΄Mê 3eݛívaMP=33K⺲WC(035jҫjaPBH0&#H%Tmv~[a1%x.cFV3XHM7vʔh0b;ؚ*ٔ4;Ӏs2n}dM.E{|1֩U3lƋDZ鵺 rաr(~bFxHm&ZR0Ūv<頉Ӝa5[ 5cSa։Y0Y獟܈{8M[HZ) U-|O@Lt`3v6!ms\]zO_;\%p:矿%OV" L ǽ8Tf묎7W|K{?+|1~oßQ髱%:1݁Ͽxͷ1oo_jf-qϾ@E;yȥSV+t5?gƛ’jmwȴ1hn~㖋ȘS.j?eLu2i]8afBxlTZ~[_CH.c[{N3ub~\;.X 90lx;! ] }w :VlSFc%G)@́y3iڷzBN1eR*;4젝" H!JJT_SB̸?0[?Q19|]dK֣Rb|I5,/ߓ♧Qz!8`GHQE g|ZDcIQtotܘ݈sA)1!ל;gV^CdT"{@q>fkL"o"_}8"v71y 6KlLUŖ%:;F"Y"ٓ'1Gpľזն2XkIZ$Y[~dkBŒFEJЊ# *_.NN!BtE̺㎛fZZ'u]$S +Dz֝:fk`[" !:$vTՎgkU/\:YKģ&~V̓*HeelzzM/!twI=:N=fU%E%pÁR>G{3ven=*V:ȼXi/q\IenAyFDP1.(]@UqUH #׌ !F q$ &] ؀AM;zc3A.-Yz/FD؏,ٖ%[%h ##!HG%446#D.U{>9ZkΈAckvfByR޼Zsƌ>c͡W2-CrK,-_ZmḭuoO‹Y'O3bz,L CéLv-&nU]&iC͔FT1RƋI|)q:pOt찦 B?۹=ٔKDZ5㔬%TC5@jJT`HĻBLBNof)ϙTk? _:1x '8}<)R,juYJg`bv-Ss'rAէs26oO)fyv5.fLY*Wf.%d(e~oñpɁ/>]/ OoW76ɖh|Z#$.HsxcMm]21gJkHoP>)D &KDgl:Qr6jѱ)òq-/VjT-$͉KM2⨍y.'-$|p;q'rлɛVzodF^.u> IDATLvx(t?$$W Wr'$R#r7Ig qg#Ti|C!@kIkv LLBTÛ톫glxぇs>CDi¯=_ӈwwv+'qSx^l&c1sJGߞⓙ?ݖ~kHsBn[1YDtkvnR*w~|3ׁ>bWI$uy̺iQ5)F"`޺i-=#w3U!O&pp%.N.8{Xty:D8qqI޽wh@S1ke; o ?t0|N%wH"HuVWiÁҺZVz.b5rʺ+gPm1E"ܽG͛׾a,=\YPE)2wT' H_o e:,E)WtTso`v͈Y,wVzYX7vRiU9*C_F[YQ @1UNvBl]6S;n5]]Ty+*CzfcFT0Ƽ<$(%$?A>?uk&Y9n !oƯ{O@Z8^O~~)yBk2wF?DoLX첒Pl;/^\~;ɜN lw1mDv j)|_dۢ4^}AB Ձ1;/|d/V-Cc,w뾿P] jh1ws@1M >봥WeSC!ME(a26R6>T\4urZ]%p: izl*]mg? IZXe<:S!#rLvtHsg:xddD-+W:GjpD;2UZ{ֺ3;T$DlIuV uU\Bf pF9l'OaS1#(S%cq$Z][8?!k}B:irvB]PElܰv+7&my0m"Do6*^׈,!E-?`";-}00ݙfpA7"E<bUכ}87֪xگHp¬z-ćjV~rsXJ0+Q z5nYϰicbwoڭ6do4hN3c]R 2m Ǣ=հAAqeh/. P@ڈD=RRwN]'@Uz 9-tJiK-nzӨIˬgE͇ ~٦! 4[ >ڪˎlHuўЦOJJCD^4h 0΂t!N :珰19&vDT M++{h_ѰJL#A=4U_|9_TߨL/n:f(+$SgXl>x6oN4V#͞:'V:zZ4zseCd ;"N6Zv G?.nwoE.ݛ_sZ1&,38/|[w?x<;Rӟ`;D!y1n>`JT. $`cεqvͮ2e*6)' J:9, ȼbQu02"Hac+Ą~?Tؖf%6Sbpjc 7<{Vz-r“:NLJo .r XO }eW(}RWu'Q[Ưgo_je._{O[+X!0q. 'ksk@ zhH}뮘d+y@;9=Kc/Xcx'mY3t"˻G1 VuZtVڸth[:2D?ov%RLkySa8{ ," ap(FtD/>!pkPH/Hl'}܇F j)rfKA7>c)v.gCf6ssa_;yh<z?Ga~E(셎8quˈ1w&/֜!B3;vߙpvCڹu휈YBi BL1;ה!{94cycC4OZ X`4ܭ;ϰcIz3 &mKN 3u)2m3!<~:s+P|aiζ O jU9EYj;[wpSU"YꑹԦ3\EQ~No!|+χa 'aXOFŷ -.gZv,8>Y˫kpdab}?VjૄFm-7[zNDٓ(z(l҉V qBLQ=LRw l.izxRʦv .F[cY A2IiScYt{譜ciBJ!17*muY 9%6yCH P'avXkPG3&vK 6]CaⓦAC0j)d= z%<k0?1%^MyP~7ln3ATat_;fvg|Os9)M.zT??L8uwL8Us wsOBFT}WnҗB8,oh&{e^h}sӉFk5nr O~A8yȳn/܋x+hw8Bhg=Zz˴Vps'=@0U#~5b"N\>vz ` ZzN !s:49q)auB ”qJY:Vpg}5}u$;'5y}D2nažLѺZP(ה21Y)ixxZm^)e_3VL;m$NvJg~,śح)/_+[3Y[2qmpmC )ZXŽ̴IMضTgmbƱJɦhlu.!Q17C_&o~ V%| ^}KZ͖PMhRN5>fϭ 3׌s\`"dXY]k.3Rgy 9F1ː-.*u`Wa0hV}]N{6JZk\.xb-2aKdKb#-hB` Eb]3!Q2 )mA8s{ť,#uc ꍆќ\p١۰>w>SL3WW{9q^50?Sn|; ߔ`9l$vb)xUi(z^mQj)gP;\15 ҂ێ9@z,mYuy%tZlTfD<:cSs!Ȅi. !4R}b#~0y<x<6v.s8uNO>$ܽQNKe)RU;zP.INN:&znUHGc$o7Wg#%'BoL9ωͫvP~EM lQZofʔ*[>WaNTOoOL_}a>B4?r46y?)&Yt;׷{}?}>«q|xEhBi};<կ TUsǿL;" ťFܵȧ~ƫ;}on4m|ܽ}ހGo>_|@)%D+9'+rw(%u㵶\B1oE}cwUp)1j<Up?=PDf$.H.76;GhHvt7>M(A1Nθb qm< "Gްӻ!zE߽ƾ)R+D%Ej*,֭;)6B0W qZo; sl2̑spAJ N\%Ndϑ\SۤmԌ?ښ! &$lUNnDV֛ErxS`߾{M vM Vh$ϵ~n4JmT0IFe&';֌I6[ a{3H<|{u {(p!_M.o,Dc-y|ݘu>ήٹx0YfE^)wW}}AE|REJmcgXj/Zc:bbBԪW$Zf2\zd K9p8q짅z48X j l|˶vjSJ֜a?i<y:G'^<1eXaJ!ۆ6pLFh5jЉ"i\=ZId& IDAT6fX7*`hL~.b1ErLO-涌bbKI$tb(x 0bZi\h3nѧA)ZOpQAnT5]E)bz{ػg Ed%Sɿ۶ bJ@ak `VR{QJVB#ei4-hTNdZ?Iz0*h-PZqу`|#/>2m$FXٲ ϠE1ȢLk hkl@1F'ی_5ҥuV*LwU+zR"1d,]&Ndhx͍ܽid F8p<<^۔MwPWs\{CIhu]Qd&SddókۅځtaO SV̀RJ׆BMqiKc)e6x'~/|x63q݁?~̧ͫJWg>\%O?k_%/)kg?a>>PKt{綡~;މeǿfr8D/wm?o}[{xK<{>w|?V_Ϸ9 ݀ʯ?]1³A1)97vg“gו$GZq_T6S͕*WQJ+D^[oyLSg>L3)PZX!ˑ?̴6ugtfNsV,f >Y36x=<śճ?‹ka+ݖ3" fp3 CP2=HB[ 'Ӄ5TeYDas WO:³nI6 W#YTz>h6NN;jZo}d{0!6fmme dphe4W !%箓mps:&1^c˃\x ڈ9%rl|svP3hƬ9XTfq{{İWֶ[aCǃMdBrnYQ ltM6iWLMJؔ0%jm,фdۉ{H҈bR#Ӷr};3ܸ@&X+W)<ZKIV(&!N6-57V:oXrwA` XieYhA |f+ M6`cn<3_&D*@M m6KQzdIl>nqZŔRg8,C>%6~3޼\VOHc(yR4-סދhX 5_ͿGkSDHm|d,?{|s޾?#?9xK;dt3b /ޛy[>6|k~f>.iVD^ۛ+`d#Gg*\ yEE+l:7یBk oov֊m*t =C(uh==;^$8sNgukv6a}\k8FtCkU @Ƅ'aYHa!cԬ}$hg.h%lCn B=#s$#)L?RvwrY:s'>lY`>)y \#ϟ%*Rim2rF?lcBxy(,JRD_E}~ɍOIL>̺W:!oJKoX\8&)6J z`YzÒuŨ.t3Mj_ޛV;uBkv<#o&O!ab>W~3o~n_)&t&^bhR#^o}op5s3zy#TA9 n~.ERc{1$>ZUB},+7OlaO#ד33)kAl @"[D!f/%ny؉!Gqf71=&ej?hCEYB #Je;~uEgcᷚ-SΛ aP-TcNJTsY8/h5խak!Z:tf?G/[tv/y "ÈrF@Emr׈7Qsa3d,NY:ڜbvk+r:*/dyhP FSlcivMxw}f{Uh% )3MZҏ3N*Ab})f#^8CMX> rHnJʁ&nb-./} 򍋘]V F~ Ƶ?3 . `rF{`F_өB֒hH1ڙoF'sxmՆ"H ʊnX5ցF:5?;`ZWg[6!5AX` >s:\qc3ߏNo0}lW9lMdչ*W+:`o{ˁ7:@af̉y^軝]mQF֬qQӞ ǃw= gg{M|ҼU{%D2D>|#{?>˺uY7Sƾ}mp6D Kky A+_?>z6P4bShWBpPzO2'bCI&VN7D'Yy)K㋇&یn&~IXS3Ǡi2+KS$+v*$y|JTК,b){?ۄPmayxͧ.MKlm'l㿄ȟ&?; ݿ;\qjNGzoŧ۷z0[.,r:Y[P@4M{O~DilJiyf߉O@m*nG*e E M̥C8tBt.p" )g0熥87s~קNRFCP5P:9R;ϕnEX5#kF]v̏iA,:/#)Wv3ש"5|a͊@! CD@3-$,X?|(PBqL\P}n-NWmgolka=:*D R,aukm=dp~^Elp|v 7{4 S}˅x=b#Eɿ~/Qls9.3R H}m;8^,6HmM {`X=&TkQ!U%x*v:b<\B6H^U#LJT!%,m4'ʟ?eL;<Ŵ>ĴSw ӗsh9;tg\-F=tN.q ! ZGtmUi8"jrT?ommM+W&\\֮.B .z!<9"}eXĝIX hs[ :C"c5.粨K`\\k Ϭ"TOV`qɦm#˾hc\̾ Yk+$"c=Yh ksDqW]P*i2ě/elΨ^^"$P%;}\/MbSEDر#y<⚮J9ftj?gR cc@hL y#Z(dwmչkqMN( ,>0{LN)gWXч{e>4bO"ѳMBqfa%6O!CuT癹 sQ^e[6ޕ͝28xG+ܿx~3]KuAi`u]⺰-M yi¼,p\Nhh.:(b1h 5- ;诀f m E)^ ʂ?HN1)&dN̾9gZ61TS#ɛR4yD2sđivqHf-)#mYꌨ΍ څi ~wŲ,@֕ͪrbJi9ERfm+ۨ``bƩB0ly:7 ih@qus`{Sm*6ڴ6'hZBpw Nku/OhB'mBi8oǣi/Q@c cʘa;Ⱦٛm>Ŷ L㋂R,DcMs&4D<dhS( Qs&W{_ hLDEP6<{e2M|Lc Mx eӅe{[CSK?gLW/޻=Qrp3Zvaw;-ϟ{9k{}0s{_v`~kI̮?eW[Z;,/Tb 1xRl6'> `v\\"*u+>ʇ?rw|+;_׶:ƨ9Z{s7ݲDRr' ,1@  ?!<I Ff?$HH6fOZkYUcavh[[@4>g皳f7]UiǀM$ -?vG_S _-nޯPthx}R%{#|uT%bgxY9rz2pwU0C6XF6L>:,3GOp8.=9 z?&8FH6DN?P1cdlㄦ@a\ad-ST93Jlvp5"GovՁMLA'ҢQ+uԸQ؛Cg4 Ei6BA ZhzD>-s["p?`u]FzMDJtի"i}}Q$+9FNw Ƙl@q84-eq1sHn,jְT\t0VRpz2oUާ=ڸCTG*} )E. AQ;u#қf,YmL[BdE#BsGx [5 IDAT|+Xoμb̳V7.;gܙ o̶/axkk<)$`>q -'*`n|jkbiccv+'N"/8y*VǼU|3,j&7WP #1O,@JDT њY RACEL1FYgȖ|@vvy@+:n~m DڙV^Zxl>`o&܍Ng(!$u=H,``EQ zy̻%28h5P(T~EK14t o1Π W"*[)l _M. <) Մf,wCLئ7if%QdydJ/Yd<._%@*!P !RY@>x`v81."RLʘai۴{l U_u@r8Hw12U]-%K;waa}6VYu]ɉs<˲QmFslx3D>e[Veש='\SRU]H&oj9RMl#B W(#^:z4iP)h,jj6(r@XowM4WŜG%fcΉhȖaw6H BIU!iw Y:}fQVwX̮ !8YͶ/nV%BFJk}ݴ"JM"`.#2m̄mGLF}:gI]QmWa`(V[l8x8"qA`qsȅq<r]` x4?aP/ n@8I{UC):IB Kڮ&on:˜7"`AwKCpklSt.h@͗leޠe"Ks4g;$=*~ǶnmMN!mM 8~#dj1F,Nji}bZ?ְb?qXvYW3"j4 @fSCSP2zR$,Z]0drjj?T:ŞJI5+RQ ("4CS8 ra||sfKxH0n+08NfιZgCvs/9́jZ  > Y?j’)i=bb-xCTŲ,'YVh18"Gxl103QT2@/`~ΰj@ҕOAjCB(AV"F6x8Y׀6yFͰf4&X -L}bdӒ`bqb"!lJvo-Ud5A ,!AUo \[.Ҧ(S0ǩ`yRoMeisQD޸ޢ.MiMZAE$ {2ONK&"l2ۀم&&&fȈc[a/>Y ֝m]WO ^T0e춌0d|r?Ttv3!űGƏ>]8B vcI {a+UkD3١a:TF+-8g,R">'g(y:`Y Ɣ9j0`αI4 o*8]o<ǃW 'F$ii ~ؗfe{XTʨ5@AѪTZhX6vn1nĔGf/j/|Ro˱C!Fbfy?4U՘6nRg!9Ԯ')| $%f cEJVU_ƹhu|5 ]b|#Ugߓ[!ya5᣷hZ#qF1VrNފFjCct, fcQC3 DAj2TaGZNU'ް`+{\HO5Vܭ>i qv6$u\1.ȰB71OD=%>_~}o{͇N V$&L )Ņ!%K͖U i^!<o4N ڿh]eUB8HV{O[{`FzI"D늇8ahF6La&޾g덭!|ŤS0Eet^cʄʊlpU ّ#FN uAY2t J~o!YYA%[ %5 K% AEǞXa׺@P\U rV^ɢDE7KYQKJ)ӓ6fF WW?mBt13JY E -R]L!D(Ŝ*J=Hv沸K/*y{=ͭc@"}}Vp r+.21b(<)hU`Rp:$Ԙ>( u>9MLTThCT *˒1O3J})/XD0gxpxp3fBR{L:7#NXsB0+?[&ȥVp" JmBdu +4 IgaeLYPsD=Uo Ƥ%" sfg\& 1aI@+FRh@$! @)y^PlBA4.?xO `BXf5~?R~9&"cT<>J ^{>zazSOkn_Bν x~9W<:}/> C ;P?&`ɟ3mRj!T bӑ1"~}y,|Cvx?y2ʛo ;>Ϟ}ۗ#,ut!8:DN Ŝءem<ĂHyi5XA/"o{ gHS"k)b[cƸ0g qYU{?k(@nU ժLZKܝ uդ&PQ5ӕ؜1Qs2 9`{xYƸ[iA*b!wfK48;/a^] 㷄\rWV3݈!ξw^YE'dK돹A0{>ъ^ %M"1Wtɐ\9,hw{cosÐC ĶiNmNx͙R\hDGcxK>j5-XkY ǩ5bu#@IaTPdw]_쀿z/jRЪ:8c]Ԟ.U)ǜt!gdųDYݻ][œJ3 '%"YUtvGKL3tc zn,bwok-nMsSiewlByȘKRԄT"jͅ2"k + b 1AˋdԪe 0v8Zr Ɂ&`S0G0$2W4#vC[Ca9S!nS(PwWHƷZyS`Rj^I6p^D6%E bO9΋U1o0jT".*'2w::De\L%Զ g_*|1A4I甑f?B!@Q(X(_Y6Z0XL&h_baRNު<I검(c -!5amAQL\`8ʔMijfCgYW)Z~LԽ=D /D(($ Y0-ᅌDab<6.6,!7>4һGN4,~0WnD1&`[v f:C`^&aK.ȥ`r,RrJ~˔Mkȳ% B5 9ڲ Klڵ5aWvI )FCBqlD!`3n$̌vkX" ;+GXM-.)i|"P2[\W!0L:oJOZ={d۸JQE-!Y&)Zi%p YNODm|E@@d*WjSKT!F6%+ꭁ,&ɮ ZR, BBկ(B8a&=VАAo\l7mwx~u~Yp{XЇĈTI /6x(\]e (h!}U+B27ո)q(?uG,Π)uY+ڱmdBH ՇΜrb&e{1-XRHMUQg1yDj9|x4W9E'R눥KYXCվ:)ԸvOaud`P=neM\(bK7fW-wrmOꉮb׶@tr en_J?C>JVGMa5$ Ak=-"~տ!~ޥ.06'U)VP?7N#zKkοگCNҕ~g-V}m m)^"z6~@"+v^mݺ $EBdFb2גOQk@An d_D dgk.6\OimuzcT1J8JD\ Yc|C$F-gVsTN9d AJR+*sfEs_uN򑴹h"{x@Mxjb f@(M,#l.Sq<Ƚv~;ԯq."٭oOhEdn@Y `uؚ@)#Ma} %&lR@- JO_bx? Js,b+YOF`vݭPRSxq04#Cbg@((8*X ʜ 7bjl؂y'SHڸ9t1Fl٤cfT|Ψh1NlS1Fg}Qh"._nR?q"`ap8p,zmO6#R<@x` rnvQ*{F\1Պ 18,!kq=DUjX-՜=m 9FȔBb+T >mn58GFdhDZJY> ydb*]=5vFTp)& Ѧzd,f nWV0B]Z=g2+rn ئ1 4!/ j-: 8ٴA 0Pa*/P2{YK](̠p9G\ ~<`Yz[M"p׿yb+]kU|؍[܊3 ~~H)Èןᄏ/׿oçx*0f--@rń4` DsVQո%+nv_*&omŐ1(hC=bȌag#>xtv|9OcFw7>숻[@g#"q8{8E| ..֗? 6ÿB@GmSn9X@Ol795Xb IDAT@ql2P\Gδi~PI!o ƀL+:$BLLʖ+€ h2jqS@" 0c`_&!h>;EͩE.:f!o$+c1L@pH,lLѠ.Z<n?+{T{r EOCڙAԛȾ4'1rV1[z|?`8镼s(_;2JkHΚO)u]l{% Qjm 2hU^j"OBrk+xc.R8@"oR chva^^J( kq,䒑} l!t$k%ZqIKw@?s "G0qlQNd3U 5z X7h $PȺxӞ#elmQze(3D]ȧP*=7[H?!aǂ%+8ϙ_|:Akw"[GoS|ȷU UBkAB&1E *]E>SFĠHXBUVaQܾڛbb "`SE#j1؟ab\?Ga=)$ū1GpP cu0O~qQc~.I~r&in!}[,ZR0]F YA>iӌn՗>kp w!I[vPyȋR S(>RB4gƃ"*95TGp`̋GjWI`_B+'Sqp"pum\֊,NnݪDDkE~^%ahr:hݺCDLF\$d\]k6ABa@W#Ld㠽x %>/xuXf`*\?^w~R ^^NǷ 3n ~ƣGo.~_nC 7Ko72q8pu}/~3|Ӿyd;]UV &.brHRCe`!STpq8s UjUH0*;94DPDw׬{x#oa-UwQl ކ4r=^b6 of: BZ|P(Ag-NPv瘂YQOTz䤩"@RO VCd͒6uvKcjjU}-&p|vr.%F &Qt$`?d=vfw [|qM7{x)Bկ5?/ẔA6c6V ɞu/ . u(.&*pk15~mTU^[k 'YI@܉=YMZNh9m%mCͮT8ԁ*#:*Hb݇!kF 3E0XTH:Yǰ$NɂگS/ú1 {ĮMs'XXoJuRJ6g*ʞ𔃺]'x eXZYυmZ -RLA#Bs7IEF˥ Η6\K+v-YQZID)ؙXDmU`AjlivYVj|X *vY餍ӄZ%\vgnER*pFxVMB)[X"_H(e&2j^c䍀b,H~<6ڽRE.^d`(3 T`1P"f@ Vi9k iCcxPыqe~ֻ3]@j縺bn%qy} q :*i^04 e6h CLH)_X 0{-d+Z35HثAZ&٧(J%+0Q4#W`Ζώ;ȾA?[f 9msh!JlSŠ9: !vA-(*M Ib7)2 b- 1R ̋M5!U hIdlfCq/KZTpsmVhn"idPU|I=._߹&b{.) WӧoBL V+nC\\DLnjnqE^x[&>5Pq%m=POz7 ^>#c;cm' *ox,/_gpu}?WҀZ?',F̈́^* wzr%yt=P-m']98"M;8* tgɀiA hfԂfs9z:vԧҭ 0ZA$ie@Em*1naH%@ y#Za6GE݂ Bo½fX~7}z0ih߄Ӱ!\8\}].s?ܷcT b4H{r質'ֈ"-)~ 28sZ.H> ǐ>"y7i䰉f Uz-p?|HE̅%qayEC3:9u'LuQ5guփ-PFpm5umknFAçZz'N_Zέ&BKn1+ZR>/}3A'"V*~'v=M JDMTqw:,lm ٥`?7)c=o} @ ŧ^oޠ- yoϏ@8ȥKY8#KA3(-Gv6ȅ-dF(#?M$f\"㫕GT-y w#:{,,PTI ɐ,b|k4%N\07-RM l:;_Q`&T9mF%5R]ת HL * Ǖ iY-g7' {Vi^ͱU1-3DXwWr||X B Pd2![@9vT)RayRUߔ" TW˩(Zm lhPp*cH !fegfw" ̪]2 @)] |%F-C4[,WQ V :߆qq< Ә"po#H6RFy%Gx^<{~)^<]n{ۧV@SKD S\P-S3Hiyg{aj'?uAgl  HAP;a40j.@9چ ,f@1:\ b+ 3}r@ Օ3%EL"~ΡcP%n#@@a@drz=t!Ubq 1T?zi7ʸ 'sE?0~udVs㦹0PG Rm(#h:ת9)THj&cTiNWgkV7ZQ*ѣ9ھzDc;j؝뤽a+J}8HXQ;\Z(jڡi9QNϪHz_ąl+.U( J!0bB@dPci |{GuakQWoo]rh i j#^|eZN>g]8$z"N]2ć&2OMqEw*գ%C?HU܉&6rk)#R̄<%ZyՁE~d8M> I8y#)zXCP_ÊV <6)h+*&m"W]Z-1v@t@?U bl{&GaȡR1\ v6FXl^$b&ێ"Wk8h%J@ޚ!yTXam>ß*s(vgUt R3rQp(BT Y,Ⱦs]@ϧ V0T\s`Pv34`) j@w[Hݖu'YM 1쪉K!`H8D@G !ϻ}=)=&rZa0H;E< q1*6`*Le`?/f!EQC%J-dm90/Ϟ}Ä!mK?\ 4lsq񸇲0q<8l7M` zk`bܾ6#m’gb쐱6j"=n5է5Zm+q_oTXSBJR?e;pPV kŵgBM?I0^R^+6mⓥTxI-9*"<< *^VK\s@ʾb( x2rb0ZT͚SdZQTE*6ol/D"ꊘ*x!0jeLҁL҄(c1)s>LVsBhpzl`Aqv!x'W/ vE"6$\^f,UH8 7 J<)1ƍEALGŒRFf_”6d`H N1n)c ^]'a?T`7(EWgܗ', B #$ x_ky;"q?B 9a',5$é~Dr` @}brmg-+NyXc@&Ei̹+j {7'Y}\9k _[s2V0.DUZh?hPSNJ}oE]|S>h;6s[QTϤ41X*lёV;Crur;}'8i0Sv'kIcAZZN~PƳB.~0ۀ ΚbV0UEewG)lm6QRB~_/|Ͽ2{}CA9$եk; j_K͝dPdE^hu*5aVt|t钦akzOAݧ}:ГG^#sd?xۮN?:uط~l8:UN z"COv7V`f1*5ǎwhnA 7{lgx%SHz թFnӘnX[{˧T0#8RZ1 wY*~HXI#tgo*/d204_󼝗z_`?/St{9:Ff(?FD64 kc([#B@ sE-S!@ 8o"T1c+ȊD/6bǧ]bt5XC 0fR+ Sջs9@$ OyaPjH4$̳bO=9~BTE9jg49˫#\njg1 b9n:" H),"*%fǝQԙb5B܄Z1D[Zec"l6A1Q.!׷ bB-@)a[M`0#jaQ\&֩@a7͙g/&|H &k&6'w.ƛ[ [yFUœ' 937,=Xkg:UCuM(%E%ANn aQp DF+"pAرkEHQlRlg\|߿>E EM%N~gal,Û-ZVGӳB 8ΰ.RaX$ 7nv,墰\X]^x |Ɠ\~W9zdC`gdz\.軵LB0\NP{.3J^y7K_f6kgg;8G6ED; IDATLS ?7q҈o-.B:үQ*sNy eiW)2䲾wp0 f͜Cd{}cswf6:FR8Lb9]VΡ$-թhULm!:u&Qj1c(LX+J.8oI;JG' m+5R[2 `_XqЭ ]35d'1>)4N 1y7SAgElgQ\&-CЫf*l Uh͛j{u/*$BpҴ`A{8+N`cFd:˃-pu7FjcZ'\DkezqXHg(ĩq* :%g4L"Xqqf8>*\Iy`139v,U\2[] ='g!H)v6Å0"?V DrrO eSČ7y>ײ 1/`NH:%4#lqdilv]^ñ`RdZRf-h9'o3ȴ5Ū*KG`BUkl#%*|=cSM_첍ohLR6qvfX]XGt,my9ucxD6ɦdXo"}6RpawwSO;N^)G #e()#fpmh"YnC;k .nE6DNVkIӄec C*.7Pzucs|{MyَĘ ܼhۄŢ ˥> ww:OU8o Ѱx./=yyYќLNaIք1:-3o|_0_6gyu qxSd>n:0t(ٟWK6ye aڒ9dJiQ'Q?5&,9"w뷸qx[ok֫s.ZG~CNf00_ )1kjuսQݽIƙ4~2C̜ي,ҭ`;YcR*"̔3`'4]o嵊 PV`F+ӁgL(, 9[-1lZN΍ŋ$/9љQ䒩3:.Pj?^Ǒ˷umW6 ƙ!-ggm&R@.e2;4sagl=5*Q0N!e+ k0#_3nJWjsqbG[_wF?hky,~r F"Zb2QExeUᵎXTmyt!ILT<uv+,'3Ee1*rF֨_!Fn!Dpvrԇ<(%3tb ( k &.(QwR.Q=U83"~&C^V3!91sC&,}luCNK#mሁ@hҬMAPÜ]iU.);y3!\#y+|bpf"@~Q YLI<]?cҭ=1XBtP6'Ob0\^6dI_l^Yf{F͕;i 9$())gLqX85ti] ;HXU͔Y?Jpv+7^z[k):fm5n' >FTC۶,30I5NeJݩڴi™dF,bK_pue JM9c&%e#!}me퍓U_/z$!Bc|Sl]hyVj:xg,tZ`cu!^'tB#-q\;#ddKW_S2hYd9 Xk7⸼Gb9e";Kx0F6Y+n#kѦe63xn6N2'&x5Ͼkûn}{SOnxɎ'pzE99aXry9rlab%ON03 b,⽬e˝2y`{O=ձfoڵ =gg--s޺ܹo/ U}fJ ؁rw?ENyghZ>$!cϢKs~J8b(V.2-M[ZM1%r3V-a[a̲nL"TT( ƫV\$mޞ9L )ZbF0#jGBQ1S6JUmf XaQ-(40r5B[ŕ6¨ Ub0IgɅ4 vN .enuňmVE1͏=X{gϔ[Ywe]25&Ѩ ڨ+T<^KQK!93ˠ6c}:'g(q_nP0pjRKhlT6e 3G.E6Χ>/1*GYǔ)'mdS!ʖ 357[3}u`#G#X0RϓE]hev q9_#Ovt"k-Ձ$9nz◍)eHvMע3 {g5pn9biCLda%&7*WGh'˱ֶÂLr$4jyI>I$R38\AD9iڔ.4crPy{-xGqՄQr6QӇx|n l ֛J? r~/ŒrK `062'ڝ<ts. !%&Kp QR&L۪(*ȖTV6qד1IӐAݣbKóTI<18Z+CPRt˽O=]vQV4lCcQ )+i^TْAdM:G׉Zhvu6$XN!yR!H7iSQg"d@Cut !ެ B!Ix]~߇X􍧹u %G'җ?o׹s]!k o{/"!Df9vF[,-?}?|qC?=*ozG|8X.Y.]plc!u CL.jӴvzq8/4ZrQKc !FrHl3r cj-Knʼn*DmM KIIm5F7/ƑROvyx`9n/Yo a+k+#FIcӀl#luzXV,/RZ oNU\AR1ZRwॕ͵8_Hc1s'ޱ^9>q5hMF/q\;n_-DɴdptOHF1z߃\؞]Ǭ+ P"1A$.2kbƑ͖f 珸}g3/9>Yp>ǣ-!5˦vFp0Zv-7Ȟcm`Í+n޼ƍ9ϽSOsG.˫khu߳ޓ󂡳<@>bxݙsxxsGRNl_zENO\whfs6ˎ1/?W7̏)84?EUpʢy21uj#Aק1D*!vtY3cg-''ܽ%nrmoݝt:8_oIM+c佐S悫pfW0^sb+[E!}Q8V\|>+z_0*DjL7T])C18UL!N":TDrjWf\}N1ۭȤk6\_v)VaQLn\71EVmI]2j\Q@򳄔FOڿ+oOF_4 EWՔ ŊΪ[6i9F1ۍ* ֘fF:2qs.K֎(|Q״01AT,dcAХ(h+BsvŘ W!?YIVcE˟[/遜96:Ffx`Hb!@ t}/E*y; |47vmK*X1h|NIxLY^iO">9䶾DQJǸR8Pgt$+3 H9)[*`[o ܻ9l'FiH}cٻv;Hfs|8=ͬV8Kp~/scw #'9LQ]yZ 䔉Q_{-M2샩HCb"SObATdY 'p]wyČDԿM?o恱TJ!"1`g:ʉUG2F9XBcI![ᒔRMp1ؓs$q Q-x((uZ[8xןs|l^~ \\3oweՌœKm?/"-yKt}agֲ-peݝ ^r\\.!iLt{,KNNif=ǜ>섻qzzzsA(A%ȦK5/m~@> FwXX]p~ LTܖVzZ؄@qB"a0ud)#ܐ!KtM68VZ[F4^ !YnrfHQ։rulhN`o6ҟ@(8΍駕6D </m;Mj~)rK1MTgJ# ha֒a{S(_ 5LD+Ѳmf&rд)%jpv6gC+k"w5OM0G+vk2g-{3Z-1R P4Aכ< =]>牧NY].x:wrw}V"m|~j50yk֩b;_/LÛo \Xw6-7prdWr7y }g=+<%op/~Ͽx_Izo8wꜜ_$;wcNNy79ztg~l.zBHǧ|_&ܻo ۢ;<05v5)JG j,8oގ gaa_rzqzMHQb@HLD@۫\F+|sen Eَ.S$9PJ3(ҫk#<ȥX#-j[ k\ciVx"B+Ɖ/z9$7[:vMlV?h="D 咯 62z*wm0;qri}?f˥UU㜙%f7䀓9Hl&d{$'gWC6l'L.r/}T*'MM9gMBIT蟯ў-•8F$q9[}F _2 X+y.2\ IrlmVmN4&jGG3oǿ=.!u6Lꚦ_ .K;rͥ2-4RgpTچGѩY}^ɛ^&ou+-VZ.DWZxmgܨј vrdEM"v*응1T];̓0!W۔F }(hN d]mgqxa^7ƌ ZU^ѵ2L2&&RR[Nb(& _*vkqhR|?תkDumEe>;r%2 o9 gOa2Xqd5"ypMCaTnCH72=JlA\"mf:rk%ANo+gH2'^-38˜]XPLĺ~`Y̌/euWm?TQlQ0r$1h 0pyi9>tkOYB/o@IK+7IXr S+_cs{Y̐ZtLqD<ڮd=,F_˱)a$q#,#[Ғw :]2UXeU.[ 8[VKv0_dwgSwm3#N@cbf-7oMWtB' l]ћ(1 IXt흂AN[=jTNXY57lɟs.{-H;,(1YD NcϫZԬռ zeTf(`RjպL3Ŏvt4VgILS5%^R IDAT-?.l/!x./\^}I.[q"窊.ѴYj\S4gJHG{=o<>ܿN7xOPܺQ]&.7lNBKy~B&FL^St8'"j_1Z~>xnmy#~>+rx /oBf C@7g^y{~7o3_ql0pvqKƗ o?9>z}`S1Cv R|ka;v㬬 Ca;%7oP& }Z4~ 5\/ۮ{O[[i[MO3bFx?5,J)MK''CQ'L$\T(5UkB^:dm5>aIBmrډ)ʬ #M7SƷũS:v#e19ĶNFϦf\NcKNkKIv&m;Ք6] c%M1ڸTƄU{[ۧ 9iǪuv,qJ%ΓG1TMCIP*re((^Ef+T ~eX?;FG.،rI=?w֥6UALz[2ع"*=.[Q2F\*^W=SVKR۬gYgM t@[PSgIՉϜ\3 nщ1grlTC2s+`KX*r/d;~Xu [`u#wzm]r+8p;ID-Q./Xɐ8xu=B`\܍ဆ!`"nq;sutQR#OڪKI-a%Q"DVF 0؊pyn99j84#,_Z|e/#py!c8;ͬ6{x3>o_[!DN@9U'`dv-]>7?kh.8P:=|O|ⓜCJ?sܿoG%&kx3F\"3[ ƒ~RگȘ[ Y]<}󐻏\vĜǟ!,nkqB"Նs5;^T$A[ҧ%-LA"kzG-95Ppd,C[=+vk M+bb\&3`jN $C%5-igĩ$q q6^tqQ")1o?QۢVWjTK:|U*u1CՅP'QQBڷ(j[`Kp'UNIa-m5FrRȰ}eEn#<+9C R٪E* T!RO `4G2"dKQ3ީ$wbit(X1{,N*9CA 1/s9_iC$ug֩p}dJ&ⰳN h*|ۙQ3eb^c*ȖuAiY:0NJl2ڦe̵[H{zʒ4,kvԆi'iٹ!s A% iRr[CJs9,嵁Nd(,}a銬/%"MKfNb70,q0[v EՅcr\\֧{b85N`l 1޷?'ӅsҼ?Ȣȋ`| {&fxeefи%si7ExXwg(F=@I.4z8X,\xYUQ819X0}tv;w|bu7ỿxΛDrlɽ "73B[[ 1[.VknxnJ=_ēOJ[ -\;8rurCNݽ=v< .v8;~Xr1uslbpT Zlj(2B ,< jd\Ʃ9v6GlI,Q EOp[ONXmYZl{DElyd -emS;i2eeӠS3J8?y<ȥ 1&R;fcő\ fm"ށC S< 2E7L<6e85fW}Xuʐr,|C|#g|wXD^})^z/ }''AjJ;Ir*VS8\_JI._'{; 22 awSOO@aggCy;)ouVG|>O> <ͯ#n6?u^/1?6go7ڔ(lLb%;R ؁R;n=3k..1`ۆd&]2keîF<\8Ȟ*^*-^96-&vp c='BT~S. qQy+U~f%vҴ%=L =4"R)&\ 0]cVlodr..}6l>ڳU,%¦i4 ֛щ W_抨 me\]q2Qe37:HcFDI)l9FcN(wkdo\<6>\yk; f X&S)GWEcgKX#m(&dU|Ͼ0R E,S+~<}bep̕6{r QHrUܬšu vJ-R_R euXc:5sRJ 0֕gTXAIP,[ fy-ݩqhx^E)oUKu)[ƱrQd~UEd9f?TwO~w`1W>S[*oA-\qo̸h]$ 11B_ێyQTiEqxF:i84">m7eGmFTw%a:K*@[az&pbBOs$@#B(a.eKސ&D}|U{b!6bgZa {]) )1 9FzgˋaFR,XA 1@yJOw-rpͰrrd8s g,%hqXC֚oQ#7AX4X0n@'uf4-upsxrolhe/ sQ} &ے!{jbFGgps9eX$[d!8 }Dip3GͷګG3^K2~|#?OOO_K G{ݽ(R633rD/sKwlx(M`1/wy׮3<âuMϿ}ܿO=uw=>n>u^~\Oɫlްâ#px!vYu=1RzCT4;3Rs8DkDA+* '#H֫4aSmi$g:1rM-|6D}=F"Hy膅V&4Ralj7jj#2-bmGkW,^Qilۆ+&uaO;OkLr/ Bn(,hSh4:pUNYńc6 Aq/ЕrN} *~_{ Ì|Y_o٣B0%Mjy`nhsǩ YHK@w*~m^+\;0ܼhˣy6b20*V3>'%B3|_ks|7o=I?8 Rp6/G<{~x\r9{_ ?3?0x[(;~L ? K>J %0Ƴ; <.CG2&,I+ljdDz.D REl@/5FP0%ޝ)x煋۟[)mX5X+d|)VI:39Jn14*ՁH'7 MƮI""#؈)N/rZޢ3m1Y"W{7d.\ÌĦ!c֫qʯRd#dG3^*Ɏ]v TK:2:W[R *Gmp"8, -B*|(lٚTDrQyچ [Am[F귒Jyv2XÉ[( O/iO|Ƽ~*Xu?feUW En^4c Z~҈?(c;|DÌQAւYLܪsFj*Ks:Bsӧ:q\E_31K(YATFSo4){;aI9Rkr143ي*UcDQAQ]0%jl5آgסh6Ck-mlXa6Y(),);Na]-{%meg!TD1l1֓r덼wDݠ&2!|$RaiHYZm$8s2=lX(7>-υ%wYnv8-ExR1`]frqv0t 78V3am#yZ%5<-vl&ד@э̫dy?򣓟 "@8_ Û~`f>6kj"871, /9El,aLB%d\I ;CL4Fb\"n,yC 5\\Z֛z gy㓎˗8z8Ӗk:-ew私C>[[ ]cr=P̂lJ`Ys`K 4钧?+˱K9|u^\60_yMy}C\3$˝>O 837oWfqt|f,ܱft]O9'4NFVpRĔ05SYW&tu"%BRj]Al1d|M5_:'G5 M\@?wQ\#etY[h<`l`W/E3NeӉe [hfV2}</1) q`]3o9:cm[׸5~>µ~^c{W6=?2xq56]bQz3_KwķÍJ`AAДFaAhZkE? MGox.(@TD0 ZC83Ny);rdlȥ|㴐B͹븂G?T<ƈ2QD1yPǔ-&s7_d8ŀg|#l% ,I)\0.a\$WШyl/$) "15arqVI=ZLWC~ӕhSlNmFGcLCM|~!{Ru`"TlJ2#(6>Ym;r ,\ |rT<8s.u${|SқJVYkp[.1W&qeWxXFug)8byY'J,gp F eRQPps@%bN("G$h3b N]5UC8c%QN^r DqgyU<᫷#fA~]c ,g}j=w$՘]һ5CI笢TPXۇ(h+:(ߏzO/aq((Y=pFaMX -*X_Z)9gmuS0)v\9mآce$˙Z 1~?X4+k2uCnzfKh[cpD"DMx'9:B/ y{v%pYYEvAxO1w9N.9q.15lV+N{ψƔғz8ٜM;xy3`MG`A!ZERH)jӎR=ϗ:%g.5btZ?'{omKrwvDd9w|CM*Jd膶37o#d~g쓸viHxϦ ]|r7'?̇Bh˼1 .[#EoΒCrn54{bCϦ-س#hIZ]߻sbFB1X{-il (żY7{R"5j}J'$&\K?t@m &}Q6i4i&Mr#M ]7jµm{׾AsR%ƦNշWaZA)Kvz|.JGa9MܚpN,A⍩3=cɁ'%G٣ۚ[Nf hz!l)KiK C9 B"tIF#@T+2dd.K:6%,F`ror'p/;CxgA{N'G%ebҫ6BNm( mPyOˠj,ш:Eih1X]+҄(+Ϥ$z3tA\fbi>D e 0|HUX,mcE@LcI~SrLi`4ˆKu/އ8Xw 'xɈ@Q\Ck6 -mф=`^,up|f \;VD{-67e,Mf)QZ;RIg.'=?'St\nX.i9:F۱:ptcMO4 tR=Nׄ^"ep&f.1R.mrM3xYLc4- ]VkY5|;R-M'BK"UTj*^oDmPRfW6!.:b?2=_к.7'/77*U!%%F%ѸrnɃ}Є<k@ΙF`iyjʯ!*L?D9!w5q*]K(RfO>?<ɋ_)o?|qp`Tx#;% vbLv%`ސEL=Db4v](RbOHzŀ=RlqMfDnU /ӯ9%!&zucy3?oƋSyk/˳&uͯqt|7~"?CՇ_xcfҶس' t]&Ŗ0'z7}\G{/ )G 5@kwb#Iq$ʓ:Q+K6 UKOh&{e蕾sƺHNޒ䢪qQRJX}$ɺoJn,5!(=(FYQ8J:-fOUNlϟs3j/ ?o`2ڦ΍ek4*6Yujվ3YvX a%1)D T2Q qq_xړw>8>qb)BRFD?Kz76^O>M|67~_=_~LnTrgg _>_CT0gY(i>4eŹ:eQW{<\jJ#%0gf=Qn0"2q e Hc= e,}CEi:.Fڝ3aR!R lBʩ!y y^[XZ{~(I =;W@Q=tˈf@ DOT9Gje).dtEJ%&X 6ܹ ;-V` e.d[ mßYQvht5W'K|KCTXtX{XuS ㈖.998j%"'f" :Byn%eLK͉)ݗNf9R6t$z^:UBL :ӟu/wqo'uΤNIl6&.-as )U՟faNȶZMXb6 &g6d;. E]|ȶc`LjYb]3?)*WqjD6gUaN:ە9ePL%FVhu:Zܰ5f}'{=cNK,d|,nJ]kUek,缉=CҶ# fhj } =+n9,zP4'R #x՗'R'D6\޲j6ƚ8 d7ލ1^5^XtUkz[.YՔY D }:ЛMX eIΆkNlF)5ѪYQ@bϹ@jQ۰s錽[G݈GenmU99K\wA;}C/S ԗ) .\Cˬ,[j&>_8KtHR$nq5fx7u%+p]H qL-^$ #AyXGиL\-ncᇎ%|w0klo}_x-rNQ?wyM, 97Z;{r攁`uyGm[ 4:Ħ?c9{+!1m@4Y5N1 ȅ5R̜{npzI͵Z䪏U>)% z=T_mpΠ[eY5͚IrC$%#mh%C6x8;Z|yx*B:cƀfG#Υ,u,&m.K2I4ٳ4ĎK]%ŖUꈃ)*+䋿d~8GG8ZH3j*;T~A߂Zdz |J!Gvv EFhėB0EF9~_y?O/}1}ʂOY7uw>+'T1'B486F6F3I6qڷ'E734^Z8nI G8q2crxVЯZ8LJIU3bi*R TjGL2)>#xWz`5}Yݨ[q͌*E}*qJå&mEr&Ӎ6Ŋm[u78s JY!Y[l}_wb ;ƍZyVg-g7:0Yfh;>:BcM7V %cz#ys)HM-6sĬs",zn[+DŽK4u`kGW/ΌcJ-OEJ\+rx؏wQCjeq|IP#'<>?1*`>!@=h%k.5hHgRb1G\i֒lRTe)%BlI~)I97q=2ձ {{Kƍ_5Hhl[)?A^q 'O^G{mV C8;=ࠣm29MaWcV}e;g4W9(mk2o՚bX$<tqpgO] ΙmSRrzۇMgBN֜ka~ɇՆ*}'缓yK}/'Lͯ{=۾/|w|.o{;/qk2Nֹ w1p0(ڳh dՕY*15!8ڶ]i 3(kQĆ.j46`HyRjIqC a;O*.Ѵȸ@;%[]oC!Ot;rj7y*RZp5FrIy2q >?{?𔧌|2w`Tq!{{|Fb.ByN(9ݹڰ9dM&ZPWaZU(`}5D2>x>+x`}t Bwj]aTO\ Y;\ _i!)Z/9S{޹s\-yKLB(!5qsq< q7 eR=v-+熦6PKNJ-Bմii=)uJ5Ak@n4oIYUw]|4,IeVtX,NR[eE]:RTT?WeSmRyHZtΚޙj5m8@?{i`F Pڌq~<9a1$< ]+ !K"k.LйTOcLU!d\I߂4jG{;3[+!cu$  b4Ƣm,qn 852BÜFSfvjjMaUEW6s=N!CΥxVm Hc`Sz^.'ܜRN;r\=MhH'geCr誐%P zO?I#6C)I^̨3E΅ ##Ș3itn|W>7ش=_= 0΍TwG{}5}uG+B"TlDݖ81n4qXD9B lxI%z熤=p[ qh9]yc|s3VdRn٬7,N"^nЯqEixk4ys<:iX6?tRkgCNBfz v2+.]Gj8x*$繴wX -Q3)X\bk)Gނ2t)j1LS8hd EDb}Mfp-PX y,i1_xiZ+1 v1BY5ɥ`SqL"/*\B92]Nwޣ1?3mE{_}u]?o>Wɏ9osbsͪjNnb#x!3`#Z6iXe9bO$l(CtzSDJtihE[vw#"8wrd1m?L_ox z/+wE_~e/Q+_y }o \XdR4ٓN#{{magaˠp|pnX{ %R~- s֨Iםdf!' maB\ UY }cyz8q$Vf2o3c2 Α_{xΛ?/'vogW?%yX[ ֜[~7-[OE/_3oo{!^o_1s2[L .LՓS 'Sh0#C9PbQdůSJf֩ge@,|O,4Kŷ&!GbV̰f3z F]I%Rg+3⍝#rdi\QWۣ4RИJ5C|>5GlB?V1'^=UGKaDʭ4{`mT@7(mi ΓzJ têߕ'{O.aF^,|(CJ35deN>ӳZ [Q[I[))PN'X IDAT ATZj Wj\CZ߳$N\y3ySYڱXˬf*D.0Ja)TX$hK+8_T%]Sf8NU{6tr| jR+.͟6?O|']N-&ekf& 2YPRaVUԼ[N@UR{5c4hXuM䂤(vM$HuNx8_e"Mi߉ViDwZJw{8tbTۗ64ү&d)l>Kux|7?"TK hI8e]fg dsqPR,sw^)Q 4΅[%bj6L!^)5*>@[FDl2>-Y3$3E ^)MB皢G MŻd {#YtT@xM6>c'}ԻU(^x"m/ۿxXǾ3%JEaa*Ա\$/\!..F;s Nwv,=1%"F1! iP!CP\2N>i>eEtX?` x;р+;49sO`qn;f[PHxM@ ۣ02ET8.MetM2eXᶭ=DbYʦiGd988!_sWAN1kϖgR6'U/t`zpT j/'ڰ9,E[Rs_D𐜍H܄sn˜;΢>amˎ{jPrk34 ۪-'V–bj3}E -q| ^?O޺,9w;wJe5R=MgvĖߞjM)Ͻը4TfEEbk":oIVr?җ ՉQ#J_&ނ_SCՆONHB [ ghͮ=ޙ")O8S4%!ЉLvתQa۰Ě~|L5؛Sxpr G1.dnI/,-RZf%d#;|\St5.hPˍ O_dXb*),,)]̠|ѡF; |L`hORT ID, J~TnR%q.Y5iV䛋SA!jk5yJ9iJ9Ӽ5>́",C28}TSvдG 123N*'`y!)[.VUs]mBA:khG=Cl?Fq"Mh9fk6|_}%?SFfi^FB.%J>U҆SRci$[ YɱvLf7/97 8UH 3_2%PsZTXjcH”YҸ@aȤѮCKڠ`toV e卺rj`cyysO(3vj Dz >&(FL VI p)meL]nj,KQPJ )e\ L:TlUM궾+]S+GչR1)rgǽzzR6ka}֒8 e~ꛨc|?'PpdD;ٿc]mBr1^`w9z:i[^aG60 J]!?\GbQ tOQ>U9;Y.NYr{Aq݃`\w_͜p78+S@ϸ4i]e|7xJ%i,k>5ˣYE42sRA:S+uNQekrXZvRcKܖ-oe܆2y+IJqkʷLl~~Rr?__p7??GW=.^7|/g-od<9GJ-8GQBc9Aq!e}0֔7zo~뺥hVhߍ=gM_,"3 ,X8tM$L}Dٺ4 Z6^#p:(q/kz1GrizkU%ssNl|a(9ɕ-i|L(G(*,J(;Gx4-aUReN\Ms%l$onJxH˖XqBHve E0.|}~W_D-pzt; KB`z S괳e0ٮypߏ{M̚6HE.X^qgи@1lz:6yzxﭱ~0MiMcv\(qR[uػgr< stzqtz8zTib8NpDȎlUt&Gil}6@{ۃ˷p'k m3}>w:^q3b]/ Dh}et,=8 ˝11NQjNO~vtD״Ԋ'ň /2چ_MQR4VRN&-Rtc$raV1+clP6e_@$EJD; Ne4}ZY"o6ϥQScSM:"9gBp{K?(<&J1uPi.q/1Oq`ibh6/#|E䄤L̦iP: 19rhn8Y{耆Yzu/{~4~ן>:q6av ڔB)ZQUЃA5١|+S Жz_SScT`H-FGk^&*VRxiMML=Yhɂ(볁 ;G4xgr]o_q|LU߿KcGPg@qpiZ+ QBcRTna! W޲9n ?K Z2)¢ҳ΁5^XdvahZ!&41&hJgV]gfwYgia\-mu<mDu6KRzc"u+>煿\zv۞WxBy…[{ wc WaT@y-T$6epTKKd7%J ЭnJdIc좔mׄfVo"_ :Z$[!o%dhLIKLbmP]aD8B(1'4 , 4GXx:Aj=#k$7jnI(3{NFdg 9TJc@) )wW%z1@;϶ZCM׾]|iU%Ěm)*<k4V+H lc,t=k_?ې喺4)s86Wyx僥)Jec*XƚBCJ^hZkG!1+QRsE1b[5%k6iXgbeJby (kj2tIb =?Ei%I%0RTS%0#d/.5jըWk5NwNFh9 \m`ߘ* KO# ;hsƙFb!*.)D87p:Ϝ^ %H})fO*{ |~~Zƺ epK- o9`3\gӯV?W8OJx G!TC`qRE\X16s0/J&lzڕ+\qw17Ĥ\x*gk6v 2Mv azP8,>cM9{0LBm^Txr))S((VxI8V ܡtڒʪH^+Dީ@BuSe,aG1)CaW<>%rx'@fڦX rF $dj*l2pk0y!J4XK9MADVFDFŰ!g$8͔  Yi~Ӓb[8_ o˿E_g}(=Q3hۑȣs;&KopT.U5~8\_7MŬY$Zl8FE]&eRYhe}$㬘%$M1R5c Md=d%o_A0z ~x嫞̷~/<g0O~7xWXXh'j\1<)%H!bٺ.NNH10lZuxћ牤&|H]٪ &GgKƸqC@K $HR mmMy~o8v~}W{ʚ/=P}݅b}6_udqOBɛyؒp|MAO IDAT$.d%fM%B&YI\UeeHtbRN5Qv*._Vܰw&MoC Wġ,) / 7gY.c̹{}57Bss TDThVWKB6$C qP*TTU ) P$8q\2޷sm_JL8ϖ,5ךs~<-gzriBZw."A"X_t0r^[}ie-w\՗'.R<]#X%jIeGGa)E{8Nzw`YX;Ot6ᲙRғc-%O3 ]<XsSmkOD|LMaO qCBr'C0"6j%+:C,b# O6)nNi!qo;]}n jVvn.E{^-L!IAt2W#/Rm?)17 bq6Me8p\ 3avQwff]NԲc1A"ԴM {f7}Ƥ  3AmbSO3^}?{˃yDe<.Me$~@ %KwcO?>>UbqMrR)f3yD#}D3>/?/yZP;i*~)Xᵠdڰ5|S]Y\ "Vr$F?wUI&ԡ`9!RLEqrpD5%L)ZCep H$ぜ j=*eH+@g+Vƚ9]eSq~L)Xy(YIZh,:ip!kYplKD{*XxOh#B䑤h̢Nbvk.php% xA:hW|KNYs.$ƷzT8[r0 [W_! fh.V*Xf;T~ƘUw'Nn2 #ѥ/l-4t-E**iZ(bٍ;!t憔K8¹\-8P:щ"L.p@gnbQQFXmuDYI)!.|֕"P9kCi0kzBPo%UrqvJ nlk s3 [k,Pѣ_ze/۾q8 ݿY/NQ9:^~AAIrsx0Pv㝙ݾ# _&Z8qpO,~,vXqx hp²T/wO4~{~60Omd9\phG뙒K+Lvݻr=K<Ҷ^^-7w"dSSW뷺׈^YRf]+O_#xt˺p2n֪S0}R8|a)pde<"'4+YݻFΉagN_ڍR(IB$h{u6cj7snQH}#~nm5dQijM}:Wډ#5Mǹw6'.tb 1=IV$iU"Ks&R8Fwf3tv+^&t_Óz$[b'x$_F `9o>T[ o)(Mnm<-tȜ"]Cje7h=Y9qSޮX]D91_oT$w4[SĄ*?!Nk ɅOIa%1T!% I7gQtקlԌY"%%g{ô->nX{e3yT-Xq}}{pqәO.-IR40}$#Xuu.=cцvuE heeO# .DV9*õ t[\^[C%~qG[oH'IМ=^١}6 w3-32ΟU{,uyjdnn,t`f֠/ ]?Ã;WSJ]%C<eq]iO-?+?U3e+m}*8߂dؒc5zY%]B}U6:(O_l١8GY~G"1TnAPA:+%8XD܃Gs Y$` %w;CH1Mmm?v Ra&w>_9#KqQ!yL0sYUNչ]*soܴ_S!Xb>c$WN9UtTIJ4,9E' xXʰ_8pnb>fSpsHI3<+a-ҷ6c 'Az"yMIf=mJr!q3_#y+^I/ǁȼL$^ŬkXRJegLGrͤl >%ouf7PՕK_7+M|d>xӭT v>% ӔĒq7L)BݫOSS+IP5Tm&ը3^Bܽ0oKBtq=kiMn2.~  7^rw F7s7%qQ8ǐ{Laa~CPe`SSg{vgKB V=!Usb:$nJ,>!-eq){l ,VUPvRٔXie>0wa^&RēO hz4]8J>164>{W7[{߻/[Yg8Q=3klbw3\(iLχ̗g\? U%#=[`!g {\|ߎv@L[AoR͗0*u9t y.p y싁la-LFMZSzbKV!Cbp11-1 qE)şYEQTւ=]XXRBƐ{{eK9"Xs#'ڽ:Z@G~eS4Pn=eN0`&p գMI#' 湡z`g!N5JI\]=*m G$X ~˶9+4 7V%Lͧ8Gz.zg q7_ٍጊTg_Kfqb5Nt-V[H׭Jb%Xv>c?sVBN/5oS^ _ɲ]t8D#A[A:JgFXS$U*5v;Jz7֡x]F_XØ0MLй3DUҐ0PBjeY&? KLGߟi괸<*"Cwa$z4 [fT6K)nSɅH qd(]XsrA j37zS.=ISohpF4Ϳ;:}KZNF7S0Ne}-f[a'ދgtk[w}H ғ{S: KeӀڗ=*ݭ{s]t#[pr2, n߹T Eqs9^'.[hKAe\:sgUvX:p9![ms+QO eOã;0Á2P.Sv{9O^l;EpR.ɣN ,) vxI9cF%n6Nt+R=,m"=ED]XB.3/E=  *$3-Pn[t/zwkɟz"MժIGն8XrwV2.#sx^06v瓋SbQU/fS%qMOT 5?);"CH,i J22KTT+9-pɆΤdm-rH!yqۯVz>ڔi?/~o oܻ7=*s+ofiÿEaHҟ-Z:1ޙs%JJQGJ@?o2H.-S켑Q۹?3]|`mv Ưpb U;2q*TJ͙}qG]Oع_&zSt-X^p}*xh G꾑yXlg}%`uBf+~FPRњ,~pKE!2lAZA9wN½ 2OPn_.(ZwgH!mYIT]DFХ]8x29'QafEgcip]I[-QVk|BS(+}_3D=FRso'Dą3*vmc!jn4i7VC\k"!PVnasFH+>,_< !nx_D5hRVxJ\B\tZ!-"+o\F"/CIJGlѣ7 K _HbQ(*ޘ8ܤWZS쮗x|5O$.lHZz U+bdk,GR#fs/I u rD-)/MQv½}j%VK/$n"p*-kԽ4e%'gCJ Rs7݇Hu|a.g^e}$疙3¤{g~[~_BK^2m 1/Fuu( ůڹ:.()<}>7L+i ԃ\Jb:7 ]!0}s}tk Bg/k(֓6z3p䥙OfWsy&:o% mSIχn}M>[6q˽=hKTj)q8^MQ)s$. B\2}Z]iڹimA75UsXS"UhGdRK#LLayWo$f&L)nK.Pa`Cmn'oa^;$r6jYl^C9ֽj!:5jpND<k~O*oWS?u/X?=5-;3LPP:]&,ǫ59ٝޯ˜1O°/a:鱡ڟ|r$̇u 9\_ 76ԗsx,G?|C~\;z7|!O?d;JJug;V w&<=sɾL*pI'@݁cء$?`rKraieI*9/'o2U)qs-FOnhYunI39 /Sυ&9!Vc,&PgH}4[Ѝy8z+p*|2ɓpŎ][ݜ]Y9HD$1R=#]\%! 3"XN(( Iº ]tL"ԥ͙1k m̬`F [yv܇I$ׅ;7aC5Dݽ7]_+1fۨ(m(#=(+3nWǼi1lu`߇:qJ!ŲL}C'WrIqqvejuaFtz+ɣuX4nЖo'j|w-cw?f.z!z'ifLJBǖw9,]8릤Gwl E,0/eIuf_ƖO85 ~4Faa Op&-^6ϳ]\w*~2JCX5^Vmmmyf$+iPzZZMXvBy<+[]D暦S$koSևRPZov#9?|( {C[ &ފGrj]tD{s <`$4h6]8N0]f gԘGrOmiLǙ+3zWR^QoB Gwݽg\ss8ܴ`j8$P1=Dq!T *d<5Òn`J/X|V3FZ\;.o$Ն>cY\-.iH7 Qyk`My֛YNls\p{uVrp7=^;X0HU$aP1$_!쩌*:9hXvW*SaqY; c{L:TYfp b%)7a"ׅ/Z `Kr̔dtCb-+ǫ=xퟅ=U1ǚ<~?zK<n(=>:?L6/ )hp~G^Cn9jO)ad;gC?OOMxvt ٫a-67䔹>5W/\]yFc!vQֶFݘIm(pV*5[ |6'Ѳ& K7^!$б8+({#Z_/FF}8Xβtļmu6gJ5 cGfoRr ^@qwV%'^a"Z''qtWҺ,8U8' ^_ijﻈvbm9=N ؆єup;. 7Nbռ`h@e;m6xnsp B9 )6 ^g}Y^!1aLN7里>vSlk-LٙJfԲn^R'Չ<@I+5Ȗ?zok>W}oROzVz{j;RSy,dpmCs-*Fn W.j>93#~qԄ@*tuӺ*N?\pz˟D# MK32Z`h7 O;,i=8ջWۤ39w௡40>[ cg1x=н7nh|K8|Dʋ_<ޣ''PZQMjȺ2z4dv3|)WKZrkzymq(gk?9E^#9"89ʝR(9Rfuq͟nDI۩iuEWZ٧Bd`\fw$$.T-cgTJ,ɛ2~ޱifZ\ɩpUcH+ =BkD<.mbQwB@ic5SE,C-7)ܓ!'3ýMitf,˶n%9}0Ƹ??oŢ ,/xW玮"yDBL:?kiwO W׊N`kO\- 1 ɳJ~!Y]Y?Jf1sQsv1gˑWԡ)x Mi* yT;EN#200].kt:)9-~ & 3a>fc\Lն1#ӡrrxPáQͣ,({9vtg=ŋ҇R2)VzٞOco9r$gEěV| SO_o 'e<" A lJdL'tvÎawXi}(5zPrfk}ƺ q%ԥ E6IC,)9305$ˑqbF*^\Q+ABh .ti5#*"qQk.Y3 ¤ (PWweYM1J$Ԕ: V2®G3 Y^ǻ9'bNcDOm8j"QD =s@kRY٫;e)J=yd9u*$;4/=4k&/5Wr>[sk'?g<)˧oi?|?xذ%zܼ8g8|ҿgxƟNSdjyST:*4Z)yC5hL9`Y'[&ᮭI{gY.Cw#C)t䄔/ʝߧ~gzǂt٬v 4JRALt(X֥jCa|/~ۿQm)oS?$'.0K̼z9F?̛S)1!ȕQ]n91/L#pG+S ]kM#ww;3&.5sftQjJw58&^!9Er.fgֹOﱳv`5$]X%!̽XYڀPNNFYy}s|xi֩び;\i Cs(LutXDzA-H}V3ү4O"%`j+'I*>:%=n1˚}u! 7$HLMTH/r#|˅ Ne`ڂ\:9F:/x!4*à쟘8b'YrgnҧBJo/@H"NC\X:dqIqpm9doR4Myt9<S-H5[&FIXNõlVGSb׏ eA-, ]gl[O ~^~}51O \xyfy6?&[ǿ}h7Pw"\p҅M^o#X )!W{O֔wM0낉QrT{>\r<,sm+ ͛l)r>bJjhIqggg=zZثsգШoI*PZ%'r*rB蛗.FyzZ)dFA/8 xTBҌuYj>8ņrؤ,dž&C;T9ev0FIIۼ=Šfo8ss46jβ d/ix gaA$ڲQi imu6@,t1CSRn> IMp9)|twV3Ơ1#fmqw]an-| &GgXvejcS ܅,Ȍ `Ցd)ղpk%IfrjD${@7cc[]e޳*0?3_}gx<^뾟o/mo{Q\`O p< t]Ho B.ƸFa.Tu7q~ћ8?W"(6Lr*cqNW= 7E,u> 3RQxHfyg.cQ*?;ׯs~V5?K^MW|ʷg۾׽=}W}=1D&?|! Ώce;^@7sWIJuzGPfGDy})2sf6x$y4Nk'G:suevo'[T8,aӆ\"!b9q_l'[ ^oWTJf5"׺˽ng6ʦ)c. iDΝ`1W-NbwbdIh(Hef#wXsJ 9[bdۮg,(xM@N~'jpW_H% kЮ4 _!ԜUc|KwFQ5 /rIF֖r9ZV6n$S$Mp P9L38n?0?suw_rc6.H8Ԥ=咘bWG^-k`XJFR"K\h⩏usS3'Jh%Ӗ2J)6 RCt6J[kNf" !(7erM"~D<! [y[^>G t}&؍ Tѡ0bh8iRF|Iݻ2/^w?yӛ7~~}<_Ϸ|˗ַ(.}u҃72&hL[dR-q2vƻ3EԓgwHo iA,E8Oww-F_2ct'5aoL-yr\AP_y+y;+1NJ7xc94,yI/xO>J?W>{â~SXfc{w>Gʆ,UOs^uDf>@C7hRDk!*'hZ6 xqy<jL0Af}8ߜ'WDW)C/#&jac.#X)L9D$!qu5s0pA;E4;JHLvo?[xc?~ӟE*㭿?ţ+vw?B: !ӦXH`wMR֜& )png|V^ j\)4'oH ћ2͍LAIo~g~N^oSmI#!'n{SZh%v8Z(%$FaH u&,Ù\O1j19XZ+L tmÞtb &VoI9n:1'cmguc :X/U<чNK+p;OtLBVH92#fá@rΔ%7V;|GEI{5i$87煉ĵ |ܝѻ_+@ݨIhpT!tuaD Ҫav`vk[2L쫫*q1 ?`{vuiEPRAcH$ d8 4,LJMuպ8ÞcL֊)= ԝ /-c ,j D@oZE:CY}e&[7U ~[{ߖ0埗lϔ{Omĝ'}k {T,9x>:oKXZ>f< Fj vәfJoN)ٜ[UxF fs].eU<9 i]UP^q!T&9qġd"X+ ='1n@*\ {7s&LOC2OH% ^BRT"/S;ѣhl7&9rqvIaFl={e;NN)&D]ԫ3͝"m{6$ԬŊAZEެEERnG=mj (ވS)!Ѫ.ӐV`Z9vKK.@ոO s# _?}];6:4e|r@ cddJ>)pP9Rւ# TUJ)$w#VVDHj'%%Bn697s D7~v7> ۬`N'8aO@՞>Ӏ3m܋q!#h4Ws S#3c$=7 >^>lWh)],S^0AyS M79\YD aˣK1h ͟FxK1H#*QY#YiԪN}'_k0xx8vZ[$tXs(w(@Sb̙!ŵ\]*(k3}G8msubǴw C#x,8Ib= [ h/|op߯{\,mo oY>?w~Ǜz%k\DD7Jǁdž:]a nPhp2،e/SzC !Q .^*\i)=t{\~D-þR4Ā@-D$b9$m$@1~d1){͕]13Չx8(p%Qj-3!MġΘՐbN BNq̄dHڏ&ks}c:F˜R\Hl45&Tm呭%9VGߊDqjYE|Wú *q1v䟏lĺSVLLϴ!asǝpGsh64`׃,׳v<` _ ^FAѨ)Tz+|uћ`Ӻȳ؞Vr:j>D ^NvN#~vYKߕ%J!ˆu+v58nƒck7X?VuWT度3ow|ZťOk̏-?Q`i&bV-"ڊ7 @e'BT, 㚷DD́# .UnnFGB'53(ǃ8;-[VЛ KA5_q}G/?kUSws7z" ~)?+|"CE]9y?c?vϑ|/-j:@׈E؊To`22J[9}pyM{k a8z3CItYǢ}4hkx" ǍQ],uc^10dY@r3_cz jA@Ea C[50$h8ȳ>qUg4y'-Vh҉AmȘe+ -kkD$8pw1TZvY1Z ?ǷOcw3ݑaޭVh>0 !Һ 'ٙ.ZHwZm{X41XjL25z=97s4QE>34C,Iw%֘梨zO][[Eȃ9ބ.KosRs4SkکU71te.nnd y&nl6r@ z;_9fa4Q==,NxUI a\y064nZcBMN|}ͮ=k<{86D &nӁ8X"tufkqq7/Bڻ"Aӕ֫70'ࣄbB<5C%el㉀zd=JgmkW?qٮ쥗c849--]9<2 z<|@0qio2./9'[v ;cpcF˲[58KkY ID("i6ZJiEhHmT\޽KΉa|?>{?0Q7#;ħn5O3S}󳑧cf#]zTDxSOs~~)ICzef&&6lkUꐲ@5iɹ:լ15Z S1RA2Suk6I9fgKD-nբz1е?,SװZC@]V}00s- C~xgGh?G'Lauv{ eC!P1wx1Qn6Ȕ*{a"Hg8c[#G`9 1GB\7Ɔ: LZ6]q#-m,&~ GW|j7Ko a,ڏ1:35{v:noG_z _/wUg~>_ɟ#~J6%]p6&ҿVnP\=&Z@:0=pv2nCqśڜL|ח!z(xpp#t&x?@8(eb]&\7a]qwE!M_ݧ}S'ܔ'_KO0!_q4?M~~Un]$|o)\_gw)^R| a9T*! )<3 Z+'ֲt awΈXiaz69SPmz 9"}#sZ4*E|ʲ:;ֱe_֢n\{~։u9 Ɵ, q0c;t*bI*%Y#$lKS01jߙ[b4!z ambT=ڄD91Zoshb  W(|q[?^\Pw,$1eTCGos8L;PkTkh}KXȀHp`ZOH` 3|(!ӵQMˆBְN jƒB5y4uR \s0[=׆8 8!iK]T%dʼNXU-sasu\86N`joƭ@L*צY6|Bkbh'h[mM-׍Qp=޸sTz̦ن`]oj{ǣ3V); u&\@LnRTZ~g_;|Yԟ_Y|1 c^W3LVNZNy7^D-Q(@o4X vN\򾾄dט ~!;(W7p8$b9U3l'.TVF]_g~-_[MĎϿޭ)< R,1u>6ރ3ZК 1WD*s;Rm0[_]cYkH˞_NY#9RY8[uJ0"\)ueD.5n; nQDjh8YF0[h;ႊP#FlAm4҉4dcE3?_[S^\D}GwrR?qeةvo"q zi5^.e|T=*gBmR/Yv&cf1z=@JL{kh0GINeqgvӎVj+:ǜgŤjDcxtPZ#+b %$Pi7J2j/Q.n9r&3tݼ1\ ś&IguɬlEI$`pj-TkK͉Kܨu?uşzqv|n"L֣(ːAnZâf-,q3GVoG"V;}de>Rg!4i?ţ Jh gn<5۵/]Iۨ-H">Uk5^Vk$7-lMtEKXX 9Mmr1M6ju<%@A>=pDzB=s |b^zIΪpZ ("tvQ,$풺wp`:q}u>~ݔnooP ){$/'I]څ옄Ryڜ8 IDAT\_aQg i\;Tlz !gu#lM.fsOmJ5$akhq( O| ٺA;{sr̥Rʌ<'D" m)1Jkf &wa%tF懎ۣˇd,AśɷHzeM:"7w0t.B:wB˓m8V/m }lQOqDI"xL&)dV(u:Dǒ26aqܪ(:Vhhuu;+84B]e}w}:_˧}sOSmR`{/pq g0t$Tid9$jLnhTw7.TlC (Y,[y5/ΈRlX *CfJS"֖cTjSɅlUC,nĵ~/Q{MXGA HC>1!ghosbis 6dbb׆L(5EOGfޑ;"YmV@` ,8Cr|N^ Nk_D9&ܵ̕ Ҏ YE1Hp=wr|N.EYik+us躆/IaŅѴp,9n,?3zelo3`.1vrQ]^7׼|w|}F.B$9Dwt 6RLexN0x!23X,o;n{wanhZ[+@U1vVSlpI=@*u1e湙` fIC&ġO=ysq{sC)etgŖ^*Pz5gڹݱlƳCb@-,A21h)lbrp6vؔHt;Q"$%&6[6@m0!,#Hvyhڻ75Hț梳Sɛ\DzjLj8d61Evv2SR}F6@i]Z yqhawC8ܗ8DyG_wjeRaoJ=)R"g;p"WXڒ Aْ삈vC2A?&ۙ a7.9s(f7t583fvմ‡` E.ql56V s,,]삤fH,y {AϝO ,Rcp{]S轮ZG9ۺ| :>=s!9gZG;1F6k#˜A F 5IJ7wNye 6:H5ך@{_k5j39'_R[g%+ <̫)=i*LszAJ!̡nCoVQ&d113'ER#e:ؔdV*jޮ6r>:S)4;)]3 ELL*S5db\8hLZUk֋Jj'IȣJ8V1GM|hVk.Sҟk>#g対(>pek\z Mo}7G1wҒb ~ uֳuku>i:1CQv`"V:+Ɂj%#$j6UYz׾e$Sc:-p\h;>PuIΉ2m(-e'Bf8F2es?ǿE~ʯ󶷽o|;9;+||x`V#x8^\MEQ{w/7U7ѿ5EaԬ Tk:"η6Jvdvh'Iwhpq. (Za.Tc޵C9fĔo)XKȉBk*ݜZE}k;-9la't}6SDd{IsXJVAjM*lsΰٗFc"IoZfs@"Cn씂 ?1 IiZ)RS+^IPR07\#H #9e7ZmqiyY4$o@C8FFHit4.:_X])&4C.%k/1ze~z{AE^>vˉdN.F %1mQZ/fUsicb\ $ѷ6wz{kV2?`Jm{oL;1xmO) [ G^"hQų2w)X~A]TwB|yaiuOLeo_Jñi!<+_|}`9spRSI3ʼ&(Z7dmʮMDoh%Z9IIP6Jo6i%"fvvm 0Fah\om"\-+/ /_{i5mu3lKt٘uMDUrqnڵ D\÷YlbVs;">aid˫gRVfCMUP(5Qj>/n6'|k '&<+'iݚ>K+VuJp1# @ϭu\u95֨owu1.Any[ һڞKGBCrIuaeS]\{K#",EsV'z}Ȏy,x+ц5S&ifȩRN dkoH4$ -ul"VJc:Zb!꺚 +h܁?9q ,zv!p}7^Hz嵇kð&T䃼Lt .[‹u#}!/_+_ϜOjX:šxȦЇr(B+~b|M[6giSAc!'@`И <ϕ[蝜)V᠞L)b0{WiD#rxٴ QA;T;7CXb"D6mQѦ&GQo 2Fez$\pZki%~^e9{e t*jә; :iMvYf(v[ER|x3 M|hH7(Xtwꥥ-}Mx1MeiҡN+3"L W`H#fdm% bH$#m@ɀydN)kYBAJZZ 9Pjɴ2Pz8hx66ivW޳m|`vy.z}~>//0o{3_?}or,ݐҲo'6@al\>Ȇ~u 974pR*||n6XI;&k۬6l`Q$Rơ3R Q(Q҃RiuOf}t4@k *18 `l3O "b4 +BL̥ZyA;&3n;#T?VJх#;R͙]mB&t-BET1Eq֎5YB4&fz_D ""Yf9NE~m?Y4q~ޖ 9pN[V(L ,泈:FuH Ek듹l mm|:>Q:mab%9dՐq$d`5vsv)  U+^AԀ)#!xm9\HZj+(6[&T\ G@ .q0OL 5+{vu2>()G[)"0 ;dU/^%Lʁ͐9;S6vT\" ܻ{4vw.H=˯C5x:a>`^G~ h9j~_#$$Pi6Ek_6ihXDJWo~XХڳޔyۗ`Ѻ4KJ8fJsFKCS5j[9L:uNg.]1PlY.TBnVHl=y4 *ylgX\qV4-,ʟohvron2+o\9lA^q0?2"ׁ: qsL#4㰑y'Hnc=Dw(Q-UGw6,kber!`8fr6\Мf~VE]Nq]ѣ 4)Y%-N]Qf?zڴaɮ6hw=WJ?6.)&xH9Q𦮥ȑ p}r~r֍qstPD"*~d,`odE9YB݄JY5΂\%K,'>eqvw,6e˓XnL!*J JHQ BWy=XŹ;܂RB.|_yw`@Hn׭-=Knmo\ k1A$'|(d^&N4sX+^`"QDR*qf1cbl& ܿsɸPjW ] <-w7T;z!GᢟIG7;WҩRGklRNvH%Biڪ$Ȃ՝N0U֫:͹OvEO48N\l/9݆R^kYs{)~`oMc!킻0#s\ӷh 'cvƶlվuXaYӯT: ͅ5oHHH!{϶^2@Eև@xz) -f ,矄+AvjĮ%3i"ZDJHRZxprs/^ 5Qk#N{ Mܽ-֍Z-=FsjSQ'鰗/³D6kZ}J]m> BYuLLF8Ш&.fIgHJVnmJ-ٙ SKsD] ]G#jBz)E1zS v$w+Y[$~3>"?wGiƚD;Tnu]g1hC撈%L0dxM;~Ylu`kk;ec lgScV00@VG{\``-b="->\_hM%~+y ; "kd[&Kr'R?[ |tTP}#t^i]x蕾L%=r>g>O~[Gg]kI~ |w|3kz_#}XtxIC$m,(E#o~FaB}vw~^6D $Hl *t&}7TyO+7*n|Ӊe,++n:G֝”'mzzRVGQ.3BΡDL⃴ev)c&E!|P4 yR.S)`+:Qu:)j)g!ǚk&u9eH + tmϜaQlէݓ oO8G:VkſKl"l#X,j*BJѸycǯc䑐1F:oLǴxw +;[s/J3Pކ5$0R;Ԁ4}j͵u/0( Mk-^e9N(.,u8k,  b:}Kd7Q4 R~6zsߍ(^^1,y>oշ4w?a3cFtl,aDh-S8 ,t7a`8 ~s[W}DPQ&ƨEᖥi&D)fyr8ۦ%1%ia.,j{M{p*10lGMDIwgߡZKq!@ U汲)j42R1~~'V>+[_Sr05: 6;Ђ>7۟~72iGM=fh&k$aÅ#j9a?&>ɱ[#M.Q6ob7$@32)y2g@8ڴ"2HGJ 籶#||7}.?u?~39.@G0DsbʳؠJ&B-D m3 t B<;[0m/or]f;AsXWQ{{šږj yDž[ctT\`}J,X7.,lm9Ed SqFsh#[scٜa7F_J Hd$^(JeYXGl`O)[~wדEbݭRhgn?sDQu A:zJ bT{ܑ5uu(]GbWtT},#M E%(2Rxe!襱mcY-27"P$G1(V bWb TE\aϾGT(X^-pdx.T7"ʘQBu9=F#xXz+,}>?ėKm>ULN} \мB\9@P5[n|7(U"Qnж4s:OD6 ŀ4j#G;,kj!0,;77DT{3!4%du~iQ^Fݽ^^p!"Xr^ Za!;/N) 9=Y)!JRCYM`QQNwpą7~>`TcA[ O_Xӊ 7GC0!K-ވgUv)a~7{ UZo[EǣքVB1܄OEC D3QwQtkke$.޷61JJBc?f{.^yB_gF98*͜ uC=Tp4^]N WgW*MCD a0O7e I 5jfxTGbq]_˷?~)&{ LCAFJ Q@eil2up-+Snz@˖_:M>ue횐 F<ë#Bǘ;cM38J\*[m”AjѪ2xL̈́#rc]5Z&knN8A۶YDj'DvlsJv]Z{79"Ö́mٝEY~ 4s İъD-j;۝IĝݝYņ/9 ѻr)Cť([β4l_{H 7V٧U0Z%yJ'zD.]bZM,J;j\(PA$O1vog;VUHny2V؂E,NoŃc! ~W뿓ȏ:Y!:I0Wů %ZEirT}(356!nߏЫHRڕ:ڱ*#8҅ԕ6 ,V+vjqV>6jղq<A&.\ƺ&sh$H{ۻ[w)nNxX*e.z+)&$EG$btfk\/WbgDhP b­ EdI>@=ܰʵmmA]5Z\̝ Y)g&QN)u_|]Au޻|Z找5^-^?p T:hne[hwZT-jͱ7+ٌ: sCjΈӣLsɧ<)0BY떤M +awA٠n6д07ЋhX,Lg!f\gUzT9[? ܼfZ۽Xo4} KoOL!j3" "aVK$H:Gܩ)`yΜ̜c :!TOm{h]X7c1=?{[hM#P4ZIJ.ʲCjS1N?j59PbexŐYA^ mrE!tdtDZ#M+G!#Rso%'yo-e*lk,1tOy1F(yÄGci{vsނ |k} wY۠W{MBXlj՗+YqK^9悤i6 ifWO{`dx[Ƅyh'N7Ty,#A當vR~:x}_Ϳoeˮ#n?L|۷}MUoPS|Ӹ{Y :@,E N*)i]h.! tu & Q)S9fPJ-qiZaG=A{$ mV]eKF1{lK ‹?&WEfiԡDC?= RPz9ԤUsiu+jBQ&Bd-&R;O 1 /^u$gڶX+ZaB41׊Nj:}P"+#kJB N=s:{wWr{eݸ,+ŗ/)@J-)e[٪qƆzamn6TcwY`' uab*Fjo\HPTg~3hC0y^ Z+WS`N;C6{ !t^Y3I"M3>WVXur-+KYw̷bihc'%0j/u!n B s]o6L 349£oN)rUQa{f( af[57񻝼aR_/93 KoϢdK cbP@eb]И^ rw{dV6d 1ۨvkmQ¶V.׍^-B-bV|z"hԍQnΨ(w.L#m^X AD&t-]nu׾Y=fD}X(2 C*a*H(9ejYBKf&>R|*3Pp7PPJ{)%??cox_wxd&a{}as1x%!ǫVJҼlT]8MKk,JAH um\ºZoViu k4^KcEdxÖÞ[}#xŻ0Zo4ibdn,>aAkRL֟6j̡$wX~FLG8Z; O"C9<]qc*zfLAiMahcN"OˍV q^b#κuv9@O}vݹchp"s2 F+7R'0 0j{FDAQnOgb\ e써B0n[9'74ngdp}/lөڀ)mbv~޿q}iV?M jSǸC0~6sR}PI*qtL z%lJ RU,\ex:ZU\x}`N]u|G)IJpm#9Ӭ-UmW/9W>Cp\UCL)&Ni4M$wl A1D}H)ovX2XΉVI'uʍ zål+ve [-H׃>Sl1>&v"G)D SчEAj̃ZpذI| A㍄ = IDATEFub 7%J\_(TN})K6v?#z3ٻqCq I걸 Ko%Ok Z0CɒcJ|zcԕ*sGw!*xhYKc]+hE)QeGj\Ͼ1%D띄04jc++e[[z-PUC7J\me:!hY ޼O. ~5:[Wș*X*BĴ8X$o/?WDm>mChF qAD1kjBƢ':H!lXܽ%_iF6`U6inR+\D`&c - (JЭUrFwiڑHKj.H R)$DʲrPyg'12j7a%e-ۥqY|m8D#ylL!0Ltz8y׫9۾ު UaӶbNܞٖ|M_Nٜ}"e)_g^gR|tQ+{ o5GձRCÎc}vJG1E70^COԓ(ϼ~=;775*^xэ_=u{H*ޜy~w<ۛbR^|9@A Rȳ[N m+P^SB nW^/.JS)GI!EZeTam9&n Q-+d͝7D ² +5H2܂\& p,o?~ 5ݏgSqLl󶟗x;k>XѠ\gYbl$f_Mâk30kVRNGVֻ;9|9܉{0c2Mѽzg5ӊ]F㨽֣5tcbqbۺ#2p Χ5 [ݣ(@pCIIݱըeЋ1kQRљ$*m-cۮnqc7zFp_/=7(xHm쏝Ъ9b/ 9^@z`Γ0^ضD"Դ;(*{N{J&I0hd|K6, !IZt|`Q1Q%'H)Rf+R0.W#&,}{+v4Z~ß3_LTh]Cܛć1>}3RDh} “ղ?CTIԨQe'9ڬy#3WB6^ qJ!4PM'z̭JNx{f.+e[iy qNL0[:"nCce0`};hsvBiKY  JV־C\4hS6a +9 co[|rEJ)ݽYC Nה kQ3MoTLmmfx 0 4[[]o('ڒ]4UFG7_n.O8㦴Е~|>o鑺\^U!4RTNd:dp7g}v;uivs^𺮌 <SZ ݺŎnOg4u"F11.[e4,+>{)GtʺUh}ӣ3'n v)V)_ݩDқ|xI14FGpZR@hޒ_}o;3De~w5i۔Pܘ k;]SG F6bbXK,ޅt0ݦA{C&&8&֦}iv:D4pkiQ,eٙ!}xtIWvag")C=" J0hTGnW%W¹ h.qO&]c3,E|2BZa(x}Kpfxs!JȍׯOF̝`^ ϣ8aYU|78OŸ֟}*;~ǯw'~ϟ/Ou>@CK&JVݻpGq>W\ ˕tb'4x4$9$ZϤ[&:ۤ5p`GWZm͍Sj9.>9B vyrR[!!R1L()AovqTQgKK~ٳRcR'a[|yrv1 ެ9lѫrĻFC-;]DEwhzwBLYvP>Q?T%/XGŁjYxvzՠ#FnXj=N375nuAY_LHחZ"Sb>g)+ 벲Uk\ɷ7 c$D_#j |b @Vb/uUsT iP+)_' ?7-wbc4i&ʴގh`@<3ܑ۬\F'9^XGm^.AA2Cah`HkV;)F s<ϼ!|x ^r.,~3A\\,e'9rY;?/#//+}ꜶӜgji-姏#2X!r*e#yBQJKllYIח+u!;5TRhø\݀S4A)9+pw>%P6Gbx44SʔN|qSdN8Μs&଺뺱R+[VRHGHoh:AyF7pҴYt3;FoD3ġkb\&R5$.8lZYiiRBcf?c~a%bBu3ykZ}C&kHТ1t9cMhZ=RTXF<-J}}8Pܣ`o[%UZ}Դd|ΉokhJ]"D`B4H]<;Oݜ9WV7(7u!`E^)>m /|ΦE9 2x~)E*%YJ6 iki f/vzg` ._d_ovDe/jIU%N өJ}EՄ-2 4hۇ׽h!7mi$s\v?r.fevfA#mZ/A|bkn'(QSA1ZհKcڇvszm֠fp":C&ƲܐA_ bܪQ.tyl012Dv5[ODB)v:e<O~oi Kۦwݿ,̏a¾?7V3S4Tr2WP=6"?090tr`2G5d6k!S<AՀ}XZfvϔ޸,WrL4w)bAbIGE^wZ@ToΩ742;T?FkaH8(`8v()&@A("<*=BA<p]p&im,/@gD%,R_7kBHyis:eلJ4ennn5BmMQڕ)'rrn5 ULI1Q齱G OC7:l"j 5,Hb\wbW{Ww͙At!屍PtOf * 1*ZW׋; Z}3[`8(^"@͑s='_m.k8O6tLln+wÜʧC#z_ 4w${5Rep]Z> GnX֕b4e>)%p)tzDuUo8"2I"O;Zxq${W%L;sJ}Z6j)QY)4CS7h J$I⤙)$@ ['ZDz`}G#sRqTєl/g co5JYކ3PqYvY^P^%!!4WGhϼ^''#?}0pغŋ\筰yc46^:215BnȀzlƴ <;<9Sa[örgzoeKYSA.R ˕MDDsFSZ蔸/^ 9F}oCSbV3lbdUnBZY _/[W**:|1 :O. ~3Aix*o{ՌL+JhɝV4ܙNBH !E lC_gWDl:CzWJ?Ζy[зNP7i'9EaHxoK[cz.^ǫjM6ḱ !ov3n.V n(Vc-l3vBnj+AsoY_My.D]3ח׌֡DF--lߚWBZ1o~9Ϗ{~w_"W]>Gj`1 4;mM ,%hiG3Mvޗ֜E ouj`֠6o.^ɽ(Ô&(7[ʪ'MPZ۬*~o[_hLIY*5ְ~Aw8x{ZL+nP"&#"R蘘6Zc[+k,ofvkAAQHJrWsDO=J'Z.qUJԡuNI+~i_= Xo p@ grL!tk+%h11Fsl[a/ׅWByhHDUG4s>M4~)Gl.wwLyb,R "La1m};gI)ZĬ۾UkgWlܼ=k QڽQ5j#"8wvpD-wWO"4 lT^3h28R)mX[.n!ʶG7늨;틽C . kR Lib:E3md>)H=2kdN<.k)&ё`ep"T*z} AL<{nRqļQ$- th@tED["p$@:NE  81TUU{ysiZTXS\xOiխ{:kǘc|}UҬl2([\Zz{<(sNcԞَLF`!kb %CR$vuִZk3.vi0b; cRwf&T$Ќ2VѦMwuahŒ3~f} JTCYkw)TqV)ANR);Xe4Dx= K몗NM˞el: !BTܘf)Tb{DVFqw5XK\2g3vҒ>B.l-0@>nygaT ;1kjL$t~ӒMOO#Sv@eޏA~b?DW*ݦIۿCQ.2n.hj(ܜpblEg. h*4hY34 eUQCe4}ZJI5f@FKrr.Hb3غ/P \'oWp듦ipL&SCID̘Y(UƵQE;>i%- *^W!ZXK#Kxփ#+6R%-O{-]C?z/߾g~^O ÏkFZ42*k(W{A:o\]3Ѡu8*ٜ*FPَ7=)Eajx086رqX,=zT♜'5 HܝknNtr#-eԦndmolꛀץQK84Zx`itn(gh.F.^sBtTy8bPiaͳf~P Qi9lrBwGmω8gGs ϿG tg^Zjo%ʴ^k(PfЊhx̫VI!9FgciMcVN:x8yid]c^i5R{/m04|wg O^2NV`׹sШ(p1a@?wORÄg4`fJ"Ɩ&n[uԪH9h 1|g6xgŽ*e>bOg:0>3[x|뵰Y>Smȶ)gVin!X0:LgORBcgn(?yq`#V)n̈́tfk fdXǁg-!B-3A^ T+ IDATjωqaqs:/sX𰬧9#Oo'T*5B ' eϟm-c'd coi 2ϓ A!LjUpֲvjod@d,+)fZX/"E{伴UysdA335K\xw8'NӐ#D$Q%%֜PNQ8j ZzUZB301ӆ5q#5U.(UBR^Q4) /҂9z'1R{[,f}4߳ˀ6Gk]RcZ/Ѭ0P /?DmHIn%s0Ъ5w-M& FJ>l]`$Gma6; (EKK5gub(i9񈶒Mq3MXXR-˔b0]KAk6V5/DMc;NG"Qɹߜ,<[JU-֊LHjzէOgMJ;_ݗaNZ̮ڇbZm`~Vo~;Ġ-h6AS[zse+3vXb}ek{Ep1 NXdYBh2pd(JTѨB>!zC6{tخ e/Ƌֺգzԯ!}mԫx* łV᧌ gE3UMd؞&PcYP }!zUQuWk_PSoɗ?rA6Wl9U22-H\^~ɭ;+Zg:єv+dȘ%aV kٍ7R9,"uZ3Tф@V.Cbk2 }8w)jaڴRvnr"$ u5@xqh R ⬕CF!v֞X}_SEcLa 8S4׌yR)i-B&;Ib%@eƂ|PuG%Ү.:I@B0Դ4G ;9,cسz69YԬwCs$;D2{nD{';rB"Ti9y] V KN'nf[)5sok¡i|1VcZ9|6nŠQ"vG`dT物ZP#*x3`MC)CtqyJvJʮ w~dP{ NBۿ j`U%+w5>(%cpbYq3rat<0o'nvnj\z6hci~b7W1)5bgr2UEi0͠49%NaQzs()&gin]- )R&q[F") Xk[E,?K\Vf&z^z[6iJFښƩ~^31'J5V)/g9I"q(=*8PU"vgAh8pb2X/sȅiVH%SKêD"4Ue-o-{v{J(M\+߹VŵyYiP.}<'bq$%ZHwgu,00bUe"4ziŤ/-p6?^xjjEgbtk4\lvHL*)^|+nlQJYbqFFhUjHM1:vgB+8oIU #J*E2Mò ZzŲSTjqC4=nj $ɹ6t\DsM]sr7{Jʯ|ܢemXW= r5-Y,jH SFɨ W#z7g-1hYCu=&9ӊXo(WPMuK~p:IbF]oGU8}TkAs 9b$+L;j:9,v̗K)7ѓcas[9JXLgo7r/<خZb&S)Vse˿_><˗3G??~=ȝҾOb!^`p1$jZdon$m,*T!89pY!ar#i=޼^)6݁F/`20hYt9HDa )X()%RJ;6 3r LD(I!ܔi9&6g %T; Z+WzʲH^r8ƕO5p^ͼ~ZGp[!-i"귆i4UthmW*RÙ͛/ .VQe% ǷÑS6lkD͞9?ya{{w˩[j<ޭVZv[1d`cS|Xؿ;I9 9D &شFI*췛9Z<݉E*7s;vF"VE nm i Z6C i2׭Plʹֱ LC1hh7hW/~ uE8u\%\' Z?ýVei58j?G9M8;QAc=JKGXA8Gn ļrD׬ uQIGXy\ 4wi^ ;^~V@uPU_+1B[MH Jf!&C)?6ܸqpvl)ѓO  %xO8z0Fs?s߷;-կ~:1ͧ/UQk%3qlA ET'ƚ !Ja1H1!Grn$Qq7tsȄⷆap Wc.$n<ءam)4): TkcFO/?7t<76R_1DwWS1Ѳ0ǀFʥ*Vr-H!LT^NFL|zyLIAK~lvL#+` 8eZ8(J7r㤘Br5_]:Q4 Zm4swJ6 )2ZuҚ ;5Sw>_5<*~vvng8g>+̓qfNJaw?q/3<@.;I)燁#Jٍ+g$Jqg^[~K{9?ٰF|֔(giΜH"L$엷3ˢqӱjb"k(P--W~3zܪ< KpP [w +3yf;M VJĔcQ>b&kafjcCq`3 Xm{"KE+'"S-yTSa%WOWA~4)щtܤ¾b70zS ڌUR4P{j21?:wN'Ui~tJudK\µ&E+@,hF7PR*6 QlLʚ:Z1X7zI~݉/h C=|N PK[(7.bZk=װ7n}. !Xbj81+XgT+Af=XZIXd~~'/oybB*_Q~'/e ZUJVY2%UB(H+DXV\ȥQ3 P}f_ezXL\یwa4rFSb))жe9ZNz6ء]j=-R; . aM[wT·4e9ULQlz;:< Z*7T3Ͳ"+"!U<Dp Ļ͍(hcFgM hWm%lMkAIHcj%^]k:*Cf$N!M#+9B ІF-ȏ ϙlN& _|*_''VI]!")%bM,u4XR`ɉ )*lg1frN8#(x)wOvLs] A؊(`k7qPspthJ1yOH3׆h+ %J5r>vuF "sȅf ZĔ]TlƑܠII>9TJ&JxJ0-p13S M4%gQ8gΓSjV] _Ҁ70dZYS-{{&M䘤jZ-]"noڐ%Fh_-_.,/O'~~0KWGj,pu*e:;N`1\3lI'R)*ktJJ!dZ`S5& ;*F1΢ n( Ee(ō E%AhĵKb))L;DT+7|>Qk4nj miU5kSϼQ5ًT^x8q(-lmpJo=Zc}1M[@Nirò#E`ڞHMP IDAT:PBn060XQi wAYԔJZ)V@)/V~IpXcb_HFq4Fe1a stb2'PJaɍd*aDCy+"vPEnjo~}rGٮt@f֕۟7ہgg*ϓÏQ?_Xx{8s՛wG>~?/6qudă"Q~qZh b˨pp<J]wO Ov< eQQ_]؊޽tl b3j6XX}Syz;sF(wϨk'o) 0U"%F@^2)ctQڇ 5ǥ>/_a/@ HӜj:py'J#o8Jkb FڐSig"qOZv^Zt9F^ub*^(RcDQY[ngGvf9KLL+r&VJow^5V\^1X 2ZiPj k 9Dsbx"Di\~1¹+֔DMc 1 ՘FҼHpL5eQM8vPFx.nߌcـ!/P'= o(z&g:bn:t{ati[qCJ|7hIk}X=:W CH%djk8m7 kJ,1RLEr`O71r6ri5Sf7OlĮKސR&?MZpƲF܌l-ys8qf 404%BI!Fj<:Z:[˦324-JiR\ZFi}qVUO.'w o7ވ$CL& o A&Zcf]K%fi'kM/ ;e42˱p%tvNT31MiT՝SqPhR ?vFfUm]%",֢I%a"v ӂJWr ZdJIa&=0_#~>?>=_?_~ݨCV?׆%EgUbθAơ.(BU]@_*B=a %gY4':YPFZ:U4\`|śa]Dhaª7#d8qRv(lZ^̝uk"~WA 譚)6l&({1V]ĒOaqm5X]r|r|e'nŸڀz^X׆\!›!5 Hi`*,Tfh_1C*F7h+]XkE^ %2+U:P J{2JW9ԛx͍8^lo5l6dlqhv=5GHFYiВVJwi2sv_TP0Ä]ʥ1v8%acXΚ/~18VbJe=8r 1DlV]MSY\͵*RSRvZ¥~"8&_`g|{9R5BDk(^V(ò,KFF3H<\RɤVhmcp +8CNIHq<0f4!Z)laf =w2 %Ui3g`{[ 4-SO-<#kd,;$?c&Ō6=8#R4ٳ"Lg3fsk,Zw#Z܈JJ4SYLG+4jCY02A UFέ7.ksB51R3xOS5gȟZa=J"Wg-ӸgDuFT(5sXN|-iTE{.FR4{՝rO+US)KqX"1S8ò`df)xaz?D/{6e/@5GJo 9EW!$-SWxrW6~ݓ<d''Jvኦ*C0x` %EΧ3%0L.j{n`f3xFoPqZdJx#-Jinn3'TH)7:R -krRS#wہ' ?CT8 ON6'Jd$ORKXCvq0>.mg\'"CSnS/kShua1姊S]["DdzzxȵP;Ϣ٥ o<ֲ1ZŴiGq79SUOkYДyդt&RX_M&X5Da8e7jf J1=. CO;x&Bu!(ŨW )4q$Ojq2wͳ*R 9^ϴ4A1PܬjWFD߹ |q.sǟSSt˪6ĥ^|i3kZS g^-Z" kHUtnll3F{z1JI9U|q.֞{Ec4idGsf)Er-6Za|$H*R56.*By*vy+&-78iFk)wTKi(UZAQXZV)R2O gq*5=kEjq^2%OgNB-FѮ[,8w1nf>|~Sk+è1HS* \Q9Ja4"^`%fhiCv^~0Fg?'|γs8v[ܸ!qb8$l7vmJ)DŽRv#ZFW~+yiOZ*|-O6|_xaF&dv(FDy1QJbI+oOxs盟J\Vfsif89,H R*bJ7-%yzɉ$2^[LNfjBJ9l,fn*ʚXΑrQq7μ/X3ә g6h ә&f;ZC"lw: ْsc;9N)dS#8Lv(%{m])_oM#Fad]GlFfooy?P':8f/  Xkt?M4 v0v`i=Fy}-_pFkY™5BlvĘY+9gR8z&Li*X?2#ݮ7XS$@nΫ ] 1%b5&5Z}jU9Ѳ̧ˑZ>g>YӰ#g_n'Gͪ;y79YuEoETe=1 +^ 'C<ʴ68e IɅҒVzQXz|Rj0V )^+q77$ ~| GqĠ,TQ:i֣H` "Sat¹3)ȫ {0d-s`t9*:+tSl*kʤb1G7mMϳ͜9\Tۉ'PJ$M@"w ` %!D.Gc!ȉ]}:{5s1sS)R\U/sg9o}W:(%]VNLd$g⠕0Tk+j?iݭ ./KYu%@{֞%Ezo+2ƀ gZU%Vm ZbhVmH]c;pT(j+2ցuTK84r"J+@axץ0v2aGI=N8rثE&gOXiդ`EjPL/N5P ,I#&q⡞h3{@W0Ki{7Ͼ>{*}S?¶ofݕ4E:]YӪ7?)Zi $G9Ǧ2{'0zՊ4(VTMM+bnFtUP*(旃$6[%BQDE3jM;ucQDt{BbxÑ}\zQKd@V9'ܒ;gV%imb]%2*N@@69v0e=K^|`X;<=_|]|WxgO/Fr#%f3Lưfv՚iְ6R-eCvl6 WWFcW^5VI34XXׅu9r"Lh[8+1fIR GЍe2 _*Z%pZ[:q¬Qro5%; zf8bEHMҖK&FBUbn ܭAZƢA7ދY֠!5KguK&l'{q`3N{XRS*NRbkr7g!6[΢8JEO8*3V=AnĜTB\+ IDATɹQD7Ѳ WDC)XKQ;+ 8 [nYNZ7:_=+Z}@ ~4Ov9}J(kH>@dōVce/ O. 0%m%6F>mB9JnIsZl$ں%#uS Ylܹt>L}-jFRcItIY}qms[?>'槾ָTa´K n`W&SbCktתBU)VQ Y.SjS )I^hdSRA)a>*Ru cřUiPiβ1: D TfE\-Sk<ֺ}0-oxsAJ*àcLa66#6z,誡h}.*Q$paV]9VT#Ŵ/oXM5opQZ{&E8*2Z%"M ƚ(bIԐI[矯9Z{+E;u`?Q/(!/?+?|Ϙ\ zS*`hו{TOLӎR1KkΟ?s452 }.͖Z(1PSt@ZOj`iWf(%Pps)DZ*'.qHDNYIƭzW̑9J E͌8?YAq7n8'`1gRHJ!L+,9^iž~TTSU5O*lrb8g{!"G V(ƒƙ\3 b,iOJ385,{닅KFbDnEʐr! E5bWJ-=#g5X< d=1jSC5FD5oS6\,G1:s˞'{(U$Q6M*;f%{%FNY %feMno0~;' RlK@a,]b7D6 ݣh3 8۴IATb(e0F@5v฻ܾ^jE{w;Wr!LHb:}jVE*DjE@+gGy&UBc) lPd<4HN+\\j1hX[IN=N[%~|U`SQs%GOɕ:)Tcٲ[?TƑD:}wVP )7JU٠XՋA4V@ܭtp)E[܎Izt;[fK+=}J?.cY<Ӕe_W?yԟQ>gʒR-%Y)+ qIc0[W+Fsx% s@ 'dar( %'r Sb=9bQVLS=~tkBq3$S`J'.&Z^~Q/*U%ugY 7i/F>+aTIXibhIS\td-J\JZALǚޓ3D>/ ڢ]"səMӺ3^\ؖQ9c]֋}1a^CMZ#$J<7r ?rj,|mz/%e41m J]Y[[J+Œ|?-߂5-PS !l\P 7q1{_~)e\YŠ6VRX! EZ]SiI+pT*RpVXDYDWjF)Z51xW3) |]"l! ,fi&ÿ-ޙi G.^ᇂQnd*5Tj5㮑l@ZGVѰYb%8~[gHg6l22-j hq2:Ç^, yb0n0ؿ6xYBR7Pl(-TfF;<~ mߔ7Fmx}{+O +;޳ot*qZ y Bt(D87q;KәEu+IgF*Z8~('y;/lӘY7~:MnѦ'}Tt4Ui5JktR'cϯx2p9eT~`9KBSkc[<)+M\XSUZNQboAG*sLڨtNZp)MP)^8{Q㿁MowOG_??-kh;aQFTP8mctJb-cQlp'8#l*[HܯRI$aqRnbͭmmÊKRB)KS{Zu*֬ZI1_ev(^hmUuEL- ,q |RUuѥ4TQƠ 74M 9J0zgjB*bg"r'(0ꛮ Ku݃BSKb癰uoE5jFgA7UÜb)>;+[#pd}HQaX#ɚVT3!\='yU}~(R~)?/|ag? vN;Y8KRvsu9X -5,޽|<{9~7?{ZԒ)rfQ5nKOomh[T9Upʉjqlw,e<8!U~jiŐiMט{!MBFc9EQ/cry+7^,+Óg;mh5C5cg.'6Mnd?&yZ}J+m<*"9+WXez f 8p~8/wN f τ`$mkϒ 45qyq6ye^ӚOCOM'0k@atRN h  5fa9Gњy{J0(ep1ZW*&ﺚ>H.B<%-dJRX(JܿEp)1o1raM5#_z!/' W=p+b2X1ERx%Ŷ!W8E n@؇VC/>,jQ*bY1bmyzd{O54M+ 5j`M|HFV00\Dg+';?ZK(Hic,ܼn.Pi(QB0uv*EXXzF-,7 eaݓ *MY3Z2:VDM oݞ !4Q,6hr0p2Ձ.(0h歧yXs$p^Ь,a֌zP] aF5wc?h PnP .WV>؊(zJrF7۹0zV&[iQnk$PD ڈ 5 JZËk*ʐ!ʺ(Qsxwr3u_;4]6kD$`QxѨFɭ芯&mn "j.Wn(#W~҃QyN/t͏_ߒ%nM(k08r)~(6Ǒy~gF)ZKBYx;p9L^,+9&)@\IQ+RIJQ^IC6Uź3NgW d}]n|DR^Ri @͌Sz.N7 F-˧r(o fȥmZ^JAMܖʶ0]$拊D55{32Ԛ1ZIT9ubw/ 5\HUҎ]\WnU.)\ۜ90{Ph8,KG Z2444>\ )'(bDs5wR0 W/ !h*6䒷uE,/|/eo}6r_NLP?e)Mw>Y7ΏV>O<*r$ʧZ%+gzii520&ϕ0JoHW =%#IyZ]VI&lI5S\/wNBѹ1A@sd3BVRi7r}=q9[Zض,Ofdxjl[xDYEKyPi`w끦W{^\w& MI #dqBN\(c[`:R)Laa[-{LTfMihkff* Vt8ڊ%+͚(c1axKd^e*5>T$ԵBC#ciĔLN2'TXcTG֘8n+uk]71TW^x}#fIۜjM5%@˝2R%UAș-r牖V9IhrbNq'QK9)d'd\C7ލ2;d}f$M˚p?aN 3fax&MTf$ 2(U8 K;_ 80\xP aG.\%iɳBj!HE`}SB`ɉiXqY>C(8Ђ$5i+[D85G.G<=82O#1RɄ?/=ǕP8vi2t͈jZै?Zed$L2kݤT .EZ9)=eN$õվ=LOՓll"K(ko4 58-iҔb΅JEUU +[QyK5"1lO^qAR;jؠi5h+ײu V e5C"ح1 ZvbZ]0ゲ#:;ssa׻~|o`|ݙ?/>~6?SߴW 0ZVRbwbE#WTo9c ֲF__Quc)vX'연򕗷kyvw./GnYc` +%q\*9i#$<֨* RqRy{7Uh~3n! ܟL (cc[O*.&8irBjM |r| bik(%pp<-6Pk[Upz/|!)Uc?[q:CVjXÚeCA Mj3_H5 }m! PaMa^CfqtsW=P~ Ȩȋ23 7jk@Mtd +[5r6C1Qr̫`=TQ~TO_ҁuo{Ƨ B>'6 H,k}3Gyg\=_/y}9> ^\_1iqZ X9K#yy6kAiURaZg&TI39ְRcd`bH%Rr%nFSn ٓr>nġq(4GYCS.+<xzQƳ2<yza뻿eW>ëW_fY^RK45Oq?rw񸢼5sŘ.F~jC87bÖ)(vW)K{#C&\*Ycf"`4a1Zu DFb W~pΒKjEX9fIl+UUBdzX,ZL|鱓IUL*Ѩ&IDHXg5FkdI9q]5SU#V{+ȝK+ މ)VBT Fh2YJRZiN%ٴ>aJ A NuDRYj&Gki[ei7[|#ڜP6G@Ca$ESF۸lf.Gˋϟ ݗ ~h](e՞R20R 4Ts#gkm _N;D/V,HZ}Z,]*@8$Uph;tR*&v0eM3 m OjhBfLL2GȞJQAWxtE씰Cqty쀞֚X9ƕ(:TtVFTaδl"W/R#J4AWӯW:{m6Ƿ|cb]R~ F Z-I2]7 YB ĖXkُ#jI<1húhT se\[U2z#hUz ZjVm aX'X&?q9 9ܳD Zꩡ*zk v( sŒ k/,OضdY5bTlGGF&iO[hկF +U5-QYQFᴇZ1v$b[J1ؓƨ[ ]oljx|U`1_|ozH<}zɋ'%ZbT)[W>K6oD_3~[>W\#2›)ef4!7J]9\ ;T3m#D h Z cDGE1%PdDbbPcp4c aOL4:cFJ?LٹkBׄ`}J͆ƎX3!G)8QN< Oc<]ps/Ęsmb4LVQH͉sM(=Ck F)&ϙúxH[ f`t0︡/ ??ҿKGǟoM(.U$Pj/, Ō{t`J,|VO*B<^\]aF!2O;02[fqvsJ}TA-L/~| g\UlG1^lA돪sR,Fx ЅRxQh_ȳy&M'i*j󤨈Bb:-2cke:J&էT<P$|[325cZtEQlD\J8G ء$py_q\ i@ b3m4*Z9YO߂d#SFPж@ZiĮb' e~08gqZ5fwrq֢Qo28jj#B>Y;_0|6rx*־2 :YK-)0=;-S?:/ u-_~]1zJD! Z%sfd刽9r iJӤ҈%?$V-?mf7֭r9nJ 8BH0G@bb`BF@ BPDȃENLܗnU{}v5oZιUcFe{\w<Ch8!"nJ'BxRVgeq}ɦ)<9UenRn9r b '_ea fbM|t !g^~n0r}-)~\I̺+xhDf[I3SNXkTq` oR#̡k4Ѻ8aG0th#Y%Z0ttJb(zz3!F8qOmoh!˳"Pv8kf8ݠr.%wÑL>璧)fcR5%VJ[^f.k?]g2T:7?e淪8pΧ84CGQ7"ΔVC[JHP}d*`uAEN~=Mj*Uoe7ՅkXK32BJ q*R )XɦaajI'W$o[8Z~c['&+UU5AZU]BY׋R3D4 q8߯Vat#9=ϟ>oVhᰇ1q<(n:P:MпhWJSJHUL{ͪ-X'RI[)r8ysq 4Xsaw$<5/_Lܼx&Q6VOֽCc%$hpLW>Ld"WyyBawXfБ0[ֆq1QJe+eٵSւVdvshXac"ƵNzIGK c/mot\\B@8Gv}aPuM233P⚈3Ҵ敥$ >p4Պ2\o[EJr""sl׵º4J54AJ문Z"IO@[˺i隞a0T9k]bՕ˭_g_ bXbeY󬰵5?'J^t4+jN HC[/`˟?.BT%B[iR p)шEaTazơK #Q"J0)2UXC݁A)֦%"mCU2Fsa;bc%MA-tLcU1>VUbrmgvG4~nheVW|翃EOX4 30نƶ4޶U}bE<9\$vxҚRu1炚sQ,.@)4r(1c^YzVa\H1qȳdC,1*q)j=ibwghc5|s'wn:V}O1A9vǁqZPF`BhpVu7U"סi U ۡjO\kضmdBvE hQW#ykVĵ|.AVRS<ϐ%r[4L)Bզ,(yɊ ^%8Gє 18j4h܏QXz\*㫸6c U,eijeZ59`mVm{Ojp290 JӄTMk E+L1b{O6lVk ֗܍;]7œ0~Bs0ey6MCF,Gxp 0\nZھ@׵|SSSTrkBj2 yq9Td*4^Y-q m$;s4:}[~0ZV&,ZLpJ Nc%Pf9R'RrHwUyqG)VaL^4dk] :KK~F0\v8%NrFUhHd{ּdicª,kS w?ws'|bb)3Mz%Q5@U$֘"ab\]lЩ0qI5]v-aĔ8ckW4e1F:E~'k k)v{>0NJQqHB.D1U9lTE 4R>-Sū݋YbxC.0 UYX ~Ew~ -#ͬ,+tHY S/`sL@Q]Ti*Yr!6֡"+M*+YLӣAF3lCUµ-0]c<9J{m=4l5Au0$*izo[C3!g_y]pʁZi'w+Y]E Ee7xQUcyx.ra7MaC7\2c8E,P\+)i`]CvL cڻ5[OJq&FٯDt˾mZejHYQ5~NAHZe|+۲"nOd/vjTn5 eϑҕպYL mzͳKjUqf01ϑy s7l6[\QHٹUJSB dhIH$KgQjKd- *BkI-OQ<(,=uݕTjc*϶[>|zͯv?r;Ƴ]^0~ i(Y ~mЧ)F-FOk1q9hPL]Clxu@<+\mhrb&́i qϸR+ZJ{HHfٜ$_c4"!Z#exPƐjA{/03TsXc !BiQ1-ZX܄o;I,qxRb?M`I)a[-Q\ Pp='J P$pw^@Nl::p4ZK\=e`en,m'TKN[߽?QT=tI:߷ۉ??Oi~uǿ=ְj@* Ԓ !PcrNZaNhsVtMˇ۵0(EbDiQ)x)Qf˯([* v™ yv&woBrɞaȼy P+u0_N8Z9+Qw gJ on 5L?Yop'/GjIܾX^0,ӉC'xyUhLGN1EZSi Z%V4\<)6ѯ<%ai5֬`kVqa4CJ\|A)4e6N)'q֊ NJĘ#Am1JˣVm48;W Zk,rJ5z0:gYͅ&Tw4b긺vNJ[>? R3sQI}MY[ XUf?S%hC?Jn"jWhF BcwycMEZ4PHͼf%J\w#%VRexrw1щ9NQ]O$SfTv4`Ɗs+.V)ǑqaHSbEk cSY+rMw@qt簶AkYgTx%Vkk;xpZFh(a[l̔ŹUAfET%AXgQ^~Pl=@H߬H:[kG-Zkm% YZkZ09(U=j}CvhigRP5 {SkjT8# *v˞րV}/(mue=O.hۆW8StRVa!g0? ]êM1 S!%8kME|utp",ϲ5SŸJ{jʫׅ+UîCBM\k2h82PKZZe뚺4iz6~Z*RJ@iTD=~)u1%u^1`^L\j%8(Ĝ8ӱ!%w]Qk1{l* k~={(/;c o}%u-TU2R@9 ^n+7q٬8(%3H]3 ثT %+Ynn`<*dgX5F6Ô)nM\X{{>TOBa@Wʅ !Itז"߹3NSQQ ud7Dnn+3+ómhТ߽8ia.һYq?^6J(V*S'nu&B2%,q7^hf6JH`K!D7gaմh 9+d%┑*xkPg*,Wm8( 5d[Dr4H\Qœ+(nU7hZkJa>0,wy,M_7_c䒘D0W _c<~3H)b yY6,. v硋QrU)0q;xՆmۡL%Lj :R,h,(T_\IJ`qSe3%hڰ^opVW4εt=GQxghkh5@!tvf\a}85fqeāRQE\DZ;" ,0+gюTfR)@P9jQuziơ]=ZiDN>癚+-J @J lє IxNbo)K]&IJ!)fb5Q‡ZWo ΈC;ǂ*S dhJ1-(11f.kUqE:NQy'-uX"!kWZ'4kR2D PbhZ2H4^b)a!8%GkY0[QUq̞Jwv!ρ`]]4h vzK]zP"̚[V.jP`-Le{C g 1dv;93Gr5mJ3H,:yBP|_0QRf G@":w(*0>N߯Γ!FX1r_w23Y,Z=V;J 9Fq)ixYcHܭ48 wpL E<KS[@+>3-IbivO-XOɷT:d6rɒ7-5~Ff+Ͻu <\?A)&,+˩h+1@; IDATCS>۴6J!HH3S!4Kˠ [NXR ^n~n}G?/K?75 gBHRҴW+8Rdخ64XCx֠UFjVlڎuiW J;cW~yb_·YB o5ݟ EP$_It ᒔyXU$J^r8[k agȗ^|.ZX{109'n[ɲ1U;VmGMÎ# Ŕ0ֳ>AD[mk)Ϻ Fa7<{T%B )`z+P8K WWk0Z.;j& KU+€2F6TEUyۀ[u"hZ@1BvR"b#5τ4IKk@ Dg:r1+i&aJ#!1Yu-y{Cg`q4\s 'q͵aΕ86!0ׇn3%' Zk-/ wo4VbԤYm=D[FiTQ Ciɔ#wΙUeSƮLUҭҞqؾ Mh~)N4zOy#q0rzժacSpzvgVN'L+1Σm2 x_ N@SԒe eaBVܼXo:o~14Z9Þ"jHQ[~McmmJy&*6eGAk`r7 S"Vyτs&BхT!/("*j 438J&'y'vф`yx)P &zykV^s8vYcJtˈrmВ׾Tv0,yn O}G*҂W,L͖ףoD_drR|Jab[5<+} );jɄH[b42ԋjsX 2k&qXB\;G=//쳧(2}rq[-!+-Āb]s<=3L^D u$o'M6F-!feBg4%ϵ>7Յ7w5췇etϬJLopSZuy"@S&/M)?V+ЖqS+Sxc(uvdʹNe } Xr-83vi$*Je+cA4Jy\Pۏ0U*a*2qH%Ż0Uŧ<\_ȩr7<nu*.t*@ܼuuڌ2#4v4me ̉;#E MXѷcc*aVBup9G<5J1"xTk:̓*JbfH{(y⍧o5KdED hf/2ygjY6)S5J{(( mx:qq068% ~$c|OLf;`*R>'CmѴVGHK6X/" m,z*ZG3E*X*sQ˾cӵP!fs73癮i80q؏ LՐ44<㌥ݴ ͖_s$45MHHt@Xu-7㎉o l. %Yk2,V~MU)YbJC\j!c !Ę~& " ΎtB,Y10jiu+]sۉS}ainoAbJ S>ja{V5 U<߫_D+S]w.x5GL)'cwox>UU޼1IË-TË+J4 Ig9Khepqِ5㑛;J,^҈lAZk//PN-R5)JTʶzqPj%,%pP~ױ^X['}΃rϘ =dK,U&닀TT,uzm%jtUDEjrUZQ)R`mCH0 vJ+TÊ2hU֭Inw|X`獡*"^9Kƨ_o۟OC?E7,&l 1@Q[y8khe03f1\6=[bBF L(t=NM{]1(vGJ6 q`oH[8q,/ʁ.3G-rgNr-UPO%DZ.7f{8abpcUG_ bΠ5kk2q&Dg if&˩/Sw4155*Tx٬Vs%<9dnWXc„RQ*\-~9 34EuM֕xdj:)k ]%S$e(ѰԹHK36rxJmfKMNCg~RtF ]>>fJI_s(3 >SP ՜^ON]9/w?W [>K%@}е ɛ ZaŮ<Ιa* mZ4"b`8Ǚ_ s=yۿ݊9tMmP3h7"%(@ G)YXJRΟrMQ Ʝ23䪈11ϓ1As\|hHx'tKNi4MK W󓏿fU< e0}r/n^:]]߬hh 2Y<% і\-w=~W=O|>u=^жƌiy#B8N3ft]*2M:aߺN'LXT8zWkVZ)+̶`DG1x㵅'O>+Uu١Sς7?+/Q~Wʿț7R+w -{]yoۺ۹c m 쀡jLQ#RD⢈ѐQ"HmJCDn M vi @]lcflg._ń8~}|Y^k}|-%: &eE,.F"6X[)jJQ 6ڡX-wֺ17B1]?₥{zb QmgJ7¶f9rLX]Dna^+֧vH9כȱH]{@TSW[jkH*CQ&Lh$eQRJ@c utiEU.ƪRJ4I1Rpb=BἉ1`*7ZC@L9>?sdVۀւslVpVZŴNءuIe2ISIUYfRq.X.֧F"䧼vǟ8/*w{Bbp} [KsL&SRMQcj2Ƅ`2HgX0Rn4> HcSY(zµ,5%ZFy!"&5U'v3,G$2Hv6s8_= ƞ*PU#l*o},gnX*(%yK6tfr D7"gt4. q'/٩G~eJb9 [t4% |OceYI%e>I di)){ >gW2 }dn&E]bٖa@(ʢc^KɍS_S@  4W-Cb7J/+WlAg~}G'(SIcZj)Ja0BɄ1bвm7Yl 2oHIp KDŽ g7ZM-V)@* Vń̂5 I1 CD!Pia1-鴦* OxCIL|2 2[!abAYĔp1`HɃ>hf ),؆|N5u !}Q>ᥐMF6n0  u<&.R, Hb"2W&X뿆ͧ∄2)gr֢F7ء_ fWJXZWD` StOTb&ĀeVU%Ϡl$,^LS-*vX.8kQRRw%fV(Q(C$g8ܶ1Cdy>pxȶx$o.bd\!jwmױl!e&2;f+ #n!!2;\+U\+Jm%QȐkIq> n-pC_Wfz 5%őJeࢄʗ%HR`Lf/." Ʀ$GEd'!"=QD|XH|[)ʹ IDATb=g'iGGyg=A t"GrB//Id")k;Ek=%JR6n;zf@]kk%ϠqMi+b(QQN\[%k2\Ȥ >|$K&AIʈm-f5E!9دdZn :k ӲK&21HYz^D$ X,tCI< ̘pa@VBBf>Ke-ɵM!a2pQNywn\Ҟ2y^Zo6X =)iDRȑ"|GC>-"g =RPNk6 %* 899 DY qr~rqFe4Me5M! #4u$RI S z|QWJkiH5DI&ԪDmKpkyD 5k{mK {ij8_Ĥ}v[+ES7T }`{ż ZCY%@Ś>ƣO~ ol_>$;bE lgE8r/+g="~2*&DYPkPp^\l9[l!:1-sl͵ UQPОRPF](S R' efy4D77~ǟ~I)FID@|B-<'̚&"){]L h 6G1NUEF$s43v;жcpT[6]Ϻ@k[:ף&EfTz|:C !I:R$Q8nFXh&lHʗ&)_x$GX.]YR` Ŕj4NBE8@;02..jœL!!jF3 UWj={gyU$E[N|o/=?_a?x;O?}t,yش[BA,{PءWYG5͑i8hʂR(EZmܳvpqd2zK\z4U uPG uJIS8w=hcBg8C ~/w/J,O_Ojf_6HLj,(m*tOl IC.PJ"F j=*7X Uo1Z#>B`o)xmQ0uE n"Ͻۘr'y eJ^|惸23ʏ+sheX9:Ѻjk8]9͸sȉ=tg[&锪,0r"z ,C٘"A)F,IrOUrYh)B$PECg yp&ijQr 6CLnl6τ$s)EhEe$RG8\ UHn.}*7(^ѷr(So]ήUv禩vtq~ "kKsˆ d{^z^w/k?xF|߃ nW*>ǎۿs|˹)橮U00%eQL+ tZьf$}lV-;DY1j ]eXm` |kN(067faiUZewg.n/En! \BWlە ċ`MEs(d " x?`k&t )hYQ;h>ny Q՗큤H-?Cm]C22 pz0%DQ8JYWΌ#ezqk EHvV0. ΢t`:ἧm҈;v DmsIuY5/t٦ǔr#DdRZF;^`4E%G#~ ֱR*Ŵ)d%#_.MzBtR*H.)5COr0(M[~ȯ굋x'*pJ s&{~_?Lxv,RJ2tzX( )g5B7՚~pFbt BR<=]czEiJ&]qn"Vi rdШhq퐪Ԥ8^sjA $AjІ8:wq5=>LTFr¶o \K _9N kA ]]kB,ta8H!.GRNd'3}Ə?Y=BtQD %fvػ60s8NxUruukdJM\$5EUkpo`c֮tfD> t4^EUX>P*I7%&Ae8S֥簮|cw@%ՔGy)bzz( \7B99UQa w}ۛ'19$Z T( ռesQF$T;dQ9KyX4uAa{ӁͶD)uALc$N!dF!C$F4jsC4!Rbzq~.a)kUw8e~BC43PpiܦQ}}zBPW#'O~缑$I$";%SVԌQS?Z~O7=|_%5Q脋g<֫vpS JyJeiУ᭣]a`qzBQԹ&Ք>6ҶKoXR"$G RI s-&.– d12fPTEɦG&vu z)x㹗[ِ'a98;Mv)`Op攣AŤ\?L'-G*}O' es&a(VKjH$|Ј$2"dZ*6vlP"֫Yi1*CHuYRU :"P d*ܛf<-UVpvK'}TXi[$aVj2E D(z 5q~]n+ (R ?$ G[9{)ו->DꦡL0ew1Jnմׯ<G'8y02~ g>'>tӳ5/=G6rvFizE!2 -TD3i):0Z+m ]@uC3rN [U]J~8(f(w_#xKk7(!zevGEYh|v,hjEUռKU5/xRoeQbZb!LSrkRT^f[AYh!e:o[J]eX9#.܊ŋĝ} ={w-?I@kz}~`'6n`-pk9ue$3s 1cbJ7[֛M)ܚGZ;. >A}LQfWT@|%"#.F㞗~V0(EZƳWiݹ`,X,Ҏ;쥠^w yo O?OwM8oX,%}8!n RYzK #fuHUQU-R$jٗ;;`S( E"Fqʰ;0Hc@<)J!sL)jOm$0hstVknKSȍ V>EJh`cb]" Ap$]@2XEB"]-2.#= ެ$1iF\$;HAbnӥVY)` OJFf@FAav[9WkM֒EϳwlGׂy{E?8lRͬԊ(2Tp4Mt>CBy= %FO(R@/#NLqY2S=-)M!18K4Ua(KUگKWnm:a✹2̫;h!Ѧ@-AƄ6lv)Am )4ߔZe Ua_"b11~|:dv3N U BTh24˽SdĒ`%xF*Ǒuɡ( W D%z>EGc1-#d @li,XB 9P,;84#kzu dBa;ö-yͭ dASDYh#c U3>$)5((d2u>lM%ܾCZV -&b5\?f99_{qAm+?+7cq_ӷ~M Vp NBă7o=r|rB'VsdKĠ@ͧh v@ BE 2un&GG m"UH #ĂvYl8sہJssp4+sPqZ킓,Ͽر'Fkk(]nc][<_Ig5ZOsIHa<c I a?8X]E+OQ(8"4sn,eQ԰EM|"z_MOQU=u`ihaTa@)!J:g%Ck#{hXFs 1H%sRjbA@PL` G׎ ]H>E9GkuflDI9BOgmr9Uu!{5Q-n Y?%8SY3ɭYP5J8E*,#,]rva<+eKaKߥXo&@,ăegDPhʲa2g7sh9\HEprK;nv1,a<($GS>'yGz% 8~zK׶FvdBYLJ$ryͶY[9PhrBfV IDATULf)EY7\8٬qpHu~t.]0IcA B Unti0y*"kJ:z1*6z]uk u|j-0LY`BI2ۣЙljTDJ1GQ"FH5d^!w !۠b;<Ǘ|Hb#TEҊBkȰ݅YbzIDW#Cid51T9j <Ƴet>$qF{YSR_+S!B%!0}`\[Eŧ.ɝOxo _쓼{zwϿw=x;?>_,^}ߟ/gwAۿ'?+گ~W^i%<5O~ü=oV]O,Wg2y6r$`m7Feu H2!cVܸUpڔTζ(#)H]%UAY(HTFu<4GUBJI&Iݘ{UɼaixJ/{Nv$% %E$`5$.-iIBh% &EّJF!BN+S{MU$g 㓁DܬC {Ʊm#w[D,bm`onkC]eAYhREdkNscء]yАFw~ y;pܰlHI3 Cc(FktJԳhӗ{pT+$QFLT1x͚NsOݸlfX6mJGwX: bp{JloƴIja#B1RWP|{+M/$Dm3wt@1dW^Yv!y⩷ [iO~_b S594|.-v($Q#s#h;w:.[i4J`DI!3gQ]3;#8ʐq}Z$b.&[c5!#%l!@1E?OYUHeHQPO&h-3!eϦH$n>|f7Ͼ;??, hQ%4tbP(֚/=$ x2|rŻ4{>`/q0Rsr w;h!K>!V8|cO<6agcVyY7sTݺsߞnXL2X1L"28BqV⵲",;$1Y2A0 $p{3}߷{$@bUu<̈́VD![T`҂1Z#s+WbsJ(RM 1x.}bfܔS(xcf*3ħsV )Bx)Mz fGvtbRbBICWUbg y?( l:PcԐj1h%g!"FiԸHb.0"\ #I'R,+RiꦄbO1|bp %J^ˣR+I n b bg`uxBè6<wmaPk1xLRN)Mi0d3m9FѪv&24jFͦ u5di,)8f)g8 9i*:Y/_)Jj^fL+Dkf^Vs;Y,Vt}%R fM6Xmtdh=VQHcqGCrM5VԵޔj x<"d|簕j6h$u0 RQĈ=1&B#g)##(= DxNG 7 '&|{Vږ !Bb()q91YIRc:/$8+ d)N/)CB`Dh9&<"u *#%3Ik&r$PmF{A F2rҼo<#=mMh>[ r~f#q8)Eہ׿~?w|zTF/џs'g.]: DxɓIR7riͅ|k>7}X.+p`٬Ea]S^xaMgs KjTp隝y˽pҁEb"l2ag2& AU_o,lV+NO=NIeƼ)mig{v찵]TAWO?=ܨ/I7=; o2Y s&Ҹ !I d1Zϐy2R,̾n,fbR+o)$iL-ny!skFei\x!L]$Rk Me֖ LH~t:KCT$"K+%{%:۽m6ݩg=XvKv^a.6$w #J hcٙakf{2a:2?d hKhc ܺ-̦pIJTEƌH!htU&y lQ A}=d3Y(: _|]zBɄcǀlKuד-vv/`Z; iE2ںF9,WRXc kԲڠ#EGݴ#YFޤP#RD(AF_1ecVÀ%9קDv7fڲ!UT>0LQJbĹbo!<m*ceuy5{3?/[5j]BU).l QYR`6,(h)pS} ez*UgwelH C ށ!9AkJ4L]Uhm@fe"ZTUJCSd ܦFS ݨs˱Z2h])F%5MS3d2 ['vrHFk0! %9b;"R' ΔAks@$*Fab{6ͬUּeqYx0uNK'd}CrYfm=aWpniZih [m5'T&aD&O u-@+sC=S$*f[ Hf npnhaj[6aӑ٤a !cx=xыh]JHH>@\dEE0rʑ$n܅fO>_fMHKLK-h+4 QFYU,p\c,w c@oe[s_fK>{n]'Mt9y"{ȫ_+_{\b)9~+߸,x{^SO^$-vv$h3{ݳs>'Nc;sF ˤ VJrI-l%ڪse)eSjLP5*"4ީD1ЉP,ā#jV\8]QH{X-ê پm|{%ʼĴiP4r.6$$CHޓFք!uAfC4Pk8,q+1ݲ;eҴY>M%&]LzsЦeb]zRc)PpZV *'R,6 Z*m"3|tP,M>\$i0֠abG4qb!DYrJ 664Hw Г@-匵I R=qX| D]t)@"eyptV $ZBdFN.ʙ)rK{09"C&E()Q2FލHp-KAB%4+ yV(%c3W~7;~=?ηӭt]ulMZNM&bϦ#X d#3"D&t[DiH#8(p(]j4q\نr .(GؾA0j3Ea: UN"Ry jw陵"UT")hN1}7qt;[!T@ޖhƢZr"TؤcԱ K8t:rm?^%N:i,G.3K^6"SO3: kQ7mjfgOK@i & E9Rd ('3K8\V%&Y Cx=z,sIղjzƥ3Xl6XiHJb(܄Sʑ|dB L$GiRbAH92 D!Yr@h/|:"Ř R  )Cwc&=|R媢)HUyL))ŝn|;x>eف˼?ȓOʣI\*Y,$9*UHYu&gg+_(w°Kwxn^W i=og2awŹڶAIE \@EQ 3k ޱNQZ3G#(jn]HU]Q^BՆ[.U/xG98'ܤ/&Bȗq9RHݰYL;̧J ̷ 1+}ϰ!ܰ$=Q1T.6L3 ")pr׭-ʳg%6p$8h ijDݐtP=+9+](QhYf =GåJ*[q}>~O|ǿ855ܡ(1Xa1(i9V UȵM.].,)NΔɤ" Xu}*,#r(caN ,fS*)J1RzjBrʄq!\3PBl'_BлH7_/ԯC I94UEnMaKtYST a@iٝHVγ kj&sn lioz4”&j@I{BdR$ AbK" O=e&)*#G͡ O:(S2 $BPaD~ !P`HY@oJ0Sf"}H١*C|7}wc~60Z2Z8PCbGŢJ&2M]FZeaQl7-i4Tbb9t\=j YRM eR Rwg,, R+"Db\"8XUc*#F \z9}Qad1)'!#%zI"k&FSFLh;&6(o'E1R({,m]3Lp%Fh֛r@V5Mx%-ƒT9NIcdi"Ƹ~հ9+uloo2ZYN[rf%Pe|Q(VmZWl6r!UGLBI`V--ꨪDח Ś[rv~ #]]cM,V6dPT^!KK9ESQqQbsN7Mn!X.j<,LG6HL1x˗%! ottbECP_N{Y-Q$9e% fG2*0Ϣ*K%F -K 1xB_Hi;XirאED16OݏPmW|Ŷ' @{|VO矺)[p8^opJSW|{CNjxյWO~Ž|W<Ǜt+/=ODva~aneξ=,|-sچYPt1j{TJ(qjҢg IDAT[N.~Lm JbM1D PʠtH-D<Ͼ[a4dy=%^is9F;vErx}䇐9Lכ@K(bR5dDV8JWZ4w\2̧+<: GDz/R1$bĠ>#;i D$dXE[7A٦[rQВf6H}?K-8;w z s`20LM,Þg;AII4vYHxs[u{F41*tY_QR]w8H,"#yx+D*8є%p>3l,4( l۶4)1xd~Y- ,+<ЄUflg=HaL%$`ti 4NMVH+QѯkܐX;Aw0\~וip un8)NIcd{ss&K:2mF;, /\;9J~@ B ؚ >#gLUJ2DO ʔ+ 1pvMh]ibdHR[Sh8F LJff @s<ڶ,22K~''c7MDZYQ$ q0lL"b-KG )[ʻ>Ebi_bb(08#M׬tM@1i WdYR8b)xKƦ,h!/ń VSD_zM4DI,)n^/>x/oWzGo>}=SW[tc]n 4?|ǛWo}eBםlя;;髞/y+xOwg~RmagKPn{/#_ŝ v,88\<4Hi9c w~/|]Smw~3?o@ބ w#s yMلrT;Ik̶P"JfHabܣ`TV^xaÏۏs{2wٴO/gkȹDDh>R*7ߝt,+{}CP\ً.)eSXFZ3jfӖv>η)i @Ke2 ΓB*CT|!E$6sgB- l5 j1e a`()6V.6]W?%-Iz(Y> UmteYTޟbm 3HdPRbl$RB*x!Hʁ;(A0Ȥ҄Q!Mk1t !R픐sCv~dNAXw 1sBkSj ])EeAf:Bud*V)eP:ji[j HN Rynaϊ (G˞.v|i*֔!CJwZrkr#N I)@J=1~[;WHk%1)5iXC,ZYDجQAY\$''pVIUGR3X3\jє.eP)EΥiakGbDF&A?[q/(]H!qI n) ^7:H)mT57Գm K4J(ՙjKHu:ddyeM%X`ب%&yUl'*uX:Y'Uz_}8 H6ADJrJIYcB$JLhr&k'&LVD"#Ơd@a 9G008OB R9{? L9LIIB*a5!f#6 'A ơ]%rP),>%QR3BJJHHY#decBD3Zh3lk)(rА5yL9<<,'Goy'xˏ|NNM3WkmŜ:3v27q _/&~g5@ 1mwU;h=e}u3l>;?$^O_J[}B 'daI10!qK L0іJ%qLZjeI$~PAdEUe&R:)RBfH g691*:ͳ&Z3rel.9V Ab2t~1c' kidrTBhO=%:ҌTaHRT>l-2V̚XKcdɰ_NE&eOJtŤYV:Y'u>=&- `d{V=X3mΟT Bng{5PqE;+JgVSk_Cݩ[Vޑp=^$2sj{Lw3Fcfpv H!N2{4#L<ĀȌY9FJ"A.8b I( \n $IBcèHӕ. #y,))g~њI3:8~6"<|s,WL!ͣuO)PHä[XLBE.ioax^#RI)G0d.EIf4,37n|9'ݸ/NR^lO6Ҳ6={D>Ʒ|#vۚOM|OL.kgnri>١$*%|xwao0m*LQ2Z16BX9MS_A8~~y.L݌Q"c@.!584hAbU V0/*JSHcyǞmQ-'ZF#CEt2q~R:B}/<89n".Ps&ٳ[.4fXPn@ƈ若J!`J$Q?Gʇ{w]1g01 :',0(͖݄PL(9qV-z{&QѯT-VUH$zp>R7pn@(uﰶ(B2X"f{4BVF(]X2i4U[J`ٰzN*vNM)# x×xϼ,N95!@Ds}w4Mc]5P5MSj1ZGK޳$H~@mlI>.]Uԓ0 |^TiK #|F@<1+ JZ)C!HG.Kz cFeNk" &݀(ұbRû҂ᩧo|/hmT XwC$2D\x)TFmPXbv,JiVH ̔ Ɛ`PdJ9>.ӱj^%]Ty 5-5U!E1DTXOyI!+)MEt rqԜR+0'f1EW|&zhZA$B'BLLw_T0qtgXz⪢?/R%H5Ȏ"K(PTfuX:Y',I K$IV9M ŴV)1uF (2{Wr[P]Tk.bzH A JE |!xM׳ָ0߭PBS3[[L%}T5(0zg*K8b Ќ$b*(ʔ6X%hFuP"Q-D)-RYdDDLR2ɋe:c9~s{3/ȮGwM3/H!uQO>b$Rcu~@HъeO"b }DICUU4Zܨr?c_Dr)h[ 8Ȓ31yRi͚3[Sr uf@)(q_Ftb IFRF68vya^p&H΁R%! p~TE! NBduEQ$A$A%"L9F&@(␐LѸԗ&lBőѐ3]&.QG4&i*2QI𫿱<b*E6s,1%(SdIhsF56zlu1l9&W,_[RjPHPKRIHXhjʖ T8k~MO%8c[o|#/\wxCC={t):Vu]"ZkL6 Hh8;14XH74>gyܭg,03b$ؗ8l Pe!dYMLbC9! 2vM'. (A ,!i4B3sY~y0Fs.M=|K: TJ)'Ƒ1 U (@va0*q2T F6}x3bdTf;4mKw|16L} lȦ4U :C֑n cHU.nx#To`2#Z\E8)pe4 7?|75?e3t !+f)kbGSZ[F\\YIA@2Syb+i n#v KSZbJ0f5 LXbS&0o(֩X*SĦ E|LNfQBff4)SiDTY!$*_&JO=ݐ2<ϾOE4*@WȨ峩[t86L[1x_&(isiݟ̈ 3@lo8>}NJwvxrK$$vܞsCHxwfl@Ȇ4Eg #;:?3h']*;oC:)!B f3gqs 3-1TmƘ Ř3 ?]0I`{'Bw\1:%@.yO>sa|Bi]p㘸Rf@Yv4/ /'PӃ+fm0e#WLMy@U7}îo 1IC3kguBg M]FD"$`5"gETR&"Xrƛq="@!S#Ҷ -o^,^Gcܺ! T`ݪe"mQ8k uR/0 3tf 1ք͌!gamI]gG|}g?/޾^n(qz; M/-X]pJI$9#@'=`JS{+t*bVqazoc=}AmZ$1ѣ$]`HIh#$ᓙHoJD3FbN R$G4G4Xv v y;aޔ0dQirޡ ^٬[cbQ1r֤'π*[e*W.1oFNBJbA-7å7B|DeX"'5ym"#ƌӓ!$2 5W!ҭGB ,5s8jٝCV7n]Gip~Fm+W1d+k,:jk8o'e׍ڲ ]ߣU }OL#DU{bm7qgѐR:sf09top("T˖Rk߶M`T :Hr0\=MCXq( ^H9᭥"J92~!@S7Y#cُy㰓۫N!M,Ngc,iKL$2>J =CA%ĐHYIY*CH*0kKK8A(†ZpIGaKP,C\j 9bJqWo;G&tW31+撨g.u67ԕ9!P:94dЈfŪL407!'P%}I(HZm8X檜 Muy&j R(|mP^UD]e&a8^(FJim #bP z@:_:_/$T䒳w~ey%㛜ܚs6EBNjcֶ, NW 뀫|>*a`mg9zD+{s$g#Yq!|T./=w+?0ؓmTNNʑTb6;_My`h*,Q)XgdϢ4"Ő1Ny/_ 9l!ifq~`"]I2Q0LwOS~k+2W1 dNRz\rZ0iwUj(Jۍ>s'^W/S?)?q qYAч|[Q8ZXьuBT4g̉,.a}I\F_`EB) DJ]{u4.A>^G!NdSb1`q+p3g?Lzx3CD3.&T#h.x3fAr?>e-|9##?x{o;+{LavAaY'yKKǥxuSs~_<4bmq&ح$a~q hCV] i\q|gpՌv^5711|47'Ci*=^NQm ip1npr!4`. uc,ۖӁ+> N%~dT !)\%\euԃs|Y4mל cuU8 !EXvXCJ#)XDKdU)+!&ڑT9alf1Ӂ, Æ1LJ?z RՌ'!DWk0g`@c金2}?Yi+O]{0eM"]p5$)vwX-QVRyC噯c$S+ò]I adLcq5o'+*kQMI2XTR9c`P46@%'!"~*^ xJT#Ɣ0=1&B.y Y5kf 1FĘ)R65*H¯*pt3t"4Rf?{/&M?otsDet&'g{T,1ST$(dI*1,}b6Ϲ:* lcQIU;)bL߯8 ]X2 `[T Zd*)/Lp7bƓ5'ׅjf:8B&G7qTnYp6OϒX< ,]̩sh~9<_:_1ef)f};7#'Gze,))6RNq;ʰJd{1gK ӆd IH2Y0V g\ɝٻ2ҬeS(HsGr=؋x_0=6|S&(*m1K-U:!{Ə1ӏ^ 1NB-ĔH]q^a6ϑ6<_A{*Fcw ?a6'5 :EC^0E%֤E%,[B،T'R}\| ַ?3s)^FaUvYNi݊OxhsʜK;/Y,+_`f-}M6l61s>n%(݉C}n)gE74*˅ʥEur {ͅwR->nGN>vzL^R(-S3Ӊ#ZTܱ)#qd3ڣXipzLA#E3ꦡQ2 '݈spNVrVƐh;8A4Rٚ {ԍ JHřìEİYp'{ZreKCW h^ղHl3b 1)BJ)B+06È'')RVZA0 ĭK,C&rHM`(q1&7S Xa会x=wkaS꬈1eh8`~n_Kk79UadS!YpjX I^GRN^g@5!Mfr6vhϬSMgɩa<6䁻 F'LR~BCNfFCD ׎S9["'KhBHBtܾW\X:_e2#^wtS~wp|2gOx X]c.oV7$ft=XuUU1k+7< XYsvDµl3 ˗Z O=6^7ۋWII'"1~kYl"d|T_h*F!WpNȭM1 =\O9W ]* eb 4%ĖFk`:(^Z )z֫t.2嚓ܺ%-*4=|!K&"bdu)g0҇<ŒB?L)f;~r]dЕ ƕjvW5.<,p+flI50rm{6)˚rrrss׳㴙ɺm)<%\I9Xû_xK\kGN7#) =G֔ bgѰ\1AkQK fo WEp6!YsH2kv*}Z OXy stMl7BlRb59S*c.d.LC9bP*"{pmc*gqbr2 Jsyݧ.3[HSgQI 3~p}+ze㎷/?r1l=M93x0bb87[1ɂq\9ԎIP &&mLFy[|'^s݋~'Ë@]O%+L ěXHpMq͊aY-2EU!$t!13ofCpz|H;[/\{~H@[ ~A[]ֈVX*5%~c׍rrqxقk]qT2R$| (8b)6÷-hT[rx_AHlJtP,7?Y |W+mgnR8g99=az8NNogoo "ɦPY#tPٓbDI ,DVSS\-a?f5庱TrЗkYQ6]̈ J"J[}H~GBYp(О}Nx:=X#VIeHAta`#3,fs̐@`]UJ9O4Rmc#2K;[z4Ü7x'4gW.~'L_+tRv/JNJ krW C?bH2Xږ!E)61V)1J.Fohn{HxU0ʼn[Ge VX>rEKCd+n$7˻Kf·y'zf7Y2}׹t}MWUśי!ezFU0$WI>…]W߳G]9~ 1ҍÓU$jdȉJs8F֛L'oxbJc& Ek] %[;KjSdNR&sY&;nj2MzE*`r]`j5FoNٟ O>}Ps i]o&[?$oNGe<,UU5~VWxeRJlw+(vT'b"8 x Yє bǠ2D$~`?%_ƒ˅1R&rDMᚐts9D\r*p]+n|Z":i|#y G*XDC) 6˅"HHr#W9}5-Y@-0=Ն$Ӂa\SGp&L ҍJHB&+?|{:~tӛɼW+{qmfRyC:9q$[X:"΁*MD:VCB@Lkv{T4 ^:}:&fbh]_"Y˪멮VhP]-{ R1Ɓ=o*O/ŵJK]7qdzK; u] 5b|,F {S\J+Ii,1sֳP7bq<焎;-l}IIj5vIS-9D(|siTL&kF,DD21 ܸf,L <+2Ø0VFhZ&9 ;x!g*d˜Yc#r8e5(^  J3*cVazӀNe+Mc&ub=t J$ p54MB LfJRi`7 ۬DG IDAT XSZ~wb녪4Q7f᛿<ݡdPBa e321d^06GErFPb }~cLC,Qr%ژ8+qE*KSqM5bhRIfm~/gv@Y9;4h4}i=繘t΅u#@5b!! O aIi4+ßm^+_هyvv*_qpް#} P+,X8Ѻtqd6DȚY{GQ4!cHkgԶl,fMT0)S9XQOX&׬Ź,Mc* er )!͖f .9`༣!/._eOq=ibWir # $SNBl:ѷXM2Ki^VGSҖY<#&9$_y(Wb[UY.j>ᱫ\ܛ#b8>)Sjg5fHk1aP0=8jqɩXqYeNcb\ xw&H\ͧB, ] 6W|OWau^ܐ9KI-8zTtqP; @ķΚxk/s\\kNK+]_*߾mC9z ֕# Gj"ְةy7Qp DrI3ϝw^-4=z`"°{vahipnM\Woxcƿy֫ҿ>5w3Kk*HBz1[C&FHcjdFL]"Ҕ&ւMn;(|۲Xs+4Fbc(mb#圽]*RUzM1Zr1d \0cQa԰WK8u bfum8Z1MaR/o`BK,[8,![m_& q$PԘ!L,X\US]|q y>R]Tw#qP)0LH#ĒЭnĈx!@{<`'U**'$*Q(ԕb ͌.д3R2[N4c.$GTOʦYN᱄ӈ wpIÌu%Զp,O\4*Cz2C&Byj~HW0St8Ȫ4!RYLbQaIʴMfӣpjLDSkEqa#qrYj?g@G5Tyf§āOm~o|mB:E2d*4-!cljq5Jxr@KHHcG&|c)zkxOJ\Q1f;\-퇈vJ9%Gbp6uաg 盶u.,qm":`/4rag8::f\.ܺ5rts <5<H㽧irz8r{sLHJhB"E$_]$0Db̜)VْՆ!xrbBq ؓԦ!RȹRǑ1c }ΙK^3[h&UZ> OLxrUz/B/hB8dNI 8bʊ:F a(Z~q5<9> ~kf/QM<ߗfe{[tfwVxC^xC(Qa3fFSU8 A7l.JXΈ!4%~ƕTH,\9Jǘ9xzpDs?8䐁b0"+1,Wd)([­Sc88 7OX.]XO^u@7DBȬ7|VۼpM0я3s[S![Ժ_\g7 N/k%%^Dͥ]^uˢqĔd7*ET89EfCX;B0)CUM,)Gu*ik݂zEgq:0c+ HaY-YX[XWiذܙqu5!r||肦UV *ĤInL9ཥ+VcBy` }@sfszB8D&h<YgQ9ľ'v!fXɘ<5^ⳳCko!1g'XvvƵQcux>DbF -(舵PU Ȫ_- n '9l-̚w"9 4PKahJb>^_qՖ9*1rʅc({Ä Bf58X8XD.yì93K90tDsg*qdFb,5%v\kLaAyS$H0FjezhjmiM: _v{N7?[|_~3/^>TI|\0w٩f *ueT{8} b1 zj09sd[v c(˜6@R:A'6OLՑ,iN0D_}I\X:_O(ܼ `9Y  z&ޏ.~r.)JbD6Yn^{~hޟ,7;~~]7w]ڋl։G'oc? -*JSm nRt "U>fyOT9rZp|rgmy[Χ^A;|W׾ .\AgȺgYE`+GCmЌ84MKrAր%mth^O[>'c:v1] fnKօKndkUʕY=/81; \ acU]ӇЏ P{jݳFƐ]բ>$'l4wڪ$Ƒ8 a$(0 VF1Ip}_% XWa]?]sr.΂]B6!*_1~dLu߱:>$ŪZB9,UT"B(bL:ay|!/ȅ+C2d ֑bMI 4l*1OOYPWukɣc smYU%if̞uX E8[Sא〳W5`h]ĉ:r(9"ň1g8NsQ/,͂s7->7p7uVn˖%Ycc  0E, R E &6JbHB(WTQ" ) 63leIlkԭts~kZv%}Wz={﷾;/23 d^hNhR&׌k v+7ݼE\rb6xxx!Vo7&؎q4HZxV)~TPLofHAkd&^8GW. _I?9jQrkl8$џ񉦭,ZjMjl) pd)1$F^B8=(W$ϗ>>?=?Ϗ|kTـKoFMG?~׿oݠ -cUJH6F|Y\E#,OEwbMTofչ+qh@0E$;n%kg[iRԖoFȮX>|rwfI]qqORGQ^e?>^՛Hmup7 zdOq|S,C ?nW[>p>Kou_%ϳXLP#4跍NLQ=ARkhy՗z8y?@x>ʢ7S|[^૿m<{:S"e7n(>X em❙,kCj%6ڡcqB-9{Tahۤ*uGtq`H̴2T%m28Rkj)mˮk"9WƜ)ƓREŴ7xG- 6C_iCcQK*V (M,+.*fRRSY@0޵R%^dtܯs m}Wx~c~g*E_k7X5 BeL6 .Bě.)af8\Eq *3"d`D1 EZpΤh<_} \$,YTfՌ߽O/DhW8"~MC")ÎCj(HP9EC#C8iY7GmOu_8<y]r>Gu@1[-:n3j9ANk7q6D_oMkx XJA$FsFҗ_ /sϱݨ B'Z44+-$fiE-xBfEbB,=rࠏ*ű7(ٳK;^ޜ0,}Nv8e!rMs-)&H0h>ՒݮgrzvX,h\xx^y]/ gL5)yG&r5q@2sgb<23qiZ\id~<>51N%EO۶LR2H$vg~ddp5 {ƒQ' @_`X&Jř{)&P53T{^8Z8#g}$:n=Kˉ3UMé'jUog"8'mK&$cJ03GBIc&KҭSp *8MN:xt\љi|q&%n&t+9㰴UdD)%Q*@^I<03b)dJU;;{~/?kT.2 .BUlq`)|p<RiDc>ZSِrNMYB8 ƐW5% cJ?8a<%Bh9qWl3{4{^T:4[P*KNpEWP%9g{>rDEpG?kOZ&¼*¤JJ\6,g0u4Nj8_'V녙b!r cҊ&ĘLc.$)_r)hHr*=}ʄB`FkMJxSƚvÒ/nk~m~PGܜ|<Ū J*IC ^!*m&K)4-c$8w_Ϭ>G>?xyZ%VvaiYl&^ۏ|ɳ7YަPr2\/hPG7,:ަΙwH .Y*qC{P"j^ ٛɛ?oh%u@+\\"z!SHԡ\MOƼk2IvSTA6T6)derYX.7==X2 ttp1K<>! !""W2h8_qv`[RNފ"]p-ǁ{w69[["41#R㽧u %CmSl֤C!%Ss'ef)H4_93-"R k z*pS͎9潟z(pig6xq$v es~NPg,П˦}O& H 6eT%HN biw$}0H`>>R'=h @\3i33ׁD'>&3 c ^B(TkcKY}Uc&n(ir[M@:!>+wy t{+eGN#eؑ=y7uavΨs#0]*L™mFbzوS>Q[f .DO{?='~.[{^7&8::윓SNNNw P0A7)g)B`ʉ;|lh51(yH9q>TCT:^ $"iL}OI=)O]7=El#s~~F-$,V *c_ CVζgtmDzPU128p-tmam)jG+ePQW3xƃ8ݝO(҆F]".D ZGvHJhCɔRɹ50CŘJ"cbgai$Jh)H9tdbXfS-8eD]>7ny.Vvǘ왜ģc8&88&R͠jT34s#!Ղoco=eʐ.:!binDX5-':O=S)sB19-[c#=$j:NF9-1ʰ mdwiJhDũ' ʣ}$Ώ_mtd6<{b(-5YY%owMo!/)-2mWcЫ5>z׻>{s}[iN?gXpuɪGo<_<:Qo:٩*ULz{|/{u Yb`J.ؚ4?&1ܰ2ZL+^-RgF,Cf8RE'AH}Kps` |RP]Dh{ɿ Z4{܅tؼ:7RsE'+R?'6sd8sY^RiN2z&{C#>~3H%qQF\A:%*4gg>s,ynݿsX>Uw~zb&ƈ 3KZ;3T{գQd5Nm :LsɣBT>O~=Ô4qK烯Sk|q MrN͔dBʙiiW%vq1&G - q6mc; !0L-K]8؍X*nS/a{juHJF;eZx`vv-:Yah~7=vi˃AXK^׮ 4PhB`&'lCɳ}@ +V3&m-1Kcӎ%0%)&mi#:RT^SB΀cRpļP3RIh d5&xƊ$3MZXf٫EGB _mCX-Q_ =9K[Rk٣Bΐ&BRD/,l};U l*eo>_Ϸ?_2ǩCB:ltuμ+`ٸ_ *.z7vM22["+ǧ[^_4?ՒˊG*7g9^.yAmzrvO[i"aqII3۱G&.$(y)zBᪧV%vlk;SAՑ҈wBhq>KЏ#&޻ZNeњ/,@2B{@=c߲)&BSM"jL)[k3#<@ӥZ,E$L ]K62llr.]gWG=ko?{,?/[>7X4=8j?3s2f+bTB5"#cl2)HzUT- nί|~u1̀9JC}\wh6 R͂1Eq^BF\E$krŨ[*h!CV3-)m`eUowH)l*Hh;cBrC} gRDZ *P*2,LI|駉q7@\.)tqަ2GaOcY *b h ' ef̧.LCBkFq5Pˎz\FD.X.oҴ jo=^O=yWK~ӯz7? |c9t <쏄}$;g T)JW墉6F`Cqx%6 ܫ%ISp͓}c ѝGZ<τC?)|;`٬Xҏ;^sԄsuiPUVа,چ&6V{6z5=:!3GGYM`X.Y5)SbT {7͢$s9icj/Z7$3`aԉnO>bמ`{P+ܞ(L,3-G֚v DvEQhTpcƷd̍č^WɗvJm8\(cєqƓg*()gL2o~$HyU1Ԛhs )ek U \3f:ۮ☒VNy6St%lYBthvwD / ş(xKilBʈG[Ҙ^BJrI{u&*_|++>_;~A}9+.w {/PZxaL6m:0iF3zEh;SOįہMmچJ0oFɚќw2e׊ Yx/e4f՚@ LS2cրCǥ`)x֤^g ]-PLLRR m+7ɳ٬1dŸj66ARjEkcL'$B3HHcOlnpC̐RG\&9Ō܀'`IAb, qiKaµuSח\[+x/G0a9T%I&9q,-TgR/oXu %̈́yW(p_P{_5o?y}UPgck'~o|+8=v^]riT9F$Ta[kv+iRƞ\2n*%gԲ-NM䋔ii3TZ-l)q=k"뮣Z4s]2,yxEDU[cB R(9%rSb,~H)51Le" mP{vib3*^&P4s_4HexaT0'č jłD6gǧZDVX~ ͭk{"2l$2L?X,A<ϝ_/}\{bhCn_p6641DLiˏ#"4<10r68m Pݒ3nSفjEoJHTGO[j,CjޣɚL{=]\Q½S98ɍ[{û'x/)nۣ]dodKG)q&&t|Smsc4 B=~xȓ;BHyb,cqTBLUĚ thI~%n58=Q `m̡ufޒ9?俏z)£?2-Yj] D;˶Md-8:4ZTI6ټmd-hk9|.O8 BTy~^M?ctUW=$d>]6r84&M'i<7꘡[xU_k7uy'>Q͖(XxNbuJ#G1.^!@"8n)=gciX򆈙VQ%qt&0! XP+4 (^uy:yk2os>k,g Z:G94+H2&0qw²myk|7ppƭCn49=]âtKuDd#x$Fb~>M֍Ib>p-Ԫx"l~%\R@RBdl9qȋ$xi=.7M.\h IinUQqDj˚ޟe:KU Ơʈs6"~%Vk44\z)g;B \s 3 za}q+tZ5A\B;|__%ϺE&GksƀBip!⛖ki&rÉ˼Sǔpn_/jxƊ86sE`D">ȲEDu(Ԥ:ƱgM+fU-M/Y%ajb"_yǨgyA[q$q _Z IDAT0)J6?+4Ԭq6Nad٭ކ'^d1&cGĘ44-U691V7ðCDbX(Z VUSbLC쭖,ێe۱Xt<8b, ΙJ:C%eqzR-{a5bzhtZ^U A6XRL@<8[;2'oN(a=ôtk)Nl69~رib)zG}T~`;$nMN>ɔ6 R~ Z SI趲hWls>G8~t0ӼRD6(3 g̼EZRzÅ, 1!̾y^,jښ+IUw~k7CI 00nރR+K뇉iʖc+0| r"vV͢,vu}L?uگY<{~WU ,}x^z#$Qӫ.} o.6m[Z y\?ɽW^h dl'rraO\帵Ǝq8eT.ddd@4;| llA 1+Œ{Hg=,s{G,8LTT޻k}9egz" 1cS8R`!U** Us-@' a4if4{ٗuˇ~Od.h55U=5}}^{g= ܺ^Hj>>+$=R+} g?lb/t0ݤ  ]pZ2.>PT\-?_kټ6Eo~39\6X }(҅Ħ=t%Mcpb0g үx/>x͝ubl)g'5¼Y-9 swMjt Fے)H+>^شW;JqH*:=TMBO vt墼ȡoTx3 _v:d}#Bϗ֭wh$qv,<9mk^]ɺZ^`Kș8D5?0agwiqe,cD0geEIί|0v8_HaX[ȱ^a&6c!?T~舳g/pjhYS3-Ͻ& !̵#μa[ؘL 2V*BpԕC6Cc5Tb l>xk G%{Z7&5)b2Ү*B/4ēE>?<{͓WOfdamh-_keWyg džv%NMP,1-KPVK_/|o <~?Ç~yg&jqHYƲl dQ9f/Oq 1^KrrL< *`jI!R<E#C6#P i--cPۺ&"}I:NMSǑdmcsҵ:ݥ !"Ql,ʫu5BjQgW%`J %B̸ woh0q1ey9Χ6Y(C!1Xܴd TP NYR[bn=XO~W^Y7bx0rx16wpnͫמA%RBƘK;˷A5כw^\h(BY޺W~l"9GJHȐcGݬ;Yu; 8[mBI7P2E3x_HUdkX_7L|eǴr.Kf>cÍBG`z.va\ιt!a^b}BaZg.]8%|jbZ*;o7Bv>«W?r1ZGC2Mbs1Nga1Q!Ao)Qո >bJ:=ω!74MCEi8z7RcC5N\qFyP@=`rZ॰¦_Ǟϱ^v G}πjopԎ7t맼-o\ߠ&z'0+ AZ%[Zl)r3W(&ZY)EXCe92tb EDy mmٻ*K<J/((~ &yལr3CbtޯUk]$iispTqt'~º(ADdE wƵ0>|t:NZX$QM*3IOxkK \?ϝ;?cn9㸰.-^83tF̉eIvDqMhP5Ӧbo>kXa>jkI,!cD1bevԕL-R4"3eLq(L /w.s!vMڶ*0Rj@6T{a eґ:8:(I0/ȣo;_ܹk?g>R>Y<.OS:FrenjuCNv3CrT>(cVaJDʀ-x6za{62C&B&:z;hc-c*Jmg*7`FGBbָpR8⠭K䄱"[RMaؒdKo&'H/n"Im3>fE1SMZ>uY-H+RшGR3'պ6H[kvNcn=-3n*1㟛1d-V(9|c-X9.^p9LqT~dn_s|BW\V2nϨcv欎߰MWRVQ>= dh_?t~:^’^Bް4 X88y /3\ڷLaV'.+l^, k7 o.gfs dB1Bғm{Lnb>ނb8utãCHM&kvh.!eB`w1 5ٟ'o)?~r'h~Q׉G)vsΒc2T y2k5rU!GJ)z~/coek~_'sgYт\JVȽY7s W3ЏzcajtweT `SH]{tï/!`K]CBU NJ4 r͐Jg%J7*C w R7Y2B=]۪QP=FàPF( *`,]Vշ ha Ys2 {&p7w]X0 i*]*)1MNv8nq[΁ l%n[2 5WQ@ )g|z(nS6-ӳ#pU(h1bmߝoy[[lG~g8j`uqsv 8oƫh'ոAyP {]C8:CoboƯcǟ5C'`$#E0[="W|#=x˗sC(]򈣣C>M~W?o%۟˞Xp\u {*WwW2 dUe m1xⱷp#;9b >u !DR)Ę ̦LgSݚtT͚l5g,L#MO% )m3nDJXNB{B6e O>C", EnQ8RNHQ~ l %`+&M)ـP皜+ gDWȦ2+6,408 C68W9A q7Z#)%0Sp؊~&l$SB̉r8Ό -)k{&*rQ=͜='HVVSwpYn߹S~?Mٟ#4eY" F6δ <% C *vj:3ќhB<Gng#BJ\68>GBtj]tq[γ|HŲZe>y4+3vgg|!`]O|e X@goiW~=$^ObN !qжaGOľ2_,88\DŽktffvvs|zEipX,&W Jd3ڈ?+L_~)Բ<2ZRU4goƚې w t.Royxέe݄p*+}1{sk}^ 2s 6`x z/iY]Ai)#vLBlטF5fTYC}O> E_aSjDep͏N>AԸ>RR "Kycșn\h\fi;gK^)q}&e R@֑1q&1W7!އݼߠ4)5lV1|e'rEȡ! B @+q2$֫ vٻ[,#lWH[LwyQV]:IJ)pQE$+b%a"faBMpFHlnr S{7nsg-3o9Zki{wSL&SvBdfΝ 90Ou<9XbS\`JZ(bSuXTxP1āt|⎱]S( EjGWL5>|w|GnsʚxcXn :e9abRoY~WSU0_0kY@oTܹMlo\2v!e!ghK Em畫(wR|jr"'mWUU(W"US TYCb>[b(Pm_C q91!b9,ΨC6DLB  gv !FҴU ĔK|~FKH&X g1VFOS9{O9æ@(2.ĜŤno,h8L"0cQq|!"dZ0.3 ƪxW`MazRL` (g4bh((P1Ee>#+ʤe}m+\*Xn^J_'_q~ L"K;k" !@3,[ b:Mxkx9e [@Ę1:XJPbJ!aį>t&{vԟ4@Oťpl 1n9Z'ؕ |ފG&cxpwzY;2el)>ZH1ы0cae˔gN##VJ4ciCWJ_Ƚp)p,,q:>u%cHpki8~z᪥?@xA IDATaSst *0k pSC5vSw[hN"yӧq_o֫[Ӗ^bwyK<%lw@Il %y- LEc1Z" fa͋1Tc'7T.sfzJZcq}n0'z#K kcRL5giW*5omo٫?_DY 4+.kƝ:ĩjR)tl iPqjnȁ>vʍ"Zv wXHH?k̺;d6c't!jWS*H%l9kt/glm_ ccdLX#L8&gQ[xc'hTXc0FC!Ϋ8&)gvmeJɉPOr)}g+C.V9K "S ׆5|bH]?qϟJC)#/)g!uUvdoPψhWlRh/VFBOD" 푣V:L;H>˧ -i$m eo1%%M=}j8,Y(Ō $y:^7@S7x.9w;pt]G],2CΝug9mӾ>RPĨ.b"D+6]OaȄ[s>Y`yt!ҵ\v6iٽ=~PA( 81͚%S֭'w^zHU,DbPAi@2p{ݱ-|ry]ҤjpsE\gf1tb=k3?Cxx+L?O wEڢbo~7<~g,Z<`PPj*uXkUԙ6KuyJ` 1"P0 ,OS;f9XdR3;wR͜0c]VC%30.)Zbъnrጰ)㝺q5T<ԯRA-uشDr #Gc]pUE]Uc1Pr'ZIOZF,8(0Ď {W*@e<[#k4> QEdh3 c%P{`QgM 2yl@biHd0TT:[afD%}B:m;M* 1 QO.^K{rxrzP@6SOmxϥk[3m17G8Sf!&|]mMfŐ0iuorx|R"LxI 1k/o:BP X^9:!c?z+n?͟T=Ob0>~^hKΝLۏ59 ry}v^f +c/!DVÉZ>IJftzݍpxhٟ}5^E;%ۿ2F&$%| Wdult#9J8cd,vH3 %Btw cj< 9$b0 )DΑ2Z]InUL%W&%ĸAJ!dBL(EX\]Sc)մ0LjMEr8{n;1PW;7#C;`ܟ|FE-$O`/G:>?I"@47Ʊ$ )ZM]ے1E ']ӷAF({G7жؘr 'IHnGsvKn3)H>hǏ'kS)ÖB3g 4T}=z^=ff@̙Ox?u+vjT{K 7FHF[U}[2/ʏҿ5`TĒBl^4@F+um6Ȭ)R僁 |W| ݳ/γ3 ;7I][q 3\|`?u=eLCnXl瞻γ\#9wnŢag> O^b2Uj.'v;}w}:9v1evwE8>X{uQC˷|#CD.B!*39wq^pPZTi2H˺3)z"cU.VZDc\yD(|)@zR *g* )!5bpbR% GqlO 87Rxi`1 1)BkRNJ14b02r>A1U $7$m0tYRQ~TUAYUeaP;d!ća6+B6y)u8izA(RQvʙd-wo~G?AwKhg+coN^su.(Oz|3O aӌ34hr*wwVwhu#-etʧ=vNǩUFJO5$ޔ㵿S.ن3&[KwuxN cvʋ/Enns,\yij?i ,Ʉ'I UJeL"L]MIrx56]GZ=wYW88<`Z "Gwčk[SKu~/z(e"cvK.Mߜҷ{ʪ0.>t,ȋ3Xqʺ*47/[N-o|>x]ٜ hUĨ4&Ǭb YCY `)8O~![RLFm|Ȩpc ՈE]%% ch]y;(4v b*RQ|^d9|P-jrdkm:bNq Ե'K:JIx ~6iM s}㈯`52TģM2P;|:B3J1GXwI'Ғ")(3Eġ#-טUdG0uO?2ZmnL#v0I'Īh ADq@b1l͛Hcqv\9cWC&e= g&l5˞.!`rg&xkicV;2FFd>)5v3ntZJ Br3Was<{GxMKb2%a"0{ʟ7r>*i c[uq ̭e/g;5?rK?{ղcUlL:GUyb@g^=Wsv&P*6G9Mm*&` +x .RBǛ%A"$rX(!1h %r%[o?EX!k5DLaN^G }'L pcL7 o,Y#б)*cq-("8c0&m9 ^ 9U(Tq5$0E1mX$ɤf.I9`lE߷,CJUV]Oj!܆:5-luM;uYL"Ł>$ѸY)QP.yѱO@"ƏH)XSe[{;ܼ*!hl:HL,!*o)%ϲ}F26 O`6b&iF!(!a[LٰjFISO")JW=C:o{`86}6j3ݑ_{Bҧ.OЧu-,}.[XⶵvAG#/˖={/\;^=0I,[ؤ^9[Vvf™5;)]Ykx^R;)d*1ji"}xBøM$3.ۧM71X4 ۞W_V`};5{<}!c0L6 72a P#c[`mE]L,gB mch{dqԐ3uOP iatw1z]w}U~W<^zMS4C|QW; ePN {L݀Ԉ1"%ܢ. 1jJ<1$l.1(pyt/ȑRSNe c-9%Bq8äni(oFLhVfr:o7T]v)!-S6xs=G FyeOGrz7ع̑ |GVĴ*LIPh:c@tC.dp4+.C=ج-U]'F1E㕣8uYI:ّQ F':#0t-S@L0 do3)끣<\rmɓ%D89B#-YLjfcV[-,)^E/3Z`1vÎT(vli<kd3f 3ĞĿs/}9֛SzJ ":uBxYoM<>>ߡ]wL'GC( n*.4i }< l6=Cggye36轟26.$_$7 vvh5}a4XQxbg1 utC"CB"I!DevYFي! ta D..zI: uR8wb=2Vѣ;xg01GpTڰ'YE7:5^mgyfιs;I½@Ձ$ ]SJU8EOlGLظĕTN.L `e AHmOf3/?W&l]Ѝ:UgswB욫Š`q4筽NsBDgmk C)-\8Ƥ[ߢ1D)%ԢtM@yRK%X=al!EZMe7yAEUǼGϻ-UՐ9TM'BPD^:OȲbSpvȤhn-=6b^"40y-鋈 rچ\.J/ǥ;J}2w9Vz}=hc, d'Z=w(=] ekBg d4'@K O3'k,@&Qkby8:xg?,5 SYAqV%+_y?;{Mnu=K ͅ|a[tҬ=9VN?<`wpOpyTD`l 0Ucr9^Bc=?ϏW$^sU=Oյ/{];*f:"* 9mk5]l-bj2+k|sf>ݱ,6k0]%jxml%| 9A5a<qb:&|d 5WYuqa=0TEyllZRMK]90wȺ#/txUq Np7dB zt7S]Y홐uhod#2Rˌf`j992V5Q(uΈ9 8s(Grss朗aeΞ:}bgbp\o_ϫO?qə98s)'[!W];2"]8N.Zub?6RC|){7JQ&[ɜriAɩu[3EG_O>N<18@ww\{⡣H3Ggܼ]IY#w;wc5EG/6 HH戩g>x1_筯|NLt;죮R +v.,8(ua3KcfݙK%%Tpu,U-՘+B+OC\ EJ Gʼnq$EӅzRLL6Ϭ⊾ qq޳[]m]@9h|YcXH"4}@,9,3^ 6OoOl1#Q`ʞ+cC.VBT+**$`WcbmRvo*RcI #UR, 2J¹b ?rKs|}~Os&=+,jwУ f4Xmb{gՆw^{}7琍G*ԓ>TժαVEK?僿~}ɼO|Evk푷Q{ N%S 8W&}/2b‚H.sa؝O{%vJhnvI%jm,e 2vz%V] oڴCPS{Zj;xy# 0t2讬{t{f5* OClB[1O*ՊAA@@ER(̼;-D$h=4â]l8)Ş9.g\@6{4B/2RmTX(k8%-tq02y),^Uz~?] ΐجFw<~6]fCaޘS|<[G?Uk 81י J%=ϋaVp/=x_S +V: IDAT~~%0w)Wg3}[!4NPbgr-|tP-K%+.";sWPqhuhӹĎhbi^Q譡.3%͈f˔PQ'Z;ї@fQ2-3Xc9XU)Qsw#5Oxك>מR۝3jMKaIvPB#ow ej{{P꼵tϢQR7%vjQݣQ2\m1=Xmw͕TyHsI@Eʢ@ 5Rx"blo%qZ-R9<7fF6h7\oڶ@9;-iY\f L;mS/q;k6#(PT#Z,j㒂V=s-Bm@iä,`RI R'ܹuXU*>>F4صnJGb<)qtpYr6.x՛ׯ.8<{O͙q%΢S8g 1@(zѪJc3WT3C_/㛾汗sG_~D셥$hp4vӌ,;Ɖ?z?Z3OqZ8fNN3㜩EEր%~q؞u1zlS.,ibo/c<|3#v+ho9K"xߚ׉##G:cj͸*D &ZT"j§pћ> <lD 1ژnPcIJ*#&&$rMZb>A|v`#UlmqIF9G GtZjBjn,3·.Zlj9 YTsZp=ǎ!UjTEpĚ5&ܫ?bߛ&&I^ ausY;^snϭB!"px̦%Z!Pj[3t%Z* KO~Z7%r!]¾1j5o|[w3}p<#Fvfs89ס$JRn zʮ0лa߱NP/臎%)בZ0-#K.LKid {q,u-L|>ҿ^7Ϸɟ<<Au(Y/< =Nn#umNtOysȶнlw ӝی2N\v/_/o?^:Fx;/c.^_G&x#j #bjxBܤLei%۷;S$(MXrW6~I܈X M5wMQpႯ!Y K.<3gT5GK"w W 1e!og3JZn*ju6A)MTW>mZ}hBb" K&oYGJ .#{zvBw8 ٦[\T\L8 62N[YڼW% vT͉0cVxɧyg]g,-ޙ6xR ӴprZ8)h US> O>}ԿfȭAe}Jknl ¾U3ކ{R<pq_&0 d Ԟ}o{]0G N-^ 9!9pu}CY3MwsOSKi_`o3}??E+eA?܂T|l;ozüU1Sq<1֠&h6@v^y&SwE+&J48kΎdunlL-s{/+|Xӻ5^:v gwH%q&"<3}ZZR畢LbTm!fCjZpDi# e1 }R]@]dVԺR6g ߲mV4W(}Q9ιHOVz؀Z+ E! P> \T\1Hh#+I)}֠WZLט{A❣:Ļf>Upv3wo,  'X8XuxꅪQaQXZT`ع^Kaw?G=_\keA@}yS/s|m8`58,HZR L7<1zcI`2uY-vrcd5 eIR`NJW9O˸ 4}=>Sr} ?~7ٟ{-9wt* MMG9S|ȳgsh(^'.r1mwO =psb{SPKN+//ַ>>u?a#>sFr- G_:2ijhvʎ*R v4t)rAU ?+tBM }uK3Jq!x$M y4+[k3w 7R|ITF S\Dy1AU4[;au;J겐H G7F~ Ɋ (+#s2@!etI9s㙛9q4D ֑b@ %M:҄C̯}ͧ;s8! \?اɓ95 tV[5A1d(q@"0/VǔNR2EE*\*>.Z(B R Rr3z1^?ʍD'̻TL8SYX4j5;TaS}&PXX]$,sP0%]%_?DuړܡL]2Hx>k<ΔlˉsU736K7o}ƪR辞wF. Rښ4j%w`fɩqYmM/2uF^p+oMNUa.aqw9iB 9$;s46894Fm'ڀ,9ՑVE ӭ:(Vg^!49 }J(ob8T3$8c~8mY$Ġj,\RL^5q 63b-n ѾuOB@N&jMKZri7f(H),)$$O(%_8Kf.s_ܼ)BQ7w+ y656ӓj%zz"23MyKU:VՋ )ퟠH8 gygG|D =I'*57s*Z& Ϲ5mPdm iL<2- - ðp?/ gZvw8Wk{8A=lG(,ifI K)?|W8)Tg苢bMXvb"MDZdV5Wh̤H&{85X+ D XPUJR N_JRU%r[ɛʭ:3;{]ŵV1r0\]=? Uʛh:ra$UQtc$7zZXvN_`עft[K (yKGdr\Kaw\^%_ʈ .mź!EY_g93gR;Yq e87pn 9$DqD*\ V;ĩ%QɸNdT2]'zzoފ7wo We1`-O*}OL z;?c=s3íqYy;3X7mW^vgB9#8a-q{..kX?Gُ|NƗw$l</<F>򑣗{xo+͋l5(kNWўB UL뉲imz{$d|)-Yj1&5%SJGТ ĢqqFd>V=c㭑m^k{A3NFv@,\Q)s D@gO{k%7SΙ-!xu:":t\1zz;vl*y +7~+qܽ9N$ ^x{w_> ;Hs8WI9x;?joX\sJ'}d5'2s9}eքS$Yqɥ={AהMt,hQ2qgN.w_=\\ l'-tO&י9YľVr΍& ))K%L; +/@v h),u9V;;.-&' e\AQIOZ&JNht]|kS\H#G99˼P:-b9*=C߱, dBpx]8j1# ows?S&ZyCzJn#ۻ]O9V(9;Ի[dJe7q2 @aj ׿iw Pq^Yo:橒5]L^§yFҝp9~3'D,Ykm }[p 5;:("cSPNƛՁ^b 5 h 5 f,xgu* h%EPoVm59b f?5 _}#O|9{LaCrno' 2$Bg|Jr4 ӜScGܵ S6V>MXA*k55|?kyxɾ}m~Ǿ_x8$aW*QiƯ6΢RKu&JEc5ề m]/Э=LZ㖶v:T)SNjȪ#v[3bR!vxe#%V :EEG$:V{>Ps!JvJ'bvBw5M:r.)[}2/X{o@>yoR]pk%$(Df\IHKeN`_ Ē Q%S7s9:S-솿̏o{QI ȨJ V)/\2-."rx*;\k-:`T93QQ<*>G .A[./73_^㡇v}KᓋYi0ݗ=t7ˎKԱ`TuN)CNqim]_բT)'`g4QG Vj39ԷsO٩v)sN_b9p2rZ qHsGĖeA'ڄ {+tբUeI E4ƻq3eYɩ uk]]j9X2}f@*hm~^ lW%tEi-!\ŴmIu,Za'r*DoƣDS!Y!1R2&>}ozi=x)-(Sp|6;Y^XWQ)%k `#tZ2hMvPYLkn2ƚFu /<Z횠qRS ;4U|MՀtk<|O<8-H5O!椼kkN IDAT?[_'YE[Ylnf%GSTUKe6DY5r/UUCJAM 0K e:+(&n< ?ڼl"&{Q}F7!qia= kHc@Xr\KaEޛymYP;O5r`['.r_R=Ibb9eKf1xhiwB k8+=>9šL%D/qYDN9v6{Cau#o;vJ%x섭IUƄR++>TjV,k;<{_ ;Ono9[89^{ e9}g#~/erL- >Ū_Ob2XÎrX*BMfV^į| h^.oD ?#/WOLE5w`F$w׽6%ij_[\(+*+~e m%SB}ޒ&EK5"%339FpXCВl56U5t^`Jy5@@d^˽?k"\V)k}JPVr^B՚;gpr#EZ R2uNxB3'_x:n<jK%%c=1R=GjvA 3Vc8%ޱWkhqf.gΩhf B*_.(9BY؞zvg-s[7Ǯ[,>Zfja<9jNL;0#F@x @`)!NR2Nu!qSO6|;1oNqHp]s{%dN;.,}=q9.ǥ/x(QRshe=D]9w4p\KDVrv=BRQ]k0-9xPwɼcZjqd3~8q:3_U&2>TkBl ?+0O1&(q/o/g< Onz҉gӍD=q,,ym87"0̼{>=+ V-xWhd;Ex~L/1jm®cuM,uzᨳ=B/Px7q4kl/QȎӻ3ODԞhѡT*U3PKǚ8#Y3R Vu4t%lCZټk`"Bdw@VZLB.Ω\]L !Ğm%sR_ۋx&8㙲;VQ*xY(9sr96Nj_lSg!جz֫1f32Ԫ(Z!VSQKduis R@r4ՑL)j,2{ 'vW>Og>ݱw,K~Ϻ=TUWULOs0bcRD X!1_l79%'V,N"I&``a.=3=՗{{]|x1̜%uus޽Z/=L&A}VD؏4"ꨣ#U.Aq9.G *-9{'w(5\:4et, >*3x20Ef;GVK Ց2UdY GaƵłmɜn7,7[J.SM rf-@D/ΰ! D'P`0)0qz6| -ųѡ9ƊS{~MP*?/. ѐӽ9猁 b1WHF |4RF\, UmJ.eӑLQC$,S%]Jx-/g_x⚞yfɳJz  lCn[H;4lPq43k($3-N1O$Bh.D\~ߘ$Z{{1)PU]ԝs{ p1k+eQ*y:bqf-y46i;s\;ȣ-i198\%R3I~A B4&̔s֓z?ov't &n~VphIo@ai˴Yp &tڒ2:ORx!]׳Zl6SoM^syd = q7<͊)@3Kbt8=\9)Ώs=L nf:oRɼdTJgl>oeT+bU%N͔XGҷRkA18RI I]d>-[|C/zTsgUG\K{KF[Ç2q1Keu\=j8Ad&q%$b %h%$5p5S,Ls^Dьg!2> Ԥl bca&sR8]P,x+<鸵*l98C'יN^ٜdp[n=GyE|"l,p\p>p~@;6ӲI)%K\جJS6s."XjM{9m!VÛ0ˈ󁼙:qvG2qtc ^BG|?99ݭ#'; 1@ x7d݁Wڽ_AcR_=r\K`QfX9qa}P*l熪`V3SB"Zr\ hJը: epsO!Tc@~'I/EJivhOS.g:|?~ϛz+~_]y$E‡?78Kt-.[(u`(idn6><19Fc~hNvJ[$GN ͟7YPc;y ;vE޷jڀ4168-yѡhMc%)f$ITTRKGӋՔ̳!"AK3pf pz*vKb?#3wlƔ]  \[:jץ 2?ӄTH&$49`6Vug<1Lk4RR2Tf+088 uj`^&xp]DcEWt#{)4 N2}i3Oۿ)#L6Bc#~ֳTÿ-w8ʯ3|=H}hsMWj'*Jjfu^Hf.X3+XNzc{#;̔WfR)P98Ve˔eRflQXZ|K!?4eZc+qy.U4f:Zң9cy`P_[u]]/h "Ps.+5+iDWȰ2?T Shq g%*2 cD"d"{…H/ ga||_G~y7=W#ʼn r}\F]s.NS:ezK΀3YtGaq.~d{.­K*jQR@Fc Ѥgf ZܫɿR:Z($7/擄O*;waŵZXCr>ͰnY|pI887 2yYi,ɚ)Sze&PWőljp 1oC]6O&cj4@~;)ɑ$\ ow=G. 2mayz֌xB7pc&D?p0#Ǵ1#2KsǭN7÷$q](J#%'b>;' 㤠u4)ZKt1^HŹLvzzh=oWG.pE+Ju104.IusdwC0iμxw,_v>QsV~=V891uWvppV_ZvlFf, ^p|%IFҔU wDDSF C>T.ۉ u9)QR @ 11 "~/2P |)~eO 3#{"~Gה}`ޭe)('+'ΏuG>czƪh&铚sdi&ΛvIlܾd}Lv[s;G2M!|[V@*,kégt Ō:a#秅46/ng+z@ X:^΅W_Pxmsnp> MfIGC8:jfj94(kJjjR>Ή]O0N)/!V 87C5QkBuDYID*m<^Esz$KZf&SFkӌq>I/~|K>XhiwӴk܉aҿC};V!JcJ\^~Y U]iV鈡2 a[۰SI̋A߫:3 eM:-!BhF W8[ ͒M71[r֙"/),>mѾy<0-Vw5IR-uW^]G7;&)p4L*]z]UW*}'GsRQ|[Y84"^,\Щ j6lׁ ( t 1ͣ>L퀠͏%# AnXM2Ʊ%K$p^p%4rcB Ԙ1Plqd؜>g̀AsAV[fv) $9H  z8<`\N# ]}`\3ib>ȞH{kaC?|@ hfm,5OX4%RA` zuޏx͏'Y3M'6&B ^;BNj9?g<ɀ\ ")O)ҫ~򟽇|zϽۯ|٪ໞu58JJ8)(㖒'3O-kMop}68.ҟ rWkW F֫Jɑ73q#Irmn\LF{.Tߩhقafrd{J.0TW>s(əD~k "1N&HI#E0@V "Zgg??U9;QA' W:0 :)G~10u&D ]GGzYJ.(ELNBɞo?a Z,&~R7yyׯo9==_/&9S#$:Uj|[,z0/ %iƲl/&d_G,Q[I^3[ʖ]dfٮ7əh3VV4!93E57c&+BWz( VL[XxBRRR 4cg%Aq7|q%avpܬءd"UΏ)L-`[h91}jl9zRsECسIwV&l)B30w>S\lr$ I˪DJG)MRvPgjSv{h;V~ݟpzwf\G6MrTDy>sWRiܸqZ+O?0٩fBđSeu{͹TF~Ӽ=L~H1sJ!ב\ʹ;k*8v bj=2a(-{m@K!vlhY?gkx j>W~خ\zK6f\ 649癶+{@5)ʢԪ0/y'^K䍇jR7y@}p#<]7REX,s#: ŌHg\r\O8^Lqo`J 33k\\;hL9Yⵚ*:ۈlrA/(:2-17rU^ yc{ $?p3s 6y:51TL95gqqxWw Xʞ=[G~F}֌q */餒pYH1|յ$(AMSbJ[OsN-XՌP'*hc 4oBs;~R(qٶE o:}aJˤV.I;ւ 9WbTzq$QyVKJدO2?zad@\(RxHCA-V| SJUpr*Hǹȁ5ot eĕ X g:gysyQҚO5yuxRV4-lA$;gIx՘%g:0ve4Sf.RlKlFRrZJs c)nX-cJtquܻ[ɑ_H'c _ ͗ƎWog&\[C/ң.68_qPV0yd: Wخ:ry"tNCZ ddprΗ#y4 /!mM?;*XRKO:l/`]8Tt'n?}lzW͏&l;WEkJ:s&s aOV ^D; sf,;a"{d&FQ]Mq5Ík9zH GBڡS20D|3Q7171B0kf# 5K X ?mT {GJ#Z8[sn%G!x3 d.0/tʴ$ t؟Ң4{o oțV̪nA+}{*Ә`Z3z=SRߘ1NuDj ecBj^6"*٤a Dd ([ ac aK^|Stnj {wo"b2p! ^BQR3N0朐i;$1Dqiò*1:&/zpzZɣ]$>@IR7);pilƉH&UǞq;8w)m{jZ.@mh,hhom)Uxmɫ3J(/8@ןD8EH-,Dg ^|gyg#:+bKPr|Fr\K lc y6S)㏘;ʃ1 lyt{œ'jj& wœr }fZm qXN@4LclQ8| {{oy׻^olا8wqFaCIm8Wi%ge6jpXzC-4fRn 9 DNcDqFpi?kDt/E4XX owe_v޿?vQ3Ya?GK &^||4:t63v?q].7Ҳ[؎BH7Al6JKIk#ٱ.@(a} Ei^G^tK94K*ϼ\%ff- 8^021|t eۧK ̎KT<YD~<VmUMF﹃)bɹ~u\yi>99wј4UuV˅mRQ\9Ͻr3Oĕ֕d1nf| Wgtav6M"Md΁w&AŌ46 ۄUFH87:ok>fvv~49NNfɰ/OI^zpkmJz:յ\c]ZjU[s ЇHA(N.L{sB#]YcN}ĩ#oKw AqP!|qw1=VdH[i?Sput`u {Wy[{U wA9T _$ _.mXf;MPc#s\2 ϖl40ʤ EI _^'q9%[VeK9CSx̀Z2xb`fub)YGW/lfٜzsO:u[d̮yW;B_ L4h.2ulHI3B!y@% Q{wow~9{.vSLγX~kC!tJqSj,=WnXg(YHyEuvn\r;>=V1@|GZfhGb]i7 l6_8KlVl禜5x1+=!d\BH]nۛA5Lt=YCuD:ld'5&djip;ysF!]w%4圡:<]伥-IqkkXSr1t-2,f=yќVX;O.KuChOy2xQd"U%Ovf/7e4֒yxɴ5u q|JGM7y[GDΡZu2.L)(xsձh .I,u7dr@a8/<_}6KD~g >yxq-t|k4}fI 7M1= dI@JyMjA!BlmO[ĉH3/@F@@}g~_ wy,OJ3[~ Zx H*D6v璩(cI䚁B]ύ+WLmP$*"Chf(}L`c#2AY#/:c8!?`]_Ldr߮x\djqf% n#J<6BUk}9w=NI#G~[Puf>n؎T6H$=` s8)a"R:r;r\?xkcZO=WŴç/Vgٞ$er|.TB3Lvu3Dg".ƒ&mp):Xn*ܽ{g ^z3&^CN3u5#Zgޥi5F5Л-m[Z3Hk;AlR9Bl%YS4 fVqhg}gc9pk:fGF4?#j3f6WdH:7Om}OP}l>A{w嚑8{%S+| :Gg*TIGqN\Ԓ)jQ "@'ӊ)fV-]t<1\4s )w='re)p (q0*kh6蒚'ոAr<k8c [:bɻگ=G?|J"O>y۷/jlFikbd/5SjmM(N: e-Z*k0#f^-TW87=g'W^RύE9y[fx"š̏uJ.;5<%BzgkqGJUji GR5՛{=ilT}`H[J˧0S{~/+/٬T 2?k#%xG˯3o\q̈́Gpj=9!.RsA#LlAf7fzݘ8;K-ݶ-;Ұk#-~g8fNcT$x>$nᖪ,6Ud'+MT=И:.8|@hd]s}h߻t5%' l 4VjmGd[MV^*(\ZDM7H ـjAGţb%H1\".|Ou94 v]5J 7% R:[\nΨiôR9Zx4koU g'y/ǯPyv6Rʋ;}5xz8YpFul6{.-IQg Sl{s\")Cg&;XxJ]3%$byz~|o:O]גm߼w k&g2&r8"T&(MRw %IV4NpD9UU;&q+58j u|2'(^G7̓Hq._H`řU NK(#hIts^%sm>G5J6#gfdq"T*UM*BJ}Wqy5trb;fR8Ĕ~ xMK5}K;+l3Ǟi%NۍI7E=˿K?^u\^W&[Ji"rb8*r9>m\{9. 6/(ڟ~酁hd\4DWB C̈́[8Bw5Ru*1̣iZqUH G7+>9:AR|sR=R*j59wxZ=[j@ B1b MRb;ǩ\I8P'r1q D8HHH-uz| {?>n H^]U{sk]C899ᇾv?Or{tc/*`{m3<ȧxɔ8VH܄2yk!^Bz#tj@P6 4>\p:N0{$2I`RB ;y Cy[7]CϏk9s;ʹqXq8Wv`Z4 FJ"#8g$2(%:=/q,BJ󔬤XR>#W,W+RLeYb|sΟ\Mf0AKY(K B[C-`X߰98 g#rG.DkC,:ջs5o,h 1+9F(xWN )EŬErbXQr3Δ˵2wv8{ԋHLidjiPڮm2;mxcaxk!j^986 igX)H>*B" +Q:!,,]B %*)#*m752.}UJdSB`oT7|/b|#؏>7%+>t71#NsN$>S&կ 9*)Y%T"rGfU h_RdVJryOnn-SLn7G~;˗'_w{ Q{?X茲Xq㫨hECmzk\e M;BojH*P7&?OL{ qGǦ2fjSBI *5sJJddF1pR &l-hBc!a"~!li6;;е[ɍMZ6]+BZ3x)lkXAkݽ'kߤ21(Ns&[m[TFP# M#@Lr#kҐ(!^T@5 Z,)(K[Č$H?$+cY.3+F7x'.s3~߽?UK魧8u)qF3C%%7kZL 5T@XJZnQGȱr]k r#Sb)"\yPrSa GA5Kƚ9V[mr>GCOyoLh Y}᭧)*4XM/mBipwo[sS(9Zq  +bUt J|곆WP0RU}EVpxEh]C#F:j{zSiEW^Z2% [R5oz/֛\%ryI?_W&}oob&`(@#ѶWP͖aIqWꆶʒQM\HƲT!Eme_ 0` jt8CR2PR|KTUuH10F0΂sK̡\'AT,yb4% ZjKᆙH|]R! p`[)w]i8dK3= V̀(*\ .tks-x;d BN=#*X[]Z%C*;Ta]w"cyJLh1"-\#xِh*>AdQs8=TI/lmMђx>gNorTW/1.YHt09p_>]g9\ SJbI2$L㰾F$ vZ FhI}M\K.>JFJ&%Ubx?}x]Ǐ\3*VjQ틍 [s MLۖn%,tl+\Y7NUvf΄% |sJ( mӂ!%RHh,X/)X_!%rJ(R9L3T)ba8ɽp_ CU=Zw>ѩڶs;bHsj1e:,bq F1f8fsq< Kͭ{~<ǭ{ϬT!B2bb aX6hɖv2V\jƸ9 9r8 8YrrkXq%8ȅ4D|FkVBό eZ[ٲl(ATn@tbZS?771qS#$4ïs;?Ï/_c@:K7^}+ )=b$MQ>Zh,PuzbjEb-,r0}?<}{"c~+Bz+WVWQV]Oq.<$*Z'(&RDU>QQiJpo@%棰L i7cU ThYJ#㣎m:rq_PTHV70ectFkQ++B[?iJD97Obh'C:k_-QLJ/"Wz#QҎfCck;B;Pz2o;yO 1\Fh'H㈱xu،\P9ֿ"R 1U#Ә>f)ALu=k)":Ecb (A0dbq3kPԐs*Ӫ5Ҥu.7%U7w(js._]pb#O\㡇/p޵ CfL j07y1eoM b*S]Xg zж_Ydx,U yD"V(x^ġ?SWePnIa~:0$Ov.{6zBLGRuQpc>*C!cLcZ,kAK"焈wk]ZqBc3fRQ*n*vDx XW Ŋ)Mi MLN|SbuV|-:x K?+>tC䐑cWٿn~dó}f"YӒa5 AõQC8) )TޣEHCڄT0ncpUT\\b?!wAzl+e62GKzҾ<_ ֣֡*hXBNwJ)q|{##7ժ?w*!9,V)Es{,>b-*hgs+oޏ؏~#=u| ul`̈EP[ܔ Zb;+|*,L7<ۧH86S#H28j QSpcJ!LjI@Iu0#wҶ}F@&8o1ޓRBTc1ZYK jrpI C!s]S_D-*BԸU182O6<|{s4HuiI<5ӌk kkȷET59rUUGwwɓSSY]:ɲCڹgAWH7t+O( xi]t,/Ps8[cZO+RA˩sS߭P?>T׏P"m4 %'rIؚ67!=|*H3êpRf/\gqW|&޵81k c|3aѣGe9?DZv4,xȚ(}r݃B{PYn5>g0C?61Z~ډEP %U!I qU/pt]dQ"q> b> QxY,{iaIcp\IR^^bpU 9_Utqœ RhZeԀHk gC$KJ\2HUCɤ 9GyELR"Ӊb\,Hi+ߤ=Xk(9a˞l KE`{ =jU[rF>xQxx}a= c`!A i,)/1ֱJ]@aBАilkt Eê0TJ!%e/#bKmoQ16m$02|oWtR7gն1j7.*C%+_h~҄ɷr=s~gSoߟ| H\r#zEk(.w?Ÿ nm<[K;;N/~Fc(MNp3mk\IjKQtǶK`P½CsJjYD0B Re )\C*Gn+> U. j!kƴ0@ZPF P9$15FX icйF눔y^w \ v-`m㼤FqN0`'4V #k?qZJ+JX5=ZUaƎ|'4Muunt3` 9q@r#R&֎;*A\uwQU@\ELea_xen;+!:e ɵRh,ZݵQ,v|CĘpM,+_i>}\4X,h{7p:LT⁲HIl6Օs&7M<|\窾g<9bʬ@ʕMr"LY(0c=RRh o|[]%! Jsn/ӆ8Mp˯YJ`/a G7 8x;5Bʅ/>3?8XΡc~6+xN쳆sO ZqRݰ 'vÃ<:0wbN5-R9 "g%GbVR(et 6i2iHigebnFym_sCeLO)X[]:#>x a(q|-bt͉YFie>=9RJfoðr{;aULײ}2 ZiY7x1"GkUs/,晸2t=Ydq`\ye58P5  քƊMG.L7|"Xc1Ό2 m?Vc_/ 3XrSOV# 5F#)5Μ]i;#9wΣnߋ_Ƹ۲9də T V,es6po Lf-w `5J.?P1WWhWLuG>n̗KT7k2眹zM$ЧVu;4oŏP0,ntQo!v 83?=սw?`{e.q70Tɟ'^0^E1oTߌq_$Q3Wc MkMnֻTĎP cdx!WPkCZL-4M}EG6֚4vs_!5D]#!ux+T,]N-̐{\s>pW̘(\b)c2}+ "!2-HiIC;`7 Q$s6pe)֖ỷb</~c 5Llik\GW[#Tsv D X Z+sW^YU}$id9}85;C#PXe喝K F-bo8_-wU&>=ׯ= zpkZ0Ii;f%bE0\tƲ9i RPS m;1ErY.U_jY): 43i!1M/7^T!~*cjr.N2le)| Rq< K7O>73'0sD.y!y67p8K3)nigpC ϼJ#Ó IDAT0g6ݠksj)U(q`8w -:g+T]HچRw%܈ `@أ9\DnGAј a5(eRɊYJ___c_RYa>8B =EWJHۿrAcDJ-RO!aIJ`rXspșͬkpan-Co\{¤XQEϿBل-X(勅5P# o I&1g12mBଧm FƷ}c͏_w"f\unX4B'pT|ɗ…b sw߹F;XXA a3!qYEB ۄr"iE({5NsYUbi)㩋SZ'ϳ𗉷.>_J?%+ (1! U:iy}-]gؿ m\DD ͏cAA!P*Lcpkhle4iKB"!D,(aȫh#w6>@W׹A ِBa*\,F C"L"⤡Uj:qp$T(bѳZ88ubP Ua!SzO :DR CVC TB K-Y;][l6\ R*BΔ8X-p85ky \Qz-R?"d;Xb&y*wM6jҶ5Y%&Ê`1XcIe rb`;܋z-W]BBelU緢b Pb!'YJsoC!%R6k QdY~}<9%RL6, M^z$7tw-Q+s MG#GJ=#>?_Ҿmr8/֛aly:24rPoG"8R^pƙL#Z8qzq\p}$RѾ'pg|ž)>nV=ZЇ#'<ҋKG:C  ZBuqy 㛟x+~7?@s<}nwOdڒrm yK\SY\ɼ]wD8 p0y?ʅF~ Os_E{x>&bI %<6m"O2Ӈ5MK`g{|0P쾝ؾӔ1#`GiDt;R,dbMK885>PTY_чkNlȦ uF" a5Hm))#.vuĜDul4b*%TɌ)U$ hH蠈bHRrM+l[lR%HŰWdPؿ>gwvw |c ,('WHflK@\r%&8R D,r^^`evxHZ6)2YؐR!EO焷}1 +x2k' \CЭm6|åk S̤E3 Yf25z瞃p3s30__Yձ,qCo݉[$opn2m<)Y1t.5DGxc A$=^иgF񘼕dĩ`KGk5;?PBkj)1)&Lܴqt]C! R ):DAJ挑 5ՍgLC 0Y`,nGMm}X=|sίLV"%ayر1 trIʑ"0Iōpy`k]-XOEu4$R},,qsh$@(z#3A-̿V,&ƅ+CT! j frȺaJ뉽*/xw_o7>z< K7E$!:mX *>P\9slW |(xR'G@r=>vM-fVdkx6yg;|=Fßhm\d?|𷿓Ø8X.&+h x@LDDsH!j"O~mG4Б|3?sm ,#W.ZpМה&o(6TX0bUylkWIZpm1&ܢ0Txz NЇZ{/h"kmhycBhHhBM)u!s*j\EΙ4-(!H>P [%$:8$+dܨX(Itۚ1ݜ!֢I(Cok PQTI%ӇT`YCbZ8{yEv5J2d2,X)A# rR4 V3U 톐ec &9掔=# ?g*w0*9zp{V#.~UEq<˰gF,%Z}K7IɂB8R#m2rRJD뉉81)#u `)cɠ4Fc` }>ͣl?oow['?CG~5>*HKa7>?y}Ưpg6~|3'/x-;@RJc+⊒ `qx{[udsY y"b%\e83~?5!=bBp17_f b!✃8Pr=tOwquLu-m~j^w{Zp&k.~oS-gY ^,Igk H4'}<9EP)h6Ku'oV=Y e6iN:&ӎȬA.1ebT,B锢Gkc1?,WҖe5T7}Oւ~ +R"\9JfqTq΁DUV}}&UnSNJJZ2Nnc,:@:AM+8N,lmqÎ'@V%S_w_2IV+ÊT B̙гʡ2ɩ,ygnMbdu5U*HX)w>ុnuC]Y'!gC \{0ziW9`bIlʰCEiqݞsWz>sn^Ks*("Ƶ}@!Dշ/|{3MuH$Hf˅X&M4a"uhJ4ъ཭S({/ע^KF 9;|BXQlS"XkP2!C$OF 3R )R:T*nji 1V͔0F qe|^l+FYtC&VUFaJ= R`U\mHeGKu/%R9-ۘw#:*kQ.V˿xxM|r2$]qO<~>ùOrٓN^߅*XU8sٳwqݻkw5w8/}ǣnJZXF'g/xmTy3qW !yhffUw,hMbnFjA,!jQq<[NØ"Q#cLĜ@ O4Xl6iƒC= (!Ozֲ\.]o0T_/(ǴiWiV~yƊÛܸ́aPSd,jJҜc|ϗm^ 'Ba ۍMf=Xl4G@ Y렩A(Z8l)UgIsd _{C7n|ǫ*T2BAz n B0J4ddq j9O Yo04glS"z98WL[~t"42%{B_}<5ebwiT6r{=pam&◾vYx!s\=S_x蚞YSVrŅg_|lw5ֱü8Ql2'Տe$K|_Y52euܿZĜxZ)%rh!Q{x_^a6@`X3@vlٶ3M[j'X P#1d3x]}Y]"R5BAKbFb>-UZZ}JD C⽩XmӲ3Yєa$(4iKf"6!!q\2}8n ;6$9X$FettMC:YX& IDAT&v;2Byd5aH*Bm-B&LL[+J2JXCj*8^mOSN[ʙ['ifS F 3MZ`άmYcQA"Yw%LZG7UFPƝ"m3'ńSA z!e# ,ao˗(-ǎxefNX5LfUF򲛲;l&h\ڬݫV\8qszE EÈۏY+:6a m:4A9Y('RD0 ]& 7gjFf빽T\5$_k˭ƒot^< 'Qb@fqݮ%zrC1T4UAUpdP2%ɋ54R8h3 CԣcFSf9ѸaP!Nk~ʴt3O PB>5~=&u,y׫٥Fy2+Q2cYqxĺ@ʰ\Vu;r|G/ܞwU$,Ws+W\uEd!GCLU]27XQa1 -PX#0vHH1 +;D2C<2Nb2Wj*%0Faln5j5 N)S"kLR(Tj )\AW^1]OIIUd Y\nkP`#uk6m-&x׼?DkNֳy9t^u^@6N"MCvU&}R"]ӐJi mwX#)ws??4eJgUޙtB& |ÿGUT'#DLӨJ=oɳbmɹJ`P8#X(3!}XjPV@GK51HjZH)Qb-mGFP LkqR9Gc-yca4usvȚFD)A*4(iQư! гxϦ#=1PJƠX-c:ZUZ8Ɍ5b3+ EX|/ NA;A:U;@JW >°8m{ YRJҚYѴ ƺ,=cP=I9۱4>E_!j Jo/@I%gxn݌<@ĬˢS+ c9A%:,RGF =῔IJ$ p:Ccu:L@yև?|o'yuo/`Ns FSoɹʸ!]Gc:|qZXHL}b"c#8BNcXU*&jPC +Ebe084[*ICWT(5EHg-6psyX=ls+1E7-ZQFIJ;_s`;Rh|Ƒu[ks* 11H&ۼq$e(> \zu̘bȔ9Z*c }d5*($H92oօ7 5̺X=#t{\_\⾽+\-P`5 *ev c"l9oЇcmlâ5[6)"-H(.2DSjBKÎmbs 1p4yTJ0…pEnFS|e-||hӟ[ܢk%gXon15kϞa*B Uv,fJ2\ :tN c  BJ_|v|5fJʪ|vۿf8% 'ymuHFs"Ę#2F0A9"D"l0ScP~~}_6qy]w~G{Oz9?oK?mo Wy/?{<q%^SBKY}*\ll[Je?,)WfLgc }ɔ\()=:Eܫ{vɷmel룄8w Wi-m5<v"7odx"{y/ƿ߸|wo~/$兴}/y8zwǑ/|sf#/xBYX#AR%ch/<=`>`AXdu GY v7gDz ˾"UVq&_3Q)95U9Fru瞻}o.&93δv.FT=-O8P -| 5>vb4kD.k>!w%[VRLY8bJ¦T/RȚI(VhM BSB̠Uoq 'jF 8L2;-TA^33xuJr)R=}~ h~\RZrƔH1黭w %m=^Unb!Q?RӠQ%EI42Vج`0,[ztnqf9V٢mwM5=wu:@Q0!00@',%af=1 j 9fbR¨ g2=hYCX[6i3UCɅ"Fk rʬ횕i$OWJXkTf@̉\ɖA$ %q*=mOގ8U dg3lJG/՟N;awO1F svƷηqc R=*XXtx>3O}W^eTor22? aZ^bBz8pt13p#Gpɟc]x{}-_ӧ߿?S>nɰې"!ե̼MN2J64VS3Q X|c`9ʦYsց@>Q\%j18rӯm콌e~W l 0cGEԡEY|$CW-seXM tnCLW_W#Ûq"&R[״.s`U7 ˧-zg㨌+ų+/E"XנtfHQ-b{~ U&q "~ 7-x@g\x7w?H9O㒽Nr7$ Γc+N(X㆝c1S7M8xb5b۴Ŝ 5 3mS KzȓlXKa qD Y0L$8c kY"x׫1)EPbLleMI`mFٟ7,xon'glMJg[%I EaM 77y,7>n?E={92K)QfIk}g?|u=` (y&5K0֓60ʈ7Y3KW0cc!eo2yc's_g`j6Yپa-E80QK+h_T㿂_4P^ [PƚK+/G:YGSƻ1ʐR 8ˠډSВi 41 5,Ղ8N"R0ֳ[7y}}_'}$Sw'  IDATވE$O&#&3<'hF\هe|0\C[]qm'P:n~%MwzRzR=x_QXX/d9 Hc߄Myy׫e:lLf9TCef SH4@ȄQ|QWnJ1v7l !8W ji\fs\7È-L1FVH2i nZWpN'%GLuRj06Ӵ&c|$D%l/$B !EyzUv߸{9~闾k'͍JA%nK;:H 䢔Uws0kAbR#Tɪ"@q2,6bpUiKJ5f:G_'M1hB&$ta'yOeZ2#jŒLLX=Jej)F錛ST=F(%-F=q(vf3TS*˫;D 9U"f %B&Kε.EIZT9T崁֒3@I! #@_MS.h4xl+8l@0J:103 'L)MJ2Naz^kWV]jk XT1FVtfѶ 33f}~}'bWwxӵW/6HEpu_?pK{fXʹsUn\̬׫ hKboo=!mTǟZS95zTy+c i4l uƢ^)d̬40L$@ \zgdv3'[0 Jwߥc܉E$O88ƾ2^88+P/w XuLcd=dr1!Q5I% 8iJcS_HD?fĐܻJ%_;kd|N}M= 8n& c u+e U9KQ^ids,G_)=^OӎIRdD2awx[fj %8ia\{uՒomit݂3QF,>SZa670ˣͲeXGtP|]`5ac9Iǻ^\s8&V9^}o?/>y/;%o,ec;2NOhh"0Wsz\=¬1ENMUF|rV s,f3<##όaZ+pI3 0S@ T"@Ӵt]j$&@uB`db3)If%XoH R8(2kJq( C桷g}#ИY ]P% gZ#Eb X=?!"LEs!Bn*e3YɥkS&mӇX|ZHVÆe&YCTX )= R9=I+sNBojx,)qppBhfhune}sε\/6%YŠIA!8/(BQ)V l lG رqu}I.}֚s}<9府jO*S֜s9yV?M֯/gxo}!:c)0v}kWXKܚL\\AX.6p@''tCd sş.Tn%{C͘Dr]]%׺#cgp<~o9sC*7&1pqx/Q{yO_uڷq|a~f~O߆~]9@jHPtSFE)g#i8 r9[O-#سvǽ[[rnsOO?}OnEDD>rAVAh@^PƳWE \{+(,d֌'J+*ap5*67ޚ$5mfM MkWol\Gހ R1&rq^RRGq'DqbPJlD؞2T2isN\(:קiF;XX  os,@ʦ*FCDnr䌓3LPQ Ṵ1vcأ 3@ٶcfP5pƌqcL/zmZ"LŘr ʖFF-'5iDTRKLS%_ Q 9F XhDfo(o:.(ZWS̰]~{VK>:Ue=Ml?|]wgS>#7"1|cCaj cjySnȬcjܸq۷=Os0pwd#b4FN-듗گYu=1.2;n37Ù4fZ(-P\R )Sh* Ĕy,rOn\9wRB5 AQFOG.|o-He3NO#yI|g[f´Qdu$X$Un` ,WޏsL-)Qgăm"U GJ0)Y]3.QXpZ6G>>N:)%$eͽ]as"Yeiԩ2MW#'G5)ӀbXl7SXTDȵIjm2DHDx ͥTiR@Ǟ^zR䚙[6g*!T.ĖhB́qL qnD8ФQS-vřO5%vYK &Z@#[Ҡy CoɥBƈ;gۉ:c'  e :MtDzWtQăѪZ)k@kkE:@@{7pz&&3<{yO> u}rξ3{@؜:Wr;ԥjaE[SgSVG+7}Gǧ>6rb ٹ>x6v6bˈ ];˰qrKͬFٞV&bTD>NN8̢͑| /C^ۉ7s }v eF#dJMܿK"ssnUSJD"`:8v+@ Rh`Ƹ1vt٭=YZR}q'Hwt}$BHHTwJ.\+WZX~/' <̜bW1vbA$٦,}[Զ~CG Hp]s_!a*86MaVf6OP!tE7PI:zIjͪQJE;Xm߫>b&܏0̟eTb0c򌋡1Y{hh:nNfZy`ScTAӲy;3e ߙ_= 0sj1YR,bOU|ys WtiڰY+-cJ 8"J$)^K$Lܪ>nioϻ{[H3nT6spq8 .ܙJ(NΉ;U[u7]׹q-͹VXV-)N_O3b*DZ&j X5n}έ@Siνx?#Oyq`Mz 0;|:~mJ}K<&VGRق@J6XF`ē|fW\@KDv`_ccܳ.l7tفQs.sc'2֊;mߥamߘK`.벾 &$8 s؜&_:ݢ2\j`Ksq)t1-+ׄC@ׄgy=,PK]s$OqʌYp9X*Ѐ( Yn/-2m!@I!tn1TCs'Jdszbd3r)hGL&eKTY Օ% Rke0Ee-?wrMxZɊs|rtY\~HH(6(蹁YDh9B@c tRF+-emB( ͌*F8UJwSq<&dIEhb2JȔqdݢIȢhcBj!"% }LJ>G?~jf L9y@ko;)JK֋1B.$I;T7I5W,qJK@iNesCBt+&zFŘs5ˬV5s码]Ÿ y|3i%3u!yG D(ЧJ`ʕ5\µ_Ĵ (Ylb*:5d$Ҁ9 Dmvd6Eɍ3O0S7kv,iʣ0ndb <?flOLaǴ'28"Ud҅w}7zDď{Gm`Ӧg{ ^T֧`&{pyɅOM:7B7v(#^rr'aրq ȴq&B #nI24釯zZpQ34͘94;]󞿶1;Qy@'ȃ qݰ{z.˺˺'R#Hemȉ(*˃гZꪑ[C W W:JW2n\bo//Hr[eʙrʶ [,rL R1S#W=5&tOBZT.[ۑ!%E>)#Ӕɥ`ň j1 ` AO՜qlטWN-73^JK=[KbLБǑE1ԑ*\[癛/K4CZUe2lri2P#**N($!3X?c*AՀSLr55F@MRshQDJHu!B .7N#c1Ĕ PQ`&i琫Rd`|?|7OHCr) =Kjm%d-F/R/LyKU*R*R ^ fǘ~ +HL-,K< uS4i$2???}8&ͷ/qUWLg[*ҥyKw&@; ;wWzBml4_~}|_ck jy 0Sbeq4rx3sl:O 4VVYOgw#̴G$0͉xX~ x= /\v&Q̾·<`.\WU  tCOəZ ^{ g֞jQW#j"қa1z~MiϦb7"kX˺oh ۶2/"ZrGgw7Q+Bt̰8e;_VXUH# 0X^/tK”'yKJ@mW?uwkX$(Ht|ݱ@? 69Wf:tɡ5^z]T IDAT]hDMJe;VN϶839/Y<Vç0c0K%6c?+w,ߴ^Ol7qKSXsK.ؙ L{g̍SZ4CԴRg9U{B[PBkj.@S5i+nRRܘH8aBj ,2͸e3NnK,K$H3Y&P+Ŭi`bZSh.R i-N;jM7Mf'22ьɍU%>>.M3h.i3lNRUF"C@%4Hd:ͫϛ|2! E!1mTyMM |D6y.`*~ ,]e]e:kb}; vvJ'0؁Ys&6̍3ݐTZԜ1OTRƴCrbé)y221< CK˹ f/bЮ0z;"C`9,mRmbޯ_lr>eK _ڞ5 |tV78$$)J t[zխ[<˿o67J o+SZ@!:lVE{qZYKkIz!uYPlnh:M^9m3R04)W:\\oe1 jR*ӔqTJmv χAAjQl֙{/=[xK C@IBc^7V._]R9oK`.벾D-ӌ]pWt<b(QD턻7pz'px߫358m~Dq7CZRPxi5W$ R2wtjxv Q8؜$vS36GҞiXz4H͌nKk9i[WnYIl|.I/:o7iA#g'=qt"IT-QC-imnKN Ks (5j,dLXT lf Ԝd͈+gKE!T)gG}OªA~0' c"h$ x6)@B1X.)p8t\_".RyK\l|ӿϷ}|O>QDs+yä̉]lJù fb}6)U|2kɽ{qV1rZoH}GHi w!ج&gZ#\k,&Q>^9;Lc-^{_*]*nh^mu[5fT鏶^0=*KJnt# ¸چdIɯf^ `ٰW{W>=f;g9Cq%6l-e{6o^+{n#CR}JrgY|Eb<x/J/˺˺'l@8 %eP;6kMQ";Fdq-i3BuFIP5%T\*1)ɩelJ ̌zҜT؄Kk`Ke,19g*g+^xs4vaC X<1"5 Fqh k<Śn/7V0oG>.NO7!DڀݜJt/&ҰƫDQ Qu"*1 *m^͐-3_@+pƱ6 }M K2y"v"4% b`Z >a<9ebed *M^') } ,aH Ʒ~/߻?U9ێk $֤_&sl ޭ;  `+c[֌fu/)hkI-rwRi:Bd6 oր%.9?afKw&[dM#JN;@֖쇣rtD c,z 2]kҒ.Yߏ=mo9H{^HCbSs䌾"f[䢷"$9;J3X&(!k3bYBegG$1X,}HhX㾗ؠQtaA҉pV74CS/Oh..Z8D'Lh2\1/ʎ ƴQƓta)S'<4e&&IXVNn ԚM K_u.^ct}7|I9gͬE~!͆f^~r`:sD. ~iRq/s >`;] fmmw .eqr.벾_>'*ؼn8rŎ{_ LX/P;]%@dj3ZNNHQgoGBkYv=AlJҍ?d(F!=݂U41H"Ł+clY¶Sm`N1g'(:1yX*懚Q.$)8a(,]/'D4fSk[fUa%s0sT'?y_w_ͿF+Ƿ=vV]gZD)%bMb6'cGP4ma'fKK0MF-FPa脘`"!$4 Sc}VAάq\!~w"Z%B/]<l`ZGVLV8fyu$v г~؋Eχ>>~> $@ 38P vic9SFl-PSE,Y%Ɋ:u3T3#曋;8w>Amt1@R/ʯt Gbg;⸼(}3kFƹd,]DWy ˺}>Yf'?HS8#7$I;?0A0o B۴ щIQثxm޲:X 2S(+fT EדB`]tL0*XQ0Q1DbPU㴌 KkcJv%GdtÚwwWdIǍVL˼ybU\AmW e}?+|~g{OfOušq8|O9#RHԌK9Iv)ETccuX혛a7PB ê &L)9# )0 Y-bLX\*lB=0MUO2CüK b$=`X.zep| 3'@Ze^DiA4hGg$M*:J̻0װQycQ6`}ޙsj̷p[.XF4Vܹ1fS"!)0yWz>dg-]N(9Sr3;)Rⵢ,R[':C hKbPKfXqxvͣWlO7Nͳγa^)p5h) GKrkO'xvQ(Ǜ_+jF̌f;sTם{sk﻾F# ID߄6B("ib3ND ^2մ&51()YJ6QF?' U2& ĉ@ж[O&.q ,/GB&j:0ErsP)IJ܏-`%T9(JQO3ݛ~M4DR g+ eU}+-Ľvø͙NwcVdɰ"4m^ಱ8*P1pxIhT엽!+:KT3ـ ]S{PH-;[5(XC(pQS0xBzJ׭Z3l'sS˵1.۳ʒtRU f7X7RHĐoJ<!rAůCDH<:˜1@jM.-ZbRx5-b `D1.-2I傩)V5H 'ˎ#KIZ3 SwB0fEy/e"~V7*&O *=gϣYE692;_- XmA ViOWf7c%O~n'ÎtOL1k4Sm|𶷽i<"`!BfqixJAQDžigPH(n* FnmcZ Kej8_ʴ]!#b`\ð)>Y/=+>Tl IDATn Gt@4yR]vlU1x3^M~~ؖ # ~"ޤe#sMF2)W9g'g]hچոe]6% .$D-xl1)5iXe5Hɓ* M1r2'5rMA ӹnr \ 5J4-0E>!̔G+a&ZlT>N^~>׿mcmB!ZllRmI%Cm iz2|*)ڄlEyh)JإoK^ͪP DIArfp᱇e)ZjeNΌ&h@ Qm :BN {'6HgJe"@7JQBMU>ZᲓEʆ`nKw]nɓaBR?I@l y1ۺ9%1E? GXn /gMjg,E=ŚbvA*<-&9Xz1l܏؏zdp酈B# 5#qN&.X4=]hM aSUIHTRl1hm:TVQM"\B!%gvTcA ĨH0(&lNV{_*0 4asw LK./"0 #Ӕ݇m& m`P&e88hD#PrqUXtvMCt좜]6'B5MgPm$TfDZ٤5Y03 DCTWUoBTܴM7]>g͹`&4(C9nд CK*SȠdrzI1t4m"(!Bho4 ]d8 dԢ$G_ӇF5;w}_7492 bBL)SfkٵiGzbA+Sc$"bرMpcY$RVij,O0 ^)?8՗/b.$}:djd>2eT  p/xi c?fP9]hO $9zT 1" jU/nA$1eXPRrV'jmдO0?Q Cj8f6R3P!&bR܀tr0I/b|h4F,etucxԌ)+SQOrJhvU3zt{j]D uX04R]m_/~;~ ~ކ-lUi W\qx_bv(4Mԙ@9##5~pH Ą阶q1*ۍR]rs.yj~Kpr&RY0AhhSCNW$?y4 ,RDƊg@tpGTJ fVHR kIݨe!~;q͞ +Lcgʪ9I|,T]HarDR`~l؁.Z]lDhiKИDaJS꠮)d\mbQ ZDG%BߵtKR czyIyyV5]\KWxo=N1؅G9 #wyӏ̝g>r/wY^Y$=ҊEBy58 90Tݓ*Q\ܬ4(eysqE^W7w+h4m9ܲ<HcP"F!.4 (KږʊJH p8TZjqyA%P<T$if<}R9{,$ɄvNUz>{`i?c?w-ᒀ౦٘%>䲭KCIlz2 PDӱbtYFPfIɍWہ0qry%1)EUY(%7R i "FB9L-#f<*#8s҉zҢ9ye2 D , IlP/da$p02E_ە#Gz>v,wLi2얹bOqO #Oj Dwx׿Oۏ؏xQ pKB'e20hI$6:ԓB@k~*CMmM9x2E9lYM##TJ@L%c@K&%i:?%rHDEИ 0Zzæ(B$&%Ҫl)z h[ѽ(P4#!hͩ7V=||-oۿOrr^L~\*qpQiFԒ,; 'W`X eJyUy319`A4R[kخ<eJ)4i nߊO^IH lntyrU0;@gGڣЌfAr.-*2Li2mG' t^zB+Npgnu'}k'eܥ?=t;ov ~~@Tb&C :9cZX,5MtS(dBL&;zwI)XjܷjPڎ 9Ͱ٠P"(MrKQJ54p1D1UD3$R MpCq`fSWuo*1q7ZcWDJR˃*@~]C-o~9o}3?0>fn4B)D t ub`sCY f Imbiĵ"{)շL\{LF)—|/r0_ƵҴpphT>@5ݭ2fg@WU$aF.<˄@cpÙfY8>Qn ]p{67Ir6\$cM!]Ӱh͂Kgl.kD*BOd) IL`FBXZD J& XGɥPT)elc0P)YXtjk>Ǩ=>p>tY ljg_|?{^n 㩃r&kd e lntdeF#FXܐ6 :z1'iVƘ֑|:'!OUzq_5_O@ݣmݿ-4BFݴ_15t @CȹC:z®*A(óvBLx+s=wt7 /?v{P^`#-_p=C ذh{f,"}҆H3 DUMMlS "y TXo'7z+M\@T*Cf?\&EٔF93\)Řtb3]PP۵糱'Hm<+ L1,[2N\l{?÷w#pkI"O`}2-aX"s̍,7"Z>v>ԨٌgPXLvsc$ Y}/ H / )$ ӄi`Lb6vR 6ɼa,.-%/!Ġn+¦E1Ikjp_g)OH*PqZ ٱg|R֓2HYڵL)` ѐzKJes\$+{UF{d"tmh3lO)BWV$Z$t4uaEj~j:7Q9ʾx&Ś^;%)³Wv On,=]j+!`V$Xȟ%@܇` _V@` ٛ$IHYk$*1A@IOJ5jT201N.[NJvIYy %7K)g7$^v]Aױ&T}1i$ƀrvcxаj[eGsjŕē&F䄐Zb2& {6蝜Fwoxû?|[%av07z0+@B.3˨IOZ(-@vnM5_ۼM$P`\\|@o] BSł0L)>sFfadrVT,(SA:RV3*k)@J:O 47*+)c*E&yƣPt8;Oە 2z:M5E:+KVb\l01N mڴfNƁ:"*;ڲCحUڎlO 5=2fJ6888`̔3! eiq0:\ -Kw]^ULï{Ǒ=ymFNPvj ]cqr倨,%m8@iE^dZwhq< )nXdA+PF}[ .,` g< ʸ2 \ͺmo;F"h6t~m9 .ՌwƞgVS 6E<<%ҝQ`Ö8Uۖv2ـDݒ!"Mh11a`X{jb$I$I%Щ Casf(E !2j;rcz^q2ڞ1[H2ؚQ \;~׮_µ`3q^ǿvN9<0q_;'ۉ8<#k%yJ+ }'Bh <6' ͂\RǞ|y |P9܏ h#飑k CJuc[rOKn6&ghaydí(%;Z䉀joJLB}=z8)kiR}7b7swuٝXi f5A\QʖaMS'jPI]OІ@ "{g|O*WY?+Om).$!쁥gB>=^؏zUPT9T8_I1ll[xci3Mv`'ɛ);PLȅ  fHpO̒P#?s2Rׁܼ*1#՝.4m-M IDATcODhS* 3/.tGZ⳯/7 %@D Bh塯dW~< oЇ[/o)w*/~9^_QV0k6z)V Q\2 u }y+4mH%{dCbF'G Q"IZHhN8z偦+(tHD.F 5x$[@tO6?Bqfl??t\2B:^{pe+]r,aHϞ FC8!1MO#F",׼?c|{pE6}7Xzs,<3'~ T(pr@fbXo\&(jG0LK,mReX5orq]U~JFI)%SJ9*"ǃ\4 2\x:ҦF~Mˤ19aFhRtY^ ڨݢ{eU>x};~Ok$i CxŎVq^(+~%1$3 zb}T 6 cmRpsڔK+4!ׯ4T5`L!`qe4Jv^e@JJL%sV%`Tby7Lt*W #"ȫܼ}^kd$HX&B떼^^~~]uM쁗roDod"&eL,Bb:.^"u=%Ff\<:mP& }˥Erђ,n݂K{o>ĸhcpwO_Ut]{:/ U9Z엛m NBvLC__$,\@V,9-H2*B$ĞkI_ig:ds],';ڹAbh16)/s?)_ZwK{ 8|ukBƈp .9vOgXi!DP O.|}҅O=VVD}z˞"Dn ~J޼i/2v3tK¦͵dڏ]Uyorpt᥯hYސ0Z`*46[B@G>ΤfZQ"}pYmHAKYH^Y(;gdkCS;hѦ7{;vHλζ\?a&T./Z6loZJ)5#}U G}Vvf iK=`9$T`>}u'}g7E0g7[y衖oW3ʑ3 4Bi%6.(MC g'ksq\\?j-ԐBJq@; Vm 1s IBl WւͺE 2 8SkRNhb0"fBFB7*`1ؖW)<4 R:#[9.a9w=fy2ȅaY6:"b3k+)EWL:F 97|$~NЇWMpv%7~||oM5vV΄UL owQ(5B#KZ :°&ң(!i%S u"˖HƢLLG/ٲ9 HL :Uv ڸ7"C8͈mqi <uO0hC|YДIh)TzzRHtvu2߰MG+/CSu$f#^sV݌!쁥gqDƋqm /Py9(p'e}bL끥$ؠuGJ&A@S*)z"H<Q$(%WrǟB}/%䧅ԢˬPT*v:ZX*`Y\hsaʨ &Qo s#v,L%ٟ-lN:NO:^lz-OS_|#|xWQʞ W|>AnYQ 9R^n BilŴU-^"n-#-q֤ȹ=l-pm >f۪5<,Ji_c0#ƚf)B#ΖJ fNʖNW6y̆pORۓFG9>:#S%6Ʌfk[0S`d1,cF2yKcG>|#+>ІUI)v'DW7y ժy_ZKZy塩ߏ'0mnK& YF%w$` L ]8bv1R-E#ф{D %@{8⫾?z&LhhV2;'ǒ]1z -i*.KQb!?CYa"` umﮖ=x,V!^z=~|J'RicDLR.+OK/[#@1 #qdrw/5 2qQXbJ _bb;eTaHl< ĀeS&\Y.b񦮘kfNz0lRO:<5e/Iz+]0.@0!P,;C&2B:f#o"B ,d>RfR}½0 IqBDU}=_i]g|7$A(^پ<72ٟ AyEy-bT^⫾}|w|!<:5œ:&g')bd;>Cr{\FMXD=,Vv?TEh49+}H4rvd$Pjs؅c}j<{"8@D %by*Pe؞_Mb"l1|!ngG/;8o E/s_)mFR6ltKLl&MٖDq/n~zޜˏ˿<~:yͫo9y>Lϧ}z(1JX#"õcʺ.1)Ԅ͔ !HaMȢMLkKNX@vi( F Sc P01^?zxetMv[^{a2M.we}cՈCIf99ά;n)[ON|I'Z4 2Gb+(Gsvݏ+ 5f="=ϛqR7p m?c?@fKcqаLYBhI@(L Z2VJMLq,]s䜪bhRzNrNں U%N1awJu=8o 8!W t~Jd=b&:l]R";Ze9'qcR=ο{o_&?Ãk쫳;9nho~Wַ~΋zo|Osğs_ի'gP:;4f.oIMƊApM3)E.4cǚ],#DI3r1gw̐R1!ʞRfi>w  j]Dwx:ڑ ٞENnIэ`fV9#(eO"}P֕^rڍ6&N! 6 gtBJSGaP}&6Ӏ%$Q21rіG \prflJVY%pwgo kr|S| SΧAΙBm 1-􋎔|slc#[&HXkbu9j:m}KㆀL'~wT́֗~!_ɟ+^qZK#tk621PO]2T޻ȅHky 4а%v-|8˳4*3uݥi"/񀿎XX\^#1b^)m%nC@vMiz큥g<;[/Ew}#;/u!#KItKF0Zq&7Tu`i%KvhBXO{;%?T9jTf$fk3 fHrץ4Rj]%5/,7}lf՘L)6(OoR$*7Jё_r8\6xR&ݕd{hOg;oU/4_|? lW=\fP_i1N&!Mdwg|W~w]K7]Q.лP5R[ 61{ fMlv>HKTh:w$`H*CYe&z'|m?Oܛ.t (#2E]֯Շ..s0>6sJem^!(m@۱ƚV)bXH"h kS@u=k-) ŅZvw*I݊<}b3Hgo{b,=C2z'!܏؏ .Ʌ60ͧ䩠R.,ML@ٌHQf1V 5MFV +xsdD0%O5D %Pʹ_48 H&bͩpƪn;:EQjs]!'#J٥i)^87еQMᖬF7R$ !H687N\HaEdg|5&$bFRp'aHhCAsa5C$%Jo/?7<5װs 1u_nsx(ǚ ]5+LpKLJ1R* f@loH3Į$[d׶gFOKӣ5L2ǝn9iίcH\a=ٞ],mD"!F~p? ޯo.*Mz7FCb PtAv+[ZssXr-X0KD?0C;7tMtdn(ӚlB]q0%2d_<~?yoLJ.o72HD"\*V`&J~6%ECD=%vDkӞ*'ׁyF#ql p◽S`]is{OIQѠ B%bj +%D oz6瑒:Qgb?lYj&vx3c17Vno䒨Ann=]29)//|˛;o) HgqHw Txuu#8WFen]1Sf pTQi >qE!§|;tvk9`1B-|OB4R0KseJ/ӡXݾ5G%O՘V#H}̈́;FA-\Z䞓&`-J\0]WoՀT.1RgP~Xu9=V*&Uhlޤrucy(kmCJ1Mo32(2MOJ{G}-w2A։(UyfvW!Di^$f-)45O=puOR܀mrHy'8'CE!Ό)s悅C"E1Ti,F[J([͞.{7GCR*_!UG #f"▛'vgt#8#,=ٱ݌- Ť= u6M[淘yJ[Ę&?$A %/ Hg_>f"}bX );LbC̦4ƭƎa0n'.!.`(% nQ v!.u04(It> :;p|Q)t:bvY%˥ꚝi@~fVOULABEc&D*ԬsV,W$H^;ЈDfuig˽ñ>/}bEJJ)p#tcE;Q]UDN9gdz!{EB<)b-yO#OHG!"EY.ZǤ%!-qiox^Fnz+W<#"d4و>fʸ'+i}9<7oϋ| xg~ejG 1=c7~f\<^-ci5۠7*hc BYJ3ΝG)0{4Kù1.fy0'wf$$\)Rd9itmGEQSG7rqƀkb[IizHI# @)4u LD.No.qw9OgO>1pIe/Kuo{cO`?y`rMVST 86%RDKZ($2S5E"U't+lf,?Gy7fx0`tI?7_LطGcD)Y;k<ĥ&$y2yA ~PIOUj4.hW]uЂ %8[BȈ)5um粹\ʂ21ܓ)P1"&{޻}{6u1vl ekͷqأ^!C,XzQ@N~qsq0B9~!P2i}48}k& fce6>ZꛨKQPT3yZS+{Ɋ]Z"4膹!{*5ibgHqi6P"HSY gm v7rKf_ER<@9cJ*ChTB.F4+;S"g7"cVAT=~Fڢ@nzq>}ӿw?%_vz-쟿_z^_~|{!AZR;.紷U)g<}T&+V#6PMMªƎbT6VuOBzJ9=hJɌR<`;598V}٣_Ecd7MrwwAu1;RÖh+ź`VY?X=|~7 _ʠU쥍}@UvF\A|H i٣eA>Ӎ"Ff(J?TDE6Pf0fhk~wRsFʆ'5{\P>PZFel y!y2V Zi1 T,fyy 9Ggl6^lI3T'f4Fb[J()t]N"'i"؟s @p?OBWSUBt}:ߗgC#tcŸCc^%0"T::BPqx8)Tbƍ jٱ[^ Jd[2\D5%iX5rFՇB Fɴ>f@稙vKP$40r?,UScwƐ6O1 Tkk+$Z#37BmSLmJG 3XO?||S^RRGc g`uncke{( )t Awbe|k-z՚<v^._x_z+y;~~OٟA>s3?O;uO?qgPG05_6qD75sawLEn\@npٚNK!lGKpsZqo3mꍪavisYWu6Clv%)BT%.9='Y0 ʠ?m. k&nBrID)9AH9 ̜mzrVÖ?0YzaW*ۜ2QOd[&7C]Ͻaa4 ?iKBJ1vWRwuRV j$Jz $W/O~? nbtk݌bH-T;5uU(iF -vժR.QA%yx@#bf1&yAq9%TT10-$e&gOY @R =u쨦-k[bߤ%y}MH(i$/̙࣪q5b`X,:nܘx> 2z%ukn׸)<|8~%鵑-?tÏ\wyիnOUrIfh^f<YW/0)*ȴ % x \ )5HRш!ȣ2Ȱ:cqmî.ɻvn9[32#?@UjQ)Փ0UOH *Ad$Z{feAe@= PWDfX O-Ŏߴh:VoeG)ܱucqO(c512Rsft +e/?S^x8]tX׳<6LȖGsCr" fJ-Z2еټܥl{%h^gP>kg(6'KQ܏ tJNF%D!t1YMyxԯo 5SqΚJK\6/Z䌌AMR1JNJD3ҝL#%O 3!ތn3ӷ l|$tq)}ΙYyRM an(fVƵ;0W+g[TC1Ď0N:avd3*Ya˔ؖX O|))Q#A2|n?E~'~/t GTyΦXfy$%o;@I#V={'hZV_ȝCvOG1k7_Ÿ)ۿ[OݦRWH88Ό *t1bdL>9΃ 6xk}cw^kET-5;3=ArtCkV7!1mL%Z_fRnWJSB!.@qvf$kН&;̙E6PѨtaGCv˻"C(ق9Rr@i 3nODE6xњRZEH(JZ-yߠ:35_6;+rrHyjqj6o6QSbD柄u:8atnxj`] YA٥(g_AYoLwӆӖv;+iEo.~x?_z.Y{Zc-1Нei\^.D|Uj%t/qy2q@.˖f[y×>ֻ@I-U`ӧaC'TCEQ.91U%{&B =OuLkEy%I`G⚪jvaC+eI\ O BPP;[R{7 R+hH,n$OȝVN^XpFv_PSߋ@Ī1ȴ5jޢB\%PjL:j=9ҩR˂C/4P슗apV@yw'^Kcm!ؔ|>_"yuchC"% %;SI{qG@^B CbAH-ƔG[Q/WRf\mJ5 (^o`݈͛ԛ GB}=v@uͳI$M}+To}Z/F׹I[y Qå%o˞_\ vRf5zQoP,Pj9|qN 󭲗Rs/9AݫV*]*\\tИ:fX_tt͑j+BJFX[' nXJKTbf*8MqֵJ}\0kvi95KZbdKb6VvRm'[bWY.70SF%&WI0w̎1'v9+id3=맗4)qjn]^no=slmOXԵ^@a)xZPܨ- +\DLj&v,Pze^RJS_J >o?Ou];nD{+Z - V?Ub\+; y|AZCͲ_r#FL2kJi30mz6J1}j}Y&o;Nb8Z7SDFTV;lYYU9O5bPZ Ι_D?Ӻk; ێ2 \cagOM ; F@Ýd/V `goX:ֱ7BIG>n-Mvxؽqw+x%7OnKD)ԆLl/ώmo6sR1՛7mmͳvc9UBF!I)M͇ERٓyioVR.ʹ3rrұSg5xXFnl.ƤSeЋR_cð:MFJm-3+S.so$g_w\(9SJ%T‰_X'qZ]Jod wTf(ٱ9 -vꆃ?9e 1:*}pm)afC-%˅85u7k&(\+y92f?tnj˖.쇈ܵ"RV Ȳ,9aTRi+Lq/řУ(hi34Qsr%v̀KDV#Em-\Ndn;/s؏z~G'4eDwny%d+%duKh!*{E50Ѕ8$Ef.[=D뾂ocOށfGHa08 H%^.""]lG@͑4$4VôbW++%҅ ݁[C%ĀĘP-{KՊKFSd{[[AT T 0$4i6=ˁ*C:r@aBC_>CXA:%3\)ttqx&eT]g$e՘@ TNFƝض?Tĩ%)V1;ydz𾷞´ݶC}?UG`X:'qo<6"bhLibYp/\R-SJ&ek͉,3x썳k+~ j)y{O푨PQN1sc!je_nb4H&vNK*LեzboPR<}F/"dps}*L >ƀ("-ݮ桵0r̀Mj]ILrXqګHt*m{F X 0Mh5&wYɔuds$huҀh3cJ#C =9#]G ".,\u%1F}=oGJ\ "B6ލ?,qy5ꟙ:IcF1S'kACauyXRWNOfԠI\OKze! hǶdTV}Omu`]]p穞gj{>z}7]o}?y|CT r,+! 64P 1!UH`ɞI*ȍ $Yuji{}cXSGQ f֗ksrmQ~]<2'n!vMl9$-^a1bX3u8Y@ppeChB^C?-A%tsĜlPk>$󦬪Ԛ%5\+S5CAeo"Y^s`I[jmkԩ/@N<-yDz-L;$fzܼ1W<5iWɨ5` Ftu]]94Qc}|$L)´ڍbgoJ'4M.?]p-95%%G hRd0z5 1UaWРx:PYAСA?gf睗njDX=AB[ Cqαy IDAT2XtF&iY C)94,BSb<<\Nw k%=Cq7}#kM_%?Υ/sPHb"Ą' BL x&Y|~_wt'/$*i3`5Icr=Mvƣ4 m)0NdQtLD`[D35PEC@N_$Vg;6:EZȝ~wap1u?'Dl=ܬPR笡恧Ғ&],reCB)8l'R: ulGwm RA EHBJO=y1m".Rs:6)seKgQ6|[7L3JZ,ڼ;x~+ь=^*?c 5txɑ[Vƻ~ͭ'`  +k.ohT50o[l5,l&EEI<ڶM7gsc*x7k L5RrB80 !E L)Ҕ.cLt]&>9Gk, Uz͊ty<5МHkJPa8D`Pٜw{Ɲpщ~ -7^!\:aU7X$I'ޓ[jG\U9{[`ہY1kDwa8]mŖJ $Z\j1fKakƮˆ]wƴ ԲdwI[`U[T? =@슙lD]%=ͣp+ , VOŁ<>L/YzVO~3rcgץO Vt]|K+ fg`,3H̠Mr7W{LqWC!DRۦ֓sAdf:i LIfEq?'K"6"Rxi6ŋT  UQH;Fsi|VI&y\qFTk$3%@BLpSQ.n#}BT$dbۢ@\HIbA"ptt?g7o{it_G8Y7XM'ƂD'4v_gH@-]R麎5J%MS;D*Ok9yRH|`^lVF T32d5)u.@{?DZƉ2 H"D" nBEbTD;(R aJc\ș؍Z]cH \T8\>M=ıS?׿?|_0ގ"m>Y$ggh4*z`\d.1Sj-)_?Ǜ~g,(]%30#XhQnx%nFy*sXlL\P ێ4)ݰúE1sejW pbw@uHȄICW3_MC?џL=v'qGe DS4BUe 9Pv=9d44&F thH-'73KVT#jbhxjV- .QB&SQ [,Ӫ'kOPΜ/`9G`X:ֱAODZKT$ig1O3WS@fTrM߄/Il>N>IhDhԘKAKT=7VhhΎ:TA;X *ҼҞ$ g {@ʵl]n9K Xn T@E>l*A-a·Lʙ~ou6;3r 5J M7if_q[O`@! t_'$ˤ &R@jU)c& J-] 3jɌS臞 9)QdHxREBQp65594c{!*ڮmb(Z70]eQ]#łE2yɒnA-Nh#uLydِK"Hd7)O]YKfKaWF]<(Tcg#wwَJ=~DWwM>!ݠ*]i'|A2Z=3tGky~M~ϝ09 y7-RQNFƻSD&e2$ i9}n&JIZ闐!TA534t( J1$QI[_W|%ک8y;JY=eySW:gN^O>AN@ y 12Q9#Ɖ3F&یs#Dw:k U:î%곑ݞiHe<(jՍ S*d+<= [uwG`qyuctGN.Q+Z-aͅ J;Ҕhnnt!z9}nJHT::Xp *P!4shbZ~6K8ZI̬;}@]L\[i"X(%MW[,xe*0LyҢ ŘLG :%2: A4Q 8J܌S7,j d:rNt-z]/{w:m[z9ool%E.rq[r<۠Ig:' 戸g:ŘrS)Gٌ`Lۮ\A}V=Y,L*Udg'U Mڂc):X@X*S)L5cy2t=~jtb t] W^4nَ[v! %T⒳ X0&Y b]f-M~bﳚ~7y{?s7~X4VԷ\pSNn&L&7vɧ?{ Ly!钲.RsFRq܃OT3j4NleA"be_ln/1[- Z ˊБ7= 5R"pKU(O*'7\CJf]t{]wX0s',(V#iT.QJQiLGAHatbw BXmY'XIwqF*겥͹4_i+Ϯ&ЊF_f$}⁍>LNOGT\)\^LS)jYy~`-]BIB- X1)^1I,'giCc뾼LA~G&n>2lǓϼIJ$mL٭(Ś,OIKc{`۶7ƜsOs}$bTMrJR);IB88 l¡Dc0.821R"l'P'@ѫy=f90{tuŻsk5טoX T433P\jd?-qPy/zx-r#XTf5}z‹܎ϞSf m׊4RKPQ^hVSfg{L;Dz""sw9,)by4FOVL|N M Ptn`)͑#j]QEX?`͛WT8 ]KʐDVЀT׶ !ۜZkKuTAC'OR$4\Te-Ag lX;d#hc;,Rx!׶QR lwpՌlMCujmr@ %XS݈1bJ̓ͬPD13jJ&9W_xכ5ϛOzMXppiү'rKc=5 ΍s>Uwz=/5 L 1`qk h 1Be*Fc\Zz]hX9'&" A@ 6}QZn;R MLyGYXUy0^DԶ7>։_Zox)eC9اvBwPy[xV֮<{W6K/8[#uQOMky ) /^+Jj~0`l(5+<í%gxfRz%ay:Rɍyn"]'5_vS$gyv"xĶvׂĂD#prv ;1ۚA*R TTp44l6+}IgC.u*ef۬Oykz)#,jJ {M7~$y@ASڀSکNuHk D{qŅPv۩u_292&UI}"oތ#S! M\ '>p|G~I^J]6a=aը{?XҎ@ǩAnJF@C J-U.\<3M` PHГz7s uYTp%R*O? _f~ֽ#^=~q\}s+0GLaiK|anݬ eX6y^FzSvz .7ФdvC_s9Wp{NW2Z^"n&]/ʘ#K#bs#h$ 0$bWj q;[뱳m sSmo, ha$5lu X<=mRSARFD.P@-p(~`k,T:G&_~?\2OF(D@(w 0:Z|z˥}},H#sq{J A{kf)9h/h/vIz8eߤa9iE.Հxzxg7i_Zl18!&BZ9/@f֘5\ dE?\Q(9kd<|)pk7k;i:o?ho-{~upn]bB }5JZzrPQ-0j uJ(hL<Bm!*DOC&Ё=x5SLJ'(d] mm ,J)lJƸ!lddc9 )}tLWʘy':xF~ 9Xm{+77@;~aBgf'is}ݾ´yNݜ 4to~HB KklNypsջ%< S/qzIlAf;.SKi"+TH 3![z :cL;PM{ұ!hxS#Ɖ0pWvׁ:&-wΰh 9w&~Q~^arS#}kX;xwkUN#uA:>?g7n`Tg@zWC^If6锆F!sޘL ޝ̚.[{ JyTCuv$`lݲg׏ !6O)ftI*!`11<]X$ G0^+SSS7.xs#ȓNCJKhr؜T3ri:EP \ D@آK IDATE66ĈPbmư!D6)޼I $QUׂBj .(,NPp;JOѽW#XFE;CjɈ ͏)TkCZXmޡ6:0mc3?6n=#_ɛ=\]ݜngqA: qW~'~r`ARPǂUk5Mnj-?fl*g$?}:9{f7وJ'+kp^m (!x JjEl(mClPf"ja6+᜙&ޤ !} [c{owHU{#^wa[ū#쫃@J ~T! {4Y <1,bO o(esq$hNT ؕ]ɕ$HeҢcji-mWm6̶nyrfBq$!A`wNm*\=wY%BA)ڮ2eN #oQ*e,xmR:ޥ@،S\,qIe-۫fsM Mi8N.#[$ IҒRkoq Y3~sw'`X KvhzD-wW,_=@QNX-_Û>Z ̀|#oB8'\T20\V rG^%vyJ2"d/ .85jSa{(,k͕IhZi.Rq@BjDt,aŰ1d7j^ DԍgR;w15ב<28u@ HTgvRʸhθA &R RHq$؎qy5^;"Ĕ67QdZPv +L̻tPk6FS<;Rq`E=|tSU[sR?u^Bdr<|=,P/WCUQҨ4!`s1l^o/5_wY@3OxQs>E&ܳj<ڙO݄1F!vJ[[\ϻenvS/I"Mwy6B-Ό'!* 3OIh6Mt$!nY7 {#r>*fvtpBŠ b`|[s%&U1@SL!CŽSI#`ىCD3@"AK!(Qc5Haܐ+T*ee~+RT8%STG̷mBI8R@sFD  Q0y ޸y"jRZ%Ԁ%؁֨p٤GVZ"K3. ʛb SƢ$F°D6+z݀| U*wkqaI)K:nT ] Ah󧫆o3ZC5g*ْy QXVNJ3˳jel[XDmi+lgm'+cDWZbfywGBugm*x7;?'`T:թ>HMM)> !ODk<;qlLfCKyv6Qs*LNǍF #_%Al0=txܽٷD'zbuOrj׍5E 紻wL7i{#mF\}RX%ˁ0 HvZ$.D&AUE8K a@%(d6 #S"ӫ F>5V XzwtNAK4)k 0=kuQ"h:r墎SKm w5b-V:Jbq֤Ә)"Y,R+:\M;[M%B`0qNKxaǽJYPYJ$6)4FbFq$"jlL)ٙtg >k>{&,>|E`hE}ct;mo3 A7I}#D[\}\b2,#1^UԚt AW{`ЍQ7c{[.1LCXYK[+H@%ULRP>;aPpm'w+^!h$>HO wmZ0c9C{jF!B%y >C7y-a6w*xl'62v*P }mkRRPpbf䉪4#RaqQ %hP+T*OOm2Ntb>ob|~eއ9OBNOaCj NLZIw2@:b,ό҈gK.aLbSbH0" f :dŽt[aJׯY;[1 ziyyHhe%, yxmȼ @!I' R^Z&Z*\UjvrD-շMZR€Fv[NԭaL'ޙ 6hcgv$KY^ps_d$@P#5~5??[!2G NҩNuS}uЧ0K}s/|"rEG qbښYu>)I%WJGҿnl gl­(=nvuХrMKqűq@DJiisnFTHX8Ki_^#Bjc7FyA!4`5"{C:j^&V406%O ! md/f |Af#i)(Pģ;pllH.bF M%af1N"׼KXO {n UvzjKUb-=Qbw:o$1.'~ږTTA8[ 6l$759g5$1pNe֛ &NTr9S$8U&Ϭ038JqȰg}X:?|7qo۾_}Vg䫿?Q~Wӡ {ԍS̖L1&׌j!ܞzAD14@-ku8 ~5gmdZprdNf f6QӾ7vSk3W@46fO"! 1[ >|h-_?BpȥyVw2 U'ofi)?0ƫ-adAjk,\.Y=`\3^EA-0yL!X)T:DZ;]۞W#qvvۖ 1m3ˡ PwCg ޻S:8t[,zM{X[G6V#qaDmZ+#>?Pj3H\+y zST? LyKc/3z% !$HG>EZȺ͊OmnOpdT==en={|/?SC>,<#/ek } ܛ@i>)HCX-H9#[2F:j6X1֙JAboV1rwgsYvE&1BPT[iAaIH0ݩ!nXL4D"N5o1˼̯TM"M걾`L6*Tve2%vF`a"*SeN4 mX_jc`P.hvϥy"Yw.+&`]bbkq(wk֤ŊR'`b _]w-V;U,bBSevMQIT KS<9±lnFUěw޿[5a~~*Uʛ9?/_Hnuiu⦴48b&08l/Sub HhLqsH.[1BIYWC$uugw[j]fUF|?49oj (fBʤEjHڟ#k$J{ʸY{ Mї!0; SWoHPCkfM3C85~!Fp(c 6W&j6rV;. ln`5WD@cP';@ LE`4F\F(j364ۧǟST衭zrUG?sg%;WBbCWǼQSp%"pۏ1A6ɗ~fxv=Vxk8KBգ),q-xjkx¬Y\"2S2oW۴V3ԚMn`&m. xSWR~TO7*4;P\6AGU",B RĨ=~%ZnLndMȓNҩ>kSM6*ZT ajrg14cyrfiN1ԖSZ:OR썤ϭ3$߯Qz9tSJ>[`M&uK n[灛~sew.S즑ZscCq"l`SbjѴ!S IH!bHm-rؘTznW!'ַ~ ? Ba׿u|<~tG ݛBvlYI e,!r9;ЋJfԊRs U0m[XZ"&@ޭZUpb˧"po9-%m6ڼ`M].%s( :SfXJ}64]gƩb]H2^Eȡ +㜭LZk2xko#'ԛ+GtP]"-ö˙>(9ހy(XU6:Q\!.rI5ʴ H<&!6#t%H = ;g%B(aPqAc57',tNXOkN'T90_w.xk/P"!Wȓ78)4#Z")#u/uoi/4jn0#M_P=*u]$e?e=H)$`S)̘jkn'u^RwK=1G4yZc 5IMʬPg'4S&XsNREgQܝDi,ٌfWUH* *jD3BP6?0t)'`53m&d**4ߨlhANa+sɃHL.7c> )QMGL]E^: B.-x9 jm]X7e*!XiiMaS.p瞱"'\, 5m6gRb^7?6U)Rd*Ӕe˦l`Ʋ=Z ,i#*@ݟ|}}l3,?S}? iY;<ݾOTڢwۉ_ +>S>_`&l7[ZQ~J-AjJYch~ͩfNx]큨(Ѥ xB&]Pl^9|OzzJ8wi8mѼ;{ESQ̽̚\࣡`tƄHc3!T?@7~qLX)HlFU Lmk\ rhawf!]))ˠNwwJ˘(.R{K^M}Yˌ$Ŵv\XpB `{Ϗ*=tHߛ}̩:N1v7S  $*50eeBX$X8NZj9gn3!. Rf 8:(Ɛ 6p?@HTEx7"zP%5݇#{qoA/'შOe_Ɖ/]nֆ;̞dՏ\p슐Lj!6zh@Hź=o~u(SBcDb󞋃4.3aMsFQJ@Ig,\*RPs)6EKV@,k_?jNE<4UfdG)=-/ FO;gXz2ɏF䥡53햌9P,P}@Y/@ ΉqLj(p۵VvJtnb2MZ!E2#Sf !GHS[]qih07+j;>i+MzBr0,br<4!׭Gg攈\_LA}86"h=~'pTo9mLJW~1/xk?_w3Q!Q< W  nz0#j m,$,;ƓbT-H{)Gqh KVaHT[F lo6oqGk:[zT5믧xe^kҚ,ޔa&!JH;+~mgI ښ3x? V ^{R*`2&D4l\pylPܬzKY Bq!ibejT_[/D%wv׫ny)UG|~)?SZ|}xe~ևǼXѾUo=DhS[o[_vؙ'6pN~@*7b6+21ĘHJ\9)gXڑ`qUxT>+}DmK*WC$, QH+I"z؀il0l5A䔩u$ à]Z1>M]҆Aè!-I`4jq)t,K Y5z ]ܫMTJBT_nIiɚ(ڞaI4\ ZmXur 9MM11挷ʼߣ}j%mTiTRä,V/Ox)=ҽ'ׄ^vVRgW85\i83N>͍R+)L'l^[6At`jUR u $DYTaŏl#d2Y1SZe7 O&C1SHtR=y2aw+HJ,yxhN+c{AHN󠤜I֔7zx&=ETEנŎר'7/|KSN뻾?];?G?l84B%Ϙ:n)@䔝[wwݳ_҄s Cs}qZ|xƽL! fɍD^y{|MXzjU:'Pă7O|6_9mNJEJ'@EYy-65q),WaSg'H v9ASehRZ/$=drRwS*g/>MY 5S0>zn\{P>+X~(of)Ư}7V>$Qݠio8Xr;ORÇGؗ0 B.3s?i͓n?Q*7QƔ*ڼ+ViIW竓F .b<J*q=jBX\q1ibș$27А 9/ rΉ[zueʉ$S:42_Pk3n偺4,uaH3{agĠ(8WNxV[z|CW6w'\zHMЬ<܂Qܨ[pWk % cjE5ĭK.XLrJa/B X4L$]AqRs+jIG'{.aܾYѴ5 [JaNF{H7}cQ<WG<7\Odu5>ɿ~՟#|_o?Oϼ"_!.g~oe ᏿߿/呗]oZxG#P*p'H7ĎluyxŠ v^X| %My;_ܤ{jmɵ&H1m5XhX v! 0#ryͿ]_ה=] #/nL\Rұ3]h\]_r;#g'[ə[i\ p5(67>|Lj\m`.sP{CI1$\:xILZiǢ=i%E3! 9)IVa.+Mh d`F{]i1&f CBޤT2  W丙7Jsj5$93sK=KMK)PYqc:=aJbb47URHcnZK\\ly–\KVCNR8b$Jjg4.7 CZ^Ð;;P$KK=UH~]&"Tt-$F$5 35wH]ƚHd>8)\zqwfLy`ҁ>HH`5'늕whv 37 dHKp/ LDABc)O~} ?;'ȏ_|}_:'_M^a.y?ʪ1a5pu>qqr~~SO/;y@=CM0m_Ƨү!̪e)mF4j,5r0xJNWJz2YNJkF si隺&9:F8ej4 w=HDFG̟~2;Rr<qk#T%(CReRՊ9dHI&HIBc=sBYl&}PB2fILi`2KY8`YD(_ 9)2&B2cVh:'"-׃XzWx.Q0ɗMށa ~ǮOZniqhMWim sg` ~qA͇:?\R0XEakt>J ]ބ#I{*-΀L@VaGH#I3O)`q~ _g?ܹ]?3~G?͏ӟg~s⻽qv~w']g>}1y>°{[ZAIX .wQE;{3Mk4")S[:M iPMHu X:z%ݸ7OܱR>.i,ܑ_yZfJSJg@Z&$NxI}oo+ 4:s5 :n[\`uMZgWX5z(| z/cO: b_y\]ܹ{=jYPa`LFuG@*'+9d};y5%I"B7IuTNNà H[!CA#hRϰ:縧0qhy?}DR6DQM,KA5dT#e*Cxyv2bμ/hF<ʤQDݼ7liZ $F7*F`'|u/%R1rgS47z Rq qh“$T-T끲I%ZΌ5 Z`Cꍴ_gI?0`?$ ewoܹkD8#tYJ0`%2PKgH ʣpSxͦ70$!m IDATByy2o}8<8o?UF{Їӟ ?gy?o;[g{?=w2`L<+nZ/Z⮴*=j=giob D:@+4*iRy!. j{dpLє`L!!XZ 0ule^+i`>åݡHm O>p lļl@j0\SHh$y;Ffz!Y)-:G?xѽdka-b oޜ# f$6Et _%߽ſ5 uOҁӳBiF&%'Gx7nt^S 8^A:sI6(4 AdLмſ' |8IzԬ15YE99I)-TФg>('iRX1XAE UżZ,\I TSēKH M1}06!)Mf3fFU;ô,%jmuMG?M|~_k>¯7~ f??G<8ŏ&a~_Eeŝom+h-²ˍE\>>ufCe9WV,{.R{LPu|zГfhBHH4 E[a/B>'lKܹ߬Dk74hl#mC8@C ͫ{3ψ)baJxEfԤ Q} c&Sya/GұucR/җ/}O ̜f)+"lM8DQw%n;ZA#rŞRb)1hg"4 vT3?x0}#97^uAoZ0o+HG];솃 u!t\WfTQ `]h7% )q^g˞M '9D7Jm,xaW2Gc}MǢݢ#K75pg l K*\Q,#dɶjЛHrA_l`t#ZZUj-U9xcQFjp69S~hjݟ{皱Yik֨NvN1T\b_wN`-uGd׳>'?w'.>|o_˿{~;/2Xs^J+=7!7֐ F;=t9_* b+'4BiAr''7rJypd!%#^nnin\ouke:sT^vjJOs zA1`,l'eM!W\yw̜} |s_>|G?G>|}z'% svvJ)|+/𕯼,O/_b?hyss[}Y~ +:Rؕ[mMq;r{tw.Nܵ9ȄnGwv0Ꭳ "8]1/=qbHCaF?P@ Zf;kܐZ̻\:K:ֱvW3?/O|I;sg`df\T5o4:Dj[~NĊ) Glp%1*$ocJYw6A$Nk/kaޝ4C"0n0WbO H8cJ #ÈXXkHfvm뎤jU5+[T3L,l%]hW{DE IO 0ljmnMdQ m' FeV.ZY0RvW_=#5mwc}͇Ȧ:+EOGxIɧέȜ`|` Z=#h3D<ݔݻ?zzo[qC$ũ2`7a6SDU6Sl` KcJ1Vx\?Nl6Zg`L{5RZH4iVI"#eiR$Ɏw6=3M]OU (WzwcoXNbѱC ^Iȍ(G,J*i[ KEic-XBII$6vm65R2$W + j)$H3 !5``c9]rz;[Ng=]>^|uJ/yaZ~Kou.vѴpovpX:׹X7f_ȯշ)se[4A3eV L)G.PQ34ETx&j}κ%O-dnD'IF*F!ˢ蠤 F8Ya; rQPɚCڧk`jOoZޙK0 ĨƁ82Z[mI *ƐF0nu@Z56@];HL=iq ,VOxa`wof?t|5+  dӡ_8/<+ 䜙̿ K^0(X-hjl6*c5aQZ7kvdrބt"g3t-3Ճ3SQZc1nI$X3vuf*ۓ )WVc!)b7Ǭj:2B,b6yfbf4pf]&znxk$&@0Jv\t¤6*WhHfŻTA%b}ȭX{R%l&T eАč)1%f ?7;rAgӁjrHv`Y@'#zSzu ęX< Cb Irtkܤ0#a;x%Vi8ނ4 z"Xxf"J(;SJXM EII'cӾ0K| ]=di4gaSn_xfӎqAﱎuwS>ꝙikܾ33lNɖ8y+5wt6Ν[p6)S[!L!25wJEiF!m$P!0&R0i45T /-}_.}A%Ef!>Ko XzYsg,hlh.zUY |_peAŽ!_uLlc땟C͌r]ů$lR0DXl¨֝RԺDfYJeoYbi嬘Bk}R@1\ JȍDPa,"9a-o QeJC,%IYA /#"lMx,uZ &x\:$\Cl1pՐ̬C .%Qa?=Zc)eno& )1jlڐ:+9I0PAFt\-̜s z6'ytَC[v({2knt:Y0G$͝ڰ! ^$UyY*B11\{>Y<ǛViØTo!Uscj:J<0 \=s+Ӕ9mv[@*X"gyc-ދ, mD"eXQTrz\\u?z:x>py4NO"ũc.Kd*3¶_S;X\/Ió w&N7UN}Mtxb 0:cؙr(993vIYZ0HХK(v+ d/"/!vii4<'N32Iv2S6rz. RYku¢3"Nz ) fz} y-5sHE֓լnwO!:Vb5Rxp/Y~[7홗3iPMH,ƒ&< Fƹ=)O٠sSif" U#";NnJ(id #df7ha 2єɃYpl5NZD)DRc0'Ie IDAT*ixjYgTEDZ#)J@  xJ-b0w#kHv;Zh-Ld 9NI~M뀒ײa9ֱޮ^"ھf4xp񀲟$1 #d{i.0z2 7 Ǽa%+Ja䔸50z0^4?a9R,ibLmKv4JURVcWv=ZNPٸdL|nPLF8y4{a!IVua3%RI'ܻwcO76<~K۸m(q5ϼ`/F% wX:׾>gid*#gOd##Cn [2ԁ[q?2.s<~ܚ̖.Sdc)lowNn4 BںIKבhn(2J}p:$aSN .Nd`_rɀf|_C-gXz- HN!uל-Asha&N*g{cUKU_c"|Or)KE9b-ƜZZD9&TI$I{YYt7zf @Hx." (@b\"#=3SA="kʮ.7"<|yfOoyf<_Dpf[$%YQדAsO$ǾE!aeD:h4tWG`e`D73l =&ؽcJ#(d{m IJ9T5ypUZk));ka2Jsgh$ICѤl{r^=><\֊8-%9ko&0D@B>^sϟRKw#ިև%)y3&NҐe0SJW9s/O#SPQzWnC%E]XZ[ !ivC0:O,4|K|0KK1ŤHcߴ2C1y; M 25t ۙt^=I;}2c;e{JgQ&)e=MbiEtMƗHgp1`! z_ML&~&tY53MMG_;`wgtI#ADѤЪ,X @HeEKWk|~#nj-}sҷ @<4  FƏݠhBJ&O:m]uG|\*~cyjp KO/ӟ+[+_<.XS<+iLɍ tCɚ$<*R$̝`];FrIbi{ ʌnG1*|kPe]Nu;6mGDқIZSzCSf0ajnt[7rRp7#H8:Z4hʡI<сF _ϖ0Ү$T!18 --.Ǣ‡Kp2SI<|Dp,Tkxʣ0 Vb,Bom$BLI9hsSkaPIH9!3c#uR*tuV)m%B k2RJ:j&ݝuYCgòH1Ս;ˢT끪Τ) xl:ESzy0 0B$zK8tB9GdMjj4s_‡O2a8sRLF'r.a_,ݝ qckP;FNHHL"|T9/jL᭢ t1a֣q#أ1 V1)tY3O7Ƌ!TQҾ"#RvJK9Ny c3ŭ[VạwXh/i(+@}3:/o,=W'Ff/X_~/yxϕf=c~|g-w7rڜ?7K*_9]s{X=pyqݲ"I;# uMYy]04n!sav8d&@Rʙ x&$'e)X@HR"%ficXHjFd&{=$uԕIFփ )zx%$Q#) &(GH)ANvJ)& ˺ba؜gDݱ.*hV:B&IX i(sxFnJ4wJVY?~wx⚻+^<XE*9p #h KNF%7uǬS{e0  #txx>wCX]%PIV_ML)3iyN8Gՠ8tCaWV ]:^h 7w‹Jk:IOwFf9 CDy]6vM40Ռe,5㩅q[XrdԆ>B;QT{= 3y#TzΓa#h- Ns}% ,q1g7EC^5a4))T@ıүO%sflڰ~苍p{sm2-hTS4Qh2e4f5|r֕IiY qp8`F3EF3o,Zo?H@Ϥ`'}Yʏ o}&RNX8w?>5y:-zӖ0,<{=G7ꖏILizCuòi}a(>XZWg~{{53(C7\(`͍MJH=aGyD}GR>)eJKnFr/],5kHL3nO1sJ #a90GZ,#~\> &/yHl09`r/ҭł "Hb6R\buu^%+?f Pv"gzep?As:އ}PA\SB?X?c?Ku^_g;&X +XJW/~{;?pK[:/<u^ryqżV.'?s( ~W<}E:Ӽubb-hQ"J'HH)L%"T3eғiXk K]j&zC/ KbD~"\dɘZM4yxo֐wnZ02N+W`0$QR͔Y-%~~$~^ʆ˫Rnڡ/cބ\2%`l[Z9g.""U} r*V+LRW ~(%EZOl0wKM.-w4߳\D-W9bqO9U! 늈SmEjhʾwR(6N 0ZUє)at-u?Fb(2Ќw.<}Gxpuic"q}}ӛHRddNh.2x;1A8 ׏rlJ (n8gar! NHLؖ͜{*%a',[C(%jis j4{YVT&Sȉ-{i^Yrgtrn? iZ۽O SBM`JIy6UI=b3Dm)]Y-ɕ~Mc._|փKsI,UٵZCJHM/hy`T=HjHj?\`I3orM"_#xRox]ck|1`MGFiUyybWoG_𓟾Sb[=p@L3Eq*|+g.B9H;>UnP3;km,4f0)@dؿw tzwH#C w?y:%R٠}Rin|IJSN&TqVj$Fz;%>/ѺqGMTМa4F`5[su^oh5ǽsQ:JgvG]+Yf Z.eH(JjH,TsL!rwzd4a)睥DqJa_,0։2rNCo.d}Djzs0D#R.3Zc*iDh@N&)Uy |%ڹzjzϮnԥDNNrܑ%.\p}ktLC𖜕y̲5zw\LcZQU5&Ur2ԑ 7'· ҄~ۂHO\z{ǘY0 lvo,Gψ>JoՓXH\FyOݑnh(hz9`5QT:JԄ&7?{ oӟ}x.[u>yu(ʬ<5̳S|hڜW;nk즉3 u\|jfdh<+=Zч%L{񐗹;9씬'ɭj BƣQ*i/}Ct0"I(i {RP >8UxxZ]|U%披dų4RDNF92sy5Y]]}-+ۅi3g.6hL4sq|Xû(iLu9D/ܜ6̃W̵ט1n0?%`_;KcifS 9YEkц$&;֍ 6ɄfHW4gLҗM:qMC%]C']@J\NG#~[ S/@o6d I?dC{[?XgP~' JM|Xyl2nw'eN7\tcCG艸=iggR%M3n zxኇ]VB0)ur(EIÃF>rmE@C`snvb;XB?: Ņ:irʈ&m20Z`)=H/}qd|6ox6 ɐ9zH 05# ѨhNX~C@um'ѠŅ5lz"7efZkV# 53hJ"7o_w]>|=>O=lwmLR&Bʉ<Ն󗼸rx-^KNeJL)*avۉW;n}x6YxN#$Z3lvdTI'& qITʈvRioUʙ)`*sU,;RD\ѭ)k0쭡)dA)Q, .\"syɫ\>rҜx|Z4r&+b籯u؏Iy* SHۻ{LكB%GKmغ<$kq{ؓ7 "{8n+wK>zw.t,qT@HTFNok:=ǿj,Lo᱔RG#Α29.*H 4%'UQ[4)+K[`7ݍ]ߚIxہ@D\;v#e7ws+ds"ew̤TnΔ A,CZW P쎒KI.VCvkz2 WkSBŎ_ c}[ Mg5sx51"_K!fn`Qgp[4 SLr5F!'i ?{8G? IDATy0!t^u^v{*&Пޮo_y[~qXDʓ&ES"!T(ede3ezup1斛5|Jו)\S0\Xa] a=^Gv Nt+fBB2f5u'9ay|n=f3sH})|f"᳔IMTQZ- koa:JNF3M6*FmF3yxy=$:p;?壻ykoH`GΨBm|RZYk c},xXؓ4Y;eDfY|ۛZs8h&DəϘkookfK6r9½Xg]+6BΉ~J$C Ə, KSD* > ۃn玹FU?s gj1ٖ}6t1>fa}P$^SQaDr=7aiݲ $؈r=OmոWuSrǓG=5 4{hv_1qx 4HkLb_{{wc9#Qq.` |DRpN0)HL)RA\(9lϡ u Od$ƶfÔ;!!I9e<˙~`#@#_Xq d8 kkqFzݝCo KoS5^yy}g>'!B.BC`a<kD4 oT`ǑF2κJ0s͙T!'ɄgU]- ͘ġv:Vqb`4*OjC5oMƆR&<0SHH"ZfEb]ouRA+j:=OO}U)A͒AFyo NΝi^~J 5COǍ&>Kkpd0|(z+j_A"IE?\!,#|^u^o2LZS}gw͇?zW;^˗}Kg1{q8v랬n/yq}]pU%sxu0܍S/%ţAL@9WI*/n9nfR<5Z5v(H I(D*˨N RLo128ib] T{򐷭#)ҩ`2\EXSQ螸ʋ\_;QyuoxGy<*+&<=zBF7ϰCb%v34(%e`ikH< H-0cBcH[3TCcəmR(3fB)3{), $낦tQL%3Mk ղVnwf 4MHR h{pͲ>4He7pJF~# vD| ?]C>O7ehVX3m鑀=MA0{/+?sR to}]H7 _ӛ>\:_gלGu^%#Z_ɿ'_{WAL䤃IIt' a)pTjfH)39@+1uj敲hp 3bfYQ}_d%'jWj%1f\]X[oy<VS>[ý 5y>=5zJH9dT%|4uHJH2 NK[4i+KxjRwKG%g?-4 ER`E(/) `ipku6T)3Ʌz25zܱ^ 3D(|\) )ylIU -v[`U 4h2AQ7m F,_|I/M{o2ޤ$m*'MLw.]`=!K{Lb4|8%' ']}8* .yӠ_ǟ}cT3snf=ƭ!g'q3!M ̈xLgC{W;j0 ;qCT7xD'43X-}p~S oMt-]d<k}! /UVGsmMF]#KޱJZz:y-`IXOß\]^rJmNN <7rJ̛ ݞ ϞǕGnPIȼuf'7Ue*nrJZWnbptR^G 4"i0&%R엕Puv4}OpQ}XlKDktt|Y9a7ͣ)̔Rs l?whzLВ!!h̭O  },##IHeBl@SY9&p3x63 ?V fɠJkOy?ǔ|KW~&\PN)n ٻdGrkyܻXIhnO?bnKBH(Z m K*BQO onKޚKAwQJcH[Rja'b;wzWsX.~q)P u SdHc̪28GLaK_ґOo3jC:uo=r^}aԽH'X];~a=-\LX['{59'D32WV HQh̅`;UIx<M&W9'f&7-P6 `Αՙ~N:d·PJbJEުMhe&+kvZ2J&%c+68,wf^޲%Wn»?_8{ox'Б~:!TV`)| rV,)l,z`͂$oE9!9%,;ߔ뼾ˊ}H䙔7p 뺒0O[;zD׺sXk_w)KV;dDf>2 sǻӭ3b̮L(GFPH* L1* ĊvP#56$OwLT FGtx3 ^(f(p`?4OޣiN9Ϩ9:e:U/*P>yv_[~,F 3*+/^Rʫ<5I:H)3CT)Y%#ڱ!oR ;6sBۚ5%#tM`DT8 g4EGo"Qg<p'nk6Z12K< ̫Ogֻ23N+ w{6F0j B0Z@p ' RKK%wZZ)L2R-YLu IUhZ>|Qre4I &4s;IE .* # /O!|ft@.?m}{tJy}mUԊ[+U\el/g(Χ7xhŖHt$ФdϨT4o'c#%ѥf%mp+h2|,Yu;"7X:1ņ^  5cmkqol\Ѐ}Dq/ ݝݖ jua8/n_}70<߉t>?˓G.&HYHEI5f!e!43nyޣGl癘d:њ-%e YYg ӟÜ a=%f5L8T9-3~*fNkGm<`$Uj%˛J3g. )i2׷3/?.Ah;1c,JJ Q-ZM>,ܬ+ #0lq\k]՗s` iRwR!a, l~QhS&% `@s=kLU}gTF40ϩ޹se'I /mB96N8\c.D3]}SO__JKVŞ+BX7~1&)e-܂J_UI9z̔P-FK3UL¡[glzwx}EpIt R|p ʺ6N>lK3I\ݸPgs-\Nxvφa -3O0jJ~=WҏD Kh2K7 :bʼӽڴXO0?>gЊt >9>9U!$zoX[LK֢\m *DjTKa(>xdgW`!O%Q[=;&~rʘ\@L0@s*:5d@mޣ@L).Xl>J!eRT cJ'ko75p)AkX1J+㆛‹RuM*sRo$ƟsK65z)S6^Z ~aʅ͆J8y.z{/Yj&sr1o44DŽ}uE{9;ݾ< F<& ~^EyP<.p+>JMXrNVʅj~])1sGK!EphSɪ [3 8IS4ﰚSf2ap<¤qYӺS4J"Tȭ22E*Y!·YŘ2lyۡ8GSNu $p`rZՏ6{gST[ݜ>zޔh~sE~f=;g5-4-ଧ{x'w;9q/I fぬ-\nB$L,7:އun@TV*Bk+{]XJmδɹĚXK*) MqCn=E&f Bp3{JLTX xcjG-J%'yKԆ:V;:]*_lhΨ}&<f̄aCwL5//S4Zo$ QoѸrvˣ s$=mY\22MS!FY%'Er:'S֛D>`FsFkSq<Y[ SLȭ#S0g-iLfSfJk˨ڠ6#وVd IDATT37eb/ OV$aDNiZQq6E8虅 a7O@ T 9XVj]z}=CIK(5 hºwӓ% =Á#v]y 0Ze5ksZi!j|IXzEr$'՘zdW|(^, 89iiʲ?IJڊM¡u5WWy3fpލڌæXFXh`kkW=2nsnκVJ$Sc  ֔Z#sND(&o c_)8E`P Rغ{JΙIl(f PaNmn [es|KYw?87;5Wybzpűu@)C*8 ʽV BR'PY[h)<+9o~FczS YºJʙ g5 f̨ԗAUH%!K,ۏCOibvYЉ͆2koLj:͍coܭkB#dqji;`=d*8jKp @t_Q5 +<ͷ.x睙Όͯd.  7ԔYRXa)jPk4BPiG-bXv6E#I )XvBd8˺`vP`hd* OkjE=<P`gF/ kͱȀwwb]m*%eԵA2S"-X@} %,D`ˆ{ӛ/s_$:V>kHn_qC893v7gYx|}qQÁ2iFIFVAMTRf3o8,-G-kM|MB~}R E)xY $C m8 #h^R&jQJ։&(u5*uj*P? 9QTQLJ0Hf;g+=m*Xu7M8s>| %nIInr\jJқ b= 9'LtRLI`J6nv{Rb[Ɓ(ԎW21g`X+ +[f=*R"Fڬf\]CrN6ןd5]MzSmR6y"+&fRqpmIiL*Tyjl.W֣Л޿ W8 < sJk'9I3K넑ͨ=AXQMaIDCc4lj QAr4ME]#8sCXXL^*+wڨ6j"ff)$u& +TgNuO: &3SdqG =oI4Olʄh(4%pd]W w ol c[:cv8%\:Q^K_'xGx0d6rڡnrp ͆Th$PsK'ߘ0 cWJ+AiF~3 C 9q2#jCoㇼއR'rw|r1E#3S̛?PY-A6zܒI`{~|đ[q]ω4mq]GCg+_;o𝷸xs Ι);>NX(ndqJRy ;:Li@=?;k7ֺj04q}p7wv Z$48KSOqfC#ޛzO [E +p[yp9Z!YBXZ uzrlJ8bMNo3Miϫ!^/9+ x[_y0eph'6%Jxa6,bCeh̘ M"3 ?t"R966V01TQL;p u@&uwV7d2rX̹P! 5 ))%sc2{G6 8GZk$cpMۇՋBJ0u xx>%#dʀ__wt)w | 5΋bç7XFV~/zqvH>L+ҴyHzq+ &H|YϿƒuyEyٽ ve8'N\7Y%A Ƕ2%'o&ֶؑRqqnijs-0dԠB=L,V7P3L[ɹkH<|RJЍ6>HI8+tɛvNLS NH Y:jQ%K!&y86x"3F#wPK95$Jl4>fhx7(78B"wT8 9 og|o~;?" zj.ANf.\\nh}渮#m9{{gm  `:uQRԤ].UITfCMV7ebP3 7.(ֱppM8\<Z~{g<;~S{sĝ^Ճ7bvsœ+Z2،S1Z٘JH'Om-NhA6Jp}}nO]fF)cCh ZAz4(někikc*Gl4q,&KjG+%=9yʤHZ$Hwț"$Y4eY3e$er)X7,ˑٔM3poi&PcƐ.q\É=rsҍRrn/_2>Еgi Cf>k5n臉p%#WcF8U2?K~<sgdG|s޵;Y"4)9+q !IƽZg&WԜv vw|>biZc*ٝޣ3i1N)O!I:),7VH9R^IrTvTs)ߤB?>?sJl6ypEI9#qȆ(9C``Fx7%)T;ڝXS=>Y38Ht泉! dN"tFٌ,wdVD /Oz+MVH%JL o)s&Ǔ -Y8uW>5$'3u/JH*l/2|cⷾZ;ɤ.ibJF˽2._&E09GSJUu(MjƅHLfS6K5ܜ^nE9QK76_LJ(Bm H'EC;qZ})EN LJ.$wT4ٻ .i89滿|~<(4nva{o;m=#vZ9s^{ΧrZ9UeSgAqI{)X鷾(V~U6> ^)vs|2 RqK6Q.9v 7xSl]*ՕIi XcVk ?x==eN\l2Rv$ ,6 B}\k8N;64wĈ'39FSSZIQtc]@ouz TB^xm -PǍ$L`iRJ<|m"Klnx/v$ 8`S9>cm%{O|{_~mRHR~O7g33͉ n:k=\Xk8H[UQPuj53;) Y`;%giӬi%?w3]VvUحsQS8SwPR⍇hviwW1 Z7^u39q/ xkW3II9jY$,h6iflJ!XCvqeJ$` Go&BD:GN*SGT)`FPf$ ix7\m\LiL4FE=P*̥0p#vrAXG5l2"3pswǔep7v}(RJz+6H\0uewU()IW ,ֱ‹KRIq`Q[b\:jx*˖GSrZ(\m6<-lKb VdRjϬkDr{7s?y+KW+%jH4]JNhszgN*V$|b\IH-5nN 19; vkB.012s6S)"+fIIf{(c _!ωr22aX4$ڍBTu0sna$y="l[,Z.s%g[ '.7< ft>/PK9;>T.I2s%%\]U+m[ l7ۻ/qI>/Y?LNMu}6I]~lx ;o]KJI#pSZI%nn!de3MamRC9^RHN'6R:sk@>>hIq>yK4̝eTYIpʤ}H8Em_k4uD3Ϟ%n_dLZ3x|fJ; 8$Pe¶ErJl4 ׷2<[% \29'm81`VXW8tÑGFҀhkřJPׅZ+:O䔘rK'DP'< fRC5 ˧\Tu:I\29I N+"t7m֖Xr%\:95߻KvuZX3JaN3`cjht$Y}0~Ijntur2἖$Z+Y빐pYsG=v2UFxuqF-ͅ6Ŋ\]T֎8o9a.109 j5pS(͟0uДW4%yfYWTh<SNHW,\o} ea{UΠrRwy=_}[oWh6 ~ޖ|>|QJ~D՝XCeivszuZݎjIJBm2 $7EYZe.qw)OooO?bHJʅe$$ iǬ%ŔJJ!R5:(ZOXaY=UH);d Sk@s+i6sXY[eieps{XлBV^ y%g@wyNpp$ۏ_AIhw̝RIj .C$RJ<'F`-;8ĈIuyfUFn>Ԉj~ǔk=RU h.e*:DHB4j(JϙO+g~9!F53Ir.<δike]Vrfl.8ю-z8O7p=+W bŶ$TBLI9+BzY]JNn]'Uu;$o`XX[JQ05=Zzu0f4jFR!炘7k pMl.nK{& (C:XS3$`ĬñY2cwК&,mTqo|MU[~-o}w?t<7w?xp['=eY߼OW sf]9x?nyb#+:K[9h.);Xqs͝c{EqZ%M:]37n.}V VmH<ɰ5wpo!0BJIVPsvb~{E9,=pјqPdKItUdw`Hqm>FBIs#IyTR %;(8sa`@ *2ؗ1)P,rK-rThs1Ohփ]Տ5zXʸ&D 8X뜜Tތ=U...Hpw8N3d&6ԅ\]at+i~?;Rr~;O  Ww~\?hc77OΟ?o]o/M|rW~n. Vz(W?cjLZ)%ݑc0g.۰+:'CIwz?w܆ T~~Xq>Ae8>B'S !*b 놉a ^v9mwqmCPPs|᳇EwSFo)gd&7x=nHd<&Y)38 e@l%O3&Z+k[Y[ͥ< i!*W.ڀȶطQ4WL,xP]9۝qO(wOOv3*7kŽ8􅻥 QhQ/9Y9޿[Ztcp 72 '١vÙi,hڝf4M98pmB"8VSP{< C B uT!GEH 0I耎B~4&ngݎǪ ц1 =Yb|uTޱ)D}l`?l<r<~br'_:|&`~O>ǫoG???{{oW/Dy݇{?#?G+wV3K8}HpS^($x#8̪?Lΐ#ef3=ߑ43LPY$ 3άYk*\%& Y˙:fsfNkkuMl% Pfn73s+}4ÎmcóHJgVno !COH}#%uʺeW}o9Z{sow#!#?d#H٘G)N 8_Gٮ* y|2vUXMp ƶ@!Kw?q^{cXt V2ޣU>}Ξkߟ>9W$fs.VXp65_:yC`x8uO/r)ʅ?yC9LˌXB"JWF ֵuj83SB<n!w3S된,NGuӭ ) @ By8ʺ/V]BEY)" o=AwԍaɮN_]$ /7%Ѝ-(\39*BYQ/I9VpN6/<=^qƕ [n9엙yVf1lesRn&jk(98gX+cIc²/߁_p/x?f4SG対.y|Q ?/8X/tCuZހHq<&V&:KZ}`a8GʈHl6,1Cl6~h*:ǥԯHzXJ)*`W׈^RHY(91h4d=W"޶/mp캭”)R"2p<&__Z#1$QC-,D:f兮 fS=1rRR ;kź$}1A)T!*eNjMq>*:vہA9̃ H8dnyNľV ,-=3{/]-$WRG*瓿vv52s =go'yMxp<ťp ^S5C~*9wO>^CPz|œqb3j^f̈́VY2"i,PqJkw)J*poWH cQk1YbF<]K;HB v[Zo\O$}W*v o-`h5:,JXe' Gȹ0-f 2SVUrFY muxm]K"uYH)L#\ܽޠ"9R3VAR2bNƘae`!z+ZKG4;bܺw~#=_!??sݿ8o=/ ؇: .,FD­ceSB͸>S6HcΞaCܹ֝srFa? S6G7ٔ!͔M)q{~YV 5Q¦}5f fA K ņ)^Ra;{gcR4m}C$Ɣw}7~|f9{R79`+$vΑ:y Ѳ߳+)- gtǙ!"ZcU3M;IG"9p%hk܌9GiX)%W5h ug+sӋաop1Mѝ[R-w! 9! \ v&#w$*ñ"khVJK[4 C*.\ pFUR;1f.9a (ii94wh 'QV;Fo4=Lٌ 'n&o!{my;a{e7U!eQnՎZ[PQ4|LaPJ$QJʈ-mutc(GnVwv%KiADҥy3\(hOs>_~7i~G^˟K{m]]x;^;^Sw|ַ^C}zs WCd':߹ }۷07ͱzGPZ9??gL/v퇶'#yJmk m!. qK& CDP39W.Pbݰ֯NqIF\)XkLR]nkdwLR N9VҡN'Ӻ/~)>uzvv턜f+tuRnԹQ:K IDAT0ڀލ4ӉD8GM3绉!Q,`U%G"W%%0YE%V[^m">i17Szz׌uȟ+5]mVuOF ʼOT9)cǿKK{~ [fM|W,导;|_PKCt:ލ[76|缒7>lN0[Izms>up2z'#RnlIYfm͝ v)^IɚH)_sWnX7u.-업,ɤɒc+\v-Q55zuOJG2}b#QƇ3HK_fH~-j`sVsN9)7R7JJ;֗8ă;:ÁY.%V^wB!VgMw[En$+BNH%z4͑|pKpM)qA!q,K͆mABڌ_h" VfX1`!fWӴc3rJPM0R+Ӳ0M{6#9ez6F,bT:pY&\Te}@}:<8aװ6|w˾'ɷ|gw>@*pDGsfGZ8ixr}.CRơpCh]xg 2ce15ub"(r&<ݭ1ʾ-9 TGК5`$ua, 1IK M0O7]`fY#˛ I3F몘gu_D'ݕ?NQ?࡛G>06?@SrN<2P0nnTq.bu-J\3wci2CRz])1Oi]/PzE+ R θ7^9VlֈQIhe;2g:צKV@=Rl{ES{c3 RYDHWlӷ$26XNM9޹d e1z|k0Pn 8B;=e8GQ1톊q=Ƽ5ilƊrΙڍyi2|:jb(q,K ^7օsq8G7p1Mt14 㠐{O̳w|?gG|w6~ꝯ~ٽ Px=_w7}g<@,/=ݡV: 9 9zw&a ( VIpKT@la3$N#Sjtw˂6e `5\DeH{s$RZsI^ݨVɩ0H WpuVIY+|١uFEi.ff' t&hhwSV _X o+347)t+͢G 0K$~z 'v?w_}+m ԝfkd-+qPX?NTT :|q/GR`- R;k1.y6WU4$k{' uz ![q76;r9 .hK W~Gٿ|Wl߻aZu|?Oü対`:y>5a,ᇆ:ul)PtWQwh½3~ vD_Ʉ|gz^s^}|$!ŭ͑iE+huHuuM57%kC*dY:ӲDq4!.$:1ykuD/RDIIfr9b7-,m >b5\*kp:zv,CR~ƐaS 5ȊiMbϲLv-aD3cQ!Di̝H~S wRJN .FobʭrPdЖpHq9:R8E\0J5#P:Kt$V}No&jve0v"XҖ8ӂJSJH-a5۰JYYDNӚVHձ$2uXY23^ep!,m ޡ7?NoF6 'ÖZ+c*8?;HA5h=bEx5=vxqu5yܺ9{r\:iH&J3ӁOOyq~yf֍.K@UA, \/LUiK. % '[ S<-x)C.1EͩcMH[.rȷD ҬjcfVdMqhˆ=9sуtCJwnes,'X[/r]rĸٰ9:b'C{}O]p> GGoq7.IM ֍xo-Ժ}Iqq@oqNFV"m%qwZy! ͝yNӴr&D=x0_ude.OZZ{?:ԯxS#QiS牧&~/xgVKLhʨ;d 8f1lG˲[fP8`MXZܽ5\t]NZ+=eII0(W]Y9=oE5{y-~/O98/͉qWg>_uĥb?p~^-nh;w I h|2.u_8YOus4؞nՆB+ C6\h+gL,mbcMMԺ܍Z;Սd=F"WF'ht../ht3KUN9u(" ;|uS`(& Lk67Oڙ̶G76.{9hFxwpXRY׶z#92]. 1L΅\r4Xp,dTg'J MZmޡ[yDi@GH!3f+7@;T{ei;bD"n)yRixw>6MKAH.`8d~ ca2$Ej} eCdC.ӂ<$\*Jk43]n:D%U?! ,4gN+m÷EW5diE)¸2FưRBQgpdưݹyFDKf?OUJRnQLo{qz(Y#vWRkؗEHIo}$:.Ϧ`=UQEڰsNuswj]8F˹S-XOzC=XƇ>004l`[ ao #uN*HV6)*WvUbAɥ *є-1]x/(N%OypC%*ұ rk"c)d+Hib{o#ĜV$ip%uX)* "JBRWL-wID$Pp]s:NN̠)RP܌:9μ#|iBT6ލK]M y K PoKs~fMJ h4DIJB-ܸO2fzgGg~Y:2Sr!T]U0}<'dע^3un|Mx^c?8z+ʟ3ϏأE'  ?ҋ7lG)ܼw~;21lG 2і|J)$Ox!><Și,t"$I:T")@ߢWŎ}ʉt~@rw*ku2x̌֌Rwg; VG4rl,uC=˘05>W+7OQ4ރ@@K&iطJJc=} cipu:UQMERyMI eUcm/ NքNOmdyCe{ž.ބVA{sD͐ؤ-l<|V爽Xy&u^=,)֣/[e38=4HpV.R$q #"I[c41#)SkbZ[|tPMIh.Y'fgԌ1Y͌ƒ8ypzΣw>7Վ뀥Dfw c J'wIeaո}0 {H~T_,j#'%i lHV 2RgF#<3YaLJ8I6ψ,ToCB 4gq`fRĔyNtMX|sii(}^jKl"SΜ#M۳ˑ*]U:wƷ}ozr Kp~w˿~e;?m^zJ9kA#Z}D[\ 9A0Rs?bu5zWGHLt@$bV#%O8{ť ]' f&Miڞn^y?;9 3i&i4V\S"*uj[=b٣ wTw*y)&EӐ'#.D)933<]x4UjL aEP!Æ'{wFr [YYPx Eݻwg}▻8sMfH}K7P5e AowF O9g(4Ou՜TluVԣ(ZXڀ0pv̜癩ʝ9ri3e&ܺۉqWs"eF}6n:evCTA=WŕC=eenksBo).VSm6ZD6!eXE8&Y\1D\ԆF [M M<$}H΁a>lܘ8v{T6e,HPo"E#&NJPGÔ8̹4D #Abp12]1u>ж=mbfطOKXM ~7+6կ_?\oUXZy$~??~w_o}1><Մ=sgJn?}w?@pJfl[T)?g'7wLijxH-\ANFJbQȜrBnP7W!g'S *&`Ѽ3"dsh͇w gFXVeieQT8;Ws72 sKv=%%r'ӗ_өCmc`f)/j:NhH,nõى1M뭿~5apnބ{VSb٫ɵ^2}<8;=#/)40)L p*\ dD!dILĬ3c3r+,3T: <^8L$̑~j (Ňˉ?﹌9FIۻs2ѷ4&RI`5ì ASI'bU-S)z5THy,z*ECM K7.L>!bCJg4Ԛpʙ\&l6yq>s/=_|?Y{_~"߷c˘a%aIjB*?ȸ} `.&i4ѹzh IzM(F ۦ@0$(S`Zl8g@@"4)e3sNx) RBBo$(.Dr9 Ivˈ` +fLsfNVG:Z档1>mk|WyGk*,0a2Qs (~M\EZzC.΍9tQ8w]1$hΔ r`Bw?9!3L$]Q-3"uAa6DF Rfϙ\ R.RPQgպ,L\S%z*.׾٣A]DiQݯ}7o^啯RvVai,^M_?_կt~x^Bd%# 퓛l?옜 .Vωi쇉@AKԸp!(Aj JY%E(iBQЄ:fQYm7夶|8buNURN0AQj] n ǷdZoVV͘HFU Q1؄ V(s\6}?: !rYLARɥpsGC -يRк{-qat;B#e\ Kv0M3_~$]N az(f)ׯU<:YFJ'cw^8>sNvnRD7S )CN[~ 09g{uoxVp)1B)ИƆs2ק ^ gtȠs*n`R"<(kSs+IFTQUJ0=e\mKyGGW[٘3o+xV9W|/ZoUXZP/GWo1[k ʓFu­>Gɩ0q5r3LNqIiJ*l JÝWb݀WaWEe\|,grJ !Ҷ-AgS.QT.JӭxjzV.k[jô74A.WVVX݀rtře n'LSoGqcFN7Xբ K ]ᠴVrs2 bR %F89n9q~܂9Qkҝ[VVVw)BpPBk]2ۈFtkzк;д ūdKdټ5ul,qU\nLS,0CLُ\4e]'RG 'GЗ?닷Q9N#'[#lfF𚶶-[97ĵaH9sOtmM.85AiUPt@T "Kʛs.li nbV=ulIQհXafNzja{ej4YIhU+g_: K+>OOY[??^OuʓS+B2 ŠBy7P7W1O5JV/.N.nqE.?p Zv;bm9vl{o,TAkw"M@Eb]Jsa섨8-S()ɻu2we |HC=,\GDڎi@\f1؀r19U 3p\@ZB ճ-'=#)G98pE _8hX*exK v=3hn2sdǜtBъ33O#7aaLpP;=6U [Xz|h*2ZD9h *`37G4sgmqB4'<Ezx@شQNo2t^)<ðcMLӌY!ƚ'Rr N, ^? cܸuFOӆyrs'C(66_%} K+O>WKo%>Nxw* U&:3 h8ߝzaA1qk/Knv sTF"EiU'}φ`peӵ }ױ&a‹EhdiIa1E$C3ü[RMQ!MiCɲJ++12ށCxi5Ш8=ۓyk/ pU4,aVPU<hvȭFbӵJ+++T`Tkn F^ c_+n]LqKݕ=a 5-Qw66 ryI(Yͨz^/UB\q:mc)<uZ8-F75u Q̌2a$8CvBqr)KFQHU<2'K OQ lT/7ȠkH=i0o= gx>XSVai֭-9+~G˿pƪ殬|8{&$"~7Ji~34M5-D,ioxHRE%s'XTGA集pA7N܈mfsбnihNjnLq!D N 7#7Ύ/ͼWVVEF4rz^i7Ƥ0'۞k"7ost%F,8mۢP\2C"0%5q]* mzeegb4cswnip[&F08?ߑ!8M1@ 69؝9-yǴo48KήC5T.R>%Hǵ2mp+FN »N4-s#U#n;l?2M3a"ƖM׳i̅y$7JxHMI2"B0j[& wF7P!hGPRNڒ-y4V3 ~_]x:3yO/_啯+W }{ W)4q'^Is'>=w?mwA72S晔!SmhhHk܆Pێݙ)$/dh'YBJ}s}qJ L)'DiڢFL}5r3EPXPq;7/ѽneՖE'Ɲw-d203[DDx4vݔȶimz푰Ӗ[ր+)5H3D-uzO/UOZYYyt;*3GsxtZhDLLGz2$DSn;r3a 6FNn6<|ڐeϳ8GW S9O{T)8#FihѕrfN":xbFIDqRzC_ee{.m+2r.h j ,5cVOe&]Tj\YŞRvR)mKs*{A"ZoZPĘgm'Qy{wj`R$T)92n ,)Pre剧&H%M (ۈ S(N.3$̹}YI`EFp8̳rrS)9\F"+++ /6KűBj'Ʊ#n TZv;f$ %gar-4]34 yDPsӓ+B;s6w}kiVG$hGR>6?JUXZOY[oz/g͟ZbQ!x!6B:&xֳKm8=wӈ%gå1ҜeX:Mdʹ K72ɝ쎕um7cYlbiꕔKLQڶiHXl8jJ 9s: .B؟;'S.DxZWVV\t{QAHPNΔ`6r~.Syc|\)\޾ROcvMgWQiee.2nBF;i 3Q@$33,)LGȸމʕE v<%N5̃srFn W ܾhrtJch44')cm""BlMvχH U4MC.0\.j=)V;5 XMTp2~Zy{&^]ﺏϢW"L5h]x" mO ZTa K+O#n8۾y+9mSIinZYy#R}Fb[h)˘[p_@oݾDJN.4 (sfURr9sθ J@E;yNHϤ3D1CtQquJ.8jaAȕ'HlsT8M+oX8Vޕ'kcbra99;y½EAE5?8p IDAT&Dln$U7?t]Ԓ#9ܡ)`4 9A[ɭ8,AkBt!].j*,u^ N@IBTc%0NӶ( @ %dj0hۆmi@w3ж!h'k*!l.6 r2r6g}=,jŐ#t LJ/x7_~_}&; " H"Grh)CySEO4[bxkڷ}[U !Măf;3+lWy_ѴAyMPh9Fr*hlhۖB}䄕:7 "p+4hGJ5FPbG0H^U'1v >Zxr|x|TkfհweIe,8mP<֨j0/5ta(˩>hl*l֛|eeq.gX"%ƒSr c$/G;N`J79)Z LCxίXOUXZ?_|7f0++3Lj1t+C!twl66 }a"8d+5IB#1bg/l.bR;Ti.E5=OiIq;w#`[w?l^MeWjڻTZ/cr?@zxeeeY.~O!Rʝ_&K-z)~]tR\dq֐L!6جժ,DЉ^2J1rNLc&6BCֺP+)gLx׮yUda-̴/ \۾wxӛ>}Ľ-9 {vO)͸USyy_Vw3_sF^P8"Il7Zۛ| >:n[zrJ]L^X"%RH9rQҌtuj4FЃ@ʅ\ ڦ~t=VMg U^ WVVVVVVVD:a< x\LZe[ruD{6Ķ!4JrX B@ m@rldNJa*{(}p]G\7\?=ta~v?^{ugP nИa[)*,|@~2/ťެee僨r AՈYK~+s߽/kgrq0[: UJ"D]l n65b.߭`!SD$]Z ,Y(,灪b   ]+++++++++ܔ2)cX*h uD0(''Ћ Xb8c8R2SΘR6B&XLy21Uai*8PR캆f {}{{ٿ{ ?#{IO 4G{v&x>GB]/L}qD|TUXZyTӟr~Cu7~kt(33w>Y52w&Fr(4[eWG#*}|=_;qGy! ӭzGٌx5y-1>xkpi d K+_zڹUDu~"#H!%(fWͦp;yh9}mߒ94s56yLUiQRj% &HTr5n#b4-HŨ;0JYB4,"|D9*<Ლ'jYY~{?Sq]XO`QH%J`*<uj_Hk)`0H:ߞLȦ3 \ 7nq>lj'ϡU?e/7wg50 8rlk3ixvQ)9t2b&ԀV-OZ} K+ /7o_R__=VV?N%b7B_1,CaƃLNԀa.NO:SʋKhdsH["+*.5C^*aIR[&19 X'vR0-UWZYY0mWaikFwF#0S^&œGNw{\ 9eJ)lB)<4e #t턜!eHL4 X~&A>~3GT|)!'v wL'boI $butIb髰A I:_ŭ<"uYCCȌلfD83N8=`A[Shd)՜ی>v Dg3bKVBcynNNqg.b- }ӐbV\XW( +~XYYYlYťgs7xfo-WVVVVJr)Th7 u&s݁X ӎyGzDD8?n)-<.K/y<w|o#?<1Aiq b#xiI`iCqd,ޭʇ,7˿;Ӗϕzx=Q@ӶĦ@i"͖W*әNwC)e͍$("u 'hp fƜsLl/3ֽu>k s{xBYisMz '{,!ИC9}-Ef*tIYv j~'ѳx{nORs;bD>]Қ."UGd 6U``VM ; gvo?~ïMccyBPʱ0ԤPLZ[mVVcfyaϜ!k2/#P3@ ʼn4(*)ML@$QՑ $'E¹ʓBS;)VF%WHN'Nwlҍc1f[LA*&K4{S$ ID.5)@(u.ylG2['#Ýw^ǟ3ws}ތҞ 599E`z`8 $y'c4hӿ&9O$ܤKf o/8wQ 1"p:bS:S]d~4+ rPdc@D1U&MM8f G͗Pc VPK L6p ?X@.MFdŘ᳌fvn?svi:!MWBDN/Ux{ZyNLM',sdyhf hhFdv4D\L1sa& D"1ɤVӥu6F5d-H+E_y/= aO:M%m#٭TrFqոvn*>y\va.~(zbvᠡ륈Ȋ1yh;\)Zmff2;nwIܤ@)Nj!)!E22`D^2rge8MR-"[<*)g1\I™T{$R<&2΁&sƧ~/_j{WYtqKMw}zbQ3qNrDT!cJyMaW%e?'wgSŘ]u߬(!oӎtqsshuimRTs8B"4xk s1P@҄xww)yjOL*| 4Ub1. tdͫ$*jBS,5c̕"  '+hTWR̈!'r xg9u ljj>Cϟٳ3>A$⊊7&(ýHiLkT ұ|!qD7j,W|w) '{Ajv ŨJھ&_e47)i55%b$)YY^URtU yOL:$FD XT0bٕLm唌1Ƙmh '%dc1\MV1EJvs br W3AWAK沊} #k4,(MBgBECB,YYgD1}Ĥ3I`R&X4ȆyZ)wtv 9O8`8TC!É'ߌӫK&E$r^1DPX+1f%8PjTm"moe\f( >AV#YGcFKO:/@1^IgaQSZ9Ⳉ/)"Ԋ& O#pc1ƬOaUGMXIeTШZ/umA q ̩mʵjN|ScZĒyҼ7qe]O'Z(cuM9;unי3͕1O7k \uK* 7ejjhx<ՑB1QH DUdXȊnGD 1Tohuq9GpHAc1<Λ{MMVQ"q --Mug/?@4]vStPR%I yI{q`COʒ8e` s.~G.}ۘGg=̿ :bBFSTyen\{%9PG d54sG 9Z.C6'ay9qa>r!H 1:u3c1*Q8W$Q:Htuy?ӟZwٜS&''-evő#0;1C|Mֆ-V+GYIqna',s'4yԅ17~3/C sU0)fCNuV9vnNNKsRL$Mx&q(bvf^׽xo7f`pDp.ћpAڭyFkK84 A$$ă˚%(Mqk" ȹsjڜct'?~mcپna/G즵"yQSk=e t^nKieJm$1XT N5bg[_[1jڪy/ ^x/~Վę6ҸfФx=]ݼ`B,x0\D.A"j32U~h1ۀ^Ax>]4ן̬UY7[ ђjJ̞CO!UkͰVR@MNuzD6ĎٯN~^̏[x, f܇AB\ ĐDuI%cj'SEpM)2O崒CEȊ2D< htjn:$vb1Oxy+W/|E'ֿ1lS_g8w޼f D7"j@ˬd5U_ e03X-"WTgf;Y\;\?eμ/*V$˛{22Q2%KÊ*.,956;6 ?5[<Gaי4˷1f:ztW}ս_+7R(UEEsHErj*e,ȅadeI Am;̶?~xzM(sBv8t[f!xpmQ `ebhrje91%ɨUYБg/GҺJ1l-"뛉X7s\+1f;!ۘ]'Ktd 6X}VdY<p5cqE9 qiUKf 1~5,-,(f'rYMVTF Iq[o7~V5+ zkeyS;M0&TI2r]u(ʤe[gٝWc>kH^+6#&W[c/|{[v,2(B 9رV 9 b@{Ap5cC`rjQ8-=# CFgY1 1+}VVF/y_@w8;ĠT5\N wwԮei CuѷɊ4TWɯG>1;FW-~M/"ݙBXBN5j3,tXzk + 9K;OQ.OUaR2.lǒٶ?fnm>bHuJ)tbzuǟCǘxkHނr=|CM2D#H#!D,\N(E(HRjj1H{9(1DRڞōJU4^[" ;1$i71f(7r=vw &%'"nVD\V̒VڨT=3Hsi ڎ%m9s611~! R@j1՛u79nNn{a<\!+4ȡUdyNZmxD(̈́38n8 7ݓ)B1fҋ1UXb;r t/\/o=ς$)dƞ0Ή'fnH*X2{{=/{هyի-o9a1w|:k 3] ن@NLzfMQǜno[na)F]#RfGX^NZ0DK$˅vw9^ ]Ǿ}A8:d%RirA5@ G{<#R< Mc̓iY7UED>ĉxQm"" %M6)6fʯ;<ΩS{,qpf(ˌ|7ۿ]ERѭM񔛞ރLMp< 7y\/綛0\y'a2\!xi#Gx):[Y[D@n2Q1Ƙ+96j/{1GT2`yyJ I;m̶gOk^`<gw7KfGw<o\\`m6ue w2)r@a%VdY4sS"! F RdNJzifRnÚ1Ƙ1(^RׂhFJNN%`f6_ ,OY0A&,j=%̎-oy_`m5N*u?r~~Z%qUQ VG{L0O#@T%1cX5puX9c1Wr\x.ƚ%\aBJdIum2fطx9&%6f3;_)wg-r{- @⅐SNazv'NH^Y8s~r̠V_&DrTAXIq-AT(02mI 7ٓk1laQdRnIs x牱bPTۈDTcseΙcw=奎cb7d/e;̎~6k`4Fqkk>e]*(BJZyξ=\s3r<_a4PW%1ĺfX'y.D)ِ,I'nj1|aq2nG %AEUE6*ɤƒ]1WҞ=%xCjx9!,8'lZ2Ŏx֦9|vO9;+|lq'#E BWYX58z0qc|LX8s?+'s,U9-'N>0&ZF2UO;߼"4+7dFY c>͘ xij(MFˤͶۂkI1e_~7Ե`Lc:yi \&G%U6Ϝ-Vlҵz#̘O*ѭn1WUY#YF9rY~MC|^Ξ )QVPV!5TuJ|A,<){I|I%:j!j,QHI7nD<"4 &c1qޜmm a0٥u K1ODx+们+RUb*b41Y%c/wp؀SzsebHJh::xjT)pH@/ u{#FEšI(2 h[38Mz'O{udE3|Vb(&ᕢCSϒKcA7ic}\m1WЫ^wuyKdR"ԁMԑ(]Kfs_z?ϴ+8N BL:uuyndfzTr"<^N"ADSk}RUn\s cB{ u_ Ղc1\W?e&%jb}ab%K/{ 7~A˔o:o77=~?+FLf\¹}˾(+eabO'gSO:$b-'Hd՘\Åv @O>qp.j 3T'!bnFZ?PPlIchΘ-9sg}K'&o'.L}].KbIBÊSsFI$}dRoψٖp\:n7*%W k^Cŷŋg=14˛<?`ojP%NûqE/wlx"s3_vӳz&w1[:dLuh #ǙynF_%/FR"BJU{ʐSu; D>>8El9҅ΗHHLKO䅯 *ڱR3)N2R萷>K%*#f\2rc1[w`~C5f| o[0aǾyOIaK^ __xS~x}7u?ru|Ͼ.mkR Aon$US߽5u]kI]'R~<x 2a .rOU)kkCBLOOsqR,9sFZb-T d"9E4gd Lj+74Mx:b:CHHocqU rx2r dVz4btEX?5bOj(t=x>szƑ0? I%wEOk_睿dgBw?W=d0Wjs<$Kr.n9z=N]#{:+ 2^e_s(rȘiy . QE NE< q(hA8i} scynRttC7BN/}-[DR@Sjv]p[Xj9ŋ|_u.pZ=r4Ϝ#$1o=uXǹ9~nx癛, $() C/ cfv/uu6d8q> _ml)LA56VvkڝmUK$ɗܴ"Ĵ9BD$@". R!t}OCPI.cٚ>;W"kV{KO\RׂdӵKvpKKOy_FB u!@[d8'\b13DsHKlDI 7w$D"'}ʼnAr6S"uirc̖.\:şY ̖زĒ~ᘃ_|{_k:I_4hn9Ǭtd]{zutԡyocS$T?3ixϻo_|aմ&'˜3ͳ0Ds>E旗2Kֆ,j:shՈ0*)V9cnܛ1}POЄj"zf%G~0&47o S(" P2FI)1sվv_`cMx4'4iVa!2f+=:wyR 7sM߀:KmYdv:ox_˧I IDAT{ElCk|4)<Ϥ@=po?|q993fފ'\\h xX_{+d4Q *i[F5U9»HP:$\c*㽂C"cVЄj'sZ|9|S]>ܾ9ZP F#2qEs4٩fy&c.@:{:}_8c~ü_uETA'(s썿 Sϰgl@?%+Bg\JY],Os<=DZHs{q} k_."! Wiw2:mOD"đ#Ԏ䒯b #C|y+g}ZnGPgݕw{&hA1c N ?l}1@nO-K,ѷ~?{gkS|`O'^bϠ_Ս|7Kf[܉ iQUW(#Ϧf8ph/)QdMk˜=sx 耩0#uSW9(gu)#24B'm㟛Q+w>LwÁx G]FÒ nyIɞsc1;7j%>WM>C&%4ٕŹl{N'qkwߴ\nS\s視9]00ָppY33=5!2+k\X@J00'cO]CJ%g-dn!MQo#0V{Nu2f f 0wn{U5fmeQgB퀃ʢBtK1CpIӦc+z$ {:RL,_X//M(y-]# )ŋVcW~W(=O*K,/W~) #@ P UA]d2tL %>Fc=+ 5HN5(.5)ҭM>KtR"H6rIj̷)y8I׸˘ۜð8c1<ػɃW'6׽,d:'O>{,-, f{z"xkʈ $a^@Ip$R4)$6vJ5Y?5a;,)C`rYbz#<c1 :ǝw5ؘ-,j ٶpő;GYV]X.հǨe() qHWčd̈́A@&͖RE^Q9{sc1 y c,dJw}?aRrYJkB9>'84fDzw褚dv&9G8k>鶤1c>ՍSQ ח\>tnls_hKBlK8QDέH$ vȬ'6ْJ'&y$Ȳ &,h5&{J1x=Oڶ`-g%sU:}z,S9<`̥;լٔR$6U&& 2c1擸E>k,沰ĒjCFbςa.B`V߿_9%%d٩) huzLc1tSW,沱K5,-v8vl`0PM141c>nZ-d.K,C5 1fҍpg<֧HlLc?1S{,沱Ē9=kcMnoUY]<g%c1|]ԩ9 {˲4 !)|M$D"G,i3#v<٩@D")#ОK}E,J\^Cw"H$|ǽ8gJ"59[[ѱF,E"H$DjΊ8gJ"5EFZ43- $ `Zu٘.\=aqx| NG"H$|4yDa)3-MD~Df$^Z9.gߟ!JKF!RJeYL!^?!B ,bpw$D"Oao:(lR乧5Y^ȏ@"M3R:ejM~x10!.Z;჋D"H$YݑgK"=e@-D~T<~;qI|$Dy {:uU_zٹy1#D"H$ ~VŁ<,A$D> 3cPR"%k-MS#yUSx@ ]uD"H$BgRsqg?鮆Ϗ_Ub-H) >I`ZtF]՝^tXgCg-gY9l_9Dz7D"H$yAb,HsRD> QJx4G$ZSU5˲.%.0s#?g^"V$D"H`Ԍ6DsO2 K*Y ID+r;sd,9X,iۮӚ\8p VNpB]D"H$r$yDa)7T|(] ǣ$IAj,˙/UkMP.+mE{;0"P(]i1(D"H䯔<כǁ=y|R!m+1𤩢WN$6JInpn)ӳ%OwD"Hѕ9_9H89\Ɓb$;c_?`D QX<ܼq߉"M7;iO)i08>9M4W'|饫\fOx'<~l :/J2_0&4BBWGG"Ov/`U}cOy޻u" gK Ca~ESW<6Y[Cn:R{rk'7`D`\V—8{'_,+#Dv-~_a

q F>qrN=w,eK1]ftNUaQ!z~%>mc4D"tΆRb;bxbš]~!잉Nm ᒠEq;s͍1Wns6[;6778>clC۶cI&g<9<.4{aQ98X./9c o:f5j\'~jxY,XׯOuⱸ/\Bp!0|/6y#^gF\qG[^}>'[q "6LBlc΅~0Mrvz|l$.ɋ~@km-*/~@-TY. ~jrEH$17O%wY `BR3xu<κT3'YҧeK_xv6WnK;rY1g9y)eTfJ)M=R z<fp:{gON<X"ȵ%,NuX]|%R*TT!$ mh&̽7eBvC:Wpr%[+chPJ qxxir!;gTk[lŴ7~z}oER <߃+\yEt11wxں.927A(չe@!߉JI}ӉK)5*(-QJ=%<9g~~P 1E1lLܿw{Ŭmڶn5JiA ҥ/7,D'(},տ߼Ksݚ#QXD.=g{gw#=8(z=<:= 5/ p>o]u\cA g[82ͩT28>sͥG_YcQ^`D!=Q͛X X5AfsspnAoճ1V$(LmPYJ5Xk@LEre]t]]˜~I*щD yCɄŢ9u]gVN=#^0yĜՆ%llʫ?G2d8걻=&KSѠOef^M<9$~= [%UW[OeZsu67F CT#F4r\ΨjCm99^71-PR7?lE"H3E< 0 ) \+W۽YL\v1β\̩jˣ=or||%Cyuo܌ᅣ ?O n]@JI*9KB;vq'+ry:/GJ Y![6AH0}5͌6̗KZcHdFv 1˳Cz̹*v&ۜ2;8S%U]cMt!BuUnI3Otsy3~Ypmx4`8Sȍ(?{^G ypN+[q[e$On x/[a<.C A" ]g%{2ޣ\VYGehPV%mT !0K6&cӓ#tڣH!rrrLݴXcb^N/ ֹlЕ{{S=]B^()xwHs2_-FswnTʰ{u$dE֊fzu1{$*Y5ɋ>Y@zO2p^G|? q;D~<]I u>x}w%Bhm ~W6;[xw6ͦxI*Q$"C=:´mf^-"I01"UOsށ.^Sy9~yB!Xki+`wwmƓ!{clm2ɠ`X(ÜbQbZ^8$Q$K3b1mM(p8sƲ9}v Rż,Juⓠi"ArAY4,VSrIs:' bd%PsW0aślo\,X̧3g,Kal]QX F6X s_eHtO{ v}n]/KEl6b %5XH)B&xHrmSi-ɒ$Ks/{*+XW3?z*a%$IUY0kJdpmTsSL:֘鴦mZAIP)Te)h%G XTԷ,gsywY,mo#<~|;~ubEі 1N?g}~Ek|VcgM] eN:^ӣ4ŴcE(2Ea)W4~7E>+;K&7n죴d>cњ-Ts>~ev6 667 & xDz\vAijX4ѐ^<;k>rG",jպwB,ilv ݝn]djk׿:N>-^*RHZx״ -3Ŕ\bg9=g~zlْn1e(BWE4*yѧ3F4) S拆t)GGh)4uKӶ ()B`@j!7RkI y(Rx /kd[$]1 KS +$z xNΗMS/QY! IDAT`K6{oqkoD0EJf ER$ ᒣi K&L3IÇle,ϟ` h= r~=RVKKyJTk={qi)$ubQ]>TZ H!묺 9Fa)AB+d6hZw/oG37^+n14eÓ{MB'$M6V!aFhs29z*84D",Pxֺ; T-ial2/ÇNg|}J)k٬qR95BKXLgYJ^d$yFo5To_eC<[A+Χgoiچ61޺f1?u|HMF(oi 'GCe1*g(SZYԎ7(dIF;p:75q$\(i9-%R$^F=&Q. ޽χw5ŷˣ͂o_M&[4G539~UgeZQjo F-YܿwuUsC?7FGc |.BPW:sv+EhDϽY3 Kȏ /s =F.ߝ'2n/qt8p76hi=go%rZS)GG4mDK-PbMD"TZJ;o?O5|CI}"H䲸.M):ܹ/ }NO1ǝv֍~GG-X%4-,Zf5urxz7wq}gU+x1 g!CdY6!.bB ? _΄]o .u+zm炛e| \;Ř!,gs`ѠƈѠmip!Or$IR)HdJs"QG6"Kp:.$H]`$ZNR:QJ°e!Fc~L([Ã)ex.iFm[cza|TPd<gq$U$7xřޑ { wn5L=z'4JizzJJk(bٴ4EPA1Kk/``g=BH8އ쩶)D2椅kXaUsS֓JMo8& !՚~z]D+D`,nqs~~Fos~?gxRBx*Ӳ\ԦEI Kr5;$Zdx/8[pڮ2-Lt&W tAeo6'g/+ 4gs8?_RV--ABrr\R-MUNJ>uX:BAH)hDsH"??~ж1&yeLsoWӓ3=Us怍8J@' e]!KsXk(k *P*!9%SaM؁Z-"H$^\O*\k DlVBy+Ν}72{_Q@ &lwŴ-E/gkkݽ]⭧(zh-I65Sמtɼ\rur期l 6ks0Ƣ[ʲy`X& BuTU1f]b),uAއb^iIB'Ţ¹yK|~d0})WLJ0B)z)|+/~6xG]Wmp(as$@P73Hs%>!ӊhU\g)A)Im քɦYk8[( %ei f Z OS-PZIr yF*thoi%45wJxh OjE^$Q/'HRk-Rye,[ $8q%Y=t.d9QRjE% )K9kucho,\% G%ypg<4Sֆ1Mkkhj!hm(lۖƄLVxrL)+83F O` R[r y")zc8uk'C}vhc^"D Hۆ58l۹b{TBh,,[.ֆ()0mikX:j( IRE1RFdK M~Y)idE|д٢bREݔ(yђ,KivE/|VM_>r O{z @?gG%?\%QX|!xѭp_=.a0JɟGܿ"4QdY1$M֏B !Irx$MR6QSˋ/ߠ/OSLhe.H$IVv9j } yiVm貌 m:!|Wj"/crcjǶk Zw8i 7Fܾ~~/e4q ^ΐ/o~)rrvH49˒֟Krkg [#@IAӴKYJS5Ɲb$MHgK͐YS"*KtFXbEQd`c1¦ź89#K[0e[Kk B+AJ/%Q^_>5=f9mې(E[T5usڶG^B9DzV8[38փi[R[DŽc^RP HiypȄ>^$$'I;5xӒjB)PN&`CJIu*Lz-uSΘ9t@"HD+n`0BD@kMJk,MS628-NptkBtHaLs-AJ4Bጧ5TKd`uCVG(W˴&'I@ ֠@HNh4 (!Ht"BI\/p,sz5םYl (AǙ(PstNa'>JP:g>2k6{!a?4ՌHҌ^/)w1XX,4Mu$uʌZgiȇ{JBWbqJu-lOwɌS(,E8޷Gq0>d!9.f^5exwI!B鯜.89AȚ ahE,iꆲ, Ϻ@C`J'XgŽ!w)Rn-tw!ł3lH$#Mn ~Itއg?B>DC SM&5BH~7wWX$A41lmm0LZ8>ZOb8ybl 2 AϹqe5Xe4MXd{1Ta?xRQd9Nhe1_"gXhsu(郋8ki۶ T%mtnFVqX+p^7lo8oXv%m^ DwDSdy&)to;Cfg :{ P)~t~KNT[:o l_:_z [)Q-=ZVfsXsdbd򬜕Te ޓ$ 9x1 !,\ 2}2ŅcU^#N;M^iI;KU.Y,8y1`gcxPZsoT:dy9H¡@֤"ULR.CgZ@"i/wa BHA8k)6-uS!"I2Դ$Xk+!AY]F`JR9Bz0wtApvY^ $6<Jp,g A/H;'C(Zm[ꪦ1 B~UBk4,xh=w$ưv’4 ֢\DNВH%ZT)%RT4mƵ[MS :vA]Y1RF!;4*rccf΁JJpz^RditA!/^ y9o1 n&/">QXD~ܹso;-D-InamIU]+_yԞtH)P*A+ZA+q> t#+zyBPJcLxkZ#m YZP3N&ZUhmkKYg%OϹ y (X#H'œ Q^)d{sȭk z,99[иb4A3h:, ƴYN4ܾ֝s;gr㽃mzEJ%iI9IvI[`gWE',Ӝ5G'MC%C)p`M&~p@&){FbچX#M'OSRxkӇ-yII4$:,6s8[#(gѰG@*e,1wAJ"I(](%\2bS_gsow߽ kZckCUv鈰$/|su{%Y`5׸Wn3p^j Fpy_ GGy*CpKvϑt9Ǘ D+67\GkbmNOC>|vo 9GZ _;ܾs~mjt$i !9Ku4Rp'EXtvH>avl9ErYs>]rCe&"z"3ѺJX#Z?E\|uĥ^E<}}DX/ĎϺ)FCp˖[ _zo'GU*rX] ),~KءZI hD֡Ls&#ܹ+_N[rrzѴ"鍐YvC%_xoQ\:w^͍WҔk7q}WwIE] Aҹ0Oʲ Ӷ < %-["zL$Rpz>)L^IM ]&J*AIǶMp)hpB*O|p:xV+Q!HJ,e,"N c-xwIh"S8V۞a0xrR{)#edPFHmJƈcڔHBuD ꯒG, >Xkhoqo%Ր!ER 8c8>\pt4-mrΜͦMi_@T'OY0vKuĐ0sla!GsNOu}ױPZYC^SEt#V{WGߟVX=~ Go`kJ|* yfqb94 w^9X4}zg'S~?8e$˴nJcm͟r\]rL`8+L$bTy)f|xo?}0 L3UC9=P K5W(=0BU%_.3n, IDAT_׍ bu0OJ`*/yȉ^5cr)K&EELIX)a&kd~RF@(& ^RF#+[nJYV^ܔYa) q+PBHhT7OfM4W|ⳟ~_OkjKfG5Eq~ld(L˂Q%K?9d$'IpI0D z[9Ŝ߰]) 8@ı !J`% lҲd5s;t@@e2u4N!.aD!<1@P |a $H9uk67$Fca h:r]zjú9+;wŎ:#4xB_)_{ZyBEV !Li,%GG<kgɂYI#zCGfu T$N9T-B[$5n~ g1ET\39ݠ$RȨ2]vc(9U.8FAH)kK4eжXGnMep!%SB*ǚ\L$}m$9M6R]JKD@1btL9T$7 drEQ1$CJ̹rZdQP|(-"g5P 0JA^W"I(YQ Eqm?V UbH#&053gڲlv=HAJYJ벹P6t"p}jF"h0F ]6V8] WURdLۿ@]}wГcᥬ͂,Bw8+0bm/X)Ium?zaH8}/"+|ڲl*5|Ms"$7-Y]^C Hso]9",#C}džq+,?_+l}dE_&!VXYsF8F5[zOHS;4E͝)͊*6` <~|/k;x|㏘O[6<|t͌<3p,#L][b$4V3'{}(b%[Q?R|tL#%{'H9b@ib΄I1àI6H?Dz/Y5Jg@PF8 F8M{yVYɓRQGWGl' h?d:H Ëgzfq2B3S=I?cF-!pP:)┆lYH{i&s(BT"@N -h}|!L-J1 sn`uuŋ'wǼ=3.;3.ڃ%vdwz~ ֻ_azF4Қ#V)(bQ:Q9MR'8ɄI2KāmZbd)Ui4Ė]šL =6ueA%ybU "攋+D)˂w5sOSP׋">d ׃֚eU;bʲTZVZxj'E1brF꒐uqB1PD䘉 )omhgS~'_nVq΂~ #W?:a1,*?:a2kei.[_+0D{iݲV"ֈxDs4gbqJ!r7ah(m7 VYh²Q(7AyՒ1 EVJ4VyhQf?,(mq;k#cIeeGc>`a,xk0@*`|4!Db,uF)42ɔ"2F\O|LQ|پ I,QV[}r!Iܓ8VS*j$^Z@>F&bZ54"+캁Gz%,RՊni2Ztj B%f'*2yvd0:tYvV ]AYr*Y欵#1h&FND,2\C" %~0 D/b~9g]Q,XF 3n>1@Xij!:?Ǻeocj{G_Yt:gXolmlz{}JecnK_*_7ƟEpN3_X̩jyd30T| a:8\( G&9ɓs% cN88:28,L(Seۜ6mawCg !eN_lx<}v&2c~?fr?|u"iM,YǨ6!pWfdDd1ȚY1~rf>/Đ@uL/qb²p|ٰi6V"2eqɄ٤F[o;{?c4гn ?9=?Ŋ/ܿ3n3jVyj< ecdl:pub098>5݀hTWFa&Ԉj$q0qC式Ykq=h SA\)K4vԵf =C07e5S"]21zO7 5qi/X%Xī@ b '5$. 1 ]Ym{!H}Vt}-η T^b"$E;3?:^$Whcx脏}l>}ۏdʝGSElD:BN"L.r&@HPDmiK)G/7ƋB0tK'j]E<Σi6=J2Z"pP,nT`̩Z-SDzA)s溹M 7ruu¹JWIZJQXΉ r9qZ7]ZIK(JQta gCLRF"tIh%BVr>*'V@L"yrV?`RMJDX3FAeeC•Xk0Q䗸t=Wދ)tVCcU`Rr3hD bhy Z*?X ~wi_ޒ6ŵ: _Lץ1ZVx?|dg ZiP9szxFN{Zl"s, glUϷ?<[~Ƴ'/dEU76wni}n[a9>OqqQݞEd;i2I8ׄ{./׬[JqGoQ)SUO~zG'(3=1y9@ d!p|2Em̈́f4 Cs7dLm Y<[#ǂ Ie12cDVGtĶuM]iRLO_~'L&p?:?gמrzzl>av$+ݶ#(v;p?ӼkLg{ߑRb:;X-9FɎf 4͖5-YC=}l7{7vG*qgtv Yf>jyd>oY,k*`e:rrr+y舻' 2!D!qnveuW//y5ӅK'O?->QYNE3]:vXgY.?6O_җ{gδp:$,Zas(.$k$"(%w2j! jg(#]1eZU(`y8#q rETTd$o  YZv _GSbR"ȁ"x2tgQVrD% :(u~aP`]M O'+V/y> ۥmkג4)-iNKh-Wn%VJ>wG3>oqu-ssۯqpưdc )GSU75JHID3!*œuB"g[rX74Rb1JDj7DhK9E\"@ ETڏ9IiSTBV3VHhcΙ D/F/q-4Uتjir*F"m1FvÀk-#~a9S[[Ui&`%ed2jr7g-1 S@4") -+N%*3)e0{De@Ip_h- V-,]7nH0T޳N iZc&*)ceo/$w L8R "+2`atXPc裸"'Uj&kr{+,?>>?<|_suߣi!~~#!*hJ|ن9~Q;ˣwxGL-8 6h%ur,e7yd2USܽY. ӗ/Nb//i'-u#d1R6zKN۱n%z3(~g9)[}oJR?94cVv7Up9mjr%DuU-#ѭe79ǽ{KϙM+bL=7άOaGzo1cbL~u>L8=QL' MSsZn= w޸Oʎ}l7_'ŮKVWmqp1&$;iqy#@۶H`699>oe6Q5*z( 'OlV+~M34զ'xt*LhI;4 UX-9 ]NEJ3Tm-Fɹ_}gm\3T 8^90 "C4lC3NaU̓*|VOj;<^qt 2%>H!"\ 0pRrhZK.)f]K~7;O6 ZN^85m6N;$9|HAϬ.0mqAPqg%8:r{u o%"NƜZ#^3DmS;Y,, P~ # Ϟb+rjh&S~ݯw~$&sG>/ r% @DE?n{O#rnK?U~~_կ.nOpޫ(cZx3d 1?; ;`s擙$O1LI:b!4uzul[;R -;uRI=XUS{OuW[0^]~d:*>Rȭt{|nrȄ_\*E2F+G5Irbr~qv'.fwg0hjs&1mxͻܿd:u֢Plδ.13A_આ8v-XRYJm'u|v*4MJ3QVblS\3ٜ?aLHՎ;ήQ)izsvI1JG2-nyq#״HNNQUvehCy^bSل򂋳421g9;[X/K`o4;%UPj}f3UԵc֐#74u%jB̊kG0RWF:aCΊi0i##=9;=&6ј8JY7Akӥ {\`&q*NeGc&E,XU]eGE_DbJ 1b"s./٬78'rxtq>9b$ ÎvMC]I\8g/-hf"DrVhm!svXHFAHZ* zhSF.98Ggļd)KFQ -MHDFUA\nkl#|S qҾu xqS("˞TY}tT#|"i#)b r y5V9IHD NR{Aߝa'T,2Ly9~Vk=X0s_h5Ǫ|÷ 0TQFaEc);rݎ{GaPd8xXR{TVE[Y;nG+mok;G])pߑ~B̏ŝҦU`%RH{8 ~hHb LR2YtCS(O!N} 2*IюI;}v7^˗g|9O>s,fKO٭Zm0`bLuݎt0H`{\t,G`N}+,?ǿ?~ߟݞ:oD!+o w3MF+HeZ{,?`V6H!_?ܻw'?mmH9}nîHI! Sxm;1,Y&-wޕF%#2JC߱nb!b37+2kC6zkxǿROkլWNx{F gNh[Kw[ʖ p],`39jb1r&b!4`u$j'<i@Ս{~I7$B1+ #F 8gII".-XN gԍ /N_/65)mQې ^M15hװX̨l - vUև+VmG{G-G]suqzEzmݣC.F{|@>&;n D0bIMm4ueH11V2G)i[:as"N64 }I`>mEdO)VA4,JEbl~rI`/p, pkfI*MY`H$ e;ANjB$F⬨KۓWU=1A;ֱoY\+AS)l^ӣ,0ȔY@%bj 8̗c IDATHٜW\^ +޻',1 r(rQcklPL>| 9f)N1Vqp œj*CB]E/@uP9;5CIbs؞ p,SzŽ&QRq/')fqmCJ|9WaSFi Zpbjh ph *(I]3g}aYquyFbPL&S^y1%'wqv~V캁{k2V[%k#0n?GUE/<|x|ť9ȓcIROF~v׈ݖ)H51XbGx`:PxditvIF*cPpVc]KM, H$@mUԇ;qnC{(z#LӶic5M#-*+ddd6kOfIM: "랧kL4ibhPayÓѤ/x5i@ǜfYڐo|t}$eæ_e8#T*BZ$msX:'<4|*=?WPǘ׎Ǐsr4pɷ{5OR:1DrDMۮn2 0D>"9k՘>RDYp =j'u65UU 8mz}(0ZY\bʄ?X'm|&qGWDQƒ"ȬSG6zֻ[i$ϰ[xC1m*m y =UU1̨fr{L q'-NW1%.WvOXZ<4"\ 2 HtKG)2b͈04uUbJa ZJDd]mcBۑ;4rsq1P);:-*HS9N)L<{/#I"!r@{QC K3PD%K9I\yVI@!~Cꪢ*Nf9CݿuWB,]V7Bx>2)؂)@{5V_pQ`.cv% >um:a3/Gi턾ꂜ"{wQ*d:}H14CӶeY3HTI?j˿m6mǷǏCr^Rz?a#xKr눕A uS +1:S%j;DW«sV&$M|t W(=vtR˂Ɓф\jr\m:0 N)Lyptr2o=n(m. bADu8m! Վ<\ѭW̎TF\]^h[jˬ>"` (Gt5lΫ iY +#YGiJ{TET218a\n6YR<}tM[i۞ֳ{ն=}wE]Yjpe<`2mKe3)zrBvKJiɅ"zDb<|mū6{w4-8 RVsjBap|>0ns;ƀDw{Í<kvǺwy)T[ :IpT&u} ʤI1W !9s{NJMT Eڜb6)q3%W.d!2L2/yggi[C'.aK:cZqyy'frxЯn+qi#;fi&$m3RYޒ| nPduvKTM-"ʞ3 /&3kA効G>?9Nrߘ)=M27K%)+hU HNXF 7,k$H;R% ftEt\Jk&Ų9h"&O7#l)]JkB6 :3F1YNTyNQ;C7$’ٻqQY۵{KNgqn3͊'rXdexlLIb`ɚ\"0%׫r-3xX܋3PkKlL뺸 nx'Ӎ~7|?Q~l>~l/+QqꕫX_n9KTLc%8OFR@@hΡbaϩgn6JI48+BSN`Z ĽQ)bĽf1lcoڱ^l"WkNOϮVX=Xo=nOvc,YR?;5ܽs'ΰTs'RHԍ!795'mn/x'|S=}Q~)#q[#·2w^ʤBU׌߷?GxSW*~7e|d8+I y[N͚ˉ#/f;bL,H0L ~ &svR㇎𤋮*>aK"wYѢ4 [vf̏3zCmꏄ[)sF04jT u֖guyh ۶ ?D]5ݎn,=8>w,v5)TR G\F5ilPNBji5u:_eGNKZHGgD,\{ 2 >**IT,>!;*垊Q<2xc,,bϸB_ IT1OY(e-{b}t6E`uNr[1wTCs󟢴!=mjvu8Ē,am񃗵~}r8]9s|acJXʉ"6eBm"i x%=J!JѕnDn7DE7WN JQ3P})|$t3o8}5-QG*^UW y&xܥ IY%-?c͂-KZ{*e0t8oDd2%Ύ4r/H+qQic2)eVѹd+yL^3sɢJ`\x3:x288Y!,Z;U1Fh_gr|'r[G$euTǼU)b P{>\IY8Ry$}1֑)g=o_7:qk )DTID|.Em9jҼ:Pw_gNQ0 pd9{?CDcHy] GMl,SkP״^XKaˏ?|ҿ^~}'Ք1gpkrk17޼ˏ} &->Zbz&U1d|ݮ;lqk&]~ߣz-rlyO1s9rXQZXžf{e`:8uƣx?(yE=Mz넯T4l;6 1%f9!tmMԤUc,phc9*yR  @1he`>lmC_g7ޑzؗ4l!KH=!08">┡;1/&:s|񒓓G<{̭%tJ-z巾xwG-SUkryʉ1UF\Q:fUrdyXI4 MݢMhiwkN Ā 72_curMӋ:\U`Q%5}Ilt6gEa+*#wߒ SM)ʊ=}di/Xw9&,teWh=_ өd |Lt>W[&UAe5NZH1t]G5αfl>g:}$%{ =h7%>`yq|HGD\Nv;$|GAD)Y jfMqD )G>&!B h !CBi:4u$}:1}.kCV ?MS(.*6Mdz|Gfufߠo;7<9:9C>*޹ϭu>cZJqF%?:axOԊVknuIYBkk\QZl1Ȑ"GbTiF`5@yx A`:p# 1 ;gb.6йImxbG{'8C.N/R e%*bM'2R=_W+/J'3> K! F+qX'}JZ*9 s81ZVVA3G*7 C{|),5]W9s7 7tuaԲ4D[m#N 'ܺ}F'b0ƣvPXaG{yȢ%fgK^y匲(ePt܈w-MKQܹ}ΓgI1q|3{r|EB4O?gt-!y\U+=~ky16',\^ϼf)F;>xm߳^my9|5m裧r`z( ~pɳǗ|o8??US= EyvKڮk e)1\SԷ*pVE 'մmC M`ݵRnz̶mNϖ,3rˏ+)o3h+\Zr|4(J65YO8>1J{"Y_VDiQi0QVӉ7 z`Zg oJ(9\jc1gIPon %rq/ IDAT57ϟR`>_0]st0{I}ćVHO"[ݗK0룸}B\> Pڠsz~X̫Q0482pb"wvRϭ@iI8edrȔ Xh{JyǔYDvt)w}Kcv=eHo()XwFFXQ4]OmvP- 햔Yz+T<9g>y1cSYfXp`s>}KHzpyyll6gR:HpДwR%cܘop;!J8Tc< KSH\`+) J.K\)avXcN{CàZ:9ω m$ܠ}|kZc:?h z p"$4R")[2H;O+P/p lJVD.I֊Ge֙Q3JKԺϳ??1%T<(_aSd_9sXĔŕmFY]6-G-B~M9gGnRKe#/kЇHz?mOj0{\UVeM~bnB 0{(JLy9=oy/r7ER*7p=G0>'HgܟUc.10Ah'ɏ{=JE$|.*c,n%ŀQp]ںA'bVޢ(V)z.t%]sq.톫]U vmlnR1joe{),xGU/|̷^cc; >P 'o*ӊ)1dXOZ*aXFnNnDښ? Ƿ-m(aRk6d}G׶ĔX,&Xo&ett Ngsʪᦡ=ĤP:VڶaT%>Gł/x9~נ ێG|u#)&wOo{j^8` ωJBS%处dmb(9;_[ȝ;T'Ot=k>|wyZ7<,J4u<[j@Ci!zMӴ&1J )eYk^hBLgX va^S@No:O/hmnPz6vKVZ= D!Wm/[scy9g'Gpܾ}٬(,KtivyhMFf/9XZrsk( \jp*+%): <|T##FOvR;ݎrP/&jXDsS]#h)Hc#$PJ*} F!qz&d7ʕ-]ǘ0:\R04Q@ҹ{F#mZ-cOQ+ѣ v=qы*ٰA8{JTbk- ĤLfug؊;vf|P!u:1*㕻]v^KC)\Y"-OH_l;> U{MkJ..n1_F4ՕeAQXɾi@CSga|HYOYĊy7W'LBGQD/¾B|c7Z\$!dPLSϥ? ;l~I@O0%pkE*"fӵ9NVxV!ҴMMS@m[ڦX]_nX^_QMfKn߽L:)P}tR2JA,#}LbGڶ'F|>a:Qg#6a,jhΊCLE]Og'JR1 %טzBnz\$0H[1F6;H#NL#^^!1AxqdkS1% Aѥ52Au"!B5YPVr:`s+, KQ95vu E+͂4i3(C0_{2Ys=}֧3 ^?SE Q>daO F!Ҥ8rt`Y\@]d %IquoY};5g%)6w튟R=1mq#Y5ޥuH='|^x)]ߌHm4露(IS8#G]CT }nmhښ \T V*ۆնgKa?~Jamg?u~7n 6\Gi`O\&3.RJlV@s`ƌ& 8>x9}_锏Ξsq看;,̔%[w^1TՌ=;cˊ?u#-Z2 -P|(L&e)"sk]GU<sh"M l-uF ^LSV5!GW}o}Z}wu~LU:?y{1^{U)I&KZ Gg 3l7k\oV<ydفڸRXz0ۨ7}~ws|; _*SW06 GO g 6 7xÇܹ8"#5mS’&U(M7}"q9`j/bU\|]7+tn0jtnnuġ& j?f1Ctm#JSjfM('ݰ\kv!`"v( )}hY,]~Oo^/?i y{F)Eϴ2?k,+2i !>*dQva:-^&*$3\3#C}yTv̪Hwy@D-QrfIhLQQN-K2[SA\eBޚ&121iC!!IVJnXNlJKaT bd;t>Qٴ`:P9P gW%v'%Oԋ@{0ޝ()9Vp{~hu9X{l{aB9>9܇FV}7r#.=};4|1za;1FFFUY/#1* K1 KA2]YPlXJ6W턬ބ2W%5arӜ7I tmG;RQ™ʜҰWDP퐌BasAʺZ)B](D10 R1spʵ8BRVCT(o)z&RPGc]x}:s Hb{fÅHybCmp-ÝڻS>{,;2( &QTJ8d86W׊K6nd cn9, 5M[ sjeu΢!$0m{ʮ!) mPEp=D맸ri-/fL&ydCGO;2^pƐbG |5- OْٱZ3WQ8f= /*=f;){HvXΣ#6_3)ns51xB3, pZe4fwNv$"ĝ(:\M&:Y֫?|񷸸W HSNZ2`Sr7C uhݣSRkj5u*KڮfZ˶TzsՄKhej:vc۲jՆj҆,RXz3Ŋ~?'o-~ȷ FMJ-) pRehd%)Q8P8s~꧿OxiD]8:_| '4͎znf!)tN5ST3bLt5+ڶhl>OajMYVTer~k-8tn!PXP1PsԫkΏL 7NuR§%o挟cops%EuR fUGKU$ٓ+jt9;_r,pӵ[l\^]c +÷-]h[JPڽW3b'mm 'ǧ |19nٮYnn,KFLHƓBV%)44L&cex~U>wZqa: ZY|^q~>')hjMd:qt9o=/xpb2gC>X'A^}LtЯOxC9;pӪ"VdQl(&S@QڂD0|H$F]5mWi 6 ͺǚZtH$#ܤ JX COA\Qbw业E@Lj;< _\l8Blm쪼hUbg3Z> ~W IDATVL$ ihXS{HXcRQh5:/g-MV5#7O~F#qM$(u6n)"Be 9V<$XV>J'Jc(K BS`#a0V $tI~- gqB/,s(קƁP(IL~7FIîm h2ZcQa'PM4uM${ASmK<>D|eqI̧"9;7CԲ,iv5An]ٳ',3ݽ{OQj&.\h6m+νt]O)QM'}϶(1%ď&#]ݠ•MC|< h b(@ BR_pV|v<6Q+ '+'f+?hyĸFǻ!86%ǕRnΚ8w̒Kik4Y(*B!BY4b~kZk5}RcpM3KPm)q#U+^{1*DLhBB4*ʪcn8F_L7"(J\n≈E ƒ|ǀ"tJ"Y7\m|NjM^O %l(hR e=JOԻf_Y1jS)x!Bkh{pF'XYv4]W\,X.r>TKͪ%e<Wk67lEx >Ѧ?+K/?$3 VfcvDs?ۼ%o/ҟ/sd:t&@L&\ OL'XHdѶ-F[Po+T[]Rr+*iz:R \~dyrtqfx{OulwۼEu8WcR4Mf&ۜ;s֛O>>kkz.oI[3>)m9ԨrɳK.]^ƑHŹD6mfz%[nɠ4RJl5C儲M`0)C0d pFDG "H=חx1k(f fdJY&Rd@lJEi buy5ԛUKOL-XNNj36 ]:izAJ`YNz5l;b4mKZiy)XIgYfs1Pw&Tѵl\M‰隞(eQzMRTzEQ8PN`ycɦט|`;lKLb/ nWD[g >)لl4r-lQU%'' frqqbQ (ryJ Hơyv>mhmlӳn GQ!w ͳ6ٮdc;>%Fܜʌ|هcRS y Fk"H+W']%wƘy#VK%V#IC ;f`$,ء iph o,x}"ͮ&Ƅ1pe#qQbs`Ӽ(WaEJZ)c8THJ~t_;˚ 8rI"*J(a>wZZf45:L4C̍k1R7:_IF#=0nD9X69dqTQih|-۫P*U~b9fRHE㓋J+3¢{OHZL1KVc .9B 8n|,pgӒY7i=>&GDŽprRqvv 􈪨Ǝ0֭ 7Q^ZATdKAȉw8WR%7iF1Չ)uH4FUi\׏"sմY\|}(hx {3q"x_s7@k IrŒ"w"g?8>D6U^h5c~)fH4fd֛l08@E(h?)\M34fDS-{KI1^b9 )刧bb&ffKR,g Fɔ=]ۓٳMǏ^>t23{/LF};?N7m woW*>a[-dz!2o5_;K߸vŌ&9&Uhƽ+;l7[V>tZfZ]rf۳]״'i E&lu"j  Oo†͙b:kb$@ݶlv;]ݲ56[nnxr4ګGfW7+mG0 9NjUqRU#9y8KfM˧6 #UE++Gjr+7d>}peb:#)˓'\CtbAJ1޻rzvp/1Jw*y}vt:jCԬSjpY.<ɂXSjCz]AGFj2'vu5eJ0!F;dcXB+Bl-GIhaU$Eˆ . Jr6ATip0$Rv$9j ))WO>դb\NeYJʑ9uxY8nC (Ƹ!> \s=5l R,3J>$qO [q[iNj_+d,"ݯ1(-5:;ySgAUp5:6@H#)!q\ yy<"H yS9J' >tQ{qa5G:fe-bt8mƊ٤햲ty1ytfJF<<"CQTE[=o[aRL2B?{+-APnh+F+J38V+;gϦ^J}\Ez=^(e0}4m嶶hִ| i\J &_r؈F(ŭ@gARZiW\f Qd X=(Lzh%n{+VAkkc "ygq5A%8n% W1Qa,A, gTf EDK{(dW=ˆ#FAt" L~^mQP m+& y \t]K*@ͭcZD+jӴr=-6YMSY yRfIKI i-g'%Q#Q"XgrپxAQ. ϟ~c2w;.M ͟&91~\䥇asزBē!4CE7S.x9i{)(ùtB۵lw5JhǏ4u:N*qxhNh"qRXzzh/I*O,Hﶳ;\QX~_bjbsOw1 Qi0V3hfSŹAJt}͍4K-D5w'O.JlIIsG1)eW@h|}r Jm39z'Ip>4>% u]4G\߬ 5b؃:B:mwjEvHJMAptS*la~B݋`.8b`]lt,&;e6akv:םFӅ%E oWm}d rכ?g:X,(rl (dHa D'Γ̗TՔe$uk-C‡wu#;kpN fW{NLSvun4 o_0NYEcW>%EUbJЎfِH7.=ϼ~ϴ{7]ĉɄnܘ 3@#8C}#$!M$Įr _7{L~N+]Uw } _xI] [g$9oXO0" L7w/^my7y)og `9?pӡĵȉm0Hia=J\~v;1nkP],B8pKYƆbY"7V˃S\-f)?fzwy?g[?{Lx ubٵ TsƬZ$VƐ< I#x| ?1o>%΅?NR_krDE@·&_G⯄3F;ִu{8A6vƮfY|;]=ȋ_13Y./:g&no_ ݖS~/s J T Á?)g CIDV ۢǑZ_rTnnn 8nGД2N#yt:bLbv@Jc#%^g \5wc$w~yc'}):uLTWF|;{xw߹_b Zxgƕ6Eȃ:vb|5O]/R!|nx?gΒ892 |[ UgVϲy Y P4 -zRe% yV>T]છxk4aF*Ð-[ڢ؜tG#YSY0,n%,0g<#^FXSKfqQZ4QyFZ{]jR\\L#sÔ)7{. cL ]םTE1NZP9R؏#4ml ǔ-LK{vpDZG`xđ !P 7rxr}uI߉4qy=Ӝ8̒Sd^iKe1%g+^Ż _{ԥ IDAT'g\n;L>;__P%Gя~ч||ѧ_Yruk Aj뫿rz_Ck"T^\λoe)5]b\%Gx}Hc먪c%#qQ&vgl6.Z"ft٣LZIE:\`S?CI1͵uhxd+tA-#UĴ,x]:ax{. x1ͳDcZSZvPE<ڪGS8ck%9sM긓{y5\19'r(Iޱ}5n?5S28{-ȸ$tAk !DI COu8CjAat JG C7k>'5Ӭ- 9{[FIz-8jZ4J]cJi "jwyVא[Vka#! Hkw,ѹNSMs6hss.Xe&NrRFk,Պ8p28|Nt`mQ..YRR!ˤgD) ̰ƭ1Ъ'8OY%OK{8 e9AIx祠AMVV,ֆ- iV'_!+[~ց&_>ɓcߔg.8J3=bm'1b1s< CϜ3/o𣏹⒔ o>r{Bx|@.i~}?e==/Gpx7߼fwnnx}sϋzuxLGDik6! HM->{kzb#AB.(*o?az- /pFr7g99.j%$.P0΁ZnsA5+IX8CNxN;(L\c 癒ff;A^Cr8y( T# ZDBymJ왭:Zs_jws7QG`-EZ[[N:ķLND29E|`_$B1Q0Bpڤ'JN˻ꌉ1+8@Ji0Fbӧ%Ӣrm"@W ZKY\RC.WuqTTAq<))Q;rAq+YSKT1Hօe)V(-#5&(bDYyEV/@XD8*~ƶggu '%ƫC,UA)/KeO-Db"Ӹ*`yZ\ϵ%ťyqFNUpF~A} 14⃺i8UhAY%sQZ*| kɹxP2+wm D|1hBx `j,!!{m7,z͑3j%V"[Pi-z/Zc\\DJ6dq_bK+rS:Q0@ܕ S9aTE1pH5z*Zm+U j.y3TkKYK^orZ38ϐK^ sBL"_\@`,׳ ٫,Op5H .1c>FVsnn+kVA4CϹ;䣿<~owa+y{3832 "rKfls#qJZt ܦZ*ss|?gXlgέgW|=ι_ Kry+X>J3'թ QoV5[\0p}uwy;!ڤ$@%c(5x#y5$9l7=tt}2ZYC`82RC/a9Ɖ]#߉ g'yhq/`@_-\__9:L 'J̓ۃ0 l;v[ǣ;KŻ؄g҃9SJH);F`:a{+.'ldc8Y3&`^UI9ͤu[S\c qI9QlN7+kcE2xmC.*`R6wZWdoE#zq[^p癔%0O$[/%F^X'qd:Dco ' 6g->9*;]1Fn'SXYݦCa3l(Ga.98w>mqe834er?̲;9vb9{?s>sno:e^x~fնЪѢr:/SU6_u]L>:Thj4J{ͷo#B<3̹+1E.AD gl0*1=qҾY%#i+oE[T K%(҄h heoNrVĮoZN:G߉8YjzG \ID{#͕n= cN;ƔeXPa8Z$N6«{/NCPlWr,*uAPĩRWbFlC8:H1S^DZ_-ExE%|F6Eku.FcEi|Ů-֣LDK12ʘ1V4b5ѢK'?Lն(i4"uhjFɲ4G0#9̳e_]IiRwJiB 7^e %EKɤEw\XfY#JN] %'y9iE2P"$ƅԹD ;buљNyR u<\Z9 F:<9,2sc;+j+<ŠЭ5V*Rȅw, yĔڠeTktq$F:wAguѶBS6[fڂTr![uߚzTN3gQk$` hE^-TB)Du3.kT\j%*Hr}m 5QHJdׄ%cr9mwJ`$zG煕a"|D,P[{/M`kˠgY9\.L _Yйk`gL@Yo<&sH>ȡ*طƵj HP`#ͷ-·Ofu悡=rL\_)Ϟ{E̗&ʍ'v?_3L=λ_ KTSRHSsXTCGW>PctI#PL={1W\]޷Ɠ춞4M SL Ζ/_p}}%? ~>׿6 ?488;XOr;12M=/_|<(_3yi臞M7wmv9&M1lpSxef7;o: ỳ }Jq'Y} կV EyOJ2I*cHq$YA J8 \ƹt:[Gʅݑ<+w%t |GT SHJbNaTLd4Z"[}g Ũ%ڶR-R}pfpƹ<>퍩1F=tQ$#3˕6ɰ0gYق닎s8mUp@!P*2Oꮰ{ibGbJ|٧,'>"o-'{qdJR^bzObqf\oR1J}nI}~ŋ;>}{^|>y81A+[Y4cW@2lK_%Z1O[@WdS0Q~!m?OK.D@"Z{ġv^-:'AXtIѺq5S%'i顐S&tA>Ex(ڶ3>tV8ΜSd-D0QyLӄ WWF Ęp]X3\V" =VDZ5Nǂ[$Yj4q4$gWBLr'u" 6QqNXr1F&RƒRLe} 3Igz Y "VS ƁiȱsA`p@*$b=Vnn' Aiy1Q(Ffu.%1HilA)縀Y!8"2eZ] 6w+nQ#~aiit]HuN-qkdybFN{|Л癢Җ4'Nk;"zUY>cEF{2VELNp{K|9Laݷ7!o}Ua+s-)ecÁG5?x/^-t}u4\]:[jK?hŞDeOxWSE ED-^iV3`l vsdQɆ{x[o_8?zk?`2ϙa^,q&DŽl!o;v?~S=>ᛤX05lj)Prh)YN,1e#u- O޷vmͶYKXTLr:n:*j#X*zNyՊQzR8 w7gp}y)ND1Lڌ`Ԃ33`%68h 3<@6@_j^ OQ`X"$lMx6*sXۉG1ضmgu;料"󜴖7jE`drX<2rט΢˚CM%,NRDMMK.QK>C:і)KapΐRDΌǃ0rjfk0ȏ !6$<)\ku,9LDST90J{f̙qWSLfoxo M"Ytu)^mH9.S,d\tW+zRTVz[a;sxGq[2׼zyǗzu˫WI+ʵ%*#gjZFkf+lU0Mn 膞~@{gvg7`zuu+n3'iEWsLJ@5u֓%&jY|^I)ML]kшiq2s<2$ü<;SnC\컠 ƤT IUK{$sayrxuJm{͒-mݬ&t0 kBX'Xh]FX#V:.&ӊ۾Y ]F1,BC[RF˺1?a]dau<)ZKMKrm*ز2QԢ0 V⭙iP %0ZIN-zYւtr_3UMՊwh8XTb瑱,8SV{$9= );͑tDw73H51xYڪeׅ@lfÔ;%FZ%k%5K)TYʕ,gLs4G.Kf9C`4]~[S"N .`odž9?!?kol91>f%_y)'l7[ |GJe) 1.9'=kcWQQ'Nn@.63z*wIkcʉW_aI#38(B-y+mĒZjhok ?xtĮnvT빽 sq!?ډ\~8*9ߥ7Wn"gg.xtx`&^|8Gq,0[g]𜝝quӼl&D%CFjvK.sOr IDAT9gj|PLuNZ ^Pje l YDk"Vj)Q0ǙΫK/8nq^HNY2ƈsƅ|鏰N~1 㢔FG2tHSZuo kT!m{iRЃ2MYwĨUGUe3t/s"#9.6eۚQ]^NqI|suXZ`*Uq\i8;?gQ|kzݝP㾃 87[./ÆWw|K昉E6\҈=kY$ *ׯcdfn︽'"ړX5`e;O'8QlFI!%>@6(29 lBO뤎9-<"sRG~k%׏OW<%~89F$&S rO`jQ}PgvG)O \>[vUvӫ{E g1F,.bau)gKNk, TiV4Aq.PVKIP[:4y'"f7V/:cfܧҾYR q.u⛮#Yx(k8futES kYH(a0<)wRhFqfՕkY:A,"6}>P(TLNT6k}V5 )6-Vqsկ6V kz O@]; aƄuٺ]T1e,d!_PU΀넥لo4⳰d[OtsɔJy9cHIlřk%I:]C Cg .K)qr$my,0˚;Cd!l1(VVs[,JALk.Š5Q+ |ܰKK9Ȓ7ƼTpNV$D#_kQg޲6 #[* хgmحV+T*B(Y 5)紜IS**vkV]vrw+>`G{ܽR@!O_ ww?w~W'ugc Z*Eבixy--%׸E~)1Uwy+K?ڗzP~l]'Rsf_g㍧aȨ fYu#[q{o曏T<~ŖaO_Sb~<~1 ln{;).ps 8.C|JHRS(em->!wY,j͉Z#Y  vK66˨Z9n5F$/9&1OSgv&aX/CCUć0Ʋ(4%LR$ j$hl70nvul69ϟ?'#mn1"L) wc*g,g,zQ+9LxR z]̒KLӉE_,PTҐJ4NG8eAu>ЇPl*SSэQ35rbPm!&qLtV +mzm[3& `@yQťݹl(.PF/2J3 ݁y<Q:w=ח\^]+PrC[oգ"Ž|t됪%#I0Rl\fS.^qtWmUb0&Yư  c&GL$ 3"֘"J:%S1҆ai2L̙Ü8Ni*Ă2YG1&J*hR-}茳oĪб4tL'noܼn_`7x\Xwk:KO.{o}XFݜVEǓ"i1x#7ccrVoyT}$}fQslޒs97FQ´o=imN,mqB0#jciH}4ZUpr 7VZHtؤbisVnF:;ۂ_[A{RENӼT/eF͍%c*p:H5vku ^B 0!U$.0ՅrjQԝ+>ۚUo,W|vK3WJT4Br~N;J-Q)Y\FbY%E*ZQr`_}ު#NMJ8 @KhUІ9^ Ʊ͗=8Ķ떦୔ʴh-vsA+n I"}2 /n[`՜VTD<*ѿ< 8rR,o2j>kߒFD-W^QxѦRD*Y#-N0h)WnBr -=ëS{gڒ:Ų,^Y?"IncxY/Rc`:9h W~R"AizqzqFZ_fUҳa\KMqM85X{%>h9:)ø}}yr?_mG׿'N7'Ϳw޽K>%~z'^rؿ_g-7sodI]靫cΡ @%@ݔpCnq-7iRa (r=3^.U5EoZ*! @2"<황{wN#ҚTxxpW RJubjB]t_2RPLXx~XSF2$IsNO y KYÀ[=Rͺ&O} 2ش=襘Ԧö6y4&kt Ԓ4%RC@ Q*8#ŗ_!I*kZq/)?AݻߠR__-> pWAEAZn^p0E# rڤqVt2A؜"T`Y"GC&Wh5}0ct=yMX3#Ev\p*բm<5{5Ƒ!tYW"κrV.&\[ z9#DRst]Q0T gouLC=A@bWZu@|r/ǣFMuBv08_kM|->+C8[ Fz +uz ;[J#jg8,\O;_фr2+(ha#r P՘q * `X3 7ZEڤHSZR*z 7g3"ԝdZEevm܅\-vَ{ib 5mN:.Lƣ)j.b Cd.Tnjb t`k `J&hExn!Ek G8w˯=~/??oPpW¿@N+|tD.1M#=<9K0%,A}84W3RkǧGms^3Һ"g:'`>G D+k~[: o^)b\4!ƀ ֏u]LS0նᨍ)IELJ~O92|Y\URMj+Pá<*ȺU!/W})7uY_twa@\5ƹWVSP ocj֚ x<\/!(a ,TW׌MF}*6H 2v`.A}]+F  *4RrA R1g2 'N) Q^Yן \5z^p!T&m/4g߻N莽0|q8 [[*WZZ^BO1_V y^2KZֈs=1F&9s, )t !O\21<"b8CsEt6/+8KeuB?N= + 8ݞq:RƲf,)#]6VnCp@-yeu!QŶAZ!CY->|J=΁b0 $ T[3 IDAT۸lS.ZJf>]fYG qy߼FMz$D^ F0(,78!U$Gz7oȥbx?/|{cīp+n^ruQyӲ?hsRm nUV-Ճ8w`!ڭ/He4u#g4T>ol-@L1z `A֡kke$W)) $:_f~ݍt:: CD3-瀚5"4+T=OHi|9g$b "ےy=9;ԫ6-=&X =[|f75@?X@R{g2מ i Qrk/@B^R?H-g⶘arzؐZjS!<O *ӹ!* R^bQll!ЧZ|θPG/]`cP@n jU˵XYiO'o~Ļ7zF.w(=r~LJn,i޿w#eb:L)XK=G Yg,Wu9*gt"5e,j.E?d.6RRPXlb`ˤaZl+M96%Sהœ[կfS>FUNtĎ;AxsTh{*[kQ' 6 ׃L)w<3*-n*@9m^yl ڠyoĜ yA.@=ĠM26gsV+r non욨KA*!UjLR'ͺܣ-r]]O&ބ`VV@գ)<Bx4FYg$Xdq8*蓜C'דy^iRgP+vQ^=Bmft6T֩d`^zHW HdP(rMIsu^yQC :g+0pNWe} @1pXsb[88L= K,s‚?T\o>oWxz ޜ8xJ!ؠx~ǵkQ[\x'n/;ݧ$UEKӋ,s@~Q y{+j UmŃ-KR.walӞ=9D9w] 0wn`6&av:ȋ\mđƹ -VE]DGCɽ,q _Q a+jXTk*՛AMj{Fm|62xwY̑. byr[i}l첖`kPuXC)+ԢgfmdjW[TOSʉǩ RQy"iI {zY6a]Eޛ돶OEc8j"uv diQ5[63 p.gB-* gz,pxxb]eҌW7x\<8L(83p>Xq>W_4|ހqs:c[, |q|p1?"'>¯a|o +WA-7&@&8w rEH<\&bMp(E'5a cN`:1-Dީ{q +BCL@8i<#^:1Ӥ=gv:o/6aΛuYgE/ d/* bkAjTsh+ʫ۷]+!՛[c#D q\p<3H6}@'Gu 1NrHkjM(%a]8d4rx}DMЀ;7&9\T 1제cYsRRFpޟ#uH)$YQE"˼bNKP #2&9"<#U~+s(oPy'vYI7dĎ6WRG N .  Y :}D|s kN7eOx∻_!jNeN *&e5÷~_|}yy/_M88"p+R)RpYBc00LrՂax5 T] >2FZPlAE ^;B %e8pѫ 8|Wmd ^G<<}CCtIY}d6ȹ󸦂'I#|SКRWG})*NEon#댧+w8 m| n+FHŔuBkE1xnh@6y&͖껷ZyȚ`5 ;UםheZ$ƣ Tge-3MLd)!LiTÛP!!kkxMN pq2A$Z~:ӟvӕ|)IO>j* ambB xڜ j\܇@uFL$Df8sݷYcuTK-b}i\j@蜕OZUv 䆠MOJ2!`Gypf׻VѨl8sDN,;A[EAD,]a^ey5IvCZpRTog6YSM~$k/#M+BH]a1l.ڛd-֦b&*\b-P*۳h[siƔqF- oU_sFUc?& 9xPo&&/t'5M.^obB"ߧ]z&Iv4S8B FhXۊ-"v[n ib`J8VrEe=-Yn@JЇ ǢV`Fg% "H>cǸ*/S۴ˋdj09Pҵ(xoxMx&'h$xs:۩K9j{R/ڰOwAw-(l"Xs݂JMoϵ&/p-6?4ёKŲ̈Σ.KĒ?ݙ+~8. F3AݾiI<w;||:+EItgsSpo^ᛯ>B8R0??㟿{ƻ7"xzzd~8`&xK: {x.Ç{x@[x#\x% KV8<͈ddHaSXѓ50.v[3vӨ忌oBgO~焁Z 7fG<՜O`%`]=Jޟ0pNǂ':{u9 NZSy\ ؽ׬cG)]2ڢs>V1X\YUxJ % M!GZ+˶oMůڂm3] Wgby~oS'gp_V^u&̚/h.58%ΡfE̍`ĠɃ ؛"ՌTCCu(EY#1#W?1x8R~eͲ8 4́ 2#|t6ZȮ7AբHVjk5!ymqb(33E7ZIYSWxmSqZmsx*;lz`el߯ 5vEZp`< }81O Ge2pEQ?j)&08n|/hn`yNV\\]#5`&d)YJ\j>TL7uU!`:BNA',xOXϗŜ-' tkSb[UO#jϰԍqЍkR29fRnVv5+`<8ΞgSa޸f ;<^V{og׌OZ=^<{~mՓaB N0PP?bp:0< 1ü`-"1t01²TEӠC a+Li01Q"Jn9Y*@r f_E@) E2#Q0*gkd<][. B !0&-U(i(|8h5z!j$0ǏpAZ ^809 6׃[0XŤ ?dSb 6 6iz( qb "ׂ^"@QpM6| Qw1F32M'|]ж!kk5hKh\e+D'7@{~Hc=DU@66GXo;9|7%˨%79B5onF@;Zdm}VwUMb0>곻q8NW!JNj? +Xg!]Mtm#8txf5>5qZ`$,v7]&:ZۛdkjIlQGo͜]e)zo,ihDD-EA&lѠ&6\^34wd{ϕXKfwiޗs8kfs/ض'n9VCڠ݆i M;ķ£ߝ!0w}.aTĄ hmG,ҝ` [;sBqVst6(9Y1:Ll?~l%B|WԢմv4m®;yk%bZb1 U6S57QcwmMbs;DJ*&~z{R0O35S;E@ʌ*4^t* Qh) P^p.ڼ&LGk NXzjR6wMq%鎋uZCr hC#R5hMD?M $W`eihcTHLx+ bniFK|x7g+d\ʾiMiSA0 C,Ӡ9SQΓ:jщN? 0;e)!eRQRqdJäǏpqw#pa0 8s1ʌ" }ֳɏ^w,Ρj6&A]{vlfs)鯛<2׊@ ,;̘Qs emC5\{O8׵?ڕEGA  IDAT\F|]S{g@Ѻ>h6'ݕ m!Y\OdCD}߄ԣM3;~csU%Pl2@TFWۙ"8RƣYen>}Ɂ8OVIp}Z1 JyD)77q,b 92/x~b^VTk#鈰q^՝v3pƏ8oL`. ޮ+Ws? 9# 1*@ŋJڲS݂(4tJ+(mЛp(qWdy1a&,{G(͋)kު R*T0_F9s90'/ޞa8" 9q>_+|1ϫnԸj ~mJ8D-%3~x\ 9|;NG!FZ*] A f- X׌4/( C޽=t1yԨm0D %^Ts#0A0GT*VWNט\ 2Dȸ .DԜ0giOb@z \UF\" .kR^0.a"޿yso_0(V]\*yB2m\ qlp^6f d.V1DxH{Ā%eԔچL(a[ԃRֵЛ,BޜE؞"b6KEܕ~@]HNJz] d*ޅξb޿(Vxs[[{a'[9^=lC5~_E{٘6lxk-TZ}'<9۾YDw_ksk M$2nv@t`t[@|5iuuA^~z%Ț&[&&49օ;vB6uX;j9yx؛Қ p7Z\k&Yđ~9C*Z;E͹F2se_(- Xu]t޻k̖ (\6(1jkr}{.̒2* ԎL!`#Q8`5Yx@iduJP30:to6kNE`]V}8 kGoj6F-pYPwgXbJVNHmO0Z̭@l;(@" bY k)0`ۄ"XU~M toZ/>sg CWqV Ukc+Z/X Z*9gz#cZ! ՂZVpjقWrc3eIXjUTJU*վhSp;0 ʶ JuUN`$>)2Kz`C  X!弋2UyN匁0ɦMR6؆-xej#UO_lZgDoVrxm"pT_Xu˪:>tC-\w + 2$A|uAul/'*lh%kN\wf﵍eU4hNkk^kf1 hac}YV2Ju~D}'`IHwYQ5چyJzYm-r $:49H^ MDjOև5P8(Y㫨"YV 1yHEeedN`.$/ O3pnB#8!NrI<u-NSo>'ƼG JEEp% 4JUVa[ʩigl%mCW KK^`U =:"˂uYk5o!t]Y# N퓽9\2P̆-1oY$dV<{eWyl&*.q/Ky^t̃sF {b_!"2\t[369PؤR0ӤZ bsƩ*, iЙ$G*0J߰?gV1 6)QN h G]Հlq8ՆB9kzY3H4Jˆ 9Չp׫}0NſN+0xAaDЅƜW,k¼jH Poq1 Ck4Ro*DM7 6QxdYwTZtښJ)"e9k0T r UO}1\kǡ* vتfKkVjEq9(=$i \3b P89Eeƺz\GtśwoU׵s;0N?uFtaqs{ׯ_xSNx||`]8xw{I2/z2!D>uq00iQk VseX,Ѷ2%%mNpkR׆uڦesZeű11v0kE0L>s6Z=,J8@l26OBq: ƀ0% =လtp@Q =;l!ZA*R$ƛt>|sFYbt}5 UVa"b7U,mcϗ%f82﯀<$ _3|BM rX+<PMG7>9aTX>훷x~~#ZƈW7׬ f^AJ+n*nNDy8wUc9 U7Cq8q<<=c,)c$|#qs=!+  5"050|0L#l\f@$d8`l`U!UkZt})YJm~k R-O!UfPZ/n]o1P4^fvU$."MqX'y4g^wJ-6/Zi3upW?4z/E-ډk/N/\=D/D=m*CƁ ?7.J/GuM($/??9~煖]]%m…H(o"j4Bl"b&61h}άlӮzj]wEM% RZgJ-YKh]գuCpl4Lİaך YyAM?=9G }ܸܙ[jلg6LfνIзxo.!x2Nl؟/v!%gR@5}͒PZ&F6x׃HDpQmdk-`njQ3enq# $V9"&ׯTցkH" b芄yv@ _r<M8Nx|o?<^pYop<`@jswb&__|%޾W4&!":;uxmqz@ DϤg#IgP/w;= M J"d+-ل,&{Lg,,]- hݢnhˉfzHt +uj.2kNPj /m-eRDS_=cTRJ;-ږa  izb ]Tft47Q ye㵽Ok<O T+m}٪[]rbI*q)6jTR*s\-.#aTSwWC7暍P0 Fm?e5יk˚4$z0!YLs9#{ݰe] ǛSVVpj8GIn =CZVPAT}Љ:VkPm09Myꁫl?(C+æ*TUiس2*a+rLFsp!n@\joըk:`EtdZ cS}ls31 @&V mvh$Qn 9ûwZdF2^^vݰF.˪0Z:QJF` >,p-: ɷtN@HEʈ`a&m;dP.ҁR "mS)bOjQQep AuGN?6 n`c|E/D ~XLJHYaQ=nmǶ'\52H `^vRw Rk t RQgsq"N8V"豮k8g*?nNM M;xx4ɍaeGSp_KMq&8qr=ݞM"d,3WFtEjG;1yù6)^R<Zş GՖASo c ίƿhe<9QrbJ #W kKIiQڭܲlbZzi9hjw+Σ;'MojQ[?SVgzǿ5NhXfd9m;5mk̠bPWAYEc3ϩ]M~C3hߤ_}`Oq9?Lw-a25R9::Q.[YNH-.F1VByl% v nQsk](viB(7f8A"&N266|$8D%5-:讖&YpglgtHC@jܽMjGsL\9gmA6+8ndnur5 ƒ5 8o ѻ}(9t #;]T^b G­{VgZgּvPoӄqS⩖:Ez;'m+a~4 jPwhJ}(Uזa 8n;Nۖ|uvqdH ae؞8EFp h,9=w{F #:-c ק6Qgk^, B܀s/3uKfSUOyhהqC[R¾8ҁbx|zE Di Z~Eh5T?}$|lS:fqkĵvu]+ WGX 3QO-.CγRGIࣶ8T;2jF>1ͳؤ΁)ٔ\cAɵ70վm`k839EAXU67뫶\9f)caI}:Yŕtk) 12Wkm(# xHZ윇8m*E#uæF@blbl}27:<]q7-YLvY]_[Kv= e]%&#)Rg_޴  : }[{^ܗ%9$sh?` 3Gn4&A|Brőwkn5vL8nBJسZ5sk>)ag \IήaY*~ܶ]S{wƻ3N+ 1}:FWIH51Ȩʯ|ӿX=c o n+D>(^5⟟;\iSY)~m %bK p1jd cOb??}<9=  TႮǞO5Iq8<ֈ"jH/ ~/ȒWvp9?H˅ੂ"9h>F k.*3PڞsBE!F>Rp30zC=-pV @p v7?e#^^_+<YݽbM>jvv AҸ ұ#N_>ZSflRJ,e[Fܩq `.Yd\!4I׃R'/D@j=7_,.rOuQzFԾ^r5V ?3b],vTY,vcнFby\|.qMs|P}(nZz侚QJs@bՙy5v5*ws 1RB|F±AjN"S|s~M_lD5"~m|}hx1!c?p8lJcW-U%>;:J6Vg1쩃Bx4"v%노Zu@!]m:3Z.zո)G %hAϚ7M/- 2T-SdI;& v+e bx8 ]oݞh-v"yl x(!(e݂-Y]ɵE^I֟ ., _,p m|6J!L%C/pglWӆ:kUSj5ۆYy,gŞ ?19]`YCNL '7)&uvd8va8E2ryߚn CC)IA"ZE7xRPJRz %0AMop&2"dEREqքT*lUV0ylM)%%ւN@Bӯnd.JNp[>"ہ`D!vԹ a IUuWv DUPCRɸ^ /;na>|=>|H<> oCӯ D\U ~+XIGʝx1]?1|؏ p?'|_N `W AL )g^ox8`)ޯx|Z u_J){ÿUVs LNb"r {mll vC  % 8D<ȆSjɸݐs2 ^*tɂ$ heu;"%sFJbp\ArAI;V{|Vs@ ιum/jMSۥP2q1lSi%HSrv| {ݴ 7LA .v_["ӝpDM=w]110vf+JRg `b1:{`M؃1څIPuw&m(vT:0'-ꍛ`E_ZkFHE`Y%r&<h4 r풬{ޱ]]@HE4zDՍ#xmTzG 烉9mNCߡ!yw_wl[¶WOYx& Stt+"7ܹ; @S4 4@hR ;Ì v)*MdmSS zAG#W_Յ$|XXAb43F{sݮT\z)J;WX{=3\*vL9wDm>5>FeO7),M SSѣ'bh^U֒ylS&=P-m*D4[qIUUz\Oa0\ ڧ $4WB·!qĵHpvQPQle"ouC6|DQ[=H70DY\Zթ1/PYg&'1 M]b-"NU,GӲ.ꜵ!P6Q.i;BhYъ]Q'2Vi^ʷ!UNUp ȘϦWjm;,2ţxXb{"m٪u HeG) N3f#WPz:ۨUZ-Ά)f6mf82 [b:l4N[ks8PݝXTŢs%'Fc^rĈ`z1ضM'Sc"u~C":ffRoROxdkIoYb8]WI&URNJ3`T;ޮ;~_>gCPu:H.Mev]9!b PbY<=n+m~B\@L*a?{{+?}Q uYF9@wXo2$hGl܆PJ7u,w/< ie;s2)I]ŠmPRBcUJ,{@Wa7ÆfΉ.6jA}M]rhSkb_Q о~l}6'J)3KE戧I4TQWI{ P߉M@l\טRyVjѵ h:lEbf? 5QgjYrf!l$+19y|k5@YfdU nb\ub'C]PgY<-ع$lpsBj"༞Î\G?۴EMO#uJl( K1" =u3\ooQqYrJ!HyGNCV#,|7 ;0=oDgGw4کy%`{oRQcTno/]@bǠ:ֈWR5]k0@ZT RoBCxx_b@pgL70%Eo?_(W=×uȢrZqyxrZ2%uI>v8Τ>QW74ZSbnJb]K .Sok$wvEdvjW'Onӟ75(xté1ata*vIv4i_h-i.ڭ ZQGT (`Labn#] tGN^or0R~6+$Ri< B6? !6lv iZ SB)E]f5)rpIaB؈SA‰lUm$z= q E:.HwqN/D-dYKg#G&\?*2tgLP[tK})},ɥV8ŮZMԬ9h_7+p6taK~Q7TkP;oǡ@*kx.. IDATJ l 7MJvlBNM9m ,w&9dv6yթ9b3u8&:Q7\ hs]rqMMy7~ad&HniRcᮅevt﬎ kqH:rqr9t^I͠p+>}?\on 9Uu8DqYk{}cYrA񾈱A.N!A:v;Zt::B[ťE!.p.j|{x3.5Y6 goT*Η3I8)x#b{:P$aPm˜NEtst锸2ы`٪K\,ZI 7w~8'eE\sB@p\맯w)+;0yWr)mM6[hp@6̵7tmp5ŲK+EIlND rZj97_T_˵bvUh4ls( ۹m)}; we`5xskI.Fo fܳyB.Ѫ8[W0ܖΆʽLFeds: v'X(:`Y qd g6W]ϯ֊ƠGKLiOi\6;&hmg2ՍdސV4~l g瓰]n?BziF!*ǜz#>\7>v^Vbޜ=?<.PQϝͩ  Z͕M=4hbQjMf%ǾO(dNⶫy]÷m]8gԂ-e*ƘԜsU4­V׭C墮u,QS0QfNUK, 5I h"ZVDZ Tc'#v(^p>'2"n*vkL}tΏݬnF3((&}{T!a`s5OQ19zx0!![*vǂZ@]ĺ8DG~v-m?T\N ;'O_q680T>(zQ[d2R -*96bGֲ8gwsܜԍ/϶2H˼\ `hUr-F; Pl60S.w- SQZ.1ż 5 )_ZIz7FfWe@⊌n=͆XQV1f4ӲXKV3WDuЬt9*壟.BjAd6O-vP*Ɔ#F'*cB 6al6UҸlS:*'Iu@-r& T( !Vk>o²…]bZ>[=U Df{3KHǎZ3#VX?q ]`&)(y]a%Q6Eifځ2voPJ@R@Q=P<shDkn$&0J͐+x㠔Ro\ nۦ<^9c_U)8O,;j:ۜ7X9,+ܾƝTDhb]3`۶urWىeF!L!k٫_3 Mnf&e \֩#I{Oɬ&2S&ٟv95 s՗.  ƵO蘧CZEXc%˙ +*NTa @jn;ooWNf8,Av3'XxƺF豄idIK o .uヺ3!g~bQcoWZBʴL'STqҚ˲S3%Zԛ|x~ }# T8ϸޮV !A5W0[iLA!xDP\KTȵt֫]( ƨn"tx;N3bԻ×/_Br/_B~ o+ronRjw՚>L#MmsH/qhYԗ"ڊLsA^;ۆ>&u8K jIQhq x|XUD-QY-E ޟ?m,K(|Z‚c7ugݮxy{5ׯ:E#\ A 0 ' )c֌j7w5ASkpBX&}'S/9ێIl L tKY3[܍zKӽ0RI"l XԼy3NaSw7uv[8sp>BDsSXkqwt+2zTGYRm w(CIrRG&(iNIy"FBؚ͆kLPRX"p:ZY9mtZ,Q\A4 ݵeiaYP\*t9Tq;`Og?Gu(~ &8}EgU:@/_@D U7^<<#Hz  1:7Y^{<>>?1#e< Ϸן <7|=LxxzNLJ3| ,Ki5c̴.8\85[]Ÿ<=XŖI !kLFK*Yf~֦fr 5|؟/B /ѭsO1?,V,>8BR~$ QRy?@ yx3nfֈ۞sPڿ2{Px28б#Wƈs<[%׌ۭb?~6m\x9vqftw#.ZɌ!3 >]mJ TlS崚TDOw:8t۾a(}/$l}{fPV8R>ۑ[\9Uh87HQ[ tWQq.!ӱj~^i?UbԌq(׿41A=ibXib"vh8;ER"1<V*Tc4R-GQlCssBvCkkLaCWuبNN ˲Cbt5˗/9i+z{e=T Dbk!ҝq\R+x/?dAg:̠8R{Ts߇~?ԁލ3Մ'xxXWpT`ѿozIG]rjR$N'@2pi= 3_QJi 8"Χy??⬱V˂e@U8qY#ӂv k3|XO''CE EN= PtkLn-,O\qN Hn3Ұ(VTt4fHZ&ҷzf-Ekm:m"I}kc24ȱ҅!ݳ Eb_d&t}2Elrzf6u'[JV]uY(P2mYr!~u*aDG-hhjMi-Ɣ r^S Iuݷِk:;(P;g{1!cБ %p5jB" i 55a"k"ZCԺ}N%:ӯŪ޷BsZ;LՀ:bI"8d lG)GMRƷKЎjμ ]bщXI;SS$q!\/Z"a@opON?c TD(,wY6ړvp"]j(0g.&˥:3I]"@וvZd72=$%w" bbT]hUBXŀVTKxkekq~$Ԣm _>1t٘YB 8N8'|NsD zIɈa %8_b/ޮO8uEx}~W|~yoo7l/oo`q>_#|a" :9El>kN* <9{.2"*) bPv W1z$4L8#ƀDB5WrEI;^󁛋(oZӚ_G⬍O#E*<|RTg F:0*Bؓ ġVAoUm -|`0o"J5) R<]qsRdn G}3;Ƞ\N؎`q|-7 2=V "qW0EiLh&UX:h_@K/˯AzZe]; [S!L 2+7x+-~R#`ݍ DplMt #pshrF/iJtT;Wd뇰q'@+f0eEŻb?7_1s;5K ="K֨Z>RߛX#"saiΥbEqglV)½uj _Bc/m1q^,RcI(\gd` |#xL_:۠X6KQvS@G.*g]Ujr)U\Ӂm/b D5džr!SպeMBE ׂV<=B*i%YȤZM*tFlN!"œOg|u(E7+}D8'\8-]` ub:Zo!b@p͙ٳ<~)~:0v \~E *-{\TuY5ޫ\T$-S1pNEE2\)$]dUerPKƶzAfM}) xziSmlZ+o%v͠~?9.%T~ܶ s#JQ'l;4{~} me@,w'1…DpIc=!:gナ# Kp,{8?cg#m׿W)X|g|;cX1@ 9ps¾o؏ >~Ğ yA'6YH c(c ^Ƹ`zT`#Je\qdV4pHڢM>1*n)N)"xzR7jv)![<)\D؁rX☎ؒ:|p1 LR Qq}+`bX8EO"GAf^ }Cw B6l%$w;up1 D2J>PҎvǀp8c@Jϯx}{mC\Nb7bєڣlNHMrpy0+eZ+8X Չ=BPrB6(㌄q/3˨:'u9X@Z &Ǯ)$;-l&L1@` d"LljUI1QouU,}Pu$`0k,~LMB~-㙗1]<"~(WBAau&3s/uew&7Xy 8$V%%2C˩Q%e]]:OlE*8p859HΛ#+ڥq?W6aP/eCg_! ; uTe,2I[/%g#Ԅɩ )GlH45FX aKx87 \ʁ$SzI5Q*RN]΄޾[J~(M:X&5= gr^=b%1˺apĘ5OzB5ߨvY[B:TDyz<㴬#"ckYzBg!H֚rŶ\!ƁmzT8eϯ7x-u^Ḵ􄐃c?IeuUb ]\[Ѫa&=jx?_T^Dy9+gTY*kOXbzvcvU L\7\SE%v//o9!o*?S\ IDAT~ǏO'oG|~߼Ƕ'Ow׊*bb‡Kp8" 9ʴdܻ4I%WzGYU4GfA)t_̈pw3/B^3^TveTfգ|'θYd Agr)j!ȳ(+Lj@puFG6plҟ3z;pJ#ۭݍ=F >5>ZZ2Q^y{6cSZyo)8TH1\4#w@i_vṨQGD;<:UĂnVժXyeIke`E mɍBP}P*r',Y,?nb62LXάZ2M )mh!iTN:!e>=z'ckhN [vͯHBQ.W#Ieېrk)%iL;9m3?f!~MѡC smN{a\یESmE#E5V^'tH)uH> MD|-7$a ʻx-V$Zm6xfsE@\"rVevqLX֤3duY h.DkJd.KrZ)@+`\ "Au@ =pk֘gG 7Ygĸ!JUZ|@?Hpe1C8eꤡ?ן0{`%C(]a/qtab+%Çg OL? 3~_D*<'Je,)c CaoZΥuFҊB~YbK衫5z0/rʰV\U޴$iq!Qk^7&/`UjSp^TrD,1PWPC =VJEԇظH0+DnoQ3p^QR~.'kAI 5eX6s#/7YsJ~KnK!:LA5ØKp_դ/@ $uV3Nu<z@icnrNӢ]";l Ai1CZh+}!mvޣH{.C\eq΢)-~mG{c}_lʍY0U+ף+czFpgg=Jc ).[fZd |h5ړ 3ҤD;Oثxev.#}Hek%ŀD݋Eέ得sJ{4H9 :)SҞ Q|r0k nhE"GN6hٸu'N'*XsQ̩rx 2rvqUljr fv+(I%M뵔$Ƅ! (Y@VvoכvT4 ĽD$F]_i.hQ*+ޫP"bGs9[]Z"Op0AK9@H {)DDOOg-81R lfFq;~@FŝW3H1e0yے  ܚ+a^DUݣXhu& Z /{當gNv`M0FHZui m_ %A+Ezh>v+Ò֖ko۱Ǜ]iyZke_ [f;d,y8`$ fƼ1b]Wd6X$'65V˜Ң9H:!=jbka@\K\w[&-.;t[dn'lB9؋l?>,˨;(m;ͮC=BLez: ItW6vdL7hiǥپ޽`{/[ &Mo~4ݹ6\2v3|76Qu^澨_Ţ~g#.p-^Fim}q#b;w&DQiz>vQ?2_AůextnDИq,;4N Xfmb]R0ctLJ:{eok 7TSwm_=juAҗ T*]lmE]̭" c5 SYLR""J@ea8,Seܗ^#xGX'L([@~E=0i.IgRk Ȋ},bJXcDJŸCpNPrfuOiJ}g9J!0dJѫPƕ.m"YDڳ3jbERv~[j2ϚSj6  `Qzcs*"~J[J&Z0QcTgV%$iHiŲB@ʩoXFQ F)g$՚UZMMnz66wZ[ c].Ww̶1'jl׉32A֢o+(SmR֞OfZu0 9LӈE4#ז`kKe䘶+\7`K.0mӑ+MU/,x\#,YN\`(s=&esy#^^q˿&?~m>~`_##Һ"x)ʽN *k*R+nW bLo?o0<)pS50HCX-;ܜ,3Hx`rU:$EϮ "@cke!V"1WFq9:i3E$\_en6X9RP+!LkEQ8LXڵ VX |ETuM"p׌eвT9"5IQ`}@a,ҩp#,'_EL`/]-6\0;5]δk)YPh#m_\6V_ :*˺:&~)(H = {ѿ4GFog3HBced˚v*iM0̷h3*mϛ F; v[]ۙ,J{(hώ{1mRf.0pxC 6mE8-  y x&8Nd_B㚻Ӧ#8hD|Sk4+Z# {@yp?QԦ[Yw \XV8#YN?x։)IV6Wv,\mjkn4bD9IQo}PA0lz+עqf]2JCJS @ba#[)&:ҩr05 ƨ`e\5J$Nl$f$JR*dӪ@ZcYwJʻ@%6Kg軬\+J"p1adH*VQ6 R&0Kv:f:}RL ]cEY]l`qM `"c*qd Sܨ "jq ->?VvX4j.T̶2Rmoio hCd;MZe\\QkӚSoG!`8!-~A3eܣM㊒!qޛ ݗ֒(#t mǠ( [=w{-%#)}' 4(FT':z}~~b]gp>0?Og)+@,ooiip:q7CatPxt8Z³B çL\12 JdqRE? ^*E ǂe>Ah󒶫W8'S` È˥ /F Y2HYB;<]RE[\apVr8D!Vk5~Jp6bH 犷ۊے%: Hˌ*Z!(M[|jS7}1"3ʻΥ ؽ3]**L?3꠫ꪳ;X+ ۡ ,\ں,-Mʗ:MB0F"W2Y Vv]Sm^|\{ĶVaV>ڪ}8ĄX#1\S0IAC9K4~Yb?yEF82wPmD9o!WY67kx{-l{&\ωD g⻎YS\'勺6][IUpd틁sUnDFM<DI *gT-.wl;7.;9R=,0Laď?~ϯΏ(./c [§O0Q"e = oa-R8 Wt//0o^͊)c4(:*+HJc0x./DN-7 KK [']=&nJ:.6$3lɶGUW`hiƘ*<6[X5w撴9UHgU3JND oፁRp@ޮy#mT!LW *޽ x۲`<>2ɠpA,+n늊`Mwޗg~8Ml\Ga9V#ӀϠRqW0-<&{@">c:˄:"sLP̍DClwc^9aB^V?no 4ށ]2/xO/2\@"ւ9,Ǹ.$J߽rOX |vE ;?=(j uPDQWE-ݱ5dEYzr"3 6lko뚉vj%-RJj }0Uk}R 5! Kww圐T|)%Àӊ\2q{BIUap "C&%tuڞ8j3ZEHÜ _>A.K-wnyrR $\*UFn9}㘤|:0te*yW%x۪6iCUAo mXzl-뽰brZa`<0=(kppݰ+.Q|o_tƘN1~j`229n;ʚ0p}g|KU5fF_~op_}XRu0:<]?|xzz8Xֈe׈q[iZa8iklVy~c U#h罾G?rR rQsFbU=TT"$7#C4e'">eźˆq ytB@ijUXk\MD8]Nb )'x0V_{QҺg0LӀ.KoR""CkKF- /_@ 8+b' !ƫu`XKv01x{mp/,xpZpƝJ\q_u+ 3iz-`]"W#Vѽ. $Z{`YX3قOQ|$b=CQjI~[K;XwW#AUfr|3*Ac?7?2<`WW5;5B7}C=u!ڐmR**:FTj kA;ZXfKouY[mMőm꙳!5-bhc 0LC}\ ukg=n:B*gԾvjו̣[ "rV8{_D6]sym:T!B2RcbsE{\7XkWRϲr݄Ե{B.ў F0z3&Ķ x=*s(h$ޞODg=a@rŲ.rM+"XA@˂ *R  |>‡c >yC!U&1IJ+`kz$g @g[}\=_ڝ -"-3wMLԦi]6JTMZ879<~Uf{b.rJ=-db4mýY],;%k{Y@~6,ZkFC7og]Cw`v7h|VREҨk퀠v3p.bOo11B0/K'`:%63oW|yaW^V T;b~q`78X0 .#i7ϸq< 88(U _N3uE)>'{z&|yHUxml?zqȁo]釀o>^03g@tG)ooq>:lzLKpD!` 6 0nXPN@[%35*b-B6 b_C^^#\pҊd6.MUptnX+:g|N^Zp݆^1)ptB 9gĘh{č5xOn8O # f2Fx/t,$1ēq}-{ƀ/AiTx<3{E\ZnE)F.H| š ԒoEuC0mϢ"Xgat ! D8r(pD']*O$U\aux!=jE~!,m!A%<Emy`;3دRoN 0/| }Xaz|BzJ%<}A_"h_jwIkjv?"vg՘4vU P4]GȅMeW-?ZZAz)swvYZQaM)dz Tfs?3w5N\Vʳ:rRZ ;anXx"Xnn{GE01֞˻Mv%pV|, {+JB7Zo^f1 j,D?ج03޻Q?](ul8z3Oˀt&oCRACrfG#0?_a,ˊbq )e 9B^`0|r <ˌƷ?0 a5f]??xJ@OW5P#>||qiA>XԚvȵ=zL1Z]).4‡T,"XXCH+P9 #k, jP3Pӊa0wHQ\*#ׂX jʽTY.֌*RH9AF_F8a ^Q 0GZ Gtc b-|VȆӧ/d€ыS00X/OG8!D0$/\4g ed-a\p_0LJ3RGr˪ SDu^`8/FѼ#j?5IsRNsgR1"8뮅ƫ3b^"DZ=|4dsQΧBpKR+=V_Z2/jWl;`V2ia\8uI(("H(V[7q]1N#op$6S< Xք۲`Y ~4yFM 7(.偱0 aatH=Z۟Sf\sC>ϰ$.4cfjw/" PaU)&60z,WI88IYxg0MH,JS0QKDF.Wߪx)E*[H@ak:SV o7\wf\'x1D@XEF.嵖Zz g4'ޫ:Ej ~y_f `2֣jt2"J\Pr+YlΩ_9r: q"ׂ32Wdc78b8ȥ`]9?quF ãJ ܮJK9$_+;VENGm!qPK2ʚ@`LGº1?$nd1E6p<'! c-yAZVO. V%''l.8?C`zHfΎsL0$0AUVWI&Csِ !mk,,D\n &VlujwP&zdZ DA;սHse=V#sE-wVr R8uYEYِrYZ (Rh?ZZ: KX$fHΒ <%2pDH,]Ql1Qc5b5rA ԣv͍E{.dl؇ΦŰ skm- ;[ tjAݗw֢i9\ݪ {lԝs`fRXrZM\wCq}%ߥ;jIfw$˼4Ey?N&ʦiA-8k7/_2ָZ#!#Z+ۂ7Oop<p]3 ', p>?>ϟ$`׿KFx$ /*`0>o>֊Η jkIh6+,ָ39?_}}at{{wפG4y|xtjDpwN o!/E2`X/62//[ xg'{wS_>7#~G||8gLӄI\//Wp\py?aV~P@/Hq83`4b}{~xwF"Yx8bY^_xyy~9x{ c]VԼOBu# fxgq>⊚ R.p:~2/p#{VqđtSYg QJq_Q o JF!i׷7QJDq$wO/x@ (0A89Lk'<3ӈiꬄZ+RVs}Y%ve0k u+U6XkA: z-#{-`kXc)[\[_ JD"څ5ngqݾm]wWkc],ɥhmmJTi:b"a-D#&?_dE۸`o8v"ک|Ú2^߮XR)! bC{w @VQ@bnmo;Qj0D+ZX'pg`]f\g;_"9|p5 q_8 /- 1:'Y%X1+i`Q1>ۺZkj!sAFKۯvfi(Wf*w2@cpk]cX1=2o1M} l)<(ڄ"Bk%u73mDye . 1EIvsnᣁ ic:EڳPl>RRFјֵ[kZ$,ԥexӮI]iI@ʲ&sFd ^jSV5O1J o 4U2tI*lׇ&d4Me?6J &_'^D]z㴺8^_ jBÆ0vpo~ńl.PkH~XMl/@y炒dsH/FL`=n댁useu3mb=Syy ӥ El/[0L57-и"&Lw~_Z;UEGΌ!&3mI" IDATΟDBV@2$1vBdF.,wp*.d{Һ8%+[˸U.M_h]"nS豧%Ǿ8`'Ӗ+"u:ׯ "h_Čr-B #6J{r U ?|y.;bY3Äw'y pY'uFyg*~/>aG}t?~w D<L!Q-q,t"' WowxGaF:euͨkz` &a8F+ZR}z:bbt6)1")qhWؚ$!@6P"0@pšĂČvGļbJ;Ԋu:j0l HtI\W.GOG 8V\ZaDN쐥"xip6bbƕY앣XVkIɗ=UeކR2ouK.O $NS7 _ǍDS1^*QU~*7,i;7ˡoTt!a +4̳E:` U`]eSHE[mY4Zk}NDwVp]UmdBmYKa~ZF惇0`x-, c0#5v.weVfGĉsZk1\}Ή7+])]{#=>{<~NIфR[UȱOIӫ?1: !`<{y? 0 Ca%fBN*']4'RK6׆>ͳLecRB BX[nw{\yr$l9cp<2q}8[ +$ })'R$ !hꇬf+1<(8A4Y&U(_scX+iR$ĘI)GkBVIB0T )"P(a1 E1+3v;aY<_d0B>sN QAN?\$$w@ gҤ`wوMf80p{yl\_c9+Q<3!ea^mp^>S؍m 0! 1F}0N#3xGDف-|fMf2Rrn6ڪ+vLr0U9C4ʨ2&_`{IUL&f{ؑȹLJ iFCGQY}5\PvY닻j/#MG4X¢jܰ1g'A}d41I 4@AmRzޕ`aHXXG"}brf(?e˞%fbJ #ԉ';|p$FyFfW͙:~9l*BfFܭv/B2Ə-.Np#%.IƤU[yxFK5y~'6#xxLIS9 gatPfͭۄ c0n-1!3#f>z}q{$z92ɣ xxCO88IGSGo!`@ pӈA LU FvJ)oxv"i{77H4_f-c ك3/?Ʒ#2N .@>0~~.7o0b7>pxqq5F|ŀ_>OyL- <{ |k6aw|1IJ9٩/̈xEHcG;|~__>O_O@Wo#lq K3\g<~&azݛk\\Nț K_᰿xh7x>f 8F@L o_c0<o&<ی.p@He\1G| uƅb#S8')I0G໿ۈ珶x xۭa0G1( `CdHJ48I|VHUw d(FR6 haI!N9XDx/&19gI{)5a ẋ0Á0M8H)aيOcdwʑI6v8cA&IRRL'^\`Pj'|7apssvr/%#5'ϸkvtIeAsǠ 7a8mzw+=M2Fkc n0qF$Bt~n0_0o7CkLasg7X9rk9q3ψɉ.M(;FRsN2WCa xy\ ;M?nRfl#v*C CgFH@W1m6SD8zfgHQ0ef|Rڴ}i;U/iDA=9cE F4 x3^zV77ر\gj.<4oVe *H9!z5(T'evٺd K&bx1OD;gN@ O&~*3qIwuKAd>m=1b4~y&C&rׯqݪld7ƍW7$nŌH\zK/0RÈix|G/mfpC ?0߇Aj2 5NY6NcYݲ𥹫eD`M4f9+N`>omW3!A% S6̖Fۙ4=‹_O& ԄXEVC?`Z̕?1]&| H]KP*(M "0y}C3b e/F14>6J$ɉTݳY a'oDo'ڤ/޶qCyDմeis2ׅAr.U`C7)iԹx&ALP"Z@gcaiк& k5hڸ˻㤌?OxMZ}ҭi|1>M'a=w\4r{*2ӑy>[Ø LprCR1W~b>7ԶS#U29KZ2 =AX}$ZM( f0,JĿ*% RQr`Q&$x23/~/B Qk 5bRFFMUo\=,ɴz>R=FG5u]F mRNųxNy/JIퟗ"B 5D8XIF"s%3vp.""Q=҄iPǔp;Gx;_ʗ 6~!00]xzy56:#uCAmfcs'wxhL=G Є̄L^%]F3./7x)";$99ѓB|#|Dj2JxtGW(_v7;\^L:.~ǿ4"n ֕_~GOnoozCLׯ?3absaa+n €ongnÇ̄q\O=GfW`{Kl7q{5޼-iZ?4⅘sm-WC p9c  ޿Dl6 @)FO/eQ@#rljyp' /w Ɖ0Ys< fF$CT)]₾/ 1'$axoHmEPG9e,16Ŝ:ig$$ei A4i2 ͈AM1m%*e hLPpYKD*V#l" GY Jyl6\__KaiT[1L˗j}+\jl9g`/<1NO1J\vf+&3rZݳ'OE?MH8 {YHރ0bnEIx0@0+n7G6ʪ>FL>d7;r4`#^]Kz^0^/1iv F&LB<4S,3^%d8dt$ ڦNu>0LGO N֯A M_0 1ϱPq3k k b0,c f\_2Id) m0E FYMWw{> qcp]b;S#;.R1rQYif/%8\iVc;m0M'x^@sjZ*f4bJc/24CIy)cYYAga2kfJyC{a!)K @f1fp>쐒F,ιN%>qfrNWqcb5vΌaS\]]v88Ĭw$ژJ\%K%D*O&D,k1clX:9i`M}uFMS̍yjFsHU1K7H)"R9%tD/q^'"a%1)ϧUhp*J*oRb-Ħʂ sHǰk;q %eJ~qZCfjK]$DjH'rb9jxq5Ωi\&u-3) uf>"^}UMc-Rk|++hKUnv?RG`6m5G|=3ߣ;^ytg?U мt]nCob riA]ayٳ[ KBDRn`Em>c"f B<=W~$ɞ2% : PoؔA۹??G'm2ξN{ZӉKY>μ??vg(Lx!|V?m.IoP`<߅5J mTȜdrq8d|xnre31]˗9xrHLM Wlk q}{^CbGM+I7=H0nnzfI"$8l&\\lzHKFa) )_mmZrMNDC=SFLrOt/qG^q,&wt;k&D2r@=hbNHFxRlaPژJze n'0٬lI0ڰ'af&fƛurČaFЀ 1ff8O\0XC%3aäLև x'} Jt3͈zNA$DٻBP|mdА}5^ Sm[L 38+% aH<1ƁY+19H,rF F~gdBF9>ix3&fa7͉6a .Wq .[L" 릈I[fddrB?vQ6ɒP.ˎOsb:2;eL-L5`\cB7lqT R6wvy_W~3[!WWm ۻ]_?[Q~-_XP{of8|S^ Y7 G6NS#"0"gIQ 1M0!jT!Br`7htFI4xĠ1{gc "S&B!4bJc#r~x1f30NN0G<v;DcU*f%?0M6 vj\i7ʵ4לdS5#^ Ȍ0r0d OAʷ#W%8gaw>S;e7ФotCD $ 0߼%j #$!N`Գ! GP6[&qc;zlqrI8f Q$mCvAYcH#e ;]K̺$^y'2iQ;5 0>!ȈPF?dEB29IVpQRR+ t{q&%?b)1*SϚagaHz4IS&a([ʨ@ di@x3&$8dw{No Q0U>YRa==?Tsj#ZaTxT5+f2r1祒5:32*ę8W I;tOċ, <̛ǗIar ʶ O!j.Sw1BVD 9ρ6}OaRc> #5 vى,fދZ"S_tZ5ʶ2h*nXҦ(K{Kbq櫹Q'lֲ[76E)䨂N-pN$ 3ܓ8p:ӈke43?ǚ5vW>{/_OQ ;K_yqq^E.͟BYo\)%O6;8;tN34E\,ꅟˆC 14*# ~N^& >kLȏ5pj $8a\ D ^DH0> e: SŃrĀ 8..&LÄq6 #^R}rˋ .k0Nf3lDr_8SFpBM2A<2;i͜zp{.Ă'r1ե_ɢm5&!7)W>v`Rw]t3)L=lZ C$81瘱HMiN&EJ9J$0ҖL' R0I'ido 8fNėƩ4c,XI2O. 'aAX@>k pN0w%ؼ?*WA$=&e-Ij2\:ʹYq_eFMBJ4{2Y,'@Ք%\%"\N#0i^p@ f > a`l7#FF_MTg1s#4~U+s@߳RkٞTyjXv[79G啔$}u[/)cšҕhuf#g6gs$%nb. in9~\΅A3*>e$ns_&*ܱC') @*hX|ʆW+iⷽI`7lyT勁SQXnIϑ/&" Z#C"տˀE%:,29l5Ф9V.Xhr d) 8 qI8aHL܈:[&-+k ,mL+n!\"Jv/ !jqb?\-dn{tigƧA+Z?煵Hĸ>-)]LΝ 8nhtLW=x 30?yVͣse 5&F= 8 ŲGUPBM+3\Rڳ D[/G.z#Gg?__Rm>ޗ {]? u?Ƨ=5ca#e=;Tz>|/{x+L/,|iceiRkF=+a=MCi&'gƪ,(̌79#_I 14:h_B(CfƅF ,^%=0oD`i\bu C*wixRq{OAZpq.7(rp2MY$9d?$Hu- L eبD 9y<*@MrR5X}RӄP7wN5[ )2gqi UM7cy[0stThS[3̅iVrtA s,9saoG AV.sFrfv fՋdP 0"M:Z!D,\xHY.c61qeәde/:/LF3?ćC~ :NPXFFpJSC'W2FP*ƕr.̶4Y<$DSt) $ ZHQ~M)H_I(4a 4@p$"sEE!$底bp/rgŠr0A%Hjg5,\Q%۔;07f1HQB8̇K-{{0 \[)%xɪ䆑qsN(FS S1f 뜀N5zX̃Q$l_ZT= Y ċI|#lS6ib*ekҜ-Pa1*5P+%B^!vѤp\62r"K0/=ߗtIP4}Yqq#&.&z5FJV^YOJ+#WArѱ5+c7yaLM3V[63&l`$NG\YCc8Zr^C*OM`VI8QӗW\N򳂲׌ED`*|ML(Ѯ^7+*oM@XgI Dmpd_c{ИRzmǡJ[W3<9=38BJ"Ms&1Z5gc0RGwYU7 \rFL\qTEEUC&hZiNjX%PwrN7QZ4[b"p40qތ+,xs1v^{h>#[>c{ZNJTVew.r Wi %Žzar @ g'+Y WdVW.볮[_0%ViW!Dſ Cs[GwxS ?gwKw_ljK??Q|a%G\H^h~ F "kDB LG$޸>lA q@7tJYSHgEoϸ:a[_:yf@q@{Y76,+ yq/l =T6fb,ң׸DlGـ4g&6B```l$E/qHiտ$(956pzjdLL#0^Dp!YSrda#)Sd%@Gy2fIJ1&'kB*gDfӝiLTM*Bc%[phhfyl8Lhd46Ay.Llt뼫^YNt%M-WC;l&j i*?cvׯ^cZy9X]cO0/`mMu6(BqcMt)i BMI39IaC@P%=85YcPNIQh(@_RF_eBliukZPX$!ʭ;׈o&n@99봍P&fe| tK.\}>jz^@LЋɣwhҟ/kf6Ɛ7!A#}gM:i2fM*)HT=I@ʶ〜bG:sVzY8ۺmϘ9MjhN 1hYMӌ83,NhjM"#c:A !T665^;(ζZ*H"eIc%'>fo sM*c MH6Hѧ˰i8\7Ncl]A+:T ŌC~6Io8DnF}$% ^3 X2 ۈ'Tc4-B>7 VsLUDCe"&\;O#c)aq >F_Y[@ett#^͹@䌛4>EksJ H7,tHdHΕA J@Ej opgkפH20Hۀ1r݈1TaT:$@36V{TXsH橧p0c}$gkF]ΠB(IYt킇W ۚu^Z`Iw6^sZn%WM^={Ϫ%O(-n_2UT~2P8 j%F. )>t?NJ y/:BWd1,+_y3{(ʵ@Vk[ҰbeY7Eʊ6q).XXTs*jU@Wƴovgow;oxK-|/yzbe -nZD1_|/wϩrA}q%Wll$$PB][V{J%)]<<Rt8e,%:6Zy @bФ挬sL6O&*eqsY*K 9 e' 4C?e% ZY$#o I8!\rJb/P5&ݬ\+LEE/edh `g달]*/ lCQ  P1.7_ *fIcEilҘK&H<0Z/51tt#>Ĩ2"ap$& cf>x)av{(f 0L.ujmie&x=SS ;+G>$tLJ0@w]sdu(RD4f 9 CV#S[e@oMשkoZ^CcKQumi%DrkV0(6Jܠ֘]3d3amRXrc<&XQ|S*aD^(6z窲7DZJˀY1WpLwr hp]ݸ>rfrl< |'hRГ5`bFj|0;nLD$!zH)>$aI+C3flXJM%Z$T/`To,*@W9<";s5v*tLМ\"zoXzd x%#CQ*Ӥ~GvvٰNM3äZ9Wٛ1us)BKD(]z5n^ }*MJ4굘!}d`--e62^˜nQ"*4i [^_z&F9#Jn͠3 z Qe{>*B>8PB@n. <SSz=8`ΘX9 k;>B]cٶ4lCN:`󙋩SD'9g*QwΡ).GCq"ًT1[nK|#/RDSPD#`- $^psz=qGKhuުH/z.Dzgx@}Et*o{h!'nճ6I2q~M 7Ty}lþhÍTv`U@]H57zhDη:Os 'T"f7)cU>vn՟KzjYL^J!LK~CO=g:_ |"3Mbznk& }[_E٫ѡ%UEtBKd~DFp/M-;]to ]*#;LJBh^S8 "i PM . 0#9xws^,m$^]ɔ5 E< qJ ~,1@S [),`IS7$ip2Ey5zZ5w@7+?B1LM4)TN31bttXsawf1J 63<& 80EǕg{AnU/{fi0 Wr */13Rԩy6jyx:LM2ziS! hb쫗4~dMx*ju0 ʈu3/dC<4>Lk4<9βl NiFN2xT2)Y:󓉛큰~HpsaFrT'"xpj kNrhmtq"'A5ȷ`7XATQ1"&Exd2QҜ>s_59 ;] bˣ&f70|F]B'szA2Shr< p&Kd8?`;MpN9 "̳eYs-.6l0909=%tv"nwQ٦W#/I/c%,1W+a9ΒS{vj d<]+fS3,ID u4S//z/RM#o!:%v0EhhdCQ9l2F vY϶8"cl,fܜaX |G IjPCy}gp".-Hbz1s@]ce?17ү? /B>G`ɕLtsϘۗmcQ^ЗMaZ_;Υh q0X˲c^d"\p0qJ.2)g$zpyT^p<e` 2'Dll56lV 3PM/b] B}a%V[ҟ:r=F3pҍD@@0䞎)dz] ]j2Aɑ#瀔Odolܜʄ~Q{a .[MZIkԔ526qyan$nQS|tJ`bIDAT)6?`\d $$ExX$E-j{*i#Q&pWQ Н4>u4rn`Oe.3@d#k$6" =d5@T>#;Ic6GQR6L5P4m8w7%=ޘH$ҹ5pևJ0w䱵^>)m̉ Uc…VL3`1DN$+ifdG1*P~STl9S3i |N PuWi%!R@jh AeJ%VHM = VO,R^+"8xLۋA A=qPIfB`9@'`p1LGmhB3w)ecVc5״/$fף[}! Fg&"ןݚ+ψI3R #Qnu%h3Ǎq1nB徥u{LYͲ3 |&7Y)20D.LIKItM+ܮ)!vs;c$)-{"ɑq4VqI؃:9#Y2L0\XHY@[b97¬Nž戛]q;\gg ŏ-x!TVhc\^evMJ,O=cѭ}<{HGfzBm-cFL;۞:|&I[ʆ9ļ냊Q-.'b&>N͋FV`0s LTIZjTt kۍD= FX|RTGsQo̜YLRh,ɣ p~C6NH >,\deNl{"6k1el<K`s3rjRTꃦ DФ]Ikٚ{ƎQgL̋6<@Xv?(qEeAHQ \3fJIDMKE׺*X2+3@<7P+},Δ.91+ .MTIUa`Y+l͛d бυ GķnaU&Yzkʺ44,lnCVp6Iᾀ]0sf䐲+ f0'f.-w_fk1.jDV:/ekE{xC_Yn=JE `5G# +6 qc&$A_ϳ[\OF"=SԀm;<_5ImGzoK*/7VDn u"$+,%"տ%r=Ay>FQ[UOm5v41Rt%ȧkK@?L) 1z:% b٥)΋~NntL:::]/kAːNcX@?qE^4)wa}9$U-)x|fU7g^s8Ƈ/-oqu!QcEd,fN\l7₲H'6ԍQaEp[ic^Ktji0%f4e2X@6t] p6 #S@{D*)BM{7J*.-r>q6%Gуc kuܙfWՖ &:G,'-$ͅe3\%|VA42\-:9m1WU4Uكf;IJvHhu~JFޅW|DEi ʊj.t mML.V.Ѐ=Q$\L3Co*e%nL=zPJ*Wߜb.9{fF"N(MJSu B-gJ [bT^$mzuneKSmbrPo>:*/t~4!,MhPr_7LƗF*dKTY$|M š(f W/kIĹk$*NC'> Nef6yEhkUiA6}_QNP . u{ JaC CPe&:>3uOA(MܬT=GR3z^ ә$TY\-Eg{ZDr,Rw)f@1j!KaevČUzL_v:+u`aL-$Sɵ5#C)U8V֪F'5%մ,W {MBXzPN-3w |~~ wWCpԯc0=P)g,O䢓0Wxƴx?D:#켗$O]R\= >_ |w}ϟ1Թi!E5w,d%|u'~DD'|?"GZR6-2zĘl]AN=8=ɡt.ѡL-(zĴhб~Nidh.ۉ5{<1iՠBIZMErz˵dsZwI35.qZ*U9brv'}!x*FaOK;(r@ly`L~7 26(M[^b Xyq{VViMAanX|UYʃOTS~mug,ҘHp<9^L$oݦ3|^w'jF,shwyP&_|ʿ|np; pr<79^,mM m+#K 9%Y܋ϡ9壦k'fT9f8#Wٴ/e6P&Nc^;$܌6 [. :[8slLAtkqfn㮝t}XrOhYys^_@&ka7Lz{PCbZz.x|63~L^NΆk*=͑Pjx:0h3[/|vZuԲ*OnR-G%N/y ^<<ܝU|~hA~ǯ| q{/|zD; :=u'?ශ]k0{[KtqG\QfXM0Ztz`}d1E'MYx(5 wh)t#|z4;N̻: qk~_ĝX=e ;~tL%:t~|OD#QQ9p|=F͏Z/G#A7UE]j7Wsk\Uj͵'n&8KJ:"k5acH\6Ƽ8Y[6#0|R? 9N[-as!T۲g<u0Z)\ۈz\TH>%>ErZM?˦'tgςd#`79=6Xw=}@nzp8b%͉Z p8lbs CλԼNT#u:+..Ygv*vwz6Ja[]7>%;z17{ Ilر,Rny#mЬ#'ttb§0;˖!ݹt!x#&Ϧe6k3@R*l|aQ mLvT^ݱzde¬r~IFUۤf@~v8|İs){g?-%V6`>X{Ӝ$ppjzFq/;O'c0:`>|p ?,nw_Žp懽fg?{~|Y>>L*Qix ß~F~_|C=[>Ex]/m/=wVwX =OܧySvtt}p?9f!nZYVj+gO}:znZkZkZkZk~rW{e,_9??ZkZkZkZk֯jAު߼ZkZkZkZk_D~-L[&3.& G C޼x}Z?۵ZkZkZkZkweb+ksS^߻K6% TEiplZkZkZkZkzo7e.26,3-!Yfmi ,ZkZkZkZk`T`03ޣPepx;p ,@Q,VZZkZkZkZkw/>%k f3M;e =}& nZkZkZkZk޽~Kl״*s0/Vlȡ2TV`iZkZkZkZ({%# ~~XZKԦJjZkZkZkZk޽/Zy\>^E{D:g@|ZkZkZkZk=Ʊѹ?/zC'~? giZkZkZkZkZwſ['ڽP`i *Sv`86w~aVY݅˨ A5ټV5G; $H/C0mIENDB`PKs#LΜ-Pictures/100000000000032400000260BCCB3618.pngPNG  IHDR$`0cIDATx\w-60QT;Ywv݊Yݱ}u@ /|3;Nޙyg   /AA[8  ȏ J([*.AA~H%/~)/ ,AA~4Tj,󽒫*%oW٭(  "I罒K" )* x! ]#(rbRYf[R-FAx0p(h,寤RT-Biwp;  ҴI[F#4R1VR=ĻFfJ(? UWF7эnt17DB8@uk~YRi)C(-BU1% Dr2zu F7эnt6 9TRRBfihh"? @5X,V[ T[w!Se"Wԣ0=3;!(9ҟ" SR\diBCE7эnt݄B***WZ @`J *-եz'K"yYQ3>{.rdk855+?ed߈G epXLۇW8Zūʇ(TU$BG2_X$`Pl:]@/ܹ7iTCDT1J!?E>mD"tJԍM-ayéhr+{~n._xPϛ&z424Z/k\ູ} EvY A7314/,+3csS#yc';k_,jYFV CMg2"U\BfV[$uJ,+NJ~Uj@DTOH+3r eEAmI(l*Eb E陹VxTLy~OTx}!'$f i[J׿bTZL"je#[#+ʃ[ĖZa1I{_K_S^R\..+Aʉu(ZdtnWUœ4|%"o[g_/6SzM Eχef9"C_efk%=䭗 q )။_&%=vZVg{,  YvSDk؊ɐ>o}=ɳ̓4 S#k*Z^v9K;Ҳ2e R .5 Bcc˞-]ewPv2UّSVV^MPZcɆ*+ZQY9t 4T=%*ֱs|JQ 2":v/}.9dGRFu;3pig;b-|߀Z1*<9FӚԠl*//O~LbleE@N&*XV=(Ad&{]6sa6Ζ7n?j+(.Isn6JB~Bã'njUxNt~HtJ7"m?C=V7HY2@0#.-_Gbg141ؾ^]?ݗOIXd>^ ]LAM !Ut .ȯ'85TT& T ʄ]-Vd8ڦez:z@.7rOJxLqu* dB(D711631Fb$ŕKuΫp8ŢSLB| # 9s9rkC'H\ k) K9 ŮP ٩_9+'H.,*i8|5R.:y2u*{PBW8%ï^kؒ=1r8lX"SZ /'iR@^C"PDbҟjh:z.>+xuHbh}ko=*%R@¢b#-&(-Apk:z؜cAQnuB Y*04h][89YxG5t65pٌ ((>Z[PLͽhb2-ވ`ngm)~q],8 gaimekvtpԅ<uK <1 V@;5Z1ݥ#_ J+<.3f+;w#?LȒ?eL\£)m8[=<`6%D:?h` ї^ϧP`LR# I%| jCa~oii #K&4ץ3+VWamĊS;v֥E6& r"&)1-PZOP`"SfdbU)t4Z奂Gs3bHƍԫz#V^= @)A .*I:lO\r|ض n*,)+QΎpg%K<=[̱ebeV*¼76LA1_2-QeQ2%S o]PO}/5p+gB=kC; ?(Jojˎl7G~Q*LڥXP&4HBy-%E`jkMҭlGȡBA(*lQ;~ ȯ(-@+gdEYYuxtO6of^;<}8MAw4̸7G) Mh#C֯rLMͬAI*s?,I=.^~k`UNdhx4OR#rM%g)els* ݼ^D&gJP"P$Wʤ k#Sw0'9Zp)r QF~;X#SupKKɫglAWcoc^A[2.ЕED^8:ÚnHSG$ v1gsLL߶$ tF {kc^8T/]_p, {?>]hT yQxs&tbVps'I<{sp4djb%STER[+sG\~尝/Oy;dRiT%bulH/2)o3|EM7Rp0ձ#<,<*K|JY=> R <-p5tZv@__PO>Nv+vWX\hb",Тpu>?dt:DJݲ|TfeR&OY)|Z W<9/],jgC=9[XQE52 )j~Cۈ"!w"a(略pe+m{K&XN^yE$Zzj̉ &W)*pw};pE :W OBDTT (L BdI<΢TT yȩS_|zZz15e(<^B=r  q]*T#\(2%CK*6U3AVFds7eEu[8z9ZpAA-kMDd'z:-yT-Tĉ$b 4X$d tW1*-AAC$-ei*M]$+k)'Qi! "JuƱXZegoRAAoU!GPMVlY{R  a[~΂  - W Ԋ-AAA*#SO РYilKATPl!7·z7׮?*b8%=kǹ/7|OAR{MGGH P'JBKKGwPl!|HR"tB h4U ڪwvẅn>MtZ [CvVVx؋ řR@=fF4!ѨwӚ,=: ZPl} /#ԭf tZ4 jo73 \M/#DAԬE/AԂbc(8BB ~GiM"AjPl} һZEB?Ǥ(j҉@*ؒ^TLɇ7NJ!aU(89EG㋉- 8P>\u)6iFG@Q\,|XG[?Ð-7ֺ۫u6l`޽:u200Po& IKK1cj]9B ?NNbPE)))?(!4l1i͛3 RuW-2K$?r|WH [Sxl7#mIIM5ׇSS@Vb=z#cƌ¢B%u10x{ իCcb \0{c}F>hd룫&#_ӯHJ2쓒 mbb<'چ@̙ }mc۶iG!?K ˽Xtѿ={= 8xGv풍IΝ`>N> WQ{uݷg͚5|媉)[|{`( g۶m7oqhx-ZPN]#//=|ݺuϞ=mgg7u v@2lll}TK9S*Uׄ54 'OlI*~ĚkUהvsNP?f<~d۶"޾kWݻC ȷ˗=lݺ//7Ԡiz2eO MMMx.TU^^Jkƭa!i)9}͘ѣ!ܕkn2Q }s-[ǯXkvvɓ>\.]5' `ά%[w޳z> xs^z.ioO|ŋ"##ٻi[ҐƍOq!۷y\_dNAE{7n`o G"ٳgOG۷8w|L&4cƌ),,>mZffС\ZD33387qo ;waÆoܰAA~~tts+S.1*(--׸q F?u?Xnz81:ՙ3gq8ym7V[gaÇo޳G@6dC?POWM6ZZZ 4(w(<װa) BK{1axbcGiL]nڼtRM)pv<IJՁ޻:RISC.++K t'޺u2ۭ[Wy\QH}B+]`t\͛7#.T _9'b; <4##+!鍭-CCz7x}TaXǶ>|9%%D 9ϟx>N:A'EgGb^bNz(;+f'&$w׺v.]8&>~+/333+ϏQ7",3+kyOlgc?y4oN0737G5lhq (V-} ʸNxΝ;͚6aaoYn;w2$ Jd.L 4EݺD/^T,UdvSSj999޽;"<"tڌ̎GPRrJ?+i<‘x\+$C!Y 1УG> D|S.4F\. ,.)7wOooU(GT%Pol޴n_~ Bo9gP*RZwj',<<&&vϮplѯ^]r[zaC?@wS-r*$]޽ H4`ccK@gϲ}|Z(!^Vc;2q[P9y{oٺm:m۴SG%&("( ( ⑝͛x+++ḸDD$ܠZNzz:!4yNwY+4>$TJȖyDdͪU)ӁROkk;w훙y!;*K$㝩VwiѼ98vW>b&M>|,Sd7Դ4K[,()I@J r8pyfB|ϴSy`Y4jp]ih`RJILLVD*W6U}2g^z 8ȑ#:|^=W0W#  >6lvHօ:#cem ׻YY)|Ը"VaaׯŌ=nժ?/^Q"xܸ/_,* ["()[* jФ;iAARi"(-`*@8|@xWPsRKiۺ5p$<"… ϟ;IĠ)\pOn=*&]BFIJˉg/('ro<\:Xᙟ_`` #ˎ* tYOlBJo#K*{.\`ĉplܸ17HSNLY8x`<>IАVw lÇGj= -"WNػ5wwfff...g/F ,//(8|萲s*S.*~ ^ 7nleUvrrIl @<~R^-\… VY[߭۷%:u$]rc "^TNfԩ[dH#/F]snCeHyܼ/^EN$?|5rE , TؠaǏ)++YWNB¨4cG!s l9uvrؾǍ/-+Qٵi35l`&Mv%k*W @^[K\P%_ p,|ծAjjcd ]]].^<סCԔgO[Ba5B9@)T%EU0u^ Clۦ Ak_mRS&O(m rs*˗m[njM셾~}{ݷnle*ٿ/M0s1?X[۷W[[:AٽKøxčl% kߎUZ}ө~gbbz^ˊ_GZ€l"6NzXuRuF@:*&`ʔ)sCݚ- V#10anN.oщ[}㟫JNE"cǏ=>l`ubNeR:]EyV?R-l 461?͚,Y<N<8уS>qeF&Ff&urs#ž[L4_cnjj$WPu^ϟ;;n܌Cۻք?*D[DN `TH,A^5kz99-}Z, \%_U3Ā1bXG_UA($h42<n޴q-˖ڣkg3sM[C稧{w͙4{fVzzi)362?y|vVY3OlXɥ1LM)**truݧwFΝ]|>;w5{.d0UDAE*d? XC"!7z%,/x u=dΟ9yBW 755w]a[DK玹֫kˎ M>>}Ϝ<;o:/á~DA5"iDf[yzM \k⚖U׵'_Ǯ[.K](? ޏ!tČy1a4sz߽GM7kjjBAbbK:u(#!! 5o&!#GJh¢x|,GY,*Z"ׯѣkͯm۵3ٚ<Ғsrs7~#ɓ'L/  ?&_FlhI?{|74ۺm>ٳI,- dx<ǣ=Gd2llmn6ez:u3Ӓ]xuꬼ3  RbXJ+<<|줙]J\rԼB?*.ֽ'Ϯ^4n"sSRtb,obKpKW`9c4P|GO"MFlZEAԦ"=g^nnM䫗 Ԫyyy'Owqߎ.u- KTt3w ,s :y;\}q߿&b /L_i_Zd0Q.6ZzURR& x\UDAAjZ[o o/urqp*rw{Kܼu KK[y?npز-_!> %[t[ @Wikk B MوH,  Io[}脙Y%2.`ƃOgXr g cai)[&R+ ~lQx"IPl! RԆ"ş8qr?;Eh1<< ,9죗n^u//6HiKy\.1XŏI+*Rb*A#v >$t=xuqv<.,!5й_rhc~~ލ̸2455IE  RKӈoآ2dp? d &~  '-Buhj AlI$? ~i! =Q{o#R+v!!B&>tAA[2AAA~jUl!'!!A"IGU~ZH* b+99А`|TbiѯGO?>ƏR!""TFPEQ&"M|I&#GrEo˃)--544JLLZ|ń㹟D Pbٳ&OYpKl'O֯_ߦM##Z8WˀWX89r_8p|,HL+pʕcǏgee|@&Nx֮Yſ aDݾuk?+H(@0~DPZ=wߺb ٠ D߽gϝ;ݭѣj/ \ ˖23g߹Ӧu3`<4h֭[ ƍkkkǪՉ ݺv߿adQ#Gl۾#!!cǎÆ%,= |^j\lϞb>:o/H- wuv02tHM~ڵ!0Q]`dlٲܹs/\ζ8ayMg𣁴ht֡Ç}@d044>{\QqјѣO'{s3(.=q+ EEpΝ p/͉ztmCCC8;ݻn455!Jۼy38,^b |eX":tNY_% 653mղ%ÇT8QNCCCU˗ABANj\l={,33Wĉ&M9zݻvyy5ڽ{͛AS&O3g211mWE+WN2S˞@hkk]xG^58p #GuaO'hmZ^|@ PE>|]SN[nغv(-''ޣ7?1`@2Lrr |r8ezPZO?ڵ|ݴye˔SB-s"n===mgذ'N D-iӦN:u17Al+w¢"[[[ugDA/Kt7׆ 6t(:w|tT&'pO>t8{nkuAiuލ?~Ҵ=z4,<[MdϘ9իW<8vbQccc#wݺ?凣HB|Ǘ1L(|FEE:t Zƈ/ݝЂ-[ kDV{Ϣb`ݺvO{;;,..@@A/K-WRR"q[Zj 7cH۾D]\XVքC_O?%E:Ku-\3,&3///7'3)h֭NabbҦM00B>y3(eSOש[gܹ1fT~R[[>q \HzkH5m TmH‹\Mr (阘D2e2XjbՕ qH~ErHKOstpPg AA 5.<<Y3%K?z\ϭ^rRS^<Eزe8{!4^vvFW^y9ǎ_|)?AsQbO8aqppfJ]RRѣ}zȖҧN`A@,~ޥ˗j:wNKEbtju G[m[v-kQ*Mh< `.Lݺu~w&G=2uE>... Zz h,l޼035=xV^Mi˖u//YxYGS߿3g?DPr@AaܹlN9T_7f7~ŸMh*,Qy5633311qvv}" P^(dgs3Ą䔔‚]]]r2RVV 9% ݓǏS $FԂ|(Fr~۶m_<ʊ?ň{葓#\}ڻA+Vr^y?v*3  _!h4ڌӧN$t ܿʩҒܪ3g>t}P 'k:5 jnή%0f&:wi_ P{?ףame򐥥e7YCAQ~FDARBAAPl!  (AAj[  5-AA  H b AAA  RBAAPl!  (AAj[  5-AA[b*K'AA|cbK"|$  |ߘ1-AA-1  mb S*E`:8(Aj[_>}zMu444hɿkA~^%#)9dVPQ>tmmm>_Eϛu@}|^HM4Śk$Tf~ F>o =ߤؒȠh_:!\+R=y/]w*,.ڿoG/ho=Uڿ_Fn>r}4- ttt5r$飲o[>**J[[˿̙3l6GD\|Yh3:vnܸ10aY͛7,\k_28ih$T`޽׆?}ׄ4hPCVP/KmN:Uk?d={**f5 8寳#H--Y99\Mk+>H|{4hPLL"zNNΖцNKKî;Kˡk&o'UD;u 0!k(򤦦}飲O<9yիMMK7w^}N:Y^.ֽ׬^eeDS@y^pFl$,6[]S7o܀Op;;9Bk0Ϝ7nҥk[矿P2>EZ_CCCeGFF.^De!bX>F4 R)Q57`7o,ZYfgN"#GZhѨQ}Z~~>-|࡟`t,?o3gY,f}u333vځ ,͡g&:u://  {t޴i2Jqq_6Oh )OFQ+q\½rʸ8x7n{#B_6}F 6nzIJΘ>͛&O?6o6q؂ݯCF_":::YuiO_ҵ[லl:rĈKٳg` ߹+W;uԜ?C֩#hM4v}!3rrrFv9FFcǍ/**:ejff&ٷw1JR޷"𪭕*73T)S:PyB\paѢ5M>C(P˗O%SٶG>{lLnvٲU__ Yef Ԟ-e`hTkW> 硢!7oVʬ4L8A (MOO2d#Gׯ@.4BV-HѣGX޺unݺr>:**J}m|oL2ǎ&nݾbgccc455?&&fbJG50Tj!ʭQAK&O'}0\6 PZPnL&QQZجYS2aU_@\Ef $$X8̌ &t3,Re[_{ zkҥ_~:۰a'OsrԝD~ BP~̂?8Zh~Esy损0CD6Q& P\TLI [i=E.nPk+֔T}e\!p!wrr4v~~>< ((*5{!Ց-QXXX(D#b"7#~:|MHHp9<O[[s8_ۋCHL͸iSsëx$)++q|rٳgԨCKe]:G-()U~*"-k׬{n`Q*ETxy6%D"ߛ0]]L2$-Ԭ"EtgO ^[YYY[]i7RܦukD7n׷iVL*TcwҾ{ۏcQPPSBTǚr3V*֨꠨o6l{{0eG?yWٶAfd} QyȷerYњ=ȖH&5k֢b%,$66F"Ceqqq;w$||}}A d"L:!ܹssرՉr9+I#Fۿ?`тh<55…ܹӷo_pLK{;/{3((!!A(_K )Fp?|rrrr=oV'y7?{:G͊AEEnlHb Mؒ7v ;V XK"{kmrq@}3;;s;ݙ0ủIIϜ.UVd:IbH՟ukzϛtiӧ,--M?B5u(643 V4ntT4@쏟pB``ŋRut!΄@uu?5"""j>$$t11p?_`uPО=&Mjަ\zƪU+ٵ{4v2f4*%%%ǎI_'ZzI^D$49= ڱcnjMQILFXh_`PPnFOښo^I1~⒔},,srr sФCf~? 3OȄZ͹`2Ǐ5{ml?J܌TwOW3\}b[nT6ިAR6$ >NN|N9sZx%Pgu _9It#:~xvv$ݻiiiD7oTTT@ڵk#$9sbRҥHk Y6`Pz R2oAoc%Ɲ>%;%Pwp4(33ū׬$fp2AH>KzJ^% g./_> gp500<4~؀K_aƣaa)`l:p2@OIOf-&W^;(9ۤLodχ ffwML=9|3@)*<3M+ʣ%VzSrV$a8 c{pikii)/k0$^xѢ?Ȼ5nTd~̙3s(ݵ0^*,u;iPykB_)}d{t*7OG4b+..nݺuM HoG Z'JnDzAdv~X(..?V]ɹ߆uAT2@YպukxrA["\{h4tYcdTR?126ū5Ip۷%Jqmj T h$W/M]= ,=FkչL3QBP/³'jժe+?4OG43݈%e܊y/ $/Oca/]N=m컷$# @ "5SE/>Cj<$u>Ġ՚`W׫׮ :t=W Ѐe`P+"*q&a=U-x<Jwܑ)?I'KJ!BWGuKVTV~!1M N9Q:4 $q_@orzYM]""MukRf*A>/֓'OV" ޿MlJEϝ;A',MK;Ywlk&,x񢓓SSTAAD1M#u&Ӎ"E~bwO'];s(-# J r :kӮmÇ(3  iERԍ(oQqP$n_)i oUgɚ,FL6IAif4nĽb<}4MMdeCtAEGI#M+cHpEbv*= |4nDPZ.,,/-Ծu+2Mͻ̏i4*@O]2@AA9,JF9;;y0L`-4nؾ-u3}=V\Rڥc̏  FlIw#_EA` :ʕ+zl>C[Ӳæ6cp?["HO֥K  ͇4:6?,3@^__ŋB5ƻyU݅z:4P_wĈWnx| scH_PЫ+v#" h݈ W͍۷o+=Jӥ%];Uukےɺ ed".R@AQNw#z}TT)=ٳg!`:cu m oEyKz$5BAQHw#co^"!_ehlyV%gin qy}mޓL޽KVG7IuAAIM}Zl;WugA2[ɤ޽# ,H*  MHSv#X1&&F~s3X^[A|EyŋEÆTQ۪i D-ZTp._ܻwob&  Չ-o߾pqICYfA>}DpttZ 4+VBB_9%KwYCI {  x=If,G·\ 4 [*=4:JQUUPi! 4Nlz$5cJ{[VVƫICS4 :I䢨r AAգRU%h4u:ӅH:H CT%QX,BSSd? NEikW&4 JBa0 FSC[Q!;7p+tp u&8-8(Jmﵠy{@]().Ra2;;[[[Ndi sYuPVV G!455i@ +6_ISKF*[k- TT9-1ՙrհʄRi, (-{24,loY#(Bˆ }~m p 7vU܊6m|ycǎUmHH[[9nuVYcmm=s R":&fǎߒx"& /^\~ݓ' ȲK89i^|+ڵfaC Wj @ub RAUF @i X_mI‹bV oc@n7o>|z-[>t߿ G5F-|]qԨQܽ{o… ,^Ekѱcj$c#v#Ңh,55:%7b?uz&>"FibK &|DxܵѣGFlll ƍaGAChanzE1ʍ8xݻYYi.066$V`M333[n}(!ss "C,7n}) S_xb~~AV|}ͫfhXaV|@7?6 n#<8c7njVSp@l3qr… ä/}]L IZZZVTޱ^|90{,XL8AaQq?1AT' #ʐU8xs488x'O#!!!,,ǧ&%ݻ,޽{tuu⢥գGH[&F#WtI'ʮǏ|FEGH]xPR~8fh֮] Mg۷mZڭkDGдkgӭ{Æϝ;G>F /F;SSRZj%yW$JzDxʕg#Z[[pIɮlHA pvv F޻bŊyO?Fa299J,4+e_v$_z%Щj::tH:wگo:h䉮CTZL\5|GGGL6;ؚE}_XXڂL&o߶5!!a͚˖(7R'v}n6 lQ,+O:1S.J:򔜊 V\QƏ/IҿeildL*i(Wٳ[6sF%ԻFG-]z??坧NMP\TL@Tʼn?1A*`mDY !˗9sێ W^uss+((8~ǟ~C5:&&55U>F#Q){.{ {̙J pēUyHdRIbi/T-]p)KKKiӏϦNe&sРAFn۶$'O>3ϗOt :MZ||q@F^5I>Wu%N;;;㷈~FEO A&[Hu\DDUs͚='w}z#)))cǎY5|'x<^IIɱaIII2167R]b2a!>~AAݺu1b;;;HfkkkfnnjjҾ}{%|/7/ <''e˖ϝIKO"~ħg߿Ș U_{]l~ܱVZ՘}۶<$Ͱ#<н{)jDdFe˖gjR 5Żb=|i]l=z8773ӧM'N5AAUt#;c  &vٳFFFs!f8,..޺uۛo"N`Pвb=/;3?tP8 k}ݼusss_u AAQزzګW~uDlyMaãnZZZN2z''Oz!޼ysҥWC߾{wСItttNfy5AA"5~ˉe\ ޽}׺u)5i8dN;/_ Dbڷ`ggױSnݺϞ=3hAA-333kk'%E;F")d5L#&P(<s9\ k&&qdw-s9圥K4lAAy~ &+**v`Wׂglܰ.///m>}\"eeeu;!a1ի/H9pH ;NlРqy2AATV11w__?b1c;1u4ve{_|޽d,LfXhy޿fZd9p\byА`AADB-~=R՜iDm৉O>|/&~Ĉʲ^mԨ mѢ k=$=zw,Vϟ}LMPV<  *hˇX,f55@rn  R?^l! |BAiDPl! 4"(AA[  -AAF  H#b[c2mmH _- &'ߊ.Bqr>ܣ񊑖nh`@M[Sf\1EZZMh HsVs;֚?2 ˆ }~m p NM_vӼnnCB֯ HC$44l7͙ͧOqE5k&J Q4V\ eg;vvQX蘘;~KNN>lŋL&ĿxruO$RTkkeK^9A4Pl5=@yთ۷o۵k ܼSfΘǎeeu*ámG-7W҈~yl >CGGV\\}K B65:ufWW̬W39riӶm,NBEe'A/[͑ &|DƍsBl8qr#G]_xb~~AV|}͡s߾+VD~yk^nܼiffq&Ot^ uǎG988+W 8AwsspmJ8biL:ɩ/GroF&ܸq#77wՄRTTsnCCQ#G::T|]P*c#coy666D=GzBSS?u2er\/:'{JHа-__؛찒+X?F</ `ƍ`S__Ѱ=;ut7sQvr@\(++ 7n|+Ν[cFh\ܮ];-VcV[[ҥ#<<ܿgeexɒ=wo۾K/ qsCQы-g3f^SC[+͜JA3A#}.{lŋQ$ɤw}{+f]L]6m,--+w-\xnCnYZZBoFE- ,455l+"Yha=zoݲ|RC8֭[ Ojǜ#IjaW]wwwg\jɝ:vP(u<|j޽ɓ'$$2;4K>f/=f|o.";;kIOxY׮]s~W8qdLtb??_w?ul)6mjXyTO_x»woa۷-{߻JBߐf`II5ł;pA D'Q;11_ت+¹}2}ӦNa_oU?gڥ O(33 $Djii߰eܴq~A/[ͅ?3kzӦM;a„'yM_rوt($~qӦqoݺTykOڶg=4$e5y_x) ] H"}M]XQ[acZꪩmmZElv5I"nѢHϨ_0s#G{# iB:{quB4g+X{?QR#MvUO4ϧRy5ӕHs޽+VVA/[͂ɓёTd?Mrs33v9,$211ԩӉOIu܅y3 :"݊tK򪫫l2??%DVsh/_̙S[lN044P($ے+DkN :uڲewǂ7>>~ܸqW"e^޽\'I,,,,Cv*)&[K+33K Ԯ^VPPp*ԏ?X/\f_*>}FHh3&zMڻgw.]WMUBDI֭]=oҥgN67upQd " Aկ|aNlExǒ<"K!++m+F:HnlmmMMMڷo3N ];;QϦVZ9Ϯ{]=b2Ǐ5{ml?NU^^׬YOfjY g8%%e1#==W/bHH1cc@/Xb@,[![׮GSIs6W u%5ZBa8YXls:::iAA3FSeRQ]%*++ O,-KP :@RP(\.Cܻܐ!C.!2(ITIxRi e_mmOdIʃH3g f=zkNN43ć+MϞ=JaiiIL).)½-#PՔI&1 g /yҥEJ+>%;%Pw*O[l̮q6[ԦF譀l6Ȉ473PTTmbb,oAU-PZ%%%g"". PdXrilfs $Sd͹ozW8aiSKXש ؿFuz2gL&C2_m1 uA ]lDlPZlN:}ڱcG۹s礤$gddnK @l 12dydɒlcccgpA4tEAFB5݈nN&_~}p 'NsFl98h)k`Th7nttPT^5CAUt# ֯6`uA[GƢH,*FR+++kSD|Aa*B_^TNe|!ɓ^^^D!|͓'! Tt-PZOT}֩[[+#sC -tj4 ."sSbNB_d2 .[P8055;wnQQQ%񬬬>~(PAAIPgf55cǎ ($5 uͺ2Raإ\.Tx 5* DhjtQye9,AF V-!>oݺueeeqqq~,Q~W^p8=!8  MgONGnhKтg:TU$uz񄙙Yz:rn%VJi>^|XTQHʰ4oG0*(+1,u [QJK9jT55SUM>o\7ݻ׾}G0`ǏAiD"SSS]]]UVAADU~]®6TQ# >w˷ߩJqK9%sA|<#߿ի7lK2bTz,  MJByt2#UjJ-.m׬YYZi!ބѲCظ(: hLFD1:w&%%eU=\.Ng284AAEb ON yyֺ]a3)/.ɔJk _~vҽXs#r˭mm6x}G`٦Me˖۷^^^W\WeAAdP J `3=3sk,2.ƣq+$}xKD2TpL oB)iAjGGG;88lٲ+]vݻwMUVAAD-2L2-d<{ܩ&Ɔ-])VpH=Ivg27"vU0xJ;olr};ceyHZjERy<:*+  "322 @SDEܪUo5l[b5ʪZ @l0R)T؄̕0[d7[o߾555ݲeEC2BCCNb AAEb6AXEUCضC8va^EI ~ H:_ĢS j{˖-\Erss+~;>߮]333UVAADUw#AjIinMhJ^BPH=[}F<S^^! ]|Cg/ >%Zlll^8=1C޽szzz  *[B՝S%3Dobsjd*VOץUII$QiQi‹e3u5hn▕4~6=oѢE3g1ӢF{=;_  [<[ T I{`ШꠎhhNO~M"^~f͚/^޽{ܹg{t:]DAA3T#!IPR\yƒĿH\>]Ư=x|Y; v;s9p&une`aa<~/UIcdjPf0sˆ } '_wpَ;|iy{;v211;v5|ŋ1U0xruO${׽f|kDby*rit M HDfk3蠶duuUD:\ +guМDWptuKS[T?sLH;jԨ-[Dӧ={v媬`bW) լCGGV\\}]C[VC!SC@sشEj(t>xyy}]v r]yK2g""|}n xYY+3fٳ<sӦmۺ fO, _ E FREjW$CFVPt2MSD4C}ASY-jeB5J%OQA1L}-RՃP(<|0OիWII*+$8qٹW!!D vT<,_xb~~AV|}x݆Ftt-~M!^ =rpp#aۄF}VX ƲXӦNur|ˑ.ѣ7n?~|mjwM333MMvA],o^#=܇O2S/gKQQф RRRs>"\IZƯVZ.Ibc0{W99+duu{yl fhXw:wZt ѕ9zԨjA`T=)4HfVp%B _CKC$$CIgT~iYIiI@$p8e:Zᨉ|PׯăTKKK;44M6T*UY&ޡ7>>5f+W ڥe)Qff1ZZZ7wq`0<==7mܠ_|Zn axdl߾}FFdffvǏڵ{ꕕݢEݻΝ;tA$ k֬ʂJ. 455h` ٳG -GHH(pĮo\i+W8kmmMg0 jOڶiM)/+WbMƏߺu 4JxˀDe;tPi„Ž שv ڴn JڭkD" F23jssss 1fj ABlf^^(k4Z]ٳTYAm۶Թ 1mIٗ{?4#Vgy34B|Fp;#%AZ]EEׯ#""߿7lٲe޼yluH˧Oz{{*ŋl6gΜ1cפ{vwE>hVjc"#l-̬:k֮|TԩӖ-[cǯnbb Lڂc\.ĉƍ#UZVVlmQZ;W ?O? |IzwΜ9R?W pV"DND]-]p)KKK0iӏ7upHs "pY"%7[ xϞ=:u/믿NNUMm۶oޱc+WlڴxEm ϣ8hk`Z_ݽ{M6?'Or!عs/{VHH1ccM_btXCd]9,I[nf榦&۷'Q_'ZzI^u*B bN n׮}=jTh2b cGg͞u66[+5Cb(5k5Q; cee2v옑u yLmkêU+ٵ{xL]rO8{$},,srr[ly9ς ccש|ZlRiiieeeϞ=IݻgffBի%Khii;f;vؼyux<:tؽ{wvv6L2qj`iN}K,_ASq*$\ m*7RCԩ$4 {|k-AL53 ~i4!P"0#>|2$Q5rBBdd$lBenn|rxY ?~ܱc?s/^ذaȲݻ饥AbDb~K[[}%PHuTS]APu7"N묬Jg0ࡰ]v@ 6 6y<^PPPyy r BٳgV͝; WIj" F :vGg0ҟ2! F[ q qyU T&(-ccc:݈ UtQT---\Y*[ -zu! 4* zY ,-"@xBAQ)AABs AAA  ҈|6bnUAAT@-_1~$ѣl||[ZZΝ;j)AATEGOy6uоNb+$$gO+  in#4445!C&M"_kٳӳ?tP8 k}Ç?zhA~AoNOO_K# [j9xÇߊ'\\\N -߼uʪ  H#ÇDGKܥ3ɰkݺX'͟SVV'/7g>tήv342С544>|HfhmmˑWFNm 2k%QiO[ӝ=gm,,_~  Bj .:dܽ bKt:^ݻw7o\tUݻbaPZ#Gzv ۴4h ͛[QQ=kbxxtk^< {I^:::ZwAARcV-~FF|/_ n"1eee!0ܹm۶UTTTXPP\\ܦMkBi)ήcݺuuww={6Fk# A>9&&q+\c'ӧ<Ʉ=,ȬBY޻gͿܹswrҥK>R  iylvfVvppp8'ǎCsʲ./ rjjj*+++%F uttZ 444 1UUNEik4j H4Yp((0p a!sya V\ իgn]{ٛT92Ç͝;oΝ UźpXKcԩNN}1uAƍ!0:vM. ƍaGXhB912Z\\TZZ y]~Db͛߼y׹P($0̇\NR~ l֭޽s܂J:D,Aa!L5/]/hժ1Q%`AFgLbbbNNbÇ z:]zuZ.ݽf@,Xc?ͭK.L&ޮM6(QQ B MMM {h554 GEG/^` ӗ, 024SX9s畕Bސ#uAzzzx!!!?n.g''ҿpfvXZXzX<0JH@]sr>~#GiV^|L 'LhbbhB̰x%>,rT[;n|۶m~>SL[/]<{ dNׯO (>c23l6,H3sؘX" MQ$|}}]:h]"tAT7*eC!p':&h`K?uԌX@iڴb%Ǖ/(/\x?SѾ}A(|]ƤI^sy_OHhD1YYٺ\\z!]s#fff._~nn{&%=~S F111Qu.'[x1˗h4؏־jΟVdggM<Ϟ=+))9]񷕟@A3(>c4ٚ|>x'(**x"ܮ];]<@]޼}[cI,2O+C6mV6 v\Iy^x) ] &f++-mߡº ͍Ah+Wvko{{6jΦ[nÇ ;w̗}?p LczR([qqKĀ@?n"Թ Tx@A3(>clyK9}R(nc^^ԩS?\5Cִ23Txď7n.W"'yMSv8rO8Aq[Y1iÓ'fUHtyÅ!#Fs#㮠TnDINNN_+ۃ! ˑ1[G0ủIIϜ0|59NՀ}BU D9b&((8YXls 4ڙ3eDkVV6G_j>v2׵&fٺm!ZirZnmoolٹfm۶|*J9wW7{FٳgפI۔(>Ld2BC||u6bĈiggYlmmMMMڷoORtj<4gPl5= e($IRf4B HKFFF]_%K$6F&t=KzJ&G6t$у]]srr DaH3g̀ӳgχ=JKKKђ H|+\tI&F` -Us6̆ qSX0OA233ҵ@p]"Z}J45Ԇyqtw H+L#H"N_|yӖe˖gRW5AQ[XfS'_P_uSAAϘ:-PDVS#}ჵ?: AAF_#@Au[(AADͳ%lK  LP ’;"!Ԫ 5"  r]l{ge] ~|9sa&*B)))2Mwe꺯-ۭ4*TV榒ZTzIP*qu 7Dr~_摳Ǚg`03g<<Uë{"xK+tR^VdPxl7zZ=lٲӧXGϞzѣgEEnn- I+lv\=K&.\?8pX.eeT-_F,}VuYxӧo}٪b  1g+ԩS=߸q7o۶6P`E?/9yhIjj5\njG]i%ˎ[=NA> >MFRSl?5:Ն/fEۈ;odZԩS]oCϾ +e3²M(\@g "{f/.xݼ5V="W3[U{0+k/c \FHlDT[?.ͬ1G&ٜܔirP\.#Djs[PLE8gsZuS.}>tYYmۈE o[Reay0@d<@DМF>[ųۈ@SLM ̜-9[~xZ{]6_?ת0ٝh2Zyf}M*k=@2e.\X}S;x<\8}V gJKә[@Vs+*y%+Vi7nپ=[wT:իWnݻWTd20[r (tyyyϞ=?~5窇f2 ԣG0+@1č8{***z^{[oFi"TtJ+: N- S^Q'O}.gdJ~B>[{P>}MЌ&7cřa.]*ÓwC}ޅݺu /?Ŝ[yά]6{7n ?s py쑇邏}d#?}A_>M7?:"w\PRZ_&X+ߐ, 5“_'vaVGWVVKǍ?G6?-C-ֽ{x9cޱP SxЧt&w۶mڵ2~ =c=k_]W9g+1I555wiSrnݺAr ۈ涰saEEo.7Э[}qŗ^Nٳ>`߼uI߱w}o_yEߝSiw4sffK.|ލ`‡[rc!jjj\~?rk_}upuu&&Ox_zU& JIb}ه.#)awT*5d谈c#6¾xf hElөl6ݙn;\+boϮ^ڷgUk>obhZ[GR=_~>}mÖϿx Ў">uЧn3T]>uc ?lP_t<HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[-@Db "HlD$"[q5fH!Rt:]Z̾>>jjj֬^O_c.dVϞ>#F{8##{W|{a3LGWmmkO^A?wQBiiFG~x]=][dUZ!6)@vGl@Q__Ng:D& zb "#۠أЌ:kT{G}g>󙽼}~?m5BlxꩧN>ӧZ+x׾/C9Dl[[]F 9r ^x{kkkϟVUUuYSN k.\;x׫/Ç7]oߴi׿[<6d wbkəgo\vek׮=,XзoO~7|СC{\ͮ6nܸ.]L2eԨQC )*(4n~jժ-[`z^zk׮˖-?gѻwc=gϞ&M ˛]n5q"[qֶԳ:jɒ%!^ZWW)c(1cL4:tqN8aƬY~zIzk[x}[I [БƎ{q mݺuN5\֜?ϽiS}}}t:ݣgσq /WQ:HlD$"[-@Db "QKcz68kAlKck=>b 16؊{͜-@Db "HlD$"[-@Db "HlD$tlRT*NgJw/sy}v=BUs̘1Æ /-+kv$6@'RWWꫯwO}̱Æd2Q\555+Z>鐡Ú~^;[t"uuO/1nK!dJ0`@eתF+8 ةf6l2tXRPC7nPSSSOH-:w5Mluo޵HlD$t =}m͚5_yyyB_|/iGyt:=y/xҤIF ,8qbE}k_{zq'^y啕;npYgviӦM W\y{G 7#`Bc钦3V9s/m& o\vek׮ `)S;{&F-+`޼ۿ6zKj88%ݺuKl^>cK=;c~o%˓:}K/ԣG M4{m۶;3ΥK?>,>w '4ZhQ?<ի{uQ矿v^.[lZl%][MKk„ A o|vۑGjwNmmMmmmKywu?cƍ{5y7|3_2: -u-T*y'NӧO]\pe{C K_vݺurz?ߏ?~\x7[t:-LQF֗|![^xf8wˏ9,͛Ν;iҤ"Ǐ :s?ҥ;~x̛7/TUUw}9{uu}W]3g̽+yW7[ngJ3u usXV.xWө#8zڵÇֳgϼ ~f8 ?sM7 Cl (MK30wuE3fw/FRg?{ť^f͚|Сdǭ~ lРq<+<|ʔ)K>bŊ!C$ ;۷!g]Znh u衇|Mf]z릛 Òkp+/ )dzrBj;i ~as~K;JK. n#Lfذa=&OKZ Ço~Vmg޺馛.F4wʹ#G,iW-N˯}'g8>Vս['Kv޽4|Æ{>2b޺1~ZFldnRq.[tFm:E#p@b[t:m>Es@[t.tz˖7-1^}}n>IRzz_κuӷټp@ @lЉ3wHSQ\k_y'&vXyyy[t"LfǎlڴV`t޽;o߾]*s)++qWtYTVp@b[t:LkUUGq@[-@Db "h^*=I7}|Wb y(_.ީy[el-; q% ?d2$+[c+Yu޷nsхo`_lŪ\o%ը52Wm۶7|s˖-7شi͛[[۷o o6hO P EUVVb+ykJ4[.Ij.y)ßBi*-]vUW~5)MwRnOc.žTTT5Vx)v-zV(\$ +V+l5S+kY555Ede6OOS9P>]$WH͞h=VaY^b hrr盒ˈvZYYB())\'Z1g+w-VSU_dv|baW JN6 9ŕ;6EYnIӅ}GUX!9VSS[+-g(WK!WSEH3[%VVBayZaZfFTIou%[Nn5={^hYFgwJ$[oU ЮϑϿUX9WcɭwK= Kb+a:b h}Y rs]l>[5]_Zb hcio%rw:mm$CJbr0<_uyo  QlZi@+)q7Kv5g+g9CAIDATxl6KwX` r"zb+|v lU, *\E;Kk6޾20)˲-;yLfNI&yL.>\-m ZO(^"͍mQXlZsc~vfD5@kxLkfû^v/F2Sk6@) oV FMh'ޒsl3 jft9\&ޒCl3ݷOh>tC/?Q-ȉM$Cqj@k|Q32(i{~"i f⼉vmfmXLVZg>.B2(2(Mk< V^όb1%{͠k.΋m\3Tj &sҎ_kМ7<1D*?<2(2(}ΙB+Vfj&iFvo;ə,6 Ųoۺ>6FaTYp9oxBVVJ$⨈?J|g2-D*I~JP+Amt;vEmVޘ ̖r8"$gsw|H=b]2Es/=ogsX_]fiG{lݹ&%9Q!D+m&aFX]SV'Θ>Y$ڼyѠ6UŇGQG:G?a=2ZY>E\wTFoE9YdRiM]}|$j jGiݑaA !wd=*jز}!:ym3Θf3[ds-pns^>;_v 獢Ե uΣw|epXX"K_cW/n}ӾM >?J3߃`(^ЀehXJJ"C9̜&ssURǾ(GțrM@٢Uz>;*-sl ;n7c%wt˳A F5\.5)79*i|snmҒ_vݳ&Tœj42)5)ro[d8?ؖ{F ŵ ޙRRVu] Rkw53i: 56G1Z掳ry@@{f3].5{tНfnY }T3ܲ!̾Âã(2.!!NfIX WIWH <O\)e!r,L~͖GN%}Ђ҈Zkjzt  L{ZN|J9Uՠ3^4 hj~7~:A]/rEmZ$͝8X]{e2 f}6*j J‚d5ۅ}{\)*,'!*,5bi :8+UMf e0}Gh[.7ɉE%eA i;+3@.kST^Y }a۶: H/l1;zJI*:*""B,>DGnWx;GtOfPC1Q?o?ԔO>Q^<3(#lu~ӻ-GΝ屶qŵѲlޚ1 3q9vZrb |JǨh=b4'yT]ِ9>XODvא``HVPlW\>CBht]UXQc0{&ΙrC1utѪ==33DwfŝkwH҂~=LމҢvde23ؽ3kWߟ9n.&Ç 6{ٍM F ۰;ԆfO)@o9JVZ-^N[X>~*3O^lҁSo.l)"Uw^9b~߉9#Gbu溡FM-;y=nUwAkǽEYԘgoV]38۞+wTKz*6ֿ^[pN/m, h宼USB|cYޔPD {0=-#lY3FF22˵ VǎQ6ohFQQӬ(`ebgSf4=+1;ɹm] E{fq礍 zKV"0 ;I1V )˒- sa瑒glIWe?ֺ'\NEq'#}oJjk~zj_][7 32{ٺC[EGѐN0G)cl9X1AۣSk m4nrRgk˯<}/dG' /힑C(aRGӨP &^Uq"znPIVCޞIKP*eBcO%ZmHFz E::;-2"Dђ_vئMm w'aWiحCݟuiđR.SK՛ pT\ٰjÙ3tɀqK⢂"v)YW^N^Ǟ:Ii&3)Qkþ.^ed.oiHɎhyk\_݂ڨ*Z ͼ]ܥ~Fj9m2Cggӽ,/psQ];GN/Mi44m윶(TkkO$m@$was8Ί{S qje^g dAf-q$P);c#(.~gŮ}9~d0Y,bA<} &*#Ÿu;;6P saRR"|/efhhh 4?K];fPIo>Q:XHSx 4>nԙN+*kEwm_XP|L WJGhկ))Oo==o(k) {{ŶݵN:y޲m!?xs8r+? C[a5Zz!Y ,*ZI"Q#{PsGܴ8?Vgd;uآyϞ{m8R>8Vu&隲m&{˽?Ydrm"٤xu95U.<<:!\(9tIRD+#ZWWn:f2Tё!yQݐq#z_4* iѱ4OinQiDۮu36{cqhuuCo9x{6&tn|BaѠzxnD|^90}e"ZY*ڜLتFIl):wZK{l̖yhә( 9zȈFfnWWӘAio,CMQȥ47]ԍzn!`T٬TIӵz3\jsL4ZP['[vǽ6kcc#l8O#csSfS7'޾Fo]@Rr:Wt˨6V66G.bs+}@Ӛ]7krBe;x{RDDRx#974O ~qӈVF3ՍW/77D8RJC1:Κuיpv5LAaneq=SSYV  ib~zS0u+3/%MmwCx6s%:u龜'k~2PqGRj(OEZ UjIgųTi~NATTBd/h^H5ıZJixMZ3u)ZƖ6:xDfkpo~5g'`۬B ^8"pf6Üll6`w%myMnx Si{isέk/9o9^7f{v5WMc,bX`~`0f,kXXw(VըQ3ֽlSS.~!vtuvqeÙ2u#B7/tJ١) 3Vʒ8>eL)Eν=D{θe;NyZ-A }uanٓy^(# jI@mEӣ{9{%h<[ɹ[mפ&kcƴIޚwmB``4=}^=%,VmԡMʐP5ɤt{B"KHeʐ^2 O,)ҋ$ ee:Nwtݿ=iQqHfmWH%Cddxlt%<-WFWH$䊼g2+/:2I(o S E»&/QFa,m8[mRAвS}_^Oxy=Ҍ&{%M<],7jSDÂ6-tU5O4m:}FjBr1~Y7tOKJLL`wt@`en)ŵ*GEŨb/ޞkwޜK3hDҧW}=uPȥ:9J:Iq4,}4:ӆ=i)I*w{85[gxZ=ohamt=]vkSUh`5LT4e+L4ߠz&Bz_5xplٟq0ͧBXd, ܯ99Οke9V vN+-G1~b%FlTUvtVhD$ҽڂLmg^ʔzo{R\VZX#=G=) 1L 0p6?;CqYsw a2[ im%Dr >lȤ.&[ dʤ9OP/#Nfty]ȥesō3X-.Qy:2"\ǧGmtf/ή-kkfU-[.ل V lqq6vsm3D"F6 ^z3m"8Dp\;umɠ٭f~X\snrJ(Vu):"dfșhfsU*@=͟?9>RbC2 evnQMb\\&v\2φK=M8x3g1>qѣG'!Z.?~O? O+\2,XuVJ}m*Ϟ=;--h-a{n7l0}tw}GL999M{/O>]WW3ͨ}LG>L@l~+dO.0aoaݺuK.}&۷o_xG}>@l N_-\ Nĉ)CBB4:8!͛{>|8""">>h4R*ģG* Db0)Grr22 tvmֺe]I.ZDnOqЬQky]=l6\,T(]I8zA.VL6+4bsnT+J޻A"RfSySW_A#f g ^mK ޔDsgg&+%.߫zm й\6,|¼B= 4Qͫs2{''>uZ`!uPn*bRܕǖ-6@""몦OK[{jM?KNRӯgHr,\-۹Gm4NZV t824T2}t32Rh+m(4D_h4ZdDgʿUI"2GνY,v_n_flƓquFlLPfGHm.+"VqWοj6o x m@lb7 6o x mAl5\R\;ntAӫvͳ+۰=]V}= Z_OrtR㭯jװ?Vuq67K(i}=mV6X$vFS$z:.M*?}cImiBD|"ZMl(ٰlbқ cNYM[~i}j4w{ߑc)Njsgf,[UOzcr^EA24*$}O`'&< =*\"EkԵS{,F E-[fѶf۶S%V}ZlVAVMZ<(ivun?<-#&:$ޫ3f_7Gs~zٜoH3MsL"Mk};W?Ą^홗WƶZװzOm8f`}٥GY*Et؞ރʀ@\PCׇ LT(yup8{d)|Z=k܌t<ҵn8_'wo= Wf5ֿ6+s.wGgb_4ac^v/T{76׵bF)iRcvNJ%'-;}joVROT sRNIStJ)*ԛܱ&yiԌ}gH'.kŶ;Ja=g@z?Qo:akJNe'X-4/+ -)rDp;]AWmϧ.wIQ'JO>2viM>9QzjsR]FKIE Ml75~^L!28⇧ת"=~_ZVB/S^W?b[suNLi6Ml0e(]A,ŤL b2_7 _q=x_ﴒ# 6o x m@lb7 6o x m7sf2?sKmڋ? O bl_͟9y2>^ڽc[m߰JIH84;ݪQ[ꥪ8ÿ~gXm,6A MʽW(S>P_Vʓ3, ֥ 1Ey/WgK`>NOn6@ϕۅ29w) rQV&T2OM vc㯼6nu|{| ь',Pids "K]M)˖-z1[v+l;ߙ{Xp% :U()sSkci}IߥvL `WqcۦmlkEɳ7cNu:bsrՁ9' !,)P=XtF` DgUK D2yeS ڃvt 6@_|rZwd__j"vslTP,۬ QB#?Yҍ~ݪQ/xx t n{jmu7[<9C( eSEbswz@ze-YLmg,ghJ,IMuJhEVOߌ㔴ڪeGM-.첊l]!#F+LeEP[qm`ito Ѭ BCFVL_s5Dxi$n ůhT/m{^u׷x>5 ӥЪN+E-8"Go ?`لB.V]Ezȴ]1eP]QHԮ ䷱MQ*ʚ?j4}'L|苗 eyXCEA[Nj'mnp̵S#/Gҕoh>-Xg%ə6l[Ԟ.E$ %~6Tk]H{7OxX(v <'NLuPdԞzߒ7,;)aSoZ~}a;$}R?_i(Je6+ ;c[_|ªU+{A?a@Cl_(n6)zS'GlǤd vEJOCEkiJslll)ɳ^C<緱mj\SHudA|+KOJX" SnIVsr~ߡ9t ~@b»#~c;rrGJ$N?q0b7 6o x m@lb7eX.92= unCvM( a- :*T(esMddžڭ6 B= L+E2Iev)Z \N)\PP!S tRu'g}, bUkH} 6w"fb՛hpO-lyZBn=66F(ӔWGϹx^, SF]J(;# YE劯7.IB_>PFCA%2|rvGnUo?6R{0m~oIxP+be{< -~*kM1:_ŶTdQJ=ί'Ed< EU"k7D^{^7̣h_vͺ=TW5 3tō/C-1n/\b>j1j9nbnm: H8͵2U &v;YMCmX$ID<~s]'g<7Zz^Gw|\OlS*Rc͟+,]m#YɥK~㔴zm #had ]jޘԭ.;6NFvlo<ئuȾMedx(UǦIk,qhD_QnIH;MiDH汔 ^٤De37f/]h3v i!sBo}87GX<)oe?v+ul-Tٷ1oB ל|YcI]BÂBgr.@-a3*(IK?Zi2]ԸѺVpkvTNCmDf_͇]>BlDٙ~ٰcﱻKyꡐ"lAwN֞ s\{jbI_k7m-]\p]Exy,s\l,Cl@ǃئ!m+*.,lٳj8/*\6p92WUZj؞qidEc[ZLS=H~NGw E|:Rft358*P`GJW@/eO5J H*X&JaXj* @'ă6C%T "ݧIBuy#J(ݧSZ{iuhlpnhތ m@lb7 6o x m@lb"L0/ߏ>ɧml Z|vZZ\}}cum#[ýa}Koaac Or_3o5փO1oWoo;c̘q7g| ߼].B ۳OS-{67Gn{q#ni yǗiR>xV2#e2~OL)?䬬TfS%;wZ~:v ;;uޏda#[ý/pOfee5rŇ6A5h?٣G 3,>rTuv]{?޽qC[[}zuy ׯ[ddeG;Im˽q.KMtU**IJB{wٞ6Aبgv>=CSa#C7ӫ{><]Ӧuȑ(}l6-ǹ={PN*( ht}fД$Oc%JzO>Y+pvy躤4Y%촽r} ghѣk-H䓋}/ }G]m{쳟,|^|qUirKi~8qpފlY}}ѰfwD"ҥOfև붴.۬V?6D+,O zh?%%bHn񲬬|ݐ׿wZ-yqݶmKKWҔݻs}ݮ4mٳ?_~T[rd|ッ3EE QBnuBB4Mu3[ν~c;yVl+rz=Z&?rd#11:##~ۯ޲? ӄEЧ?kk|ݨ6&K}~y?G Rz'++뮽v?3fHqq{?kEf|Ȩеk_M7F3e4\Hē&u[ŽPfŊff&=nfy :_ڷmk<}7ѣi}Er_Dm6\NNڿ5Z]\^iisޗ_>wtIzzfz{czuϱCЅ;%/,!f Uڊ{zC07dhGmN'>JKWT~Knb_b4o^((iJbS\{QQ!EE{f篾ernۛ8|j5]?b=s 6o x mhض7vmMu.;x m@lb7 6o :P(d L.!ͽt~#:|#ܥW_dmt9GkX,f♹&ܮ}_>ZNJ$6vInf$Ak'Z]DFCu:h4LfYVx:mox cfTJ\)1ovn0؇fDM"X$er% [­#1=I.SfRlM6{ P&Lo"m<a.m6]L;, ݴsK;nfwWS8a›I[lMϧq#q37ND8b=͎ف "Vn"mzPg^Ȝ!g.y )a7;xn9">u@gPf6Flr#u8GDQˎS/zsdz1ء6G34fce>fˈvs/`4-NFrgqGD53vO΍mmS-lc6f p9 )illιmny}H9Flpqc=a0,gs+axNg== r912+Lf3M!x;MT5M_ǵ_Ix̓m$K $,!_?%Ҁg:`lIUR?~ғg"9&)ZSH ]μb|+r9^),rŰjbH,zB6Jtt߃w.tP(EWcT{|IH &;d$/r|Y+6;o{e/]%=:܏~ȻctzI1f6 9Ե>ُFisaa} 6y]1`Nb9׬zR6/8/.Bk+?ފ9CJn*!d;D݉ePk\J>>|.wy'Χ=rc.Iwx}sOٺeϱgŮq>9ioME3{u %$VYy[zBjXBB, ,{D]E. yEDR{&kiHrB ja{lbS rR-H{I?]BKp#" :ΧS̬-.Hg7',ޑ:f>s$:6u%w2"DA\qǹ0,f@¾4ik?ÍPw:t~whٹ뛹FjSJ͙ֆoUy{J(25T~u2l#TvtRBC[{Fs5PDeQ U& PE0.*}dЯl%|C;/4`7;@GJo}~-M<~Tv[o|πB#5jiu; ] 6|Xl5+Ɠ4CDvo=_8T@aCVEmX8F^_j߃jM{@b>%j]Go >KkOjJңxK|D 巃7\[JVoir4h`< NNyBc_]stヾG\Ldýn ص13 M>f\#$i@Ptj@HJ`6DWcwBAU (*3lqFg gR|1>T'X2,`wm{"ץ3,R8ag/R&y"^@Ѱ\)eLT%z]q@"U% `< =2ui"iѪإJXLzPKR5PKs#L styles.xml]6~ٖ@K@r ׂ+ѶY(ym?>%J"%J~mɮ8$3O?QG}{ }7V maIz `bar{;E larwQ CNU/0XΝCj)C`obWiCثvm R!ïMw~rԌa7w(T;$% ?B+qmǵF4 clPzǞzǞw ҍF'{Hy.ښEh r7Q(X%RvGd~{In- 7xU 9LaGSAH%OJ3FV Kg&z"tP?_(j38‚(whU 1CsaC O@ TE+" mA'fgNJ}Lx>DXRXļb |섥+ B[PLΎSlC9¿> #EaqLȾd2kbakFDa$S;^k4I[ DE]V$gI XD(OM*x i+M8g 0x&;e]&4hʂTXaS n7F3XlJr4MB  .RI_ H՞2ep!~H"a QK6%E$W@,!z(18'Vlh_)Wc;0ݐH31 `O*^@(/ a;ɭZ'hCEVlqvNa*lV+sUX@Pt@agEoQ?\dK؅Ĝ'P1cF1iŒIGtޔ%&mC Q{3Na9]`XB _v)5>Qp!X Vܗol וLd:1LpL&鏅DK$涠ɝ]eTo,˨y`ͧ3LT|}Li FJ ;A[7OSaȿ"jȬQWZIE`˶m5R /h{A[kC@c2V'B/dM7B\%4WspX8^.jcb[n +M[T:!E+9dx159RFㄷaN{ڤ@\TڇΤǙQ3U uF3Vz͌)vQp hh\*^ uȱ<4 „5:kDoB/wL@O98Guk{ZJfi` g\qEެak]21w]FΨBw %Juhռjo5,-p~9`vr&wǑU N TP^0b&NKLK~hVt:+M:hyi^/[aNۨX;-ΣOm>X?S R;?[h[]v n.CwudY]9-H*Dg(z.(-gƢ %v %ř<&J9aMsBg}o}`A4\XrY/Q4FuB A}{󖖋yUZ?,@" }ĊX~uZTdϸ"$ȡ';m,]_gepF|R:kb/Xq yJ5r?i@u{_a?- ]i,i)- ŻWN__ag*q#fإ,EuU}SKT>7-x_QE0\Qp\A&0gXC i2y7ECz -nŋZXCgLm^Zy ?`k!=F|/y&:/ap:􌈸S_+==b9BaɦEwT;MU"3.`X#x+R=j{Q̞YH7dceD',Hr+rm~" Qv]M>hMC= ))xMT&pmz0hBL'^-rI9B/0\ WB׏ TuîWPW-pkؔp5]h\\'2G$uHjTP;+rpojڡ:PK=5niz SO>jhvdm852&}t|SNxv+vC,SXrrf_ϿP3cV!" |q;ؖg1Ƹ P{pcA^gʯCPXRy|Ҧ6z@YOly\D|-+zKG=m('#X=eB3 H 6Y+GJSD1fB7Q M澄i26:dyGCFe'*i* w+h>'g!X:6@> +Iy޲fIPxǙ]||1)mBo ;iN;=3gk4Z-n=ģ yT<&uvCC3U+.7T/_7w EX|ח[Xƣl/ ;Wrm`ReB۞#=kG?yKi/evV\]:\0)FY|rT%\JbD ܼJgP42~axbQ ]z#njуAťfUH^s:@7;.؟E9 AEM(J Jr: 7TwT-Wçt)m% @G.)^BUpVtyYQe=]X\Mn’5O/ zaǓmg,xK],B"PK`yMePKs#L manifest.rdf͓n0D|e`9\_X/.%}]'*͡]fh8C;4`kg*|>y&ڸ^jj~ *!eI^eYExE%yL,Ƽ FD>} fy%N:90;:PD LچL(-&)}܂Gm-c1su_5R`""?^v}㧓 Fz{ ?VG5'PK=PKs#LΣeemeta.xml OpenOffice/4.1.4$Win32 OpenOffice.org_project/414m5$Build-9788Gpredict User ManualAlexandru Csete2006-08-06T20:54:052018-01-03T21:29:33.44Alexandru Csete2006-08-11T09:54:43real-time satellite tracking orbit prediction584P6DT17H13M22SMatthew AlbertiPKs#LMETA-INF/manifest.xmlYے6}߯5B s65q6[G`qIj6ɐ^h%t[Gӷ]Tݾn갭a3ҵw|z᭚M=Mwmlp׋Ioŷv9;0G GXǫf3ݗbRLw,n׮;֓zS+CםTKNy'i١UMw7r]v_^ۯmlb4gC9Wq̛ kӖmMyiUVuM5/0)%[zkASNΒpF2>KTPV%Ga 0c#KIR pgFɜD-f0$e`V"[lG,tpp+]zpLCi 862X*QTɔN5%lt@H`a&CT}q8>hkȵ B6a?<6iZQZi((ĎS\r\ #b H# ]5SLj s5SF K|Ǒ LdL.}H$ ZnE9O{69D)2KnN?\,`)x0C&pvl#%#H,saELxv;” 2OxB BiULV eLDŽ0jI RFP4Wv97lB!0bHʵ_hy0hL#>dR%zZKJ kuk/ 9K?% >t_zv?_&iNto?DH H -yPictures/1000000000000147000001571C5330EF.pngPKs#L5ΐ9ii- Pictures/10000000000000DE000000810A8FF50F.pngPKs#Lc vhh-Pictures/10000000000002E20000022C22F060DB.pngPKs#LV-sPictures/100000000000032400000260847934EF.pngPKs#Lx6xx-X^Pictures/10000000000000DD00000078A90171B1.pngPKs#L$AA-qPictures/10000201000002FB0000021357F53A2E.pngPKs#L#pp-;Pictures/100000000000012C0000009DA902706A.pngPKs#L5||-Pictures/100000000000034000000274F3D55160.pngPKs#Lƀ*PP-Pictures/100000000000039500000226367AFB96.pngPKs#LG K -X?Pictures/10000000000000A300000075A00355DB.pngPKs#Lwm-:KPictures/10000000000004FF000003FEB31B22DE.pngPKs#L<#!!-~O Pictures/10000000000000AC0000012030A77589.pngPKs#LN]::-q Pictures/100000000000049000000194B046D2F4.pngPKs#Lz] ] -5!Pictures/10000201000000300000003048AE5B40.pngPKs#L )p p -ݐ!Pictures/10000000000000A100000068EF4A4E38.pngPKs#LS^^-!Pictures/10000000000003450000012A778F9474.pngPKs#Ly))-!Pictures/10000000000000E7000000661F7FC9DE.pngPKs#L)$c$c- "Pictures/10000000000001FB0000016512243A30.pngPKs#LE-bp"Pictures/10000000000000E7000000759FB00EC9.pngPKs#L1l5l5-P"Pictures/10000000000000CE000000DDDA633109.pngPKs#LW-"Pictures/100000000000005800000020CC81DA3A.pngPKs#L!c"vv-ڹ"Pictures/10000000000000E900000083402A2A10.pngPKs#Lf%x-"Pictures/10000000000002E20000022C3F9950D0.pngPKs#L(CLXX-]#Pictures/100000000000013F0000017B7FF83358.pngPKs#LQnoo-#Pictures/100002010000015F0000019732C19732.pngPKs#Ld { { -&$Pictures/1000020100000496000002C8BC6D9AE7.pngPKs#LΜ--Pictures/100000000000032400000260BCCB3618.pngPKs#LzCzC-g.Pictures/10000000000002920000013ED74ED328.pngPKs#LR5 .settings.xmlPKs#L`yMe .styles.xmlPKs#L= ~.manifest.rdfPKs#LΣee.meta.xmlPKs#Lj,C.META-INF/manifest.xmlPKCC2.gpredict/git-version-gen000077500000000000000000000131401427377236300156370ustar00rootroot00000000000000#!/bin/sh # Print a version string. scriptversion=2017-12-12.21 # Copyright (C) 2007-2010 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. # It may be run two ways: # - from a git repository in which the "git describe" command below # produces useful output (thus requiring at least one signed tag) # - from a non-git-repo directory containing a .tarball-version file, which # presumes this script is invoked like "./git-version-gen .tarball-version". # In order to use intra-version strings in your project, you will need two # separate generated version string files: # # .tarball-version - present only in a distribution tarball, and not in # a checked-out repository. Created with contents that were learned at # the last time autoconf was run, and used by git-version-gen. Must not # be present in either $(srcdir) or $(builddir) for git-version-gen to # give accurate answers during normal development with a checked out tree, # but must be present in a tarball when there is no version control system. # Therefore, it cannot be used in any dependencies. GNUmakefile has # hooks to force a reconfigure at distribution time to get the value # correct, without penalizing normal development with extra reconfigures. # # .version - present in a checked-out repository and in a distribution # tarball. Usable in dependencies, particularly for files that don't # want to depend on config.h but do want to track version changes. # Delete this file prior to any autoconf run where you want to rebuild # files to pick up a version string change; and leave it stale to # minimize rebuild time after unrelated changes to configure sources. # # It is probably wise to add these two files to .gitignore, so that you # don't accidentally commit either generated file. # # Use the following line in your configure.ac, so that $(VERSION) will # automatically be up-to-date each time configure is run (and note that # since configure.ac no longer includes a version string, Makefile rules # should not depend on configure.ac for version updates). # # AC_INIT([GNU project], # m4_esyscmd([build-aux/git-version-gen .tarball-version]), # [bug-project@example]) # # Then use the following lines in your Makefile.am, so that .version # will be present for dependencies, and so that .tarball-version will # exist in distribution tarballs. # # BUILT_SOURCES = $(top_srcdir)/.version # $(top_srcdir)/.version: # echo $(VERSION) > $@-t && mv $@-t $@ # dist-hook: # echo $(VERSION) > $(distdir)/.tarball-version case $# in 1) ;; *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;; esac tarball_version_file=$1 nl=' ' # First see if there is a tarball-only version file. # then try "git describe", then default. if test -f $tarball_version_file then v=`cat $tarball_version_file` || exit 1 case $v in *$nl*) v= ;; # reject multi-line output [0-9]*) ;; *) v= ;; esac test -z "$v" \ && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2 fi # Second, see if there is a debian/changelog file. # then use the package version. if test -f debian/changelog then v=`dpkg-parsechangelog -ldebian/changelog | sed -rne 's,^Version: (.*),\1,p'` || exit 1 test -z "$v" \ && echo "$0: WARNING: Cannot parse Debian version" 1>&2 fi if test -n "$v" then : # use $v elif v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \ || git describe --abbrev=4 HEAD 2>/dev/null` \ && case $v in [0-9]*) ;; v[0-9]*) ;; *) (exit 1) ;; esac then # Is this a new git that lists number of commits since the last # tag or the previous older version that did not? # Newer: v6.10-77-g0f8faeb # Older: v6.10-g0f8faeb case $v in *-*-*) : git describe is okay three part flavor ;; *-*) : git describe is older two part flavor # Recreate the number of commits and rewrite such that the # result is the same as if we were using the newer version # of git describe. vtag=`echo "$v" | sed 's/-.*//'` numcommits=`git rev-list "$vtag"..HEAD | wc -l` v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; ;; esac # Change the first '-' to a '.', so version-comparing tools work properly. # Remove the "g" in git describe's output string, to save a byte. v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; else v=UNKNOWN fi v=`echo "$v" |sed 's/^v//'` # Don't declare a version "dirty" merely because a time stamp has changed. git status > /dev/null 2>&1 dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty= case "$dirty" in '') ;; *) # Append the suffix only if there isn't one already. case $v in *-dirty) ;; *) v="$v-dirty" ;; esac ;; esac # Omit the trailing newline, so that m4_esyscmd can use the result directly. echo "$v" | tr -d '\012' # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: gpredict/pixmaps/000077500000000000000000000000001427377236300143565ustar00rootroot00000000000000gpredict/pixmaps/.gitignore000066400000000000000000000000251427377236300163430ustar00rootroot00000000000000Makefile Makefile.in gpredict/pixmaps/Makefile.am000066400000000000000000000000331427377236300164060ustar00rootroot00000000000000SUBDIRS = icons logos maps gpredict/pixmaps/icons/000077500000000000000000000000001427377236300154715ustar00rootroot00000000000000gpredict/pixmaps/icons/.gitignore000066400000000000000000000000251427377236300174560ustar00rootroot00000000000000Makefile Makefile.in gpredict/pixmaps/icons/Makefile.am000066400000000000000000000022341427377236300175260ustar00rootroot00000000000000gpredict_iconsdir = $(datadir)/pixmaps/gpredict/icons gpredict_icons2dir = $(datadir)/pixmaps/ gpredict_icons2_DATA = gpredict-icon.png gpredict_icons_DATA = \ gpredict-antenna.png \ gpredict-antenna-small.png \ gpredict-azel-small.png \ gpredict-calendar.png \ gpredict-clock.png \ gpredict-clock-small.png \ gpredict-crash.png \ gpredict-icon.png \ gpredict-layout-00.png \ gpredict-layout-01.png \ gpredict-layout-02.png \ gpredict-layout-03.png \ gpredict-layout-04.png \ gpredict-layout-05.png \ gpredict-layout-06.png \ gpredict-layout-07.png \ gpredict-layout-08.png \ gpredict-layout-99.png \ gpredict-leds.png \ gpredict-mod-attach.png \ gpredict-mod-close.png \ gpredict-mod-config.png \ gpredict-mod-detach.png \ gpredict-mod-popup.png \ gpredict-notebook.png \ gpredict-oscilloscope.png \ gpredict-oscilloscope-small.png \ gpredict-planner.png \ gpredict-planner-small.png \ gpredict-polar-small.png \ gpredict-sat-list.png \ gpredict-sat-pref.png \ gpredict-shuttle.png \ gpredict-shuttle-small.png EXTRA_DIST = $(gpredict_icons_DATA) $(gpredict_icons2_DATA) gpredict/pixmaps/icons/gpredict-antenna-small.png000066400000000000000000000014641427377236300225350ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  ~tIME 1IDAT8ˍoWwfgNfARBywV؀ZݖM/@"ˮtUPB@$! ('&?b3sٌ#SUj?.>鞣{=GoOeh2kZv*޿Lg>)_ vzZ"HsӅ/2'''m矬^ 7;fֶ$ţ F #? LCW[OknGm|ޑs_Vƕ5G4$ emGdu/ ?K˕37ׁcH&s rA,&%j}]X LJc1=^~M1y(ɩwKK`)2Vge7_Nٟ+Ֆ'"Ѩ9-)eGK&U΁|a>ql>峍]><0R"z0V^M)uQ9r=0FY|Apl;5O 'Y[ BII<_|VZ7lt+jo`@֑+"74.k!2 ]p%mWۋ(ɟh_SCavy HfHQk%V.!lKEXY֖WO}+tE\OEP4   d&IK.sk!gCVupƑiOKoykct;,67:YjR"j!X J[5TR]޿v:Y<@s8XjdYHpm,z"p'gBJxU{Z)bGͨtŠss -4ᄈz|ù#kШ|x7ۼ0jp~G& r(Gl9On@kusa=h _ڒ)3D}ʊSHlı mH-#hF#C^\cgNB݃(P@+˗YV\ĥ~eN- ~~@'1dd{< ήyu eQ_ 4+S@)#IyUKWo>ϞYmGww{k}h𗽸& LpD&K^LsS~ ˾'{y!h|0gR[j;~ BA:SZ<) ,4\lYO\OLxhf=$s>#%5]-Ņb[3|Nnu޿9|uۿ{ŵoF^PI9K<#%"ίxDd k00*ϡud,>p E7dp`{(q?d\'gV|v-[qwzts5s.͚C Id] }^A H 8,Zhax{| 6BW+rqAe$*JEx;`DsQJYr9/JB)xbS|x/nٲ& \ƾ:;tĢUw|WUJ8$R7I't)E% ĐF(Xj)Ղas@X-|^8ql@9RmuR>w0vޘq%ZIƑ ;8)Ѭh;( KYofGZ5Wۮp2p|ᠤ;(yVO4x\|[!E[CҬ+MČJCft4cXިy&T-VqhFc qY?ܸ?TϬՂ9]lxB[ȏ>NJr|K>Aj6 &rS3?1 5 %I`4JayΏFI>6~I<0nHxRW/I$5i:4"͎`z6A`%PXSԄ0G&qR駙 a>zä}'g7j;EJڭQ'NpF T |c5UU+8Ay@n+G`2pO=D2FY45{Fil`e7/9;O~=DF *8*gjmP EU`3ε(*DԂVmέ6w;GqRl<)bA-4 Wpi`ma,1ҲWYzlE I% UdP[ZBeBXW m +õnw20w9fAZGM_/|ܱKQb*8h)0X1aGXP \rA)Z ]z/iɸtqGp$4Qڤ<+ iEVXʒ䕡[lƺdIآʪ<+FFW :@*P@)1l26w\06>prm?0LvqOBڥv_lҍSI*8J$Ƒh+Yz=tDzMq0&i{Xp`:#>fLat*t43N?N5)S izF364]S_E= 3_䋦`f\1)k :5gUqĴ<zw;Χ5ɴ> Sf&9\ YYL _gO;= O8|Vg}S D{sGIENDB`gpredict/pixmaps/icons/gpredict-azel-small.png000066400000000000000000000011261427377236300220370ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME6/r^IDAT8˝?kSQ=7XEd(YEI;TIkMhB4 h\&68$|<dn'G^<@A^"w}nQ!$"s(H& ZZ1(0|xp:@J\,Z#DJB>ݿ|RY 5qO!' !ByC+;Lz'RH)J0)+4MenxIHI\/YQ_83}诟U14= * g<^ZZNҘ0D3݃kOƝܬx[XŤ\*F=xIjr8r0am_>f2nZNsn>sng!ZK_@W>pX!mqiz88 &jIENDB`gpredict/pixmaps/icons/gpredict-calendar.png000066400000000000000000000013341427377236300215500ustar00rootroot00000000000000PNG  IHDR00WgAMA abKGD oFFsl. pHYs  ~tIME  3cDIDATxAn@q `Uip H\)7ȒoȲYXl*:%YL2qԱ$k&c==qAZtRd8ry&uX:cHjwm7^s1'R0E\6ֲ3Nm p7I`Nw/mgh=1ِ6fYs)D';e4oO[y<6[ ht,kWcF)Md2a8\O0/ooӓ;ڕRlIB>B ^[RTj:ln<ۍGx^K@u}5įm9Pe F9ն Ӷ Px{L#yXE6T; d-:4SXgkӾ@ŎI_љq́7c<,_ks7`61:JLegFʌ-pƖ%#tkZ&'v#N"_E>ȖY ˮS/`K&Y*_IENDB`gpredict/pixmaps/icons/gpredict-clock-small.png000066400000000000000000000015701427377236300222020ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME vƧtEXtCommentDesktop-sized icon ============ (c) 2004 Jakub 'jimmac' Steiner, http://jimmac.musichall.cz created with the GIMP, http://www.gimp.orgkV[IDAT8˥OKAB $MEo= HO^ފg=xԛŃMZ!$hXɟMK<ͼ/s)` DƦ#P(P*Wkڧ;4 cqvvۓvK^^^J"/.~ȝdŻ۩lZ4MY*d>\NV*}tI@~1(4'n?]YcwB KZUU\m,d;h4AMV4tMQqUӰ-mGEE+\f*=ŃT QB\.G__]BmAQUg|:nY6EDQa>3zSwmہ&6 āaw` 꺷wtQ(D@)@@MznW255u%[Þݻw657#$S)ffffyTWWS[[KCCJ)bCCCC?mmmSOw]immr%BVr LF&&&9rDR"ރ, 49ӽq&>3fgg9}?ϲ@Zш8s!6S\pCޝyŋ~0\X A5M$ض{ǫʎ;Ο??ZJOOb۶m[%YZZŜr9~,,deddDI:sΝdz={V}d߿_keU=z;O?W^eGgg¢ݡգ(Xh$jҹ|y8Y/kWZcb-5ՕѻljD"14.ɱX۷om8&H.f>c\B]]-?1nͷzzz9rO E jnvfcǎݍRj|EeUx9jkٴ?o166~_?{555 |-LR*&''=G}梨b>}9CWW> ܸqj~zׯs)<"`_Qл{ſknr12-6R;Q_[E`ttR/O@@kAv y3i~|[*>k =SVY&DGGdG,(cz-YϳcNeaYk}Bn@>BclqE~Bw|~fffزe.;-ȯNΝ;޽%nS#jmd0]7*DA6bؘD5rqvvu @&"B]mzl-jĊh(Zh$R Xy  u_8h4 wmn[^Ë́UhX*t^~'[Y!c^fX,A4!/g-hC> 0>>+ ssslm/ǎrӳ38),IM ."TTl 7`!H 9+H~] O>$-,6"B2DO&&I,`b^mWs-o^ -LLLuVZ[[qn"Nsü<35 ey]vP(Bn1`gfTS[Ù3gp'bYn筢.%NxAa8(_~%7oɓ:t`0XL,d'|B8&NcdZ[[{̙3RdDH#hEl.z)oqv| }>4xrzDq:::xG"˵3jIR&ػw UurVA6(P$ƱmZB)U l޼|\.wnoHkwvv7?gxx0im(Hdz-ZJSdZBoF;{&TǞvZֺQf\޶L&C(;;=x@@Isi9ҙ9*++XrcpprFGG?~֒F }Fb?fk{;BEbOėP߀ݽnesnZo-xx}nddcǎeFF~fpXkʳeįS):;;yuscc聕1AQ^8 H$xybd2_3FSȔJrŋE4]]]<\|^o-nP@"4Y!&v v4D?7w XU."AR,Ҽ19555_Pk*RZFD*`'zeR)ffgd2r9lۭ~`pM71??mRI?L_LӦ],JX F)QDJ`]P(D (+/Dz|(~,-,Τ"ŁO!L md3QC@qW'+"RRJ A(72z`ԙ i4ǎy3&x $f !! fCLug8e;>Ѝ=w֫jZ"= 7CP*򲽺Z `sZ*eY$I^٬7m?B<칮c ڵkXRHH)؈$BRAPU~^Z @,`vv޿gffjrr:cV&"$IZ'Qu][5y?U*@YA5;;^0r-b1Zk%v<5|o|,w5N]c|o߾}wjj[0t'{d3Y&cڙIat*\.7jF(|sm5PZך_;mkfRE>cS*YRJu+OܡD֜hnp lu|aeK{$$@)ܴN.-^0F@sc | I  ]'!i c:CD2j& ڶ<8X&35WNNJɐٱnϜJ(89rxHW{lB#v|LOtm-# v1cU}ja4 EC?[j6RіUb( 0 dJ;KVb߲4rHKW4 ÿahTOP׷U$ǎCU˻=qF,b84öA3Lg;"RO=6 8`\4 L6P8c[}Zսvgo =Qc3 1~9&^F!Xkԫ-84z5B`m)*iEČ)iqP ==UպSme B°Bt:pJ8_>MJnQI K@p[ $!Puœ WhSa>x0Rj @r9@Ӊxn}"I;-n[43B9t~#hOO|!81H)tzƘu> X$#^4rZY[O>JqJ)߯լ|hy ~)̙;2&yv ` V&K!u:?\\~Mőd2$l M_;KJn^v(eF*Vo?Z @@#N#^ @/؈ 2ƹE(ƶ6ğHg!uSJ !$90k4E_ULx*%U3pֱ S.&7cct]Tпw lE:PJ|X !0jl9Zjm!ֆ<_3C3υ1:Z'kBr"kW[4FbC =NJ "6B)zƗB<>f0o2J)~-LrR5ŭ":K!3%m$m$cD t{+G*u'[փJlׇMSwJqq?Y/kerT.̋`b,rY!dzӲv.P7ݵNA$SDZ5ysNI3m_q;SmYms(Z#% Q,N8 RJ}S4udȦ3Q<|s>E)B#i;R)Su-t?*7z&//:}:T%:ͥujx U]q8uCo=4yf :e/8~;2rV<=#-ph2~rw{t >6D!zu7v>zv$IENDB`gpredict/pixmaps/icons/gpredict-icon.png000066400000000000000000000712001427377236300207260ustar00rootroot00000000000000PNG  IHDR+-sBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxy|w:'+djN[jmRbz߷3so=[6$$ձvjvf\–R$s}?(-P$g^9?BI6͇CQX_,bS,HyʑeLTI&ORdFH6Ws+{tf%8C/٣z%{\1| ȳGduPy: ?PCC_>F%m%s'ɋMT*cďvJ%S")mؔ9.ٽ-cvI#]v=]fljF(zl˘rY;E4YMNLb$UViJ&i|o͟D2@XXJTHg*d7~>]6`V/i6I$nG-Xpu8H 5i_].cgE)^RqahJSdNƬU_;lw B K$IhHLIE!h(26P2Y{T%z(|I;e+]+߬K:7*x$E"I2Y^]"iX}ZD\](R1G#%sKetYc!d+R%|@r5H+%{~.I9c! H^O}Iw'סd 5Ĵ5Jd~Y͖t8I&iH@X3?W.:PJY8H&_/$mYn_u A2] <&?@OF:tuHmUM&J&Y󬌞܅/:P}tOh8We ݹh0G¬Lu 1t粝afMʚ%{qDR԰@B j';;x юY=hsjh(@.ϓe:tɘ'dMugGf͚|?*cJ: UoSýG\QAt4uuH#pp빇coLg tޘZ~\ }يB dcldJ:; c:7TF (@Xᩪy${8@6nV]H#5;O,>=jRQ pdj U[Keg$u@:$k.g]0@&Ptdh8_<'<>: I(@2XfʍJyY{P9Zy#8 5\ #cRLq`zd7#5HFEq Ae#~PCѱzd=]$/25o^aPX"'c>+uHE9ߩa.aPӱzRdڏ}Qw.: Tjl:VW|}FFSViE;\B T2%٥)pŪWR__w 5 <^X 9*X䋜 P::r5pS2Hv82d)zH }Ps4[ %ɮ@dTj}`Eu (.|RFVU@܅O: .jd՗Id~Q Y+y5w]GҁB8UsǘgebhβQT\ s~m/Iy@1kdcǙ#SQy::r?t$IGlـ0@2QYښC]GU<, @Ph"ct0<~_u Qj[GG~A|AR8}2! ?: 0\jW[GefHvYu\Bi]S-_)zQd~ /v/!l(|NF+zdc5t]BphosYYҢKFwk\.B`k)oO:  (dRxQN퓵ydu8ͷ)(Թ^ښpك 5Rq"_ѝSjXud6 5RɖoH*sh.~ud. 5R'+1Ș)VnYYjhwBk_3]6& Q8ů\ݹud&HdeYGGe)QՊC`:[u4ULOKu2KR[u:=\T: è[6Q[u;٦EKQH.*)ZtE&MʚI: jdW{']APEkr|Qpy]m-uGuFu_bgt1׭7^|Ѻԡ`e\]s]G {ow,8: RB֬)V^_$s(@?Q4~tGDmMwGA]u$:Ӵ6Oя$Uf_hβA%c[D'J2]:ގBDm- mqF\Ҽ%OQ]<]\wjޒvA u5,)Q H- 8B-Iw1a] P+{A(Q@h1i_(ԮJ: uud3 K/h( k2+5wd+8v屇'?LĘRGX3ulEva͚bEs~$u?'(r%Qӭ#Wy$]: (;=P نBNHf( #]_׊t4TSO2Z:hi\Q~yA|K[$%1@z@/~ul@Nɶ>d4oӮd: u6_%Jn$s-zuLFN:)oƸ֟sq Th+Ee5N=֯IRB 9雒]GAxu @fut(ԩP_~z h4@R\ء]DdkkKYu ׄpu1$Xx(_$7%&S{-/*s׏O铲I1>*]MA‚B=XOJR(tO)$8,Lmp$ X!("`u軍z0ǿ&u bK$μCUSBښ|1.A(A;sZ[NtPϓ-7 AЊ,;>Ikޒ߻NTLFDLKS vύB}.'k]@x9 fpˮC+g oKae;O󖴻N43=X)?qD),e$J5 hͮ +jl̑ie2-33 0F+jTcc AB>ըIu Ci3o!ZW}P`2&_~:HP%i͚b/u_(a.n'뿁!IGD dZ2 -HLۛɪu _O&1ԼES݅Ɋ ^XQl^OTa|{XuWwZ@(Ӹl)Rv$"kvPq)K3c ز`cRn}뻿vŅ-L(l,ӧb0DG׻tnA-V>V͔iOi`F(bՊY/j,t.[XƾOSq"ݲk㱦K: yv਼;5gY =+>vAAs\H^hY/ X(`vd7̞P?Rq&t B]H̝P72#LUcˮBfN;:re#Lc OQcc :v/%rAK=> Hϻ 7m]S-|Q bpnOL{,yMM|(xe:ȏ<:EeVnk8soعp7C$S|tt(vh鮣= ]08M:ׂ\I̙Pqp2^ΡByA13&S5Y/BQ.TDgiW]'ITfL㑇(ӠL73R\HOۚ]ǀ[p`R x|Ps˅{Bё+(m|OɊwWRp>P]|~mLnq Y8^EUjXvu/Qe:=D_1\PIsG,Lo9z\pN=e:+Q37ʏ u[}Ya̎P2j$+_;:PkBmLgt (|Fu!)#Ϻhe}|s^?~uS~f ؘ:YULg'? ujz}`EuGQte:Pjk|!+5k4u jn5EGWu DŽ:7\AI|.@63;GB8Z&Ic]GAQp6L k핟_;8:B(Y2ssVcq!P?Es%rEa`0tDJͿuA%h_2(,>W +T4COp'k&*$Q:$ j:G:X FpYg}Zv0'mMf ]GAjP L Uԛ{\9S@'Q3edRoBX"E6K: T`R Y㈢^EЦPDHi [5F*/wLP3Xj G [u56gE8i kFzqL[ZFnT: T@ۧij R&(2 W7Vy\8)ӁM\GArPhL mWR cB}NQ3eA"d)8g ;rk4H8ˀPLf%hR ˶ Lea0d{\]̈́cHKHEI5dk龰 u,(ӡDFs2EwqjkdMu02!P|DRmگP8PJE|!C@s2/WL՞l1h d#nTPUds.b|:İQPP?Pn4>mİQ(&b{U;E7<Kߴ@mLe8? Z%_xK. ] ENǟ )c?K*mMKwiFEtm 連Lǟ!I͉P?EwJkaX( 1P9hQRyOe:(gBX7"iX R @wǚfH檔^B:6OKR[#fxs ځ~ŋׯu ( JRe O>R $R n+ue45eTT@MW䔭!P܌&j 1j8u7YSNI)y}Lqn~x͇q]GBs zuLԢEҩP?!t(1äʨP6%gRhM"(@b(PVR_xq"m"Im@bXIv-ٝM:+tF`R $I5NTܖMʇM(nPP `LWxs"Jk"XH\պsqw: IDAT^.L!0TaR L%{=2H "k+O~ꤽR $R PUzjx^ FC ]X[ZQ $V~ d$&@bT@D$C@beؘ$hj 1jHscB=U^I ? p|-;BFi j 1L F{p9BATT@_H`0E6TT@ }t:BY*{Qd/J5J[QEcHZ=\5w^lBG QPob~0buA G U< s^?NTTǥcKWkMswWqxױѰ:Џ;q\>I#sAT$#/?Q|;tq~W]_\(48qC=>o+EF0ä:yG|^y귕#=Q:i2J :߯f\GBiB~,7 1=L߽zmm¬567onOsB7h:.\ϱ o~{Vl#] \5Z^#wS @@\/C3:87v98ЯG7wRұ%ZZY;gT N}R @e{}s&Թe e)srR +jUF=[8E)S@mWR:Xt"yyH`ahښ2J5p~woѪ z~G B-ӽ3U?׫V%^)+5C|{`X("ԳQ+;ic㄂t2--M?>ҽAx8auP|;k&*9@@ةF6zyn=عV޶E1K͙V558i;77i b5ƃPcW90@"T#[Г[zP:!-VWT봨V#8*eNF蕒57Wkn" jdjԑؐ̕r=O7Mu=,ZSeUJzvIdT#ĭvlӃk®UQgiJaҞ)0yp;cq4caXK_ZG\ KǖhymLPoCKz6z8-XpBo8 u\-Y4cR0ze^=ԹV[6qZ hJ[=SMmKOگ PMԽQ 1tSoG68N |0ot[:()'D@S ՏwCkk[p&hAE>]5SGtM߹]~c*?KEF@1Kث]Ƶ|8q-՝3U6+ֻ 8tp$|o42dj+jUF=[ql#ϋcSzusr􈾷c%~.\ƿ_"(H~\lߪU=FQZZYE5*w炾ֵ^q7=ez j˓H1J5RaG_z6je:9~uP8y:Z>]<ǵfS\ ㍓0Ap"=`Z}{,gG\}rZkbq뛺?s@ ى䜏N=:\BI5ң:i̢b}N*j5":Xk܌\wgg/3C=ҽA-=:p'r=O7Mu=uO{}{\X~{8aEĭvlӃk®{=H 5F)#\I\Gdּ||BmtIRiFƙvӣku'4.[3B9:NR=~LOm:`{~5e|AFFEo\-4s`izQqBfh-ҪZs'jU1g.4Bͺ2 :{t>MԽQ 'ώ^^S'O͚gVzI=/PU(ՙ˷V?޽Suճm&A_պj:NڭfDvn|BmK. (ՙ@{KLұ%ZZY;gT qljÇ0x,gom%R9ѸQ1^ٷWz6]] {wl@zܳQ_\Ǐ 'o2\ZY[˧+b~'^~1Et8@`PJza٠ooۢONYT:N`=ܵuadޑuSb} CCzrK\uOWU=CpO_ߥs.99kG~W]k[RJ[#ܳQGc1qB!tӔiZZY\ /յ.<P>lߢU=<Ǘ ڤB͟QgiJqBeg_= ?`IjX7>jLSoױ>=K+i[QqB񥺿^7Os'@x^ ,1d9Jujo\-(54*'GsUYzGqBmҳu awNOo/Ɵ%J:9jVvF!5Z +jVcr\Oo{U >βyI:|H-6{w'6e>[{(:NV8߯W]I㕒OO/ԞJw L(q?go՗7տrdTjqeqa:}}s \':9 1,=痭^5lW;ic㄂g-u|" Jz{2o*O7%V eK>y᪞ ֶW{0F*@mf~s6::LctBm0H\ -=zs<:Nh{8-ӫ4"zCn+NH:_)dZ^7g#;yi4-e[{\No-uX!y zlߢU=ƤB͟QkrA88ݯ~:+Z4R }ҩX4Qa zg_ܭvޣƕKuMn)Ѡ:ǵfS2㇧J(ZTp WXJ+εj߲I:N(iL,]4z8'l\UQ{gjjHq]\GsM $KKfS^-Gzұ%ZZY3=~L[7 l2,}{gܥx<%4gk/һƌsIܳQs N8Q5jo©y@TzfV?#V+k5./u$oVlt@xsDX=^1@ %/֪ jǒ.syIZZY[˧+iF;۷?:l85,wbBOb: p''o2\ճA{ctN>UQkU1r8H] b$INPdƖMƵZ@߻njӲ:1J!{)B مJoItoP:9H>L:͞X:j: +:B љ[gŔm NwWiB~8p7c]< 5ҁ~}hAEZ_c}#ƕKuMn)\ǁcoI7 2 ?m0*'GsU35t1 @͈aB jFk-Sqn8K?u ʘS'juMXơ8]\G|&4@=35p8}-cjB=aYұ%ZZY3hޠw@v+$6p4K~$3ڋ1Czuٮ7?#bGը"-Zs!W)aoX@xIZZY[˧+bYQy䎉*+otN>UQ51r8kK{v'DMqTxB:y3T^!J:+72|i\MSiiefO,s@xu xgbY OYAV:27uh,:U񥺿^OSpRJz2fh('GsU35thn@zhkxpS4u V[4ZTŠ渎,sp6QHP8]PVku2JG;ogLAT+IN*/Ч*uOLM-: IZz-߫Q[Hp-לq܏kͦ.1 U)?Q\;Ɱg->1|DeT:UZRUy絲QY[(Èt1tS)oI1ܬW1sH\5Zk5c(q!yhZ-JPұ%ZZY;fT0uǏ[79͐X<4+Ju@ry}lT-e itZfs=OMOǃx9QI)$PKtOLwHo{68ɩhpuݏGp. 5bW/5|9ݱMvޚY jaj drr4gZc\Rbeۣ.3N)2¢h5qHÇN3|(!Ui`uMXUd][crig5J5FePA31@wUTY*/:64ʚ5Ip:V>@tlk xdn?1t [)p.?Q\;ⱮNZ7bOTxO\UZRUy|.>tTjg-5qTn2Ntrdb!zq 5ŹkFHGt}Wfz<3RlfcQYq-3{jVlT;~A$OUT'j [xTF11LE)S^_:x1뫩{ OJʽ j +N|HPYAV:ڶE:骺:q 5#麉eZZY[ʧ)j8;]^Kuؒ&&B GQNL5T?z8@h;x@?} C=*o(@|CQWT봨V#d$+ke^B~n-קT/:dctCYu8Hj4ò:y}`0xQI}SA41@wUTY*/:qlg׏OK+kr-J5zO<D-z͙Z Tr{TSiJL25}Q" #5L׽CuxzMpޚ܌x>j 7*^BGiQET&gezןYT'LrrmJ5aS[4ѵ^7N'4{DϾijf9O2Y87WwͨiY [wwFUήVQW2ץcKVwΨVA$c8~\7u:p׌j8pF%ñy8y^D2Ukx7l~YVUgT!gm'@2Ef^+J&w2]4z gsT1 CSq|GO?GZսAv j'םff)Q P  軯mw8Qb(͞8YKt2εN_^8B\4Å~qpĦ#{Vuog.3N'ivd]9TܴزieUu?R Dyslo^ٷW۫_{D"zR.tɘq gz1g<-uvT!@TX$z~=k;i|^)٥e) N36uJ f*J5q{ *? )p=Ǐ驭L}'87qB u67[ܛχR Ad㍓p1z)WM\/ zή1>J5TQoQGGbz]glD4+J&% H9rH5~SG\ZXQB*Zw{~[s|iQ_&L2}\#\Go~Gg/k7Ua$,C2QG WyLX9bda7ӣfX\Q1eZb%Wk_1j EN=:j}k۫N3]]56(ՀSLvsh.|1=Ҟ裸|}ǣ_?qf:"Uή_S3PPG|sML{ǣ_7Lcs'DY_M=f7RsR `NP&@8u=ǣRy᾽mu̾|(@S u!/4[{|7ǣ#\ߌҬ?zR р!吝Ge\@kؿ)6bHuv@kp! IDAT4oZcʁ;yGIo'm]wqYly8YŹ<CծuN|}|¤H'V&C0Q<qx`@v;Ͱ@Rl;S&f+'}޾="%_ܾK]?bT:~QTgPn;ۛXǣ 5L7kJXc׿i48J5֞eB-Q c}ܿ)*Y];qI:{,J5lY ɰ# `|<;nj}s uFs}T̢b}iTImBmd=*@fY]^2l?#8l=g_sd(@P-%s$6pB]9TKSUVaHŬah^aEus[Iҝ@9JyM3 ȂsءN\? /NN:Y_=,E[u|"TJ}xߍRC}}zb}뷯~k'f,[tlA9l[Oa.Եm2SYG{MY4WO;K' b!(!mT]ݎ}?JŰvN}о:F,=~whMO J5pPK@?۾i.u1Lnݝcǝh!I(@?Cj' 5{zz|Wjj`?]BjlzuXyÓ31[?(>܁j۫7n]la٣uDT(e01a$yOsGYT[{wGg>vTڦ?No@41G]0S.6]jL3`7J5w} Ly>Dޫ7:Fڢg&2bPX)^Ly}> 6XLj<8b.qiRDrwP3 JS cթYicTiRٌ|mQ@0GK;H?Lg6[T#AN-3۷i1"g8Gvi RDpZo2!IzHqma:?_/#׏:t}dR8h7>xB 8:'ؾNПsidRˡPC &޸NvfGӢ6=o|B$v#RˡPWjSow q璅 9ig&@>(Ո'Cl\-$(N܎^^4Cs54CFM;C|H Qu[lzdsj8Ka9tZ.o6P{hQ^nAF+ԁo ĞNKl}'Q癭hTĞ擳Rsoq{6_] -pdQO^t3+N>4Rw u3%fOmXkdZ5+M3\?|9g@FѤSYI֋ {ERG_!rguX*S.Vw`a2}Qf#~((j/ԕ=p|^4e3 f@PQ`Ϩ7/eCJ1 >p /֮];M3\?QjPN7B9}3-65&7/4]=4RHӗXU"Il@GӢ6=g|BO֍1 nJQy_:tyP H.J52+]zkλ*yPKy¦)fs϶o30iGI>QzBݵ[P@O<͋LuQ܉'f$J5VOEN_*鍼!^Vm괎Q;wuM30zRΙfT^5ly|HrY=&w5/RoxY~HP/ L8uOhL3?kti?jǫ"hɿPW׮NxjZy{x \ˈ1J5*+$ u6yܼtKN8I< @(Py@!gyiIƘdR .`a u%lD@"||ޝƻ#> @6(ՉA el`zBFzz4or #SEp?ZRT'UF X?r`Go~:Ff,@9ߜTJk>Ju ws uUݻlitRoWzNri $頻`r+H~nahCQcn!VB7[\ ^ܪ^\\0h]|IBTǞ+,lj\&,3@ 12]O_Hs1r ¢T{.&,¿ Vr ͋x_qg4[(Jul|D^j2O:E54P E)eJ( 7魭M3L=t}(ՑS=?/ƃS+˻Gl(7 YCœO3:œV夎b<8zgP-]]6h#Wf~*sTGTug䴢h i,]@Re={5Ju8PM݋z| s^^P"OoWN{i>0Pu:a 5Ju̔sE+ȇ$W6KRP5Ȟߴt7xXJve 0cFqT Q#"PYb.PBZٮt^j&7EoJuy5qu1(n$x9@5m Ǣ6-0>͐*z-~>IE_껚waUuن nzUX: M=eE9{z_/W64@u]-I}EisFkpYi L;؞ ثPKR,nP{=ײ4+lsj<f._}IF\P#WjqB]ٸZNyxzC 4uiݦT#(5ZޮPKRZ?1]rNVvwOnX%;DFTQcSq/K {-hPgOuJ52y2m$|:١'7ֲ (Ո tLRG_Jz:d% .BFQ¿u B휗c@V{^g:Y+y(+tm-B-I;ZmU]yiKwwj e:VV5YR{'~{͋ 0T#,(1#]zk(GXl<۲ 3ϯmޤ7n.@pTe:v(=huSǏ)c@6zz R'twz_jXLV׌'Ft(Ygi,1 S\𲨽M먢TP(ӱ1|Y%I:dwm۴3oYw5/}!AF(ӱסT(w0Ꚇ91K g[6d}z` J5rEN;T9![%In2+j{oOD٢L'v!%܅zLFdS,͈T#Sa(qxT28h9!2B]Yܭ1` ~d :( ?[cd*:Z'<,c4:-_L'{EU~n"*y%n^on=Җw۶DBNt"y\^ $kxM[ߴCL!((JuQkMulEPKR#)o}H}zz4w24D/tbu러C"z| ߚ u͛9y5Y ^}N\=: 2@T YGw%9:o{oe;AELKq(Ԓ͒vZ:(Ӑ.}:F!ģPWOX#~`n|2x*W[(xjIJ&1Aezr3e:ixZ(.y}: \(A9}SW[N˭c…?lQTSuB^:"`?TۡLv:FůPW׮X( {-~ZFMһ1C.4>̿OSCf7+_ya(O USubo٬1NuPqk\%"M1D.<4Q=QL.c&g^¡L_^7:F1wz_M 3L ~/[(xPU^Q/)3䇝QqI!J!ucnQqPݬq kcB2F>${3PqP^Ϩr[G)dPKs^FIQN(8vU'$LKI*Ҟk?Z(8$nQejB-IKLu @QDSՄ!J-y[zy?JP1I+yZ6XD2 8-U5.a!9|{y3tu@4$42Hji5Hb IܩL#U^V2-%PKRu=$TSSeF]%Qϱ$j42 U7A7IZd=Q(Քid}maE>w*%uYGDOK5eY%N(aE>w%hMa,ՔidzL|:FQRS?]rc)L2LUM}!ŽB޶0j4rʏ[Q@DmmҪ: ,K5e9hO]tf(ԙzR97^/5RMF[ u6~)[DW)K5eqQQBVGI/YDW)J5e9Zk:D84wډ{SҩQ5| =uѱik*R GD ;ԹihU: 7ةL#G]JPsIDATCUur: Y)șwשMQEGMlI?Bj4ruZ2 uF1іOL#wI#uB?7ζl_TL#+Eil$ء.J%uXGD[6;Քia(ӅA.wrQіIL#iIc5= qA._I;TL#/K5YLjfaδܵ1ѷL5eyqu1t7w2x=kGPG) A'V/hZ?Wmmu8PGLI:: HVOh| qG1}~.( |L.. uCNU8=PZiըU qG.GLo1B]*5Stu ^1K{y3fI: )'u`ڑnSQ@gUqT-eء$}: 7>ABmeTNhU iuikyʴv͙5J.iҗqu$P3>/tuەJ}VU~k$w%EI;(rJt8PâUA^( zJ}E /Zn07qy_%: _YPfl|(rꆇ(aTXGHkPغ%_/J5I%]A? u4̒w_$<^ jGu31wjNCb7Zy $j~lc:*kL5que::팚93=/CQ UϴQhj/: (:g١PG-: [ZhhPGټi_wsE z}6:rCyӿ(( K^T澪_YGA(q0g%raQ@$wj^PW%kw 8y`ƹJtupP K0(q3+{JҹQb9UOXc qSٸZ}Hz: 7OSBGۤK$=iHzFϩqu:*'uh+ ($_ҸqIPPǝNsW}: pQP<ꤘ3NOTnH5n (> u̙e͕Q-]rRMcQPꤙ=SJ@Mr*UOx: JBDsf-<.|(H|5:JS>htubiue:(IUWC#~YM@MӎU[f64g7#IeQf(m%=$((D@NDƾQδ@-WP5= fUu覆O%dpϫphoK^@-Pyi B4hIq(2/n׎_2/L0̛qWQ(vMPMO :(ޜgHa9u m_SU2 F>ԓDnz@G/L#P#?sf.I7~uD=#J4: IZ5߷NhcW.d^i;(y3ZOtu]7!  5 oW6GQ߰:⅑^ejX{鞋`q침Ӕi;(93.r:: Vnx:jغ?"H{>NFCҙ;+"8(Xks{:BҚ;DMtu@_i['ArPacΌr~Qq;?v9 Y(԰* IXGD^NUˬ (԰ r]Ek[o (yΔO#Q[: @F̙59MW]j1+P#|fO;U)7UQ򘜻<6jWJKҩQ6ʻ[4~ @)US$n(9/T (3v s](J: $KrתU @ءF4mxK#~R^7K갎()￧.L#*ءF̙y\pxiŹǥԍ]i5gerɟgJq䂑D M{@vXdk>BFCx)9sqn:DP</}F^K#Qq7UUuP@T7<>.%Xyݬk>BFܰC?yz}["iuHy7E}Kۭ@F͛yI׋@x9=^71JP%Q ^WӸ@Fx4oՒʹRuݣARHj~%k.W֑ FXQ4j$Իr{NY^?TOOT[eB$PY rq :4Yqڭ(XU% !Cҝ*UY: j?s'A,iu0!f.CUyύk E2@2bM1c vHvP٘? Y=wh۬QArTzIߒq OJwZB c -/8ɻo{QE {y3$[)8pHN/6U=.u (@͙v)*Iq`@=?Wu N(@<0uRF^``lO}?Rej0@Qb5kY() t'/GJ{f^QN))e @ O2 0S N'Xy-rWA: 4je9?QrN[U {@a7gQ*}.7pp$ݯEaPyôr_I*\ WuT0[W6(@ͿSs(5r^?UVX? 5s]Tj4:c RNB DC=#!)nc -ՕցdB DǨuw֟yK^Ub@n ż)5>fA-+paB ќgKJku{J/qZPXj :SA{5c!@ىN>x $ɜg(u&θ )-L}?Sej@JB $ǨWt$hH@s h@QH痩wHR}I֑҅[.c*+{EpTJ.tu$PHiIU5. \(29B\&xKKzGNM RMB@vfA}U]&t^hJz^5YU6n :! ?grgbᖖ{IoRE9UNh ( k֬X)w.qIYBuIIN/,; B Z '+>%tAqmso)/ɹ՝zS]֡?wAOȻ$}LqֱIޑ_8Py3NVH.d'س%傅nX(u0*5箣*>&>#H@w[%/i_ zRo:B z:Bec_;J:8"Z$"B >0mzݻْ;[ʌ&6I\_(%\~Hƍk@ f a=gW*>M.u&$.S*ɭ J5 Jrk5Kt I@O?F}#x r:^ޟ iqkHZ/Z*lP6)Vn\zSTY:.r1 umAeÕN rpy WJGkUJݷH)i!{;~lnIԦ@Jy).&69&ڦoSYЦtۦʞSbיIENDB`gpredict/pixmaps/icons/gpredict-layout-00.png000066400000000000000000000556601427377236300215440ustar00rootroot00000000000000PNG  IHDRx}iasRGBbKGD pHYs : :"tIME -tEXtCommentCreated with GIMPW IDATxYWv;~[n]hl[ːh1dz eٲ!=)Bz0#`Bfi$cChlVuwU^ۗr×YhA$AVD7NO~??Oc3K?R*~ fTѴPEDXF36W5#8b8Nc,"2naТ^Q(ahO_ ႎͥ0Z}\1t'2%+x@;HKC#4w$A>D(JO` LDsGeΓDa\#M{L7[=,IW Hcxh9PMPkӨ_w_~QNtrʻi$_LݲUk&(u5CPE޻h>o? Әƫ"8Z9]ͣS(+P- X+UAt04Я? | .px$/<3'LuqqfIQcd_Uf)ySUݖjj5.z]s:č-A791_5 `  “;x%f7 jG/J7Vk;w^xA 7~w>ɓ||/{ǏM2f krR`c ;45uTݝm9{uA,u@)8XZ\@Ueow$"R9wNc>_Rɋ@NLL;y6,-- 5P%#uP)h`-ycϫED CfEoDK^'0(\axmnn;j"Gʲ _A`EZSI}~i]]]=a2 4syǸtNNNHVgee(>ȿtRvw)KsҌ୷<LjT1qkӓҲ,+~kiƋZMNvwQP`$ֆ$:OdW?~=Ox}.=lzz,CDYFn}4`OS7;1F]*B{ ,,,,/3њ[?-s4''~OaloQ- **uAkT`"K'\ z װ>R?Ul=Fvd}0dO-o?qJR1j ʻ $TU/T)yE !J @ B=^iYIKΜ9M~\/)pqCynV퉓W8sTG!c A!Ͳ5UFiLeSbe0e^=^qD Nbv,0>j1h7@4jNZGk7 BU!w|#81L\N ;H6bQ}U NxZBEX0JJݐBdjj^ggf1FЌFq$y-KGJ :ja $..E^:fS͆NS䥔dmnmmcúX4N:Lg|t9DQi5cmV&CW,ӡԋ6 7jyzAԋZTz,Tr@kb@^s8EDj5SdL+%"`(Ex%'˄0F>5WS4<1nKT<Fh`M &kUcG5' lmm1;;#-z\xH.^|AeqiGy{\Y[6sRKjLLLPOԒ*TdـR'Q Mem^⍠j,-K%=A ZL:Hۆ4M"lj='C'ut k7ogX!c0HodP=}SD̮E(aM*pEiNx&³ y .KOQO0WZLݎANdMɋ{hlo^ )|[>-\XpgC88xEeI tz#:O$Q.ִu[J^:) 9$ 4uP,r iq}AF*u#jJd2Z9l!Z2RВz N@z)" ؐZJ ' Ú0PXmA8eƨY+:,-OEH{DkZ-ل89͵y+<-3Z~km~IY,6?;ք̖6g$/%^y#5쬰QlA EVpkWp8TfO)Yz/nNcD!˕S˳cno`v"f* lKV+5\x7@!Ape1ȕͽTe&Aaji^'ʵ|h$k HSM:Od@* HSUGei6xoTU<D9sꛢ].<;uy/{zZn@^Blt;hb;(TfǃlnmWW憗14w+7X\Xf&hVܦ5Z+ND}H 4B!sMVzY 5+ Iq>^2'3:d3\E4Y[oNBj)"hjWQq~I{V.Nk O>eD֒.ywWq规mC' A RR*6R0@HfGBZJ5/KQ8/xGv04B"ʹ`dDX,.N1(T{ =G\Kzi`-F E6" dVhw u=L/`O8I$ִFAGAkkM؅Ӽw6WopMMQM^ymmʝ.i>z$uyΠ\]wrmp޳b*A8d02]J@NeLw=6oyΝ׉/|'f )Aa @4,ZID T2ܕd@ET b(LT\HlLMM`NڣLM(/K^ppbYTO)7; *OS*348 ^WV5M9A}x ~h!b"}ys uirr@'V YA*kS=NqҔݭ:ijRiIiMFdYHA5#JZDgyiڡ3HvO"S6qvQ‰&zc%|YNE$5AQ XA^H33l1ȋ+36zK%6͸S8^/,y(+-/PfN-FjS0c8w:95\^RW"641F3dDbue~+!-r$&U CLF4,4R$4^}π@"e6% d4LB0CQ/LN}eIhg˗nrpta.V!a8 (upz?{+<Z`8TܑNWNl &')zh,<<jՃM <[=Y'{Q*({lkSO3gX]M,;8 [+~XM C]]Zz$Ec ruc~_g2짢y氡t%R "bkZ+0PԈPAae)*#/ D6B3CSq|,8`s3$Bg0s,L7hK-\!žrκnJZ=Y49wQI,QyI?+E՛7Q<[v#A{%b}UDex/IUj5<yx^֚R:5u W(w:1c}y.D03S.ogw`B!O=}p-k99;~#/J#hV7H+#S(?XuÂ,=.a{7g\\j/~ 'LN+o]% BѬqk?SO_ oO|af4y*IW;O9K=~G^zvڻz`[o2PG8Ƶ}W3J\U:U{^'Oo腾nnLԫ>E!qahJԫ 94yxn#/>!Uc /o>H0d~zJE)%$/zs QQZk$ワ&8鈻"" z}/?c0٢HbF&_z/env|F9],+zN~2ݬ!.9o@81_>(7=kxa2;ɥ.;E-^$v`B:Sk{M3zy~ɔrPԌ8rWkg[3F*b, C&j%AxoK]NH9P8vxo>аҟ/d(U+h$emIآRs n%N2Shylǩ rSiϕHo4J,٠8 >~UȮU>;!oYD$aVn:RojrI/+x;Гow}6:\C/ͩ4 Mq*ۜZ^(4g#VNNҜ =~B|qENCYT{v,')M:̏x̽e"R+FR-^=P< L. sVdo'*vU (o 5(ӗXs IDATt$Fkpe-ZoMaamgFaH&*U;( %HcW9%O3ZS%^Dc -)afU"M9yrJOi:XՂ,Xgqd%xJ& NC67sd3w5FHaw11Kr&ˠLryeXc1)cfݼGM/ Eh",'KE W2Iƨ ^Œ$9ɄWByY_Qz(K %uT-qbꅆswG: +gxocǯtF%=:Oh `LF Ćl 1U`|F >-=|=!rx0eD̼hSE?d$ll<6'wvT r}mGΉ)]' `/98trx`3J>^x(w Ueqb )_ӟiN̴Ą[]wrV?ڥT gHpD8}޷(fUpFx^IKJZ8pq&Yd=!}'Z.1|g>Hw |DDSGyx׭.EY"Nym.x_B~իzC {H4 z) 2f;¨*ѫGWUU=kyPzq<{gހTB^FM`nzRƠ[uL %, U`Ӧ`:5@"qsEQk6%qIU_!Ef{nm$,KuUa>$aJQ2@Hsa?P s B-%B=p2tGB[1G5UjIcNi^+W擱vtUǥ%[;6IbѴTz;"FfBӲtcqHU% Cf _BX4+VKDPFÉ Yw4(z01Y9 9j@$kzSNmWʲ@X(W*SSSO9mpEYmQnSٰ"ˇ:L$!-K6nlnz0Ӑ!Lj;ĺ|pu\jsA@Rt.*8M.x=fdcE(Lg<1"<4TU'2ZS% ,}=jZkE[vvX2ם_wkKUGΈֈ(A?ui5*(Y*"**F<I"#V=CY_1谻djLYk~ӻ=d{L#c^ceHP"G#2ulcsΉ 0\gL6}3 ]Xak5inWp3=$ղCgtWa;\y(aI(9=8sZqܢ, (RU$aT+A1ŠJ-VwUcgL'T1Q>cG*JZ0Q{EL+ |FZ O'LM(K>iopM e`2 }7 YQ"h(Qc<;Oݩޛfwyizd#*:c)vm}Y\#>oO?4rwuiyYY[[…Gtjjnֶnnnʍ7Rӛ7oL-5q<?CPHdgYV76ˌ"JnEUL7і}LL}pĵ^_`v~VsFϞ=ÉyvyGKR9k2LV82pcI}y|_cnfFsAQk-ӳX1;v:a<'O.UɣfΟsݵޝ6{;z'E!w^4?_'0Onhɣ?s Q&.Gz~~~ i"Yr)]=>JUf%b.--ŋO033sss,,-rlnޑCi~H~nיpr/]jd$ P:G@HyΓ'9c8H2 ĆDHjB+qwޖ[O'uꞞ+~!|ǣIż> _5׾ smّ&/,g2$K<hae Q$ʒRZZq*+d E qP,PDBlȶ-$ b,X(ay.|+BBX ?)A ,JBnD ?* ,9έ,6?C4 \'W<odIsUQP-gBϟG1d*$Q@Zh7 &$ &#`F!2m`ba>S{4 AD~.B}C#)`klB$06ǐ%AЙA!l'" a;. Zb5 EGPo TBDDA Lzm yTDcA/BRA8Vܿ EQj k@8A$C@.EJ(8 ل l@Rĺ"@0m7l}ǡr_>-EǒH$*a\yd" q j>0 @$Ȉ"Y">Y$e㒦jRR"`H$u4 * !CcTDXdճ8B sႊ9#!͒92Y"Rd$$IRހ9؇LEqr( #$}dy2"]'98jeDm' 8 ϺA#Ȓ@$Lڛ6^$DgRa,Q_>܉2JQꄆB(P[˓"UR R)0MU1Hads0ፔ.A3\? !auv* u2lL$<^(C`y.kɐ\܄$e`1E ƣ9c 'I8l~6キcDA&<ҩ $_+(V߂DlÇ]lmb} g667+hLZ&j[[ \PJDQ0 Ο?]|wL&7o… p| X=Ś>n ͦϞ4kV>e#饗f38>j5{IX1Q0UcL8M8i|P /]Z}zP8!I}X az,)Auj6><* n58Kc #_Ih4~Y6I]7G`Y5xeYH~q] "Q8}DIbu)_$EA|?q8/AqRI㉈lێ@pHut S{ND&c8uT)JML5 c 8hZd2$ \(Rؙm]W֠ضXtWR帳E{P,aY rCEU! v0d9]1, Cd2lF^K[)7߇:4fI9Nu*JRґH1rr}V ,T*M$5-/)Gwēy(¶m|{d$cAUUdutx饗 2vv#Ȳ7n`00 xwwR jsRK3S)Ɖ8 Fx@Ղ(T,ADF@UդaqqJD/~X[[:lێIw3UqejΧ ܽw+++ǟ^ xEhTf‰{Pl6*!q;Iz["0ߥR ~fj>e 6Po:7߄immQy,˂ h6X__@ />&r,T]K0QXjz}R9¾9aLIDAT`[MX^9>l Lq  *62 p܇^t|>aaaaxVj'ct뺸{.:CƝnlZ˗/ wq~F! #$FJ/nGjh#᱙0MStRN`0 \JGRWEmPUj2>Y|vIQT\!!1+7|L,+$Ib0i*,..~q{4A2P3s=H t]?ς vrljOox 9I>qW>syi`hl6qscmdYr90\.clR8o;8BX`kkk">gXYo>d2Q MXE|gj[Z:2 "qVWϰ,I2SZWqLOQϾg$ 6U*En̼(~f\.vmSR9׫T*jPVTϛ_ ?zs]^ _wΝ;jpY \+ɲ!F!AJ"rlۦcȲ̥b7n 4|_MibQf5Nާ62rRq6*L9:qP($* MzgD`,IdYiunqˤi:^}KHt;gQFP($ Z=Ξ]_|m(l!8<L&qsXS,A?s‹A>oD&;wqec0aQ>T*e "FRa "zyrFuqkkkS\;uD { Ot&FϜHX D6p:ޅBHU.8zg#( QoH"y\}b7J}VNo=MjC4MX=!UFuضpE sւ ę6kZBo6ڂu1E1YZ!!}HQ1)X:!y&~rxݘ33@^ ~ (RP T*SlnsGv>jSQj5mt],LR X^^>UL&X(B@uշ1!=PzгY]ׅ(8s A?߄eu rv Ju!+ 2A 4 $um6M3!8{L!R g c4-LB5ftɣrRBpS 8I>A15"vMa<#q<͉뺰, nTU,ˬ:z=1IcSل(q? q\ z}dsYo|b͐4)Et:?!4-os]lll 3 t۔IX+w/L?^Isdt`p tX(Jrz1hpg&Ŧ9~x@٬lYΟ?/23ڵk;r9lo`<6/#sP@AXX<+ ;;xs3 \rsFZEV:)'*ԒTJNd?]*Wraft:-rj:Gڥ&^qvy)4jsy{dbǶmZ'?Ãkq&>|Ƚ~vww!W~5Ȳ~ompacMSI4Ϸnݢll\D^QLz'L5W,ϸg9U ]afUjJ%t:IAzG!%l,i3>{a6{ |Dp':J.qōXBc˳Pr/TUïگ- h4@IRfZqIBϺ(G,JjtR ib{{">w33iv\*HnK 5 0*_5"?@^?bgϮ>¹g  M|p* /-UIE?gRp8AXœhj>LVe`Ne4pltEa$`35[y:뺎vh0   gee%8ӕOE#ֶ tJ߽{bwo+++܇:~V +I6(Kg`4!]nH4>h$aLid1+DO蘳[Wu8CN'Ftܜ>x0P\Ob]+JD:t=%:e²|cd; s<&1/\X^Ȳ`W^y ͮeYQ+Dɲ_~ ^ΞŃI>z|c+cVjj bLѥ'v88FZ ̱E4 03^z%UU 7z.TE"˸zyԑ "rcZ`Nx2j5DW\ 6 {;w{{{,I_ȁd,"j5qffuC<~lj9nDW&k>%)4Tq:i0`6L7ַM{7&Fğt`6rLߝ;9sK3ڤN[n~N'̥gs94VVx8w xoobu,~m, VEV?7x0):ʽt X8u?6,X^^`0.t]%?X4Mr9KP%̟[r|WQ.W`ۡ.Eڏ?<,˂8ɵEIK.%e!͋g\:hR'HT㟱fi<0h8TUhc ͖ C03x̆aV {Nϼ`={Pmg{~/?VWWիm$I!ƶ> Cu 7n 0+[s$p%i\YeyܱޕeYIXՊ`0C)(ǭj:nlBTG*lō ,dd8t"1 mg`<CP&$)y%iV;ϳS8uVU5!OQHD@JFN-S v>Ǎl6K/_,g}K/e I*ŵapP@>'Yv LrRd&MTM4?3%|N@Xć=O5~s,U,/-&vr!B̷o,'c&Iiϓ^4"+?\2[>4o/imG"8K.^\.8xe2`Q#Ič3g~V׹lэ_Gf%LED4C̟X DH8]'05D=q&6wv:Ms ABx,Ua "%ln^D 8C ('g%'.4idQNN?݃s)&w< ;{"N,__?zTon YE>CDA ǟI Mo??b_:WPws#wC\J夳6l({۩<3wxRj>!=տa߰.h7ޙf ', h'[;xDͯ0@61{zIvGK1bAhLj`Řf?TrW+߽qD9t))=qٳhw;_uPR Q#*od PAK@0ccPsʸ1 Bݢx :Եo 5$I@Qyđvf!;nbWR7nYʥdv4oя+*9ÈR:Dƅgn&Ul nz:Y݂^FU%l :YJ#E鉪@܏aQSo_V@!8$FN--) KQ$FGΰ7*x:'O.0f 8TP@1}\t^gљb!:ٷ;ws?,Gõ#O = F<D"6R/ʨx_3%3tS8kBύQHIҔ6Nlu#sN& Wo8.ޘ9DkN-X`8=':[zugvg 0v!PXx0$;;SscfW7ܸtI C5qNȜGI` "Β8CQ*Fj1¤ f(χs=eEIİ7\ҠF|:T1">sXӊ_(*q Ӳb lxhs',G'KSNI5FC H.A&F ae~]ihK5VSDC k Kxw,pMN@H[ /YibK7sZ_+++iJcҥKlmmx}y@k93\S>}6w.[bnkEƄT>Rk7YX[y'g?Mo\b4+oEq)WeN$+ヮBgC{["Fʒ+vYZZby$j̓J}~5GWnI}<bz?;yt_:4J,wY ְrӀ!uG`ꚈDFVAfB#YIYY\\Ej1,#"BQ1D*"xho\ؽ  tܟkm5u\={DD!;*Q ys ""!ꪩUUu<cCۣt2!Z*B@$9'EQ*wx)9ʪRQ+4*s$IUU1UU#U00pv} t/=>(&Cy 2;,5A#!\&kss QW]PYz܃$,Kӂe\J/~7np%T}cXk~:$IC=ŋIL'?,c{t?|+aa|^~>([[=4egg,˨뚍ۄY]]cmmL&|px]_? QkQ 1*1usv>sy''<"F| j_s%s*NXauuYX~'aE'kkkF#|s^,Ƙ>EQ8CpyY8<ryr{ؙ.'N<֥J&|ӟӟ4Neʱ UРZ=I (-յUը2 quc3gB ]AA۸#KD c(q^Sk> ]@߯>=9N}*MҠrHU )U1F!h75qVHl`{{.~~;Zhh5E{a@%*Ԡb$ KC~$>*q9޵= UUc|,%GsT#9sNcG{{rYuCz}nK$ Pa3L[ڐw'@k܁bˇi#UȲ#K@"Rfͺ䪊$P -BONASLZĈh?6!"*ZO 0'8H3kdRLUyK5< o?!ܤ!M0Wmhؔ41L{\I#][J@9.jyk6Ysʑ4o/$GҟY@~fc+N{H _l$~xx5al]nrWh,zw~]il<. f7C\⎧ CHXf `i{yo堒h`iuUi9(!U g YQb͝m6Gಮt&)16pkeI51wT4F:yŴ@9w7Ɵ-*sBU҆jUEXEMWeJжq}S#̋0!Ѝ=;7F8y b,m&Ӊ 9}ڼMYMNtv~Ή,> "/췿õ7dÃ3\]ICXt2n롣Te`Haw3-2irٳ޾6~y.] ΐ)15D;s5Ï=Ce{k^=X3|"1iPjPlfX ZY=vs+/{á&LhkI$0K u՟K<E`[4*rt8 xS ~QMU1w5B4zE>$9˞]%5KFuFQT `([!ayqIQ,?pyDzlyO./əNT5׮zA ^|3V9s,exxaQR+/"+'GO>OxO6.{PTF,UY"=tZ4ZAqSK+?O7Wt@#G,uy8M|D#m$%?=|W'7Шq VZc"RǠlQj !rm^"U1ɺgbQM&h D+rԚi3k[?:[\HJ4* #H`AB4iQz [|oM3<#}o\L7|7xoOsM<Mb!$$y"<Nop<%Np "^ZMv'yGCJ"¬ƨ*7Z6@U}k*Ka!6CdBMGrx%jnxĂ6sAI鳧揾-eG{#%s|# \穯170fy]rc2[/c$Yޕ+CS?,- hyW|opu^A$zjTe6"A"D\BTζÁUĄ!xQ" mD1 eŃo/ڗԓI 86`a0n)Y/ÊPUAz\?!ϼ)lm]f}  ,R&9O'-ʰ{:O+vǞ&D^x-'2ˀՄS*InѨ"c2B=vNdzGX10%%ױ!Ί+XSrLH ^Qk"IfEUZ^:.N9K'Ktks:3y^{uzr%>u3㧿 /ɩS I__gW^_o~n^RpmU10o2PVP ?PkKvD jEa(ˊ[(:5 +IzWʅ2' Yu8gZ'NOKɴdZֈ$vmzeZ*u´$MD$qȳmNQc1Aل~ R|Թ~G:Y&AzX<8+XD42>ҩU׫u?t\hs(@h4~ q_^ 5"60;0 t Rcd5MY1VT/4XEMk rA^ŋ/կId8Wri>x-6w7._89t:6O?4ݗI=x2DoE>p7ٯ#-=* /@Qɟ 2BadiIYZ66뼼ťy mzejm02Q8 p5[B :}˃]/ؼ~K}bfpN@#U eT.ׁq5'کzP1%˫>Gt3޼{m]g yI- 2$`a]SH#qAҤU$Zg)(1e;g@PEj&#Ř0/+JSJ_h li1ZK5 4ܛ!jd\5:yQԺTRk-ĥNO$)$ Lo+̵1ݚOO{kyh=Ɨ6HuebJ'(vKnO*1V+_I77`0J-2NeTxۍl- 3 -VULO.!#uyY^^Er;RlG7^{W^y^{ RUZ"rYEfgfϽz%y%u9R|Ö"eeIX^\)ʲ[]`si%#$NO$VZ5D!J>z \c2d"RĶFeX+d݄%5A3ch6MiMP"5IZ#Uh((ULF qICM, R'м IDAT6x /!DdRٝTA4z"MRusfsUp[*j^$3F7$LEI@]LukB]aX^x]$Up*SyB{E/,9nd8fggxDUU$!,-,O~~7OoݼyHäR"3?)I!q!?Lc}фNpy4ͳ8ސt 75G?Ej~+$;tgtR j^ҙ5Fu3È/t&,NZgΒIDcI,荒F4(5Of7/MV˚ k'#I HFH&8k'RU%3K|_iK/nPy&| : b"B4 N-o.Kjt9bܼu#x܅!O?Ë/uF}'Wɟ )$ڄ=L$I g}>y~_k_fqYЁ,4#Z7lpD"b2(kKq‰.?3:VX(ke< f,"1X46q kvdޣ*"U!ĀcUIyЄbMRwSU#1eA|T`8@LC5T1&J4֊~VWO1k/%9f?2n_ߠGCIM[A}ŋymݚckT,, Xx4Xdb ZҾȩYFssreunoqġ>9~ X{rx+))ʒJ K >(i`]B"P+^4'7ѴpEϰr⤜^/'ȃ|3kW@MSF84oO}:&n횑 '+9 'AqZVs%"Yizܼۛy1iF+ KQ:טk*w81-48$%(6Dm(ƴW;2DKԇs006F!j Qq86w@yG0,< 74Շ;]xS;Ch'|M&Fc0q}3.&~m`XYӧۡL3jiIp~lOn]֍jZٸ+}ssY>s«ʠcod_` X$4P՞jI'Ph >66'ƅW2 5[rc}Dwx(O|g2ƐHYUŠ3b|zy+h:-XXǑYoH}#xFLߏ$)w= if .7"Rg 1U@H`$C:DTa9K ڲUmy4J+Fb !4i:zytp42x!q@=D Z3ܞqb峌,*F6<26%sˆ.h[J"Nj%%p<~oGcMͲ鄝4K%OxʐqI$ 6J7N޼.o&O޶^ф6 &.+D 4HD)c$ks0SU&mxU`~~o]B1v˸,*[Ғ0*REEؒ( 0 QVс[mH4KٖH3$YgٸU7K4Q'T{ P Us; >7XFՈS46XVlmchnRq.ц0Dm54< mYf^iNAE#j!w93="6uײ)YPUmި[cud샞x(s3X ujm(-2cCkACn\%)yG4h涗q) NꨚĖ!"wRccPͨԟpIz;ۻRVϰ0Xdkg[42dM:`bBhfP{%1 gd`&Ѿ¬PSAB,ۍ$IMvGC乞XI)ۭ ޡѰ- ;f=ַ-YsR6nE#hj^IɩdڦWu7u#Q#&g5MIڨZYqij-1DY"6$sZ&sK M=A!dK-ڮ84a4JIITmq 55fkj*V.MkL|QD5YQD˄u$edi_%Wjjź 2kAd堡垈`ۡRugkCY TF1 }Џ$GF `QEL76yS y UQx4e̮N4DT=8c乆vR:.c{8IQc:$NMD5 6q,Z$Ơj=k)q XXVq"`\BkL;k)EM+xJݖ]<̄Zjۺ׏|4iHrҺ&g֭kllDq&!`VFuW"ִB=5P@g^1>1O|CVŸ56D*5Z#A-,[+F*"@D7ML\e,?i=!Hg릆EIww޳[ĥ) &5644'b5uVYi׈fHlB8ɜؒϪI]5V N.y*C(}4cߓS Kj4BrsgG&)ĉe;Rԑ@έ,c6n%ԊB+# Fc%MlCUQq":*7豿˽Cc>Q2g, 4;TS}.q 2t:VsɔVɜ\"q( 1Q$"Gb ҝS6\V(h[޲Dxuh_D j(ߔqDFRN1$ ڠ+u8%'nAfƁP0wF $0Jhe.^/'q{{C襩\nW&AaŢ1Tux°G'RSNrSc# A)KZ>tu7RM<&CS<,se/uΝXUIl 7tS#ۻTF_^&TUu@@'& (ƕH[〨. h$UZв˭,[F۔2>),^3"͠FH{}W$TvP>pHՋ{PV[7:>E¼]+gӹAڕWn+~M)*9QƠa7wulİӍ1nNHUi۲9hZbZ∵]ApWbGBEexǣ3N&UdC1p<$0'G-RG=\)M(6A|Y,gΠƮ9ɭ$Y kL|yh[?,RvA+q?AP׽Z)T rvj%6y=FNHԎ䮦Z 6F6FJqQG.l0͉.DY;U6Cפo3}u{]=͕xizP8n֑湣nɋZ{CuawKgezp6fqcc@^{}8F _:ideZ*D4SKk(.1 d@=K΍totr,'a J4^`6w˩ !7&W[ݔ[ׅ4 `b<. sv668t%LK޼M t{ZFg'(F 8G .mg/DqJ]V'3fy1^'% ql(=aw^9ʒQU$Q#lt;d ̧r҉[-7MA7y=t_m4.]{I}75kH bY+Kpo"eߟskD",lxZ:Rh we-Rsj&8(1ц*]/ݧz#[4g}^ Z3 JGAd2=wsb^1 WHIPd}_=1qBÇc,"Kb#=ɉBͷ}]Cc#޾'@D%YQX#UW p|rym&cƳ2SS)g2gHpt:1S~iO"# E(] @;E#O}#<=ѬI5ZUָfYD1 W{Ee 婴j+_5{T)u'U"3= F(|U\qދZr8xV1>iWۖ_H;±w::iC}bmih\͵8W~5{}WQĒpS6vt|Ϗ B]%hB ܾ64#VHvz CMezۈ$/FuE$U{/sHd[ -IG8;VejN3yqvڳ10sM7xrF]z=~RHp^XC]NΔ|VsLTW,.Btzۑ"Aլ;yGf7>H[ l"KuS% әgggpmg \66*E2Q'F5dm3[_uQc+!\@֝MTwc>v]^5s}Pݯ_kzNAI&Pciğo_G=g_G>Sʲз)2&wSQMk]d:LbvR6} ƫl^iO??{ Т*(Zfp:C>QxA&ԾZJJ爌&BpJY{1VO_CqeC t09|3đhoΓ#Ij#hX_g_TCqa "̝'+ 2UD fY*{0FU`mLY~ܽol(/O' ]f3u҃2$8DR) F; z@Q^FZǤQ"vlt{شǟ0;wrcDT!!&Thl#ɒD̫ڻ2>~3wDh""bN'N5i-_AU9J0яyV1٦2- 4wƪN"/x%8͐%oӡi+BmV΢^(m/)iPCE$!0iu].,k=&o}&wbQWDYyI]`:DeK"WhG۷je<I^A$WtYItn|k0.m @NxD=^rzMuVy&uωO:tM) MO]pj=S<>#xřfR#4Z7LKz f, ZPp:c)e\;fed8tZRIދFȹ_>z6(9[{LolvF^c(桑P;PUá]F _;h/ڭVEɬ*;2;GF{B8˜*a<3LNg{G#jlx}nm0dY H# IDATUvܺy 'J#SXx7lv39ϊiQ|ÂH:EFf2/C]'Or$B6݌ b) 6PW#% (k"ڈ"qr |vqDPeh0_^5i A춰yC*,mc{c8BOƼzsCglƼlJA%qFQ*-H3iS%b+4ݕCW&ߧ3hޤ1Hc\_['fLK&RŒZj#v>Sk5wsON|,ϩ] A{__RLK{_pz2Oc4ʻ_0My9g3zF!MRy]#5t4x&+T&*I̧"ĒF㴋sdQ0ۅ4ⴕѕ,FJ'Hc9"jƦkF/A]%/7o*,Exb&j:!5N@WSBԉl&U/$$q'YHuUBm:A"toRҚ[bs{?gߦ70NI3 %D8\g)Yl6'ԞVTz2Qs{Gק4kbpS2/~ W7i^͞Ou6)7nxǒΫE <^YQ8 d&nJiIf,Y]kn&_ʯR!C^6G5PvQ\q߯pq8f>51='uLZ6S%Ԟ]C\yOl=8[)ь"WDZ/sqD&G;t ~4a:(P!jb z1laK)*^3nS#cB+6(x&?=~sfwOjۍ3z.ُS;לQ:?etvWڡfUI8L{ YkP@^ܛk`c Xn7lQRpuJ"`ѯK@&7گ*U*Qo.f1m/FΠǭW*?'bƜyRyl$F6ꆨ%^ C ^bc_L䣇|PxCgsHUA9UI I R%3uMx7&N*EYQWKܼ+;6NliOw?PlT qDU`8ۛ29~ьHIL\xܟbpLcO+if(L$t7:Uܜ;,76-csȲȌ` X͂Zj-Vs|| 3PkAMQ3A#ࡪ4Xz8|yʊU1;RQr fTUxԭ/@Uz$:4NG'LNOqF*nz*iDjϟ|k\ۼ"^bxgSԞ4)zI{ qpʍM (`$rd\cnGPQ՞ڌctH5l1T/"bַ3\E #sIrZ;9U dku1UD+F`Ն1ښ@`kvo(J+|*@pt>g$r̨;Vf.HLDe(DĴ } m{p hv @&dQL*Vb.Ii; R!,!/rfQf4!,Y^2*?:Oeg8?~|C ?P&0A[_{e <>?1õL0UGl\+CIW>'P=6<i\]kK[j^y.3BV^b*cJ}e- =]\/y @RI J=U: h슌Q t{Wk÷Yz8ZMǿG>R&/o2)glE7C6}2kd=T6:=Nxwx:U51\u2.J={G;ovÏ?|{z)ggsE$jU|]w½ggܹu4I;JVc猜ꥦ$2G5v8Vc VqMz*z˼lr̼UU@,B]݌j]ͯzX-1{VU~ukvJD"\W.D3܏[߾Z]zٺ^{usaɯ#ds! "&x ]~UqU-v+ot(FFXD)d(z#ظ؅sP5 E*Ch}$jN n\C \E4. ] BBU׍f6(ONU%j2rq01'e:ez'ol:وI1ebR|">hp LGS_.&P%TFC^4'*QbR{OghPr`wu']mZO׵%1+\P @:jӋ >tTUÙT0v͚~7i 0Sltӄ,,0{K0KPDbn[ Dc+GD+#vvdh8=q6-;Ʉ٬lh)@<|N f=6%gd#Ć*xCHCenmi!X I)s2tPkBX9~\5bP(I1 =r.[STxC.B(B8«^WkPC{lѱaIەny}1=q+"ض,(rѥE¥;'H'i?O XD)Uz6˥҂&$qˆIWƇ5!0Sa;h.`׮+1gL@a>0ii!p<5yвKkqu`rv[|)p'3Rshi\^&*V0xEfx͢FH:J2Qvb ,!Wzu Fm@e:,UbRae ИwҬ+1F7a?֘ehGhAԨZLm a%hҴܛEyټGi*Viklbk%kJG^@R&(#yÎ~I% 6u`F9*pN%.AEEıC! `Ө3 tQz-Z=r4Ah r8gs}l榋d%稙CVtvPi>c6H v,uYЍkؤ&PMqg X5&-}#d:`9QE1bUccH:4ɡf \#(u͟=90w}t"%}Q`5~$ e/l%#F$u HYZ-m14m,?of֎4/%mcb[j" Fb}gt&,bDA )IIl *uVJ 4d'D|a$8#:Hb0Q@׵g3ׁY{$ aL*im6$n1sa5?*$&p: kRҾوG_ƞPukc| eSuD LD b0X1 ֶ<_iĈFȌ5WMα #uh/ @YU`,{׶9>:^Y{k ],y./DWUݨV8/} (yQ=̀GkCQ՜m԰bt:=/E8<-Y$LN)Jה?$xZnhϥ~k5b".P;O~(*YV,P{)ntRW9o#U^)ӠdUMEW W(^-uh1h@TR%6unhv/4Fה>$2ܴgY5a$>rjQ9b)N<8:]ue>lp%ё __7EɯPqI)+lu~ϻu KJ\Dx8TW@ꭽmqs&yhKFB"Ed1L3k%*"{ ׶ |J]5Myյi$(#a=5z|kH8bQ 1;q-u)KG(gG#`i;9}>(ZD- Uц!at|H! QE!̼kIA`Q)}Wj塻!'5Y'E14` MqYt(“Eb2+vg_]KKn/j`U)dhΓg\k$6ryO'tH%1qSntzmU#⋯w$U4G]012 7>.2tDpRy\ɟ#ՆC\@%TeQ5 i2Qh1S6fp>^.nH"2?[<0QE*bLGĩ%L#D3/x PՊG10G3?QO+6@S JD,m҇\!C/캶2_Y:bi;YgT۹\Q&q+Y,y]ܡZANgkG"BE ,fD$&C!VQ%Py+su5afȭRiSٹXy@իPcu 7o~o>;l>L^Sk%dju: +wn[߿rvJPxBY׮|^Oi!묊pVGC;H7ZW"ICnl&|)+F <;H+0w3ּ@1_ngʖi,.(2^VBDuG9R]EZK8P9[w?? \׶Ls4N愪L~ey'O|UJmBZN.! nWj_|M\ȝ'5BSzϼyu}6<{nmxzR|`^ug.zN>ZrvnukF/ZCF[ɘggKئD5zM%J\FVR |EkUd ]/w@5䃏_Pm-4xy< (k'3_ft"suͨpQcE#З+pˁ4(PoG1?'|my:U3<(J)[ix#(#uAd89q||~ }~f s->?0X1Y\}}7'773bjxn "Wvx8pk|eF%ff"I/eB/^ Y+W8@ !.kmξwu%_}NG%GGt@ )׺D8 HˏA]`a**mܿEZ2\pUhյn |~> i^ܹ>LzRdF/szxZpr,ԕkb_#}Cy\Jhr7ֱ q{w~E@ZwB ~S ՌGsRNHK QX=@˒&4!H!+P/%p r!ipq,bV___MVm%NT~ost>|X4L6F㍒Jf3UFyy%m L|P_|sTsۑ75DGXk% 1׷dFN&D:Fr,gZ\MQƧJ]X5I;)O=8lo}T]-Q\w2GLs5v}cӀs:wwEEIH }$1{n,M$l J~LG5Q, qbQ j])7 AL޾PTHˀ|9B|g\ ~iql缢̱_WqlIHEY%",&(+Uq8yjm19ٷO .btfE>Z&!xr3^|^uc+%4e݌[xt|o w_{! /B,XuR᝛]$ѴR IDATjӬiYыb."33Яmp8əM+uͼyf{RVl\*blvl|9u)d4F#?q)U3sO>_Vb.z!TDM4?+NbϬ :긒a/g{l Xj;Vw8LJ9c%NRu$?u,LbY$/M.뭛_\ ./a*%G]gT Y3܀~SJQ%`>7Ɩn)%:Qu9V )dA:(T6xA ؼA20YP&V^4}Z}>$ü$2Kɤ6 яpz_Rlgcnd80ϛ[ q$}yM^U>s,e,RqJ`jk{l!vv4{\Z{G!ι{[ *i*M]rPڬ(qN{ ܺ%DHB]ύ^wh^>>2g!ܩ0n]\6oT 2śWƲwk?ۭHb陗GDCheAY}assUtDYWo7 4PTCrN#nNcOQ2:u3h} Q٧-]?2*rJ]05*T44, GGJ_~VRUŪF eY gg\4deTy%ړ-Y#pb-PZlD3s)@#_|rYU>y#^JeH)~huNrvap!\dxS}pz$vGsG>byf*cO!XaI9[;0)b@ <=fX#Uk@S:+cTjNg(@$I_V)o Li='"+ :#PS2E>*yV1qU2 ME:^g_B[쳉ɲ޾"/zq FO(K+lo-i`>ıx^0Q-(sQC>@jsMjdVTYIM='!~AD|7oFKX71vQ~7*~2E:v':yx[ݽVS+gHLl,4f(N>֭Jmp^}~l1D6ٌ2>#˔VC,֜< ]A&^:oS@| `}j&JyQW+j rrʃ$&M:QP[ 瑸?HөhZ) ˎ_h;[`?Fk44[%7hD# tK+cA 2Ylis}}մ,,mb]SUMunl;wj͒~eZ#)1Ӂsϩ5֩1󭵮N.H(cduX+^fRUij=G;cyT |*qӑfbH1:k[^Cx)7WnUU)#2a[ fI|DEDHDic(iB$Z/m*S{P Tj-\KK C=g`x~㴦D] /[HMZî2Dq78^f{{OcjR?w'cr݌ þALfl37_Jw?s7+=_0:5p6ssK,ӥZͦ~]Ԛu-s@FƘ6ٗʚKVΡ6r\fV#;)Nі6bs@ԆF+|\F,1:R* c~a9sc=`:\js9V2ܖ"< w?c,6 qF^Ixq'>@~Vu?}H62RV)%PnO,IDԋ5*O~}u!NSP+UIIXCHDU%Nb.nH&Y2C1*KLUEQn-kduuEʲJU^]ΘlzRSͱpi]Lj^z2}9>!I Y͹7I5Xj`-n&r[l$b-|dzr!ֹ|F RwgUy{R}W!0d9B#+U%uLQZyT歑LUZe !c0~;;,-66zt cqnA3 ~cVF9U. ij`yVPFcR`%6rzxhYZR I-?>"v}^eD,Ual{1HʇZ|*?iAHs|Xky'' ȑ9ǧC0f8Ϣ1Szkuk-W\ݞ㭷~mH ̛f' UQoi@b_QHGc<.y9>jUvD1±ש&e2750?<M03$zVwbU%I>R$eABիCzg-鴛g aR&aZcGD%W0BU|Qܸ;=="OX_/es?lʧ1dfo.ӽ1"E)X#4cB\Kx@uǰD+7vR {cEH ax}X-n[G {orn>y#1!Q%;|:kEP :Tz& ƈt:mV.p|t̏'jZAڸȴĞ[:IQD,`qA"Y?ӶOdKIk=WŌ, #+OܨX[Of9P,aJljf__ZC1%[CN{nnα^'!I,`5Yrn\s/GG?$Zpt,ܹ6ADjD\kY$&IlZc#hdX]]Wcyԋ8o,G1ϩnzUkqLd#>XH"W"_ێl ݕKukrU8jjޞkQ-+a Jۥjᱼj22i Gh# eUPrAVT{\tͥ0T(*qgKՒV{Ue89EFJ&ytR8IExUWf}U(JW;pΤ!eu>ۻV\zAj-6(˲&NNUFYl?z}NN{Ge`DqLQVa7= yQQUnv5jhQF %qlɤ1=t;(b8 V"Y9(U>2GT XFDc4 eSW5VpZsX)CQR[CXk1Vı ++Klbl* <fz4`S1fi4in$o,D~nLI^T%9$:ʳ#|7Gܾ=xc-"uG f0AaֽW "ℵ>ɇD,eaׂo?|S?'-.Zf\fe>8=f,FzG*?Ti O >A'22r2=ƅ |[(??zCvw89=``0舻~ ՠ: Mo7h,cn˫_ |IbEn[}f_}'Grv ++Dekkxt){gYsttO'||6(GLHD~8IDATXJsQp1`bSfSC fS3G6[[3kGQUB2i_a}ck׮ǟp֟7~bY,]\4~[% ʑe#Qoy=^}E;ܸzXW^B" ]xEutn*Y+ߜlX'Û=~w]Fu Ƿ[$ ш&?޽Gj# H 4Ƭ\ 73vwrz;!2[n9Wz(M&GGQ-R\) EjQ2V 0Ơ^5T1 ݔ,ƲXzQGG|i-p{,./;)W%ϗ G̎e#uNvռ$%J"^ڋ|:K+\H7oXg{2/h41t:mG9w{q 77v۬,-prv!t)xOyz|hƑW1ޣׅμ$k?ĕ%+ˋuWka~5 Nѐ$mF ~*07(EQ1!S%iX#ZVS f%e:]RYcx?LF%çnR5Rܻs^zop/^GC '?)\r{fs~-iN{_V.x5J3M1QѨ 8NgNE&]*kMK/==.n^fg7lDF?9%ZGӛ[?ǵFF@m |,0E63(( f$K7o>ɓ7ʕ+\^_9EzƯzY|tRR(xc`cAOOWV0&T]EXx%hkˋϖyE쩵wQL(aCr@qiUZ "g "*hAH3E d,' M7V%McɊ<5F9Ͻa^UiscyW_wn[rN>2v(qjc:d#Ci4c*f \6y!^!֣۝&dll6/ϿfIX/U&'d]AŰAK  sdW>@Rl &68f"WWTR -`ue_w~.7_RI'hcoC4SiCLg6:Q0`;T=!t4iv xm&ȕY_]eQb/E TANT@VRMtz},`8T"UT\1 2/!`0vHC98E !f4"^YN/UAYƏ1qާ C2'R gi$_y#L<8e&֭>?~cNЎǟׯə4 }ś_`y9ҙ_յ \Ւ,&-w!wa1N_PTp8fRF|FUbMv@Ҧ8"1f;Wk~y(yoJ#~ӷw9<:b@޽'8Xi_W_'~oo&5ADU0Uf26M SAHIt!oKAuP9;" sFnGM??:*{$5FAk53FK=xSSDtSkn?zWH^<]Q/u̓X({9Z"p4ژUF5:”Νb@WVeޕt0<Z~!Ԁُ~F޿O׻w|IY7Aq\իWgᩛ7xյ5:xײ#AGO3JcגâQK19* q .ʒ"R%b#M2"M 6S d yڌaQ{|ޞ\Xk,G'*"r7dKs-xQ1O9^(<4 &_c_M8?cW۝vڌ DjJx3dq9nWkcQQ'렺4|i }gń$@C bT+lGHH4f'V$Uq>ϑV \bT鮈$sT% hJ9:8ߡl eI)eq[c{A\]kX"/)UUq|M Ch +X; 0)1Ĉ̵P Tɋ$A.]d>9K z|eEb$9zv&1fq"~8ğ"ǟŵe?8D#i I4[;6AQyP]^r;$ŎHˢy>UP6it1 W @N%);Т@@ޭ)q2I1*?~ 8S( ,`@Yf_QT (`G^;D8U!j9 BIIRI:^^Be Q`8bMKSAcҲu''29 $d@]=~ݏx|yX1/WT0K1gDdjX6}h AV{0B< -/NZv +o-E!ƜFY\@*P靡TgHǠ4%IE$MÊ1+p$ m'>2 8G) fTyHA8! "dZFq^ûz eQf2JjaK _QtF+Q̔٠:,իlUq!I# UUC kp JeY<Í2FQ(Fw?y@=$*J`d׬4oǻCk\XriPV+E*CQ8q뫫t/<hdJVD֌5EJ*/FqMGc(Zh 'aB[U 8D!b5hpc༒$O~jn`&$rD6(Z wI#6xczZS3|,J cSb?-d\'DObDcpX1`T5tEe4"PUFup"HR;M X*HY:THl\*kgMgpL0aQ׋$|$=7:\'c籍JF`'[~BJNU9M`n|hBi D&O_;`وFl jgEW6Pm(21:O YTNvvvh6OO5Nb 0lxu?q݅.f [k>tNjoCZs-57 s=( ;4M!pdFDtMo tȫjIgIZޖQHS]ؔ( :eL;(+e=+$Ndnn5czM_$޽{=WەFAp8a=E]\XĨsuU_}&|\ЯPGG)-20@y1E4P2 B [[[2.ǾP'I"0 jl1Ue |/idI<(GHc,(ˈhV@{)9٠hzѠO[4FS}Wa)wi&kJhr8F,F㜣ĤqDgn,h+^1R#T+ƤIB#I$FE)e$1I'?wҸԨ:@tME;ek:"p؎cW%iyU },0`M)WfXLLG0 wv6s*>d6e(e 8𣛣Fɇv9ùWi~QnoOkGQU&Nϫ<}Fak LJ'm#jMd-AYoڀM K,<]ϕA  g̺mȌTJ)DP[[1D(QD'ӶV3z}̔~mNS,QՓOVWW~;w^޾~zzrye+TU/R~9_sE_7y?y~"ϭ/E+uCfQ?G u? <\K/[MB@40R1gYAE$Y zs< fF}q}Owo~b J*/"И^v/jE f1Csz%e$@H)*6 *$daH08>"Q5MLB( @H $^04--wUc% 8/__~|3cII [ 6 ]sG JP p;E" v&Qz'e>m"nGᶋ(so4<6ޗۗX,py%$S*!x8ApV#2lSL$lϿ( Յ{Cp)M(q\kF0DVPU!]W:HUU2D  @"KH4CZbVbڭPlZ gh>lM3:R)k.-pߢAGزvI ]!lXߟ6{bWhdIv{-f;bIKD%^v }V5x8[cxj]x04ƚrɊ -ݹA{Epz6ey1@bdX͚1j"R(Ccm"> p%Q@ǽQ5|8C9 JD|j7?[P  NZ)hQtB%vB1h%Pc4:$f$]M~pT#OBU*e(J`9B -]Qg4guaбaSh:}v\Bͨ|9LU e,k~!**/rpqߊ "D4DUcbf"M/E ʿ( ĜbV4$m5k],(I& iem#f9hNSr9XbmYID41$@#1D xPUPXBf" %a GLEDJm'f`YRtԽְg[$!FL N@v̟{+xA`M[_ga (kXwD4yMGtS =i`Y^]U 4ŏBv/pS߱xr|no4 ˊgA_K(*ӯ'DQ_\mͫ!Li m6)c$8yHLŨTvdNԅKh/ ϿtpPC!S6aLU Rr tD% r*e("vfGJN;$Is:0m6 DQdEAAYdƳmǛk xϷ.>XHsogr9EybX詻v1XӘ4U,`FM?6IVҪ"LJ+!+2֯[Y%}y<{̡|/B$Qaa!yahZyxϣ@؈˖aŊ4zgtB 9s"ۼ닩w1xU?eOu(E%e,i )SdfNR箮;(..󟣢򐛛˚0JJ…ctioW4 @Djmƚэ7xiR*,,ęg^~O)a#y!@\\z<ͳ[/ְk9Kc^ g2fyi1/Xg(m&Id=23 ,Yr\.,Ghrڮ+#υI<%Y^ֲ2N6ʰRdAxII ԍQRR4Ad24 bv㩧D"A8A@45yZX #"^z%.))&YVxIi)ʪ(9vڅ@¼`,F%Z`c.k;Ywydq!~Dž;VY%[hۮuή}kAvF_=0  }ht_6 -yʠy4O=pԷкhY1DO9\)APSiі!&CxҠ^O5~Y׿1“!LLL>3`ېJ6v;Ax<ChNeY( "R)HĂ Jh4J H!RilIQ4 X n#LniP$I@4e׋H$"Z 'm~!~ԲwsqR 1`.s Z(C8aP24""KRiRN-E/la&9\|Ǐf{f: -p\hqNΝ04<̒$qmm-N󣭭 D}}=B!(CAGtٳu nطowyX (DLD&|oD^/ϰwп&JmܐSI`SYʣ-OqvtO}Gu{U C6dV~[d-oXT}>l鲆9e ^)k4㣩p"Y4&"N|z4N>7;a̛e6ԠFn09B--P__MtY _#tqz'߇v PUBg b"B{ \|{>؃۷o _~n]PN 6?goFSAͲ#"YQ^jOzMkvkn4/՘4S\,Khz g!,gӘh)6dƿ <5y,BzeEF~A>SZFFG Ip$^Z\n}aʕڊBܾs`F՚*y&&'CFq3 { Q<G__v;܌e˖aw֭NQ$n~?7G<'N(&kzTN}38hbnY$4a>|LLL Hr;wr blHRHuX8l6\.l6N$H$0^/4M(t(z "D"Q!Il6۔nR|ƴfZ'4dZ7d4=ʫKO"g9&IL?,Yl!S:p fc9ՐJ2jLH뜚′ޟ O`3SZ <&|"^඲„eAJ7NvUAejMu./[OdhGu7osi [:A:i"++~ 5X\.#)DfFUe%EaI lPTU7 i~?@E fiC0hc&BSanc֟epeY %D!a=B]Иs׉3X` zNkNDӎ93ezdϧeiѶMx:;YOk#ќEY266m(PUs%zJ`cJH4%Yypܶ_ }183ʢ+UcZAC C}V"4'Z}s=dMHC4f `2Li *3',AX<񈞤,Ed/G,)NE֧DF}FY:0ÙI iJɊ"̲ti<X1'̹7:!xIi*lqQZcUSg[$w!La#J@(&2P"`ݎD2v/bV:-v8eԍ3cC#(..Bc[7֮\Bq483:v082o> D"q,[}(,,,F:o\χ$UU!"R)v8L&#.AܼB&? AUidFUU144Dv-[p8v7ذ~=_FZ.V=ꫯmٳXZZ f69 MSIUT$ iИx?FgCe˃Lx,M=fw~|^/.4cŊ$|>5]l&%FiΝOq5J%444K(s9e<1ڻgڑK===ML͎ ɓTRRB--vISU+)cII #nk M J훅jnTmmL*ZZZ䉓xGo*~?Pի "jjjx HcFi2rT*MSp`FĶmkOO~J_sH%3H "ȡW.X1ZnN:TWWd2Iŭ[ @DD'O^|y<Qg@FX30 ."93aʕ8|0կ|whdEr2ׯYN!/7WdYVf'TUE*3fCè;~CCC(+[d`+dE"+eēID#(9.q$Ihnqbn߾nuǏa6CU,S4W|`?߇(L&iZ} YQ1:6B /_ƙ3g_btD^J[lw4QF126knn paa!UUVijZvB_ R{l^{uqYS?[gehx*i*~a޷o?UTTpiroo/o" #J! EQ!+2Gal6\ok7G8q`ɒ%3p5:} l`j!Ȥ|00VX~駡 6oބ>Ɂ p\|6m7n@~~l41R)޵.zTU.TY0$VTX=(/_~^fXU*`LLƐH$;Fy=x'X$,0"2S} pذa=***rjxo{v550#}= EIq ;zK_G[xL&¬207']u]XpqQ"7B[ȩ% Z ws=3Ϡ"6o݂JŽ{uj!M3#_Wshr2&"EA*ysssi޽O~u crQQR3cdd bOZWpAA&Cbʶ鄪i,sP-4-ϦZN$V[e6C#A`Cq:H$zƩFD,)xn.v65wV5V9NHY',p8>ل VUq˗n#J. <"TA fk(26d2ɳ,qXn PU%I"MK[$Ibv8vS"`͖eDA`Ir2q"ffQ*b͖>IB"ٜ1M!)$ UUrXUUu?$I<44"FYOSMK$EDX46h`OA7 4x%qdm44JQ"&&rBDHd@(\i .,/U/*eO01>>Yllx2A8\"Fʘl.>Mf= jXbBڲ}7%z]mbPG"@22a(BD, Ν޽vp^H|{@4q!}+Be/*cx@0P__E6ӧ)//>`0HOׯʀE^[iOqg@D8<aڵg*(( C.\ׯfў={K7nD"A"fAFGGO>u먿֒#ӧO#!N0::J@vh?NHpyjnn5kО={f!Lҙ3gp ;vAz6oLΝѣGi˖-vM˗/'NիWQ]]M~:9N8q/_N(ڵkty""9rEgϒcǎ$I8|.rss!ׯQ^^O>^/}'tvY>N}lSEBm" ^3gڵko}? ׯ_rT!- 3 Am ֬Yׯcʕp:hmmťKׯ_Gyy9l6 yGop:())A$o>lݺn;+@DHWHDn;v \TTnnLNNݻwaݻnCnn.~_L& 1>>n>_[[C!??/ӘD,㮮.SO=EQсիWܹs\SSFZ?۷oG8]$ٳx =~E!JaXt)Ѐv =]ׯ$|>̹d|ߏX,x<FἼ<ա~wƷ-\rԐڵkt:沲2|t? IDAT2-[ ."͆}{Xv- _7oƍ9 Y!lY+3Ο?υݨc=˅F\r~x%%%,6l8jDo|7oBQܼyO</[ n깞̛7oʕ+qrK/Á$I\v ncpjj_WPTTNTWW̙3w Qp8p A#G?)w9ݻЃpݜzlذǎCUUDZn:l6 s088_L&~z?(xꩧl2HP__onQUU͛7#粲2$ ttt&:h X4}_Нeeey&lQ/k|22Ѓ~B~?PXXMӌݬăxMz횇˗ q foYyt3kZh4JYr044`0H6 ,C$ʲ,yltej5CMf"Q˛/͘@ @0Od2 ]4S3Z äV[;D#~-Z@s. D"ID 7Hn#llEQfͶkO]ZC5|^o>ߏ(uNwYL]Z# @$LLLf  JA‚ cZe@Dr!tBQs$)$"l6)erzl`F1r@UU30sqiX[haA+mdcΝbwTUő#GpQtuu??bphjj]va&?1|I?ǽ{pEtvvb֭hll(Btq>RGii)v܉na>|K.ŻヒX N'N>lڴ mmm8x q!3g p8f0 2sFd!mL~wΝ;@ z 555UVxa#H`͚5hjj~;;rp%455zڱc6l؀6 1 "|>~͛`f߿|?#DQ/^ĺuk@e߿7nmꫯ x :tĶm0<<{%%%166UVɓ8}4rsssN!''Ǵ^}UTTT׿5PWWh4tvvN{nGcc#hÆ {gw⡇[oe˖a׮]E{((//7T]scL5(L'-DZ[[/_Kô}vڲe S0x0aD"H$: +oL 4M#KO?4ƍI4:~8?778s \.IUUz衇0<fp f`]Jܸq}}}䡡!#ॗ^WULNN%K0<zhlldCMSUp\VVqڵk$i=d \.njj͛Û7o~7oža9ԩ^ EQL&wڵkv/Bm6$ l .]EEEu҂UV<ׇ;w$V^'Xd 011MӘq-~TTTp*T|w\H7x~.]µk uU#6n܈po߾Xf Ο?^v؁["OC +8 0߾}K.,08[ HT*dIf8F@!{A NYi24u{m!}r" '3Ya3t:fyiΙIdkvݴAol[CXp8 ICV{"'x<4>>n_}*v;[C9DQ4 I\.s\6! mp@ %JXerr[]&9YQna~N$daAB6}71l(MӸ QeYf3sR)3sB833d"_~94LD& ך%I"87l6  S.3&py ]EƉb (gT k8vY$37H̀v;ĘH bQn@t( ̀RQMP(NJ`kHMBDiDQ 0@ ""kW5M2NӐH( <)]}f+%~uQ |Ӈẗ́1zaݞ -d2d<`h!#i?bɸq?g9!"NYu}Fm1苒hz ZBm^qwAw24>/%36-5@MNN?$AիKo&V\VEoo/(UVV2N; ZZZ oVX{E0gO?ENN;"|qF2{8|0dYŋڵkOcڵtnf422bd-4ntB!tttƍpA*--~;x<3d@Ƌ"|;#`0ZZbL~'vir /]A… p q)Bҁx0qy455{!CŬ7yo&mܸAo-[XGmm-n7Μ9CTVVF~!dYF<ǩSb HQ$"˗qMҙ3g|rPYYw}˗/_TRRB]]]|f&1ºr ݾ}>#ґ#GhrrK.ݻaÆ)π[("\'||e||8rrrrOFRՉYOY*088`ll ظqIABii)***`p8eS5 ƍ*l6N8Nv7o㙡vοUf&. 6l޽b  bժU(((@QQI׹v}QӮ18ǏǡCPXX_Q__p8h4 [OB4ܼyWQSSA;v ΝCj֬Ycfȑ#`C& }}}H&H$xG!"---FH&Õ+W c޽(((@}}=֯_D"x< Hܹc4fИ<7o"77.] ݻرcɆ o[z衇~z@0Dcc#o EEE8{,]pM8qJsA(--ҥKQ[[J?زe ~ߠ^la+W^yŴ6n܈SNaºuӥP]]m:LW^ͺ"9s6lz~:\.TUŽ{80ëWb||.-| ^y tn!"M'vΝCMM4n `1<~fQ%(<7t3EphFA1 Bf-'((bxx~ n[Ilй W+iblx,6&q YOp.~-Y ⅼ,6y=`t3&x,t+c\:b1IT)6Xrknb\`:=cwQg=s|hd.̅ir2drNdґ,:[9m-ֽ`ImG,)d|6dJ"p-v0scηs3pp`rr (&PUUrϢ4nx<1Fd{N]XҁE1Qҹot&O|,BedYfIL638,IYn n bdp U=烪$vDQr,2H ]h~|[ @4h4 Iv JA#G 36uYt"LB$ӧt:Iw 7rid&ώ[r;]ᅬe˖ރiT^^O"d27 Yׅ+WЁ#Ν;"8pmmmiرeeexwOBNvbhjj­[~zX|9*;YBnnn~MWY7 E"nlln۷Q[[`0Hկ#A 4bϞ=~z~w@Dhkkþ}c7|7l@C}}=l6>t ~SGG33۷un!~p8B .`xv)Jގm۶qFz ҥKhiiAuu5B~_gsLNN'OĩSdzKᅬf444~߿x---Aٳ AUUUf_TQQ~K.G}6ܾ}xFδ9q *L"77X|93=V# Cy^ԀJhP̌'|w?Kbɒ%xgM[kxxn߾[ D(qx"`||۷o' 3,4UtmPcMJizxgPPP@<ɲatwwc˖-ꚖP2h۶mH$nk֬1dt:!&&&Յ#G`ٲeW˗/8% z饗`Յ-[PCCoߎ˗/p.^o~PU`>(^/F#A$zH$v;FGGQQQA@A Y~xPXX2pM@chh|)T*Y111UUԩSE'|k_31ϘN'9@ 7n'@{{;jjj}v0We nN@qq1FFFX:eN-o6hޠ ݸq}>~6R'͛Xd  +V0A.,,ns<7"QYY˖-㪪*@EE[vhkk3Q~FaӉ޺u+wtt7#//k֬vi]u҂A?ϓ$MM7P(8~8o۶ $! !Jq gds{{;oذ---zjTVVb۶mӃ>FO~aɒ%<99ye~7n:?RB^57x=FFF8J5ո,(//__n݊ BElٲqz"__c޽ `0dY˗chh.]f,_H=^Y r YwG'I3v,˙B9l $ cEQ( n'e"~F n>vM5!t0:"#hp-\T$[I$ffRY泺 NH^/0UUtN6,",ʲ,0s)66eY&ΑHn MRdSe SRYvE /h.&"4McEQfq,#f$"VU,3Dzk I2 0Nϒ[h~6EQ$g=}?̉m!fC~~`0v)]B83#6XVqf9ed0ZdMvXԐ1DQdqu\.I'9!l+g}ο$F7IeM~-c AwI56,UUt:m3}jfr׭˸n\@c>) +-\r ^UK;Hc>q A}B,,>N:=gˌJX˺om6YɨUUUEј(|.se!2& 'W恴0N]t!Ä/uBs\', /~ zGh޽I+Wĝ;wpIƮ]ܵ2wN+A35>Cݍ7n 77X,FtEjjjBUUTUUݻwӦM(JpI544PMM ݼyǎC0ѣGL&@~?}kº:jjjk"K0e:SqU03% :wa׮]vaI@C} OccctQTTTбc(LR{{;]rUUUf{}]Zv-=J.]2VnӧFtnI… ؈jڻw/) ܹst5Zf ^uڴi 7xlBuuuD"TTTdr ].ihh˩N"͆SNaʕ)H^J(((N:q% {."z{{t:0Y裏HgÇa٨===hhh5kfz)XQ^  IDATq>r  OeY a>6nfÇ֭[йw+CCCؿ?FFF*_IDߏ*wr iӦiBk`rYKw9(0PI=ٳPMPn޼nnn111QA{.y UUʼn'G/… ÈD"|]O:Np(Vs{}+V'aڵkQv ۗ44ng啱z>}֬Y`0-աzwQPP,cIӡ6 /^Djj*HC"++ F>-*~a o,RS+SHp)ַ1 @-$"ׯ\.L߯-o@X-t'i1k8̛7Ν?'Ol6cxx.\l˅?OADxgh"Fsʕ+7yWVCWW\OSJOOEssp6ѣG@^^.\":s ꐗ>*++Ѐ"K~ZRO*_5 ;ܼ|cc 1d.Hy؎-X,`0JE[𞰅1` >lzg%Y'c 9]{ [ q\FF0Gg<}jǗgT6hu%pzǸqA. /g6x^9$ oL& ”p8 FD,xxb>vgq%lC&iC .BV` )!!}>_?db 's2HByeVw%'IAy^\ Dj$l!=,uP% Zt:9!!EO-do!+,9E7'DۭuMMM̉y '''a0dB!@$Dx^t:H`vYF%l( F1'(Dg v5%lც8ᅬ`0gϢ===E/^D]]Bb˖-ׇ~:{,-[.G;ptJ8кcܾ}T[[ l455!//^h4'|M8z(q-߿ ܹs8q lHDa "5548 Iczr\زe L&%-/L6mʕ+I)x wށEII8S^^v Պ˗/?5k j͛QZZJ{E]]zlA;wD[[BݻrrrPrr2:I7oN8!so޼qqqo>\~V7xX,c8|0۷O҇~HH6m‚ 侕TFd ?9͛GX|9_"//nzWZ6DUUz=)KHH۷222m6`Ϟ=p8ho|? )0P^N8NtBDSSS7n}nHk4 Zf+Ӊ;w~?NS9N^t), sgalz9dι>LNNb,G8[b,vk׮`0qLMM+V@WW+Ԓ׭[Qgd9iԩSlVb _paa!H>`jj zW^A\\yЀףqqqF|{[(?1P]]vSSSt|r8N[1:: yyyݍrtvv" 㜔L2ᡡ!{hľ}7o:;;ѡ&"\YY)͘?>ٌܹ*c*oß&СC2D#Gb)11 GcǎQww7B(@N 1(o@EEJKK1|T]],Z vb|H4oB&JBss3jkkV+餜fBFu+RL% "vGP͛@7oޤ6ZΝ;H)R6555$IPzz:{9:~8yr:d4q%|{#M8qVZ%~7@zz:eeeQ[[-]REEEXf @OOSGG8q. p8#K23Sww7 RAA|> KW_ac=F444G "O$99&&&HѩSpMXn #11Xr% '5P($y<JJJ‚ o~ĪP@ [ `6 |>A Jt Xv0BC`_®I@,T6[("y||\t:-P gt&`9,)سd"-`0qqq411- ,-`0"-gF^@ ܦ`` B )ՌC8iX,2PKܣW 6ͤ!MZ܍f3|>t:2 b|33Ky,1.k:E33s(",<~zjg%"zE42#lTw6lgRgJL&L"JT '*>5P5%_lM9NM:VLF'/b 6SɅEVIoT7~m*Spn% 4adjq'!R]#Ryly cb TT۽a 5?SObާQAa0jz^%:]"_q~ndub3jor'+q|1ó<#Z9̏%v/:.bdAg ~O .o~ڽ{7y<BMM KB}}=`ى_]ewӧO7oF(ƍ3<^lݺضm[Ċ bttCqqqt:u eaΝQvdN( Y=922]vEŋo>aΝ466Ͽr ۷ʕ+8|0&''g͛7Q]]M(1==ÇӮ] s\rȑ#~:v܉!q-ڵk={^سg`߾}vzzzpqQ.lٲE{n߿_X8pp李!@8q7o1/_ƍؽ{7>03ף /^05447ޠhg|{9Si@GmKsG4MBT~GdBPk=x8[vgDv/YѾ'p|zʀ?>R T1sDk1(\s&2p{y/ lOo?]4)MMMcEVa fH7|>LOO+xjj PH8djDDl e2 [HghZYp>$ 9U0R[Xxi%SE iZjõvfa [HRLK [*d2-AƘ "u>Op"r  )+LFzl6z!ŝN'v 51l6p||<&&&\#Y=BKDۿyl߾(//lٲػw/d_fEh.)0T8=tömtz뭷oVXl۶ III#i&<2`0Ў;000A?y&ۇ 8pt[(LZ466BkP5tǮ] |t:nhh@ss3v;ylذ}̛7$OԄ˗x7@ss\/)EJKK?Gmm--`؝;w ?眜l۶MNLLpɓ'Q[[Kb2hooPVVшM6A… hiiAqq1cdffbp:܌|x̌)l޼7oٳg) ɓp8hii޽{pB裏t:1>>cǎd2W-B.\Sh^x^A犊 lZx ѧ~yы/H1l6VXA6l@ٚnh B>H [R׋gyЗ_~L&Zv-33>===x) yH:H>()) }}}SO'Cv>=t:>} p!$''H~lɓ')%%EQii)-_}Y5Ui"zv䴴48N~ٳg9==ϝ;k׮nmFU]YچdBkk+߸q3rBBq{{;9 rNNDTʂy桥sssR'&&rzz:$eGV9-- %tQv+w]^DFFaLLL'''srr20>>7n:BNf͆4`7nDNN~6܌W_}^/pʕvCbb"p86ż`[| GII KBr`08))oܸ=~t:x<ˍ[nL~tYf_^xz=F[v܉ .//紴4$%% oOIAv\c7DJJܗ*I-4 Wp_BDʁh4`t.Lsr%r4eJ>ACCt)h Er@ M$P+Jj5&Vz i$ӚN'l6l6dڣ-;_~`5%^EYBFP)9YESJkIp,3sA)V f3z_#"QP'wn<~sZAH@9eSBC[٪>IH#l ,l!r-K'ΈX:e*9JlMT+l*dž/[ZJjOl٦XWl&Pj0CH>:v Rj=R2jGi /poarJ*`X.\[na@MM p !//NOJyjx`ZQUUb9r`èA__Ɛ;vBYĉB Ç' &>})))Ph"+ $%%i*aju>||v+LMMԩSHOOǗ_~IVU'N@kk+-Zػw/222P]] ߏ˗/wo۶ 8z(  z\rEMII$̉ 8<,Y<.^H---())Ktزe -[:t˗/GOO100@YYYK/&If""={ׯ_Μ9#KfeeرcZZZ6q 54~?:u -Buu5ZZZ`4{nOe}<r8JKKE,ǐke9_>0jF` W^peQȂaƍ@aa!^p8brrcccX,(--Eff&23sFF<QUU^rBP:'X$hIDAT!RAiitlZݍp8Tnoo۷9-- D$2M @ TBbb"QXX& <==Z޷oxÆ hjjb x'`4 .Dcc#/]W\ᴴ4y Esrr2Ν;g}p!;w xѢE(((ܼySv߿XB! \Agg';wNȈLޱc z=%P|6 x<└.--E~~>f B38[wqz8u^}U Xv|xHڜ7nbKӱbiN8W\ oݺ6 ,< qFx^ l!n7 )?V+pETTTp:Xb022—.]A111J|rNCC```/$梪 %%%HKKUZn߾cccp\l0"DV9x _ w vltj`0-Zx0dXs>eP(|X6ݻQPPݻweeeŋc׮]~:g` 5*[ '֭[/eeeO!-- {űcǐ#G7n땼裏0<S&!9 f-Dqq1{=L&ףSSS㏑͛7c8ETٿ?l2O?r~avHnܸʰg=\03sN\v `{AvvkСCɓ'q[(@kk+V^_Wb/~ <8|0ك'x~ ޽̄`o\l۶ 鲷PHn۶ ^uuuhkkCaa!6mڄcӦMz8|0Ξ=˗;no ܹr ܽi}c 5pr駟Ɖ'̙3Xh`9992BB#A_tU}ѢEƳ>K---<$%%h4ڵk܌˗#==6 @sY,,_.],[ V}}}HNNىk">>FqI A:t#33S@uD$ ###dy'saX011RlyA|Czz:␑qڵk!oݺ{LЩS099IXj]x)))rPvߏ;wPII nܸJjkkhDCCF#hjjºu p8… kܾ}}}}x0==T偈d Ⲳ2bʕr3gyJKKՅ"(''?<9NN_۷N'֬Ylttt倻8t l6twwcjjJf{zꩧƍXxq G0$8.p8s ~i$\gϞŚ5kPYutQP6 oW_.\ׯ@GH0JdۑϣGF( ..c]`0hv4«WvBVViٲeΆ)rn߾!\|8~8JJJ022"F/_Ɵ"BNzz)11oRRRk׮())AAA֯_ [>ɓŋ_(((Mp!{Յar!// ?>mÁQ,Y&'',\P{<Kغu+|>pAajj +WĎ;㏣.]޽{QYY);c2Pqq1N' e˖!!!A8j^ZBl%K?"oi"33 ?2 R^)PU,H-|f7L:Z󛞞 .LQ`x$h 0yjF^:lZ\9ߣIfPG` %l0dgdp8,cH% Ad4a4eBQ_a*Ev RzjR!ʡPHWl4I`1u:Ν;r eZZZTMd|> NG~fYQȱP(H [ÉȾ 'vZs48鐚4Cl6)P\)))3bך [-!l3ѦY2o-DݔuT*qjx [(kXHSc0Uj*˯cፒPւUsH-DA3FEsTr5Xܨm~W# ,]8v mɒ%.+8oz۷/_NéSCuuutvvկj*l߾.5ZV|cǎʕ+')"aMSɔ*/bllv3^p!wvv";;F#geeO>)Cydd&WX~jG;N6 sii)X)cJJJdVYŏrRRt:vqYYоb"]v%DŽ8@/^ Nv\..//>ηnⲲ2℄^nnܸ .D?ҥKm|mxcòe__ TfD]rr2IB7|<r:-D( 55Uݦ4|zWI믿NIIIE! ?!j*]#)))?a6?1ZcYqpWpƙ@dEFQ7 ܥC2'! f3`=bf6LT4Vn,%ch8èߠjQב^ Kg :GËcs$NW]MCIsZgU\wd­Lz6QOcMcc#E8[U4 KthyJ`ڌҡDX4 ,GE*5%M jD>+bPgC+0!j{ CQ.WEt&(pTOՕQNJEpGjЂSeeDF1iE 'ejN+ bE儣(S+Veh+jGZ`3 5pV VX}_G '[ۆh~.|E=J%3!KZ] p؟J]94i1.+p{ePT xҘ \9rQ1hg AjP u-D~bhHk2)(zK7םKYd2VTQ,W3{*!\ zlhLT8E}Wd"6ͦ@f!D$C@UrG[1e5͙,)Wv{v9EFH]q>P|Q1w ugji-(b)6g1YãJlZs2EIC9.4ڕ4&_uP{ڹLBk4{Q٢b_2 Qu֊{{QgkRi9\4#L"Nz'Ų}QIj3xYYGݥbsex3eeωg.fΠcDΚX%B0CCCMIthHMKf6 0Ftkm_;,2hdՆCjXfle=ϡbvtfDws<3wB"|<\p`xxE HX.%﵃'\ _BbͶ|yfgԶ`BøKf`قP 3A>ḋ8N@N xʇsؔdDPUNݻ>묽_{ώ?W ?4qKU`($?UPM'er2dz րT0#BPW6`k:Y(뵰^4kLpo?[lˤDSK[g~6U| h)4C@=xD#*'FDVcgPUb!WLT >(@P:P q?;A(A{0xs9 EQ666ĈҲ<;f;<77Kݕv?E?8jK&@lJ^ ٕb,"13 aTUTNOy$xxʳO?^.?A91bsГBQ^?c䬣烪*YK#HE's`yy?9S @EEQJEA@Uq}8{OUUDQ5F+^l3;OH ;%@Y5'ؘ1MsX[LQLMY]]e0SU4M|½{}6q /{FAUU9ѐgrEI6Dk*>׶Қj33Tck|6opʄG cyrlZbkk˗/V]g0h4$MS㜢(%beccS+v"J⭟EŅSƈ$IJ&Dq,W7`LDlj//i'QE{ !*Z"ѐ$n<3 WU%I3yɧȇH#WQ 62C6~omX]Ҿ|Q}@v? #!@./PJ4ek+L$$Y Ę&UF6QAسZJ(25~#*ʲ'u~W#AxOPLG"DZGLc>:~cN415) R +Af#ZQ,&1Wk q|&)¢en6Pđe9ΕkF }|k7&7(6p&J4(>RY VY5v$0:+I˱?N>;"Fe\9mfMVN/#>ttss }m]=} 極lc4l">ܠܔTC~ExҜq/K[MAF@Pk,M][[;rކ6}\h9ZEʲqwf:S N>-: G붎#" *UW E %';Hd1DzpXAb#YgyUwoҙi;\%1ZPWX# vb-T[cѥ 82 < UW""1k#5* w`1' x@*N> ,C"MTQc?˥K1q3g[\eq)}s=) 74<ϗvei0OI]eeyz ӝ@6cL@GA41H+KCҌYc,~5oru.\y&UAo8I8*0ʨ{1E^zU' )!(|ǻ%5:l ~7^}mmC 'H\󸁘Fkx޽2Ya&^Y9W8;m߬ V|P4T(6$YtH#q51^`(V 8S2%ʏCp"W)ͦHUƹvgAdk z70e-2AvŨJP0d&+qC9,0|Wx|7?koaV?:)Fx}}i8,.ʿۿ7>ODRu1$x)f%CHHn-nݺ&WJ_>ȸ2D Qlqe|,ݒÛu |Y.=|=ݿ'ׯo;X^gyãHi&\YNKd3vr"Vڟ}2W`K=X#&V4"M U B^:U!>ē=ܺ%ˋTj9:45e1I vF<|e (8aV!$tWG:=UUq™c&1C*gt'A E80!' Eg/qeD7ySOs?{'ޚf8__=Μ k2~{\{}V3 gg_W>|⅏IT=ŘGMHv{C7x8mz*V!h#B!6Q6 e0~%݈koi8Ɣ2L8 60,JL  Kf1|KpHU9ldLs/ͭ[ѐ{,q'2QJ3kp}4dXr)JD5Fәp.SGDe5gZt ζ&{ߋ; v azʬa/ٚc Gv_,h$Qlę-i'^_׿v rѦ>ummH{&+{U]Gĥ.wFm4NtGkcٻp$wOnϋ& "MD5E*NPE#1Owďb-4ɾu,%x*P"yԚ1*b#u{ldwD{!H;GY+ƝJ`zjFuyM0nw_z*H@5s4Ry5Wd=Ρ$>l…3ds[4/qneMUE(*'AFQT)SS(⫱/NIIccD,u,K33N998*i5H[cƔe@]@2O-3x~oDw8tdZMYpӿ{7ƭ[Drh8)yW<4x*⛼F7j2|(F+BE޻ƛS[%GG9o7峿\#K_?#o| Tjqi O)8ԚΠp=EpeM vJE4T{XZJ=If1Fq"jS'wЈU,̍1S +"&'K3ʪda7BE2KK . N-f=acW㜊[⻽=!{qa^a%:J 열9Qsܻ(q9{BO$If_s`޻w޹5YbE(Q`ow'<4_;/#K E !(>hWT~CLc8ذ1x"[>* 1{:q[Keg&{YYyDN2C f:C";d{8zGlqʀ iR'.L#udL-K0HT*AAbHcmaBL0,8Tf1t VN!2֍us)QBmm'ߣ?0U>F*Ib(+O>¤1E${\ m R \%Iw{qs"j |~s1jq>UDM.:CĒ%Dqxx=dB-"asgk7e<=vYUabG/>@|6! Df㱌Ǯ~(> :`İPv TQ T>BDd 9HśG𕗁3yCw(\I܈qV5pk.^<%޻aL1PtX@Q*>"b^yS+/8V3fg-;;vr=/?>TnO07Xaeʕc4#LwǼr0l,C5rBY QHFj: ^DFhٔƈQ时}sҌF17ӭg斘jc}o⚫MlBo4$wcNwf@/ :ɒ;bF͸ {lâ*cw-kGGӚ3B:q;f{D b }Ec}NZ8Ʉ J'8):Jm$U.:E/ϯ̱;ܲqiy>S):C 8,!8(ΐbs7S7lm4)"65 Cx aTˉbԩy>Un01B-.  nJwF6JY~2@Dvl*S^C /9创 &%q#kr2EiX#=i4 plG$k h9\0FIXZr*e6`0ʩDDCIB) /哟285 pPR0ff˚j"y4Fv6$FABiٻk~2SQ,b܈O<;+!lqhQGGzeEښU$ 2.JZYD"b$]N& ;ʊuaWx_xDqZ7D(s+'_Dn߱$bG;wI(bnቭX|,Irgy>oo-&~@'(ˌ[MR:Y&9w9<,.lL8 Y'U ^" gb-y.،jl.( Cϝƍ ^yͶPƒc{(cﹴ<ͣ eƻid{Gm' Ų3"&ׯq yf;-:[%b j x/Uz2GD5RLKʜV< $ B>\`Ч҈#NM3.+{}6Q>«n1IFZѐgl4oKH停"GÉ CDpZ e uA{Wzot{Dי$}%ƶөKa$iԣ\eV Ū);GS9K7Jy扠oݏa02סu!*bh4ioWT4RP~ d?X׏-rB{#x>_:;#ܼJ՗\rQb 96 3ҙ|!qRѐi*=[ tP q<uQœt=YiUI7p@Uj55 RÞUifp0K<4MX:ݼoy9ش&̝ܼt.O|Ez#щVJD..'eUGĺPܯJu@ k^ժ:W9QIH㔿x1KS)D^sNdXV [*%6o&fQrRAlDw Y6`aqG2ŬTۍ,bΖr(P,Ƀ$r " 'T3QDi$yÜi}åՖ<|~O~*Դd>0",w,iDq ETW(B`AUv*,ӃT2QSF$#=6~U o|M7o_zek-I N"iT5BDt&B#Jsxs-d%2H|$#B֫zptF jIq 8 eE I9uۻwY<0  زK`G#\ͺWR c-;{#PCh_iK4 "J (htR06f8;xU% )R#y*_O9ŏ?UELTfifEd K_1lQ 9nvJ,4A1>3~/ɷWn6RCQ_ģp &7nQ kO3O.2N G8͇ܾ7dm=Sr[xǘfdgL8?d+2,(Lc^'mZȲ¹sQ4SX?377{5+qaoD݀4= t}m?E1wbC˜U%!{&Mp^dٙ޷s&}f)_զMIi$ 9BjFh$ DriDAj0MfErio=>Kq ל8qvDZ׿&\T Ā! qSɣ #66hRHftmh2Ҕd C;`q 1%~ l$|oW>FK:M=~yoL@A{wi,.-K@sv7,%2'lޟH/EFث+ܹxkdiCTC5QJVZjH޳j^jEwp;eh녹yZXXFXl6Yt%(%(,rXǽ}^pQ_mM9%:R ]5EĢ>a_n<O07PF5/ eѬ,,Fۋ,vew5 ${5f; T/+G$m[ás\_o"jMX ,}d#/V:R!=V=#giJ+|q$l?NJ♤9gŠa%9eI ,p' f*ut2lQUgW> 9Fl1h2cOo0kYjvy[|sW;'h0Tireg+{x,6pNg|tAE渿1dn1֋>J9i6#'K"75Ng~mYJ't7w4zY~>Bog'h{eGل\`-G xV]) ^x 4HaK( (r)gP31hWr#$d󣜕KB)(}t6m#"bȝ{σ}AK ! (awW]beMfo~HWgcCZsՀg UCA!KKc7G3u3P)2-Ꙝlt٣$kh7MɿDeN-FJ낟w3VV^kJRb{[NJSq(d,$CCx! ѐ[ZkB;uA%5KװzFEb`W2ei6+EKCxZrr\_9\()N#[` z]1r̹W6' ?@eGuiJY2{&b$KyԕxWК)5]UCG2=tGjJZdf+yQ''V9jĒe9bl%Ȋ-lKHY("q}THP0Pwhb3LRlD$e圡[ d(YA!aAa$Jwy%p 5T%#TCë xTFaTD͐U]g{qIX<ʪ92)V4kM^$O=wKlaK&aT{Uw`i (8q|X\ҚDg~b\LMiRcx0S:U%NaTJYczD8Gz g.&,/J:$$Iz$*9}ն@F7RaZHdDKymVs:{9ųc"EtG_ tn&])iDS6EN2Ω)uc!;&#KʠFưTY8)DH`SDt,0o!jQ]_p4W5%+ [DNv}l;b2B8P3e!C}jf*v;e9Uݭ"@QA@N>48jPBMV˜!9/Rd"7*U9Z̖HURD|MUDQ`8p\?TkӨA3nRUZ UZek^88 9IF= A`I<:dD\Aёxh`"=xiQKQx)e77 PEɲ)& $ l!شTp^9*Yo眻d0 YN#e2NjmI}ƻweH I8Yѽ:b̽$S WI]+ɇmFp]vQ$+rCCÍ!lL$  %&XPɋL\:rU&M"EQS|e=)}Q_ B}t#<}&Z4ɪ!\h#g21Z44'^EJ`#FUJ FtV;L>ȑq`LV=eT>mNԜg1bw$!b98捐xl4O+_\''i7 0 $o_v#$yZbbe٤G5޳y8dcoVfd@+Lo @{γXy1BqH0cka艂R-6U٪IGe5ecr#u(ŔmJLPrVUi=e&=z*] )hS-{I27_9DžL/r˭Kmihq Q(3YVO]1S%x1gEQnWģGL&0eZji }Ӽ3} IDAT+,ys#n({m>y S|ʌ!?z!˿78?O2QEᱡ`T*JGJ%GS[R {][$iܕt4c/}f7da>=\^dN}Ө'gi1v*s킫kzIR?׈Q\?7=( o#2`PP0~-J3+v GƑUPṪʌxР.P쪉Inl<^~ cX߳X1wztA,HH8phPhۑJ_kTL$;ϊ52oDiCO6BiJ򽷟| +q[Mlp*3(eFDž%2F2r/;N)ﴈ1:S#~1)zxyW6K/7وcH Y f^'bUtslVYYS21W A8DTh sפD&#Zcz1iW"G&@ʉPe`EdyHIQ`+6 ZƲ?p}N!rD) IὗpK^"d9EjWpIb8m]&u*"}W#.I2J ✓lr#U%Ä~_BY!%IQc=~̴v^4S-W.Q"Dv)a.iD a9,/c$Hkh`LTU A)5}DRXQr"k1`lYYֳӿkhZC&BhKx'AuTL;Malwp@ˠJ^ cc5;ћd VXjvMHZq|Ӊ;@ZQDGSk",QP]gu|LX! , irGop8au|_Xnz )i'?cLH=o،1Sh^Uc $  Hbd${8i'"׈VVhBXdWVu: $p. brL>ϸzq5 a@ C.&˘Q3ŌhQ Ʃ\hF8+(Tňhps~z` DŻR *RK<oK-8a6탬"Km#&9iXT=WM#LgS2Ap. |]Z$AI+\EXX!/ z_: 6KX r2%m3AU1~ɲe6|Tb9V^`)bLmpE>N=<:gJ9gFIi?ѵԏz+Fݧ8x ` 0EIo9+eC϶=zDG!O<Qx tSeZZwNj9<4M7ʃĄvY"Pg֝Hǫa{KqU^Y {J`-kZS|={k9yORJ,c"@N۴[ênWFky+41J F>}<5c/(ff;>x^ y2ЊB;RU c.ua>w)_/+  ܁[ γlI6+2So[))IԯVrPǒ_u=Eݳxa) (&0Y+,쩲1[=|f T3<mDwJʌHjͳU/Z5(FǬG3Lْ)4f{FHLqtj/.7_չH#WB[Fr$ rԣ CUʑ23l1'Ω^j"FkNұs~}czgg^}y*(#:G FUU?zo{ZL HSW/K:%šj- ڇzvH͠Ytg,.,He {{b°fg2ysr0^HP*󈈗c\#ҀDQ$֖2Ryóc^eވ(.e?oϽ^.8M}8(ϔT|d"g/>FO]}qĥF& II.4y![r4dΘOG4ą\g<^uT捰+LϢG?/Z8z|DgdZX`ㅗ^gqye!AffaN?/'j`rɳfqa"NEOR-vbXMsiVC3}|{.v󩪧*>v_Os7UGMRxv:Ms| |x_^1ZW1*NKqˡep)BgkycUv(Ch_wzvFMu:M{Lɣ{uS%E"P~^2=@"v+Xk9wBHyCr9YGie2a YAT.vvR`q^"=UwM %ꫜ hccSeO-DP >*'1"QAud|~So'BΟ_g2fYe-;7B] ̔Q"&L٢(ÀEVW`{О[8$i *WW"s!anÐ4Iӕb Yc f\>q}h*zpO(v1qĦ ع#iq<+­PcUyZ{ZkW8a ~e*ҊTZnpPObe㧆W_a 1goՠ޳M;_? b?-ŗ&f]6w=be碐ԳTd@Rc&qyhAM JTZUP[򌇅JKכ 4W*,2&O$2%E >$jR-YR^tjxQﻼ̠?Wse5

πqX9iwlon3q^n6ݢ4H&P cYX]B7$=8A*_qey啗X^]!Ms>yJfEDo3?d~+e_Ko)b !*vŅ.EYc9pX7AlˠՔ>y?oEy-ímy&:>@,vfZ5r%4 $ $+;Fi\yNVUޕ d؆\kB/p[YZZͭ-]Zo|=eM]& 49ɬі:h'^z^~A^~Em4ګn{6[-7H__es{WvGw=Xn&k\jC)Ty7$e<@htwǃ\~Mۭci~.(5̵eqs-|]ϭ,p~eA2F`u}Yk_x@A]<_y^jdlO>|o-wY8<{h6`luu˂3ʑj T'ۃ=0 4h4rn}?fC={F?b2 C>{w-!IS?z"yܔ~@bC\~i[Y&꽪zzksU~~3'"h܈OFd@ yQH3 iԺFi *.Raa鷉W-Y#w@K!siVc;}tWvwtyi4e8 s27v%A ;-*SJP?h&4[DԒ&Tu)e"HFYa@( u;;QaS^"bzuN$Q_W(xQB8R #}ѭmYB('dR!viY̹2O$ [[jy=_ի CHP_=Je``J!]kdٖ,>px )dv<ާQ\Š?ĵ[lתʖ!\᱁t NaE/+ r+J]5+ (A+\|].3"&];lj¨?Dao>%ycjbWl`߫t^ FA=ȔP*FP+e7p*U/Pj 4*e `o(Ȳ UBSfb˲F\[}YHLW8H+k_=h#B:ߪ 9-1RL+M XuJbX H(~ sy C s!K-,#,}2f 4zZ&A`YZZ*P(JQNyMMQ¹"1!c"B2lD(HY58f%IP_smN8ɲ`:yg=??G`~aR#ЗxN"ϙjQUf#*u)\)i,97FA,,,v$i:*\yY40\-@4+I^yuZ#\q? )"#ͲLZjUDZ}DƂzͳ"DD4&Y&a*@^cyJ$ ^4 5e N8EDtggf)QNjP\Qjܹuq%sN1eǫJᜂl68L@9i1F:bss]$5"<kǣ.tE# yK2h`-Ru6Ǜy.-.Xk5R$Q#e #QMaiiIX0d2yW,>5"qkQH+"dyyQ>tV cf~vE.y}6@_/^`80X\\G?׮^#n\8V~C3_feyL/,o]ƫrlxɲ Sn[ɟ {ЎIDAT59{?Ch|K_VEUYh6O;7Gm+~/|t:??&$ <~fK/ȹsp3 h9'qsy W w~͛7p/"/^$>9/o!MS°_|U%RxW@/*BY/4MxY\XW_(y!?ٳMDgg9wy5`H3O!Qp=t"nݬj'^Sς#Tk O?.Y;*arxp/|Ui=|GrƍSd&AHg<SYcǶZm ȳd2 9Tkמ;_λY^^a4MY;sp}>/\dqq(HtZrD,VId#0`ܹ7^ Z&vdBQL&b/(0֖-6 G2Ivϟg8{XfvM?gܺukz=j.2$I2[}+NwcKw, yIi$cL!(T+++F. ,(FٶT֎z$ fzِ>vڈ90<%Y!EQ(9+++%)}ݠ̅O }TM=QhdZrXQAPE阂 ^wnZ"[j都L'բNS?KE4ddSTA|բ⨖c U {9}ZἈl6򛷳,x " VK4Sc YmҌF!ATx3ƨp4F)o,XUiqwPh/s;4 /i[%%V1NkGwI DQ/ $Mܽ{kvvv*7oޜZ?=/'^>nb{w0}6_rq /@Qo3Lt:ܸqe}͛7Nu:=޽sNh4.sy?{vCVVVy;Z-XYY{…z=^_Ǐt: ^{5*o}^W_}۷ᐭ-~~m8sDQh4bqqnܼ;u>zKKK|ҧid/ԚԬT$Ix;CgDQYUݦf)zMep8 MSܨ|~;o1ɄZ]vlRA9/k-Ʉ;wL&ﳰtc{{6Ǐ3 988 }!I0h4ﳳC#ÇL&c,lN$IH ieayOףﳷW+Ǐ3LJwrKvwO~~O%Rs@Wܹs<}pHL>S/+.I3?Fs;˫kSo~RY~1RUIӔFq'̬l6'Ork|{zfW<+I鵪V2SrPg{= 1[ur N^Yǟ#|aӧOΝ;bʿʕ+vOUc{qPͦN&nܸ!w0z5DD666ÇxW^w}EznyW%c-a@=z{^*EQjHz}z-Y\\ԚEyx p8䭷ޒ7|So߾x<(tqqUoܽ{W^|Eu떼K>#i6ZC$tWywI,PtUWwsӡ(֨1Yo~t]g?hll`vv$Ij499f) CJp}bFGGaMLLpF,s$IBX:u]eaH6)J!dY|>}hFb1AL&\.GRofau]t]dYRUU ~$Id6TUEshEq# Xc5wJu]?pϳ@!|#;y'ea1p]$Ib|0eY>T4\Qd2LUUt-,BKu]fY4MzLӄɱj c*K"fYDEiKXI$00 a¢{M4 RVci"8tPUU|}!BM.UUx&UxJ;w|TA,^[S?EkV5 #RXDh4qMr]w ܹQm}*h{{bte8MZ[[au=}S@qeȲ,$U[[[!ѣG477> v,>U*,//meuuJ߿/2:077GoSkbyyj>cPрeYަElllRC2 A7ߤqeYA411z}}6t]O?EXTUj5*˘ ;' }ǔN.,"`6\"Wbtti yXĕ+Wh"> ju=.NT|߇$Ұ^˲DNk0 hvд3|(S `A0 @HŽEt:͒$)#r sV-^((l ayq؅&KyxQ$Sp'! CLj`, ǟT* \NnG`p E0 OÈum*S%sV=b}wDg2V*I>&b(xQd2t:@Qxzh4EReYV[[[W^ (bZbmmMRO>rgϞq>T*V^uܽ{v~cvv \Ç122XnEu\p;;;*l[j ^vT*j^{ bbeGAIq-<LF,Vy0:*t]GZa=$wdYF 0557n յ9jZ-TUz=ܼyDg\.~˲P,WɽMNN Q.(@a"F.RVKʲ,~˸(t)K yS;"VA(Y85"k6H0HrpzPÑDǀ_AP}&y(l.N4MT?O#U➛(uVKpblETUU\"7~j1}$d1(B6=<=ɓ [qǟk4M$ɲ,|%;Y ,0 CR>&f\nhRv]^|%AE9L&C^'DZ`:>rr JAUUZ- ۶9ooo#dY2<ةGHQf&t]Zfgg8  |t:{=y򄙦VE/KNx[[[ y&L SDD," O(onccFYӁ,y{뭷``/~AY^G&ކ(߿]immz=\r^}U s7xV;w,,N#ϓݻ ۷N'A|`9&&&(tJCQ?4>>AEd6[ZZ:kwݸq%D*:3F\q)\&l\u(A"|fG^JDK.A4eˇDT^fggf {)ݻGwG}vMb1.Q˗g}T*Ec .\[n?O<?MӤm^G$}J%e^u_jx ǏeY.677lddoߦn{=K###,Jٳg!5 @DhC@OkN__3LD ZtN1!:$)9YJΘmpJIV#~L/^4~˚fFy[Ч}?'୼߼_%K"Kgy;EO?dd??_Bħ6T6Ev޾qD|~N2Ǻə_K  $/1 L}B|c48fa&cD6f 'l5tEXtCommentCreated with GIMPW IDATxyxu';` wDjy6ʦ%9dٱđlyIlˌ#K&#G%)HQ"RWXH  4kU ?Fwխ{o:s??y-[ZM9_aϞ4m 0k`["/4sYkAs*Q=h0 eN&_ko(Y!p$(8XQGiA:P"^RZyLN98Y%qxS H zKt v4Hc4D8 CB@"<BqZɤ=Ǧy A MFnCg;(04Ys(5|@@D?aRz%($8uuC/ % h2hl"'<~'E+ H(B8ךv8xфhc:P ,PR t ɈDCX. ``"$8'fs!0˜V%T|5$]9\L`a|jA7=~?}HrAqݦ,iҸ"2Adb"Q(E`AHI&"65Q*$XQTr8'✞LjJ-f1\s9]Eh*bژϡy@0XٹM E0- $@t=5SVX214Mx";^EqQ1K(dDIG3t 7@UUTVZP(DW_}uM-%GCZ9.r]N7x#8rrrHUh:O}b=v"-=|T /oCc(23'I9}x\%/aɒ%Ptrhh'C! GQaQ*p 0;w(N9<$m6!_+^ 0.A 8Az] f )`3S,ǪUPZVh$rR `UUu#ӹsE@~ S!Fp8Z54h;؎{BUT8N}~ܜ\8Rzt6/`2,eb,־|%iyb@b0Yw^Yqf;S"B G~~JPS7piD"A)HUU^؈*zo~n H$Bj+V`xd6l͛F*333b|,t酂2kҜ/0:|iks] Hƣ8d̙O( X4j:ybb@.Ak6>_b? \^l0dj,ٞ Xq$SA@hbu ,87\v.|( -r_ybEy$ 8g$ D`McQHCE}.6 !&&HPgf8GX$I$IbrI$035$xDQ$t:i$ɲIFrAQ(:)\nq039N03%I\.bQ0nDRN-Q<.i x< B>I\IGby(Sq^Ȳf&A0h%>(@)Rxiz*2%d J!%8t0|>:IՅaD":r|>&B!455tGOo/y<;׍={x練'GٳgADؿ?$I={DֆSp:z?Eg,"oR B3eO$j'2'|A`/X!'K}NC$d\'Վ`y`-s,y``q` f#s.xϾ*<7|nζP_7:[&]ƉM8ԌȲZ .М4 >=عs'쳿áC{<|Y>|-Z曻DPt)y>uCCx쳿KD$ O? 088g}gΞEYiy8p{~}t?˗BVF\+sf#6i)JY b`d!\nήfzT5m91 聭B(=d֣2I3ƋXz y::`uA3)WGg'򋊱o;H(J>@hkkCɓ]0)1J$~+WD"=X4\{ |s7' , ↆqUU%?S}#a*' &e^< d|'|7 ,KUsasEIb`[U(I^ RӅF>b䬥XVH3hYWl_>cY(oib'TEl犢HbKY",r6Bb4\D-brO (J13r!LtPNӐ$ ,#Hp0bv@/F){U,F{sQde$u${`l;_{َf"s;82#ts͌q:8v88wyMMMeo00{Ç~ ۿ;,CUUBMWH Ռ~rd8`|wFf ͅ`ΚG# d:^,JCv@A}}aȲ zzPSP(Wѣr45 *@Dϱϩ-].L'j*֖a k?05@"<ĉAYSaˇ,#ԐB2!/ϝx=&R,>(_݃?{~VBeU%>#|G׹s$mJ̋u vtL/j%Kxv~Sؽ,FFf׿>;ϰj|p/&'clqzYGs,8-aYX(N)x dz^{v8qN_=>{vy(75 cpp=8~|qFefQ$~/̯v&"ףqJTU/Ic`̲C'tR_w|g;Lai\z<" V>a+Di<HP:ؔguq&8(f88sdhrs] B 렪㭷:I|,}*bI %YlB=gtfv.b!҆/e_ 5Y2{f9ص wNGחڵ%$P]}}az?/܎ }w#K9W˸N"5kVիL& <@H=Ǣ'AU)o%$;0MMNBEff}7bS s>r8 @N uBzdƣMx?5ϝuwO1KJx560xVhaG?ַ? ף~?-_bd'yv9!+Tc& 4>d1ʥnt Ufv5>>>TUUAe!Ɓ6nzMik I"2I 7$3&&׉O|7X p:TVVk7^o_%I]64 k3 O<ͰLpo (..Ɖ'QVZi#>3=D"j0k̙شiI$ /.]j&7nB4K/qAhXcǎᓟL°LGMQ& ۱)͗yIQD ghYlGMpa)R0'f.,m x c@E]/ Ja\j &iZg?igFu2a@6EQ  pPnNa&1B<bB!(:UEVU!b>mp-()){z+n.(\fIt4*3otiyfׂ,]jޮ3βųvy~?6l؀BEo sDz~$iڋr퐉/B}RT]] MӸ$_d2`3)g.;d5R䚂4McIDQ$mG XQ$ 9,iƊ/p8Rkqq*++9a֛FK,͛!k̺aw-F.7:Ol]cȼ#34o v[~.~ꮷعQUE|9c$p4Sg_d \105<,p}I2JD 3338z(/_vd5^ 6!Y*`sr_k-KV,YF # b,A׹s\Q^ʊ Lì( A\.<ŝw܁>ſpuc=?/gŗ|/ k8cb\ڜɞ~ctn5p)^…4Gh"cx'O(Xfb)w8L^ફFG^/!Dr%>n2La{ >+; v2Tߏױvil =,yKfR~ 475<DKK+GŇ~@z!=[ QLx<;oGaA>4MŽKDiY)N65֭_ _~*˘<㖩H;imDٻҫ(3z2g|l EYS=z*..R$ʁGhԔIn~Y IDATº 60nX&:b1׿};<ˌ0V|:8N:u\(%A s!-b+( ̙3DgJ99A| MSQQYAkVFC}=+DgWr *|y-4MH$NQJIE‡~ʪ*ڽ{7*+S>hoox[p.YC8DPt8ѣ8vW$K[bppjk H$χq ̠TUU*-)Aw 󡤤zzz8??ߒ/fȀfW)pNDҞn65xϗKUHV333FcccF"{f)fZqJtއeFq9}wߝL8q $a1 hksCUe|k φ[4sj?&Qĺup1[nAlBsV9+ٳg>'xX ǎㅦxGqםw3p8H BGG',YۍO~;H&:;:xlb(,*8n6xUD^n.QOx\OogLJ,(&eCYIp[iUOYІg ll,qL&j31j+ӯq͟5_ {KJXxx׾͛Sp&YCgg'75T3u@ӆxllqnmooɓM|Ia[7oDžL^=766ɓ湖6IV. )˹,C=.77CKK+ss).((^9O`v| Sav\|lGQe,2 A$ayf&)> E|L&|s_63jP6Zk_fClQE;˪ mh7HEA?1ʀmqtuuЊ \G"xe,mxjjjBYk F?\-ZP^QEMkXƟV(f$ @%qhij` cb1EQ ˲Gt:Mt"ڻw/z*(juP){2[rIl,DvL#= Q6`gE酓~ȈD7s0!EQZ#76mpոRk]~~>$cǎ! {fK\g݁ Bqq\ʒ#2ڠj I"joG$emC4tx >d%I"*s,"ZZZPyy)wvb47ڵkى`0Յ"8ND<$$fA2e4]9rJeҐtVDf)n [i\PP@R*$j"<0s8577E]]Y) D={KEE%kq֭C4EKK PEE̶;vr3sII ڐg#3c:N<NByYFFFQT\aw}ؽgqx~gpak;q]wbQ^^UU\7/H$(Q&~G_>&P$ӧ;'N@*//Ǯ]8 biR|Mf)]ؚ؎ #$Ir2.X\ Os`&2( X"p βjB!;v ˗/Guu5V7%Oi(k@ZraժUp\8vTU%;Zc *ٝu]Q}}=N>MV8"4G2 IkH$|xDN0H}}4D(DKaƍH$HSU{! ;Np=:DWsMW\G`!''χ@:{,CQBg*C~8\uUXRUE}}p܆iΰ.[L&e:R )% Rb6PbCž3gΠӨSj׾hZGd"BWWTU5Q ?%ux)g?KY-;(((ǹƈ$"1R@iiB 5쒌$J9rr__?jjjPUUF}6ffl߾rssݍ^n r\wu|dEߟCnF444p @[{;"9i^n=6n܈$WBUUN&fdkbQ `f`inUP𫥢E9NF2:0>>N,ac.O~I،Z4)!77`fpHjW@_*1V`,f׮]s^^޼,|6Z+8e Dm$BiuBeLO!;pbzzeeez Is2*Luҥb J&  ۷߁ёaȲLׯ3gjD"x<ȒD,\ H$z!2+Bx& TfdGg*\qU{%3axx q",-6;QXX::;e. x i|=dg3yl9HbDDE~~~qtH333GSO?/ۀ[o$qzhCDKz}400AzNϜƾСC8s49N9zG?Ol`,wC %ȶT '~l[o>zT"»2 Ͳ0TUEaa᬴W! pY4-7[ -4cX'NH19I)za!FFFPZZ:gϖ`$kxEC(.. Zf rsry߾wpO݊AUmۧp1tw ܲfxI@QgXz LC|df0h4ʲ,t"#̴iD"x}~D#3H$9EH¹g?EEՁ@Gٳ:k7y 3b3 #&Ed9.<>6J@,aK_UUE4_Wp8HevSKK Q ##dE"@pHQVVFI%IXZ]MO=ɲL= !7'AG׿5]v\~=:Ab}qW_7^K.ok{9k(-+ůkHKRkk+^~ڰa=ˣ<8N'?z?Ғˣ_yǏG2ҪURqԤ  !t[{(q -f IBTd ),6=Gز%Çw,6)UI9BY}idY G45ah4 χY6N6xbfslzߟ1_wl!Ӊyxe:[nي^&PXX¢b;׍{9*,*[{j!;PSO_1$ **Is|b(z{{QVVWl3gxǫҝw܁;vصsdu \qF cۧnO~aIu5P$ ֢ o>^{ no(Wիlڴ }ql߾gv XK\_0dqN;$J@Ӏ#G'&aBSs{;q'eFt )MMM1SBee%WWW%K+V@ Ǐ7vz0iA eII FGGMWIXnyov2YVF=/{/\]]{{^v8ܸr%z]QQbĉM/WlDn^Ag2YJN>|eeeر?% AYeg7[oqJ_+6G$~/+;^AMM ~iե|QP-X|9N,_^˚pbjj N&\X`pOwgΞAj_^k~|>8O>9F2I2I(2H(5 ܕu')]khzBoGÐor\ p,|w oEIǏڵkٞbF~~>^MJi$2_16+Q941N(7}hhI'qOOI4e UMv$5MjvEGG ܜ%HHg^BUUWX!IXED"t:pbff333g 噙p8@ @H9994W0rrr*E"F@Ltt|>yLGu݀e{dI9y;mDDDB!B(.23j ̻43Syy9Hճd;e!k?JKK1>>M ˌPwee%z{{G,9+oπ:8ڵ$v܅޳4MCww7JJJ 2dY&H5h`p`0wA{^}Ub1:сND$Id8G^.$IB  A |>8N っ@ UUv(p8FbG:arrreWDKKˇt'/28ai򟭿Y8H$> ^8.Gg33rssADdu#8emY15Yy2 e Z*Vz \s5ǰg^MU8D"" \e6M^088[oFgW'FGGQXXHn x }}pݩ{EEf58oEiٲ)wR$ {#B&''M>8QM#}>\0g; {G 8Is6UP+VŅ"P 'E EdU%+!4HvꫯFEEIFo}|^/ 1== UOWp:ex'ގn0>1oe`χ󘞞Fuu5TUekmKyL2($k Zl jHf+ӕ)-U1`Fص MMM|AG\9 kɢC3?:(n%YTTQ̷BJž طԡ0P (--$I3Dp8fS~~>E13,1ADXleee(+-E,$I&nEaa!dY3$K$l#{& YQ)bAӣLE4%(c`#歧O fi,ΌƏ7ə+ϕpanI璒 e}xttt.z5Ov.>Y2L Ӂt=;$o%9ݟmnQSztLJ'5_z>X4ўڬcҢ`R^af#RU*++襗^\#P<@hb`%ISN9M~bR7* p8rmU>1**.::zrVDiY)]yՕ@nͣP5,O6|jc,ڐzB>vC0!Cؠ3{1>k@j~x-AR$Ib#1 [<;aJ?l\ —$^g ~+Hd2ACf Yk̘D1Igq]lug}"߿~\_YӕUpŸ>}hkköm刺70==~<˲LHdtn ▭[qqD#Q;‹/櫮]h/|0766"LLdXj)kMSr". ʰy匄s'¬=1/]}"o~P[>BԈ]3' IDATfLMM"twMM)t%f$'땬R?hXU1y(H'GqOƺEny?qgr%Z㒹,;cx<`bY#El /lKjITVc">%ޒ!Ӑ`f$= U~<5ºuyƕWmD<UUzjx^%KkkUw8ecm fo,( Oq ' ċ<\@˖-999e(4g0s(r]]\5h8L fyV4S}" {^?o]?ƍ7ހILNNUW] d Bػw/o߾z8/7҅d۷$j vN$_}5F &U,KU_mdf 5|kW`z(fuQD1hmoM7݈#G't9EQ084_WИq=Q$I'Ne\TXQQp]]]h\وNcq/[oEQկ~ɴxgL,Zȟ2i2f[1#pQާni @UU9عG$ "xJJN[=n]jK8+ $@d.$RK,ْ'vKL8dFı+qEb[Q%ˢDHH Alݍ^͏Zj@W}ݫv#gNEn]ݲ0͆رuz.Ͳ`n?<dlexK1v|ޛyfz֭E__B0X,gyC A"d "eYTJFoo/^ū|şg/G^:½ GI33el܊`0", 3ВE%CpX$kg:Ol4Ƌ مTr1&'b 8 ۷ꏫ~I%@e@&2Y$Ib11xQGiWb 2cl%԰NfA_>m0(RL&}}i+ lYq aƲ>>^JJ @cc@E4ZLJ08hd{\Wg0(i&<::JBxjr -{p%F8u@Hpi$E`SLChkkC2}ݫsEO*qoEG)\;rX 011N.GA±cc@,Fh/A4;;+iѣ="r ߀(* U;N vZYGGG uGQ v]*RAҲ& 9dћoڅa&zW(/7EEصkicRRUw8!P(Dyyy "l(irbSSo~oR{{;1{2atvv"ΡvV圚@QTǯ~Wqa0zb0ɅdJnpL,cJ}O׉Xl .,XQyp4 ? ̀dakz+y\ZBmm5={րE0;edir?67{`c?ONK(9Q|[ɟ IV|~ve֭7uhxxkjj(Z^fv3s GŲ9c*]DD*:;;eǢ9nӓ1%ME0;;"Ӧހ$peZXX@cc#ɲ EQIN`АR;pyfhoOOwCCC$IdYfYkBVb梢"! ='K\B!R)""6v `EQhݬ( ޽<`򆘬l D0DQJdضҞh+PxFZZ Xn+;w:Èt  с'. ۉj 066Il߾ݑ!@TfQc>شi?~#lԂn.))zFss3Fr55$GB!j^hmm.cn~}^/:;;я~+ﻘeYQ(',>ǎazzo߇`(x~z|(ރd2oΩlYQYU0b#1vUCsӌbjh}c+ z'HD1U^|4??fff u92mۆE8q/^$aJR8s 磶650d∟AR>LRQ3ЫD4K2?"G/FF.W'O0$=?P_?'` (ŅE9z}?@v+uuuSUe\njllyZZ6BQRUXUyg?{ODSS|*+h||ǏADDfff(Ja||LVb\|?Reƙ0c~f+!Z]#*zm@-1mqZhJKK{R91j񂫪BUUE" 8 rrr@D((eAf`GQ\.L U/ {U mm7^Ν;o >?#;sӍ(/_py2+*PYY#GA$Cç>xQYY>NeT ɤ>:+%0޽7c``͛ԄP(ڰY +rq2Fׄ,NK9Y=ȦZ "lm55[Ͱyia&v]9GA0t 6wIzbM}OR-J*D2i!hWd2Pr{P$]  hdpx|< ׇhdlH J"rhu*YY4H6K˅Z R@ LK6onpN Zv>ͧfΖd釢($˲o!HK!`t9^+ާ$XCȝ'(S,#EQhii$B!D"KW(L&)Hϩ;(,RuttPoo/\.d*IH&4sFx^/=x#4r_gs,DD'N_/ _5.\`L;s=GxO&51VAMHP79`$ӳ&Xq_EՂ,kz2ܡ9>((:p윌!6X3cA8fJ²EEH5.T8GСC&inn`F^?:'x?7e09W ذn-JJ˰}}nNj .p ij^033is)B#HaAhN7f{hey,?33֭[~{qD"޽]]]cFW-@p9\$Bf<11555v=FX3wvvujx[JFzפdYUUEuu5O`9q.**K/yŖ܄pNctl (l̸?Νs0T8o'OD~~>6 /C2D8qaQ! !Jfq?#˄,U)YX׎8J7R2{ vZ$_ M堉x8 //KKK?hhfhēqa! UVVbhh"#%)Fؾ};:::"1[a6[JFgull ccchii1S rVV@;Uy=yٟr.0|λo>LNN?_t |IS@u>@0kιD"wq~W* *ez*vrY&l{]ˬTӍSc7<ĴқkI˖)FEE /u{v_m۶999&)}Y&og{@:QԩS(((fdӫӠ3g`3^+8V HCIxhhhmm繫 ssg?ˋ 4:6F<\[SǨK#7|hLpJDWW{'{PTTJD#H&S=rk*zɰ| ]\.rQ"@qI x>TU;\.RE599 hi݄h$J6 YIU$IBUEaaZ.9fk!E2J,z٤ы瑮-yl]́ 022*PBg'Wnd00jD@ ּ^/Q]])`J<"LyD"QVVڌmד\ s'">}6lX'3m]m~))ş/Eƍqattv➻Faa!oam}{cvM݁ r˭t9Yo7Q8' KKKQ\\L_?3#6uDXֲfI t b'iA nk %</,BgfG__q0@[Se% 4l+F\vM.x1K2űD@977 9tT93/ ?>==(-+D6~?[H@G^z ?҄T;uŐJ17?nCChnn憆)6w65=[ܘI>" P5iՉ3.ޔys˨Ne589=xH$Byf#I]3#tƆr ^\ߠsNyyCCCPdSS#4<<}Gh|b_COC$,,,˗Xك OO!}ߤɉ ttt< MfP׽AMM ɺ|4GیP6z'fj AsaO;V4yUZfw\츸x{$rssy̌AFd-v;足=oݺ #X%@N˺MU IDATrجn=w&fχ6> 4jjjxӦM[H\XTZ9 5R)N$v{ }8p_O/bn~_H$ 'Isj'&dB'Ԫ&rn 56d639q]p0bjINسJVrJFGGaV L" ^ӏE `ݺu%''lfʪrʂSCoڸG @ hP"caaX`. H.R'Iriܜd<)=/qz=LXW!=2N ,&UD0kƽ*njc2M{mNl+uv,α,FwW OASSӲ 9}u  u+P,dS=/鑹t` ?8u4vx#:š5kg"t17Z{ᔢ7SH$L& RAAZl%j$(#d@V֠^ o6T(hVczxq]aii (/G$|ՕeR)ӦhTUURuuGeErrr 2fJ$4ͷV+AYPGT Kx#$iaFGD#[c*Nt|мL+=̝֕(\.dEFNN U.b̩(vlB]VCD@ -H"$ =JJJz1|f #>Cww7֔c؀MԄȲr>|0?`P+]x[xn?铟$?$JJJ(aif$V'NUtl63a)bW\С5Ha$IB^IfrCTNj.}͕4m)ϟr{TJ0 .]؄#GTVTokaMY)If( ֭oH$MK/5ex뭷ֆW*עP[,&OuT°p 濂-i`pFW;>S-j}daO<;DQIfA<˰*I}2?n$IHRbhhlF$ `aaeee>)4k@HS"ːoq]wɓXv-ⓟ$IBEe%?#uH$(iBUTg,RLlv>EXs k,Sm62٪TaNʭB}A=~~h.nSV.Wؽ{ͫ٥/ ѫsX>m}L0UUQVVfWWW##??_cVطoy,--aΝHR먫j,,b,Doi4$.dkAvOz8Sthb3<-IWޗjedvytWF3ɲ 2R`~u9,܋+O񸯚Vnkq*JGVt-,|JéT SSx<ރY:l-r+E;ҲRH$˭tZKƅU \. NrOӳg{oŖ\h47DxP吢(>fv%ߜ׏M=== Tk׮[H]ƍC*X`Ry|\F׏=٬E\6m%p@{g1 N\ǻ%Yј1=^e=^9kѪ)z/@~\ǻ-e=^ Aa{yPJ)~=z_?e An[. ۃOxm^>"cJcYփ(zn゙\?|Rݘ)=AzPŭw ~=ﶀ7kE_S+\1`d ~x= A ~X}_߯׏w~}_\j< IENDB`gpredict/pixmaps/icons/gpredict-layout-05.png000066400000000000000000000613311427377236300215410ustar00rootroot00000000000000PNG  IHDR} sRGBbKGD pHYs : :"tIME  !5ƿFEtEXtCommentCreated with GIMPW IDATxytu'U]c'HR )JDReKe-_ȓ9N8N'dlO<3əq&_c糾$Vˣ%[IQ"A $ľh4{UW*TWW DɸiWzu߽~j~[-~n.}o^4m 0k`Kװū5r7 AXSUh0 N2+J:x?^ :<;?_ycUAJV! ! AuS5hAKUcsf!Uc*O ewI@A,EPU JZ"0@"Qsj% BUy9B {xh W9޵*b(E<S2]s+$^ZZey~`{9cl6 ۃ "FgSct.~\֍(!z h24 TS@kb ر1 IAIHi.iEXc|qJ RCi}q;Zy^˅zEtə;x6l٩Q4@`Mö`GM)fx@-^Ѓ{b ;kJqe}5\Ć"w \D J ,*- BÖRmػ" '܈h S. XEDZmF-ߦ{ӳ @Q5L4B$ۅB,s)h @QT؋BLGQs1_Lk8qcB5ͺW$]һYBZQhhL!&èۛ&E| \N; 7JRy6"oABNm`wDn`",cGw:$)i c`ZB<F,j,Xʊar! K@p3 1HDU7@ oUg@Uh,R eE>oL; @C|8T(QX3UL"wfnJ0eIɲ -r^Mi*!F আNc}T^UDZz i1z%!Ē Hd$QsIai&i@8V01$a|!S?>Z!23 ADXdz9>\~ +HfgNCr PiH+2 ?< Q .10$MX~ }&mUkKPK(]: 3*RV+I(voiR rJjoMۢ:81Vw뱬*m() Ņ9ϗ۪7MzEA ;Dߔ3wmـ|lEqhVT?Fpfx.f1ƞq coT\zH]x"|Adb"QNCE0QDlkK`f\.*n/wq渦#(i@-ubjR>ɕUT,ZA$Uy}k)c%W8WVkeM\00' $@s(wEGk$'GX214MoʊJr#r uuu(JB_޾>zQ+|@U6!<)S --^׮]!N}GJP\\LE-J; [->ľH_v?/V'eO,X0xIyOƫ̬ zJhw۷uVurzza̢ !LLL"0a||'N(zPVZ==`fz)![Y*~|*|q-apxe?ffpf\|4!3j86oތٹ9*,,dUUu CS4<<‰d&&'PXXKaN$pݔ54h}̙3P* <11A%%pݔNMo**jP\>c=}AEUVaIZ8AZ (~; 3NѪ5 "UPW G%M 2etn"UUyw`˖- >/8cW4޽3뮻p$ Jcصk'b(÷XmzUcx-S.c_8]/8>UVl[wiAj7CI%ao((.*dMӨm6 =nA*a 0YO~Xg ɖY }$s vj`"^* ̧T{׈K\|kR6A>[@^Mu$k#I@r.QDQ UrP" sxaxf rr!LE*"f.T*E(JxiE!Ir咐H$"N#C @Qdz}HR`fx<`fRd2f%A D}&K~MoXqHʇχQh uX+bytc8$f&A0r4ƲEJPt)Qoa|`eۍ \Ԅ`0K.rahh333t5A,W0:6F~#xwԄIx<,,,`hh~/^LO]~H>|>|>._tw3i 3E $d^0w>H)'~ B0,H2ߗ!|)GX``9kɼV_0κNEڑj?~!sfG0ӍU4 ;щQH ֡h}=4MC0(N8IgK.wűcq?Ս~x۶رcՍ9cFrᥗ^4~~TmK/'Ob~>wO4jkk Y; V͆o[,O l)E񁑅nrYzT5l>1[z=hY?~ 7[&K'aa+s6YEScuA9)ӮAUTH  Dy&:133"Z7)i%\.͞^ٳeYfq2? ~V4o`I8ӧeK ‹gG\PP *˲c-e"d2.QdMc|?|}9粲2EN&W3#Ad[f( ˮhmG͙-(Zf^d}/yybe.{\2~wI8 kh|݋c&rV2>K(*͔yɱ,UcN;q P_k0kdEѵneoߪ|;7?G vC(((Į]; q!$ ޽nEE nJuA GכQi**Q[[ %ȑŰzݻ鴂},066F?1h+lD*1zZD|dSL"pʜeJw][~aSѲl,Mub%A[{qY'S2L LF,a6-,Wbf_iY'*k\Y!MaCY): I$6c1CՆB}M(+-CQQ RGGg3SȰ"ʁ5+_m{C%%f ΁i1ff""QΌ S3׳A1 0`241Cr koN^fއ/ӿ젽~1OTz0>9i,8JKJ )TW`Kum%mn\"nܘCb``Dp8 EQq8cKK)Լ;R 7BLZZ|qM<7Ԋ,ADG Ӥ(N}^1zz1:{M'%☞$q\mnƉ'pqb||ׯ_G2?e?dQdkPi(>fŋq P{`- #6~+Fa~>U;NCcJb/?k_h+hnnk/}H0=5aLOkӿή.쌝JpxC ,`|<_[=+]x~G?'XU5njb-F/hGy", 9 $/5_l//ERG>çO5n|1O_.,3C9Xx<΅|M{F H WWcYy-KKK\]]Ñ%NRJ8,"+(iȲT*P(UU34;KJYNk͏,˜VҬ_ϲ,iSSӐ$W5rtd DWŚWVVGr87޵k%7p>p.((%066I>o"TFexAznjiӃrv?=t#Ikj uY1u@l''廾ΟWuPu[K`/ ,ߤP(>u)E44FMM!'*FG IU9 =I$AUUhF= YT*￟UU#G#Ns"t$h5\P4.77)%r*EX,,.u713[&R)@Dmea#g6Ӟ4M>YVi湏>zTQQ<%I<̤i?Ø_?Z/~q=m\Òm`hj͛ 12d2;ʰͅ(-/Yz;8p`#*+Zs4$1#n/FGQW\g"ˬs](*<MMc8|TSS1TVPQ"z{qhNýVSqsDCys:ynv1hAcOd?:jei,e=/k`M[Clt˧{}~_?L`:TTSSd\YKiR'>݌Hfdq^9$\)|k ks$QR5^< =[hppwUe^+A$"cb"JwoBzJʸ4Qʳ+n[6:s DOt F9c> }p&J(23#L"fjF*"Ͳ,XQ""x<}1+JZ6,SUh\gӧLDeQtttpkk+:::/$3'N'` gX\èC;. nG?8~ڦk##ͅ[PP3BQk<11MUq1$ W^E$A__/bF!,>go&Dmmmh?Y?Yܼy###lDV0?~PA@oo/iN< Q3҈W?!Ip9?n>{,yttM.nˀr^/c*mדZ"jH2""J&nLMMannHeeehllG{v撚?<]<']t8,q2Ғ@@ L)I,t @Wpb'@P܌_g>z1}bYf:r3!Dce{=tP0Ğ={̙3O7ހ(Ff @@Ν#(..FGG._ ǃ4??oe+xpqG^~ 'c?dhmm6~7~k+g(bll ONNRyy9;w,;59lvǒǂρ}B<>>BbIL5`0Hcc~Pq18$x45]b*ѕ+H&XG P k]AeUYH$ ۍIlڴIzM}<֫~m InN$x؈@njj7nH|AF0^@ `Q*h4jV!b{<#{<En s3cNy;2,taYG^ZZB__we=f{Q] TW[;OãAɷ_:CۍFȲ@CCƴCd87ki\YY MLLsH]-Ѩ9>PUEQsPU<UUz!|>_XN6`0~v[fM(kq+Ps(L`N4tvvRAA뮬ԥlVy*S~2w0=·(^ݥZh===p\ؾ}M fIXbJH$3Tj*`frHlٿ HxG$G$]LDfb-IHevVߊAEVn7J>( vbUU)Lr,ˇҰ1 \.44M$Il|>z%߬BLD@GGQ[[t}X ]ˑ$v^EtwwO@ IDATsss1 v@[γs_EE Y`W\A($r8 qkk+$IӧDՅAܸq+k=k}%I<:::0<>ӄ0txeӳ2G3\~?xgt2G-P@FFF%},x]b'AKK ^/N:Et ŋXZZΝ;… TPP䕶dd!`n"0Er ik׮W^$reҸTVVFP[[SNvW\8Μ9p8&?a%i`n\rS:… GKK 8 .===F&Gsܹ|,I0Jtuڵ*++pMwne"%׎) "42Ł"Q[oAS \Ǔ;wPWWWC 9wƍ{k@UU(p8۷#G@CQ0o_|>rA("Mr IxGF*""\faQT*~1::g{<066o|'>,aHiLNN8=܃{J:}>;EQJ\<&M6wyq`vMX0űxn7_`.qu}yuO||6piCQ?EETP]6- r @gg'6nh rYYGuuuœO>Z,,,@ @7o~+( ;7?R2ġCxÆ Xe\.r<55EԧH$`xR4??>4M磑TUU<Çzi҃Kʛ7oF:wMsoڴ0<$,6VTPkkcZuXmẁ"cY`;@$ᑑqO'N00: ޴ir\WGtl B QT[3Y#s6ry_UU.vǏP,JR zNtb[5*3!kPaM,nԲmb#I۝ Tqݬ(  T*eyR)jubQm.8I4|.^-#ŦT`huP,f=xDhk&' !Icj*)7oO*g Y*(;DKK uՂd~x{,011F}@DLDYcCCCB|)^XXබ6BY$yjj3AtFFFxzzMMMv{nJyІF+Wʼn$3G7oޤ>¦MK?~}jzSCHccc,"m߾= vZvg.zJmdܯ eee $ZZZPTT[l1Y^_!י٤0LOOrPB'$N;ix&xիùsqFId*Svb0Gi:f&Ie<صk?~'OÇ"$dY<~e[[[ihhՅ۶mI&֭[1::Z;w=9S4McÐՍV{ډKz]󨩩06oLxc<n7" ^= 7ƠRUhΝYdU"ja aϞ=9ͤ@imHٮs1m^/766bnn---ػweq4]ٓC-Q+`CH=n`Eyy_8pBN\(k1+1^/23C=dr],a]:쐼<m̌"*..64.))mUi<;H=Ν;,Haf"TU5Q9,'uf/w$;MF}7l؀ 6PPPSfMt\eH,cĵD 3Z@U/uz&~;m>rX4,Jn#VZ)y8zn[ւ]#PJJJ 頱97oz d( CU3W@_²OZ/8tpeڿ?Q(rdբ3SII ---Z%V^(H$I4MA(Bsss411A$ DDfXYρqLEF"ACH$hll (,˸qE""((fHn޼IDD7n܀,$"FGG( zzzNirrjr( 4M^ 466YJ$E-`Neb3f"Ayy9***؁%aQ$?_JvwZ̼{nbaaf#n݊APhG`9<99gرcx̙3 /X,MMMhiih4ڍmّf`jj;;;pMCCC$n7022DǏv^͸z*^y͛7ׇsΡYqmvƭoXnO>B8;Oɫ0tdV ODFII JKK7{CIbXH9.9N(ߵkt r ly^hJQUU<_~>*++ill ,K_N>M~lZ/c Mt2D"8rO|E1D" Ǒ#GP\\h4O~8r$~4 %%%TZZm۶03B~?oKTUEII $IBAA&&&p!@3# w*xCQ^^uh>ǑH - &s|z5:8A]hVݻwy?Мu qt©T SSS?G _WPQQV|SzTWWQʬvؗsS<EQ~ 8>"Hg>p8 Yax==j/a8tp,..nNmJ~I0882'D"@"@KK |A߿T xUCֿ`&&&m۶,җ=.Ծa߾}dB Ue\3{ B&&&8(+cmT4MCoo/rrwnp;>Z4,G2F<'#B(Hvgmֺi:].<At:͒$ARU uLJXdH\.n7|>x8N$IHRfA’9E`%r0Ddqpih% 444;vȑ6n 1F854qY1<̳q,Ed$I2myImɘ';[HE.(( QOY8;5x֭q :7WJ4Id΂[ynuղ%bKt$]&:n .L .q)JA$+F<<,bia4yGY tō n_;Ug&TU`===$&&& 033 LLLl)6oތW0-àMa|f677#]_˞f\3aApiLOOcppм_ss3A`EQD033hi\t dϟGfX Fx"bT۵P:;;8< `ijb~~nN% Q38iˢ 稣v>K_0y@GGcb˖-Z޺u+b\XXȭJoYފ6}Poܸsssli!ԱKy r055f[x繤/]H$#J]'?#q{!h-dA"/]y~7p\p7n`IYOʊc:~f&uZXXyhsN|g3g ,.^Iܸqo.^ Fd2H4YɘEX{ƉpUc޽9Z?VEEE~(7nz8Ea|| `O hhhヒjx< tu c\'OҡCȡR`=/OUTTP,#QNЀ6RU.\@kk+>஻23gP2iTUUǍ7k.|_;Kc(T***H$z;`hhO.lCUU= kA6o޼.j@<Z\᫸s:`e13m޼`ou۴iB u\/RMM zzzk.{yu|I466bƍ׾5ŋq4N9?P(Dt7nܠM6O<'? ݹy>EQOCpizꩧ099 UU/~@+؇9υ>|ߤqȲP(D5C$qaǞhM  J;wuʄ/**"Mxpp۶mˉnʷ8BQQPZZhm- JPcc&-[x˖-~FKhe(wm{PRR,S4`'%I2/w24AVVNhlݺCi^\\^YYӓt;d@p+**r :f èDeܸA(,A}}j֙:n ,..R"`׻b<JVn GXŌ2ɁhiR^s`}qڟ/Z Ise dÖ=Z%`%'N柆3g4 m8Mf\W[[CCCNr>&fX#AW?ӡF͸iEEVUu͈˭ 4,cii (90ϳ<"79كirDF( !`9 5y.QW6}>0RTUE"$bZǴi~q|/0$\.`Ϟx<`Cv]ոΣ䴳sssYUHX)~򓟠/&''ԄP(}{PUmmm`Ȗnl$IߣǎC*<~񠭭 ;wSSS8qΝ;ft$ .]?o:O>`0%?t҂ۿ5V9Э5v</~ 3 ۍ D"xw3 +ϷBv_Si2Y4lٲ. D555zEQCG>N&E={pM_5Fuu5 Qe}?3;q},kPOxwQUUś6mB*GGͬx;Pе41Vppo)?M i/o z) E1Ut:͍T[[gbΝ(,,D ヒ ۷X dذaC))1~:s =Yă>}\7{#([QgDtwwc+_}1D*))^ij I 8zYn?i۷o׾X d6}ґ#xx&0FYUU,x^D"\.~DQx<$jTך./"^/$<QNBb>"\.R3AN} xx<6b"tDL(u+ T$ωDh7@KKS|u%u:yw@gg'VөM#͛$e穇}>Y`Vڵ0T؀VtgMQ$ ===eT"{iҖW_DQ^,v{-R 11aʂ pqq15Q67fh @EvȆzY$m=8M=:{nx]^WcWjm۶L=F3 za ZdM(..`0h_Ejik׮zA%"ܹ3+"Ebm(B3 pg4e{nhvݻx`EWD3-{UWW@ @p{{;߿uV+0$I"=XCCCؽ{7z{{apj`޽ƍɒx4Y8YPgg'ףݨDQQzQVR|[V ̌7~ < ё?2^:2pr+u dЙt)>Hy =Ɓ|9hUC;V"m^Jvp9osg$~Ae\z @eIIR8uUVVՅ.}k/IڊB>}X |2;Ҭ8~8fff I0cjj EEExWqi i= mcK53t|CЅer<ɸ>gZ>_ IDATrz]v #BMB-4"KY'U Hgff>gEsyttP/2 xǎ| Gq>t}q$9@KvQZZʑH4{9I8_p> :d.\AD8w3q(B4E8I!X\\R@E4 (Hrx{1CUUtuu#<EQ0<<;wBQuG<[R9zԜ+C2 cfZU}9{Խ Jx'# x4֌2-3+$=㲡;4 HHJ<`D-+.rpw-[,_ߏ;wҒi^>C499B޹s'"<Ǐƣ>a466NJ'Omy׃c!Jŷmۆ;v`||5oJ see%n-kϑbyKD%%%XN9 6iޞht++Q]^eE  VV Z[[yJg}}}eEvha=x%n-Z>( -a*b"A(OF(K/}x<R)p].,##pfP݄)7]QS(*JJ|%2Am TWWۡ1] dOsd@"c'kK=Ҳ2TPў# ?ʘ3A,Yh/Kyrl)eO%v!7/MCFr<,jqq1-,,XٳOݠ2MhrvLOwYRXVɪĄs\]G:&כ7kAN Mgu-jJYe(vDޕŶq^ IH}ݒS/A];-EREQ ܇h(ZE/PA4.b'FRÍ#u7ǒ%ZŖDI7Q\}HV_\ HpΜ999e%Z bT$?/I%3(C}H%@uLB4MX,FA$""!a/8h3t3z2^l$ksiui 762yttT)x91{޾>cqGC欑y xףŖܹs@KKKܸOQ[[33]x[[[ڊF;whhh믿_~&uC` 6W^_x7sssؠxWLxo|Hϟ?q?k~g1::ׯpeww7??SPfݾ}q5?ưp?۩?#v...FEEE;Sj&/GR13fff.D #$,{CNӭbH GY^Boo/:Xx`ES}qC R誅ᯮLiq)r8T^^N&* FE~}TTTs=Guuu"S liQdX-PSSǃuİCCC ߏ={O?}:u"^JO?4>E3,WRN< -ߏÇceep86Ç҇ᩡa+yH$88<2IPCA?C7?mBv֭[(((Jבgbaa&ŠU("B8&ffs U8 Ob1hF/_Ƒ#GP]]SSS˗/'NEYY?1)Zloe'aٰa`vvw Q\\L+++E}}=077G/BJ5H׿u455| |>7:t 7oWUc ׾5|g8}4-,,ByEVWWQWWK;$b3,k/,, ߿0vֽ+v<99)ngn_YYd2뼾9KKKlXggffOLLfq4e]V>v^XX`ʚ>SSS C?ŏE.((`0oeexbbn7;D"B>|Țs*ã{<c4iI x<48H'=9%)yT%a)cmSKHK64ŊePPKSEiND̴̦D~!EQz7466Fϟi?IHЍ7WPr(ݼyb /Ez]r^aK.omC<G?.^H.\_&''f@ 7|400f iee}]\pgϞ+W Э[hxx^{5$ hFGt9FҥKt ;Ҥ(q+ 4`fbddz)KJ)Ģ6FKK%&-4`x@ U>$3_c < q3ڪp]]`cč-.GP^^i8qx⪪*:rn߾́@\.v;{^TUUQ{{;ۇX,>,555rivv3338}4b###2}D$33ݻGǏǿojmmEmm-vqBjkk]]]\SSC<#G]]] ׋JʄҤO?Q1•X^^FCCݹs8@`+++X]] "n[>9Fg樨 HEm6܏?˷:%{{{qQBX)(&U5 zY{IYdzMK'''Q[[k$S/f(j ,[NKc`Fr Slnn4iccN'O:( #3CCCЅ E3췴ĨG͛ػw/S&}w I 2dF/~߿_I 'IJ$˓xc:I9@ \`V齭^g֍lb/PP.r_/Ʀr555XXXI 0cfgg؇8ZLZ "ܾ}d;;;'2<###hkkK29Y Yf*HΛD"ajg{q`m:$ʢt)'^gN2x\<6柔Z*+5-#vjŐeEh#V2'DDN**("[QQ GQQE+@\t r:cll:;;QRRBr$Nzz vQ&'bii^}Uڵk駟ұcp};`fHG<7%dsAꁘ13 +P8?7nܠcǎa}}gϞ%ݎ_tI{X^^={ C'hmm7|>zzz?ܹH$K.v=y5#lŋz믣ŋt:$9N…  P[]Mnm+2yNU(#!36TTyhwQ'ؠxᱱ1f-hg %ΰbr2LC'Iv|]|;Nbᮮ.qoo/^Z=Aj}N廊5MMMex<Sqq1:::wΞ=8y$^7nG}CCC(((&XayD6ɓwJKKhiiAcc# "Hpaa!_zNTQ[3;LJ###F߶@EEfJIyd؈U3e-x@"CjdOcţBei˥]N^xz{:KFp:~J;hKGǦi`0Ç8.N8!ڌ#G=|ػw/9N'?z xP__Z9sdSDL&3Ϡ ׯcmm vQ[[Ko} UUUTZZx<z>ē<:&|>X,Fuuuz| $D-/WΜ{< ? Ȝ---! "#HiTTTąn\.~?$p0 &iPDU<44DB1uJҫRL! 3-dhN"E"3"ݤUd^5VN'9_6O$3gL8&]iܸ1D8GV4#`Ѣ=\.F A8৿}IOhMK+++ibbKKK $Q?㩧\.49Wm̌ ,;kkkX]]Ń(..đʖK 'd(󏎎^Bj??? yc߀ՊA9=lI)7( ~ a;:N֌GYn4J1&13ݻ ".//ǻ2Μ!<09 :T[ KJJPRRvG\HnqPIx!\XXrQ"ZbFSa<近9 Xآ,0$2dlUg5"{jlB `2ciSpUNx S,N_è@߆ѥy(IS.JJVS TlʰLR(\4S=Բ:+nR'pC8ʝfTPa[NmJ3r/FdXk!d^GOyLg@cc#Ll gdBzXM’xj.!2zݱTSTdZB09i Q8S%ZA9n;1gTfusJ60ES!/B <G BiT$Ldyzf\0af-CcKQVZʒ쬇 Wt@<|>ˑԶ,w9+p(xYg&&&Jܫ/JcK97\ԒLuL*ae>oZ!U$gfj,N~Vtf<+i^]sKyEJKK&QFӒd4C,Q9ÁˮB}h%#DZHp8r䈜#VǝBTv۔ʩ3p껨~J9Aif:N91VFtC4 0F1SV|>,--nc߾}ٚƔ7boehro\XJ'eMƽ65d_V[=8ybBD:DH>ݻw dސ_,BIc~~ hkk)ު[Eߧ:ODX&!oJRrQbN.Ji6B,: Ur^U8BU"xx#)3)rԄ&<|@v444r MW*2 A./x<f̀nPvzO5$ '@OZ-IԾ9z\B$"B F|# Kr m2(yy$ ɡ,h-d sOʍȑ8/Pê[z~:z=xv,i%-W2%)8=U)26+1$ e$.=nL`:ĝ?ЃyTU#'c@n;m᭙@np4frR}a9pX!MG("זZF{{_:}4nrMۑUA!)*n;U&*v4M0bF$(|e,|E/G2@`(," ay3 JlwtI60MaeyVؑJ$C?JxC9~ Eb)##/ot#H<., 岮Jd2Y'cR ׷j+2N{Rd/D$# 67cl&Aj{TÒ[5 C O۸=8MK<x\'bXZR@A%|s+ɨzM.4qa͹Қ)G)(@?4 AF4J|@R=IDAT]   b҈6hX"Nik\WLZMױlR:v ~w{ L7}'ExK7x5 3EXR,4-fϾ,=)[Rr&W4qE2c{n8=^~Sݰn ZŤM_ow ~w{ ^8cOpea@&nOѳȓ*F_ qR =wݞdnVNiIENDB`gpredict/pixmaps/icons/gpredict-layout-06.png000066400000000000000000000634711427377236300215510ustar00rootroot00000000000000PNG  IHDRr}~7sRGBbKGD pHYs  tIME  , [ IDATxgdYv;>2WW{?n,vfwfg~+$ @H$0!I1(D$ ) E,X vxwWwyY韻G^fUt/ }zwϽso'o~k8VAϏm,/dD;di'X#2zqJmm~} pWZqo-H;|G?hA.ݽ:㐦)~ɲk1Q+Њ}3ןf>1lllc#%gOeB:/W]zvphp:Pj_di9o8 `uMq{|{|Ohl+ڈj@ɸ4%bhڲF/_Ʃ!H~oV 9`#3Ǧ1"z0 "FPjljs*瑦c *~;k"EA?qIك'F Z$|^z >ր L`W^y#211 wn>Ց*;'OިhmJ(Z?d#?768s ԧv{r^2N˃OSg(Q(E;Wu~"sJ%w=x(`),#({@pO{+fWH2XdI0*͍]Z Vy3DE"4MQaCEӌ8`*(>44UJYAa0(Z͓̋ܘj X5^^扒8cp!bmOvyGQCbL!߻Q(}BMW 7o_ 6 PL"dw/4djc;W YȯЋ sJп%hX(?rc?|C3;;GY+ope\ժʞSP(ܙ_ KSoꫯE4V}?ob?Ƞw~nO"Fs"FU `Rh0:ZeTd,ow%"Qx$`RT8s:̩ʞe*Eqǚ'nVe# `ZhKoD`4, cHpylPDE8Zr;1b&&QFj('O}g FG>?G#~̧/? |=IDG=-}e˼ g&չTN6.M/~z}M^]}3bpƣX4Ufxҥ6$^3LC-!(x$Ix5?>x3W/mQb *^g)QOCBE jNb[cY|(36gghS/Nx1=gH 0xg#O3Obl@܏hdOs W,,.ZZc?ȨlڛX[F5X'|ӏhuvM Èɐ?o0w*֏(>g> ֛ɢ\* ^ksy8v‘Gt}cK=;써f Li>c\ry^YV>*)lqd;(+E\P0M $#éptz1N"i)4ų'k0= 7n\fzt~hͭ b=iM|n/OȌLnnؖRD66b^=fg9|h??p3u{MJ ~a:XQ hw3,T qtcrmzKcv5fdemq>\|GB~g~Q˿J*,sdN)rI(">Ƥx ԺmZeGͨN(BU3̊c5CGX2ǭL uJ3들92B:|񘨍t Cn.^ /_9a||4 gE^P5nwA1ې9v#ol%a"\ZzMm$Nu[88\p'0R(K10N~эn._4U⌹eY^_1Z;ONk5I$ b Y@QAO8jp[ik+{f-s:G* HL≥!SDKRf?p).~d<$Գ~#bardRqȈ4B`&}z&MnIbT5}VkuAP՞rG}SgJ>M_wwigJ?ImezL@<3qJytnjNXibDd#jmL54>&XoNK@!UG c%SJܵDm,f}9U ٖ("F #PVzwՁFF~j7B)bЌb{ jī%l>u^zG'ZqіX)dt[X[I9B!_@Zsg"BÓIE_;厯-эE/j(LM*'1 H٩{H'ӌ#cIxYN8F`6FU24m>35}k~IֶOl$MB旅jbQ/ƺJg_OS!H?f<Ϭ{>0]\jMY,bi} B 1M( ˻ngK;iD@A94sfaիz^kQMeP<XK МQ| Goؤlpdj\,m9fvTi66),_PX4KTa}Kݼƍp7PmX lFUHdh/3R.v'J*h^qq"O?]nn:?ao_cm=F;'zl,]KO>%}tqer:`WH]CCNxN}N?V}VxFwȭU3Z{z +V@/"2b0k7C-8lFA>G T|.? LSE3YZڏ[K o\JqYFX4M~l n_e^P@:ܞdz)g;ѩiMa<8X t*38YR S9.#j EN$~t{|c'վpt|#Z1;u>Q֦db3l<:6[~FFrGt a%#Q qJRf/OC+9G. nWaP? 02U]ۉwBU'ajݻ9K?8|}CZMn^Z(WݮE=8X})Pe!z7@vd"0~ Pjn=vOl3=T*)M {g bş.ڨ'_ 'N=ݮlZ^x[DÔ,^nQfuKuyq /Hͩ~$=7FT=\Rv8wתFh&mWox&9 F힁1ȠLqrB}(֝;iR,o.c~0E5LFFC]eNnnS vu;qDbD$o'{&xNF*{h@~^TP~?C-旖q‚/PH|6L"Zo82jeph6fs*^P<*Qq7J]*85d<+m1N9gtsʊWxǾG3\J6^B`7I 2Y;c~}K.\~CgM~&R⡖ +1NW^X'=8&=o8MTjC}ZX3`Tcá ^| |#G5u; ]gT‹8=r=sK٧ѣ1ƴrŻj#k N$خ:r9C|3tsSfE ,EQ Q,ln0aflL6x"3㲺W.|wey*{.iSXkm!iЩIndJW>Qg|w?5u.WT8?MqS4>;RF{ǘ AāAP5i]xf1' idQ(~FmOF|a*ҍXp/Е6 R+/ήVk}f B>"\^^78ǹ d]ҏx,5,ADWtk,Y*w^ԑ"fuPDjͰўCK逅VYm@lܤpj[gF*d.S=JxR@h 5_ԩbIKav7XErw*{}U<]Z@'‚3AY~0V]]\fbީi66EsYFfj CX;3n0_=_i KJ~~C !{i?Ҥ'ڏ&Y̥R,ꜪowWKܳep9&ĠPzN(a]~!< e,,$ #"/utPa\d}6/BqpwsJ(O7t]O<n ]QUQ ÇJ[tB$ZdjSKy4nҭHWgH!ɬ-|߬u;90gl] I65yE|e-:Qa,oo} [^=/%[)$Twۭ"B(J#A4MyCLWSD&RԘ8e +]9?;c$(C$sy3KS-\nB#;RRc/~Q^L}r`ԣ5͕Ag2_CtV^'x[ LT"gaƵb̎<$ߐJ ^^t}td@EW[oN7ަe@9'^ [R.drأ+kih[t-̭lݽ1}cNK?Y])sT2. B% ؀Q LMmmAsG:4^Q2cYYmr`_n{!]e bD5VfGvDKtj}wXDSI ](|o^j<1]>t{\ }_x#Rlu?~mB@Dlf͊'XG:?Y-_\r$Q>H{|v 2JUN2;X)3y;Gc1Xʡij_}c7b.?HptXp:S;@m4 &SG'=f܌]qIDkkX)ЊR3{,-D]6< A1l7zh"Ǟ 9efy=`:'Ez{=sm|P7I'qz;H8q옼CbMB!`vOSĻU鶕uaIz[5ڔ%oeh3]b35y(@TQ2W-Wr5*3@U2bqwruA C(RZ:t'خIS9t0I XF-ۂ~nYC{&TjĩM(Ynys a0+pjcH<˹ -Qwn,lQQC_:82tL3a(xaj_C|Q+B:8IAmtASO8#vaDuKtqfU*SSE~fceeo`D$g8tWV]xJ qNu܇TIx8{"ֳ}O J zEc5oiFulEzv:E\fXbNpssk;*Q4,d1N9趄߮S,*0" 8ejSyxi^K;<{CAȞWŹsp*sjeꐜ_UmfȔ=K %Q .[v;}٬;|$'xAWA,!4iKR9z KK2@CK4. &&iI\]j˓X[8'ó|9˞HEE% ̓G#ܯ $A8q1M=Jc+չV idl'M8s*Fxpڸ6nTp.ȇ=n:>tZy)]Y=+emа0$HvmI~{;-cV)]DZ#=x3kvQvw&%QZ W\ﴭ!cw^rA\Vjh!ecEOazUVV F]OjHU}u1Z $Mor䲾zD/ l^iOYߘae9 賍zU9qXT|qszTJ( `ai5%kcuR./<f| :UDƭn*5B3~jH(JiBG tJM2ZN4MYdz+5+yoÍG_|Q(QjyuPdb#I@1aܷ~{d`*\: Z(84ٝ(W,*LX^1R\]:mpO1R$c;U8&$e53t:N:Y>%借RҌN٥`)cAJS q\&'4i:(Sc 1ko[6f#? iPg)z8*b /\?ԓNb0ve8"%IAKFfDI:8qc|mPͺ?Ƶ7*o9h-nSGԏ2GEa(:S1\zۓ `رuCnmԈvJTT62K^bjՒ+Zܕ;p2LI N"@.ޛu^ib߹TfVAp)Zh$ 4c=G~c"DGw5n-$ cZr_~pJTAFփ2QK|;Qm8e_cvm誌mH( ƛafb<j+$5< XIQ\|j ا<=}dm4WV!I2kp`Hy4\2 Z9݋;gz_Un4t:S(ݼq,lޤ9t6srբ{ TUɑjZ^?9}͖stBo~Vݩ=!`Zu"cC]|Iǎ7w;RK@EEX mA%ܸD*7׮!5T . A jzHdn*@cfx]$ىN_#ngx;m.az6HC\ ){7p\UXXH+: M'pv|icq0t]v m '7lx(|VKQ zzDeAf M`_l21HO X^,R z-S@lbzs,ğN7n}۷YpBׄ $Fć#MSCxOsZ|Ld#%=0ڀ<4;w Ij,LF@,/wH5 ċh_R'^{sYZB?z <<'']] VT_ ع!tO?]Qy;BH@}#wJA| oœEoA@Ho3A@rK?K_\e Oׯo&ojij"봂`q Z-$@0oBkM#_[d>iC$6V&DKDaA!2tU$Hz^z@gCt@O,vHQ@sx>dQ@݆HD*qa `$ ĖeAQT1]}>MҴƌ3M'7I4.A(QI$A"%G<,@<hO,'XY  Q BP@ $(!"࠰*&ϧ8K"cI\@@"$ AY0 *Sx"D1}~(0MzPt1 ?o5P2 | ": wс  .  AQ2@&d:Au,j}ضA0"a!k5Hz|at a= nvl vE&>dss0F!"B,t(#Jxg(!(%] B)] W^a$H^~#"V wF*\.^80@T+TV:T'E E5hN+Ȧ?Gf'ؙbY`"l 85$ե@ ?>iz;RоGDĶe E$ "Ed;6dY P 0Z$\R%`ٶi:9NPR|X䐃m۬(JXKOS˲ sRʋ+t:"Q fl4McQ#XQH;I8ac,2KDYD"ׅ")pمy]?؜̤%tCKG_VITo#L…x| (˜H$0:2#a|r?T9k5PU|f?T5\.J{d2˲HD'?C07a q0s-";; yLLNbqqV <tMݫC^X\D2ěoE¦i"NӕOgjǏ=f |yu]ǰ~03A\չ+ qFFq8+;v<| S֦q yT*Mjѱ{hZ( $ILӄH%j6%1bmDEQBI3iBC7n}RtmTUk5t:%">tKKVŊu]]. 0ML$$`g0=5nXv[$"\r1ry,BVCf fIm(0t䂌RĕJ%03GRYCT;w059 FvtJP.C[z?{s9v]DQw{&?`BE EQ).UU8N4N"~`D9wQU灙9 >dY6E}/ ==TI6\8E>lL(¢(m<i" xڶ !)h"|gmֱl/YUU?yMk2G$\({>ZM}!O,˜H$oOMMٳ4 _`6^|E<…"@\,'2 L&Cr E5j?gNXUUܹ  Yݻw}Hz sirr_ d28~8n߾3g#<7|b<88n0Aۗ.cddwf8q>ctt1vj$(Ӥi*E>ˎԩSrnbii 饗^E]ز,\v lbddWWW( ~a9s(RE?'Np2SO=+WP۷?F*|08uu]|ᇰ,y||A$CVC@6eA0888|2$/--P(}MB˲?{9\v֦3<>1ɝN'me0 ȲNEQ>2p]7r68 }]UQ ?,,.ddX9"1[!o<dmǧ[Ł=/DPh<]E:3yLBeY,rj&9t5}XM4 V T nK/}tT *iΝ8<4MGm1OS44 ?4m۶ }*/A?88l~i**(JzD"UUycPٳlYTUy躎@E]4;;3g ڀcO>(h6ؾ};.A L&1;;W(0033CQ޷o]t ,>i4>>&}]*"f|ԩS0M# 믣X, Kc||W\cx~~Fckj6=0:6mEučGGGQT8|߇ d6|]v^cppu=V0G#>"wmX mf.\PR GB<<< fFPcX" Ν;$Iu5"7  E۷s<$"ر#.tHhZqx׍&&&tC$d2R{đrj nhu]'fȆ˲i"$IBEDIeZuqhFu](y1ȤŨ "Dq`DE7EQjZ:&4M#X娻 aFӗee4ؤGpi'eoX<~ַD{dt7' 78;XZZ˗/ӳ>˯*K_N<|>dOi%UU!._!6 c|,x뭷H$H$ܺu ?,!UUK/all sss<;; ]c8I{!Ǖ+WdN:eucGם0",58Ɗ}IbeYSsW'quYXՏ'~Hđ)qɠAp}N_t*"t':N3xD~Bf"(JD]ץsUUEӉd0sXn100^ uX{D j(,/ַxij\L&ZFcrr2]nfn'&&VD={LB "qPfUUG2ܾ}zq\FXaJQimm Cp-2Mt:w&iE1 144rF4߸qT Gi\~ pX8 u9t<8#;gΜl6Q|o>n6`K*dYiA͛7ɶmffܹp=NNp$Bl E]ʾΝ;TuF:d \,awy iǡF.$ECTӧOm(|XJhT!B VDu]4 ƍ|aCRA:Zn˅BܹQiyyr9cknnt"0jё#Gg<ft]ǭ[8 ꧦ68~HӽmX^^}ǎ~Msgyxluh!ز RԲ,#ˁX,+4M lYV : F%I13. EQbNCgH; iig;epjF% BrN:qgO~{Fw_|Ǐg]!}<99߽4?|0_t ГO> u?FPv .o}_xu]Ǿ}`Y_t nbu2 |A>uTUe˲@ԩS8z(ⳳ8y$0990~gffPLɣ>g7H4 züm۶a޽,oappDDCE'O$۶4M<8w]B߉<b1WA*iNSSrբbZ\.d24 DbȪof\&q` È@sj,+N+ @X]]0qt:q,GFT;wx۶m>kkk0 GFF֭[=ϣ~zNQ ""['۶Q.fP6$I1 sX,cgG,..BuضRKKKGmq"ESS,5MC%EQ"4{R8FFF"I 2yxaY~Fie=σH$̬( ۶98HĠxP%"4AR vGGGcqtt4wA ,h6QdDD Lr\בf9ܘ|>i4 =bI/_ƙ3g/~ 6 _7|T"xMEڻw/ 8q.$I.\D"o~O/&y(u?W&W&۰k`qm]/m` eʹY7m^G}Y=]<:TӍg1!(Rzl ݌C')_(AQ֢vrqḱ,>ׯY(OQp\N73X~o l(%Ѹ\FO/n\t:\DA{w=9AQD~Po es>3| Eeq]-v{FNv BU:.r-׿ l6r]'>LȲ,x  Y.PD! t1C4ĂyC Sdm!b>+WޣKNs:m~&FFS\Nc\8N]ڵ+x -Vy>9:]Az)Nsݢ'jO^~5z* R[ܛsmuMSq eN9Gr@OG0.$ty|GD}Exo򳒄򗿌y~)m0"4->|J `޶cWZpIQDF?qr  +XXhAeȲ@iT*XLF:$ [Rĭ =BQj@!<m~SS{/#sa4 4 eA%HȮH\eY Pz`EۂCe=F=?Btt:@$ j*oСCCM Z6iu`YӴ^97dY{B>HR}ס}P78* Àz >[(s_` po\&dYƑ#Gr7x_|J~}Oî]011؏F藿% "Ν;A9eZ9Ew֫2J%YE^msZBM mffZ\d *)W|yhh,˂{e{ArL0 wkװgDwyy0j50 mQ}e*+BD"Ut G)ެL\ސeDi.EQXu?C{V yYFD؀MڶFm SR r1x3ѫ#~SO=ɒ$֭l$ϕ4\};`YV6YX)2$d,|wz… qSٌ ܦE}FFFpEXiT FFF"WFVC>zD"q罩̈́n|YD]oNsT%-B^gMӐfɈ baeQ&X]](Ha6RT_ڹ[\JEiH۶9A~k&nh鶎%^\\01::Rqᥥp 1yЩSxbb$8m;vIu0Qa133sok0vj,da<KKKbj`T* BfDk׮3dB &ffeaee_g kkkhZ|I Vx` ٳaqG Y)ڷo$I£> qm۶&%wȴF->\.0?V!$ wz: ŧZT*wml6K;est S* r܆ٟ M^zu]8߆aye]3go} iRK/#ݻ_ $Iܼq ?r8ta)x/:80z vR 2fvLhr:cd[~<vЌ$ "1b ׂ(hHSXZ\r]D"2nfEm۰, >aeeq60 | =_5ش4^3g`ll,ULMMq7$\mx4AR$)]Bײ->f+P$Zӆ@@Ry>:lB4j" *:aϞQ=?j{`Lo\ףrΪX^YF2Lʋ8|(@2_8ҩ4Ƨ&ڕ+p;fvufqpE. Ph6091VMspFFӣ<bՎ#2j|FQ\rR k4||xФr;u]:~a!vUܺ5O۶o¹s( I;w`xxkkkd\.%ܹs=3{챐l9jߑCђHf XYVٝ tPw0m'@A  *,RaHjv%d=Ez<Ѷ!ƽ{ 2)Z/ƓOl^FbAtxƽPcll $aii). :}$I""LLLm^\\y|{@X⭷ŋOW^0y^xjzIDATbtt'N,m HD믿"B:FVÁb$l7nnT=LaӸ+++r$5 =C . G^+V4P(ytja&$YByI8щ_ALGcuu5/edVWW9,+y2r8 % }7H&IX33151 '4MLիWIQn6[t:dֺ`(;dYm."j={ʕ+d6477ldzL&[QieYvf,l'O\3e96麎 vZI`N"v]|_۷FaY&'&o,&͸DA%NC%8r|oJ" ̽>PEf q0==)4CZdYjUjD8u駟%'ݸq BoCeP2 X)rN褅N1BXVi&5Dl #kW" cii򕯄u"JVСCq9iDQWFF6;([+SSSx`hh>Ï>h>;wW#L駟ހa{ 2"nޫd`hP6ST*EDA%*HvuS RdfQX _OIT$ oߦ\.GaPPMD =z-"(m+24Q./EH!BAqCu+C$Q7)yEaݯ==2mDuQ)e pD|$I;s3S[ӂzE}100@Pϰ“(P(@4v@ rll #֐]9]ُQx4`?[wX}m]V{=\.jl6oWfn<;LOOA$x$Q͛HQٳ3 6=.JdI,8y{o7##D֫6=;{,}/˄ D! vvnVBu,"%*8P5#VjZ! <^_ E4ӱ)[f{o<_J,U]ԇl`xi5.$AڐkOM<mXzA 4H+2Q]vJ S47\em^Aޘu"k{ׯ鍵u!ma#&?Oؿc݋HYRm=|mv|i*lfn%; ݚU&љY?Ka}q<~$$ѵk׺؜<޿wy"#W@T${B޾@-`R0 ԘBZj“Ey7=~P(M IENDB`gpredict/pixmaps/icons/gpredict-layout-07.png000066400000000000000000001301511427377236300215400ustar00rootroot00000000000000PNG  IHDR}8sRGBbKGD pHYs  tIME  8 IDATxglu[{й{_ a88$@0 $UhJ%*.d~qʡ(LeZrL( 3oй?t}})SNs>{_~ ;w|xGǏOݕ?'LB(.O&C;ˇ ^00TPU5#ƌ};Щ&9ah Ac!Rٸ}`Ƨ:W~|X:᳼Z hU. Lg"" "{!ɕjѲJ7b Hrj=fv4HRl8N~nqِs | 2vpE6O0|}G/|WNϿ{B≭rm2y:@EՓx!Wa VG 0Vڽj4Q:Y0PJQֲ?)Mʥޥkj;>ݷAk;RMk#ր]`hi$ *"}/mGwCkDU}=)*N oy9ɽܷd#ۭC#;5"L1᷺owJ 6E!IW1FtQJ)v cYn=z=(3ylؿ+ӿmn_V #p b/T!rǏ^ C][_y,#s\N\znO<"z쭘o@v}oѷil7[!}gx^ͽrދ*c#X_瑇{<^Wz~=.v(PUؿj:o*E:fݾ+N̿|7]c"UO&itzzA\&I {OP s>q`)$cG7E19E,{OK!ȟ!|.2(_Rɲ 1(pΑe[H1pc_c@c>c񽋨 .s]<*XRP[@CRQ!$S."). PLmQX(蚯]fqCd|vzYdJBw <_v>S|<49cwP&{wy@0Bz;$> ټc'P#_3fG&I"GeqqQ8f8ٙ*/Oky1"B]cXDe Ve8^ Z(@4-J0,ʙ s(a`Qλ}ĩňZ#iLzw3]FCijG3fUFENE'4=; yuy]|s1FCzHlLdM?ă*wxR0{ޫ?{FJPCYGqQmhPSU(|~p0-ު'oEcY7H@y -ACoB+<7aXEx"}99>{Qhlf!_E8 |n| pxi<™_ći2zEP{ɜS0b PI$yDTG"fVMLFCw\EJcHH0A(4Z9PNe4pҤ'Z,Eu/n+63$"1Ve4XV( ύ-DkF}IX F.xoE5c)<4mHhsP 5>q$Y0GʽEX1#)oxqHꏠ*yiıBǞ( w FY&L_0Qw}C!I# U0 1{D2]u< $ltp_{we#+S:[~Zpw,Al{vTy@YGhqG=`w4i ܇P5?-Q!fg}Ke{OPg<}ׇ5f\},< q "|7G! GTEDX_JVUOxS{G\(rl J ;R.#0[PUb4ZQ "BRQR'0kF:b#<CQq"R 09sR j/ kP#,;;,{ K|G)GCiđ)/8`zxÐcGDHCPR(d=RLFk,AZ``_St)I\ib&9 LD!cNO0W4JE}v"i"Kj SfX[j ߲ &WO2Ț;Ə64a$U8T0R7zx %C;490KTӔ}CֆdYUz)$EaLՓH:;ELD;ތձ9Q9}=O|^d~[%dT&tH,~|~9}^~L_} R($y&,W3ȝPrl(S'ׁ-Y9nH%O3\> {NHohz,iO~fW?G I]m "( TtLXcq@: A81x#`!{3np A sѡw2UA> Fb_c03IVBJBt:6028(hZE턽 /I˺eq}`6 )R7!"~T\NnbB ^QHzVi;TZplU*J5֕E~}Vt~,_K/ܸ"G#jr}xq 9\G>V?5%J2,g~y}nA#~vQ)V@cx w:MUub74k^!bY>RNpXjN@Fhd{r 4n(0BGELAC?@ 825rrs]pv?l׾7o_G6}n.%B*"RH{ TK1f(^OSDZkrg~'ԩc?q7(똬'؉&um˅o-" -g~gf h}Ne tM(_{i|_em*A3̅@2FL"7n aT!(,/z12 K t0дǵͧ B?c|ߒ/=%ͳLp!KGk?q$aؠ)*TJ^egKY&aoMbΫ8,SfJd^h<y2ݑ$?]犔#C^3Ʋmy!q2$rgsU),&6 g `cB]vM\fee`p 츛O6jfffdR5 L@1v4ʭ́jue~lUP(H8XF&TtzYI ;xs߻fvH(W8s~K2;S7~7Y[Oy.5 q V/Wuxr_Mi2]/<+#fjn#W18]]*_H': tz醰[ 6nʝ*inDD(@z=,Ydc]UM(7{iGF:D(*V|.J K8v*ln;ҭ\OߓzsE"t(6I;B58V Vk)xWjQA(U.qc 2:Db8DPCAOúR)z*xDVV{˗4o_鬆iXsXDQ4_Iu^HlnnjZRL3?ӽuK!ԛm-~E%'[ b1&YbNvdAgpG'2<< enpeUun޼P;rl2yS)!w//{N_ǟV ,Pz:lI9rygN_y{h F%lBs_/|Ive}smpaUbk^.冣ӑZ Q^rCΞf a9+gΟooHL0RQ)Cp!n{ dD ͹zMb_Zшa&XlS*n[QyJ{DmLvn{Yw)~$C w^Pe$Zͬ0;Ӧ3pcVNK#^)gf"$YriTC7t;% z׌iH|By&DQO5 Ne{{\sLf|Cr^B=xR.퍾4;z,RY(siy0Zc@60 cuK,+;~[kVD[r4GG^?J9.0?oGeccK~_.]^R7FHd+{D~|yga9}bl Wn˯\/~32nOs&i&3~[ۙ9ײ(R. -mwz\x0pQNݧO=u[d A!R!UG(2ej Q$dž a.Y1ȼS)(HhRyy4ealvftb3#*^{cK{l۫RP($賂xvXZ9FX>;\~0npou3,nm1Lb Na/| U=f/~Ep b)Gbna#1z:2Wa6C!Z);.^rl{\\s|/WH{:9y6 䤔#I#\$%g$I+WY!|hx&{._\SN HC}1Bf@H;K0@\Qr *ͩ=zrY^^n/OT28,c$Id{;g8ty&]YЈgDqݐL3w$Q9zs@*#~|YZ|eP?2#bFSL@e;GD'z$h|F%?$K=({O1h63ЊSal֦ɖܹ=t7i5e)udXDl$d! TϺcAqxZ^ziqъJegS999J]Mod~~0 twCMkiivK1;;bQ FQɐJX E97 TE :gm7 +.?u9}-Ċw{X^voGfDa{hvwZ5ca4$18*E6UBQT} T՜\,-=vvNɪ^&Ԧtej1L gc#*NfJ^R+葓urk+?xb?O걯 ȼx1R"NHQ/WCcTOGl ie 1vdo]ӑ$wy$2ymԋb5 H3Uu*WrfS[Øf'0<:bxC nnŇHv{î] DU5W]% SkfZK}m*9tkkKVVV0ΛtFu|BV &u ]jZ Ð`@X| sUUyP?:IYUvJ7{ r܀ֹ*Npin߾˯0?.hC/ & V,sDQN` F5y9PpJL7"<%t @$g "W VO,Qlr$ xH0uBP$sDA 1#T010V0!cT(وb4Ϥ)r.aɩjU,vnGP)S0zja8.[n^u8Wՙasې%Z0WTֺa~- ‘vWJFq@g헸Q##ܾOkט'LwC/J8h6h4A e6bwd NjzExTu*ZNH$w>kkַ0,iED,Ӫ<- ±se QA KEeXD}m!!VMuK#xT#IQDUJT(݌ٲXddOIsm Qbl04ȣFŨp}mL3Qu,x7 5TkM~sŢ̜ dH^E#"*FTE+*94ͤ>C0J=ǴTUelM@F^V%q<NGFQ$r‘333177 jJz.9o- ZS-x@<'OjFN$Q8]y;د%{N`8LvM@Vg{ENlR/Z;zC6* Z)8H"voz! S@x:Sñv;;ңF-=333癩H bHk1f"sW.$j$#.}L8q^}^yi*?T"c"IB({i& 2aq-J2Ki745; +yfUXe)aw x#~sQCaL\en֌ewϒQyP(zCE@OQN9^o?nq/UeccB#GMjs{{(h4EkaƩYiQB}:ᥗ\xnP&p2Q9}EM~k1AsJW5و|AX#`\>-a1lf}Udi\g{(IQswytŵzzC# ef;?Dmʫ]Uoe;S]=~\mo!3r8u4<7IVJt]r7ٹ~As]WjDQCn g*Ոnõe).kQ$˴Rpek;;7uK5 un^¨7^8-i$In]5b6uQh=.//p7MS&P_BvwwxM>U`wwW$ab.#cZ>MA };Z+[OC±skځz~8o G W. yFDLo(PɆC$(aQ0^]F !X2Hyi*7aP*! S}1FsP#ɋQ>Uypt=Mru6ftɫp>vs|!c.G(r^o0LS>HQ:m HN#4'?y/G}^^E\(P.p.cV_a}{Oge}wVOZf*Z`,XᄹvvvXXXk`P1b^tsO';Qzszcσ W?bScōU +ZwzgTidB)Evڎ2Q:)߷&=Ə:0z^[yн\X䵕"^L8TOY2u1P/o<򨋊D\ȱa(P7rUV%stg{l>TʳH=.ި)/g"? ے hQǠۖ5{O.]&XÀZL/>Z-:;dCXء6ZګNLINϤG~[DrRon!m?tȷr(p EQ1NozNM:ޅo u"3n5By $ W(Fy4s3aj ٹ}{?)Up^KXvn']w)a:4E!rg^UB.B-7Ta֚IQ%-*BO=J\X T"V|#Ͽ?x̟}Wo}yuTK5 &8gi^kOڛJ]gz 1yʡ*3+3kHVH(MlTDAR`C ~4'?_ ܰ[j ɶ$RKlΥb5d 9gy{ᜈ7nN;D8g 3PKv'N8 9募E˷' VsR5E]:)UloY! II2"Rܺvh 吣'-e>p` t'0V0&Q +22*XxqAQ]1άdYVLF,k-q4Me{i际^$h͎o,.걺I< Rx\ٸ@/o? y[]`оHY*\ו=JM]%T1v~tõUꪬ/=y;Tk vG7. e1>2 N2'DYz z}X%׬ҫI;E(Qu*8Cנn}$fc)(^__Sd  >'"f㘥f)c taRTaC^^Y>j,k "%`br2I.La#!!|u>3]֗V@ Yb.3,q񣘅W^fp"C{)в) r,U;Kx_+\ 6F/(vD)G9.59R]ZZhMtAK}ko0|yQ?џow|r_ o/nm`ikBjdcdhGSͫx3cIB'e*ݸϽmM~&Ir^"Dy ;O|>태48:F9D'̺RV$%[֐1V+<8>>>x+FCߟjF0%WiK?Eљ!81 |nfN%@ ۔!UdGpz 6X= ,.\zq%Ksçp!sTw<eRQPJxa:l%LHi*`,wQ?t֨-%KhhKZa%VxOMl0|8Y Dpr~ _z^:x@+뷉9LyZ~/%Kb7!YT6 +A(ԬEqD0e0 Y,!Z%g,s=pH2DSGJ)` R5HakkaT,h۬S@AVVV'4c3hSӞ# ͦphAu'p;ו hYx^xrG).Q85d5M B: *5 TJ!2|-2IP;\t5'bsN95{].CM7hTْf/ IDATU$@>q}7}fA^œ{G\Nr"Ifu{7)meW\ |nB`W[u^䌒EHNp !NՑS1A"\U7aNg.>EUf0gZ-vvvFk,Qf'''je'22(tKa%"zrr2.市cT q>!rKƔg~C2z#b͍zne\Q4s-0v.\/Չ;>k5n,-Jew>'Dz*I0\|+xǙ<=g~Eݏ0S CY;.K<#:4UC _$;f'o$>&sܢOdY!lZhf>:'nolhubI<#Iժ̚277!Of~~~(V2cɉYϚ)2%Ӛ-gywLE#GkIYH\}NG9_XO:Uit%$ QB !IJR9J22͈JXUJ tq/qe}.o$fs깪͓, ybSo;_^fvgn?%rU2C#Cw3y}+|U()ZOk'w{GF_Dzc3T25`jทzg=Rx-M:fH'"rf(#85i(}:F,wW6ᆯ$Y<'Xhǹ aS59brXL:G8 3h{xb0O/TU.sD݄$2yPF%sƀvƤ|s\KN=H҈wN)ZO!F =2+ ܸe8~4\]9-&2AU͹e^ҋzk 7y)@5's8ܥrx*Wח3@_+uq'p wQ=]YQ'* #jkZ#~%4ʥTT̐jx6sK7f SIhϐP|sӲWDl5V3{.//vi, <χt|4ښN5?1:XR>jY\#Gdy>ˏQ۳cm7)z&< $QU,,UyJkpY3 wj n?*A k,ƴ\Yޝib0zVZ]||9 2zÀ$ C~j@xvg :!bzVY_\L9*&tO`^~Cf ` /r1YPnnbui1{$iϽp /<|1zNJ3LH:$K &%qcrVh5>ҕ%V /݂ ?6)  xڬLUCwvۥ[ D%-GN6Sj͘<816ZR2d=kB߾-ޕvwwlYSǩIV/?gza8r} OFSҠi݌p|o3#SH+ws__}q6\#RzIV[u*Y2h5:yD* :ZSC+Q6VW>$ $W[Cy>~Zt?#o]]\+!o\ ӤjX_X*…;w SpTB0wnuox"G@Qg,D=[!A' Rq4\^C+.7Lw]>^t=}}KeMeFsfݔN ɑz c~4R@N*O"<2! ()HgyLSahf6ɜ/.- AaO Պ'.d`Cb8 qg<hsTka>޽@PTE);ȑSO8IK/8s##a;sX^II˼K!vjr}힥sVk&8³gݙ,GfޙϛXjh# Cm6ȲgYb,vDQsssRVM >(hczc9Cu$ciX\˸˙Scx %#~,4/o||iժz6[Sy" Uk=K[,$ $OIV+ͨ ''~]|_GL u_YkQFR\qߤ<@Gc2 3onX.D܋( ҥUæ~ ]ˆ]j H^ cyqS$7<a<;O Ĥb BsarFR1A̜ ~]$s0:s g^;ZyHǜPJGsFL"/XĤ%48?l҂qd$S7vڟ{}0:8~6=8/+W?yn&85/ 3T"RVIU1SGW~REZ1ׂ,IRG899fI-hFL/"'l'd9'´Ŵs5ҔJ#Xr 0(~~"E<̌xݔC. ĔNqqR ?|g[#O/9!18aeΣ{'/\yQajDdh7P%,]:(k&ȑz+9nP'dN&: U/ׯsMPSŊ"awYJvi\1֫ZkN=Nȉf.)._שb½d됅ެkZk-a5Mqe>j'c- cƼdJ=:UNRb2`2a2m(H0e^aprH@q!sPQ:^p{ ē['NsUy,%ʴg$Y/cKwZIcaťNd<zDYNX E._79U!IH(b֘ w$7w#鵭#ryco ^de\ 4I<%RA,KdwcHbvs6.]&K:4i saF#Cs!͔ݟ#4-=g*#dy41h!{rug4:k/^nqP9gNM=GP:`:2 CG&$2H-( d"#G3̱$bȌH`JusaΪ`xq+=߳g.]ei,t9yW$xB܋9f/;jauj 6sZmC6YhKV &䳒X8Y$*.M)*4ǹo\4o㓶k ]ith2%) gGqV5> z3 U\Jįư3:D9dVGk_Z\@W<><˧ #xz$8G&CKc( Y1ϩ9P>z,+Ӳ4;u\Pg=:&'|+8$IOQ T@R& $"')IQn/73 3gc>CJZ}.A%'$i*㮾{?'7B_lY =TTı-\cavהnEcm14=5`Bee9Nu#`[ fڍE#Ь`L<#os$>KD =r+֢]Sp4ohx<|P*7o oAOݹw$N71# QD^zU*C~!h\ެ}m6̵pabw5FukkK\4 VK7z`<*6?eҌrxxc|[ҿ%zZxd9J&A|`yJ~v;csI.1NNw[}.5ursLdOk&{L4Efdpf899=`$yWȲ`$Ix'ojVgyfH+4%=>|DQ IPT;WB%O9e?cd0ʼn>lnnyq+/?5</iXla<]²Y\.GͿGy+r> ;[ڃ>ga G,rƫa9#}`o[^0sdͼ2/sM՚b! 18o[Sϊs<LiQza" ؓ͌F#ŦŜbY Rr{³*1vNg$M!lZo-ZD`0W1,M b nS69~o6DQ4a$ 2Y<f8Y? }*`Eڧ? q~믿>2zO-N)0ubk}3Y F"dꤱo/='ׄ$W,'qwn[s8c01W1\X&oR+clNS,!Herxx?LN=+(ѝҳ`V0Z*F5}X4}r?{?>^8Qf_H1gы:V!El6PU7:Mk+1BŤiN!&9_՚z=kkEݡg=Y"B^$N$MS5lԟ L ӱi&TyޅL"F$v IDAT33D:>r$o|KA>Rne!JEu($Zl#a82c-n_Go % tY%'Pb?zv }o4ؕ((wy9&#NƱ)i=o©`aلY*HӔ瞻{{{}/<$ %DXcyl7vu6iѿ :aSݎ#%A` v:=$!e땜LǼqG|J/1{t#W޷4Mk\6[:I\[Y[=Ϸx yEʋ/)G5,hs~UӨ|/-qX3 k J)5t-U{ُuKI:կBeY2/^Z""\ŋ#N/>ir *Je(gyyC m6ĥjkO9+2Mm9AM?g*.7oxo=㰝a4)Sõ 1u8¤*b(|Կ'ԋ7tzt=g `-Fc-5\,{?i N ܀s5GevUh4t:um0q#o$/XBGܸ^䤊(kI2 %ug2Vp@oĦP/O$c5Hnxg :.i!n0 iZt]@!VEٔu !"TU1t:>v?)bK}ߧh QSĕ}sT3\iT=y{ >nj,B5Z*Q,NUFU\qjZnBo$ַT* ,--#ﰼ̫[oEVƍ#ʆz|eyy tkk~|cd64eɨT[ +bձ5jz x3=`0x"qspp+rfMq__do/˼lll믿N菸px7w_׸~:5VE) \zgͱC66.[^a}=8&Sgs@Ω.0QpYX;/A֓=oB[+ZTfqІr '_ʃ1}C;T <#!qF&,{JD׿ Z+zcjLmkAqSTM2 o~Z&k&gX]]%O2! |+y.Zk}UnOFµL][Q{tx!ADM:Ҹ $JcB;MI8|}JPElKмT _2 WG21#/:Ч1k ?|!ϮQsIAI$Dq%%HJS'=v ܞ4nwd(@h[HgRNnbv LXQlFf Mr 0h^hB0Kg?0O'Ҡ2RJd2{VahhlP(`ttr9j'N$RÀw1RBJrRΝ;ǦeAkY\/zmNwe=$c$"ٰdXGtrrrX6);07x_o$:d+HJ+ 0%AD,?f _JF # pco_c8.@0 0ee0>>|/\q {u\F ӌL/}~38)v-plU dTo4pSc &x ޻/ q,|{?i1lo-ac{x5HU!a. 1l> 9NS\A>_qZ%)ar/8&ߟ'C'ƔR >\.4MIH6G@r@CJ'}("KJIo,4)ÏUXlۆfƅgM<_^楥%Ϳ(fH1)ĨQs50o+Q'p) z2qd x"V7p0 Bi(Ӄx0xAlnx*_8jHѹ7H_`arJ@ `Zwu|@ Xq|0&hQb*Q#<0{d 5֐dpBi_߶ˬb"BCEoC^^G`:%|g)4L}=OŁ ̤5J& tu6&'iph.f UQt 9iIt@}(XM /B.)<ɠL J+XhTJEկ| ʗD<͂4A*7LlH=nj|زA%uJ²:T*M+bb" I<~dlw≿aH9)G/7ڛ?!aRf"AbBAI-3(iR"ϣX,trӂ&`Y{G(Z"j6^0N)J,vNh,$Ց"5GA) ~m*`pL fs=2q^kn$r/<+v%%rjVQ(`w`rjW] V*Hjm\}j8e;D#5cP0$`duC/K/s?lȺZ޾a90&f|'AC;k\E6M#g݂9:w5!~OGnM2jP0 VZC-@tj6  0=`,VXim?//րة9@k i]zmY @ Oy,fff0|Gy`LSNAkn{: >77u>tD#G$ѣG:Nt:$Atz< :R TӘCVAXٳ133E3`{!{-r)=*v{mdʥ<4=`uSոd!@jO? OR)H ׯ;YB:X0P*Ob||s'~k_H{ e^ v2D Tt c&!r%MPn }&W {0Wb: !4 j<3""6 !! D @ @& CÌ& v{@@t11 e3lGPc kB=(aBbEXfo12a4"~thя~za8%?~^-r]gΜ /L&t:K.8qnܸ@ p]&OϒRϑNqIܺu T bHg23Ow.n>;7H^h059כ 2iSNP!B(F&@@0Q cˑXX)M >fr, "RQ W~ ,avwwA+NrRh;DptGG =$I&gHEmH`!qA4]>Ƭ} @$HAf kLA fDqa?EF2N$8)HȴXqHvv,$a}l@aIa@cu#[1sE$Qa aašyu)24HapB;8{^T(JhZ8NBSz!l PXyxGשRinѣ>nFٱ>TJݻw}ǡT*fSп׿/wpw6ouǯpgJ\s|H@WFJAөȃO3#Πj'Yb$SlȊ #bo+89)̦&> 0 Τ,$9mͨ4"<C*u39`` È 2Y6JL`) a0о(!p8)qR 4:$MMpL/RiZ >믿)% G'? Ǥۋ/(?7oɓEݯt>TQ5g'0/T\SH!c7? /M ru.&Jh M@W!L3dCBb_.%a"~L|A %'N , 2 m,м;r9!D{j{T簶z* IDATmcll,D8QGw\0R)CAU)RF*NsT#Z9Fv\*($ #Z:\5B`csBr9X0=d`L[- JgRib5Oۀ)4!AviwE K ,СC 075v 8UƁV+4&~fb ci>2![ `A( >c>l /ȑ#>/ʦi̙38|O=!|>/&7::gn$fCF˗/3x駣v ;9 D *%rY@6 B*D͚O9| ]s 3 $˱-LOOr2#΅ac C 9!RtxSQTQ$Rȩ2˅q78kHGq\a´̐ۦ" \L6C:,_HSL f:$b C%3b rؖ""' l0M J LFzJS&I8ӓ(y|6 i =84iO)B^I MPa/[c+m1"ne[ ?kh>:D3⣄%m[y~\)Hܼqlmh"_ȇÿ^ ӲfFT*pwqN0*20<<$Z&B"Fᆇb``a0 tm ˈt $*2R4|߅y-iX؀R |fiauFƠev 12C~ H Z#q>\ ˲H!hv;ryx~k{NgNfa3`eCCk; ~Dž7059CRիWyddeQT Hv{ /C);s==C?tQoe_ eZL;ϔKNBH%?s|yX_౱1O7O$70J,wjJ(h4sQ\~rǶ_۷PR__ cW^F %ߓ2 In޼=L&S'Ax0 4u&R)lnlyxR bf~[xW+_ n/B.O<(Rh5l4x_WXZZ|3DȀZ6n~pZ?Ry{Nա2<ׅenQTJ_S=?~n奥E,,,@)":DN\9N~qsIi}S$W"L7pppJJ2L#6P8#8nL(£Uء7kX0#ؖYA*ET ]OZ'f0t03ydx8<dF<5bb 0³c_, 6 R*2 JƑ۶YkpĔ -D) ԯY)U=P/qm&GN\l[)@`۲ LC.f˶"AVl !XD#1 3PYZC,B %& )8N}#v CvyHϒl΍7`jc{w նmx˲}^G:~o0~m!-$35UN_6Go3(Nso/aZ, L5Cjp LJ2"HpIi>ȻRZFֿ<ſp9t2 qˆU6dXXˆrc~9C>䦃xkPE4j28BIfMZ }NRFJ`(=yh S H¶L`׿u aZœ$@)?'|wsѱcǐe^я~(bF.ٶ Ӵ\x'caO} T K.>DT2<!Z^^ӧQT<_yQR:.}K_)m.]7xmkw_4irr GFhffǏ>MLL J<ct9lmm;RI{3<L}ﱼ7|A()<N"jJPB%ȅuH)izzZk<V#ɠ\.6FFFP(7y|jX_GX" ?!1/^<#F:TNlIánaf@t:<^/a!AbZk PPV?tp]&e%qRՒHGm1%%w/8JQ@.CӁiTA`6Z t:Mf̌R)9O&+j&y9߳vͶmS,;"h%A`r0cohr}Bes<]&֨T*a/CӁeYE)0P(tddYt:eQo+X# O'R\.=:?L&Ӳy|50C&nCŋ0-~ϜLA@ Gb^t(JBn+1>2Af!!K)aYVlLN4M6MNAuXr9jR!N۶9̱B4FA$.R=f;Qdy[ylۦ\.77Tkv,ˊ=D"fPSۅ8ZshZIBvd6N5B#dYQ9ıqJ\>i9JhBPu2MbEc)ա,i{PFl)%* p]v0={,6668b:dž1$$NH)C~3q_5q`e?#:ErZ)gHqwyRJd2;w;;;X^^Fĉ'oST OMM!$gwyϟü)kjbiҥKdl7|*z- `hheQXիWIJ1>~8{Omt:8~8 `eekkkxG"BX{V/cgg/,‰';wGMJ{[a,--arr8z( !襗^❝TU4 z=LMM۷s&a{{/"hbboҥK E8K/l"ˑO=^{5d2t]ݻy8z(]rJ}ٳgq ,//$z-Z[[8Pq#-8!hڵkyZ6 Shixx?mn?Ꮸ:4 _yϑ14Z.\ ߖ>Xâ_S09 ?ApixaudY8shg fBlZ0 7 ǎCt"m|STBA}cwwGъJrRJ8qvR \ZmHGiOqf#G$OFx3111%d2=z42&<}\x1гG*OpdۃeYF&#"BTpl eM"mA)<PRBiMn71df8 %^>4z sQ*#GY9$WLGFb^I" |J!`|b"9O\AZbO/&"q&!b\!dhd2( 52 `'N8dva&L8K))6d!m&|߇mZ3HlLBDCILԣ>h| qn%A@E… 0 #.)~^۶d0::~R)!xLc/qzH>N&\nd4ť%x?oP,`rb|]|>zmLLNS>|>VV8)T*x5j5<䓘IS >hADj_`>4* j<&''(6quTU:u{=J0JYbee>@^4t>v!^h+bH###ަK.!nT8v^ jX믿NLB ѣGquwTTt0>>qMZ 'N'b||kkk`fT*sǡ8Fj>(13^3g`rr29/..޽{rtY|(FFF0==MH|ׯ_'fFRΞ= !CK/D|rnݺ~r}\__<ݻQ?_}z=|ŷ-A'O :^~e((ajj W^itYdCƍwl62 :y"XsH y)n# N#رcs.{9z饗襋$~%9}3rA\!)%*rb&Ϭt_/B] i!OC>OsOJ]ץJ±MOp"uyppCCC(PJQ:mۘV~jj qyz'4䧟~\孭-%.裏RI2 ( |'49.mMLvlY5 rR P(Pirs+G:N;l6 +077/J(ǨiѠhP|Nh(WUloocrrz &&\T*3BYzeYt5QQizzibrrs0 |h<"D4r9RLBqdsf֚qiCCu._,;%666s)Jqt'>A+7nܠ~_}5j[\.iuul?)T*Џ>#Cq'FW9Y)YƏ819LiCLD{a36Z#%1AE%I1l+`q(F !4Clܛ 1r[ ض}a*ضͱaRk0)bG+HJُ%~wI{yfQ1_K\ƚf!(."H;y`G˲(.Kqi%XBpL2<{`YVRN&[My&V] 5ؖ x \.F@isk )ǁ`$vý^_tByCD灈t NdWWn6G7>n7L/[VVq…H-ffzvvv8:}4+ T^Tsauuvrp/^}UP*<04ykk \{Kė/_Wq\piwށRaAܺ__͛7Y)M0AsPTXJ'IbM}݉Ķ00ضPgHst~\)"a |6vbFGG.ςԩv{MA,vL*懱0ZyNXQ̈́ .]8Mt](q*|il @1q U0PQ.pMa%r-Q*B`ҔϦ0;=L&lځ)&m#(2XfB@ NlQe #Ǣ]+tRIz,17;+.ۦ@!gQ.nPX ,D [8QeUK Vl! Y?$Y$ئZ-HѹYRmUp]7&135X{C)Ɇpv t mQ8\&4HTJǑdf133M|/r;v ffgg!ѣG188|>O u=f$L( 0MncKeLO!@0B~`. 2z @de[i MebwwACX:25 q*Xj&#^ 8rk@LFB}%bfMDY ˡ\,#d:l!:#}O  &eDj4i0{SF $3LCDj3 eC"/LC@*MZ*󐴬D5j͆!H3ɲmY`v}EDS),{ᅦv:_tvww W޼w.ijtnw:4wjSb~ꩤ4Hv{9 5qhHX {Fҟ_] pkǃ4x+T :DTo`R\ʀi3nu16([=Ԑ|;+-̏d{[ ؖx^?b  l _*^q `H8>.b 2ɗCE!`Z[~˧jX'5b8@>mb/)0Tk4JJyeׅc L m=M?B/)ˠjkpU,YwYP-HvF6 D1 $20Tt%Rm ZqIݟeA{#,19ԡ1v i =_s%o4nvG~sf 209&BO(@IF@aumsI%kzIDAT~mcdd ;MMMr|VdFXDZɐfO9h-̬,|?C!^o1 W`[Wѹob15l/m0Z mXU:,mKXB4ꅿw?P*hZ*l; ƭi͎BHN/h8& wc7PH\_#hv4zF<'dR0<  Nz%mk{$%-a[kA)nӇ4rC/*y uC%%T,nx+yȥM46mf1Jht$j UրV&V9De Fd@ffgxwxBF6 D~:4?gN W<pι?L5\XRS m YICk44mz!&J_*Pɂmg>ZB3JHM0FڧTgb)% @ R)()avЌPZ2-00m `4 $+07dT!"F: V EJiH0^#dܰ13S G*jތ,Bvd9֑_0Ç5Ak#VR[00 3 @JL MHL(a;2C 6LAD<>&mh ,\? -W:l(%? "9#(PZ3ki] т࠽欙&?Ǖ2Fexo߹M>ǰ]׍6 àmh`~nBR4>6_LJ D"2~sb[1@j+A^{\8|s:m}OVUAӎy~r\ ky&֭̂[ill Ӈ/vvyiil @d6?!BĐIB[E?[<66ǎ  0 0t:0=fr3}ϝEE%b,'CFT^IR(~'PK:=ޭԠ5;J]7d dګ5ɤlDa K٫{(yyfG 7`ijCn?" ].ݣF \_QVZ5=٫b_2tzZMoFAwkulQ*hb2Cvm~^@dC,P뒝`\_ 4y|Iv;{ut Qh>)82RtaXhhQ:W@EB6v)ɣ(WD=/ a:dWv׃aȰR(SɗLCcK0mln(lP')T."! rRٶB@F^{53ٶMn uy{)%0ݺu 3t{hdV֨n-Za%lC`<P0e}ᑀ *3PBQ#ݧ%A0M3-&*!GV+Ql%KI%a!H&! -\M,0=҆R a$.?2taFd(Ӷ ]:&u:D"5R-ۊʜ!ZC$;r SXŒ`6MՓJ"Fpe d4 Rl=8M]]O#~^{ceJ٨PU ^FHms?д*JEV l ^kq^̜a[6jT~o sΙ3>F"QPb6{k[8(Qryhж,jMq֟A$ nRGH$)ݣ.޻kh41k|(csh<,/Wh dwotVU-!x+~sQSV0 8N%.+~{1WmRIJ5nc}=$7= GFCo=ǽ{8<4Mz0Ln|I,i6[L1{3 k5Y:%6)SBQVWWIvKKKzZGq}_*NEjw^&OИ %t:ܽK"&78kuYXXq|A֠T/%Q.If;!\^wT\.k (:DaQX,J ,1'ęhVPJM`{ Qb@`wwaRD`6VWWyXZZXqvv8iZTGA 0z ..jhZMf<~q|> O{s 0Nb(Nyrr0U677 (vdR D+pin`R(& dB("|o.;J) ~uD1̸ b]X!`_iit'>"&B--/+u"ە,QDĶDXJN)צ CLH1r+y$]qSJeYL$)iR95\7d>xxHG SJ19Gj._0 E%˺:OM2i0jxMH1̌htmۈAR Dޯhcw,DV%>j@rY0I{Qҧ@Ld\}.B7EζP(iYz=jQh$gVHE11H_l*Ŧb5cjdua"Ja<M 8Mp膰\ 6^];G^IP;v7\M",2rofw\]xC[n 5c{3,yLL||P"5i IA𰦤臤jz}lln⯟mF#EzN ;ß¶m\. Ixh4q0;ƒIG簃Zz;1;b@J4*$ gM p.8z%&֠VJfmϬy ӠHfFi[h5Ty;u'$ o޽4wa6~_1~ɓ!*v шG۰m xOEضM\% yƉv~?7k:QKoHx)Z~ @'IH_@ Y&2BdŕE\z\ٳg/~[UO #SI OV<<1&Bb'_7eDdOy&Wj ̮e=y ?9aIENDB`gpredict/pixmaps/icons/gpredict-layout-08.png000066400000000000000000001264241427377236300215510ustar00rootroot00000000000000PNG  IHDR}8VGsRGBbKGD pHYs  tIME  X IDATxWYv;~.m{zr ($`}$R4bTHIʹI /?K( DӂAh+F)²)tRPJ(^ *:&+́!v:~j$ MٸDBg:8vgmw%&@7S$n* ϳ}wkR~:eIuoXQ|mK|5}!n;gu{$,C$!iA%%an!FP$jI܉q^ v{^f*לk6Ab~d,X# h͙W cA:眃|q.#p]ԫr>ZNL*o/`0?yoUyϟ>5R" pOp#Gag)QH{DP^c@`s3- cxΛ@1"S^h"[i|8eҥKry&Y#DDwdY5imDn5]F;|H a P^PW~?#QໍAW2Cwck#WdHdٮ2-//qS =.Ç25=zOkk֖(3OD8 %ben+wٕ!o}a,ݜeB=HZ&Ir3\CY;?2M4'D33a~0~Њq ;=?y1(tҜ]}P$IB9!#|`*ñax^C (G?&y'w/bylρ*  *>+c 1߇gp{]?ۆ)^Pize1M\Ʈ,y'~g(fLNN>4U(vPMj)a\ZtH-I|ebxU(F/Sc U ,/A)èh兎79QTQ11F]F/ܼuXޫ Xu @}p3}s\aR1{Ή!rۼCejD(DutK$ֈ *ׁ5UUdʈИ&+#e/hVT*da>6;eX,QT+ι\ aHTT*P QxRnT1"3d*=B"bPUwbAJE#kTM+W4Ă w3=GEѣT+jE$,*1c̮D8 %,"FukkUZ1Eԫ*&ykV䋣(PhxqA'"#K6H8TKP3h0`P5 ss5ixJ սi78ik{y}Q +2]> Aq⽲1Tkd0(8ujf`bjON4Ȭ]%k Xg}n,J5)eYb!0ͮ.B!M6JU9zQ31Qjʑ#$([mZ;ۼhQ FZ^xUS'ٷoAvvvNϟ{ޑ+WPUea>t{ v/ ^{2/z«FKd=S&gFÇ!^~y4-9}zZK|`?m{%Ν?/,Qc jIff&*Xct{Ύ#xv~F wK^8W BIQdLzVWI>tHs)+_\(. ןS?%s8x(1!ߕٹل˟3Z^z];u9/"*yQC ex2 ##I< `m,ט\!;:OUJ%@IR(صQ M$MѢFY^.dN<#[97!GL_+Fҫ*$ 8~|0|`7l#6+z1H1A|sk1b$NB:QKKl$1=Í78u87>;<#<ǥιw'/}鋜:u1ITC2e~<___O}iz N=YJ*MѲ (7Xtjl7ǎR}+_s;O6P(s2'PCnʓdh1[[\/;B0adLzO /X#t2{ yWo*'ceuga q`J]yY"(*cΤӜy)Jl#D\p-&m?'iwY8?F?JF/11/o 6" G0Z1D#?qa[occ+K  \G"~hD2^JRvbx4 4 贻Z`Mk' t:Bd춌tmm UhPTcKaODydvO{y=qfwNcz)Z8z֨1xa{c[ˬ\Iwx縱HTˆ<ѧ~bbr'| ?G?7-l\xrګ>- o\x 7xۯKxehD Ɂ%2I"\|L A#j"AdG2/*=/R7p*yvvvzDQĮ 3G(x) & Ɋ엮D`Ða ̰ܺ,J BY{): A `TH 3s|Sǩ$nXx:$ _?rp]~'9z8oț_lpJ;W.?O<ivU\=03 E]7|]Z>=z͍3lV` PlNgԫ F1M $ #POA`]DJw8pp_Kār:jSy|ei?U^~>[Y~/39UN5B_ >/yVP$a(3|+_b}{S~}z` nxa/ȕ`76ÈOfh/9|%+JiJ%r+yI k>9N5p Noo{L3ڃN@l3ÈzC(bIhf#oeaxbm^Uemmfɕt{[Nj`kS4] aj@wJVשj$m rq&i'~>BkřP1Z9pZ*jT(d&1qz5!*7~>e?3r!K/zo>8MvlKcOo|Eo ӜjcS31*'C'@+++_23>S6_}"EY"^~:FRs85O`mckK7p;X ģeIa cb*%eoJL`#7V;މJ=)J'D~QRzO"Y4dA0X H5-!bBΕN2l8F *a̙S滯ӈl[J^E@e-$%I€pADT sPZ[g(S17O |Խ 6??ObkkKj&6_"O3392 NI rOQLNEYxt;}&"F9EFLMNi$+]W*%(BNtֹrmTl?',hw?ÿ772[!u=<}Zu^y7>7tkxcû_I>duQ}s)~"o 7.*ŀ0#C^et/cɹsJ7Au=a"&eT*U*SGz2(UGF)qdXՀw<8ա)_f<GCEqJihw՝5+MX_[$:7ukKdNQXZR0]dVO%smu`yApAxq Ept^/,wu'Xv'rcjjnwT- w@ZT!yRj4/=%yZȆ4 wtƊوc'YJWiV*"с}6w8%kmiFI_~Q<g9ܹJI^!xM#1L zwxُٿUT:;[z+SVVז@kx)īQEDk.CtY[Y_8:[JD4{T,KQ IMp`zq3YK|k(W( w +v3.oJ2-ȋrsT ^R1jq$\m髚Rj멩I۷_:&/}t1 IV'2MvjݣF8{1/Si\>j#"xv7I]\9p@Y^!Xn&m ٕ]6 l RU뢪Z-> ~طK@Da'i4 ^_'jRS!y^" zuLxw#xG>ɕp}:{/}0$LQGbCKY sF $ õv~29U?pmiC\]g,!]G~G'7|#Gy)sūc2fFKdan'?}+2?;; "+싅k`HTU% 7pwWܐK"\)5XY]/&( !j'SqBQ˺.^#SDl00Fu ,F l*bc(ij;#fÞ|x]cLX@(aO\jhwT+5& /"i1Џ>wZU[J*; rP̀)зd#loK?G#<,8yɢz?s}A`o{ ˔JQ4N"wV(T@ ξ1j5 'ۅjD3aU Bd=*+j4iP8U Ē8P.{X֋>(NeJJ ^}rȆe 8=ދ 3`e nIC(d0Zg[~]RB766Qݵ.i@ZZjdy{eggiSBL{7VUV%rM"dؠrT衇i AܗN x./.J S1-25xC]@ZUpͲ.Ah^} T,7 Ϝ$"~c e^ǪםL$d/_Lwqql+8=HCޮ!ӰY?&Prcc-n\A2ӜV 58 ?43PiE 4˙&V*c>qG!{r_p"7sA.٠@Փ^tQ?j7K:zD zD<քڜ3L n\BV" W޹Ƅ#"J%۷W}4ҥi>u2f666ؿ]ӍT!Ԕz=Y[[c~~^ c A,#c3 vO!Y)qc0$lN%K讧\]\>ǵ+,][ĉ,LS fkMe;h}Z AWz$x>H6֠Ŷg\h.'O0;3MdELQpTڭmۻbq_và[Kـ9j,.L`gj$k)Z(˗yisڕaC%jUԉJ `2WL&`O'UQD+LV* bS LXg[lgԖMwZTN{sס:2Q`#CZ R0U=i[!|nQW%\oz>%3PFMt>CkWF }WxCޒǘԽt̉{UZ6 ߑleVWWYXXCLE PHQ Y-d5e!TY6BsӬO+9{hVv?Fu1RZBZh y. z"+Rѣ;Z W=QSH y V*4%Iup`bR]>,sÌE}0-]%qV1eDQ ҆+7w.6禉^?ՠ@So;^8iN04T\9T &FWK+.-A"#D%AjPje¶5XPgw *O;]-0 jEuA'!FXkTFn7VQܲ*xy쳢++к=*Ð0 oh*v[+ EQ099)vVv:sss{%0$s$y KxϤaq;ti "SG]-8z)TT@#$q NBID-B<՚ݲ$"aIl+]L#^JRtsX+u#gNՀ|8Ď2KW!\EMFTe{[ț//sL)L@h9"UZ_//+dRX\^!i& ͩmodC\mJjSԙnxUclڴ}Q-tp2=pVkq.yTBGoǡ>V&T0RhB(˄@Q k 9qXW_im*Ԯ9;oW&U'kf zmz5ꕄ~GW/)j¾@$DD`v}b`۳Vh9}!+7IW2r-,rkzC=1!rtMуd07߸FB9QQ7-f,"==CR 5ZƬugZ{Kgj7ɿ/}j)q\RT~&VXFu(T~ߐsԒRJZ[]Q1Pzυ5,^F]H10*~KE .Gg=Ng CFd(V?Xhz:mD48qU=5J! t:]| ]} Q ıci9$-^{ֆAnn=nܴLÝ(SD[GT0"\睋Wz!!S,SC A#y0V~Yu+%d}4 U(@nK}HM^y-AhR.ds,A+Ὃm~u^?gӦ"sA$l,tlU#*;FU<ٜ'Т!iNNaL{KV`ejh3,NU-Af8e?`x3M7"b䪵s NB8zByX~C<{Zш[kc2՚ U#"Zģr>^"2GVJGPFݤV?Z[KNOO8oZ}P RxiТȬHp~rw--זJyxDEtZ:p•\]Q*"+B1UUJ+Υ<+XQ p Ry/$UO2qQ9Z\Kn=ֲ73K\6BZ͈TB%vxy ,S.-,o4iJҨOrm+O%,]ơ!:8蝛#igp`4xvQn4h4MMMɈ@<=D)^/KzfN=F2,5KDQzAA(k) TFm}#u&^jEe-߄'C'Ey#'f?=ŏ>uZ٬iiC~":11oBW+T˟s4jM)?~@hcA-hG#Q)֖NW~ gO?)>(fi-;*;E~p,mŷ2"♞Т(Wz3W)r;9qIu:b_%!:ax=s"׮55 ˱$Gd;LvmV<}+1[Qc?ԤVgѠ"v-fs AR]AnRu C,$0 T {mŝdԩ[W,`qijTcv`ǩ!-ޱS3UOBrKg`DUt@! uz3v[eSvU O<&05;./ |3|}[?4sƿ`CCӟy _@#aHVw^AODz1EI1Ai7}KĬ-͔+7Ȁ^xT* }Wېuoǡm%*yeKQxbyp;yȰmQC5{=x{xStƣ2bhe-B G09٠l*iPۛ6.`9a8k>cE$6[>niZ.fyޓ_F4UwRa,F+}%̌ܳVVq+$QfG#c$Æ`cz Yz H~5g hG 4=M6Wn|~q#oDeEbVfd-E%67"*]sBXc*-O7%XS7݌)͖ir8E z=6)8zT^hd~OZ$!o~0OHӌz N$N6pq*QL ۍB58SdNzw%hL0VXZY!cq|V2s2p/~mYF.xhQSƂ$YQLeO)j42)yS ٮKr~kS=,S@:GuUX ,  M&qo>zq7 WӭvK& y%~s hVGf,'CoQ>j7vwy7BF2:ʻCde23&vc6Qw{{6Dk6g[B4xaˏ,Zϛ"eĬĊ$KΗʹ#VVVf;Mz +++J8E%}Q]#*6vgqYDNq>_$"zT(OeEO@RJ3м"ME$,tJNӉ\ik]C(M8X}O9< G갟0sXt biLh(Cɘp_kj& t 8Q80!rCt5cm7w8]pXi??w˿kW/h-q†.<6V$4'[_Һ=NS$o 7DTs Ij\XMȓG~(DV_,ꃺ\Yn߮ͳN@ӢgL+*_̥vfu,2*\T(fD[xqw_ [O~GxtfX tF1 _zv{=v.Nf\gc~pW_ )$B6+iHw\}וub^Wt(o}Jy3\܂h$+++3L r"aԴ-5§B᳞xʪ7έUݭIdYbo`l ?iX+xsքXέ,qP{c֛"yh)i$F|?,5g{i8r3BO}fa] !>?:`2ZA14WXnȓ ^DbNF9],Gu"0ID<,yWekkIE MMQ8S/~_b<(!xzq%u8 r}gxXG#ZszW'WYی_y/粟aRTN,9őDQS6O`ZR7Y d~U7܄>ETEDX[[{祂VA:pYj3n+ՆٙaR6ܰy?͛oL0/4ƦAġ6?v=||=~.q,3)V qp%SƛcZmX͙,ɐ!FFCn3Z+{  TyK sYHA =RVpűP CYZ^($K21"\lIMȹ+u{xO2ŀH7O^?[“[˪$Ow?Ec]Y9bY݁{ٵ;wD\;\sM kiӶ92YWtEWcdT*8+F;9[nQV Pp;)Dd4Kg$wJfWo}Za ֗iB`2A* L5ЄO4{]޼qӗ?ҷ?ٕ7>8G?_qs]c -}D5W~@vWxþ"L%ZG6b|Fc.ބFC"hl 2᜙*({/^ˋ>NX;1̘VK+Mj0~e;%%Ti-s#H|2,^G(ztZ3 ZMW<*s!}Z/[+_=(;ue Exڹ˸6JmE37ړ GC\d\z u+ąh +2ʮZ{,\c<ugy#Nð&G v{EVVNO|:'ǤQʊ>`A4wz4a9?TG#ǓqagIzclK>.QGW#a\ѣ/}?񥯬7#Dj3'4(I<qWdh>A2R\@Ȕk>Ej٤h4P)n,ȲvF7z||%"|Q KŅI>d:݆CoƄq|B~3ig5f[/ ;/ΛxuI!rh]aC`eSs-乞 Zr5&IL3M9Y:׆UuRLYǹx-Ft| (aO1z(!p.Z@*9ÓxWoߤ2pOFDG1doȣuw(1SJjJa"`? /1QH;FP17GV8gZ{SҴ1 yK)xAp#'ܺ٢tFJӕJdz"2vL>t:㵚T~Z-\,Ld|FOdv!\șD! _ya;XF#ChQ%RTN0ZC9׳zL 7*`aۛڹ+Ro%ae'cOd愫vʰ9R=ݩ1B< ~3ķdy^xfV$ئzoݓ,O>yPS>ZkR^SK"G;c✊YعO$7?ǞKnGcxi-I ++R4)C%90FcEe

jQ]㜛&s ncgg>QT%S_B*lggH8z3Lw9>aukNdzBCtfC*s@V.;@4Ro嬮QF rn}x%!l9${MGgZ upܞ p0$i 3M^^)מ_eb'Z<ء% XU|kLt e'.}Vi t ') ܛ.4^(%]8 ,R21Zx2Myc#qX_Zj5$bS! >_~K˗&w.L?^~_WWWq!|*Fo>qsyN1lm[pN5,^9:%NN AK)QSTՂ:o*z *XG1f_\XQ?f(N9'jr Q dp3 봻 : Y@SUR3*| 2RIFI'VלdY:~q&9wE5͊iB##"rem>8֣$n_nzjΉ굝jQ:Γ",_38dȖSݏs6XO^SYZNэz\rZESAMpartbt6}n6?|{e4:5^Z7*ah4*Հ na6j5EWdA@R(b0nmmy.kەiu!ՉT.=y'Ν+f[*_Vr)|.WZjj{>ߓy*j[caL# ;rKI4_A Ve0#bDrrmkO™Դ\)$OGXŠ;mLdzdiJ>8 +6&y>c?%N4WJ':Zݰ3KO!YVSa\CFÐYN.4FݔΑ[ż9^UԊr#W6F0\-ZUQui7|rxD-zBZ(Z 8gP!T((Su Ϻ8w#L0Y6DcY[n ڪh2#F?>Kk*;%b@Ӣ'-IXƒTаģ{uG'{5PgcbG?C4U/*bx2kO~w"q,1YkeWSĂa]~nnnʔhdѐ)]]/njR+B'?W5o("y.b).D_;buO]xKyjBU8bze(sGUp,[4=KEY9]+xSA8T5vZ˲Sk6u5k_Qk)tVͻoEfaG(hFZmfur2h   bg( @[Θ+OB>x3ir.^\';s&O.AQGSƄa=geձ/?w'ES-߷%t",!ņv!u_iVÐZ&PO'Ѣ"x,˧&SUB,ots#% A`вFO}{VR-uBy6@E@b)Y^I4+wܑ X{4j^ uhS Okbie%Yj,џDi%vSS%}5 } +N$Q8pd$|tI Ianf yŘh|kӯd?&'K=epr4fH?8/i4bCH'ezcjk`8T !w! @Ti%-}u7Q@2uRw%sՑ^}7MYtKaB$YNlj`4n<3j0bN|QJnY5b& 2P.ro1~ K-pTrf5̇=OœOHbfn_(EzRrd^h?FrG{b NT7Ǖ"boLעcY:iGѠVQJ=LiqŽF#1ZcZvE njFgf?U\~^Ji }NBK!w wf (9޷-a`r~HӻwGo}Dg|6Ȧ-' }:(۪R*^뻼}oo6w觙 Y]YҖo[ȦcDSV:D6lsFJ^L ʜn{q-/$ͅZ-d4qzsnF[foSPS֣.JhLj|:P Pr(tz{W鋧KyDwV+F$ˌ#SBZ|:y."!Kne<k))yLP% 赜lcܺX(ue,1-=<ϫY~,O3AIlyb\ p7ӸϽr'>;\ |pɲBEwc7=Ѣbf[y]Y_};Y_k,ǍHV!CΟ={U9sg8@e  .m3A/s*ib,/_Mlȍ\Qi9 r8:!2$e)qI½y{4wnCzo({8:18<]0npQ88 T7#*74g%s+zj"Wk¹VB~/&M1JreU6jΝ=.5G7RJXS.#vnmV+CU `_|\rF;C],枟#>,rܷ)<]>'nBuGRէ׿'jYeb_ꖕYfYo B&'1(pBX,'2Pexȳ:25!sֳf2;*f%ʹu4|&;[mXsx*bS,?~@nh3jzu3-firwW@F|p8$SAadXU$!dqh|qWd$-kIZ:=HU!rF*ڃ&ٟVŋ/b T )A)> seM w>ȑz. />bst~g͝eH2SV 43F$g?FLUhXtˤ_@D >OƝ).g*B0VB7 [eŠ{{p#<ߣ@w)ϕcIr BT$4U ^ErC V)4(#/'Sx1ɘ~?" ƶ@~yP*Sy+?Yv+yYoe v{ލ&>s|x{GG#+gϯ85Cdq/b3ŨClWBU53Ǭ4k;?gK/q>c:?G3S;2GJ, 6'x|TxA峪|g w`pƔͭ&l gu&Vֳ Nd0\ɵÉB4³O;IÙ\,;!t2 ^MSfhq Zb*ǀbWY?#xq{o]:JPUog N3b {1aSkenZc&sv߇NH|Q=ke<"lmnb+JSܢB6u6/чfL`f#I}jZH9լl8Z*a0~ɼM"Tzs01SrQ,M1qF)ئE+İ:_ГiV! -*D͝)Vw!qh״աOy [IЩmW 9UIĹd$ ȣ=ʈMAϹLj$ (\ɯjpx jaFezF.R(+Yh4$N>Re(*kaM-N.ifEs{wxW8kx+1Fx i6[on/ȇ~HE\zsk &yXk>uy*q՜rÌ=Aň2,4]  218 k/^S:'C޹xe3p)UѺ%7dQǧe].@12k;T5 >ˣe ;qX{TnT(hӭT+Yhrѣؐ&4!,g„y^8n-~v3PNAitZL(Eo=28b{g$M#//fY&\|-0fh,*rtT˴23nTm䳶LUxT׳k mwBSuSf\nA[yY@`͇n*S AӜ= 6ז4-Z5(U/祳?Z;duկZ;.$:3E̒)u*y., ڢyӖ;sTs<$CqfZXi,GxuEopNxcYCt4*JHz]9yQfSpr2?WvQLiڎC _N… ivY^Z"L4M XgyFݻw{޺uk̪, VZ%IϐE3Ze}>8QWjP40'IGWZ"\ ND+`+,r}̇匲Omgq}J4d\]mKt;}WAeR\Kª/X^0PE._Y^nHKO O MTX$ˊ3s?b8A̽ē&X{Y1J''Zո}|"Kt!uw]999ˏ<>Iw]FeUgJGyRX>n!)gm0 =zoE>5Wj|dRyYgj'> #[F4MѬ s@e년A`J{J:dp|,XyF;ڔpQF]?ȥ^w4="jZ=c4UWt-'>Ν/;9_t|Ҍ7+I;wxt]{yjnU]wJ0T{Z%MlSN&@+zESE|f\ty=7VU+$;G7gSdG?:)G#syܹϿ}J[?0ēdb,-A; ٻs{V+ %gMN0YTΧ g-zdh Ix沓Pa +-ڙt@y)h+q$Vy9*w6ȳDM 5D#Y3ىxuʪ,W$q*Qi B<y%MSmt]loml6 1"~)%/ׯ_'xg{oo$ 4W5wO=fQ<)K2$) Ob% +Ds,n7y!E*(uq-5+|%$9WmEZ,%J p3e:/^W C 7#hx9㴒'jڴt>p37cq8u]U%}RX\ѧq%l1Uۘf4LwxVY^5<ZMcc cKa$͞U'ᓡ;Oopa9nU@4C:xib9F7͘AՈyN G{?gY7MA*Y7q={qڵ.^BQoy܌ka>ejVZ&IB\c%zSsc~3hsMCnBܾEkX$I[ܹ_ GGy T档^,Vw My6ޜL k 5ʜW4kj4Ĺ*U+kWy9 w26&ЧIi6lrN%MD@% |"W6g6B%Jwi?=[0 1Ɗjm}|L>-;d1dY?OJĺZ4OFz%?>,v:׿J7oޔu}'/=d2aeeEw$ $?Ngy+WnS9ѩ4zȜI@5Ai>Ys#TGt:9=%Ir:_@=sAk;|[ -k8934. kMJ%Š8!-p8up46+^璫 ԧ8:$OkIiY(\O)ꭜvRYΟƍ'Fz=C#÷Ѭ Y,"Re NSX]L0`5pb!K4<<cB5Oh`=%EZ2gtH,ijV)i&w_Y'|s=W^ySUfhȅ ydYƆ NN0bk5$n>$хJ\eEx֒$6:;LZCNy$IiaDeT۲qbD#b5(Ts uRalQKsN$垢ey"eO51i-ɘQck/mocי=uIq(jiQVw[j#-lo;_9DZFN) t:mr*N8rB [a+W677q]!`mz=$!nܸ)\r|TcrrV;;;X]]EEpI|z2WSe,=m31No/B( ++9dDJ9CN1Yǿ{FEC@nZkFYh0 HA(BDZ1%cB M/0x} O1+{08RX:ab hPde}\2T|f1,/"`,|RDJ<0P09yO<@fv,ۿ|ou =<υB o:?sTFVz8t@ZOo%w o~ DgwB 7^(}U\s/k0tpejիuAxƸ-$+{ } ^y啬$k (KxWsr{e2֒I699g-i"" ÐSSSPJCE( طoFċgςf/]MFU⦈mBNR4)5,h0;f2l0XZgYVy]lSLjȥLi{ĂLbeF 0RBV0 ǶX@õ7~w]Rvk9rId[+y4~Oc}xIw=~bG*w?<^ Y`vyh ˮxYWR Rb@&ۿ5A\tr`8tȦ ̨4 po#xt=P.f KJhC$!c9La3$͌O!1IQtMC hhA9Y/1H!w qu 4>Aȗ)@IBG'fr|t0>*9~ ZlqmB' Q{"$N=٘JTpbóǎ|8q_Bo;Je(駟>?y13nZL0N?@[R2LGܙRQ6&deV +^S( (8pb?ƅbZ|rc?U6T[k[w(ObCK|r(8٘ĩg7W !4 A K(Eoan\43T.)W1cf~} /}_E2N߃HR5OYa%Jq"%TORơ d2Wc!FB`3HB1X$y&!k0f]bj !BX؅[ "4f%c| bzhc_j7P:D>_cD~K)g<}\(lmmtRDwMm>}|Fb$=>>(x){p#hsb g,2 0 ќhhgČvVXYX__,cX`~.Vj 0,9Uկ#h!C=P(A%+n#G-e +R _Go#}ZmYW ?FMH8xh? VpA$AZ Wnrl(`!wE kXdUJkS6veH!5v?GVO " )HLh"7İ T+QP+O>dl=&ہW!}(ט3qDik8<;) lvv}Xb}NpXY#!xe:/^|9LY3"BVmQrqt 4 iJ$4>NlrBk"hف-$03IG ;2MD-uC ߇mL(KʬM0a&R1?(3k" iH8 "vCElVB|'x㣘M< ӀGҭX3QAB<8Nn8Ir*`R\9t, 5r"p,z̟tDy ێCvο̱TD÷0Pc!Ǥy8HX#vY#NDELR~0RD N.O"W`A$G261" v >{RFN\ZkQm <csקJVŝN33Ś%IzXL&nD fˈq) 2LVW"k~ <5Q 4wD@B:6?9ybGnBBxЇ`"G:`D҄,7rs"ave$19r9Қ!#H+p" &IIRR~%nHb"0k(d2&z KHXbw.r,9dU ub4 2Xs|]1Hp涝)M$Nv;Ĉ׀DX=BSjhDC#0')_8ْa]$ӱe 9d*-ȥq0!4mP$%4u:m\peQܹ׮m׾R8r.]{+xp!yx A!D*M#a0@(Ѱ#{F6j,Ե(cNg)yhАѣ 1 #J$ vOL04M():# "Bα`Z8nbA` Z_c@ ̅b4`D+pՎWzێM$f? ˲!8-11'e$WC Ґd[& bo\H$P7nXCZrgAvc^hNcO HhSl&,B܁@CQ̢0Bp,f4aVMĆ \k0=Ʒ|&U061` V+`>z,DH;@l??c=ƭV n|x^`fL 7oD.\.z ] ֚O(Ɛ-p8$ΊYŻ2yˏ4O!ED[YiHVdi ͆3b Ĥ "%>vنFȱ)OA@Ħq 4X~A;8 C&vlIq5(@lGXE 6ch&=4[Hs&A"mE_S*CBmlCB 9 C)>W73KFְ,3ǔI* Q'"c CRT8fX4 BR!R*֌Y0lMlȏ;d&'DR&#&MF|h 5ﶵ!"zꩧ8Br]&,/SDVZ+DD͉   tڤF\B>!%u숐 p@(kÕ={; ̢ځiٜ9`0alB>~y}is؎ f(FT,D(huezÈ.lȦP:}_yw bQ).4 f0(I$l`Nv p+٦E7<,Dl&ii˖zDҗ5CFub0`(bVpiBE(챐ȂVs}!;h4I\. H0 `ia 񔊐m, N.~20\.k<95Eeww~8# ,ݻw{@(b413;q{azf;(N^F1u(h4($o8XK&Tv 73?nKu2,qA&އ֚0 011_7 q466ν7nđts iGT*o;ګ_þ}s[? wѨ矇v!/OCE p{̬)&C:{ ʨP%:y籽 q7ވSOp<\.M+|uʳ_SAl˩b?[R['{~ArL/_?r67^}s( a&)ΒVz^~%\ÝEގek ._;# EK5}|oiRY> pm>fxL^Ei3_ATrDnWY#7j`(Ea܍|~$rB&H  Z;mP,ƺd=!DC#۔(s8qL5P2^ӓMVJa6xk~s3SAO=p.B왯 c}}J}5ЧcT!gO0 <42F^8fxsnkf* Pt9CT+%nr!RW8y `BDPsx=)|xakPVGiT,Q*:Uk5;ylW_}|vevA jH-Qu&ACX*:^\LAV?JP=kÀ1^|H_T%@a^2%aYlf䘅nKA@>D@ۍ {(%$r TT+0`xq}Dj2z HA(6 Hi! @6 l0@dbjy`b !BbN<Z3ErdH3#oIF)ob;P Ğ%'6J3$7Pē8-X]ʒDdeF'tF`K(SSr@c0`χق;P M#zHY&;FNu6 S' <$DTBVC"8>AP xnnLӄ7P2lδPo=9ӣyp&@ )+n6f*u˔cH*ي`MH+8Dill{,}m "Rq$/ؒ`5c)Z m7dҒp` #Yi#4)CHb d0*J9oDPPa @cIjSȎ)`bGJ"yE1 -|E`,nyiF=6%Ql\#VEŋXI#fG F1^()[ⅉI@3wa$Y f?'iI%A!9 " ͦQ hHQ3C8GG!avO>ArO|4Z߻`{sq3BOy?| ʥfggΝ; "<E2>~ ˖n\'2j7 |4= 4N5 C$Rđf?IMltۃ̑Ұ-֔kQ1!HHjZLuX-H @X1$(̾'2|7 C43ouRqF*EA4S4K9bǃi0@:}ALI)g u!'&}^H~)~4 b:6Z8Dir,ɛ%D >,ICbv4LC@Hp4YqwͤumQ cZ+IHT,=w@2h&V;6}E &J2*mSvY#AJH+( )Ub+WS(}UQ,\fs-Y'y\U0L#= _[[ފ AXlЁgj*beYX]]5h4paH)a&bA~3OSOT*qɳךqsXXXNМ8n!?)eD#~e`'>|>ư('r.}vN?8}]C.㙙Xp_~ /ᅬx' 89|*RhBo~6pʏR@reoN*D\~@?g}-@^\`f|>ׯ^hZt:XYۢ{!sR"Z-,?ʵZ M7 .Б#G8X2 >: DQ|;wV0s%w_Dlj'?`7xaݸǹVAJ ?tA`||J)㭿~ 7hcc\9VnKSs>,~B>>R1 kk[K7|dCdAم ξMh!lF>Uyz=X ~flb{{y R Bill][B))%e6MsdI;V6CzjVMHo$d!afggd_jvZrh۱PRjى#R F22vyin46aٞ#y q099E hv(.DPJEרMMMeaҕJZ-=.[E%+]Of61DQD鹝Xn$DN'"J;555PM޷:#C)EihZFLD0 A 0Fqg:fI,KWxk {fZZ aH4Wv6RJjl܌.npϟv_"Q(Q.Pann~7>SnT,vɉ ܽ{z OM!-vz㐘ʗs[ȶJNg}HӼ/R׃i8z(a&..^m qp?1*33ݽ{ 8qD6 we4iuuFO>M~[E \.SVi0==Ӥ⵵5*J`0h||o߆֚_z%z^|E;wq!8.]`\.^]]4Vطoy&aш~aI8po6 ɰk׮1JճgrK[jwśo<8Elb)%M̠P(}D8|677P,4ٲ,(`ss m eb8 2zSJ#Na |wH5(#N[PG |{M,0 B`rrʟ̠ crr|>ɴ [5JJ4!f #T3^"BZ(2w5p!H)ɶmܺu Z i\.ò,ضJ)տVa{{\J)>|8 b TYZv}e>;;iZ-4MXVLMC4Me~%`GrJ)#zB`kk ~h'Ĕ*Rbb8Iö'똞BqR +++(׏b0\.annaAZ a馠V܅au_~9{ѻ$l#-C_^/L}7Ta1h) 8wcuV(ɮ릫6 !bY8Do`y Y ˲~oްp$kI1l `7bqWC߉]QNDFV4JϟgE23R*fso#8P(?v1فi˳ss397s4U*$kx饗(mB}ۆBxC Q& !p LNN'˗EfffIAѣG3$? (ޫC'`0ݻwqo9">4@4 q&\ǁis.*c,/-T.A+__&⍛70;3~ҥK"np6Ne't^8ԙziq0@kr(!q#&_aq4n`i&ީ&43y)L;.&plY j>v4'p]14leOsq4!,-B>'Ci[ml۱VT:joqSH~mm \.<,R42, RP.MfI4Ӹ8.ٶ.c&a²tC\QqET*2h<*nw[(RMBS\KXR`M啕*ƶm%,,#CޙZ;HK,v?˳ XIDAT&''nAkp-4 3z28%CpV}D$}Y+F9Ԕ&)FRٻQZBd ֚ `Y*\ץV0PT\.nm1*AOZ̺^)EIMBbqdUHҤ0Kl@)|E#n077qaXYYu @kMJϞ=KE:~8`̸|2A[[[8rݿڰ !}{J(q~ׯg58B}6WU9r6w:LLLկ~W^zBJIᅬ'NpۥmΜ9r "˗̼cǎ+Wh4`6fggP(0zyssR ;;;<77G'OZU.\ea煅!? xggAGX__}{<ٳh|2X,cjj w7MS'"M\~4ҹ:䌘ĒZ6k5,/-K)1==>DFJ)^Z^)gD0D>`^039s=h??mOa^[[efff-ض ۶nRVDDۜYjR\*P( )"Rҭ[8Ny^l3?a4GIĦ'Ԇa 2_%""v]<';qPiy'>A MSSS}<㝝mǁ839E2MvmSZˀ]\\yN [wJ< 0$4l]^Y$VV.X3l_^YXeM˄ ^J QV2C®a^4̏LQül2MΞ)+#~鎱{2yU)4c0dyaBJ J-i%GZ0j0 #;oNqip:iӺaM4}8H¶8L:${2Mw(Roq54 ąy9"zE޿"≉ r*j*ck#vNmt9٭HwXn&f0 ?776%ˡԩSێ\t){i:hrrKKK|UC͛XZZ/@Lؔz*z=8P'ضs,P>SNnYjPPG"&kkkؿ?ݹs455{ݻw+P(ql<Lo6Caa͈h#bzaoJUI,%_pSfLfΎKwڽט3}g.9|0>g Ob7B`s}c1nY62eи߳pcWro1>D<8|0ˆ2p,"dDc)0eEbƔq0U"0_=Ӈ=RJ~ȱ#?<3G(?y .oUڂ"q!Hkȏ[tLکM37܁2E^>?=bʬQ'2Ng{QtD^f8I|4_%|1Lz)ĿhB7 2e0|Æv^-"vbZqҜ}8fY* b߁Ie|Y:)`Im PPǁ$Bx5ӛ'hqdx3]j0oIENDB`gpredict/pixmaps/icons/gpredict-layout-99.png000066400000000000000000001001051427377236300215470ustar00rootroot00000000000000PNG  IHDR}8sRGBbKGDC pHYs  tIME  3:+ IDATxMlYv[k󽗙U.6-77ĠAb 0 3H@ >& R@ė-hn\ʗ/߻ݏ8{`q"nY˸BʼqΉk񏕟~k;j??_E/ZU,)lxf*@~}d٧d,nW?t)?1,l򶟿~ZF%a ]p"D3 }{Ee7 )A~_?11D!PUTļ.h@L`)1KBL6s`t@YVKO􍽖쯷?k>xm7X7=a1a?S~O( BS1c%"]`Ӷ<9qu0f=mo<1vI@^ ` *)}׽N#y9;/p7Feoqo M^PϮWd E4&"d{}?+Uʂu*JTU"VNw|j ,xO\k0% U=*6)kһ +go9q^7d{|.9:v~[7_f@9~gSKD9{ y{qu-\| _}#`?!u?tb s@ x$K8j0b cTʢ YYJ8bbڑ8uw0uOf'ay1p޷wxx|}pA保amfFYVĘ$./,Ԍ"?w?lXJI꺦* ,=Ϟ}?}jRA1zrM̈́~xpF * ":\:|1Ɍ+1q2?9/j q)<<[@'Ēqz]=~F̎r숅侎}2Vtyk>#X^F1D0F L <'t8S02^}_1)ů)wA^?VcGzk KUi7k_9h^aGf?="3$C >.[lqtkGZLCld4D-] N+2t?|3 cނ}t /K 9Q6dŽ+A*.1f|X́u_9'f_7?=bW&W sp3\ 2 jJa9!T.j6x7&,nCLue®+jO}hTvm+ރLĩ4Dg/ ,UNl|1 ) 1} kﭼ8\ /}NWnÔ5s|Deĸݸs!"V[^h8:fxi&m֊ ff\]m"+pN 1 :A 1E^5\iuM{˗U 1yBY,ʷ2H?>aUǬ2a=c<($}^iQ켹06 U9Ε-{4 ][.Q)Ku=u]I^C)www\_p}s%#ck}Hf)" UK$é!@Q0d~>)&D{LL#gmF=*n39%ٯ5Pzs6@l˅-+*sXrU:0|i ϊ1ţgziTUno"#ت i!=1O/D)klȡq"T%dyrʻ=M!P@-3ih@*I1E*%1Mk!E*EIUuNlV˵,eusg&}#f!1g3u B\...4BHziFD[,%Ƽ*Ŵ FIf3"hٜdUg_Y$dރ/;&;Buj'-80yQ2P'"8'9-mJJ)`KeSüƱIpfɒ`&Zrfc,5d4STC~}O iXsúPm(X, ml>/{! ڞ* e %.HAw1#c>8??c\q}}M}~|6h\ŧWל,}ч>^ȏ?}j/o?>SNOO; Dc*bpN%nؙj 50R:V} <{g_>>|Q~a"3c d6_峯LFJ$ t !30 *eb>k!RJqZi8wJ&[zӳS>}>ȗϞSbO ) `QDTQ4EIPqb:"EF"TJER2nˇBv{/c~`Bӫ6=s'>J;VNDֶa4yG%LdDC`3LAeA B!33zCҀ Z]+Z8?tjΞ??B\BUq.wf45^Rz .7aUk>}ʯ/' VXQAD57x%%hC#1C5NzW9WtBU%!Qh)v&g'|᷸+) xb^{Nf꜈Ġe=\4LEϖר(f&PDu1>FʜcHHFٳ>.NU{H^',WY)RwIuBdwσ } E] q,'{LuWGi |7"lh* sJg4r*":$U E6l1)d@Hn ҁ<9( XX<ӟ|a? )_wO4R%mL1J{h'4J^ze+9X/N vws'|ٙ6)5R M#劐eZ-HO3Es0 *E ,qHL QYvHMqv b"D>3nWy簄%٬lh;#a6uRPx0c;:X3DW\Qڕl>߻d4LKObNp & *7Va6Kb/}oWNyLsJ4Xm""AÐ+JvZHUUhּS2{8d~C%( S^jc69 QAJT*˓'h hdI;,hrrW1bx )I=!F.YaXRx3U}$lV3/NzEm h[F-梂j^p͉j9ȡfb))>I 3zɉƊЋ=m)#8Ga]#.e[ d8eùB%Yb]*mX/atf&Rx3m&Nh.4N13MJJDlR:dVf@j283XU)}GYĈ85zsylHrxj`丷jg8xs6"6eA۶;RrOޓxqŋWzf ^ǒCؼ}S{/c8Jc)*fiDe=>+--Wff煪R7o^H,`1&_$e2i)F$dH)}AX؄*lZc$f%U)h۝XY)@m/K`И!.?dDJ*O@<@zBĘH)M{5\oC8v\/G= 1fHWa-p~i[%døHQP 1@긌^'XtA}KO>\5'ኂ^VՕV "$lj3V~l1?.k&XEm,vEX,"<5figxX!E9,eOa-ԁ]v5Vt(]HJ 3̉+=)Vo2̌Z4L,=]p EySLlLE=B!%-2egv6W6MӜN! Xf 0iI=FvMb,+&Ϊ,[;') wwKDGh744 V+4%)Ľ1dW;4 ͷ2ɋ;-HS+c\{ )yqh61L- 9ҵ+黼&3 !&y\)>*֫;Ob,7SW:n`nX Ub2R0>X`Ӵ]sJ43NO+^Za)w.)}gҶKsUʔsKuby=7,RVBN@2nn(I[J/=_f/$)EЁmo2$%-j:F>0b`1FHV+X;J |YbOQ""}XBDb$}/cjU,/zB V23(uCD^2L:=F۶8jX|@94LsnktX/ 3azyO!fC>3(-=Jr,%3QEl!ԳD6/A+ чFVf|%8q' $3 ?p c_{^QbFP*16"RO(6O(-{|4[W>:|1'ń/dO;жEGQB"1*{Fiۘ_!b4(.5Ή$Qw/9݅b¯]ɈNQd kRX}{eIe. KULEr= [QebXR@o"Anoͺ \8=qzrbͦANg4}c!Re%KfbO፲A yS5@B-9<6")ES7|[ 'z\_ˤ;t9W>) ItI3 cr%SҬUV 9AX3NOED6{D68S2ϞG_?v8`ьOܬQ/~x!EQ b(r%*P0[5U#YM6VV5 )n2J,FͪV3D*5q9kMmN(lHҮ̺ QSTpl=*BbqѥP-Y|'m{>Q)қDީtFU4z2>6!-\gs͚zIYVx Ea`udogu0'8kebnTN|N@tܾa9‹)F/ UsQ*.I1`U7HD32b&}G/tbXBBWR ;Ү#O`(6V_\)o'f{Lޱ{)rΦ5#k6hȹް`>Ob͈4MAU%F1l[0"c fCQ Y]pNmLJ81b\Y1@ tG"]ԃsbR b;\76W!CjFM.%Eό*54FVԂ!XDWO9Ww-l?=S,|A SHH)7mK0GJfz(IFQbn3aItsmח8釉mGhH:;Ƚ옑. a?{/]٨|XRU4rceHfUGk#sŶǎ 0gε@ԥʫN) gԥNj p^єcuU/DU92X&JI.mBA"&^9:Umؑ!Zns6mhJ^GQ9U9RpIy_O~?<:>5ۍt@9֫HQ g-zϦW߳oˋsg5]9J4кU!z>+Tf94\1>C^jZ^#ڶ%?SJEaJm2A L^lKv [Q I3iXw~>7 sbW㽣Qz2-nT52 ?9;DF~A1%$!WCjӈ7}9 ݏ:>YǶz0%Ʒ8dW BxrQɦmٴuMKD(XIrfT,е6lQ],3`6 emK{Df;a^{.feAU8wx?|b9pӄ]Y}_Rj-/UU_DQ9畴oLtTaN}Bx >TΊCm={{8і#ѦǷnjVypkX${IaL—W8UO甅=]U b; rOPR"BI-wr"}l^2dzć%?_9O-Y~}ʯ}ˋ Yw7 QaSjUq>{ufVڼcDZ:}9Pꭈ~Z="@t>)-i6PƲ*W7 Msq>ANPc`iU,D18i/Gv(aa[2/ {@Jd&zGu4H_)|5$r~ DRW'^>3~7#M5?9.xd^υB,fL(:iaPRm;/jnFd{`[q#BURDr%i¡# \ /m+.jVj&T]K]VÏ&yRP6HqvN\n00=oCdc O_~pƇ]~ SD\&U.%+!!`Lpœ L''sT5CT=U 7+W5?l/aJwK m2G9ǝt{숹g6+,,DK2vr؍a= ' pC!ݴVu=^DI5VØ˖U7GF<˜"s#=|,;S}V+̒KA5sTL*s@l!!Υd42٭H`4fqjVw;ÀtEs$Q4? 軎Y]b}]Ekx(R˓)kN+bY,uHQJQb[ݝ֏7ݗodXX,Y74MGq2h--wOk*0yj4%"jA{'@Q Se{ aް!ֱ8 Pْhyjz8(RǓ7FDp0 Imi7m7`B]y&7D o[TZN$ "kv&Fcyg>#wb="]E[+Y!'Όжv=`X6 *HŽW:k3_?/)vz~.g|>~-//U5;)GR(RΪsNY770,CrIPC8'{c&ʄ%ʱ6=2edK FuiSǶF1C.1Kf/(R 1v{3Mv2MvqU,%k[6ЬV9-˗f_Pvd{T@f]-o%vj_00O1t͵MEzSJzlS>Nui=͊(^hFCUfK-f A%;ƭG8,ԬIս{m~PMl k²ʘ1}ߛȸ9ڸ#Cf@b6GaS{nO ]s, !b01#>tR=?jٶK(FknE9`DIG%;]։zM?ed)qqVZa%Ӛ>}% a3yW9ybҴ}vFL*UToD(<mßNm0J-u#HQZkk?vLfǏM<.+?+Gހ1BNm]e U<@<;ْFHdGn[ I,ߏ3-u B:H;]RTT3T.*`m#(AklF}JU,3N 9EYQ}ԽP~̹W c 4at( }Xh&{fCQԈMCj[>DAMBMn c\Cn@4lH 0_o[3vkq'E3.soCe`KDT3pCĢw.BF\~_q@ǘwv!nZ>lϟܻk1/jyw~ܯI#'{o=|&#FCQFB3X,l bFeH ^/jG{^ @0T$Ί9''-uZDq3RR oa'"'bKJ gF2p ?1 NN)}Ǚn8o8敾%Y,`?5qH0}L8Iz;yʻk >dŏtXu=rCkC&!99`߯I$(Lll}x(kڿjm>=8&pTRGR-7fH#V7S1E9 =:dq|( hYB/r"TjvIَm9JYUxD4P!~ l;hnRuecuʻ @7f#|o-5=nt_¦ ȼ,mյo9ٲTDڒD(LyyP¶~{ ;lw؄+&vhٲm>v=! 7H&:7lQ#CTܑB! } )Yune0JI,!ꇹATpI9dJY]?TiY=g4;&ͿKRk9_ǹGUxSEv]"v-SBwbmr#^P@Wp#M'A}]2$=ǼC7O=sGB½Qs^QdfPħ#9dԸ&4~(hf(!$t)MkZYL cM$[4W3ڱ|޼UE@zG<n7`;Dj %TISЕB#s3;,t05s)7܆3 T1p o; {TZ$b&;l'(%ScKR$2ĎGBuL4`p2H2  ;.ޔ_ӿEVWZS3Ye Es {Bd'¤-+0OPU(HiIBU0Q@*:_3Vܨh|38睜nV쳽WKEYy=>GO0+!Zk!+ Xc\3qAhg.6/ kb xAVH w}5f݀i0j{Pw?`@C~?d{*X-/+}7^a,s,7rLWIQa9(Rn R.>0g :ك$$BLtC2Dhe9zz| q497RvN?>e_onKܟ}G() !H my |ޥ80Y?Ll1$4X29K ]ERH>kҁ@S7y~m>A i=Xzf,`&`"0N 氿=kc Lzo,ś7okܬ/RPF ;gUMrm IUFF3| d NLeOK!Dt[vJ*v}iF+jdb3Rw>dJ5?#p =g0a|NhcGθ"r0DPRсQ|!n0 u'k8hJD}eS\?ص(yqMd5U翅|$DUm!Հi0_5AUE%^k|/W\ӟ]jYAxXBXQV%j(%(E%,L|N=!%;RB>A'h2B͞ZӦR JIOh}N+t{g FR-m(M> Ŕ6@ߥx~L.[k IDAT9{ -& 8RXY)sq%n)6ceb tc!+jdn,LmTKc3xiP0x[B&q%n?"ƤTn;A񂉞=wQ_ .(>s9:yq/'\TNIւ|+?cb0 .Zt]nyƕ%bXwX<ҭѥ;5LɎ,XNB0d ˖,k&6^֜Ky$ǯ+0EF p1GFZS;FaKfZUI8Sn0)'b _oŊd!$Y67ٸqFЮ7 "ՍP  n)7܌,A&^% ?}!ܡWX.p}}k^.Q|6 R,ù'&"ehmH B SU V%A`"s,q |Xhef {qO[Rt%)IkL~*p##\dI@Jqkz1$<ީicLʋX)`~}VB8%1؀8ZttXE 4˧*"Çv,c ZO| L={d6%MUU#|ъUF]pqjlBƎ+k`PcSd4ʏ`4A.xQw ˜ }gG'8¶5c\5Rl6PJ:^.1R0qAQL4J"̌yGc4X $ 8Ԙ=uf襭֟bdBdh?(!!B*¸0]A Q Q^iph#pJu9Z. Eu0PHcf()Q%#Q*V)ZUX_/pjAWW%W{8v#d~'[B^Yю J殡qc& ~zØõl IvneYƁWet2-f?B6Mӄc*˒N g P APbIpd=}Fb٠iX_]F <LD|$D%g t 60ZPK%)uq'!B`꒪@FS7Pj**!@3lu /e DE&L N..t=ȋ"%xfזMZ8}Q;MS( oapA Ńp>=VsOLp ľMM4<6dXe%0>[ C:~,FIf[τJaD>!RW3jLR =-P2}ۀ Rd"d)mzz}ERP@UZC `01$2JS͘)d`e@IpUt0 iN'h%".ӓx\C}6kPUk!΋ 92j |qqAD,aA縸@!|5ʲ S]713MB, u]]]? ^S _Fg-Sa:R:1r:CSFh¿oTT5gcKzdg"N~_z_ ,̃JfR>| LT|[8悅+aV|k,c\*0ƫ΋3HP^VKt]IE44NgyBُ9 SZ¨O* pwga,9'7WTCLf)%u}Kg@Vdqh?3sUU)G9OS6“\T,<{>X "}w==#Hbk\WK`;uQIani)ɺR)1&e/0Ï38{s0P1K(U`fjgfZ`{cbKMBB eYBe ]KF3Q(`-Ac(POYI͓4eg|HXt,ݻw0Ơ*Xk1 3xYBkݡ,xoQ%...mquulv$c ޽{,P5e#۷o0.z$tzVd`ztd`]6"ߓ[b+/ʡ25!0 qP Pk nf^W@xɈNE<53F=˹3=ȒT!sdY.ٺR[c{´ AH9LQ$e(!%m"1&{%{=O?4sYq:՛[rםbGٞnX.QT'"z*AkZV1 # 'ls,ݬ<ʹ(E{$"#J?;?qSvfpΉoD q74IB ÿWJ~uawf.Ȝ-CJ8= !JAo~HJ)X4=kXIXCϋ>:gzDz:ЦfR#6F{Hk`X-cF2&fȂX{ʢDL[}*bN ` L=`peii,еM!ċ`>k6}5?OBY eePȞOTNt,lDrD`+3?cpE1PJ=KQdf<<SY x+LPJQ4xzzbkI#5M󹨠ZKwЧDx@BK~vO{E?=jQDz :˖1t7ŏ?08%3\;#2xyJFwj'G,3\2h~a/"xqE͖dzf&!./Wnf 0-%XckLR3 "%\ fA,oDJ.0\1"u]a^E$Ty?\o g<)Y"w,1 ˲!?w鹜'Y<cؕg"D ZeKuUW[eYw0[ȷL7wLJfw-5G,f0!BX %6O !dτRDٗ0z,WX.z,:iݏ" FOxxxDwX.WE{kdV33c -qb/z*+'|qn TR{>Y~Ƚ^#|S'P?O#?U Op}b0'Q'Qg "#5#KS_990sJ#OJ,WK}q} ܵ-+2UE, ^PV`-6O= F<')%6^W);"~:"Ba>Y遥8NG=؝ PiB0+,blVRYU v6i%'C2Гg'XE,U'O'??Gc]"%I)'MpN%f7(㈫f4 R H\9 @li [@倐2gG Zka50@߂ gX.ʭǸ'(P="j x o;e)%噂q>|49]סiӾS|n1 bvph?>>0ϱn)e>e=bm|J)sHg5꫷/y0Uh6kPW&YH5M ?l~1nB6z J8vONZ[G6, f %`mq0=]RAQ(6$ h]9M\8QHf&MYa@  W s^XZ1*#8cQքzH:F!ht@=[Gf=zܞ /gk1-K$ f75" Ѿﱜ7dC<*3<0 PJ'R(,c5eYZZ.xY`]d#H"!ʲ|TX%nooN|VJ96BAf9 ZmM: i|eǞ<#20Cyʲr|~UBW;N"D0bf`pj hH tmbr%b="weP@VS@kG *E<#̂:̓o\-cV("XF:0}{91w@qNRI>"~l6;B"?-U M kpr?˞i}LI` !%){2',s1Mwm{͠a`DDT%gA ʎ<Ų,M4@O LAJ /c[\\`^6e(쑘W&$XjVĻ;p"ت6O~!)o&ܼ~c>i _Vwaຮ1l{0޽{Wɮy?9dPָ^ t G$B?[I:< gwHGI9}4r݁bP7Xs |"M#>(p0W؈di'"@-qZmP[c {u 3X3Hy?ӿl6b؏2I@Zk: Crc:U*ҩR?pMHqp x+[i b=(DHal1)%1(2W6Laڷ{JA"2fy3$adL9JGDMhM p@B"> ӸXI QB4@m[XTkȍuk[::k}S $˚h0i,SBFBw~GiA艑1AeJ53L7fS~9hz>ZeRXV}eYPb +}kP҉lƩ!i` ~IDATY!+J "trƺd:,5 p`xbBꪌ Ƹ@-MS)yN>dܻxGC$z|ʔ1KD>30B#)ufs5~" aAA R*HXVpEolP䒤T `NgyQ?aMr(]54Kk թz ZrY"gVXqC{FO>n#a4Mqsht{+kb۶>Y!Xk(rm dCh.BZkLӄL)G=D`Xǥc]23EA0 ZOl_.n hx;e16z3q*0XS RVb͗{^RY¤,Z0*ߒp,ϰl( H!Hek2h'~֓)921 49gSm}S(߄QZQ鈙'L1H??Z%'VC8l\%LJG..ZXv4\)%}x_/2[{6Yl8iKB֗REޓya@_@ ط-p}s|cl*}>|Y=C? Z-1 z,+4siqhiՕcL&--Z͚8imh}{$2\^^"`fdY(β`1U] 8~yۯY,]K$]tQвhf!I?+/!,PJ0O86_\ F=dEɯ_&\8&|Rܱ'!" Vơo)iNr72 0F&E˿KJrk-D"8:-o":{N_OHNw6+KDfRzG˖8E]ۣNvnL:8-/M/9$Ⳗ^^!1&㷿-w ӀsR WW|jpiS{tZDk4vO6I[ =# q`ڿ+O=}JVG&\(>+k,yC[b)HDl64#f{eek-޿ap{{K}Kk~oO?ڶE۶X.4Mܿ13݅Yjum[Lt{{KxxxphZÇu5ZK89a{eIqm7oބ~JCMM v "pww{WWWoaSohVmQU@UU,CeDD :""1#iׯqaZhrl0zN?m1X%@RwR"˜T%|0y yq βq LȲts%RdI~W,!PHdzvYa^BzM4av z\oaub[TUDDiO'[pl:!A)% /WEQĉQ)ZkRJ˫?6K);LoI!9xn!mKgZS?G3W571dyXZȷ ˀܝ7G!4M!:n* Xmz:|W=a>5xأRJMqQ R>RQQd+pyyBum#4 i"_ڱcݢ:V+TUudl{ea33`OĴlMEI f9vc >|RЌT@xl>"U-[ƒ/De"}qGZf1s'J(R7xlAۓ{XkÃ/%g~@(///|r=ϑ2H$m(w{pLRHx g>i}Y v{qRvJgΙ١e{JAc 뵋ȫWǞKg@g֎TP),ʔ %8Zy9CpA`bӦdu]sVF7/W5J/|xI0i Dx`%|M~)"v:AHSճ9({uRfykiWO vZvx6ڶMY!m=a@UX_]!2vHJ(4,K<==a&\^^g~a!brRJ~f8٤Msn(łbQZ H UUQX¬KiYQYVU C4l\|pAͲ QN]5MvK]ׁ)Ёl9 C{q< 8 e4M&)ކ a""{})%-hV%I)(&}cH`0~(J]ס((/mX\__ݻwa6bsBZ,i2?nID{O3žPk7oĕVAM`߶{)J95|>W)N"88>Vz4Y|N_rya򆝡.L~SL^H7q@PՎL q9((nDoΟ.-!53 {7f0g;Js@SHfuq e^xS?y/RA̧%U@A_lE'}j}` vIQX4F'z似$!A #^'L|yZ&Oa*^ݻ``hiGbKf4M-ּ\.utg50QU2jjpA^=ֻsiI) < -g4Ӑ "UEZO`VR@I gm(<3u]a1o`=yLJ:3S2ޓx:E'DUU78VaƘVB@?}"2Ai>")9b1 <8b #lZ4- ( x719 w; "&ny `ӻt1&Uxlϲi1`(&^%f~"*L913UQ l53r9ס%0`P3[M3(Tk@0mP .λ ĸߛ.+,kCЖ  RdP!Kp ee8 L d`@z`FPXb)%m[^V4#{p7Ml#gf"ۧe<έX鿝ۓɟ~BX\Ih˰it"!J% ̤7Ѹ^H(Avu)I0jˣ`83PdBI"kh(r4BOԔFm!%a,Yf9<&Td3hZ#^~@J4La&2|\2Fmgh',|J Q$fm8X2a096GIHdx!)~T B$悈QÞp(sƚŨ-R \Fi;IJ)!`rX2@afTu ku=K[)n>=%(RD1~ɱ<~-_SKM LDC~s>LB~ϭ ʼn átMƘp&E!pʘ!tBKf%vNօ` GSӛ돿:*d]>2T"`(UYB$))U8K)u}Sq̝+=hI lQ)ytͬ3ᮍ<˞yޱ<+E.z%,;v^dGwN/Pf2ϒ[9*S!P(b{4 ,I[>F Ͳ==<<`Zm[6NYa$96?kgP *Fs|+h1)J =g6Ę/t9KIEQ`G,KۖH:@QWUmۡE.vw JJTU-= )jalnUcᑥ}yBPfb853<>RUPRFf>4`\Ye|q1 # tz!$3hry,OeUjuȕ?8R4i m S+ýpcdC9Z`*%L>Dw8Neq$A;-$|4ao}D0 k{gl,x'hcKEyQBD˯YC82[ʲ̻_ݾAط0D~1@J I >H =H,/Hc[D۶ D%pe!G12CkE9K(9~"k,nHtE Ttw , Q8eSKorH;ќe?"/ k )HRqLbk4 l}Y z.A1;Ƥիdvq&^;DT(II4 {Zķ,//h >--K9PBD e jK\`TRvp>WWWGQeM0[K@c5{{ %<-);:Tz!{B)%%7 a5MiRV 6O)du3P BqMG_Cd*t]hώ ]ב@㪬b]`o>Wz}6Z$䲪(4Ce>d1R J) )eAё9хQ*5R;yA u]~E笔%rl6e&yL`LlҠ{JY18M0%q_S|I4UdE6٤*7r"˔7Y`kT7* jYu<7y/\UN\ mhN@tCӟod"ʻ'~I ?\/9铣bUjEմܕ2 (~06' þC$e_F "+sU(h3M$a[Ov׌qm=|/m!Z*ZT$٩-Z4*Q8X6RU#%e($pWڒVL?b9 A#)KE$Ck3ʼm(]h[재=h漰&6AI?9z92Z{v5AnLU쎥-SS۶HڶG繪_u4dYEQfQe~=)uPE 4UJ6`B;( U%3FQɭ2ʾ^n^"G:$^`3k[2O6-l2m~ZNeZ] *? wݎiqlEw|,>u!q?Ter@^Dږ,f8/T\>{Sϒ#36^\>oq"8׍ݻͷ['G`=$Hs}ViTQGj+9 dҀ x|đFKk;5~!A g;O/ TVAy\sSTA~bV99ZK?rIdk"j;~[vFsp_ ?V%t>BeWV/utN4HdCT{dx ,X8 C> v kNLSTWcҥed<;aBuAy~ tcD~x6mzѲa~q8'Xբ ,aD!tz;>&22$ dB?+t'8-ИՆX%a/١(NK+v~@jfxo3Oݾ6(k2ِ5(Ua E!k8BL͛wsz<}Ri$ޥFmJR4wp^[LdT[7 94,g .=sDM/w#{/FHe \%D*T+wg)<ΧI.ǒ@ uʀ%MY'l |֯&(BϡK˟bK l5#N.׵G:GϡaRE_ č~W6zp+G rK5O~\{`{cͧEZ2>#4۩vvjGZ矂43m&j;t^{ZW-s!j| ұ % ˫]s0u ̴PmSGM[,o0 i tV}Hr6jWK#6CE IfTW) B\a1jL&tv(&FElP^Ws` PYe#LWn,GraB*f#f̀^ Ŵ~J$"ݔLEY-1mM"̬@z(t屦Ǫy_#Ǭqsاþ(?9tdیEy !s J2C-ߍ"L{}Ҷž'L}qh}A{:TLprPsh B"8{~if:[b^`l/?"Ly$LDn<ႫI%$|fM$ 3A0H LUP"dZ eZu/4' ֋A_G j>AkVIENDB`gpredict/pixmaps/icons/gpredict-mod-close.png000066400000000000000000000004451427377236300216630ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  ~tIME #/؃N>tEXtCommentCreated with The GIMP (c) 2003 Jakub 'jimmac' Steiner'3XzIDATxڝ 0C_0}: !2CA&l4]>@|u030r XgCL@(!@"9L_$P{e/{feRq]=?Mj2%IENDB`gpredict/pixmaps/icons/gpredict-mod-config.png000066400000000000000000000003571427377236300220250ustar00rootroot00000000000000PNG  IHDR Vu\bKGD pHYs  tIME :HS|IDAT(ϕѽ AgC01&ͮ 3{:F @W97MY T#  [0#ihMWɍ 5- KG?9k}jV^zy?IENDB`gpredict/pixmaps/icons/gpredict-mod-detach.png000066400000000000000000000002771427377236300220110ustar00rootroot00000000000000PNG  IHDR Vu\IDATxڕѡ Q?H u@ E qt@ `1pnd3;;l-øbK*T }._!Wjt8`VK R$xn4 X<IENDB`gpredict/pixmaps/icons/gpredict-mod-popup.png000066400000000000000000000003631427377236300217200ustar00rootroot00000000000000PNG  IHDR Vu\bKGD pHYs  tIME 21lIDAT(ϕ D&ڱ[8XXx <;BV#@l4@eewbYlbN)EY W$ [# 5P24u IENDB`gpredict/pixmaps/icons/gpredict-notebook.png000066400000000000000000000010711427377236300216150ustar00rootroot00000000000000PNG  IHDRabKGD pHYs !dtIME$2IDAT8˥jSQF>4 &(ZI5TNćPN}GE|AA8  I^iҤmHtM}{ˣ'YȌa+L &8%:`~OQ/rj F-Y%}߼wBPܽs۷nr:Yf9(p%A١4G]BӼBuO?C9nKlR0O@X߲7j$snN!1gj5KJxe.h#b&'ً8oQ7+$i"&8E .] אu<|A%DsgC_y9?7֩(p~RD~c~G6/+Ĺ :AN QFMIENDB`gpredict/pixmaps/icons/gpredict-oscilloscope-small.png000066400000000000000000000014211427377236300236000ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  d_tIME 2,b>IDAT8˥Okk͛ƴQ44*4R4.nWQ\+үqWn~ *(MuD6NLIuSsx/cO ~ D@`rzzuIRF#$!$"R`eYsr[n#>RIB3f1y6PJ,kRx;w n I}F}uSoST @8rr<'ftW\9YL7|if0QvMNH4Rn 8Ya\t$ )i0$"( \c6[[[4MjRB8,,,X]]eyyw#`mm ۶iZ099Rt:MEΒ)(/-_))4M df_l?+)-IENDB`gpredict/pixmaps/icons/gpredict-oscilloscope.png000066400000000000000000000102631427377236300224760ustar00rootroot00000000000000PNG  IHDR00WgAMA a pHYs  d_tIME 2*(BIDATx{lT?5O?؃ ̌R!(Q*E]nP"V6al7 bC#M"hHL0I;c{}1[mV۟t|9sOx&}(oq ~ W4S1p,o?v}(4>P \[o(  euQUIB, EQB8!rߏ۶ hp8(ض aidYƶmr'OK@V OM@[[UUUFI&TVVI}}=dD"0Dd2ҥK)--%.X\.GCCiR__O$@ @" S__ŋqbqjkk}kR9w***fv'ٸq#,yra-ZD$,4M>M`Xʅ)*~+B4,4R! C l6/D1DCXfϞDz^+/HDss3?<PTeGlROp=?(hSFfrȲɨ*~?29#L .IJ,&''Yv-? ikkGebb? ' @IqheeJ '/RʳhjYa!(!lc``YekdP $E&;i~3p]p(DyzT*ljb$|-5McժUB%bso3P\TDP?H& iaDz@vedE뎻)*2?X,Ɩ-[r<#v{"8T5- INڡQ@`2Nubˎa\Ķ]VccN2I4l .ͼwwAΞ=KCC?ωb_>A9s(++$IbڵyϘ&&vGz=ZP_12:cs L\,'|K_`m&ur[}{nY~=MMMq֭[HdfP/*6& , HCܰ)-/4mjPD9U:nhn } gni`17kwze۶mN" rJ BB,Y:ئQΑ3161M %x!gאKN17Xߴ#Ɨ Q[k.ٳg{'xMffuȻf,G4Yl 2XsztSGP4*5!"N8Ass3aq0eԄa3,˅aR\6{<`'.624GWA^wFe09 Er ɷ_ =2^U_|T*iXYgBd2R*00& }|-.H%A"a~w#~J cR|ގy<R$=t˲f  Bzg!<p-`&y7,_1Y{C+.i܄="!<L׭t!ۋi3w<1,>X3Uۘi䵱s8Gz[uGq/160aR}C9??YFGGI%Gp3^HS(#7lɌg_12֮eǎ#28qe;30Ef9]jPC+Ҹ~b yH2l y{B"Pw?v|ٹs'L'x=4\?,Y7R"td7w*Xous+Oa:ayKi]%y7/s]\Kl$ @CCL}QSSòeHRx$I\wu,%OK/˩36;LA/a˽9dr|D-by6esiN-9ñ=$ó'x^~eKGGaӃb1gȦ-`L&F3d3.B($I"=>l222<q0L1_rtIdeQ1LoV\ץ388(D"TU% ,˅Li*gCPZ\DCH$RlO0:0=?w\rsQ__X뺅ь銊 8cֶʑ#Gu]oΎ;W6t^?)7?хE᳟, 1w\Yp!CCC$ R $I.\K.x<{GMM +Ccc#,Z!y;wdpp@ eKիWst+pDIENDB`gpredict/pixmaps/icons/gpredict-planner-small.png000066400000000000000000000010641427377236300225440ustar00rootroot00000000000000PNG  IHDRsO/bKGD pHYs  d_tIME6-@IDAT(ύMHTa\gƜ 7Apad@ hӢAuDiAঅA B0u&ufۢOPp{yy#?+F"W E&@_эY`28QG{A"P!BMꟴoޚwY "cd_Z`c,$J#цhM%Ѡ`!BfC*@عQT -n_T|F+PZew{b'f/NFۼ.)<4@m//3 l- =v\z0{e|8 HkgJeH.jq}<7gW'GsHBK` j̜>b7M0W,?JFk rQJj;t3IENDB`gpredict/pixmaps/icons/gpredict-planner.png000066400000000000000000000022531427377236300214370ustar00rootroot00000000000000PNG  IHDR/->2bKGD pHYs  d_tIME  '"8IDATx͙nFDIICb$@}+[^L~FB.=H`VG?a+"E]oggY&lJ߃dQ & \oߒE Xv0r`hF"/K`aewxxDM7;+(j{ &߉܄?$2ϿH V@6p ݻǒ2&(x}G%5::,ڮv-a鸣4>~~~&,>@^~H0΁[;`9rZZ;po仰令WF`-@^i^5WJ( ܄7lbp1E&\м:'>WFq+}"3B(/'5~p೨dkٔ;b)S-9 ǐg ܣk;`2n{лxշtIEG{|k ۊ頹æenijpL=-.}p \4Ǖ#+D-܋9Ol\m"#A3ﯬS,BF& k-BA m*GݚRIANj/s /;S;6~MPIIoVUn;KQ.eۤ6}䷿P!vڹ.{|W֬d.|K m~ۊ%%mĒ]7&`,e4M/Wy\XteBirvv7b߷ K^J߯ퟐ7|C.%xxIENDB`gpredict/pixmaps/icons/gpredict-polar-small.png000066400000000000000000000014551427377236300222260ustar00rootroot00000000000000PNG  IHDRabKGD9m6Ǭb pHYs  tIME!]IDAT8ˍ=Hk@ϛxqHJ($?⠸$HH@i;*tDA,:T H\A#|04…Yov{0]I$455_ >ݷP,! ppp!Bf)))xg6 L)%hx<@[[~&''hii|WK3388NNNhmm5dxxx`ii`0H]]a)%SSS| `oo q\j ?LGGDGGG2<<{vvvT(W^vRE"uuu*NX,*J)MӔR*)b TXXXE<l}>ޒp:Glhh :333LOOz)B`Z FI&tuu0::)P<^o=KL&1>>N2fJlhFgg'@#vA1id2TUU餸fY___>/(^gE|@OPW7dAIENDB`gpredict/pixmaps/icons/gpredict-sat-list.png000066400000000000000000000036471427377236300215500ustar00rootroot00000000000000PNG  IHDR00WgAMA abKGD pHYs  ~tIME 2&.$IDATxO[? a< !IG*:hPg.JFU*tMȖ]Q)P&($f/01~\ι{}w{.`Levvy7F״|˨ xW016id̔z"r2hHJZLl~"tL@4 B,V=1L9@,B4"˚S~hhHvY A&4#L8ΔJdxB )jEhj OMMqUn7Ν 9s@p,A*#F˗/g .nN>ON###T:ͳ/'q/Qagpox2}4ĒdY6*.|>>,+t@0P^VB]M|z$W3$$ 7S#m=|O粲2TUexx8o6/C>=V@,rqԩ jii1/UGkyg堣]o*sA%K8khkk3\|N6@MhK=??e=ajzht<P\dc_q#c8v]\$ iЙ3ghhhHյm7oj\OO톻/ŋ qy3 'WPWW@ +@ݾIE K[}K(,,`fvR,yfimmMY%[G 7Qzbtb6+(BF]u{f4clB>} MȷX>RBh*PRRbX_QΞ=}Vʋ+9Q/?;x^ }}}455䁗Ȇ?EK 'qEE. ͔gƫS9eX,崷8X?FF7<2?}G;K[7S`qq7n06[!؆j%ZIPx} /b_qP "@JKSUUq ]*r8 8C6fM|a{!G#`=짯c@*ß1q---[^H+="(G*O'ikk'8NlqQoRᇈ֜dlR&66wQ>#?"`umMo[PIACو-/oyzi$dg,422ݽ9KBpF?үq\> ;E/l%2'7 G?[xL(zLȋ~_A7J .$У_ɱP~'Mпc2OTH< 22'nAd9FfltFTOrv 86IC$?8gRH@Θy:({LxƆwP!4N|ţn긧^_XV:(c>LnQYs`0(h9*:ښEUzDU@td6IX]$b;+NwvK #1Ͳ|̀lB,B Cn6{k ԛfp⿍[^xE.x`#vS,_< Ȕ&  Ā(PTRB(8NѼ"24+Vل%\ؾYll+^Є޼zBM"#nU!"d;iv C.!k^P=畝걆Z>(˜`PiepO%Y ?\̜J:tMLΓ 믺AmɴwJHZ?;p'j^QRR촄_&p2xA7d``ȡ%e]{z`J[q100D0:J((  `TʸPS/*-Z[B$NLlR_WDˁ;n|gѡ~B9vG>GFe0Ej KF D"aD4"]lцqDt ((`"'AϮ*&`7TT D(s(/_Ȩ?/\USN: i+**^RSl%qK;kzÓ\"&Bm@i}N߼3HH F(-+cOg)ʨ˅9[y xب-ڀZ?QO PuI ?ȏC#T.o~O"#(hPy`a钥FIIN=$~~'mWfgz`OK'`.Tn/~ARGH]pٲ˩ٱu/ S yߕ{dB4c3Aj<\2kyR'c};WĀeK/ /][!N>qI,El޴!z-LGTfi%pDf.2 B+d0I( tӠSV}$>mgOOC{Ů m\+QZZ*6_+T_J.k=4$NeJU:Yn5@h424؇=F^aO 5˵F/ДLDh??Ct$UrD*7/n~\h%ܱˉE qx=d!'/רNwɌQG 6'~S>&x$raֈlJl bQ[$,*GfI{l,ɬN{io=l'*ϸ.,:roHٺmGi7LFvY9"jQb1Abb2~'n5!wcIn[Ec9 q8Vr[e9__фn^ͯ[IKz'FHqdnf5PW G*+ea؊9D|K.^wWEؾOٶK.̘>>dJv?BRJR@ xadU+ne%& XLkhPBDN6WԈ@m uK*&SysIc6IXq1Cn_ĝn&nK/t%l{&ӹPV[߾nJ4X,f  (Egd^I)15B(o{}_`K/ (x˯O:s{)_B@go~FvwJ ʴ[$d+^{yeʕpG4k5|ϧT?"`/M\*9y;Y-:RTg{H2XFf52^ݚ$e^Q i F3 Fvqq>,R;{2@X?KRUǕ60+V1EdbXxap3Db1SQ=Iz> g$oT﬿xkŇ$%Zuee(|ſ@凉eҁQ,#xUƼ ) 5́`ْ"~r8x$%D}2Ҫc)yɸcXT^S)]X`uubon&F 5o.Ęynp^1ya1vvր•.v7h=.SR%j\ڏuG9mtvt˯6i^"ЧL{n'u[܄M?xY9!f#Yv~FVW3ts&VZ5j34'I6wF@l|Z`30 ~*چd]]o2cm%(dۗPq ]NUq2T'hx${M)4=2L/}knQߞ5E J[0B9=L޽@ jq1GԪN`F'1B|Ǎ6E5)Б[|k~ܼ\.X@05Ab>96m&qpHGۜX7i@`S %lh"~h4LX8օfdx^ II4{?E|2SdE-hT}L}6óN&+8R5D5 )M3:nsH4גOV\[BP1Sy$2,љNQ(fɎsη}AD$BHAt~;9d)̰SS>E*4L,}/&EX$Mp\c}##=b(dǦuP(>ԜhGp3^ 'i`N*^첁AGrׇ%wpғٿ"^G6M8 N<>)n Eǀ;v%22ʥ{{QBaZ>DɆCR " Ѡpix_Zgb#_Mdq a ~ ) B,IWUM}-7Zd[ W1 >ǟl2K{[ECaWY69R40aè1_?~>wCTIENDB`gpredict/pixmaps/icons/gpredict-shuttle-small.png000066400000000000000000000015171427377236300226000ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 7 ^IDAT8˥Mhw3Gwvcn2zH0J=B0sQ{HDii""hP?hH w P4MkISTJfzzz؞aP(QӴ]x<HӟNNN^kpp0QATjV%G3Lrp4;22ݻR zY[j1H8eUUwtt| P.?[)P#Hc\ϻ3b׷nhhh A0Zɤ81u}MVX,zPREeYڲ8ۀݫi%I81m}\ץT*IUu$ !gB癚:M@@Ql3Mp8\8~'¶m&&&<˲jOȲ IRLQ0RejC_ѓgoߧbI6oܤy۶CB){mGdl0.U6>Ckp{?*" ioow鴑 333dr-ls+ϟޯ7_yz׭C"tPi+~ jPd Oy,@ 0C{%=E2.V@/-s)hIENDB`gpredict/pixmaps/icons/gpredict-shuttle.png000066400000000000000000000072701427377236300214740ustar00rootroot00000000000000PNG  IHDR00WbKGDmIDATx{tU?g:M@dH$Ȉa&:{2,쨳utf==(. g\ACdAA^+ HȃWNU]u41`x=v}Խ\\nL 9@ rfΜOtttENO,Xz9`0?p]!D@@ 믗Ev6vk駟5k۩SļyB'(=zt 0~%IzС@ e˖\`u ^^JKK_RUsqzzzسgPh#0 n P-\{{6d_>μ#9Bss3gϞ)o-7Lnw_yOl뀧me^>̙3gv8q"'Nĉܹ_nlٲYTT޽{r>xq@\#Eɂ dAYYH$8v555:t~@u/۟}}ذa}pډ[n9WǸI&yUUoo߾e{eQ .^瀜P(Ν;V}S)=rk׮=ߵ,k̛7;vp]wаz@eŊM;cƌY+fΜL1FQ"(B!B!D/Ȑ$ie[[۾x<.u].8s挨r6mo9ruuuoB5xƖ啕O޽;.I\@z~EO+**j&hIp\8NdY&X׮] E__4Mtttjqm{=,0]@lgy)J()8r;pbU~[ʁ5s -++˸Bd @FF8 5*,>| uSUJ}ݧw$O?YLIJ,Ea__|,0; 5NMMWbXeI,^f_L6mz]]ݧ-0ayԧ@O!Ki۷-믙&Mə3gvoܸqi?߲e(3%Wz/':)dYB(.Cggg|eժU9!F c)II$XaYq]JKK7.[l ͛k..=T?0JVY3.WJUU]b7ܾ}MqwRnhpB3]Av:c o*еZ2;3E@!ݫQFȗeaf::`ޡ Xqƕ6>fUWW}EH|{>JJ,4MTUMYի_^~"kmy={Si:0 +@):ď'Oe۶m}Ӄ;EQv&OK 'T!3\6Ǖ  b%MoꠧQ<4|_oݺڊeY`iZ*:x"ӧOg+>9ni#ʼn!~Cϟx"E]]]~>3ԹQ<1pyӉ`0H<0rT;)Be EQpO=?Ȥϋ9p?vOEE9K.O{#bΜ9DF#ʙ~t]Ddz{{Yd se˲$)-49<K'4_N`1bg?Yr|+;MsH$B$z'|!^zdY4Mxʙ%EI$:;;Yhg.(((80A|홙߿_===δ ?|9͎R&K؄H$a8ƌùsR"t9JJJO4p*4-eVӹ¢EÇr(ܼuܹ=ng\tOL<]Yl/G%8}4Xaa/3gxyb FiBҶs̜\.2227n=|>4X,$Iرӧz,իWj*yt$!H I$i(woڴMgvix\(444pjjjxgÆ 8N MMMr8~8RA"a>9p;ǎ{# 4-PpGݻ_KD< |q&|;jb1عs'6misa:;;xӊ$*N>u(08%aư+4wم$HZE8QL@FBRZJXNB|e@j~ߘs^_ rŠ8eW22@BDQ,O!C (/yIENDB`gpredict/pixmaps/logos/000077500000000000000000000000001427377236300155015ustar00rootroot00000000000000gpredict/pixmaps/logos/Makefile.am000066400000000000000000000010021427377236300175260ustar00rootroot00000000000000gpredict_logosdir = $(datadir)/pixmaps/gpredict/logos gpredict_logos_DATA = \ gpredict_horizontal_color.png \ gpredict_horizontal_color.svg \ gpredict_horizontal_white.png \ gpredict_horizontal_white.svg \ gpredict_icon_color.png \ gpredict_icon_color.svg \ gpredict_icon_white.png \ gpredict_icon_white.svg \ gpredict_vertical_color.png \ gpredict_vertical_color.svg \ gpredict_vertical_white.png \ gpredict_vertical_white.svg EXTRA_DIST = $(gpredict_logos_DATA) gpredict/pixmaps/logos/gpredict_horizontal_color.png000066400000000000000000000605531427377236300234700ustar00rootroot00000000000000PNG  IHDRl1sBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxwx7- ph?H0@kfVMlJb)tHBW%@ @ƽQ)My$VsgIkce{%`FGl f@}Az`tN{Eټm[`cXz.+B!- (xNёh A(VXaLbG9 !BQ`sSh8A81:{V^ٯaLuRB!B+)T ` )9,`,iρGͭ?M!B)؜T;+>zRY"e&MJyB!J  t0 딲&0!nNH!B\"[&6_i^XۮAOI'J!B!Z'[a # BGSaT Gh;^'#B!D53" r_Ӑls V|!BM`kNq] Ym`M zB!@ nx:q^SRu2B!BxI 6`Bu:b"0nuSB! ]Z_Ae177K&B! Mal/X ~^#*䗼ND!B7^V=,Pou*"S4+>:!B!T*jh_u* ݏDïP~^'#B! _$n0u:q[V|r/adB!pR~lճu a^"{= S:!B![ܡ sNE* {%&]dB!h*a #u:3k{B!?[팁H8TDV`B0q.B!"QUA;^"· ¼mB!r`; 0tSY`LDu2B!B+w ǀ :37!tfB!"y.Ytv-km.j^'"B!D:rk;?xשV0:!B!Z;[tN_0? ^"pTB!8(bD O0TD/äi[D!Beu6@q]NE+yB!{#WXj kҌD!Bd-"`שgu"B!B4ɾ%̄tשkC^'"B!Dvl>S-` +:!BQز`!u.@^"ZXS:!B|mԩ;v|l2bC/+K&2ix tc)9XS*rŲ6ZXE'cgGB؏tשc:BWu"B!Dh&z0$z(4oS!A }\dLO4!z1NH8a}@bMdNDÜ2dBB}]?@w5c>_f|=ҔofާUzY٥5*gR(t \V; mHf`y#0߇ن׉!4ͣ tϟX_C]> kc%Lo;2ijW@.Xv-2 L4!Za>"wºb!4SJ/u]j0q \/P'y!C%'̻z@g 6s>BS^:!"O8 b?p+8)TTT7o oam՘ *o 9S@|'c b?Ȭo{^'#B亦F"v켞9vII7C'ns t]j"c7h{[l9ﮏ+3"NϽNF!En4i `5V"PCNZh 1Χ[1u@`uXo<:S?4:!"Wy4Pb0 cC֚OY!PK*0 =gNF2$nn ><׽'&/au2B!D6sH:.tcE-H)4ǝOYd\A݂A<3<|G/hD{P>dil4Blf0=>ÅAN8qjG6hΆQzo"isdDk[8ѕT]cm)D#z֥^!Bd/u. u층 6*嶅-:ѕq&>)Ds1DB6W )@_7MmVuQ1K T5MlX0C=!9rilstfׂSkMh{9۵^'!B18"+:`W-Z)(9!B!Dȅa8"ϩ)"s $"kMR<{P=;纡 !\x<ۅqDs`}94=Z?I6 T"vB!,= =A TًJfB"1 @֝'&R=: !B\<>SO*bGق-6 Lp4BNkMh>,Bqp> ?.yM8¹v@0xu Z)bh.jk}^'"BUWW;LR:W* nYxkMh >mӼNC!J6}'ou0(plճuX׀bm!"R{c1&'rI . ́\)֚4mR.H$n: !B\$ܥsdzA{1X>6qQ`_Q/&>"̓pJ3xBB3sD,R}X;M (pL4],AQzvl9xY5i*jJ6̘MKxB!.|ie`3}  е\g^aDba<aʢ`n_ ŲXk"E[A.TxB!ZD?~'Nؽ{]o63Q2/"\sq\6kMh+`LaΨ¤i9J!! `y”Ƴnw6gecD^H~uB!"wdV%Wt8k Xk"E[b\كNC!B䆶l3f@|\TZ) R1: !B^uҾ`8 &R DuB!"`1#nTKb֤h u* 3B!ٯm['9C咱\.֚IIV(Sd/B!hMmkk}HnAa.ɇbISkWyP, ?C)4i"4дN.Dl DG@`R p֝;0)m۾Zpz~hч1sW&Jj@l⏐Vvx_PK2IÉxz2qgblō4N/YgD6|7+Jճ  si|*b寽$E[G21W}u"*kK lУ́kuPԓh+w 59 :@6X |*>\s|EJASOm&/vm4}OYh·n8St*q@.x oh$ڢBzy83$4%hˊ$@ XǴne܂Ob =];'iXe L~Eګ55KKaz(4gcV=ltEg獝Xk"E[`%BSu0c| @Oç<69Oa{Xג> "7:X,  <+nƢjӃX3f&8z_L^ͼzy?o8># <) ?~dN{E Bmˠr(FlO^^$UTTtOlV1%_q,H4K&k3fΜ3jԩmv T4n& a!:+n~V=`S~%"Q t<1bXua^ahLOS}J* WTTZ/4 _ڪ.@kM|Dmy웨5$rMe龤֞٠1ðJ^'╋&O\W\h`|$t84Kl8uڭˆaC(:jp@=k׮=>0Mdiifh{E۪iq4Cȁ`u]}=4O:lrL xSxzyY5-iTu BY%ZٶTkg<1qԎw?IAmN i2Ӄ9I-'3 )oڿL3SNgoYzC[ s! ~teu"0ʾYW.7-vyoCaXuݫϵr}+\5ၓ }`֝].ڋa;sat]=g-~6+/N;pw`[4Cr.#(NX=}B {s_n۶岲01,k N6h׉ gU/|2 y=;Za\ʣEuq4>~e-N"eeCV@dN5 ti8y19aېH3!HگꥥLðJ{fknuy 4LL𶡈3l,$j`@Kf\*E<2O,la}}Iy<8yQһO/g0 &i P_BQkX߁Yљ"ۅaͰBy x#}~R2elɠ:|5G5mm\/ 0@] N"Y0L=6):ОD]O8'xc$ #t%79*dي{(:5xX2LE K"i{ioʥ_ E[mďD&S6Uq(lIJ:9'Bh6r 0/u%,˕c #t1Ni^ؑ>ѣ+/jgt-pDzR!E[!9D{/~O{OĸͲ,i_3 cfLO麮߫'\xzi~ ƕ^>uێ:lp7|R,8{%w,[h E[^!GdF/mG^!L/ M ߃ lKU &R-K 4Oc sg14Kr՟^IJۥh) [WsT>miuIkm|ƹO!TFRk|"ahQdqGPU|i{,ΝME-ȲH_ q;Yp_(dI)`"3P{0iwx,ضq?ݾgO-O?O%C{.L ~pطCft[i/4Mf>YKG#wC^4KMx%Y8f|9ːkME1hcGu}4EoYָH$:6 `lTd`vHlD6ܢwmF"e3hu]?;4ѲHdu[۵k?E۶,Ovs"m L8 qPʶ'{4|?|ZWW='40i d>[OSMC@;&NIJm/؈/&o_ߎ;TX}+^+bKC1t!ÑcѯC/榯QNFle␻ |mYcl1< .e4+L=G͛W7#~mYֈuP+mTłmm Olߴͅ !kKO"vYzUs8J)ܹAt"n3|) nHu>f1GcWZxN|)***'.fеrNsRLpsxn5jcp`˴v،icq IDAT,D5U3"B}jAcD/v}1e@m63\1Xܰ^Y}}ꡇcȱd )=,PQ6dp -rt-ex< p8pHWu ޱp>0]OkUgZ-۱Xu$l ALu|ȸ,_[MdD4N;a{1V?X;x<;TƢէ`, Fޏ/// y\O/FkM"T"pa ,M!P*XUF~8iZJih%@'ئj f$ǎ?*=jYYYɠx! Ѹ|Nq+/ ^ZͫK% sׂu pS,p"l&bHAb_ 19&)=8 #mJfFP9ht)V>}0UO S٧䈚gئlT5F>,; ՏDoxљxƻ4ܓE۪po#QgapØz$i혯WV (]轧v3' n>ӻzOQ1KH[DŽs͚y?iJ5v^T݉x#8yӳMx*h0hgj0֎ŪF?~vTEEx۲㷳h܆yzA{J1ףf ^Tq<vV#"76zF/+l%N^ ?cQ  %®h^_|1vb ;y*ce>6~3Ty/pT&'}/& AQxJ$ΪcVz`_D\[F_k sU?bkU7Ѵ ; bXՍX囎'cD=6n-mylۚh@ͺո}b,ٶEE:'Rbm#P[äIyAЗR5/PvngMM* TALܧ*~[x}IŒ$ mԨ,]b-NfIZlb {el4].ٻ33D VZ1ɚHuLMѪgKL!}!Dq#\6~/xQy#r)׮dRC;ua1eH*Rz&(^!l.׎9 QPxqw{Tcе tV4ĩd2 hvI8 0+'ll~*h_?A`mX :l4.0>R'kW*ʵ+S(5yZbx4VVVvH"iS?9blsl0+ԹAq*R~zAA6D" 313a„ IʖC2|&f9&>F8vcfCEfTn Nmom w._Hj:ѥ1S!~1Zs4qSP!H8UU@EņY6J,w`݇u6p9· C 6SϞ44E5[c~XQl³Wyy,VgY$UBn;ŵԳZ{V-j/5 Fުn_l{[6yCuj$kb,D ʪ-:jq &>D-!`(|If 60HތF+-V(l8C!cmq|Һߖ~Ƕ7@c9aeʖ.ˇFA(Y),4:֤_TXd%𔦪[$H%q38JAYZ nFYUf?mMXn*xʡ>3S[׭Kf6\_߸p0E@Sr,#ޅ|4 @0rEQ[d6ٵ[zN}! xĉS;;{)=3!k0Q3hMU>'kj" mVx֎?2e~v:XEnܿzr ܡdNp͈#pt<|e扃*Ftak9 秊n +pzBzSټ<vfQ?Uo) ,c,/9KJPY֥#i@ܳb AjD.2t?|z$vHmZ4 |+eMŀ&Nqm^'KrD9&j`wK<-cPu$kUX `s?|WI즳Ӯ9SQΆcTmD [gpĄ>C;wjE·Uv"fظ=Xi64QvgNT y[0ˇuC/UBxc3TQQѵ>d*ن"c2,(h:@JZwKG[60q|fzaP6d:|^fn݂}oTEuuuAj %E&J}!by9=8 in4^Ud? JEkG)ɻ/5^ɳ+ۊ^Lj"lfkvMRQvl١ 4FAI\[T* )ۡ#GCr~{"ȺU^Qz2sU{g5[MlSջ]H"f1Bahs vީ&pX]qUDh~hS=G%OsvZ{ݿf9%1(TzQٰGOYEekZ_LͶV',0'6WW uK c0L9cv:1VH+oQ^Om[+8Y3(HlռMdܙ@ *K"(zoI`kQ]G`Бx2ܰKmIGvʙγ} e0T\\LE2C5'XZKgNZx-QJ.31G(:s˝8lm#}`ȱ8w߂J]ƹdxӏgU`(f~ԥm8l"%"UG=lBSnhzCSޒyAli]79k.*c>gHxӏz5#ƠC3qQ3+8y>efefI4ME sX=xm"$95 p8*(?zµ8^_In}*Ϗ!AMC3Ois_mufCȖB̽Tu%")RЀ:i9.-lT I#-^'9/$ |4p}-ImcΪi=tp~^6i-.9TWT( ,PUl)ؚ؀,l6׫x`L s& l9Rh܃uQb(,FXu}~L>QyUرc[n= Dl1EPtp63I'=KUB~ƌ*& |T8&U'fR4j 7hȳ ҈pVᄄ= ,20h)gŒwꡇ=Ms^O.\X`4LM\ݴ"9wM43&ޠhP^X8;6ڋ.rJl]A\;j,V^'@8>U}sۛ7ⵯH׌ϥhsf4A J 6TVVT;,-j> )-BU[iId8{OL>CO4]㚊^' #DR^^sJñ* 3J{Ѵԧ % *gTK?mPu8<b;OTmeIj" ک+M֙2l$~9 $ ZuzF0AMÃReɔHxJQ|et78d "whtagvbHd1s 1>SplQ5х|''ѺǥHҠlIj9.Ű"?ZM ^u^ݩT󓆩F)vS6QG q;/6,UE R>W,s:(C)LtDbU_( `kzv\=7~7۰vJ>c3W.M?;1hiyW1xS!DeU;g1Vxxc ۋLdx< vU[cF_,E' iT%m9Jb gh/Vmm7|t6gZ 6xAN^9sfr-;:?Zio, Gk!ڱ OoH!FqΗ4}:s+ ?u"+h2P?7|&񘹆X )eS_VkDu]Wr9,L;u(5gm߹ްBMt|wHsz=\[aܷb)lni@;6mihNuMj Fq%us׼yߘdYV7g0TƷ~2h2+?f|h/0\4sN/-u3i h:`C9mw*ykˇ@@hk Fٕyي/OJKK۷vWdp8g04~.𴒰LQ7W~zQߙdY12KE" 0c41p0d6_WfhadYgM: !lٙlvoO?`Ң1sR|;ъ]q0mh%9H8M٪/$mvu~II0 m3uG(.]1SaR +lRvx_Kͩ(6æiukxel GkAٗX=)Ncñ߽Nn0Piwch(TEP?gDvo咴w}qdWuM hMX,@z/L1J #}c h1@%! t0,W|>o^z@äI >:B-̯~UZfD4<$E( 6egKJBTQQQ- Q9NKs%%#UbY (l?4~) ?,=\D|ڳnݐ 9ònP=aƕ'Tݛ`V]"aXf"0^b+#C~cjj%g[='ho&8vrE)´ra ixH՗eYCw'^p~>-zI(tzi(%000Tb3p;fS53`\ߏReY#TL6,Pz0lMPp`  +t;;2߅ Fr2aAv20êƂ[BzqÃIW8MSפhkb/:F27`v! ~„ EN Úi.O1E1Nut#5g6w*ne)~ bua*`heVϠr_ X~4 gF|IIIs-Ƿ2X>FD3Ѓir*avc̬em_paoWVV<ᰶxZ y"ܶ}E Q(tc aZo1 +Dޞu=iEGBsq.HݙJ5u!9 /K{U;޾`L.[5"3ӆ %,:-(cl'ݤzM!'Am76Y9р}Xr-}Ĥ9ma"xA"x'7@];Q pLUPljw'|N;IJ.D4@yyyφU [6*gϷޱ4E\6`⧞||+͋ξ˱MS'gSUކuq^'M{klkH@w #(ۃHs˵ZUbrz6cv7^rwp|v|G4.WTTtOm7ƔXzP z IDATb$@iǹ|A6LamɒBkR)x|;iΠkUn/|xHAYXz@OV~%"麮|M `%첁^}NO%l 0|*g`[;tzW- <M3%O5˦}Mz8h~)fH{u==/րƙufmyr_g3 P8#3i %/hDpܾ|`'}C,[>)g`,}jx Z GK84l0緟B㫫߇l]o`8wj) yp9 tk{54mvaً TB{ OO]}(*qorsi^_RHzwW8۶ӛTR^xEunŪfh17;kHT|0ٍKw\ l 0Clh+.w%4p l<A^XlapqEH&|/Rz\Jh'g:(l1PE*]? }Ƴ+;qNoZګn|E[=f1{W,Ik[0cPh*.*aۅdu`1'u*6ah\F#| au<2kn" Ayd n; h\>h!=@U 6uguێd׬L뱓!~/Wc\mmpӨQ#*x Sgٳ_2F񛾝磼l޼WBhdw;kqr6uԂ].aC"7lR>sE5j =xgm棽#uݺl+K;QGTrJ)_:?0!kAEQt ~ӷCB Ȧbsv2Go;^%L cho]ھ^jooJ-aܩź9+T+5Y/؟Ɩ@EH9poݰI q MШ[Mi_R67CG9+sdJ[r }qW #tjpx݈?ޞ)QTrIxlBg[(ZIb<anz Vcf<6~ =t€(mqjAI::KBxWٝafd#G ?GpM(dl?~S5djoo[챝@-m={ *x`=U";uUeeՖV|2gH]| @I;7o$Z?E&EQۜASeBgDzl5O#Y9%a`t9ܽǐU2j[E}$ʎ,K=lcz7󮲝FT6W U-;wjGǰ!g8vW,% ['Pp6MO&,wFQ8ܿ eQSۏ\SF~NvԩS Qf_&7"WH.[WOr|z,;\Em||&@]N<狰=l@7 }l.+_ ݃1`J+m:DRb. '& v =3ǽ:[Y?6(t>uH}H`&I.;ap/^(ʴң=c7?$OnܳW:@7o޼mQv8 WJTe^>kYlB.`lIВK:qG:>Q+zJ)&%>f `a(;>wTC>aE#>pǹdžQ\fZ R(XfձKBى58YCl>t]/r/Kg^\GH;fe.31@1tq~QLQl|>)t7e3 ., `. _} +JV95sԚa4wpZRK[r(R<dq~^<:ڦJLf(^EPbo7⣣!OA.\E\9ʰsێ+1#G .a…5sXJ.a:.{jQ>Oe3߬@Eђ\6Ӝ2?|4 onIe>ok+(}x$E_x6?{~n/r+u]| Xjc{1׮bҾ!?ʿT{8<&f |'pɓgߴ  Д}*1'aa<3f̜tЯ~ Yi0+=#|ƫTqϊ%o}[jQ۶u' 曧fr_R\p,Oϸ GUws_Z[[SO,_~F*1Ez l>(e; ^XPR?eOI)l"""R]?4sEvضEf>]q8dP ?e HoAûUIݯW-;aXck^Za@2jRNs3߸W!NRk:k򞘟[WDDDlK^u8ݧE/y=,c?R՞'k7?CsĦ(f䷋ӻ_,"""Ni'¤S?p)ckxx˽G4́/.z(!O|~:߅^.T%7o -""" VZa;1p)wy˖iPO2:ω'XP̀BS<9wݯ;ܮ`)-<~'Z۶sOy\Y-tOBg /"""l=(5'"g<;K[2i\tѺ1ݰi<.O-VeV!4MMM(©vN1 n~K5d]aX+q>XLEDD6ƖK bWfYurҗFS8hor 6V6S|[ҰDDDdg*GR2$֎pY;4ղ9oolk_aDZ=ѱ瓵^y(}%tٵN7sHUĺb" G]e /KCRWtuoY^X=lذU7|й-N[vx]5&""2PUgIdܴÉ!`+c~xnxVIQ<I6hډ ",4Mz1t*yЎ5NZqI) UDDDD_'[A3wB'K",; A4shxg """"2x~ x!kE hADDDDdp $lqAscv svId{[X9`焎"&s: N(ls0(t 4qz """"2x%|)tԊ@ Mo DDDDDd6.mь_ ENiADDDDDWzd1dP~.M"""""I.l 87ȀhH """""=]23O[CGD]Y<:ț@IQdr.ʚ$Q @%E9`4LY:Ȏ$IuP^~ 旅"5m+n_eF """""R[GfF37CGc 4Mz4tݩv8:ԌlK_:H)j̹qo 1tI`W8ǘy0"""""#3} ;CGYhADDDDDz6NܝyGw"]>QYZ50p7=CǑ`&:H 'l=̜Q_?gHuv-uێQY``=a{"f: UnR?qC Img2>v9X>tA`=nPi|0"""""I¶;sny]ECx!aK4"""""IV po V,AӤGCI*hkmyБj:;b;,:HҩM7ÐiY'oo < image/svg+xml gpredict/pixmaps/logos/gpredict_horizontal_white.png000066400000000000000000000451621427377236300234710ustar00rootroot00000000000000PNG  IHDRl1sBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxytJFҠ4P)Q"WB( :*!/B"CeHH"Q)DMIfMҬtuok}k؏u}k?>W`$i`E`kY`9mhﳀ << S^n6&ඈx2_:vV֪&<`B!= \ k+#B1 %'l , "EۀK K"?eC23333\N22 1*`ni|llHfffff [$-BJ66V)QfgU_YeC23333_Nz$iq`K` Be#j{ӀgD13333+Nغ i1``k`C`zрO݉lrN:$iJZ/~.Y[9a]!mpp$plD<\:33336q6I{-0x!ppDT63333vp6H{^V8a$ 8t0fffff%9a㿉;cZqJ@JꄭJvNl e&i:ȧ c#m@̚0t Mkźv6𡈸t fffff9M+@S$!4,M%.913333eW$-%C1t0fffffuMJb]̬.$ieIdmXA!Y:3333: i ʹ%")Y/&aC൅Cv=R7GJcffff֍HتjZo"ҁMU_aI{՜X.QIq̆G^JZ8Xt,7NvJbffff։\apNljYKbffff։J$=C!㱾p]Kbffff6),p2nXl`|3",X"ap*iuĬNgoJbffff6֗DJ =N,M%=t fffffsju&=EKbE݌ڦ /- s%t fffff#Z:kޥc]DX:3333V%lfņ,`FDU:3333n)#qf@Ҟ1334%eJ:Mҕ%/ IS]!ieIHڰt,YT/d.%}@3%%sXC5@'nubAҋ%-9ys_a4 !¡)oHڵt fffJҒnN$#_|<KZ$/ , Pj0r]8&a?)ٰbY8جa$mq^=YI8ESs^a;حp f8ZҖ133t6ryyc-Y,TIk0?d &l>oͦh^xI-٠SD. &xc=j 4M+JQ$a4Tz0?Mť133#DHe58KW&Y4kM4=YMNҁ&t ] %iLc[&n pH@ [U{̬~(d߆D8:7dO4*i9mޥ033Em2N0p\mԽ A`>`:UnغƴI/*xpDxբM žm'64O@lnWJqmHչ-yX 5memNVڜ ӟƛ qD5iCM6uՀ'm|jcfff-S]m+kzN$-|XX6I[j llq)xUD4q\ :Vؾ `S7=¶^_:333̌=WM[֎g Ά^Yn5ŒxZ"bH݈U*+`IgGҁ""5Xt*#)a#B:FnAJvIpYtsҁĪ? @DS40J]DJx]КdmDU3¡X3336GY)]%lRKF [p6E:̬#ݮX@jv?ieҁgT#Ô6If.qemN$i/WچJaffff]AvemN.J;KZtffff~SJتյgW}[8kƼJaffff7HgQM&k#m' fffff 3dW>YQӶS r_`ҁ IV&z? nvjrΣ]XXX;xxGD<^&R}f ,,Fz? lm>Iϛ'H7D%bn+I +. :|LEHKϬ9 tMזz8LmH6dm#ҁ *IӀ/b_sXT[~ϝ% e.Djf!»OH88>"'Hz&>A:{t0<osʩT\=)BLԈsQZnū&\!t upaD\s@t@I^1dmQ8it/bHZx;qfgD1ߋQ"nYƤ =7k -RW?\#n̯#LcwZA{;鹰'I_yYI{0fd xҊtfFħ;zu.KjS򘅤y$MH4IKߕ8F,gF)ƙ﹒dyG{B%Q$-#L%j=JҼvI2:qݕVU$}[҃ ܮqj9'5W20e6cIdNFIJq3ItHFYȕF5"9t,ͲJ$tG *J+V#p5n@꾺'IgIzIsT>`LS<IdI Hh`#;v./*@I+tit^(XI@٤rwy"?p95!*eoo N$k,HSmG _IZ0"Io.C+H_qR+IR3R3V~JUZ/t蛴EI֮:H I{7a*+Tx{IZ[K3H$5:+k\;1tڈQ+m?+e2IH|-$iҁOdc!}}t.%mA&3Tms ya@!K_G)7T-[=W! /_:IO?I)LMI Ni2ڈxt䕶sEU>uiSoJV@&iA,45 ?Hz_@P]E3ecY8oVڛ9RR~|>=:J`=-BkK2 $ ؇u/o$}Fឍa IgkRK6jұXr$-Aj%݆ ۇ4ǴhӁC%tC?&ޮ|SI{ '>rڱ~uKh l^ \(iAH <ŀוbU{lCl\$s7aSjgULf7]i'mfeI]^@A~̠}kv*:LG7HV&]\6ٙhsVU E*HMWmC_ 8O?hk5<ұXm^'iAMUqwg 8t]hKa+l'uqmD]NofgMy?VάA'lm'^i "f{m0L]IvXl|LCEĿ;y`N3g(pF%6&6{ 2{˶5)ēMb@ȇh?i{%ftV96H+mYO:ߛX$}xo8H7 ~KqDvIml(Wp8l=8>EtZuX kaNxfQu>_qTc9w/>(U/a뗲,'mQIOJb=ww4#U?m&Yv N&?As9:rh͕UnV n9iTIۻp\ _YS6<[:k$r'av91|ΉKV6&NOv'EpҖIUZڸ*)JՅЗ?X_gHG-ʹ`,mim-%KQض)+aۤ(5{; L2á}abl]: \7۷6wIZ xxHIZ7:auokhQ-tSI?__X9֋6å5\TP~p}Xt-i.{KpDt0TSw^qGčռ dsXJwת񏖎ÆjSKR_|cQ<W_:).MZ[V/iÈmcA:ۆe>-v?g~j62~hH gNB?Gw:-it z3F l}'ls-{spK#;x>#oUk4ol5m RrF@4EcoI?ǩ*ؑAjLs^X\ [2_ov #n;J)iۗ3iKI+G ]|):t魤רH{+IN*jVUXt_I#!^"h}z/Nf>G:"z= kk\Gҍ<kIJ:@ҽ~KOҤ-%2cM<@Һ lUIt#o ,IGs1^;$MX $*鱆cqu;$}QJ3:M %[$g[+iӜ!IOJWԄKEѽ4KHeM}n<0:a{E(їIRq-ic {D\/G`н-g3"+uw{Ims>$SD|:Z61+">As{<X?"^;դu9R'.ݫ;IffNT򎌱8xgD<\DDGڇz_c<`È"1s:ƛ钆fŢhN_$mTRG݀WZf6n F TZgp_lbev߈a;˟>k>0."9ID|r9*o`^>g'y}q?c}vZIDT;UUSe }-CNg&"$UݓkA$iq`xCDbVZň ؒTjلZNRՋIe+G"a; MrciGԸ`IǓ[>Ba.v'ݕtDZq,{>LJ<71Ã葈hb jo Su% ǰ9yZy=5Vx7WkDD\HA@Dܔsj]|M7H%Ϗ}qCmdm͢QIE%\ l ݶq/"^uS$:m^ [.8 "nΈf[k%O.J:| H&-qř8+"N8x=+J]s'ld8 8^ |X'"V"ϵ0'lP iND6pހ@j"܈ئha2?yWJ(fm.S>*@u)*oKt?^٘8nMǟ  2wDjsaOؠM|UH1y٤nuVMDy0S9 g=0#VXUS,[Y&'4hgE'wptq;Y9$֥qr7;)"rS?|t| -:ӯF'ӁI:A%=W-&"9ʿJJ6Nk|{`цfJ)qlk{cv$duLNIDgdI헻2?/5#3]5ԦW䒫N}T<0I IDAT^.,\~.OWhaR2yOT[Fİ5JqwfZH)<şksZ5u<&W6y>9^Beiݞ}Kj7(iaIIkO֞ 54"^Z5)I 8, r>N!6@r۴vCK|s758Ӹ㾟KZT]4@4~.زטMt`4bKӕK Ҿ\G#I"h3Ƕ9=U3ۍKPY+Ø+V۴E,oEMhe`㟜qll:{1؋ .F7/ὔ13S&i`q $hHL6<.!c2n,ana'iA G#&q?fbƱ"OZr66I"MCqC9gwͳO*[r\5y(K L<mJ,ÑT\y/8#`xSӁeKb48t乃 ^}08Txjmu*)3 ?Q6\9K7dSj-g}r}1reu [<8"n*THKfoLZݘqgӎ)@[h?ZY~}n:w!fGK3U^]:!5h7V&ܫ2m@Ʊ8Ta$kwL&JzLZrv='l=NjzHD\P:퉏(e^9/8Wڒsu|<{b=C [>7GF݅c除EK1u !y9r8a{̚rl4+XeO77IoHe' X ՝Ȼ\oi 69akLt]gۚs\mB~g4tA'7"ԭG8ܠNs5/lp$9_`\~O^[Ntvڏ"bK6VWkfeX ER;^N9z)YfL=?LbLZmfkGA:4/#5Yz[:Јx 'muש6[΋6XNz3g~Of/iZ!Rd~X!"as(xUƸd8=+NR7Nl<~\4ǀcH%?ۗ `F?6"x e:[$^8gћ\%~O9_[Kg0u>rcD\Q:¶c3VڶN3!5hI`LZ o 1zb?ܛq2m pIq`D|w#ⲱJގ^ Z:[%Ӹn/8m7Y Ls>:mF:m-5 7GĦpyhE:+:|Z t;ͽpʕ?"E0(\>9o>7eᤳru{v&{PDŪw9d{B6I>K Tq,^IgIu tyf#Cfo5/V%$Gz/W9%27"C v؟3Ig"3H= t=%T(4+lYTNup /IKM0ci+2Q 'mmcƱ=La6peY7g\e{wƱ93?jc?6%ui٢tHU6oӱ'l{6Á%]U=pj%i:/%;ГQkAu3ɳfĮ8Ǿ."8~3);3or X_ҺǷ(7UUB6fQW>Hp]ђgܦSu pߚ~msb2kҪɛJDS%^WGȥ*Af%'øOT79^xODz{SߒΖ Ln)Dor":wy﹙W2$M3HChIlID_*r"b\ 8TS}~T@MNw)Nk׏&̥*c;\#⥥hۦ}2IZ({ttDW5)IG{ι~t3I?ɰa{ }53ڌ82] wǹwwu3~#UlAϷ #"yc) '=q6u:?4 F~s{"~suSj} \G=B:zIҞRӷ+U&iyE}T:KZ6`sVӧCj-^:?H<Ӝ:m66I[:mZ: Am)HB{6%FSf}@RF{͖/<פUؿFăc}C7ZFׄGZmÈȱ'%o`,U}Y"b/Kxa^C51 $O[u*v^7o&p9Tq+o /\Hz!TD d=.|'ݤy|"/Htv¤jE0 X_|VGj 0i~jO=mC|t6>_:>P%H+e^ջs%u;fZ UV,G|5"jY9*2cj̑]T[HVl [j~dD<+n I8i{Cƕe |9"rhqq4-Sq Z:"Dnhd_Ρ [MصG;v8:$mWǡQQfa=JQЪny$u/'v mV5S [D4|ޣǝcW:B6l lO:І+J FĝƿftF;a6zIfNO^?sj5`I۟2/G,y&")Ȁڟt0yxCD\c)smzڊtc`쟳7\z#aꤳXWxm㽗Λx>]v7O= 'GJ2'![DD.Uc-"n$ut,@:.$V]51WmSK{I3:|yug@~6ݯmKO`v,xttxmUЄ?hh.kmfP3I;FGyrӃ1A!Y{xr>/LJL|8tmQ] L%Eq|@Ej[ұdr%h\u;:T%m2x ޜDjp7a;&KZq:m6rQT[Ug5FzKRX[W؞ 5*jI^hXD<>`ؠjި*ފYit(".^`#m&йjeG*5LC{m<`I 7JRL }ǝ"`RJңHZED3"bfDB:+{XT:AQ:>אַJx/;c/ۦ}lvYsN%m3SJV1+"v}o#iH\5xpoXpND\R:o5#iw1s#G؞L`A x<"v%ԬHlEkItȿ$=6LHgtA-}O۹Ѷ ։#H- ?T+XDn- nE3| qOD =W,O!QDT:9EIhJ֯HeȏdXDĩ7IVm6T1VDp,DH7ےMEH{٬!(wcg`7 ns>Iڼݡ x7O عji ۈ Xrg*֊:瓞+;m;=UsVJY1 <705|D|x1p6$Gf>#\i׏x+l0q}neTۉӪ=ZռMē ~ZE"Aً#{Z/iX}K`6~۴qOVkhO"x^D|'"YJDt7F~ *"^HjNS:y8Tp<ޓ^\Z`Y x0vY'΋L$mFjډ"bh i`ұrJDt*~#ie tvP|7f_%,aޥ# lx8">K>DZX&ܷC}?"ݐLu\D AԒVx4JҞ#,}O4`#`RB<:?s8>D3⮈xCߜD2SV]"6ibZ? q9BxDD̵`²I?$ݡfϪ:uD/IIXm7A¤UkYgV_8 "b W|cͿP/HF=/h[R]58.Z6x$=xu>i5.^ggDD+􍒴8| I'$-5F@UMōyD^ԭJ@Zuߒ?Fɒ ijNRKZT #␞"S-J|$A{`A`Q}>Nդ;w &Hݮzd6GX;Yv!RR@5Thg^+T| ya%y9"iI{%_G~kfffkJ [LX b m6*YkձN3/:#iqI[K:Zjp.333k]|O+M&Va}m$"⋙Ư]˓5##A$ z<¹`ff6ԦELIY9U>^:_DD|%}إt,xwPIZXXX XU 6c"AY9ݬAZe{?B)Z|ع,i6U+kd tNf2`:6RlfffC-"fK IDAT_M^<X9[[ewNMyiŬ_ו꺌."~Uc,6u|ҺF$}|&",0* *J/뾧Oue'ʔ~AG ;Q{ڞ] Q:a,Gw)aH[+*Y.0d;"|syQ:)7133J|pO*8",0J#wJ#'JbfffsVٻX?}mT7=K[:aVF~t{D\[:333kZRcI[%kKa|F~,"-K- Ƴ Z\offM+l.~]_ZJ[M`:l[ l.m*<"^:.]JZ\#"|dY&&l!==uk}狒cQ Wx 9F lnUi :qLlT`xYDm-3533uQ5Xحq|פO k=J# JmkFĖ 69ngu֧~NkO58UU~I |xnD/ٰq/^qk/I""8Y^Dt6xDNtr]/k/JzlSUv{E {qC={H{ЮV}K |VD]:333X45g# Dā}pmD>z$i!MmX٨'w333T%l$-J"F(olg{̬4H8jrʈW@l<hL[`5ɃYO"Hs%6d1333xIh>Z2Jbffffã (/df;:Y3333]a4 8خt,fc{D|t ffff6|JQa3pRP$N̬ @D*Ye6[D|t ffff6DVGt,6f3"7̬V#w. 'mYjm4IÆC[#ҁA6I3ÀyKb`ˈt fffff#ZH8Xt,6 llVaKD l\:Hgvfffffm "^t,6Pl,}D(ǀD"{"]wJb}:mҁM/6I/N^X:;F13333DߔD)"&kqX>ɚ]aM֤%Jbss@̦oWFk.H jufffffj VFH `oñrnvߕ̬6""'$iU%Nwqq_1EJZi ,H T'G*Vh .nv,1PIpO6_n9x~wHRm>J릁K$IP"2ѶV8Gݱ sI$nj})3'Jh[π/#I$uCcۺ<^*ݢ{v "~-"I$uS_"bNs5S+1X$IR4Sfo hsGo%Ih`[1& _VT$Ij[jFۇ 4U |?$IJrm"3Gׁ9M\>JH$I?2sxx.SG{#bt$IKlw)3oo-ksW)#I$*=GSyU/,/ɈX+#I$<}A` N[?/wI$8ضQf> pc3ev*#- p-"M$I2 m8zmUW2H3ܬΜ;$Iz?ePIENDB`gpredict/pixmaps/logos/gpredict_horizontal_white.svg000066400000000000000000000174551427377236300235100ustar00rootroot00000000000000 image/svg+xml gpredict/pixmaps/logos/gpredict_icon_color.png000066400000000000000000000712001427377236300222160ustar00rootroot00000000000000PNG  IHDR+-sBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxy|w:'+djN[jmRbz߷3so=[6$$ձvjvf\–R$s}?(-P$g^9?BI6͇CQX_,bS,HyʑeLTI&ORdFH6Ws+{tf%8C/٣z%{\1| ȳGduPy: ?PCC_>F%m%s'ɋMT*cďvJ%S")mؔ9.ٽ-cvI#]v=]fljF(zl˘rY;E4YMNLb$UViJ&i|o͟D2@XXJTHg*d7~>]6`V/i6I$nG-Xpu8H 5i_].cgE)^RqahJSdNƬU_;lw B K$IhHLIE!h(26P2Y{T%z(|I;e+]+߬K:7*x$E"I2Y^]"iX}ZD\](R1G#%sKetYc!d+R%|@r5H+%{~.I9c! H^O}Iw'סd 5Ĵ5Jd~Y͖t8I&iH@X3?W.:PJY8H&_/$mYn_u A2] <&?@OF:tuHmUM&J&Y󬌞܅/:P}tOh8We ݹh0G¬Lu 1t粝afMʚ%{qDR԰@B j';;x юY=hsjh(@.ϓe:tɘ'dMugGf͚|?*cJ: UoSýG\QAt4uuH#pp빇coLg tޘZ~\ }يB dcldJ:; c:7TF (@Xᩪy${8@6nV]H#5;O,>=jRQ pdj U[Keg$u@:$k.g]0@&Ptdh8_<'<>: I(@2XfʍJyY{P9Zy#8 5\ #cRLq`zd7#5HFEq Ae#~PCѱzd=]$/25o^aPX"'c>+uHE9ߩa.aPӱzRdڏ}Qw.: Tjl:VW|}FFSViE;\B T2%٥)pŪWR__w 5 <^X 9*X䋜 P::r5pS2Hv82d)zH }Ps4[ %ɮ@dTj}`Eu (.|RFVU@܅O: .jd՗Id~Q Y+y5w]GҁB8UsǘgebhβQT\ s~m/Iy@1kdcǙ#SQy::r?t$IGlـ0@2QYښC]GU<, @Ph"ct0<~_u Qj[GG~A|AR8}2! ?: 0\jW[GefHvYu\Bi]S-_)zQd~ /v/!l(|NF+zdc5t]BphosYYҢKFwk\.B`k)oO:  (dRxQN퓵ydu8ͷ)(Թ^ښpك 5Rq"_ѝSjXud6 5RɖoH*sh.~ud. 5R'+1Ș)VnYYjhwBk_3]6& Q8ů\ݹud&HdeYGGe)QՊC`:[u4ULOKu2KR[u:=\T: è[6Q[u;٦EKQH.*)ZtE&MʚI: jdW{']APEkr|Qpy]m-uGuFu_bgt1׭7^|Ѻԡ`e\]s]G {ow,8: RB֬)V^_$s(@?Q4~tGDmMwGA]u$:Ӵ6Oя$Uf_hβA%c[D'J2]:ގBDm- mqF\Ҽ%OQ]<]\wjޒvA u5,)Q H- 8B-Iw1a] P+{A(Q@h1i_(ԮJ: uud3 K/h( k2+5wd+8v屇'?LĘRGX3ulEva͚bEs~$u?'(r%Qӭ#Wy$]: (;=P نBNHf( #]_׊t4TSO2Z:hi\Q~yA|K[$%1@z@/~ul@Nɶ>d4oӮd: u6_%Jn$s-zuLFN:)oƸ֟sq Th+Ee5N=֯IRB 9雒]GAxu @fut(ԩP_~z h4@R\ء]DdkkKYu ׄpu1$Xx(_$7%&S{-/*s׏O铲I1>*]MA‚B=XOJR(tO)$8,Lmp$ X!("`u軍z0ǿ&u bK$μCUSBښ|1.A(A;sZ[NtPϓ-7 AЊ,;>Ikޒ߻NTLFDLKS vύB}.'k]@x9 fpˮC+g oKae;O󖴻N43=X)?qD),e$J5 hͮ +jl̑ie2-33 0F+jTcc AB>ըIu Ci3o!ZW}P`2&_~:HP%i͚b/u_(a.n'뿁!IGD dZ2 -HLۛɪu _O&1ԼES݅Ɋ ^XQl^OTa|{XuWwZ@(Ӹl)Rv$"kvPq)K3c ز`cRn}뻿vŅ-L(l,ӧb0DG׻tnA-V>V͔iOi`F(bՊY/j,t.[XƾOSq"ݲk㱦K: yv਼;5gY =+>vAAs\H^hY/ X(`vd7̞P?Rq&t B]H̝P72#LUcˮBfN;:re#Lc OQcc :v/%rAK=> Hϻ 7m]S-|Q bpnOL{,yMM|(xe:ȏ<:EeVnk8soعp7C$S|tt(vh鮣= ]08M:ׂ\I̙Pqp2^ΡByA13&S5Y/BQ.TDgiW]'ITfL㑇(ӠL73R\HOۚ]ǀ[p`R x|Ps˅{Bё+(m|OɊwWRp>P]|~mLnq Y8^EUjXvu/Qe:=D_1\PIsG,Lo9z\pN=e:+Q37ʏ u[}Ya̎P2j$+_;:PkBmLgt (|Fu!)#Ϻhe}|s^?~uS~f ؘ:YULg'? ujz}`EuGQte:Pjk|!+5k4u jn5EGWu DŽ:7\AI|.@63;GB8Z&Ic]GAQp6L k핟_;8:B(Y2ssVcq!P?Es%rEa`0tDJͿuA%h_2(,>W +T4COp'k&*$Q:$ j:G:X FpYg}Zv0'mMf ]GAjP L Uԛ{\9S@'Q3edRoBX"E6K: T`R Y㈢^EЦPDHi [5F*/wLP3Xj G [u56gE8i kFzqL[ZFnT: T@ۧij R&(2 W7Vy\8)ӁM\GArPhL mWR cB}NQ3eA"d)8g ;rk4H8ˀPLf%hR ˶ Lea0d{\]̈́cHKHEI5dk龰 u,(ӡDFs2EwqjkdMu02!P|DRmگP8PJE|!C@s2/WL՞l1h d#nTPUds.b|:İQPP?Pn4>mİQ(&b{U;E7<Kߴ@mLe8? Z%_xK. ] ENǟ )c?K*mMKwiFEtm 連Lǟ!I͉P?EwJkaX( 1P9hQRyOe:(gBX7"iX R @wǚfH檔^B:6OKR[#fxs ځ~ŋׯu ( JRe O>R $R n+ue45eTT@MW䔭!P܌&j 1j8u7YSNI)y}Lqn~x͇q]GBs zuLԢEҩP?!t(1äʨP6%gRhM"(@b(PVR_xq"m"Im@bXIv-ٝM:+tF`R $I5NTܖMʇM(nPP `LWxs"Jk"XH\պsqw: IDAT^.L!0TaR L%{=2H "k+O~ꤽR $R PUzjx^ FC ]X[ZQ $V~ d$&@bT@D$C@beؘ$hj 1jHscB=U^I ? p|-;BFi j 1L F{p9BATT@_H`0E6TT@ }t:BY*{Qd/J5J[QEcHZ=\5w^lBG QPob~0buA G U< s^?NTTǥcKWkMswWqxױѰ:Џ;q\>I#sAT$#/?Q|;tq~W]_\(48qC=>o+EF0ä:yG|^y귕#=Q:i2J :߯f\GBiB~,7 1=L߽zmm¬567onOsB7h:.\ϱ o~{Vl#] \5Z^#wS @@\/C3:87v98ЯG7wRұ%ZZY;gT N}R @e{}s&Թe e)srR +jUF=[8E)S@mWR:Xt"yyH`ahښ2J5p~woѪ z~G B-ӽ3U?׫V%^)+5C|{`X("ԳQ+;ic㄂t2--M?>ҽAx8auP|;k&*9@@ةF6zyn=عV޶E1K͙V558i;77i b5ƃPcW90@"T#[Г[zP:!-VWT봨V#8*eNF蕒57Wkn" jdjԑؐ̕r=O7Mu=,ZSeUJzvIdT#ĭvlӃk®UQgiJaҞ)0yp;cq4caXK_ZG\ KǖhymLPoCKz6z8-XpBo8 u\-Y4cR0ze^=ԹV[6qZ hJ[=SMmKOگ PMԽQ 1tSoG68N |0ot[:()'D@S ՏwCkk[p&hAE>]5SGtM߹]~c*?KEF@1Kث]Ƶ|8q-՝3U6+ֻ 8tp$|o42dj+jUF=[ql#ϋcSzusr􈾷c%~.\ƿ_"(H~\lߪU=FQZZYE5*w炾ֵ^q7=ez j˓H1J5RaG_z6je:9~uP8y:Z>]<ǵfS\ ㍓0Ap"=`Z}{,gG\}rZkbq뛺?s@ ى䜏N=:\BI5ң:i̢b}N*j5":Xk܌\wgg/3C=ҽA-=:p'r=O7Mu=uO{}{\X~{8aEĭvlӃk®{=H 5F)#\I\Gdּ||BmtIRiFƙvӣku'4.[3B9:NR=~LOm:`{~5e|AFFEo\-4s`izQqBfh-ҪZs'jU1g.4Bͺ2 :{t>MԽQ 'ώ^^S'O͚gVzI=/PU(ՙ˷V?޽Suճm&A_պj:NڭfDvn|BmK. (ՙ@{KLұ%ZZY;gT qljÇ0x,gom%R9ѸQ1^ٷWz6]] {wl@zܳQ_\Ǐ 'o2\ZY[˧+b~'^~1Et8@`PJza٠ooۢONYT:N`=ܵuadޑuSb} CCzrK\uOWU=CpO_ߥs.99kG~W]k[RJ[#ܳQGc1qB!tӔiZZY\ /յ.<P>lߢU=<Ǘ ڤB͟QgiJqBeg_= ?`IjX7>jLSoױ>=K+i[QqB񥺿^7Os'@x^ ,1d9Jujo\-(54*'GsUYzGqBmҳu awNOo/Ɵ%J:9jVvF!5Z +jVcr\Oo{U >βyI:|H-6{w'6e>[{(:NV8߯W]I㕒OO/ԞJw L(q?go՗7տrdTjqeqa:}}s \':9 1,=痭^5lW;ic㄂g-u|" Jz{2o*O7%V eK>y᪞ ֶW{0F*@mf~s6::LctBm0H\ -=zs<:Nh{8-ӫ4"zCn+NH:_)dZ^7g#;yi4-e[{\No-uX!y zlߢU=ƤB͟QkrA88ݯ~:+Z4R }ҩX4Qa zg_ܭvޣƕKuMn)Ѡ:ǵfS2㇧J(ZTp WXJ+εj߲I:N(iL,]4z8'l\UQ{gjjHq]\GsM $KKfS^-Gzұ%ZZY3=~L[7 l2,}{gܥx<%4gk/һƌsIܳQs N8Q5jo©y@TzfV?#V+k5./u$oVlt@xsDX=^1@ %/֪ jǒ.syIZZY[˧+iF;۷?:l85,wbBOb: p''o2\ճA{ctN>UQkU1r8H] b$INPdƖMƵZ@߻njӲ:1J!{)B مJoItoP:9H>L:͞X:j: +:B љ[gŔm NwWiB~8p7c]< 5ҁ~}hAEZ_c}#ƕKuMn)\ǁcoI7 2 ?m0*'GsU35t1 @͈aB jFk-Sqn8K?u ʘS'juMXơ8]\G|&4@=35p8}-cjB=aYұ%ZZY3hޠw@v+$6p4K~$3ڋ1Czuٮ7?#bGը"-Zs!W)aoX@xIZZY[˧+bYQy䎉*+otN>UQ51r8kK{v'DMqTxB:y3T^!J:+72|i\MSiiefO,s@xu xgbY OYAV:27uh,:U񥺿^OSpRJz2fh('GsU35thn@zhkxpS4u V[4ZTŠ渎,sp6QHP8]PVku2JG;ogLAT+IN*/Ч*uOLM-: IZz-߫Q[Hp-לq܏kͦ.1 U)?Q\;Ɱg->1|DeT:UZRUy絲QY[(Èt1tS)oI1ܬW1sH\5Zk5c(q!yhZ-JPұ%ZZY;fT0uǏ[79͐X<4+Ju@ry}lT-e itZfs=OMOǃx9QI)$PKtOLwHo{68ɩhpuݏGp. 5bW/5|9ݱMvޚY jaj drr4gZc\Rbeۣ.3N)2¢h5qHÇN3|(!Ui`uMXUd][crig5J5FePA31@wUTY*/:64ʚ5Ip:V>@tlk xdn?1t [)p.?Q\;ⱮNZ7bOTxO\UZRUy|.>tTjg-5qTn2Ntrdb!zq 5ŹkFHGt}Wfz<3RlfcQYq-3{jVlT;~A$OUT'j [xTF11LE)S^_:x1뫩{ OJʽ j +N|HPYAV:ڶE:骺:q 5#麉eZZY[ʧ)j8;]^Kuؒ&&B GQNL5T?z8@h;x@?} C=*o(@|CQWT봨V#d$+ke^B~n-קT/:dctCYu8Hj4ò:y}`0xQI}SA41@wUTY*/:qlg׏OK+kr-J5zO<D-z͙Z Tr{TSiJL25}Q" #5L׽CuxzMpޚ܌x>j 7*^BGiQET&gezןYT'LrrmJ5aS[4ѵ^7N'4{DϾijf9O2Y87WwͨiY [wwFUήVQW2ץcKVwΨVA$c8~\7u:p׌j8pF%ñy8y^D2Ukx7l~YVUgT!gm'@2Ef^+J&w2]4z gsT1 CSq|GO?GZսAv j'םff)Q P  軯mw8Qb(͞8YKt2εN_^8B\4Å~qpĦ#{Vuog.3N'ivd]9TܴزieUu?R Dyslo^ٷW۫_{D"zR.tɘq gz1g<-uvT!@TX$z~=k;i|^)٥e) N36uJ f*J5q{ *? )p=Ǐ驭L}'87qB u67[ܛχR Ad㍓p1z)WM\/ zή1>J5TQoQGGbz]glD4+J&% H9rH5~SG\ZXQB*Zw{~[s|iQ_&L2}\#\Go~Gg/k7Ua$,C2QG WyLX9bda7ӣfX\Q1eZb%Wk_1j EN=:j}k۫N3]]56(ՀSLvsh.|1=Ҟ裸|}ǣ_?qf:"Uή_S3PPG|sML{ǣ_7Lcs'DY_M=f7RsR `NP&@8u=ǣRy᾽mu̾|(@S u!/4[{|7ǣ#\ߌҬ?zR р!吝Ge\@kؿ)6bHuv@kp! IDAT4oZcʁ;yGIo'm]wqYly8YŹ<CծuN|}|¤H'V&C0Q<qx`@v;Ͱ@Rl;S&f+'}޾="%_ܾK]?bT:~QTgPn;ۛXǣ 5L7kJXc׿i48J5֞eB-Q c}ܿ)*Y];qI:{,J5lY ɰ# `|<;nj}s uFs}T̢b}iTImBmd=*@fY]^2l?#8l=g_sd(@P-%s$6pB]9TKSUVaHŬah^aEus[Iҝ@9JyM3 ȂsءN\? /NN:Y_=,E[u|"TJ}xߍRC}}zb}뷯~k'f,[tlA9l[Oa.Եm2SYG{MY4WO;K' b!(!mT]ݎ}?JŰvN}о:F,=~whMO J5pPK@?۾i.u1Lnݝcǝh!I(@?Cj' 5{zz|Wjj`?]BjlzuXyÓ31[?(>܁j۫7n]la٣uDT(e01a$yOsGYT[{wGg>vTڦ?No@41G]0S.6]jL3`7J5w} Ly>Dޫ7:Fڢg&2bPX)^Ly}> 6XLj<8b.qiRDrwP3 JS cթYicTiRٌ|mQ@0GK;H?Lg6[T#AN-3۷i1"g8Gvi RDpZo2!IzHqma:?_/#׏:t}dR8h7>xB 8:'ؾNПsidRˡPC &޸NvfGӢ6=o|B$v#RˡPWjSow q璅 9ig&@>(Ո'Cl\-$(N܎^^4Cs54CFM;C|H Qu[lzdsj8Ka9tZ.o6P{hQ^nAF+ԁo ĞNKl}'Q癭hTĞ擳Rsoq{6_] -pdQO^t3+N>4Rw u3%fOmXkdZ5+M3\?|9g@FѤSYI֋ {ERG_!rguX*S.Vw`a2}Qf#~((j/ԕ=p|^4e3 f@PQ`Ϩ7/eCJ1 >p /֮];M3\?QjPN7B9}3-65&7/4]=4RHӗXU"Il@GӢ6=g|BO֍1 nJQy_:tyP H.J52+]zkλ*yPKy¦)fs϶o30iGI>QzBݵ[P@O<͋LuQ܉'f$J5VOEN_*鍼!^Vm괎Q;wuM30zRΙfT^5ly|HrY=&w5/RoxY~HP/ L8uOhL3?kti?jǫ"hɿPW׮NxjZy{x \ˈ1J5*+$ u6yܼtKN8I< @(Py@!gyiIƘdR .`a u%lD@"||ޝƻ#> @6(ՉA el`zBFzz4or #SEp?ZRT'UF X?r`Go~:Ff,@9ߜTJk>Ju ws uUݻlitRoWzNri $頻`r+H~nahCQcn!VB7[\ ^ܪ^\\0h]|IBTǞ+,lj\&,3@ 12]O_Hs1r ¢T{.&,¿ Vr ͋x_qg4[(Jul|D^j2O:E54P E)eJ( 7魭M3L=t}(ՑS=?/ƃS+˻Gl(7 YCœO3:œV夎b<8zgP-]]6h#Wf~*sTGTug䴢h i,]@Re={5Ju8PM݋z| s^^P"OoWN{i>0Pu:a 5Ju̔sE+ȇ$W6KRP5Ȟߴt7xXJve 0cFqT Q#"PYb.PBZٮt^j&7EoJuy5qu1(n$x9@5m Ǣ6-0>͐*z-~>IE_껚waUuن nzUX: M=eE9{z_/W64@u]-I}EisFkpYi L;؞ ثPKR,nP{=ײ4+lsj<f._}IF\P#WjqB]ٸZNyxzC 4uiݦT#(5ZޮPKRZ?1]rNVvwOnX%;DFTQcSq/K {-hPgOuJ52y2m$|:١'7ֲ (Ո tLRG_Jz:d% .BFQ¿u B휗c@V{^g:Y+y(+tm-B-I;ZmU]yiKwwj e:VV5YR{'~{͋ 0T#,(1#]zk(GXl<۲ 3ϯmޤ7n.@pTe:v(=huSǏ)c@6zz R'twz_jXLV׌'Ft(Ygi,1 S\𲨽M먢TP(ӱ1|Y%I:dwm۴3oYw5/}!AF(ӱסT(w0Ꚇ91K g[6d}z` J5rEN;T9![%In2+j{oOD٢L'v!%܅zLFdS,͈T#Sa(qxT28h9!2B]Yܭ1` ~d :( ?[cd*:Z'<,c4:-_L'{EU~n"*y%n^on=Җw۶DBNt"y\^ $kxM[ߴCL!((JuQkMulEPKR#)o}H}zz4w24D/tbu러C"z| ߚ u͛9y5Y ^}N\=: 2@T YGw%9:o{oe;AELKq(Ԓ͒vZ:(Ӑ.}:F!ģPWOX#~`n|2x*W[(xjIJ&1Aezr3e:ixZ(.y}: \(A9}SW[N˭c…?lQTSuB^:"`?TۡLv:FůPW׮X( {-~ZFMһ1C.4>̿OSCf7+_ya(O USubo٬1NuPqk\%"M1D.<4Q=QL.c&g^¡L_^7:F1wz_M 3L ~/[(xPU^Q/)3䇝QqI!J!ucnQqPݬq kcB2F>${3PqP^Ϩr[G)dPKs^FIQN(8vU'$LKI*Ҟk?Z(8$nQejB-IKLu @QDSՄ!J-y[zy?JP1I+yZ6XD2 8-U5.a!9|{y3tu@4$42Hji5Hb IܩL#U^V2-%PKRu=$TSSeF]%Qϱ$j42 U7A7IZd=Q(Քid}maE>w*%uYGDOK5eY%N(aE>w%hMa,ՔidzL|:FQRS?]rc)L2LUM}!ŽB޶0j4rʏ[Q@DmmҪ: ,K5e9hO]tf(ԙzR97^/5RMF[ u6~)[DW)K5eqQQBVGI/YDW)J5e9Zk:D84wډ{SҩQ5| =uѱik*R GD ;ԹihU: 7ةL#G]JPsIDATCUur: Y)șwשMQEGMlI?Bj4ruZ2 uF1іOL#wI#uB?7ζl_TL#+Eil$ء.J%uXGD[6;Քia(ӅA.wrQіIL#iIc5= qA._I;TL#/K5YLjfaδܵ1ѷL5eyqu1t7w2x=kGPG) A'V/hZ?Wmmu8PGLI:: HVOh| qG1}~.( |L.. uCNU8=PZiըU qG.GLo1B]*5Stu ^1K{y3fI: )'u`ڑnSQ@gUqT-eء$}: 7>ABmeTNhU iuikyʴv͙5J.iҗqu$P3>/tuەJ}VU~k$w%EI;(rJt8PâUA^( zJ}E /Zn07qy_%: _YPfl|(rꆇ(aTXGHkPغ%_/J5I%]A? u4̒w_$<^ jGu31wjNCb7Zy $j~lc:*kL5que::팚93=/CQ UϴQhj/: (:g١PG-: [ZhhPGټi_wsE z}6:rCyӿ(( K^T澪_YGA(q0g%raQ@$wj^PW%kw 8y`ƹJtupP K0(q3+{JҹQb9UOXc qSٸZ}Hz: 7OSBGۤK$=iHzFϩqu:*'uh+ ($_ҸqIPPǝNsW}: pQP<ꤘ3NOTnH5n (> u̙e͕Q-]rRMcQPꤙ=SJ@Mr*UOx: JBDsf-<.|(H|5:JS>htubiue:(IUWC#~YM@MӎU[f64g7#IeQf(m%=$((D@NDƾQδ@-WP5= fUu覆O%dpϫphoK^@-Pyi B4hIq(2/n׎_2/L0̛qWQ(vMPMO :(ޜgHa9u m_SU2 F>ԓDnz@G/L#P#?sf.I7~uD=#J4: IZ5߷NhcW.d^i;(y3ZOtu]7!  5 oW6GQ߰:⅑^ejX{鞋`q침Ӕi;(93.r:: Vnx:jغ?"H{>NFCҙ;+"8(Xks{:BҚ;DMtu@_i['ArPacΌr~Qq;?v9 Y(԰* IXGD^NUˬ (԰ r]Ek[o (yΔO#Q[: @F̙59MW]j1+P#|fO;U)7UQ򘜻<6jWJKҩQ6ʻ[4~ @)US$n(9/T (3v s](J: $KrתU @ءF4mxK#~R^7K갎()￧.L#*ءF̙y\pxiŹǥԍ]i5gerɟgJq䂑D M{@vXdk>BFCx)9sqn:DP</}F^K#Qq7UUuP@T7<>.%Xyݬk>BFܰC?yz}["iuHy7E}Kۭ@F͛yI׋@x9=^71JP%Q ^WӸ@Fx4oՒʹRuݣARHj~%k.W֑ FXQ4j$Իr{NY^?TOOT[eB$PY rq :4Yqڭ(XU% !Cҝ*UY: j?s'A,iu0!f.CUyύk E2@2bM1c vHvP٘? Y=wh۬QArTzIߒq OJwZB c -/8ɻo{QE {y3$[)8pHN/6U=.u (@͙v)*Iq`@=?Wu N(@<0uRF^``lO}?Rej0@Qb5kY() t'/GJ{f^QN))e @ O2 0S N'Xy-rWA: 4je9?QrN[U {@a7gQ*}.7pp$ݯEaPyôr_I*\ WuT0[W6(@ͿSs(5r^?UVX? 5s]Tj4:c RNB DC=#!)nc -ՕցdB DǨuw֟yK^Ub@n ż)5>fA-+paB ќgKJku{J/qZPXj :SA{5c!@ىN>x $ɜg(u&θ )-L}?Sej@JB $ǨWt$hH@s h@QH痩wHR}I֑҅[.c*+{EpTJ.tu$PHiIU5. \(29B\&xKKzGNM RMB@vfA}U]&t^hJz^5YU6n :! ?grgbᖖ{IoRE9UNh ( k֬X)w.qIYBuIIN/,; B Z '+>%tAqmso)/ɹ՝zS]֡?wAOȻ$}LqֱIޑ_8Py3NVH.d'س%傅nX(u0*5箣*>&>#H@w[%/i_ zRo:B z:Bec_;J:8"Z$"B >0mzݻْ;[ʌ&6I\_(%\~Hƍk@ f a=gW*>M.u&$.S*ɭ J5 Jrk5Kt I@O?F}#x r:^ޟ iqkHZ/Z*lP6)Vn\zSTY:.r1 umAeÕN rpy WJGkUJݷH)i!{;~lnIԦ@Jy).&69&ڦoSYЦtۦʞSbיIENDB`gpredict/pixmaps/logos/gpredict_icon_color.svg000066400000000000000000000061521427377236300222350ustar00rootroot00000000000000 image/svg+xml gpredict/pixmaps/logos/gpredict_icon_white.png000066400000000000000000000602511427377236300222240ustar00rootroot00000000000000PNG  IHDR+-sBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxyeuyS< $8&# hns_&&h$vh0qGĀ23MJD\]GRY%d0>T4=~az(3)GS 6f\'7fqIdz"3^ 88wqiqI`:,3#h988;"#iq+uLfnGsSkh⍅R=|(Ɉ8X%4ch$M}gH b'jM>q$/gFa$Zj܌昻#SI3Fĝa$=/RKdiV:)#~E3~_D:$ T*37yq8gqOui^Y/'GǑ}NY;Gqw&opn 84,ҔeV4'u.ivN۫H}fdh&;Ǒ4~|ۈEm,҄eSiѯǑVٳ>:'ji/38!N'1JPKcMWohIs GĽaPK0Xπ=HҸ ,2Q[HҤJg}su+,2s'dmXpIwp"0RYLO"-i>,HmeaP -HRUB-"3w98`86wLo#ZS;NW;$iCCS=DsB68G\F:VீwE=a*jͥ\ ocjHRDăaYPkdf/H_G2FDVfB ,s YD|:4 j^f$瀷FAi\2s{4 ߴ8$ͫ/gPw'wHǷCqIROHdVdCH25/T&eIui2s<˴$3󳙹OuiP2ss4[Ǒ$*:XjuVf8p!Iv-MgWB/"I/'y̞juFfno~eZ跀3/2NN y(>Pπ" ҆8Vey U,Ӓ4O̳3s08Vke4;Wg$a5Y:7p&pduIR| 8.""ʕFfFf˴$im43ߞvjiY"IꄯFeA$tRLeZ4C U|sB2y p,NsZRN5sL/2-Iߪjf f*3wٕ~quIR/1"43s/2-I#gkh~8ecHʹqkuZS/>^E4TQ̥LK d&aON5qH˫_Pk2c$Ӏ25A/jMDfn]uI <;3~pCçTg$iF 6'Kf摯iIR<vf: %379[,$MGhά:Be''Tg$i~ aD\RDʇF|˴$YyyuuZC<mH4%[}ʇ6(3 #,$7hV@nvPk2'HT:ਈ j/W>|-5,Ӓh૙ j/ ֲʾͫHTlS^a>|h51,$׀#byuZ'W<$IZZɕ/eZ  Zo>Ks$Iڰ-Of_TQ=W>Xf.PEpBD_D5,s*3w>VE:𲈸:fB=2s?sY$IˁDĿUlC=g2wLK4iܬxhu͖zdQHS;g+hv,sbpǹfY$IMs2?TlCs$I.m:Bc AUQ$Ig{h:,=[,$/wGuM2s:$IzoEuA4Y̽H\ 0"̃hd$ |-3PDc|*U`,$ivϬɰP"Ip^f.Y;.3_Js6Y$IH>/X;,3_O?$6>ųPwTf{`,$i,UX;(3_ |XZE$MF2 A4: udO$FYyRuB!&tM ݙ Ŭ#24L 2-{Q$͋&3cum;gW$ͣ4"NYZ,3I$i%pbD:BRzX%IRSgV,-4xGh4$V dTgQgs2&'Ւ xzDTܡnO` Uܩ$M'i xAuuez%K$i:D׹1|ꬑ\$MGY!BHL+QMc,Ւ x~D|:HY!3w ^E42Z4!O몃t;#, ˴g9pؤ4|t5e 3=X7*Js(]2Ǫs&?$I#AB=<-TgQ̤Ld$Mߌ| !3>eZiϩ$M3s ]`Ω!!93/+Y%I]`ހ<x}uuNY^R-Id!̧ćh4ˁçqbd.Y$IẗQuP/`7]qY)uFEIҘ.wWi#W>v*ie\$`! :x޴ezUN%IczuDSm,k}y^'JjI?&|b`:UIXaЙ4`^YBѹ2Z4ku6qc 3_|h8:o^\ܝfc,j^,ՒEf Uv#38˴6l.4!IZ큳j.mN~:ZonJjI"8:DDf|آ:ZG-GIFtqyuY uf.2|͹,8 'Ւl |hе ZB6wk qC4g'VZ}hNت:Z2!I]" 27g`, pR-Itj`Yuez,ՒquY?9d,#pC4_kL['ԫzX.ˁ,Ls{$i(1 /14Kk#$ICzQf:Ĵz#3w~ \E!Irࠈ:ȴ}Bb,⍊! uf>*=ߨELOjIߨ2 , },jY%Ip1x:ȤuX:!IڀVbz7hΜެ:Z2=CN%Iq=SL3=cS-IŹwU^< Ϝ# ̮Y{I$ H T)<:f2=,Ւ$#" k+/2=Yo I|z&pTuQtfBKiv,=wz8CN%i]ҕtiB},ycSި(Isu!Չ ufnF=hf,rR-IqOu ʄXeZjIsӑG~BWSeZkqR-Isf`߈Uu„?bijI[;o!PR[WgYAN%i.I3:B>s,s5ϩg!֧ؼ:ɴFZ]c:nX2EqZΖ۪C,܅f:EuMeZcsR-Is.`:Ț:X2pR-IsSM3s'4 ˴&I$͍;iv[5nX2pR-Isc+-!Ԫ ^LkTK\f +mB6,}9Ӛ ϩpruUfB[WUgD99޻;"Peo,*N$!Vjń:379wY41isR-Iv-oD_-cLeZZzm!\B,˴ZI$OGĊmP t_XJN%^\ oϬΡYzN%%"Jd:3e,'ՒK-ԴёeZb^zkV>2so ` eZ$ʃ4G]]q LweZZze)pbK&ԙaV\_cL7TKRowU7`*˴zI$*.< uf!eZZzgf b"˴zI$okj<ˁ,A^\REh'3]}˨?Zs2$u `.8b{|5xi%?$Ӗ3Pg5fuM2Z:f`oh,]apR-IY]l^KgVa:~VGf>,X!Iɴ/2 LKZ:i&7'N}B[[OZZٻd.Y$It;舸gńLٍ2˴4XjIߟEfQ0khq\Iꔩwѩx4ll^B"K$u4/0 5̧WR-Ix4/0K{MہFĿV#$~+ӜP/2N18{ S\CffnTKcTKRMNe#39{zi6cWD"ϩֺ5"~=7քLwNjIj-ҙ*ԯj6\$֫_݀k&ޚ9O:{ 81ӘP t_8ZZg)ptz*tTKcTKRL|5y+IZi HRO&=>fpR-I$+&fP_?TxN4ϩVIDL;PgSLϩ9Ւ d!zI|K4?$&]'Y{,,ՒTnbz";ԃ_擧HcI*t7ԄuZjI*IZ``2c|dc+&E4?$c#$&:I4'ՒT}ICW88\҈zpIuIcT7ۓ3G\$Cqb`" i Hl8o0n1_~TKcTK̼x/z#37n'\xTD<3~i I4'Ւ4uY)Ԯ{hji jIE}S_4k5,,Ւ4U/Y U3``^Tss1xNu˫CH3sżp걎I88 'ճt4äHEu#:i%?113Ds3ᵑ$MѢ: ˻r1z ?ZnTfB}8oҤX1X'gYq̭ۚkiג_ύŬ|,[kFEi ܨr{?#/U2-̓/" E% x7Ou&"⨈ "r9a$yxoo?_Z;ծhneit BOFCx7O}$uGw3sWHqZs'3 d IDATc)1Dzg/GO=%uBNQڠQV>Fj҄Sdqy15h,)V`x$bQɣ獞EKz+3S_Gin2<2"S")]˛5teb^\P/dFh:`OSgk}|i_GRk}?": a3s&<2O,(p8]r.x`V3?$ `Lj}C8lA~+MgW2=_ӜgϸLojVדJK pZmbVefk🀽7(--=A>]Ҍ|ˑ0JyJ֦_ _ARkxTqX\HS?kHj+#b}z uf\7HY5\мsc2sWO,%N>VLK!jz]wgQ1SO̳i ,5IOC#\d4+E4&jzf8]rhώ?'KZv3ӇhpImtŃ47_C'V kGěgGoTBf.9,4Ve9Aഈ8K/eW 7Dnj_2s;#$Rx _M)GV;_CR֙-E^&〣juS"0s!$z +z[3s[4ux|$"#9Q&mμM4}Q13s:iΎ>#"ίGd4~gEҤ]{v)$u[VѺ Nع:z\D\ P'KN'vgGx%qq5pp 2-i*{dz:3)'O(%N۫h$'V{wg 4y)ՙyFcﶯ!+Ӭu\YG#^CR}S"jiJ*gGx1k->7".΢xTYpB-LKufL}IgGĽa4 xyuIsB-K&cͧq8AuMU4܅_iz#~xI眸8[h2s#g>Y$ͅ"b+xP? t]3s_OhdӤ BOFCy4%RW4Wv[W|VEZX&〣oúΈyǘ7#J݀ fcR 4p==G$"#sH;?PKRO^l9pu?i8:J ,!iafkR/YXVSԈ:jd4HҬVw. "ͫ/fJTd(2@%UPKv]u5p:Z+:R4ଈ:%3<:ZRk=|8 "8ˣ$UrB-uWgQen˪sHk H׀TQgl\B\  UF8AuuKfn ؽ:R$iV.?"n: ˴vB-iVghM7#Jj-Ԓvl0<8:$ l.%i.F$"y3!$i`;'Ԓ&~q~uSfn :$B-ilgFMa{o!IpZҢ}Iè23sH[ l]BRg|IVYXBְR֙ 8 8+"uruIZ-WJ_Y "8Xf:$K-SHjxd0F!$iPKZ"]9@uiܔtIj#W>9w/p.0^ \Bʇ4.V6|Hsdp!ZP]O^CÕi 3"~^FћHln_SEĽaQeN+c lVARmؤ:&##7#CiuرԖiM.. 6^zJ}pp&pjDTFWf.Tqqf\<8vB-u7hdx:4A STR-i=.B-uͯ3GġqeZ=T}T"+7G9:R4ଈ:4-8ƻ'Ւ`iu I zp$pPDb8XRxۀXTKZNvMTf%3^W㬈{:W>IDa^?iQX/KU,\DuiKsv_GH2 #a?93wR-ͻj3#0R|.1^_ji|oLfep!Z""H@ƯR-͵М" in)FđY˴ 88{S?9R,4]DsGwj$6.=yoTCK&M}47O3,2s)'1>:{TKs 4AԈ:!Gg8mRoZ;Y$3OEFwRM -\yțM~&s-21Nƛ! W>>qWug!I4Z_Bjϋ"˴4xMq3"i^`0^\2H*R$C47^SF?*4qXZꣻ-.y9@u23c|:"\z%Jp/aI϶LKS 88TnF\oTzX5~9:HZQy?Rqa'R򡹴fsy{[-Rr;Mwpvg-R kRHʇE4apDPfn 8 j'^+sC7aZfrTްTKwTo %,Vwb+>E괻4AK|=3?e>ŹOQ=_PD,I5w,QKꫭiN8233ܡ84o\|gX/?Nm p[u i |)3eYq62sG1N,RZl Tyy^f=3KjIr,P3 ?K)Gf> funy"8R7 pz9PyG#5_ԓ]0)GR2%gc<'":9-Q]4g^,d~4,T8aZk{YD_z y7 #e.Y$pwDlP_QHU)"(#M]fn\T ?qNVED[p7Foo^덋IZjtg^*£C8S7f!UZN6 88ef^gљuq6iX'_*KITnwZu_xtUf U=PqTKPKrn̏gqYXgiU^ ?sj7%J=#\zH SD-fR-X'?*#i|<"H8:&3O/pWD[U,T]#7%\SFR;'6g8y4UwU A$FY-}m pf[R-My*ZBdǣ3iC>ז%SN(X)bj a#__וSJ8x\qSzNPKUoYczlS `&)?)#8&(3`YӈxO;?8 "~-_S{~͍F?/p'{D0C'e.4HrB̼ح"u%9=;)^MS_QrYNE:"^%k|of{Ԗi_ܩmμgDִ9|Ks<3|Li2Kd geZR#|v(623cxTބX9YwmZmi>SW,H;PK5~Kf|[fYxeq# 3(ˀKH-ڄzS>niI7V_FxxLD\WxJqSUX5ّ*ޘ(ϫ'_* K:;BS "I2sc7"*Πu/C#||oA$iܣq&׿89uꈸf$iF=CtQf.)ԕa5I-/"u}`}Ja$i֎QTaא,՚ vc yTߌnqRPKkGffT<x~q KzB-i<:Dǜ T!f, uD\M$kC̭8#"-Π1X37Fu }p}jXhI ϣ'L>Qx}MTGۉ7TDR_J%ITh| G *_rmLp+_3$k>*zSTȇž6' [z3I ԓWx_DyFy$ `׈:,ewFRDva3p,"a_0҄:"n7j*Ij%4ϦLGi Tk3Jݐ2\Zn>ʻ |quZS6r׵PKw/0+(c7"*ΠTki,Ps6;31#o6-} Tk ~ /PGIޯ}dRB]Quaք]ڇ>9: أ8Gi*,՚Eu/.uFefߏ=߉* ˇhB-PGO-浒BSdAQy:1]W,態P1^+Im絏A^v3k1|n/PKR7&fwzǿDUEJu@+Z(NVq,kǙάljTE PPJQJQBQh9FE!Bkx ې}WBHd7)qbD-ΠTkLcw۱w,2skw"w+# GFX<.".̠r--.n_<HOUΰL;Z/[ay#YIj^Qg2JYHe^n"͗$6G_NvZ[1˛B7,"{eCCLBf>88Ʊ8xN6<`;3 IDAT$ f.\ j-}$ @N9mDDRA?N[C]#>GZ/&ص8חd<Du}$va[]e/#~5"[A,KF&a'UOs$ :;OQã j1w'R#YIB ]<4+AvD\9MjmC,Uf-q&]3,Ճ5jzk!:`'/R=H;yb:"`Rϓb:#3GstE+ _咈lR5&,3\>JRuNqku~0¥^E_8xRuM\{RPޔpϔ"[ϩ͌ccV8SkMLG>`[T+cod:/jTGSx$Z_L[cqGqi*,ս8uxLT`ܭ:ةp>X4u^9ks%BOT؂7T7QU? 9gK,v:3)q\xNu|~Jix$3G]uN;%"nƃVNْ4+sh3!o8."| ]GgMNP \=KҬ#s8рY;jkz |IVQgVc|foK]bNf检+p@k 2"~^ 3_NwGV<:"S-k:5$iQb/^"˴t/w[+,0` IV}d4' T:x}nv(ԟn:4Mmy1MLy\o ~|p}uFGk ^Eq S:{zX>?fެ xnqTVWkN"3)=Y%IST=G}TgD HX;✈t 8g$MCuf>#-^_jtg+j3{%3v՚4{Tf!^w+GĆ R9tg6fCwz4%z|p>RN,/ 'м"I]U1GF`u[O+!Lwf2✙ꈸ 8kkJ҄3s4.Y+̽H4it79ѼYP|`MIp:Tk(9OZfS"↪+wW$))=EL9$ϙNYZ#<$iLҳsgs)3 Fw]@48pϝ1? yƻP:$a/& l5ΚZfK3CE/!Ic=3;eߛZRVLʻF]Ty9:$aԇ;Mym`VX{3!%:"?$u$RZ`DD+4)z|S2owFRvyHf |s2ZkU2;?vqcء`uIZS'7Mm8s5k3KoKU%Z肘WL(Kۭs5C3K1_ uD{%iL}1 vTk&E!k xPuIZ" xԤCu3՚to qZA:s$3=9.ԣ9V琤EZQSK}TkQwdZ;C=ge+]H" ffϝj2=(WْPDZOsH"<737W2TT L;P#;p guIڂ"h__b):31'3|f4뀝#bd擁" %5@D}uIڌlcEŞLuLC ہ!$i3 ,Ӄ_!BF sꞱLkCsȣˁH |,}LuX'" 5@DYC6EXgꎳLwLCwK.PE6VDEAxΙha.OΝX 5@f|:$mj`` c%8:rtvcND |:$mŽX+xKGxiOwLCv2s72|^t/_Tl1g몃,Ww"z9$I⋊-eȟLCOv2%㪳HZŝLkJ Ћjѿ^C:TeZ/ezC='3:$uVrc,;V;5p!,Vrz,%47"]dzC 0H`CuIR+S=eimdpd4PD9$Ie˴6ˑ9# \EZLeZcWUPDjiϦ$-T/Lk_UќM:$;Zj3o2m?VCz,eZC(0j7 HZϝELk3Φ 0B \K~ ,ֳToeZq+WD\WdV11gt-!I?`mHeC ]E Tc3PF= Pdo"IãEO+ڠF>Dx$iVgycδeZ y4 tt,cZ3ڨǜj܅ԏ]H:cP2E)ͩ?Re#s"'Q9$I2?,Z7L 5@D\C)/Ֆi-G"=1'3w^E)Lk9 C Á Y$I8332)ƳLksL7,#OsH:7Gy4"k!‘y2sk\Y$I<_뫃z#p1͎$IKRm:H8򱑈8:$:weZKte,ԛ0:#9$IԙRmF|, 3."IVXDO;; 5Ñ$Gy4h J,ԛ\CY;Rϣ47Eĥ!BosH:53Վyh 'DǫC3ԋ$3Jg-wg8eEҼcuIRgj˴ư '"|,RD\duIRg|21$pez,K_:$fV-ӻ"]e6~Y$Iv3hw4yh)ΡKZWK,c]v"I괩T31]<5"n5|!"n^Fsй$IeZcZ bzLmΛXLkV* 2D{sH:o٥2eXu.sz2s+Ug$uX3Ֆi-WX' 3W"I%j˴i ]D!Y$I833Ow4eZKupez2,~X_Ey+77S=ogsTT Eė?!I_TtCֈ8:D8C=yH&f-Z# !B=ɿ<:$V/.2g|0 ?Tg$WVQ'}xfDG)TE$ M# }KSWQE$ ҝ,e8ӓ$IxuD|:HYg`t4/HYzKD|:Xg$"N:$I?cC /%п^[E$'DDV Ψ>YDenjI )"NMPXD| 87$IhaꖋXC$x[DWBMG3I F{h,goǯ,Hg AD|:B1y8a,Ւ$  Z< ue櫀HY.">^DKcmd`,$iӜ3xd| p*p,$ilwnKVY;.3NPE$-"KA4> ud~Y$IҢ^_PDf | إ:$Iڢ# Z> udびGVg$I xaD{uMgHDxoY$I&}2/꞉Ug$IB2}}uM"'shf%IR"A4y꞊ہH4p^VtX{,"G"I@Ļhz<:$ISp+pxD|:B%݁SUg$i ""nqCKϦr$I}p,˴%38֓$uZqbuuZ˖{PE%84".nsC6~u$uI4W[lPk27inW\YEMX Pk2Ϫ"I<ӌx\]Dȇ&."Gs8$mK2ipZS>^D4PEתܡTE? |8$ixNLkܡd!4gV\Ek7ѼxxZu Z3^ZEK?pC37Fk۫HzN[5kPLf>,N;x]D\YDDs#jH:h v`˴*CVif_PE gGDĵA$w qmDm+q.7͵7Ǒ$g4#z{Y7P2so+#ICup<#buui,|24+ -"#MZO<:$Hn#".U瑤2!qZ) QGzπFĺ0ҬY5h-4 <6$uOkHU,(#Imw;p,qkuZ'3wxCqIjۀ7WB-m¨XHRہH{i kIgB--¼bs3vC2 w*#IS:ji SA^xdqIZkN;H]catAA;}HRW"0RWY go^RE<]aPKм*`84gE/#0RX)̇G j>'"#Z̼?JXGp\As/JSff$38<M$6HsݙGKa dÁЌ<8𡈸848jPfn 88OJZoN;HC'o%2sO%- qYuIjuF/1LS_ lUHR lISO5y$cZlެǑ4{ٍ:MPK10q$MZt=Cj? 19~[ Hǧ"8x܅YjIK+\ےDsi ?EHO%3Ks_lzi ?GM$uZDv<{+ [ \DS |hId4U5xD4]?ES.$$\f image/svg+xml gpredict/pixmaps/logos/gpredict_vertical_color.png000066400000000000000000000657501427377236300231140ustar00rootroot00000000000000PNG  IHDRM zsBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxyx]U'CǴtVAT^ 9IZ:WDp?\UW&TPP@E&)t.4 6'{3y-$;Y{ ""A0vORv ]3 ^팥3`% h/b@ ίwvX f+ng 1 c#[H0H6X; @70;NCVAj =qAuq>2*M"rl O= IHu8,*ƼUotLD2J˂1;F`͹`p R؀|c̋NS]̠$,qp9h=8h:V9ςy,:$oJ>p)'&ocx>Na(-ׁD$:*M"`ӱ+bT/a#X>*:K7N\U3}֔bL:NX5bXHg\4䒚i#^cʀ]ccg:aD$*M"ۋ2B}i^養1v^aDtsVg5WctvGk'܋KDJH66X˵]Ǒf23)È{4dy3ocT~|1V#"4d}0v*P:dF,I1vjaDJK5ӺLAeI>`7s\W*M".LVH;o<:dX~La-tF$ߨ4DmV`(R5&̟> ?(+`obIDJHiEq7Bq$~D}%5#TD4wxNtEraB']GU*M"a;p3~ \Ǒa1fSUu\$w}\G5$&u\$ ZӸG{("X~Ma)v("@I$y0QDðk*("NI%5̺O"qD>@kHa)+K#TDk~${|u&zߎj򛮃d#&標 vsE$M& "FBZü׃ d`a̛VEҠoZpG;怽u`~O$?xY'(YׁD24÷l aXN"ITD_uwXuEı)MzuL$rX͌`NvE$C1"1q "@Ivv_0u S>Eb:AD\s"s`'Qa9Xi~=s "iI[ʹ=("n#">5AD\QiU3dr"Me6{$".4I~7g(&u,~䥮DMs$,z &o]F$,UoO\Gr+1Z@J#]G`?NMDA$?̙ӑ*L"AaՆ֒T$MVHqjp("9ǘ \G JrC$Or]CMIrۼ LuC$Lf\ J}1֥C!UCEwYMf~ã@(a:.3:uU˙uK0b3MIrOXE(a:06gU= ;5I$<|{1<,L cQo^?*M[vƞ:F>0$lvu \ L\ E |u0USq,Ҹۮc4}8c \G ZǢ"="zT'%1Mbo&.OVQaj18CX0mZ "Pi첡1t1ua:l aL?KI8CCwJ $k~*LG)/QD̲XdSW"i`]*L8X#N‡ ~lơo̧>%; 3cs#HR;SgxeADG^2߂HRtv%(VGu4꫷"r,z<'/XaS&8nYQD:(mx?ɑ%30i:X#N$R1e "D#M<3r0u(̞0ip8I "Ǣ$f`?:F:SSq]Y!At'̴`A]\Gil-LGң:YL:iI2S)0eIK8I$J &N!r4J3`zR4ce_Јo=%C(+:ȑ4$ SfΈ>mIz=uӽO2=J(ա?]pαt+gri#St>ADHd/”&δӧ. Sv{׸!r$$s,U@V6|)LG҈l+ &N:hI2IcPa*quhd $3<|{1;ڬz|-LG҈h=%)+;:F$3h3$DHJ!*M 5cK齦 $a; b0%sPa:3:ug6a:Q$tぇV"M#M:B::?4$Ȳ&ĭyOx/T 9]X^X T*&:/4[MURX”)CFpF$8t?w-fP:/Raji+qF$)hEٵ{\&q'YG)MՈ=ɢR!$4K]8`8IpIHRi79 8u9SNu0u~v9*NBL:'&q#:BS/v.ֺNI븭~ Ol\O_-uuF}S`>۷&&JLIwfT>ئ{rZ{DzBsݰpBy!fDCs$\OVvrl%渢wV׫?훆K:š'2a06K%CL'-NU F$\{Qa85)| n{"~3KzaGf}Z^)OA$w4I<΍|Jjn\Ƭlm8鵻j͸ACצW, .÷$!Ripz^P|k L_֭!gt”;p(b-_X{W$T5:.& ,2֐xIjs8l<ȽkWqk[bȍ?ĩ'tZf Kx:6HxfjOk}}+ȉmr2Yd~+aL<]6#4th_Ŕ& O=c?G>{s-W.#g ޓ)GpELx_fw-_”=K:~w>sŞJDIcI#dl(N/PvUvBg0dж Vڕlkhz#Qi0:@6*]DGϘ'H͚ܱ|)x;kyϔ#ݣW>.MFHhT$jg}ulsߺ,΋ݻ+x`#-=[a!|iHi鵏ή/e4$$] ǂ_&ꪾ=cnk+^߿Ms?ߧFy/]u iTcnpCrF$ɛua1rϚܲ5DinB#9c6͍–Hv T$p*M3qvqri%L4)CsBQk+Ԍu߉؁scHQipX .N7ͽ~ l a^[al~;+\V$74IX+(Nc:-oۭUkȀ47*F)%`pArJE#MjnqZe/7֒Ѯtx1:Msr]GH(T$~[r*Nv%׿Β#L^h^;w≈3uM*MjK1r7uTk'wXʬI6Fw6L2kHV^;H?_ ,vxUrJoXN@d0<~/ቍ#o {bG)=FYurDCuj$a:@[j6ݻX_.),$0okV]Pi4IXg{!+eH7# A#47*g.dg`[r'Lgf䂘1\ҫ/ Ņ=zeJ-捑oH,!ή#HQiX=r=ZACvH:47*Zf YM4IAJgtG7(#6͍†͛k]ǐiI$3:ShQo _qt:N䦭XF7sU$p*M<ߴè5e!K4h8 Snu e=uT$x Gwx)GpELNn֭孈l$T*M[Lξg:1nP6ڻ14<T$p*M q :dU&o#sOUXTH$P>Ithɥ">2x{r'c5gO>ݍ|B$H@IB&znÔ!#fj:NFȼ+:u,Ƹ\\~ٌQi4IT"t^\7lTNl9ؘ1\|O:Pqh^H4I ]u I̗CNp'X>'U2ч7 J!dw` aL2EOl\ϲ];:.8ӿʡ,]Gܣ$a*@1|66͍Js}LGRqP$4I F庵jACfȉoōƾ=uiӵWx?N78e}x4I4,"gt”3p(c1qr//#ignj3!F$x*MݬTŸO?n!>ҥ893{U}ZČaM*N݇$p*M45Ѡv2xKq+qrڂ7Vw?hT)SX݇$p*MsAPqXʪ4IT$xۊINR[yWh+];N]4_xܱS(yTNIWFzOCխUk>ѭ^}ۦ2Mug`8Q#M8} UW{ nR4ۑ>ݳwsu2=ml݆SSxHLl1' Hڧf:`(P:;zDR\k #_E)mÚFIcn^yٰ w,=c\.3T*Ni}GB$1n^yOlrn]<#¾m}CJ,4X4-Qi4cH4\kEi!'R`$)JלicH;v/u ckړlWuL1qGVpTω%4I\'h߿vD~ݹkV`ZǔHVCJ>LAw@rJ˲uѦlg.tt~#Rip|6oou̩'t#](:*NGRip4Iz :Dc 4o2_ݣLGRqzx#MEҠ$᪮hA߶mZ7oM똎EE )*NzF$<*M#ZiڊeijM46?M#Ov5=̐ IDATЩ4I4)D1"SiN='d[:˗}̵y@SeqqH7DNIw=cH4o"/o[7u̐%\ؽWo/eSq2 cHQi7R̀@ ¶-l?ؼ ^2_:/ nϞdc\$nX,vC—E7} _ޖbm zд%φ¹蝽,E"$X3uFs5ZUϾTzO` cQQxzF>6 3]G$_ddtk3w&7˟7'ĞdƿXo\$ǚ1$|wf&G֯c]i_U(lO{T k,'D$nYs'Hc9 Zf޲K= #Luo*MVՄׁG\ǐ5uU{v o6:-FʲSf+ &\'=q}&ߵ|i'#8[&>!Ω4{pCµ8^S)NottYYTNzu&\'=vyMkWy a{eiac:4I^,o!:zMw5s8̖MY` =޺uPiLqAucnsCԖH{ouUPΝ ٲe:L[Ϝd &dntk2MuKkyY0bsd &eeu Vp֭V0L$`lEz$=vyM3V}cKqdyf!r$&,vCpNYˌѮY) f..W)E$g?Cj Zm??iK[^/^qzf&.K&XCA=CJdS]ǐ9;eUݍY])+;:4If*l7åi]im\)Ns0LA\!DFI2SYY knpC±r.V/_e#ۋ-87 @YY4o):z5\y٩Q$xڵ㶺%4񹭛ٝl3=*Lved,4IfWA_;3kϖ^M[\94If{w۹H|uznf$|goQ) X~D߸!r,i!p7DB^+L†!r<i \uzJQ$dS&0v/:4IvWӁᮣHȴ┓ @!z<'٣ e`_2Qݳ[s0·_pB4$cwrե{\:nfgnE9Wg1DJ#M]ŮcHW-LY41Da\IEu?_q{ّ\+g 4ӈO^:H:xN}nrEϳ=HLzu t4Iv:TrAH 8va1e¶"i9^ ~՛d?ήH~'S}TM\O´Bb:ADC#Mv7W\c]GK%T`Fۺ9 Xbsc4JdZʕNsESP鹭hs03I*EWp:u _Ur#Ki,"-$ٯ=e.Q$58Aaڃ]ر{]i)=qu@zAyvfRM~TbCĿ"&?+/+>:[758Aa_*':HPxNrK7o!'K_ᦗ_ϓ$="Ac =Ս>H~Ɖ'SzϯV>~QH; [\ F$f3w9uoqʋdه*&E$mK1q@Zu'~ar*'u0䶚S_!RhSce*'u 䶊I#Aa :&}o~o\Y’o!6=д6.x G]G1OSP"64I~t>⋁"C^\IF$LE(QDk4WosD$*iR1u+Oud- RO0IH}SQD̛H_:H4$)1a6i`("Yd6I&W*M*/1 +\GkRP9~ "Ȃ9=H>:Hf2((MoN"FDo$x!("% UDTD{fbϹ"1yFS6a("@Iw|("$evD$S4i|ufSvAD2&|y33BP9uL$r,5`Z",㨜4uL$rOD!r z r$r|*M"MQ5M:LwE$0_SQiqZCͬb:dX}5j-m!1&юdׁHډ1XSƎ8GTD2ha̍@81b,Rk6#TD2Iʹ.װ:0]gbļQ6~0"rJH&Z4&v<6Hd,1faDTD2قih 8E\}6iDTDE4cMHq$ ’锕wGDMI$TW{ 9|{-hly Կ- =TDՂ_ 5@q6`ߛNUÈHTD]u~`u$yX3^o H4Ym)r=,$z N$w*jgG{^څ_u n"`A{%؋s"בrA,OGu  JHyhZv~{9D5(}ԣM:DGI$͝=Xj4ssv)sطY Ǩu"qGIDds?A²3)K\̡$"Ƕ`AC3H0 h-k`1E Lٵ{\̥$"S;/~r$A37c]݆` Y f U$שp"}TD$x hG?6 l]Lg 9#`i}` xlm nc LƎXDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$unUUΝ[5JKvik|ofӦM/Z(%v(((hU[[)y2Do-|( gy<WdĈ!߮C(t̘LVa34J$ݭ]_)kWn<:co CrReeI)I "2*M""o***/Ydmz&S0b+V̯{sO3[)^TDD]'w%L{UOϟ?wQȽҁsJH;W /p6zLL"ˣQiS]U9dA'?3tw һ%xrz&TDDL'zcK WZZZǗa86$"'***|b+u~8^rh4f̘SvkX'7+Qi֚r`B&P?݄S+þ'jL:KSxH2^Q\Q\GcmQ;0J%Xu:TDDĥ\Dte*M""eC$(#MIDD1\f\GrJ8䇿~ѻ@ב$""$瀍!_F [J TDDę 1? kw|{^<$""N w8=# a[J8pƒe kwO$""ԼS!+~qLpQi 1~ͯTO .\'`"PiqoMB2f~6nx .x8{*M""Qw?F zJ0/5ᐝlhѢd%? ""~>PTTT}s1v5=z\2 tYJd/]9&Pii&&Pii&&Pii&&|1ct;x?i9p퀎@kcَ1 Ʀ^L&_XQE~A}0k{chcB0˃>k!ڭjܸqhxL,:Cvbx߬4ƾf}Յ ?x<1k[c``7ht ɡ]o`ڳLuAAz'ZHc tL{mc`ž1KYj̽5 FEEETʌTZ|﬌Tyy`c >ǰ|P2|.׿3&Ykg |C?k=ؙ555;L$*e[p~6!7z[' g߹?/U3^.s{~ Zi*-+hh`0 yko?xEϰv\_;\^^i1?@yƞYSS~t| [XT7gܹ+BFKϯT`>ԥ ԁeǎmw?# A)JK lClnm}٪+,X `?e^|oM\m3wkky$* D0x]1=|G0Vz`KF°h \㹊Kc( Ξx߳_[PSԻcm'p6 #|Rc SƘoR[Do . ҁP{6*W\[S0/;tDڹyI$x߄b)|Ō| `)eu$w%\p /ap~6GϵTZZ)+o4DYW(,4_7 $e1_a.WTO}g"joYpd[s剪?X1Ut@C򊊸0SYY'xX V[~ƍky /^5AQ,VaAJӥNiWi| +H=o0\gq!H[:;JfN<^Ү,: @"QoqWT]jr`+O$]\9D,JsZ0{>\|Ůxc /c"y0зD&Lh:N&kvi*-ۻm}a5D7-=Io2ZNHBOG›|c&Ty500WVVѳ3[ 4 WXW\G9+OTb9s:0K;i5&9ڋWTތ941Xle^QQq,Yrd0,ؓ$-YSC0=H$/u-{MzM7HypbWTU2nܸVkY>k:F*--mn}XKf$4cUu$]++ω<% eޮ4AgXYEEGJ2`>:Ox @"`{DŭNv8l„W~uJK=,&WiҺɔVV4> Æ%+0K$q$}L %C󗸓H\_W➨Ӕ)S [oXSұc\C[`aN\M^1N!|bic̅9N.bM/MD [fK?q"%FwvLҭAB'%$+GWJKi9jiZZ_%#iCd ޳hW9~|j0/x70s -ڋ1$'e\ : GEcW"&8Ge4{&I}bc& [p{^hSƘD6W+Z7yF-.dD"ku 3iر?{+Me`nC>1`,8N ^0 v Lg`(n]oϟ? أ9B{-'ZpᖦtVƌ`Xh^C,L)7?Gƍױq꿵,^ e=q`Ʋ8[ %`c؃-m&x23\&3Oߺ\be,/Ƙ3jσ 4hxk aHY⽴pp {4ٶm+/dԷ7wj>M/o;nS3~ᖎ(nσh!4-í s$̱ >aN,1>?;`pvpqԓnc.N!tmo0_1;?1gnXnaW\4ЂiGAt~iA9O8G۶'08 R0ueӧM9̟)0ĝ(P!/xgGU0únXq{~ܲ͐_ qL=K'sŀ-5nL9QL=ukN%/tAi9w@bb";GJ(4ij1}%SA!9yR:Xc[[k 8No"ڤ n%c ;}| \Ň$b'̨OBQ}˖)LGox^ѓLxjW2pS(&bXc~+^-DW 3|t[<Q? P9ikk{ dod!%6od&c4%R)}#bqU}NoEwׂY+ ָ,SðQ k\ "^gC~)eFV2Q0 -FX_}DN).rDOl,H8c}SQ70\`HpE+2%HxbWtp{l6)nBmE|yO n(غr" ٍ:)H" O=hfKKKngJVŘ%J7  68 ]}8{xH.őX̜93IX]@[[kL'LCn[Q22@SPlV>buv9oz'DW7XzK&aP;K&Yo>Tphѷbx= В74(}L}ݐekGxCCh#?U@sq^)`s]]+Hf(?H Szt2>)긚(p|dz^ߒ47A(و>Z4<я⾳m…[iۣ74s]JS0 \W&R 4ObŇrNIE0""#bo#:4epqiAo%.L̉iG *P0~^kDBu:P(Tm R(U+Mu/5۹zj[EDaHv'TϺ1~)ۈVCAX|Cz:VI{<b$XGz1bO NSѴ@NcOzLd>8'{v[ccpfΜ0C*>nmTMT,:juY&Ӱn'`c=4\"L"9۶ emDcҤIj(UR y rbd${UQ&lM"q\J/F&%&3'%{jP*=!Yh #֍<#{PJz{t3bSmD9GWG@bċRiF\Q4)lNzfLgrsbXTRRb[%,y!"}§"+M(n 0U#@clc)/A)ۈ K\SD]"0%V,?T<ҠOYGCk9ddz@RhTl#I9J~߇F`Tl"-ALI`%wWH@}H̉uAb[URx($:FXѤ^geDA3F2sS&&J|߇545B{QBEJ2c}HV7.ۈb=lxQ"n=b6dM_iޚ9.m2aDwSD[֦/"몌3 1j@yTJ7 Ybfx Ả@HP\#F ,33HDD[$#S@ֆ}6(ed4Gy بc BXd&EAp)z0d-4h}9#6sb+~MmCh"S4HO=,Dʜ< h"GFH l ýbPRt7RO[6C)31-gVݒ,ۈbH-(Hh؊avc|/j/14 $K9b)"ۈ"HMtm"i]UTzA/Ʈ1S?EМcs'6"f:T*B2tFJ1aT쬹iU>YQ4(ΐmDC !!RxdJjLt#4ynPF œS'HW.Tbs1bpPx#xI!qm7A`)JqTl#}f͚J&8jg =i%/ۈHE-h0gFǩ u7+;G17+ai3g͚ePL1_B?+kEmSaqRѓYy0Gr2`_b+V{655$n^ ?v7"ۈ˼!T(v¥9 6B**H6c̙}P,)v%&(=S"nY.fNL99I*~HB0b9gs3ϟo.DmyU1ޓ&oJ6E2̣tqX$8|۶MTHFgJ7 ;bՆW:N'M](L>M0>v}D 铂_}yu}3@EqF.; uXtNke?&ߨpَڒg6_ɠĴ(x5/۔oXpDYmf)7wW|@XH]*n( 4=ki79s2A|I3:RgrNaySrv>HoZ@Υ*ri v\S&IZggzW2~=cD}Զ'{(T_Tz rxu}de/xElj$]~@-JVi.6yMjB@fe|hr;؉+_ju}6lE̡uM}X~T*Z mO3./܈ 'f|l' d}<|u83`VveQG̝z6MED\vgO<=g΁ 0HJ3ËKS^}E8srYX[xq KssEʶ V&%}X._qNgSٶE8 0QjÈb PyMLq&7h\qhb&e7 La$OVU@|"J+]8%qN>z I`৒Ă3nOq2{c<囯#Kf+k, ] #c8꾶Iu8y=nzm{֎]D1C)5EpQ'QV&nnbWqާoԱ n\4'[sB06;Ѫ]^UjMyzR„S6+]S-1rܾ 녨ƴM[ҩQ۶е7O;0Zk>L o6Iut9ٞ]Sf(w}Z I h B농[p y7kGl-͞fo̦ZV嫾4 dM#$Q l@*̀ؾ$S9us|;.H K&&pRMdَJ5۠1)7ny`y/1d[蹝&]V Mt#!KzKsN>t8a_WrNy@+BkBf5$ZKJǕIbYpְ9%=, +.^#ex:Q?= "q蕰 Ib0,` "/Ɏ)GX:R#]@?`Pq37dw A }B:oGAA\nLHƯV4WYY^U`+0C`G2yV8Ke:MtjooE1BW.\v|@1]tͤ{t"p+QA4G?2ES69AT J2.>X-"^tݛi@AjG0]qb&x-őJmAM2@I5,Nz #bO"Dp/ b- ]]#FAV4oݤh~ukP} 9P&,< r(/ AIDATH_jQ DrB '`>dɒD̔˥{)V%ҽo^-Yy'(E z^sA |Uy`öG.T* PǙExD((CHeǹtcɂ X>әx[=~W1jУI/|$=K.:@qU/Jw&5իW~ҤOC*v/G`n`d)>[A|iS`M҃1)n%TxGv8~.>m'z#^?nݿ{i: F을q?7vFkcz76@pukJIdɒ%UpwVKcrud<^"`|wK$2q!+Mw-|I$0d]ʖt7/Rif2B0]V;5'[z&ұP!G^Q)ѻm> .,|tD_4<iErƾ@#ѽNѾ_ )#룅ndM$ jOA/T.?@~cV;qi?L(y瞡N%5A+j >_': zH&-a&(q.KƏs\ضI4Ooruּ ̟龤e `ҭ13"ALvȡL|oKŸtq6⻥Q@Vn-vDqN/g3p~SNJ}4 #$ţtLyޫzVWcL g^\m|%&N?1dC` ^b2ׯ]qR 7ߵm{A&pa !\.5¸5!sL<&R(|޼ytT?|``N1p74-NR- z;NsħA8l|"^M5~r"N2+:5k֥&n"r|:7 BX?}Q[>Ct)D ~eAnO$j^8s&4|G5 -k"9{fAA{7rE|NQSp1>`<rM\3/۶-˲JdĄ10B0)0= ^}68:ܜeL&UT=! ҧI T xQ }ƵkJQhiiQO= \bw DdժUmI\ENlnPjJUh%LL*Dz^r~1속7ƎnmmMo`۶:i!AKc6jMy#wΆm{/u' Ż8&ZIo4m 3cGӧrmң0 0 #bFK?ីUp5Ңaas c-xmaFO^ M8sRf/r$=0 0%֢ ʮ{3ŝw*L+Jw&=Tt&=0 b/0X_t/M|vuH V)>x 0 c8Jh+\D^<NɭD. aa WMy\Bx ߦozėju&="0 bw^Hd=x3Npxikū~0$Wzw' 0 cIh+r@~ 4~I}4|Q6"]s%=0 -Kq 1pHBES"9 ?+5faa$/ 2鶀kVlp . zU2 0HCcR@-V;`KGM.\5aF(`?x0sZ +nl5n0 è zie`l ~z_-,}ا[[[+IMMHa"uGaaIENDB`gpredict/pixmaps/logos/gpredict_vertical_color.svg000066400000000000000000000171501427377236300231160ustar00rootroot00000000000000 image/svg+xml gpredict/pixmaps/logos/gpredict_vertical_white.png000066400000000000000000000523221427377236300231050ustar00rootroot00000000000000PNG  IHDRM zsBIT|d pHYsQQ%FtEXtSoftwarewww.inkscape.org< IDATxySkPb-m H&}ZCU{U҆Ң=mD շ,h,cƾ f?c3}~m\Pfɬ$Mv <9s΍ׁ#alb.L m򦱄 |1"EYw}.E2DZ<DD\;=&:A8K5),w3+h2kIOC1 x8R<},"Ƭ\4e$i:Q=\,قO`1+wrdAugcqpphD<;Y߸h2mÀ rgֺxwD;Yh2u//˝:t0w>pd%Ǻ3Fa̺EYB6ϝ:2`} f]5%w.Á?ි.ia̺#MfrIXo]'b%i2%ѥqdy=8IqƬ+L$8YBkDyɚ͸`j-qV^;S5.;ˀ\0C^8bUbp喕G vS'DQ8ͪ4s&kw0 Lpd:a!tJ҆r I?p8X5<+";G,}s DėU'?Z6xZ,ps m#ioH|wb&u`LCSxF5 %w/MӞLSr.F*G_., I6ΝcF7VY8N6$m;&˥ L['HZ"w.qdheᅙV2_;jH:84wkY zZyr؞vL/~Q|68bl+ar5w!m܅S5\8وzժ\_`YFp 𪈘;HxΆt'RDܟ;Gn/xĩRq!-񵚹hueH݅S\8ِr=FRMҹTSuT .)r~Ht`bG a1 Eg5rdu>wD^*_ޕ;ƋsFUjs$+`'OUC;/aweD;GYQ].v~(iA "ޛ;|ur~pduܼv;W&">Osn<m,h/EեOv~(c <1"nvϘ/,3i$-MqfF_N^5NÑ4 x?𴚻 g͓Mq5籉L{snH`b{i06tpu-f[01MΒrsdu 8HҊū KJhTf;*2{) Jd ,; m OCXhT x5*-$-.[KIrr9l$3rnrd;@\8IZbTi_` MM7##⪚+nE⑦j U8Ix*Gcw"⾚~|$\4Y*3r蠝IzDSyk) W ]jᅹsf`*W x#&$oCs_Issn*Wޮ}Sw,"A|ʹh<_~$3aK&csdsd)b Qqz0 6(Gilfsd)b k7I(}7#b$ptfsd)hY;vF1b4D, u*R7 GcŹô6C?e4P%j.r.,^$ɥ7(+l 7caIsT̪@=.,_5?4F,ꂾ-\85{\4Y XU&qU0] i5e>'NoV9M/V9.D}tۀ>q©q*RjpC#OtŁ|vR\85CV9MG& 7c#a:nW >1sS/CV9M?-ܟODazb!s0EG>0Y`tW-\Kv)wD$mH?D) c{\4Y rh57I:MA6f1_u{.ru*9KksŦۖSt:{aߩrƩnY\4Y 7./$]AQ@ԀNϱ ,|E=68DҘG3"‹^磼`̈Wj I>U<©FkECXhIZ'&)qMcQ &]0Dć\8UKErU6P'E b!SL k,놱^NnmQ/l4. ΤEć͙C|$ ƒrd"/kS;DFpfɹh:tӽ-ЦMNǶ&".K "Bq qo7`5pdE}s,lN3W>86"faVɦ$ml1î'?!T8sdu9%wUuM`#sRiqӗrgor~sVIkayrD\[eaYfU $pEU>oj&? 6 |+L?c8HG<5gqdu]T:EW sUhqӗsgIEsVIe魝 \iLҋS|_"UvX)"#MVsڬlPa{f` &&ۏsZUrՀ [+:8UE7CXmZ״0uWgp]/.V 듭ʵlC+ۀ5J]֑gĬ6.,#+sRDN@Ep:кè1f`Nm{n;&]9~\V5Itˀ( spz;Yx(wM@%Xm,C>v=s쯗pplO.,8+wT`A$iy5>ۃeN^p!";&6ÜC;䀏nD>D_'ESǨX68qXrFĺ˒gE?|LIz!K`YV`Ue4uXD |?w:f g k6I 4`b$er;/wf#B0c{G _2 EeR\&;%:{a:v0,Mkf_F6iʂWci$ 0wKnÈǂ(iIZ`;,"YQ[҂܈8w34YS|1w¦^OuxQZZ0|>w3H5E)X-wK7J6JoG$mB >6Ś#Myt_ʝÒ{I#MňSoG+$mM{ס.)\4Y\;%}[R女_K2 .1">ssXrY$iE5>N-`.iFqu׋g{KS cs0E5JyD§s簤-;$M9C LٹCɚh!, +3xmXLmV`qCE5Ny'aI*Kg3_)I[R%7-wa6/dTN xF,IZňxw #9Ŕ\ ωKD+ IDAT9#MHכvZ֠e]0A1کL`rdNȝÒxS㴲pXCf ҄Oxf $)7bf6"b2Z|3s1[4YEesXM,׆#WFyLtiƓ,p)R,+Ds0Aq|Һqw fH5^D &k8&\0YxZC҉sBD'wܢ1'Gr0 MV.[o 'Iэ+ǻ "|ޤ5"j#sX/[ruт .MxĬI\4#"D~yj$gD<;YxsK Hz5`Y 5"~;YSh2[I[?bMql3[8K,f ¹h2 8:w }bʙ$:'kfpd6I~ lP;G9!D߀rg1πg`2&!E-#y&pp`D:"fcV3ΝloKs1k;4U ".6>wf%`sLfHY$m ;cfV4U,"T8VD Ø٣h2k0Io7%tp$刘;͟&Z ਖ਼Xu.cfsd"/ۆ\417s3$Mf-U{z#z8p7Q*]; EY˕O/^,73px(s3&)Ϸx \A}YwjQ DQDm_]|'".̪狨YHZx5=9XDpkqeN`? .̬>'UL-H%Eg/A|[,IOt'pdffIZ['{'Q\4IZY#JHυ5 %X ^6&33KG,̛Ҙ&I!鏃VD0W=5ѸAh23ji1jѴN_iVRQLs̪Gw_2ba2jtш/+z,==Rğ7{E"U7hff&i%```Y ]a#ZC:̗&3&3S($ii`=2Ǚ&3x [xv },\^C_6IVȝe2JM\S?6ehI.,5bMXh23nX?a.,jsdff9>8MffS'Џu&33OƖV MffMD>%lzEv$pE?m=̲])lWqi=̲7EDU홹h23f(ǻwĦGOeMffq<%!>8xaD\i03\4YÔSu䊧;oF#l^1bIl L8~z}\Ln&33kI-YV3333Mffffl\4M&333Ipdfff6 .&}$=xT`}`]2%mUey_#ƺswEMM(-V*-Jq];\ \R~nDRv8;?Xg|9CI..Ώ992O'QR*4^MpQӿߔ$- lDq=|jk:s89 Mzẅ ClK@O)_Xqik|wSO̤0"1~/D$M8GvӨ#\~ ("^4x)`7a 8mHz12aP?~Hέ0P$IQn <XF/?uH:S7rpI_dE'SyHiև?͓[yiD&Mҿ)\, +P[1vJJ'οb4.7'~?뺭$- 2OD آI,Ҽ'}8"HP$- `N>xQ8pjcN!S)FR#bz%}[9'uшK咤.f&s^s%LY>{I$>[K^p!U\LQA/ZUۓ1.in$IJ:1.L%8IOZI"XΔ?k?t?KiWR|m}LIIf3 I!iB'V_% IkKŨ6[! ZI(pk8^TV xSS/֌9R[@|XUfH:b˪jb>[ksY OVKPqӇH-djS.C0m0R$i)IG'R裡y:g P.΢ bga"iubu{<3IYW5IH:8bQr~ 駒3?vYʵmx+⹃S1`q&c dIߕ4-w&h*H>Էm+3bX5{_ʢ$O1K{HDjp2=Ea$/A3՝Q |.m\7| U4Iz*mϨ6UԻ~iPkgJj{A{8& unܟ }hC<U9UGLCtE?>Lu$eVMKq 5تL i)lECPl0:I{Sd$bOڕQFtm>N7tR/$%w"S0L󆞭}NAJ4Izp$Z.$- O?Ou]b-[siI_`ۜ,.R]Xɤr0=m0o؞Rm=Xwdj婺GLh*p^+c4$09cv~I{R0u`gȻe$i9{u٢˙ޛHa3S^{*ϘM)i3+`$"eޛkr4g[Ԗ~_Mv0,=%.wY"rJ'c*plWI Q{Ql{'P| r15e1$ 3 Oط`ax9}m- EH˶؛QZN9 C6g}U 4goY(*<[=]buWshNIZb=O vGVtHmYkLqOFͷh*sV#64GG&yd5_a;]A@4j`:I`/kw6Jc\ ܛ1ӁF:\TX;J772raAEӻkMaX.Gk~+DfD<;"^F4mOZo6 ,^Akr6s4Vn^l!˘{( XXbsMT{(̢!CIj`m>ׯ&cZzRϾ17RL7OAq9p9r'wӒ|=%}"".$=;AɚMqM5;z&9Gr-p!ۈL.εR j?)ƻx pnDY_,7v^xT9ʔoS\/Sϯ/o"m4P޸298 "~mdIsTKnS%AE5fF|_Zs[$W#$i Iߒ4WXsh0"D).)"UhDb*Um+"_U4F"bљlS֩Z."M"]|Sq@D̮ei_h^,YS_S\oㆋ%ep$iYMQ07"sS"D/R4S񟟢yjr dFDH5_y#iΗ{J^0C)pd]fF7EHb+)E'Z;8؁rsR\%qƏ4-G*[Pѽ#"i(F7nMiM>I* ZY/"6ϗwN#DmO@Rx&RɈHZДWo83&IŔtw%">v P "GDkM8>"7(6뛽SLcʻǰ;,"n* ov*"$q%Sƽ35^}ŝ69/&!t((# ؠ,FZfSasB:> sNlaɜa;lՈja|b?&[d,{L@^`~(f F֏gF'#4elis.v;,"}=olXo>A_KEdaAJ@%wB.w6&((g_^_žxkQr47-qQҽA1 ƍ DNfi+Mtv=@uL8bΥ8zبwO`hzf>~T-X_N?R/^Lɂ&%-lF>"Rlx^h;MywWydm݈8"+fcEm[CwYmZԄrN;s5?c!_O95kbH/PDqSo :&0ĕjV~Mɑ@kR= <՞usmIlOQTsywe`fMwRϔ[)vG#M*H1 pN26r y¶-EF¶y"͉'hsXWsM xf¶k;SmM!'*GR*Xse=1Ml|)_WNؾ%hK2鳔Aܜ;@qǁc-5VMo%:[R)n( i ~@Iu5Z;2R4ݓ;eUiX gKjM6){#m7hJuj RN!|-UtuD0ϙuC¶SHw=Ql}(Eh&-5R^g\8\ʑ&K5 s1TϭoinGuo¶)GేiJm#MQ4 7G5JOS&jDo^TUYR]gph њ{/Ո7b4oKԮh .)vHU4ݗ6r46(Mkb;L-sd p9;&\¶.jS;Or49ljKZ)aVu7IDATESƭRѕGܝ;@6RyR-Ąm[ n5kͶz¶#\ ꚸ$A|)yJ¶SHw!)45: ۾.am3ћ-D_kR*ڶꤼάmDm/mkuѕG@`7Ɣ# $l۪ɳm5XoD&lߚgDC镈#T?rxcmMk& ۷ѥ,6XDxwJ9y¶a$-<#QzrMZ[,m5 ^xN-) I¶y"Ɩ|%hs=/V? ޺pau-]9'lBfD?IRk&l m-m(Od̫=!IϕIKCw3m[C씰 Mh6QmrQ¶}MlT-u%ml| B$> cy^x)iovX&h7e)w.7q!i)`yxMi-iI޽~Ɗ2qmJ~+E= FҌIk~ ۷ѝ]%ս%L+t[$.IkՒ%Ɗ6u[':{$hs*vOvi؝ |2a"iiCdRjIuIF;,x}}$}W{8݄fR4\X"I@!V*, "**UJ ZKDa*TШP J Ā\WSH~deޙ<癙Y+k%@2s=綥%*%@|f⾾ i}"i7K*&.i`3HS`t='M){oV8ͻwsNI8qv!Iڋ2 eS0u+KꙚzk5} /Cqr*^׌"$fKٛNtbRl97t gL|L"q?K?ن^3 X3Am) MjLRM7 ܚ䈤opRu `z= $O/XӀ'W/Hw]$-Ux{+^*4(Tsq|Umwほ%^U[҇ᧀR t?$j{]`߯b)N/9)Ixa).+b߲WWa_јho7UGJY]4kחvtg*$m)Ziu=%_Ʋ%]ll&6GJDw].#Áqg ¹>+ʸdPFܡzTht It ~eF57WOJOLX~Pv\̖ta=%%i?IW^3?g$]ʑQI-|A fwU7HLF):VIg17k⯜#) )_>p$ $q |ZdfKI-IC҄f'$t{xUו4>ʸڣ)dHTvʭb}q׊> /]Ae\9& \9%fI+I3Μefh/Kp%0̆UvE9/p/kfI. 4ֵI6af!bK%3_'|~̍%M#:NX$Mi 14kI, ^|>+2)l`EǠ?gf&qu{Ҵya@&YwYIZ=K>!4 _m_a۝W.7t ^9m7aa_ė^NݦBٯIZaf٨IҿWnf'䎥&lhmi~8km2 xCh"`r :#w](^=]%/'MnТbmg/"%Z8Ecb3Ƚnjrk/$4af? }=J, GfH*ΚE\C]I-MoKfٖL#!4a9prGê/=U/S7\*В4i5bIDV_k5BNfٞ5e&Mf0 fvO ITSSlyqB-ONjٓ+rR@[q7i/,\hEOqb6\wۘ]#%L.kefIN2p%I-3S]撦RGA"i*1>/w,nfI^s1&<1X8KR1qzi^&HQ;nV\Cp~C dfI*3{/YӋxUG}+S1$ Z]5<@QmpzcJ$M[ffH/(u{t"I̞-[4tb#t猓3*:+ts %Mf6DoMgy:K܁3p ^\L4JbLРHN.JV3L߮/f ?i0~x^dƛEf6؃J qfve2Sl >x!GðHf> K}Zꎋ}SVo-;i0Sݏ3ODaA `w2)NLO,N;if٧dtܱ 4`v Yq?ځxqN,( :y7-%ME;KRҭֽЧq7ɡ;dff+l2w?WpiE,{⟽:prMʘ1ğ{ٜ3GSVU423xv*ɛ3I7py 3S@gv7 ̬b|/>f:1q23l243Ku)aGóq:_83ѽfVLL}_M[ISbn4ϔ/+v~: }3&/cl3{4CIE}50n3_.afYkGҟ3fL<3-?PvvٱZ1gwge {@KI`Uf}%sUy8ϖi$cf)N |jǀ] %1fv7M7wyaEl 3;NKq(kORݘ803&I \df}.<j]lgfVŔWI_Qfe7O+^ \ߴwK 3տ,i"jm)М l_b󁛀+m'h!3m4 ;H [ VwKKe/Dc5wM ث~ w$RV0k8TşMPoM|GT&)~-t%0]5K4d.Aů]mhf%><@/9沍17J7`oC݁ul%;_mٽХ$މ'OvZ" ~Q|>`z'u0&mޘ_TRg&I'9ثTIk&n4߆8,kK*I#i1t7F5Ĵ X //Rko7izH)֫:B!d i[I L Z1UҶ_wI Idb!B&N/+ I?4y8IRIS$;B!dt%}[Ҏ_k54-tsB!Pt//iܯoMC$M;BS{t%͒tIF~= i!B$DTI?tT٤4BA-i 0X<_zx0eق,C〯ك !8IENDB`gpredict/pixmaps/logos/gpredict_vertical_white.svg000066400000000000000000000174001427377236300231160ustar00rootroot00000000000000 image/svg+xml gpredict/pixmaps/maps/000077500000000000000000000000001427377236300153165ustar00rootroot00000000000000gpredict/pixmaps/maps/.gitignore000066400000000000000000000000251427377236300173030ustar00rootroot00000000000000Makefile Makefile.in gpredict/pixmaps/maps/Makefile.am000066400000000000000000000007771427377236300173650ustar00rootroot00000000000000 gpredict_mapsdir = $(datadir)/pixmaps/gpredict/maps gpredict_maps_DATA = \ earth_800.png \ nasa-bmng-01_1024.jpg \ nasa-bmng-03_1024.jpg \ nasa-bmng-05_1024.jpg \ nasa-bmng-07_1024.jpg \ nasa-bmng-08_1024.jpg \ nasa-bmng-01_2048.jpg \ nasa-bmng-03_2048.jpg \ nasa-bmng-05_2048.jpg \ nasa-bmng-07_2048.jpg \ nasa-bmng-08_2048.jpg \ nasa-topo_800.png \ nasa-topo_1024.jpg \ nasa-topo_1600.jpg \ nasa-topo_2048.jpg EXTRA_DIST = $(gpredict_maps_DATA) gpredict/pixmaps/maps/earth_800.png000066400000000000000000013601431427377236300175260ustar00rootroot00000000000000PNG  IHDR Gc pHYs  tIME -QtEXtCommentCreated with The GIMPd%n IDATxڴdǕ&vΉZXdQRQlii  Op{ܶaÀ c {f!KZbK(Vmy8?{#e+VQvHeyq#w ""c,"̜ለ?12p|ZKDHEĮkZ*˲( 93#BAkMӝ뉥/l{cއUA2D$ƈ%蜫 c֒s9NFDD$'fBH/mCks<+Qo۶,0 la0@mZ_ORO( MzSD$Fv¨M1JCUX~zG`zC[gvjI?~9n.mri? MNfA~_"q P`(qezd„^},\9cLRG1~ލ1jl@/_σdvd;}I~mυH|v#gu_kS`7pz`P`q{! -_#ϛsO]gB1Ht'"k O8òNC:c;à1/HCa*""i҉9bۑD$O?"D}f= y&C[8 AKX=.tiAaj $yNJp:H"!hEq6s7DDDdgBnwC< )AD"#h'r$"tx-?D+!"f><}z0(?^Da 1F".Zk!Pc:Av,Fk"l #P?/QNJ܁|1X @P|"mNsVg߽dͦ>0 eGh%h;ۣ잡 '(^^υn{D~~n~oWY?{;4Zk__kmM${v{D>ؤ sܿ):s4tk%V1ZSd2MeQi}w\D̰IݕNxK =dtA!anltvwPvgIĔ J;K\L-CͧZ[۶;È,a|RHR 5AMD_aP†bkuZK瓀H"!(a.| P;X׶"PngA"4ƀ`z-Bۓ6a+ӊAPSQV"ygyjXDi OD,",8vh|ѣ$B*F49",pcbX0__v`!$kH0B^_AKa~6 &<`8 <4  ]Mcgع^xOﷵD9OO0OEz`sS/^ f#DZF/t^r[?_=/WJf46E@#BArAN$00눭D"2i L7K^rUUPgss1(f|ȗLƿZto&hl-/NZD8 5[cV?ϏY10=}#_CL 2$(UU%EjP${y,f %8ZΖIb,(FaYPE$D6'sW;O>E#lX2ۛ8Iܓn_lEϡDB ESC&~HxU_14UniHH.kwz>Sgn_" ֫@?w>Zv\+m" ;w*P"hml dIvBZ}]`#IṭSۃzOOO0J\is˹2x[]YTltXGE=; F8r~KzR 0J$B:q ZJ(I轟8 'b)3VOTS:t4;;Wjl6t":sG^1Ō9/fosN`!D%(ԉA  *@6dqEQH!eQfa-uH V-ZeKrȘ$]a 12g5l,BDЌ / ] AP@po= ', 9!t9qix(vXQ&@{[Q *RyJУo6Nc{JL㯔e҅ S? %D  UG23b/:-ұZ'ryb'lzq$dž5`M00#A'!lN@dal z"L*t16S+!01͚z^Ўf"Ivc!L< 9$c]׬鮛饱$9J*RNPwZlUo>6j Zkcat> ғBItl*{u?n/DL+Ck E8Řম<%%?R(r'u|.K m Pf3"E"V T8O)`* ev(%<8ܦ4ĽDČ3AEzΨ:Y?!Bh/e%fǎk< kB+I8Wܙ,ۘA-F,xc@>̀)b11uI:0}.@QW`kGj^«we mEP/oW%|u 2fk {#FOeO.x=j" X0_^&Uޫ3!Ns" Vt$:&v ^tcKwS!ͺYt0iӝS"kSH|Acc}H<)S眶d?EADADTPR9*÷:MğJM*?lb4MZ4ī+j*Vp.n,H(rMQ.O3Evzs*HRa@L- Ҙ6b;c̳grYzZgh^Fr, Su΅bu3 eؔy {LDYCf4 "D!k Q˙~^" $ehb~@A ΄No Z%q{ 1cUijen?>1R!S;02 2 2=2,$! 35 U4@9@ymqjbWj^nWo:팯;DLYC$"M`EʲJU&*USnGdNI]^1Hmz&a}s Yjc L?c]׻!BD1= *E6MVVzaҭ8)WQf.K'_opA7Z,]6E,SROt u1Ɛ-'c*B X1ȊHړce$~WeUI> }R"]k _tX@,70" e ~!z!'es:O{mO6*"'XbU59_(rpU~Y#&09X f^$1DS+k(*Ky `Ve8G14uuC^۶(i&.dL|23S WӡSUD R}U8a`pD&p`c|10X4d:Fz8ز7T 1ʉlts$:ة^rʗ.Mɫt㈣O`Pc?inr)#b6_%mq8L6x_F;lF6:,TO1,QCDd f a/"7`&F$ S)$;POniԁ=[G8g1?[kU@DF%,b\"=O8Х,DB'"F&%~cj0hXyfe*$+T [bm4=t]"UDbV ڑLv9KWx?.4 %cH C#hX.h>a"h-!o!0;|.BR<̄Xg Y$wC׷Gc!@ A9\g KWkj*:àh Y퇂 Bs}MdOh(2HDA+(%jdѠ%0%4殡,N^}FS~nm_N ~~{ibwW_\t?Vx[mxtۇi7^!B!v &1Pv"A[,o̝*>!56jƠ&K2:g ,|@ޘ/Kƥݴԑ$D?P떅[s !2]׷m#ᬬtR*4Ғ\:MMRfaڠ)dsld0^d7d|}?kxD65\<^1y0fGNrҤ݁iVVE|3Kg󹊙 a1_϶qt !"qܤ5Q~f }۶$3KU93,q'wm(6B**φ!Lk"2 o* > I2&;!bf!΁T%0-sTet!{3(Z"o3hnFQ [U)nT֌`F !ȈF+Hmsm73 mR4ZPd:8>>yĎk">14"LȈ@֢HDb DD $ڪHHLS lH) EQDRݴDủ"%ePExF; CX^\(FZ\ل DsƘǓUUAd{ ɀAc Cp\{Bc"#@x1h5 LZt䄄"D%0@,9"#.Qf~EM8~Ϋ,˃6L"ID{G0ttM:g,"}I,mDe9|МHyMİjqS.z/*!ŨP}%w" ,ci!:ɻ %7Ѩm4 z@0 1ľT$A'|sMbaˉIKdsRIUd1"lX?׈"c^%ݻ}ű;L'm>cF{ K1b Ԧ3IKu];Btr}C扐(kMW;01\1U"\Vc*&WUt֎ңq1BH` q ^9q1UJ 1RHIݤKyx":MH4$N"|||u" c(G$eL[c 1E1h<cN~k6p<"rS?5RGdUUUզRZsC􎯏3j< 0""$AU"$gޝocI/DV;mU={_UU"51AL*c >饔mfod/ƌ+QB#5KPCwʜ)rya9{O*!M8ZkmU@D*Hh"3a%v_-"F>:9sj% ڢrf-q-aa cI5[(;ѐq W wLa-E+K۔ܔjh8(QET0Ϋmۃ+\>-sڋ[ غY3׬LkԆL IDAT}ciZ12ƾ _7[sG߁V;v0`,cbJ`4ׅt fl6 NNiUBRQcDn(I䂡yFp6JXiqHrmRE|B"1{O xu(֚}9LDc&U<K'cN[a-F:YZ޶v]dBǨĔ8&EDyĮ ^,0!э[jRrKpJV9kcUUifA ltqq$6OUC7ye3Y/_!y2}ٮ "l%JXX; 7izL.wmZJ@Y˕l \QRkeˆ]%*?UJrtG8^5BdYoK Lm4MS 7adY+|{Al! 1f8F&D?D$1H*$@g2:H[/%\XEFrY MA "cC"+,+WԶ@>Efzk DF*uc1sXmi"ǰ^761Tho1#M/NU&W͚Tɘ,u|ÛjZiKXzޝEU$4APX]t_ΏZSvMyl9c%9{\ D\frYGglt`gض۾ں,mQcRZcY"z'\k UnHj-'k#z%iHLysv>M~?nHx-,W`dWຍ:WX?V{1ONOQRr -2 IYeYrrz,@Vb9K2Mc(GD\%_M}qqd3ɄH(x:Z4 b=+ [nBT%8WE=KpLZj aJu7[Jrʲ<-39̎krvJ5`MiNAɴa1bS0MxHwJ&I\V=v47frUp`ބ0$(iV_+7̟d@.\aikv*y.Rd+MHTSc& 2Ph ƨ2Fnρ0St<*Dd BsVE1ƻw11F:8Fg+Pn[#2N1aF:qYIK2X GN+uak0[Whh/L%q|7&$,$" I着I8%c\QX"812V AL,!XBS.S "j".#HUXGр4V[8u˒ܤVۑHQd@],\=bSw08]Mjp3r"@e1V{sMgZTU5 aX$0d. ( !`d~h)x9pQf*E*SX^i|ZS0RojP'B@"@C@f#Ϸu\YUFF&șmx?1C JfsGGGڮ0 UUf٬O]^_G,.c Gzc`e0t0\,f,ONKޯkl]V۔`֪c5-=}o}Wo||^(,B1-XWTd 㚦^p<1GV3L[zǶaЩ~:["k k7la$9:8!j ` #H (j KD8cu1cH.fCtEc `9yFoд#CIH0~@ Kd3F肍ɫ'A &S5A͘CKQVgSB 4ų*t=3wCܚtӿI ؜*ޤv CY&rWXK$1Ι%VF#w ݑ}~[D⹺ wMyQ M9*0Vo2 ez,emH&x٨!!vCKӣ._^_h ,˺AJ>2,8j*૪*qι!Gu])5EN;Ζmei*(PTr5_8ƪW׋qx^wm{tt뱣,Kci}.ˢϟϗt!p2J,z=bA@/~ˢrrΝ;D뺮޽{ޓ'O?O?}tuuO~?痗WM^_DwwwNN//ω޽{?&{xaz>[Tu@`1Xx///~uJl6CǏB[Ϟ=+{uuUUÇ5~7تww~74wcm]UeUUei3Dt4MiisRι,beYf)ν> cpy=ӧO#7f~o㔮 !QXbL]hMHβ4M۶:78n61Jk%(*WLN"~,4k*QQ$zS>&M*C)Qnp4A|1>xY" )hC:WXtGW0}чADZa!u;d@sчXGSQw8k9D4d"hP*ke=G`Z1 Dt.Bl:DS%u?/ a^"5~@2DA|_oju]ZUuYݻw7XD? XSZ@$&9uT5ߣcBdӴ#s,aR@IQ̼9'YCG ιk: $ @<0ZWXrQX"#0 8+Ț˧&'EQ A2|Q01jV!!FtoIaZ Țƨ%@" 8֚)L G(40}xLݒ50X>ɸ9M胏-\Ck̲/ǥ1L#mIɱR 6Rloe@w4X#$߳8 >0*#9gҕhb|7c0 e]i)3d'ܖ8D<:cr^wߣb7lӎBPe`%({ sA{!u]wuuBfu]#Joo6at 'O>Sxquu48ckl9WU8W:t\_ c*ibQ'''ٳg{zsosdpY:"+Ltq|^wAkUVw~ayrv;3Ufŋ;}rկ~λ{1fZEo>>6M\^^@o[GGG?ٟ>`6tV/=zo~Ν;MӼ;ӟ~:\^_{_߿?WUC״`tƮ6jtjuM||z $^7(Wf~٧?jYW|6CCYmՇ !}>JJ?߻w/1-]6!-*hxFcQl6u]sDk..DIEQit,zDX?1)tk鶤##"Ga:|r@Z.6D2m6%5aLSv&W:5J#yɞ̟4Z"'g7̏GEy9MC+Ι-۱6"H#/_Qdf fY"D\6v9a,WZe" _6:]g0|ŐRNr!W.Ӂ{rj5,A{vqCBEu̱izVu]]]}o?yOOOEip||'E{{c>y7;99s.٣GG83XXWX2hxZ_]{/"Z w=quϞ??;=Çч~uuluŬ'}Q?a/Ǐ?9??_.f_wq[?~I}([yDhX{u4:ZizyGD5f-F{&Vl1KZપt)lڶ]VzD\]EY~Gt)k)\Z# sߦ_G@ec6Q? q>ezu],f6fu]-KWwΚ]כf^?}TF4w)JAv5epQ7,ڲɀ2s߷fs4ic;B d 0juU.KgQ !lt1Q iEG_z? 8k sP%Ea4)N5-C }4;9A;f!i0 }߇04];,Wh5E?3X:k r"p߆!Uuvrgy|L hyz|VTe M׳C#GlBk 92D|7 (Ru b7` !z(֕A8F(l]ιlcA$h]A"Qn5@F] [AA5SuӨÑX$1j`r CHj@mL8fUJ)_D6F+%ؐǜ1JBbEoKPa40"հɘ?I3;hLha4x-%"B_w0>u) ⰯL}kamvJ9&èFC.JĩFQMuN"Oʆm>iӓDS+mwjeIV#34`./Z}ߓQpSՅ%Fl rF'3j,34MSfj۶,Z_}fv~q4ut]~]fx岨/?zom{||cDΎOj7ίm~_hw>;;[ף+Ϟ]87ܹsb(ӧw~o_ʽ{oW_xӪڶ_}tto?zN/UH\.?~|}}=ONNWWWWWW O;zqe阡iU5S_^,b]70+Z*ST;jf0upDBPZCXYo."X[ϯ.cϞ>\]^/usuu֟~oqr\Jb)Vi>/ fhͺia~utM{VadҚ֢1U}<ڗ ](v,N֙•Cن4VABDd܍Zl"<.KnA(K]_b O8f*oY B 5DF!1*|C]y9,B RjHq 5ӊZ[Jfm L䳋U\o֡`Q<7CkT% A9rXA-<̀,3dP@%S:2ڪc}?zONYTmz RQTcΐspc!M\Xxfi>/,#7bv\Xg,@G)T8rƢ&xDS#C0"2eMĦqUDhtA#>>h b%,Td/XُۂH;u v$v*K6M*ΙSFh/[VC`nɭvʫC/zm[TՔ ә__(J"nz}=4JoOBE=rfج\zw,ԣ;rLj\i'40WW_O~󕓓oG?w?W.._^]],fǏ_ϪyQ7De IDATMUUMvpuuu_zpsð\.ZZ=(Σ;g#M{/~/=|q㋋\oz?|?;w|?==jgϞm7T]U(^/˲,?|>N+_]]ݹs,O>OHf-y]Uf>j}ZhGZ&4SuEܬAؑAkesndytҺ>oFOOO]Y|ǿͯﯛMӻ}jƾQE Q[!˫: 1jC$k$rhɸa1 $c~ZSd#ȳRKQ%9-4TYhBI.͔ ƺV8fJ| Cg- *Zp(c,: Z(lAT?DF]hTbKS TJX+ \.snVnz!z1HgW뫧=~l$KF'mBd-nF 4w_^_^2-J" x~~ً___׶w KjB?D p82 ZDae 9bxvJw PխC JǴL(@†h8^VCպPU{=z7zXUͦެ׫Wϝsu5_,b6ya͋gU+[o=SMm1{@DJʉeV!7qQʘ\^^&tbO_ ~j'+ѵvs0_5)B9J JKզ$T ڳ} / zّfOk5^ɔ%tot'/kHe!mz,+oRv!3+͛ۜhZ۶ꎵt4!.qu^`eԠ!Uʳt,Y\*mguZZY6ͧ~j>iBY|ѷ~ŋvy뭷Gu]߽֙[DxQכhy||zGCخ[0t<:99>\^^Kڛ5Y]akLwyٍntv@"%R(FEʎBЛ~W8@AѶ2`Fh1y3aa{VV5L!#++*o}C۹p XXZZ^^`8,$~`eUy:eۣn9pm}3-J!ĕ+WMO_}_.//9! $IшX3EarX{(ѕ1f<_|e<#,Bp:gȣAYEVZoJ-l"2ޔyU" #,VʲL9E:<<|mO>X˛4ζz]ZLDJ8ܼy_ϲ} _hD\]]ɟF+W.ݽ{7~7.\3gt:?6L?SRՊz v<ܻw̙N,%I,.-e"a?pϞ=?2iA5> CUUm FwKlyqaapXB*⩫Ox;Nwgw?nw/}鋃 $I?n<=ͳ"MJj{{{B4k-;yW0p+DY j,c!iEQ۵Ǎ:{T4P*Pθ̳IB rm^Ha}8,a8KpVrB%ԕYI)Cq=n5Xgg1 *wd3df|lHJI"]r[rIR ZR:TAݖOq)x0Z)$!H@L|`^3 PBZ 8(2 @x% li1rH38p+._paueJv8R )lexTHRIu:(@ "Δ6@5HэvS\kKXUU0sB#8IC)iFuPB@kVrTcoI2J{C ˲F35_&;f0 fߜpf:KM&1ڌ NY~Ȟo_R HHwS1M,/&8YЬRiy_Ox C>eUUUiשlbdǭVCv8?1 Ty;A,c+Id“&&6\UVZN`5)ިl5{Qʊ`YKTU1FJba&8]XXAlCy}=NY?|W_]] $ɭ7]HDZ(lU<yŗݻwֽ㡳ԛ_O_zuxgv{(N[J9!V'XY]L&aZWZqZKk-9/-.yyQI<֝nwmme[[g`e:"ix1 Lf,//gYeRŶLyDⱺd2Q  t%"qe%B(ol^dHpUƒ==@!*g#bUy<ZGDduW6ͳnч;{$EJ454C˯bskYȫ"Zs,u&mmd RFL n @  ._<@;獷N L)Jn7[ι,{_YSU?V s;PHh4CQUB s[5"lUy]٪: NhPX5%H$ N/ D ԩ~Z YkB#g*5=](@’7[j )u(t1 PkmZQDQYA -ҪsgJl<"tBGI <NrPy@ 4@x UUn'n'-r&lCDqGJHGzT*+`9 2BtD $$Q([V21 ҅sgϬ#$ ћ|' C)"90+Ҫ(V&iZoN鲙^ !`LdBdͲ,ˊٍ1eYPB,4ϲIY*X9冀 8(JUE XJd#kX;lcWENEL3&khNuGFQHnSf|i̐ #[LD3yl\'&5tLw켩v$s3+#L5(rY@SìPt'{b,7+xBЌfWe`5/w51=WUaL03ow,cQ$ҴG4Vͽot#hkzğ]Xj;em $'}-:WfNrj v%uUiAC24sDR{p{wRdc: k4"BCl7Iu[/ܟ܉!ZQ,D-Qh'BȔ=-U>*[ p X@:Q((L&xNei󠵖: "PXW ELZ ^ZZCv毭i)yx*g~$@淪wFT @?B #^@8:jH D_u$/3 S렃Ĭ4FYah-85=O gT_DiVA^ffώR&jEQEBjY$|w&dO2nxLYqtfXΧhN _Y\\cLn,~t:I|[Bčw޼yj޹sƣ,MIܻwo}} _{5cLOΜ9{UUn'sssι^> >?q윙L$եK677|n_~z/{q66x}}}gs2Gz[_|IZ4<80B)ࣝ./ݻ߿ssmmaptXD0ey|t4L9km:w ?JD\isj#JS#'6*#'`Bĥݍ6Qܽ޽ZN=/ @ 4\|}E5! R(AU(x7z{YUƝ(uQz  Ħ1q6c@PA8=?HymB%@)8vBtMZQFY:$x4yYUUUeE) dW4䙩:r\/ 2"TY `h+7?g+DD{wQC1^AAHi2"j__Ky # 4ϝ1FԍhIk-ry9_k1xwp;%b9pp< !bvL `n7FCӨ$ MUx R[uCgJ&,;UzZ(4?Uxc6>٤clY?qg:3U؝UAf ٬x=N1RoJLOiylgxk,idiK:s*jvtFew$e+fY6LVL,qFƘ%>Ipkz%`ANX>v |uݹpW܇^7 ƆR1.MSŋ?~PA`6΍>;;:??? |dt||<77B3Lg!T:JcׯMs {|~NLFZ "}pnn;ZEY^?\TeT`47??Mnܺ,:B$n޽/\~a獽y._97v0,,,9uYeEҨ:xC1bs+a=Ǭm$n( ʹH5_e)9V;TA^-K2D3YP>M$9d T#03ΛN&0-tgno{\h4}Ңê@ @Gf)wD5"Ow'4>Rx f/Gҕ)me@:Nb-|9qR(ef$s$vFIg~q欿"/J$B(ALU ؋fڲ-o Ws8 ~='aV͘ (A"զ`"w'"ٷM(j!e@ R4CutUUo <# S.? !D5BjRԶq+֣=Qw4v; !TTI7MEtTU|+Kϟ?5J.Z46qi>#,ofz)%&Pʙmm}ٕei*֯dۖR Qr$Gp+♿yR*7 Hδjv+^&Jx',`┗fx*qy{J. 6g!T}7s*Az?ͯ !R_}UK@_~lkhgiol]xo/_rNo^k}ݪn߽uҕ+??̙3G.gi+hs}mK+/\^s s/_z!bZ몪&I30jLJ)r47uf@)4\$C pR躾я:fA-$A-ED[g׈Yjb 9j{{{smvsNܖcm'9M&7ny-Ct&c I~ww[{jPyo{0+V P3QJpeE'8EV`4.bww?~^vܙ_/^:jn?sw}gsk}xWZ^|t[Ɲ/~mI;0o?OHh}ݸ]_ZIDzKb=뺪\]\h'΃Ͻs~W~>`h)uML$1eـx3yH O7g0*G>l' 7{Rj\%$fOP8Oރ,JehFᤘ[Yq|oo["?;8#EE n/I3/ |?{ 8jj0IV' 9#~NPJ\$ :ʑ( SRi"Z ,8(AVJ?0]V3?=2@(/4j60Lni{oShOzTJ@[ՆdBD'AS1?뜳?59٢AG5"z-$2w:ĴeYv`4K$*T(1_}ݞL&id(ȨTNMdtfMB)oMH#x]fk54k{ppd2 C߿¹3~kk9wtto.]z3gs7n8~_ sx<0Mo>3gΜ;{^)E ,FgҌ&TanhcSOνc_}?6J'YV8i(i%"Dapե|!,+сdٻ)xL7C8HJ!&bXsk YՒdYy4h4FY_ҍ;w>%ݎL£I^J"Jx%g9yj)eტ(Qs#mVh vz%Tu&z`5@֡h@ !A(qxʜRR h9OJ £+)%J u`"fz2ď{GHP- ]d#ǗI{!(8$Y&@y(qAPh<paB]Pf_'BR^IvrUbeZ-y$;@ɘ{8iB)!r62B)%H5^PRi퀌m<c*k%)Bq9KHJ)uȃ&|]d\E۹zgիEY4UUIXl ӹaY,g'I$ P>nPa ͊8TY)Uӎ,BJ$1{FMUS{봁,QOQXJW8k+(4<ܻ0;VSJʲd 0BbZmTY3I3alVϨڡS[A^M3uar&|A{0 {~?;.tW>$_,.k[]^Z[_9:: @H`{Orν.ǝܸQXtxxG%p܅~4p$B(+KÃ2ZRڝno~Gek9c(,s)5'/c"8CSt;ϔl[YOi9nƂMB ?qDH3#6[9 >tCڟT}\qQ,+&i= ܺ탽~ɏtVD7nb#,RI63jG޲j>tn=Y+8rT2<6-f[Ӕ l&Y#֔B@(& 4wk*P G%{R"W@$CN)ð!]ƘVEގQ:iljD3bU͂䛫 @a BK!Ԋ))@AZIaH[\ę8CiUe@P"gA6.BF @FF5;"Br @ !/'q$e%|? ͎)@ #z\rTQIn:pCalYeQg   d9|YYJ~\A $j]pg9)H;<;88888HT :wNBɋ )}q0??KӔP0Ĺtv<[pmuy$Y9IG{.^˂jgϞ][[qݺus0o?>I"@Zl A|dY2EW)S9\<$ekW)FW._UsTI!0{8 @&}oZ^\Z-/7oׯ_pՎfi:N{{giZiǻG7ak?xb~rZCBj(sUi}M5l4^Z<JE滽y-UwZ?zvP|굕 .t]SV 9965G|DZJJMI{#76` 9s*Ye(j^AKYDZtRg4cZoU.LIj'7Rj1Dty@% ?'G\u=:A85 .VdinA2mn_g=a!DRH uMsW8% BQu @Ld<G:H| <Ԛ/S@t (; N)%#Cr8"<{)[! YKE^UYXcSD) Pz@oȑG9*'2||7fnfXIK" 魨O3sdO$`Z%RJ w0x*R0֥yƵ0%QHg Γu9{) &J!BG yQ4˫8rS+D2ЈXN$ P<ʹT_p{{ݻlQ+KM1tVAݸqc{g>_{>K.8˼$`! ~/ΏO~[ O?o,-WU*tpwg{ߊcr,RkRJ}BI㍱J"' O>1a%bkqNVԔ-za0aIReir X?<GqjA9?w>|tV'qӕx )Och;^<2sfNs^jZOK[jf驻yMwj^=7$|{OQ0&P4^Z7KŒaAOamDBI XrM @+L0:ZV+ Ch9ãcG3Er#@ @H*$"yG J' K\ 3RP(I@sיuM4|( D-22JIeDY- iHY[Wy@ u%Zggɑ,](Ʀx XOD1(Gtu(TGyQeUG(!Bqi"FlGsGOՅ<(-s'[xe6ţP1V5b͖,S8@t<ҥ_տ˿y;y"[XXݽr1v_p𨟎'{>M,KDQuP?@R PUU8GRP9(,4c+IB6": AHB (4HPk6j |:8[RCx Ed]!:,x]ՋbIӄSE#%B<xv.HL8$3EYOCxB R* ޙت(yb"/iqH%, ,.˲?G\kke$MӅhx֭흝:U0-ݹ߼?eUܸ}瞺rt{ ^se:ğO? 66wmll}ώGInmmxfc㪪F6 ͍ k7ov/|OZIg;B·Z IO}ŋWnݼ%˗r{^YdҒ3bh+qom!T{3<00T 'I{vsy3 ~m3=gݝOoVoa8w(ԅ)r㸕FM|R_j+v{e,o8Mr O;q2 HjUζ|2!p!P+^|xkwB177!g bZKD(%)ٓN'3,M!qSH &C<Az]}Lw,A:vG7eUO@**O#LG)TDHBy",uB(k+erʓ:J u$:9M8ΓRk@ 0 = Bxs;jW"B8B3#8YjէZ^ZΥ)n8ns`/_魏~p׮gY07??/Z[]x~sms Q֝NK1f`֭[>y'|Ϳ7~7~ٳkY+!zFN':8<{H@)e:z<k![h4~EŅ8iWS-NRJ_mMB!_^ I8ٖր nwJ& msg5O1$#R-+5Td@baKyHHD yY[9cK%t0`ZL2 :@{||מݺ}jË.d ݹ/loo´>ܹv~uv3[Ÿk-'J*kDe "k}g_̲O~|3g}ᇽ^oee_/ htέO>ģLv_ 'ι奕qQs+TN7ølUٵչ°eE;N4ݞ_hGI{gg<)GÝ;w}˿)s&_^7eji]~N{{GGeERUn_rEܾs?B(MyRUx%I{aqyyum`UntTN"ۓ,m{Q; }JqrDúz$\!8^(ʊjna'i&I;ʜ}_|R UeEYZZX^^f’'0kCfS9 1%s@;NG]^TQ6s_ZmbPG{7kw RO!*гՉɄ"z2 O{b=~A@D˔#S븘粚f~ztY-f5j5z u"x1ߣ oq=9D '}$hlE2 eV$Q dYyQZc2):wV|@)bZ OP^E1Dō.ss^TYyة 44OLJITu՘Y X! kq5 MXQŎTܬBqi̓|h#BR%IFR474Ĩgf!"&:iXYH0{>GaAg@HH8">B.b"Qrznks7N-/X]Yzl7vؔ;[e5`  BJ)(,TD1\Tǎc-tmp.QR#d@ޓ$H7+W./uE&DFmx$MT(n8_^dG'埼>PI@ryeU!6͇?O'O,zn$OfD$`gpލlpwc쑇>OPi\+/\Y2 QD&0hj3J;[=` \NeÃr4.˲۞Znm E軹J0q M3@Aiw[mkYv"  s[ZS[f\ rf~Ki9tZE>?ׯ/Yn I }Էo\~oPַFu50WUՄ0Gyӗ9a$*Z"1[ p/|k8^!h@48 g)i"=d J(01B# b Y6].w4MTCC(U+Y$d!D@u=eS,- 1qIq"0 <e1{$Q12{Q` >#fb @@CJzƃWB*ERB]B*C`a8ZxHXmT'zv90y9$`beYS6"'Mi $@<g8xAg@XCՐ Cl2#{ BU OfɳxMIv am:vԖݳ2g>vb%vC^!?ܙJ)癃HpP&Rn2L4MZyO1%bKc AE{s92L "ă3M=>Ȅ䵢\L:ZyZ`YlXEwxG·>Te<Ę#'E@OhyC4}1T MR\vm}}s@:0?ݛ_>ɟ~_j$gLc$i$ 3ɋ, ~mK^Tp\1Z B25Rh?3wn>>rx\e]J\Meƪh^swVw7on;I-pvqqҫ}mk󽅥 ^l~3LȟwWsԙSVv&_|snɲ4M=8;33nvk7\#$Y;c]|䩵4ɟs3Lon0+Y뭵neY5ijSiƸa96JVQ:''q|pQL\"Yggg˺M9 UVNaRliѰRl:ݹӫk+KKٙLEV1T!ߔ\ ֈ7Grʙ{r 3h\5l c7um3 :F? #wypz>"$1{yX$J<1 P5 $DQ]"'rv**UHc26M]NEdAhe:礈G  ;缷JIu΄oPFI4>j(6bɋN{v:"gfW!%$iU{gkߟc1+'O<8Hnc&9<"4m D\\\$Z<НdY64ku=#U!\=N'X}՚5ΖeIRE3u)YedSO d"$"jM{N9$[)VjR0 VDw@:jled&聙OÛU9deD 1 . $ @ y`$GUmAqji:p47!) m7 $ 4FIS)& D%!Ɋ1=.\swsыΝn穧+^\\:}lS+?K_Ɋ'usUyRR_*<$Я߻O9A4+Z|Yg?d$g?~_?𾦬>O|g.>N{sںtR[7 g?㽙ȿ?x4M8wS~TRj`iqν~?˯_Ưzig8P(Fi& 3  ,d/ [M^(JN$i! "չN*lf;'?EiLiM-'6#dϲLkox+ek`_dbDcp<˲k7D֪zPUuwD4 8E\cNwwzoMo)fZS@04@OƏ,>NYoTU[5/ZzwYM"0"Si%JZϵUY[UbӔ` CĖ"C lX` Gj)}"P"Y@ǦQXi->?NE6i'M%DfoZ%Y9TLeY#$ ElʺzEJ"gsBBxtB RDZkDƸD"')efZ@$6#*{Jt"b ViLmHJze]"*%4"oB* >w!0yD@ И'Z@cpL("!h.. xt_9qbr+/MU#Tv|:w:Q9>88H87q!LuZ"cp\UM9Y)-"Z"Ic&LS-IԦi*J@luΚ8>0JBٟ9s;wn-X]YSZ 䉓kkk:M˃iv^xcdT:. {$$sp@BEe IQ)| &g'>r0`U[kKЊ( BZvnd)!8AwASldEm`!b(򆉐 E[!Tnm>fOds4rf;[p^|W,=VX#wq6$iB*Tg?qҼ;p3G6%Hzjݝ+֕k_}k'W{3z g>{{{˗/o}s<@weL4H$`cp7>F$2#c"U 8#"c DOz/&7p>|,卅?O> %HhHڙVZ.rXՕƺbAc3Ǒ(F+7MW9 {!HT+R@,A pdL] b+ԣoO202QR5ƌmD$J@3459&[SU9VxNaDvB !!f9@J)BZi3C&&_t"u3G( Y 3y%W 0w!eJg)lfBciJyG-#OR*%%3qM&^8@O8b"q8j;igmLwF ]4;!Lnk+Եaf!צZXZ2ƌd~P*˲ݪJ&:,8-``b $`*I z}PB RL;}x{{{{oѰKKKY^<׮^ti golO,4  Ug"ǿp|'o.4U-EZ5Ij@A8;uis4k;wO>rbҥWGLo8Vy[׿gf~Ŭ_ݍͭ/EjX߿|;wgϟVov^~Ck?N.woA~W0Ƭa88_|G:LUWC-}?,.G.AN8P ^v[O<<TR*@~gΝ[;uf07koݽw4pKv D= J$Iܹ;77w܅76e䝢;,/ZX&JWQ&o&jkgi*U'|cϜZ}…奥V+O4Q\oH=!0/ҷ` 4:-8'1fXViÑh`8tҫ׮o,BYUyPJ)MBqMaI:N ,z6FydZND΅t~7~ޯwyO[Y_i rFZwhZN~#;:A*)n.yȐ UQ2%DrǞ}R@rYb@i-T*Al3^wCcTFs&UG؈ɀv:x됽@Z\i4 Nhc[w2Fڱ#qD{BK$Z"/,TBcL,"̐$I !"DB^R $fN~ !81> lUIF4"{oLc (k{ρ4/Z7jB ʡfj5J_it)|l:(x%H )A)jX(Kc{k=ӝb"Թ, IDATyL1$qjh82`4IFâ(aQ9/U"|tKDF!Q:< Mϓ"I*cE+^(=Mu!P쬝)Փ& A1#ٿdItum<cF13*M6ٚpYJjk7~p$~_1?XxD@S۶>˒ 4=LGzŋJg3;;k-c)e[p8_y+'="ogffB%^|u0mnmaijT1I4<ĴCFB("̞#|K$ WuVDTU1FIR@չNVfWz |i',륥ѸM<+jn߾}޽V1Svu&1ڝDa`og&U2Mu !(Hgx嗲,{#ΞpVg橿_m~q3u=77 `z\~[я~xii?޾}G>}W_ɭ?]~}shu~7w++_ʲLJ1y':EJd ug*-{{Ϭ;svn7O>]73)z4,Ý38up\fQ՛[?AR~3_q}8^~U Y{=Bo'Io}?⋀Z;uf8.oܹ嫁T"P5$ifLI`bH>|ښbY]X?[ZX|¹^,eYFDYEjZGާ4kJtqXGvf$Dںv;w##ɉwd  #4Ύ&:dJ zS2w*y]X- T:p]HY !}׋1ԥVԉ59$I eYfi!> 0)-"zz}dkd,·`Mْo $ۉhk%8;.~?KHsoiשB\=Hj͉"k|pl(9e9ZwgITx41(T[c <˂RѠL$!52MuJ`u !HQUBiBpI2qN*-?">n W% (!gg2I8aLLisQ퇈YHFv[kZ`]ck-sqsƇ, )=!)@9TE: 7$U\RYK)m7 1ÛB}1@(tְwJ "NQ̴[4Θγe.Q-$+Z:IhXR2 u O=)7 ;gBnl@$*c=imXJNS)t8CpQQG zEBeڭ\ kWRV>O;}nqqkY#ښv]{Ta4o|SiQ?=COIumYRjIƘ|w[___\oJJkD%=O!ZHc'N $9Xl`Dž<Ѹ;FBtU=}.tL(6ayyY!$J>*nllD $ƍHx`C׿IdEntg Uz{oݻ{G{ԩS{7^O}ga~SN~WӬNۛ鏿:7?#w$F ʆ}`wm#?/\x1[yQիQi >+\o wޝ{(iwrVw6vvvdonv`h}?ەIѩ]ME|]M0M'+f{y%hv;<ϣg;U<1I iA3[i@UUݹ~޽ƺvv,M77*:^o?$^*7O\ H(=u]#c4M}['`ݼqBw{'MSԀއ@Pz#t"DEi!'ot:INKJLMԵIӴuNC4HBƸXhˆٻSӷI)t]L=`q=6S"v8A KgRɊ8M5":ec3q@Z8_cn@d#CB:MT+N!67AѰ>.fβnKEMSe9c$|"RJ8K DPW,I EY&h+:v&{iB;7y{ieMo@2% yUK)Xe""ÒQ5!$E԰ކLXR:罏qN&@U6GCI bAŔG<2##Aij*ͤ(^ D|*,"8㭋P$κ:!f$Hj(*w16)1,!;bP&DiS;k= xѻ&ƚ8bFD))RUhM!QDx p?!@ '?KCλ}׷77K '~g~FlF&) _d z!D*$?2Nwj-Xٯ[HDg™^Y=yr<J Q&Ozt3ו81kHQdeg HjDUS#2,QR $"#nŸvB8Ps}*&n0"d8ѻ>6B.LAJ)|`! M,BLcQ>_Uc*&тPvȠI!0'Ã$b9@4H"O gjP$/XS(f)b|jDd'vvv11( )A;;;wVgr7{s3emn޾ۻ'VVIڊ\Z") US9p s]@D)$aLk;2c&ˊ̬p4 qI5MC($I(kkBc $b*5lf:yzݦ0JժEna_{jOXk77;hT$:ٛ]_\:q <|qqqWWWd:u洵¼臿?sV~'Q Bg?ᏞG~![+++;;[VK+oupei` ܺu+I3Vwww,Z[%:MO`~vnivmw6wW~gϞF?K':=w{:7z'|rqq'tɕݮ5u*)Qƭ:޽vw;{GEbP F"EEB5LZ͸9"DUIDn/>ݮ֓|<# ,~[c;cTtљ Des8[Qe<#ܹ~݃} ypye͝a9vcӬCmEQD2˲Ġ LLNuJ0wQ, x.תTZydYVY=-uLzvJ8k:zuI%dppп{Hl0Ffx̋7P60yf򘊋ƚ118u2oF$)&)l`GY`"I" h3uqiiu# QZw[(D04֕i`2E[XR)Zy;,ѵJd_ZHdo爇‚PM]$ɳ7ɤKDQ yQ!<ֺ,K: lf;Fwqc+sP*7iƦA:CBII%EEQSVq#/(f0;7yCGǵƜ#5VCQB$L32DRĀ}{|"B@B̂'"w иZUc( }\B,$ DRR$[(Թs<֦Rhm,'ce8*C]LIc\tf#( +<"D _IK_KgO=qk02K" ՙRjksgĉ{[։卝}QEAR ښBYU;IdE{OR03gJ7uE!wl`;팭RPjoy 8D`˲tεD骪ppYn[o}, N=HMcZ]=IԵG irZ[ .D!vP!D3ivgfևqpX؇dYY3hԵ ee-s<z'Hpoԥqaqi^!ܽu{wk+\ܜ9xnqqllm.--lnoUZ1۝kjeyusskZ8?gB*]+z&a0޻wW_xٙ^{?~݅s7ϟ9s0^|ν__βgK/tEFccnSGLnlllomv:]PU1fTہ?9Z7͙N@Xq֗>3?7~y8_s>8`ĉ C{N˺fF&˧N:%Apӛ׮.и3q3TH9 {f&A$"Ђ#qP3@0u9I|9NRD!@xMfYYkÃr4TR$:U]UR^]U<;LSRy%dv>*BMU %X8){?ܙDGf7VQH!!5B8NY$G飦!Lg!.ՎLvs;g>qB"$F\O-[K-9))8p@?MB&$})"*JW7Ƴ 9KcNGfJ IbJ!d-2bWcs3YDTR(<㰬c'Dh(ꮎe$EA AxRN|4" qBΫVIhC]WJivN(3G)Bv™ӟ'>'O/T&2|vSbP98.(Nwo4_2X=u8]x/i(̲,e% d/K` \VDRUdZB<[wyFRTM[QYRJ!'p̔u~82se¢7ug{CpalR*"!MTI*Bc`Olff&BXZZZuJ"+ZM׷~W.^pfuZWJ)![gʔutZaRӝ}o>W~nݺBGU[duK. 7Gkgμۿ˿'?/~y;[?NX{;EZ\t!cWY{wIP$vvABSfGz(Y9mt{=?88_7V{シ>͕x / Aq{E"~iy?H׾%ͻ c0ͼ %,]]*][Y߸zjig2~v$FQGy|(SՌs0 ʊ|V7n';ۛ;G4 IDATp8?:ʆA"O~a~@].:S2x#$EI5*~Wj.PtOA(ZIL\Q$VSNbWV#0?aH(Bc,I+%p$ Cε6X]P3,O1Vk!wr:P]kI= XE&;'V@(HHY㓵cںƘi4^sGBw;q N^][rV,ɏ+K zZfAܹse]WMݎ|s?g;o|7wOaff'`mb! C00tf6iJť†z<%޴1eY'TU`۶WH "k6I7^z=wWVV"gg}[9! U,y%UU,QY",ѹ5F j#"@ !&Tmx# gөԣ,Mϯju&aw .Ԍ>;wŇ|wpxXWӎQiwv?أ_t^tS_`?xkk K7z駟F)z|'{; /曏>X؈QgϞEN^ܾq᭻7޸իW1hO|o߆}&lN kg}6RO#Ñ޺>4II=ՅRe?;c-Xk{u^9:|mu' ;_{mmhxPUխ[ۻ;w}BW~Wy&O k77ooچ洮m2G XRF)"v3cMqgye?X"!BqȈ`C)EӧN!N\cѽQ&PVh4-+@<?v7lh谪[eM/p|t/4!=x\]xZ/$i$$('xDSmgcAS5нTDy'V$J֗;gW3CTEB[ΟADWU,B3n BTUUr:x&1HxŻNx2H ,|ox3o?7,SqAt$+++D۶m]˘(4ӦEDETKV@=,-b4t!fj:q%t6n1^?0!(CIyz'ӣأֳ1޷A%ƨiz U4m 0U$ V,-<B84 0*ŤQZ1$*QW=zkbD; (s :f'^鬌KA$D A썀DU@@$IS{;UmBI7\5;כrt:/|]={nyqyqai:)I$Mŝ??~Y%uH[k%e]%I5a"jٟ;w2 ~:_+K}ntK_c=okqп}CWEFiۢFGtMEG`YPYS,]\Y-ݸ,aooY/˲N)ev.N,(PuTkj l f6)g"4HAaв91H9Ug0UݪYY7Z;sf9j`t4))):,/+;;wܽ\4XdNFcfVƮ9zp8k7n>Ѓf~Bۦqm}/WUM֝~3,yWz~6'Ç~[k+}uW_7_?_|m޿n^?'>WgMS ŋ_.< {7}/\Ν;y}gcZO|ҭ7o=wBwz՗/{E'Z[!aU_ _J򼻰?*[A!($Kksk7|g")g;Y}yaa{-A$S`#-i%9w֭4ϒ$ AfUZ4;7n< Gq:|U̠[J)$4t: ^S$EANuTrRl'I'=sh©!͇Z #5E^㙠 yB Y؞YY:wv=j2\]]<vog{{gSD:iZU"vclY&&hmePը_D{A~ُέyFȞy'x"*۶ql6QJ}駫sO#J4{{{7ܽ{a4if1UUNibք&Mj׶+qwʖu슴1&sfιٴr'YJd24Mm✋̔T$DD77d2wro _~fV6֯o,w|z{2;7߸pBUU{{{ _/]4򇯽ڳx? ^w8$>OLFk/p}y'Y6Mc ANլi+98l0Ξ={0xόGd2Y]]={Rwv))lhb 0!a@a#hqԜ[Ygvxjt<ē"&Y1d :MrMtzmֹq,Ux 4 c۶uSzﴦnx8N\b Il&1&Ij6J)A,𞐈p̜yaΌU"5Fy6@iCldH6"8О9 $>Ҭ̼3C֨5h5IP &TڌG@$ n=MVy񓪜!DZET`V"ٵ!@Lœx$('ӓ5˲,M1EERgFAo *Z9@CpM#m۶UݝqT(JQtvxB96* hga q9ļ_`ӓAPs9)B,Z+QHY0ՌVb{`ƣQbu," Su7XZ\l*9A?ֻS$iB'lVN5"5Jivm]׳rqƵG{k˃tUA۔;{MUvwNId6UeV7^w4tzE/F$͐dRVަx:q3 L-!C Ħjꪲ"0ֵMZV(%)>zc>n99^ͼM8ײFYxkHZ7%c0IZc&&MM%ij&Ԛ,M0x)EVnQi&5*&[^< p][_IAxq0k /w{/,t{}cNSף&v|qv36fIUVvw_xᅃxapu\]w,Ilb5:1&1&K"Mk:in)\,A`p|RGBgDHjEH N4h[|5g:gϬ6.<~w!d:Q6BAH+QEA n9DY8xǁ{!B#9 3 01KbxGEЃx HX*RB}k0MS$tN') fġ ykkR0KSaൢ(j"DcVQ.bHeIZ)QJERsuޅPUu\ʹV&Ib,t:ѸHa'O"Ć @w lٺ6މ.f>@{6`6I4Icbѹ{w[ жMؓwEDm7_I閠"EQHDϊ)JD!Hnn'TPbRi"{>? LB,FZk-EHޅ00zϲ("5&M1'(!P Zm0o7ʲ_n%V2ZiMPI+!P)wbC/"$ibhJ)q,"G"9\b ,V+$}oJ[㙝kjAh61 C웚*R@lb,ZBNjgy - IDATM|ϞY'Ěg~/Oy-e tRΒ,In*kU*VHh5:1蛲*&m{M'"K^{ǃ~Wح.=4,d2{F׺dX}h]wCZk׮@Y^Si潟L$"FDI͋gAIϽm{R13rF"ٵJc},)) '#S:S5O2D'"f-h_k׺` 4VKyfT/ zya֠V3$h%"e5*֤ Zk^WkE d<mmoxih=88!dV7u3gd21Zȅ[olntmzҙ3mۆ [;{q_3|pڵBh\[k\MƦi'Z^ ?]Y(L eUOݺy{f6p7o֟iwy~kM]>wrٸ f40?LH=nM㺜UUYNxrn ~_kضks@!<"(q=K҄$Y4P.4-[wx[ypDyI‚Zkx0ϧzz&{'U:K񅅈 g8hKUIH;7 \+ y(-yI2mSmn\ V)mTb2 @b̘3;kZ#F@dĚ!!{MY*˲i59/ֵm[fGIb"M1<c;'"0BJ!`J'Iz;NQYijM1gRYynknA|ࠈ2A';Eib0|BHkԊbn4  V1$[&z@ "sjI"` ( X@dFkmFk E8XXHM%if(cZi$ z$1ij;`0X\\\\Z,t`Mŋ]<~ͭ^:#˗.-,-ڸNoxJ^hLk7,$@j HAfYyY9|'V]``wvY2X@hβhxY]WZk<òJl5iƨY8j59@ɲmۘa>[o&F$C1s !n7ωM W9s!0 {iZ'VkoZ*n}P m*-P)cMlb ؇Vw^אBfPIbVUdid$Li,SJ!Ѿ̪)!$VF#>x88Smz K6igӱkJni[5Mj/tĂ+ڼ{ͭgάWM3S O|cMo;?b{-edVG~igaZ)'?&90߯f8э7`_kYb_\;~u#9ص ,%Tm(s"@Sfyg1"t4Uztt[8ʲafІJ"m\2$w&T Ӳv-Mc7~饗ܽ,ã`9kNdVjcEZB8cܤ]u<3!"m@&U-NBTg!Ʈ֘6I 8`ޥa/ZCHE9Ny#'Q|0FE)MJϑrCŹ9"K#@R~$EQib$dqA;fQp|BU|!F$)R `Q$̍RExgInLwzAjYU9 lZCmY (EBQ'J1`8%5<EOer&CJ X D[!)OG {Zvmddeb'?CqÎmh:FPo폗W$}7\}_[YFu]O2IҢ,--I'`qq`fcg5*~_~^8pw}ߟ q0Xkk7n.,~ګg^}K/9<ȣէyleutks? -L6+ Nђ,";ťG}ofѐYU?u:"(>Da* ԉU@Uju\5?ٸ{ڵI9tz)A- e\B@“M*vϮtH^G{Yҙxk<3IMƣY᭍xY;7IusOV?Yf 1cEAaAB1DX8# n/3yR޸Na|do[7?P!V?C/ +cm4>Te;]-' ā!jD>TMBRl ⦎`B=Gs`mAQX'JuJ,3L)#jډև4'J( )0VZ n;!J5ll\Z4QD9u]G8GlWH:{ox^#s %P O"\z1c"ӗmǙt1\OiFD5^w} 8fO͉J X"=SuG*"@4!)"f5?`LaQPx|9򞆘qw HYIHPBDHH$pr 9BeHEҩFպ-k ܪDH$m[Q(ű6O"e12 g2ϴgkǭ<b0L۶m * ,CĖ*E ?="{+f4F';%޳&sWؼ[? glgLb+g-U`Ѵ6>ƻ{Gñ0.+$$i۴X1Zw:<͂km#d4/I;64 Az%^&ш䦭2wNHDDFUU̲,K Rv-P&Y䈨Mm\3M ᤓwwRuk;6j RFip#E+VDi:׉HtB! r89A)BM"zQK )'j6ebb'B 4$g iIH)P+ԄR) *۶դ[WiD[(y5rRNJ9:BBY{m,v]*:&Y8o? /TurƝ?Szs/2} gw]y/| '|&i=cжnyeL $1X*ljd>wflvtKg|of'>|n޼}wSkքi}Y%m(ZϷuMus[Gm~ϞpQ[Sյx"䂓NXT]2*=7.T.4oEvwp<>88mt y[[@~:aXkMmBAN4q eYnnnϞdX!c"D b vFeY|vuDxojy*tBH "cQǍͅ';L2FO,5B/uί.'F~eRU=0;c2BdcB b`.8vY!IRNjbb;aP@D[VUE,yE@GtLxdf\pQDZny@u˂D+$&\i_QU.SY8QpJJ.h&RjA&3CR00T+<. B Rve*"o~96(mĬRY2-s :eSɥɃ!8ǿfܵzx=9KJm&ZyP+sKiUO& j &"*kjiqd!8"8d@XPn;j01ӧ(z dMٔt!"d{&z~|ws~/ݺѣ7x㭯}~7jw} &p}u^M4+Zr;9S~w/_s<~3;8H<}z w:n6'Om{ܜs@KwoE꺡r j4S3I1;E]dTĸqF-UuA3*z&[3}sIU1\~e de~w 3OI?fV晧0 y=[)eb}puSU۷O+.>y&ɺ[ǜJњZ[X4,/b?\5SD|7կnw֫~ٵT9 {zfu+_{tx{GO9LfuO9C_|{ٽeog˿.._7W[懧}~{yg}LjTϞ>8<9Yuo٥]_]ơ?}+ɳoo/(޺6[yfH#H1^ǼZ^]믝}?x/-B%fH)(|DRѳg|U\Qynl P&Ӷ!$]7l6kFl7]v։]",J@{{{ 0ӣ#fV0 悧jRѧͦm]Mu%0ji Hj*nd%XnZ#L ɔTHnF'/o}b~rsqv?}krus=[<={j5$LrlD@@UДh3 veKDCV(Z;r.c L3 P <.KtG!x";MbfjD H ޹82FX1!v"ZJsA3s鴮k躮׾ z, aH_<{s&Y%$ X,"eÈ4kfTp!d!9JuTLd\(ELA@ 4٬OcMy0*XQ5 [WXSd$*$E`dP@ŖNG܉RYQ)|BDahv"(:$_7bs8t9籨Ad0*c.pˇСC"!KU˼[(Y̌H*ll8cReV>LP@R)e"*i=1ȐEȓ/5(fe(WݠQ˛ 4(tIܧ?Xwi C6@}Ch]Wvv{E$ze`)>&QD*`>;;#*x]9WjhfjXONNpYWU=38j9sA$$׿[f뛔rveu}vR9W11r`LdZWҐe[,t2Y^ \;|p98LSv9 r)NrRb&Ti)&Ϯ&ֲT(ue+afb8ww_}W!u-3_7gGm޾sk)4tc)3~/Iinoo׵fpaOG/w}|ރOWj&|;W;ެuզ]^j?yWMdrZЬr^=z"ү;_=9>9Yo|[߿u7,_ &y뷾?ɐUat{N5}WW7?b|/ 1RUUuhND4eDL$ `UT5eWdEvU(0w)b3W>'!R[\(q|]/l9Ku]W> }\.%doWUӧ>/yiooo٘Y|>\)udZeѲ[ge~)<n/Zw,_!f7NC [yxZBc]?-#jU{Q1S1c_nn}!#Wl~%!JN)Nӓl+dДsLIDn@|pH0^U{[SMC9I6Md'  IDAT tVS jLjDyG= Z֫ )8{@[E3,ƴfR-,0L^/WWWznZR·mF"fS,G/b&9*5\ $aPb":P *8N\dDն*# 8Tsh7CD@EcNb U| Dbdc/:&/"L@ * c&4hf[ VCEv4K2SB!C#fs11t+ nlZ4$@vgHe% fG4CS4cauU<AuDK6"1#b"ɹZ7!iYp8H~L0"zR0jPm6-2SH."s؁:Ĩ1aBjj0%[z]]°y))X@e: >Xvg_ܬ2gcJR\AcIe92 ;IL&YaRPHev.uRcfs1Φt u||c_8m]|:\ѯ~髯Ew}w[o4˽ IťE"m-gGub|X}_LcQQy9v^-۸,3 +-rd% 3 rp 0g3hz:U5 fI)6M=_LsUg+=[+f>s‡뛛V4٢dɧ}RNդYfum6Wݬڧ} "V=׳Ň?/dtOW8 M@ $RzvyM}ɣO98<#+֊0Պ~hll $M}H5Xz;3+Y-FU|6PUղ힜_\\?;;{u7W똋^[T 'n` 2m7lE癰Cdh!G01ba4{Ŭ__ i=uCN@b&jbCcT67QAݤjqxvZ^ͧU4AA0yU5<6&53Q )~Aw8Q &BϦPMUAR,HjQbvΥ4T 㑀r,%c!RJJ.f-&К"`I2&>Bv<^4HyPU"4Ye;H]@>_svge#?߈]L\fVڢD:O)m}!o13*KKDmP"$w/s+ q˻2*!( HS1 |]#2WYپ9D)s\KDPcT4e4"B'7k1]/BjDHfb9!FUSLȳ'v.09#9lel.y2=UCU9ZG(3#P+Ae H&~\|R80j2t2u-mו*4me^wˏY۶D\mMX?~B6~sn6_]]IRm#ա W+dP1F,Rär%뺪e)""޷]⁨QTEl6 QCUsLc#:cᜲ("qBFZ@;b"ݺz^^Yyӈhݮ1;8: gC&Ӻ[ojiW)%1Wٳy׾^D!lY/B$uo?;ٜ]&~4*)xp*4ӿdz}~vq~ujͽ㯽} gMjRܬЁK\s`dRzvvYΧWۧI5]^_ޯ;}W?{O ~{|?z}#z2٦ x0P2umqXǁM^]Nnu}z|tWbNOV2'dDլTXU!v)?\ӳ 8?8DLbيe'`/6!mͼMtl(g*rܮ|0,Bru%=ܟ.|xx6qJmuY0 IrʮV(J-P=k΀pU@_7pGD2D0 +hbj9ZFKwbn1E&oM?i&M݀y\<~X{kI_W~@\\Lcr]|Krs޽>?>ӛ{Gbxyu7_5U$@꘼UQLZaXY:?zbyI`o{o}ooßww>׿?{YǺԾRn3hLu L Mv{ub%!=L4u{Z}>OON7Muٌ"G3 y_}g}O~ų2XQx8xcFѲ!USDUӋ+{}GM9;v_K~mc^xb-^|Ns⫢cnyvצIb:% yh6bDfINH@-"b/dqY@&jHjr}>."|Q*"{IIDždT[JEq^&G)2D y-{Tsy㈟3E8lڥt_ا#RKi^U=;"rF8i*"hb22@R_ J1IiL9W1#Y5ʈ$smnkXXIUs1ϒFC25 SEA5FhBbZ:wmS<%n1fhHYAԧ6XU5!S3 djy U{y0I]wk|0T΋&Pd4)W"V0 x㍔믿ggMﺮcl6E>99:<<*vŜs!U p}u3NR/.FsK( Olł$ݟ~o~;988(~J)0"hB?9{᧟oj:E"bFlẽs `Kf=g 4*g<  YPULY;Ğ7BS/B+%$I݈=R vd1G''DŽn6r'FXuL ]Wnj>Z⠩3S(&.W7r(7+qq.bG#j)c:xwS%ic@\n. HfE!'%S5[OSSJF'0Z6%"M8fL*-hmDdf jVו!@SEs*hHEr>-4ĜbCoqRUS"ܩ 9:jX68Cj.fPD쐃Kv8!pZMb/RpJe_9KٹqHS+1̺ e2.:lжR˝YU{)y_X1e"%1!1b`P ^LUWAPM@ʻ[h!M4rV#3ŘUd)әs:f/gB+n*b$@A$d" erS&s7 Q/ $mu_#6+Y@2(RLs?j Hi@3[Twih ±GC"g0зzut!u۪&a62sQs΅ZMj{{{>~wuUUjf|6޽stt4뵪,gJ=CrqdF Nw;RTUUpHzf}Y3s9,"z`0j:=K:jET#t|PͪCwGHYu=UzZ-NOW.=hzݐE @Y3֓&@927ˏ>}.WkL2KuhOaMשlqrt|8<ګҰ^\nfMϦӺ!^],{G/.t7P>~O'|pi_T$+T3ǘfӯVbAeð+ec˘l?˹ rّ[g?'|2tz~U]h9Ŕj*E^?|r~ydӽA y*l#oXdNHu4bS5p]B,E"okD{h*8q""@{j\m?"bqq{sG2iI`ՐnrzۧvxxZ}OVf@is|չ ]'H|V)M3kmYn/AvlYsu]դdD$fÑvn&8& zR7^\\ ]N!,[+!{ a[=~ct\JyTp1Dcâsrlg\UG^,Dޅ]HhR H+HU5xT,@hFbAfG#kQƲGܭN)yq4xN*vUJIGWтF1«ҦL4 ae,έ1\x/{!'wZö/MW|;Nф#AvD-&E4*G^qU> TP41O01#\sXN  JVbV3UY׼|v-CD$b&C"O.7 9:("QUOr],W1dGsb D"WM ;MД{.I6W9rfhJxeHRUc$1v ך#@s*D4nMfV2c~rH,!{y ѓ Cǐuh@4L ؅iUUg.Wַ~+.&7󃣣RJЧxyt萈?~^-}]q...~;wcf(~+oVa@4TPos>4cy6aP09+HR!Hݦ%jھ9;窦&ǣ )%FJul6) uCE4UlVW slfL{$6%hYc߷r9iS;~q||P\ <,޻{>i^%PU*CqA"\O{xzr{y٦룟<ǺNԋf3䪪9?͛bbTir䞗m{+ǽ,)ŀ77."Mӈ䫫UJähMwaOξ-ܬ7lj*`j&hF̻%Z 5 aoK b*9q҂th`٣sp mI ZS}"eEsQӤZД$  7޷;GEl:_p_,V7˔b/0(}Nμ#(.Md00˂Qlr]Z4LB|I6P,I9f䘆*TsNEW+, .ED0d9 s S:Ĺ;v (-o%S *&HJ&@e6f%dȮiT MBH)h'ײ,. ū$;+Q(Pˀ,dd))stk~Z(2Yd,'~|8 :xb˝v_{IP#Z!pahsU7J ɱ/Y9x IDATE@U6"]ƄQ,5z+SsĒTPER`M,Iܑ v0)ZtlĀ y'Z3%aHRzWe`]_ݔu U('H";ڈX.3fjYSq)UUO؅j'Bd3Ь3);%NB<$˩$inȈ )*2+_.][%!qLU;9[fBDdVY`@$)yG䙆ݬnr&zԪ ,|t>E5~vU5] G R߶m1 f[v@yu}s5Z6KTJ9 RfRSq)3)Lޅ*P-"*wPK"'r>fdD4m&L૊~6IJ)39L:B.͉D9sRٹByfY*s!pkٕ`,VT%lTI(Q릩0Ι}""i!:<)aDJ cmX 9e\Pޑ#ώy ByQ_[[ohv-|UUѶI ѽcE71wƿ$Ŧ%r譯MAHJ.R姏Y1e]CY8I)k&FYrN{{AP&rD+dDƹJ`.|WfcF@=3gOϗ7n1d2̠m7u]'#5PM !ytIBe+WnIN6l6Ō"JjFb.u ܶ{@+=e%bMU(XؙiI˔k N-j7 j9U+* ͽæHj>Q.UJ h~wN׾?U G}~o<{z?ɟ}zz{뷾{έ?z1LD7-o֎?'<}O':OSWyZ4Y.'޺u,0pRq90 EyV59P#923_WǏfg*⽟aRO9ngHʩ;/NM%ɦ9uѓ?><٫fm.]-;ɻß|jV!U} !1Tc6@4 n89],6[ BT-^tr\Ol8882Y^<ݜ749&UX5 SY7ӣxzIdHiTri1'iu1>-i3[WYM&`bC@lbdH6v&ɤdzurt|uq٧}K i~p}U8|Ko16fٶdl7 mqɋkz]nz! ʮBFrޅf$"fA&xr⢯sx.ff% TF)0Ja8&0Q7$p3{sFDf*$ZA!H+D oh&4iZ -$tUdb+U9GÛ{{YEQ3ٽ}OĬ`e;@eX?:^uO>b{w>7?_j~g/l6ypz%(bJ]ok}|tHRK)'etQ P!uM3˩y|<&EFcϩϡ wfq:=xKC١+"fY|hlӗmokَ& mq %0"5f7c*YBnvpHeܬwܟVL;׳ cȃjuUj+D$W6."ߔ&va$ oJ.޼Zm2#LU*NDl] D(;`Cos GE,`SD`IU}{gm?yfqG?OZ.w{ڶ=wD^]LKl_>կߴOm?_ȿ7wj4{Ql6~{vۛ"CN2cs]!Q{6jӶM4!riBpjuUê)eQsܶQDЇ렺/k֭Rm[c)yۑ7aޮ>|_/?x[gZo$/_]/~qJ:? a ՛{6dAA@[`oͦ'mޔ/ a8???̣8,#yOyE|s'/m"x020lSNo釿gϞ_^_s-4jecGWQNh[)Û9RAq\^}ŬkWrl>bl1oG8F|P1C胨~)Hޱ|dΘm63y7%Ҟ[tfFTT@^Qd;Uc;@т?O骆0l@fLZƣU 6)NNNoz-٫o^߻w`> eϯ/ח˯.ݧΚ6/k>}9999/r!>m" {~=H1Pj'I\t,ctf`ʦ)RUÚ?8 Ξ?6zrrtqy6;﷗WgWr/KҶm9\7XZ,,I ZJ94xDޑVU3)h>w;T#s7`S9c"rK숋)*jQբ%$h3b ( \Á7)ל\>ش@E ! E$ "MZm(l ա/h܅#GޝD࢛-@___9T`80(/VW_oR4esT[30#3ӷPWkBuwlE*kvqXS"!L[f@ qt<-HEzI9lwP4g\'?o~|~w\޹}?~?ٯ?ִdn _fիLG];~Gm_/~gwNݿ/]'o\l6jUM|zr< :y^$eUuMjC"6n1T`!Bt8J!,ッjM)MqD#:b.ݕb9H/~?o}g??g~ss"4i6ٲLQPPBU+S/)TދxLIN2J7-kywx|zW Gg_Qe9'՜fɝO;ƲgeRT@ @_ݐwIxSPdf"&q쯮{p?!xU83hJʓFnFUG8mM;|qOokS&JQEN_7{lih上`RHv_~qkw!?y(&F4~(v~rzRz#4!zV5 h}!V.C~bJؠ@NGӌELh ˪:&9i~u0_x{0GӣUmP z5L; HaJ-^*WmM}ߋS) 3NlORj;NCľV]]u&3WTjHN}V] B9 ՞MU3!UҎX7S\) 54V?J)V:HDkUy">ɺ)/blM[nqS#TpBH"48)c TUǬ(S= Z[j6=8;zńKF3 N4e*)VLyTY"4HfRjwGE@ݲ):M/̅0 ␈2l|uI9Vcvj"m0]ːۿ4<{fS0nMyi׫VD qJ[GB/ռTGpo-6f)7ﭹ~iJs!P, m7'q\ip7zxx514*Wo.Yr ]u_7ūͪ7/ Em..VcfY_?է?Go^Yw<~o/zrX_׈ӧ\]],V 5uG niDRJ1VT'Qs4 BqrRE)TܹcJ%+8~ Tbquq>~}ܯpdf3C )4ARS+ JZr"~mui㼽^].]!{}ųW_|]4.foE[An:Y/8 hgUc C,c@slD(BGCF%'rԹs dGwNӜE px47r9-2"l$c$Z; OM{[5'`Z+yݚZ9Qޕ9UP:Kn_甫oi"X)ձ#",YDP+hD卦`v|pug_/P9Whz;ع"2+綹:dH h?j.e IXq~۟zw߽oU{W~N<(Eр̈#STg5SlYVƤ*{d=jXnG-ا^:S}ٗ/9DGe$;B]ZXTNw0 XѮ˫) xzzw@عֱsu${7viu[ͻ~O`ODo pߩ)?jjlZPũbDSK$#hb0jhIT ؀@ Ԋ@嫣yξO?|}_rZLr]DGw`z{$x{M~}`VhC?Jfʈ HPTaq[Om/fz. p`eLcl;l}57i6orуrlY3ϙ1籔<JX7,,u5|9WR #W3d1, !UCC2bgY9 )RQ)6ћH{.&q!  {0Fdҝ(:r“Uf s{J+"+g&9K;@q%,c,);|UVirC&E;v0 ̅MXo8yIkMؔ཯\rFGd\,ĈP*Gwv:o$tHZ fRT j %\e(g IDAT#l8/ #yZ{OŨm"E \1ZTrz?& +E)QU(Ae{Dw!O~z~gc.=),.@-YAq%b"(`eL9%& S TyԪJ#Fov,5FMoR:xv{ d/@jςiTD)9!D؅郘5^dcʆftq>]7BiEif@#]\O(nzޝM>v鳳?ѿp1j?_j'""V[CzsuɀqhCP&fbvdn34pcCX -,xx- gv[R&֓+"T LM80 "c-o3D;8:쳏__.bd8t\^fUTFcj PAp-QmFOYW YdXGGG#_Vkoʸt!,Y۶!85a\o<;:ZE3f;oޟfU6;G<}zrtmr2q}6j;@Ԫ +Ӊ~W5UT@EpH8<:Y f oqH>eדjZ!=7ͳY^HP8AR}U)h& HLflͤ7e Ip5?yZ:'.矿xM?z^$00;wN5`lqY Eo)vIB6T##$s@P@8`D@=Cje~3\:1acfɴdbJĆl@HB2 }眉iB7k4LZ[o:=}E~;pM'J2E*Lig_Y9+䯎{W׊ I븫kd21o K( )?gD$H@ 5vb|A0la_ἪJwg@"">*q'.l>p]o:.>@UMK+W ur1F0|`90EijتPkV"8@1,)Cg2!xB`5biVۼ(R.L.qt9=8-1 Pa3*0bH kY5AJq|o|xL??]O?̹oF`rHHl0 >}pJIٷn}r{6xVQ^e:ޕVoDNj"554Dfb\4r)0&1Q5`vmY;?hf}o~i{U== uqz mcH1|ADfnn>tM7ctq~R)M/~\__"oV_8{}ˇ=yR4 HKZ{ѓǏc]JlbXFHʎ|p*Ktc{1h) AT^>r55!"&C(*V̓I iHєKlZ0DrtYo (>kq fGlfð-iUDETX  0ZE,`{K>PN;*CϻfsvSIĄZɚ5RʬyѼyo1mْAbgf4 y dȂd@ Jx4NwT{$V8j94 fu01'@p̥qnooo鿫ƺ9ަ]Nt.mn7T@CZ9sT.h1x thхD53A@E6d"| Ca`^!4M0x?go~?~7>~fXzu6ƆA-6z?@!F&-2%(Tf]ΡZ=ipka00Il6J.y݊Y6f`;%[}Qa0ιOD<!NU 3D5+ " ztLH"X<hF@v*.W{ **Z^I@R1ODs*) bMޱ|lbq_k;< d*M]$ _oUoos.:1Xfu1URWQ%Dܬ;B!;vS:b1F0G:t1|41xw e@<;fj) z_rSV\˺$ްl w]*s~q|]4%snք& Z.yvݬs`pC+&) \{b%!0#(9% T)윈)51g> ڶRh-ZaUQ{0nחv&J(HSXN`SH7]rM,3|R99FB!: cJ'G9ݓ}q둭4XTA)bl,f XqR::fYn *Q}OnFpܵ ,Ep,唪SzI7-ڷ;{Ge@JgMWfV@sdl 4E&0i.W*` FTk0շla; MqͶe`VM5!8&&D9͛EʻMYmdYa7~F":~)`ʨβS1%z2o,6b;-tu`6bΑ!i$OE$M6jFkzmc:.ty/Avғ`u\r.o@Pw wJ);3Q} 4MDBB3Ii-5_{c Rr)8ϩ+*YBl3J.9"bv~ "cddt sCuMӘM&!W|=vS4ܯN=[j_ַ~8Ը{ 1QB|4m8v~yc4M߻RUW`:{SEFff.&(P)EfˮŻkG2s3& j"fьMHn,bɓm7cEJ?1i*:?8:=??8r^c*Ml"JreF#P?PJɥ";4 dL;m?Ȕ@Dɢo^wW}]׾z$61ƸX,j@M,Ƙs]Gq,=\^bbR$C[5vKa>XNIUcdNNO8pL l>WB.R8OY׶ݘ3w݌4uS*λD輻\^iVuqC`в\^2'G]M)kQe24s0d; ͏CV@.4 ~@Ţ].Sܻ{SY&!F .q=L/.!r3Aڸ\zJ?'i7Wcã!r6]~]L}mݓ\wLWtY5DTt)( bA~}/j[ \*߱Ά;ﴻ̔`ǚ erM(SHȋYXt1\ܻsrf7C"ߠMʛՊ6) 콨 } Ւf3mp޽r]JJZu0·vs.(ԢA<9b[wL鼉\N7/pZZƭo|z$;8azvm\GS^ c 3wCrvpȼs!:unGf"8Nx05@}@=ٟ^jk9ȡhI9 }i>D6E:3Sfv sфR:AD<yۉ4\\js&"D96m7q(!0"@qE ЬxuWPJ=%l9xWRεM|ݬm &9G M!$E\Ք97wW4iµwUy nU$DԊYa4u.8G<1yMs\].gW/Ϯ:7x3@#$":b>-  `Z<9jìמhv)|R:_]*i"9S`9|jH64Zֺu íqsS 357\j*۪Ùx71C\3bz{rߡ[AVi%͗;穢 &O"8e0|v|}J9̓YPrf΀'D!Ub]qj) `J%4u4ca_uY3 /L1㘰5ҘsR@VNMWS8ߺިoP'c]&n*>3Sm/W/ZdqzP 6j]^\߶Z@Rt]QUb-JZ0ڥi2NoD}$bYaOk5a? {Vb&xzO?ӃEu[O?xk[E}߿zJUE)eGfYf؅2XÈ UAjxŘE{sT)1 ȓY,)&vM1SUdW@ 1gUp8J28n]Ci̢?ZYM 6e]89"6 i//7~ӯClR?(w@CɩH˸63uH`:_il9k9<d)! 18rwۭ@bXVgۓp]"8ȱfmxvN-_S֭A-.Ep7 ohu3 0xxwkýk_~Mg3)( ;LPX&L<77cơz |[>oi%|V4$Mru)7W]HŬizisq fQ rG3"q("dOLr{pzpҤҟ__^>~[w/^4z~hNY3 MӴǦ)Zk,"hVHuDM:`nMu/RSJĹ:j.\hy9T5f"ܱgU 10gQZuK玃)4T!"ú?;_c04'Q$!6\T-g" M@+bna!lחW&}<>5YЖ>) 9\1ս9dpHLhYrXĪ[$3sfBjümgЊE$ɥ|VDLDVJ{3 Wa=v)M%ZidjRxC7\ɧUN/ŝl\/cA(WbP݂C8inS9o}[).nB $x:h(h)(R21(8n 4"P`HBdI8z) Rڸw85i'x]( ޙ;kfwDE1X0TʁL \q;3. @NeRιcDDKr쑐ZfAQQq$#kV-HE v FPبFIF9)B͞$K󾳸]b˭`H)D>M[/zd2mHk%rуʮiiaeQYQUwq=G7^]<}@ľ+óO6MS94y>2j{U$ͺ]?^Іcnf9fk.<[]*\ \b DwMT]יֱ‚t @rXq8Zm6 d<瘒oiDC: _bscEx>fޭZZ$ϫ۩FX[; UkhVn)6!|6|OO? #Br{,f~n IDATךG"ףOQD>oSj;Nm<34 m`8;4g3r.1Yںi|d<Y1Cp2TDVWbZ%%ϛ&&gZA@),q 8T%FV{ ?s+ųxr[r9Bsdu<}{nCQU9_fST9=>qs_d??~"cyjjI)U.K) E !ǖ=!b$oR-o AsŧUӓh:R)O1OxK=3:FK)j@'!%a^k~ hϟ^:Q}{԰ bZu;"BhE=3&fE@D=bVx8t]'"1N"P:eFl~Y |R AE,g}`~F]:ZX#}Ts@Uw㧇icn`LTTO=>"-)'<'%3wu쉵kOÐsl/v˶RҔ5F)b{ G!V'=-D~:DUp Ρ.+yVaU#L4( FM.,2pUAsyff'6R?A9K\?Oo M8koT[X,;3A *~Χ|tj}hЊ2cOƘ.o41I.o? wNfjDd*,OT(ahٸM{wwۇoȻz foT3Iypx"B4MӰ _f,h~8 cc"y\7 I?~ 8z9S0O΁r51IHqm߷ji6u7gK) ?}8SޱZ>jZƵlxHScWnׇ CSg1{zu{Psꫯ޿&Bxu!otl?>Q95߾zv?2/Uu@cu=,L[t:EjU/Sp˦K }^?р++s`p ;""1fj,sAjU)%sxJr[p 1ۼs:V{ylo0q?i/'Ȝ(2H6$d#d-S](zXbq84{vq5 Cv=6]B00s h&Uh}*4I*%Q-~3u_O] /PVՃ6\aη?\,'٬=1jJZD9 $j ".̤20ZaO=Hj#£jjiudzRV]W<<_<{yqZJViy"ݴP65aPTR* `5TTȇrÒTajb3*Ѕ~{wZDjӛIݡ8rH!8 i rⅧs.,>EĔጷH\w}J;瘱I)R^DJwca9{n]@Ѥs V2ӳQT DX ?`3Q`l'^ 4k]X]]] EH-"W/^<8cE!ւKi#r p{lfDJst 8gB'a ,|'ǴgJǨd))׏|+… C DdY2A1"<$fFK! q׀#Östwm0NSS*SsX4a Zi14//fE}x/FlYuæ+KI&A`BXZD fr͍ ͜5ţox~ۏo߼?춽@wq՜6f4<_SiA@ 3HeT@XB qQePgFg .Reb5+9[5jV07y*nX.IWm |??fߚ!{JbdXj,߱2J)er]ܚ cϛݛϟyzqWѤ1ً&Dr"!,)I%1BCLJBMYsI,,+gܘkt3KWTb',+ԲB###c$vT_ḯ_Nt!U'տ׬,_D3Yy>v9Ԯǡ RE=퇷pv;.^75kOna]u5cOCJu׭ӆECݔVعIx1fWiz1Zm߅H9j1]Vl"R˞+cu>`96QM)=,Ji1sLjfj)qx!zlSI1u‡Rb=A|*|F,#2:jDu4mi+HkDZ[εY FPMfwfTE$_=>kOvGSR{>ZӜO@륍 kh.Er))#Dl888Kn~݄3r (Z!D 0`-@dj1j]}iZ,8./.`i_ٺsƇ` HET盨N׿'b);jcf߾j3ճ_]K 'w|9FM]H2K I.C?UP}Cח D"fG3'HVvۯ_ſ~-4Ms*YX̻ yllEHQg뙦Zy̋wyMnԄdNE2ISYއiͶT,^oj^&A<<=\Vʰ[wnp0OiC4}ia߼@q<2q2N8 <m[QsyC5ZEx.|v..p%\J)TA*Iu}^ iTj.EU6CQsJ%c`r(fPU-$R]bp` pU4jќK}R΅(T Ռ=;kP$i|ū`6p:Ęd+ɲۧyGU14'*hճ3)H͈X?$@Us,22|λp}}RqݩZ%\rRJygA1K6ɪjt! Qա,7KQ91BwTccB٦$9`;`*b+?]9pDE 2`V0i 4^Sq_vCoNn~-j5:fH1@Z!E12`m"Ap6 (FBbrZT 1}c ԓ #º)sB{6@~L@m=z|axxc;߯Z\*>a&3 ^lDd}ūWwww!pxsNqڼ~8OW7mDcX+zm60{#NβU`ñm&ȧ9Vc{k1Ƣ`R)pf"1s.4n7@ ĎPFXARB9OUEZQ2rs>i/ipaR{ͺqGmC"U)%<h)E`C9㜓<mZgr9|~ޭWWΧy|jֽys7y! +E]lP想d8c:PV:d4xkk([We4kxVj?]_y9[:nKyǗEaQ1$db"4Gy4]/v߼yuvw$V`*);2ۋnLSQvZ_d հQAAwvF8Eͯ=HQa+Bً/?߱k/vخV]tMbAeaz3W_n?~"^^o7\%φ{8g`38M mׄR(8:O-8M;q/U Z VTAR9гd \ Rjd fU7&Bv9:*9Z]/saςB]nAɃ^ Me2E1&lw91'5}Nc>miI˯Io/b__~؇RĜ&l@݅sND4rG"*1fyi'?{С{,jpS:87M|>ŋ1sJQX&t\%f>tS Pc0.)%O]yTQm6gOuvT{qwY-Xx*_s%K4֘|Vׂ4EșodQ\mnrM0MtUձﺮW}:Q9nZqڨ< D5;:WbHF 16@v~ӵuZ88Oi9iqq񰟧19(,tZĮ;;eKGeXu)Rc i]K+Ψ6D2OUwqN)gCmNSzI~_lͧ~۸?m0i*'%y^ yW^zr~FBFCZ5> o7ƻ{4+)0쏇 0&FJ.Mbc5cGmۄiB#_fڮ?}ݧ-ڔ)OY?;b'vT$+ (ȌHN%ׄ)>qg*o]sN>}zx#2~$EE|Pa )۔c~D;Rg޾y "_UQI~{,W/o_=4 # z3#@tHMY39.>Tl-uK8zQa''U]deMoxn*]C]ܑ"XťWi{$0:Nxw?jrPN{cnO'өkp ZfYum a7`>g)-[粃Q;4]\febQ' 44%cѪbuݯ3I8F͡*.3;DT5's 7jjðs\ h̩M 95mpJ0qV ]h<{F!Cٻ {n8~ Hm1yHqFε[wm/ M1Scumk0 cp*J_M`}oz|L%&ԤX!&Q$6TJ\rJH;PXeD8yTdt5taunV*BaR6tLw <__77<_Φ|wC4%(qpuiY!;V7YF{ticHef,u]wrQ n]xi#pQ< J~D[Ƅd ĎW\ R.ql1;EY24BzٺEuٱE44s5Q'LjXۂ 5;duhPa}II9Hi8?%JחHJ@So sުvJm? >:Ϊg )CvZpq>~pD,۟r<ͷ~78 [BVrV&t%M c$kV(hd1ŀf,ECp&7>i8mUKR4+@v_;9D !!qv>tX1Ee@byRĊ*;p+4b}kw)vhpl=d_%q'0b `6VݙDErf_ZJ΅f""_[uӺ0 $S)?__71>|_櫷??6CVԌN\"0™ jjM\0ZS);UZ: Pώ:cBu >~[ S b 5H A44 0,%v21[]ެfrn>>b{tӠ鉚]ѳalVݦC4ƴxF-2KR.i&UKqݻ _ܠ8F5+5> IDAT@F d0#e Ev~͋skWK?)Ņ@|n79qUyZ2S-*.gûEW qѷHe)R#"&3'挚(3xXD~2*fRgӓiOՓ_|As#g{KIQO-,E=*-FF-}xJ ifp O/^0xcju׶  nfrp߽y5`J!~xxr<*Xuft?Ӝa1nW}60 zݯеܧDh$"ayƔ35~2J*(t( ‚RUj˪&!QUzuSQ l:$@rVm)$P⶘c)Px|ђP*Y-<Rd~Zjl xjM8b9WE 9&ӞW娈!ƔhZ5D΅:u)8ê]>}W(/j^A~q+'O|Ն[``KLA?40~7y{s/f!Ѣ*;˗/m5]|628jW3{ ΓBqʈ^)#B+"9&PcFCӇ ޳"$j~ܬ1v>V@ `Q3$L%=5 1- 5DĀ*6e.O߿?MՓ4)Z֫qzzHjZ8皶E)8=?xt:("fN4w$SB`RAJ& T}6*'7xgh:﹗*xo$uxmbЦG >92q|r'1'?RQUϝb?$TGa`dWgJ>guHE`|_M<iψnCͩHrMW6瀥SMt%v]x>:9v}c Gv^f>B=0o:3eMRiԈΗ Ɖ,|4Wr ._Z[t{{`Ŵ l3SbK UD *)~?龀=ɏ_qvm2_,3S$@l7i.uSډĒ5!8櫟u}p}5MERΒR>{fVGnnb"rϞ=|{KB:T: YahoJŵ:]uZ#D\p \]ǵ!mƒ6ЮmZ R}t5bjX0!mߒ4GA@bt$a[cG9wM _g}q'U%Eժ19״E M</~ n)84k{6ijz1&S~8ӿWZ{w;RJLVi,1*yN?0cv'귪fd3g~rbQʋêeB͖C6#lW勰z~w}{{7ڧc6uj{^o޽RUT۶놻aiQsa<<ծod>8mf{c̊09ç/n~4OiJ*%v/nv0Sejnڬ8BLxi.c3AV40 9NVDr]b Ib9TBqWYACBG@M$H^]񡊝&b9E"P\IzT>Khz걆"P{M@Mq#$ Ӕ<MQՆaPdW1r i!,ЪJ%#G^DdB`XT5* t攊TǦ{% !&qK)-Ds.e)KY@DӔTճs4մ#qwmZ*}Lؘ9kŊ}bj=)%CB)%' S@8m )ih7͜S,C+ ^ AňE3b۶-?0S284I+G?j;;_&<=xp<`!FR*?6X,iU⪅T A&!Rapړw3`= TPP:QƜs^!aր<3Si xYH󸖪㧧&s}s@E/ӿլUAg0E%%p9v>vk<ͱW/%p&tsƜ^_Qh@wܭֳOent?0;445IaZR) hf554 .A"C 0Lx]\mp4qSsfTv-*RJ2 T{2!Z]d/,IREƘ*g!8DtT%MF]]1f{nq..uw:*(0 Ѻ_y9 N݇9χalNHIEۋ+J %9G\vsu܄v +wn]qL>(1 SEyO $; |dG!q+c_(>yn_; *~Ӫ=΃V7Vx ?M~pf)Q۝i.oJNӛ WW-(??忺4bDԄnZI6X񰿻oAx (;-KzMtZvMqJZdikz=ȧ흊t]nj<7Mc=ycS?so#YogC5tu7DJk}@l6r7-gFdueSdpXxD=vSX1f,e(RITRN 1A1 Er2E)YRJ9KED̪=Q**"BmI|W@,#R*\[!AKTRɭkBcN)L+Z z"bmMc#H9olYHLB5mzg-Q!1{g(vmq Z4-b~j뛾ngp׮>x rJ؅f1r umMXv~m *̙K.˂% |:ƚ>MȒj ֬ JYkY)bɠ*$-I2*Pa"M޵h1oR91e&4՞__5Db;g*&a FTΚB '~, RIYAR1ECSDg"Ȋg,>Ejff=ƣeYh.Wl5~7o߾P>oHI؅X~ָI.p"01?Ҿ% w?۔S^@r.8[4ZRTP`{_^^v dobow7|bXuhaw)g0ƹyL/?6/0le M(+sHX c)JRPZf^'SrFQOJɈ٫Oc1.E oB)KLg"[D;vEgSIK%WwBi/ ՓY ɤHzAR$E!9u4bs9x틗ϚMӔRSBt$j#!9g߹C܏ oi7]]P,Rw܆*CDLBD>gӍkϾ_ſ򷿓e/_7xs/#ܯ Q=O\ yz'UݻO 7Cr>hwщx߼KfQ]mԹ:%*jq\~_<k;oITm3#֛fؘsqճ!cɱ4;9aha۫o=??kփV 꺔[:kHAۡ_jx}eY\]]}_Q,yJ<(!ƠaяRk7 ^1^UpY sF6bV tm?dpOc"Szm`Udmc!.*JVQɒJZ @h)%圳Ē@QբRT$1cLAR@ KlQU*U *E9ٞdZs, h; +%\+m}8\%%(@RJA2Q[ѱ-%X(;fbD(q^q)%, fFm{׷Cia[`{tr kKN4nnkpm1f} iɪ~8ENԈ,k\ߴu<ӼsfQRJQ+㩔@GʷTCl*ƢV5>Yׇjy 2 )yVAbjYVaUL,T;i?5i`C% - u,yv%ϿzsQ (9_IJ99ݸ/{DVA&ϱLzL!,7wœՊ4ƐU?#"Tƿ%ug}EsJX@-1|jIK5ۗ"t1]04M^_ykϞ\jn7~WṶ1".حrog-%b@X߹-{oIE31h̥"wӏLBlrYW/\V~Oz͛9r0o@.DbE }ӯ__s]>G[Đ1iT8l]Y[>/Փы͟~bktwe # yt3\-x?h>$(<4ޟU1S1JU;F`}zgAJZDD  `J SpdӧO/_]xo&ew{s>Q/֯>y9[y:4x1Ƿ_mV_TTK^@Tobٺia M,R/ƽuUnGD.n{W_tU*9Г yRc2>e, X,CPr)E޷ RCN%H-#""Ѵpa!@AXвHD`S`Oѐ`Yr vw/u:`1F ,RvrTU""D%(0h*4N Ȓ=ŋ,vTǴ0Nѭ@Ψ2G/^"n ai<LYe,)@i3W(bRFђDQBcm۾mc @h.D H='&7IJ) YR !7MjvM?/z=,"wۃq="K)dG}t9C?0X$P UJm.a ,%ڰ,\ $}uqV5h>cY3f=W&777#նm6ԐeKe#es*.~ H Gv|(D0ӿg=:LMyZ9q~kIn=PC׏]`S] +ު${ M7u2y/_M%0oUp}~v0-s,œ86NsX3٦dտ?|Nśnsyw nu ZA h]U0]zgJ}9SVKyH= =+ IDATDl!F,9<1 B[*5s8K)%ODke_; #L+ 4s佱J$>쏝p^_Mp;,;-x~~>M68ٳgY33aJRA@`b)eR+qa}~V ܫj:n+Hٶ[kɺv[D8hv[ #9’SׯJчnoj5Kzge"R(ްhu!8nw!ڹ2֥@㌈mc\j;"̌}e8%L4ɲ{k,pf96$sF=i?RJ Я6QOzan ԮQ&C M˒S:xEMN#Pf6VvY),UsRmmchZ0`m]c;g8Mڴ}cfO~\R/W~r\RyK!mA%ƘCôB;RmeB,Zc KRJbCWuͲ,91Z*3}߾tjYD0ƄiW]Osj|ckWӸeAes>6[F2|uFUkQl)JDA7ժSWo߾.Q\J89, mgo޼YmV;wx]н?F5iL֠hȉ] |YSTKPTA)nnje^}@ ]7rqNC,ڷkDžoiM!8VsⵞvjAfE(OKԵugO ׯc[Fzr ^+v(x`孢@6"r8K,ֹ:0g9Y*t~R d,9Y$$]ל6$"auk*g'|*_ ?_<}j3R27C֝] j-D14zs{Ƕ"u 5[ %BL@I;߸[n"(.arn۶PmeZ8Q甍w{kl*19S~1%lZK\֘ij`*HH'kcLZӸ;hz{5dCJW2C7\82Gߨ*z\$v[#y RqPRső*UA6F%P{Nʼy;nI)Y/cߪ&ӱ𻆐P%tXHUwY]XE (!XBZ_ h)DU%b:,@D6mۺ»xƃ(ާsWH(@H$Y%&HL(8-7bsJ !^9n%'ȅA[k,ⳋq_կз޲ZocYq{w8UUo ԘR9\8Js JF07`嚒a`F& @$\b:gs 6yYDZߠr1M3 "Au%1H.nOt<d&J %)A,h 3>MRڶ'Ϻ%k۬_!6A "'1mm HC['TaGBqJ AҴRk12Z!깔DEi{$~W- m{7}?FP:Nfy3> lϿ~nJXXH/$x=dgJ)d")ES<RL:BĘC*Q Jwβyg~9 ,ZfL K@1M̜SFD&"ȼLi4oCR-T/9alf!-s8em3llSu+""}305vYd%EB^bU=eIzԐak^gY)eIq?L!ȐWi׵Κ4~.oon/.O~]>ym_QV{=^wo^~fs65dUXV?ɏޟɛ/~׿'>l}4/>t?j= 갊01֘Z@|؆"߃8| ,@Ro1cCUPI%ƔSvΙfx{ (q|siW+{}t;g@$O gR*"w\iQrqS޹ƗRed9u]GBlyfc\ff=k LSk|,5~oﶂ$yYиD1s(9l n@TEQ@䔲lu85&`&!uhowh,1&@do# MA,yvtQh| )ŀY5q./)MK:c6ka*:ꚾmB4k[$YJeTVIT kwXBR,U$8$ ȈB:2Κs IsVky3l>y۽7lXiUDFr<JfMi<2zUCvLٓ:[ }toxg[,v{wsw;K$<jaBRbQf*"l #̆ ǵI;G@L]㬷uiլ`k6볔!5o6fc j53)E9lHT2H0vmYr),y_;cj= yD<ĜBPvu1l._- ԯ^} v"Λp%?&Q夜r2Jak1#jI꼕ÖT T->TZ6(]ǡu6 [BՇ[A`!U_5| ^C2|U~ջu6 ߫^N{.C*#` q"!PBD 2E `۳aw|j6<)jӼ>\\?gBn7f< l#+([Օ&v1d*x}Ѵ-pJ͹R\t~oeϿv}f~?~su<Cӂfsu}m[f 'R9o$,*41o]TR2!*3|;nOIT 9Wa*)XrrPUm#LnA"0q\sH @>(Ze&4/9k[kQ&A\b`),gZI4]86Ƙ59G Rg!$ iӯkڮopibι`1!gJ*PzVF@6LdTEXAMA@+]Zc Ul{;0O/]>a0O?kXRZT6 j:;_$UG߇(ʪ_2(* 2PMr9$:If;$UJ!3Lu}CAS\x~7:S>QQ |NL~_>>"z(PZKVƐ7ZDac!g"%.)2^ݭ?8[ }|<;z1n(XE~ǣs[6TPσ (tqAUTIE hꛮ E8kU$2Ȫ맰dan< 2(s\RHQcxPνew1.vpYSBU+2P4U "f,y 9=3 g/Ϳ 0<}xw}a㚦aW_/QPq,uO?? +q~>{aժJH!fKٛl!T mxWmby QHH9ElUE̩j) Z}jFbF\PѰ a@c=,!֖Rr,iZ...^>lm>6//x=_ϟ>#ѫ_M#ggoy_^^UR 1-Urq%ciHG `,hxXkk0۷7),p:g\uh) D%ĒE@Jb N[w7N  77u>W~G+= *N߭[3\~(2XBwiXMK.26*@Jln_m/^5<.%-16$m|g 10x8V0 e5LAO*+Z H.Ld"Es"lQ,eccWyqye6&h  ^<93 %\ +*2 @'-gRyaƘ{sm?a?a藜>~,6Maq:XOyz~-X&UVȴMkk`˒˟%~eYgw0_+nyu7~uR}9FDL:4XleVIkZPgRc%"lZ,o[ʐ/+/^}a D%iзW7Ƙe áiv58 hq}~֯<zSLǃNaiw,0_g_>|߼7w1QloT(ӈP`5Vc>962I],Vc}gA m Tc}䜴UFԞATRlkUrfӵ}^^vM9,O=Pj>8kR&n nScU^5McJ–cȸˋxgrLMLSqc y9%cf}^T@׹1콱_~&<϶ii UP *PSH u,>vI*[!)Zmc!DF!jD/1%#J9*2Pc;O_>y{wwSRr u;]n{jy k-9x;lcwl4eFBl}Rm]r "G-|XI !I4})%QE@k1Dx9,5MÀ).qjڡ_lyX1H^?>9|8V+c>{u89[C$Ybp /VcKE_OwR\"/;G?/:XTf}>ARa p1JhDNEѱiC_45(}Ka ,!1*?*#A[B%BQ XKr)*R07deُۻ휲"e)7-R3GqRfV\J~'ُw)|8NAíxDd4H]xoYSR*s޵DC%&gA@Guɻg9=NT} ]أ[㺳CDr,ATJE<O1uĄ\|?|/?{!eY@O;*&_X@O*]3OL ZE q9C7Y$M/Ǜ(' y臏~<>~uVbXdNO^|o>?ُ~_}'f R蓏?&6mWWocəץbU4C̎ f!,$Abh5=n6+ua{"22\gfdĭO?~0̙v]V1%`D%dR:P׳ȹĠݰM<$$ &wjn7BʣッE5ϏNf%̗Y,!nzVϵ.*Q;/X&\Qg܅Q8!BÃeU~`m]ѡr)pa2y~%bR|^#R ٬ tݼGEc'y0S5jR|́ Ӥ!7!!CΐZ 3@KI &P] 8coL=? n;w !&d1M5%Fp7E)Dz,CȤPqƐkwb!H  1K .`~ )z[ }R>)?tM%J.8`8! ƌ2YˡZJi\#P,K3ˋmmBg3π+@|AmD B@npI vxoWr.L}J.rBLш5 >f D r1KI& 9$C_F @mY6\ %ZJW1ZRwcӻV3,b.qjuA:HY7%ϗ'NuI U!{GقU=źez6x_v?yQfE^@MimC]\2()EUVyQh9yZ+12+]y&$GLގ}ezڢPG炵~z]<N)⃓2YoeyQ`V=89>\. )GezJ)ϲ`N+UdE5] ƫ(<猭yBmSRp6tebÃaߛܛϏÃ}O?ֹ`".ҹ>O,als-UU=O~UV )PbYfd5ۺ0B@DΕ9cJƦ`B1@ꆞ Jzo;O eMϤ\-#)1%_??}kS\m  )y\19r8g\ R&uCC>8뽋I"C~r&ӷ6F9O &WaF7JtRЧ]w>OZיP"On_;y J?+o|w~!Xk"&L=??ΏwHA*Tሮ=&5yb T|EqvM mjLdկyDhiv܃Bd ;\yuzrz)/>{|N z K9_\._x.׳("1F2ErQiP G7E !HpYWJǠ SZ CD:dHy2,EdFG'r6DĢ-ko UeW>9 (q #}J@Ya(Զ{&+dFƅ3.i;y^uGo%N2N(\-K5nv148<6ȓ$&pNַʳWktm)r气bQZ%vH~{N7o6ͿLӛx?[83};᭖"tiHLv8v(:|A$gR"Y, Ȥ*Sn,vGkcy88_oA 2%Ǘjadv@)t1ϳBe(Z7^mqRRp5 2!Xn2%~s]G 7rbsۀ ۶>ee\#^d|z9VŽ2/$ERb*kwP X.mLvme8.L)%Hq R֥eV;<ڮwa΋a=a;jsƙB2' K1*%ׂaPHɴ#~8 =uA0f)X;<ۯ\ޅ˫L@'πs'.L>a)E6h@cG7շk0$`i8q*e݂&ҷ5s:}Oi][v oprPim;)x|#:7[}p5}Add=Fmu!Vp~QuS%~'٬Lk?hG!E8I/!QyRJ(̲,4rBF+-WW*/(`eY& #"8?u6@C1t)Q)ώV\i@,LZ%myՅZz+<7ٓ'_W"DSSB&D1^Ϊ,aufͮ0Y|ReD'6bnLeTf:[ζ\D`Sw_0f"n[m sJSRC ƹwt`~{ceFq9dmj 7#k!5y  qׁu@,!Te#J 1 O4L3&&y,Mg@*Fe,\}@>C0&JuH ǘ{xnh%q2+l>g{e?,F`[1h-CH!D!ɪE{禮 b2ݐgR_fL4,w=:SbRFpVV}7$qDͣ+81 b-y1R#dbY9sDߜ_<# y$4r且:7 )2)Tu^H8cyV9/6>?W?TK_ows *SBi#DZk!\2.`)&3(eUH)))6ZKCEJL 2%vFCo>QRR(V*18^*S*Z)# "BUEI)&}J$;MMo/}}LyQWe k!fyKnLhF$1QvΎ;$+aJ)S@ֹ߷nZT\<$TRy^L"KΓp^GC-x`!B0~踘HHSEg(:Lrc8Ҳc1];cк ^Cm) !5Ã֜3wg,QB)ED{d6+!\)iAl5֎N`j)&^~r=ߦӼ?QB.EVwڜ8  gV$ˢ;o7-654''#tzѲc3oA=]>%e5G~mu)ĔlJ">X3fU7 c,l",=}tt^ ;/b9v~BN ZK 'XrJD;l A!TRi̓A{.3ѽs#Jŋ]>>Ae.c귿/?3mf${yuW2efQ~YR6*Zkf:N Z,1C1ys! z}\f'R6N\0)_A8Ov@0@yfDh+.u/8YM(mH-mɾ noKwtTtxxۻ HQ׍N#r% 9]$`,1Jk!JfSפis^lXz>npM(\JJ]~tܔ0$E2"_?_DfGe&1\\SWIPLnlC3%! $%AEct }eIͶ'$fL(g!B?Qf۵ jLu,Ym E k]3U &-rG8oיMqcQ11|V9XVGB+xҌDC9&Bp\od_ڦAMary}g+up0z&reʪF\"<'Ќ)W1Vq"qkw]ݾQ3RpYi Ag<ϕR1R4f?){pYo&XRJR DȄnPs!< GdY^RjztkMaȈ3ɻ0%QHݾ헇+&KS2ϟ^Y*z4XێFG 5GBvL)ۆs.sn !X?_DUU$>mjkgO>yً/G?nv׮wmxyh*Dd8 0y4͔5"E.EX!)ؚM #*ma.7Ę];՚oxlM5^Rb{=J"rc!b򄑥0}l4?v}$tJQ b ](`"2,yvl8Ddɓ 4z(Vc#7OƄ2,v^ף}bSFoe&@!0λд(zUe~oq!!%eJvދDE(b)atnnHm Z퐚!5)Qt r% G!)! L+Ac!!$Ƅ>u)s%`2;U].U\l(%O>R$#0ZC~ի/n6WxÅ9tnǸmח1༔2׹^0.#\J18:=Zf3bضv9j^ov]>,˲"GjJ>dR}\!?<qb8z꜒H@}cwɥ2Tk1$dq*Ѷd1>z)^sS1ƪ.͋,rvBi2S EQyKnZ##%0#EƠO= 0Rz嶬bJr.bdBb,f"/Uu}]*bofCC}B͙N@HHr+ Ɍl}֋v%r:~i$PsMHg/f䓏>}$XZ_\]C\qL+BJ !Xk 0N.3)SX>117o Z) & Tx|k6qgbj! ,>?;;s}Ocwc GQ˫8AU;eYFn{϶Wgggxu[=cd>gS fĘi"" Q"WB !2` lx%\o7CMQ4ًj)Eu_A)1"*0vx6_|MdlEȪGgF}﮶{]v~bJ BC+`J~ʺR67~uBͨH1&8K w>LqR|;ژ*fI!>ͪui&[K7K絛X:K$oloﵷ?tczzk6q1Re$3!3DB 1]OP$*g<>G y1+2&Ҵn4,B|IJ7MaRJm7v-J$خOdEaȬ@gY}II*Fj ܅tCo{asu߷Mg"`a' W IDAT0]caL6.f, SIðCM!F.:`cĥ4U]뀋bHJ#)"A4yR^,)!wDa"DwTeLcV[e&@qd)dbo)!1J^k=!~|6=vZ!٫qcZju|rormy!LEUu- !tCvvSL:XE6EQ̊CJ9W1t81.DH~t[,YnN,S@u1$Ĭc!4MsqqnO?wg%SJ~؁b7lX%cXWѽy^n`G$ \ř ǡ Z|qX$1CReMH"1.L(ގ3Yea*dy::1ضlvdy=_6H'@bye+diy/20XdVN4va q 6n)o$noYz罟_SJL 'w]AGr?/+c/;]b NeQ0\}nJM6 7ﴐƨ<YU':ӕ&0e~|V!Y@pTC `ǡm ]|'H0~\mч _~f9>>J!r)ѧȐ)-@d\LsLNXӣHq~0J޻n1!dtMr߾ZJ;nt)E'wy4&zpz_fL(WO:)w Tm۲,}b(]bz<;ZϪk;Ţ::/?2(%f:U51M*mJ5o#LwuN(s].47E O c58j _s9{w=ڞoJߢe&4>)q`RJ$r6Ӝ Β$j2 QCP ڨSV1%mݵLi79c^8D!]_eE߶%cZhRͳǟ~ɇ="2.RsaL@!Z78 XJIEPJ0c:[_vvM1ij1O)䢲Q$p2-2(Z2c?mk7au!>8Y,L *1"0Wţz΁Y9bRֻM)C;*B`HO.w_?ZO?\s(r0ɻsnt6YO0ؘQFEQ ~pޫ2O6]syy,Nղ.LSJuZ?~߭@KUEeEV@+˙`rx}l”yF n/>9?X  @^r1S̫20zϴV]׍"ˁD#˕By]A Bڷ6y=GΈ8WSLȈsTgVZNg1.:j}+sH*I&"*ENOė///8Rfy]ynD4\59Nl6Y$)E7TKy8R 2a`Di"q `~\+!OuܗpB7W>9õ yH)s`^+DcnU׳yPF;|V&{eU>8|^Kq5o~;::'vypzdBOJ1MpMe=ύh\dƹ+Rj͔J0FҟWO~[ 2:}AizDʪ}b 'aXzowM`Jۄ>a"&{WN:RRJ&Y"T!H92f ?hEAFpU͘Q.z`$@!W߈$ntXUUU/r]F# ^E H'O<^fM?? ]_̵O,1DY!EL aq]WBi`tqQgFk8#(<^6;.Ȅ7RUF)9?XIarsŋϔƘ6M~vy~aVY1Y10 g߼XEߏ)ͦy?EĦiR ,Y>}۶]IS !%|G7BbwrM!z5]ځqZfZLuYEjVrɄdιvu]Ak @1cr˲l^TY]v)G;4Y -5Qwr8Ln`\pjߕŬJdi'1&S%̃l ɵȊ|^kA<&|uF&>x ՗ԻXeL(T `3+!r9{b9&0VYUSLco'y0 )89!$nX'uwݟNw\<&@| b޷;c k֚L繌~ fLr2m$r{uRxw(l6-kYnwEx~g_|~uqy.lbZ]slg }hzX.Jqa!X䨴cK3=5\0@M08ƐKic\HVuꢭC䰨kL4j7'?O'郓>j5_ԏΤdd2)VUb<<\*9`+"9R: QB{bd‡ !Ɛ1^WHIת#%9g5~ ŘBx wu+Mww%>[/ 7ir6F~w,w$Vߙuiٵ螑\*iQ&&O*z(<*V EC)iUU>tzX-<:]ddӏOH6Fr@d}svvmv/M/˫٦4~?B%ܢf*HLgL*Bnt-竺( svqIctڗ/ۆqև_>:ݼ5)`\v7mۏhjL!E g,ڱHJI%J#18Jȥ* #&MVV6ċfFLV `nsZ~s)bUPJkoS  V|}|r8E0J)|2i̮it?h?;{5A”R !ˋWy8,(^_̠n͈Mu8&G#v1CJ) v3G7yJJ.rm2_lݮ7pb}Y,GVy^t]c*Ҙ D1I]MӴmj]RʄaqC^5mWTE= -V6^"lp`y8;#Jn)m!FB 1*M;G"j97WR ~qZkѣK:$O@?{@jyG.ؼ4GF\J%HQixտYY˿/7O7dX(5Bp!Vufd]jn>Ĥ4B7WmӸuM;h,s5z'\\0[&ݠehMG 6(nЛtr=%5 bJ\xŐMnΗ}R w oͺv׾|Gۘ6nAĦ!B4UK11 8i//.>u4M,jXu )9`׶+[ΖJnLeP MePώ?yW.^`q싪l(zmDa2E53q92($SC-!Gkr$J΍ql=?=g$ZrfW_>{ _^/+֑wcbR"׏s6( W:佴6ƨS3N, 0@\pOp4) H"E"J u㹑(8v&ߨ`k}|#zۦ=;?V~Wf7bגx~B;)'DLX D(< &!FH6ՓVq^ A|dl{\UrMnYy6!:o}IzPXb"p ȘFYH%] YQpaR C;\8ZKR nb@ӓ!&PFCGc]Wh{|(51HLp]ZQ! $| (P()fJ(%Rc S sD8:۴N'3b<K\c8A8]EC]1?8e\vWYU&ϹP:G>890tSf ι ܷv@=??7ELYi뮱bh}D:3Zkb$'^|(<߮ȻZgEQcEQ;:wx+2W`REQ$1"rJ謳~9QTsME2?Ʊ~8<+A&Zr^Ŕ|^QI~oö}u)tGKo0"VKm&hW^u}zkeYe8C@`5e?zGO=[aD.̑+?uV~lfc2D4TK,%/>|}?6@RiVVlvFr8?cvNy+<KEx+;ˉjsys¬t! 6wN{g@;ć8iޯtVJ%Y)$ )<̓rX޹"/Lq6#{+˒ ln ׯW{icEQeO|WGE9裏.6Zu3׹FN.W@@䜣dv\dU !6Ĕ&H ]q GY^W!aur5@1 }?{UOt%?~,p8b+)9u`G7z1gyfHu}W\4!DRHMٗ#R1nF#)AB wcJ@78; ;^Tw81FV^oߡӤ~'չ6~(h2[Do~n[mBr7!"~GX#$=%Wؽr_*Xl{f0#_} 4Cvf7bUV{6[>Ȩ"n9| 77;v<')d\A5-g.L_u}0k.T`m+ˢ̙ j}S0A}# slqM p6*tWbqO<\Vvݶ4bQ G%#vf]]42 ̊ܬ }$8ɠ=Y4 #i·iʉ38GgUZ|$H9ڪ.Q2Reb@(F1DoNQxخ,+"F^οz8DuBT\'|\H?_gϟVWx᳇wGpXdh%12mYQD,.^mb} 4љ;i\ $%׶USI<`^V结p8>ض㜏BϞ>u]_͢+dfEQhv=?&;Dr-uM bMc&t4Z[2ipcG<Ʈ,Fr,VP2˒;5M]UU1έi!B6n[B75L#6U1MSkb %;1I岪*ʤj#x{rjlػ{ol;{3K|lkԃ_'?̦Bf9"G&LȀi<ƠU)TyӴv"JΔ,#X|!C1yz'9ʑEjWV~7?$OZ+k߁.uVfTxIo %0ڔ s$@7b$]p.%RvN!ֺnL>I\gBB,rX/_9"B'Zim:^dLl;1Ɠhԗ8G4ێ+d2rPp` #Gw$,@2B@HO%BtgZl2,9H\5u׋Ͷ̿W'ټ:|1OkbAo 4HƵ.RZYjCȔB{4pݲ#D lcFe oZ̷9c{[C|w~W6t}zzv Owx @}"bDƁ6' HIy3 -Z :9)UJAI*vYtli_.WʷnB(#1 )t߾>O皼47O~Xmm\OϬ v]k Eߙb=w Z3LB)l"U#uCu-{cCStNO@`"\J3D8hJ]R= ȫ94|i4_<ݛNk$I< nnVEcEdz8 u۬u2M]UQc 1s)eE8* v]U' d2+Gӝ^#g9SygI>L Mi۬6r<{prt;iy& "" &Ű尠!d4l4ֆ]׵]SNeY V$UDTU.˲̺. :W8%dMؠB(-$y뜱g0N]׹zgIxRfgG7ɮ;Oۦ@M "2^S/v95zՋRE2 Ex"("r!u\Y1Iv>e9cC$n޹ HzQZ9 IDATOrg `e{a#խk}Cj|`qgqi&A 77V<7=.Я%=ݠUK ^'kXk9kcK-d'MVt:1n6rk 8 hMDbևo#;vwwONN]kT$YccLe۳yHix R#sH. | `m[m$⒧Eݶ > xX>(d4 TTpw.HAr0خu +Lcz`\mkbd2mZ֧'m <[Ǭ#c "w1D RG1bzD]\2AtrVY ٮIワ6!=IZ L|y\7]y3=V[k߸'}_31vtQWmru]?;?1D>D9F4(mT4! RYr0yfnms#B(9cڶ(SlMʁ``j8!F)Ĵ(3`4 ooAȵ\\]"WyX.ҩҌ1 {#妶Npn]PJyW6\,VRwRe̡y}hs񏦏ӭP2XZoW.R:H\>:U3՛6NbY[% ֙&P3&cD,4MQ$˘1Ɓ{ tѻ˶ib å0 1#? Y.[rNH#Q׫.3WEj;ſuQːG>TMc M~񆆆 NBcL2) }1Áܻ'_e$M4Ȇ@0Ǐm/Ng;\e<{IefBph;\.' Iqd9/q>Z p Jl m= C0cS.ε!猡F<+kb1S-8Q@l5+PR`ZkApu< ѣdnm(P3&J I Dч\6c@6vSR"MQFW}Ql*>%lܮf^cu5Xl@˸("=,,RH1z9Cޑ#AσG_m95 SIƽ舌 ! =cZx?(@rB45jcGPm3ȆLIJvTn^Neӝ<ux&9GO6Zz;؏/[mXor۵l?k,|s#DsoYDё@OLxyu1DRL".S<2ism / ^4euLL&9\tů[Gl*Td2U9;Gƽ}^o!Y$/N"qL3Vqtz۵DBK+ɣfmG'm":O zYR-Qݬt*J. 3pvuA@"DziMk[9Qxߒfqz޻-#T@CWKƋ]d^q~9fޕre7F.1u2ZK(ڃӋSo;(qlZQ$:ֹt4Obʲm|~_|8+ۺ^6b&fI6D;8+cYq!`JK9G`1`c @X0#!(8!F'cB^oVU\I!6(URfdWE9,kۖ9"ǣj\-E՚TiE&a yѹ C$=7Y"=Ƹn5@X>07g?M捏][%#{ ZPNHoo"eD "BҨ ߂\=<1ʶ"pX0UM%$<8:>oS-|ejlgBdRTgA:C䬷G уaHu cX刑dLVfϿ {BG>9=:WI>im (Jjd]Ƙֵ[' + Cu.V Au6tLIp5iTɝ^<9Gl&v&% <Ą b!w `)qǣ32%B"Elu#֙6lu&V֕ն*7v4qD&5.fww=-7>$MIDiٵmlug&r|Q4js>tstrDJɄ㌗B./J)XOi!8"Y/h7>MRqkvJu(r` D'-RE!PѴR 9G1D !|Rx:.QB(!E&LצJIJnCl*˲w/..B$?GUUe~tv6ˡ 6&3f}~6gq) `!Pպkd2v[&pQ1oʶvF]׶3N0rޝBp!z',Ҍ1|4H+.N H" co:P`;.8Oѣc8D26҉-2%\I9kZ)ˋ.xƦl YA+Z }yX;ڷ;'C9'QK \ z`3c@Ȉa"@&nbN=5"EpKwZ+Ҥ/#Gk=]XބE-e¡o* /&⟻)fRs]Rg"E#ԌD $ H$GՙM2˲Y:ƻӇw,b9 wUp<6!*:*Rn>xm*η[(8HƓ1 L"IDz,3)brsp۶ǧ<|L:N.V>6د=zӝERi2ŚhE߼ F4EB|2b X?i^gZZʳ\Ө$cbh 4%Ѩ(ƵK` &G5Fۺo~";c׿e;̶6oG`٬$#Pg"b,f"&Yv7ӝ)}Co7d|[D>>zZWR3b\VϞ<]]1D\4s"2(i&Om>=k/~soXAr^7(+v568URY"u\ C&Pp@@{@m]WMs&,!r.՛>aggWdgeYibw#{նB2Q`dc$`sUe82evA Π *$MŰ,Lc`wȔ#!]R{1.{`o5 O\eii} Rq!Ơȴf!R\ ܡgI6}{tׁ"n"U~t0*>_l*b826E]ipR{$ZsMFI‰d2ò(l<ڙΦ2Q"Q|Tdx@Βsi ,-ȴ~>Ƴ`4-d5Ԣ_Vސ,&rN.`pv= r.U^ۚPdZFΰ((/gxhXrdb2Y1ڶR&Zgδy[ۍ#d3 e^Tۭ`oZsx|ir||dArY/˄?yx޽\$ڞ\m$?ՋyMgQL__xdXWƿQGyLf:)@ QD):1{lC`t3>`eC ~8H!8|$ĬP(aMGHqD!QBrBWwᄅ7^O}Y!c.gw`}_|p> q_A /sX? #Ɓs܄}qs " __NJ'.cniߖWWzG<>$BT߽" E*"C@ I>(sfg2 MlDxk[lQՂ#. vNfo˼0<ݽgϞ!f/l4c"*ˢrch0B)WK%U$ t"@.Rd`(`PxC ڮF:U0)@J*!zT9Lj9%¶Vue 4"x b$BYW|WoO6/_ ue \cmÀHSS4νU|7_ot}wdwMW}1J)$e 7=#-q}ƥ緶}w Rx?qQ,S%8,aYi%`P& AEjC@䚂p*4JXk^3RiZhDb1ĩ&X6몮 d" p4+}[+a tq{٧ۺ9>;-pf>tĕGe[O|K#OL`֓Ih9urqv.TY9n֛nu. &rBW kڪZ _|,үZF;gy^ͺJt}3rY=>񑚦=\Η{?/~go^YM]k$٭֛"+;4M4x\y}x3VRpιmZoϮ0sy!@~4yRUr+= SZe99k]w]g܃m5A9,BpMS37Z"/wv<4M40@'gλ/NǦNN&g}ttLoZG߾9^T|yꖿ7_]|LF~GC[;gZ>e ط!)"@! 2/!D7(svݬWj48gvw6z:,Shv>໮;824Is8k K)"8bfZ-2˲(uVVsb!c1fnچ`]!XraH]TE6QzsXҺrug#Gkonb@ nɳ,歄w=z 09*-N_hʢHӴ%V'ym~Ms :s[c% IDATiꊂxe K!s)ci9c|y}x/9:]n9CY4Am \&)s ຶ]@>z"uU!P 0xM(25{ ur)݇O4<9=ȸ "E.Z mzQ ]΄D9Qr,wwL&eQ`R"LFp$:;v"R4M$Z))E.@2B\.V߼x|I9O> <dK_~q`4 #.Hf1ݟL/Wֹ~x4yo~[r9l2}lCSm=A_gJk.Do=Y6xe dy @B4KI0DQk5iB0][m@1KSf6um^(њbvZ)^HJl8$R$Y,_+b WJȴB|Py/6նi[w6͒? y3Y'ºi֛ugZZt\j6v]y1@ k:L%l6̦V,ZfgNzĘ11"tD6H%4x9P׵ xL@lAxge函:؇w]"z 暰n#zzw%N5 ?28pރw97ckZ1&v*Eִ5gmι}1FH`g .7`jmk{vVk=:9t-p]ԇ43/ݻYϺ7}C??/{.V b˜]C~vtqq^m}$#ޔ_ > oӋTR#cҀ!cYPrf?n֚fX] ޚp'uG{$ڼ:]^lm4$*VHH%a"$!Yy᭍M>ygNG?O??I?󯖛N2& s!aJ 1ydq 9$.0X?m)snQ"ZWbY,WM];C)R)&d2]*E-WGWo/ޞͣ`QIHcm֋D1S][)`lD#EAN`̴ ZȮmsC&yxx^jw_7^ZO`:\; !Ā6ĺ8' !GPRQ[f[-sHdնj$G*)t6l=xxzwf3`l8(F[[1aEetT9zWnGoxd2[US!QUEV=0Tn cl4JEBH8A:LE TEQp.kăѨ.$ ^M8B)$ceԵF9T5:tnX~ޓȖܡ?ON FasP?3ʕ菶@HuwG1ullmoI!BˣWQ|/)S*PY,1ƅpq?8 x>.# nttRIIĈ/^TuD;G<- q荳F벩Hb"c "8jf>SJ*'Ѻ..KJp8xQD|k<~M4CA(DJ)c y G%!d2+!Gsܿoqsxu#(gk]iSWuQ /m޻o"+J[EzB*"฿5|֮qF e 9"qS`!$bgI(Ťr ZfeY4sI^6QJqcr] z J`2 o rn[oi `|-"쾑M3uV]'"pe 7{-|[[Z} FGsjƮČn%?7qhwgݯ—@ZWܺsY9LxC yHtӴTa NAtl:ޥTgG//'O{_p_ow5@S5*,Ip0Nqn泙39zrN0:qERɬʗE^A4geY֍G?/0r!T@S"LP"FZ;WMevXhk'@@JsJd %1Z95R`z0S)(% O%fp<|GmFuE)0xy{[;[ } 2}E[9LE綶kN2L4=wo::Ѱzvzw7Q Ŝ3l^|1fuSQF~>?@N/?'?ojeURFow,8=}| >V!W[,BSJܕk%rUP8_ebKu"OB75n2`85onVU[ X7!oGʡ(*D0~+dO.^%΅a75ʵ̾npέ = Ȋm YZ9cn<˽#ʫ֌V$10 Y>,R#|:_uq~{[>9|xӏ{N?%NDuia'hz4 $MExe $<2LLƣX2=Ag QUhu}mqn\0ƼAj,4Ƴd1/,o&rեO/^ϏK""gן=8Gtv$(εR&quttD<(" e3{Lgd24 ,t:[z3t)c6uZIw:x2M;_ڇ>GbE\tQ7( c6bYE& :6֡wǺyM=:ke]eT:#NC)UJ,Y(AcRu]@Qmϧ109gXpMSTA0_̴NGJH)嬍 QQ* 11d~88~Q;=9R_x#8uz;ۡPR5lȖeYx(\y%*z}Ͽ<3C^U Ƒj<J,7$>{Or,Aa&wp%[@7&KgOvwEWyajCSgQ dkgz5#ޔ9oүPٞk 7xJ)9gꯨ&qww߿"bڔ-ß1Uޣ_/Ы5tũ֓f>$@ky6ӫu&tUh|^k'$V[oaCkO<@g1JJp&[ 孩:ݚ ~4y7--:"HWITeuy9 Q<ͽsw0̲\__^^gݝ|zuU&q4NHE~o2hǓ Bp/N8gPml8gb2i"=bL7:"|;DA䝷ƪ GGuN:ь1JY4eUY`w~%вD%eRвʤRKefy}P62E[B zz۾Wi7%zeD$XW[htioaop"7j@FƄz\nի>Dl^{=nt6z \5+0B F뼨8m]Z#1` FS\I% ʘ$1 >:TyeQBB @0}pw~r]"`nswg`rBRK0M?QNDn/uB4StQaa*zqc ,"H 2 9k4Pʈ5F{O`"P Zm 0΄` :P9!@F(#ǃyi^M&Y44>݋I۳$ R E 3kE9*ڡ/g"9n7N`RnG?׾IzVg{`kI>˿^>8[9DI$2Bl2U%zzΝa>~Xϖ[[phz?=;=JQ;wq4$i<4IR6,odhpp2PRR.dJPpzBܿ2 ѼRIJH$Vue'7WnflZSJ>=Ms2oc /6^Pзb[dWWpemp]_w+aY9VVֶ?ؘl[dۚ bol#r]5J[(L$Ƹ`krX/}];2qfžmƬ&Soi ߕ _1Ά`zz݊.!YW_+[n:#WIӫ;@G•xOd^4rxQQl҆R놡Jz-{o-UQPəR<\Qhzx6*(9G!s&rJyY5emT{;TQ\N'CO (Xݡl/XvM'`{ճy.>~kE^Vy_L.?tFAxb6=}I~(%8AI!bJ xǬ#qwp1] FbWFTcB|}{CD\_NMg'zi{xxaD]pkjZkm)%D®@|f7mh  ޣGJ1ֻ{+o9nDUUf]q#Nq*i2Wѵo(ogf=n]MqJ{r9qu?uT:"E;@q.[F,am D$_UKN?N0[聴Ug, Kv{ӆ!bVhkE8XmA7Z9Y<{1l>9??_.HH;w^}[h[k:ϗ?w{輱`_J\6!(ekSS0 k]sγ,32&"YVEBA׍"wsk!X*TRJˆuX$T Urhp="h: b_+,"?GߘL/Ɠ/?2twF$R< "Jl l18?\h*Ze]6=4j>+ mj6 $BNV9K$WL{zCfEBzŸ=еShK׺"ĵxUOC91jty{}p+"ʢl5: s|Gk㚇j­R/7`DB:991q6u(`;L0O SUi{*\!bYUY^hS %9S83ƨ[W>s[XFn/{( 3o.P)벘O_zI( ءkSWi(!( 945ZSyg^uurvzrrgϧAQTwhkowP˦.N._zY5g^1 xttRO>d8q跷hkcPx|1pgg{秧UUu}5b97Nׯ" Ccl>'-d>/,rő A( ð1r6_8w߻3ɟ4_.>,&SmFlX.iq+c" R3)RJMS)^Fiݙgh\톇0)7^?OoyC?^,I#5R.N$ʗ׿OO0 ÐWz9+Y\6 i4ԚCʸ1+ju}:m=7~SL~N^} 5"(6fgq+ wS#deCxvV_p}\%9 2X{4{ܯ7@魪|]^[8 !@8kS:UmyIi &0* M{`8R"f.y̖l6f@ ^:kەB^yB BP |ޮ*nyȃRB*I' p "\ZR,v;8_~q8Rhuq g ;e\Wy(2cәrlD<eS[Ъ#EJ<Md蚤uaz [^niaJW™5E[U[`kl/A\Mzq~U eUnbQ9PJm!@`)0J(0aHB%,,!-8m1V'qu;v?QuY/tT:LN#U,Ct8P.@ٸD%ݼ֞pb's<:mkBJ3@8!@H8e))P`z)$Bx y~@ml] !謮"׍5MUl;CFi' ONn1ēI4>\Xk!c9ZˌRNF@QQUSvzzOˢ`g/_*^/O^5e/(0m ƎOOF7!.'E]wQ4['t2@a_\cg%+{\]חqJjYI@Yb,:ַ ujm e ztB*i۫jM5<{b:$6'~4B_^RB<JI P4ڠwhmjb ECܿdo07O4dT9"WZ– -;XdD )Ap.Fgs)%aؕ;A)eb UOQʷw{ F vomI!7B6]wdlw'~,PeŒFJYCދvwv6uYG<m&Մ¨R֍s._@`iJk80aQԉ;0u]?ӧΖpSMŜ3){x(yN߻gF7 &XG[C,ɳ2[q'ԍ999=Ǔt0ւAƌ3kh{kg{ὦGQgUUw3}ގqeyvv@z[[8۫;(mM3ϝwn7(&Iȕ\t=LӎE<:ݮ.v(y, P`vNNN)a#O?Svgiѝ;woݻwuuUro|;{TۣQ*˲0U4䄡kI7j ȸst:vMK*-ExJ|_e;ojݼȜsģ"~&Ι,k'y;.i.I(˅Y̽Z&T0 At* +hm Cb-r02B|oR&~r~xê.d 2_,wi'r694>|$17ϖmhQ*XT2T^)f vᓇψm8*]d TFQa-`ݾӺуx;Ofb<*";iSgRIXă8&r('(D`sN(:{ڱ)1\ɚ"^k=!gns|6Mq*\Rz흵\EKzly}4k!զջn4[M7W1JB Z/ 0][:ĥ,ĕM9;UL˪s@)hW e$]Uܔ A)ʙZJ5x纝t>N4´\Fk54e]TwP0N"Jb*)9HcUQSJKENfĔbQV50pLI b,b:7FsN2] IDAT̘Q Gú҈r( WJqȍUED?D*=Ruʘh>*`RRB xBՑPD)5mÅ6طo%]B+sN(w}.epJRNixk]hC\z^+B\1͹va|StҖobi-꺮ZJpʀ1Jc $;MuI(GT "Ζ9:('<_fYUֹ`(1@t(9B(zqVץV VMeE݃o(ov?(2DPl?h7εT FI(x'^;H{ J0X#0 8A[m1C)E H(!=Q #X :u6gꢢ6-͞hibxeWUUzD F{#E8mu{ u5ξu{8`G6ӧ&aneYaQL.w?a ?䓦.hp߻8}S70H~eQ䌱-.Rl6ܽ%Gǯ?y|^U8?z޽^7NBPl>iyCgmt#(xnU]㻇wwt Nu;CEiv:L0o=p.Ƙ|6Ms@0&Ekp{t>xÿttΏ/>GI'ѽ{*PIX^_k4\UBEXosD7*pg,[ˢ䷿ hi*[.Z01Sq󎴏e]7&EV̗eոT קyNUL p%C!#B<:C3{ޡGoF*y#umkJ&W~ .L79[XnQO!.xj8-5nXwž~m>قkڜ^^G䆇O{8ekbkcGd4e]3H wI=H $ދ6*҇%#^d2dwkDd rg0&K9 ".;2θw!0!#.2c2h~@D Ps/v.|%1'8pm|pXBK&kVq4D)-"O~7Vlg *ꪖU0PQr*^VP)j.fF$U%gy%uV=q+LpPrqyK crF73BΫZz <*U4bJy'‚9 LeRiN/+92pnp皚!KA3+c{(%\pΙ1ƚ%Z]"a76!7!,d^ܿxLpJy֘57dC/"#?oa 4I&)Pmf3$#ܜwdhy>O,861; cb+nFLъ.NFI>.H!ӎ[M:2*E<v΃()eo L ֺ*ZI iYS7)ւڈVb'wR{6޾O:ݾgAd$I=__~t=?|0mEAT|~Ԫ˜:MbNZ0VEȳy! {/؀bUQ !T꫔(ZqZUFyU2T0`nSj<['˓e.ЗSg`gs'M%Jטq\nw?x`ƁE@='r>qn{_'| JSb]?GXl(INigkN"=qY #D*I v"i3`Qu=r^Z&ZgǗ,˽)5rDu13JjkQ*f||9.r6?y?JWr>X`ν~}ݟYWׯ=V|NJxstiӕ +E"/Q^t {;<Qp`L=z^%X'~X XrY)[*_Iiȃ0Lp0D(Ni봱R+i,0Fy< <w6%?z3 l9kxa!F BNZ)g/]k]1.`d\:x#w(I%{ \ !lžB`L !W[Wm򹿆K~&FӋ|U^r]1-m{FJENA]QT]-_,y¾yZ!,&5w:ngs0ft\TXtFӷH{mMA0ƳF0q+iβ qi=Ǝ c00:MBYݤ#X8iq|z>KelƍsThe>! 9ޱ 4JƵ`AKom7_v 8<5{On6DXlײVK{%EVn~wD+!g_ǞJ=(1 R\=|̶]eB4aB "!bJT⃝ݝn*Ӌ#ލZ;;w>{{Ngkg QTUw=s2 U,%J1%L1N"ZĨP&+Çs6/2{{;{{;e;i[՛7og9cB+)&ǿ^x :*UX[#JUgov/>|'v9N@9zkL`{h)ZJMcA (#o/.ʛYUZ磋Yc Y_xo B(0R:&IQ!xh%xࣧOatq>,9oqU&Q׻sxgkgׂ;==کRg9J~|LD(OgYj`kx\rN^>488F@@[X:7bo"N[iPW*/qX;T+c-x QD(B!0̉< `=sYck@OsӺhfqx!1Zhlfn +Ed9W@92,+;*'bws%Zx_y^oު.~EU~šJ!UKv4!0庻P4,Z)o-S {ǣ<Ur2t{8ޜwpJ$qrΊx{s6m\l: q;V:lVb 9[2nյyVS2s w#cezLX)8[q܏-t k1,PZ"y%YX4F>PXÇ*u׃U&&YY!p&4ɏ k,0 7 !8Z#7B• C,]yϾ0,@Y]Nol2_ s̳|oo˗'''v{cg SB7QN [9cʟ i1Exg, iGAGQʨYq~,|z Hmǻjk[)uYg㋑* vt`?򳏿{ {[Wmi̼k ll3{ۛN;@^+몮Ky!xp9笱Ä2 &agl6o;M8mu{q8KcBP$՛( #V*^a˲޽1c~lt:t60d\i!Fa4{?|<?|45yM98-|8TJolk9vwE"f;UUQ[+U`}՘'jm+iiVTPK Gi 't:6Ue*U|6WƍӃZV<c BXK#h*γ<4I~dm)1c:>F, !v6;[{;{[;(M@`<׿U];d=Y>g<uo_Dm=eV9s<̳( 6F))X;`AHC|^c!|e;DcJs5V59w4,p'Wx ZnYxㄗǨɭm:~xJAޣP <\)n_:_YTV&=y& v\79me򇍲Asy(uÆ-_!ʯUWk\Xy6*#̶.Z΁[] i2K* FcPeN 664 P"LjM ih2=g4gͶjg Z7\\hsg`ӏ?ww~t죽ͧKS 6qFYM[}-ChJ6޿/?,x diO?'Owz]UȳXLx\sv=Kmc\Ë q%`cckG)E9x:ew1t<|, ch8~]U8I( xZ̤͐RJK%ֲ"0&p{w?O\wδ Gô0F &i^.LmZqXc)yYu)leye#=FViu)fAshwgW!(cյ"e)B'?9Fh:0J0@_~_k@c|zrD1/v6PH !i Pdղk >z&ѼY*Â.4//3Sd!]X9oA)j˜4QPuҡ/1x4mM-Bɍ溽uL&/I0^MqQ0^[{[2?|4хzIy/o-Z7&]Ľv,wctZ}W¿'h}B 5CӻCjrZi+J֕x)d|~>ޤxλl8Ri幃ƃ(2LEQ*XDA`uU]gI6lVyēBL")Acrd:De(8(Pz:Q"Jө,fQxdO!R cGZ = -Zf媕s)&P[]s >y;}IW\nZb,/ ];;@Bʿs2Fa٣z+ s1)BD9D0 ߰%Φc^S'C!pO`$|ΐQ@2%FVLgb2.>{x?edSN';'\>_xY|.c5XyYll BJ1l&Dќ0 jaG޺~N)ݷ^őQk0"b+RQ;8J)="r¤89 LTۣ#@(Iۭuݲ(~RX#`k{)Y#'; iU=o޾Ygg FX0A)c9}ol ?~oW縛|{t6URQLY>λ*lYBE~6 Ä+e09QF ) xPya1J?x,0XժT`oW?j2Җ`1ZePիϞh {G(<䵪/㢮5adtK<,"?|1OY;lxg!+?QJ5RkcQBlX9"En7AkRvmET]gV,܃͕ Jiu_c>X\1R_6UWkWuV%uSzIxjW}"W<ܮ%#ȑ+U _-HVK!pZi&Dݍ4/GxcfSFϪr6ϕ Mr<8gM{EVZy0 X]R B)@#ygٴ܏tnyYج0eaT&@q^E Yi*IJg,#uXk"]`!Xw3ʂ|aCy/78+ܯ'܌5-BtCs:p8Fm,1o.0kwy !ϱUon," `i;i:ڂ6"܂&2Jd]K jP14srjZ:jXZJsXcLj%$8<}pG9׎Bdg9AA 8k0"ΌgxO/a8hE*yUmEwv(|:.s-Q 6qmnvJՔRĊt(yg6ZKp< D3WPPF 5zNܜeJ:m\,|F)ZmllTe6\)TJsSFn4<qzˋ !p4;>>FiŁକqrB&(e; h>"-PeU:z4Ow JEa)ElooYgl#m,+·yVݺGo޼._F'TJ<0 Ƥikx~n5< IDATO($VeuxxzIdY *FKiZ /Fóͭ;ڢ,?zx/xx1%Ë۳Y6WZ\PƤGóGo2U7[;?z60i0G/O'ag>-ǯoa,0WRWRI(<^&XRZ;kz7a"E7ϴWL7W_Lm:%"[t[ YnB|Gr_Wn@7XWܮ[76FYZлpe5,ôK{/4,E?c\?8X Ųb8Jk8Oy@΀P:ϼ58m}^y^Kj-)gd6 `: Ae^5{*:*^GaHtz;oO2y kMIR:C"n Z' gR@VJ[8#[AR f-ݺ{ oh8>Vo'-rV1W%}iALIjܝn_Q׮r3oxx]0V+_fʀ1fs_D^=ln _m9V{7 8"Q9C=6N}ƂzŜODAm[jq 4MuKZ%{#Z%55;Ik[׌R֘1Àd]Ϧ*d*ei3ƂQ$uvF Jlfdlvq^k]3PEJJIŭV+MSJpYUlrrNbSu"xY9 )_Nt<}ɲ,#|zvt:{{VjJ δs1*cY@i"QŘ1 x^^??uEƜ0 Z9(Ɣ,z&2My6Md 猖Ux;E!A;9>78=9ӏ8{oLðȋ~ &K%z[ۛ?[fowZa"Q[V^tyfF>{?>/NNǗ%nM0;;`b&RLiI< {G"-AigF8"YFSzC软jcY'^׃N7r(7ie7nof^IB7<nUPq. ٬](l/7lt&@a39 ...$F+,DN`I;mVpʜsUYyqVNSVT*MRUZic֦,ݡMԌ,dR%Ƙ%1VjVƜBϞ=g^Aިn02M"k";g3!seUI9睴!2fzs0$qUA ix{Jv+FQGI޹J彟gm;`ww!ARcIUJg4B5F+ ɬ3ؑ:+@AKtJiWh NCˢ,e)%`DP N/`:\^^Yghx6NOV_|^yӏᏟ|l\4ӏ?x_|k8qnv{;^*0Vu]3g`a鴢8(<z2D!Ã{wE^/1ٌȀG!V{TV9W{pi!W+& !;监xM6]Y9-TE'݂_!4\Vu:y˧PLӣoD3ԽFo^0cLt:eYu9#i$xj3 xN^؛n>ؽs~D(aӴ2޵g9h&2-e^ZN}q1J2(81 %e粮,OgEQxgܚ22|uM۷G`0 iQ .Xo<ྈ#OPQM[ݝv_^NsIC6JmmmDasN^/_" xUJVoڭ?N]ȪDTD28"dpJeI\t4" $) F"FYѓ'>@?ƗvÇθ@ҍ$InvAEEIu$~/%#t:>yݻP./2T򗿸snRJeYU9zwϲ`͛W|nVY'O/5}J'<+4{{g7_pb[sG^MGsho;ަqYB`Bsfa aڄ6v 'F hC)m%*G~õW5ֺ籶{&\+-n+o놥2Y(dq + =lwk3%$Y4-&ik!*O//iUEKԑf["ob{6I#4֜>lçoydo5oIr8B2I'a4,ﶻ`2Q?$I*iw͍|ީj0.=?ɜHzX/ASsX[o-v9Pq[ b됱`#pr,Anwkr̹#(Ѧl[S*3ίGܰA7_8vwuCFM:sRk27ޯ5֩QW6jofon4:ttfA˧?^ʱv{iIA 4B0 BZkmL:H.C1pE=\.jYZkU%v;V4TMji %%%dccc{k1,x ??{ݻڝv]Vo?",s@p䵜RC< -9pzmX a(F..Ӽ(*i $k'v'Jۣ(^3F05f3)%c@IYcsz \ ! ey+[F{ǩè6nν`PURv=ep6=J޽{x$MuYu˲q}޽{ɋ"o_o~EgO?O9Rv !aP, VIU՜0A"$ V;^wnQA../_zdqeYFl>N?}nu{8 k(}ѳ?XpQ2FkYu8tO?yw`ʳb8SIU?]3 mTJjjolnJ~|u˳xLMv,B( 0 8jwE)t15aXUV/\ѝ޻F]_/Ys!! 7wZ^q(\m#XU-|U__Ks3~[aM6Yߵp5݄uDg|_'rlwn+}I_i5Q UWW8Kn Ʒq[hV` 0`@4@-^ǷG{x`w'vv|u>87{NQqErk@V>&kkmU@mܑ\keEf jw-%t2ʪ0 DIs9%vJP>`stxQֵu~co՛震asLtYV!P)Ե [9(|gnct8β痯F/O/J1f4LLӴKY?裺pó|)uM(%b䝳6[aq8OڝFg&yq9~xR[wp>/ꍭmB8J:Ѹ非[~݃;wc|r>g\U(GGR꬐Ӭ/ʚq.+Y:o%v 8a ohcqJ@(%iwT`Ҋ~zAI0dE6Nfl'ptͿ}~~vzQN?PHIۯ޾: +]yVJ[)UFbkwo]Ž{N$4N9GPV%;W+)u)l>=8Dqcƨ6fI7'G_`f٬(prEuѠGE7߾9@Bd S1^)zlEVRZiB0A730xU`0PBW"b)Zt$SCl2 :jh!f^6[X^9{h{G+FkZ>RѮcT+jjkm7zsJ&[ڨyFfD EUP(ƾI 笪<N'uU%i$b`t9L|{ #d 2ΘH8ceQ`B>QaYLfy^^󋪪4z M0ub6`IX{'ٮo3T#n)!oa?aaMR$<֘siO;+ohu̬sY[}Rڙ90_y|WٲoT&XyVmcCXgIeV(HۦqSR2A_/vvݻkfSmtS[>[6h]92%\t3$$7AB"Ƥ& "|:vR[Cm,pNto8{AW[5 ޵xm*k׋@>=쵅`S`'|#ƛxL*L~~p(LwX틬k$I[?nsxj9>]k֘;o_Ux2MuZUuct6??h2iAC|Yvxpxx-M uB(Y-V,kO?Ͳ<̦Mb`iU]E~xt${efP+jch{k0]iQ|߈`L)D+h *-D2HEkWEgLۚb?zr{xc2 i[Iq IDAT?&'YKڪyb]kL΋RBXH)N1Ndnogxڞ nj?}vr*!]/~_^|r|~W@dzsjjd?yv:ΦyYEQ\?HȓD!몦:k֔e!S7vxC(uSL<t-;+rwu}`Qh8[ӴM]dY}6řԢַt1:Dxv}GO>y|]!˦uu5eݻ2~t$7['2ݪ<3ޅQo[t/s/]#\ץ {Zw4I<ϳ,R$IZ%*IbZ-8 }zzzrrϜ$OmfNI2~7oqrv+<'!Cgi׷wv>w<+R`E?O%AV|6m/坳kl׵q]hг֞ 8]2P0YVj:7xh4믿曺?z$Jb49kI )B )vEK)"'g6u]I-x|{/˯2leϟw6d;$]/[ihwj/t+zbroik:!(/ {Q UZugMgLk:r6/.f| HP{"LLS$IB? DNЄ}x{wg[ R/Ȋ" ^QwӓmֳZ0\,l2O~r֭Glo\Bk]v*K>zXS#j%|'Yϳi \,ɸ D"g\+yI+BLPRyٛ2eLV,^/E./Vo5#G4J)d|2˲,(!&I75؀JzkVf[=XW/o }O.? _F b<%94 B`(!LX@$ݾsp/dL2+EPXcݝbɧ~Ƿ|?՟x/G#~e׏/(&ѳkCffE3!P(R$LAk,2iX@](Ş|ZPG"[R"Z\,^_Ofp 3kl. UՕ7-olU`m^FO."oeCW-<3$(TdNr"#JU~eYfNTR% i@(9ώ_4u^<;_L1˪8/f9cl`Ify&>xβ_/wvv^zXVprv̓in(_f˅LrEInNb1=O~2[~ӟG#d2ɓ$d7np{׸5ʘA?r~tڠ,ݻ&, {ѳȍjuc5ΞO&Ik: @%D&2v&@Љ. "MzE&\)up8< <ڶ31ضkm0It2@$>mڦi 8Ѫi+Awv>::b~3|6_O/GG'\5{{jUJtx횏peAS$Intm],7wuD$}g8+˟ǟ/׿~rz>^4U YT>(G{7|?dѷ{G;~yo+Og|Pr1_,u*|0 )AiluW-rնv 6|l[ ,) R@1m0Ej֘iZꚮmzg}׻vmpi'?z9٪viż^,O,5]7G?z>^"ƶbNfmPXyWif2K5vm5z^`wLV*彭 G_5|4I;i"zzg TR'JŚin:# ]Zkιu֞s/aDž4c!A % {m@@qkw6=4)UjC\dxU~Nڻ )Se{ qjmRͣȮz6u^Y`Kt8ycjfu]ǵZeQAtֵmCBihag ѰE !2FŦnJo0i #I L ^Q "Eޟ]Zw:jx !0d%js (X >4F*чe?dg۪bBkŪ죏oDgh4/v_fY Nت|7O9="&+J `$NwbAHJDH *)l@|/$2q@DgRHItYO, i|R1 i b/b~#R$!pڠt!RB,1 2{ $\mB雉  D+H(# !H"D 9p`MRefB[q@`xKA\^]"㛿&f6"jx9BbJ=3j{ly[rmZ.$DB%i,,TV$I(9*Qt|nZ !d**,QHBD7u3WU3CQHHcRh8֚5Jus4c`X,Ã~,׫j6]|G۽2J{Ç!2 d[et{rzf٠?Bzy*/,Is@tyY>zyn;3ޛU[흓Uːt Ʃطy*[=hk9?tSR$i봒 8"R HQ5B[[{!8_w-yӓ'?__H6{!;leO~͓g_w_?zv&/qM'O6'Aru~vv$:IGf<>{|j^pUuǧڹNH#uBW )8PՕT.l@!Zl/u˲livw]]MIc+Xlwjְ'R8皶ޠ*n|ᇃ0]VMB* %Ps f2TDI PH*4)vz<2k]͈\d >>~l|uwÿu7xb#$*ϳpGF%U׶M6ukBYTj:CR$QZUI%δ}HP !K*_ |g|@BF$$$R:M,&@dd@wFkk犢T<]֔ BHb>t[,5BPmgxY0B]pJg>@Ui5Ã,M];ƚ;<}8>?D"+Ⱥ|u̇@A .cDI P L&Z_z~t$k˜k(Y#C9 ufiG{ɸauID du'X @^C6`xE|e.>Śiϊ+91TpeJT-$ G*Iu ٹ``L7͖u`,4 U R'UIbX,mg`0B~eQJy^e ~/I8g[ӹ`A>I\g爨ޞu+ a4NӣãldXD Hc1RIgmWRuB(BJvp8`tZd^Z'HbY7g&jHDXU n+|hJ ˃MaEN[qM έm"*IADgO?zpkZ0doX/~b'p656t\u.E2.Uۭ:rP{рnYVeJBu[H;D,~o8!l1]Ϗ_<}iklY7./^uq;3m]$SJuw%qབྷJ !w pxt(HzgvVt1@Z2d j=5om5%68C۝Zu LB]מ_Lfl:<:=?84^O&9@:>_[6+oB\faL?M/3NNo޼pl|Q;יh^n`2<FB~pvq6LzC-lXNŀy@nۺ,K"8Hi!0!Dn ֡_Ii}&{;ѐ2"#nVm(.Vvn>m4I ^ FXϔENOFEEOo3g~ N,rG XH5H&a )DvTRn ^I%$./ҝшk E۶9ƹ]˾v[.<Ҳkj: HAJBXoHZpiWwumҺk˅J 5Mx @-q,I,KHvuᝏV/ۓɼH{sQn_gdz)JspPt~{_|y?`wm6[n>-zyU/Hg"/q$U\.<^J鼏Ƈ.꺎/gbW:UUGPIJ5 TQ> xĺ$DDgf~0.o]FͲaSO-.u!.j_woDv`V4m8gs.9g:眿ӤifYH6. F|[Coބjw#2EuJB!$Q ؁dbKtKĮ :Uk!){B&"8aKXysJcK) đb4ugYTO񿖯"N7O9!`sʉy)l )؃΍c&B^qQS Ny/~NZ1ƽoTi !u]MgkG[[DG$Z'i@缵-2*Il];GldqŽ\w||JW$(_"speJEQյ+ӵR{EJIu}۶o˲HӴs!DUU~Y7[c !$$rFV.U],~Z_541dI>%Z ~>eY&HRY*sB5$hU- [7vvAOM~Xj[-RI}7<Jc eiD+R!"Ԥ B` 3|GGG-OLgfy-~UuzqQ[ r@$kuαgXӋds,f @TJ6M¶MBŲ2Aq&@U̗Yyg뭗 gL\!Bm:cl A[UL%[sl<-DJPgZ(wFۙNHDk$c"vE>/e>^|ptxSУ<}6m['gx֭_o: ? OYד r~ly>17k] )k(ӛ%%*]B0nXMӼ6 E* >uKW&|y~ {C@Ds&].]D 0(K)"EUm>c*ys1wiT8׿J]}k`@/3_ORt[֎6LRB*e-$ XJf R%ekf|Z}/&ݝ7n]LgOZkNjyR,bh[gX,b奵jtk/ <{񢪚,/zc>{~lowNWoߺ1)`w0V()t{wVR Z-fi!+ AeTZ'RZ u2،4 `[ѴBӄ8Y/Gטy>_.Vvv1 QDD l-*igy&<9;yѓgO_5]gCulQWi=3#aptpR>}~<_Vmga^?:~t}wg^׮\vymh(\Uq:.fA$k]V$axX6 wܑR0C/!@1(zuLI@$hL !ΠWZY!rJ2/ۂ4{ Z%RihL%@Y`%e$~mBR/UK"tΫ4?q6/?9F1V>r! D/5EEQ`{mu%oP{rx5*ji`r3Ưy>>t>wkK("kGltQJA$.IًVXh|ÞNoM۽-[,I R&cw' 0f-IAU'/+0+g/>:lUZgϞeYv:>ѭ˲Vs <>H-RJ A<.ؖXQ@гɸjbݾ}pЙmG7NgƁtƴAi #ހ$$;L9roܮ6_V6%r**+xWk3#~w.K;\ DH80[stg?V/o $;.DDJAQ1> `pGgg4$Ɩk 9i̜$mjb֡ ޅP5V~p4t&7E>𣺮t5c$( WutT<4O!Kmg4Mee!d*CgIyp=!PiJBg|:?~ziA<\ZXtmU-*_2J ZjER\ AιqT9^ÆZF2888_q`5 _J sa H$`$}޹=H Xr@J21Lo޴WyOj/\セo7UCئ4 ߧ`U4 W7VhA(V:iDxwoC'&yﻮk꺮*W_T]zw&[:|}%@8HEםEp$bFP+:I+^ƒYuek-<|?CM/]s`j&DaC 偀 ;+2R DιV!`$5xDV=0?~@)URZ4"Z|pZ=xΥfƦiZH$h5]=~Bv]BTU7(Jk]~|D{_"6mZi`'FEU[5[V{iMe+{_~y֭gw޵ƔXm:eYa"I2[Upƍ>٭7>|$RԳrѦ}slkY6khk:iYF#zv YuY~Gzdˮ3cw[Y(E%a?!~j ![,(5[w93a-?ȸYe=9Qd卌8gsT6 whxg3c6uJ)Ło6]R__O rk+i6pHD1ĄZS8=luWj7,˶#7 &޴}=C_Ǜ?n-o?!E{7(٪6usX{ ۡ7ҘVHwopqo\0Ţiý^O?lXpoJ{mY`q>0HENh"H(H@5!k"ky~obZ)bD׫l5m\۹(ʢ,# (bt_◿/|ΦBYo/0h-KTߟ|;w9q"\Z$ou]gyx|5{v9 +1yl.(k_j"KDì9B/?/W7w &_?__}l `z]MGc$cd`L3S(4mղl"c1Fގe\4aOݸI5r1EɌJio5mtf)o5it]噀`Joa{N3MFJtg W ,)傯7ZgcdNiIX雔EJoRz'XJ[ko܈6SRtڧt'wj(sRksz*y-;[6cr>_."~QjL;?/g3i3/RtŤ ED+# YBDsXj7˪}`_,եp8#wE cъ 1p7{p?–EYKٺE"g6Q˲šyVg ::g{~!v3Z=w||8˧^[]Y*˪Ȭ>$(R֮rٴRƘmcb3mtAiw]˜\[1=AI*)wwf-!ls_qDn'O 6yHH`6 ޸s4A1(hPݽ7'O&WWU/{GR2W6+ 662/,lkc"ajDMoRZ^FބF1fE1mۦw9$BJ .k·bŋmyן\^GcAY)Z["U\źR)$>\M.8Fxl9?;s]Wxw*=9tU]6M% ãoU'|puz(t1GteYfY!lW) !fH  8ɬ28*KY?_gm B@ZP XˊWY(@|DzQ@"&PZeCZ֦(+s$%!;0*h5\rWsU*+d S R}bƫ2FT4"r"@d9B.'k;$z=l6mȍEl~,71!)< f˪='/_?~WkU\@u1~?I13QG#" ,n"̂)ը7ܛkّC U||`^5խqͦE!URJJTZ7nuZ`)=!'${߶fٱnmVYͫyenږ7l^&4ۮUiXqEеWy5 IDATkH)cEejwp0K zD;`d6O_M^f8sNEH4 S?tZIi\]a?KEtbT1Ze9"QZAJՆb@$d?:quX̔F ֻޝ;zvvq>*28yL *L23z4Z];ﺐ]`$&zSN=h8-7Ǝ}LY %y+WM/U2(o8>,"LUS" (@@?^lTFrR/6Gtp|^Q )Z)Ҡ {A"KL ,cDL$*Z:ڦIwu$ڴ&0 6JZWUel\2qEZb*|:J Si% ".@9P*|>\<;:1Lʅ@OFDI\aHxD;d%i"NxYyWAa ]98ML&u"\v\iwIJ>bXv0ygJegMXRjaASPQD)mC{XȖ}TOf!;`2$l˲1Z@Z|(<ؑs1UՓW[DZDB9=d P "(# WJkff!Fb" [!Ugrzzei_!֬EcV[e5hԪ:ls\A)i-HksngQM]YkXF4l/F9*v:٢U)vJe&Jsu56 ֣&ktC:$IzQ ں`0[6ׯ:h0Gksn6{߻{6ưdk~]-ov~Ir:VRD v?эAa~R$Q+ʌ ۫h>e"0ǘ|;}w~XRB$>xf& F:)"/zv^!iOvY|ӧS\)sHhlʜN,@1= ,ɗ/f(靟MPx[B {^YmbGJ)5N"gZB׹t'wRx#d~Ļ_}Xl drUW~㱺*19+Vz-E\;ŲfauYVBzr6׊'ԯ`4KD&+Rk4M"<u*+((V%D SK2ĥK;'g `IPIV˪ j P+4 M "(Z D"m9Db@Yf@AsmC$`I)lZWěO^u)i|`bz$$}!^qF@A C m &%;ϯ._܎l_r [S \g~J! JkxJKU"i\٩yU _Gz޶Sjn_' uZQ1ֿͥLD+P)^-"4L MwpxxxU|1^h3*]_TV3ԵKk^LB@^cF (JcLD)T1z( @@JHb^ 9jM)"VbadD4"r@E>J78t."!"$e%hm޿~?߹{yvwyy[o^\ GO µ{>oЬ;V(sƠt:eڶ]ίf,Ƙ^CZ+ 8ʜ=~vyu7gR7R˫,{2/,3ya1.nrCU@{HBBruM1!]:}ّ*0y2.f9`&AF$Q( Zs HD#04r$v #TJsUok9Yceuc4rѾ:}9]yeG3_.<{5m6k2)m(DcOF+ 0Go>!m>A"`Z{zzFUd ZW1ƶm}L>[_Oc`ݷ4i^^5+ Dg`uaVZj !ku,3ƘED(u "voam)e_sMѰ@L|H3o MTͭhmdOuZb@^! IԤkS&3V#7˩5jNm4Rӄױӳtm^fOA]/3qߊ[]!xto~*ᷢ6+-quM͜ooiyYoK\Htߨy=}q:A/B ޹ku,5v~>*~Ł#h,!JQ?#>bWep\EkUUVZ40c jm9A |;?٪_Wh%@*`wt|gބټ^vm~VgMݶmp.KhkN y+bnd+;.׈@Ʋymح|ob^' #'+1KI"͛|6+{G{DPݻwgY'OzAfkT@8ћi{* D("{STVitS׶.35O._~??#@E[ڪ*FNư_3J)vj%}$Y2@BU\]umw: j@Dei0ȉ!q*w-x"cάF+ l@ /:'G|4BWy!VEkj%Ϻ{Ag痯.CMARs\N""B}>5{G98=k}\^.`eJ{ @ SzB_螟Mzw*ik>}/^^޹s4330rc}@ȕvi!3K1zPJ͍|JuskoVm;jYvM&3w]7{ؐw9'0BUfÆ:Ywzw<1YVe{UUUUEUR3|+Ѧn|sDy2oX1am*qnL4I]Rw$LfV⚥7y]`|U{{{{{˗dѸ^B+b2m@J),bu*9l9Mi}ؤԬ(9"uyu>ul8{=3J/"DV,Ų^"b^>|лtM[E۶ƘKjsx k-pYE`&}(u"#+']ס">" eJtuЕBQ<Ʉu]ݘmm98ϋ<8z I,3$(cUP!2׍cm:G9l bur[RHtLsW%R 5~>ʳYEnb%F\a!hHR\7̊R x}[G $tW[onmm$6:Syv<:uЭ1Fアvٴe8k3SYp{믍l+x-ژ+|jXpgc2aWIhʶ,"UUsm*ivnz,B@H9WYz6v||ܶ펽n3VHo/~gL*Q0(^{PGaɲl0/^9ӋJ| W}7wA, T:9y~0GBF!gMʾ#J>,ra3\.y{|tW/_Fy]dZd6CTj@J)c3hx0]Evp4liup~R7~ Ԝ_<==OϮ5hrGoܻsuuuzj>]ι6CIS Gێr{zFР#C9)dwZLV3^C+ךG DڷɁ۞ dF,HqRwN..UYv wbr&<1ƶ_zյ7d2)SVUVE-~hI3S=~ws8gER"BJO!%1(ia$@$&A2U/Φ.P(:r8:/^. ӨFW"n dA,V+SﺰeuMIͬR±f7m\;ҙe6z}^]ul1] hgHTft.=G *"ͬN?;ody_1eEOfV/Rm۶m=Œ(K~yz&lF{e'`7Ɯ\ۿ/JgLJ a ""Hj\ܶ^a, }8,Uu"REq02u$_q+[ csk"fD!VEui4IF) o v!]ץ'EkʆK6TdmCL\aq_7:jkk7zxm"jmcbImq_l5!*=d1\ ,mRE ZMJ b׮mW$Ny"sk2>(u0(w0UZ9ne_WУZ5R+c:^fLY"1zV|$Cm3E|^y"{ FA?[t p\N.^߻|vZl+Kh]^Sޞ*"#ƍ-F) >-|B:Wn-)͠z;Q*َ"S4!I)5 2"JI(,D) qoBJFIOGB%V$v6SmgsP,B;.|Jݽy5*.fƽqh=Y1:!FIPxUe4-ZDaY)b "iZӲYjrZ/N_(=Gp8|w2id،J'+0@\,TB "b|}"Ȳ,zlay&EbtaLQʊrry|tTunriÀp\*͂Wc$P eU*kf1cgP]ԓ}Q5gKU?;o.пǏުGUMy7>˽i%3H|@0+@.D"]iTjl"UT9d> M.*[%"cֺ' %CpAE "RH]Skle:nyNSi|zXBwTٔ \O.eSaO>ɴsd+m#2s˙}`$&ӐDD}G.@Km}EQa>5,3wb^wve],^{>66wubhl9JE "Ea)` hb~W㽓'VY*. 1(W왐P7UÒ@)$ U"m-ۚ$P{X*}(#JT̫fi )[.DLE"'1 ~F66 ɞ#(Zp mC_'lUk90}۠&quTFō"x("{}kwt:n PZ%huP1,#Qd5mQvS $~-T LEe\D0DaQ6!;jlAn7VE>d[¤7xW&nnMѦ-ᱛ/oUmHPᔀ{ŋmۖe9BMݥk!j5 !* V}{}39?隲s esNM&d4v6eO)#D!"C2Ʈ;߈DFẮS\C9hbBVʚ"/Q c4()%F QCp :N!2z+窪$jg"1:ˬ(JSYf5rL&/ T:Ԝs]sEQQVd^2˳I=WfT{G슣DӳOrY7|wfW+Mn~c~icjPMg5dy{dgjV=;{JۼWIFn__'ؾ[NJaA6XT\)c,4raͽ/^p΍zޝq?~S(V́.e/'ArʖG@G+޽>+ "F/b{?˓ھ>8|k:9F}!>"b:;Cs<^,^\ @UKrҷG{H^ 8<"ղ^N}$ep-R UP>"Q1DfL ( xEG$QJZ3l)%mo̓9vWY(ЙYiB0kv{FMTH[? BFkWi3ݮGވvѷ$DmXh潉S½s/D𷟫goKݼ|{}ZgoѴ55 ~%Z!72;c@* aqt-*V)jZP,D}z9{q2wc2]8O'o蝣bh'GwBe;?mAWO|1Գj*BH,F}A<\m:YpQ"Y`p^ʦ J(e#,/PuʦHk1AMRxE1F]rYYR j$w;tX{pǻ#5}]DO-7/%N())mۤjzuz>g(])"hc޸?썣l#fQ/ `̲,pTwyf29qՋ Q7Mׅη)X9+ 0s44/$u7\]] J۶y؛,38ZeMYQkKZ D140J182JkΨS BcѴ^7%-˲"S"v671\kMZb2UUGR ^ {i=7y5w{w%B~9_BKB5R(0W{Ei?ŋY=oi1d=k.zpk&6>`1˵V.06*"E5;<3|͡ `tR߰eqh E5jeBt*W2@gഥV<ۿ*G{Ec>٬;0w^\1EZEŢ< ֨gO䜥^n#)Gg__ul =D/Eض 7{ぱCփŲ]XH@EA{,XB&!StJndoIEfu6⪍1esn$=z"2Z_c`(eG1_3D^z6b3)2muZLÎ`FsOz#30 K,Cz4>;|*}Kiz'u(ɲc=]jUc TXCkH^RWFi5u.١b\ LD$ pӉ!mvŬY~yUWLy47>Z=<^,=eϞ}\\.*<3Ӹ(G{HEyeuF1E6 Gej?5/EE%fYfA\ާ k$AsL|FWد@ĭh kȁE$p!PdL0muµ0EQ!p%"MRk愼vh}3@t-lvҝlNb{^Y̢mPHP0:w(:W._̪X Oqɭ|! !rW&:gsA>RQJ(he"THL |<1<ϋ0 ,KN,A Q6B&,3QI8/S4"xfsk`a&D!ő}"❫2SFjK 19Uc E<t).!(Dpﺦ+.mw8*1B^MODeabTEY7i4) RʊlwqQ//>DkGAth/Bj}X]n۸mkeM?%N;< I]LiCA;%`o{VJ^:|yF95|ڠ_9Hs-ʬ;[4ϕA2dҰCu7Y,Y[f"rܸbK0XE,OȊX IG`AH44fMI5"M뫢D>l_wVr>M8]>zz4{h<1-OG{]4,M![(&0yޜ.Y|r|jOzq]Cў#m1$~8HFZ<{TAWW $R s]dADm8 a{-^o;-5+LIL)r} TO΃3S9˲eǘDQ>0zy{hh!0'H X]d0T|p~άЇd)7_l'7AA${' @^=ka?B<(WGe2='10Ss @$I3Q)H]u>.FϿX;[AU33ϖd,]oRTj |R-`vVb۵1)emG/϶771^Sɢ8ț"pd'% e؆ @H(12(#I((U,QIR=I!ajBĶmDFkmL1@&vxGviAɒs[w ]Qΐs{>wiퟁ~}fɶ3!>{oyOy҇L$hAU vV*r.RUa$M Iv^m,KJ5eHb 6Ų iU >Ak=l6z\.2{@ Y1G@c$̀Q{1]<:s{ެHap,lHA$!C׻~VeYhӵhYm 8C|FMU`.#TL6MY>l_^g˓a,qScVFKOZ"&) |W_׳r:yu4T6A*1_xӺ}TG&zH4b*sd>lګnzŋ_uR_~y&mI,պTH dN)*w3n`%ow. %b5jQ̞^.n;'㓣l9o7ՋwFN/zta%؅ )PT6?vC'/Q4#A_D wWI 1(ǂ$)ūguU7ͶkUdSw) 0sVhF9 ~]5}BB|O_gXٗM%I<G'bn]y[j.,=)3JbZ;cj}~@sP Cf3mN˔Ru]sK@ZIrW*p-Gx{ S,i`? !5u3oqC@DxGĚ%(G lg0f\R(fGj5V  $sE|NfKcDdi2eQZc0%׊8%5 [Mw7R)CJ*@@*$تSh12p®>8 I#9Zs2In9+#d-gԈ$aLD"rscf[6ή7t0qyuvuu~Z9B `5G?9Z,M7/!$Dm {H;MNxO5Jo]%4)$m4qȨЂ*;Z%ԇ~ B5O?nlYE,a,9aID }Cb|ܑv CZ–u( eXm-q@x6?j6V6ښ!뛛DqTa1ֳtqo=[o7Xhʇ^Z!3 GNUG!q󫦴|>;X'9Ia!}1σֺo h±?㦡)AaCpȐ-D\wN) '2?}(v_l6l6HRԃN~`qo_< PyZ1)+]n|ķL сr^wX)Dlw>a Ngye3,(\їM2RSdI cbbL"HtDU;>ժ4͌Z׳z\qt4_uCPU8t]KN j5haBA$&RDF䝏1eCPH@9 ޟ1Wwn0H2ǂ8 "L)ebȾ+̜@PxM) m}.Nn/#}EAs竵/_(˿<99yyFD @(p4kk+ C fuSL)b|}~Cȧsk[hȜʢԚζQVsba΃2B!6е-siRfͦ')_ژĬ4#VD1Șj (38!n6mެ0z lJa望fnRt& Zkm뛾}J(V"Rp W$7חEaif>I>#olNkӮ.cќ^lͫLRIMco⧧GMMΣGdzf^ I@ݴg&fCE9@%pA/9@􃫪*b- H6[a<=/嬲E9jLi|ehPZmqmYU EQ}En75P弄 Mդ|?&S .r-wD!2n1^OcW>jD1CH!c({+-8|s`݇Oi䞷OD !t]D}I~0~3bFѝmȨɬOj[DJ)kqv@xW;h\3 d90$!7;gmu\ҨB椐ĸ"3%1sLP)?(+r!C !R "9]PjPF( H !Rtuq|l{"M}JV7>W_4\_]b4El0nj崚ǤB@43ЇmcQJ$J׷ eU_.CՊ;`ZM=: RDKH*t5hՊ:%!2Z+RDF|>_R.@`53Bؿ"&Zk@*6FkR)ŔRݡ.RVuZm%EͬY-b\/,$];\h9 /{W^baY)ntnqZb)F(+Vz}"$NnBޏ;@G'ڶ;??̵h,(]uFYQ!)A@Qc&b$>=)mmrη~GW_\o嗿nkh>\ L!MJWu̼jRv[U]حW;!QLCRJDRPu.rQ.ն vSZ[ŢȦŘ"gڒH[WNGi\KHb1V+Rѹ! @؇|c+TmU\_8Y.V^HuNL' ޯWka60fOI'&ȉA(6D`DL1"3$&s2yGBl]~GWWM[5V)#`=a{oǟ`31-os Tk IDAT"/]gI4uY)4 4)M!NL+Ɖ^UU^{̄ݬ r4uJq^]]]pE@Pc SRzKFSJGeH>w\"~M?W;u8gAF,Agsrg`,!z^ϭ*nl5?\C`C 'N!rX@8EhڬלBJ,B_~T3Fs|;O3 o臲(# Յ\`=--&8(bIα>D?kUMu}wOa p0gI+fMm cvsnyD/shp);(?B>hW|E+(]~/So8Ν?9Q{{GrrN*w΃I`g{MmYd1w&ʾeڕil-%` .lZ&]]2t >͵S>Lc6r1c.ca?&W-,8*%sbl=s5hX[_.c!fFIkBE RL†:P"j LCm F؈ݟ0*ܧy1ogѦHis=7ZX/S8E60Vd¢J^\^KXK{úK1R !sx8$ 1~H)yo֛k5)k1*J)#PV0ZĜdk;"$1Ѩ<ٞ=qED#iNcgϞ=z8S*JV 3UB)dc$BngY]ﭵ0rrjȖ:f)@SZ|yv4j%$)REJRl1U}^W/^DRͣ'ɖ_\nWmPT j;$r9DV1EmJ8+a@'齀UUab]c_Bmq/;l& iUAa%k_^o"JS Z鳫BCF[SiTD&HĐ|%yXeLafpFH3SHXF׿ U?|RՋs?l?Zv@Fi C˲, K$*pE[ " $&3`oT*]eS׭\!+O>?9=6xyvٮVIhmbv}㿼p헯SlY3y ۶U¦rsW[rSb,tW=}rSsA9c(}@"xӬ՛OnAoDrc2+UrpDߴ%qO?x8::U=@GxW 1q>x8J*I~BVyj!O8!CEe@B`a䄊P;'[0ǘv =NE_3_}u^](V TX5F !F H2=-2,}. &67gGV45aH’XR VL"2YDnmx@tAj"ĎSwPޠ(@Oxt޹/ #)H k\>uNm- DA`$)'bJB0> 2FN΅uaNSUU(SJA)C&eڡVkXj%w@.rZʃO!BDƘJcQƪSJI!flZFzJap\^ljέɼQ>2<<Ոc8+mH[U"HIZbW%=sX2G,ON|6\>zm;VeafVPbY @<~F/^]$I-%N$/  {NAH-&@uwmneK&e}NQ8gA]%#  pIhu!TVCP4\'>\QJk4` i1TeLb}yi8`@b jPÚ1I) .Э6[|_ebHFc$Sby]E}}մMv;Rc m]!,g}?讆aQWNN9:m,Gb{Fx6ϓQR } 3u\I:SfxXyÿ}_c# %{;o]h~k?*ދB-dLB)Hemdq ab 0!gJDv=<תVhRJAb!+ __ޔ-gegl?|qzU%EU1B׶uQCSF!|iJPv_$RWeU[R7~j>=yޮ/o}+ Tj|.kslW' Zܾ{%1<,S\q-t1gxO-k07^e_Gh1UԀnB, h*sCJ5&Ù') QjQD:Hr)6%R"B|p aBRkV*GmREr+:}nS8%OCR~AY2]oe9={ɳ6m777c]Vu]6S P~u]F('8 CV$"!r٠"aV(ArIjJA %Mױ01[L c)%zuKʊ2,z7ׄRZ[7fw˦\\WEDst|ɳLQU/I! p?[ jRsCl%|3#MPF^]w\f{>EsruĔ(at!+(h@HI I(nҌԥi̤0"Ѐз6VUB`z[<=9y>㺽>*q0y|im]_A X T !ȎafIEAhv.:F9Zh^߼\+37$Cry'ǨR_xY# }Gތ3kNE@*F_<x廍T \JSuQqq}434e̜5I<˪|Σ*EQE5-r>gەY$M-K5[,LaAd?w>(=85YI?3uY;ZDL8{;:|eƹ'(/*tRg|e]z$ 9vBUrJ q"cTj[!I"()%@l6jʣzuPTERS&AJRqm iBFwg/ο\4_/~rFV@T!rld̜%8u9Ƅ$ѽ]sX?<}CUg w&qdqw]|rs-LQ7@@F@+HDzj8JL(!ha $@XmFZ\ 0tCZ}d7Mb&sȒi^9pAʲ:H !ev!innZ`<!vVHٕ6 s4 F1yܦ,˜%o6Ic^zcS}ιDT]( ,j7^W)h@ݶ e2d+* [fSVkâ)%8*?X g/^_/%"sVBin<#U% /Q)> nuulrihb!Ni@D;#9DH;݉45&u,TY|J7//ګp_ntbn⌶go$Eܹzu#j18ԏqBTl{QEֈ0h[(@4gX.n](^}sܻrQW|u?|'VU $hq{g3=X˿͓}9LR)q%޻o;(2@e댭cԱ7?W^m9ʲ\.gq65M3 eA^`BҎ8dyK_',x:7mnUY"|A,Nq 8|`NuA݁;ҫ}^. 5a4P$AX儏wlWFQڢڬ//o.ۏ;G,p?;£G2BE*f# Y#a[bQkKP/f~|hǧG$~V*xF(eV &@BU1IY?|'[y@`EhTct:Se3Mϒvaf-aI^iE`?TWyQ*4@}tf!) )&<@F@E(jT X)@D0}!H"*maFI)R ˲,BDb"}bd0@UJ)D%`z}X,ʲN!kϖr4 4pR@w1sD=Q߶ )CUU}߇Xq e>sZ/cn'JEUcckAD,J89BmUSZ|pbIw> ݠ<3BY7E0wr\ۦ?aud3$h*CQ1 X@B@A&1FVrֆ@ tb`7כz>cRAx۵ڭRW=(d T (i`@A6"ޯ1$qLg*%MJQsdT_Wˢ?z`ʮHf}ߙa 5Q~uve|9(c@M$$9&VJEa޴kM 6Զۭ5byr}uX,}yr,a8;lgMd"i;݊ɤ=ȁ]>]s[m9n )MOu]#97Of"N/adӧO{̹L49bxQQmۦml$C=H!t(I@HQrPk??͑Z.*eB"(]7H]D 8Iy~( ' 7~LOd[~Nj_?T=(1کwc9@pV5E8VvѢ]6G3O`[00BTZ c@$%%3{חqY[ZK7WgWQ m뽋0 ;N$E0J !HDG'hQϖGf{ݻO_}ng~ubBJ# CHlڲk]泹@pCJ)Z MaJCvyN9Q_IY]"d~Nv!y֧;Wong`mS&Ю ý[ Q-3a= dMs>0X641!aL})P0!3$?8@ GN3Pc b)$VA@"cH+ Ą>dRJ੏MUGap]im*򋗳FT׫^;T1jе0/CEae!$Be1t A# fm*"RJ‘SfdPkQ!VڸvVb)@ιB߇J hg~ӿٯO[6~zT}Pz{O VuSiĵM4tQP)$P ՍgKDPowRݾyBsVBq P]5zkk&7"h[4J7!&"W7l$#-Pc?u)IQ5U>js5 '۵>2ΚuXߴU/!񼮕*yN-;]W?䳳6j>*;[4EUmTP0q=ū~>[|yVY(֛+G+CC0ls$D1k$wXbb̵+ʰ&f=s;>10*昒[/~Rj٬LYjiIVPp7"<\6?N㠪~HDCD0giɑ%R8AJ)q@~ٵJQZ։%K%fA{RZiM8<*c _fF" O#zJO deǜ0@)BuA D["/'7L +B4!*c2btrO~tś>_|{V trؽP  8)E 9kd0BD6Xc2ֹ.1u,>XĘ7ԵMɅ .a^[wưo#~ȷڋgeOwhJSy8ZW/U=?YohwXx6|o?<=N\;7?'[>0zy{!RA F@|" F}^[vF$"Chm!dDH90}F$dݝӴ'S)=20'sTpUʧO1a!C:@R BcFˊ5mUj [pBAkmACr ½ڮcBF!STLYocdRvm} $LH { ~^..nVm# YbL]ߥfnA SuRă*$RBd.JcN$0Jvz iuM;@,v- زRڰA8A!3/sr |UuxމVZ;ES?9nl8hG'?}O˟<_|~z\dzBN?=[5f{[V,IRI)1ι5c(YJ5$͋BN2D8G4 NCL@ Gfm(8&hyzlPG[ېP(%`F}I)U6Fn{FBHE"4-($@[2~gf IDATwM16.描N\!/Xu?E̩:B1&NuUT _|g??Ѣ*vڶ "fJͲ`k x<~Ϟs||$.‹ˋ+Vzݻ!%P&Ą*E*fwHI` I>ЅH! kCtjn=}(-M1G=|LqcPr]FhLQiAD hE Z +o(Fa!$~P0(~kTdy&X* [@%o-)cZߠfn5^Kv2kb Σ`l (A:MpAjF7 *v vHTU7e˜Tߤ6;G'G W?O?U=RnYϞ/ھNΓg?{j}}?8jL.4+M>?z dWUU $$ $BI (Pc3DMdwE;Ɓ a""bt#i:2`FT.A0TL\:kq^P`Rb HA!!xI)ȡ06%iJ $fa',؅>p`%!E}v1j2a+BpD9GD x;lD8rB5iT&$^}i+TIz#jX !rOudv!oǗ|858uYws;9"RdXFPDMp(J&$B(;UQ+!O,~iꗊMP N$Ql} JrBYVCw;Yi2%TvovH@TS Z+8_?wz6~bxݛ@J2$dBmeRj*Sv{ݯ ,9&nHbnVqf(S xQG߂>|# Υ$D"‹ Y1F{ +(&rص3̕\`.˒tRE[d9fɸ+P/V+6Q~ 4-eRb:fiL-˲k{O<)zP̽ ڤԢ{4gTnmFqI?xDЍ- |p%)ʹ&z=|q/:k!OMi=(9ˑOs=8[Է|$  "hڏa׃.תm@JONla泺*k˗/΂r *gu]^>Cy|Ig6Ď./z|>Onnn./{x|wR_7?~f]ȄQʬnRե/_|UuiG??ܠ ͞#Isϳ{DL ٤(i$3p_gF/36<؝;WW)RdI굺V@9UT, |w-rq#FQmYHcޘHifw_Mcݱ+J5ڔ +y ^SZx^FD";*V(,Gc>Ds&&jq|/U|4$HQ 042[g|ժ&caai z "bKi\DA|T!S*.sܓPES]\d8:-C20.tZʪ|=ʳx0J`q<8F Uj>k3&HZe7d F+NNNTؐ^˻}-bl^N_J>ɳM)fҫѩEx_dcZ.gqvv:RHEhبP٢a'ݠzx2=Yi0uJb=DD6*lY.!88jU15#GB+?/gr, xq1{߽}r~vzrTV'g݇;)22ĈhTl$#Bj %=Vv MOclU54>ĐyV(q󌫪JCbBIL"&![U,Z]_LEbrxW3sӚ羪h4')[YeY3LiBU51*"9AGW?t@Z*1t zHiiԽ.U5W&5֫j[m ]:pY6 <$'|=fW?8;zq',sߨs,Ql0(BLF#3 zYhJ;g_'UU/~/qY|GEQTj^}/e>=ӷݽX,~2[|BUazPbTcʝv 7;X[701M1 r }Ew# rɱppW[ $"G;Lh-!` $ Azň }-[E!Hb檩0+O*Q0"f^/# 3Def q^m`"#J@AFGds E+ aDBDHuuj M3J%btF(fl0Һ.7yj_ե_,kБ:ƸQ}UH"l&D#z<=?>:@jW1ԍ%Z"wBLityߢ _'GLw4-Ϗb^/MS-,]onlb,W%r2hߔq|_|_|ŻAV٢"D[aWϏK.P bT^}$kD2)`8qhCx2qE$̦ڇ<XkCEeY﷟1}J⋢]E~iB@LEDrdقM{%MUB aߋHduHtY9$NUpXqQi|=tnv:}z2#owOOz{̟qe }7)yͳ^A;YɤWp5MbE3Y17[g{;ApSʬ̑ch"%#uAa;o Lߊs FCok^ݼ&rf5x (#F *CS(}TՁ "#"Jѳ' " ~Xkc`2"FP䮒 P+ D Qâ HԨ>JԵ!vΥHGs7bH*ɤg@93IUU@`fW^ kb4̺6- 0\aQ$mu,F6}Հz*AnEfl^WJJ^fYDT( ^Z;Gs#!^=֎xE,Ɲ"&IZD(`<6pOYcg'Y 6~|e#^BB+_(n[)c.@1$rh-DCc lRUAAt޾h}ո/~@F佢""wpq;<]J0qټ%66Q8%IsΉŪ",ƣ~]joݚ ; ,HpU*Z_|x2)֋xڿ{z8}蔡A*6M, wp%[|RD,,]U[GfD b1p &nՌqfAo8kɲ,x$FcLyf46" &D3ibsO W1L|\M&Ģ(feCY7"8޿\.fR _=.w?*Ԕ Hx̟ DԹ sJ^S4[7ROkC_m745/WxW+=&탆6}q{ ۆ\鯗DWCTe="V jqtx\-zY~w獻w MSOU>|bz7=|p ?k.l<j /)}t_-ώO=~dZi7=,˒)H"s4ۜVm6ҍCf$ƛЮkr3 f{5nIj "A`fz趿טF Wh(dkF!TdnUM %DQ|)`5]mDBhmkm&&H 0A$%Q|^}lb>=ORc M(*!; B*6Zz:6CThiDLH MCa^bHu߭U9eBc ;Y"nj\x!J p H$4^֫Ky?v_>q(=%LS%+c4K:~IadԨ 16MAMT|UrcעlBl[Rm^u-D3ΰ rی|b~GuY>y 86Q  2/f}OyCƒɇ ɤ>D}(h49HhJq\c5zrZ-Lf(TM}D T0y>ny>D?>|xpxrva` h 6q10Q"$ͦI)Ƙt<ϓ65$ nD sfnz>/ˤJipʵ!tAW5#"{?Lj&j2.ۊzk5X]AkK@"! tXqJ[^Ze5An:uWiOg{|Vn5)7\Rfڟzk{jMr~ôNMQtѽ,JY^v AQM> 4IǦ@jBhƈb`m嬩14eU.C-y?8YpoG7G|>rsj5[_?쌳M&Ϟ?~>앋ӏ;=3ݑG ?_?b~oEJX#FBds٣M^ȴ0]o`uMM/!nmmy72 (Ȇ gMiCO9VeYC8Dࣨd  nP  l u9c "HPq@FAl6JSQDT5 , "u]G$B7.E++)B1ܘm-ag4MM!5M bUQMx+xIYEe p0+b8]V<U_-Bd77u8]ONnU%Cum`#.7ݖOSvz¡llni` %Jx&U1**yMeg*FB2@ꃯMfH45/%W.n ]m@F$10^,:w`' 4`hnbfjVA^l\y EU@D.ի:zD-h|oz%UDE(y`΃[Zv}GQr2QS4 3&llRƘ\&/M/AMCCeB囐N4k \ T\HjU-Ĭyŧ clR56*"J tN2m"j]U92!*Q;sG9.K E tE}:]{o}-*ěγَ6N: ',{NЍQ_^Qni[Q?-֑w^"ǫR:X"]4R>o9VM^tx뺶5MemV5*xv.s~*C b鲮{/u wӯ^|6_=}l9|{/yh3! z}jցh}{o}wy{8"O2#$f&cƲQ"&FjњWߎk @JG@UIՅtyW0 S(мnQ]5DleW^+^ "%Zgs" 1 Ld ;g1)G`flH @@k9962A% \F"c*D UYA"k jH& +% ް*%jJ7P1HTP$RLIB÷f ] `[nKz׫1%U-ijg3647u08N)|U!zr>#^'㪪LVۥ|g|O~|鲞Ų.'4DRvB*tyGA7$;XjI=_UA>$P@c1X֫ZT98u|Ķչ^%`7y!f žUyz|ƣ'dM#f.˜!BTیbjecDQU|ͦ3F}ǹ,^Ld>(U@},ro}ӳr1=x$VK~g4+wˣePB>j ""|<E4uW`::&{Y)¹ifNAKd,OR-Dc FarZHMBMwR&$BrHxfQ6a밨0 0 oB),K܃fYez`!m?T( H:666>(- MBemkt-#:vJHɎ]1yDH @iR oDp1%v1۰]ujz)oSa_76&޿Y\CWĬoƫCɩe)#"5/dW~D܅n~Lߐ5Imwbk;maں(ˌ<JZ2+9:xt>oDM0uէ>{o\Oܽ7>/~?O~O~x|trrz6Ousزjœg/xmc>VΚ(_Xcwyן||:e__"bYK"(P#u !\̇AU0zsDLlA:]<}6knJQGD`@r:k"dZg=&UUD.)p׽Mn<[DC_rO,ԍ3v @C&՝^hlKdRlM sn.Jٸ IDAT^hFbC&h2/T{16g;T4Md)L,1̚ Iba<d "n5> mOz)AAC ADUDE$E $c C{N"i 68gsBE)h-cQuU7u}f6S Rj5b0 =10D%uCQ^״t0"clMeD( AĐm}H̆wј𤀠I7ƪx""[`GL5u7e٬ʊ)%!WJ~m cm&Dj F޹[aXlyl)&E8,?'4ՠ?hʕa,"kC]F"&L2g a,%}^eYu@|csk{_D0'O2^Aa&)]͈(ŜVs,RTiMĩ` 6cl}@26X.*r*{xh. bEF$c,"\QcrއcUa2OO B'$5 F22VOl;_ .hٜ^?hR:eӁFB4نA5&C: Nŗbt` l4okߘWZ:U-;U߰f؞*d* \E BX~ÞsSuȦk.)3FAFcML)Sa {rs>_?SGϾ x闏?ƾioݞ''8wdV~o}eUgo>/>Ϳݻ/>}QÁ! ECޗLCS3頟O}3 eXkL?l.ݴ^}b+qB4m,WckI[鶳]w5{G̀ܺ54elP;~keᎱycdw0)ʇ ɂrUNʇd{e@lAYl,De]Vp"K )벪ыADRDvdvkB[A 4xC "l8c\G tlȘo9fR 5Pl:Ţp΄zY> xl!6A2F#glA;xQ7*I[^sZy~MvI} iwHK_ ZUzN-yDEV*:@k Icscjuۘ)";S25$у"YNfU1x],f=|e&+rebIRC2hGYﰥû?y˪VļwFe7.wγOO˓ټ ^5&Gbjl7O5\RUDDR4S+5oZll'Ĩh$bDDFL;(DlDbRU]H)s51Y_벪l_~4T la"DIׂB"FTLz"]*} F@Ӧ0"qصk8Е嬥u;!APtRL6ͺd'~S!B7⫷~W Ta)(ppÂ҅ BZ* v!K^Wr'``#pU6^w $g;OMPQU  DdBDN\.Aˣ;߿ό_~5.yY.v޹7_O&!j|Q\ <ʹ`fPlԩ#LH(a!1z תw%T22jeyJlor"^P`4IRjapX لx*Wqh&!ʗl>;>&(F4Eo`莏'BUUBӷn+`dQ@AfY21 *Gݻfv/5{-n l  !H FUPNUaccX6)c3@AzU.~֟^\䷊dr~tv~zQdrUQ!QQf:@c.;ן|tꩄ Ԧ.ђq*HݦBV^WU^5|ժ)IGI>mw@4¬  UT*ks AR&EJ [edw\&{ŸUy{#];ǟ||gG^ دXCa|wW/`R-ļ Xya6B AEMH[RӁz*(!D$)jZH@[jzbA1{!4>eyΌǦ|Q(\LEWM5^BQP$LHRXlmf0k߀RDBl\?NӃB4_"鈔A R&5F›%KPΒg.OI0XL5ݽnjt.0_syuר!WjiѦ؆3QjYD({~{ѣшO?I>M&N7p٬NNnΦz흝|twvoλ2ƿOeyΝ|~|xh}A]ϾX,?89x߽?w99;; ݿ}ogKtz~Ok-JxbV:{kf_6MyĮӞ_kk\WLܷ8HӔ?a4et4Rqw l^dy|Idi] Vt}4Z  I1׺>Ĵ#%f!m,hX5MJ/m]  R̈́!H K H@̜ZgmjZ1CHT0X묈DFClfyJFYMHS[k>.˲^yt{Mz,OW5fC} ZqubQl6x/ݯ (*H HK{AD! Lnk5m!MzԿiS\ ֿ}v&7lV~,&Fp4? Dɧ_],@}J P8HA<")rK3`ٗ!ԞT3܄|HGE ώV_\+(ټruQW3ؙ0Vbodv4As&6P3Y먻n(כknllԷq"u#]R_Ljq1jAgp!bBI.ij"2Jd" Ab\l-K:x4:+n+qEi{G]Y$EM5{[oxs4}Nİ $11*5Ͳ&IL֛x-&d{ɼ x#_^5-w׏P+#ԧCxE#uNdJvUmͫoq6>c"ފD´.cǀ! u+EY7Lv pY޽[o7eyvq,VddszG·>F˪ yo;Q1t3=yU_zO׿y_FWLv{wju1;!~#bK`dq :P$ޛmeN;˘Y$MɞZ3CLlT@APD%BlxH%(Y`xOM p4[=?\,W~贌0eCtQ?=82jmԙ|h{;-Y^ѸpVjQ`PIU :yDbN|V4 @ȩJ' 1H *D@adž  k 63d&\lB㙩\VoMnYΚ^" c]ۻ;?;,[vsB ބ:f6cl۽2 ۷+/`vE QfWdbܰ9R`ú轻?wCsz,6dlq#^,DZl1FB-rGE1y)5ZK52/^ $9;3E.5$ cp %HQEؔkNR^UbAD0lc5I'ؐWcRD;iTTFQQHIJLM@Qh|*+kfmMwOV 6-4=v]aY&{(YaXm+5ߩ*LTWuiV]Dˇ/mj6vٜ/F U %!aZfÃ߻7e'3g/3WL:,έɝ=[䷛**򋯾>:]|W{un>>|Uʲo߹5 >c(+ɋw~aEç;w^?Ul߾7sq~,ӕzu-(5:3 &Ipc*i~]Tmg^u.\9V[iPH^0/ywŭp8ݝ9?a'Ow/ ޾`1VQrZOOȗh4^,^o{ٟ|9gmz>7UEwoj$Ѩ흜LL&;TΎ-w| O>=>;ݾࡏI[i'e ڽAVjz 5/n+zCQT"L&WI5Qb qT d(eWrYڇE~_<~yz1B >b2ͫbha5E#sr]=3_}hbC ӓtZTnGJ BpdڢM! GdDEU 1"UXcMؠZ֠ӳf6*CyaNG1!zl@vw; tUOƫB(v7'vR'nHbKmV㬝5! ~BMj7>ټ*h JPNOiٷ0fO}lu=/Φ÷>o<½N˅TS55>"BJU3cW;ݑQиbD>~vp|Z%79bl 3lg`4>j,hm1oSHFLkKBC Ɖ?CiD|^]֤bb SjUDbCl6Pւ vL mv:{:grm"|w<v:??>m~UM UPȄ HA^zoQ}Қ sy-UPIW*ěXQt=dL6.EiVe} ӅAy\>5YO&C:BTRr@R7!yYu7>NEöFVFВu՚YդF>d.gF2LIQ!1Dh"p"$ %D``Kh9"NX(SCj=Wͳ=k $lZ9w~r:;ְ%v,3$,Uĵ  vW柧Vs>Z6҈fsU_u/jGl_;ʯ]6\n=A™ ɒ:R:YUj(-iVмELIh ϋ{'t8c`eݬrzz|8jqsx~o0a[UwhD @´H}7D*Ju"X +2fT载hyvˡ^Ƥgzrګb4Ԫ.+Q29vvg c,%8q!t& ibĈ(oc{MHWi%SEH]aM.0lLL0w۪0Wh HIYIM]B⥔\t ᱣk^ylVrUJYi ѵf흨/mtjҫ߰Ld>l%ֶz\׮:c02 "/⫮ -}]^M'\z鶽(6Mu}0Om{ߘ<) QA;}(1Zc5o\QOu1 sPşx4L$A!e`@ bec(MXdh kL+ zFUH ǙAy5?>?rtzX{Yo}ۿ9^ݽr4.`8.fwkƻ{~u IDAT}>7ս[Vtɾ3<zÇov—_|uރ|e]oQ6yLS2O'gǫ( RQ@ƀ㘃 *0@Q@E!U$4iY}OV !H2[%YP ]"MI 1ڮmM F @A u:2NMƁ-6 0!HV˪U#bcC6@c2K [& 4ˈ+aqY0K1n T *20`!B 8FjI"012<7 UX) gj1z\&a+ެɑ,K;naGUͮަ9&i&EzЋ~l$E$j$՜.vuw-YU:"+kF0 8~[yLI4նV7{I8<>m4*VV~E6:)CH'p<d :ەll'ON&3$4/șfHW˒9.ǔ s}'k1̛˷:k+cܓn^V1…@ XvVaYa@ַoCF,cY# RWș6v:ˏ.*FѣwnmŽ^|،Jw?d<ӣqn߾_Jqh7(Ɩdb0.1DZWl rsjuA0/MmJ火Ehβ^|09zBvuYU l^XE"xrٵ2m$#X:vϯ{oM:l5H#-hvo[_s.9Yӣ&&ʝ]󯭸kn኱ o{3wqdY΅7#GxqxBȁlM/5yGi#b"D!׊o46FLΎO_ʲΝg$G~gt31nt8 ./>}KPe;w^j9K'Rnr~6Kd:OWTg_?iwiz|zθolݻw_ n_V4E+ D΁s֚ʑ@AsyPй?4ܨ<) cuyoW5!KŐ{ӥD;w=< ÿIb{yUVGGYڝ'<^@::g///U$Ic8gy^e YEܱڔYKΰ~Bʃ·t4ZWGfS(NNN_:̳Bg?3k|d\G A0 s!-% L !G%_0NG\7F2<1ZSkwRZ6v_X8hvz}ݦZ\Z Zdi" y#M6Y9KHYmZCq vɒ5T gKAI$K)$挓B!9Dƅ1L )*W*Dwvp (DFe1ta#$h{wk:E4Iȑsue!/In ED:g1!lY= G\0 2`\mDY?k7\ZcFnFpUo^^ 󮓿krD)DQdl;0P>Kn \\-]s׏vv~G+"Jkw+Ea++DQ!u6F-;PӬsz7ь u !Pg<+_]cג%H9֩n-F땦\d-KnsW6k7XkmIY`i #'ԔK[ۜ7ve>0U-:rs0-P XZTΒ@P0Š ?;?,sBv_*mno?6FiQHtO?;ڭͭ$#EYۓB鄁{pãt4[2 /^bwzVzaltv:퍍͝x7z9=x/='[C3LXW0L#s&jNc 8cmXι n UKEja>fۄ{.Vwe q`#Vrӈd*4֌lGlQ19~%lM@ހXQ, -E-fȄC@c*ЙY:fyƍ jdՎ*(g*j7̒Fn5 wB:rLp.ŴaG>?{'IIbKEp3bNIY7,9dk#f-Ol '‚V" ,!c̺L }%G("fUYkbFn5_u~v#i7boS |TčrHtav'VHb#PPrFplJhn?|⇒EMYHF:ͼ/|#k~L𚭍8skwXKrKs*_]-|ƣ?^;U/Z 7,(6[d=U 5VosMZԚ+ۜZTMVogа5_>s.V;Pݦ"D$ZCtOӽ=oC`\!t6%~|kœ__mlmww^޻y7A8W'_zJ?2kYartvv/^p hݼ(8~7O?t9Y??x:iIQ{_,(ΒXr'DA l`n<+3XȈ2vd;ījQ,(~=ம^;oEBpu_5˘ $If$$we1"X6F .\!`qD!@ {3+k%.2GprjjHhSU>ʹqF~%bL;!7Ӣhw\`^LPFQ`k73D ,9'ڽ:?~uh0 "dJDa `­浯 X!X; 9ʿRJ|Z@d+DW7#X7 g\^E1V4K3ch4gV6f.f=2U#NN^<Y3wt11,p(&8Wgw6[)'va'PNM>.4 PeIVQc<+!h8ӨշҼ@@VJBmJtU Y!@wwmU(]A zp׌U(qpv4\%8)\z$9s$"G/ҙ>+j#q| <솬`V' >am67X#]iQ*ܑ-Gt:3+1%nX7-OnVA&ߞu- iF;[bFxʵZl@nnn5. ᶶzuvmy,&~Em5|?^4,[9L0*@r[o?NS+BOMu- FtOE}F*LFo=;=?mΫ#GܻYg.wvv11EUNӊdr1]eQ1@`I{:][6ӾFPYsQ]cEV]eCUӢ\f-ɖ&!ݶ\һpz0DZaZTisi5g8`F jRr匃N[əyɀh.!rsl 9  #'NL)dșd 1(XZ]YG@ʨۑAL> #g0N#sI:5nSk-(iEJѽ(˓g'tfDFe:`0@$窪 ,\15ox GV qe,dwbG!+9R"EA`6HPs!;N .租|Ͼg$|{DInowU 3,LpDm#+&ӏ5hʇw6._@[Ɓw6zfbtuz|odN+t!HXкszbLjNkwnEm58FmooUEqt* lVmGʧc)$\Br!ȡfza$B`-< fK~vZiV`nOKVkE;o`edPnixTH]:p"6֍;7ZWb_,Snkr#G[;<]&jlnp)x%3o@nԿ\]εDƑn.9ûW2b@Xkɰ ]KN2T?ŇZVW '`V/-v",޹sN?>>w !ݯ?ӧOwRa ֝S)i3'Ǐ2P W2@re6Kn?dEeYQG==;OgV/_"Ϭ ] EDhအT OR *22@j" "{:.[p;%|3uh:]]۬w؂,W˳e哼v8%>U1AYh+rH CN0΁PkckvG*/NDkgCp Cb@i[O@&URS,L^LJtZ& QL iDXs.FJujᲤ''o_Ƹ@ef\ZP1Zk qV,+(WZ˃ !XԎ&eUYVi;r%K>{.MQU4$m9?9j5<}y*舒M?q;GX 4VIBA nvZD1 ^?/FNl4d2V'G}j9g`C@ ZdfeuU Nޔ -˲Dy7(2!D\pUVU齜K@/jW?Dyj<<71"Gs+@Uo$╚a@vi#U<to\7>7v~~.t:EQTUe$U Vik[VR!cѡXZ.)P͛W[k{>-W[qV8XP^><#Py{"ՠl}5hv{3EѕJopϾo]5Jhp@?8::N`tn6f9M]gZIwzzxt:MN=<9-(7;{_?y5Y7ݴZNg^˲dEQQ~oNIe\n_6[/OWqqS͊*u&b,a1,isЕ3]||&Tbi1fUy_rpz[^oI,>Wz[n:`.B(R\bynY-u8g1 rKDHkM)V0KNc Xk-FRiFK,h0nIhpJ,QvwZ p%f׳LFA:lo`DP02,-hZ&LʼڑP2\r<&$ [NBoM)ֺ|[,`ܷ1d썅Z{(^,ѯ&k04Vk[ivUވ0bst|aW͐IƝ0鶚.<`ˣ(g?~g_1'9؏0VlLEQLSr 4䔄`<φS$F̡<9>9;?ĪPuڽ<ϓfqUhFx2΢֤Z-$`s`MB9I̻V.A?s.s0X? T'KwNY*iE0 מy3ok}VGH!Xc9ǻw{ICk W'DB@0!`\p.(Ng~{ty܉G7l7Ͽ%I{ww i:2;8888~w~T]YGt 2:\g^{t|h5<ϳ, ê8JFQ j;Ʉ1wB&l6N2AVdFҥ6ơJ<8UQOXId@r+ UiuE q֤ IDATaFXU1 rBI ]Wqu/*#\zvb[p}dVk]UUY~X )nyWf"CvWϻykni뷪pͤ,$8!QeLArg\JE D=: VY V-[m1!T2ƅzY[紵eYq<]|0P" D\.;@W7^VeǁJrSLRm*..n6!`!b8pVhi<go/f Pt`!SD 9 l0<ݢNso fi-^CGEGdl9\!8[\f(`ZZ ߾fT礐ҫk7 52Eyx,/>AFw]&ags{ ags#3txO>J/Ͼ /4,ًv[v[~|}\Q, $o~}`HolL'nV!*@+kܽ~<߾x2ƽf#0&cT5biDGh{ޖRR$ʲϲYYY %"a:5ΕEZM*]9:C"Xk3ohrZmQO1YokR[p9TE.heYB,ˌ1Fcsuֲ @Ń ňI}v}Ҵbgum%%m|'K|ݎso'9{|^'}`q4E1a$V+8R .9b(e%l&ltH_r,`sWbx1&jB(Mgst1wea8i4q'pXVu. C*lwܽFWJm`ǧyq!T~/ hFIgwWTx;?;u>|p/8\U0L6?qa('S]x8VVg!V("X(2iVnn#띈5m%c- Qʿ''0E?{Srr!YeLJ83)s$PA`B7;;9mv# ,M"gfivYVbp)pO;` '/£w9w7ks$$s3n[I*﷛VlV X{{*gK CN3$!P 3G2*P*gY27oie9O@Z% h@/x7]vt3KYEP[" $4q8R9B2B2[eaȽWs*Z Eq'R*DFq.qp1ATlno'q( q, srz>掰w6$Mƀ667%C:N( ep0}2wZ pϭZ<69*x,k}ꧼZq6r-X[X^iktsx|֢^`TDF_ NF@=iG:ۛg秓iѣljyEWGiE)B˪8 $pjDNFlg/_Q/B. ;{w;ǟ~N'Y)Go/y!Sn8TqUi,&W/__ ^ Jlmv7@$Ja:%2)w[[v#4#yӺtMG0T y)IE2CV%Yt5X*]Yk|'B5 `u jujk5JU=RcK)2`Ax]]rtte"knWIx1\<]]]o^2rąڮ꟤~X6"MA\ێ"XmUUjmh;MYUBEUUFWu18BD#5J?/NO?7Ȓyiȫ,¨ dg,dLrT*u8㌕eRey~||l0`PVJn6Z^s18OiYJ)]UEY~,W_|)9)YǤi&͆א0WX,̳@ra#vۉ{GlvyqV%J82E1saTJyEk-Z/,7nHot +'w|Cz_ r=I ZtW9Kg"rf \% :cB0}C,aR*),mG"|5?)EEQq΍@TA`E$-rlGEU( ir]htyyuh6fyFgEj6xO9GK.$J0J)x( X9P*B)J]UKYYqeEAWr2pDVӓׯ_ !Fޭ4<@0m`20&]'οzq|-CKsBoP牪C  zG۪oz)q1`sӢEjYO`.Z`c [EWҫ*KUgS uZru߹u9 s4U3 r$I٢!NgL0q 3kqPV WLŸȳ痓ΝͽY] artU!@)) r V319WRnE1 |&Hϟ52V,ˊ"pfQEQmgPq[Nq~YUUNnOgS缇*9dQѲHHpNO'(pB"x~g@ckƂt%CՆG1șS1U+=a*A@En#Q!"75Q9`Aqyr0fcj0>G .WAx!DQHbcsΕ*ʢ*KT9c+8"w8jơ\"Ƒ Nѣ0 F|&9DI2N0 G L//>{gOFUqZj:]-BD氆𾪕 +)z_GZkRƾ((i+ ֓kt3>jK !! rBY:;=?⸿G`t YiJj50bfyyO}H x{~qI\n.gid4u:ˤV̊lT PAոhG'VUӱI~qq1hxr4l:vv FeAĭ<˫@E:=?>:;9Jx2p${蓏wdϟ*c9R+XȀu4Q֦mlIC)F4MiY4KS!Dv̝J( 1tή z_;-\-Sq!#1:bugn9j+e! p!^[˾k-b%nl5s7CyR$,1'oA ۶4ʹUUO\x%WXH `9fty: ;ϟ}x2zw: B2 & F:c@&T:GyUi]Y!e^w2LfF3nuFW! v_~`0x;x<|hq>(LY.ֺlh4fT.87LQV L:g4 A+:0TO'8Tw~Ǐ}xiۺ`'tQEa# ct$`&ϖY_w/z=oBµ׵ai{9#dBV0@3Ogm(`93oJ;c8RH$w7kF#fk\gm}y "XlZY͊IQ* FT3SHpp{g?uj&93K"e 4ueYu(eQ|U,jT kͯ:_{"3>趌+  cu26Fhzv!Rml Gk 8Xkjܬ/,A95 H6PR*;nsq8?-9(bR%bDYVv5Y+0pFofA/+mi65l?zܰ2;\td8Y7{Vɳgߐɑ;;[F,%H)SBGtfiZka0,WJAEQ{,m6F#JXc"#9?E1k.]=_wuz!3,d| mƻ'0Y-VuװXa\?+ EJaa|;`rCoOKYrQ%៸šNxg Zoxޢ2y"rklQ:dC%3cdI7{lt|;eZ΂P`N77_z9( y$E#Ee:g1:N&x2|EH>Ya;^@ J 766Ǔζ ?xcscΎ.N鴬Jc5 llm4[t$ $#.&cY^Aā~ep20/fU9;;~5a{sfAgSYX\v !"8c,GO1Hw~lrc_ch-7@UcE(V`!ye,zy QPC(hM(VQH[W9ۆ,d# Bjw@))uJIW1M4M04EJ%3@)D 1ZJHgN:8%@JMU9I* 5%g˂mͬ4XET 5A^ml$ sr8g3ǟSlQ.1@ZU.TWnHTԣ{W|ڮrm<9!2e~=0 o^Șu49b@$gudYEd2=>:wE^?`ڹ݃q?\ ӼbApqqHY<qWGg!GhQ$'x/ ս;JÝ^x QvQf&םY"[3V+&! I~0b~2aÞр?3=E-&MVrXCdͺKU(DvVW޼y38w~4y: )Id@M2)i :kUɗ_+YG()ļu2vb\~w\wʙ˕'˺>p70sX_HP+7r IDؘ׌6j6???nLZǶg8^(LqƘeb̓r7[˓뾪"+_q9rܔqc?Q@EUuy4G\ANU#2Hdwt뇛E!&I sjE4Dܨ4zN!~XŸO/OR-|G IDATORŽw{|Ֆdgn?x}/d A5@x>?ΰ[w3\U2TbQMc{GwڪQf%fkal4Ţ):߯UgDu1<8QQ"i-6Y( 5HP-P{GɫGQ !p|:djɶ稰`kvӶ}p> I(ttP, Th2 )6M1.G ChUĹu4uYl8I#T09nZ@B ( ($HQ4:&Ѩ1(! UHd֨)"(6ĭȋFf0o&!0Dō_(\*"5@5D8=]5~/gUxur Gfz_{gYwEω&CИRTgWI׃j,g}xc'x8իQT/Qg"}OWO:?xyXµ|6_Vr竕2t,Vjձn2Gnߺu'_;?~GYs~ gt\_wl/Ն?wŤBR&r!BJzʪKl֨Vw'M0apG$E30Teð7vU\ AT6M( Jq="2*([<9Yz!rel6!I+(цfwd2ɘVn)2>p]k\vczߵsfȞG kuS-`km#G\{žNw.k_({ va\=J/\v݄-p_NT?UT"r<{|?؝z'=>}ųO]g_|S\|6Lkb6nXŨч$i䁀!Nf1LDI%rZf˾l>~w!e.i"lELd84!!2abF4Yeb QR$cUݖM @d E(8t@),Y WX^~Tb8~L tV`A^c o9lT 7orUz{=%e1@kzDgvS "rNN J 0*"$g1"YuསdaK/%M4qX-59ZvM]ՄT (!ݻH>b- #1aO+FS'7J`5&8j T)v׫!DRƱ@IkɣBI)c ksΎSh]㨺6\trBYTĜL aFP;6#r@63m&FfBy@nfCQn87c%5FR `=G^ ,# z*.8F sNUGO*=s^@Eu:Nu }GT1IqVB*$GXggC2 u]MqlǽMl[?xPIWƦ~>}:qcekwЕ4e)ţ|SUj!$1uՒq!F6j〚@m줥k.-o5v!2%~meT.lwgͰ"DT"BzVTEW7 ˸Df&ڃdW^sFzWSvdM#Ϋ>oߺuxM/\pMY={^>|W&n6?'{)(`/8ϒ1`) ""#}L(,*bc|VKTUeJ1kXtzU1*9J5!c 3h%ߧik c!1DM"1uiNo'.g~XjTSB0&&NfLta#2&k=Uui= ,&כW=7JZ0/9,۠a`EQHIbDH9zH]y ebI gcH )A/+IpU\"*BUT/s3y q%dW@s.!. АIg}8^ ]F€SZg~lĞ[=m\c)3@2i9'!V'ؾu{ɿcw< Ռ@f]w+Eyv*y )Kuȥpc_xMTgq:;8< 4UgQ}L (;N]&k91h!8J"-\Q˦|7dX QR:^tAjLA[֓Pv'TDc "FAWj2cߏ&|~zrXuryжeaJ%-fga&mV& c ޏO}XL'{} D벊gTЯ/?a7O:^fдӢ, D5R]ry_ 8m Vq ֮aggU,$kC߰v]m0}n&2ǛdN]|6N< VxxwGTu{+(n{fCH;?ۿz0mO|tpS>^֨ҕȰZ.B])>2.c)9J1yﷱhqƤj aX B&rqz4}`ݠ!᭣Uz/G]zYo&kcL PPULoU/Q;ߥ̺q;WgBL@L`U"EB6 j$-SfGΕ5,uP@ k ST.# 1D!1D֐TI8X*()uØ泙 0j mƃ`WիU&CHcI@ĈE\p\bmJ۠f3""c("oX ]G]3k% DF6zǵw fޤ埛/- WsߐLz|І 8 }sT]w0B 0 WX7u}Ѭ5 Iz"dfD*-HLBdX ȐTS.&cz1iq&.Ez_\!b0q-|vo2٫"???fWC?<;%yܿM}M9,$tMnU:8\SOyCM5ϧ0}߭{ҏOQIɺMScb\EQVu]O&(bQ0D2@;Z \M"/^72 hs`,(b{_;9[ٵM7 X-,ķǷ3Llu$M$wڼ!]  C7'#~~`vv+5!FH*rDιq!BMٶ* crc1獱~舱+I4~EYO!n.2 a&l҆a 56DH(`5C?]}րMj8V)m\8ˠ1pnN޽9B1Z0r6۫"XzU^\5%.F/g?uzNpxtk?|ABUgͤmg@%QbiT-pܝ]>~Rf==mWu6uż%&^b\ A#z:ַBv,U=nvf> fߢ }G 䓏 .߹_׀xz~~>Y̻qLqdct 1l6P[eUc?Qq1Ɗ  }cG\QYkY$E?7:Dd՗]0*K&Dq"z- <߫'P2.UwC7A!U?Ų+ʩW .@YQ'*jwZ`pǺz\`]t=R~Z5\V+PR$4V溁0fePU) xLK;T j梬b9ӏEQ )KA8" IcZfL")"hIZ bԐ|n(Y'5@6GNMx' q;v\f޳1['XjuuvrEDrODn`bn -Bv ^-CeYŢC'mi.0']t(cOQ=22@&"cLIDX,bJcH7e?/~ghQ3ISqG-\YM]i+b~Kc+[F@M'}L)lLe-#`ԃ4meYݾ}-0 >m=zpiJ>?>>ux p-ˡlT]7!n-"1|~>ctfBrt_g)kK}7\<9ɫ\p4 _][Y5z؅#9x7w b솵n~li4>۷+hyL}Pzy_}:J2hGC,dCQYIFDHYMCJZe41 aJ bFfH@Qc{@(1&fjmvz0Q) jTH@,YF ᡵ^{A>hk)$M aAvU  8{fD;^kۘKس$]E/_oHn)ڣF`4& DMIE5z=&ĨT$ 2C#(0nt aBUd4h cWCr` cYcW3l>tAS"1}o0pP8>! Z`$">Kp_Ḙp!BڨgUfݡ|l!$W烻.ʵ+v9涃hݎetBOمkCuwL"mNWNQjn諪(ft-ee[^S$|||Cbq6t0V~Iȥl8$d BZոfCUQR1Чy7xk0zG. UO)@۶n1$`k5vHu]cKt ώV4OuYd2uivU>>>^΁¶Ms]؇Og_}SuQ`{욽ûsbK믿.G}AgOHƢ5<$mO9_(٢emz’^rݞe&o7 7w+u3qO+^3\"K^/.߯~rd7?~o}Ve)) 9pxxk5?;bճ;&ٟ ͋㗟~>xqrO.x0Da3>;ڶkUDb 1Fci+&+?S63l`C V億LI G}g(Yc4 DB Q#5{@uYau[YƱa! 41Ln|g)|^S8Y7t)q'J5- ^>W."p_]DM׵okw)䘳FIA1LP9F0y M@hD2R6e1` aПd\ӹ*D}n&IbBҨI+-IQ)J !|q\+Sd6ˁb`,[x2InGFD4 즵M2`OƘ-LuQ!5- ۆoݯ.vKt9.7 nzוAԔ!Ue ќ/|]r::lڊ12 5HSm[G_|ի0BQ#׳8;_$Ei# IBRVABCQι*: 2$E&+E cad+^v ?tlt:Nmv]RE5YjWVv\e]ɢ7:gךy4[-8-֧4;*{nV~䛯~2;WOsx^ɗuA$("~5~2:^|7OioB=|Ve7zr=V'mKKiHWCd1`![71qviY֗Ds$0@Ҷ%01TeUXg j[0R[(!A$DaIi}c|]!mhDlWVդm^zqmf$4ĸZ.ʚش髓cZy<,;] ){il|[n'Qن! k&Lk݋a`GGA_ vnlUWۍ=hXKl(٘mmpO QjF پݐKŖ*x"ϛc2y ?86``$%m IDAT#tchI- h ~5*`!}޴͓^Ppr> PEɏWb>}S1.fg'M@C [. RaL[֥uans L&G0Z[$Y N(l0<N\.QOg=?! ʈ|ճU(;ݻM&b#MFRZ{I{ptt0ÃӽDb k@F5IaxdEʅp33lv;M`]Wu]3s?̵nvmo;py!_6܅5ÍΜ;7d;ۧй $kӦ ۓ [Z뜓$XzMz4]}n*}7h%1$D*e{wtܺs_}Z$g-Ĕ+HcUUDexڶI"R/c3DN#֎DUhQ4'gg3bS"%q8:\6s T2#ArZISO>bC;'M]quS5)y0#*R^A(TE{t<|vF02 ) 6ֻ"qvIͼ/U{:y B}6t¹v¸Q"$,'T\DAdqq]mұ1ĆԎ ĚAfMo2R_SHr<;/ʒO15Ea>_t] LJ$l R,χ") k;ۮW)]ԲD[NRiE/B*%]tlIei"sd{Wۗ}R.)f{lk3vRtШHB銶.u1;{^<W|~ˮS7 DۃS4cbaH~}^S0´m8v/0J)qrrJ;ǕsaK!:I}E`lX,DiӎP1kzmYga88US%7ݻuXϯ?t$*-\΋[wjj:?~E쇘R̉Qqxtvv駟uxON8}֭~!)h^x!rҧ K6JJiqͥYҵNvEfݯ[HF\evS/ þD*O彷;0ۻ@Z9@v.WPvMTi3FD"l W1N?eǟtaq?4Se!;RTqXj۶r~~Blߜ`VVU~`myU̳Kcx J2doiT!cX={!!ZkSLl!"~&!BQ&R][e C#$\ʨ3lj)=DcGiؕ`.j C1(IS "(O V˲p-SՉsU梺1U]yiqYc`bdRUJI%&DcLY׮>1)ɐIIxкL!1xf.BL>'_} (?~W}( eYgO>:2(OaTQ%[0qam9,zgPhumLn [ϝlӓ -ڭk6mݱ4`3Dwۇ7F q^G2^s[oVNPjR.[.|b}]2(\۶u!bUU0lC_[zAZI׵wBng^k_&o9$[+ug]n ?~jo^w+*zz?rEHb7RUU#&"vD{!ϐrE˘?T:<:D௿rƃ@"Ѝc M1N-YkL!VɋTO(a9˕j({DD}㺮sͤQ`zϿz~|!.a0A>:PK^_<87Hze^M1pܩ4p ]rWvA\j(H8q"Q0E[I1'5B>Dq&* 3΍y(+[7-.ٟRnXh!VWٓgѴnqS,RKk?>*Kqէ֘熛yE֦$Q8˺qD?~;~tݲ,07_VݽO'ֹ1sg$ȵЮyz2{E/"2uV^MitɃڲZ㸫:k  (>q]q񖼙0 u>ɻaHoxbmwMkXb'%qVøTԕ-g{8[v'/NBE,^M 9(Ƙ:_-Qm[[kL)),EYȗ!"Ɣbj]qHɕELWIѱ4 $T%BQL {/~,|y跿mwm]ŏ ɔ+j3[umjW-0,F)W7O}d;a,؆0 "IU@QTojK],z]#qmcK ҮTg7”xДP0ɲmW (',$V c445y0.,IU1%!cfDEq\Vw{zzJ w}3[0t t˥%4ʆ am2F\Eh$&Ib͹yk+1&9y@4lP ,93j7y_[9ms&9O#ns/_qWa._'RUWzpYYl(!Tm↱{hTUݲ>CmRcqE Ha.*1^SdfP-W'?A䢪SJ'Ǐݻu6}O~/~2 4h\=5#0#2.1q21IC` MiT ^bhb^'߸ =OdhJv˳6ӣ4ms~dvzb ԓfBULCH5ꦝLf$b`ˢ$yﻡAE?裏>wEU޽{gѿ~7?_ Җz_N0)./-EdFx@e HI0( eW4{ X͗}׍/^ >-|YVcR\.O[gnOC?jD(q PVf:F0_.Ã;7jq>,]YVs(ʲr(U8nn3`l_ܤJhsV%亵%_OJڵ`I*xGr Ð3R2S!A00Kե oJ66 ԭp<^\H{!^ݏll2 ?6dl& )M<w~l*7[oEbUBiKQ!(aB:g !e6B5\XgfD1&dSλ$uܺu"DIJ֦(LlK)"#cT h6U[5Y4m=io':8 I4Gda5o훒Z[V 0dOu+ 8dr/"& m ,ٹ/9pbteG\]R]u&Z|r wdAv U`t(yE(>،%} (U׼T@ "BLU$srsʪ,V݂GuBؾWˮn&MӎjWVl3JW݉ SЂ$dTvۑvWߍДUH("O| @ $oۍ\`]"ow"V ̣c&fblzC*.Jփ׆D"(@ @N)I6fJT)4j-"#JbU 4Yg UU@Q=;={u|vj-ʺϞ?zν[?_lEKa;1U.cOяclخ}uVgPUcJl쐝O2_۷ﬖ]Y?rn>ܿז(lx+|$I=D' (ZL=xH'rf3hvFvG숞V](OefD;?DD% D ,}J/^D@dCHQd>ԈH[L589$Rѐh(*k ;5,~+kf\+@i,x{%o^2@:nyQ#nmP !d#XWVyKETaePCg/>x tqIއ+$ʊD>'(hPY)"dC(J""h bMyK6ٹ!Sziuk3(x f6a*b&I==;8cO_|qm׮h/I 0jVvŤrVd޲_?~b{ i*؂j ()(-o-^R!kzfj US^ 4\zSmK,PQaQQ4wS󝛓sy'' : ,I&4無 ZT&I58A@"`в XRl2۬;g/UZc]f9ަi7v6Mg]+DLYgm鋉+g0]#s$@ƐRI5tBHkS)!c+ek_cU`kL8L! F.p͗l78g̬*>>:d|_͹$D6Xl8z,B O?R.hk=(˲R0fjD{,}a :ЩJ5zZ7u$)cbJX7Mxœg'`]Y>z~O?\NbX 6&, :uUZJ**YD l @U\}UEMIɤjfX~C-r%/.:Q[^ ~_\\7?7ީ{t2͋PfI"c]M ;H9٬RJbb\,VoǺ(ƤF0| O#b$p$ҭV˶m?Ndd%x♩&-0)=p)Z9TĜXduEZT(* DZFdLߋjUQAzOQ"ɼuRJ9s(>zH2-ڍ ӪœՠXE7ʼ0~a- IDAT0! 4kU@ueYE %"fF9 *:_~ DYEQZp0gPTQP Dkmam@1qӆ:UA"a 6YBgw,ٴ'EUir\\,B[o֋fjf6D.14MdzmqcP+E$:T-KM=:6 '!%fTv$'?X08=$&lz* 60Lpyr<~vnPmk`(YA"kf5M A*7?W)˳ggm׉jBpkEpRl8ʲ)Kbɐ/]h:C蝫Z?Vu} HJ"Ҷ-( dk8)@J[][lTb=|] MU n gp +"(,"(TF@"";k Xn&Wr\vJk`؋azU<_m5no>;^H2qI83.a2t_~Df|ĸdi=_O>|f&srn׳٤TiY )lapLvZ5\JK&/b^qɼpz.I.aR #0 _3֢(Su\yRJsMeն|>=;?֬'g/MWUΗhӺ^Ojz?>Q.v9h+uWX tyۯsj^őӃQ/HSl8K8kWD@ zuem]y *وT2Ko 2Kh%( +lu]ͅ3(KۮCSlC,8 XnjO\#`Ņ^* `uƶ-ZMEzJ&rhcd.I)'5 b EQNtic1J4EQ5&mbY8,9L (!/$CAc};&5Gʭ0vwDD#7#X{P+*RD;VU* (A۶]EB"(s)(sTz|aV 2gQ5VMqueh;_D DHA DT U;:"L8Z|}5飳ϫ<:x׿I$jH$<QQiL mĨBDѢ8B%R !/>r0ܹ>pi.?}`{* 1Vx(9\U?⫺߿ArX^>xpoo0ƴ^7X3Jad\4WDAAUܹqJĜT< Y/е1o+cCrCs]4fjP` | za٫ɹdR@Unwᦨב]DZRA+dΜUpc %^( `=nHM9~󈻗?o4__~yZ;O/Iվ(|YVTbyJrbZ:4$5ēȉcȡH`!v<es[xPM'w`B[ "KH 1ŋzOU_,f-ŋ八nlg&6/Vphmx y4QT)چw<5!*WFTSiC 3!D i@81.3dc\cjAD^(ͣ6,^0*j2&"PQ8pL!CA8pir1,Slj:G mdIסУqhVc9_\LgfB{[ K 2ƝƼ1o8MdK_s'~ˑSs[d{5, DL&;_r΍ݳtC2AsES=}yCBb Bm$"AXyó勯?.O㝷ܟYܝ1zZo8"뫽/Z kuAAAAs6)wNݟ jN<~Ud+#SZB LTڪD_{3ت(M9c5&(iĽS ʲrd$ih;`5 #iL4OXPqg #""100K.ʦi֋% 5ͤӪ6M4mbHzxxOW_4dhCp_w,`/N? 'A5ADžu]U0O !A db,HL5 H3IjRJ"*f㤪9*W0뺬'XH1+]M7geUk '$K4 B" 5#Ȁtq8"XuIq?],ΚIBh;xcڶчcb\rWåOOL6 z/YZ4^ 3{)$]zv Qz(mp=?27uhȨ~ȟ<F֕I t\Q:-;%'w|GKZ5&AWTO_* )@O׮Ğ>?G%‚LDcH% ^RLReju~XljRqZKĬ f,KmVU\.躺Bi]l]T1IJ%+n9ù.+ʨTd;y(A}=CH ;ۦؖf  `ӈE#ASgnt,̥v[Aĺe +a[]7[0"//֓@M싯fxq:{ɴwWmg?ܽwxwzz #*L骂 N JvUhOX2y\9f[~;TY7P PTʷۯ>g~o6Uuh(6mۧϟM^tղ͟=?g_.?[U t F{X&w*@yGDv`tp 9Q5D)LghorW*/1e ԅ`Q1<#k*g|`KeH0,LDк!Eĸ(l6](J_R~뺪!5",8$"--őC0FTјk)Ag!-k{b%:xDx\吜!:k n |yl |<+ƺ!h8Fv` ɬbBׁAƘ<:4Hj֑5DP,b漏,Ҭ&v^$M\uBR̝5\@_6)6(0Q A\*C`]ʪ@W$6cQ RU"Gdi\w l6m.ŋMd B΍/KU- wo[c-RFo9/ILF(S9fC/i sӶׯic]CZl/pr WKl|ق"wϡ+.1II7mحLKKP]eػ;³lFY7멣evRO>KW_)ASW= |qQK-1ةN_492$ UrƢ0EUUU 6˕ٔד!ϼ9bRȡٗ/S&#ժWD<>us8Nf]єǶ{rzMQ yT>tU~!yu+0k;W91% 6y:*,K #d@DY1Gyu1!bBUQ6j! *Qz3{*ꪜ.N_JQt*Ue2o2U'1Un.zMq#t]\vC:fc^ex-OU |j0FQ%Jki7 _ 璢diTTs(I!Drи% āQͿݛO_UYRYI!P1F5`) b1Ijncb Kb1t:YxqSגN]w01ilFiaQ?z 3h.G|'v*z=x1Èp~#?\""mg2R{Xcw*Z+F `$4ݽ?z'/Ϟ>9-`^xL{`Zp,Zl*]4('YAb#@"F!mSͭѸW5E (Hb *j tCU=uΨHuDf2y^fkaf}Q"=2lºf:1ryXRbJ#Y%6@USIDAkn||/,Oj뺪d5* Bܬ7:t],.. iw=ў[lP")@t7TmWE+Êư^۶#º'uY~ZO1˜/\f | DxSrC!Fh8Y6;m{㓗uQnVkcLJl9sg^ygS1t/1 'gM M #[92-IB Tq66!yɦٴ1Dw/y~Ri (wx[o[7;gX^&\UK`h*n7e9\I .w֘,wH# w-JOD?Arz眱1:T㽯rR{BXkEkEaVΘFyO-6C[!>xC=aމk/Z/c앍1lf[l){*D(!v"BPVÔBT ]) T !?O6(#";DӀrֆ"; '{ȥ Zk"'A^:O?[ʄ ;3{\Kݦt0+g#sr'$o,ЄE@ :Rz0zqx ҢJ&7ヲ٣..V)!2eY9_k0pȉ 2'UevEi9ik.4*Aa~k"BPN@>{/(˂S#oQdcR,) (7#HYj7chT}a"Z23(9,p#Irzp 7d:(QƒaL( 3d֜&罨2'U$1Fc^ T!\npSf~s$7^?&_6ߦ!Z",k7btολLJǬz~ĥMgz:/b~IҋIV_"\Eh[䝷9cU-T"XCٮk*,7[B?'@U[ǑC۵MBCy:=}YIvSՓ#Sr #m:1tŭ/nA(kX;ђx2$ 1WIx ?sܓdg/D9z IDATJ*%|{ۥ!"+*u] OPDEj_:k m_W՜D_Sb֖ecc)@"pH/[SEaMh$ÂZ(ЗJRMŲed 2V%Y ZX9pKܻ{POaMe W=MT&hb> WkoIWotڱreʢC,]DcEx+"{ݩFR+ aG6?[!] SXκTՎm(~j**NfCo//y1`B ۯﵮ(VYԛ߿w?:4AXDf6d+lQc@A4W%#% ,EbQo(1rI4GH bRbH@+>Xg'eӂ3h!(/4UQjW?Uk7(ɫ?$“lbA$A1d!՜0ʘ ߘX![ cg H#{p@X ȆS#,`4P1yޤwU6jUAE_y fNz0',m UQT:*v:/O_f뺮/˒F 0R)$Ilo^<%SLg2gh̶.Y:y& 8 5_Ck-˲(KML  !ld:VeQU ٴMSoE9$SzHB;W? *vu3nd图53{bwȐ'S׆dE"O|__Oo/=Z*i׭>zp~o><6?}C,_|}y0/&(+$Ei5&n1JBT,!fdMYLɹ4|HUVN9_d,GDP"%k_zH4]h((:Nk꺆kMzBOǀču+ a3szoo$&Ijl62Obb ,1{E}aza$̤9 U\.Ϭěv6!FfeD$f@w Y*SV^N~|YT@KlRlI5[ ]\99=_<>I<^Me5@J)5M4Mi0`kCqc7漅ylTeʔa ٙndƚm#R2sV(ܛ:k ZKd`Q5V|~oWDJԁ 15Vz&llJeU_dcJC>/eBnR=,kUЎU!J>yq߿q7s 6y /_f\vXmRGKҧ@Q$(dB٧-QU292tGl7(e6m{~v:TwEQd7-7AϷ@*lR:C|wt׶s3$hc1[a/%mad r*҃g7F3A9x__[ct6L&՘E9%PN9;|Քm[f֪B6&ksvP&{oVZwuf{ |v0-wZzf l_f~1c`AVs^秧Go_,orhH[.>?zAc4fuYp># *PAbU}&>k47U%")t@M|_ҏɒQRӨDDt2w}ut|~tjˀW^<=]u 5.|])v77ҫwTn"݆6 &W- pW#A^V0$-Eg'?'ȍ'1tuƚ%-GGrXɛRNj^^bSQgu^DVE"֓J,vB4[ACᎂF./}5![G _񳯞-F7bl*:]LL2iM@).&kٲ|r⚫N2ck68,`W#X˯#RN'B$bXe1d;uP=xM;.%1:S^_eQU]UYE&ZA }t׿sTL Gߛ5 $ݫ'$X6 ND&UUV5"$)$Fe *' ^Jg[lsi?y_|toB(Ck avĐT!n1*c dr0Ƚ,꟰*j4}6hkZ[ <{ZuݳϾ7|@`e򷄊79>{hQμgMOƌ?fƌJdrC)654 kҼl;.dxyLLۏclͦڮB2'%BomQxkoVBs.?X\|I"J-Wm~2-^c]> U-AGߥՠPU$ h_$ղvӥش_'?~q?Y=o޼oVN?~&Qf;?яf5)laݤbYX)ٞΈ)&N)v#c"Q1DEjX"ӆu2!7ضmTs"Bd{ʪ:}tyG?ĽIkI&v3'sDPcUEj@-@~ m$Vkm -P̈{|tH:{skv;`7TSbֵ TuwYdUwi"5 o:gx{ZN,:<]st@U*BS_c- $gP GιZ&]YkS"IrE 5;$TD"$%KJMǘ:>9 +"" D6Ć5X&f@ I$rm.e⺛%aEvXD+Kt2pX&h5!Ġ,Czy5{jjxmK\} +1ے+ct eM{:մH㪀zSҸY7|n2&'Ĥ w?HhRV6t *|h[C8 rq:6!hdI14pZWnX I+4hTꕱKh1U/~ǭOv03VH^(*1EIE ""&KĠJƐv V6v!R9f!d2!:~_^^HWou pM)Mo<=*ח/׿[/bB@D!"FI~%wEY1sfoT$# %ۅHY\}[R>:Nj ^%RpΌGX$jSB%I((C۶eY<"]6&5i؈kX$κu wo8Hk*排" $A YDe#Zx^Gs`ďh8iڅ#U+4t}c&}Wѣ'|q%\\\u?qo~D} ! hQbUC4't'尞 H>$h1xY-f݈YYa@%%0BcVDoA%Ml>eVYYQE@̖miUvǣ#c-N)L%~R {sQJ(9Z7ʼn rP2Autti}}$"*W !EQ!$ꁠ<"ϗꪹKM6n0 ރ2+0JNZ,@TV& =U]Rp7 ?[ 5a+fc{ؙ]J!n7)Pܽ?mnyXJyUTI{8W\DvB-E7{}\j=m<WY&q`wͽꜶ,ow4OUcO̖ !J1ZDD,+q@TFP2 \uO> Isuo#]_OCUUǤ]UwajQ:} qJmK,UiGp:߄q= 366vP[_< B@Im(W +).1rk~!>QSN/B 6ELqQ.!9BUǪ">}Ƴ |E۶ ?x4#DF}W8gQIb$Y9JNj>?_Wwɘysv,\Q.O'5l{_E,r"c@CcA ɇc׶ ZW5!5MӶ-ZG.l ;d< ^CfZ=tm҈UB ː)d妆{ sM3w@3~kS%ۮ dW6Y%~rt\1 oNxUdcɃs[>5!Uqι`W9mt?yn1TՐ "]we9>²kh-ٙ,wpd\v*k]HIDs9dpPW}#@w83ǣq3;r}Spm k]_VNfnuC(9o_4R''`'A(Ȓ-r\R љ5<}~vhPZW( {*b4!:s󎸽',P;UEd*G8-OkxZ9V^߼WNu=Aw<Bxܵ^p(6KNX'@Jf,n庈?#};2'?ǃ__|p8MPrtdt^V%c\lnџ,m,5(1ƔDT ZM BRDg VD!iab"4ei j$(VܽiIxj8s[\v_"!l)Sj?n2 ~cʂNC{?ocO'sٺu]6]$vp1΋qfvӴ`0.W!2La؁h ) FĬp4C6s5j^lP%e`@K gqm9vbau'ث뢻.[mhvq] n^sY%,6f^9ܢD3Wq@XBpH{{m LL6n/X[vB?a IDATWt@[#T;︃x0&Ȼi4@ H rYS2TGGlЇ|!Ks6kߔ򋏞zZ`RZeU9^wm3HtL UQƥ P|`$keȈĽ]F&#QK$4FMA+\My+ѨƔ:ڕU׵:+@R%82*! !SgWY4*z}y'|6]e,v1zt3]'#$`hmPϨ-"%*"ۦd:|uq.z8JQb6kᘏ/2 (̩"|cr{/bxm~aYrڑtwlv,6r-6b`uR!\h7+ fk~pG~8T) u [=Q<9CkMlw;й5. ?_^z 7կ}mqX{өO)QEy>[XcEwظ ",'f1 u]{vvBĕe:U(cLY|cI!Dp @v"\UGѱ^ՌwmeP#1*H@02=P0b,x; oi3:a}.O̜5X뜵c_Eի}jUVV*b^f7!Hj-]5ꪖc,ūLv~7.I:-C²*YW>MWWC*/+l!jԈ@NHh%&5,Hp4(_jڮIլ^5zKnZca# tnfmg0Lw$ͺgV߇ x|4ZI2^P[G#7`G)=0o^3Wo$H !%c2 bBq5B`fEIJަ6WiwF?ٳa9UY2ac!@lFEYG1`֖eQWaB.q冉Q\Yj+W9, <+iߵvB1!J5$@L%U, UТs!gm|#(@^ˤ:dDFg\G4ŕG I, S?ToIb8WU9M;99ٳgm۶mg֥$`EpŠP *'Nj U'Gv>>'f 'ƈdS&;P!жmՖn疯ɁyH-ں:U.۲;{rec7چ̲'B:Duv7Ea~]uC}Ubv\zHǖU?(W?&jЇn2NUtW}g''"qXWj:n3c>$x0FT2o۶1ZPLIs2O)Z"1S4ͽRR%Ȓ,{db*jS؅;wmGp|LSw8`U1 ڭ ZJ;H`Fx<\j{6Ng'GWW%~2tԤ̙BACH>U2\Vo>͓'e|IJb>V( RRʛUD2lDVIbrEƓQwW7]SW?-#`CҺq樵M'ſ5wJ-`z<-rf`?w=6侞3lHE%3ʪX\O+$i۶#ÚRh0ZÃtɄ> bTUh8.74xC컎몖"HJUYeMMZ̖}k4ΛE ϟO-:)*Xr,!ʼi1dಜmDxsϧ}πEDk!لYu]c6ͅgY4]yof>s l8v^+Y4ŭOr({nϠA[%I)I 4HIjDLHaSBcmF.=O?O?zOgkNN,3}4KtΥ5ͼuJ+5/ GHżYڶȶ:kW&(sb'54t_t׿dˁ6|q*ڑxe/B\;PdTilb2$Bgd9:ǺO=tF?Mw-/+gt \Y\ \mݧ~vv<>/ ><~j|ۮ+F,%1&@Kt,>gO=lG xض],՗ uIRaH1`ʏG@ }9(Ѩ*G@%`5o|恂s>1l*ysgc)\e KXF 7Oz:Ausٚ1S1 kMB.dPoffI..y̛9:=^t.CbGWW փkD4&PGGD] fE"E;+"AcJ1R}Y,@Qf6%Bhoίz $%!`\vѹŵH `F0X:U]͢w})ɐJL1R)F$)E la]OOF@b8˃bA=0dUYM)} 3 |4Mew=( Up/2D{4f H&F2izVGy쥬LdH*8>9,BZ$q09" | P)@*bFd2aƮks[{[y㜾N^ЈpnW#X{8*@&;Z m @βz#J"@l(: 2? @6B!!rdP Pjr4,>|>~lG y{sE;e mEJYCx3sֺ SIbLmylC@Ѕ^ V*uYiuTAVR͔lՖ-ZkS(%˹Zgah70QD"e8&d]%DhE&`%@@LMXg_\3u Zkn{I,eYV""~A20Sm|>@CI>4W񙺸єbAk:[qsjm:O MIOќ NsViܞ0m;ozv]oE8cWCx]=(G`m1{}j;=-cMhgO{7obPWֿOӛ_/OMɣfM>yeQ}׹ҍ.90qi˧OޘNg]__#ϋ$ZUUU{H8S }q $UBLJlmwys}YXFFg˞f!@ k1t111ݐ7CU Xw^k*h8â۬]6h=!RRbCֈ )b1b>7( }a**1K(Cw: $Ī,GQJ˶m3 $"r6#2m>ZW)JT9>{t1.L`(ISJeYB>SP$4<=Nrr0hl5Qn|W 4|Y,"RpX@492e%f֦utwM {Nk-F Dox;?` w:To{Z6J QTUp&J Ƨt`\rLw~lz~2.U1>&󾽙Nonn۾1ip8 u=N}۶5}h !eMyl-+oCycDU15%%Mjt9UMBB`T.fU5E1_.n!r13_>B1,Űv%_Ϳ†HD%oѤ]1Ƣ(˦mUJI^:w|뭷z0ިb!%ș!EBI-1he+{σ~Hc!t,ZQ$@|V9k +PWƢiO6n0Ufцؤ*)ŻL,X)lFheu]AMKQl/Yކ wۚg\/3c(7}=V2n`l8d&09px<1G#$D9r| , p:(G?7YM_7i(oO9;;=:=Fǯ.u]O&GleѤm& bNE{4淿}LEx4 ;SL>_,b4\]]Zgˋ DI:\\__QqD lW'E0Y&c-Oe3l\rH*p؂01g xQOƺ*O~۵˫AU}7ͲIoalsФ}8>Zk}}!cBͼm[*$!URHQWZ5>~YB)ǃ/> D|T"*tYoy\ضWE˶Yz8QW/l`<όq *DV1DghuJa=)6b0׳ Uӎeg}_uow)h]߾;vOLca{n"Ĥ tӡIӓO>1~qn#X./gWW^>Q  ̣xr\RbH>"(4_<7cDhCz߷]˖t\4 }QtmЏvľ]L cCf\^_OuݲmE0~QS /NP1D\ն5 9:˹깺J>Wl5ֆ>˙}yJREts"]Zfd2#z3.(ʗ@bcy_b'j$ɖ sB{M- L,7Yarc;m쬿$o|)hn-<쵹w]T)n/@ܞۤ͝<ڞ2häUNcAᛏ"Ggg),w~_|qzrb]._ݿ>~hMp4˶oc4_,NNO/{1N)ŘfWI\\EyJ R̚jv([S Z`Ѵe84&ԔjAmtAdqG/wBT@7qw['\Ϧa_ϵ/&"%Ȏ Yfmr>9EjNҍ)uOz2. @6ĠuYnl2oeU1s̝UE攒'-m9P@ZR,`2(M\ .nWZQk1bއpz̵z*>дjן*`Z 0nO͝M=*)r+&#ڗ{kXjhcƥ"ǹXEnjZOP2Xɫā7?G>}2y=j׷W]{\O/nt:뼟͗}Lhޫ,J"n6mc>WÈ8c77eS@y!CSMeZ$JYJPaa]A8猱Hhac.+!EUBq^r&1.8 1%EP* DŽ}iUW&KT*7Hp3*"H+Z #~A$umSѱ664LM_mb $apY~~1#75wm9m υNIdʶ]CDƲ+_|OᾝfސW2 +m0{{H6ҜםMsÃ'Ct^//G.VHq 8ȭ(v{[[||op4 lX6͟?~z\w IDAT~qöז,"7M8>>>:=2!$\Q0O׳g.OOO_fWW79K)dLMʪvuE7]z$@>Ҭ%AYU`O.z 4XP6~ٍ}Slkÿ}mDx~#mw7s"SQD(I2q^\̿c doM}l6abFr@T$M1|*} ;ߕa9"'e* U3%(+!^x9y{ =/ڛ> ٫9IlwEd1sRdn4=uv6H;#PUpz`<|"pأp'>#:z;kv(B U[Up\lQA}\,/_:yd8z t5INmA<\{_Xu]}1l IBXu>v٪פz; FblR߇\ @/ }1 %1?Ƕm63 h5Ɛ*K\37n":V+ӑUP$vmsqq4m>ʲ>}; |}ZpI<lٷ{%_)n56P'l[k:ޤJTW_UWVTkz0w`;Z xW?~ !e<)(*?]fl6sSmj^(}Jsb'o=}._]׿~7wo08!C>tnx}_ŋ&HDx8뺬/{W]<'?eYuEU1mګ(J%2t)/] FĕjMA,AVP4F!8mh"{ 6[դ޾l1Qגo_2]$z7Zەd DBg f0ÑeM[!PUD$I%Ƣ8#.m4f/ˬcUl}QoFY)! "u]gYSPDd@Y,m[TQ]V;)0!Ħi\Y֩hP[sҋ(d}Ѡ@fAUI WWHL4C FSK&l)oV+He)D`8lPŢ(]ݵf6ѕE"d4#=w &T e'>ߚ Γ ZoH44SzLU`lb-2{WqC6W /۾n[v<kUz϶dDSe*"A3nȇm2U ha-(g77g/_&_ï/o31!ϿE4 I'!Bx2y`LDbquu5%e\$؅>ty j,J](HZΫH@B$<)[[io"#s#PWgBƮ24)ID#N=Y7=*fʘz=Agl>FݞJ$;S=y2Nbj.OW6d]no)23ZͳӁ`zir<0YQҼYrJ`P.MUmk`$:u~'B>·bz q"Yκ(뺼R.Җt5!Ţ*pw˦m} z<*st h#Gbh%WMˋ^R(M%uQ#<(mWV!䍈"hIr4#Un>_faCe񉑙0ss#&X(dLlf2>0(QAX; YpwW KZ>A}aԶ2QUv9Ŏi{Kio5uv~Hݎ 3"P;>pv&ʃ` >)7pitxSQ//ǃgT֣㣋WW:7WϿỲ-طzc4ӳht}}0 DfL;]^^soO&dr/JYWt:'4h0psZG.`jT mg.xW Q1U2m:e`m 0o RHho)C:6);yD\596嫳B*Q@p ]1sYD$G㒉6LeYUYI R1RJٕE_]̖ ENRobYjkdKl|yLA(vnc偵D)!'r|6Vci$lZWͶ؁qE۶L!ZvR fqc%}XDdYj[zg=CCI&)lh3D} oc  @P\$3d]j=[fDC:Zn73}uN[Uֿu[D*X[]v-uݘ(XI ĥ9%_r>|$GPܽwX>/* r.a6Jԫ4~'G[ !frш///*+5qM0@$'GǓ$`8r`PN$ *4M3O5`вP5&I"z1\.OC ҰγlHArJ!UNԿ&or!siRu?t*"H1#Q)ƽH6-?^S`)iSU9 ▩smN aGoWL[ V&q_m}hQ#u[NZDg}MlP"P1 22%ճU1e秧w~IgTK8=+pu][k8pt|To}O$M/_p8ZWUeլkķ0Z|[C=$x QqF7gpaH(AFg"%t*Z4uD\̐ޙܹWsQlU&v94V :dK̚LUXV"b)3?~8nk( , i0[h#B, ,9"8ZZWf.WpjKŕIsA"YG"M $)ӣqR'պhj {„q]V "ujXm"vZF`^/L%DE"b!4q&"!d8fV ^Yiӭk1QBHjws -IDt) *($((((ݣJܱm?-(I"*xDB,3*Ԇ'3؝}NIZ+»T-[|LENB~=t^g[G3[k Q| DG7:$E^UlZRn"2<}<ߥl]}ݖ!o2< RS~g/~ѣk^GiQVƚUvz>wCʢx׫97ǃw~ɺXyO}Ç__ܻVY/_׏=y 0ɥaaMYY-I C&4`"bY!&Q`E J p}= r2ɘYv6rq12f0MaXUC:DmM|x8PZ62h;j F0 UCccxKJ|{UY,o߿B=Q4`u$ ӳ|p4XU;?}\xÐ $#*!x!UM4Pu3x0jlz /R|&exzM#=M~^Qty tBލ>k`+̑4r b]U[*RDq":$,P@Wh\s-V)ʫaV4r9A4'5j-LCB Dk?h4Hu6b\'`6dtyu>ݹsvrZ.BS㏾^-й;>?? O¯ [ͺzpzxy6tr_eMlbrE " $ C_G 2j@  jEHXA48Kcܜ# *D BU *utq +qF A6[Ho`c_{=M{jV`|tjo&q !o\vZcoEC̫ `qƢFIChQ U^| :qR+ڴYS(1x*Q* USK(h.  & N˿||xg)Z #K3d!Wd1#iʯ˱K/V{wfN>{b1gDlf)R4e ^ίaʺςxFkl7|\T H0Mrm޺ K(MseMӜdij.ת ^_ hq](Rڐɲ )Ri$gU.B6xuѰD>A "*MleEQ#]w0DEG_8F,d (Kriѷ2f{}N(b6 g+H;hU Ew8ln['j+7(l WSu\3cЎg#uX#^ ,%QYklzvc7V }" /Aٕ"X׊p;X]KMDݯVzu~xG?Z/_zQ7`<Ɇ#ŋw#<54Mh4я4dUN&O>lՋ+gOKka?5k/>׺֪hf0:-&xzd$ 1Xgm͸8EO_QEVHaS^)^vo5 aEkx{EG奍nDc?6keHL7z$߄xg'Eaʨ o짡۾V2em,cv:$ ߔ˺4l$g$XsC|eՕ!* "YTpm|WDBJ<ڂͣEJHjȂɀV"P'QԋE6JHm ,˿ٗOgWKϔA/Z L׽0 7_*h ჽgƽYoBDK$^n ~ 8]) WߨY6@mW,(JT ,X .GcC֍ " 57WY->I04iQYWE R AC7WMK>TeY>O;'gǓxr^2"$ieP7MTp vXY^C:c X]u͘F *b`E)x4#E7]QQ\Ea[ U"-n'Eo&츝Er q/qk s]] u>Bk}ߔo"Gvׁ98taw":-C{1p(9[JƵ nmBvDӦY?}zy:qr6xhe׏gYݻɓϞ|1ADoҸ.5",IQmӽ ͳ<|k<ʡ}giEQ-VϦ<=4M3l@ 1i1 ap6 4M,9@F h,E1ªL("6_̕M]Ddd86UTUV^Yk{3[Swy[ %gv>/Ʊ]C|n鲫OT`fRBt4I2Rj\Ut2L'(I]FEkF z>`"#`e6RaӄjdaVM[kBxk}hS,*M2jh/bsUM]kπ ˿ IDATR: l4 jĂaob_CX]̇R>qaQ V`.H7 ~a{.;gvf6q!MbnlĐP8T}Q`Wkc":[}_A67H${au+g]>!f{"B„[ I!+_oPJ7/F~/':yF$L'bZEF靳Go=pz4ku]pG6=}~^ճg_\W˦Aճ;o9?w|G `{{(" E(֥DxL$ Q=,`Uč-Lݕh&{ǧnsE4g: x>CnSl]c`N3w Sr۲T^.fkVCXhflz5_$v "RҴxe⻵}}ٕZѾKe {z5S= m9e :~HıhZO: WJ >¾ؘ`w@eXuv?~;R_}?0y/;ᄃ`]2Ɠ (\^^IryqYee'GW@QKfy]*/ܹ"ȁRk90.goSZyJ'^\} ]\͍q,̢X"dse菷7B:D)N߉v6` hsrz=JƧBR{f^ekjF%[ǟ_w Ir)jbNYp]^]ioeI!KM4Iۉ'*,c|VUzw, g`\}^|kAruu~`;y{zjӓdMQ.nW-4'q?j갾;ؿ['zBMɵKS{Y+GOX 7| OGZ\dPƫ5YY%MY(\2 u{x8LuUBK&1%"KGQb5=7UUJ_7rQumMUY:xaPuQa6)6yuUDHaYVłPu )cX/MRVT#"[Gv>M z[f0(4DH}UĘᆆyo%(*Ϸ``:N*0gFy6Dv|Si8ۻw+B"[{L~~)!q{V =oܽ8z#ЙΦG_,6,)'O+(wO~Z.h8Bb]h8LOІCÉ#cXVeQ|'GgJ|Ux5jjHQ!ʆBnDw5a"DchID+t!%e3o94>gMXL}m6q#k {߹>#"xƁTARgOO!:`UYQ H/˲/!IHI4e]5ĥI䮑MeˆgE("`HDNWU1VD4ɬ׫ r|a]UeY!,ϑUsA<BBC4qN846YA)C;ZU{4H,A@Ċ_Onm752ڸ6ion֢2#B$~F63Vwu-1d{A0l >އ&Bjm ?WMnڅl^:x^؊ںA'Xao۱[u=iف @ݧS_G'l}~GeU0~(KGNO{,4M6 TEw%=̇棏>8|c&Yr5pUQgYUbSdr&8FjU8< cCݍKk^G]%i/{p%hɷ[[ZE^w>CA7Z)=T-0䀝ۍJM>^|OdӓӓScʪi],W:R5(#%&,r^EY%(kx0@. &c>zyj.% *Q-{Ms}؈/.:MoSjͮD;q\~kw2nw7i%X-)?lhL,RW5LUwG)hʢAM=[$N:u "X.*ZgR8RAa:C * *UC 9_]|,O3(-h8HM]j4ˍ!D<σpYkN(pX:%4+1MY,]%.I0#ud痫EY{AИ(",jB[ҭՖ-D_ҙVk ]';_]N߂4'Dy07eś$;4G5;F mڐQP X2V:Gk[E^c6†($CdJ\^{R>;Cز>ROuރ]Ã~K?ejan@nBb.$]e.׺<6 -yCɭLfgX *X@{'/߿|C0ʪyG%/_ӟĹr4WOddztg32PVŗ_~~tz?P4MfW zq~#vDˣ$IՈNVf'f$I<BG!یx_`Z-aP2.I8z9{ 4׏/.^ΖWwuO&Sgqzz* E,J^H f4Gagmb PW%{ΚĚ8&Ǔur|wM0_MGnrUV5yw9P_uM`ι8ZKu놅`X_JM`MhYz5qD=@knLskmxR% DjDI⬍r$םt앺9&H-gA\f',M[bU4Mqu@`ք-V ;]dC^lo&?o#D8t]dVpƖc^4'X{1Xj>0ztzhP/o}{raGO?4˲?pZz* WWѠi|Ç5)̯Ip<=7գ'w&'w]=Z6b)%y\׍!Bł("׭oW.8;>^z7 u}ز40yF oWzz n& IQg9̚ę{,k%&.It^е=]pWUz*D䜳QP7MYx_k3zM'|wu~99WcsC_K+ڰmav{u#: f7-f s^h? IbP QrADe]xp4 <{^Vϟ>^LǓZF0_˪z>JҪ,G,O̺p|zr_l5>> N3b#x5+5K\\`6頬}(J1m 0 GSI#+BVck;FhRq{V)%aܮX؝á1wM40ーZN$9t[qA1`!ՋbWE0Ъd2 r$JZT0up40WWG&M2_V"xt(2*XTڔv *FR'v n7+mw|ms:U qtsU.}'w^ȁEu^?~fؙ~-PA0  Bl+*R6 Zh/糦VՓlWEat^+$.FgܒImpX ^\hm^UH`.g7( dr 2/'wNo*~ŋ(>/' I=x~6dHuQZēa6<E1LNX_>\Z-|Y !hMBt$ՍXƽOSݧtn-Є6m{M0;دe;Tv=ݢgeGb﷒y۲q:T\w㋫"J4hj ,(JH*jYV uQWpn8MU?:i:^u#jR6`) * ({'{RE^lw>mՂ5+bGn'dK1X[i5bdnsl=uR%D@^'"2tlĦhz$"U]׍g@Y FH $χ'gp29OOǓd4>Q> 'feS]-/0M`Ueã#ecW!ܽskNSr]$Jdz|?|uZijoL i[,jYILYy@$9,Pס^7yt@²5MSUU'澕`BohsdI8Z3 ܾ?ɶ [O)^GC; TV<}ig`?𽽘NF|?f.(L'}ݟ|p8s+h9uD-u=?|r^hW狥$3ߘ\V6l|#bV>D@hjw6(ieӤk~Hcj3H0wk3Ը5h˺>IJ1YM%acCmv @_cvz46kѥk_.ӑI_ `ʲT$fa@Dc3PW>T>Fj+fa;.:4 ݍ* lDFgD9F@%BfUt%P(箸yWIV@oowu?tU"|*MQ._HuK:n6ٽڽ?E/! /*X;LR~`\RYVDa5dl4Jd}*I4t@&ɇ'r:~U5ddx*&m3:gi \KE]?w_';99)b6,-|HS;>;yeE IDAT<~E@˹xzz)r^4.s./ _{(VRU {_ "fT&EѸn`4v" CƐE" l;Su97FզC[m:`=V?ksMV_~KxH+F?kzcؗS }}X_YkONN?~Xi޿z>7UwگQU|_L&xt5T,׵A:byzt|u]*DEp._ڟ/z/6ղYT3 0  6[ ;a["vG7v{!^? :K1bZRbQe#y#DÎ)8r^u]WRU Vz]qkAGDY$beS78@Ñ HVBt` ^#ԚFcfJu‡{AVCCݵo\/{`mE8b.aVZϥ-Vt ;$}WotQ )g1%h&Gl"4E%pJ4(0Re(%xFWTby5K\e/֯. ' KS_x:L3 iA'v8F#gSU&ɠ/>\OL+Ra><˪|5_frGɝ{'QSetiKz\:KBTI@-5(%B(t<@ARs(׎ڽ]ZMv)/{OcF]_QC=*mu zԡ@y'J1wc-ѡ>|^嵎K;Gkw?^O_ABږ`AM&"ӗ7usrr&?h]\\$ fnB\|./?s(^<_cu݆g')>,WPcK/Nr636]`C!(P#Xadq)I1i^ZG  HisB?Pbp0LeX ;L" JS$K-0 JB%HKdHD2Z2QӸ3'6y.Ax88Y-A9q,lzD2e֚8傳,FrA`٣xp?5 =!\/g?zNߛ- t0ɂ(B$4iDDal-38fD'F!xl{a,Wp dFU,6\c;pQPJ8gLC5z뽒DlJE8ܰVҝ{!__ZpFi=OǹDsJ,7ܙP5T@&w"lR9l?~!X_ɛwعൽhAhR 4ַ>0*aɈ$ ミųgO7%Y0DgϞdY:8],ŗ~o]^^,ae AoWyU@*PQ?{'׋'˘"Bk paw}k x*;ޤU|^Th]C)DY箒JT&ܵY>\cfvC@|nAal48D ~p{_񒅃(/ZT8cMKXR,at/A -7`A *ɝdA@QH+} YcEm^5J*!* qAɕ5젷75֋ e^ᕹ;XI>eXUK{;ie5*)h]VAQ^N)DțheFC$8LEl.1:Pbr  tNfƆR"@hg@[ *Kh-h1p"EB脬c_S p0G"ΝHԏ˄-fI$[8ly0dkL0 0&؉:6j\/J(!# sP?BW*{V" :fuNA)F-B:$DE\.+^/N XMѦx)5N뽸 pw1v]WugPFqMw]3ù,lnQ՞K@5&ۓ:Ef)rE$$YQJ!?wp?~_ aft:- X8k1hnab0GǁI4N?l0*N=@C'6;JK ~ޓϞXQAƦi8qU.pZ\ڮM q{Iۑ~EZҮ V0x۹#ܢu!-2_Jz @k}Wa!5D͖$+u(AiL.s68!TZ2' FAV}ty f:[fpr:gNz&YhŊ硢;LJA9ά Ҋ(C0P9"8Q d;Cֈ1+u HgTQyghX\6rj` :ؒ7) TX`1*%VC]XmHܷ`S6[rj[o,@*ny]yUs钖8mLhDžuI^u|- \Y, b6ɜP{C)q.s ;pQ? fRWW?yp|ppzLMld;ggI8 YdqDk gw'`  ?,O.a wR_vV 3 ~޵ ۬  2EG$㻃0Ȍ" ;A `R@Klf &EMX5:]U}\,*BYfҾ. AUZ&Eg\'o]lu>nvah Wo^ظJZLq,M|2X9HX 8 c8N \CD/Q *vXDRAYfYgHrf 4reip pw4i:-p؋zhɽЁÀ@4$M&"&d@G.KY>Lun|TP(W"5TUgJj XX2 C-fPy^ˉFDk V>8鶵<{U[_nH}怲Aq?a;ɽb {+m87q[\t 1ΰpDR+?DQZw{_O8^,Nj"6agtbX,>͒ٝwat~uU../E0NN={/Wk{Yvv?a*1ko\U% vԍȚYB c, Ja9d,k2Pt=jsEW52,)8>88nЂyO 1spz=Tͭ $@.g" $ҁuYS6|sq tX1͡Km7#XT>EyYp%y e>w4m m?M? /2ڰ˫ KŘ z&eѡqY$XP 8'Ƙ,30-("Y̠ "YH^.2YlK;Og/_{f:}zNj6 U4,SY4 F^okuOShbREëiiUn H;.iV"#P)_$w'#ej@H:E 2d BPG w-U$&q*wB٩xcK]69nJZ^QWj]ǯB۷z0!K;9퍵 ]fs8:;Z\]ܹssI :5elo=|%i:[̒$yVx&/^<[=~_|} ~OSKoulß~tO ǩ5W`IӌaýDX~K+Ҽ9#hx!+Kj@=P4qqP؁#bil2K|\x4KT8vH"$"Hޝh2 BkN5!vq5> Mꎼ% ]fY+";!dE#5i]Y(Gu%]/*֋u)K8dN@Ãli4 Z6F U\(KR'X<-KR 0NIԄvԉ3Y Dl>Ѱw-4JFE2e P*D~?q&1d,6$vjPQ< N`.Y(ժ+Xk(\+xlޔg|9LʦHEa3Ue  W0Upkѻ% X?v%X]{l>J&KWu61W y {!?~ę?w~ѣGh # F{$M,}w~INOOP$ TsW~뷿?OU_AƁH# 3i^O.~AJ{gΤɽk[$mB̆(78='؟ޒubP 8@bg"< T")2*8yOYfN2ɤ<&oI԰ĩn4&+_ #amu@79*nf`z V. ZmY0YR*(cƩ{rB sܭf1SXйRJ+<Ǖ]:-f.Z2"ָ2FahQOjbZj|p/,A?RbD$sq]f1P Lz+7!ŋ$Sq(l(*Z_ ğh;S!}j愬\j[Jwu_]'2_"DKDP8@!%Zifk]G?fo%q|z."z=\hA޻?`#%Qo< Ѱ7g,zA^^& 5ں|//x0I@EQ$!hh8,l2ifGΫz2w">Y\!ڬ6t2O?d1@f(`JwY".ڽs.OY0~!HOߎ4!yf41T]F KBᖞ0}Ֆ[0ot̰A-"blA/ %x<ɏǓGޏ{dYɋyb(:{|>|x=rl8녤 aÓpx|DۇϸXdDeD" ~DmH6_VIuGuе{8WZ@]&^/x )k=!01?4MЧ֨>~8r=)3 a]-+ ]҂.uk8d.Es %//3YhuuRO-P%z{^72Aޢ=CI~0P}Cd  QaƋ- Ah‰&l\LmIVQ-,VEz\B.-PZ [/;(|#HW䱚{{KiQ^!V, , (t^H5 S$Vs^Xз;J]┒+۶* 1vZPR|eCjE倥0 %]kI+Bh [:Nnsi[~&q8d,r2yvc5ONFc\׻{g\+CuΦ$&#PGZz(ЀCMQ:eifm(9%6ڟYj8f|:_F¡aD=[50qu  x}\II\',Ǯ?h(y_DË0zHz8޻sw|* %B$JSÇnhyh/`l0s\Mu}v-yl~E!X-&+[j 7ݾZ) p&1糗;@A&MaӓO]_^޿_D5a/szwFwNQΝ;~Lft\8 C}pˏ'Ƃ fAaiMωڍaI^!ۡ#Fͬ96_ %>F]l@ỔI A}[(9"$DXu8"x/ߏ:{.Hl.EAPML˫y;ՎOU[~Y6lZCDKoXv˅^K|csi9sZWMI"OA:, !GK U a؃i'*J P)!"\82vIB-Q?Lh4 `0}U3w>>`_(JR2C"v.zeeFX\ (:[ZPIǦf2<&h zo$sa :Zk aan1&"I^J0+N.=;Vyu >׊FkauŻW^E\伾YVҏ&l{+}_ǧ%iٳgggO^^1;e@Ls ة$.cAL"|4V΁!˄A kx?]l~EC5>Zm/oĮlNj6e/Oh]ĩ6TٞE9nf{`^H$,i΁,lu$Lմ [6lfLVW&3ĶWl`2y\1U͈\snmNn/HP HADERHDE (BQ; IY'bE2,f"0j~u:F  _yʠZ B^Ƀ9"k(%B 8mٔVhQ,(oD!L.?#khjt~gqY`Եi֬r}bWv6naY97ubړm^oزaI:dnA>;Bk3T%Z0PIb=_^N//;gw?q$ k2ѣ>={;ߚҫYvWID:q>ӗ8@K9 V{+bٗR`uV;s`Ul&[w]Mֺ~1jX7y0revl*8dj Vk \ޡ LqHw}6jj\\UrGoon6ӭ?J6|(LGK+0!*3S)SRζR2Rv9'@*#$,Df'ˏ^\^HA_+.KKf>@ d2=X1 2, N "ܷ DRDtud}T4yV12Q@u/,>գ,'xo'j*Þnn^o\jRι$I] [0kWӽD*VؽKoLqnWxEkrYZJd `?޽'G>9[i{b1HM=7Mel d>a$OggW,1SƑ)IEP # V|sR@Ɯ<+.kK];fw@^77^+Uq"X6kP)B :s?^Z 7?."WAR@j^MŁ8oCGI֨[ĺQ83d0WK0s$y$t>YKuD=0 S*Tp|v\D*{B.RKGQI`0 gH:8DɦBŜ[ XJu\=X= Yk5RV7w_n+{( (HmΡ~2ʶ~t^|mjnpo&z/|vh*zx?я|1Hwեs2\dw4gaoGa0 -D`D 16ƀcOB MT0vi{hxkjOxQMk|7J-"|Ū2@iV *ƙX ոkזRZ)dv~"&<۩]Ki|_\}O6Ir `ǵUjѢZě7۹ć6SR`G PZ%UeAnYri/ `UR 9+l wtPib=GwzB0[Ξ?yxȬ4c DEs$שJ-20PƋCB@9Հl@*&k[M.cNpm׍.g\W\l ބ~6#gkV0("dk`ݤ\R6C,{W ҊYfȫNm58@H2[/]!X`FJXLH)*Nlv"@HrAO6n j< [5 lݎkVȶ+> 6i;CH5nWZm5K_ Vivb8DR>ļҷOPBI9UgUe<:DAB(/DdTf>X, Q EdwzmpezKsRD:M (3eRz(.WwŤ'v5]jU$g20F*Y< F+0, uq**J?z/{|ҐH/ԉ 檞> TP`"UDBQ8vl3*zGh}mYw|X눼iݝI 7ӭ+%NO{ @/FX@{Nճ{~oN/͇oy_v>_R*hd? 7'}>w #  8D›y5vznZ+ V Mm*hkw3))qЋ^DI\CP|n8h67 >2iQ)qT86Wf'-PX[A͛9yGkpw5KM撛4y8VljjFĊ+B7!Be_ ( eڜ'**jU(j (e`΂߽^ IqL Xct_*.x zi$~u[<:UH[Zb !s V!krN6׿֛,-)0"ZyU!kBTWk+˿o0}pnCj6`QM71^wacQ0Bxq_oL[#rqye >{I@: ,gg_g{z/[R|o'MZk-fP7| we[6Rk+: l6nR)(Z+4U JvT 4ӲJ'"c <+jl8/m煼)+`>*"KSUyU5 _en#*{bEx] WdVuMW/9y.e_]<1 ŀFV88`H(GM7nnnX]_YUL+0r ;Jgڐ TqI|-X ?ϻKz$KҚHI įotk!![$;&V(2(qD{[Wϟ}O/~`8T$ Ph0@&|2"ӻ'''/ ->}]-ӗRA1-, رE 3M$kغJF5`kIC|6b4S$IZ6ZGJPEXCkNUkC~i^5Es=]}][L ^Noc[AUmhx5qjN{D?O/?@!%i^Rzis &ACv1_FýPGq508\]yK"rʲ,mYonxyIs}N MTKVA-󘑙WZkD~Ttm\.h/rq\b&X-kd}r#Jߨ-\n zm<5^=>o?ޚ#+Eݚ~a7EͧICdK0 -!1 a`w=H}sB"Jlfp?{zQ72$X2j LZA]ܺ*}%+nk헜 f B6xv;_0Y":m_ZG}9 (8<=OO?/o봓tpΥ&^M萈&Y4:0^8ϘSÚ#…AxfcLU"f<-ZhR'H[*Pc8ܮdaX >VV*[Ka]|o^OAӄ AZkw)oA@?# #u]&6TF\%DmY]Lk-Ȭ̶g0a+}jony@v:V x!CvC]&! ).gԚXP@gn}v" DXpl4蟞=1Q4z'6O?{%f)"J"@V@f,u̷xm.qU]y6ZN-4PuG5>V8!mjP.պyմ}5#eWcG=^eABglmk|V$y'8}Sk eG3z 1Mf"[><-Cv.o_yǻQ5yv)ZSu-,,K&I7 d18P\lA! 5&7BT 8 3yuz  5 yQGO0VzApGZ818&`qj+߬!vH0 8^U^FZܔGb̷lq#҆(l麹`T˸^ﮘ; v<@, " T(uy/?Go_ѸO~r:sp*_LDwptg/ !0kH5wukJ&Ww݊+"6[S{?wfuA ĴZ+j`06%'ֈeTn,ݽL"r&KMQzT`36E 0 !!&R @ 9*GOOxN,G<Ѫwpp\:p08`/ {:RH)THofVJ^DZ12kmUqwUMF'X; ߨZ_nJ 4]psS ]ر[6"oCj+swV(BEɾΗ&//=WdfI2u/<׿~Ν@-i.jx˄Ywxue yLjJ&- 6ުƫ URW\܀ȶPngq;]r T]+fTMܫ2VKϟ6 c3f(.|dKgW:a4dF "Ah ~"p%>ͲPS%kig|aMo8WzW_G72T ׆qaDUsxHWov}#gProl uֲ1&Rh ]Btۀ (!@0 &T@,ᛧYz==g/g]f!F1(H@" F "2#kp,4)@: !u8k-W4 79l~y|lWk<__'DcU*_4J{x@^O?[\7=0|/ןew9 N$ ir,M! CYL~+~PwZ\k4}e* ߛJ/m7oW](+uRI2Eyi6l(HW:)ܦVZEuT_6mT-1˖F"7yؑlAPY#D&94aXSc,aUH"Fhb9L=-@˛@]P,+jk :"fbNXZ)6zaEeeWqZzMT^ƺ5~T.[-XοKT/NHd<fY_;~;?胟_'wN~ÿ<;;FO_݃\_g$*Oc%nXܙ(cgO[¥,iUذHzrK;D<r8y Z^SدDk*!7žTr@kc FZJr[!Ut*B*wtQ@dVJ k"f5I|m#H{Q-~ĬVZz) ]ϟZ֥+$y-DPW jhduFW=ѤA ~Uo raᠧ*M/Z8\Oϟx1&Zt s+N"0`D"αf!Ҋ-;(ej v r[F=: f4k7/ 1eS RX,KO~/ o?K&o~O>3IϞ> 4H)c,t2Y& )̴!\BjܶJtF,ґv%.mSW7\w,i]R]],T+-50zn^-u$,K/+@ > 5ZZΟ/6yr%B_+;4vWҒ*JxsNqEzwr$]+EWLJ#"/Y0w NX0[ܬzی1"BP/~zhn?:9>TI=~2Fb`ˀ^A 3_tI"žz)eƁ(@$J $M^̀x;Toꫫ15Xh\ο'IM<{v,'??|ɇ,_OMw,5'=;ZfVs.!7Γ *= |IuU$ ۂXA}*W{ ?VMK]s^Ɣש]K瞁rRz3vU \k[KXnpJ阳5Vu_S/_*$jJ)f Ѱ*l:'hR[{yg?-6+D}2*H.D9hy߭X[n ob?>ECHI9TAo>=cpT~1`DA6[}9'ouZ߷\v슈BRJi"APշV įkn"l}Ɏ$wD emɅ;YyhVom^GZ{5DQxH4O,MPt=9P?zO_3ƉuK *TʐPZbJ R<W[6Nk?Fܡ6V^U,q2JNGlчZEij{u@A/VϜǚVtCZOP|R`AU,Ě}zjOwU)ERI;0 (xde`^l,[kUdβkfq&uw#"6G k`jT3Z5ҦϷ۷pRo$B\IBPy}to[ckC1( x@{tr1.O_}sc$"QIQp`N8d #λ |_2ʑpAE0W7/opl;v6zՕ7ʼFF|HNtri<}z]g3_[{r><~*?u*f&F {យ.8XMJHP ֊0NM֮? XxؕBJ"UWXySwG̼|--HP,ƪQ8j24ٷ- I}sͻ[%'p؅紳"WQ( W[k}Vu9n>ԧ MZlK_m ¢jf`Nm>~kk߾Z׻E|ʬ"UTB &6\OƖǺ"fY`њP ggϞ/1[lq&k흙UַCv7٤x'Eq( C̋h 0~!0 uC") Ք(Q}9}sꚗ׊CڷuȖlb*s_%/hig ML9Up'9 cX,#R_RȮO\LuYf$AM<,] @Y}*4X2DAt~{{W/<?z_}>GϞώNϯ’fl s6 78ۥ#'% !5/rk*8 P xDnhj`D<џz4mrzѮGD_I cP(4Y؉Z<2jS 2 kӃ\9= );#w=e pRXA@x݀!`Z xk f/^An,DZMT#U.Kc@" o#"gyB0 "01{2W"~ұDbKIsL=cGe@of,m}aXoa$ă2FOH eDYQ:v=xqT;PǛ\gWWթ-˓bĢ\v[J"8hBh쐚0=6[d AUUI (8x T ܑ1- AO?A}@fRhPFZc(1 0.D~tt9{،5e ͱU4a{%S`(V%ܘvs*S*zJ*FREudf&@lvl/?Oÿ?0 s?˟9<~ϿϖG,?>_mߕrT  , R/d,PEıoa€h $K@@X]ZHNDw=q = !!A'A ItZ @%q~4DaƠv=/2w: QAHkFpJI @{$ %s8aվQ)ƔDIM,\P$PqCAѳD h),\`y'y>'_{_z>;,47`ZH UMpјn&FHsDĬPī=DIm@ bs2%0A6"g ;\NNKXe5ǁebr#"DV25C%id Hes B[>#IJ鷇HI!  PGV0Rӡ} gW3[ӟQBY c9 ĽR=5jz~~vӏ-EE1sq#I@ϊv AFb{tu!H{C!i (ye,wt'0R-R+LD[9 cml '/E~G='ιwީK/N/6Pί.yM 4[!#$ddd,wq*_fGlQ(,a Hұ/D(@ Y(;;:hfpHfIgd|#lAy@-F_Tcs!ةM$wwR2ID gLf&ISl_X}ȗJ6X$4(D$'`fL஀ܽ{lZkWXWJ&\>$f!>nfFAkaB`Drs4`u]ft;zv$N:If(LwVJb:NgŌ " }62Vt A՞IF22.Mn_uca'ۤv;:V~]ΗKܝ޹t|O^M䊢fZXVx@2M]) chEC3xalJȖS. XԾd}g{)ƒD @>vҒ}29U͝KxFFtc{TLH3Mz>{>\NgΔF:C,)؈-@*k3lWƃÔ^W ~$Дnzo2oF[9G?o<}o~/G=ݝ{/ܽWgdl9_t9=tWށ1 ՛KlW#5v->#ђe|.0{ "4"fyr AC;ޡ\LZP8..~Z.a'.v@5;|4u(aA[q2&K_JLpQcbJ.KÉPVIꀾTLïi%(Cذt%N_sOCku]KPǶ(%@gϙ}‰0C_tG*nz&2|3/+?яeUՎG?~ /?yvvzLu%XηsZ["Wk#,6' H_m  tLغbؔe,vz4c!;"  to6~1Y2w7?ʢPG B{K E8"7UtѴz: L`l]oG& >R;bT^\6볈ޥZ5&x|y~xZUU}! ie"_ ?Բ=*ӰG#wU)]oHӘ\Vps( -jM0&XxKўRC!.ʤm5QU$RtE xʕu D5iy؜.e#M@ rPk.аU=:k}*kȴ "3NR4 |zV;g!2ka2`߿/۫?x7w˿>|xquyf>_\jbn;cST^"x--0Ɔ-Avg^ojsz@AdAy;#Go;$]rn֛p#SÝ( /*7UDyσ9]* QH>*])<$p=aI@@&;ˤM1)>&GmJ6Ț~*pt1-H3I׌AۜtlY ca"v$cH4̨teO;dFn_W͊=8~j6`$*!z`ϋY,;ُfۓ==yH P $9l3d71,A5ܦ )c "m[Wזȵ2 Ys*@CtGP{[rbuXٞAId:^~JBYF~rhw A7YQMk:l|חWzѻ\?Ň=w޹~GO<>H@AR: "hGzS hKz}`hˬj%)N0T冠D-@neyƦ%cPƽMj w2|b@7+K"}]ĒKc 8XKS۩Vrnǒnp3Xmi?t,æ&=iZjy6.y *w3);sbY($bHfYBe>܎.+)<#ltc 5*sINoOܻϳ̑k祈-1/;3k-kn\J]hVVꪪ\]#A2W^~cYȠ5Xz!GvO _vG6a1 5SA$C7g;|h&P >|b>{zÇ>k>>?}[(`|So_DMUCѼ..TYf^UUp@ NfmWk),jˇ̉P(YZd"<0m!}1`mXyҖ1*EúY!@DKF9Xͬ˂ΥuL烡'v[B ~ؑ.D ܱm I@:-o:8LcNQTY:Jl5e9Uj5.q4!ab!a欂CAk| JBDn :lVϪixX 5W#FַsRc s<idkJ`޿tSEr;. _pWג`0X;J/2]Z&YF*]CBB(ŽK_\>~{߿o|+wqzѣ_~Og?ٟ_`QrVEqj| ǨT)D,3'BX|vX"z]`XTSB!BtLLjAuM0GBUG?mX9Ǩ{oVhhdMPVzq\\3/wj;[N%&#pőI L+6=mȖ:A֙Lޘ,KcL8hoBD)$9QS%S_(AW(ŷdnA"baFXGj"hN53vξ=tHeW=K3 &e ;xAc<c,U'jci9PE0:vFkb <TAfSr^_]+O=`[oC|G^nj0x{kdAaDIrl(@n ^{p%:Ig;ωRY {oF JXBR'd' ` 03m( Fj4]LfH @zf%hil6~EQrPuT ]<{φ(]'LϷG\4cm+L#3B ^I#>4}XVE8.:tSpw3Fv_K[^K k8O]"+@n6ߌ?KB4Hkie* f#}vۆ Y%C,F2@fG"vug';ISo'3pUWji)t#)3Ɍb獱 C{?`Sk-#U=a>F}hBZQm >qAMCDTuU{˅9=׬k'*MS+(h3w4TyԱ5֮S'&kxJ,Z]n[Ջ=;_?7K_ڗ?`yrP zY!~dE ᠯPJN [I{\ƇFFXC 1Tj<B˲$"k2fj&kfAIRh d k"!@dμ<%;FAUOs$ L@Bއ7<P%;0H-""nYA@Z1lA(#@X1(1`IHH 3*V* lx8hЪ'iW00;DCD0zg<HF$L}myDV|l nCLFXZD|Ug!T+~mUH!Ki{ݻOD<8+dv(exݝxECY I I~A4aWA(֐(\}?*J+"V.hqU/!pHXsR! ZSK2x﫿TiD 4};'ƿ&)2&XF7NG~p2@D4;'$fASp\K&3 IzG_mUאNj9:UfMD,<([{pJKI 콷%CH,] }>_U}_˯.G|=^MHAz˨JzTM769-s")Z(łc>~_\Vo?WU{Flحmm RaMa+Wͻk^ޚ/y010B?ݣ?fDN1?h;k; yc֘XM\f D4DH(ɣw?b×?ɓ/{O??ur|޽;]n]9_*֛vkHBHaVz&PG Sj6#"m"b-YÇoo۬jV;`CPX཰xa #TSTXjhNJ\5* '}.ĮLݪ=C!UhG6NiW,,C^ᝬ8 \Q@#iB7Ƅ#w}lRA9k s;G*-aA` 3H#YЛ\oG,(F/#,رcB sGaկe{uUޡ&&"Lb*:Oe<ص=mvxM,Ra66!qƌ1ٞa(SpKd$^"iLU{'K7&_ᢍ#Z쾇A)zFJ-6 ekY  8}&+ܠykwGDBXP0)ܯk .ī核C 4o "Eއꆈxv0T[E9;b}}yaݮ6n>;/pZ7Γ*J ]uEĂ [( EBDTJAE%FR H27@Z,UUUff??;RuLA%fx:dMZP u]oJ\c JFO؍]@Z=>0s 5Aՠr1;/ i +fzfstn6U|y5EDb wWwIc_侍<a,q&;优xJٚ/Qy/2/0ɔ\tr2)UrO#ZZ~C,hȂ ky/;J~SJ,_ P&LxơJ`MI@KM4=bo0CK`XЇ4V֛P,HHW҂{FK2˖`L7b1 p$*!+UA1dD9Fqds.fvrtt|td7ͪRG*CĵsѬXfNE .fJhJĔd;""5?r*bX*z/tc(LaKY*R@-@G2!׵ޛƇaJzVQ%*++@B6`gG$ |Z4t"((U BoIŒ+!#O] Z2Q8 I,tA!<-n^,` MۓwȚdM& eơ>.V>ABSc84z1^ug`D"=˄=L&ݠO"+qwx Բ ߈.9b>xAƎt GJ W2(Arz&""z,] Kn$5V|ϴb1X$$~@A#څ[2Ab^” ?v+zj㓻cuUxӥ.o/@/)67!c}/xocwjtd (`\3bX6UrB Б!lJ`d^Y^Z1dy'?jgLZW} .Pi }]@=A@T=VH("ɹD1xfQ-T bkؖu;(MS H d)ib #Fc$`~ji 7RMEw,LzBPE0ϐǂ]E !BfU?CMYk k/ WHial@zsμy+ӖvJ$SZ퇂2dbo/ZYHGX( IDATo]Ym&6jvCIsU$ϥ# kHLapP#9>>nz9@;@S!}x"$,:C$"(Z0^h 9>uz攤N!݉g[&CFfl*7$@]s `nNiN?iZK,`G'0RG_Sj kwlns_zklْ0nn0zbW3  ˲2-6S\c,2OrhVB@mǙKKUߤC[:q-EW/ {8nQ89Dpt#:(4@`rCIy#8!yTQB4@+\w(v 0DU)H =AH.gXoגƿG`nլ/!dI f"[  뾥vhz٘D նNP5ϓا \7W+@ؽ0&E@m]uiCVm#.g5x"hbCav@< 05d^ mpϲN)&5SF?owc *ݼr\tEJՋ+Т,KՕ^c]-$FQl?#f7 XiyG6#3Jc ;{n͘$(?l PsY^C+-ɉ2 D\&u?;xkG JZ>U&T+:YDsb""puMEd {E;g+9?x_KӜ AăLytnoIM@ZFjdjmgl18asJ8ŤkʅZjANz)ГcupLx?Ls 0p4}c-%@J |0&9xa g7ʣ?;?v͡'OIf2[ 0ݚ[LƷ-`u/pnCYZXtn+7k`T@&ֽdv?6vIyH{Y/}74NzA>p@"+((PbYH!DA$aLAuPBfu"TYpG)_5QXw-ztiuC2?v"9!@4"-M9Lj5!"yj!]{t`l pk/pphx܍$u 4}]uRu&/ $xOp@\Pu'{߰L#i xA1rbq!rJαcRCyYXq*UU|sJ6db;ZDu Hęӵ0Т$ʻ[FZUj1Gi3j8?54VI܉Rqbn1I慶N"'na~~3_pc\poKssA`%z𛓦QA$f*@,m&Lj3j缗lI׃IUo={]޻ Q@J hT1(8sFA6͖Q#0R@W0FQ]"@}[5qFYsTw(io~(;ItS$5I'~q{]-CmyT1!}z$IZS"vbZLnW)ӭ`߾^MTY :^ ;(ථ(YQ޽{r\]]͏hqvvчO +7eQh*u҄V@Ѫm(YCUmɐFvLFflsO?A Ӳ䗚JzsjŽ]S:L !l"l#O?3hsFZL ߌEEEs.D0T(lG"H#V `l~LHv*<:1T_^U(z:==U^;;;m"=:z DTէ Ye-+kWye4էV_AڢR[Qf!-AO"#*_[l/ӠKS\?!u:;;A~B>6U(З#+M4 qA6ɠ/B8E 55`1_Z -| r ͮ6Vc7"E^}Տ?zlNNcy4ŬOϏl6坓fSePZDE<bڵ9Iu݈';nמm~pŔqHpUI ۼ=1k/ͤ)󳟹\jc{祰g쩛%|/)ZHd@6ޘsL 3 &߻$ރgA2TrFdMU9zplvqqᶛ]kB/7ӧۖ'36P aA0uj@ ‚HHZԃcwn rL%Dh_r( ꂪ7}?TjնΜ sPJ[:}|#H^^n=ے=q `5TccAq;.^@.`Ҙdʊ/|"=2f 2>:vC̑7[j91L|HruuE)EQ_z饪ܹC`W3Axӿ/+ƘӳgO(gO/~_׿-l?|| !C x>!ȴ`T ~)r8?4lpN1%mlw^Q찛:ɃuI:҃:}%mӝs:d$1|*('Εݡ[֐bwC]2 gT'(gF0+A"7{wu-"GGGO+_J@ow^~UT秧..˲\W[2F FLjXCYPUx;ADVG2GT̗, )bE*/a0D<2;P r%bKG'k$/5w-1ؑ.QJ5+'pw:Qr;̓˼f,;&몮!K]mG'w֯}_>y_g~orE_NwT׵)e|B yFO $e!]M!D3Vj^ZW"^Vh( ː Fn#ǓsY\fa ȬXOH@@pe%uʏ`F E rýa;uÛӪ((L yF'"YYf̦ҫpα_җ_뺴Žw?~lٛ믟<}?kaj𠑿|L? P509cdG Ol F ɠVz4bG:\,8/ϯ֗ƖVIiV%3HdGFhi %ꪊ\O-bFD!֕iȚuGK:W=L=w9׈o͌Gk0mxee M]vdßOf03Þ:uGGeY^^^ZK Zf-l67>{ܽ|_ҢU/yכ "jޓET_'샕M"HΒII&lFDXUpjLn\3$w\J:F{|Hf&hV!;>l[H21},[C2EWoHӝ=$6XkZ5QYUU9玏/.WŲ몪,Kcf!#fbbAz<[kAf s`q+MN9 EQs6$"@m \UBYkNZi3#V몪|>n¾.\RP. cٙ֫akmYEQHݺNNN]|_'j[["D"誺k>;uu^??\X,<ފfٮ׵Al* ) Toփ?ѣ/˳3f.˲(fMUUGV\.rn6ͦB쨜~W>ϋya>1^-xvW~qRY,FgE1Ͻoa0)_1fE\.pttTml6[VGGGϟ??>>j>' |$ژF7J_rF*6d"?|s#RCdt%h 4V`'} IDAT""_\e ~6՝{nhyrrR,7W%-fZV=zÇUE^CfDn[r)./'av72M ¨ȥ/w=O`B" h '%ꝧӎ[XZ_f,]UUumgх{kmaYk'5.c,"|[WmYܹsGDVͳg hR Oeytt:[QOY[UtW 75 @ !0`iƖg<?7x7GE 4BH4zry9ܓ7o6jdIuVsy=E]tPG5Mӝ߻dVb^oc4暉;YZ,Z)K{x,^ÃGj{4Rq]V&F4Қs_Ƿ66<51"$@EUUM&R+Q,x$w޺;σJ-踮k ˔RZfdqE{@j$ظz/~y߿d6?k_\E$u],N˪8=>? ??˲G>2٫KQόֶ;;;Q66E90[WUEWk_'rQ$%֞(Ɓ(!yՌ`{ZyKf_Zk{Rj?cv8"$I,Nl0u}u!۷<Ǘ/_~KQ/NC^U^Tڲg6w_~|$I>hQW/_'•˗&> lh0@"ҊW" 䭵E]x I(o?w( ;;;ׯ_yfZ뺮sqKq O=tEO<ƝY~k_೟?ħ?x'>>S?ȵӣ81 TUU9kkuhL`CoKtO__;ޠ퍭Z!DUUo߿?x MS,QP]VEUG=%Re ٌkP~ Q͐dk| G̴qs%Αܻ$.tv<і5V)&j-uJ]q[?yBbfhm3BJIyu=z86uե4أ']-s|~rtDD@8NI8<> MkmpDusl4ʴ sOX7p^ߴꪆFB]4 ԭu$w_"i] O1_΄y"=.[2E4:,MSV@\uq,KDy'I$ 3xSJ=7nx{8ٴ*)PJPRD( "!Tַ+/_qlؖv2q R "%hEd8R(ZA}DdWշzkoo{_Q .kBQ%Ip+K)^sͪ,O'5u)֕-,Kaq}UU&9'Lz{o䥗^w|>,S<1{|y?xW\sn>_K(* >w{o>ُʇ2munYW5MyQe g~O)cʲYXJ=@~QL&4['t{}{/s9W9[5~<>^x(|37]>|M~L/s C_qs\2k-8N#̝s܌ޗy'(pss(*5ybJ+˺K%ƽ^ :RaedžSJ㬟I5U/c\fa)`>dzɲ{oD!IzRt~tx2mzu]y{w J)5?7OOON燇Ʉ)."C4sa87dN.ˑX|^==O5~"`Zs|ݳ_Z_`mﲺΛ,I9XOz89;MAR3@߹:;دjJ) Bum.]W{kdI:Lw֑u)ٛw_Ͼ_xNSEq mY\Y䆀R)X!X2\ĻR`}\#]Vw1wkrV@g^)eB+PD4lKo`uo'ϓdDz̜-uq[^D~$ sq_oL&˗/3?Bsheipu EG m48uYι,|x78>>yT5`Z%1111<ϙk֎VXG"ӭg~^ϝx.\"m1jkw՞gn6^XgSX=/[xc8 "ᵫj)\$Ҹ(8) BQT!ͪfƇ?,ܾ"BܹR9|:2뼮w$ItmGyWUYsΓ9|xp0^/6V*GQ$Qdi)ت:cme P4h5H{~V4NUWy/eI$RL+`J$IpJK)%ƑV>I,ɒ`0Rڨ@A=X%9grc8JRid$?MʚtCIy]Q? ȝ(6V<|} :Wv} $A|O&FǺ]-cǽa>M|ZYe^yQU,ǽ4cFbmzq2 #W_3ƼKy{ʕu]OGGG,\]-YoMWwă5>Vf9-5 _Dxz~jkmz`A%?dۤ8SU(q-aFq6t3qn$VlCh$W(*m=eEN⿾Kc3 h0H'''(`0!y]{oV&4#n /IRd֑"B@R)PLbz7ǝ#cZg}?OSDz|vL&hwt:;;;&;k[ ֏])yE>*9I[BqLDEUIb"lmmd=c[rsnooo:NӅ !p:χx]"T<a?;NykDƞ|묐d[42ڲ;Eg?F:(x\[$wkD2%!"PJEQAG8Jh+cV JDJЖJiR;,7$᱋a[b9C A aNHJ)rVJ1Zhxƍ_~^ۻ˯E3~ӟ~cIT/N~ڋ` > $d>_7ONO^:ziMgIf~桦GԍEk9X$-חĤ-XnSh#1k8T{v"dճ"I)WPJ1uCZk]d |-H* |UcX*B5׉Aj=t ^h !h##( {KIƯyͷ| uep8@~occc4 x4P${_;˽$QleAJ͙N("m4޲"JARJk;vsA9Xx:_7'DR+iR#BR6*W˯Q*BpYyo|>{W. o)#ke7V@p~máu _n %@6n.kR-ǡt B ˺nah(by2Z6), (t8m! Um(GnLEÚ5;*0!@R &+J)CD$¦ie1ƹ9pFXu( luzzʫ/ű~o<8:\G,/7UʺG `sTn~"ƎGT⾼ VRu J瀴bFjv9O?Z}RgɹIRHE9kJ9CB@ QAɀ{[ؐ8 Di+˅±<(fR16lzA AKhk&KRPpƠ#{_?f,2de /#WyfSJql!XA(TpW᭗u $I^UU·} "@Y坪 wK" et Z`0#D {\$IR9Q5QAHM#%qS$@$͎:kbj 4❉H}w 3 \rG]N48?N]ve6I-yY!8(<GVJAn$e $"5\in:5|j6K7lR&)ɷ(^xo-}-xL\Z*&d B1P5X-A J4i>ͻwμWy1>>_w5bDzrng;D@pRY dE,aS"Zi-uhPb8l,f\3"Z YX(r""к%x~F,͸3m{I)e AJA(%pu!IcX9!~F0xt@BUyv!cx<:::KN&LJitg".P)4vd2*tdE,IEH^ u!sƒk k+Z~s}z9i+$qp9.{#lGNJPR h(`i "Hbv l\%&M f^@==(z=gp8 cl6c-!$1S Px wuH2Ho~w{͍ *P4Ohտm%F/B@!.Xk+||9Yy&f"VUeJkDx"2Z d%Ir3QB`PceLR90$Á 0--f sü^gYϲ_4M{iD,Ɵl>?9>>9=-yϷPOY IDATuìk7}tooK.'''t:z;t2opt6)O޼v D^/RV<ESoGs@! "VOVMw~kmLMZvN:)֑E!w1$ +^QHj[;+t$@ ?99uS_݉ETqs]-V &*s(o#ݍi0˲~Zk{ݷx.zQ w]#e9 ^k%Uj6FKw^E@/[dz;'=+E&Nx'[ BpJ͋Ңpi-^yOR %`΅9cҚudwgK D͍i?TUG,{֭_k~ O<>ݻw޽{liD0V+ !GU o@̋0|1_8k@D\>$t[.M$̥*N, :zC,Ώݍn v3^*\RZ*%Ax"d0\tJC!` gL㌃Rڻh2ڻLGdrQj ogz@bx%lFu19}dFj͔FR!x w}ƏxA:ND ݟј3bϘkӉ*GƊZq Y%gLzRPi 8P QFGRJDz4Oxf/K%$#KeQ4\F(Q`U| $,YZ4M!n\$J8 b;1Qq)4ƴK?;au21Qg97bm,e.8ɇuκZWWh;k!Ώot`<:,i1Sgzv[TrlP7sD" %#r \UYkm(nЄપmim)$m6w.mIp>Jb)#mtdЇ.ѣ2Ji8_]uO;+3Hԩu2BMTn1+@e.qA+67IS:2^DT9b`QiPHR =+#XM[S R0[JNo'gĥKTHĻOS۬7PJsN*1|t| JfYt:-t璤42*l1/.8ቢ_|W};$FSf@+ѴXڮ^1l%&IJ mZ XkP q^yMWC-@碠D_HZͬkyOJ竲 4cSqD@ʘ(N.l\nUu‚K IʯV骲ϦR@"6ƜOs@3@ R& XIno7AlˢsmB|I7smua)?r j1B[Zv(HwcMYד@\ri{ڣW^4K{Rrxgm]];%"Z[;GΓ<[˟~ b@c*"42}qc$ يÍ o# ' Bpm[QP!1O|*XvT9sΕ\ e@ # DO9\\]# @)諲 `)1&"Y[o,,* csi'QTe|Bبs6Im@"6JD@HP|.5SIi"YF$ zkcۭz)^"bd|4MAߋ *2x0^Ɛ@-"!`/-WE i0[ " Vt>ba~dB P:"DF^zZumL(9W[WqVe* ĺ*|m'pbf%ID(5M0Ԭx83`b,xD> D`aL l:Gb"@R@xI_bKݚl73auhUj `"B2_ ,V hUH\x<6\&/{ PP@XiN$ B$,dekJ(Ľ1սkH^ɇ$YM.x ^_ ^Y;P]ZquQv5s{b^) a(2"!H.`[5JJ責7͛7ޓ}x6 v;ytmtv&/w}e-{Kyצ;P0O"ldR-+@u)TWIA\?3k{ֻs8lEHƨq~ D $6&P!Lߨwfvml8ʤ-xz8S$'G$eXx0GQT~^ҥKAvxrȧ&l=u2]/r땗?xG?:Jց-u8__D:c@/;[E+7=57 JVzͤNTk&T,؃E YNx`4SIPe/3҃&5n8Olo6d2荺>0xa8D̲lVJGIiiq.R+d+vc?s?FkMG:`Y=A ]Jƛ|׿gz@փ8766,+w-.QUׂ(罳ևƽY2Jb X֕Qz0R#/_t|6uh6noo>y]gYEzsctʕI; RIP䥄( )] T[uy;o{?|UQq_]ڻ Dr~HXFJ)o<9n2oEQir]cŽ88=9.o~ń Hl X9ؒAcFEV/`oiKbbv3|g_}`U` 2ݢɤkꉗfc}F/ [[.]BZz!jPȋt3\ 6 kʅwVlBup">~:NsW4Mp_2MZaP1s޻}nmb<;PJ!g<KQ[w:sh|ek3֝NI>l롮3™VhΜye2hXJJ|c7+R` IR 5^BkȆy)/otg:/횳w5B_1_^ ܿ?Mc){8G/O\'t:ZZ[Q(o~OM ł@.W 3mQ!]QꂍETI>ڳ=/ A"le(}(J )#m@Ioݼȵ&X #lmmqŕ/psֵ6f>߻;RkHdw2_a5/:=Qۉ6{+_$Jڅ2Wk9%P9%'?KđBU )h7MUZDHjW Q y[`0sݻnݺGGGDQ✛ND4Y,Ͳ |/~=#IқL&w}^{W}K;>į~<eBA(HQ(Q ߿Ԁ(ۊQmlTǘPox]SF锔][c9ju[|VHƚ1= pYs"plõa/F"x~-L vFQ3j޶Mpq[ES1 !`h!Z !` \d^/I{֒=S"J AI$qzO4HJ(`֐s`{~V X-Ƴ5҇s:tj8^5I@:k vqɊMˇ9_`!jxeK'e%s{Vq6MLZ,i]'60GRV[i$ReZ6y5Ng(IYzB&J)Xѐ"-q}A!s .QE?cjރq QH !qΝY>GsuV;@ˉB,1CvЛ'f>+w@7wK7,9fv%"2"ʪn¦pȞ4D!0/pI@/Az q@Z^ F6K3Udf,kf5xdd%Eўw1;;Z`M|d嬎]DTz׫o>~wM?'{ P^UUw?ŋ~|ᇟ})3_Uv],JaQ\ s̯_u8v͍fn6/^|GZ{uu|oo:Tng׿?Kfnf4r[?YT76r16 Iwpƺovk]蜫i...vSTcFvz@0jGԻO>Zϋy 8fL&Y2b_8释Y$mr6b/Q">?_>1z 4H@4ţBA^989RA,s jˆuO<4+`t(8u:xT6W*Nc{n}oOepMeuAd/šcTƤfT&0DDC 0ܣYTyߕS (9fa:cOfƆ$LK/=yTR1\-IB0Cﬡde`fk&jp,q78/f<Fs_~ ,==u \MBP4 ]WUs 1_|SDc_5u׫sW[[5!t_|?_ŏ_PU:ODZ' )I돋Z %)r*O2zf7k61FVU^*2ڋ˧O^]]xѣG^/_{/>裏 h3zyyo[S/..%DCsy`MfgiZ ZߡnECA4R]U]6+;a 2ۻ^.׋vj}е?OW/^@k ݝAK~ۿ胏]8ΘD@ltm;Pvќ)o,gjR—e4er]7w]]=%g][j}~ w˯lz,X(Hc/V޷iIF>1uJL?`1ƪ )#- !-_n%y ,q֛mt}yeB^>QV4fЁvMGbY|ޮB0υq2b'"S?)3RFj69΁zs[[dbcEe4+̺l k;g, Q->x(;&u!*DMZK f ,zt= k);WFqd|,k-X*t8*JOlEFJs޻bVg5e')˂o]m3[gV볳Ű?_/fsy;m̡?kܫ7W_ۻMEc7jYJ_'W‰+g6®b9dP`:YшP'ͩ-?o}[WWWu]0bǘf/^yUUڶ"A=ʶ _,:sQBBV 4Mju潏>Da1pdl|UMT5jun 7] !]tt;cv9OD>3vLEA+h$r' qjg^۽u{׶p+"Ɛ(r!vu|S߶1܆ ZTZmvZ߆nUSsV_˥0n{qل>{|~^,q1zXׯѶP*{okOVU~ˋjՓ'Tu¨\~Y=T89g~??x䉞nc(:KzfهE4MmjW5MS;]CB|e )omeZjsTd4bK9T 2¤zRdFjlѠ0̼㢧Ö7JCx4vӓ_ ĂSJa/IA&B"$ SP!(W֥КWL۶)ɰs )XY1Fo'E*đSLiKO ,RA}4>;2cqp= e]r#dK ED dDP{3 X-6o6 hfRĈKG CkZ8DA]W~ˮ;8gue_|霳~wgSjWo{E YD ,>ƪ} ݡU͙~mw%YF"֋FKCGJ9:Ƹ@"Q@zf ?TEH&.-'O чE]ύ1fz}lg)O?p cpح˧Ov jgv vbJ~mp8dbB`T5[Xo;1.US5hC<Ƣ1-llUƹ"Cvw7#o^=z-Q}fN D>bm-Bb#%Hd/w1DV2u  nUMTι5T *yRD>Vf,O;Bٳ/_}Z>䓻hvZ.GbRXSu Uf|ײcLRQ]-?O~?W_}g}UdUє ##ˉ`A"S8e&d`Uwbflж-wqw(L_Ykw-!9xI, [W1hJWn,171 U*L)y䳩lFdT"d!jzL q$, baQY+kV6B.YЌ&\8.Q@=sN1یggdʻlt50{iЫꦘbY$CSD`ȱąL/0cRi QU1MTYbX ǣr?i=DdҐ+QmUYSxb6D~b0*B:&REQƘT~"F1*DeUxdjB'M󣎤%2^ J-sCyCs8BGĤ뚇$:Mr,!: >.1FC3 ]-ry8gx}}#/?Ͼ7U0񑃈nPHuA0-nwMX-!p\1 TUJyat?^1$ !;2p>1ʺfjtw캮e|+iɷ~{ӧLM_^138 ƈ`mn3 vuP7s&xV)pqquQ$jJ5ù:g] z!QU3-8NG`Qn p>jW5ۻ殩KW׸QA9_K ED M3<8Tc^ٙ,s928ZR#huv0䯣"Mc\zo1gKAf m*#җ"C.S>p(h#owۿ7v :1GI$!~1w,ھ^9Z̔t,d)m;徢ٝzYj}Fg6+`UGqȟ=#檠al21^ 0hXPD%Jdb&LX g.tY*:<.=aP gLuK/P:թ9&+ϧYTժ}՗_> _>0C3Dk+SᰳB"D1vDŽfD,\1笪ҎZ1V4M!A6sۯwM ;%Q-Fpra \b"X.MsMn[X$u㌆ӃcC&fv90s @7*!{\ѯ[ַu{}cwn($I!x{D2Bh1pQpC΋zbh,K{NN[Ϳ{i&SA}Erܗ lzX| P !`Bbӣ-ОȲh䐤}#1g363NoT_L0'?vnޔس}ǀ*L9I'{/`0e~:sL#"0s31QLz+$$Vzܲ ʙ 1fN!CDA͔H E[˂H0vE3I֚AP S, W@t^/9,"Xs(ɒ=Bl ћۛkj"2.m/E55s܂0w"-6`! Sg6+ @Qvsլf<hp A$jF~s\7oS0.?moYa/~Ƈ_zY7¼(]/K,z^Y";Bi-"3VC"d1V"%Opk-)&ɈVkkf;mCΒqUFB"a"C<&X:0 '=Gu*sNG7!GI)̒4\1FV^0jaUUeLBXW,P$Gr>f|?|l H"At)t>fxr?~}9şG?>ozݸlԸ^&o?͜EQ12DI)m(o;nE{M 4le V˨L |Kl]Ϟ=;_o޼Y/W,1m%TN%ݾJɍQ;L-g}&cG \+!-MԟlxP4@Ged 65 #*>ʏr¦7?9'|| %;JD̤4 r7g /χ=SͲYdk梊<Q}?r#yNUHܷC!Zy,3FVGٓIȊG2=>S c{<8fEKa:/Ѫ;'8%YِߜhTGI=>}o+@tt(r;kfU:VL҂;@WWWzĴeJDo_|,|ٙ\"v>`Tr!~/v 5,Fj!?)t"L]͍695L9͠*t(znfY,>'~(""4w}͐5*;PNr^zvUƌJ/kb !>P`C=R!f*SD4}hJg:8M9[B\H%%Ow&`OS?4!6UBBP, UU':Ƿ9j!I࢔̈Tj[L 2v#,wA`Am"{{;=G-ukXlmc7onn77?իWZ\.zuMH5Vw. 3uzrcˈH*V?~\.WbX.ϟ?BO DE!D Qy1440屚X97 ec%RX8aej1e7D6?"`阾 ObfUcaz S'9SlP4 IDAT,eTuTE7run{ͭd =[zz}ŋ_y;1Ax\>-Zk%CJ5iGfl6qv٢Z]?B&a yՌ?|X>}~QBYT.nj z~!6MٺCr޼yWWWg50׮J1I.)B꒪Hjo)E_.b*0$ u8_5>>裏>zU1ڜi)yA"T: Y.V:o],gggѣG?3u1bes iEˡY45%F[9NdTOv&KCc%2j q/QhT=+o1Dntu;ΌrU?G =ώK$f0޿~ PuTedqDDN ShOaV_=P\4tވREDLzOlMp҂OVh6eX*JsnQtnt ?H}*sf+F QEdg -@lPͤh7o6ݣG=zYׯ?zٳg|iUU'?aZ=}rܷ%o}KCm[umnUA=Z/_?я~vY+2?G^,ɓ'&\.3mۧO^;DQ! kf۞.cf}Pw`f+{vvl5]eP{^,=rff?;-^T:+^Y4T)q&EEKˇ֏.fJNFLh -ax i4[m̴BYbcXbQ7M#"CƘ4#Τ!NyQ=ճ:ƕ7JM! 1 sX.ZS(fҟxuQ Ǿ.W*Da( (K5B;f۶mչ^'u]?zBO?4Bx2?3]D4OŴtQŝ@ Gq&2V }un1޲xiPk/"(I{LЙnxcjWa4[`VitOay``4;EȌ ^ ]ڔTot)#2?!vRt5)<)ch=j p.1yq `*6C׫olp:9|JlLC f*C`Ű17<9i5zH6_:(np؝k_^y[(`u^.yF7s1akk] ܌V d3/Αy ]Ou%nZDcĒ!kVgoY.*lpv}"ɭ~jx2y\z##D)|BѻP%M)eZYrw՟ԴW=a{|MoHc*GxӞ,XC[Eb ^ LWU ]1#.֠BtPbo,#{sϵu|Ky|^Gs:kN0g+`F $ql{^}1FU䢷BLRɓ'&Qpl1juF۶ZfL./ЫBCDZ00B (p ^ǟJ bK,i4ZX h8 LHDG[Ih^2QͲ |N~SA UW ,&5SFJi)K,ʀ3n g} g3MͪX_9o96[(ȣ T9tPh)ָs?3 eA(Mw[!; x#)\oӡauCWO5ꗈNuUU@#3!&]îMmcsذ=?O4*I"[ɫ(jPVuJn"-18tsvvvvvf=;-jI +:?mCN7%:t.e5$x͟w#ƕj#y,m}۶%Vdǁ]U6hPUUaH\.kCb{!4ej$r8 >|qܠ1J^]וa@[UJDwX,vs,ZdٿDJ&CwAZkWPՕ"wg4ȶmHf41a# yG٨Y5X;lA=M G]l9)R'41d7 ϲO/H<(Оq2h7T<Q|K8j#.Qy?j^g/3>*t?,Z#c<(,\I"ؔX6~,R{$'or32-ǂ[vPx^c8f!R?@a^¦-JEnn-eԋ"#X Ҵs TFfߠߐ9>1iX,kwIg.^k7iֈ!t칼ί^D'tHåՔrWTZp~J<Ң1I 驯)+gflv꘯C1%$Mq9c82þ%<̩Lc֓,j[׵1RF ^D!j"%$n ȵkle ZA61Ȭ9/ᠡΩɘwAdF"@!veZ.˜;XBzc;ELH~*w߳P9ME?qmdx"ЇETAbk_:W 2NH)j 9[g{r)Eήr1LTG>O%id0SP匆tBXbsh4z&r5Q?B6R>B[=[b]@Yڶ]ףꟙQ5Hy1OBO>̟-U B1Z[uh$ D*N9Ln(9Ht$zH:|=[0`!נ~_mctLQ(i;A8s,i=yI!]*Q;)9IKFԩL5SK1`6^PETv;:iu);Ӑ1frz'9:ӜEI@D4[UNZ3_iGPG)DZFb#!1p-V9v9 Z4X?ZHΚzYUNUgN6"DAH-m4z]5n\T5sb('wx"mݪjU{|Sڬ|J>sq<vu}vv\.ƚ&^:SH8Vwq̈́L~|>OuTk܋/t6RuBu]o6crl@3,1 %C@椌>>ZVXpb㞈b0ז> @Cq ʪԹB'B*t>KVOM~*!G^}-@GylGD1}wqhY<1{,X݁&%W^(I(ψQ>nRIt5{_#~=t?ѶmWvﺶxQ_ɑ 3LJ% \nБJ2R乖k}~7DG:lB;=G1QB%ϹU;%Ĩܬ{d`V*fo\@5wb1ƞW0r vFj҉$¬YǬ=R H4TY LT(#rƈJ]*4@#,1C #9;2杲 KU6 q8 PP_2H*,AAbVB0N&Q1F.{} D$I$ umsZ("TU\]׋6FѶ2O}\LE =/rB6HA GJRwEZ!DR QK1)N8jz ipi+'301BՍ(HU{DyV)WfUUMdڶ=6xy(ψbNGyQ-Fm cXfIF9iS  fa-+=TmˈyʽiV꽑 ~gp0  j41L ~p#yjp=8UV1̀1:C9%OdF.Zg2B1)52r8v* (̱ 8욃17(Yh'( g>*!CP-=fG3rx0""Ĵ7idE0g0|cy:mӦx~j Zd{_ixHIB\:Wdk}YJrQ& >w(au,x^)J9+[Rd˪QR`Ibbr5[-} @c%+M=Vԛ qzݾuւi.۬2hfy>"Ϛ9rE2A$r-CCːVD@, }$"PL(,BZC @v6H?C˩1SJ9C#Riy [ܳ+L@9Y;l,L{ɇ?/'.Efdd;x\WI_Q)7ܯtd A_NBgo)N+ ?Bh:>AT\.sGL/E]"Ty`Xތ=4GVP"}Rh2M p b7 T cN·"4HY<oKi.ˈ@01j}DzYbA$:0#~CuƘʒ֙#cIi],:-V"-{:@)ɶj YG!m#_O-O NzL9Y/P.y党P^,PGX$\u0p7oͶ`d_ruH߄QWη38sF2`U2!a`P`qqFXj(/B(1۫N`$n"^uܨM?.Cz%Cg"ƞSXy iz3LgxsF@U,V맖`3J'O2R8JLGCZgH H3Ț5݀OXo߼#v{Lţ?aJP(ZHa{J=d |hFK94"M,+!pc\L+}Y2(CЏ̠5Fs lǴݑ sDJ890ٷ0BrG#XӅuAK^" HH'U*).!KfᄒpT &r:yu\.(t>{yZ4L$ EPӴP#Q phbH$o.),?;=qNsdG6B,)֡LG Z0(c̼߷B] !$ 5h(m` /v-K2`1sNDj՚ eU4 Oe=wG%SjzO7'LC)aS; rl!wG- 1̬ #^4b8Dt6%PӉE4$w`x24h k O@DE)hXդNg[Fz:A?>7RaRNRVZcL? Fij} S.LS|֡UWDК)-Z$Ipe=DB#($udĠ QF)VGzC# ,9gf>)ϙ*w-Ԉ#mC@g¼KGeGD'zUr"Exȝ/gE4xdSmb7QRH>$nuM&Eo=ydǍSJ8V 1Ə6FlHd2tA뤪)K!f˙}KB2 H_#~kͫ_wuy1gnP9>D6!p!0Y$9efk!ˎc pِ# J?SƗq"9\ -0J^MP2*E"8 R頷AKءe'C J"a^Sِ;x<ΙGA}GD$G1*;=KaEdk6\cCƯ^+jlx/˺YQF&mt\Hz@ejc`PX$qGiB*ף"H*yP!>sg4C-tGZy;ܳ^GAy 8:nXh #Wn{,, Ex];9 bmuuϭ*֦e<*v 5!r1kuU.>z#IԓBl%!#|2\HTQ1%s,8f BNhgr !ϜQeQ !SqpÛeԓ`j{lj~)C syݦ.J~`<+FKT@R8lJ6/;dg*!Ld3@(G;f4/ A8r rq~cǡ"Gn;x b^UACA8"V{YkTkKwYqN 1BH21& -f-eˣcEQdpˏ@iB7/\Mms/?Shx_E0Jm'KȾ) !EĺcMA~aO١:U6l2U6u]UN0eQ1 [Q#e`rV\Hv /J_RRZvݡݐ fS*e mikpoT*Sff!"hgk&M>20DiEaaQOA"58 W1ADȑR[+fGE{@)isfߣP>}Q:< )ߍ !?'EUKK@l0hXW}p7t@ؼbwt1Z?lkiwi W1`hRpP1gjuQ^q"І6$B\T !h7H衜C٫fL4[CWQTHdPv~kI>TGO|01OFaP鎮t-/1U,C܏Z:l2-- 9f1xí|y Dォjl6 ee/%YDV53{]̖:(ɸV :IU)E-)ּqT֞2YPdfU}ZTZt:83UeD8qBaɗ.>('hgZ[QX't *CW֩>GMIy>{x5uBAz$9" "Q19qz<ئ<ćw1NfѶ>ƨJq^k1ț,3MvLivj%dH5s6H{W<ݟ%LDG֠A"[ 8Jl4:QFDN !bURq:$]Ce.J|R]- Ei"n5AgJ|@{{$xjcvS~?[H&*Tz]𻢪d.bYWN]Hahڶ RLEdt6(c<;;v*iU];"LbFTh9BF"OnCظ/9(Gcfe|_Ҳc:]6'|#ޞrgRO3BljYi>i.͔gkJӲ?a%#T`76F#LΝnMuo]oҀ3!xE=H{8$H+Qb SǓ:r2"-0J^ʣKE.0%ࡠ|FhfZ*SUY}8MA^=F~"VO!2x(v;Xf}ݻnhn$ƐV?3Jc1ƈvHChsjZO<0Gq,VXgh@kd}Jq6h 8v1l] CI) ^n$/NY{, eY8DqY|Z #1`,mAPQB;C!A(B'VYWiZxN*+nnﻮS UN.q= n$b*ҨAc2aTVXbؓC,>␒{Wow +_#w5SbX1u9TKs4R˨bfl:-[%уNq^ƕxZaT*v2Ca[l[[Mut>T\PMs* %)'2)lm۶ Z6=}T9QOϣX68̤;L>SӬ,DJi2E yv"V%yٔ)W\" Ytv8FڽrA*RZ^s5`XɵS䬰_wN S*{(4&UcQ~s1ՕTh铀R1Gm}UEUv$JY.:[,MS+d,JUu!1jg^SQٌXfu)O˫t{K.]q~ 2O,Lm GX#S? ~N'e j*3}i궡v6@ʁlU:X ȣc2EZf6ҼoGuG{a/(Nxt8CJ>RՐ8h0uuzz{jtۃ?/+Y PEz䛓@"5zUlѳru][kYb C!Y!GڶB'ٛk-r?r",W_YU!ri&6 L\%KX2hb#҇(҉[ftwɟKIog墁>ȜHSmgySW?YQ?u G)O?E M|S^]G[EɅ/}&]!bYPUX'?'t(Y.!T>Dv-hUɨZ޷1^09-|כĪbHndj # 7{MSI5ӴVWEI$LXEQ2 8%:F;/:Ӿ3)LI3Gw4}I)=Wq8QI3v~a9m:<$[zNL偎ueθ[妠bV:/#phw)q hȑW2:*79{aԗc J~sk,:[T.m3({zcu]+kD LЁ,9|7S^BNe_r蹹ρw= lJ6#1|qZmFF<9G~{|wn:AljҞ1\GP,#2{z,#^,KE%t9i5\ԗ#pz]~ kX IO)"}$(B(qbT28dCxKuNRSDX1le4!gfBf5:\f:?a>gt Z7{U^0Z"P(=s(N|rg?td_#NUdU1srˢM"%Wя0J}q\oqf߯pT3rNJ]O!UQmtx #| "; Qb"`.;Y|ȉGW8F|p=:yb6UeGdcu+?Qٮ!tmofRTmz^)k[[eNIK-b}zG6U6!c"q[~L UҧR٫L_3 IFF{:e>cӤJdhanfKl-t֒%pgk&ĚJp&\J (*T[g}\|#QzY'lD~rw\<ֿ'D{WuJ.L&ɵ}}:kVX0NO~ׂ}XDž 4MA LT]g+Lk}E88hu#Lؗ1Qe> mH 6lCgߊ܀ϽA{ven|}N>a*ko7ƝYzͻi{?zGK~GH >)gwvq|~jG3s Os@x~ϟ {W!4!D$][ Z3ow q؞2+ĨTS]8ݬmS[ Wړ:0&DS=V֬:G R^pd2NaVf2׺}qo5+! gB*°o2X#!h9#5T/rB* Рܵ #. $]+|qC,ZW^aK+ m&/ct≢e-,㳛]ߞ/|<_Fw2HRy̮ EiaC)v-~3fc7FY6FqhA#i#s()% q25ꓗ ]SJ ឿ(^2×wj˘ xwB9/CgvVv;|IEPz?DD.`‹O?X$'!hck$^ v~즲u4j),sK>2lZ_r~n<bnn(M[Lb5]w3;g jT9YA"ssd_Qth7+'p(%"bxN\^ K2p> *, Yv6jG;*\ٙG27OQ]D9v0K9*u\5x;- +Dek^YDֹY$#p@mG6MuQ23WJ6x׵z{HbV V?S}ﳾg5_2&* -7T݊uo3Y]~Co[KiDz'P:t ;MM [}AjA:DcXJѦB3u.Azq$ Z"$-s!Y `R1V׬aӊxfgII+rtґk<1ajqZxܒɚ5ɔ@A b ;bZDOIcG+(V[ؼ vM%GKM:M2: 0`u[g᪱գBIy ҃<ʱ&EK\%_WHδWHWa߽ T,]u=HRvI%`9#|#N]2t0{*Y驫iL,@60CurPǶSp?%u=0OjhO<@Gtv8I! ]C9]@/ 78&ƒ@vo A\((P%(WԺF,i&[Kӭg|}Ι2sH@:՗(+5F"jOEڻ^ߟYX\) TX(6f60&}eH BVlR]A g((lL))? ^VK^.{Ӂ b6]"+m(<#)'[LZf~Z|/Uxt$GsB +!E_)iBsnڪcĶBI6-FO)zƀUH!2{ЅCBcp5ZFX=gun0X"@XGk䑊=jvU屢 q?ǖ+x?;OM+w!עتkWE UfowNdN@=m▍f5 9F J+ noLwz g="}5|NgGFDzǖ~-,E¸/'3<X#l'A+tK<][BG֍뇯^x~^M$"wW9d_2#Y c2x!H/ozm7莿Nٯ 9%KIENDB`gpredict/pixmaps/maps/nasa-bmng-01_1024.jpg000066400000000000000000003167651427377236300205710ustar00rootroot00000000000000JFIFHHC     C   " N!1"AQaq2 #BRb$3CSr4%D&'Ts5!1AQ"a2q#3BCRr ?ӚUϥ>}iM9TҚ&9*s@iSJhK֜M94f94hh@SDM/Jri@Z9h@& &\NhF9ϭ)< SD4Nh *riMizә84& ҧ4 M@>hJhNM"hG>M@>hDҚD$ 9isH4P>4SJh4ANM)ޟɤMQɢhDҚh@*|Қs@ڔ@ӞhN )h*s@iSJh֜^h4&94hhN4E@4JD&4M)h&4E S(#sjz@SS{Q@H~TH2EҔS@R4̟JTh{P4=((Hv#0`v PJPzPQt立FHu:((J9]j3-UfE1/:BT&Q/d5|QY&Ӹ\"4kZb@jd-Īw I8lsRZj]@ΜŬy@C-:<ݹ(#WbLꖜf6$хR=H0+/_sl>KN { eغ[A T#ak٧}nDeKnJ-p)6AݧΫW-H @ IeZ^/7ޫᑸ#gzQ.%'+.ҿf)зv-!MI") jokmxj^!lx.5@R Bk9"u5nn,W`ļ bJ@w}{i~m#t?].8T|sY>?Oaqx{KEYKpb$GcH)~[ j d26 lX S) RT d99=0՛&0h~G4ΥQxqxvͧ|v[''PmBi4'z5cY@ӯ5L{#ӑ$Lճ תsѹ8)n K'r'0Jr-ֲ\)=TM ReRT! Lz?AQxϥeMܞY\J-S !IYĨ!VnRoS@j՗Kh{@K$)PJA='O yfM#ͭ+4 .wuu~U=hT|cotI2A<,"9<(5tӸ5r;]EAݝ7G'K0+eWX8m*9.A vws>Y' xOөqxڗ\:-ZM$h:)W[;(ijҖWw Z6&%v!***Hx [apZ+S{d%/*}oniM"PF\ծiM|,Sza!I?SO7Gմk !wPAsjRL %i#'3HWTUCL-6j\yFQHs m_MRhP$p GcrdE^mnLeotbW  I)r,nW@cEӹ4'DۗUϑ kF E^nûyM>X⒤+R'Ρ"{TMͮ>^DZi Z.|BQZ=縘edZ-֏:[aˇ*(iFsҥ ڋ/s[cO[7ye -LJIH;dWgtӆΝ/Qd]@sq x_)ZA6x"A߁?&)) $@={V{eiS:^Ei܉#)AGۛˋ8 ܒv(`I&$F(MT\XD6 ^*O{* v.!"h}UW//KeKAڤ>u#r,@r*K%HH- ps2Q wf6&6'֜Um!OxP[gu%E+DW|n+bշmXJ^JoH6V s^C| k[氘-% eylHJm AJ ]OoGEzֿoa a;M.+~ɭGe*Cj.9W"O|ko]1}C2g+x,ml1 r6vLP<$Y4s }w n"%sҭTսݖ1p| j6E#L@g/jM@ҀBtj0)zSjG&J"~TEǥi4z'[E--VuP7P=wN>)P=껌E]ŅХ&DG-Xmcijzjl4Z V;Ǒj?_OS`Imu0<cwjqڪ1˳*hsiTv{5#BD{{=~}(~S4fjT5L^Q1:JeIjm^ V[vRumHRnM~:њPj+h=f Up@i"JA@߲YhU=wz[Upu-P*H5jֶiag%E)  €Q~%lr.i˼z NoYmU`Il57.5~ H.FEM<mA )*BXb EKg2zO8YZr_KjI[ݒ- Qi )0GI1τ,]gWRMu̳wwysUz'h//Ws>-H.$=}Dئ5Bp5vZ (, &| 鞱~^u^t[Z@j5Kp%;-"DyI1܃k~ުa.p軬^ [dR8 DZ;)Fu6xLISI])ƟH~;H^c59vųZblj㐥 nl)Zvx_:ox}>&ab7)R>s~dWZ\\X]_xǛ.\?ii d\8АHI!3;SN\:۪ 4h[6M.T ^V2\e(%h8Z4FnϤyoFѦm][AeZ(-^!)QLx ѝk.ޛbu+w׉r MjHH'P<+}-[6q6--wCaZVI؍HUCluLWXi}aq^'n! - ~*BBHQ Bs~/WOc^\k\v2mZ黛ĺVs8Rtf9 ZӬ4h * \#Lj7QLEv[~ :ӺۣbMiyi`dby*R$ʓdvzvzT~ NJZ]4kUⰹ[KRmKԃ$*R(v(u9[/_1쭖 ʏr ))p((~X#U>%B:ᵠ9ڳ|Kn_ZK`7Wr%"T4Es)#X~Zb-\pnn8@e,TB|`4/]Nx~*}o*}jq0ΒNFYj뺝RJqH+IN+]ow[bHenH*mrI&09ZWëFޜ_t,n-^Ժ}NۍlkÈZW pc sAy}DҚx sX6szQ2neGIڎ_]3dʨ?I!-;GaJ':Ծ:M㔴/rطAxHF3`EO}JP^gb|3|dx[Mȶ / !)(d몙)$(}Е4ܨG~c(ZK<)iY!;BwJ$crf6'U{ #A,1؜u눳Q%0)hHyyW.Tcqxc,ͺN]-4ۏ(J!YQRR3^=!dPJRV$~Wä$+HJ+#$yl%! GL@̑xR@8h}]5 m.3\@#5=+{@wW֡Kiv/pQRޝHu*~_:!׊ԫϏІۛ侧+i-0+JҀX *J)Jd=]tj0lj(6:˅;P 0O׮A! bXZom[/Tr !b-@t)cz矺]u~icYݗ'j $-.3SrnQkt'~z}=~ zVmո+ԅ8 tTb՟=yoouoS6b qWK`حU5AωvGӻQW' uwIen/T?nr\h $SՌܾJCdHվ76ͻ*.86%JQ0=4&[5gN;t=h8܀RT=$ME!)߿Zw!!e>bQ0JwDAi}v[[ K-L92j+[]4?>ޥ>AjN2JSp`<ۈdWړ#akS_uu2tI-Ƀl撋V%, m%) *_h9:Wt,ť2mwFݧ?ҝi{ "m{Bsjk D,76"IW%$ 8SK<@MXvKQn#G+1l!kJI(! RYt99AZ9&EK ;%}.\APIִ]A3\d[%Z4 ?d& DG!J3M[`G?j}E5&&O˶}% ܘi[,Tq[SuHlI Ҝ}vÕ8BLNÈhYʍ4]y D&V>>34V(sj I8#+_4 徯VZ<׆lBľJDU*2I&Ӯ?G22?ӯ9GrnDJg1%(Quum- mjI X*1צd0P iSD19yihZmtG*~#iMި)} }&GXm…@c{洴^O}Q#r$#J*bǀY6Ԩ>Qa~n*Pi%j8҂iI}V)ƭaz'+QrDDe{q+谶pYO܎ݪ']#:SKy/޸'bv*}G<޴2HC*䕁3kCHu_IXB?o8[ nb#-umjөC{#bLc"{X*(ӳN]ƌ%jPɩ$sd@㟽Z zZ֤EZv7.#疢9ܥZZwkQ%%rێ7jP uHl)j vbマ}'@/XSa.B &*#QYcp)\>XPh`6::A={v~I@ +W!n-i{l{fRE4;I $(()-JY;TL ܹ r%/uZ'</,)P#=8-I_)"7(*x}Ŝ:kV~`ye'hA$Iʥe_{_~%$’R}{.9gqPǴ݊{!$qV'> Rcj^-^l*_9juw>¹mNoHȖ HP  IR|NE~/Uj[@*U:~r9DI婨uHLɎkLRig} ]_fCHWqݥ*+NBPGapӿ ]#+<6?)R-R8/uT Nҗdn30 3nG`oǧ 1].@Q@\m I O|cO+܃,N x/ے%ZS*JD >`.h+8 FJ0Ĕ)tT 2$֨߳ϡkM|LjpYr%pkcpuH%Bg"Tue-Y>XLmW=B. qfT%ItP)2ď)Py_~˾uYus[ } Sog)]ym0YY*h[R2:LF]heo|N婗y*R d5.'a)eJ*Re'{B(ZkgNZh]Moe fd2OpL~%pI6?Pu4,ԚŧXem.t/·ZJ 'ql] >:<~yJp=znoa ݥIWgPyGe-z[%ztcGk-4A-_ILHlr<E6mT"tC'1Ϧ~L>eטdzgz}l,! 'J8S@V@OgPiߋeSDY^ZxY)MV6la@0b)>1>+CKۋ$I})e :\WZCSS5vF.2i{:]/ZDgQGW̦I^+WJҘjzFGˆn!^VV[p,II ;9zzBHz/l_bmRل.Z>@1:B*5¿>tM޿m7hvѶ.5fbeU+CNcn"_Tώ~zU\2vjN G͹ n<įbS~cJNkKtN' S-3h%%K  r=f-:F̮՚*c9n1HJ< ~PJ `9^q3%ѵ:>Cv}@Uj,m]y)nka* C&dJ~uZVSQ\q [ԡmhR T+$PQר+t^%{cݛ ekAM}^"HB%-)"9=iӺ7ufEۋfllĺ`:[BT6o!@5ȵ%h|(yiNaN& Z>d-Kt 䅂k@ψˎVU2y~ imoG!E ^vN~oEP1}S'+iTC-<ʉgaI&8o 7zcAk=3 kԷ[]9rOڛWCjpxKP՚.o4Kjqڷ +)m\mL*7{(FGU=Q3f8 JQ0dp}uoXBV;x[ne{a a| lOy~eZSnJ HLۊJy jm)%g.WHaT]Sn|ZnXzlk}(څqn pl$Lg^>O\.FےRN%6nn[\*#<&Fj4(\&~F+}e.8B {r}~6MA|6m-FA'QA A 'o))9Vt7HtMvOX/*TK " nBTxQRBkQx [N;5 HW{P*PD*=I~|3O=1Z5ܕE.]a(7 Eljq Z ; ׺Mc-X옾Z6˪Rv( "&;vcSZy,almÊb-m! BBd=q<0G_r9'q=ǬaZn[ iH’ AW&J]Cdޥ.VJ_k6ܰS2`O޴ ^/0֐V|mV:ʠ SVx,U;<ߔשgVa\xkHNRWʓF W}[юt/n &T CQYB8A)2OT@p ˵JJe4oL\:ͧ+bpsi]b{jt3y=skKiɩPڝY!0(g$*I$:S*)F8VNooUpx!FQ nC0ʐ} 2+(7YgLqƩkflb;KvJJu%0$$׳9١ᔱqtEv>G>ըle=M5#Xt^Gt,^&ظv2̅!@gt)w~29~֚h mLZI @%* ؒJb|YN[t[Up=:R[:}ahѶxi{"I'oxGWt'KM&ݶ$Qn);!aSt[̾%攀~bX2 }dVMZt]:_#z%3Ի] A]Qrxu.,߳L}9ʐ }hHr"i<"@ ֜\Et"]tifmIIZ}K6Jf7y;+jEBuzpT^N‡& VR4iEѫm=D:Qi6O܋k) .%q:65tn'Pi-eimT\[^2 R*a[P(zNh\6J%9O~;WVқ!_^JfP,%$)Un̢O,"Ջ`5N*U:_(]M߼\S-|気J`6"h͔u )`$$GG1^ -!B];kQ\4m*@ W"}5]NVOAs%M$8;I(Hvztfe jC %A_׫BaL5_#Ch3%JQJiju,Z[\(?aFe58ˍtZiw?x[+'@WA.6v`d^uHi^ %'䐢Gڲ !A)\~ |WWW[ٶJæ[MJR7R?Y~m]D(.&AZ~iQ:Yw%KrUk~]ݺnv&KK۽;$Q:vy  J>R{oL쟾h6]KwHCi)L-a)ʏZ"dT$~G>3vg-n(rŲZPBH)R{2 UϮܼڮ4efb7q۵N< zt.ZA%35n9ᰐ{z<词Uf5Z!YʣzUwN},wNiv~Seڎv%N+}HkڌBw:]m+˵e:c55wơjX+Ond5|T@%6O$x`W(5/XާM/2]sdzV9V7[CK@۹pHJL מ|`]tFjvJZ9f廬V"᠕v$(%iI ԄIJҤP۽:+kqWmrX KY_CoM8x$d!t:RsqZҶRB60\-c{'[k*Zmd-1dZPlLIѝ|33~"5?{l)M8̓߆*&R Hctҝ91WT5V-(uZۺF࡭ Zvy bkۋ 8ۛ{wL()ZJLB{&ߣ }_M2Wf/KpڠmXJg'v.醕n֝Zia-kܶp(%JI;Q:8Wm덺$;RHۀI5Zg+6zO¥?mvJhchCw7[RxvG+'3rf͗.CU̔1HA,g#M(>QhJLʇaM[numRw-+h$rDLZ#UFqv۬$> M#t"|J 0!0b}=ޭnBScxR8 Ŗʀ27%Yj:팋8GiW*L89 :稚ppii{OMNx\إ[yR)'>+"΃8A_2} f^l)$-*?@ ĘNjT_!e>; ȅdMnK@aq- ZˁQ $@($)If+4=hAK{-gđ" [ۺ[?97v.;'kmR7ڞ0eO1umn4ZܖYJOdͨl?))ѕg R?D¶dW!I6 LH;aS wY1ٳnR~Uu tsA') Z5޼^+Jo086^ݴ|m-|UI o P; >K. WK ,( !&xڭY fUwpvvJV TbAm/ó3pCVEq"Ax$o2V ޜ̇q- p˖<i;BS!i)RJSTXKi N7`64E,|ٰ""m]RIoa.dm 4B88qix3=JzyVZoS+V[Z-#vۉJBH@*<7|fPGޔZ- `W8 HJS "Am3H"tfԹ|]i\Jt+˜5ؿCMLaЦZڕ(8S*򷨟SKWzY nrgdͫmK*Oiʓ!e[t|(~=;7]eW\]|\>(BO#ZDٵ>-h_XZ[b7??V0P-^RUlS۹4umQfUn\}) uV@ R ]_kZ;!{dm\m/PY JI19ٸj-^Xu(WIRgWa97=FX6SKyT5zlp9v'PPТpB |pBYV{+onkFrÊBѸ 6NI;׺ ΞzvcujKm7VRҶ BRxZPB|NukbKN71WvVp ە(J֔y^vHcWcZ]zfj |؈p%^Gln:gX`,MlJPLLe]wj=_i:ޒܾ\5vm`i\6ˋB{J* zjYrz(۷gxA:1=|'Hv7WYGu ܩ RRV?_EB@F; GmjB-v: җqr-PV䄡 Si T`7dVW6ѩǭƐsХnRH3E;8>g 3iOzcH,jcך%uIo"~[ugԟ`Ve-$*]ֵڈډ:j#kYS9ch cn}FHm~|>&Ր#jE: (Q!CDR{RIE;w<:x#st^q83FrexlAP PnFϬd^~[Yvҫ)[(:|XlIz]<ם0M/oKU̼rex"w.ջzjBqm 8 ܤ)JT6INTk>WhLd9Lݰ֭Ē ..d8 FDl*L1 \!K%CElf!u.<5cq6V0B;O'ӊҥj"'a[MvQj@SSlp\6PJ;==Z^M1ޡh"{&9VHj큤y$T\J<=kxZy8Uedo gHHkzu6GMV|S /ʊ6R_ZIXIڨڮ{(]K_+Qk4dݷ9%R))O]э<71[/-ڂ ARIe^7oSg`O[Zl֛8{@HC-H>T%?S.+r[}np@0H.cwfg\: Tq@(wosfǹԹ[#%Gu?FN~{v8mÔSAXRNj,vncN+66V߈zl Qqԕ)h!>q)+R:Se {MuvJ]cBR)[RTO;P{Oa5v7ʸjDX=A^[ s My#'w(_l V|u@MZsvS|l%ą 28J<"ף5Yw2K>P T@Q0LvPgwqktfez+Hp>3mJU8'/yf;זWCʄ+0$j²1RҮH+ZC)A`{s+eoOSeb}Bǫ#lU1ݩYJnqR%M*Xw:6Mg&XEf!I*GꐡQW `u#m66S:ږ|||#nUz{mͶ39al6LUWL[%mXV!d}2ɯ_jEh/H6L^^tvC*PE@<\!Gjro6gWBkO0a,$K\KjV L 4BHڍfes6ւG-PI ˴N NeNC).x[b{$#x z1Ӽ+7orl/cé@$m*L ΤZgb6J@ z{Vd2^i*Oy*H=f msoӾcZ&c=VQ^6:ɽ@KݼJZeW:p2-*p̺SS?$L{W?.voձ%(}n).9 L!#IAR# U[bq 1p@@f +l닮idC[ki)'HjZu#luvړ pRy$'s%Rfn^#u{!^P"H䯄ֿ_U3u3q Z[>uNBLAQD>hI#i!6s4_MÍ-&S) WpyӵTY;irnq#zI>U)#SqS}2[LuZ~w6V'Uʔ68o9{SeƳ7Z%eӗ**m倥w'b` ӑe0|J=e'Oκc,0ڗ=Q`t'{`D'}ǞRJQl$ Nҕ_8=ol(. 'i! lnHgHE?pi;pOa}Sk[A辎iAN 8,`qN|e'ifTɅA=Y~-\k[%2KQ)VSTĘ2#Z}*ΡQ睲IQA."Nճ Vt+?CV\Ϋo%AmԮ#Hz+e2w7hu|W |f"s'TVvnjAil%<yDHɭTu;SƺRm.Y iMj0 L&d&>X1Uzs>:Ka{LiRf\~]𒤆0 YRO6=yҌjYҿk ρ><&mv3YZJ(3ǯ~Iw}o qiP sZ\)[@䝮,?ʦ Cἁp.%=yL"=H~;s;Fm &lPڛ -7?MWVKnjֵ= 6)e/nX8Rg'TJ9GCNT d8ܐ&kbѴqVĝ,WΥ:ե.PO/_j֭v>}S)II/#H&}c:$ۊt]6!%Mp>"xZ,\ہ+y ȈUm"#.Xcz_Rwۉ\%I {}"ͦ^-Bn*$;@ϡ=}余#Xy >:BHcilUg~Ӗ>^PH ';k$8A"Us5T&znQTtI\d IGO:^ۂˆK)!/ylx)7 9"0nBw8$ЫͪO` YUmkoZRj EDɓ#|h:ѬΠ=JXSVeRe[!le%N)^ҊV0]YJ4Ry%\r}Ơ{S4\źS6!}NG`gTBdU>*5  +LZ|LtRk5zVJ(eA^3iƿ,wmWQai$ЄyH޸[M4BHS){gaeM;AGa毴}svثʱڔD7)1CprH(Q2X,U<๺%,-*@Opdׄ7ק7L;%U)Pl2RG@tK9%,{kțuF[VۧJv4); ƫ#67#!agUEYwk֛.-•(6\VԨJA==~grhgC(RQ~w"[/4Bg|򄯝sUJuAŶRZR6Oݬvi.b.ulj=cqjx\ Ž0:DJ∅;-LˮX=Lؽ, \( %,oq$7@ n)UoS;酆?>.yw.@$O *Bh TP^P4/:M-z?/s9,"@RP< 0Ls[;M^&5*u(g,P a){R?1'+JҟPG=>=U:YY䬜+x$ [[ZGH)7ɶfZn^ !-Q$q~dvịw\aZQJ AWQߎm}kam[1|<nTXQ2Jܢ䬡վ`QaZ%N0?D8L'^;}nr;B[jT s7C~0{lw[{>!46K"*wzHI D1ӯ8F S9%d$mD Eahf~c5s;ý&.qCbT%APgrU2+OfWsVcTgin%n_ܐ^P8.4ޛ`>yo+gcel_رxڽ @u% @Gbj״z~}Uv,;up^(ePjgr$&E=on|:m?se;KߏopV `BBW$&7:N(o^ h.!T>eIObs>e|pj܏QI5X v%RZ mH)v+qYcLܿ +T:n5?Uo*Pop'֓Dr׿~F0޴?yk8k ;Os[;DO}i+3Xm697V[\JqJP2|)J7vqݝ*W?/翮M?SՅֺ_u@N>TMY$N$pAHPReShgJu[uL`mvlbRM7R)JwR)JRħ@5'çU2_P]SLxV b|;?"OjޙFYh/>-d- p[IH I _Lq\Y^| ~ϟ Ls֮-Լޏ=PӐ 2"Q5]&*)U6Ezmrƛ$YnPi Fe[~qb#qثqvna!-*#܁dyOʕQ2(H^t3( {:%? NBMQ)$^N\;wp8qEkq)J&I$Iʫpkng&Jnۼ YmEJJ7(mǰyKudFes RKE[)P0 />WVv]o7\ %$\$;F+_9sTk ķ.Xa0w7 3Am)*V?핿:ԥmK(9n";\ʼnI3ܨ5>^C |*z|V\{m mkj Q$RL~nZNZEպݵ}+]Y]P6E2nRA6ꥹY+5՞/-ug=lͺ~ᇊBO8^tB{H":˥k[^}Ww9 DSPRu۶q&-\mGi^ԶTH%fVm H ˴)Ǯ9VY -ߠ ?>JT4Yݢ4HCD Iȑ=*۫%[^jK'-^v7(-[ `4)84"񀾀Pp-I<$(ڱ,!eIq p II'lAl.ʖw!*Od?Bunw7x| ZBT8I (HHwIIZ%+/hWdQ-B" Jy 0{3ws̴R;vD2@H)͢ 4&:{+|SN--; uL!-H33!GvcX-o1n* :D\؝FȄM$s7G˷<]$ +r`#E,2 Ma|rFխ-zନ|f7j.ECE۹a~,) RD22 7goeZ=}pÄniC9<(HRS>*,`ݸۖV-X P%R@ 4¿en{{ 8 ^{Hut2bn֛a*6%H)߹A$R"~#wLpnvVZH#JN ϔ$:e,Z!OJn2$qY _zxnJgbֽq3BJH炀}FV'& q U"B}L O.7)O;Ia Q0%)ڐH*PJ2f7Oj:^)ӶfW$)J`@=S(x-ڶb%~A<O aCȡ9ҝ4I@%@H76XY׸I$ܨ #pDQt.V9 m(2ø2Bc͏9vݤ ڄC7!Dzp`RyEYlq!ik (zB@$zzOl iYiIZd愅OYc"kj}ٔ((R.HX >Eױ6\xW9%!N> ~P\S#3)KA5dykY1t߂!gLӛ+P?v1asĐ e$̉Lϔ`Ջff(Bm\ql\2))=ٞ\_ulNरG'ώDqVj{G|5g6aL)D*QQPsj/m emT38@)*D(1SS˦R0@ڈ)Z H6~Id$6 RDYmSpmlI!K!|B(83̞gZBj\C1-8-lDW-ey{F.) Hݹ>YPU:B)!R8q_!&өZy-Rn A!{$,O&D %">bXmIY&28/!ny+k JA yy>;Г8ײLuaK)*)Cm)DC DIW|mq>U$V %JR}ęen[5:߈Rw\I'Ll߆Q#ӏ۽mq󁐶qae%HvkiVm=$%!' u_Xl2Z1~A)EFiqQxkOI G鞅G|Y!>:whomRrW*vӨI?G <9OKz٢Uj+Xyl5d\eD(:͉'Hx/z-,u}[di!KmH[XVGeTNG6i߇lBj s5]"!} ik%(.^ cd4j{Zv^&͋WS>!iE"vTթ<4~ԍ92iE로UXy*ZKڅ̰%DV)\vԛ/ݣ]ЙƊ[j{7iq({aaAIlTYG&uGEav nqvPgs.$%?(yL_oQHy{qvۻN}en,Iԭɣ։M" vXZT^N7Iy=-qV02MhR Wp=gE\2+ŪXo[\-\-0J@s#aeJ3<=X.:sFgu`wlm}v&b!nh;PʏDiMfcYYjk"qW 6n 8$N{YguD Z-Ha'6B(H H*dkcсҘ fΟuĥf'NRjRJJT%,$@;!*M_W?c-0N=-߾KMIO< ֔{T(?P:K/Z3TQEG@AAqPGf.qyP9 PFU*Sʂ=M}I4ƶҎeMnٻéX!lm$uv!֖mAhZL WrnP|'IYo vj'n &zl_e0wNdqXx6en%!a6%$aHP*wꌎf:Vm RB\2A;@Rh_/'IvM+u\nؘvyT~hns/[zL-BЗa|ܩ+I+ex *"R*PP9.I{5ZGֿ A xeK;Hi6AuñWKۼNVӗrwIaw %' o@w!TiڞũĠ:Rj AMJLR({2tgyv 2C ˨<̈VvD$AsfNE QJUJ'3<m7/r߈SZ` I3Ty<> m9# ?3h Gsm[q|5[W,IJBO`g՝HPK9/VBy8 l0M$: WyL/+`.eNʐS2IjI[}b2[9 Sb yTPڤ) ;Pq)/2l]nYk 2@I B@i.hWHs `6G%I 2+`_(ZlUcK\6z7޵ɆVVBT9lK%Θ,{ϔwںKj [PbJ=cnnq8S!ARIROҨ,5!-bY w#vݹaM0¤ 6'pHIA`JWfAYO-kz}ORCD8ʐV|=!KJwm \tXմg}EE0{R=PS=LzED;T>E3@R=LTWk.8%g +̐GؑYjt5KUJy()ON=zh?]y&BϏ_jez֫RA@u@"Lj%]kᦵa+R 'Ԟޓk'່eR xxI`T?ϥr U iϒwͶ fP¼gn+?k%ܕ3D~ajCHP9mQ xuUYR9Ox􏟹tͫ+XA a?HMj⡹\R0\mӏV\yM+sh*y-l2q.!Eh ش}K!wW%O ?IKdJ[} 8 R7&wJj=,8KQk!bnіA3%U$@< 5E:[.^utw]^6hoCD W% wvqWW6bd< Wkmg&.Xh+z&Ֆi\Wwfܭ[RǟE$Ѭ-XVxvwe iiA,T{Iq:'Z?m.^0&jL%ĕ wqJH Obrb]U PjQOUT[r{bn3)onKiJuRJR`zRw1&7SRT\&7b"}8TSaqSK”T#1F.ܩ8PPNsvI+jQ(Iޭ)j,aWdKgBnR wLp 0O&j鷺EfYJԫ{fmHTs(y; ue)tH|QSiq% <[&Uq 3.H Ϸ5{u"Zum $wH&IF^\6rmqY(Q?3T4a]-p$3D{G~*F傴AJčǰdKB-O#jv!<Zzy'ܞdQn~@Oq~UorJ4swl&;\aW!6 Ioj`$Dk@K*Q  *8=kN#qA^ۇPfIRw'low$B,IIbYS:ovvhLCiIYQwT!_X\ܼ.g`.<|DGtϤfeh9]7hW6JU.!%+KiqP< k.իGK+m۫&Ҡq!!kIIP$3PV}jd/7y\Uh5TrLgYpBuu8@P[f' HnRN5L5O5gʩ b$͂I D& %@ =56k~H^筚{}ǯm֔[)I+ݹեW{#[dA\0+=سO2aٴ[˗ $mL(+'nm+Ey\㮺3mov2g{[3ػ-mv]&[S]圃 SϾ[Hv-#ΑeI5ΰj])/r:kx.7 &-Î!@((;Cj,Yʅ4Л+Z Mɟ H)L( tMn\ OX3o( S̒Dm~FJ42~_*IEF=iZqLG[Sk$%YmM޴2(aSgOi*cһ+euråTԘKiLǟd4+iagnPWU>(u\c/yvp:O׏:&ܴ޷@JIGp!;|ѝf# ӌg1yf^jիKk6[q.'L ?7U׮XtQgp:1hVhU8qմ jB{‚eIҢ0'~C!uz>ÅqDKZ(I$$nly@SHSvR\z G%* Vځ]A ϭVX֖JHč=J& zh (b-7n!SS *pLRI{A4O"j(j(D)Sޜ@?QHP4'J(( Vf riZr!] t&JquJUcyja)$JDZZ[;ܲeW.lJIv_Z9{|N2ۗR۷mV(re^PGxԚ[1k}i@Km^1m%a(C4С&"HPܡc)+lޡ]5 O$nJ$m*2@HJlյOZqn5qql9)Bu'jB" WKhqd:JBR7qFdrV۶TwLc;7x B.Rgj*%2B-mmd i4iBYYڣ}sj @%; S'Ies C ~M 9(Ž@R9ǚYZ^P#} ۅApG==[E!Pzpj&u^ĥINRi%@ *_p elm7 rJ6*TF'deY>[CIso!]$)u銘z{8>73`ZݼBI aW*mvWʥ OOtS0ii+J m+J IVؓ3]knC^]97.-mǶڔAuR^g<Ryʳh`Fuoqs׹:n-%וޔ&H ae@ kd-]nR$$yL=.z+y}olB5 ?ʷ>ۉBӑJHB!;TSPV}@K%ݶ$ڊPΐ%{w lfFani.+εEΜ١-n@ &?e=<ꮗ CJ=pŹ^%VT$%M IY`&OpZk+9d[Gst)Cm% vInNt:Ը=Ce5{Wb[j*KLAboH ;96gz?_qW>ԏNN;0 }$~^ru6L> Nn `u^rK[2o55 6* Dq;W =-9tI|[dfTFr6"8\( I~$mn 7.hnHqҗ[9+DJۙJIIن,r%7_j-[?[c˹>aJv,W:?|Cvc[BͳWi* a@,$*R@P7=%,{iۢ] XmP;NÈpX=Y+4nfb^Ï 6{(*څȔ PZ>ҺiOgkww \zܤwjZ{j*|GKok Q޽q_mOY<\m* buV6#q*$nEYWuJ4yUӝCz-+ Էly0"J q W{7bݴt5~!H=K''kX cgu? [ĤpqsEIXଋ#[ u̅G!7~n8xP@ PQ 2 JP|nK18\/\xICF4]>  'yO ֌yw*6Bm)iùD;R2òlcqvTn}-0ݮEÎEHIS@XTG;5'Fy9 u-4ܥ;̩T+pNlJЂwzOꕋ?\aBuMoVh\2n;eghmmM\JB@A+!j )D>,Z&֞˽A}(oo] )JwD)CrKGs :tXlqLٻufmu gsB ( m#9Ľ18뻱xZb Ob}SpceQ4֞\)l\fnIa;W?!- gI=;>Qr6N.oh¥R[+P@D9j&an\k\if:A>WEm!;BDϔV7WYL-Ki|U ,)@6AJkiCkܕl[uPRGv;@Y&/i+; 7uLxV-Rn! $$9ʲ~Ezmv9u VX,ԖKe#\oE}+3N?S!+er焠<*H>kνCcqfiJml!FP!!N*Sj ) }[9xmAV)PRKVH a(t#[.ux;j uqI0<+}gvBPxPtmVCq"cE zՍWrNxzL1efq֖"A;̙@NO󽺕6D[!ǚX,yCq[ġS(RS; t9pd+1yvkvW PB X2I3ym[DHp&S>Ȗy jLݼ6~x.Vꐀ hW iN}E{ u.qyda;I%AN+ 3O:|oќvr&8ۨZJ2\OwJYlHW(yzdR2ˇr(䔬ϰP7IoN+O[ڔR\> H G ,V< \P˃Ii/]क! BVT`RO(O1">fE#mЀD$Wv?JVUUZV孳 B>R&@2 ꮉ|V͑p!VIH1 H<ǥYw[h+=y`&x[2ܡĐ7paBB6]tOf7&%n066oN!){@)ڽq)PHRxU'V.LK hNv H0U< |YGb oilS6E-n JT)7B죍ܺlQst/8USܝpZCLg56=dR WNޕ4@RӰ B JMf#ޟ^i`،m_Ss|۷i;Twyv(*W5j3ή1ȷlwz⶝/T "JL tmj5rFA *][>ԞOv|yZ:jw9Y ])lw AB =kPry:w+K–bRFz+Dq"űԍ:^Y6())PC"ATkSk6dO*яa;p# gʧ_ \dQzqэCї{ EU8Bҳh'kUa0: zsG/ӵM$𝟕$Lt#S[_aZ+Sm{m+inmHv$MWBblV,*d $ũÎNѾLY'n3u{ykHۺ67[B#* )d@;Yjf55/Obn\CC-$2T#h%;ʒJT ~܋5͢[qc$w O'gju3XK ݹEIoAܒv7uBx;s8Q?]8]'Vk(K<@G)r%D(7Sah.9dtiZQ*S.y)JLJlOh7 K% %$&v@15i~iW˖ٻ.ZPj?RJCM6Vy@1|rrm奞5HS\$" {6]-ّ6'pWj'avޥY4[vݬvRJ WIDI>&u7HYJnJ< ϩfӇORGnk.b=Xl6[Qd𚹵¶uݶ­ ,Nr5],]mKl Kgj֤HLmTQfc:V=y+ Uv :P*N/y1l:WƭVnݫ-5rrT#A*'Rk貸FR%Fk;ld\^AVW̡ۼHJ6pPRd:Kֽ>Sc]W-!J)B)WK晴Ղʯ0qJHP0V6恸>]螊3V7KߥdZl%jZuk ' J.2IΤd~c2nN廒R)מx$-(;eN,zԛ[I(b\~qq)VGJ $-!rWuK˜w AK7.-L1Y '$̩ Mj}]Jl-Qi\p7TD$* j.:> u3J>nbZR \B5n(h8GhZze5v/WKnC7%o>cq_YOJuN=hۭAa·qpʚoko:qpB? Y!d2W2ŲZv V1̧Z`rYocq|l6@ܢ8Jd&4XZ>ozekeuC Ɵe,qkH%JQ!o't$$*v%坨 )i$sTj "EH?*TPxJ={RsKjz}S@*sJڀSNiS 4=jG?Q@*rijQGڊhsSlOcTNPE*R V=+<:Kԍ,V#jRAJ(JĒGF`5\SEW0o[GԆۄPB%A@H侕+ #vZ>Poow.!xnSa Vv*6=9yx媵2 dU|m:)Il% Ԭ$ 럜$ߣ\UMQKwF^JѶ}hwbK;Ҵ#jmi)wkp]_f[t+JUgefkdQzl޷ hxiZPRv'*̍Qfted u)pm;TyVݦUǚE4Y\XKnJ[}M%NrLG*Ϻsw;Qe3J yM-.*ZHIH ;9f ?}{9ֺ^mW{nBk! 6]slmE)t5+oC1:5ak0fuY kP%)Rx S&|ISmYl:K]5l;AnA1)J@PωlYb 0]r=Q-(4̼KH qJXIZ&\OmsmGZbViSY'TڒTl-^!{)>Yi#eWfgF+;l0S]6 9BZ*p[-[Y6Ǜ_~;k3(K79-Ww/68rwGJW;miwkzc o:ˬ+]ޝ̄)?k+E$Gh|Qm~{-ǎqJU*J֢HrJmS˲.ц|Q1VVZ78CϷgh,6-wj*ukBv*RC*T[7[~,msAnaJRp)i%JR4[1}p~vBka彵aDKlPJUTB@ `pc]ZCO+mL$<*@*T@ -4#iIoDsiPO+k˖Dܽ3ZPjmEիEMvN!7BZhT)@2v@dɯ%ԋ˷2$ͭËYqR+r=ԨԒudԎ%9S&{A4z~PHTFڥp'4}JPQ4Q@9ڊ@EրsKҊ(fAsD)} *PNdl7yx>B`V jTP%E@p-+)< =#[ɆKc4O ^Z%^+.Tg͂ˏ<-]RPu 4!ZҰ#*A *^;'[Z-p0=€ٱUhʚHDyW>c۽Zu);mv6e)@b 숟# o7qer^WG*hssJ{x\uÖ7@!%iF$JZ%gm9E;H#'ڰ'XWW`1tѽ1{yϩtcs/~3K=hueL_COO2CX:uՋ nBNpRT 㚰o~ ք!HB L'MfPmo!*ܠnR ʇ<7Y |RPݓv08:X ̀v܀;I8[.7b.MAeKEʔ'ڣjصb\yn%^II@sds5&-)žqu-֩ɻr  {qɉLZP$'Vʔ\i_> )!IO=̃d 9cl߸Bvwtݸ-nchPB LRV:6rY&ܶ%|zɟ/}>c[ܸd6TJOOvg7i=1t% ciJҠ#rwyL "s|=椿wn}[3t*C86ʆ;ŕmppD8;:S龳;%^ٿ7v/~P!mLX"cQΜkîZ[7"{+ Z6oHNJB!Wy‡2/kvs-*щޘSnZw; &โ:K9rA7v+lJZ['A8a4ܩHXPicON曻BRL%]y*˛,~Akqػw0v%W)b!NTr6ڂ:7n7wC?}?xZ[LF xJ q:eecgm\^V$GeI@W; +n]:a* #p$rK,Eukmb۶?1)5̩Ԥ JPg:c9ҷ6OHjEzxxwjAp%zRTT=WF5'J`XoPYV uCm·'Mj[]5isp،MR~9COyRHK;A㼒 1aR#&i]j+-ϲ@]%f{@(TU):Xwxp붒 N>*q1|sNlk#gpnkNF7{oGfN;{bP&ٴ(5n*rF{HOan8*I?,JOh޳j2!u?3.%d)] H%>TXvu8[:H0! 6%@$'ay`-׃M߅pf#p)$n Wm .&$܍FDnCb s.EGTr=0gPwCY4 ZZ™! o"@HHAž6z(Md8φm򯲻RO78'a܆RQkC p,saެ8vhd]\yjPҔɈa<y4\B)JRyē«w}!',JHސ*$(' Nk9r|[meˉc`)ԩ a %@`U)O U-zn&t<8('=} zsPf[h&HAS$iǠ5A-)tBy*̞HDJARxHI&&Ֆtk{|q/9a)SaϜJ3ba|f+P8[rv@>Yt_GM&:7A/c-Y%;Z*$z]@ "RnO4F7.շY]Yi|VR޹) WZC JZVk>dtNZNݸA6j~./o A@qZVY2ۮ1<P׈{qJa2@mZIG^ԪH h4M<ӚT}G#ހT"(P?izSSz"@?#N*@3ޏQHEzPޕ2)P {PGqDP.rhHB@L+cZFM_anzX[ PRV 8 )*i5uldC?#]`=mz?PZͳQA0IJ̈ھoY2:)yiSg.X&ݵ\(JUE#a A#EgZ#+4m1F-S7+[S.oW !$֊gq *Q+RL 'h>($1prJPP#i GUCM8`I#;%[*Nzڪ..@ݴU(C2 +oj>SzeK Rm6CJ*Wq=W"_z0YϊT9JP]qB}Vk0]*7LMd$4ūQPL3k3  =%*x1_N'ml;TD}@Οԙ OX_\[qI$0Op A5jyyBJ$wqԐA'*$ln_k'=r:8+d4N{/W(iR\9"pD+DVqG,62ӳ&뻷pdCUI I2;D+1蜭2(H8>iDD$?88*gj0ę_nS̈́>ιO_w6tޖM9fw[!nKj)ɻSTW2x^j&,\eKv7WLyR҇`x@kiBe{K94O)lV SEvХ'čyӼ%f:V) TV+z&]ѣRqC-w=;{5k=Xwզܫ8=Qש7Li]+njeH7bRl ߺ?@k\^R;{XM5*0Y(i t!.(͈{ lɝ€Ϸn;=pzy@ q!$d}j,?QʝKoIf=ZKUZ8]Kubp"|^kF،EVx7b.) A Hڂ!=Ajqb9|3\\ ;\+%$;2=痜~\_r]Rg_mE7lq[4J \ +sO,TqG`]/v:+Lom>IYT*qѹQk-6ַ X.VT`B$ '/l]E&\)QK锪BApG=Ŗ; lonY8~"pJH=4Z[+#fRVR [ KJ&G2g3`3?k}z&/b])A֕El$ s;Oy{u<9Ma8%ͪTG >Zi{V$H5Ws,eYe/C" ALi;r(\$JG0`?vv*@JRd<~n~Gjx5$mLrZu%hyNG#VYrӬ%/;wBcI'kgU&1hx }0S32_[\Nj!mi !뤔 I$qE֧ QPOa3ܟsY2S*KR\RR|g qHh)ϏVd/Z>6gz}DtfL.nwRTt{s<ǨEڟhs7n ݤw A rHV֍\5M(e=-AHnx'5ڟ߹mz਩A;gױ*NKyc9WU{KJPf1ۿp+&ךqn7ne0Ē'!(eS٦,ˣTI 0A )DS[f-xa%ego@'ڲ ]/`=t%;9yO@{z{2 _g.cauV]>DIR H=>(z1gTkfqpR!k`H܀RN%F˫N界[4op_)ހJFXQ۲tp(q'w2A<{k&|cWlƽ#_s9G8b֤pd{XxZQV 3dCdLdz4 jTcL {PZ Mzފ"Zoh9N9)4(ޔQqDQ$z}@ )R#@ED|"DR"(@ D|N7æi2:ڦQZYO X?sj6J=5(Zm%7jEYPRs d 4i/ کw/b/ŭn]\ O~{LՎ+m°ᖒdxP'<[1 ` H1բ%'z`YT>:yTy+|U|WJIS! 1?tN=+)(y 0G˓ט;ankwjOIW!E͊Rq(B̂{׃&8|\< j PQP<Z+V׎ImI[@ )2'ڨ5R՗^/H1 㺌Sk>m{TB=Z8IxҹH7,؞A>Z51fv8Kd}l)ٓRsh! MQ+TU#5$דʗDP="P1J(EE (#@?J(z:(HE!ވ&A>Iڈд)mZJ  cM{~Rn_vXࠂ&AG5Ivɦe}+S(h ߰&8>\Ȯkf)VK;q]F1Ղwnu?ʾ`%FS*'Xޙ:.Z9r|$ܑǯ z~+:<Υq_t;%cQFB*;8;p'Y݂ Rso@?{Vt2mJJ|RRD+0%<+GW1O"ker|r}&("׍:_\ rU1vo q"Rؘ= m*pϰI:xcb|b?˷qX-ϣg8˄lM9fe!IضրA7Wal0mWH"L|έ7u8d^r`R}x2xBFB ulYAry/m֐lVUI#+@K1v/^j=JbﳈU;Б)]q۴?>RSr 7qm ( #?/ztS`n[83hpM43'SkIC0(A؏J꾊3 3fsf w-5 Y)PGĞ}`e:Nddm @u%e=L1  lm-Yذ1n)BD% H#ǯzu?WɛV/Ţ9^=56ܹ381 yL݃JU s@;1hBY;@<T{/dj F f}'̍|5 %OZP }cֲNKda1xieq-];{U:߰} W'jUfBY|N:0zsb HS8& p-:ݏB0g,~I.SHh{mJظwo/Bԫw$|4tw<2uz5l;*I=k?}5ck杇F։̝z5Uq]YްhMBTP*-9RIa#LKw#bnDŽU߷_=6G"5]mˍ6vTNO?h94%%J‡L*\Gd=-Z D&H*SM'Q^v<;rr+Cas "!D&<߰AkVYhNj7]tGI`v&G#E$.Mt]^GOer.mևBozw$ Z^anWuvdPLBb"O0KWC'U1>U'%t"I`2[FԄ#x"8>:#꾿v-S{}r|Pg_1oiwv M8*iSǷkb\T>2w$dsOobV?%%o'q=w#1YOsl LS\c)Bhm$B+jTHk~>1AvSJ7(/ZBR_3I* >ZӎSmJ锟_HVZ<5CKI8}?H9{y VE;WNJe\~馒ͷbe)i jp 7mi)6;.VJVG PG=ϘZO M-g mҕzH JBYuVSp'm /a𨱸`H-ٛ6T)R!>PJ bRnQgM$eHȥGk;7 rO14wʶ[CLQ+#H}cXWwǛf\6P@ˣ)d&+VACwkh}3;gm1oLE |CWJ$pTA0g9t壙'yd헱lFm).ͧ1.鱴ABK 8 N,R)Nئ@7cmex17V4? gZTeAJh6&])Bae2IJSmϓ3V6+MP۸ӛ`LA eu*oq.RR!(`ɉ%Pg'YͶgNzffm)Un-L[>ڔ6*19YrJTû08J#S,7ܧlm6-NG ^zZѫF9R&~٦(g>Z9F2Ұ@ EeJRHPThoT~хʭ3 (j˹!1J LUi )BBQ1GS6㟧5|UjR`@{T*]z(Q@>tE R>tPҊ"ވҊ"tE*#@QDP9zRh(GLI1"L ֊8)D(|@3ߊR=P >U ||E#:&dsDRp(h@0>TP ȑ[_q:nOVvI]Cw)UOr ֧wl0F˽40nFI )NONJL$pY)b t7!~< #`mot垕 !-Ԕd[J]n$% )#$F=iYS7o6ܓ1£^Lʩu>E}ZTm{<sY;%V̌1ӨXZd.O1 '΢ G?hDN)u̒P  Had-ٕJqI  #•tVSvVY˗E\}%!)i˅gDϖm.|2hOx߿_Mo~?wA>Ywt!dRY Iݺ{~ +=fnm6>DOS5bÀ%׷kY~,rd(T.lc\"B\0[zv5Kcj=ax|v=͡+'qyjr˨6!6 B;'W+qUFܕKv7Iv\#v$$UEtⱘ}vJI "$݇#9.B._SIR3$q=flX6 :/uH+`${D}Ma}֞m.2TVL)s;'u nܰ!*%CrPb2*c5RˊBS&5e l@BuVbDx)\4sM=u T6TD( &} 8Ww() V$A@nj`1lHS"8I'LyM.)NYۢ<smD('Dc|Q]ZxJ'r?}+h1n^5rP"UX-3BŠJ ;fnmxٷIN=ۓ&Y}Vm!jnH@1pjRv%MXgo ˜b6 ('; KB-IBHH{5~a7}vӹ 9(+Bo3N.cfb8V; vj+ 8JTA2;}Fl1x.WNM 6 GdL k6%lkħRBx<3ώPY.|=0ĹrdlwnΩ[\ )*AH ޸oa;=s9p|6n!:;6$֯OW56+%qnpf=[mPR[JTܩǑDT6merƔÙԧi(dIy$$i'9+<|:}B{]&juu]7k*Wsx;\J0) uʶņ^-HVj*y?9ՒktVnR$m 1[9$r3KXRLɏ%*$\[$Z&o--g7LqVVIJ jwy [ZBJQ\m $ }-BB޹TJOl}IPB$}I=S)+S=nʙ)]/;IpGp>sZpɺi7V9 3%h G Ρ׺};zX(2׀F XJI'lI}Kmĝp s*Sӈ];H+qrg&M*g;|S27N0EקB (#{I.~f_Zy|pdp•JQ'r s"l6K"=gЊ,:aH7@2={IԜɜEAaWnZ.-\6SAJIII;H2{Muz%^ V%EILw="Xc ~*9>^O1wJjZޑ(pG3j{j8FVPEit&`ыd[W+)zzvLEMn;v&/sW;ZL oj:lflp|%)=|jպ);F$1ڮxIS?lT@YIQ~8'1*zVҟ BHL;H-5]r+.9EPm(OBx1sMd55ov̆p*%%ۄT Se.8Z&TdsDR#`RH*)P R(J8  ΀qsJyh<4FsD(@*t4;;Ba'CDM*56u-NP|n>&&jIo<DQDUU۰9{ӈӚTҢ(h(4E4 JxҠPN^nͲ{}}d61?iKBv$=y&`oZ;s5 A krR(ĸ+s̟ZvsUve]w`7n׾F5k Pw9;GOn>bv.'7hI]a'tpI>JW#S^ܾdVUy2OJsF3slvXFFvHV~0Z!CH[\4; ~Q{ N?cvyEd˫*R1 ;wX{e~qct&+`__uq)kA< ?jN:Rݓs/>o!nB`*˨YK;W%,,֒=d'Xנb⨪lXsdVЖ&A=>qwX;7qrZ] 9lAZ(* HE[ŒCt\<%2`o*]ҵTbB&ϯjŊXFOjeߎJcMķ~qwira$DBT*"񀋋V;TBG|Vl) I=+Bٿj' }JRV<%Ws\Hy~av?Y6G0ݐ C\gXQˡ`9i32ݓ[J`'i=/-v\HX s }c$ 쑹Ca;<#d3a҆QZ1BieurJ#`z0nLܴ8ۉ Bd-[BIF\Am'x>HaUf2!rm[`əXJ-s%WZm̳ %$( 2G?Z'-o8B} mH d)Fu}'ʟii>`ʆw,w*1ޭ٤`(bJ!ISkW?FѼ@J:q#XqbAf x$?T7VizN)@Dާ]<[kd0p*$Z”G eI! iܰ$q?|?Ui˶qxấ'S2YVGMѓhԗ˷l 3<$Y5sךze;|uJmBQD yDw3L߾Pa.dpx ?1R.}O|MchR'==$j?mwf{ZeA*K Ԓ~uf DԠ#:!8ER!0V-&RAjh/6al,&3#QpJcl}y!>R485 DQ@E&@@`Ҟ)4iM3MMDQh(hNiE8=i~z(CEQEi#ހG?QH{TSMCQE*gҕzTz^Q@ސ=i UPP ;E(E8&\)JuᬧwYQ26)z[eŸZRT&y#XvraǗ)8̚ӨW^\gm҅ LG~޳Y*g.;BM*|(>@)Ԟ6eV/[,S.W}'>mč\xW.ə(h|IIDwG Om?Qu3fiW>3ctz{O'zז--nI7RaI)H$r'y?ҥ1YXQ K.vwV#j{>|NRYRP#}NX)vњLRո ~~WZYY˷-+ f+m%I$ջ-*(TBPAre,sPgP"D+[k@}=?Z^P>D j*@*gҕzTz^Q@ސ=i Tu8R(!~ye0DǸ㱚;T> Y62݅\6T:}Ԣ2j* ;|N=X=7^+6Z$zOi2'3,/s{ JFX۵vm[i%!H~D5 +ޢkyۓr>+axhѺp4K"RTS$p;Zrf:0ڐ0)HYXKQٹP^%%Jrxf1qS9vpTAU֡X*u H OήxPPn$?ȬXΙlx-pD{^q@Z@y?SZΡGJ]SE ! IVҔ<>{qP7rAH$&F RQN zGn8d5ݾ)OJgd9=V OX˵O {̧?!V/6"yvƓ g);PRx0Gʩڂ֐t-$ym ,/D.׏n͍_6|; {Arv)&AJy'⫒|LqO?"|ѧ6ĴnCaVQA=}a(qeB\t%;`7e}q{ amlQVRADj\7ykNԦT$<~ݖT_jak:1Iy<2sJTA5>yTV(5W0W[-uۛ;b( A֥Yf&6?nP>B}aÂ*8˒y̥Zc֐UPP FTdR=7G5P3b6ImT~n7|! R~n+46c.e~r e2Q =hیKkR[O @=־+]\3匢ԻFꎯӶ8ۏ-Ry%*\>j|m.dU&uJv H 7/jP8آ,yy͊GzW!r"ͻ~ޢ ?aެǁMԣp q+ YW]2&2X˛[{{WSᡦېoD'} Iw$1#BoX[K Jx52MᬛChZW]H rR#|H% ^͡=ٽ8{k2eD❑$ɟ;qkdÌ9*R6Bd{ =y2n\;\Z$A =duٶ-Y-;-ĐR8>D+޼׍OwK*FոtX.D!4JhDhhJ@z;#ޜv@PSz(Oڐ柵O΃N#ހ^E#ޙ4J@*TH {ފ"&)S֑QC@:Brh#@@P ޝ*s6W.T|P*  ؞~iiLq tI1$d1SP r=<V|%!6'sTח6&'pJuE֠b)[JJJaqV8SϴEk֯,)OSջnGCTX$t`:W$nGL! G\ !IJ 9e?^?ּn|~9_ɌLc+qnZ8\r@Yp"-);Vș)@1ֲ\p<N^[N=\R0,F>$m`VM,i-n^}L`߷VW\~!• ]A8sbwWX!8 %H)#i<͝ɓ7f鋌uw3ˊ@2PqV fg,~#oS@=*f[x/'3=Gbc>iuV̿NdӟV9ۗՏu-I)T =+؎XOҧhiz={PE@@CրcH"$L94p/!@ N };jvr8ݱ?#*Gvj0 ~- }Ҽ^ȷc\:7%OJ_Y~TۢICh\s)'KɺU= |\36{٤݉XH& r*R0?J7wd4sQ'sO26ݦ;wcHkl DÏ }su** Wkզ(7it.Pޙ{#+qj I\ Hߵ_',[yfk6媐XuANBx:rـ%9<"'$㡔HF *W'^1\Oõ\4 Jj͕{mN 4>Ź&'rjו˷{pօ |XQq>j )]p?2Mg.IR RT};~)ܓڬ%?Y/BB P$n=>qJȉؑ%J};@?TEݔPeJ*ߞYfJD$PfO>ҵcvn%niAfy*tw/6D=$Gy<3Kљ2V{N>VX09n1H 1Z{J_^ueJLz\K⫨?Ax,xH |AYcYɶ  \޻~0-źҤPv4Q(JIϠ@P5N8,pP]#'&*b= 8}(HiX閪7wvͽl~!&?Oo3Savnj(Yt >{W5?9:ײݫfkBHKHX5hۛge˪ {+wn"W934 KqHG9@`4n)4T{/& {Uq, i $r;>ݿȬa QȬ^o@*C;}b== ^@;<kLd+Q%W1Ċy~)K S&)Yk|-AZYup"՟* &'b@mJO8تi\<6'x; u};Hm3<_F\nC?IK`: aYW];ni - Xl I@<$ JxP" ɯVo[% >A,#,{RSN*3ISyJ9"=D0?:H[Zi[ܮ@y-WRk zjG9KrqB2"ȑ^ i>Gj"(h1EHzT{PPiQLw(" b?:TȠM@ Q?ZTO@qKҘqڃ@zDMF qjJi$ghSz~DSETE#ޏjD"@iE1HP =h◥Ȣ ӏDPQހ884RcGSUn'bM4Rܵ(YJ0 ^:7*ae#qϼVb9Bʼ7 p*xiGߎ,hnk[S#bT`:lu &[wZPR9QI<ɬvW8IKxQQ*:>x PU>OcX(ifp5,! %[=[OxR\oܞj{ln ܟX"03dO6 <>_`ʹڈ$W{]AyKFHq%< % ےV8MQZ6(ʩdʑ3ػlKWiT o~d̠mݻ9?s|U[x~W7 [1e|3]:>4D6RfZڶ-3>mG-Zf&JfjLhA!@0(^"44qDQK^2BC؃ޯ\޳nQnL w>X@V#8Z0 {L~5ku0?l$!j>C*;/{kl}mAhXPz=vTnzƒKtϬ˙ @-l,v8yLG?ֲ@=dBHmY}5jqrG\%BdT"Ǩ{>wVÀB>GެN{U<j-BwjMr^9$/o^H-Lww8t4JȄh)jmIQTf`*Qu ֣jY6Z \&LW吶Q`@$ʱ\}BOqP4˞PR!dh,%vH?OZٽRm{!`H>u~*CB&BJ@0޲[LC uF->G;zc$u|{i qd\4 m 0 c]ؐv'z?1Ӈ֗XvCnmbxg9G JLBe;qjݵ] @dxU8&7DGR L)gQVw'qz&!ʬcp:<4p,Cm@Rd%)J9Fd-`LQ$ԽaHgwnvʹ{I0c".djrT}! @` () G@R /JG:Gj(qA@P C09өq&z= ezdpH AI~i1x'M ~X/2 hd;h}7!ASjX?1 OqY 2)IRl-O+FZ{]b(&/$'jI BԏZ%]5C-AL4 䔎~kxTl1A*<OʮZz<(0HgbV9y(! ~{v[5sQᘞL [**%;>vGY%BJ[Ci@\ʞ3SkyIC(+˖y] r xJ I }@qTRDtĆP=ڧ Owf< JXK4зE3&*hm%6B ~=8euHzY>ZJ^)>ZJjD"@iE1HP=)R4qDQ)ҐPbJG3J )zh((T Қ&~{R4摢iME/Zs4I& *sJhiz&4 SD RM LR=ɤM4& LPMhjs7@B'ޤ9iIS&BxOփDjH ];!stqAJ* Q"յ1i}:n^\xcٴ6+rd%* y?RkĢlc2ŕG e& '?ڨ>TB9ޕ)˛&{sڼ G;Ci!@N27${`!-=#4;fPO3?/ \ccM[P;2x55[ Q `}c$Q )es2nU6o<Z;SG,% 6sjpv%$P6ҫ)z).  )ܥRv}'l &V(Y<aU$JJO}*wBЄ/zl_Y\1osnÎ7pB >k0*3ϩIW)vL6R@\mϷ>s]ED)Aoi;]ɺ5Y\܋kVA}uv'>B O >I]VӡNpxP`#XKh=b{W/}4[sZar6ЕJah1aSm.K-Џc\/4)v*M ֋9VYñhӞxp J>֬8'm󶬬rܕvگN;/evSE=|FԶOZ)!I x MKR V@(h'O֭ȷ l5e" $xTEז"Grja)uHA . I)!+2BSUDP{V-q9 Ƥnї]-$'?5~xWcnH#w?t3YƑEe'JVqT,Q*T8{vN (==c[vrapאKR}=qߘ~!p,RV Cĕ-)"6ܧ'3ا!+/疥#y'qG9[r=$K՞iW\C~BH;LH| ^;sŹ}[= y=KyZTJ[>d?2j_[GO'ɗ+&/QD5& RwtOdHzJ jri@3GzSD 9iMz&^)4AJhW|&G+%Cp|m.e dUrmL}`o\$#k<nG1Z!.[j+J* O=}iR߶P2OD |Y4eΝ6ͦ?ZnaxwnBR;Z^Zo|)*R x0&8~k4N:ZRIO<\XsUVF.X,Z/lX >B^ZYֆC=TO^Rw[ڡn &6}}=жW*ڠvH?"*YWEδCMIJ ^)ŴR{B#ShkVBm2ݽMX\H,ޔpjR>ݻL?@+r+ÓX85d;줴^CbYJRaj%QcQy-!IG=Ϙq:br[1?rH^B\BxLkz̰\|2` $;J{VtvwR?ji+d[9uT"VHJO sj2T'rbLp@ڟUBڧYhh(fj0 ⸕)+=G2$whR&QJhGDRTJdڕ*(@!N"zb@SS&@H~TH2E)E2gҀ]4")4MJ )HL dP4=((&PPh{PsHi==eˌiMApRi]TZiZV%[D 4* \ڌ+<6𓃴n}Qc(ڞ [nTv$V;@O+`ݵԽcy .$zRo,zq~)-(-R|pn/FhSܺd(kΎi'ڪe)߿*K*$yyZĤol!yW}U]Q; ϵN ?j}Va]@0n ʒSu6[ me+VL ;vaiTH"KͮJǯW { 'vy*d% "djn\RjQ&8b VAMhwjYscY.- eO>U-! BXNݫժ񍨎' dbV-XHIR?O5پ(YdKBT⸐=>UX!qeJTcd )H*RR}dx :]qnQ$sȈyj+SI\%*O//]YkaM%{O?8 nGrXlk׷a JJ[RqIk:U.ͷ +=>;sΥҊF(Hv8/J`H&J"h'@@P zP ֜sGy@"9<("Gr83^f7/WTa'Md8l=$ XGOrYf6Zx.pHiKIJWD$Ox_L#z.+9(uqd*C=h)u{+mcևnB2=5%JJ*&+M/Ial!A>X3ޥ?Hj-R;jKQGױ?Ifnea,POKQԤ)'YkLWvΝq ; :ڎ~d SW~i) C`#q=|%m 2\8K<߱B#V O܈"ߓlnɐo Q OcOfya͒}7kl6r\?H1T#S2 J;Xm Y>!`wL{Rkn'J8 >U6苤Q-ZYOdz zŴ邚( AojP4MQE#iAYa"O>L2i8 E8Eǽ#Q*J" >{GΤ ziފtQL@KN'ڀTZc!@8Ҏ){P3@@Gވ>i@L rhc}(8ހ@SsLGkL9jZ2"ӹ[*Gr %*Pm~C]4߅tUv<8*pYmvl)[[2v IPLqv[i]ծ|I. RSV2&+tI;a-)S gڢl6)H;{*,cR*wUV;G{4rLQ,ڧ( {vc9JvP;BRG<"ЋpJܢ$m{=#zɞm ".ZR xѤj-Y{B A?HeV d081U贒G`%;Dv>gTIRD>h 3GYvސI<ӿU+[nCmG"eRđ {qLPņ**|P=iu8Ҏ){P3@@Gވ>i@GjG&hJN9E C9/n\w7]P*>@O'ԀszÊy)R k1~kvY ĥ+S l?<IpZKi2<~S_<,-(mԴ ]T rr%WR_>fca_]qWl Z\ x&}XTVC9IBNBcdOo/mҷZxܨ"{DDTv\kZ.)ISkwyBb@$?[{l]TR$($m6 s5Z=tյ~+@ nk7,\%*TI0 Gβ;M"Qtn\i ,QSR;'QW n)6X 0C<6\)no]ťm)}9lT Iޙz"D #`qH tz>EJ:`}(cDSs@4GsLӊQN;QGqHQHXHJPH$m^ȿa Ȭ%Y/d[ڀV;.2!MvA$~]7kCyed԰RC2>߷XLw,{OkEHI#Jy#9r J SrF>S[yڍ]ɉ2dǴVasqV{d.AqBRH+ɞs+ :ے_zJI 8R\$s$"9&G<[ש=8q|!VJ{O<iNWՕLq_AȲcV,mt 2 mJK-D@`괹yRG,AcGm^5Ëu=$$HYZkcSnni&J8>kfP_KѨ A@ϸ1"I(I=SH>x)w2iz)sL*4ӶSaAneBr={H?ozKE:`}*=MMze OޡI2W=4ҜsHATO␧JҀTPhA;P~J?Shi1oSTQGR4z}(P(HSRJ^҃ڀҁGڊGjK֘Pj^hE!ҟڀҏ@PkjU]&K.#! +mtYx/Sx.Z˭nLG<םCH4M3.`+5KbCGBC<7"s긠K=} ׺*ۛ-!ĺT10Dw=իWz="rH8nID+j}eڵn*SWrWng{s)|uvmud Oq۸60ABQugm+q{?HEVʝrT.OT 3O-m4V*T$ rn+@&oQwɐYKM) w1:nT_ );RճŶ(Žm- BgErUآf2\Rgڧ"I*BW;HGfZKd6JrvRAeaJ BL{|JdK 6PPueJ87^m-IDL',mmERVԌc-*UHzWJAIw&:qbykFVK#stP)!2@$Ɋ})vDڐެ@җ1}(}Q(Q@ڀ(R>ڗj~iՖۥX+MtN\UrypO+qIO"v `d|6 u8%jOzEh-eiRM{2%KaDydn &D#wfѭ7K_Zⴴ%_ O_fo=YW [(LLw5>YuQ[d6Hck!ŏ5n?W%ϊȭIJ]P $Gnc5OePewĔ3)ȒA9ar-_!5>3tfeݰnJIm*1ג"{'jvnRZA g=}I?g/keTWjVc񍴞$BHI_k{6n[7-6 $z0ck7 I nLvoXgx6%jڊE)#i)ڐeQ<'־ϣhJ9~m"} @9* N$&H'OjE(GڏGڏZnGڗ1^Խ{SC?jҁjTԤǯMe5+cfjA JTR $<{$͢UKPWhPw4cӽ|43V_5ѽ T)2@+?*"#n W#}5FWoZ! W]ڒڂfb@ d<6wO 5F[aB!r"<7JrVnCI՞{Y:3?ڏ!LvZ3Uv[0ݭRS/;GTIAIi\ S=C1Ny 9j=E*s@EPI@:G9(QD@j(4c֐BHjҜ4');z@4MJh4z"{Қ 3T31PӚuR` $!B{(A6GZ kk}% L {O1M悒w$*ܹxڕww%n6.õ@H"1D?gHu3>Ndi˛ܳp! @Jdۆ/qV2-8f !D' kqjR>~\ׅH~^:HedB A=*џ E{{ y~)U^b-2V(x'#IEطV{?K{M:e}Q)p-BjoO88Y_ᭀH %J?}tJO0#=<@"NEs~]rWjm KR|T{{ڰK{ook%Q!۟HN^pnRa@v L}kTOj4:8f1v/k|ZvO~@ա-_y~#ΨK=&IڊXaǏ*&LRS[1Hz@$CCNizPޔj)h4jSD;4M#ޔh)⡘<ΕfZJŔxj441uI(>_ڏ:e47wlU.  cy_?ISzNqmF[޴}e m{h"(ԋN~Xܹƕ6D`(?Oeq)yzj7qɎ18HG@ݿJTYxyx7-p0VꔤO?Oo^Շe.v[[M$ȉ?vA<\q(6oBP쬩%*IAɂ;|Pm ELbd&#A?ኤܤ$=rgI3bF>߈hP$)d($T bC5-[c{޿]qJ\$*d2@ʵ@RҀ*95m:c؝2{+iז9%ġRJx}T()*)P2 ϊX߲a-L~f#ع fIZR${H¹`KYR'FK){NF!s|kTTIjme䕢*B5 zP=hIPS^ f3Gj#ځJh=1ڔ4i @EH4gf)4;b4IF?J("G(i`iʯ C*|$Pe;xgsxY YX$yxc )9 Q)@ c2|(*!XuĤ%0M~}(je'>94=Q@R xvM$m?c?~QmEJSKVmR\B;}#\GD닿~ q]M m-(1X!S}n;ԗ[6 +UL[eImEM;O?TLYp>|Gj\G"p ymZudn?UqRH7lr *Zh`Iwh#yH쓴rS)h=2Um-HPlWlbXfvSln'dzEqN5q&)@jSD;4MMӞ{R=ihA3@)4M14扠$S{ zs$P 4TS!E2~TMihN~TG4!@hL/J$&h(iI?*'@*$ӠO։9#ހ&&~T@)4M:P[]ݭϏ<$nOܟHU۪[a8y)H I}{@W.>_?e/<)]^%?M7t_>2mW2 N{sNޥ=K~LWUqZR8R|"!ǘwlH&U&$(A&}J]Ffsn='v"qK4J&7]J 3PZXK纖,= Ϥbm)6 2dU|1B%:$=WI4I?*JIb 4IʗMi44ӟiʀTIDڀRhڑ@L@?* JM\[v+unCIRx"P;g $vɴ}yaZdYl)dD-)[rGtrO5r" 'Sy*=H<\͐%mP++eF@*5}K-u&>\O([UeB-K).8A &}?\difa3΋ۄWMmf=}%Y0w;ϧGf9F1lfwS.W[OsjX]j{ڗ,EzWz3p=@wRmlLR@Hn|A?)}/\59n| Mh^ٙ )@hL@Ds9) D`zP&3@1@JM9Q?*Q&D~O=&i=44&PʀTsDNE֍؜J!+iD%Q~D]uo^)Ԇ-&?qּpOڽwi晾qo*TNS{ϸ}`dW}o[rdzviAo\^ZclxIZ$$=<SgΤ PGvY@[jmEhT@P#AD#iydŢ])k. ܯw<(ExP-NL,-X <1gן^ip- ;HJ{w I`t+*c,W̒ӭ <3DqX>;i֖dI WN=%5?%e 0_ٸ.aK-)/S?<;?6I(ZxT׉\Ff+,ہ*[]!*At].v~ȽBeJ NqZn\?؜_U'H-g+fMŬ-Tr}I|g.P+uNjR%g<֛껜~ VI0 )RrL5vy[m&K6`G:նaԌ\eB{zV WMC[[~VT~EZx>yDg@1]2cҜf(NbTQ<Ӟ{P Qz=@LP{QLv4 :=Oz zgTtTGOzG4 c֐ *!ڡ )Rj sLv!w{ jbP ;hU-.L'j$z=r]6PI&T@o.$) HIm&JS2̘;gۅ%{0Dz~_B{6%dP70`{W2K&G7tN-/F+%  I)LՋ"mMl7I;]a -$ ޝ;k\C@ >z&yq9qSOc8+GP*SkRTOr"gWb_3 yպ-¾^-J $ݣj)I:8)f:KfݖTvJGOڰue RfU'ޒ&MN+4hbWsCED{E3ޏjQQP(hǭ!@TCC@S4 QԢhE?zc M5#ހTcLP ikc.<N) Kv@1;USE;t'wU><Xo-f9\ly%YrJ*+y[X!Ryߓz}nS+uEDy4T'kP1Eޙ+R @S=LzED;T>E3@ UH ~j)zPj/ZGq@*)Ƙ!Gm:C, ҽlL,*JI T'aO:!9A]Υշ},RKm,W{F̶!&c~n= lbRvHITTuE*6#SOqPѫym\x컍~%V2AW‰&N%P95aջ^,WVmjPYH(#Ȟ H'vڴ]'nvRT 0LOj?OX='nL;8^yշnߝ)N`Pd.)YA wLV]-DBBV d|IԜX1y lsZGvv+* #?4KULعemivZUĤ s´wV#I~-dWqI āי,bB,ג'{;@ 1f3ܙq\q$r{Wѵ59.3>TQQQ}))TGBmLV\W: 4T(X\ˊ %n+"I5EqtI2ܺÀP}T_`Ya6" r@(z&L-Jn:SS>\z}\s}NlH@>LdI>߹]"R4ڊQԪߵgdz22ORx `";M_Z3%v*ETTy[3Qaecq72 RcD‡kMg`/V\)m}L{A>Լ<oѦֹakdWwJ;  ~АqH7zw`.jz4ҧڀT?ҧ@iSR4{Ӟԏz~T4DE_j(Z/JjT3@@9M&ڀ'sJz>4ҧڀU:ӄucx&V M ̎H[0I$$8ZIi-om6.dkpإK)eeIڣT%@QxoKHiri*kynR@+gpDOĶl)Co(JǡĞHn-vbw,]o4(@U%Dp݇$[%dmA Pvݫ\1a^鴏kGl枪sWub7pĨ% nHGq:M^O9+vHV'F=I=@1XOھgid.Y'6umO֗}х%EɤiBEEj(Pjj(^ԨfAsD)}ME/O4j.}=iO׵*jM9N$ҧh=E#HP >P(ӿ4}P=h4Q@34Ukx֗u۲ Rm)!{mְS& 4IGڮME/O4j.}=iO׵*jM9N$ҧh=EɤiEj(*>PZ/JjT3@@9Jjfp/_hy ۷ĉȬznlQjުgGh(B˄o#Dvw vU;1\l'&*?Z=hi;ޢ@sKҜP GjqPzG8(;4?Jfڀz@@ @1sH=G&=?EDP4sLG4zQT>YG5;wPnxl7G[B&@G=ǩңiŰijmĐ>.?$h߸gqfn}/nނt} Vdk,%V |g$%D*}?ҵݞc!xҵ% p68ݪ_PYʈܮeDk-#K.>FqJ>}>uGDKHJ[7P/CQEtS"/QAL{ ]j ~vq­/LT;;[Xcք&װxJ|2A$EZ^@#4jb)փ@@(ցC?izӎh֏Z#>QR@9N(O#8Mz=E#ޜAiq@zTȥ@3KP{@? Z^@9{Si,}9\!l.%*HRT) #R"z;ރ@P9N9Z=hi;ޢ@sKҜP GjqPzG8(;4?Jfڀz@@ @1sH=GPV$$E0hC?izӎhA(Ҋ zQDPTΕDP="P1J(EE (#@?J(z:")Q:(@EDPD|E@:" ((DQEQ4h)hE @NPO)88VXѼmLșGDU5EEWb,PzN3n%Q 0=̒=CETYx*U4sBLzQDQ$(GΈ$ĤH'ߞR"L'sޡE@?ETG΀( DP>ƔPSҊ"tR>t"Oh8QD|((QDQ:QDPֈ$qJBJ("z#J(QE@" }( EA|QE ޟb)z qQDQ:>t (HQEGΔQ)Q:"qsJyJ~P>T)M?ր"4M Dsڎ>tr)*BM>>tGj"@29)Q@8J~H*)P R(J8  ΀qsJyhG4րc 5qi6֭|Qր"g~RGqQDRr+2G5wY2? e}6Rm%N8=ʏ 3#,YZX_ ]!†7%8(:Qڴ-m,;ôAqEnF*P7YII!uE9-#}݋nUo%.Kn!@:@&N0ftޒuRӧ/vҖ߈y B_`ʚ:Ӹ'r-֍2S3U+4&P˖*ՋZ㔩I)KGٴ-;HOκ.*7$TN\4f:-2n)ƂTټ|7I=8HtwQof-[%07d'ֶXgPpx#J䮴BOߖo][(XC%A*XADjhLWXZj1! y 3\څHqv< A $45*[n-^0 Yd4m|;{v\qև2Jn)7VM3Gvw̋efJgqCjT8ǭI>,嬰;wrHu-(h1Hg|~HP(HI/jSQ›K}"|*3l4 (5twɻyj]`I cof$Dl6$wHr gm4.Ցj2 B[6=, ؒ)Grtoor9LKfg=GtM!L>Zr ![Q+,.3(⺿]~-NgTpVIISG$Hר:3[X@qoB +$"5vE3)W}V+"&Bږ6̠S󴶩 [m?e^ZAnʽӍcRHY"g$|q%YP6 D2 o]0S}hN -(( ݳrgZ,ݨԐIT肧󹴼v! (iKK$T+&j#uo_c Wi%P@F ;YF_ LnHNdaŤ\xAKO%DG[1:_TaӓbK Y6q+hX$5kHe+@ͦ~:{MP6J,p*R`즖ͫ)6O[JWQ/vYL.7(7'ïUpw5nk6xjao`\$KjiO )3$4]=#:9$̴$߸Y;RCh$(AܝWmuu JpM|ڲ2c e-~!,hK9$O0/DzӦ:ӻe.ܸWmxO%R=15) !"b}2ȟfJ9'#3g7ܮSDZ \%wBR&|`8GyWnX+Z-n$&+د +m]L6*i\[[@ÉP'kƾ]xWRBsJܨM*"&"DQ@)Q@4`M*SEl~uG5ǸNV0x1KkYkzo,z{)ܗu%iK 4p']ŒFqΩ 5]ŶЁȀL̦ McwO޾oN*OMq7!-EʖL ^|%۷v0ѶwN,OJʉV^eNz~/?Ha,mN\f--ГQR(@'Up8 ˢSVM$ !> )'hc=/>_4y)֏ͩ;} [kXJF+8ҕAi^n29]a>~ t-7nͳIhVo$Hi^= eueNE'ͫoqz[H ϥ\p{miZc,L!RUq4皯$= Tin9$5.單S/P6BGMJB;kk};bEOՋIC+0BუMNi5í@]۴~*y] tM╒]xXOs x][X7I-f%֮b^iŔzzj63$Oےbma`mJ=24xYa-!ou>o3fx۳)>eH <+iD?cP:w/OQ_( ;RiLTI +9'LmG=?<kE)G*KZOoht1vf?:ɶ-D_~sPhqRP>*h"g֥҉4D{#ڠ)4G>ڂ'isJ[jh7tPD(M).r=i@xB~?*P")G ( Sqyr6 +=mt\iĞ TS|/<h]7[sNa4k16Zb9*R]0pp]EZO)R -@>} 4no&VGsfnźÉd2+XR;&@W&c'ڀ>ެKRœI"Wp+H PJ $p׆}<[D4}iO$#[VGXĕ\\6CN^)#"UԶ\=+W9yr&r(ނ9ntW6n<:A7R9O 1Wv twS EQ\3`<}ih(h>-Um pV mtA?eU3M?strdE %B֭{G ̀ \⽃)`Qzip iY/buKٸR#pJ $L#y4j(& C^+S :чYa?rVlDlZOH1e9lTu)$ZM;x5]k^_]9aN-SIg =dBIu۩Xj>, ~Ƿ[5Ǵ!KTi*j3xke֮XVpaSugz p4Q3)~ >/֮$kXTu7i+$J=U|&L?cgM4u`il1%[V6fx*tfOܸ_j|T\D$ ~95 ghUɾ47$;ҼRȷ~$mԀ8tʰ-O WlswJS|D<ϐN+3* w3Mp?cBiY f㎀}Y67[ ȓu}eEY!a6@6%'I'ޢS_$R<~m劑>![^yYBBn}"٧ImtGK[,et_H긷u}ң+ !31L<|G4݋ZG]+>ͷ]CdQqӼlxA9V ]'}fHFKuuգ,UR#Ay[g=#DmH|7,!!!KYQ {I'y>3zH %<jAʹ>E_H*/ R(؃@B)>Oqnӭ:M |&YUnWu7  ʞ! YvRb;T,OI`7Jcnل)FTCm${,e,޴jP8줫>0@T $v,cpq66)u[M l-A! IIzU^Hj(&#@!*'Pn14"JyGtZ.tQtqlG<]}ke PZPS)3$tvCd7R`z"y[7-^_ھ!&+VqVyc[ᅏX)?m*ϘQO5領.kgtGq-9K gqFR.B~PAU{+Gz[bv+^3 N2lzJ[:Y|CiOv^RR\ T:Q# VY"9$c޺Ooցz8w֔#m,`h*Oj?A lFP/aF/4 mqGĒ=" :WRى(Q)鬷_:jKlViA*'|ӎv-TO)#qhS-tD~^iةC/~⚵ l aDH 2 WO?fOXIHmytyfK|)tQ R>{ rxڐ֗ޜZ6(<4HiP4I鄑>; $/E{EN9Fԟ@~0x3ۊ}_Jj{G>Lҟ#@A~T@Qn"QH@LRH0;=*{P^ ֣^ε`k e$]9x]R % A< 3$AL4Yh+;MQ|ijo'pO^PI)XH \||uYdVc͖ 4&C{Z I$z+:^+G\Z<]b‖OE>"xf$Pn*-{S֐R}叠nD)' }8P(xiW#(B"P1cH&Ǻ;~t8?ޡM2<(X B.H $ϭ8YSB %QSG2S">怀,8$G0ϯOހwe*HW2&>f[Q&cn*393<{ECp;?ޥ*nSSH)*?Jd?*P%)qTdr*-ЏґހRO}qXnRV @@E)Zbt֡a%*nJT{ASӛLyOhҘ Kk~B I'mLq#P,IQyf('oQ%OڣGXW+%JުBQڑHqD$$ңR 1P'HU>}Mfy?z65 I^>T'12=9zb'?>u-mPLE?F&$4'>2;EMwpb??T;Gpҡ[%H(ʧH8~Hm!*J"j.(ʉGq5!2=B)+QtϺL "FߔJQqpyUQM)>b9-'ޜ"$ ңiS}T}jZ;P)?McڤU!j-ڈ#Ҁ 4>>  ED$MAr}Q~)>ԈQS` dM%!qi$TM=ڀ[==j@4jҖߕE FSDGڀ9?SQmQPg?cFfE0)zTJ&;ҡcjD*x?@Q4ngQcG&iA&}()I v ZU&ZP# B\RPn#LH#''ڭJdž ڊcߘ>\1N?\VS!͖{8<ҧj*eJ6l(}bGޥY:*rJ@A\J<A&>uEqwjn/\I ~}6mJ)gnz(?MTHP| 9Q)>sP($g?*HqPyL2HQo?hvï2Y *>@[!d\[:>xq $Y?KQoF%Ii('o)IRܦ7aWL}zs!ME"mWTR)ڳ=N;O.~”#Qv(P(ޭ_݇\BD{Tj#OKz?J"&sp U`~cb(pM͘w )(BP;>uMw$M˄$@HޮGj>b&(ߜ*#ʿZ<Ҫ&%S'bw*gTSb+P}U4*-R*o(QTX4*$&cQG;Oqޤ$Q?ږ?jm ?j~GROz}=iގo!-ɨ@)֣'QPTsHS}>}(-&=$ڦ!q#*OD?ޖ(L7BHOO?&~$zr?,Hpy!D,@-"giD">de$<j $va"I GRZ?hT?ӟUހ7Dj`?R3}h@(# DgCw#=Ҙ?ڟߜ})>S8}x )@KgG}$bO WJU'Q*>! URҞ'Pm#j.T?JmֈLF'sS@'z鏨&;_w{D/qEA@ ~q}r?j$C4jgA*PA>s(Q?ڈ?ޤ -Ocޏ'ɧCo椠{H?z?ڎOdR/i=2>ޣ?ޗ?ږ eL1?$zC[v 4i@lO~?Z[~0,bO"h[DZE-?z sQJ Wvh*)HImaE֫i_RԚoPGT҂rp)Q m[Ki'U$2T .SzZ~bd8A?!RؤRXc-q,v[6IR@{OM,&wnrZAhgRGgpredict/pixmaps/maps/nasa-bmng-01_2048.jpg000066400000000000000000011607721427377236300205740ustar00rootroot00000000000000JFIFHHC     C   " Q!1AQa"q2 #BRb3$rCS4%cDTs&e3!1AQ"a2q#BR3 ?p8}耽W8aSϱKϱF}0 O>A Qbp~w8F9@gvF(ϱFϱF~!@g>!Ob}3P}3P 3F~(>aCT(F8@ga Qb#TKS!ba@gإc}3F((>>(?Tu@gأ>B 3Qb 3F~!@TR< 3Qb!SϱFB?Tgأ!]P>}3Q 3QFBϱH}@gإab!b# Q10ϱF~!@g< }3F>B?TgأF)~bQ 3F}10ϱF~0ϱF}0~#P(ϱFw)~ϱF: gأ QF/<O gأ@TQ(@g~c~ϱGdaba g~~: 3Rt)~@gأ>@gأ>?Tgr 3QF8ObQc~ϱF(0}%##_oPd} >#>0#!G#Pd} _o"9O>TaG@@}A< >#@}FB쏲1d}Pd}@}F#d: >#GFd}d#>(쏲Fd}## >#@}F %##_oPd} >#>0#!G#Pd} _oO9O)=/`sRpYh P FPO y%)2 2d2 (Ϻ#('@F}FQt2 2F}#(=P%AF}$<33eB?Dg>^,23B3%SϺDF}Ѐ#Qzg~gy@g茣> ?D> (P g玩gdgϺ(3~ F}()@QtQg,@ ?D}џt~3T FPQt~O>ϸ@עyK=yL2~gD~y@g3G3@(ϺeY'Y}#(ϸB(,O(3T 3YyY#322}џt( @<geK=<(B(tg2Qg@Ϻ@y#<#>PFQt 3F~Ϻ3,R^S( ?D#>Y@g茣>@> (Ϻ>'(~x@g茠tgJ2<(@@eF}D(3G@g茣~Ϻ3TQg 3 =z'ה(ϸ@gyO>eB?Dg (Ϻ#(Ϻ((Ϻ(3O)ioJXh$L_aC+o!aE{^O)tuP4GY'F'I576^4IuAۂ|ͻ1WӪ ,@*t_cg{ͣpeԴ6}eؚ]Qw  lh3q/&3׿ءiQ%5tMa06-3p<73S fZMO xr-5ԮL1q~tQ:}v_)n e eTK^HX~Tb[u l]--|΋'9;T%1I8JE/eHj! t%+d{${/jZ:ʭ%qld8˘HʏCođ2GXUWT].3?-jamF#k@-=#s}-OQ47Yiڊv;fsЅ'@hDiQ==rZ T6ɩA ;0_+h׾_آ]O==Ai{Sx\Ys$}f>\$Y/326Ao)`tnqy9wi9q{WyC1̐@ |SRlK!Mx3Al)|"ꂾBx ?mSBUDUn0x'1H˳𼍯7/%/uLXn?1t@U,Hx Z~u|-Uj5k58VD]jAN4-K(QQᒹwсiӌ^__ku\hZ+ U4u ) wmewn[U>*:KQUt4d1Syg=a =}ƼB }> =p6gTM]L56W=q$B~B!G=SL ; ƞ5ߺ>'?x}~nu5]9q~ܞ gҟ :שFXIbt*kC"F2L;uSK}߳+HxS46[ӓUGlG-s e;\ܟe~ɿDEnsc\*+j(1qk#1eIUS^ 'Lآk.qrVmh/>Py^Oo5G7 G8&Fe4]x˱1ʜqqXii-&M[`kmewCDE܂"s8KǶ|GPyֽn0 Mj7 |*ִTKo^|0g; jh2/6ۗH"`<]iVTj-S] U[ S~&'Ë N_Yv34lt#񱼗,?ڪmEMWK$^ht59;dqCI[z*a>xW26X NJ |:S[U*%ӎOnC=HUn<ϧgRz=7/6Mx-uƑ GinC÷VѨpB{4.MSQ̞ďk;)=ł墪yp z~g}wJP!s~jZz9㜫Vh!:eķ;z*]vO|/"h'ƜWǿEY.Zvw[}]h`t2m=p}W޽S;o>4TUlxPӟ@ . w;jٵ 9|PWΌ=-y˗G|ϿM}(/x%dhc9]vcR51dBpCF9|q_?samHzj+l jisw4= vxWyH5MZSsCĉ4qhzH9%dp{G-̬PTQV:X\ 8qcðx8*v1>]H9xi4:IR6*kLp:OV4pt6y}yOttE<54җ'h7+l>;G*:eBd#P/g##}G)$ǩOQ F#}ю `"KR0G< ?1.O#B_t#0A}Й$P.=SBx >}1BxI2 @}О%LP/8(m!W?NC%|ѳv:~ ;Pt+2__,1A 'XBd!_tqS(BxF%O$&B1_tFG(SDI#R:A p}ئ$)$}@!1$%O0qD "K 80 _t'Q>B<#_t'J0?T!@BxF8D3F}ǩOQ .=JxF/09K>L" =Jx@O$F:K tx$q:@DTbb@w@ B ivB;;;!$ D P:H!;BH@w@w(Gr Gd#4M/T ^S(HDwMI@wT%4dXw-{!Jt9#D-E55=ւ eCa}jV̒8C@J}jO<5}T&UN#|i65xc'L-abxd<(. 98H-4Z'n]Z27T GQ)V*AP}:=+*<*Yu7;+w8QI =iq\A~ҏ?R aPyr l9Ā\/Y|x (Ҟ j"}}G )4-Nu5V$uV5~¾ VUlǮї2LnQ3#;?~VMJ7CiPLsԆ `7 h5^!JA[k14'O-02 F5H5 ]uCR/iE;xE|ˬEW6"M/\0n}=³^,tɎl0 cwӂ֓!-a!W%ǰS u(I|>lj 7 ,h m+ψWute;AH xzљ(y2y^kWꦍ3. 5Wh183˗h.tۼܕd3Ip}x e {X7M`(}p]Q-9*jHIy942&G꺮{M+%#fr4M_v|cZxv4έ  r;Fkڗj+mj)gi{ EN8p3m!o~2R\{\me$|d`TCO4jK6({CX\m-. iv:p9_j5]tym%:8Yx =%`;)-?py~]N#M9IKmpωᠶI}CAX9{x^LY Kpm4uoU@{Ą5´K;jVute1V.74s cpO\%_oc 6Kp]4|\=-Z>B9\%|Kxvy{j `j* #kT4R83%g7-2z?X_0l5&V㍏1?;gw@`mбk %TH?U_,+n]WbemI19o8l0Z[ #bKOnv) `%M[{G4 ^Њ;D?G5mA*.zOO^nɈFyF=SK@@z@]<*gvw_-_Z^{\n68&~IsFA=2ymK1'=mM/g63O OZZ< < u]xk{M $M=T{C_|/ݟovR/ ^hAB/V[0K呞o |;h+Z;/4V/QY vHnIhGO:QdR8HHf֓}q=<4ǣlBDr~QXi˃#'s21떕־xᆨ:= zSp60L{- 98}">+JW6iV9xS HH `QEQ#l'JogKIUkv::ڭd;` H}`ԗ H]DI e{ms8\ş |?knV{ݎGyFM%zcAj&ǫ]#]F e߅Z{[i: Kxw@iȟP,7{1`cS2ߺ:RZ%L~OlTKcC _=0{}$9٠YNY5 /ءgy+$d9`kKԀd==An26rװdŸ)?J)Y0G#ÌY82z-Tٽ-e+ » $ shpiМ9GJ,YQ ;rѕF) 閿FeuMIsAqw.aueX{$C.sZS'C)v2chM 9qۜB2zmMLNOr=ǺOFby{wS2LV&opHHPgNO*ۋyF!<Y~ m"Q/~y e,e# S*ga|XbH|̌6@?qO|`&<+? :k/\a3%٣?뻤[eE|; ;G'$8[]9_[Q] 8As\=A+2(M$^xZٜ#~x#w9{K8 `NQls$mIh՞$AV[-AŹs`8'+cǁ6: .O1z01p?h5%k9Qi1(nG##?AQܮԚͯ tYxqyWxlMGae)*g.1isFOUTZ[W}EH@6@9}`W-W k .˽IRM_m]te5߼4銈p=S%W{}B`;UMa|Bj gl uBW} -:X2תꭆS*+e 3iq_FH?3Ɵ+}F ]5#l-Sy <1a9mOxiOڟKP)*?3L==}oVOKx_hw%m saS\an[-=5Ds4cMW}mqtz$ 6>%p/>su],^^흣smRTqyop8x.S.z}_oySyzo`Z\1-aVn sU&Oju6fm1jJθ0OETY6ר.ֺ^Mpl{J]mcRMp>j-=@T+)d7F$6=es|9`dfOкwnFqK5][j qx%q2zblѴV˥l{j77QN٣ t\ӂ'sXXom< m펙h⠀OJ@#ՠx/+w8\|hL?Ocze)=G597˄sxӧiŹg>G}|:}vZeeGҿ2%s78{ߴdu;j|VqC,:6AS EC.сn uUv=Σ*<55{t9YO8Ā3?N&մՎϝU-8c? ^(|:jm MmýAAԷ#y̑9{A#wěsa$ey7zkn5zZv|fT4; }8'WܮU\+jkgI!\IXC@,l/pwU;o|$x1ZuoUYB2RQR? &1PIh+~xԲo~{rZ>$+oƏnrkl2S5e;ZYN J\C}.Q?o7G`usMPճs 7 AxZ7GW)'|vEQ#p%7S7/۸;3CyKǿ uM|T6ʺVy'gނ j(j咚VÏpUo2nGCdi uT1~@z(=i4-;M[򆪆HHx$걖¥X aޠn¤d*[g!PUp謿$ܤ*)a\Mk]7'h\PpIVZNApUh>ڧmpÚP#g7g? H>ܢ( ?c`@c? ~=U7 ɐ3N'{ 8$4$%i%=bU>F~Bѥ@o;= |J0 Jd/: z4PV⒎XcoYIs{ygעg;:d44\nu$;a,;A|#cl-5Mښ՗+懲""  0ר>!i$RTI?iZv4H ù0꿊_biKa9oxh37hH'iIg*VOi4F}a.G-;Z)P_<277c `yg[ 5IeXZ55}TS4y<2iƵ9$.9+釂ECth>G(jV4yy Ɍ k|ԇSjR[nUWZ(A6󵀻v]UGNp7tu~ |<`I d!c49!e<`gkᗘm0]$9Y.34,f+?yD5=KG+/+T~w6FHa -''cl[+a?ϰRn{oϦVssRs`cP~2>Y|mlnW#6i#+T邴K4=Q:#=Q)2钂zH3LI凂TÏ_+, %3IZAFrr~W9P=Pͩq-#E>Wibrɨ O99W>jק5;%Y;q˩xq =N)eCtV/~9c/zB|OL9KZzA:i#8T#AǞW -)knw*c?б^ z/cxԴfE*ZXULvh]{Ok]9)Ha卷 Uf\X7?=}_el6)o;M4ڋ\p\@'=U5=M{mDӵDvk=ukY} UG4'VI|Vqo%Q1*ݤ*[I/$$v4FZFZCG8_F|Q)džfZUChPxpp#|Fs_fc-9iQ)-RmƟyQo#3>Y\[%LD;#G9a|B?SX!kw\4[h#?,.#ZG/E_ud 66U>Qぁkhcf /?1d} 1Lek=tʫm};C[I+3{pAX[]5meeE]d%USRrJ*LMI{摸7qU4}VDʦø|Ǒ~{09C|`CA9 fAq*ܿ$sJ$$֟ c8ˁ` ^M^d` }1\=XŏOEV j3 mw"l˃7ea 9W?3iqan.iOu[]HzJ2gMoVgRn掀dfGt㎧QGNueU.ao X?)?d67 S h{pÌU}?L,!R{\9;G8 p ۞U;Î.*$L44(ks 8qR/iTtJH^si,_1NoV6e漐p>Ĺ_ukfz$ttRI#:: WO_8xnq1Ry[]$T6Ayr=qu5ᤌ𐫔w~>!˓« KN#) fD\D$fyqfy®ObDuc љ۾vRΏ^)jRM=d3)yvBZfG_"mq*2F7k 򰷏*,gƾDǸt9첚1I}8#sNicbwz\rvg}"1pN!9.\eRF$u[AkYל鮾K6F5ZϲCHClw*ɴ\g?U{1Ժ*gL]O!w$Dzu\H)VhpǸ+ vĎvާ*?57roV=PyUilIq܅Cۜ&U*š? o{ 8U4WW7dq tvXZ0q/99^cj-ӔEN08쪫;dC+<ƙoP9*uc9л`g%R1WRTGO0~-,NI7?ng; ˧wM= isituY*e4 3k@wQߺ#sYݤ-so16cIp e#MOaU38rӎ:/xjOtmSP3&|2Zݽ\8^iW얟 5}E2.3 JX:60]\u\"K\5!|N4muuihoezr@^xi#Ҟ/[|#NY8t/YQC4yt}dC`rG\Sj[4MWifcic/`,cHv:B,y}F-/>X(mەd䓁$8]RYSϧ>iIqp <7>R+9z>aZsq'MZzql?.fs;[ +9˞ӏeᮥ$xiMEΚ*ZϜ -~oZfPֺzɩ=qo_.&;eZC\ywKr@%'_?H)wG dKfίgBOL8H!}XˍSu-$])<72J;k.UW:^w:,?beC&ޟMm wYBX 낉Mf>+oe|Q9s`"MΡ\k)kX9ұ Aw? ; tGttt,H@9>Jiݍ!;x>" tOtFyFPe_hRLgtA#(@f22@'{}U'?D#p(7̰IX2sJ\VfnWr`L٢ºw`E3:daGiM`'s\Vіza?UX8F-BR`pcİ8 2$ApHإ\n ȧ\?"v{N}hqO-}Zܯrr̃N>6V,z=G|uRیsݞmhv#¬K N0sG!}Gu粝nn練*Syn#;?۪/NA#ᝬ<~kD״ގ+c`> Hi뤑C+ ~Ce8}AꭻB0G\c{eĜie|./1FOGvkIXp&pz!pP:M #;BKppM8¤!V1WѿفvmU-_KXhOMIm-fS=K: &:mz5tU+"9S9oTj--zfܮRΕq%@<_o UG)o+\ R2RCT<ޘیcsōkj*yibS^`KO+K_vKNҖW>=A)c1#߹}몧|-NS=$ų'ߪQO*چRH[CLNyz&7 Y-Ľw<25MM4qd88hWtJ&YUpfUDsQSً ,$qt'?fæ2MM`Udԯ忨!xo٥tEUG6ZY/5y)Q2OgEO4.+?GVxgL]%@!o#ᝃ' 1wS[f]YG|o—YoXoGU; ZKU;i|KPml0k@aZK5}ZU3i׾ɧ+ʉ+.<Ǒ71x3Y/ҝ]GO/>VUqJ׌5|C՚ߺz5FHו3ϳo;]miijoii@[nG\z)ug6^5%R-n9;Onge|+]vCZkNڍF\,al+#we7^3 :2T]G$iz6漼pvqj}En:\m4GS{^966G~Q;7V0h~TѸk6?8Poϫ>I՗Mg696(%5d88g'Tc?;ݾ$/^kyOĭv J=AQkzya܎ T~*%r<'?5'y/O}jeңȦ`[?j|4~zwh4Uvkd۾fK!c{xG$NKFxhTA\bk))cnڏ12eOk:j<׍kuE"-ks8paog@~37t&Li3],qZP0#-o{qTC᪷j:j}yFGoֈn"Y&]cƯgf 7Rkus44Fif=۹0~Q|IڵvkͦeEu$DWD~vq+c&SQ_.ς ݷGU[p<H|p9+_ǯ>۬MgŠXj*; ߜ㏘{%᩵AUE [WY#akCC1{8ὴhܒOxYc׸5U<6銝A=Xc=Euc)9xcƴ`9 >ڼ@җ(qzZ2ָsy\Ֆb (n,{Cex{_߇۝EJkmWu$guO[=TqgS;3տ<_ZmxoKWW/❱˕VIOV:.}I1>_W-%d2]<%z7Es'16ݪ'z2=ʵ)oQ9?dۄT*0Z?˜y>}r%xQUWꀚQHIGdwR^~SPg捏Qj6f4T! ~Z8^Ii[5ӱB*VU89kdA1J<1ΌnXo2=Np=>˚xCZmKNI9a`O@3OU҆֍iw:SZ `;?Ӹp~#MR'TLco8@9ܢK'CϮ1pREzIgNB`6A'`ɵ;O~ʃ Ɂ 8Tysz=J# 2M w`U{sGÉ/;1\-QlT#1.9+awZ??ǫ04ets쓉5Hhe`6gg˰0O=Q$){@w{}js"$crq+U}_½qb90yğ/>G_iRG!- ks߉=uT:vhq; V=&0_ tuJ7.2GB6z@\}-mƫCAΞkֽ;\Fa 8wcڳ 5E[,vF /~%,>7/ O9E$?a-io+tF0p@ϴO˗_~-x뭵Z ]SY;V<Fא7v "íWrQ!_med'tLf%ehv=piiϰS*TPzt.=c.w<,DZ<l13{kL0aX|k+{ !o1+NϯB^No#./\*o$QDg|:ێW(_3U1*ыq9ʺni;OTZ S Fۜѻ; BIOhK ˉKhOZ@?TpN)jQ, dq0qUmKs?gUV)_Kj %㇖mxG|!xXkkٶgQ F*9?27 㠙HjjAv?n8Xe'Qo{x¯iM}KBFZdǻF1'^ xG-%MDPV]U1v9s|Cs k'?_v5feػo1\^9Wω{7p\4dCKt,I^P#x3`{p$V<6T^wm;h''O,=ҳFH?.sg_#D黽uET adW:SS>LvkC#=+箺VMpC,Td{zMsKpk}ܢ8^Z4ΞAϬ-j? 5^&]i[m8h`8\w\#h˹bp?)ýNZjOCƤmtݏSWF򱮐;+ ΄;p6>af{Nj 4c(9lgCovi'm'=ⱔ햒9qD={aO5Gnx9DlsqJnzgSyu\9.tqe{%a3puNY5 2r935uu#gVxWI$ϒav碉tᾦ&Ri< I]6w^fxO-E?00{aaĖ}58|c4зƊI-rjy[/v_3~\sA#^[[Вjn: 8#o |]99Uo^4[QU=o;C]Pht]䃗cw=3#|GFy .8}2~2]MMi_1ȑ3h۳܌c83Uo;~I1p %=3cWQ}|Qd G,a$tTղ^۬n+MȐҗw~2A.(?7Fֳc}?eo>_tֺIj ZSCGX4{#tتݮdCO5 .qz(Ui]Niwva|2TGLg״שmR-ԗO!cG;&Nڝk0rKY(>!W)ΊO!wF~cG 8Ro>%jSxuvB2JWDU3AH݃8eOm:9;@5w[泲Q6bhHtm^b_׿jz}|Qw4OK};[q/sk-?^럂zJQH [`^QE$[[Y{bZ|-ҖmX+)U:(]9pN~X8:ܫsUVJZ_3#8ĒII%}e/v5]~V?jm5|93͌Cz@^R~kj]-mi.nGXbj׈pT~ƿ#Kt@y ㎹t_߲/Ǫ 9җ8B}+_xnsaS8=o/ZP)ueMa (kPZ `hpG98.XU]-V5L :?9ys&ÉNvs.S?j4iӵ5qMvJȘL%/'ڽ!C)-8ɃK!q>lӜkQ*&/)C_D);q}W~lӼSYo09ÃH@9SAdvf:iI;>E[d(!a"lcn=OzRrfqNHefXzv*?S5~-Us{`  kcnS f-uFE'*Y_0/qikXEk|CR{tsd/L$d1 pw$} ۵S. pqv3QԺhv1[=vyxQCFf*Xq}'t$'*-3uݧn:& .pӾ6F@qa f]1]]w2;.g>]?E])dhn>ͣe(eɞVcug\RW{2H V\$24.۸yC$kN3}T*h+,qzdel/sCHҷ~>\.vXKU+]+꺱B6c#bbh8G&i}<rr79&юoTZQ; d{rkp斟B0]lp)! <d[q]ODͥk$,5qu 3{F3JzIm&!qYqʔn4 fNZ;ˍeϥ  Ჩޛƻg>Of1O.7'jq!ZU9WQ'w# é%aJWaշW|-ɕF&.'E+dNkMz#,*&91?̫[9}>J>V~h>ʂ0y^ןKVh`jJVUT6**]uw7J " 2ˤ~خ7"b,}~'&Wx].02CΦDClpH<8al[(7f;\:Zsa}U$q̄^/vH.zvn㦔%iVj:h ـԵ˖?iEU_E O9`{\ws'+z}lQmg=®rSs憰Cfh5W|;K Ω;_l;pA_&|PsZ%nE)^$c@ h'JxEzNoOPU9)?;L`7Sx i.k _Wp;ig?N{]hd-?fawįMROQSwZ(.Ӱv`uğzrZIj\ [ޣYL X~׎۩l:57Z8TPy`9pi}y\o/.?A.T{IuUC'2K#I=p;wָj?qa†;v߮~3J~=꽑go7!-RLƷU ,֫pb)8ql/`pmΛerg>ew~cndp~sgi[/%xV*!ÌJ@;'Ri/|A~uvhMWM44I)j#,dFl :KgEW^;@ P_R*R؝N@t>B#5xJ{+HϧkE52KQQ,2\G]rMT԰GLkq8HԜz^*8T]_d^{̪ߢ4zi[wcw~>g5\ᆦs]sCI=\y= s|K^+TA:oDޙ*F4 VQ#~xo7\&ZBQAQM10P=WRkκoڵ5[x`E|Աe-UyXlsH$0?$ ߻|6[꫼0m6"ҕ XK<@7ٙ#XB=EՠݿT[lPi&5UCw`F$Ie=$qGd>q8ɺg0 ٸ?N⯄u:"ԕw2ٱx2:~H*fZE{s<v}$=cruTrQ'ܭx*~Ԕ]M)u-\s4r1ÚA;秉E(sCۘvCY,kO={+oʏc-/xWwVI-ڏˊ#i'l`0~xYfE[Hfu4̪D\̐zg!~+-'c|a߯ '*=Ty[SMMQ-|m`G8-'%W朹8)HUGh})u`/SI ߓǧU_ّa{ny;hv6[$~~Y%G8nsg'|8^׮^:B]GO^T"G~X{q7=>crׁzv}og6;̋pTŹ.F ^g)*2=B?}kZKO0^HW촂wgY*pQ[:]i <4~ elH5:=ALOLLdg>RWX* 'kJC\A t{Y5]%3C\ k@7$ sOu?c O5M}dQ29f C\z||sIm4Ʃ$:M)ag5d2p8Yi?u g23t[[ϾWad-?ऌST^uSgsch\.wn5NWݕ״dc ~&t?܌ssؐ'?}U?RY~l89d.?d4|[ $8[#f~aO$HKq `qG`4rU.{.I᜸TN?0wc~0A ?/1;Ư R-~$o8a^-d|ZLk?]Y61{MSg/=y  _Hhi}CmUI_ =]d7?\ #8s  <+h@;GF``*dsxP>IySdvH@HW\B]{,zIĦ[5o2;=:=rS-A[2QD#b6 OZS#Oz%( #PsKG(pP<l}UnmtRÞ 뿁6W_ t9ϖ`u/rT?ӌK3y9M$O$FA8™VMuWFtQw Nz6@oa؎{=yV괛Knn!cs<*!o`2~ [KIҀ9Agv: <|+CGߟԧKI@9<2}0SiԎ#UTi h{5+'GOPsCF\3J> Yxp~"Uj4x>`F29牚mIG_t呺!WC&;H#Ok':K-ښTSY]0::hZ呈Nx/*O?k~W ~/-m4m5P>q%⢟u(n\n?~ԏKlzVcT5"I ˞gHPRF=]6+!Ԙ!&cB0prٕ>!\믷 tW*tU/G8I+W#fnA꽑/^ܯ^E{G kAsZB%$kI[Lu=Jg9^d#q^MlfSKISصetoOodUG^aics8p96Ҽ F>4IdZnf+L \>VrU$;|>-.w ޣ@Fpg#>{įiWMSߦ|gs,Jm kmLPv7d5'FTTY"Ժzu˦:)[ˌrD$d3|*xͣgӺsŖѓ@YOǼ;V >|VZ[Mj}$q< ea&7òvO־B=YdնQPYes22װF?= !ǡ _ )ωl+]UE%]{ 0 [tH2~SLEj!]xn{$R:Z>i`Y!kOODj~-ԯ|GPK3L{sU_LTn#itn0W7%Hs}mcXgcʱZ\1od} ԃ)4.JzyGo,.llid=#=IIXPjDQӦu `c782^׼; !+i#%J; 6z?1KKdu{k22k+W26zOVZ:.}?UWxsZP6q[pV09<,-{eMAo%l8gnߔ}"RT\bͩs*75[Mݮ͗sOOuS$Z\U-fM$m%{pKAq;zdYIhykzUfBÄ 66GAqǦz*i+'G&p枠Ů%]3=[d줉1g 8様WmpsO?em6HAJk25*㔸 `J]OY cRg>zBS &O-dF8@9^u_t{6?o{JZ68)8r|c$M`7)4ݶA,Q wI˰S9_>@Adie{}4R=a|t5>3kG_][R,]`ӝ^b10pOV4T'HAsecdpAo ~u?j_kడ{m5!{ E)W%NʩD"OsJ܂Ca7vr>(\^郏unJy䩎UIˤ4=ޙpTˋ>35[Q=믄 [tkum'6Zw<%pӑJ v>~TO%eeE'j*Nl=Τ3iqVW*?s)j1? a$sײ07u"|$ֳGԲB3>dzMB$<`cW7 Ǽr~2ߎy0f{ZX~R]c}=Iۭ3/=\#sF`՚kix&lrH0:8ʾ?+ ƣ"5-*M84d$IK`V#d' trrJO@z)%CQ;fŽk}݆s}5|͑QrSV0JXs˸=p詮J}cYXF}zQ5IypoVیss>.L{;v3 \,ݷ-f߀x Iuo cc s>I`DfS.;v0gd6Hق#98%V_.ꍸbuuT0Ȫ6?~{Oř^W}ǧ9F*`pi=qV;~V1yZq]XkeL~ui\;vX,JgIsZUɷ?z?><2Rwњĭ@F#e+'#.dqFx;SVz_@y=2H#+~ ?x=\Zz}p{(^ţXێ9FSܠ1:Fz9jCݜmsvy Ҭa*yЫf{q옅IJ.H* JHGEԾb⍟Y]yۥsȍ,syd=88Qg/kdj=e➇Ii;9%wX\@g

pχo>aQ}O;߷<xh]l[smVLn'Tԁ}CH[y.šϐ,;$v_gT09h8N VIU}MT=H?2fP:߈U^C+?~i)u6-0,n@;>xØAzꇆ^R翩q!,I1W]UQhm<#~_ T27 FV j϶͎p.{]]+-: K1!¥R4h Kvɖ:d-d{H=F=R_:~/n;y}ki+v8ai2]z8? kߚ>)q`,'+G$Mۺ'Wq+è))cF W(ZO ZWRvm΂_ h]A+1?sJ"4Wk՞ Z(4{-cM,!'fKSQ38 9 ze|Ũ7жJ_maoLN~˃x5bQhӳk=9NGq<=8;l+ϖ֞#8}t7H%+c?QvG&uΤZ+ \idx^WxT'F$l=y>_f)jYPgtvjxm˕m. k%<&9iӟE2OU%eELhWM-ˠELq9n}nRGlo,~o88QBoʐǡ!z'F?V+:NnPVMPM-ysFTHZd{IvڶxW4=dn>Q;wVm98cl zd+v$'썴T)'n^/KitPlTc9')7iqͳOe~Y6u^d/Ҷ&nspI쯱潄s䙍7]WI?XZ&)$458{$3y.=gêhjȜ\~zUq6M*疘bÏH@-8q[9Ic%ALi^9:vڝR[_a$+ CCzBmƧ½O[CƐG=hExidto>W40cԏUlkmtɤrfm xdg8Qh맞 p=qicC]Lz]oǤ|D4-\>6uj:F>B^qH 54}w:P]O=/IQwYtAQZe]f! \փխoWJD6US1S ǐ8$u% /zZ٨ډ_G6 @s4 -Y׈E^jG2z*ƇKOn,vK@ dSxgtM|چjv[󦩬{c23cw0sG9:Ҟ%C-tu}8U%)桷R胄 p$Jr$2}G,Y5%4@)!Šus8 ڇ|Qi]3] to~lã{ֹ:CwpDViw TISl|MYkؕ|qsWzSxWs3E+)dq3)K2:gI:o~ <]mF\.>Ko6X R\ [CWⲋG]vG{\ g``у>٤٩G[XɍY!m;]˵HFKO]z_OS3;ImR 7E-yryrևpGŏ]1p;eÈf}U;=dt`hQ+v47-$dz'Mެ -[xcܩgD҈܎vw-?^(_wESit-U`ᡎOm߿M/$l6 Y#e o|*L\UbJZZzh]dW41sz{xa;cOx[%-媦Z"s1ᵄߕz_@"b_vpmu^꺪G8ScY}j9o>k_]=%,& 咊j9#{Kv2g^V|6KM2d\+*K3'kp@'ٚC73fZF>\ohi}]=o|/hF2 r]>鿃/u~j_Edt;&07%:iеۥZ*l|lfA|s~-[i`Zm@'ܯ\Iz=zQgIkmxD&2׃w7<+l0隶Z4A;Z6<40q7W?.>okfsj*9![⥎"1߮WG׈ުՖ\͆ %x NF%}Оi tLYl46&CNC7sq$\oHM}[OV%|IkԼǏ0]N(CYl6w gև5,piܞp c Ō~+ik[ߩM8tT6DE {9oI-O+-U.SowON9}upQVZj-}^CEwQDa +X;gֳҞ~&MG5 1VYтcj15=Jre\//miM_E,48*fy62F0zCQ#w2e㍳.1GPD4m`zTk۰d+x1㍋}EuњbE[J-At2'$0?F{ds~9czmMAty}MxuW߉{HтꛥKakA .@'*H7ŧ–ߴM_iAP4n͂<f@%խ..jeƮHuQ͒B<G63CijkmBY8_O=q./GB[k>ߺf$vƁ#I ^2Ib7ɯNSU FApp=1iU,L Ί`CGvGY__I mQQAp%[[ amӚoFep_=ԾcWKL~!u<kXlpm6`xu^ÿ+x׈*7W{t01He[+_Q?_=/Eڊ_\wDu*i#Zse|[,hO  3h`?={/'=ZL1n5S$VAE PBlq5h{W28Tpbn;qzgZ,8GI}8B =P$Є G~Ǣ=P @OD#D!,{AXqo)o:.4|oVIHhY^I=K疴֎hΜe)Q:j<=GՁKټ Q fl.eUE m{d%68C/S}y4S-wZ6W:W2"|9F\HmT嗥r]<wċ$k}<2m2:Gd 0fZe; q3~f7<0jlԮ#dPh7lm2G<gpK  `z)X\P?5-sMl륶J{S[p{"-Ɋ&Cs9vE}CAAnZL6넍P:<s5ՇMzwI)gkVM`cu;.ۀ Vz[_ jeXm-,i;Ia$7 q-}?]j[uv9Hׇ+Y](f1pk9Ҳy:d`{ϦWGOD(mq8ooF1tQe6Ԯ~4V;"ulIZ +8s(嫍296n#Œj ;gԖ[P8\MMQq ZUg2IB.Q3Pa%sK~S!H槡u$5_XHp aN$|-tR# E#xC᷌aԢFT;}1+@xc}W[wҕo⡹\)#'70=IqS2GD`J%c~^'~OuZ d> qᤂ0x;'J,MچS U\f9ucyz'GNw8/] xaVxk{;c(.穆LdaZ|~Y݂z/cKxggjKC7-a$0t ~$jZ9*VR-a;'9SN)jog6]iD|  5vne$T4YsZF `{ghঔSQ4N.3Hɥۂ) 񁑕ԝ-}ѹ6cuo/ U#Z i hyxq1gh.$ '˥=k)[ +|MZ3/o$N4$jXzZw\Z~=On]1]w>F9/>eL,63:7xSRRJ_5ԭdmuT95 ϶'c$#8!K~ Yџ ~"jKJOh͋`ۇKt4;>ecs2jM?mA;vWSG+>d}Yjݹg^כ+dӺOb A3Ds$|#jj.*EksI0c +ZO;Wm7EEjg[cscSH8p6ɷ[()6&0mkG~ wQthj*27W<q%n' _V@φH*#1MR87~Ǘ8;nWo eW^!s(<9xkd{<jsiIj-S&7mx~dcHUs d< .|[@mmiKUQK=qqac˱A轛1<0Ҿ~mq7{|_+\A#V,5 ye8x'``<5}1zƜԖ} CtmjG~ '2~>W)>Wm@kejUiit>o&Y #k 28pk}[㷅:;m%Wmպv=O3URBaq9d C+Y~IjҺ]ۯ5k',^Me0 K`r0J}]=3-LMz46gBJB8=3ԟ嵃-V)S+!|yB pXMH`$\(SGV>]49iu3媮٥:rau=ECӱ65Qgwe#ڶJ)cֹͭhg;4K^Hn {յ3jCU%%]K+N<7:WMt9d]Ø3U&Λk̍fژ[!|zr74 ))g``Y'pT^iq>Kϰ㎊l1DKpl?)!~T|;+>!*]d=;*)G43p# _jžh;#E?]3k]Pߴa=S~m>g +owmDm@;GLÂZtGcٮe90q+AYu7 dys*dFc=ƞh̀VzdaÕ:Dͮg~ب­L CMNK wyʈQ j"s=QSPr텃9TMQ3. ̞zgj1q8zUT؞y$A>+T[N$!`_}=RA" g.ZN1 $yna,sd,cn@# 2Hfc-an߅Ȧ.36hj'KH%<UYk) #3 p8 Y-Tm~? 5ҾM^46Vp9X^S6[9tmqp0'zelO'o= GewG,lmHǗ8 N>[T`c\pF%i :fA籡}CH[+jGQGl=v<{qKmd1ϐ-[kKki m..7cca~\XF^EO(?9of}oV(N8Dm;~F:On쩎3c{zjUCrDϗT:JVp׸9sUb # V$r sX;yOU(+ 7;z+0Xj=laNz~Į`s6=ǜw?d2yeļ7v4Mv\Z? 1S70Un1Bp?vK`vG?^ԼKHֵ.'. ?^3M֕5CC] w8^ %-s NTTtPz忙#'Ny Z&Mp4n PQZ QBERy@6Hssd:6[Y|Gq Xqߒ03;nHZm5BG|'%)eG~XU4^ M˝ ao @V 7y.ܙ9> &-i%S_RvC L6!9X? ǝ,)|MI7& 2OW9s}A'NJs6I#n 0̕7`[JKIpۜ[xH|]up8 ٌg;I977 n-dlԒ\oqÌ c98+8!{p 9NZIo-1O?zsL軽 OZ*Q#Xl{3i2=}>7ß77-=7_lW 8䨩WFZrͧ󒾃jM=5> 4!CKbv1F4[[UC 5/t6(k@Q2j-m|9W;xiNi.6G+|4od_]s #Zh=3eRzm*v_"Ku[u`,^)Ʊ*A5m'[`q{ B;dksus}.^'~Ώ0IRۡqk8$}cǘr;>&6Ani3;hw*z7n+T1#7J֌1Vt4VfډvJ0r8 B ᶭk] E}QUMUX1R7$x@ vM}8U: ]1=<)mʕ3&o oBK%<55-ǷB^R-7nlprzj~8S[m%Myl4w1#q!W{OUUULokGuUWIul3};省1+ž:"Hձd^iYtةvEW3#47sXf{Iw5NyJWL4vr\n;x4\gFRls5cILF]/J`{Pd-ٻh `u\ <{4mm24<cFH᥽rR_+'T b ,q;^vq,*(] <絯O$0%VS[3\<8Fzv8#"W,u I$9x@F!,]#,_5\OiBւx|>Ab _4k'f\8j봍I䡂Y)^ʘ] ]oJZگF3^Z#4oE>*,лq I@ٴ17FH摆gbW28F1r(kM(tKW2 \r?mS 15p}.R*f&qGkMH Du/r#.x[<鷊Q Q8C .iO }ح ids*,f1̐iwqmi=>hx?+R}->sۆfeVj&tаH +t'eP7COdf\'=}%f&Fd\=bZQT92?fG]QE>XO|r2\[awij.UDu-P4z;9C Li #;=9hI|p>a.# hàdGZsjm7MGY[rpzc<-F[$[N݆>[7nFFC28ôMZkٿ+-Ll2q{hq99<~dE~9| TUPڪnm9A$4`m$`+xU4Q|+֏-jj!h7?@SO|Ii~4R;!eK&8[;?Px׫5~еuMl6*Tq>D( .w/~ K\Y%[%EY(!7+i4R٩u׷ϣ ǽ~ܒ܎pppyMR+ii+e!DִortuLmd4't)mՐwsP+ߊ .l1Ky`LeiopZ Hj!4GPX[ϔ'r۝mkd}nI8n\0[ʈ]4pGrJݛ~֍!QO7O0m|4r=dA䇂_g nzfa{sa ;{I<̎i'rsnhѶHe6O#CF\%~-5w:kFuF |6F:{CAqXYpØ7ud/`냬SUSaMkwpe >:<-{ΜmEER֛S*`hj\<囎0 +[98c'oE{(T:QHd!9z_-Ѵ)^[Fdm0 >fK ϙ4 i*hZO!dr@88'WM-[X*qݱ 2FF'1Dɉq@ƌ 4?_ЏMmEt"ւKQCGIrZ}A8|dkφKCfFn\ GvT! H+nKO$s3oz/-zO|ȩJ^F7z#WRdrwB/ŭw-Y CCQ[neD4>]KNwVGEx= !aBƟ8qb`s B4!tc׵|aأ dBkc. #Ii%P^g6Z;2%8wl9wɢUUKS-%\E4,{9k 5ힴZ@u8#.eGUT#'$:sosc'>Y\9>ʗ>糲Wfӱ@ZeӢaڎEC+~&-,r{S7Dˏ.HV$NTH?NXϛ')tઌo E"y!Rq9nna߯n=ƪ9=yHk rz埈/r{x i΀vH9㪴'D2'8!$4q 9I,z,Vp;Sp?3Çpy_#Rfizn4OtmY sry9s^,Z[=M(h H()%ovHO?7˒I*ܟgѤ(e[ /q?^?_?--q]jmVE ܓp=FY,՚ - "1`w 8B]+G`{-& yZ>4x۪{5ZWV8 dp0 xHnN=zT >ɘ 1^񫎌mʷ9H\U$kLj ¶y5$ꮺ^)a$d^Rrn5S1Bl 4-Fy iT7H&cu!$8=>Wi>)ž4;#KM%R F͹Ǔ;rk7!W&լ4N5ōeu9cdS+#]2O}~]~+;+mnR3@cb2ԹJnu5S^n[E˭i:h6p1IYǵ>c!X$J" I+c%'.Uk5߃45?2Ng=ÿBV+%` i.k%pxNxdO<_^)fe^IGMp6K4<|Fp0;Uo+=+4{>Gc]+I#㞦|,@nra4o1,QFb=;i`@* vҾѱ`5?9{~:}di6k<25,{of 'Gx{ɡS gWU+$y;\X8>˛&[Vegz:h&h)=SHO^] U N17?.:"N%gp-l7{j/-FdN/U5ǥ4|Rtnj*D:y)),j-ڮ13l3Jx@;0H/;ECEm`Qiۇ<$0q/W,w5K¯ ,Jw0,으8Fz.EMB[IWCNJ]DY\1sOupst̂9ed`6vF7^Ouoڪj %;_$M m[9qúm2)u}մSCEYbi;f^ﮢsc?n;1 1SOMY+]rώYZw)kdaUҌҵQ)k@t8hS-mSoTDmk8t]E̜9r'l^N#Sw1bGRGוO>47,8*5M-UIn {Hn0=Uv6UeᥬUȧұఖ3'{9|O+eƒIilf)xq$w#y~ X@[UQIGmՔ6 0,;0e K"A%S/pdtUu*'{)it{|$yOb\yLƘb8oB6;[%idlyãsq}Un*q4pha{Gg8uŒht*' s[H a[bJ#& H \E5Eꞎ ,N_F4 5,,4N38TV'ޫm{U52RꙐ~Avh[-ݩ(R.A ͟$8Yh(bs_3m&KA5wNg c*館bJw9/ |u6H̟+B+պkRh\"u=%8.nr{OeشWſMTsN;y~_~)j팉dI- #=64lX.\sTTNill%qWΚx{}zDkvK`2SۮzݞS+t`sX2arKYⵛH3U`?34ARҁwHv}u zLo)鱐0=~1hHwXܗӀ6e}[ԳK!Mklpkհjvs#LO'w1ޞG٨jZ0*_zOʺ-J@//cY_Q$~h!:@.UlB+Yu=$bDDa 9zpo߶:)%B+rCrq?OuY3!ĸZ˽HPy`廚r=\=KB=0YE[dhk丷7YuIO3[ō=[v;<]"7.2p`Zk4ƦXe|r4Nțw6ʍQ9!UA 8=?{=}D!M/=-z--=νan0p2ၞ3/|#wί@iUWGh23.pd8@p2129XGS홑KS+/Ne ϫW$I_ 7:m=ag@کhYlݒ`i/p{܁ ST,Ry?b5uY 3X=xt3p1^qL&W.W,?OT BÜpy e}lm;!etFs&[-4OVKR r֟/\GS4r9apF;zcd trO0ptVM^ u["d\^dѶW2\A%aR]Lִ@pGR{qE\O74|R"CuE`0%8$NVOY[Ff$pQ+٢2 ];cЫ5tqaprcFA!8}g a@;@z:_2i-`A{**/vTgc>zI/eqg ݴ64Leu3OOǥ5.Ppa`}w>fyc'FgS0fPF\+h߸2`۵$,p2OQ\s? ]7 'SiP4Z!vwٝ wG=21VuCO;\":O󸪚Tt7;]{ 1y9s%̿Ǵ`~UoQTm2@c' NFڗMlńq?wFZdɏЬg$NGk$0Wok/m[So)7AXuK4.o$uk{Ú 2\ D9;zi*l\፼sPdns9k9찅Ց#cZ\\?}T kd(NXX%d!S|%}Z\dx3'cf<7vYu4iϪm,yJj* Ӑ^qFJfs.es|<]0zWʖGV8o Ϻ4yRVOI!;֞{RwҷZnV2YXyRK6={mRM5קEUG[K u=`ܖ Icېw`b]7𦆢C,.@従F34mx?EMs7p:(Ih17V\ kH7uFT9{pz 74MG\-v պHa9qut6 [Ɉ3`xVOSK7ߟEe!.k]Ԟ_|Sm&H[4G \S%Ck:icCuq1HK479Wa^MqQE+ezЫHcsA>@0~ȐNJls͎-w.SKmSj \GZ[ZC$f0罘#o"BtX5ԣoa~㢕[:z ܍݃Y&Ht24)Z( 9s~Z3PJ=yZ2@F8=8+,Թ1 zEa&cVG(*ʩK$N ݖu\jwKQ#3! yS%LږUI1s_:!Sǩk[OTSݡt 8p88r]Vo=iUxAkVq7w:LtaVΏNᴃcZni^hԾPQi*%|=%{K{mN.*g^v;ei$]۵k;~\>$0jqa,q{]WtPŮi ?RQQ5浂k,/7@ # fqTX6\maкG9nG~W68r缱}m2k%ڿǯ7O]%F֖#E :AKc /M| 쎹CzT+Si0v譵n-;Hgh{5QhղG?13K2jCY_$;A,9FOInIc柔팃szVc;jn j0@lkx$ tBw U(cudqK4`F1:HFcuʎH{#w hg -P8mzQ[N,͑m'<8Hk^, vl4'~"hdzKUWSJ74pZI<ۅCi@Pl4ц{ӧ& q.s9(A#HcSF-lՔA-jhex7lxn;v+)*zV4eΐŹ'# EWFَKds@ݹ= \ ey!80sc=RKș;ƨ= b͉6zeM|p |Ō51izW^b`)kٷ@! }T"jjhU4 )i7yB3_Hʛ~ۻk됞A U=K&G)#HD|_m3$}+#.'<.;nK δicCy$8;BHM,sx{Z?pF=b:'Q,~"/NiyaϨ3铓[Ma'yw1U)DFVSK;DQq\oE, -2Gcz瑷N3E{yVp;s %wFAm=xs>aC+Jx$k]K-?GcjF*l7:O}?E\r2nmzuDt5*K u8wp;]P czT`[W𵻷K sPn4P~ɦ=F`îH -zqիam,0Bs#e{]ncz\.QAYG#&iUlQEo0nmn*i4/FOb<e|^4$}VK$m Ք)2{AXGqi^!CmW G`ll3 sz s?ntкzk4.x=y^.w<6 .Zj2 v=TsViIzkQSUj^+\i*E5Dk` \2{52x|P#cnx~q=]%Ӕvp5S OsZܜvpYnpioLs}SS_*W?xM<<5#镝M|F cy?NI>8Ů,GD&@d,3$a!ў9h=FGU-?"ACYն2\<8%IvmնJ_=17cK1+6t7}|M-hhulIX6:t4k`[IHm +.i22Nv g%[ӚS_֮ibogmk_KBI`窛w>dvuG Af'%w$c`ʫ.lbJ*!Ò6!;<6U'MTT&-R>ySL6ˉZXi,as8 xY\[̒8fkRg18GH;+ra~e|v#nnm*gF/=s"an0]@xHHcDSc'ij/]9m7 }% Cb>y =TkJK-M6ָG#kY?+64c99=2 H|K?OI橽24K8!U[E*hUsXچӶ@6wH'rsW=u__5*IPl4ʙkm5]kxY󇍕%r6 }Ju%FWQ;|!s78;~R EDԺbM]uԑ q 538Y{fX#jƀk-/xVl?9߆HӺEE<駼B}4ϸ1-OG wvAkF27m>.KMbiPPYi QrZsr^[7Vvf4!d Q)~x}L|GY[퍍~kF"A9xNhip.3zgWknt wTVLx |ܒz_-dz{i 476 K7sK@v ˀ#'I[xrY4u&G]VY8LӜ u>?'|8+ujֹ=9#p?;AP_ &(WhmږQWQSO#]S5 u?cVCεZP |35?WE/ FE=Kb1$.!ȍs[04g.gcoA~Ej֐Z~v`1FF;Qomce6dYK{ssnx ^I-tV* -x6;ѓIѳ`SQ=g~4ج_n6LֶsdJ)j "M5tvGo4& qSx0퓩n_i&bpsUY"{.{HU|r|0 S tڸ=ӹIk/oORީ.V 襁s\3Ûoi?jn&x|QJHC \uh֛ooVںnҗg%𼸾#`89 \"C|KßmT5uS{ͲOW- pT@7C\ o5U|9Ke]5He%CY˸{I#+Ep9R w=GX,GD/Lcn8hEoUD=Ğ*V-';$=RI,q/}KjSG۪9FXF8_X~|Iu}W^-WR3Oh%DNF ǙߘCZr8R- .QA~ҷc\0PGPxY~; |9thۀ98]Dpz|yi_٫%KuҔnÉnoU|X5k?^^7Gue7c8q~OsL!_qF<@P^I< U{3c>O<cwa#* * $8G4{x^ey3D2oӑ~;XGyG!^YCFRyR )g%'v*.R{R%P_gY,7-M\;m,u!*^LbXA 8h'^{}WT|4h8 n[8=_ Q_OY$` ѾG0{~}e}E.S֜T m;Eeީ瀽_i-M6{tkklrd1FsN`M1YmwSc}4r7@i4Od5$=\~L%w>Lt|gik,/ 4֝Mk!(6I)&)vaҞ~sE&UZkRRUԾZykv0F;8*]}e,TvN8sەH!m+ -C!hXO$?L`߄ӟ}>tlWcn gF6`h089812՚B 1GWiedN~`~}3^9|HAf}}: x8lFp7gJJik\w+z~J;4clGnkr]H3y-l ?gmʒZj( mtKi1:W 2s؅k6Rmis`v9w%Ē׺:zw]jHavKZcXgoP=rF\KhRK!yVeGXa~ I.GdZ+eMctn3KA(iIʋ,ҎWO`|UN=FpG]=Z=k)X!&9$,ፑiAo*|]-|Nx{nCA5˚8o'`0u$ DVjiʃs.{C"S.`p'nmMem5v[ n20p󑍻Fzhj|WLeE]\jVY#G w:mԊʍGlDT=;Cg*-P*msZlO=1179<z='GQdmS]W.k]IW@͎*Qw퐶m˙8!;.e(/Vgv[7䏗}.nf VӐ#-q=Aǧ)FzQISmc9NS[M9ak,'3<<9?QJSxFʆ369ZMd6Sj3C ng,h<nqeoe#jY\1q˞:e6rؤ=>OQuSLh5f {HfS<6vKnEf*YbFc2?6qc%!|~Xx۲!s谫( Wk:{}ʌݯ5Ki}@f|^q:$-yx6[G:fʪVT;b`qd=Ax$n6 RONB--5tQn/s9>e|lk#&o%[w؋Nw_MAnˉ2N)ivӞ\A8uUk)_Q##hnuIin<7 &.v=GVU֖H={%/a I쌌yVV[㉆ cHn= UQF-ǘXO?P0U\ឣȡi-sП=+C;bsWvރ*gGi:!1=$79=V-6a(E<{A%E7!{gmhq`'gwp}zOJ!l?1>FOý֓;Fƣ[SFcczOG5drc=PMK]M8 !ܵ镓IplSg o$9TxżqUW;r4v\7A|ԭi4o鑅Ys}9nc !kes z$ړ/>rJH+QUF)*_4$O#L>=z,#Cpk\3;ۅK*u&P0ӎfH]Q=]JZ fv3텨ٴ֛QGHDױv08HVWHw%Fe>/چwKYoO& Iȧ0 gs^%1@UC-Gi=?\JO5\r3K|'}?[}BI8~Vs\w)i#:&n:8g<``3W6`i 8ccO?0} (,a$g˒{tU֍ jIV(v=U1SN[Rr'e4<;}UDRC-%)}2;n+X$P=pUÆ;oziE4mA,ġoٽOIn s{$ݩI& >51w%ί9Uùͩo jϘ;*dV]#?pc@#ֿadt-p΢{ kh$OAj#cffDݭ3#|b{еK# wp?[n$qcP.lWR̎8g qSx 2K5V=u]Q:뫤A9.pQjմv"H@W?Tb;Ok챿'>5sA*J=Hv1߅S!l`5#!G݇kcۯ^C<ۦ[n= N?npR'%kOώGQ26xI׶c3% {=Fz-thUH.2'v#Cѻ0o>U}Lp} _7:'FKK#1Rz[੪ng/0dLs4ŭ-XS+ǚV ma.QL0c8%ۆ$654r !` dᑓ2OZ";w4\oRKy1hsG ~4yh[SmyV,n,.cN3d?Mt xN}ǻT&{K; ύ<9ݧ*RǸ6sZ2x4m8[_ n[aij N[Ts,2LHnW:Byˉ[*rls >:xY+p[p~Pet?ֹRM֡@xgq^cx%͹hXj~۝KM& qZr3Exk8NĿ uu4QtqS]E3glF\Zzpz/;/6<W0VAK#Ϳ3\$gp2W~1-V3hn\agY$WkMm;1#C`k.h-`<={%/oC]yhււŤc$OOڕUEMj_<>JgS> {v13?]*OCYh͹FZ=Č7IwֳNfxg@2hOR7u}:exGŸ7NOtYmDt'}HZij^ˉ`[sޕo"K@ trнC=F?͌ =ՋƜ0E$ ևG6;w\~Tvbpxv:T[GƦTt1տ)p;[k[]-DE/qns vMn6GL,s;ߡL(4,k⢉&yqV+k_.wM]WZ< ;uYy,fN7uBuEK=$4!]? weG~㦼xj["lvX.||:P vFxxGPD]#Ia@ڇRnY]{{cFY}F{u_W:KOIs2IJd\\/#*u}\VzxWOldPH!kiGᾣI:X5euuH m; lp~8Uikt\q6xcpv2;rwc2{F?2y8sc ={axO/ / EKkҝώY_0v\6󃀸]gU 40JwJֿ&#twwl2OH᷍_q9:1#w;F63eh:$Lm۱%oszMxٮtiWJJqszz~io j [_L&fp ͹^e_}WU:(\U˾GA%f㌃yv^(Vpi*ou^k65 v9q/j{kLMhrb7QS = #9*ӒL(/7P\&ǖɽ#`nGR얇5 ttyTR=SHʈp vr>\㞽ES:i%Fb#G -9#aLNWU=OaaP4g8Z!or.{ =ER_kXM#'_+g#6R]m7A@ꍸvs3IKm-?)7SRZ`GhZrӞG$9ȯ1UVF Wz*̥P)+(%u%;]nuTsC]13)5E=|vP%;e!1`ZBo"?ùH6}3E٧]4ݢOӰtӆ=9I?M!M!1~Wu?Ձ=TFKuZ#fF=9: /?/jkepmd?34:7K?Hǿyd|Gq.9=8R IbW<ٵ;9Ik [Pm6usSR3Ú^s&K;j㬬_nR>)2k4UEOQ=L{_Qֺ7pw^zb_|K:>-m<5U$l?){v%3r.LƁ%.]&FӒ6t9؛>]i `S9e_:B6u*J`޴W;*sh*hϐCI{x'[-Li3(,5l`<t ! TI %qhikq[ q8ZᝯEp|ҾFsHda~yxWrU Sm9i#ӟ¥VPC_$-[ߘ 'hyvHn2:g_jn1RnE33{)Z2[Cx  4}]`ye57 95$fv2G4*/I~S;-S~.Ymx:ICQp.<̓9'nAg"melѺz_,:I% t.wa.=8ZUOYY4516B&d g ruS#Cw|h.Z_«%d{MZ=M:LRÒ#C.+Ɔn\m: 6,i`ekO/vrrHڻCn(u<8{pv x㲎O\Iϩʴ*<Z'Ҁ*N8OkG@I_5C& 2q{s|<k}{㥷RiZcdxӗpMh/{\7p9!}&7ҙefֹơ?6:zc-ꦰ^a* 2o q8vݖ|Gj_+LS$[(`Cx-ZZxrU\Փ[TV wxi=<ߵg+H_zmr\kͧ1@|r3nw=_EVU:Y੔ Llfh ^_|3>FKOf*^eʝCTfHk{?/1x1Ʋ:ZI_a| &@\\7@7 u_O췚3Y\gS8F0AirS^̼{gT7 9ʦN?Gx%;b]Azy-.pG eê΃zLU7,u+d~ݠø<ld3o6eq2\[X%Ǟ8QGwۚWQ,HfI${縜OrJr{-h{#R2d3K^SK(F=KxKDzF~c<{ 2 2PR#:!VE% U[e$ i`a[HY匝I?ErP*<У9ʚId;eP217q]WY6tXܲzadFONrYz֑;.NW~oO*nԶѼ clwF=מIL<,IfE̪}]ykKKysSefmt5M TQS#Ais p23nRoWGlf?-c;ssgc輵gm~"ة'ַ)ڊڢM54qkaeܕE(lc53$0 #8:z.freW[o|>";GҀ۫&K5=)-1L84Fy8*I+dODwdmۂ<F]D'#y85ic^6݂2GBBYȉ-um\,Fk[# ьlgbmqg\Ϧ3ǷO矾hMEE%fO;G45瑵#ӎ9Q+׊W=SRY*fl<8;`9Vw~Yxԏm4pa$ZQA4`G`3)eH#ccK;wy+CK|Q) {X.8i g=sU<ŵTx]W_C[=(#%H|l0dokxpI#9W`/iuM]*iLMpsd 1nZ@$F{|Q^4-YPtt2Gq ּFK#pعcϖXdqYw9}E Ë#LNh~;sp88}WA㖢uVPܨ#H96$82s#uֈyLɌ[Z[.0FGLrޓ>\>RK;Ƈsks3d۴\tΑ8@ŀ^xO~w}Z7($Ͽ pu/nZ3=D25kpNVqO~4[sg J3zA:9ͼi*]:]==QdFFq w/ߊ}[ak@v4Ho75v:`e\jCYOQYD爪$G;Z s R xos<:3U]5E]YfybA%Z,-  \S34unh} 4ͻ0?ItYKm=& ~9 .8mT2So!zlΝL k)<]!GH΢H)!jWI+6y?9>-]55θۨ!Ql9/]5~PE7ݕ~0wPn$ee]M w?8[o'>"K$5c nc@cޭ5@py'9:[,u5tll'3=8>-kɅV}A>`@- e. tUIFCMO qzWA[Y 626~ z|tZwQR7-2=0Պ*j+%fj KpFרJOSuUSyur xq8QV6Co$L@{vp:sclJꮑɼ cNᏔw'=*may[Cdk qip Nq0|,ȸ~68za9É1>*K29>On.IyNI]-z{үȭALCAc8h\lۦ]mW : 9Ǯrsة5LU1ж&K"Vحy8mqx#mK{Sק4Qjk ]O l`pNx—IZ-'m#ds7wam.o5lQۉᡃIvzi(NMXgQߨvVkH଻i[K[mR0GO`WO5kCk{<̌nk]qV[ žyQn:6KE3PQU6\p@pZ3yZڻlj7 :asc tEc/Ǡo9ʓc4Q6Ɯmh8>; Y_語沲7p~v PUmE GZ~Ip 2:1ZSw9ۓA9>}BZīneEb,x[dc9<)F؉[֗4~l}E5 ꫫ3 8@8i]iSQ c$l'۴zvj {s:ZA^Q;\VUL#f6s\qנ8ۀPTQ,SӰs04sH꫆[)D1ӲO);h';gK|Tnys,x.srOP7n NnMGM/-I<4VT1vKN >sT9CU-Kqf7/v sߞGSsK\3i2<5ɏtMOymtƥ%!%HڈWskcn8h‰n7VlQOIcȍԦ7yGӍw3 ѷ*h;oXw*KOs06A= 5g q2ߗEHW bX]iv:l`oOASEkvc*F;yq9Ϸ|,z5iju&%k hb"Cr>TDʫujwdD㝍;Io:B$Sw-\rJYvq^-Է+ &VԆ7cIzJ>In`5ynY?nnRARTMiþn "X=T-Բ.4q80\}{SWCkHWŢGH^a\ d0P2h&,Hn);e$j[JA iA= C5JF@{s*bM}¥7OQd4z`{Dc)d{r8ǷԑVMId-thtssNk|LapIdU_UnWP۝4yV?t[F@vr aC((g[{ÞL:[}T/{"'taqq-?屆8'G]?`[5Y=YtC\}~bE4 ?KI)bss'=fMW,TM;jHwHq[un528{gppF8'~ze\j;2[Q!pyOueXdN%-k}ÏQ+Ik0#cz\_n|H\ ȍFyj3E#ķF=huUƑK#b/lkCp.wUoͣs)i@?pOgs(wC d0cښzc fZ?E:KnW(%۳Z{+t8&kDnw?3.6{-^{?u4.a ?L~UIC(FQ}' ʫj: VRFNGPѐrec8=n.>Sd,Mn_j˾0ѹN~Ȧs4Ncv<zz(u\*]Dlf7|@͞?EK]X(sevN ,uYm&TZ'46^F7>TI!7;U S{Te?6OY33Z܎=3hME\O?ۼoc6p@ʊ$x3ie,1f9'?Er;ѹW3nv򗡳}{YsOlcjrsb0o0]a,&FI08wZeXjXvozES97__uKj'{|vYcW `j5`nye;g0T0QL$tL/Ĥg=T9bmt;yԝ]~V0R:YhNyK-Ju<!΍m#9ó*~*\Kcym= lfq/۽#$V$o9s3  |^i+G>êkLZ5Ѥor[#L{qsZ@v]>A<2]z u $)q2[SXĕ't.(#i\"9~Lqoں?S-]{jZ;O9`vQu;Oܯ̭C yW7 v$H۬x6GT^u]dkU1 4rJMGMU]fߵpZuϧeanA/H屮1#^ѣ p#U01pruA~?t׍:FscKGzꆰNK¯uG҃TiWZ71J0HΏa[?}U%_u<͏2ke+JF)'iqˉI*֕}3xoQ*v> Jr7:W# i|k.SUꚛ6f{4'ӅF~rW^+W_[S_T 3:WĕNzcZcҠ(#}e6Jjx@ RaN?d$BQtWcElprii@pY}D3enSI!iˣ[zdtTJ 0sq;,? <> *%l 2<?D:R{=ղn &Oou$zGre4URRə i]ߎOϓ̎N# =U:m:q@ 8Ld{ZK4U'I<$@)AAgBͲ_.zjKsT[dCSK)cЂ.Kիvl~"i85ᎍm{Mqc hWc9sGBA8?xGgS-XF5lW#ՓN <@$6/*]!uŠd$epqЅ<6s0b\⽱V[Dѹx/x!j>"rPViLO$x>W[2y]Uuۍ-;ŒAhm's1swZXt.[v]\^#n0=비%u6v}3ᨶ63[l3wr^䫗 (`u627:/6=pùt/du-ԓ583.#]UtV-:h!i *|O:s}as\}=;}3Y ?HyKp#9R4岚*(cd{&eCC̀sy H뚛fVæ`$ple-}UL<46&5cO~fu]#Oj*{C#S5sA.ò>ߢ^5 wQOK[3t9Kr#FіsT^gGl) c1y\cMؖCpd|y\dykK9F@Ǣ#ԒX jil6O5u)V=W;Av-2p}3~ L5"t[_ߕ׌q)~ӳR:GV K,ׂFzu?u-Աbp+D:,G IcQXQW}>@(v<X%$:52 sq™u5Kڪ꫻WQ&[f'0k5={Զ1 f0pT~=o]n4!s6q͵x\tBhfo{ܻp82:n#MM]CrHT#qqzAxQ <T]X6ض5i]³W)mΞI+l =G\Z]}x/Q۠c4mbq7)cR׺dijC FyC4ϖZk# ".t(FҦMM~SD=s8 nׂр|Vt4oOS4ٚ:L]cV]=m mI q9P9\k?UëO]QTS=n p2[p ]]\> fpl<c\:܏umka{2uV雽uLZ*)1Ůo؂ΧqpQ|lBY;)*Զ ZkCr 猟/%< a*쨑ոUi-wWO\?Kpi}M Zk9Jt2g.GDUe!s1r  -9~#<ÞW`gֹZZכ>wc.$1{FOvZ=_OҖtW{]szij؜  L} ~&~zNSVe4:OˌˈnHY@wpGU2d属s'#Nߞ p9|nZGb=99^[4j{]o~lɋW`A`βԊ][۲xsܥ$Cq`"Ij9(NƱs7qn9)c#[i{,0KYW4@@Ai4#׊z[nCPd99sZzOeXie+pl{˝IHk 3 wPme4,0]bs$m3"cX]dK|]Wk U%TnG=*Y\j#.WE^OG~i c%:0Ҹg5~=5lVAp4y8syH瞊iNS+~]p1˒d >BGS[{=Qy}CA%# vA'9=-Aܩ[KZj'GNj8c3X 0aO!ĭNkMciղRY䚆4_n3A%mX)ya@ۃ.EZ~"Z %iNheSɷnCs +3\6SNYnϷ%U}\Nsetyp&C }%;lG{Ik8A{jp_wȖv݁`†xIwӓREM/5SƃM'osD1p^7~(ZE,%'IWH`sӯ=PܚaA-Podrpc8DFeQCwPI3j4-q%ot?C~soldO+ށYrzFTAg|luUv'*&Jل+es^~mޝ0zj*oU8+tRB)7E4%\vwCVx''sUW_P%$.[Oۼ*WSY=ؿe+#mNdF#v\sӌ)χ]W~}nX3</AWU5:G3 yA*WE!~lsp{IsĴqzzC'>N"s>`4 <N2Gv|ESL1~2YX~F=%QJF^d2U%w56@cUA6M#5 4cMĻZo%;T;g\FG 5EPLe|r$l9k wZxE[hv8zOJD،k#?E^-u6ӹox N*Y=JoG+* w {O-fvݍ|x`㍽T \D핑lgԚ_6:xpKr>[it#Ń<`=KY`u:R@`w=Z:JB-A&$5y}GoOk=euKC@I<\j`nSI5@b՚oH\_~y-z*G8I#u)癕01kO U1.*5U4u.k`9 y8P}ђGoMlM..; նIq7vvQAQ7 o9s;\}H<5íy8[?/ZT5xu3Z+\<}UG]5%8㢥$ph9=+O}?Œj:a]Lh$(/<倗;Y[}+qQ?fzުK=f; ؘH`R;}oHѿ oU=RT[污fCp ]d$Uvi>K$TO' 5ʞ cl4˻q2kbZ!Aǚ;uW~;|Rպ<.ڞI[5}H%ѯw(;vFwvf\O#|Elm2`vpyZߢ5۴F^* kZ2L\|Q~=.-),*4n$it-$1/떩^/:Bf.{zVĭ/}^ +j+}t\%{;qsd9Q.1!F aXA?D@SKEF8B>xHoB @˰%E[Ͱ'nluۇLM|I Ne970/`q[2FB,g=8Uk{}}[%XpOrմX_l0㠗̆QQ N O#_w {wm{-RNv6&G{wYw:~ۨڋ_ ;9'vsY>魕6שRGK1Ï kE簷;~s$w I$B@K@@wKO엢!K>"2M=L囈rAEtw y6TӊJ 3{mx-Sr7 陯l;\susu]tm$ΫseQ(llpp ?C  莒SjiO5͒Z{uDN@ 5q4Fm3 CpH'zd xG⒢{dpc4쌑FN8F٩oUN56+kE ˆ8k tZ}-4L>7o8H(rL\3/݆4cdl-I6q'urTuM~RԽa6KWT1j qv5;%݇uǤ%E[WHƱ)?!7=Utz[|Odme=֞VӜ3jHQکjaI3 ,iN텯o6/p|"ae@^Oevj!dfL7HNx -ŵFk=KG\)H`ŭI4K03=Jk={nI8g|k3yv璻amޥյ26DᏟ>fFЖ8GKpe5!pKwFI'q,:ɦ'ֶQK76ǑpvVmJ:Q>s.8 `U-IePSM S͌m q=H.~oNUh)^$.UI c`=խ@5`E>?¶j w$0vC$sx tQ\E J#/{K|2r8ommQ ݷu-N'sCjJ xchjiOs c9=ToH풢h}6O?[~R88G^4L?T1x] 1d8q8TAk׶KHAbBv~ &cn:d>cʳoN\ mE 4;taZ0rOLd'G%z[vI(2ʐKqNJYv6X`ZS+[y.$]MEwdKY; 8r08JfJIp9َs^RM]T76󠄘pp| ϮrxYRO᥮qIlQ)fb!p!k\y% uOGj;J6FZs9{wF Pyv0{W=Tn36 25x  @κCKP-"X֖ ]4mß4u=;J۽MܠKZ@"2s`i96--UCk6:I$ltѲ8  $S$eGDDlnpxh>zuêdc CN;y.応qd Y9A=ty&a%M0t8oP;) F}{8("./򱃒E;>F$CrrsXkpy{7W:+}=|QԾ^qIsA*qd4Wpt2l|Rt=]YtZnS[n大}M KB> YnJU[5]"9PJ% i-HTj-$vU}u:Vc{|]6J s-mZzz)~S3I#\m,q_sh?M-$?=ׄk-%n!}!gsq)FFrq[rlyJy;4ܞ,,KߺK+tI#=pZ@$ܯr~9v>U[p:AR~FF]+O˹~󟔷_mq֜|upi \P_9swO ` _ /jDwlT5lb=!oNy$Mn]=b:jO2T׊x\XܺB繣;.66Q-Eڂj&?>cHQ=2 ujUDe{&<ѻ-wA4.Еt~ edsvϗ.qIZl!}n {Iz$ItJ*& cِÓ3q[{FnSEow8ٟQIGQ <#ck5F0Izx^X>29x#Lr~vm{?{ velq4l˝_ާl}2f%r:TArԳR2jr1,O,pJƹjv9$Hp1ӮsQ=GsmU8*eE){cKF0[lL+o"$q2vH6tȩR$6QS8lr=nʊ j*v1 ӌp^j?mv[WAO\SGSJͮa.A\ōs;G8:)K@53K@4v9ey>$G9 orX!lry uwϺśo-Zm15 {MK]LO,gd9n .I%nW3˾&O8:odUX~"A$2s}_>|wZO<5 Ujs`u\pRykovy=SԷS~VT;Sy.Aˑz 9eկڬW0g[j+&sy?;xmD|xj]z߬Uە|ʊya%3$o8ې~nG03rjj=GvV2{]N_N^(jg ps _2"u vدVJ`ѻMQGnٖoP 2$mPBXZ+YB@5wB_o(KB HAd}; hK }t 2h#G>$B wA }t O쒍CFQr*Td{, aY[ /X`C.;cp%p/.LE7yZ_ 8nG=Jȧ٨\?%&G3X\3 u3ꌃ ?{y^,L5.̬XV5ye;w7q/߁ߢO5T;&{!sp3qkDm슙\F: oEpu4ԚKG;'?ƽTmW{]ee.:زX&=sϨ\k#UrE%3NC1#k$w{Dp$IJ7W|y-I%L0BʨGmP;[=){NC{Z{psVZWd55˚A[gw\RӲ^XHM LncA#d=e(A͚1xQ{Jg8UH?wZ)G .vߝ+^1gdpy(4 ҈у=0fmEQi6,K ߜttNN)um٬E]7 lQۛ9|p"a<镢̩MwJL1YSyO[wH?h?zV'AoѶCWxxcci"`8kd {$wa ׌r >O\m-.yҖ%kgL\@,n>TR]ˈ^7bw29/. }flw+rINδ[ БZ)p*ڍFξ3(fAIY#GDqr 'wԏ̭y~PCX7amJ%tf8%oǮs;vgSB"82 @#_XA]NdU.,ѼH<GeU}$q4ChF Hӱ[k-:wWܭ }⌍|Lvv>O|PjJJ{e6]G9ov٨k1{ݠ7J٤j6:LfqfrFNHnIӅt¦8By-h[^VIVFctm pzec:#,`kr 90M&`n#~N1jE/6411`rs|RKAcאR/Zx"Ho~3ӵ37܏V6SнIDc>D|1%7#4K9cCҚw>CKV5a{18LF*gn )54_$`8a᠓Ѹ'j /wWPjK}]58CnFaK:jתa;ʸ[ c굶mfѐ~L=+wm쁤{4WyoE~aU3SӾn>S?(/SNij|2%$c>6BIsZpWxn6+D3e5¥=课ѧ'x{W_m;AikP&a2FP"[`pw3{cԐ2h)]U]ZM1ьM3gaJ+XS(v4zs nnycm;u>l#:?N 5UiC[-f Әq짓h=U$2g@NOe55jڦ-Fq8 9Eo=,?Zo;,QF0KsxJ4/P_햨3[丙+!t౲?3NA'#NXh֢1Sn"\3OӞ\{Z_&ŭ E,Β6=|8=praW-dvOA{$rA{v#vqs >;ĴO<Қ`[,kӏp ëf[TU0vvrK0CN3r}M?ZUQ6X%kAk^IkFp<2$rfZFP\Uys)ˇ9a%1 A'%o,$jҵ7kfmsH,0r NFrTB^h lk[֊Y#eCk&8ssyj˧/{QAnh[Zxk{mN2?1/s\LeC/;>Ԛ~H-n4npƝ8ݓ8J= uH}Ύ H\At݀y<5oK:Q(8h|0ǶT3Fh4]g8%k >WIwCmT\-m-$n m!ۜ_p V֜WPz;ECdWe/h.,piu榪2l`af$;77{6Mi# v a-$9O qޛ^?5 sܴ!? o&V^wGu&G- Fc|79wVQ[6ۍ5ADuP1#Xqn/]l$6P \7[ب]#wntF5.k`ԞO^@#댦F2i>:uZM_>ƪ-Uulqc!Ĝ`|}K;a]Fȸ>sy<8`)~抒5QF %{䜵8u%2VӆH$ tPzU^Lu*Hď9r cgU ךMESTWGF49|#-9U]v];|Hsg<#3>YVaW8RIgġy@xuqrYǹ6ȃ_^j _||xY[mUKos/sw7,oTԹÔy9ۜq>4Ck`٢eLzLjCpsvH' ռ+_+$߻s疡_1nį.%uZ PGoIda.ldq cnr"1!Kwa[3LW)(6S&܇p]7wq%m4,6gjsc}$Te0Hprr??Ƈ&Nhj ʌ80ZHw/=lvY4;k3!44 bqsc*O^'TA%L죋" it{ˑ9O뺔|WUvS1Ŧ2w(!g^+?k? A_*J{c4[?Kpzmo dO࿇mfVfeN\Kwd4EgWdmEg~-Ym3cU$N9-|8<*{VˌĚI^4]}s=4ocjBG779n*WW$cZ&78|%2>!Riʩ6Pj &:YmUͧ}szp qs3=FE[gTz:Yc'1=H!2~ZnRTK9i92֓\sیK^s}"v v`*lT\A$G?I%>ʀq?Uqg𲆝zwUc(h A8#Orve|PW4PMjVS(2ahkdw꾰TR #h{寊7d|L)Wޅ>WGE%hVw\}Z-s˪{^wSz`c.tvm*JJXl #sG {%i-AIv|;O'=is9tsEx÷Ti8+_:g3#r1[cI+[*i)#t$ytDNGm㗌sSPn7KƋvbY"Y-tx;Ca]F|RIvMGˆCCgfk:.]WYuuP_j3V?sFZW Sx\5 Ҫu\2VVJf竞\}X>Fl` ݜ7KBew ntoU\"]:j*$hp|Rv3 8è#,/WZd} ](=Bɢr:a+F#kkIOcϧUW Q[)$50i#tqG[Io^[S "|Ō2XLvMY BP@A@A4@!!i ;Ѐ+*t#~əFۿeQLϼI WE7'.onإs[sPxV`t jzLӻ1uk}ͱRWǺ9ZFJx`vZJjں:îPW$n4dmq 8 ] 11x9ޥzoF5MM-UҎQ$-My| @?zϨ|]jV\`<{ d-s ^)vcG[.FFHAlrUr*Ia}Ql4UwP]ĝ9.p$u-P M3%4H@'7 _ 7)=1Tlg7>KA[9)eᆶ}5U,5,1JU |9 g9Ei-S%TXڈQG99Lu{'U\(%vF8c:`@ j3ZX&-p2:マ0r,{ZWI[ޘQS apIJ־g|崲;Ӯ}Wad,t%;C$F˲ _-ƍ|GWN1т4Zjk6[hO$yhw$1v;-o@޹ ,DXO/&0{mwcW@:^&\yWjqitdߢye}=EtR~2I݂vXP쵬6v_%~lwgeI_M<ߧW)\uvYm}b0=#}ruR.PS38{wC#p^ݨ(wi|)wŸƁIy"wE1,3OW.ijz]OY-]+Nys>Wi-95ytLʙ{<,S6 02@ {,gÿw:jsp;q$i#I ,r+L`cA<;ʟ<k5Ql E-Ɩ([j';prqy sOVG(n `:,M{,synG7۹}->1կV%btw(NA^L A#mq—RS$q27 8;=xG*g[.c/cfӗ\It+p>/  푎IR;mEF%tv) h.9c.3GTn+\,r@KcCi~H'<6U/&V'kݱa'weAu#n[F#$g᷾l fǪWk\tq8?3z#z™!??9c#TqH+ #l6?@=tM T6WseÎ}Vws| aY`pxVE)wӰTAH4H#~_ut10>A#qO9<;tGW}sww{iΫkmȭ7jV.ulňvH!Mk| #NG$G{Vl>v+])*n{ѭz}U+{Ph-IDmᮼU w As\]CkKƟ.˯jbY rĎfs'o9_Tr֟:%NQ^I,A4s 9sIcW%Ji*CY}SYUE$Mkg- '8ra}h}=O*VSKUKHʮEh pW?yeGֶZ+磯lI<9u:;lqGTXK2=G%sM;nۨK2N2GpIe L˯|E?(zܫtR$a,!npp~ʪiib2-L-em{)]x#`rz7W>Nط-1Cv,phӧ_rOa!1)n@KWs TB]+yU? TH7@^,;于~I2#S 45T/AOsYvMCgMdkE^ѷ WIぇQL79xtS68s[|#G1Ϻ{Z75ϏO`\ q8vI$6I>`->Le1Ǐ2\_ZXG9[kTmh⊹5O [ȡՐFy= T-z)<ێdw\-$50LI%E;#c y9e}@. QR펢w4w~SgH"5QXo;<`tYW\jkdJQH4Kx |z+xqQ]uYѵ hL=#$$1fi zG-B^9cOӟ^ˌuM&K MeU,N}3d ,sߝh1Яfu]$Yj_QJ(l"A?ˀipA,WM~OMn2֌He `{yxQd. ;ALp\` 8J+3'-ji-ԑm&:G@v?QQM)O5f,kT }11_A5nid3ݨM6bH9ǼQg[iK3nntp 5I/kHiw σ-3ZA:2?vɡm]'}UElF2 rZZ:瀽%sY-MVTPbJz6gt<$r֟@H=fO}T܁}ԂXNa5 pHR ;nw NO_-{Y-`$\Aze}ֽsⶅhIi`.4T:;Ro 8%x[;Fh9[zӖ K;ǵ-厉ܒ0ڋ.v;\o`RR҂ژ]t4$:i|f?WxQ,zZGnyfMΑ^" <`uO=}1Zz:iMYkpc*$i. x iH<,.fZu!nvƏ 7`&ZjWPj l ;I\גFsʍM>߅¡EU%4tlV9gs[q=ֽMX秫!u/ST6NwHAk;?\v `|sZstY:~xlPY@|L|<\3IT-_"y)ӓki :C+-0Oyś#?EPkDpJǹpzdBq5p+}OJYp08S*4mHC\ְzu*ݖr*jqKU&@}S82Gyx0OAJ#*lg`G* ԭ๧v9XUI.=x#=Y4D<.g,Hh{q/ܜoz6 @ ;ç$GU@]Pa*LY$sRAseWSG!1D evV¹X\ \K|6tY_#0V|S@=򨪨wKN>64u4tkb_!ihzu;-)$1eF`ĎON IIlj,) i {wPgd-267g<y?^JM,Vs6!Vv*`,@5!MI%=t9Rqڇ̋3dw5>ˀ$&>QڸCYTj\$<@YF2$uuk6(ZCVIJѴ|͌>b9TLiᤂ k.-Iz,l;vԞm4g$wV<1UޓhӖ=sOOcm7J0>`O9Viow68<3*UI429vit5wd̒H`D"|34\|dd@;++PWRT$`9e,Nk 38rK]ghT jk],ہkXNGmt7z:_p~.p |H־XwW9;_jM,ua>'>B'$xQuVaG=]fps\ۡ {34%-t響I/0i ~\)P@Ѿ7oHsSwzNko-6jo0"#ӯV~8+x<8q뿏nS\it"Nesvϑ't`:NnJm[VTM):y$870TA=rr9' 5vI]]Mo'uMbTjm_2~rnKY )%wIoѵtU|4j?r<56xdvQ];֪جJ<ڻ19ܒ,qsO'aV;Ϊtmh%1r?8ߒM\AῈdL8\d<;K_@4춊ݼ uEƞ@ )Yq\r!'[h.eRn4[q,RAY4D3'wtκ[}}S lH$ռ ѣjX-\,̣x%%tg%t$GW;jo 9-LR]T1V'#k86g]%$R2> sZyp"THU5]_/WMU ˁiyndFe5&;"V\;]R.ڻݵ9hr6A'Pű[]y|sw#h޵}Tbr`B6ݴ&ElWKqLǖ;oK\l~j79?˂48:_75Nx}D?npsn$.+^Ocw4>2.t,1O120m  aM| Ϡ㪡OK 6H=qI*X[[-oO6T|:um+|I46jIhٸN N3; SRiK)JXǧ>Y#yv\u|7 S꫌G d|Y5mz*::0ys41^=4Nj}^^אkh ˴ydq$hnc AVz;TUUo-ܼLǰ7cw9yw ()KCD[X 0kZ] ʌͯ+TհOK(tcGNIOSO.x71+mq@˔) >gܻ#y$-E~ᯣ ;Aܴ8dg\V堫]-.d1;6pџu[ EU -,܁9˰@#;ҙ9<)cgUk]C!c+j%vlM`n6 R攟û+-s P8tM*niZRV!sק>n8PVpU&:pe̮h=Vc[OlvvY৪˸V2WK,k=!t.O #).u2f@9sG7V*ӻ́.gӂ[ZzüiN8'2#C5$\w)l9&?NF\u5՗&} Y gD$˜qӻ8az"%LC|+xY,v[Tt7i%ei1s;j&p!t41 is3pI8VWkT)lloČBYh]kkE+L;pzn##B5]IPwHtmÈѻ'[h׍5V< >nC]Iխv:Ȥk&cstqAcGvZcu7U,oȊ(s1m-~ s]Qb?(ԓ.'Kki4磌2D;dgl MQAZCiK6:({r0zNrw uzZ*t7<hC㗈_ _c8H".|' Ϊ> wԹC / a`vuwMEm½ 4ҿmGJ[ *O\=ǎ [c5nVu:?&[ kde$ҘA<y_i_5L75%_h!f  z +PY+]UaV? dcчp ,A4\Z#@0\FIц9Ml헧r0ё =/"=31'mt0݅z.Gx{MD27؃p4Z pV7G(hm RRԆr8/<$ L0y-1iwMnBM$"T]+_iߩjo/;U7FZ~{bamcVieT s=r‹ʩ,qi '!,# EnV1tokqinq{orΩ\j꣩y獢84t  $jSE+{eUL/u<˨ߙiFpqGcS (=Pv)gt!(4!#;#G;!BH@((@B;!BH@ RwBGd ;$h%<9Ѿ%(kt7 #3eON׼sSPdǓO~=shō4k4}}>Կ!^d+䬲˾z&1:Iqd893P88*cVӭk[3mh;]Nr[""í]$F2|Ǵ9p,vIckZr孭/u-;̔H'06Ahg_ctSu}0KQ#'e[7i.KOFx^Xӷ뛯UJ꺹-SχkX` sH3MUip\eOBܱ$bV:1+~Jw˷41SQ:pݓ -+,Pi˄+旗cԁ**~ |+un/cVay`N|}wݥ}]Uqu40s] n$`/y>6mޫ^*5iemsU4ώ&||~[KH~pYi1Wz+2ë)-.$% -/kKCr ?6+>իm{źwS;Xѹ$e:c+z٦*-?.f"ЂZ9.9? I Sn6>0i:ʙqYnhQP!WZXOǁwgA64؝`s;[Ox(_SL!~#&䓀HǸ[%f"d"|B:8r{0:DC_-Zb]lfַqYK6iq< (ׁם{tKm#S,,y2X`ϗ;c-'X,|KmTtë.Ij }KmhĒNsËqW/:m 8S-F@SVZgdO9i\,@眎{-cd-"=c@H&)#m8~d Aus/ƭXxlk [,]<~@y)'$m$cA ״/yA}|͖*Q h?;$qRL5MҞ% {O,.G'u'/mC y'22Z )'!@o5t@K#=Q7g* @hZ~c5EJ}5.ݜ rU.zLnnPV: nts8dsIm8ZLuQQm#1#$gs }lUE-;ja,=ї7۷vzv]..lOkv)"Hi @ xmF(d-mMtc$AIczd(Ez{Iq{LR1~f c<ƟOdzȪuC<u9mŻMW.YQ#K` V):aIO'ɷ g='ӐJ}K]EÒ a>[ |/8{_RSvm,tKekpcY&ZTRP"id>C#Gx}1FӦ4Y<ܖWC"-M}ݘZ[5#Za]QYƌ5.qq۴‹Wz8,QXmx{/|R45 \80rTp>hyy7#9iN/YZPdQSj$kqs3w(VVj:-HfH>qy;CIqF|IP8o1p7[SW8!F)f:y.2ή2GT Mt41`Ǡ`fzs<:gTK_tM%Uzh~hc $d;bcIT.aW0^ӱ?4PكCC1-qyʅj? ;v[e MI+s{`dsK[]ji"VA% -K`e+NKŘuᾁJ/٪vY-4kY꼃ͨ5]MOɦPN&q7<`Poč]U^dtq!^vzz>I|WD![dr31칿)m|Ll,}࡟=L2qHrWvTUM[[S#Jr\I'J:Mm֚ed:J)'݌+jM<N6/jHqc CH;z^V8M@|,hs28PO 1)욒zjUY;*-5:F1i$ -~E-FM!15/#F7 aT|QxuN=EeheVC`$q.!s[N8*|Iv3[U*4&9k6m9 cEum#.ES 1bvbX$ dm=ùn:g |N{ů۝+unm4DD;]|8qFx e|FR4]>t]'߰2fdK1%wBGu7q*vO5A*귗h1ԡ,+z#Yh@@zB; i!{/TYDTB wHM ;4!CB!a'8Dc+ŝ{{y Ez*yA8>g+ST[6iG7=ܞq]5, 4QcW2 $c_|ܓ钧Tָ8K) s~^.|<9)ڛ V'm$Rr7pL㲮fO+&y<18LSy/lZ Rg}9~n+?1w[/3@_ǡ=]>KN"y0!q*ݦ( 0Fr²)K;y,P>guvaw&:)ҳhh.iQYCpznDOnVtpcrqpq3ǦumFXK+2r9=2I#2A##gOMC*%eŖVϪ{َg.'uڴ殾$:{ej㩑Ķß4 s1M-b=G ZJY|tcjw7џEj m1\*mL@:vhh~}ɭtW#9E Ó0gKPYe&yNG tcǖS^xםA,4u l @cpr=p RgmY~ԥ8WLJ?]ݸ3[5eƒ: =,̈́sQ'%0dgND{U/Βy =ە\'<<[oνڢҺ 3kw90ށ$7%lw[jQGf=2ZoL u[!] ;q_jl5meo).8NuSxhx9sr߬4& Y9{xxBp3aswOWIwmEMe Yc`s>mkU͖][ n hn']hn BL<38LmֽF:Z:Z*X+*[#C_<kN#iG g ԟ jvٴ+$ l&v5`霜EMrduR"'nI7t'ʛU=CKN&JIs9TBF\[T)w2ZjM++.Um-5&.L;q_)7W;=tM^C2k^?)g(ij.ӾE")nDoyf Cddn\)=Ni/ղ*{}+%2>VsF#< Ku"soQA5SQ9kwZ;^LwXeߧf6^e& >@?3r8ܼ]EGs0_!.;G48$zOƻVlLK# oG5q exS]),q*_c-zu*FV5|OX|@&*Vj#^D-݁ wmHR_>F:HA6`m8'K{Ac=\f$$<(p@jEdL-oLnJ(\昚 pr};j-$2E= 60䟿hgYcWRCcw ?$ k>`NܴT':l ?5]Ou0#"f :ZMuT45Ų;p|/"Iݹ98p ]Vim5RG6ږC>f ;I@TcN[ytj5{:~;s+c@9l_/x ?z>˩'mC';KKcG:.-Ng;|E\qUm4}ΦQb09uuqFd#; 2p+-poR\b/5Nៗ'  d];|wm% ]%u~. ;qfzn0x(٤.K- |8>K޷k1Sjc 8`q TR|[ #-A0Lsqe꼽|,k; 7L2>Ćy[(X?ڭ &1=n׌ vWQ[K#8~oE|o :z2W?Ǵ=ǏӃ>\=}|:*zQ)[ Ǹd9%Tp$pn4'5j'XbgnQ<5{O bUݨYwlJAgn{?.G#>˨/dv3ȄS1nsbO*g yt9?ǷulGд% #12Hj.K&Hh% {PRi(hN:.g~ SڂI vKWs訷.q["ӆ'@psǿzr˺Yi. žM=)ܟqqp`S1Nq{UU_TdRy<#tQ xڂT;5}@I퉠2I=2 rHֽ}$@BpvN=[}-(01٘ӿeі,[&8pקtƾfAKMb02KwG2T/沢FM4qJ" 5n6灐 H^Yi&8#!8:1Nz/.ַfS[b{ HwgoU3v窵Kkw*XDsw1H7 \=3pNYrL<~fl=g1UW\#=m5?_F_TҋjY}Ux"p2]_ѹ'վ#hmB*cFkC`G|܇m9YxeOTM/Zrihk$>[d 6FI%↼3.ꚭP\tMD"cAk''VqZuJ˽uM3']J%Mxs\369tˬkQGB$&ʐi+.[mRZ'lC'Vß\I8F;᭲>FJdL|-s5 9ಓ.lgy^m o8ܯnutQUC[<-`N;|̱ޜ8g<~9P %}$t¶)Y$y`# +ڟ~1W]/kS6Y!Btm;.q9S^smTz’&D={afX0sA9yy[K%[3aSE0=oQ؃#@ZאIӋ{9{!TZK=S(SD*'denふ==SnV p2p?SeR$6FD6Hʦ$H=yu ֲGA,qk:6=MX ]MSwOC=1S]]QrZ^_$<8I*K'GA&AB@v~>BT!>B:Ѐ@}M!0}P~Bꏺ>BlA7r!ÐAZzی!~2㣢jW{ƌ^n#o-i9<'JOŖ3}*%,m7f~OyFùs22FGq[΢dUOj1KX@7hsFWǔM^z/\|P=zQ²w24pUH߾5M%D{c.qԎf 7*۵æm.X>Tr\@$c8hIV,BrD>SPyeH\;:u\ɟ%fuߎ{ʛ}«TV 8nr~]I!EJED"tTrA͵;`#c?6IZ!e5eS,^ $gu?z>TԷd46U859 ]wsrxYzm_ydJ62Z N%u즬 y p=VMMi,N١}ݤ7w78=pp>*xoO]_iܙ1!dNOCoܚ&G@-hkX\3i=EMSxs8&/݌uI@ l 'y\Ddۘ9SC3J{8=y|m[^uM"gǖ"cܮN_WO+zśME /UpԴ>kMC@ǘ7$&s<|At]-oƖ*h+It |e k|=CȺ?*u'-Q)9w^$9Y_.2iؼB> #o6MSAa{KY.3r[bO-ScK1vn: &K||7N6a'?){)doW1dnmK9c XvA{Ʒ5>2l:vB#oF3嚭#AGx?5U]æc:g$Ӏ}oz*۳YYGQQm!)caq-TA٬ܭUP:4}ca Ñ 9r O1u5M:FwQUխ# W]5OQYtŻ!պRpe116 dW5%LJݨ+)5U\aKAБ>7)tԗ:Op 1Tб(?+Ah47vxu~nO =պ)t]+";ҽaN8]]7^&֥],vYT i#zw`.C"eGl6D E9?ˌs:>*U{I+(%E1x`p1LksuW:kŞ sh{{eū7ۥ+ce841堼.1=5nv]inf9m鋤_5`4㐴eE]L/LRT: #kih:О(wxa4௣ky˧t.LddHqn8T8S8U9q /o񆎝_ƮӺ:1kH磝-FZ@p#j=3`C^k<9i1;p@]xN]-֢G1R]%îO_T lwy ˵͒S$'hpp/<h7(n{3QylMyq'9g IcqdSy"347xnAh㷭=SzRQ\Ph{#pckp>nR녝h^j+CwPp@H#IqOY%)''d7vֆ`/Z2zTsV"4)1ѵ9 2|'c%Dt]=++e/}I iϘvR ޞLZ!6 DH><U\rCEMFLTIj`.>X~\`ZŶUX*w~w F q%o˓i3X{Bq5Lk'y8p[Ԫ_m2 (jZɉs7s>\}ZXˣ5M!!۳w SvBHeK%ylnxVJ8jwjAEAQS VKcyko;r0]e ·J],.ճۤ 7 :;WiƝT٩,7Rj[̓kF\hψ4Ɗ?]+hJqsF-yO%?Y^4 6RGW[Q lV澲۪ $#0}$٫+)~g .n+X3{fop92=82G+?/bϧ5UUJk |5op-x uG߈^iyxLp.q ݼ1_]%\\~YcyHdd/`T}?>p\sMEk nѐ r>'jQp~[!ARy~hiM³U-\Gs$mV=x>3pTRPO+|L8p $0uI'*'JIh8k5'ZWj|S>٦(Gq1WHe4[Fp V9jwH. kNJaHvGy+Ơs S16oמjMqECUVoWCJ%Ul`{kwWZӐ2U]`.JD-` /` U+yn0д3TGPru_T㹦UVS@>H0}Q۪@}у~)!F0}R=SB!ߪ0}PB>BRh@w B+Qd..v Fq eY->b+P2S3ލ^2n+A3Fi I]#D {]so~Dܺ\dJO|sgy/`fA?uY; 4v-vRFHephP;1w.L"xpuh'Ϫ.sͣ.E3 콬$<ǺRV#~X$g5[c MlJK9H6wt]/F|<Mhw_2P_TEV4)_W舘Ǣ귀ܻ{U|kkf}] fTLaav9fNucnj;6{=5m,:!P-Fd/Hx5>޴AGn~l\@kZ+66;_)̦gM cO$rw?NUnL}|ΩH%=\rrs+ f3HW~>2i_BO%ke$nduq a`m k/L`o$o-q;F0:xJmZc4@-a$&cVqև `~a~V#vHy{roǂ#2H@.z*(#AF_xTWU %s['nr~aVeKHnXItS#A98H=ttR+1AtlHqu4J*WNpn fgmkM#¢ ƹA|!g 8z QY-rvJZqses-kZG9=q^I#[ to0^ܴ8\zSbӗYnP5#Hͤ77w!)Ž7.N˽鋕[$d23Q9iXZ-ㅒ_KayÇ 'DFjhʎN Ҹrܽɭs#9y$0=ZD:*,1wGq9#3zNVXh⢘4,X\@\>Q=CXL`1ya\AIqK]PcɈ7D$:,9bIss[v\ǥ++k54{SO#. cuSՒUx/'˨ƚY@icZ$?S#hAAs=ln:bZX;!UǤ2gkh$g &^='q]07"*u%y$|717i#c=ϭ>,t}eβcmeG q?A5Ƣ+mҪGZ?u!WO ns$ o>&L_ + (~A{ݒ~%[i3Y$~[ye=GxM΋C η]\*#Aqx9[|E[-w-AkC"v9kx=3;/x!y YE9-lfdMfO.#^`t^QmrKCM<9G7f$,.v9]:e;x;sg1}aK᧚&id8`POr_5Hl2ׁк\c{uzʓU-N\ z`ORƑp89\"=M~uCjns1t\7<1}/ xs}ӾJg:|FgrVM}[Ս˵ `i su} Rʪ{髪)rA nC 8<'=ƗRC4 •X ""auEHI3<ϵ7凳,'~+t߄mOK V~&Xe`. 3.p;4rņxh䨫stgkNpu,4&cO%cF#4s%_Kez&yh&`1rr>_^mCSWTD2Sǹo1I rx5-EVLݲ@ Q`4q (-⩷Eg\0d>__e>${:M%ZDk9?鑎=ԯkA M<6yɩKߛیz/M3Dr oy.ps@cA,H@iwH,&}6K}~j+]/2;5CA ~ǏDܵz|++t2?Dtrm>fߘt8' /zi4 L4t:F~Oq>^<~.;w -,PSDOPK}W'|_xIshua~v&m5Lw8>PW~$,:4!8M􌭪c\g|yi m!(̶u4 vXN&9$p&>v?ɝ~},~=h-SkI[OO+lO5#1+ߧ oħV \ ؛KjfV40Y$ NJW_YFakc׃ŇNY\km]KYPH&Ve>?|T~ҵn٥{⎬#p3A+mpֶ+}Β_p\AN{v=իuATE,ch{zV[ە>tXp${ i3 ~wܝR\u~C[(p>𵷻[eUe3|bC=0B ~| I΢KV2i?kۀ>l9]dZ]U<9<9;wL8QME vLі% 5A0cxnmTXOWNoqyZv[Px-JZ50c3ֱބv4WYG{[ns7 <2ִy#Ԭ&vkqꦚ&GPu ª:v\#.'9Wt0G9ǚZׁ-n8˶KHޢv3i+o6+ZإlRm1~sWt-Qe,64 dg7)yq\K&TOEjiۇ9x]-?MgZ>IKGT&x۝ܒzvuc Zp0r}.Y_Eboԗ:Sv"v\?i Bh4E=֚yt@ doIzz'^M5:JɊ.`8n',v CC ̅G#6jVWܟslCd5ăӮx걼qe5 7t]uͲFT2(d#;w- 9]6ⶖQ;[kc7HK~WLacs?+Lllu$yrys \2eܺ}Rȫi`eGnHg u#uqY+5,x~gKum? <Q<:[uvu4 ;rO@8빧=^Է,ڕ嶨k Όw7(tT5i\ )-N=ݶσ-uT0U40Gw@n뒼+pj j VTatC%x'$RGov_N_=<1erZAش/~'zT+& @'=|ㄓżs{]Zɣ#644:tԌ{-2QV`+<׻mf)6fc>S+ &0Ldك?84E%e5 ު*Yu5MҔ[79m򱵎=/w}>I8XlLo24n ; o9OﶋEU /s6wOn#$i]Cq%iiL=U>qˀvx=y ßˋ,{r '8kk#0;&l)kH` g9ymQOkB$K1:QsWҿO-kΝ̪h ťa9ph9mەd.ό @C[s;sY/NߏoltV΍QɆ98ϱ^[U5KO%--1oq{.#/./.tt:*ZAҸRVj1 QZ9dt%q9?#r aǕ_FxK߭=hmUYz{F[jt[t5sw9،B>|Ui{m/^_Q\v<;ZAf`>xee~=WSD袪.s6kpU/tޠԷj;e [+&lH䏔d{Wfyk crQ;Χ׻]wjӌw dİS$:LJ|`s6q<|.t,xkO.h98=Aj}on|4 3HzNO/ T:Oxq('hHԃ^okWWvT].Sr =5,@<\wÖ^UuwCkmU®(iI֜z} _Xhlmt.QCN*Kb~wgòK7 uw!m:*yo/t ^ ^1_+5$c%_*ܒ 81 0%ˤkQZjWze|& *TD-s~qU.u*uDϒG$c+ bc#5{kZђITKՓPܩ[=S^,{|kA+\?]>X!LN2H>[u&~JcuVMIs {x#"3a^yҼ$]h'0۪Si`-ÃZy pHj|zOnMGrS^7q5O^$|3[憩IFMX,y 023\fRoQ0ch45T5Mг7xǚ[H+Y ,gK@کXic;)m$?##{[\)eAkb۲0OKjoTQ d? cWLͲՈѱ[}!5D؎ӏgq{kZ&7s^k'.ݩ]SA,IS81ǒCK9Qm))eZh s0O9#6 ΚIMd=vr]'Vv}-4R LPg+vpv`$.]-P־CSkmK*$y5\?)vq<`KŦ@٘d5r2?'۾LFy}6v־yy ˲qǧR3|n\3sX2Qp#I;같ozO,J% \ӶKTA=<{n=ZZ/7 d yCKC\0;~dg+k; 7kt`Z$uU{KM hC,rFPH#$h-$22FWgrjzoCi):nj۩璺I$os ys+Z7;~ ΎI5ʞ62HČy˿'dJKnPY3 {"d@f9/s}PkLznAH4MIs!kOߘo3^XI|s;8GWAdqpsQŸƹpl:;i[q潳S;rC6u_?Pn ̿~Eg8nñ:uY`{Z'Ųd;oLzqɔ,YzV9e/xPpZd?1̓Lx =U[-7 u rCEW;f׈t,`w}9Lv]:4լX;ۆ}Ŀi}Cš)jtO$5q 1qK,s2Y^c@o5}{tzl {O+E]:e٪nR =F / ~Zʡ# 5Mj 筎2Fc˓mܾ0h  @ii$q#]N?WIc>;mR-IH.]cC$C^3cݼ9OP tg8[5ϖ_2w0G.s1#]},Jh.|,s29]# x)ϊw=auL=Nnz7neC60Ik Nåm^jtꖮYcmGq!v@,#kMK˨/v[䣙׈yKDq=pF0\jG5qXo7iN׾&PSh_Q$xcUGMG;6s0? 'ÎJkoOY]᷇:ɩw)IaDX 8\qctc珺V 4i-.=Ud,bk2yOgq}ZQ=yuS77d`tcaZ*Gdis:8\s\\rKI>z[aw.y%Y]|GES{jtMo23OhŢsm>:R;_%^9%#Dyg"][CIC=mDTK$tP9vp9]Yau^7jOwflGOK%ڙ 88iW55pòO&!F&7;蘈8¼ڀ{snփTTqmR2{} UCai0 C@适U%诨-6.?Io,_˜wVAy*H=Yu(Gt+,D i(v@eB=Q#@S)zQ#B?T@)zd@ge2!B"p =VMAAUW$Uy#1=Yr~;6_?i2MBZ6 >mJij9/'_ZcCÂ#.&cH :8jkE6 }-$$!$z~(ӌrx]KO 12wᤏuxgN$mXt4`$U>5+kOt7Nim`Psp0МE>@c5$\\2Mg[5%*3$2O ?;_+>Jmy>Ay9/% vKS,;S|^,w y/ΙxeU-;V;sׯEǮaJYG1kvZJ"-lsDq4n{eړIֆ_K+\יC@coi.r8#8?=_k\f_8&s- fPrqש)5VՖTmQc^ߑ9nVʛEdqgPzp{uiUk畀v6B8~<|ug!7YoPKq [{4Oddh1TtsCU%L晐RL?:,=F=xɎ&x>v3]F}/uUۨ냣E8ԮnpsKvvsgutL:E+4 ZgyW0{Wto}4rȺA?LZ2eVS<$qq5NYvZ;ht;0?PTٯgF6F|TM%NO'LΊQxIMYcdW^de 捭8$?(piJ =;0m;  0u⦦۞|msK2# ~^.Ӷ_MKN:zf%7';N0u97z9}7JxCMQ'J)6\b85$ao p #W]m-dPϓy}eQSS7F; {1Ҽ8[td꺍JCKGQ0K̒ :.US5vUjו8kE[ˤ';Ks`.CG C/Ok|:`2~n#m:+dn+-O-1#NI=.S./^?j9.0%Lvl-wgq$]~E:h⬬H({*Maqp5`9~46aWeei`c?7Mt(:W⢢~wZcm\2uݏ&8o g˹Ҋo/$h$2H̀0Oc]Vߠt>_uU~sRfxdcdaas샖#Qx9l1WYq2Kb= F:}rJAfZ$dfiv1 ;sZqɏ|m\oaՔt.E G]Xi0>`@3ײuGY( Ix ~v`}3p%nf% ^jSSI -Py{ qգ=8c)uUrkyMmrA8Ϫxښ2y 戫D!An0 <:k NHl=;# 띦owF\ :OF0^DCjA/z:Wj[UΒBzy\~^{ֿŻ-CoYZ66Pї9Fy!gV zKU$ ;y_>S^ƜnyAp b4ΦjMEΦF4.0s>W`:*)7WR~SZ{҂GRտv1^%|(PiΌ˝,+Y[&3{87m UG]+rit,ΖjyrKD#dv:]1KB+ƐUG$ՐjjS2zh59~`0H#%qJnv;<βEKCeel[s0="ZzP v8;wA$ xOsgN*4%e}=G\C i# nsrH謁=uMI Am`kilu gn軽d]aUM%|r9AqϮW&~ g1|vqԽ:v Z׶IzH湓=(o#A~Oo.i5+am\8AS]&t3N- Ʈ#"kK9=2XN:qN[RH3_ <4q;юYzɝ[vHӸUK1Ck&HWۆfx F ,]!JG4Adzkj.0nyZo3Ϸ+Mu~ݫb.yqԎ+QeSN\\pODgL\}G׫k$[fA8{Gzh*Nޯ\/bk32yCnA'k0#8Š{% #{e;^ǻkOֆڿ'վ ('%= msTi$8zg^֗GU$bc ny Xp7]:eyө)hKM+GKc8Mch(mƟ/dCqc$s08``?Ǩ /ha| kSula4vQ閗.wD- .sq]ծeӺf(ESP:R$;ٍ<8;tm1>eT{i_yeh- 8Hxg7z DW jt,vN$q䎠4)EEnivYW:I8>+2VtKi10껳%dͨ^*}P0'}ߥrSy97?50ۤU:@ܰF#%qSlXMKTJ09ϯ[>[)wk?t 򚛕dCֿcF0:I7gIy@hW:"t߉yspZuҳȴӲn9>lcנ?u>76wZo}UESC R಍7t8 rBr%DϚi,8<丞({,GIK\Ip||xg9<]3xUk놤h-:#K*Ek3 ?ㅟ3˰G;e߁}ZfI\,2@ݮkѡ;=NN_W6ZX$/JG)qdr;py\Su=UE:=IFgTI,s%18p:o>{msmm;q H8ssI}sk7L _k|)ITz[<)<5#蹆ujyִ˥5Q4? sKǖܜ`zS~ NS}6F5ƺcNֆ&69=F!>%uf~lz TuCcĒFO#`YEm:^t[.Ur2jV4<`2L􅠏UT>yjdL.<rORy$)py{V9LZB?T@)zd@ge2!B(@eB#g3jG'QU7 sQúcぅOwpy.gTILx;;.~^lՎ<1ǿ|GkZ)-yMt;+xWw6VQ+\ ||A_:~֤ESQjU5 qiÇi'ޠvۯpK{jcWX%h018W2y91ޙ׊K3&y川's=iun#fFL3H֜׸<-snLTMn|>RΝbGVv#~v [*{7:fK*wIB~xe-pEB%6>A acEnDs']-=7XCI†XvIlRYn$}FCsL;C Tm8# Ã':ekI6pl .͑qG^wӺ}e%WQKGK櫙,Cru|z_}d:i[ adS4N21tR<YևP>9#ݏL,Y6{ՌJچ@k\0BLdw@cuY29x A-d7h7OWp屣"pGU3,2MFi͡[~e##xdu ڞx|/ڸ.˩| wne=`xSᅺrj٨^h_ҸֺKZqv8  .!~IlGS5TCv\\d!9㓑–uUU^nՕ.uD2Ֆ1ll˶nLcAĻ\n 6O`:KOW% )|4ɴ: !.| ٌ>^ޙ. s]vgP.:XC!8󖆵ӁFj+ᑭs8<@|R9̖I#a̓ٸ:uk|xq%;.'8T<3cY`Ԕ{>u}+4q.ry>ĻYhkE] ' fK?2^ڌKPjC]-qq̄|,I㦉t8>Et qqE6R0qӌ7/Lkuu%odq_Óp2]uMvZy)i%Ǘq|DI;H䒟;ϗz'RD 0Gta, ;(P@@,# K OK =Q%K ?T"tTar2a,"tTx@!KK  qdkFPSxFF@ 8bBX6n89R+M,B ÅfWˣދy=njdhXٛKcQK'l^UDUf-'Em=lBny{ NQZ '=Z|X"@9[A%=dr>I 9 zs?PG&US2ї7u.TjKc5e`iŠmnNv3rfuN[$Y#0l~crI6W1sH6F9#$nw|oQrq>8 ,ei9p['30g{w ~cM/ 4,pUQ%4'匇5 N2vrۛ drp}q@:dWVH-opnBvJCo9nW)a߅+vmlOT5X3S~S=CKuϋdi088= ˍ5TK%%i.T>g\װ 9$:* 0dLOS"`$pO졺wTiXMi #:znEJ$4ܸۧ\y&Rw?o.9quUWBi= jbԔqSJ|א쎽[*]uU+K{}P\t}2l[B衕!!s?eKɆ\|zǥNh襭fj/:X7np|GNkZG!jj,T{a2\gywP9Z})h+|{2<ֱfS6Hd0I Ƀcxr?ԨNշUemOA8kc?ӐaACQ0I<:G/27׀z./&;r㾣RDj*aGBww9pXEi0$HG:`ruVIODCm9*6 D.M.f-xe`Z~8MI4]8R}2=L ze&2>b/.92W汽jcx{Ww5^ RO[Q#@-kh'n8 𺞂~FZ2[pʄyqh{;V_3Rw4#`oeߗz7k)﷾,̕`N2~f`~?g%gӑk?=&%ֺ6SQ1J.p]4|4#7E=D6-v;1}4,u#\Z[2GBwv[<ʗuu†|HKN9c89Uߗpo-;>Z$me nݥđF,kD[mD2 ܁ϷU//_EWtlSGis[h>Pr:.CQ:[2x#kNK_v=ɩ2/O5wKnsk%#)^d`o<..5WRkGجSRgC]U%O~i(-@"6f21À}~~ fèc@dUKLNeҜ57kgIcϗ%fr< y^vw>]rwV#e%%U5vs(j,y>T#HWI- LO79CGb $pCd<0\c/i/ V{w | F7펋erc:ssc1s߼XuK905w~AqsϺ GIW cl~A$iKGǧk*i5=+pF 1Q WIqZdyr@\w<6)F><\x}:esMȥ&[lN0$wb%50}Z݈0ɹ{};H]&=0+Q֚Sʺ.*%t$LNx wl'x KencIi$:E5Ehie7:Ǹ\ci=Oߪ=Q8t􌍿3h衵S0ܢ { ?6?=hC 14Fo1ׇ<ʉKq|4 Ek uZJJ:w+.4Hyi ^IqVgPk*JwQPaBZ`g.Obl47)`P]*)j;=0su$)zՖgޝzZkLsTEMmZzpoqUQ^_`K TT5sK6@ 4Ǖ_ZRKYhRWMn!sצ9 u?DU:ZJIA2'9i+Ǔ痔74eułKueeT@_}8[[eG:Wa{.$V~ m-KAK*j D_kqZR}2I+럈 Gn %˂]"'~PpAۿ.8O2o4#'mMif$5w:{šZs]{pBKւ1<5]yD\ _-O#bќF~o[ٽJ`c zsy/N8/ZSzmdOG-Ҫ,WQiN1#91]5KCUDb7yҷnw[Rh9*Bh{h;]4F9g51?razɾ\x~s:)魶*,T8 72~Q{k=XC$HAGHrI=\O Wauh%1v9>˶^u},ZzT2J֑希niT}4Py!\{c&kcMl1RD-H.:ERSؤi&7kC?L~m%Ӵ:FU[d/ rqzs9F@s28s;&.qaF'lcPCN~)+,eK)io$׮T=ގ[q1R{y<nuƆUdA Ć gžLy2(a3mTnw@V] Df5}>m>RMZB!|F8$=µOn[;%$.kzW(;̌sçCFr!qʖI9V8\玫il|N nnw+.$aMi&ůD~=r>Kj['+]c9䱍.y赒!M@fHi`GnYWY `@GoeGK,6;V(Ւ9AJUxp754Yi{]FI$ui?dA#i1y8Ϻ^ʗ94̚PqK&=to*Y,6TrXֽ14X2Z%yOyV?Dq9lG|M!Viʶ2^F~K&|{Edܩ.t8uGFd\$OEEGn|/px}cG?V7ڄtϥtS ߷yj_%AB=UzutϒZZ6y=NG>󤎔 v9W\_l.VƫsskZpߨ jړ~g:{LlRIU岞7J罥X9:eE2YpɃcOL*[#._;λdQZX@4zj *Pao{SP'\H;Pl*wSA!;LYu}0V6 zxF`9=z(2XמI=J0qa0\YyczOV4zjy{͞Lmco!ת׻*փ#!ĐrAvGsX{jkYR e;.{`o$u.c^wg,N,lޞ:ke[^dm``ęن@=WGxfM57+mDsqˆ @fS}TVQF<31{zқNsS!瑑#q9vXߍ{G/6^G{xi#/`$F7ksW|o}t=̌0]6hVT[޻ ]DV-]ܒsuV%}=#ESwg]:HXx1~.S34j RU-qrAK08;-AtH$cce1{y:sx{~L&opU>Q;^}JS,ȕk>/?Ux"WyT6w]3Jk|qK {Xgp}2K~W ]\79^ 9qҗYϥյA 3G85鴻.onzxiozML%Yt{H=O<*?b>?dT0H[+sBIdy_|Jes #00==Il4ɸ+zLZI>XUot`<Տy, k3̶#u<eRyʦc4oK/|N~ЅniDDlv^U~W ԓX*)<Н<J+Z<13ӎT)ak 0;ުOͩi;fr@#$Y#ϒHH[# Ϙ8# 6XR~QV=[8H~R>OV^1z[ej) c O_cI$M+q ![Q$F`U}ylt̞"&Ѹr:8,dR}ZԶs$5pG~u֚ic`tdmp逦V*pPGM4zsQ]dqt'c\&uUCf;.:,Sn`82c k]\sBi+gl4w;XQEB"sLcˇTH!n 89dta7ZΩk{d$`a'S 5 Is녑kYsM7^ ?>Uv-kdaךjcqc#.?EjGW[eT:^ s2f r*lR]UWQ#ik]ٖW~QDzZ ȞSskԲ67n/<W :&Pɿ "dQ'Wo<٬S<|mh Ç츷= JH큍skFDdT>O?h/Ԟfȗ8s݌nq0gu, ٔqXVz6F4N'/̧Qأ<iK[IBxO"L9Ԁ4;啇Ǟ:JKsCOT;Xr0I:c{]Y IKwX46zxByp2x_nGEBdBidF3'OeږY-;jqōa< .UWFE+p9$FzϏ?/1ONO ~*ȨnO˹r26-$>W%R@ֱO-sv6dARҚ`뙴֥e3+ |i.xM~ٵ jxpL#; ƜVgeiԣcX;Zv{;#w=9S&i˕ku4}3<{;^]'EZ-aS?wհSSIv8z88c'ߊX[ukuU`5 cݗb7 o@8]| ?\ZƾjgQhR$^%3[hi;]玅x73^ҿJUJ  .tтK\][ uD5WI4#l4asN~Z>T-GM3vI+\z;Aq˥s`HH[3Y}.&QZ[>?_etP12 o@2T-_#ÄCZ1GP<0^R/ݶZ[6 A p7i) $I':֠PQş[nuj`.l[یCv\{;R|.Yv󞃹oՔ+N0 tu+\Zj᣶TjZIn2H;ʚTx-zQV=B_DX"1䱲gx.񓂽#x~~ݫ4EsxS^mͨ9q`x_N92YYCr+gmm5-#tL$e<`s O}m\RTHf{rI_C@jaAYWEM=J#%]k$`aqyBJ~䡮#{xsܘqqer0FNO--44#]kHieqkoCtSU6Nsz݂ZU d N[mLb<`]J+[5Qη. {q)y?G}/cD-*.pYUQ=Dp#$F}BPܥk{e8;cYDjcH?(TFsc߮H챿2c,/M8$>VYK{KmX7G2RDˍE -AdYZ#~S>JK=ʼy!dMf^2{ mUB r9RqM;%.j\"xmlT>ZyĦGKs>G, 댟P.0妢tm m$q`Z; ;@$" mi/rpLkWH4vgIp52N!Χ#Gd79k5fjh Z襍݆=B76Q_2ۜc뀠:Nu~l,OcsϢ9utv ML\o:y8xfFaltM?ϞGlC_Abm,S-~6qp a--y[6;Nj ?(CO2hܜրN f5ė7p)E2\cDY ı c=VIpi]$?ZLp6 /Y1;}٦nw3 {v3I`cǖILZ罬n \cւJ¨SYs-3 't9t[mMlmDU|c%9 yus}G/A5[ր*%7= ӏuH6h.lylnK?${p8Y[fӐV\䉱GWla4v!sZWCUvrc4?9;wL+XI!4Fv,Ivr@w=yȳZԺ5͑#s N]A-6M ˅Cǐڇ~l99Z3zy +[O7:Mr,vԋ-4Wi"B7_WE-Ή3.eSyM$ F1v:<^]S3$2oUR11- {`Lx4u+%F#I=v{/1Պ[uU>Q1*w3ì FVeōSotWl$p,#8>_‚6YI2GG=G!V֑RTOF\ӇrG;A'=r!-fSU[)KèKX31\ӫ,6}yM[RM[]8JEdr8ƴ ~g$FN=Fʦ r<#2~W5U}U+&  s\Iߩ\juLnn*^E&?}pDzy*%7SSoWw'=z--\e3i.sz-K.-tO0wNA8\c;kkMRA屜f'dڊJsT2[TRch.:{xW_) 0%3a57~!-ss9݆>sZ) iq- ԰97uaZa]џ*Y| ׸ *g9j&3 E]W;;'l,8?^TJ7ʵq'x kmP7.Vk-U36Ix;)=w,ƳTMt`,w,j?mM-y*mf܎9H6KOzZ{+eY& CG$᠌J>ٔx ,u;Pn˖f8I89<7<I<2=W?:.KY^)H}uDpp1v@y|Mƾ)ov:t&L؝{ml}S._khkNeu|L5T仺4#.#z ^S(#D@tHDB8B wB88@!!Ǣ# G~B=QǢ t M.1:4I @vB;.wOGtd#G (A肀)2 H O;BH'G`Bh)*I[{3qz4裇N .^#ۺ= nS$Fڦ@[`22^gkX@IC&<=^2@kg\upϩg?TTpH;9=UڋEV#D2#PmkS ?acX 9 p4taX3yt9=2Zeu.Y5;-5WR hs~v4lGC 4t!o,ܮU3Qc-$w'0 krUl8qۧkvui=9XUMkO\w!8VŰ=͸q4ǩWk\pF=Hgtx}1> ߙt>dL.٣M3|3_4`wuHN`s$uŸrBR~Pqʾ84QU7,q*͌io$ ETN(KCýs&bk׹2_6G _!ߧ=F8H?=9cánTOH?˝wEt*>ėl.q˽FOuSWۖ8T[{[KUq0='̐m\sG+p.pչyk8##V%SI+7tlz+㎢-l%s#Z:HccLBfhֿ ւHdtQq۝㺿fH; q瑅<)KT@f-v2^4.bҹA9eݺ Ŏme/aod l"<&\4kU9&{C[.W e㨙dA889W{жTPneΪf;̒6`oH=~eύaLJqi_Vϙ dA;#k}pB;xZHs,kVbx4R2# NgX|Q N?(<~UݫOPc"I :g1clFT:]*K#=x[]Euf˽֢l'9<+CDž+;U SLb{9i._⦷PS\*/1۠m26ܞ=I\4!Q[Zf˝w\'I&_9kHWq|iL5qс؁~}Tzc5m|llc\IsZN7}9ƒUM[Q$i9|9s+ > l|[:iǼt1e4C;#78cğu6ѷB2JBðwcSU%Ti`h?RRLko;>Yr[s8_%5Da6= @׶"эykAT;$nH -p}BCexdp#ӶTLpnWuB8uu#+< )橾`C e[-JGN ~R[#+{ORO4 ;?o}N)6Ktxn4sZJݽu5Lti# p=B2]%}%N9^iS4;>c6|+t1sN 18XvKEKM׉XI h.wß)7/~/=UX_kк%I, obfsĵn0A<_ T[%EFe25l8݌d bnO[jn[*Y1hs29+IwP ?0EU50U2!`0p3]Nk+)N^KW%JWcZ2wnq$IϪꯇ VgӚKWCo^I?I| ;mDtn E̍V98tNU<OB=qSG%V{o-|2SPYJbdeG\}:;w|A/>S3wlO^ִq#`'QE=cĮClv,%uc{46wBhKqW~Y#TD]\{enj58ҿqq)qVt ~XrANO `?r> B漏=PX_Si\FT{΂k[|UtsCѻ8'МB>PUvf/p_$|ߕ#4΂3&VNj$p Z;w\SxԢ핷GXhGT5oa Ũ$,(&f'nH,s:z pt׊*+oc-BQ٩௞V`akI5ܸrH)gO-Z`lGFlq8-x8E 9ей0ƽ8rxFqbo{{“ ncz8¦D@mY˖aŎZ--ocѮ 989<--Ž?I$i wK_ۗ9‚TC,uմ^>gUҊEn4TtOwFg |qcKo%3Xi@0'vǶTO]f $|UeFG%i Q5,T?}EXGAsey.ߍILz)zkGQiŎPYu<)*$`ZG9\{u^i]ᥩa/}Tq⍸ [KEr=A1S!{2FrHB֗[kdm5gc\ OQ˟efxOmc/cr#8Ek`1N78ue[Sw  Yx}{hk doCA᧮pBc[+ qs\NI#> cqL{(ݺ+2J]B2XXc#Nh=}S;n9"{Q8kKÚy\9o5tJ(<ܜ9Z5E|/RG70A!Ui|/'Q<߹nϰU 2LQez*]Õ^N{󑂱+_3 ''ƠS[;Y5#`a'PG#[DGINԫIaֺd1AI"P|d04zR]Z8ǖӟUY{\͆ u[*`|>k#<2˾ʪ! }VɈҙ^ϒN\0 ?Ez{lrDL5<.HosRumS-n]ZP*I`ycidgVw]NG-!iN\ZQQd꧂Lop8믃.,n\#.\gM%D:GK䕁++˜<Ҿlfdcv[ 慻O+9׳kVM.+B7= {hkesI^}~7Q95#gl(;8uw㑞"YrƆ (GIS%;w [+$.k^q#H.oQ>.yIF-t~\L&W8dcT60dQyI&?Dfv1N^Ap^dqZYkq:h)rY>&ÌN}RD16mv\b/&~O,˩mcfէ![J NnMamZvm1;%%Omݝ}5,0xp2K4@?(d~K]vDʪ-dqU< H$``sߦyY.2&]ϥc f1ߪmAe}0Xvq=35R-lPnOI?rV9`1d`<>YYzj}К,((@ 3SH 3& (;J2R4}ў twM3 UQoFB%IR릴I+N|w-[K\$f8=qw'M.8"?YkD!'_9s^`8Yv;HHf]+p ܮIw6GQ;d8~R:rxeWxcw:Bu[]AVF_a9O[Y0f1-=zWD4AG n>Go OUOC=]h#;coU֪IChLei s5Sol|F9h/ӽiw;=wm2W?V ua-ƿʞ%΁ZJK9s^׋< G2&RC݂/`7 ̍g{MKdco-Ke_um]zn͂2.I‖Fv;8UuW&Yb>2F3Ԯqr眬 W68;=8Ϫ^Đzsj;)B٪ |7!؅m eFKS#1|o48GoQ_4~fMLh쁷rljtcqs~Tm|fpr߱XIkNԟSꩤ]yČ!f z*jha`}U-,R 317$,#-5{T~KO(N}Kr+o&mih;p^@TSjc8}}VW&|߂lcq'GI^*;`x=B[~cװU6'ԪtMZY,dw@vF} e2}M&=Ѹ9-pATe/MJ2ϺM Ϻ2 /3H (( HFxB; 3wM3 s4c $#>a4Ag,1$gB e8ٽnks%@@ #2!t!4#z&WT:Gc's/z|i?mgA*3AQYuɱaG nI]^uG QGO0W;ӐZ{wCW0q{pȢ }$)_/1\{׭m)FFqV۩_&rT {-={,AnA'Q4\R+;mdT`ǘ$/?;71a\c+9c'>VƎKmxٓܿ=PG |H {}Fǟ6B,mj6= [u'#Nݍ#<-%ޤeݩ#1 # kF8$9U]YCsl5qUGݒ hbHzcCysevĹQZ((cIw9U}٫i꣯7Q+G-#wW#u3}"a.ۍ+[ FLLd^_'lg'[|zPhi/vjtgK GppVy+C,Ֆ˩c|-spG>|'i+r{qk-Jؑo"\yu߷~\:w+gJU~iOlѓ쵮9i-WS)n]˫}AK%KS.>ީnMn1͌/R&m-<%ݩC$V:q\8CKHZcZ>Q/_a˗:{<{ᮥƾRڥR> fkN iTdt_]5F:EMői''亳{ݚ5o18TglQx?[9g\ex_.Q ݬ#1k4SLs܅_ti)Z=6g47pp?y.m񹰛%Yk53aU[p|N#xux4>xn!p=z]YqRG5e5чVݞ|-u\II/Gqo#;-]TPeF3u^haڭ%T>xEA`nC\y" utS1S9ıׂ9Ospb[DJ65@ Stq|s6b6l/smΙeac;]E{]넒Q摎Hr?BIK)%m8#HHO[jPbx%͑p:XQSn/{g*3xi'doL4\=Ҳi l۩ 뎁Yc+wҷYP~QU>ъfF231wSꤾO%t iFޤYU:˦'s,njv:[n&fi?qß)e<|lumgYk %3sI/ `s~2ձ39l)t)ST]:`9-uSF 0k9״T@lnr}yS6=mklMU3_8-iQ nu8HXzсnH1W'T7kp֎h8I43O~Bۀ?]8reYrN>*m9iMX_ۆ׾ Cp \<8YHO13vkA_Sx{pl;]]dul.= >6^5QY4T4z0孞ŕ- #v_#+ei>]6m|<&7UI!qo&1-`=TBWSM#<$g`cno(M8Z㒢dӂ"&`%l4.=:sx'1e!l67Z<-g99* ӫjeuP?vb֊fež?S=9;-A8>ϧ't0H%S7`~y'ぅ&Yzo1MUCF@ÎRsu[ZۃC!tL{!7_ע(!V\1#9.88JuۭA[宂3'5.8 7=Hdo,YuմTDG5Wr\*h$P$R?h/QRa_FypoS; w \1W:[-}/i ;}|O_վZR޵k5-ނIW0>WeA8:*(&l1G^?EzUuMpa||=ĎCo7GEESQP5RT\mlf?]6,%m /gmr3v_\:dҟԐG_e}m6BO8kݗ0#մ&ea=XAf@ی{+xnՕQ ]n0U? yNo0@qqpw ˒_}7.pOZԎO?X"QQQR?5m] ƇK3gǺMe5{%!=[lz*N-N,`Ji*"n%cɖg$8P9 h$-~ԷHh* ﮍqzOZk_X`l:\ϝpA>Z.#V,8QYAKpM; kA#S3 U+n{2GQM А[8:M殒gbH^[8wcg<|.<yUi#eC[ɝS`^ίvˎ䅻Z>ʈ \8;g 8ㅤ.jt{*<#y}GTDlƠ0=Q9Y-Dqn̈́=]3R\|TůcH?3_NyU_Ȣ-^aTOXO31V)z||0+U?gBhI=EIPAta.@Gd}ЎYF}ANzc $eMYKM$QPTg#4T&K9>)?T2Q%}є}?De>@єey, }쌠_tFQG<(=F8Le'A}ю@}FQ/yFQ%t}2?T钌  Q#yFx@韪2XGA[y+O.lJ]'*>vAl-}ס7mp=WfcZrm$-{3I9>eyfUr=IU4&ߕ6{˥m[KO ?v^B!w软 9Mt)w_t2vs(<(Ǻ>@_tFQt(G<< _tFP,{Q>g}ByK<>eXGJhk ]~%GBʮ[|U |0ǡjJʘai^7NQ2n^wm5E +fZ$/l$v9UoKַCl[gJm\z4{cWQn J(&cF\[p[_GˎM cV߆kOUU_*d_+mZ6Z)d9&gv{_!e'ˎ\~<ܖ n. 4[ WĆ2ËIs ]X[#4B1>[: % lͮ# ˗OW;֝ӒSQ0Fw. `7V'QнѵҖe01H!H@m@,deRH=$ß'+җ bʇk>m㝤z™6=ݓDt&IIcs[z"j8$0Ù$$s칲=g&:(Yx㝃W 7 <*7{50IOL6 % _#o%w;];=p}F?Q`k$hk@q珦z-Lq48=( msב6jdX֞q=cqQUT& =Kgl1 P"1wsCKri`l#= \^k՟JG MaJK2̓ݱH@%h|O s|InMk -{y9qKRm ^Y٧줵Ѱ68Ny.y<8I䒦y%qhkG hG: +\gNGY;Ğ?v$I)}s|jNpd~W}c' T?'ǡYjꭺ؛=5A \F7-OUMCddqQV89BIiJwN<p\eQ)|7v0g2rs۾њ/Ŷ^]ES CKAB:kUյ4u20凳=tJT1ᬍIPyûmuDqX_1xcg .Lqf{i-2OU|5O$1GZb8=pՔL[-5:7=8-Ήq=JP{ ^梈Fq9s'Է럅'QSP}M#-K 5m~pk7|9{֟lC;sdmBLw%sgw渟̞.W eVG=eVRSM!Me[%jw:f叒o7A>>;'v/.UyƒwCO8#_趶(oT;h18eMY3O O"pAˊ<ُ[m4Q1)D\}IUK,drQA0r}߳2Uq:91ǰ<e; np8 rI )a9ó2:WNLܜw)-S{Hd=N?E-jzO9;>SOH%'!d=,.$uigޞZ WhQ tduiBĮ-s5^A2:IKT=Ŏ[g;AZ}G &\A⦋G#" x8V픞lѝy8˗+^XrIʢ0^#h{Z`_B{VQSViȎav3owUmqsveD>?µw%$cx羝?l2뤪:ffHCL O ;p{LqS$f:?Z,GuԐ|SS J48V`4po/l17gwwۢ|?^~$MP*YPL#}_ĵ,<6( =\}TP 5{ip{n{ZKީV E3Y]VƖ [s8 q+2f(sR|Dߌwj% /srzTHYK%U~]D nrKOe6&15[yzp\ MMSO. @a>{$iW0q4%1p <OZY-T$X?ꯏ,ޘr+pXja/d08 B*))E?$F|u;2CX0[䦩xsdc>B&~7O>j)_kzt+8% I%hr ujO62>th-28<{|h&VG!{kAIq鵧 rMW^9OHk/ 5#M[FԎ_1=X9QmMyGQL]p. ^2Z]!U$Č|381w]7ƑTisUCy@G\\Z00:p|wk{)lu=k& mbAV8ւ$LoF4N?*蠳jK ~Xd tL,o,y0N^kLb?8ò=2z?..L=VUQZnۥo&uYkA{w 0rA]v~-"z$S%Cxk%-MQV٫UpAlt`h ާn,;-PN8R:0t4k$b]MWZW,Q߫Yt8+_R|ɢ|k#`cs .$l|n/K}. 6VUщ))n-<Ào'<7TA4zYIw:Ih MS=+yUDNpxipwPHNy-7 гjuS[C w1Ÿ|ޅD5]Kjਛ̒$tp 5kUSճ|+d6c֐IyꋕTT1YˉF#A5TSOktt[&lnp˻`lLsG)i~󍃶8¯6FrqY[I#L1suG>qp>[, $\kMhcr(z(gx.>*rn=/n5@斴?VmKK,&gcBw={VĐD$dnf}x 9=sWǿ9ffRtU5MW笉q܁{(ZyN8-̝])41I4n&V9u*%MK,yi[_ -lRtgac]RI[&CR-=bͬXHp}z(T" t{:U&{gk3)2Wne4w!1ɹ`8h>꼷ŷMWqfpk{.r4=ujO7pI+L^8rO96w;7F9T8K)9\~\Z sw[-ayY H0K\޸9U[g[?>Z*/d(Ǻ:(O($韪2XGvC&w=3\G<_U(-:Z*-!ihmx \-]u֪A!nDZtrÇ>_x<gj+61pKrq:8cxOp~Ir3R9.cfGCw랫2bbѼ2|x۽m/zhm7qk,R4>I^_#\Ibp2C d.ZӤ8~GY+4uKiU[1U_imH'wB +3^Te{(q1iڒ &ݠ@긱[#}vF8vv/+{<h[&JG\O#'ݏ.c-#'p1]X뼰iCi~\ӵgS8\iպJ [_%[I~ן=]VܼOɎ+$Xߓ<דUiL)yo=W;SU4MK9 ۩)3ͻc>5?g -y$o?7:4yX;9oWkZ(jL-4pIUEteݸp}GGX+Dі>1l }ڦ 13T 9M5̲9k{( ۗ㌏V-HHFdgN>95sJ?-Kf|_$ 52AQYj=`vnoe+ni;OES+Li[̲Xu6z i[QnJq@1.Uꪠ6QF6J.sGӁvW<4joRҟ&Zaddlf-N0OUՎ,esgu{t{nO_[S+ 'fGSK22FQ;bpk9+Cc녲&vJX \֗toЅ"[O$2;v~LK1S?8#q]|yY.m+5յ* uv ..vt .sAnղO1w]ct!|2rs껳_N=ju /sioSVwRpK:&8,g[{bkN6u"@ _ùQjVH C4n0TumհTȼ ᅱf Z$k\D*nY\GUR啣WMUE JG>lF4$qi-# 7CRc1#OrzяSsUmQRӺb {Ý-cC #i }M G4gMm89#+}(}=\bt^<#r opA<-=]fkYG;ބr[dr@ fXčmUUe{q9~ j%l?+yi# W?ejxg{MVv2ʆS'cƞۭO/׶MtM!f6PpJ|=@gj*0eO_>)h\pK$K59y',gƜ~nܺ7P>O: ]s9ޅn+6mk^Z[|SUOMXIka<:%'ONsaL~^=wqrn[;}[Wia&A >H26PVҊHNA 1~2㜿{2[⮘u{!664 fbW_<x5C_I1n&@I?.rKeKkaFvˈai^hKkML4ْHpoPA k~gŚ)oRxoO[ ъ;t8 W ^'+]XvkpVN{wxG'TTGk'!q z-ܸ~\..[_Kb!=4Tᒲxtn5= gCZ纙P3m:+JShj!M3Z=8==2': ~Bꉋbf];:^n_.YeӻW&Vc=7d6 oM_>6g5.JvFy <9\4 5ҙl2z:p_඼xc٠ӵ@&Y_ߴryn'f_J(>\PVJa;8n{g˗<~>ntu`ܻh"Gpu3+UJy-oyfGi.:{hxisηKr~6RѵΎ#RpA#q&eSMfKLFl#7[QE0G?~EgUTRɝhw0g~ *[l_$. 4`  22ץw۴pPUA.ueIR.jhIFwp5]$M#7w~:f٩`[hT@46@07B?٦9oE꛶XT$Uo|,s߂e"ױ|͍JΜZlsXN9ss]}y8%x.V+"#3XriيǷmDaF XC0 D79v1V϶zvۦtI$L89Ӻ_|AZG8a2s;9svvFZ r؈{FDpÛ :Q%_li2.vGj[]3|u꣚X^ C_Tfݧg-9G|en)y-c?6nc#os r{U?^%jZ MQGol-Xޅ'Lm$RY%y'OgIʉG-t󹭷+[1#X "5QvwH9;΢jʧ5Ս;{ӌ)koK];`߲CtHX:1gIIć=SwoL1sqީ/ .$[u7JKﵕNI0plNzq(d,n᧩5$ױч8`7R0%* }ƪ3=Q#Kv 7<JI]C <፥ F6ltcYGB2],'SlEMCb{bZ'95@ =Pj**so9DWp 끞v(mEYs7L1E2cy4EH%(|dr}2*Dn;pߐtoϴS:[ M!5^ʋmjD")p]8 5>-m[EΑ@@' px[^,^,me5iw?,y}eqTZE7hs3}s;E]ֲk};(+ n#YVUe忢wC#SZr[r>fݶzrZeni=|!z؟_e˟s,gZ,sS۩$S3/x_un01 cu} l̸A?+˖j zid}tn@f:O>.9۽.?\5,'3 Nјʞ<{C{7R>mc'쥱Mwₕ2^w$))$clqs׎V=Uj)ࠅ`9Zߘ'O gjij'qv1 x'.%A-"X`n,|p[F}rM=5Yu+<$F؞0ˎݹ=J<3Uy u//Ѥ-\PIQ cGgy'ݗdJzǸ`-OWR#!ۚ>bG9Fzl9c{mckL5_U %zs V|䨝Og5|tzjǺ H_.~Q+mz婌|Pn`#>֒1y ̋.-=Wp@tn|oNt،v|Cz)ۇ+ji] L7y1%^Hfw9{8ZDe~K^G`b\) ,;{z:l^گXCfk7l8`di23z+MnU:Bc7 nu5¶xsURi kz`\>v[6dY[,!f=ږ?']Gx!ޣkYfcs0;ym8cӬ O/#!m)e 'Of4JVk֍%9TN)X"kFЀ^;ku)ꝸK`SdR1 ý3Tcp5E.qǹ 猒pp_n[w/I-U*prBz}ds*gt١ާfG6{ns 2P;Z/3HN*2_4{8`Hh ;0?]z14>r[.?F b<# _?ujlzs L<-C,%P MaECY[m5Dm22 +Io.9(|;{=ŪK d!+N68fs =k(if4M HhkzS"ru2Ds4fX齣B]H\q>qY߫$?õ,u:r;/sC@o7<r3v_7t&WIYgTUNZ?il7J(Y vFzW)(#BI -a3k{r9RZJ$)!a}4-.H=s#/.F8Hṅ Kd),qB==tqGG\c15\#V2^R?PTTsD"ci G _mZqr?UNG sN?-O8S-AAIiK[֋iHXbf659pӞ{]jh4:Rt{V AnHb^u^# 7$~w>srLt6zMIG5MW=|/`k=f>I4((%./?RWFXgs%6ià {.>oc;~+/:KQv{%GTARі'ǨǺj-wIk6Vo}ovwOm]%Fn;ឣuI3\|L ckN@K:HPͪn'MSYc7 'ӯu՚NoV3Yw4-:?>\weyrꤷuڵՕ=SHwjwk\˽{+mKĎwvrOaN.9lEM%FK,;t=p8 |y0w/oK~'SG<  8S-4;Hxe'WZMk$+f7};/JOU㣹\ d<~\xǯ|w/ˆٸxVvLٯ-z ,d:9@9 Vj*DC.9E3*!4;cCJhS7ާ#a?첳VWG|;~kc CǦ;+bT6&?doHD@;s?Ey]n2T!l큂6gyƝdp~^[]'ޮGwStc Kp鎥]l3;1dhg+y8Vq bv?Um"a+o1NX1q<sߪ~V{\Oj!TVcd2H3خb3L餢3=D\%ltLvY"gkp cj*d,. aˎs:v#NDS>y y„1 )iO4;iqtakwc#v%s k#VGe75|L{I- af:!fA-uW "7iB΂I$T>`pBoRׇ88+\&n|r1b wdg4ťJ\wQCEd-it8*I4[і`rp8?UjLnZMF7`~P}N_NyfG<<VIE;絻ߗ$i{"$0zDΧx} p]' ~ʛCld+vVю=G.'z3y -s>L=:u0kxnΨ}(?;108=;wXr:\davG8UG]x }Ͳ8y1(qO4JXXpBoX!tRHט˶[t-TsHX%M,qε'd7sٍ08?Eo d,I~B8r{ e~{QeO2(]!>z*o3YWK+Ab ;3߲vlT,G#~-G-{(B^3:n_~&bLC<XN= 4SM0&3[׎*cntw+<;%cvJ|_hT}TwAxKFAs-N17qk݂離,(T9sCAp?OT)kM㝀܎"O[ie i״\#Te'My(K2@( C@򀄂!w@g(@e$(v@!$ꌥzRLB2~RtTI ;Q< to\Ht/le٨1])g-#'\aceqd{rsJ$hk?A/1~WCO _\{cL,R+XFs;ža8wO#8YQ1ϓ˔Ƀђ3|x9$jLWjaZX \ʄ][\3 -[*1T-i;R0V+).蟎{2x\\e^w;͈o;xս<z%Qfg;h8*Oh㑵H\\3.>~KǍcFDn6ю̟ë4l|Ҵy%^Buj5=ۣZkcKPFHRgl>Kg0J,k!Q.*j]Rg~C@9Y_C7Ltg>&쥥8#ϧHuNZx` zOuPìg_?7Þ->Չ_U۬lָL^ ?1=qAI-"먷ܩ;9>ruS$1,9>'֯,q˿wJlt55Kw3 -syWMXڇ@`eOj۝!*|,3catvi:kd5aK,zJ#_ NqY35=CFQ_]te,M=S)b%&g8h2re EZF!( Mmiev( ^9+m>lveO<:M]MǻGOӺʬ4c7j[$M$wyQe|O+i\%kC).*[t\ *#ݣ\ywNצmOvaV, %n e\2Vql&C6c@56LԮ\эJCZN>R7hb~?#,6vzuLeøXgcrdtUƞ&}^ Ņe؜>,) ZrRٴQvRƈv ېEV:uQ&zi#w^0z7I-0u;N)rO\=}[WsPpsW^Z0YGsxnJ5i +KlM9эVQk\_EqXW^.[zii&[Qq-NK<NHl.n2Oe궷dB=ew-sƻ=CgsYuUqP1F w#1sc? sLT#(G }=P[lQ$΍01S;e #:&EvΦTqg aG ̉sZY[IbH3nv +J%͖6`" X$I - #ע[mc|01=Zo5CMI"4-"ÐEht]CHw^{Rk+n_[qú HÝHQ%-t䪒WU+Eoю1=of:llxbimLўIZqQU+ k؝ٌg9_U+ =*nUm-nFKire1moV(V82(ikxBothk$iw`6f98T=t\Wo2Lyi/t5#s3!ԨT8I[*ܓ+_IH~Z{$њHnqڲ{ms($a=o 8 T 8Z}ֆ:U, 'kwRKѶM;D0c+-e&3v՚ZGJzjSdnG'Eީ&ђ%ۥKݯwI]p}DE$ ^zkWU'/&8ܱôKgPȨ#4'\ENۥTɽ e_Y)3j !cXn~oQ\5eKs:mIOTNCs~qT*L2$ t{<_boeۉ'3yU9*`gFFdQKCP٢q 8zvV]&SU]0HwG;聡@#<.4B @I;!IPNyVQj9\)Fcq<Z~r4*]!0F8s"읽Bø=c`yg}FWk h8CV-jUh×WnZ6h # k#o~Uz#UmF:YIP9@7q R_Tqj%l!ac*kR!ل7ꦨ.U4Ӱ8-YMP_+4,Sg9\ddmsq#өWڋH, cc${}Js;,<5ksMi2'i&sCH|F>}:]w={pK'^Iq.$x898z~b$iZ氐RO |~zu]Ph͐Z.KCc݇$- s^ҐW+vC\r:qx6ݨVcHm-{@f~{6-XN3.[ qYc?7~<kM-ћ+a~ f`E5‚^b}F{z~WL?Xs-T:5SkZ\y+/.2ŧT~9ΦϞ qe<I2wiBWo{!0CYo grG[ǭZIEm5,cy,)iHjTTyT\fOR=ԂӬ]1psOG;Y_/m%|l%6\I EZ `vQꋓ/U6})1ȼU_]Q˅k*l=GP:Y2'r[O$Q+-DFWSA]i-9ē ;Soh#:x=>cLֵѓӡ,8s}K1uL!K؛ӅP0'fqĎ cH>||^<5wSxi/zvW_Ex@k8#ueYI sx ^ii)SQ#했!P2tScr6ղȪN g2ջ08ge`8[SZZ{gMY[-\'G' 4 i-!jaݹy Wxh橵S?XbD-ghvS\c@ܭ0>sH9 EQP2W:<Cm&>}2?}*Lp{lhvyE:zG@]S54~V϶"aԎz4Ћ?Y2t ܷǷOU&2/jgǖ=3u _ٹh]s52ݠG' Ul@lnd.ik]-G%G$8Ɓ9]etqAS2J$YPd tH\Z*i7_G%}mC#*ˌQ\xx\oO*GoWlR& ylT8z8}Go/Yzyo8m9  ᕢZƿSZhj^y{јd~zxԿ{tQQ 9n+($a1䃏ˁ~wǜӋ-O}q4qRc`܀F=AV:pVd.ow=}A_k,.KmKo9?-#)׆WZQռ@ : 6kp7.vZJ}.w'9[jv=J=yvꮚ$;">]#:g/J!h <EuӸsHn܇czG{%E(d H^u b.I\0c=nT2t[.~_M8 .>ǰQ&7`v&;/LJ1ŖW*I5PFG#!>Aw;3Z.<xܖ~8h+[vXGD! jlPHh*&^tͧ~͸p_b}&vKESd48h.hN ɛ$@=Bocycӂ='7e/K>& t9BRG(=C)@@rpTv;( JK2 T((@BBD"Pz I>R?1J=S@(=P{]a.0G耂e;!>G`@(AAD :A! G;聡@#ܡ.4B  hv@!$K?^S(! wK}=Q&P@"@ADbZE$gn i>PRTϏI-7~&s[njr?E(״o-E Ky{9.=;/Ƹ古Kf$^턟Pq+{aն˓` EL1OwHqP2WE4n0*r~g%ݚ7Y'60@SS~f£Fho3-;ٱў[﨧!v1$BUgr2rjo;kLf\أ!U.4>|l{8 ܬ:\$zg¥G9F-˃#;ŖU`7I[myWB|+a38?ykq10R[xsG%ukz;3OM33psʱ$2அr)'87w0OVf->>F=/l|GewBQ0FOv_k`x$ʄ pvBvF9Gd}!0S?t%v' {[8r8쭎\nK\Xd;'~ڮ=M ! tz#^;S@ GdMꄽSQ%K2AAD+ln7m[Lڙ7B aZӒ0 OQ0#9# pvNG8Gcl)^щTAD28G-(!fe-#?n9IZ״-}Z=ŭd.] V'C0p/qޞk*^6@pV-]9M&F c+USz|2>F8'矗%=$M.sI>KS$NmW7oLc-%E~݆.sm9'V|yj(0Bͤ-DA[K-F¹q$p@ny<$W9DsH)9q㏯ۋϛaSK]3;8J{y<6PspxP[̲)#sO\{TR@j n#sswIpܢ 08†UК ޟEd#E>dNOUPڙ7 =ʾwWgspWxg$։U2lN+dϙӺ۵P.`da<~HY_x}3]+4zBܚp A[t4W.>뻃q{B]GOYVSFItX=N`ĎZi%(}QQH5Iq@u:\%=PhCBݣ~9yjrx]L U%UCtʷ$I'QT%/T^;>(AB F]j=W]ŖD@8UŏQ]HG?T#!nWaұXڊJfAH?%MuH*..,rx^w]mtDw@ssI*k=|}SʆH13=[U r SG?Eꆄ!@Pr4vB; By2ZW~w+ L<zI@ Xa!RU6)$sZㆀsKd)FG^gC[jqk>.G#~ќqg*=j!HRG05i"Gc3߮3 <0OImgwS^IC U}knn\8#EaH y$|F|:Gd?I䷦GzhsC HϪCqc<['WLF@$wNɴ֝5$e0NIʲ2&rCGpGm=sfSbLh[KADȃ0 ϱR[uu5,-80W6{95zmxdc7Юlt̺N+np,q {zYo1=h^گ;X s z(m>ZR_%hhQ\>ݙvw.wK? r0rg%:$;29!0>gf{KnkZsX㣩|lfB|r\d!v ĭqO, W9&iDS 'sTv-pcu=#78e#hsLpOLhòy9Kplh'(|}[I2n#L n9‚&MOD沲ѹa|ȀޜWEн|kC7 zz*4װ W q3-}SS<[d{.5B .=x6ͭsp=]Bxr˹Z-\'}0̨4 *1Cf2q칅];w]㷺Wk(m 4|ۅO۹6*oG%.8W[pB_)kݺ]o1W c6ߧR"ݤo nRq)k[$< tQUv~*) .= \^ f;z+[t#(ET)L}CÜ(fVIT"mËqeo.8zS2H_F?smDAp0HÿUy7zcm>9y/ʦ%Imʪ9 |GrIԍQ~1E=K{خ8S!G|OH[ H|+(p[`ٹL8sĩs0=p=}SiKpEްTF&ed o-w-~0R *?ǀr#$ eE-D/kqgxc$UIѺ=k?s2^xhO$}4u@llsYg^QV>fU\쉯$. q5ަ S09]l-qZ~oqHI',Geq|Μ9rOuoL돈nlӻu+QZc TWUXjK-7 t@sdq kr;8DSǯreuKjv'W#h̑$isH:;cꠎ`<&7<.qnYc,)׌>{-^|H $$;PGJ1I;H6X.eG~KӒZԖ8\/M.wt/N${FKGCopc% ѶV=ܰ5ç9[?NvNŮہռui1 w( tg}#(>K=S)zPFQG2#yB>DyO)'@e2}D2 T=QzI? f,iru-GI<22yX [xW$AYQK314;po>7KnYj FOpÜμz^p; ijb-;?+<މMK#!d2w8>??kgTl㡬|{[sǷݟW($wRKc(UE/ óV>:訚M'C{|W ɿD.HۮUTNJhEL1r\<NUqPS¢VZ\YG =0GgxUfmy:¤\}98÷3ۭ0ɸrqG=W0zmwZin%yo8;>zVMe?V㗶3vRLJ0O)gt4#(>3ߪ(?T 2)QGdP> (,L@eGt@GtTI3ʢLWߪ8K7ȥS~.ݷt7nUb9jCdqǘq{厌[vbǪ.˴Lu=W-sF~1'ʐ Et.H#~>bML|'+wa˨VWśX GSlz(wLѻ/l(ki@걸]8nR 9'H${\G蠯,px.=^eik,EXުY5K"7מz,p$i=CZHhRܼǖRbfkNsF8[+e]X/ $q׷R@Kq[Y2֗" k},r7E}s+w}/C͙yfNAU?H}$5UrG+{sݿ[ka9bo &y i丫U5Sb;.fnY!t.{-CuYΆ#䗣ǡe*0dsFs)ysh9.=v%}%P\%岙YqwL%lOZ26L@$np׎T~,ӆb|g\VetU&Zx|Z=eYDҶxf5h nv:EV%lpCŎw ]Epm oĐsk[~52yGw݃ʉ{I4OZ$oY07؟N35 s?w#X_RBH A,,{@Gîn[o/Эt;qc!WY$ Zڠ KC1o1eki]PI13nXaQ bpp-#!@3TOHCSHZ eKG@h޿E~"_`u%T..s'SekΘZcA$"߫|2:0㟺1ZG MMK$r4Y# #-%HwB`9-ifo/p5`ck<0<ƌqӠZ.œ>^a{tϋJYjk;!UE'c8hIBHچ:R-lAvAnH Rdw*{`mb yǪǓ~Ye?VƎ o)%m<B0p~jQK*nDᓞٴT ?5÷ ~:6w e .pIkxz9gZַ 1s~3-PxiơVvPTh58A\-r-_y`W%Is  S~xg͗w" b2$2eet})=Q'#AlTq*ItRfp>Vx]ԒK*gtzS\s%$g1뜮]n4/-u=Fyy^ua%AUM9/o%@vA(lrV0k"nvWIvrއ&ziAm,mG\DԞ@uy'e *pbu&5f] obߺ"9 ;YЎ>lzoL^yyMO8e$I#?$z(G2ۓ`ゟ#75SdTJP1TSLߐIЪi#>Sx FbW/7ʶ۴!-q]wE5M}\?t@+j:n|>H vX.3r՘RM)t&w`OrZ]Ӓ=w'jqK^4=%$=US_*"hKB9⊪M=}[M= e8- rAGUk}9m/Xmt26f,oGc'z.mvW_學UKYU!˥,Wqʪ,9z/qzcZ)e ZrH1Dy&3hUAAK=T߇Z;LO*6CY3-;]r*$8e[Xڳ=?Z#3Fvg>6oGNd}o g=$hˢxT,~>x̬] wOpeGu(G~@RϺL\ yFxGB_tFPqH32qA(29OHO'#ApHO'q  qA8HyFPUO)#G=; Qv)ئ: ](AvA@vGuHNqWtd#MBD dAwGpBh@]Ў@ r;!Bh }S)zQ!MHwDQ;@ 4!4i =PT$wBe୍6T.r19k{Òk(_[nU+Y@[iDgt<nyU'Æ/}/q([F<>G/6F 7`sxt2v7E-C.wscgmڅϧ s  e:2<\8=;# ܭBݥ~c"؆@KZy7^!|t/1.hp6$uvSmG$.oq2I{}(]n|$|e} eצg1cViK3a9g$2I9ZF2yY̸~HrF7mevalˋֆQpJ]PZ^IN8PK]YTi{^Z*VUqsk8.{X=PA[Y$縝xwF 㕡8d?+#҇8x*ܱ)ъ:1:3y ƧJw;;Xx,pw]|r6&9KoYgmFҿDw8Fp*0ߪᦚIK)БuZ{q]\b9kNg>oYyrR۞SI ]O .s2\b\5U# %e{zUOnQ>XoM#\2UAcM)kZk t]g2MHFQhP(A(@@#&!2etI4 RiTK/O\EJ=#ku)kf}+vUC,Ӷh\c-x97{Hd4}MehtN~hzr#q$#n珡[ښ; ׃ǟ^9DKenhӴ@Y<5p8.̮/p7 וpm;e4sei[jY[Wͻq9-qR^H94U k=ul hT˛}$Q߷,5Lj<;o ׀ pUtQBIs碉fǞޫ2V˫t.nO~gKNi# Uun2\I =>QT|4`pƿp#))2 0Vn3ln;Zi-yėzvbO&X! >VXg͗ӥ[Dta.G `pGlϠ2G 4TN#vǗrpp>yntJ.W%҈C\gv9q=E49h 8 'rֵ5>8Q |' \#\d~U8m9'X3i.L!tNw;_E=ݒI+Hu]<1߅Bn_9$i RI[  q}p?ك@˿BW>3]Bp=ݎAU[W)w`^3Gv(9V mDYb `Oz.M6V`x, zTFrUmsAe*bNrzC13p1{wQV=D92H9.:¼8G\ËZdh<8Yk~od}C muQz\8Y[4vzEpT4Dd8;U9E[?8z<43~KIG%=FH?(+aƈcVOiwO9x/ }r);n݁9Tpcte[Qp~m;{s,mm[h/.;zZJL|$gc񵧣r3_ ˤľVFٚ9n8$~W}S(&$wGtM(x E(ݹ%HZiY<tr=-TA7J*cgG dc٣}V3]i GN$2F>{du*^39rmk j~hdǨ?L \$gscg랟xpg, oJv˕E+_2'aA؅WUZށZ^^3ؤSHO\Ghn`rO%PsN`Tdj% u=@n~qUXz*IqgDѺ]$iwF8i)xN(-X-p<;( fU1$yo%]R M]I2JF7>aW?9.XGEPI7!MoZf-De|p5t PO7pA ~?6sYM7ji|DzTJdwS!T;dJa0+$`g#eIg?<tyi{ itGEW/ zZMU;`TM+ڨssxs Rͣq_T!4=UE9$q>^?3?gD  0 A$8U!NzP rMϷ}#@;@U~RrG!1#=,R9M yR I4TGh)d <#AO)D%SǰB 2S`r(srn=!,SN# ~L~@Qx$s9h=.Q @rP)`.Q9LD(OD@QǰG.S9B.Q>ǰAO)D!d{ %x.pp2S()Y){"s C(9h G9G~s2SF=$@hD) <}G)tۿ֗;p];Hc`c#9<MQ_ iluѨcg!X{Qe=f%'+^!kxH<{sv]B K$9Xvmvƶl4\z=bO,5oۆ4|o`u٭:lORʹP Gbswnz-U*y`IeY-іxɴOH윀GiKv"z;k݀x}U<' _?2K;&2OcsÏmoq=z7CIYGI Z\ZH@GϧgIy~:Jy .ϩ=5h9\:F#b>XOKϋ/nD9 trw' w A 7[{yW>\q doGzǀ9' ]n繣?;=+,|SI'[GtdKg;N=[͟^ӛ&ʼppFa`G/;_}/,2.p$rS(S},s"KP d1Sh4e)A=?D #&Ad%<# Y(O%BVHhYc vF<8sMeAj4aĻ}A*)LmGK0GS>ۓ ~[5_Ji!=OH$Thgv*3߲x]?5T|/Pֵc=@Z׻{3mh];L>^RSҝ9>л[]-{~5c녫XS<'&>9EZS]ba#'0B¿_Tшo9U2H9 AkQOPgXr9&%צYn8,WG?8c>K,lqhfyی Lq;zV/=zJi%m}45{V%#m] # 0`;&Ks4'ʮ%܄c?n?MR.aʏ׶:qP>ZʆI icjZ(lx9LݳGHd`:a"iwF#Eim9GpҺrV"q- }u0^oNx>?c*lvdeU]{1+ր0<~!ys\'`t3.S9B.Q>ǰAO)D!d{ %x.ppyW0 ?e㪹Q:+1}J| ʑp?De9MdG(<}.yFJhǰD(M9YV*z~V;?)DU7'RY+Hc|r"HZֳPi##dE˛Z[eSz7֊by9 g?Ųn}+.`Gѕ駡cM)yߡKPhjk`4@H1-&~}.ƴL|D 9y0Tݔ[I++Mis)'[#S.YTًF1ZJGK!-nZqqF}Y_IUŭaa\LPtvM.SG=/WSIW,QTY]O!g#GHtPt^tЁ}M$~ꏺ t4t}4 AO)zGt&/GTG@wꏺ;}Bt}К~G ЁgߪyKdZH<@}>P{ ?; >瑱2'^E?i:(*b3qǿuzO, pf N;ʩe(G/~"&Tvq2{;,j!~"vAn:g:۶d[㯩as -77 hMђ\KZ*uVվ]1,w.݆;v [{EdXXƇ7uēUxyA. ʉe`_ZVwUT#ctWYdS˶Nҗؚ6gv*9a'S;UOe|Mt]<(Y&#c#dc9P-ʷ]hi4ܵl5M(Kjih?bZT!oQ+YXSv#!b@.퍭uK7PCI$s<0gZ恻ӦV¢/R^co_P.ʱ!k$Vu]'ud}ֱ@͂#&CNw+ekݚtm5C~Аt.1qF2; eF>YgsG~: hxՆLݱɖ3ע_'. wK9zy26c WZqS& |-zqxQIrQH}S@@}۪G@4G $}BhzMt}Є~ht!G Gꏺ =Pt}К O^^QGh (((21U2' @Ĝ`*: ]QӾTő☼~f t\X%0 3hsxUvy+G>3/~Xez||Ft61=KX' ~ӣ$Pʊ-1vQ\,yam=Y@;9tϙ].V}Ӈ.6/ǭT(|m v8^9G+b\+^D6 en07M-DLg,{G+?ǎ<2ȾTC1GnGdtwMSe(G 4w@}B^; c4uK n*Gt&~G Ѐtz}>BR) jgy-50Yv묒?Z㓇;f]UgxB"Ol.^n93tndN8;[5 v\e'=r%XO[%e H/C"G+@ (q؅\4Np#f*ae˄m2c<q*7e%z:)mS{FOBP_B i-!}g a-m[uI8 kdM{#kC绐osU;:GIs|[scSEV  w(kxU# lGan 0u9 pc$ۅp5$᧗޾~F_#)$6BQ }U04.O*(##BII\cgG(.dkp9tGͷZ-# >*%9>zq3~O*ދav_MOGCKG==Utd8ۻ-}L㗒wng rت^+\74~ZNy5q h~U'yaoii䪙C cG%PZH<>Cf|v:JF<~VamǞ\fAE%ƭ~g's 4-e;s w>&9ᵲ#K#>Wa{ h;uB; >ht&^S(AD>ADGT ;G@>M?T}Qꁱd({ Os \Ac$ 3&ᠸ ''O\{zO@z=S@A L% } Qc ;#11@!B#  tz#BЌ ;# GdaaT#KS!#.P!(0F(AT G~x@0{Nz-ƢҜfy;$ <ށĻzU^V9ٖҐwHICp;rZg t<㺔>a>D@i߷'J?M0q (a&LCK@a#9ULƶ% =;}WR ml!;Gf=Z0s^w_s,t楖)? 3SNB7H F筩GdraT#KS!#.P!(0F(AT G~x@z AA!Bx)=l yyN}?E< %LWl"I᧳<'|,yo{VjW'ek\Hdûjbc~@^`iUɻ&#sY$Yyw>S끻 ? [x™UK )䑀v9꣗x[#teqc+O~Vhap%X{ϟⲧp<,8 h.낺'gP6n ,HI:Vsz->ݕɞIA8kv;hpNsէ}ҋSK"fTbWA:+U8k v8 ŸPeY k{ݥ{@%[\x!gJ~I0mS'岎~w .#sbf<xYMOZ_1/plc`v^fY[]8K zG%C<9詤mhs sqЎ.A4tQ'Ѱ;4u𞄧,,Ei9V9_kp%ڦ!%s lMf2dcǹ+3=YwF١ y] uMOzsnl̮Ïv|_I?#yY\Joyu\=ye-O ?cԟ(Lr/'|mYoMk\аQ9yyx=pծo)Do y'^Ǔ?ܷNtQ׶QtyFQF}()@QtQg,@ ?D}џt~3T FPQt~O>ϸ@עyK=yL2~gD~y@g3G3@(ϺzgxFx<ChJC+WiZ|Ԏ%ui%STp۵$e[_;^S_Þ):PTWGU;X<g@?iW7v=Q =z'ה(ϸ@gyO>eB?Dg (Ϻ#(Ϻ((Ϻ(3O) FPO y%)`x m?+w!ZϸTV8cWR*alSa<cUoY2]ñ(֏d]#CݿSKt81)u.lrY_z&I[K+^KZ0NryTU!ǒy$: cِY>QQ8a. wp;5LNz []DI"0x#v:VkNG\+e`\^_4"r-<WA#p;= Jf2ϛpn~SiZsioaMh. AZRtqa녽H-fZ̴*2tVP1ֻsGߐ pl #'5nVahhhfuu:C4kH\?UR dq>-FG z=ݔ;sq SY$Xhֶ"#HZwReysX'h.ߗ}zEYDvmhYUa'>cqvc9kōqvxƐѳ=6pvs+eр,%B6[QmEvc n09k^Fʙ.w/叴/٪:$pO3#?uFEr$IQU3ϘUpLc]g]JQg@Ϻ@y#<#>gvOP&i=Jog:[sˇVKIdzVhEYe2~gQzg~gy@sN]1 JO_Yݱ4:ѻ@֭O$.dug 3GN}x+[|𥟄͉ۆxRqAju OT>-oiQrwI)؆ƒz8+Xyɔa%V^P6<m8ZGL渾0@|gZՏWKTN#VutgapƓ}pJ\JƚsȌ/I7.0UTcſ4=9W-«s]Hi=;'u)A_i9\OAH@H>/ {xq6Km`0m窓k-<'c 珰T6#Y2{>c2#۸( x}j,~Eivu`(]MxL{F Xoi*⁑2Wo@@YZ+d9sϲqck2-$U5:Zr0C{\w,3GPQ轌ͽ{Su5kU?.ecrL[A|-8Ms2fOp&:8pc3svɐOGXI cÏ}~&$~E$>_pY0p8Q זԑ̄eX۽ſ=W'cq}Kn{osqvזtQW7i*CjQܤf|$eӕrKh뼻mrGu@h ÁgW[ di'*]N%a \[wK;` rc4%3#+<%;JF;wWǓ<;Dh4 Ap-zc89躼7, =0O=!?prxsOkLb2k@Pziy E#@a8EyIZ;8{7 ?t㣞F;O}q~P8n7zVxcnTMc&64=ǿH8ݯoWDȃ3Aicf 'N9Kh,=p-#TGd y(*%tFQt 3FQt FPQtQgtQ S@e@B#}ю cԦ# O!Op (>ǪgܣD "K 80 _t'Q>BTOL" =Jx@O$F:K tx$qSTaA!2G(pS VY Ϸ\%ց3^q#O2z4S^M~"hf,81+s}k!w(t\7Aƒ\=+SK_[!kQE 51]RZ=aҿ,qQrSJɡvG!{/#N~|s=U1 ^콣##i. na6 M~ha6;:xs6-.3F@x%r{+KX-Ι|cq%s&ov*&~WV1p,wi}H0qrHb206coop qn-=d`m< J6\KAHdDL|-$ 5!ǩPF%i-6+V e\JȂy̬$֞\GEL_koj35-?astV]T*KX2CNJԾq858^[;m%K99nˇEr͡aӹE 2d?90;+ҶLn;dUT5crɷp- 7kzr@[ ة'c@Z v9+wfI9Dyqe\Tf91p<*\]ioJH Yqp=^iԖگ\c8Xyo+:}$5 veGy^'U# 34d/#+c7XR .=JxF/09K>L" =Jx@O$D!/g##}G)$ǩOQ F#}ю `"KRQ E$w ;4E?Sbllf}C"{^-C* `v-Mc ǐJu;dW^c׵8s@?/L wVy |H1\j3<3Y u2]ak{w'U0Ę&c~l5pSS=)|HE7Y=V]i{wǞݽ0{u*2wo.`˞ĤsNT섿{vTwҼ$~);b\56b~TsH]!;-,H*cStk#svw-o6s<4WGK~L{)} MZ#D0CgWysCat*Y%tՏq';&_t'J0~&B0}<  F3V1'a f=Oi&ǩOF)c B zqf]We[d)A}" uD3FA>#HԧL#AL>0%ǩMGtAAq ִ'Neu#E៼k^Xj|c E [USj)6VsC>ˋ||1u:vwFE]41'‰޴ }%I$Q ]i+wW #3rc>l$]ۭeuv Ji4DL׵wz~=X`|T+Zj<?4~T+"f]sA%4V:7+kg-iX&<Z;d4dw H+7رIĜJ49$`UIoAt- yC r<7@i&>;ڶmq{rĂ\Ih$ 8ryc t53H-i!kl䅇.=O^V::i2H0ҶDq>|ǗpcRDKvQlq7OuT# y->cU< Կw~P}֦3vC #|4֞R=:૗pi72=tgs\~>ebs[] 3ǏvqL愞_N\3ԞS<uNL&oj_wseis;cf6#19eGdL!?/w*]#qi4c%qǸ 沾V鍞{kNze:t3?3Y{8EPo6O~*Z]Ly\Zݭ˚yqp,-i/E{%K2lj6ډ'`~lxo]-.W:Mg25BNr:[#+5Z2 \B#i ?B4Z5Pp ylX7?-+Yr]#{[90`}RUD ᗖ8># ^O]K7jt5Ιy84tnH)8nb';O*E@iZ^$Lmx3\._+鄎(+\F0uor;SBxĭ{'q3}[Lw',o8)n$u8 @L#@D!/g#(A z =QH80PTBhwRd 肂@삄 twD " e`H arI'Gw(Gr =v@& 2eI.K$;;t "@AQꂏTHM$"O#?DizTbb@SZ=9G T(=ie[5> [F;HueJKNb<eӌ_gY6n{Zgw4g>u+:&SǸ 9#8_0㮞\nki Ѵ z~F^ɝ14YsGWQFNd #/ kwL,흼'֏/knx(D碳Ss 86G~I4"(o$ch=4\ZO +r,<%HCrUֽ O8D_2.{]ֆn'x ,K\tizGk䗇 4>r"/hdegrCHZQmI`f+e[Uy{@w/zhk\ƻk?!qfvn=Oy>wc { cy[nkh^en `{*h8Yt42x;#|&2p0IX\M?4qXd^ứe& durs ^C$}' @9![xZv#Fޅ޿ubK g쓣3?oJjm|lq$+hF9kHߪy.sviUUx'n^xV?A˺UM3m5s4`zzcTvo|<o4J53`=R# Flyvw{V{ӷ;v9 6?.Q֏~rr:&oiRײs mӗ{ymwc ɜ\Ӗs^9Q飮kd,|RF;'녹0Zإ۰s P1ߏāR׺O":Q,3V(]Hii8gE꠬0n pZZJgV0Z9t$9gf8nxYe;f'`.֏^yjNe>mnUݍKa``O'i|Oo/'<Ǫizzje/T$&]tIwAB wM.@!D4HD꟢G~TB(=.1.0.-}W<9*s9^ͿU3(.sc^w˓4~SQXy 8,Z 91,ۄ%ĐZc%u8=V&4n[,f/OpsOX3>MV>sYt \e,VLGӮ*;G8T4|tWZAk aUqm8~Lsi$89>Vh{;*Ilvѷxx 7tWX M,.rxX7l2l67|0XrZS&i ;Y˝*bfaUftMn`t>*:TZǖ3[vz^_$6`5ZNf䵤21q!A(tqkZ8C#<3,hztYewm2EUz,u/QoRut|mneG m'Uakҷ] <8ܩ_NZPrcZ}ܑͯii78֞OJsKaύp`"1N#Yr}wzp-I@e~ue(t2/B\hh'cy~ȟ#~gUh}Д.TmHƗ0g 8E{p[y@vHc#;1H(TB sU橕9 y!VU Q8r;>w@;;t "@AQꂏTHM$"O#?DizTbb@w@ B ivG~:{;#ER!UAc7-w$.b=#\{eK9{Kv U7k呙x<QD<tGL(XxrJAwj@xf9+eXOmY e07 g#u -UjZ*ziZZY#=?/8S^t{)Z^\E;s]S;t9]:`ZD71~olg˷|3:G5Ēc||SdפZ$|0䵣I}U:]ē4}9J޵u6;p1F8uɏǹ/wO_QJZ<5ayXqq9@]s9j/Z|t6S$ogpi!R~~ma%өB̪UPt[#>S,t[Z~[}ʢ<;+Y8{% cw}VgK5'ӻ"Pܝ%@ZAr춍A̼V//e3gqk͒#s#qۅVEseD-ia>p@9-/ݖNI"t~KčL9cتBL9hK]_lySԡrI䙌kݸGr9>.jdm;'Jv8?J]=<:?ٸe7SVR:2{$g׸Z~37ak|qUuR04sxH>0~zc!emޞt&h2(AG$&zK9 DBt=8TlV*aS3M]WRuJ[5-; <HhAg鐼8''<I}WJx] @#4dswc\ҥU0?%-a gw\ViRe9pLEg[(UKd ?Rkw;$Qan\g=Vh=JyAZr]8Wp^18iwr=u. =TbWE$n@yc N C1~_Wkcf;WMF c}80Zܴ}VƆ|E+#nxS~ jgnhÏNO=di-s2@rP|L)wPI,ѾgC\dŰi?V9nܒvcu*H,t8\7ӏZkdM=ЩSfK!l/.-ٜ*͌WFK+.;uXSO>\c8Iw'JZK.skpsFIT,a-#VKj;h''aE}Uo9'?5mCcseb:s;xksp BCX܌2{vGxcAswxF:tVDNX^UC\A% i-y,Y t?>W$uS^uq3N-{L2-/aH}VOTց#{Y8{pۀyc? x 27OCR;.w~YVuv:}:NZc'z6Jdw;Nuܤ)A{0=/N|@23/?ꌠ^HG茣(zR(P/?@ΈFQIΉ"I2Qp(z"G?Dg22钂zH `Gej:(Z1#0}I#=hyBec @\uDzeOltZ^ *&pԒ~;/'88'ߧ2ȞV9Ӟ7* #X73~x[jG4 n'VK˦| c /X$k.PR#ay~PH-tIw@BAU=&cŦԈkX]K>W*iC.`;F Fy)-mD9pHUo-5hkYˇ ]f6R=s>I սk!#'=쫽sKeDȡkyݓ#/sA+#ikzUh$o>>Z_'#hI=I]HO/#UMdz;$ xT_϶G-}ymZ{e!D'b_Iekh?x Ϫϴ>$ђI{,rN?{Ӗ\{28RK2Gב>2,8Q]oJn]ةi{?3K+pt k@w볚cd# g.XF zST&Ϫ8y2Zu\~*mZ6I.1/! \ ? !pxEߤ]<]` *C0|p1D!{mxFpLeT:G8ǩT~E5޶*Zf!z5=Cv:f{Cc?+3Ë{{qkyZ# ϝ8x[s_zʗ2 tOtFz(WuKQoFn_TD申$D " tOtFyFPe_hRLgtA#(ztA<ꌢ而 EdHh=d;H @FxBxFy@v ΉFP _%@$(*e%Ao;7;h$ /vJW"Irmjd| 8 hw[1$W 5sSSG,t0Hɶϲxdm/q-,h3GHLw;cEr94t1%;\Q?R 8h#AˡR[0EIFy^/3O=}y8g5wWhu$b 珟Fn׃F.>Cp0USˁeҬ좒}$Ru#V\4sj c\rGQŏƽ 8$`ȑՎdOk<]g׎mZ/2G<$42;qz/X: eq2%yURSg0;Fv8A)!zi9.wHw>WM6V|Ѹ09`#kD;s13?]~ge;/66_W<d=ʭg-P\j2#tv1`e}TspDўʰHFzQ*C@pp\9vW|scCw{wV$'R*Cg )" 0:$08PE<@8M18냔BvMwA4px@SRTΈPJpptr9icq  @ c'@M.|!#hK;!H8G \aT9d{aS@4;^-@8 [.ATd g)PMppM88Gh)LG }>8Gt.!h8G(@p&G~9GM b [ =җԗ )[437\?wf^>%Y> l.Np}]1 v2cq{f?u6ST7f^C%xtYo#OO!c ^SRE6эQWv:e_+=>38n[vNʖOxBA7$?bI;9!/~_թP'1<*:xcem" yN[ xc-4 ^kwLQUFDv=YwO9:TLi 9Ìy?FS4a%mrWd5h?0w㎝;S}Ѵ۞GI̲Hx#9dOmSp܎M_2i};*%c.27ӢNK7.[j$\ּbW1Z]M3ō,.qimpݸnTTe,, ȨK{6K([ODDƼ<1@EH6Dnn?_Qt3=рGӺĻʺW@hSVX<獀 %lLJ8 =zWiu /4q y*A1|ǯ|okPB]Ap= x4S(8Bh.2tO p=4 p"G@  =P >))tr=;  =P..1ǢHA4E[CGd/h'5z cuӏPܗC,Om,~˓)ۋ;/05<잝E8aZ:9y*<7,HkՋ{ #-,. O4`1C!Ujrןޜ#XYךcpUFʍeO^8#vSm-36;[U@C$m2Oof{\푏@zz<~"k#{ckַ >eeH"w[hLqg<{((ywHi7HceigQK'7#At<7U )ifK61מ{e0ݚhl,Zq Q+.)nՒ { w yn:qTkn V4q#w?ioxjJ` Jx}7uRꨞj;ݹ<K==Α)8t N$gda -wc\MH,.:`F)oEE8knMLFS`&@ \g andP=7a79_u^$=44 ןEu0Ce 1Ap>.pbI;D!s:"6|gfkf0{üd灅ғVG5mCH x69ˆOy^e|:0[KLc]Sk\m=G깈_O_ϋjΨ$N3o4v:¦!W1 Z=qn^\xqoFp{)>е%4 ywVo vLހu>Su&:VD6{E'm-o Y骤dq t=3P%OoهO8TR={,2frGSuYDWM?/=G2,W\u';/f\& 8GAAK)·9%^|2Mc43͡NVǢPpO]'Q8G8B# tMGRqHO(\ # >Sz!48GA)Gtdp@pЁpz!p &yv6iw[ .2#tpTţ+O&Z+DR# އGKTڗ$R~b3ˁקBBU/~.gl}CPͯnޘPKg[],dQ8m#vpx'.{\G̓ZUK*aci>R qs ×\p[v~K#7g}-c۴nh,e ǸGT3Y:Y4g=x>Vw5# Un5.yUm}q/_m}3dWYskjS+>N]gE-5G=u՞S6E4Ŏ?p'Ïs_r\o8iI<>nLZpU=55Mk-]Jr/UǗ.8^ E,{]NoRC omo$u\넌$l`]< h{󵼂|˚7/D+RRf 츎u"͉ #z&KS;-o/nA+f6i5G2??/𷪧6㬤AO(ϯ};p ϘZBG &z!5.)K$B ;@HfYRNӍg0Ns{\Kpӌtu`8lo^+"Cij? ppaA= ==*6x# pP>xK#\e HG( G(=U IJ>7m;H*BY#iߜg§tGtz) DxKQIKhr*!rqG8DK@p=>P.9M/Tz e qr|!>Ǣ\>P!>)${#IrAe>=Q$QǢ^"8H<8Or>=Q8G Ar(Nj[Et\*-W%E3]x+lLiGH98'[ / vU3fx=|uzpm\@XeMX58#ϘƏ}V`k!&1p}U~R6 $gU6~LY=]pRgdh<R)Cf쑞K{"QSnpy'^Os|ok@kCggUO |ا͒@hZZIeJrݛIsG3N9dn;ӟ_eoua,i=$o-'BTUXvm33? ^*渉Ht 'SXy igc,O2_TjO>o?^ĪtE$20N\FGnrc/s,PUR &~ZqOlxL7R6Ez5%|8Gr(e=2Q9A>RD.r(RDKD=$B9A 2 ~/T@pP$rP']9De>R{KRЗw|~`gR:1m;C͍8~zFL/!x;oVEXJ/h<$lW(IpmMSYQO9d8e#??\^)fE+& UzèSH';+0ȎgSך{OT^$dN֞Z;\/;.Zs+=DN0'{T:D%a*s|k|[LR@?68̽#[&J%#ߞSi$F%sI.?t ]'ɇ#]lApSCP]',+lt5O5h _=ة7kY#u8.x#x>TWA-,3D(sZ2c^1uZca˙nOo]Pս@n0zNEu)*s˛=a;po )]k}V{I= ^:rTFPTcKykzӱ[]xFʐ=%`Lb*(LsyׂvJ$v>JDOne֗q$5]3;s!#PO`Ui^th-${1=)O4Nk{8|TbY d/C&GKxE kj}=4܅\XNuiպݦ0ZPƴ__/Ux$M5+|Z#$SIQ3HKrIUk7[7Wֽ|#^͓.൪H♭jI'WpwRo:aQ#n@W. ϦyLnݒ4T:Y<,7y\YWXyZ pq`)dS]pw%||zS.569):w-w}\%'}FB6\z cU}{!TSK9˲y.PJ%nIJsi-]|$rpUaUL=kKN@+,m4lSڢ3,/F34dqE ;u#YUMTPD@e| J77Kgc\6i<4AvIo>F9g~Ĺ痪ǒIҿA£mkLd7q=NIh q;9c""OA {wnqtAGS*y{p{~vZ5#p= ĪgⴙFypW9a;kj#C2{GߗC{Z?$c9Ud>>1[LӴa4gaa66F7 =_u0pсfNcZ23%<-sGc&w[y5hEUol.k[`+̊3tL{t218@ a\O)?.`_&8wUM$u0ϿOB<$_ja~5{$awrBմd c{ EKD٩0rg-o98s>?|V쾚L=r4mH G$J hlvZb5`q$ wS0xtCH꼴9ۜ{}8ҜP#O0O$^v5 qs)?-d.raq"1$FyU;;‹ݺiㅕHY NAOekWsˎyagꘛ^k}5F:ǢߜW*HG(=P>|L; uAW 9'sw !>k\H YK [.VFYvOr@ Q=l,sd9é.|!HGHg3Д2Z4չ0J.2G.!3^ٟO9v0OeKy-p3qpǕD^0pɒUpdy`ay1B^S.18I30.$"B Bp@ 8Gt A@x!H|z#pz!@8@BqT \'^Hz#Ǣ8GtTI"Ѐ!Ǣ:!8G(D" G~Ǣ=P @ODDHGt@z$K8 K8r}>K;2Vc3[僐=DŽGdW;T"sa|,'>^7:)at|L'v[lgVS,rjCG]ˎѵh=_^J>['SnjNg5GP"6 %p wyn dw RJDz:`nh h9wad[$р\:}+,G&>p[yWdKGOyUXHǎ1b>ۅ޲([OL dL貜:8{.%r}[$ sp$owFVΩ{!OPc:^j:Q˚>N4t0-'??8PR5 pyWh*Xo78S(gs\s[8"? +k d`srsVZ쑻8h td *id3310nX_u1{a[Y*$asvS^rUQA 'h1An%Q66N2ԅYikGN^L@qq^;t~%Jc$IJ'sBH@~v:p1s܀RND(CJrӹo*̲@?8[J]s$tS9 Z(^r\GDӰ[_us.Еy o1t8?_U5m :yzf#'ztjbe=L=S#D! r7N|<뺭GۧtXi3Pǃy {~4w|XIlih97#cy7\,t~k3{Ξ%E0ӱ(Q+y EtFs0cQolٿSI!1~p<k桥Nc݉WY9Y_C$}4]9I5>r #’UJxk{:({j.TX7#9b1gw{٬dt:ZMnG*m.ivXt q$Wc[[s {eհ2_DB8,v8>ǢdΫmMT.6ڙyK :8X#}T|>SL2ui[g}WߥWCBd3#瓐Ef2ZjLFcŔ~Yqns4*(tđ gK7MɉB Y<{ OYtQWSM=4n9{Ϫώ)2h==ez8ck.kIШxS9GQ1in3TQS[Ґ AE戴G]!#k w5gZt䗓JgVX[o,HOrF}q.s^RV4 y,eq icOjZ(Cwg +w>@<Uqgw]o]!%DS\V8 `}Hl7Smxe+3; }ץC;s<5DzվE; Z:8aJ;:(NR?|s?c#uҨJPIW<ώX⹥@?|(#W6MGw?s˖Ds 3D G\~o/ZGGeނ\4Ҋq9M.}2p&wK]zH:Yk9+s7O+aXsg<& LH꜒:i%䒗Dp(DǢ;8B#D tB pQ!DOT#Dz8AApv)Ǣ8I302wD8G`@V~Ѵu*0S;!Idpc:u]7xMo4:@]wFz~N]<9e1m-./.[U+$6v$3L~D6A'`.Lv~PrO]ѧi4*Z99\OM=Wu)ñ_3<O1rۿҿ;*w[;<Դקu1hK7PZ)<2fG7պE]PTc89QYq <װǟ%?Օ͝YWxa?m3_; n9l# {p3U`?$fs<;p]wGR>S] ~jo#8D~X~QU]Xbg\InЏe%+cё҉# N)NDƗnwꯏ~eM+(]̒v-wAki|L{@ ;IFߛ.<*ēw`drH`RύY'sր`sټkWrv; ;Fߛ:J4Fb wcs]6Ҙk}r: ;.Ik?}}Tl"ΝcOrns\:=VꭟWmA}I1j(-i'-ھIR^Lh8Q 0/ĵΧ1߀NlŸͷGQĄ>E.H˥:2H5]Q _.zmt|`n?)URR8G^>ʸX?DYc<"\QF9@h!jCpigαOU]NXf- s9kocZ[YCz{.~Y,Ϗ8y~>IGz-GNնjV)c=S@~Gy@@Gئ:#@@]=]@#;#AABv@#;@Є ]ЎT vFHTM>zBi&.wO;AGt"t!D I$zM/T.G =P.1tAdn4m{V}zk}UCaZX@S9>pW? Cfϰ9ܟg餳2K;74"Zin:S[|?>Lٙ5u3IwB\]:|=b_4+aWy4Xp=}7撝9y@_KFcYw-;b6K^1Ϲ+@r}AY&*i8$ aRzfZ飮k lg9o跓+[雲iГB®LNB\~o~VLfjڶ:QIeI%BV((w=HXr7;:`wͯGom'O_Y#sws$J?O)_W)usRR~=s[>~XSt͎ l9ʉE}h^NOSMxU8tI  .pMEmvW@M$/TM>zBi&.wO;AGt"t!D I$zM/T.G =P.1t$?2#$%}-MHCArOI2c3W%<4 Jl=o.0ODtpcfqGI@ñhݠmx8aVQ 7l-}+rw9 c >iYKLd@-Unj)˜ R1ם -UW%Cedn6'H )ϴ$W3X;@Ω(mw͸@]˒czV5hԴs;zaiQt ֖Ӄ9$á2;|őAv2 X-0ڧG5>v|,wT]hkLq.C$!creny $dĘfZi{ۍҗ|oQWqɖZҼ\G)nc#cCOt;6QUM_4g8[eq7zs' a ?Lǖӟ=wCk\|j =>Ǣd"h-Ic<+g#z{Y.TRBψ`8kGe\9=:>y%yJA-pr+!? J\y !t;el.H]A/#ߺ5j*'4얧k;9$I7 ۯu$N^eswy/?RrL/dv@&hizT=PQ!4Dt iwMBiQꂏTHM$ OT=S@zhtwBbKiw@ B ivM(=/vh8u͎;c^YcOS*m1G0Z#,9nG ͗H`?EA' vG鎟Z^I,x3n,pao@+2K6`AYN#I ZUXd3zapgwJ.M{{,Q6"21aq<5EG]\{#2!ǯe3LHڙr8^>VwP(6kk Zg}Bղyjfߗ秪k h9"w``;(i epkd^C%y؅t2FcsXS[)D"LnA==m3\q(8v0E%yz4t!.c>NxaMmcr S['8 g+CT:H\Hgdu]2]82aVdʐ`ȓ. ↚y}l5%5ۈ;zNY)iPqwFtϙceLe'GU-p' Kt-MO55SiGG9rcU*@p!WtMAB*;*=qq<4 I4B?DT耏D S' t <KM2A)&PxFyGd}vB(B((@AHtP(D$B((B<#((@e z(Gge/T$eB?D@)wM#dD 8 (B=PP2 Gy$z(G@B `ئB?D"PJIxB;!tW_,tCї挵Fc؁|(7e_5uQ^ʧGtou=2=W'Ã;7˓47V6!_8p; ho@FkڇH 6cG' &5PM{gog5}1奼xik-d\}-&`/{۝8\_8Lj#ct] ڛ0.9 Yɀ:JᔮUsT8JcqAp=96|X-S%/|`U4BSxᓟoT5Sn]9-ZtB[=V ee-FKO-bDo#?Je,4N|o-2'?F橖V=yo\2Ni 7Ȋڈ)]G*kKppsv䏢W_QU}tJYckkL%ptYI5FY& CGOR3ʮ?i׷i}k<}+8gmE#sp=q{,nigoCQ El6\Щm<rezyesJij"c#iӞw 4zAH1щXN9'-l6F5I坮'$\X.疗/H\$˶p(uONyG\s>ݻNT3p8~@qn[;f{IpmVuunj7A}9ZZh$ah8wHu9InT $r0 S)d|g/~H5UlÀn~o\LLy-k/hX|6A.[8Z69辺I=2B <2sKO#eW+N[$n- % ,jtߵQGS[ :2GO>%i[*L8k $Q @g2ΈzRLFQ#tD t=Q&J@(;t@eB$! 3 (BzG2TΈ A=PP{Y ]hwG@ I2Gd 33;%= ёW$Jcݾ|x*`|07`5d Lֲ-<5ߧFj `uqWY"-^̜Dut:ޫmtnd@mֶ$myp&g)OQ ̛flns=۳-U9xo`p>m[CwlB }8ZN\UL$8˨)'`@yS $^By!~~]xS6IY)L{SjS3So@q.2SH{McKߙ19G+T87n۲OU$/sp֓t[R-cA@}򺼾{i3D"t.ݧ>Nf#py4g%s3Zp_ ։L{%~xtyt5;G'Eũ;zoX;cܹi~ǯe4YJ< 8p{g<_B%, 4"2BDAB(GhꌣD <Qc@R'd~F=212{# yOc쌡@eF=Qc@쏲(Dz)'d}0 2Dz(XO%ADz){#Qdce,{'QXOz_dF~Dz1]Dz_d(F=3KeGeF(# (Dz@^.d=Q>Dz(Dz(Dz1g}tǽ5;}}Qym_OrӶsžpV6FlLoZeZMGU$~y[X"7}2_#'rOS,4h%OGDp?B#-Dz(Dz(Dz1g 0'L؜V2.GsɦRA;dRS寑m{}z7Z*qs$a~/Z)7 jvu{tWZ̎8qoC5,t`J͌^*| k6t̷se?)joZOPOT5 M|/oo; Zks*-LǙDl乸ZcNZV]&ĞF!ku(ra`1zY1[8oeWNpn#A{}c|dxYzX>#EibQ2<лeqꊉ*yY\^䜔$sy^:Ooe@_c>.?5GeGw2(1{ 2dQ{ 2(Dz1F=FRDzx@e%dg)Mg{# <{%@c ?D=FQd}FQdaJ212{ dR@#{ 2{!J2{#}_dDzFQF=FQda),{ }MACe>|KsK*du5A/KL28R? adb1ip-^9K<9cL-yvCQ贂63?4A3Z:Q]K\4MPx;CP:.ѻv[zg2,9$w;g+cōsoS{nnH 7c|u5[Dg[@9VNFi׾(_E㎶yّTJ׾8I dӖWm{gtr~iOZ&о6Ekit~YvzJ;9_N[ǸpQ,zty W0>最Uo.il8ykKeګVIl&wz纜:+D:q?;"#ǧT1XI1Jn]"nMW\Rdd\Ϛ7Ǫ\`赗JXvRL7툂22BOGeRoZs%H9w=~nSQq]/OR˜tUQhë %#MWu۫wD.17k;` zp;/C Y'?[D.NxA).e>VS)3y!u%#|q?!ی8(K.-h q+lqrܷCCcc{GnwWz*2j4 Ǫ}\idscM=4FH÷m ` dr[Q=I{L]}W u0`.1o x8g.v;{F98w9sJMW7uT ;d<Gg=Dz(1쏲*>^=sQ!GD (Dz@^.d=PJ>Dz(A@K K0 Rx@vM,#p9@! a@#vF @wGp%!,#]фaܡ,'BF a h#8OT8OT!4"twF$a;x@!F &@(A4#ע~0t#QbtXFRڊkϵ즏sN $4r>^@'@?'m"*jVqww`ZK?2Uԯ{im;F^DݹdRInCF䉞 pGoVbE$U& CZG%*꺩)F.h˧rZࢉ̤~M#IY(+#pd8;9 ED# s 1;%(A,  a ꚧ ꂖ$&@XDB0"t8O#$0!@&BzO"9F?T0a =PB0Px@#*-W)x}|i3{Pw|FQD 10NCNBkE>7y*%fdR8Ԏ{NSGV6A8`[-SL|K9coKs>Kݸn$ Ic$r{rXz26lsY=YJĦHL 9p9+Y%75 tږ!N0얷`URI0NѵFҹg׵B8%iZiqu%E\nva [E _YTFQɹ@;1ú9V #f:\{4z55^l;Yy@uu_*[)@6z,~<ϼyYer0 # aHKta@w(K PX@;#5N5N,'HM,#ф2aDpFH a =PB0M, 蟢Dr ~a@zaؠ%F)a< ;&dwF8K}2ʯ &ZY 1Yьi.?@r֮=I7UR=p2;^֌v2~pWiewW-'KWDctoya$$v8 T-7vOr߇Y6vɌWHO%a %׏]J{YI,ns"hgcPk=9CΣg/;uU_~LFk))k#oA,ۺF F3ԜtaE9Yևd܎O.[df.1xrڮT tq7$zReҴ*:]Hv$g4jn fǂ2P7{We}]hjr|}sֺ&cq3T\D.oJ[Z&ۤӸ%~l ٽV=EW5L9ғ,gk;?C&sM!=sx;1vn\Iڈ_uk#cb/q8~Kk)++hfIn{Lŧij,ex9ru2U^9sNF1מ ϭw"JCD{yOX*lSYퟗ]Ur{c4d1SU7 '`k'ڋL~;)cy- ӗ<Mͤ2F?ߦm-!9JN |9poϢM+k sN;?6{`-e:Ɉhn \e7ZxflK =I+;\I?c jڛ4%l9`m#.04ʻE͒-Āӏo4`]_=ڨXцVpa{avC=0 aDg)a n3AzM=z'ia@w@GP{P{;D;Ё&z$@!$/@ЏBAKЁ@K@@wKO엢!K> }@AIH#@/Gd }@z/ozRM=P} wHGDB>DK tB_o zdO#dG;#쀀(=(=cHt GLIoB]O7Bڒhs i%t"HFG$e̼ MJI,gaߧ_JɯI"iXrݽ>fx;/ӗ6c'8EH>{bI= d[K8#[:7F(cw$goES\_Yu3ps^̏#ZXzmV>Xd!+AQ;LsHDn2I;IV9yoL;zzLd"t%OG:!/M =PR@Џ zꏲz@@1$}t I#>I4=tg8힊Yx yiPs㬣L3]ǠOlJ䍬'p @:[e-+-3g.hZpP^pԓwtϞ^rezy% ϙ?U|D2FytcG- Xx+/syuڭUO s ,f03U}q[h!L]@@wKO엢!K> }@AIH#@/Gd }@z/ozRM=P} wHGDB>DK tB_o zdO#dG;#쀀(=(=cHt @=G}hwGdwG`k&vxS:Zwnh$x#uXo*\o˫I&J],s+8H'~x]Nx k2ܒ^P-T/>Kt9MmChh<2yQޥq榟!ds ŃۢB<<3Rm|wk>-K{̎ZHq?y<z%&>>Y x ƴ7«엢I=+OB /Am*1+dC!V*w7ªHbk+-1FoPǑ49Š1Es֞)/jՙ*~h`8 .Q${FGE&t=\?|T<͎ߎꥳXtHhU5mf-KP!䗎c0/"3[i*Jd-}q> _<&SLVъ*[|`r1땀 Q{i{{j!K2E[1fw/lH.FK$Pł ]ϩ~QO]LD\,z؞چ4N?kawnh; 궚<> G8Xo; MѰnӺ_6?#zឪ~t7U57hXs=ߨǓz[qc%|29϶>IWw>`hhݑ5 v1׿&_jd/y-[NsdžI.q.y%}W/3Z?OdC]=Q&P'#HBt=i]$཭GۺʬTЍB 峆}3G aoTo-ن Gg?s QA¿y>vƒ7vFb>\y$_ꏷZ!@   4I ;&d.(Gd hB"  @ F4!IB @@#4&hzPQ!4D3PBKhi&zIY(@zhB I4( ͳP6Xbsͭ6O Y I8pÞŕc* x 2ӽI$) <0hǯ>Z6n 9HU'V9|r50NG=0+9mzwTS7wlԱWEK#˩~W0\IW`s] p9Ϩ\[{]xƶ(i-c^y<85tL6H!#?UVVyayAIZ"$s]9& %!a tm c7 _^V"scN1u78<2gT ]9? Xt`Q_;7Fof^J_gIi(eǫ ;jJ i6pwWG#W3TCOzwiIGc/e2r'҂\Pʾq=hM] IB @@#4&hzPQ!4D3PBKh藧M4M(F9B4S@ PIAFPKhdQ.`pL40d&B PPM B0@$HGt P@B4 4@ꂉ PrB]@ 3:#A(AG4@PM/T$! 3B1Bi Qd BP@A@A4@!!i ;Ѐ!R(-sx(,L*S' %ΐǪKAr>Gq;tۏ2_éc<ǐ #Gb=:m t iAsJW5uz痼K󹾸'={m;1,:ےṜzt#e|7|vV> tp{y>Xy*)u6Jg0$3o ʵGWCN1,qQ9g x'++J ;h.v&0G LMg9ʏ3™5o7 aû_ԟ^b">h&׵ghu/3Oo} D6ںꈉn1(:\?3; %7Zyi%dq 2H;p:et _1th̬pj'\i`uTTƔHu.u j|mh9qu|YQ=yee) =߾=*#c ldm >D]-H#v}U^Y 0 -"KZI{N;q>Z)k<Ƽ4쬨{d`8}09[P"!!`%[ fYL?*7/yQC+&hg${ROEitc$7yoN4$O-(ijk=0\?UcRl.uԧ-~ӟw4s\,\W88 ;w=V6P@@ 1ɩۓʩ=UqIp8=Vr'#]RI54$!@(@v@BI4zRT$zGh(QDT!:&!@;$O)=SK@@(@DMKA`]#$ D @H!$ iwBB;z# G`v@BM$ ^2@3$wBiwBB$@(AG$z2cD4PA LtK<4A@v =QBAABt(4!Bt!:#; UK۹HRME%44j2#hǷy}4Vik Jɍ~=pTRkia|^Kq3U KPFy:9.`Hb?08$}0:mU98zls0ic2Li=SI^_E$"}U>cAFU. / Ъ?9vѻE@hhU}yOZP$>BT!R4 ;#@s!AG@@!^!FBQBt4 0}Q۪@}у~)!F0}R=SB!ߪ0}PB>B >@zPt!~=B.ǔ}PHB?T" 2t䕽*]:al3<䵼iwQO> !sϿqI>АUXlRWucLوi-q~\ L$h.eifL)j"EA$FHif(qс>]GHѵ*v{|ɾ]oߚaIVʷELb@H w+%zjf8ttm^k#uT݆Z6^ׇӰ8=cmKb44q|}>//4]7]-M{-c/HOl?E*Ԉ*O˹ow?R+{}%{Tö74OBOwbgx[*W= =k989sBt`e@}у~ TTЀ@wT#@}Є"F@(>BzBB?T=@SB#P$>BT!R4 ;#@s!AG@@!^!FBQBt4 0}Q۪@}у~)!F0}R=SB!ߪ0}PB>B >@zPt!~=B.ǔ}PHB?T" 2BTMB@}QB!&>Bh@!@}у ;B?T}Є!M Tv KobcZi!cy}"3e7Ʀt6Mx4\XWnיm:q~8'v\Õ|)=S(B0}Pt!Q~HFQM'j('!s =8XÏtSR[3a7K+Z2rś DJc ÀvR٦2VZ[mv*?g^ݽVXjfح7I̵'y{y 眜r>|BN.[O=c4tеIY\]#s]_ ǗrrkXQ$_+LH UnlQz)BD$ a\AAv)]h ?T IId#d}2@eBPP)2=l!u5P䤴Gtf:]{93OL\_ƮkAk?{R\ZK=4H=•a(aÆZ~=qnm+ L:; r8[&:v xsv>.h DiϚ[%~r}گQ29@X]daѳ 0n#=:zznZ\֎sЮ/zQIhe$Nٽ_=8P-V )+ǨeDi |Pǟۑ냏eucѺ[k[MynpFpW|^nI0㚯hͥ^J6^[H RvU''є .yKM/D B((B<#PA4vB; 2!^S(ꌡ gT=P2P 32PB!T 2z$zFQP(=P{]`b(ded.`B' CL:(@@g@S?.fʣM=Kh(@vT*.ܞ~^ $u z(GzRLG2~R=SK!% yFR?/IvP B (Bz=Qz@g tb<%ئ;B<$@vB;!.K#(P ).44! < P@AB)Qz(GzRLG2~R=SH@B(;@e M?V j>SOuuT2ϸH[~lqEĜюfAp}h-<X|=˺9xݽJh.d{ G˞+[Y#8qQZu8T(v7͏\uX *|?g__.\^=S =QPcFHئD1 )a }]юP>a@F2B i@9K4#фSKBKaeGdpM,' ?,'IzRT@#@ wHFG((F wOK0":#B0z0?T~cxDa tAPa,pQI# GD_v#Saۜ}=Ϫo=ǺMJIxi kIi|8;[ ar،U3k^[+NKAesHGPQV6}UYHim:b:rs$߽P .͸[]%SX&$4GDa+#h@h%eUMS7@ݤ걨 W [%ɒSaח*ەd,-xCZs{럓7K .(`v aB0 D#Ht!p4xH }OaX@w)Q %02XF8@&$S)cd a;z#I# a;SEEP&b*V >M =zsUcxK6 t L%اǢǢ)&qvB;]>GdqB8B@! h/D BЎ=P(AB$4vGB8Bz ^S(#D@tHDB8B wB88@!!Ǣ# G~B=QǢ tbKOD;D RL閶J5SX;r1z_ūPVS-¾_IHg;()!\ q^UC#xfuz6mmLS7>HKጜ9=:# ~M1imZڡ$tĵ$sT*fBi\WmfۮW[j#.̪IFN֗x'p[,ya08vJN>gp8^ r?n> 㓱EYB-<՞K]dѸG픵5q%4;Gcr= 3M06zֺV;8wߕrgx|G(r8WѻB:/{L=w9)T'U-E5,==AI3Dd#B;#D8Bt)@GG z hBqP2B  8GdGLD!z"tǢG$O"0r?Ez "/Q#sH`ysGmc[ETڸ|涒vH#G,wuyh@Df[[4d W(@!!=SHO=P{@]|z z!gGd ;#;%vG# q@R@Є ܡe AGdq# =PǢK2B8DwODTI#"t#D; yJ;Tc 肒IRqGhތ!$R=SHO=(=P{]iv) L&vK};;!=PMBDHt A} $&tt u(@ GdA>vG;@:M>S( #>B ;tΨz4A T OT?1H(=P{0J?TBuB;I @VMʢ?O4݂G*jjDl&Y[ -c9*'v4۟oQ60GOZK@zG>S+t1W;#8s{dZj_=]K'0FևÜ_sI}3.IBQ]U5>&pڻcOAz9%Q㟙įC_OJKђ MĸO(k4io[F$aB= a!v/DGp#MK: I삣! Dz'I:]0cKpqIy7stX/lHkOË@#Ro.x5WEVZ=%l' Z=B\=3 c;4Úo9;]#/UB?TE>S(Q#>B ;tΨz4A T OT?1HGt_06 csئbP]$z ;!hd##Ё A@@@  z' Biw@wBRBDv@$쀀Gdz@!4 tSK2Q =S4 wF4~D tME(D#4B4Lv@zuGh; tb]cuBiw@(Av ]`G`TBPRe@ &@%tw& J=O$Ψ=AOe/T$#uGhHOG%S^\@A wDQ4 B$!h)ce<#4B4Lv@zuGh}( ,tc}Ig( @Y>Bh@J2ϺM Ϻ2 /3H (( HFxB; 3wM3 s<PQ#(ϸBhϺY4cHϺ@34 >ϺJ2T}Bh)'rz>Y@B((@}ю F8R >AP \x@I#섲Phh}є FPP@)FPBF}IeЀ%AB)>Gd M@&O?tc %[9nzdPHTraXglml/,@gsϺY4cHϺ@34 >ϺJ2T}Bh)'rz>Y@B((@}ю M$Qt 2vM g#3@g Ϻ2( >4>Bh@Ϻi 2((@e S@@gϺ4 (ϸBh)TuAD> >gюQ#>B(ϸGt,(B>Bh( =PG S1zg@yF8(@g!4F}Ђ4 <%SϺ;!t& > ((  (B >餀2@Mtg#>Gt,> =S12&,SF9DD >@ D((@gt&yO((@g3 ~鏪2P#AJ2ateD1d(<" tO(2>}2,{QLeX@O)t}3LQeǺ> XM,M>}3@!3@鏪2Q~?TFP,#mfs('T@$vV1pɴmi8VS@9xK?TeDtHYNkiб Hiy%dj$-km@A >~2ct,&z#<߿2 t.{˜z YG<(Ǻ>"KyFP/teD>钌K(G(Ǻ <^z?D (GLe>yD?3FP,#Q FP.Qz(`>LQe_t}2#ߔcFP/y@DQte@}eXG<(K( =R>g (t}3@Y}Rg}ByK<>eXG@єeG(J2/gꌣ('zyGt"QB1@@!4 ɠH(#MPB @M GtcBh@]GrP@B@!B@T$#PPBh HB@MB =PBht$G) T$#AGU_tHk8dlcI81n&LTHB;&#vFP@iqe\dv}p[[ M=dF7y@gI,|KF_w߈;^ ܞ&H|I[7uS.@te |W)s`;q%v6;8$ WGsx̳@`|$kH=~\:὎6G诗N}m2924Cqsx x9+3-u~mm>Ѯxk( ^żƓYuQ)Ltm0^ {prou'~$vK$)hX[w7M79<(eO%%WSw8oϨsԯWyw3^|5Efi:3;<׼c#$-PRK4lѨ)Z cCNd A Ξ]>4NN2YK䴴e -w*Hvk7X~9xj?~G`(2(K eG; .P4$D BKBPBrLBG> zRB$АG> .PzhIt$}D !hK#4$(G?T%}D ,"pze=#" *G*Nkr:{{:`T$P>I<dϪ(-n֞&[RqZŌ=UCMYuZ#'I$=֎I>{5*=u▤mQ-TJW $pikbkGM#-#%e}S_Hqs~,eF[F*j[6C"dl' zRB$АG> .PzhIt$}D !hK#4$(G?T%}D $"ئ9DMRG(d$;>G`(2(K eG; .P4$D BK!fWj;%I5W 3$<OSm_; Ljjh$lMa$6e[d9Shq8'z_s:3G[KҷHpY5´?sK2VŹsgm6|DgƋ}U[G>K3e,}#89!H$$\$KEjN(觫""rv|L T^jjlGjW[on}/:MF ؕ;H }W=E5ӟ*`Ljր$ڥ=;(.X)Q鋵Y?#nwp_v+W[jK= 8Ĵw vp#sb|o a,FJ5 |0zSjYk&6jBDZ<:/j/_ fӶ{1ΡE rc~ѫet9M'AjN ]YAi8mi 7MwJ5t3 é|dÀ#V$+kN9UZ@5KNC4eBdGba8k9LS)B)qW[mq?,nWj)d~~ni3q2hW=.7"!{sрs). (ʻGGQq *jfx8bispI^B=gYuM_k*Y[==E8 |R5p>UoQ;_)]OItLS$ձ@%A_m >]m^<MS$R]/2,!kr _ Geiu2S΅_Oa= .igrxVLi}D^xQgMg訯>m4r4hh~x_t9^~O i;mvi݌d&\DzJjj֖ ǮKp~g~{WI; r$r48'p:^y&V$iMk`y<240c/G.k ._Etu,X]{7_\Wbч}a5H16*(،ܿdW5tcײ\͇V00as)GE~)e`%kF{تE!;R-ɠ1ǘcu>#aoR\&tR:⊲VI%,#~26QxGGj6]c)?D'^!%h;3x OY劖L; 5a'g=\)>3p|F-V%D13i] d4q<pg/%v'y%+\ 4Iׇǁ, h$fdG ;]J6]q78 OԯQ߿c&Xk;6]m8Pѽop|@8/_F̓ F\]"M>\M[ץݫU:N[ps8i>y`99"{Hk8 ~<S_NsD0s9+R@&X;}gYgWii7b@3y)^"&l%좑]we<_j_5kTG luC G4~z9]^yUᆪCͪXy^:~ 4ڇO~^jG1ch`ۃ#x.pyEy͍ǔO7Ku퐺M9 Ĵb4GN*ߝ>"鸜׍*jnz?U5^4]Cku}z<io;@l9.gJKa~#Wvg=mvYpVpmf899y M!T:Cjʝ9|ώqݨaXnAA)͌Ӫ!oL-p\þS[~2~ 6W(.VUȉa [3xEl<15' <à /ٴcpw|Wd8Wg%};qItΦ{|o/'vlt:xr-1I_,#"=V{ב/~k5GKWuw}KTmE+BysS+OYuVdZZX5kZA$p:u^h;|crWE=_>/̃#321308mQHճ(_NQ9 4!ǨWߡ4ͦZrGP:ZzѤI oTURGc{w?{ǀvjYy)cseHnsi8#د֨=oej = T.jJv!Ǧx\n/򢉴N6&htpǻ}}MXϕsɐ7! %>nKOj;v `$k\R~${RYqם?i9Vz#ڏ؜[Y_v .dFؘݝ,gc]ӓ;5隋UuU4tRCRi=dOU10/N4jG9O?^ $1 WzlZ٭mThjaTe'98:(qsCwZ{Wk kp֗٣%P$&94wKB-ܡHuYkmT-Lu#k'%sFF9G([6/1]W55c* OA i-,c5קZ55soby-xHQ-"4@(HGd z z@BAAv)b@e@vB;!.deB%(( :(H }z hB(Gty(KMPP@@GdM^e/T$#(G.HDB <)wO@!@ =PQBG=?T %PT`B( n81ZR˞ mj-TO{.3E' 0]գ-Ü3P{;;M[=}#){cIUJ<lzS_~[p PZǺ ӾجwG,Zꂴ%&+ɫqo{:}N%xˠ:9)ďUԚndW8KE#g{Oe-\h[lQ5#kb!nȜ.|h5C8YO8{&e7X ;9גk[R5_ I|4Z)ˁ:X K])UXb11灏򐉜/gW˞[c\m h 0ו9[+C4ڣGC[5+eܜ./yss$]Ϻ=/D B% w) PHQBI3K?LDeQ<>(AB ge.!PGH$pP4!wL*KpP3R&K^k 2\t=7F&G7-*Wi7\D6*DH@?$<ǑyOQA+_umu7?aY2cdߕ<ڻRTXn!^tg klsM!1p3ԥ7Z|_nKDutwq,kF:40}rrpK> (Tx'|q̮ ?n2#=sF+oXJxjY!u=C~?u4Ux$T]ǩ.g ݦtP Q!h.ƓwVCDJ ]L|/Եr4?}%,,i8<{K0#jg7hVSJ -ʛlc;'gU/+=}]e]Sl6H_Q{a<>͟b>-/ Բzydr?.,.1:|Q?,Tש,GN\u (i(!2kr@!}ָ6u|/ U&p 27EM#y1fLR6CE\{9/&>`s2 lCF#2d2P@?1xK?/˷=~eg[~+maq{!"8с.vN\*XXxZ)4Y@mI$сW4XYqZt<]O3myiÿ|'hs7aEnpvp2IL ,&M5/XҌSYG33AcdQ8{}hUx .PUZXٴ~l?ccВ˝[9eF]`X9vˍ8oSOn>"ӖpA#6[7Xkgajj #\d8BA;mɢzV -X;:vemp2ܧtK9!P\}P+oL[ ASxs;T) Jǯk)c0 RG)|44WOTZOqgݴPS{q*Hi9-tSj9+r2­*˶[ca?v~|;]Tvy-Hu,9kL{\ rYSP_eԺގ]Er75W7XݻÍ@S?dOTa}~cø̍0@K☘؏E~>5ōTGPzHy]p;/ VpՒi\ƑԵl{H/JxvNv3n|k魔ͅ~~g`?hGUjGyɣ?=v-1w{̨KY4:0C3{/SUtXL?6O 9&ǜd&rB [Y }U2YH=$AXϩU[U RKwT焳9LpGꂼ:KT23ʤ*0g@9)wKqR+V=raS {=eG茪rPO@H3O#T H'O`(݃.}=p:#Od`|%H;#DoOV%z_,#pvmz_~[ƩODr<*kD4ǮX֏z.9k/tƫжOmNjX479cJ}ci!TXg`q6RPKKxU2j)|<|,<{W~?ltS49ACq\1f`08}=11FF@)L4Zr c[Ǎ!`nD"Z}e c$zԪ1~au6EPګlWjsnP: >pj~_y_*?kJktuҷ_SN0r9 *1Uu;m F !lto48ux4 FTe}{PR[Log?+r99\/ͣum^OiC6wW5@@W /P O]T$TBz@Qz@rT '>RS4I!h8K#9Gdz9Bh@QD CLtPH 9K>M9M.rPz#S@G8FQ"IꐕAW(ꌠYw@B ;99Wi.4P q gzh(FU觕 \zečeSIF6]ApF=6V(-^辶xw7~W? {*.zIڪ˩?4sb4)-)KM/}Lϧ+O<(x-sq 8UN+2cI/v[c:8G#*;yc8+A_,\835Gc>>cOxIKy~.3\ /kkOVz-*o"IWuNO@`/5ruzpU~a򼽭۶LDz\FަϬTB{х,~#]mm,"7v0G_q_)h_Nu7NDzaL71N#\|E`ZQO!X-l#i's.߀*OjV4s.AP gNh;LT< 'z_c[\6 SD۶O#eC~aI xMglzOG;V˃*q%Ұ'm2]x\WOK uYx`]Q.`'}뎖:kcHLz;A{c7[X|@ܯo"ڪ*jxh! ; {\uK,S?|W: >pǝ9q_HpP.~k4Ĭ:Oi6v "hnr6d[peenPH.cЁ#(@P(; 9He>Q@G(=ANO)S(P HO]>PR$ |I|4x0}')gGv4MVI\w;?cr:3DbI-C|}0.xϴ,N?b,k 4.O9O^߳oJ Y!Ɔk\9.nOS=o.0կn.鯇fk,zRsZg vד ~[@'+/ρ2QI:QM !3]fKkm=$t<.PCý/DȚYZ -'AJ8TB dcbv9PB@mYt~otnS:0C TnڍU;=SiVrzt q9ϲ UHo.9hcGC1f{G~I' v(Z9*8\ rOr"Oh#A@<{wATHs=xR-w B=ʹtm"lc`Vȥ@,iiK9\ƻ9=g:wzgw謶#1ӂT-ӲQ#Bt.u%1Pf:` `(U-q=Ft=u@rzl9*7 gVi}ԡt8&\TZFSReSHpx3H8Q:@{W5pv WNB  oi#>OaU#8 sg:))%d2Ns#a-@spp9Sǯ =Q}9i#AsuG X=NAuFGHH 3܄AeUR#)m*#Q*ϯ8HџB &rP.\SA a .N =0QSAp^:M {HPOp=\>QaM *IR  ,\$HJdDrqFqH%Ӳ9*p[T`22x(ˀA#~TO6]Ox8] d'<*whƪ_Z*HY_cZ+ sN3د&xq}mw=?@-٘ўt_T+ c 1;Ap>v9cwr1_t)W¶ƇQpi6N@.k>v u_T0jK=EF񖹧VKړ[Z&#tx#ci\;c/?: e ]ܵntyg&+ ^e|k u=qh+D*ü?UGtN=Q=Q t L%ئ! vB vGtvK$!BDLt e C@G')r:z)/>(QSVSxm(Q2`9)+V5]Z rUI`[sߡOy ~/JaxqjL kk&}\N5l:פg{o9nÞ=0}_Utwv=76GPwpp~T[.z>QG;K p1 9Y[okj]}͕XptÜԭwgvx)5&UA#Aq {tV1/*jÓ2mdBu7UԱ{KێR_\v s)sJ"Rn39D9?%%4-Cu$DžJKۇ|*rOOuIq' p??cG7M5f5$fZ37s\ִ:N MnUhXzMӎz@x' }{)JxQ?HkYd`?L >2sajO/VU(qjrqnp=VG+N*ya<#= q?×ώ^PQb?y6rAo c^Xpco%ykoo/hj)$o 3q li姜?|]M[k=7[Ul$M-|7@*g 54Ζ(!dD^q`qdtRrYv74bY_B豟5lS:1'[ۛ8-,=ANj"*,[r'/A%E]EM5n/zK|1Wy |ɵO!^']'ԵMsΜ0ƴ0 io~vwƟmee<}vG+e]m5ď^SVy٭U2爜sno_OfÝHTۛWoT6f b١|6Yh5Ź5ۙY a88>؁"@OA2Et;3UO{ݴ4g8g; e~ v@ [dJя$;`}%*rO~$t=P\k;y.$ ;%αEC 3%;1wLOt]##aIZc9>j-k/S'[dJ$qsO>l-1-|X~i3jj+Ɵy}-h䖒.q'=NZSMS횖A5ʝ>k~1 V^:9?3tJMT42EHO}@ b k8zeG#IyX7Q [h4Ӳf\lm\lU|zN njI6k 쭶b&$8\<0}~ِv9Dzblq9R+'8D4=1;v1ѵ[6 ܤ\Np9*kb܂21=ԣnCm=I6oY9kal>L \F;~*ծfYvvִڗ]Wrmͅ绛(#w _Bʩt׹=}&K!|/b|*+W߬ӷkFFH`PUhkp;a0I!x7(NLrA^O'1 9g)y"HKz$x@@P.J[}_pPdz*<8!6L\+ uHx'd@g,e% y L%oy(삯du `8@$p=zT< 3d`—!,:dspy@L nϺzNyOv{ nÿH#U'{dc*sC)?B=d{N?D>nϢxNKH@z9FR%Hу$ͮh+ gS7v4ռgǏ~նoUV :+E;ʞiyo,Np?aGzyyk:\+t~!chUVHf;Ug/qWO_9 D߲.t ɤ}✁9xZ꼒pW sha'6%U(Xۗ]WJ}>OƖY=E|q|.h4|~DB~ Vg]1qTO7w_'u+c (p-7);Wr_Oυ; : 5^M4-ǟeп >$|Cy3qw ic{q3ۏ!z 4~F|liYxOj/-=@w.c4*?d@>]OR@d`7  8i +IyHϿ!he7Sx[;ϩ|e~QxMbc)İZǀ~wd/0OWCIgYbi!,VI`>Oˠ .?T N=BIpW*ѐ~DIAwn:p?t2##of? ~4?u0ACe<ֵ0~ꏕ~b삆iUdi(ϠU[xb $`=0w(.p2` UKy?h.o117g?D>{zzAn baiy?ϦJ;{*O2#Ǫ'qj}9Al3tW2q#-,^DNta <qqTӎ?'P[x9 m$cI dd yzKPQ;#pT\AmUn9 }VH;}H M,v{*:`V _"i)X_ԆFF8YW*[A?d8?pszV擃3˟TA7 {9eBǖܠzAm>g$+R\rlPc9ϲ :&w0gC\HrPZHoh $2\q~'8 9-=G%*N8*4*p9$; r 7gR.5ָ*|3gU*xwIweyv촑Q=yFkeԭ-ۺCnbv~uW:Y-6΍i>H8µQSGy|?EU.ݜZeu7Ծ:mQD[o8}'wa.|2UA,5lyh篺zc>I˒eᎮ]3xHƂh~2@kA`X%hrp?ګ s߼:17{LaCث~2S_pOԒU>}ӯuydYJ9\C/دi&ɡJ`TL{Is9q4Vp fKMũK+ug_]G@~4P9:zY \oǪˊ4ttq8_tnWJKG "tb *㏜~I'cƾI:TZ`yȧT{iq+FWZaCGOVQS[SqN#LҼ1ǰ_YYҶKMSy&y3woYۢ KGKVZ U7^ zb5_t×NCxe1- t/<|Ժ6yf ˻MHַ\r0޽x௿a#ߤ|3ު!k{}B춏OSK4J~X)#ez7M_t }aف'{ m1e~ \3M x*᩷xWbG%[R9-#srzaPxeR$>QpKwPOZ3q!?= Q|:0UmeV0Tdh엘Aڨ- ~*2@1fЩ\ED dgU9>*8㢥 kS <SaPf#7} U+%Ď0''uh;À<+rxHseG@=Yr(G(dUouITPޤ 7ꭺ {S9Es=%7 v14sys9qN}1 2x?@8Ozd삀w $Um?_/Ov@@OT*8U#\;# CTN>Tt=~)d@GPO>.@nwl3S r8F}BwmxJ nWvQ[׏t#f;v삢=R#J12&GNJG8H=8Ӕc8H?D4Cz[&r DHI粨 &gH@( }{c =RIxW8K H} @Gd 2 FPѻ'@ 8'dws0vZ-PUy *eG'N9PݏTdʨ=?rP,1'z~=ÇV=x#(I(HUUg (-*t*=Q#uVz`g(=v8@@Kq8'(\[Cp/-dý?L10#0B@9ܤZ n ð(r{&ю@*>{0OTl?oPHTp9HwT=8 uRI71-/Y`ap|m ԄimI+ MC/h=O!rG-7hV7jWH:VT q}l-c\K,-hk;0W44Zzgn0\Rn8N{ps[wXhuv Kg]z*]>wP{촮ia _7 un2+uӊZOʹBFGB2F~hj{ U;p fgq\m݇+igqJidg[-?=ݥnvXdu\T>2ԇ5(u/c]#~<->w+R\ ;bh=(ˁWBZz'r86$Q[Z  c  WAH;y9Oܐn=V1凯bq t9股 $89za @ch9TcbLZ<9F\x$?El ߕl8 x#*@{ # 6!9![]_T4u%VZ{80Z1۔Jۈ$? Q@3{ ztOdq˳C\sD$JIIip$r;#:*h c'XݎvϹAPa\?G?hng)98pUf:[H a!=9`id~i=9 0 ;=vF: s$zg6^Ihr!+uR(77oVVm8#Q9聂Sn#9>P9?L&DddN~CRxN#Y{ʩ04ל,w[Ae~l#%gmy-rNG U:6@ ;eXkfw%逫h~9${ UbrK\yNɉ;iU98~*9!éFy6|dG0{[r9%˹@qأG({#e^ 9AFؔ`Aoi(ۏUp*?Ob-%x??t]yub FƑ r'>P=y@9A t#҂<22xU5eV0PZ=sG8P[H7} Ϣ\ `R]۟ϰTϺy$rP2{}Rߑ To=:G=F$aꂠ@R p$x@n$p(/ Ǩ$ êRҸ-G f UG^hꄯ,+n<`ekB`cx dK#xlL~USZdigԾʱhT%a'3uYnKG}BYKQ7k2*vr~tTo眩Bq8ʧx#(x@Ǡ(GK.i9ʺ[go'w!T=>䜠`|*U"L`DIm{zz}PZ¦g,&4{kZI$o*]7 :Z=5DnX^\]O#F20p ( GIAO/=}UDuF~W 3}ܦ1 T@59,ns%c#")Ut`0/F>Gx`R~ۚ1p 06` o= X< q~FG99ꂟ7ԄyE= ()LY9_L$"#-F~k!GLq%AۯRCHǪY -H)Hh#mwU} ,kH# *?'U'wQ;TߗsV_UpdAh'=kYFadh돺˽SF'%R^ *'#MTHqT=B6uRly=~=Qt#I'}FS}S- ؃G8ϯDuP<n:uK>Ɠ!vDBxW6@o9Iy¹PH-2f 8ꮊl}09M,n~W;s3`0i6i;oD\Xء?1&o#F;IWLU;q~E-~:%'# I`B 4\r؞}X ))BOW`qIOnz$Y?=2>3=f!.ap됩 >a[ DAQV8h0 Fߺ+ Sic Z[huT$H29Y/?Pia<#O f|ƴ :8tگ0¬66 = ! 68du'a<={aq>ࡪmSH*fCWKQ~@>O <0yK)3@q"}D2?0{5ʮ8-\L@rm'%pq Cs*ՑK#pLsv ~[Jc%7Q3&bvvF38!= x24{Ci]\J&`hԪc4PR-qϺa Yd aTz#FF8%[YOAO^VB0HTL9O{dǰʴHO@w_0rBid~q@(GknN8UP%qoCU q585\'B2SۓP3ʫb J @?/l ' UmA%|z GTђl#vP-?#L @ 1:#t]JhyFzlϸMSt#'HUB C1䠇g> g!dth>DžW^Oi1d n?oc썼EOt <qQP){#*gN->cP wTdP;G1HC8O{8tGqT8z q\{v9F*.PR.( pK󞟢 |ʤ1C࠯nyP琗 z'DS8z-P#o@,8 n=;p}A@>]ߢqrQHd7 t+:zeQw2=8@#>}Tap$ y#DCOd4{p8uD- + N"|mq p&L?)OtHDnxF0Vkd͐H҆tYj:W9ߪOym2>V ICs툃38|QJ[{-l77ޞc+ kmjbY×}zfGp@Kq?+pin]PVPREM5LQO#rNQC,lϊwOdh&I#QYW :HGp)WsJǴ:7Um88pa[AOPְᮕr=aӎ J9uM%PBOVů7U!s[ܸ8HUVD ۜ/sǧ[4SURޕ i'g[NEA(⤆OVeE䱴oG n;}iY_[1wǒ~fI#^gFӦJApx\\>d!rI s?ߪ3o48?AV~ģ;nTYd!=Hät]jXF<4QE v{?ܨtmÇʼɁX*\2GCš6[% )?e-ɹgΦ9(H|a h R+ĕ̒vO OA#8!1ÌL-ж?MEt6Fӥzc~9ʽ@%F,x nPq\;SJ :!U;6hq1 Ce n&6iKa1u 8UlÈoW#*k,OWdkoA &1\E0ށ!ﴪw]fD?uP`+w| :d4=ic# H*Dgvw{@s9 7gWQAls `*KID;so[]? 0Ipߪ&[ vHF;=T^>'@zmwO$1#Q֔gL#wUBr:{'gLa@]Sϲ @FcFP,yGFqsQǺh4`#Ta@1K>dR "$z#%ܥʽ.tXt{*FqNoXUq'1'Uaz=qUv 2P=FGANu)ߕY%-" s~mOU~[sZ?sO`ҏ-Y1lo[Z0?Tضt*θ?>\? |ؤbW640ݽ AdGTZ}qKw=S*G~8({s*B@ydm!W`p~T}?8?䮑؄`J `-Wҍ/CDrXZ\U8FAgv 3;_$aBz'uou(;?܀oSi?PLIkư=Ó!l(ᚵjg}O+w`56CvƕRѭq1}ebFPyQ6[D_!%*}8l,<&U=$N7ӷ1C'Vs][<Z0pu:Dl6LGG;8[㍣->Uerc5"Ĵ.iZg$'o3rH%SE ]=B[.O zeoT(\?Gdz`zGGyV=6@DoWe,oKaP?N00>y-\~?v;low?#]AWٿasQQEGU!y8} Low?ɕN$ZWNQ? y=tlid Hi[@V[?O#?*d?사4S6wAW%[#i'[TwF iO~ϲ[9awd|#3B//g<2ݩcHoFG)Lnpʫa[ z؏6?=wP?S)r\ 36dwF?2DʜߠO S&Zuo;|Y사荿eNE"t1Fny m?%N*Q¤N[TpDmw썮e!}id茎l?{O(?twFg ]@eSn*,}B[O#ido=PAFn썤; [Op##dm?(gJBU 0[0wA#A(1E#?g+_썞}ON !>U@?X?;3D!G{1@}U6 pdwdEuW wdm? cF;m?U(§ioOid AAi{{#wBdlvEoTV;?U")=V+oO78AVeG#[slǢkA0ċ<(ÿ۞ߢ6EN9oAV wTwd`GoA^%O 5Bۏ_{O[Go@cOc6@p[#iH)n}?/,?)y?d삭 <8}# c@aǹ SQ썇dg(* goR*=?R7d(=we!~,;SSC?T?썇0G[6w@p*m?#i?삯vF?ߨF'-;[]쁗?wD;F/W8YvT1ʁVsQo@aoRNU}AK?G>Sg[OpPr9[O'YgʀF?l?# 7iH?$#iw@a?K9?{ 'AdGdhAǡFPLc#=;'(-e9w6;]nɰs%bn` 7=6wd6Aџlw;6~gd[ONzmwN--O; ;=Ja]ؿ IػAsm>O;TrwC B1+虍܄V? ~?tm±{ ? =IV@ÏT+s>; =dExTeWHAꃏALYw&?so>ZUo%e"do ǒOTO }sl'Ty$3TsDq%_&#w. 6^Y? EQw([Ugpredict/pixmaps/maps/nasa-bmng-03_1024.jpg000066400000000000000000003166641427377236300205710ustar00rootroot00000000000000JFIFHHC     C   " O!1A"Qaq2 #BRb$3rC%S4DTce³1!1A"Qa2qB# ?ӚUj|4SJh4ANM)֟E#LJ Z^&j )(Hژ0:QЀ"$RcLqڀ"ÿuϋkFHu:*?(_5W&\׆z炋`b^u+ T0x]Y4k=;'_jDִyF8Z q*<DԖP3qkxso m!PyWNrc֫X uKN3wScrh)$ï±xO hioa֚̾$L¤@) \͏ u>ܕZRlL,ھmB@) X<njG% x^O Y<$Jq-9)au@XY*Q~ rO0 Mt.i=ѶeonmHtd'0y\Ѩ=|e«gJ-5-KRK4A*$!M ֮|B3lVC!$ eϲVc or˴+%WY6IM0bzWCmZOc2?(n7JPaeŷh'pV ޙ0k#}ʡjb9pUR?@ܒHxmMd\q [y: H*JY/չV>+щx$+jĔ!R DŽ2H]?iD:W`T㉕AQ>aYY*D@Mcp|LEp,ۥ1cE= տ .hLݮ#Ph\+%weqS`ܲJ-qHJ!%1aVow$k- 8Һ:#iG} }/;>öm;x:lY<< OU; y/ =} ƖdEkޝyd'pED[0?z<Sf.0w+x}*k+-czNzL)P-EJRQ1$~*=y'j#D6d?Zymmv\:2wc؃3M#ŏgLJcs`<oiqwX,A*(oRsۮb Ŵo@-$u2`~#|\hm#­%UŤ˅Y6% xI,+HZNn[Z:?QV e*|Ak,%*VpP#fBɎЎY?nYշ,w9ki$ԗTJG{V*FUbVcAsLNs{zDշ"lN9n)$)I`i9DE)^Y*2.mc{@Txx!-`SYCѹ;rc'w;Rh%eOR9m䮯z/ UZ|~8)JCF*=kue-)WR.+YFv%EECid՟Sxa sαůJ0e<&$JHo 1H?4o_8-*6\߄Sg|NkB]V3rIWpN=RO3njqU3d廍asjRLDs=*$y>5{#r(Ҫ9jZ:mԹDE#Ucy}7H]@O1'*;$*kug/|JPD mgHLsr.P\VG%=K,=9u\|`DU;5)*Ha!Q}j'޲2 !aKEϘRBy&#Yur AQRlC9G 2@@R|%$OSʫ MdNj,ns!8+[e+@"7H17Ge%!$=Yiln@TNsw"H(bxPgbwv)C)$7$ $I4?eU+a)!A%M@'XHVm= Y;}SشS @=گ% V_FczR :H \c%$Äg LLޜUm!OxP[gu%E+DW|n+bշmXP[8 IX*$z@a0ZGK島,՚ٻ R`uj%= }[qꟍ_ aE߲oQd2l?z)TE3GE*u71xV߻.rKSm\ZB3:jBu+5u?њPj+h=f Ur@i"JA@YYhU➻t\:/m .ykKA'pVIRDIcVC(Lt7p8 L(:-KM],2;femVQKdgeڇ]+6EM<m[ SpTw;xE&ҙ=OYZ_KjI[ݒ- Qi R`go<]g_?Zrn2t [[p@0VM]5n>w>(`n h֗ť-"Aq&w&VJ@JNܚ'wi;7>_b׬fVKI[t}mRG PTv/߇_"{Cئ5Br5l9kܰKhT(H*k|bx|/nkGmR) N{pH#Lu 0w[l%ދ!Njpkr)"/˔FSg7I]"]Ԕye HjZN@* 7>vjr'gn!K aIJR (T:o< \=zS8J1L8'$Js/ŬMņ7}mOڶEÎ HQ$L)˚Zx OcYFa4^A@)ieiԗJ8hxFYM~FeYxˊ RPZCR]KOz~ k_}5voԭ8֮Km^BoRRO 洧ŎkƯ.mYKSi1n mZ[Kb°NnPEg6׌rI'K 'n! - *BB ;@NoƸƻ[ctѶM ]9svJҝ~ v; k:U|Bx0ޝgFm0WW^8-VVomN$btwLi6Z~-,l,CO%j[zRw,Una]ilF*DVSFY2wgD6*noPOayT}߽_-hgƤюYl㺝RIL!JH+IN:$iw\|[HeonH*C H0gV!<^xss{[w]%j'WZk{.cW;&@B-LkY'j8Ou2ZS_eTVTݙyIB[jv I<ԝwW~CWI1il^1oogGߥt ev'/K>9sReAv$%T̨U%J0+ӿ'#3Hm[דwHSNY3G ־}h0 ę*ç2Xe28nJSiԴ!N(Iހ nw.u5^o0疲 AW;T$B kys` N} {s*ZXГ*PV 7[AUķk Lp?,SPք!{֦Ċ[Dqs@A}LI DlOڀ:6EB\N;$WvWz')ۏ)6F'UWZkJӯJa?}Y3awB֕N}&Bd7F̫*?ZGq7W1ENc^-j <Q;RБgxmY5?TXj=XxٛuvZiRP) Cn%悗WϏ9tO!pW8^)JV[,!)BW%* Rڥ#*l=||zDz-ۆ '@U+JnnUv@@T:iѧAJsA@(PdZ)]bVm,[Hq$)' 晠^|mxNJ>N9-+! yqIhWSt}` =InC2?"l\HHW! (iO +qҦ2r>B3j='|OFBezl&̧! Eh9COjLXÇ̒eҴ!+Su'h HF$+["d>bTXI)&TgIDm0:jURFMrf u[tR^/g5^u"Lz$Mjg/nfwM6u^R/h;JXoA IqL{?Whz-ju RI}HÓzt/)A9f9\RnꖋpHJR6>x^5ic,Ѷ򖬅EÉI %@8QPJwDAijݖÐ jL=N(uA|Y>AjN2J;.A8j 4jk_]u* Z ;D@cr >=jەxglڷF5<;Ä))@D>nD9cn)@uj%c&ݶC&*R m pV1$@3+>g#1nbڑӖv-ڔ-iQI%!BRw@呴NsƃZ/[L kwKc\ \nOִ^ 始m_qXkdFRqJ;!0R"< oNәWś+rTոrHOT%TR0Aj7_?(J7JؒNBp)5&爙/vFJ3M[ehG?jj}E5&&O=VYKe>H嵀AJ鬎8y% ԘiGe+~6_O\mVUbrN|#ך[/3Z-qmWͨHWއسmjJj;uvvW)V++|YZVRcmv~?ڛjLC6ۭЁHJT6W<2rv)էtTH>}_VZזlBľJDU*2I&Ӯ?yfNheYo)8 wTA/%3y(u۸M8ֆ$xJVGie8ݰ-F!pglg—;K ŭ}8+;`ABr Wx[|'Yat䲋V*Y I1Q]ɪ{b'?iN=~ܙ6VY@$+V_| ey:0Se42bҢi!`'eWMn$:,xQȶ39 b/,T:jj.) li0RzkYDr{?ZY+2Z%HVNћQ?UiyDG/߁IHRL)%'+ӓ nT'.#%O# ~|K!Wu3~m}T{߁/{S?e 9%˽.$ npRIRI )'jaBLZ3Aim3X?0킥inq;ސ1"OqUz$TJQZ'\潥>* 6{˩f 9EI % dq0^ӟ \]BŹIU͵T)1@"=?m +1;epriAn${O|cO܃'SgOxf< )$}AJ=U? >sI(Y|$iKeJXHkRo~zg6\"*nZ$)[L(yH*e/Y~Le\Z[,:řPK X*O/ڵwsKPRN,Y!) m^[L4\+$RHޙQ?fþLZbntB229+v$Z[i%"~f93:M民wmwd”TٷY>Fj)[f'iz|=M<XMI,ZuLVl Bu{R w6qZ]CګWx^0fa7 ݥIWGPz@Tko Dsfٝ aҹ}%< |@xFdq8ۧJ++S+ZnB!)lլwx-Q:=5c qi зN.<)-XmJqJf:#Pqobး.7V%an:ŽʞAXF˄JA' MθX:f f3yE!wYlL!ٺS;PTF._䢭ZxEFwO?qcm߽pHAT# kOoP{.LJBJF仴m4I$s)j]3v/#,mmlyK[ j|”$\ڄs`#n Vsx9d㭡Ŵp8YYKmh砨R3H}ix%|R#8/6f%AjCj=\IW)*!'~%wVSTx-;Bx{vT@JfLu⾌Φ7%b{ln-[J# Ae׺+=,咅m);I?)RfAАlviI򏚲 L؊&  3«*v췦]k!h (ӵ'-͎BM)ZXꕥ@yH%:Vܒ{rjjA;#$RH.|4ht֭^%[86BmV6)ņwu;VUn8)2_:֤@ۡ.ASJZGmBθ@n 9@!ըU Iڠ*'_xW*EY/pBNVp3 >Ʈx6;Mq8[lm/%q -)!GS<$UrHMz)ZL~F 6X}$?7r([|: &TdV}ςZm4~0 n+3&nDS6أ4H(Eovb6Τ}q{hqSҲ>k0~6x+-<(KVCOެ-V(-(+T+ 9%|kɻ`wJܸ]U/8)$J 2a* :K^a eN:P#qN"JR,g^hW޲ <5[]<[/;wjݰRp $ LW㗲[6& ^}uv{^kaEݎ/[j!>bSGHPPnB9G. l3ׇ|eBc5)M- uF sbHڔ/ůr]Wx3uuahѶ.Ԑyi{"ddٯ#Œz CٲHup섈It@d^'<&Z pōcsm-m2^iHGRX2 $I!{2{dZe\(Jip!e )'a)9DžMi}GѸcImBejI H3no ]tifQ[%<o_j|=)XYel..[X6cއ]<$HURR-#T370#Yxu.fl,׶*oSi[lJ@Jo6'R3Px6ZKYBqo^5eQ />T 7VMjS KH/$B\=ۓJ 0gީRL4hJSv#dęOoPX]9T鼣T# q40x¤J-"6Anl,-J xɩN߲ҁJ,$9_ *j%W) q o>W[)Ÿ#;NeJw3֭/7/:ߖq!0:<7 M\R&e L􎃎R 4A;ahHJMj>SҦ [|[D{8 d;(ERI @z.V@@$7@3vK Zm-RIp?lTi 36 Ryr~IA}:1qHu.,IqӿQj;Őbw-naB x&\O^ڴmzKcSl mAmЁ JRU Dխ[-(u~Ju;%q!$'rB~^{e>ͺZRRK @3=@Xχmn:[)jmRd @>Hu8S;IQ=R@<{ Ȭ>%D{Ux+Y7ӌrKB-I i)݅)p'lj, )pYP/lԇJsrbTmzyaXWUl|Q<$qӽLxT)n,ۖ@N:8}*n%l;5|ZKTc.5˸i.mlno QkJF@;A0Ot/^8ZR %?=+"A@DmJ P!B+YR-Gif[%K8}n/.,\I5_Z{O冹bX\)Z$+}e!:xHw[sk@$2DvOY_Ծosnxmaʤ2DU9 잿p6c@l\80X;Sg֡rMH.6nGEyJOu<Ɂ75&E;-,TOnGR^@lxy B5:]F_pKM,(OҢ>uٕ|uJ-JCp^Yjj[*PZ\$GIO(f}՞n;i2\R 7BIt伙J uwύؿ}96,mNqh%JRZR:i!+qD -)+wD8 Ѿa36!ql峎2†)*R@pUƊ~Rh&#pzWH>) r\os= ? nv {Ư9KD4uK1YT8(WxuTj;-@}Moj98HQDs^n[M(]ݴyA;|MjS&`/>q2E +P$yT)#&oxU+YMQa0 ]4rWn֐SRgfzCV}1h咭rnY8̴VE[UА !%"P$i2?/jk+Z|3xY9o,`/nB}OݢG!&@yy7<Z-ip|mr8 KY_CoRL4J&0o:IZG.sGeEMjJA -apH5W^eנ u/tŮ:d&ĴxS\Jq쬖|33~!?{IouIł@ om)|$1SUqj~dBXEmq^J[ ((RR]* ",/qF.q7VmQiԓ)ZJLBz&;G7/ m>cƝ]Zk\g R`;-6nA8:R/嶶[^Sj"zBRpTRRIٙ.瞹@〩$wa5|et[gwW<(Hb񬼴‰Bvo2m)ƒeo6֭-p&*@0_9r}6P*ׂ mPPVMICpRc$Xc3(]˫kHuJRl`xJT`/L_{{qٺ[a ٭݅Td-/rf@5⍵஭NC@ݰyhRG %GF3o|^ufᛕX?k~yKDD c9G\5\[dZyJHi5>HF؃W#ܗ##i< 8-Z*yCn& " $O4#WNZdUSnZH)}s^cKkp}o6T m0zn/¼nN٬cS p+5J0#ԓ$3Wek 3}%aKk&Oq"H# g.vވL7*>v[kkl+dP=b~?5l2k vYaGi!h,ۖ %$0%@G)TDw8%LۺӀۉQLְkLtX-  0L ".ZuJl$ʺGRMw/X8BbS&}XvJŜ8m mЯmX%>JJ #KȄ+`f܆mmW,?.}V+wWr琴CRwq;$A5#|Vy&bumO\h-)Sחy6RJPB'9|JXimGfmV w'3Lֆq,9wT7ȵs:e2TyKB *LĤHBUwS.i+beRHAV)'iI e`hNbs*^`ݮ͢K|^)k)HT @$W\M%5j.|ܹohP+P Zr)̡Y+|i[}LRTvRHcy%f|zzLFdnVP,>($=,Iy0n :wT3j n;9qe{,=-)Yme2#Z_5撸u}(mVZo/sy ^Jv*p(Sֶ61]зJnM(@yRIH2 ݿ: 䖴ݶANlă2 "6 ^`[8B.[Pӻ3 V]kW+}1\m]~,iԅ$";TTQHy^N Q% #h3'[ryu7(ջ2ߐ;q@ E*A D5(kF0e7tءgc%( 1-^±(xɴFֱ6˦D*;G+GRFKޓ- dwX eN'jg'Rfs3K­#~  t6ڋ6Xu*B\tyUP+`pr'⎝`2:8ERc b͢ڔU凒4&= !ER _N|b64 gí֒y^S[j{5z_+rHSθJLWG_>|<ں>oPY (@$̆wnO p7fXS:Q \'rvZBTRQg|Bfq9=O+XZbe0cStJQqJPR[߱Pߞ ?g׎Qw%oqrTr[nrF%Ҿ"pXP\ھdM*S\6Iv -کIHh00xt8cn[PT!ڌ$H'N\< =U:SO?ᆝZXUFټNC 7,ܹ慻nuRq*ZH$ 3\v0`OL0|=BzMy8ji]'is  Z `8AFY]q00f|?;H7EqڅZ9r(m.-IA!"'Ңx:UuW4 \$ mm[DJ+mG' v]H>1W6圸qXʈ O+-sEb4hϡu-оL *4 +JP7W>1n|PϻOq_e)mI&Tx̆wjM_i:ܾ֒\3vlہ%k=ʏr`*%+]qFjeIj7,[7x/q!JBq+IĩFUsW:3} h&夸y vJEP+q%^'LW#rKZ0k&io ^mG*"V'ԭ@::Cww6V疵qxE>:p>;ѠR/0麾:)m% *^uyڥ-bU=qcwIޒ)BZLR$FxlՕ准,X-Ɛs:ԩVG-[ QtLDֺ$R}/>KP,Eҷ8r} YTtWj&d=w+h6+eqVU)En$Hj}bS$Un:Fx_3Է7&@yRA BRI;PzOA5ӌd凞.HˀwUSێz@xoq0X}'|zz); G_.'q Ϳwl\u6n4*W) X UYdzRB`|O,d,ģV%B '0~j;ל~j-!-!z'm[pA5doWlbt:m! *RJJW;mpO[$HOId9>Cd,p!X^㕑M.Hp+{ J` o +UsxkεY)[1 v{1Ŝ8?1X6MYް[*t4Hx N)+;#mGh'cWVx=O}'Mk0-+Ya[2H#JdهghG;tj9e^3kh\@p)]o1:AkQ-XK0-/[Rr NZۋocmR !&H)LPP49 PrV } q.)[P8Ld4\Îj,χK{׿Bˎ&RaJHQ3n.W C;?"FހqFwW;zb|նq خTUrUl\>9bn8`ݗ!$AP`qȑ* ^<RXy%R0`pG^,<|HS'۵huZ(ygs$HH kB]6_!$kB$F 9 -gLݥ[(l0y I1ڛ3wnۋX) ҡ#Bf8@W> #}5(3uf^q9 !;H@)Mc~7]xt*՛Zu) *QOТ6]v,Fdۨ?yh+ DT_p>P\-A**B>IH䎢='56zsj=qظK+z)T6]$}*d*j-]z_X%fpV2P S@*Qpe$'EOu(W8I<#>MǼ~? |Dѭ Mbł}R[JI  7=yj®NK`"G_qȺ[ io)ݩ@R۞#GOS-~xc<h# &,8^[jRyj+Z'YVC"mП'ܴrg؏i"gcH`0RIYLO?P(Ze].d`T9YOICV<ޣM?S+pSamJDDV]Auo*)@=I߭bJIp  ܑ7qOA;$ҲH;Cf =y~UO]Ȼb^|J9D:"NhAlIDB`;a);7a@WR%4m'xX7}IǔC-2zH$^UKZ-AêwI?߼O'Q#Uutq_A'ۡSW+{(5vŅk$A#$Al\(!IZ~"3o\u.*AXx?ߵkvXIw@mx*$e;%M$TVWm:>j/!^Lyfb8$=T.nnJրI!I sҒ*VvtRBʓRL>ߐ t.{`p 8znὪuWҴOiO֥q%A2V@ :p*e|6GQJY4e߆^t^ >A{vo/RIRBgVw8I *&A fc+ mWme,ݲEHkeU۷Z,{jIJ䄸 8(II43߷NkRe͵ݸXIK^[l%M A&Tj-Snit:: ڠw{Ϩd6oչ'bdOAjgRHܵ$H'+wĜ5!5b|U#UmBM#'~yZu fzq1Sbnt6 }IYKQ. v!`V#VySwhmB$Ai_غEYH*$Dz%[ԭ$)\Rg:@ڮU[N E Bd@D X $G?ZE,o,DB#U Mt!2֐@{8,۩!0:A'ۈ7SissLQgeFVe{%'p/C+|֣О&>Ǿ˖j}ws -uZH*qJԕRQȳ9*Ml<5z 'w}t ֯\}RZHm*mcێS *~]jh@Z{*UHqE $#bٓO5MMs]b,+n'ewt<% N1..ii55&!aom ly}H \-1^IK}Ӵ){ga`eqkvAi]-w Df'&I#=mfS))A)B6m*ʘ{ۭ|׆l/J{])NA !!)R@9`(RRFwğ-eoך|P_v~2{'c[nHRBT7 4٬d~W7tF55n>.yjm pJ*^ρ2! m/c k RGҚ Id?); _d3߀)ou1JMHXP$ rIw_~/i/p׺]u6 {,IZҁ܀$>&_Is㥆/mV&Kw/AŬT ݷRxQ-tC^^`PIFOun)v1 TቕWZ&ճFpqò,%yyr;G54C{>oRbRB,&72zOOj_a3?o!3{kuS'j%H$@8QLdEShUlX%|<J:î\qn\4iE*BAq]I>]+J<{L;%2P)I%;Jq]U_2 b,rR Ź'HOmrZp eӊmoAJ.;夶T=2$ͭ?AqEZG$Q$zjO_%!/wB'r_2 'tXn!AJ%HZʂdmTl[mi4߶[(m%H$z=$ bѓ+w\UۮMu0 . }WMYl/1 U.MïBQi)BNNwbRז6R[ 2%Mj $ʖ`'^oqZtJw"o./VFHHPCi^SRЗ \ Jo`']EbZq˼ ƲABUT;yUApVa"ϣ+BU;8E\0~!KB\SJP G=wp "Z{@)%HڢȩJ חZSKo0WyȲBBUe$HpHMQ|A*xg3clζ* Rov؂<rN$biGѸֳX01VNȿt)Ԉ*d!šRZm-Stӟ~uo^?,?rk#R`*E ]fT&G Jƭ/v:r)&67,) BR(&/KWKj˶uo2VbK6H!@/xf po[ [L  IFxssumRSsbZR D(b4Y)"r|(m=gJf' e|_=r\ǽ6>Wa$HAV&#-} MTSm?mqߪYEhc*bA)PRN~[sa ޷17J%Dul̏8R8EJ_ڝn|/ý@uwok;uY˶\[%nE<ˇ_}ռ+[(KQ2TIy$ԿH&4@1ڮ&iB$L.DdM)ցQ|( A&ыTے !8O$0grA[Dnp1LGR'I?.8j/mERtJIBBI?)oǵrջ)];\8QI>jw5x94ޯmkv鷐(EAB=V֗^蒵EgZ_e]`-T -N+ T88Z%\ݶxuvͰ6Я%hR`yO>}3k ʚǪŅ7KR Rb:kW柽*@* @ڄr&$J=/bn2?inʓʓ)qD315dվ*`j r)_TO#rb:l݀ewki0L%Rhz$MhmG.U(a#D@ 5kLǿgޑ:J̃7 qXX &eC@}dUm4G-Qp8n]Kd$ڠҒ1$kgcmYtNjQtR^9 ͥ))]LOq<` x-,RX<$2U*ৎzIxgs|:y/EʒR^~;6y]c،œ %%/-XXTy`(6Zs::c:L}ugNyוa"B}%v25ӭY>lqoܕ!j@ wJ RPقao5ryL2_?9x풙in8I90TȒMNZd9;ajM8+p[@pWqɕnR9/Y?VZۭ=~5E+ $ RvgdbJ+HG.U)HbB$]Jci|±崋yd((I xzU?؝7'([QZ8PS*Z'jpA;T6ELP5KLܱtrXYJ)A)%+=SγMo\ZZXEʕCmq<ҮZ[^8S дZe Bwm$w:5ޡی"I-0iqIe).,!/;H"wLQ o^Y;XmeIR֕m =D  C(` ڕp'ЩDmںb–B̴A-'dbIi>sq<%bplΆB%G#qH -$ jo]߁]dmK= DBˆJLLj+ l[ O7xyXG텭JYkn!/~@7r=gʂ-$;BJ#`\ػ6O Ŀqwk[6%e;$%0`E|hG{:mfY~\)P!@6J&F,3Z ɻgq{wjBTݴ .,7 Io+|N;}ʦmViPRҕD1k]i 1kmrNj.T. >yJcԨnk-݉RB Q CGx&>i,i/\c$nyh<*R؊1aķpNKoRL:z`Hbtזxk|Py]-W#)d|7ʁgcz;mصq*NƉҵ ^LI5E.św/1D)ţn8Je RUdo\iuxF7[=7ub$-+)PX-Kt-EBwo @'6E "ս+{`.Ķ[RfLfFMv1گ5* DHHVv18W mZ%eGf*) HY\_ }ncnaT\(%RBTrDrnr[2:v? gh)D:qמڧM`R[ZړRBx`vH5)j!lJGX q SyjZTwBs'1=IŦ:mUCgB[u|/ԨG)RT Q+?j|ɻ- Kߡ69.-P& =oP*ۣsÁvВ`  $A0 *a]+ ղʚK5lQ-:DR?4FU U7,ݶumA+!J W dY ;Ma]a8~%r ټӮ$^T+Z35-UufiwsLmRR^w+"!$񕶟J1z҆sj$A$\Nq{lJ8[^ t1V4[W Ae$8m2R7A@hd.Ít,%Q䘭v)n- $mVO ZJ2j}LʔyjBSɑ% $HBT( $+QjZ{5k vH\V%QLm-U9[mZ_9LZ^YJ1gjzHyO0OS7:3PHMNiu6U%*DCFa'~.iO6mlo+xS$4FyHpz}?|*;kmY՚ԇXgJCVKHYBBA*I[\]>汚k[R-². mnza`tQ5iѣ,>> ޠ'9UG"]Jik;QkcSFOT_j6^&Ť)LŢvnj=UպgE[4=t3ZХQJ.=K QܰTҺ#EclV{V@dmhӢ.t/~3 M*Fw~3x4ËR&\5g )(0=埵0~UEuNˇV..+qgJ2IԝɣJҒ TeE$QH$D矐 ]&F]X)+TA l*^-w7 buϐRܴ=28J9 i|-[I\'È|.:sFguw,-v&鷶BBJ D0zL1~Q/ oiƷS%DN*Ѝ)ܕ,'lUm,TW)mpB#m! =VO 8p:gx}zٷEC?"֤j[h6R:"?~%PZ\?ϗi![ oA GAZΏj,Q\`Dtb*:RKށAL TQQPyQP~+Ĕ;duC?ý]oU' QsuéXZ[dm%\VJJTއZ.Z6|&$zٔmY/0Gy7 8 XJ)R)(JfN7}i}ˢlʖ$uJB'h^h/W%gHmn]m RVKpduæ>Ewjwob"nehZD8)H(A J\*f:_Z\5sugo B|ĈHuIQ^(HV^3jm\Mi g~7/Z`%"v)D@e0Nyg]7Z,mx 66Qe$ %'lwod?cspڛn2`HJDpHJP$K3Kk A㽟㱷Zd K{ !!;$5韅l9nwmM[l @򶥰6ORdM`-=i8h\)ukDBRAp6H$;g~,H۴-Ycʹ2۶~_j\PFO!)nH&Sf:[O5cuc 0۫Z.^rm ( zbzLf6K..Z#znކbT|A<{UiAaVH͹,:P{HlB]JVRLp^~NG{pܹktRF]3B*bNͮk\!&Vr+k*IRHV"BI$5>1o{wb޸mKVQ3-;3%Jސ՚/-Zɦ2lux̔= +x$Msས+2ۻC%m!Ku Po{7{Zv`\zY[bh^Q9nAF) v7BdGr6jLmږlnÈKm(*)#vRF" 5n_#fxEa. $;6 "QZ4l^i)a{ R JvUT]OxtibeVkRJRlY w[2^JTJD$ xbs%nh{W$+ 1ҡȐ@ְ{u 6 ^dJ +/gMb6Vj]bV0]2IJBb9{ZO?U[y0 l: fɾZn{mN88vp<$Izn,:Pzq2 iKpďŸuvәMawZK-^l1 ZJR,d%&\OqfNfe[Vbo6^g/[[EźV)Ii@u(s+MO R 3ZZ{m\!CJZ\yr E] mҾ!]=}2[$\X}uZ@m47G>;n{7Y"h޵!|!*+(U(Y}ic޺޳PIJA09Z҄ʉڐf*.)ܕ"'qbͺ*q*pR*m"k9LeCS%mq($+ҠDPsQ2x%<\0[kεt'q }*B€+k՞2iǛ/҇[v)ƙ@7'߅4Zwʷr0XqQYR%o ~.Rn>{.K3v?nԲyf 0ԁk?g5E.N}2ԇr$۸@A+i-m%:6O$H -2.]+a9fA q8e.TGǙ(*zR\e-g+-/ +^!+RD $,.Lj.qA̞E/ݾLRZJ!;I$LNj6ո3-=;;\[$A[hm0TH;P5Ft`^MM-.^y4v-[H!!*%)ZO}ffk% }\C l-թJJBo<@zBQfڷiuhVCM~XN- &?Zou~J•%Jkdۜ\ir|Bs+shnBeHP;IO]sxU.rB;-ِͯ r.E)11[OOw꫌YS!L6Ptza;Hvo1lC-jR  NBc-'%D*OGyCmҿ4E {ؔ}y!w%M -! Y3^{0M=MK$Ljp[ķ YFvY\4 8!@Dzd'W:Ү=[ 8?/͉8>Eq V q7ɓffkm%+X>ay`!%EJJԩ/ibK h*HäOe #Qi];m%otFa-L}7u i$-(J O֨^h6S˱wm7$wW6%!kII IP!)PV_ Rt-w9<]..\ouN%;Ww$uaĻ?'٭ SJr[ A$q))]<ٰ`zHJo}vdzu" 6ʶI+^NFi,<_eĠ>r$z qu@N+6D' (SPPW SC򚩝!qCW)qRSJW)R i.~(ڳDx]rѺiC^c=M}!ϘG3*!*0$xtg :;ɵxʭ<ݍer(JJ7,S*$dh'e)eJ}^mҥZ@ HT$n"ģYKL͎ԆۋOl+"$pDh=u+8^]:}#5n7W֔R Zafݹpv亂.XHnLu}O^{Zݍ1n$VȘyud4J*VpӖJmL6V @66gSj,&'bMm>>L+$)OMtMmyBVˁ1T%SuO$Q>1!/.n7x KP^[יP7DDQLq*i>8含Fnԍ"Q ^S! $8Tx]LNGS7}swwVɿe06iuҤ(AD(&JLwֹ9;b^lB[iMAC~SrgPRBT]JKAi2VQmn~hs$Sb-> 8^Y=]{}iiX]d]mK !vVORYZCEzX;LVbջfZЦHp LR@=܎",Yk(X7'RFm"ʠRgQzqLGDju߀ h~}IOLjTגQ1ڻG_xa7RpO;q,e<@8e\3[wͳ{g.-6wlJGx+cX`sxwN5lݥAK{V2R _5\ ArѼ8,ioc("T0808UNJR,O.WO^]:ߺp()kQ2I$$U`޾y8SHSv׻Z\z G[<zP+ 3k9B-[JV#v@PGnRYSnKr~7| *1@S}Ph ȥҊiKy~U Niu֟qHP4'J(( ׃(3i IuM2N*H%ywIFr GEU?$Aյ2&Ā"&Gq\'%'e~*s~1][5<]:^R][(w)P ~ Ovљ򌀰>-5?q;w-RIwgWZf]qTvm%)$8;SzOr`tEnݾ\RgH>C"+r~NPwѕ/,oB]a]*!|-#t,6@IQw3j/5-uwz{մ)BE  K3vy4/]--@y%l>zRPe@czZ+ |G e!0A)d)PDIЩļYeƪ!uusK{S;)5;д%PHUXx7_7 cPd7B/,+(T;FJ#Fnm.(8hmTJI*VD`O *g-I !'z"ו,43mdCk].]3XETcq4N;98\pwT<“޸d{zfOO50h;6[FNZm.JUxk! +![PJH<N3aϺ]kP]: (% m(ev-GcJJ1k7/V})Fҥ uN>;Tΐ$FTw}8˗PܿJA*ZQ=O9v7X7DQJ- Ȃf;zq՞9Ej%Y1^}3jhOw>);LR9̼$[Xa9*F'­RJe?* pY2W9{W!ƶ."%j̎T@Tkm({św\G2"0crH%;U\.XMWJJ\3wa* #`  [ڹ~I@XʌO ۸q;^He >n-!+}v߃%̬wAljWJ XFM[Kivi(E:ݵiJIzWS渶r1 yw6Q A2 =LOu{~(Xc;XU!;RQ8z2I$4y4wy[ nyK{nqJ? 6$S$CeEӯd4\h5>yB@9or x)yki;97?7!\Hpz\Di;y%Ǣx+[l<Ë*V3ZITzDrv\ۘX*iy}!A JTGTʄ)d%'sVEڶq [cc#+E*&xA}OQűx۬K/fl-KBږV(ķ,^9rn2R^9=D;'+jwH]Tj|fS=򝹷mۼH^?p┸Τe>c7XaܲF%<ځHP)qi AH5rGs]Ys_^^q1}eiJy))4`~3|Kjat,,cqhǨ-{JZAI2$O~ 5RA)椑]ihV$s@1JQ$`җj(4 TP JTP 'ATRRB-fAsYm~P=sW/7Y;2X (r>gް6~ii2G[w}HHX}Pu >j rPkuQ a/9(}I_2>@'֯&ߋK5nbSL{hՋ%| ZJrqyjZu˵f|(đknR{Τ[hiW)!Ķ9I=ML-^K xB9۴$$+mEuvʹN04|ey"BJ$q7w??ʮ6 ˺7,>[+b!e'5ԱI u43yd=$6Rބ2S ?f-vaI(sԦ\! cٹt GiK+\miuWUt*|I$%5rww7>{ye-〒TBA3 A"QQ[~mڗPMtnIA" >@VΡnlh2-#bl3QhҞSmZ:%PT7"''5ZIj4qIXy i"A'HI5t~R!ypt[iۭ 6<#pRuȕUPNa>9iz-]pŹOA<)d g^Xi[}no-fHK) \EE~}SojC=;V=jrp7x)/Qi)Q&btԾFNnԙ |]!\ `jU39=mvR᭤ 30x1@HlϭE'#~Gz:oCn8-y"u0G#>HҺEʲ˪pn[J)^Or\M\_ꖫfTS̘ $\ޣfWX$4YWP@QP%㗈vN]ZIA<藊Q壘^[RiLVŻ ɲז[(ҐZwR:PIψ|.`4)El,z۶,%9%¡!@dm䘃7ނ /jݛŧʺL@tT@G޷=J}qw[op\B71nIW5NY6+GdcuS:+Q0߹KlW[.yꐢ$m>  GxڽA}[#an(zFL!Z6uW>{^[mOUu %2:*fzZVFgҲS ɦmTgZ|XIxkpz}/t[?up|VB Pgސ~9AnHIAH2$&y&DZFd슕SIQ $z:LoimmvK rCa(ځ) uY\2tkIXV$V* 6+pM +Sd8WN]dZ^ٞ=7o!ٺDjX ro2JJA%}U= TmWc*9vMY_HڤK)0S)$T9=jXZU=m<^a9^Zs浏GuDvRb(M#r=-4ݝÏZ؆A*R>Џ=Г\H ;;PhRI!==$UOLREsG~Gڃր&ZT9O@)4Tԍ#֟q@*rijQGڊhsS~#!nĬӟOXn))XQXKpu &1Y{{k[6i -T~* `,% l=sLXv2NCIRP R` )dPֺs,Ö8Y[(mq(D n4f.PB6%ISyW,zcݷH䟐G&#uaDd[S@ܥ@yRȝ$uԷJzb9X6_2nyeD! Isz)܂&$r5Ŧ W \:qam4 $AJI$[s@r؍F=v۫fM|֘ m2:Оb6Q9l$v(0;`%2$,Cj\&/\[ nRhSiQT(i! UO~$ od 2򖥨IyE! JvpR '1pXwy}iƭv$-ܥiKdJQĎy)frl).7#[e[ Sh rf7"2fD֤XYq%JuNhm ܢI<)VAjGwirˉfC }A>I"mp!ۀ>^6DS[ER-_Z=v%($v.mDGXMI3aRb#Tvq\j{>4hś [yL[vTR7 @3[  { fݤ (qzOſsEegߺX[n%` 0vL ^(4PZ/.Kݘ}/%2QTdO;5tg#[\6k6׵W43 b͖! g'ko |d)JXe׶߾ [JmֽYR R; 3޺[}͝vV?|xkuZȺo!)mm][I>b HӺN)f/ eBۀ) Tx+S3bpzn0Ԓ{FW fRt? :Rh)Ro..[mJC2TBxZIk +G=%VZ}jiy 'zxz0b)~aX DnI0OެZ,֗7rJRI&$$߿Uƣ[nm?~K Í_?kmnlD*@"9x<֥x- RL":=/rW-er6zzm >:p:_z}3\VqdK_12잜N8% p(P*BŒQk|A^KU䙶}Ÿl) <$v *}$)׭+`%3iA"`{RA#ORd T4}JPQ4Q@9ڊ@EsKPE4RP}vպ-m pgk,M^b#& +6lJp"Gҷ"香CQV90`}xFL[8#K;lږqL:<G G=j<62Yry,ǒ~ P`g{Y!K&[Se8VWDv5!?~l)!)X#$TLL&I勄ł?,Ǯ4qW,6-AϔU ^jMʜa #hd)''~"L@%GH5(M8t>!O ?Jy9=??~ 0Ze;3̳Cb(k; bTO5is6fFi~IyydOP=:k\' 1Y./1h]㗑nPBvSOsӭwM.8y&lYAH;H7')2u\J:ғsϼ Yƾ dklL67"$OmZkvB[ީN8R%ip& r:Lv,S,wCx,|̻Cƫ{ áom-=pAL1=Bz}*mpi>u{V^- `q$Օ) ADJxZɩE9`J ]%۠(33[LxaKlyX#}AL'!$װl19,vs_Pd {!zwz $@OA>Z]-,>BHZ;~O;i-(# {w:Oh}Pb<^Jx|z6UQLdO@kDZfsZ[P8&lje\,By7Ò/ o8cuvr~o-F[oEخV˶\?<lq JOۀv}cw:vٍ^])9a %[YQ'?ݱ% ,G. CsuΣbatx!ԩ8vJRܓ&:㒍͎Wڤ\4< T_b w: ;76Xw M2Xƒ6Vd TR7*MsgCO^GdiKcw*SRO B#iI`' <{"&]?+e:17 YKԭ쨎(:N.yo@ LOP; fWrl{̷zچօ%\7 [fe:H"R*Efcr,}o't'HTcqWk[.BF9"봩 :%*RzO0>k%xvU/a0,YE[hZRT W)(PTۏedr<9Akw5O䭬⒵cRA0J[PO@^w1b_:-%8Ceqsr7ItЇ|זKBAxJmʿ.'RG(0TS&{(5l]͇nqV,)*3yy |H,E!nV-SӖ,0Z,rp;,vqPD>j|:>92dQue+Zm-u, =6 6wV5j";r~qB7C%[x$Z d]e6٪,%Q(VbIY J`cY Zn.)<唩IZy$ ca 1ƶlݦ|g:VC*m [)F8SIKRL 26ͤµ H 0&H X,ڻ}j68kivt=2w%M-OqsY#sJ^cuNFhlcE (@ , H p}37xhzP@<b u.ځnUörnF&F09#){-(XbVkmS,K`6@TO IJQ R9/,YlB@*x ?sb H Oi=O}-!DOUr59n"qWe <ʱw߈QYP8Ufad8IMX.\Q;xcRokVTjmJZQKmקZ__eIp,)`BzLG'5n`;J(2IQv<@'޴éy#K*3~H;钒@z"_HqHӊ zӈ" ?CN(Jiw{P@(h ` z$OR@5I'X+^8sy.ۥm*PwcwvǦA3l΋_Ie;haEiw5| ߗ.dle+THD!$Z\^+C(tRp$)[ASJ 0GwG]'jՇ8 `$DV*<I'Y35CMHA;}\s'O쯳v cr"JʈuꌥywTA& ?.Mz(]VԔ- Dʸ8=8/Z3Ir7]\!VeIuTR@w!$wzfJs?g nQkj'@heR6U'Nbd.eN0$<!Gw{>RԐA`Q[u.+rT\>ïQ2OY:?.TJ (zɀ@s;x"kˊ9aNvsERۃ&qykIBTe=AW_|X1v!!n$x`n9癭k|at3BkyJJIWBX5ݍBųO) H0zބzu1/ݵi $)fih H0DߚzSQowciQ Xfmx۾יj-[J]VyjIb]s%:e;pOQt~) (HYtveACy\c5_xl=pp:BTɀ^7/nF{.)bI (|{ɂkc)|XXzdwwVOpI<)> ڥNѺIs8vFS-ib>QiIe(yl) bS^EǂZ t@ wo~8=;}ks|嵝;VPi ؾPri=;E5d^CpelUhp(nJ)jws se3,qV\8 9(IpkZzҵSQqI#$y2O7kd?) J C;54K$*]wY6Mu JRw@fkvy˻ܦ)G5HQ*{Ef8e9;;(U6賻T k~Zx*x'&֘"%[oi.'X5٨Q1e rF+f9*,ߩұ,`_ҪՍ,) HT ~ghXl-[a,%R?ʹxIda][oot!$)Xo鞂_j[{ Qn*D#g/.p;{Mw($ ( V 8PS=HI2fkshMXŻ;@ܶ79ۻ$@Q0nܗ52밺cqڵf G*D}LΨӸ|my q*/'rT'X'EpMimWJ7h ZM Z+$cuv6?jp+HLؒ6SrG\u:_x7wp]$ܰ v$A;ʥ'JUqx;+_ڮɋpa ѱ`n1#_?zٛ`8˜+E RV` 6wl0W9dNL)we nK~`꠨d$ks-d46.KJwhWCPvoRNzSMņ/:mS # $^qN#y yf lW!+G=@^$MIJ[CV%BJH@1"ٴ^VMkm*hԘԀ1V!mn+WLeCq߃ ;t]4UsEn)Q%DOΥ5"fcN!ǒn?S)5RټԐ\HT1dzwgsXSl?+j*䂒9#o@f/x$G~DT)i6Rkf* mN"I;dmopm\)xƠsKfE+16WmK$9YUp&pݝèyAP&=9=j# l%Cix-e*ڂc'{V8CJsX>[-[axRBH0JD~aGʳx/F9 u8"Gnke;< ԓYrlgno iSìwU%qɵ ZM۪%6 I$1W:v̥>_qycKm7A[TBg:Ȟ MzE/czM:͹ i&)'&8{k])md}RAZq3Ğc4ޭk<2ĕ&BUz+*kTqټ:!,evne6*ݼI2 ۥXs{K%H%[X*&eׁu< O ^zLՇ+|7.S*G`84ͥ=aAq<UyXM*@*PqeVĿrVDBRxʺ?drf?ʋ (ƞɣK%7/ ZYq6li?vO׎z9*L.ģo%)3 Px]Oj0SfPR%Dg:;wja\RB`>Gڵ^̝';\t6fTd6)GΈQQTftRԐ?H∢(Њ])R#@ED|"DR"(菝$qJDS $Ih1>tmlkRPH?M{vԋ8 ANe${֣r^If^pz!&^V L9W#tVX6ЀvM6du))fW"RJSDM|L>CӨ}^Q9=Y[8DY#-n6Vҧ<zu'Q ۧ=J٫[g rLmPئRGKYaŃ[$ϒNС1UN+V(D TGΩrCjnLO~?Nme tr9Lŷ°V.R$IW>xK2uFkJbﳂ66N#t$J~`W[C[y1~}*br#͟)Ex?9/z4$n_L͡4TBqM*C0(A؎^ k%yHQiE,c6PDRze1'5 VFӶGX!MܥKfmIYOYN;Āk0,.c e`͕Ce0Б H@߭zWlib?;Gc|׷ .- i%%dy90+!_ t=PߺL,(-!P@<׍RIJeVOnEows&GI*F7Jʷ-ҭQ&"L:t9 -Z; &|ŃQUE[ i¥nG$<}YӺlcu,'4,ʊP*& &G Aټr--fҭ#Hz(H 0@5cxls85Jy !K<H2:gZ_-YMŦ?҅0Kom (%% (zRv! )7(u2~1{W֧ Q &`[ڿxwU%%g1k#W p*“” IODՙzmCf=뛘Qҥke6fʕp%KB "aq@DA1ɛm^.rNۄ7xXn!2AO3VKŶI˖-jڰ P*\Dk k+qm-2 2Bm%e2J[ )HWf+#m2f-LvYgm (PxzVK/vӌ8 !%S?*@9 5|M%{@UKvm(崢#hPB̥8[kenY0Um HLHU,Z%h3*_<ݶymI Rv&y+ՃmݶRTߡ}Qrfx;*\ u.ńNvH+[uOlTJKj{@$Ҋ8re%\o*ȑ=YAL}znzNeZ{)z'qcRT%DN'{{ݥU&0$( =3Ruɞrө$!Ly{A0$qTkźZԘ"=U? tXl!L@O96@/-avWڷP%NA=I-پ ݶ꒤I)$sZ36e%*a͝9>096gA'I;ZB**ߠ-mhuP(J6+YHcnm:RojA㚎>ulZx5vʶD{BUmf&Q:R"(菝BG t(>tJQh>ݩPO4qK&ފ8)MPR#qM^(#H@(TP*i:Q|J SERQ@4"Em |zњnOevI^B)j1^? ZDQV!iaivg/pHR@~ݢm`v?.\i"It~_3e缥! AOJobƕfǥ䤶0l'􉭱\Mnm9 kݹȂA Qs%ˆuQTOyH.՘ 7,F=N$\19Z Oί]nVr8[) yO|NE\Xkf]e&QPc'cU2bqq-D d =Hr\Xa[ꄁ$Iy7M0w'EŠs`JpLǧ2x\7snԈ UcL֘;l-J= csqh.$q]S\1C3m8+SrBĘ?M -*OD!JLӞ:sU8KmojdtXTF)=^~nW&GO+޳}a7(ZR E[N,qHW@wFO}l`KkvTN2a;yjůs [T:W>[TQ.-&2`$zN9Þ:r:R!mrLk3uvMՊ4p\JBFROWfm[i7oS ړ}Ӛ7 j6-ݹaPͺAJ픠)F}A*Sp@d;fh۫͢qvE.-j+K'%$Ar 9[Y\?y=>WOv`0gs|zCrዦЧ$9pRN *6+kJ)ܤ =횱٧s*ٸ6$z $w'I\>/k5D:4ԖڊR=JyDRG-ɜ*_gnS.f/R5 O ɞJB WUw\jظt; n5ossc{h(!*NP( I #Z|BrҐeS=cxr 2ثFӊ6iAZD6II T^Ͳ0 BXe1p,o:{+l-+[<ٝm[H#A.kn>~&͛\}mPH2!GS=ڨ/UqZ mԤaGo"TdI>^lkI|={oyWW'JjԖy}ۈ[,/,&A t̂Gޯ絽ܔW<~/Pݳl9un\!)I$r?n-ȸZ/"Y?zzjHnn B@;Mm 2%ڔ I1s8 +%Nc&ig`Rq3ׯx&ղnÇW$??t*RVՑ쫋) z@\*]G);՛%bNmAaJI $ϷRO#]&I'N,niǩ;x< tZ$GQq J}tG j^G5pL&ŰA7ĥK WI'lI>AtPʜ0'"xj˙[VO#UrN%!zCh)P󫖞JuPJJy@s1LmIq0U&8'1VK˲߷JG;eE) 'S#y*yDB\RAJI}*5~KoyNn (0:{>rw tf Q)ĺ;>ߥYl> \޻=-uDD~A9(e[kv`q-As@W=Z/yW.R_!Yf?$:*fn&Ґ!KRR?ĠdʻY=nslKh -HLL}屯Ve O*U@J|tDvNp|WH#KjFG4E*(0)Q"`|@4@R)H TP)f(f>thS@9摧4&iE8(N8LK+GH#j!߼TDҬjR wNP} n=LLԂj:pb㸙JdNf)"@ҧ&EEE扢((P S8Ty)4fy67jW X̲qp|8hpɑ 2x[>pPAGxgpїSoq/4FI"2zv$AZtVmIcy .KBU%>8΂7--_ºIP~Z6tZ6ۥ3:9cwrG]$LҵOӥ=="9&2 }qJ®9TfA`WXxxeG "A3Xעb⨢J2r]o~$X_O߲K;m OR@&@'`Y晽[77dX vnBP1)ȫZ-qcB$+OR,q&(S!]{}1b&d 5{_J˫sA::皶xmH$Aj mj -]aۤ%-<r?LXFk1ʡŵUP!6Q~6YJfDc؋D)tBw!l>קDI]jI֜P-IPA`)4 DQ@DQ@9h"h4 (Gjn!M-IZT$J~th@JH\$m*TT5izWN!7Om@eI([e=J0H&dmָv]|녔5=J'h@'p6ʗisqnÊJ)O}$K0,tV>H:E~UYc|g℟m#-V9.KqC%_D1=܈[~PmDz\T>uf!4=SÊSO¤)'ɴSa-^ۮ<Ru߆Ĥ!‡ Jgێ&3cCp$EcO0-& zO=ޮhROYr9fS(m'qVm}$ @n>{m < @F䶅@1*d!׭/%(h^?5{]1RT!Hlne`rU[2hl`(Ve\Ըg1]YȾNeHDg[7һU[TY+k[~jTRs=ڑjNQoblRqTB R]~IiQ.7L!۴y[R1zHȐ V;@UG[jp82)71qǒDX[4]"N^9MHLٰ`Rא+%Gvq`=tH]ZʺmnR! L%QhvK{7nno)Ҕ'6?ȟ<|\10mmm!iJ@8+ѽA|e65,zI:~C7uYXcՓ̝ܰ=J371=7Qdj}5GSulSJ\ )7^bw0yv9;Wػ_ƺӁBʏe=:z2<->k"ԯ kBRTJ*= '%mV[QK/!HQBn2;:3N^ ,scM m$W$^XO?{վ2Tyr[p 679>WefQh+䙑VL~~AILHUUŠq*qW*}Utσ:Uܞ^Ғj_R@L`s[b)ʙIe8pGZNxWr-ڸa[U^ *`M* @ynwV ?fe *:| .#|i{'M’yL~rҒ 'p9;upGp#YW.NYN w!3OY状\aM T.1m:&<"#@:T6Bҥ4Nҡ0M.O}8%\!PILA{G#z?(jG^APj\aRl$%@׸=G}a; 䒥>͊BR󛌂DzS[CJ:B;VCP#RX<OnO[Pǿ'hۺUf]e) ۹}aOdN%d/Q?XƦmN894^/R$XPF ";@8pѓj$J) UՒpb;ʠ$O@7@)HHz ?3uw}[RO@HOL=kH7Gh=ۼ-m7gcܟ$UV+N]Yim_.*) =":ZO&X R.2d<IS6ԭ O}hE(R3ng_Qz/.` @wOά @GJuq/艗niE%I:uEe7!8c :MW=4vOWh+J#l jXl4854((sDP(@4`M*SL@@DE&SQN9>Z PQ@{QEqHOz=E)桨F3ڕZTZ^Q@֐Lw()TCCڀfւ(E
oq֨YpwQ5x˙y3loaq ʹP#BzVh+ |Y\lg(R"m߷>mG'Df?oiu `1(=?"S} ު,xՕYĪ6Lt5>qˬ|i #qp3zAOcq߶2Q ($->O5/֡BqIT4 'ZPdq亂[-;T&%P2G"G'˚A BK(u5lB6Wj^], ;Uu e.0M bj&=ַOڲKx C|\{Jp!|.6 MZ8 ?vm B'rT2#k(7QeZ젨OZg֡*DVIBJBݽ]‰c9ڡtQO5 E F3ڕZTZ^Q@֐Lw(ڪmq/_ASHt 8Pj6WwM068KhR 2bPnhN=6Кr8d\[`%jH O~jUb{AT7=?z+/:ٛvm #=''j}n %1_d-ZJ :>jPHT!A<&61Mhq=׸naCذٵ<O5^Wrտ4#rIֲo]%%kt,\Tq*ZPBy'S)ܥ"'dQÂ6gvWN•g?֫[z,;~`}OY swu(e|aõJJyl<@27] φZaIg񭥛GpZJj=rmv -RʊH)$$dn5ZNl]n]ߑM(RJ "A@U^=f?jKȎ8'z{YcaıpQ^uZO†ù68"I/:?"8H?Z)qy+/mYBKIXWrADrz$w:vY&`I䟹3eH ?|fk:19yL*q䃟uG)II$A5Ï}-k'$MVM=9NbV9RQNRH3=^M.qo̸ (mk3~aÂ*8eɓ#neHw;sRJB*")5|0OW Aba"р#l$9  höNy2B]v9.؅n?W^b5[V9nJ[{ĹӤ{|N ŕgʧ}sw84.nol@L #7rWY{^+TA>~%,1i *& ~eL;w#{+ \'b:ށֽs;Eku茣(nkPZJDAb)*0xZޭIʰ{rN6[8vq>Zm)DxFN7{˽RI;[yI_zvJٽalp-*Jk3ǶZ<씟5 m&M|H5 Khdq.n0)f,$I;ՋkJaT6Bd{ 15eU<%-%ťDH<3쎛y-Cn wD($AQ$BJjB!oq7CɂB ( Gq"}IzV&vnۄ۽% L8r'h~T+}6r~ -)X";>cMgyC@ {ϰ$j7hcS\Z^;oalPuP (p BRqdD+ƹmw7j^~\QBh#"-,z\\$8jNդ@OpJxDgmBANӎg-qxfdo|yG=w?`:V?<1ƥV{PJS'Ag|KV{̙Lu#UιU$8 %MCÝl-diO2٫ nqHJw,v8* [ܩAڬ9(/Y۹TIܑtOHkIڶe'`ӟV9ۗՏu-I)T ;Wdҧhiwzފ"&)Sz#Ң fɠ/:wYdtN!f@,RR k2ش_Jy~#iJ 0[d('۱Wv5ɤ&Ѷ:/< BUβ,nYY ؚ6]5{ISYN#P\@s̄Ğ構o 7K;~Q [)a޴ K#qOz;+vxݶHgcg̪H$w ޕnZa!D*ïuKQI'+#qmmLN޴PFoQа֗6o JF<J#X߾CL7(GZ*)iJv\1JX09hR/gyHAJ r7#qUi3嶹K+׵[Wf_ڥ7 P-*K,m"JCۤ 8Pf#l áJHraBAUs}dHR71Ӥ^m.u *#Rگ,7t^R)I2d=@$+IEQγԚhαYk\k_KʔBx$gɫ_Hip6jfF鋆p҈ %{( iL,VTznpyJy #M}$e' zx97iCCᵾJVX 'mqҢ([|EH ChD !)qޔǿq|P z_|Y}tZqo md:Gh$pO ge7&;äRrό{⦧&lv4Q(JIaXh(kpX࠺GJNRr~B1Hw=* 8{P晤zP bRffo4ս6݄ܸ[Lt\{} Ȫ276^>ͥpA@pD`WUW[q.n2[V/0yɔv8WREjY΂[a-]yw'ۧObLY+T.&6򏨍_۱>ǒ9<..тrPK2'~G] =O,ur)m-[l@I*`zH \io!m(;EIȿx]SFԅS&)Y}O].j\\yVRc҂GB?1bzI*qjwcqDI56y(m%n+}jDSETE#֏jD"@iE1HP ;."44N>tE@DZTqJ)iNUS{6JBjQ?֫)F N/ YH* @(xZ-6NOR$ǹcE=jBR)mpJ"'9D]4)i_ _!ΪOo&m}!P=J$I+}YK(K &T;svr=@RS֙ZKiS u[)ZEYZ`sQ>{:nw n(v#Aޑ[ uպ.8นGnme!&?#=Ym A='6CO> PAxڭ.x(^yN3Q {>Ր\ +k}$w5) )L)h3Ͻxn)ѕ 6 eJ. *w )PcpV[ܑug(Z&8K$zmЅRd =8Rlq4pPJRLUBѲ13a'd󖆝F} I_)1we8 JH1=2K,81kl6c *gV,vl+NY]\\!nlKM;Mj4iHO?AWX>\ظY(AQ=A)Ӯc.1waf[\6I&pwg mZ2#i[<{9l”>aRر׸Z^xcP$'j&7:"Ši r5o=i2ԍ)l\znIbqzGR0.Ul,ŷ*uUƮ nCԱ;~b@>A9 K/Nl)ă)i] -qhzCKD(+Gؑ޵IWAb8EjE*=hA!@hO.h 8(EZiH(=J#34ASKhf)P((JhQJF4z)w3@*rhҧ4fqD4JhC@4Jri@3@4MQJhz&(&4js7*aXRf8*dOn&R@V-wt @pRA$GN Vъ?fma7 }%SFl;=IJ0@O5(lE#~^:w7ghU N>o0R8I2gOޥϓp U{s^M$%O˭7$5 ((q#iY#d]fr҃pOQRzJR`$}*{(D)4L€0>TJD(:JG?ة6l8BGEV6vJS)TIӟ%m@I)@T]pOEZ0g`KzZSEEfzvᛜSm2$dQՆMMz/۬}({ayUw#xݻuA-mgy9r=lˊ>rФt2 qR|KRD*3[ mi)0&Hl-*$B}?1orJHYZ(0V*RL$\17n(s=Jl7m| ?.U!Wp6-;e h;koQ4ţn@%ң$˟_l2e{-é?|/?!$%@C'=fЧ_q Y[)"ט *`@&;=Woya Υ[eE#jqSBinPʒL㎵&Pq9"(i7I&#s1N0vʯU7,) QBI& sEd//rx @p5mZQߔp-R&HfO̚htIsf,w.≢k9JjI<#{& C$pL11H&44u4LP QJhz&(&4i4;zҚ(&<J3sx.8Q?($MYT(cY"P};%@Bzp?y]%JBc Pf3.g.[Ke))3޸hz`7{SW 8Q1ߠHZbԛuמR;H@ϵzRR!~ՠvT4)>G䱶ǿsn 4xtw-<Ԡw$cjR\0m +$s\91eS~UﲒyRU؞8{T]c(o=ϨQ_:3Xm ?92~*LX }zܰ\}2`*$#=5\0RqȫN_J0ݲ^;Q+[NvO^^>V/P65MʓypI>ҙmA*ۼ'~⡈T6mBb$zڭ䩊GUdYiJv2$d@fH&ڎhS@:n(&4pS<DZJ"9AS]iL (QN:Q4DTShN G9(LQL@.dqJ Z^&j )(Hژ0:R=(@Ƞ 4hv('@@P vzqJi9,\e嗇YšN+z :%^RԘ BHXmiPL|Qg/86V+& Rzd8k?nEJP/Wk\! g)Jn`K6 U_he=˦Aڠ̐ymL YԒTHoAK.@մzP!sE2!"j<(%I*Qte'`P 6h76 'wI#aB+J>bt)&>UXR`m⡰"7m1~+2 9ShTRJi$?v3tJ ?uW%Rb95k{K]2?|6mDnI#U#p^%iǷ?L}`06?ҥ;RNL9O-ƴti { ,'کT);:}蕨jLݲ*k$¼K)'j#q1gB[YJ W]R CzviBB<#*e., :- 6J[ZGCZrηu7 8[PIG'ۿO{{Y+n!BS;8#ScQ7f1)H 턕??ZƜ]ȔTF@EbhD$&Z&Hem9?QVS_wk&8/NO߭*΁@$j^0E:'`PLJ2*rH<&"hEQ@1ڀ]4w4O=(9G4瞔P(Ga\vѻ`ۊ܄$*D'[d Zk(ҖV(1=&DG3u_YBo\[ys[;widlq(C\%]JvZqFJ,=>w|{FE֟3l-%* A#եpv(mPH ${\,3 v$wqzݣ)[o)XQ O3مlya雥ࢊSɽ-BvrVx 1qׯZґy$n՝uL{RMm%Ooq=J *(-RYOD:HtOEG3ZcE>@(d=hKyD!%d $HudsəL E8Eǽ#QP HOΤ zzs4ZU(h@@*zc!@8Ҏ)zP3@@Gވ>i@L rhc{P*q@晠3SMD1¥eC @ܯ-6HA0x$JLVQl^>PKAR=ygyͨ-6!@ AtN 36ְ+.ԁDN^5X/ad_mn3lnN%RИ2GH*(*Bď>U_]Ƿm{n&-JIT1V8{*{Ĭ](%iRO$ۦmь1fb'>>tsHOַuЍ'Q\-Hޑ)>cߚꉪFAJIl)3U]ŝr=U.04”V&~|ȟmA ))ct*5hZ[- $Rǔ.H}ZXy[ )ӁjMųom$Q,\bB7z}zJZ!%3 }!d>{-,`;p>Uemiz"B$qgU[WH{/9)m"@jǔ;@&Duyw[k8*3L2n ̋gڃz |au_ Nn)Vp='ھKC$ޘHWX|GR=(JuDQJ4{Ӡt@(S@ TZOsA@ejK~u`T|7m_Orz-R1ҳ4z;< ՛]IPje "?֩ҹs딧`w?h⭚)}99hT IޙwEI(G#ҠҦhh(GҀ (!MLu4jN9>3@CN( E8Eǽ#QE#@#֠qa#j%($zT6_00+9E_d[ڀVuƜe{\Bڡ"?^]rJZl#}+{KnPJJǧbc93ڕx㔓5N\~eח'j#3ɉɏdwz7i Jg7 eXvXB'jO߭S\pCμrJNIIɮYӶ)mV⃅MH$"993+ܾ h U.% *!+ =RyO<8mk0~g}"ɏ[2hRwNŔIk}l(AJ[gÌJ hH ?cV4v\"!iVOY"d~y|B^]x܍o@R }}R$  Q0>JPC?KZfր"11qSܷA@Pq;"tCt SҤGsSm흻QK-OjV$\?J#*@ ~PQۥ@P *(HӊҀ;*y)Q<=>_*Q?H(NhҠځ@!OJdP })v>~u@j>} >wt@}w>ߥ.)CjjJ;P>xS>k‹o9Ro0:TB\\#M"r`eoCeƊ7ILG~y=Qڽ"Z.lmn\8[F州IR$zH1~ lhPsFV 'iSJJ?JҊ:j>Pj;:t >ԻJҗ~hA:hWSk 1xVtN\5n86<qIG<)3XcwgqyUupHRO#qzZWEdJˆ*A XL(GZa^!ƞj7W<֖]<y5Z/f>Og\v5MZy -OHy"by! -Rh['9I5b-vɋ`<_ګbGRV w QQ5kl)V8  JOR /j[?~g֘vdM'zR[:gV\V迶q4CyA\J篤G~Oȱ0̏[j JADs< >uZ \8YɒD*sg,8@)6!Cz[K P!*Q ~Z|SMruQ;DëxHV ̛]6aj@*P&*I^[q$FR@ڰ_Ch8qs"J<:fWZ)RV OB`cYli8awhJgr IzZhm܋>6 +O9<先JRXVB})i-Q\} PRS==k/rtjMD}MyPLmn+B}*0ڟͻtzPL;S`i?JҊ:j>Pj;:t >ԻJҗ~hE!׵?jҁjTԤaWL>j72W.)ԂjIz[YMlO{y]J 򭖐'2Rw{YNׇM71\]n;L [|RuTA{0#Jbm]3rЗ\ 'K߰:ERNq_3`=7בZv~ŗ7Mբ܀Xu+$牣HS:VGV^\[:(1HjR#ߚN()4߀#֜ҫgf)4:b4GqJT'iPCOzә"UANMTMh Jh;w$CCڜBhOZS4t"=()M@1֡h=iMb*si:%WhC.&P!*АAx zIz--ojĘie('oէsJR,^,gKM.sߡHG;V-a2,~n_ﱖ-0.T(i!% BN=*= 5m֐IZ 81:q%G>{k]B[mq"DYojU$㊅8m%)Gv TCaOjMR@ S_̿V{fMFdˬl%,;¶ :~}k_ͰyĘ$8 a>LfuxKl!!IQ Иֵiܞh̜嗃s)G{0O^z8pά+RRIitq*֤ w;@BHJ9ڄ Оh@DzP)M@:R&;cCDwzҚ 3T3]bP+f SzmFkiB\i>VreX]aɈm38V1KCFOOҲv|YX7K nq8]NBXKe1ڵVT:d$@Lqڳ}G-nZJIn.*CjPQ<ȟk;Z.e J\Is;)K U #֪v /!I #JõcL6R ք$egq$O~1䒂/,i`vnVm f>u-( "_c؝>@<iYˋG\{C$A;8jL(AI%*AaYKhKl:|X;r҂, &GOy*RT*&I5>#wEm˪qQ$=rEgKq!DҚF;w$CCڜBhOZS4t"=()M@1֡h=iMb*si{RQҊ-NҧʬgJ%sԬO,ͳRЗYp@!H(je'>ӶdӨq8O׊ld6QcT(ިeIi@d}U$%J~`;Tӯ"޹;cMv`WRZRTdU:XOs[- JvU%eK -(m'i;D}>AoeJ'hRs^" UV~[A$09U6"I2ob aPr?[yxKk˗ $Hhh":R݅ %V!@G ?*R|J<@ZHƝVd#b9yfWQr @*xW0|Z\-7E;u*;#\8[cvc21(Z 9{V4@&VJ2Ij*<($=iWAP$ӟjIb 4Iʗj$&h(iI?*'@*$ӠOJIsJGM0M&{P j5FOFg؛^q=;CzpT+NYdm;G}w<-hKBҝ$uJ’~ih[f U?)[$QOʽ2hOʕIM3֕Miʀc1HP$KMi44ӟiʀTIމ9#ր&&~T=&>4Ap6PPRJQITv?"]}n7۬(9nS<=ypOٟږUQilTܦgmw_+XnX{~ŸnUW0 0 (p=OީٺJdRp$-`G|?.k&!m<:q`/mKl4tLp <:m;[L1 _쇜'* |7m+T~kl.#D2}J[Z7PO!Ggn{"˨Zc\)Ҟz FNc?!/ɻ^[Z퐙i@?~(nLI "zJ_]ygpۣ.%+[U!*H15t7sZ0,s76YABDDG9}/SnTc\^_#VmͶVlꔙX' uVsD6u)<ym`զm;AIF9&F7MYpn7NnM(!`xzʖ7[IɘǮ7A脨vߴֲ]Ń܁nrf{dAT"O^ғ+RFɒ<ԅO~+^/ޱrqJ(! I?hZP `?ҼO,u'n-LFqʺZyյj׭#7;|WP2ȑӪ@t|uƇɼ~T(Bv %[A2>q$FOk m1eک}Fݼ** zMm_8ݛKUj,-6̱Rt}ztkR ͝Vt2DSА8Qf58[291ۨ6xJL;bljwW*ܓ:W8JKj=QQjS )RJJڙ ٳ}r-w[p7j V HMg\]:#}ܺéj(P"'aMS`SB9qPA=&\9bi/)ܽA<ɧG/.IE]x hE**HƘ4Q@?j'JPZ=i1@*~U @2~TZ=s@1JQ$`җj(4 TPh*(@[ !Hi@RTTDW*&TI^ Λk-SqrVDS={C[=)!=*ZhB1 E?*'J(ڊ(4@EBF)v3@ERtvJiTPyzA4O"J( .PډR@9T'9րZ}#LP CD *(֏j( RE )Q@9#֊ yQ@0it~O":ʡ=i.z)bU&dQE{QE"mlCy)Jv&֩cwC{,\˝Ηb 8ӵ`zq~hGP\&ݣ#*k=:ȢNɕxԪ7kju xx rjҷϡT\R`- cuMx{aifuonݕ%-Z08HI;5F{뿇Z>6PU1H'kY&N%m^dHP $ϽaH@*+aZ*T}=kJ~44:Jڑ֜z(NM#O@*(Q@MPh:P:Q@@9ڟڕL(4PhE/ɢh ң@9֏M>@*|>,Mee(݄TJL0;`U?7NktFRد%q}dT[)aթeI)Qa0bE)P%(+oY1,\6˪TyӉgyP% p..'q>Ti2rI%ƨӶn__bwba&/5#QGVs׉OYc 뺳[(y;;P ATu:׊l$j5Ywu7ڴ6D1ܞ Z'_W34W<P(^iQ@((wңEW|m=/޴%Sl-l<)R JHlǤUa!jILHJ &4U4M<ӚT}4 ֕>(NiSP i*t&?#@9HP FڀTQ((ңEP:Q@@9ڟڕL(4Pjsbu\@%JRU= ㎧?ֱˎ9c@u/N1յ3l [#R+t}*0'yhz;=huDE .Tވ:PHӊ zӈ" ?CN(Jiw{P@(h.Ɓ@@1H=(Gz Mv(";:8i]4ގG4Z梨bTVm6[iCQE"NI0xԚ{THRZVr XeFNkd/sO^lx: ݻAPX n $V5rXn!R7 Xn~{"JPSf-TڂTFs&LW'NNV?ʸS& 8`IQ$'zY៹ɴJp5yILwW nˍ.OvqV^4殨J+X!*cO8O]Fo^֎: !no*>}*p)֫ RlT_Z$_ZTȥ@3KI=Lk7iK+ V}W]mc5;;-6wװyJ} Ie.Ɓ@#4J`H44h(@4C?iwz;~5 (]Dt֑ GqHEZP֕2)P (=hցDPz]ހcL zP4$`HX,!){V%*HRL${ Iwt qBD:czqw#ր_DDP|N(O#8MZ;G8(4?JfqAG "&;h4J`M#ҀtwMvDEJ;y$MDPz(:czq4E@Q@OJ(J@8Ң(>R@ )R#@ED|"DR"(菝BG t(>tJQA(})$STH&*R%QAJ΄AP"Z}Dz>tN>b=bէ \+z7)R@ )R#@ED|"DR"(菝BG t(>tJQA(Ҋ zQDPTΕDP=i"zN>bQ:(#@QG΀z"Q@D|8D|E@?ETG΀(sAҠhR SO)M@E"hzAG?jGʢPO҈cD hTPR(ʊT@D(┊;P jE hqL h@89<4"Gz6iWTR )GQڀd{P*(T3G`T3G:4)扠sAҠhR SO)M@E"hzAG?jGʢPO҈b#"-wV,ڼ嵼Kd&tL %x_#yo۳9K7ض*Tm)A* 5L WZ/+1-]Y}RZxʐ`D>f؛bmxpPK-@ej!H=7:Y|_S scQ3U!+PjԀAC\n앶s$i?r@6đHP3Ob*@ 26T GPhESBPT_AM--D  Nn*)Hܯӏkh|T]qΫoPHCvFrn!ĂgA?.7{ #}jM1|҇޼`ֆB0!N$'=h,^&NWV 7d@q̃Ju`&]eEuV- =j΀ڕ!N%*T*%$w[i%74R KAJ;6A$ FBII1^5? 644UK=2:鹲ӓr 浦>ilCXZ0I+[ GQIrY&+%&| y |Ne[axG_fu+9/3X%ȹKm} %C$B}؊<+uZuCW/y s~$)a{}E0#$N6j=Er]VzJ㭑X@Z 3 \A$}7z^kELJdJ~ JKOy[T}BDso z ja^m>JAN/4ra9wAe( Mow'C> /o vyۛemmn;% JJ JS/ ڊz/z6xZR~M=Iyǿxu+|xᆦg-PK7]oʖKg  q~E3LqHסzAj<3jUj%oISoZ-+R!n%aA!b[j D~lRacXmwإb,(~3˳ֈK<\:Zdn9Zm7r[*a-&qE$kJe6N4'8qt>JQǰ(Q~M0+6y4}"e_q{Sz#ެ~;\WnH.\)n:.).9ymKJdnfYK 7LiXicܒB{U5`D(┊;T@} 8r@Z($H$IHLSS1.)![98*4$ZIIi DqL h@89<4iq#@9fS"@ӚTT&&4Zs1HsJTEME&<(P S:T4J{A$c4?g׊88$xlƝTm i.8T=S)  AB 6,h|\WMaI?ޑԜsW4.mj^6"ب*&BdW|~ɣ)2éY%CE]tmg6gڢ)<  Fܾ1KdI#ny=㏆:fPjx{0m\ ܴ0:((giaoMnBQnHZ*IWSXqmuZ!(* >=$N^ݶJJ  㬏Vm~!pv_h FSd,'I3 &"VS;\>wH%HmH]ȸrwFAFFA&gy5}^Ɉ>P ͫ/򺅗"^7If|r$VQ |bisU)>[HsiA*!$:ނ;UӼ>Ex;Yw6yX*'6 $i̒$Re[kKx (iی6w<N& mHBFҮb;|zx n-4}~s!06[Zq {7(O>tǏ^~]B^ mE* @<Gfj@LnLXokM/t[0Gh7,[R?̲(LSA!0S$pHR (9k;o˄rgᶙZqx\a݆ Ύ&GWnX;'Zض++-6TJQLLal'vڳl>bث1Imo$+Ю8uxH#>7Et\Y SNiS[J sDD hP( )Jf[3E3x6cQio56>o4a[JG0x$q 6`֓D]xq+qwhb%+ԗ]q?L5xr-Dfe1q^A?ZIWw^<5\\6h(*ZPL= 62YQ 7=@1Y>mw0kot^B9kK6!#pT$)*H $Gн|)%.3dT=@.j|jVk1sԬKj9m*BD Z8 (-|b"f?@k~ԘALo{&N^dҐgb YQ x;skU^\+e%ԒRV@GT''})!䂿̅&$嬐R >oTQ>]ֹ0'K/ܷ|)n$mm4~ F>z+qm|/`K? H8$0̤#R{L ӹP?W~pey z鄮b i* $u7^ hpкr{dAˈЀ vPՐ;ry ?n/6 Tg2+%Ӿ`tN0¶:7qr (A0{Wҵ͛N˶d)ڣ`LGA*x̊{E W4{I׊Ѷ!*NZʄ8Lu@H)a].98r)ؔޢ 5 ,4yl4/+^αK,1l7LQ|9JS״WSŊ/ujMf9IS-e$rO$m+~f$W9?"gJqt%զҸm;ivcfշ>tqZz6xe.Ϳmen[O) ?JʁڪJ0$KijdT&D aPXJ8KiC(Bq;GAP[~_CmIPZ{jMaںQUlJ^1 k|3xI}W~h™曲QɉnQQltԧ򤂤t;{Z#H | 526U3Vc.l! A F+y%7$iYiŔ|w?*ݰ ϨOJ~F#jMy+Ja|BDi6PtWMC$HT*w?<Πx7*7v8?%L4@*O`@'m@ $ QZS~|>h#oHCX(OzʕM$e?oCbHEGE*c~DE#5SԵN>Pmx4y`DcIja]*I!R'$=~a֡H30Y()T%*H<ȩ!)$rGbi$Iv!_:>*RY_EҒO*;E" u4  [= >Mҟ@^]?zY$#t9 #84O$Jm O$DG mzݵi.4OT$"ax})dQ:M5ӘeqVo-P6hcρ4F[Z%i[m* wjѹ'5)AM]I8<~[u*yHڗiTj؞F~MFqjJf!}JaKd5' {(rVSIcH3;`Hɀy@`:[1y\rnnlS/2ꕡ@)${5xD)k'lnmTSn-*A$AH 5uȣ eny!D!ͦS D5%AH0R}7W߃Kk&'t͒Zӧj>%ϯ=w'ee`7v|1ޡOh))z*Im[R<# =T4>*_ .![tt:QYӞˁ<8p 'ԓৈAT? u?E7/a@+~ 8kHТ| Uj`QyV-bP@+P)Hx*7/ɃQ]5fFm.؛rnf8(Sd|5<#OKL.*kәv_8F*fEyT{~ٯ5uswK~>ez] gq)emTWvn "RHJTIkĚ<=j(<1^߀ixP]dl<Ֆz)fl(+kb՚| ;f{H*'I'߁Hin\v2ų qjLk<`S>kR)R4}|,ivƵ06V(ewHUyMx5,|hsM/5t;B >Չsnp2Q2@*JOg{1}zfunZ%݅gn@;Џ%">yRG˥BYJ*bɊ<[9d^CˉRJq܎=_'_!skTݮ S?J2OҙA$zU%)?cxGBU7&A?Vm_ >w.Aa1wN)Ǒtѽqrา! m&:ɭSI;C4Բ W&2?%TVMչ?q>qt4-CKY˵)#>| ϩ_ET+V1S_c.X-n게2drg+ҥe?ckY1WQ',2,$JYڄrkR*09NП>TW!O6۫DXH+ Ԕ^0˖ =ڀ^i?Jl񶨷e+Q$Ɏ|3yhJai=Bx#S EIƚJ"@֜O-l q6+hv"O`jJș#XHHzL$gbEA62d?ޥ,GOJ P[d*1?h'Û$awp J e&I'̭Q&qڏ9j v*?q39ı["ᅏ?kx'kmk;>]xgiu1a.n1Ai~%qXaQZ\!?( ժʈ[ik MnRL ʇTۊ$ VY"9 c޺1#sZt qϩ!W9,ie$R.@@ATxylԗI W+SM H4:{X!xz\۸ ~scSmzrI]%轾)۟ 톕h횼 *CS?$z㡼6Ѿ[[+\хƳd#iN$O$H";X+}ɿ<>7 \MzYę SM4?ȵ)pvhhȓTic>)#{NMM )DIMIjZڡiPWIrךj=O֤S NJ %p҉2I}⠂;zj [@ MIH#$D@y;Gq@!gpH;U}xi(R ( {DTA|\(M,LA?:^f:Qf=PȟDjh#Y ~(y<{@Q:u&Pi&9`ɓA19Tzi){ERR@@PpGi; =iEIIi (N;B<3R,QC֪G4" 6ʜRPRIQ Qwr 2;)|WҐ DAB.C󚄢@j,:O>cF:p: <}Ow4pL SDxRAQWHH#'ޤIi#j4E.C҉NH-怀# 'y?, 3;~\B'SQ`RTf{+wd+q.*S7) 'ߊ "㔁PښJ%[{{DgO=@@o`>2 {'4H4$}*%6VM1~c_@!&bG%95-bV&H $8‚@G5H%(L6z Ud<[LMbwM%\sjBR} Z(;o q Mogo؆u0,L]aa^qo_5yYℑxmDT~RI['P DQ6O R WƥCXI<J:@O@nIBOf#(-7:t4%}H{UBy#($RU̅Ҧ?GhJ`T?P"~頟a5RE!KRmZ}̈́81Q~}J&u6L@=?sa)#kP}9vTBS_6EORD_Mnp S U+xmPZȢZwNb ptǹBH'$id }`i$CxbVʸPH5)di*~T9toPJ@I q*zT$*8Oj4hqja>¿` U;# QQDɚ"$R~J?SRw( P$mRJAT?ڬ-+ ')2TaKH6~SN@ j5}'ZB A mQ*&:U,(-sIJt@OFB(DOB:T}1l(J*9*wtͨ= CKaR&O4~$nw7?*{ M8qDm`Q$'I*FRH<'P"6B):+ ( $i G Q?2hM)W5 ZIPY$h$s@%2 Fh 2HP $TW詢-gm@&Vqi')hJ|GD)<(H}dR߃=)J>ƠO֢ڣ>XOv6OriO@;SDsP8ڕ MJHwQer ?ޚ?S̎56A,7j$=j9}pjI==OB>?qK=EDJ@2Gjr@ 'O= G>TK3S-TpG@?OE:}`揭=*(S LґI!ڔ{EJ?ހ>t{HLzQ@C<%|TR)s߭HIPQy3J)t= @e 8zOHބPzJS"Y׿18=PH?28<Z{@I)  )*MD!B8;$) #Ex0IR8\AKs̏JR4LRH2{{P)ߖa*hN˖ ?ڥ4yRꐇP\~֊OޥJé'*gr#BERdn^@J}>R[!P~q1V&(1JR L=*54QQ&R6*;C).OCP)HRv{onj<@e|;=V|8Q@1#}TA[N~8Fc+HY3NtM*T#mpUb8f*H 8-gg2KnEL_Q?Ҟ*,% ,;I֣)#K3c4KS2|q4ZP?SQUk.(q?̢>`TKJ m?ӏֆҸ;Ґ'S\t*!sTXHIP?\v)}#p$sO-~0OGc($4 $b}ʏ@) {~)iI?p﹠;DPyǴR 9''POP= |TLO ?qR#!#E*"??҂H Lu*G>U*lQ $Q̚ARIj~J=,$O*nOy`?(6'J zb?GA"*6EPOHu#?Ҝ'TY4JHAQJGt"j-dpuPGeJXuj&?)?Xz7ED] Az]D,Q+GOؚq I9?҂O#?Kz=?U_?҈_w#h'aj{c_ *$13#jg'zpKJH #p?M'FGQW4*K }T+sYA/~3OUhHQd)??Ң-()SdL?Q¯I K!L9Wq { ='QO cR'FOTo5DRwLJDJ?҉??҄短f??҂IS(w܊AJ}z}#3S{o?ހ@EtFJGr?ޞ zD~PH R"sOtڙJnaBzo{H=8րgGtڢC?D9}?a Wt#G}GޘLtI֖(>J(OmQW4G(B`TOTe~L+&!? KBб?&*"{/6D*#HME-' Sd~cYX)+-ѕ)BAf`WNOU*lEt\:@H!!'.͢I(*X +$tG(UEi3Z 6z~u}3Q 3QFBϱH}S@gإab!b# џ10ϱF~h!@g< }3F>B?4gأF)~ibф 3F}10ϱF~h0ϱF}0~h#P(ϱFw)~hϱF: gأ џF/<O gأ@4Q(@g~c~hϱGdaba g~i~i: 3RT)~i@gأ>@gأ>?4gr 3QF8Obфc~hϱF(0zO?42(ϱF}_xF9@gأ?4a џbr 3Q0 3Qb!3AT}3Q ]yG)3Q>(?4g O>,pS>(/<a 3F}1ߺx3Q@gأ>B>a_d  < }_xF(ϱB(ϱB0 g~i=S@gأ?4a3Q 3F}0 _Dcd >#O(>D}QDa@}F#>/"9O>TaG@@}A% x@}F# Dc >##>#0#!G#>!t@}F菢0 >!>FD}QD >#GF8@}F##O:B菢0 >}?Dr#!G@}FDa>!#!~G)pe©8p~JY =@J2}O^P,,yO> g!gS'e,<,@eF}ЀA>Ϻe xP 32Q!g䏪3Fy( 3 ~I }<tg (Ϻ#?$gzO)g)Qp,}'(3~H3FQt 3FQt FPQtQgTS"yO> F~HF}(@@tה ?$K<SϺ?$e@e%@eFxxKge@e#3FQzJ23HyHt?$gg(3~HF}Yegg 3KtQg  FPR> (ϺYBF~H> g@> }Fx23F}џpgDz@e! )"y@>@gz>eB?$eBe@eF}@<'TgTg 2Qt( A=y@O?$<3FQpQYLtQg@gdTT3GdgeB?$e>Q y@(Ϻ(3z yFPQ>Ϻ?$e((Ϻ?$'t@FxF}ў:2>@gtg YL"z0}PR@D$&B10QA)#RM?t+.Տ0>ioJ,xalx{/0@!7s0{^ 㧈M][G##MM2~ZfkƓ҉6n ;pOp;9=y,:꼮f3 En]XyahmFYu-- Yj%&T]~)9[(cx}WkP4⍚&~kf -ٵpS-^%ܤuMm6u+'dehc]/|N>nn5/i0[sCCsU-3j">i=:4[%C}>|222Cođ2GVUWT]3?-jamF#k@,=#s}-OQ47Yiڊv;fsȅ??/TTSB%M"֑aUHjMJ x u!\tF5y,a K=* Ė&s#,35 x8 kk8 mk 印:78Sp~/eUjƢ*?CN91+<_}Oݴ AH[Zm_bjYm4~ d37飛987xuA_^О} ?JhJC*o8vqb![|RTZENOMnr/uOXx5^SV3Sp%dOpHW֯wMgIlT*YEu_, sL+gN3ǪazE~}u֊}qht/TW2h-ݷgqݹo=VM'efS[>On{7:pwq~ܞ gҟeyk#[g$:cU5Gr#&ߝin:5\#7fVhl]':ZZ0%5Ac0v>\~ɿDEnsc\*+j(1qk#1eIYx&(Q3bW YyVdOOݢd@-z/%j n pMEfh/-̻ciCasNy' ^/XKb:]‘K~]U_n/4:28V1wXj-O;U==FL-Fp~{_g5eVWiD Yq$k|A!hø<̼H>|!VYw>I:N_$m^[#ʏG1L܇59oQ3MGțO }+k|q7MG2z=6jW_ që(&_gP!s~*Zz9㜪Vh!u \2[o=.r;'|/go4NH|mgꈫ{ߢoKWkz OCUT5}Mݦꑪjs^E?7s܆>ͨoTOutd߼qh$-\x M c=hMm,;-mSXVI$'1c=N߲ET[d\SO;lp O PZzKJnvpt}y@F5-;Rb)9p2_TqRQ=} uM M5hsje͎pӇ8;ŧ Oxs..sbaynw!ho#|j٦W.GƟEǪg!LaP\z 1G@}Rc Fd# <#"3B8@ԣ#M\gm;E8F\ &@}RԫKE}|OKCSS#tC ǫ/0 c BR9F/0_TF:3FB#}PG))#R:BAL. LRԦ#!#Bd'QB_T#0B2RBd !qF/(DT!KP/%@I _TtO<#"3F}QǩOQ .=JxF/09K>L"z0}PR@D$&B10"9OIzG t LtKL iwB;z!4!@ВP( @聡$ iwB;;#BB @@#H@z/T^PHD$ ;U,N|d4PҟtsG)RLZ5 +)O2H +zOp]l}ޓǟ b U#|,i|lkܦ>GD׾5/oRZҚdIN30pl5ei--t6C@=8I4yrN>iozUQ[xSfm;潒g t=)p^tgښJg2_qkTб;x૿ѧ4W:l6V9yFgHG֏rBI^mmnF _5$iv>=},T ejsN7;tKzOݹIk^ٞF!(%8#H>YOPeGEK.uf )!99-;C  Eδ%5 m./-h0M%l$:zXY~7: b2DG?0axMɴW^IC}-6I/5< =H`_ eEt}%O$tC xjo tw%ԚFsNZ뵶Jn_g 6u扡UYi~&|Nyc}ohza+5nRNS]Y19 snpWZl ,"]ܵLG\̖lh_< R[;\sPQ7dp8>֞Cp^:AkeIdNֲ98ÇCӞ}'OX5~o}Y)~ wbлf[4͇MkKnpz来kKc'-Rڼ }Whз+~uFa%Z_oL]*t83Y4eqa-s#=?ɅYV#x-|FfӬ oia|_^z?j p1[aiȩ:|9#xR T6uaByYYzO8k))28mkȁv:` ^=QPTXꡤ9+8oqW__G,ZTOM a2ly=׻t~ 66l{`z=p,kٓe^=vYp4G 3=/& L+2eᰒ /1Tcad;Z$;m 5RCN6;ޘy5VnW䟸g G\efhݺdu+(!]7c3n{tm9J쏈MShOd6WATLvpr1"KpxuK~E.sH-pizkxV<\GSF*K<&w|z*?<ؠ4w>6 9? wFZ7iSsKsOc}SGp6-{݆N}Ͽ a״"BkiF<YoS!2מw}WFg kxkfL=z+-Ó5]Els^&xi(xsVfYY#ha?)m㖣 ԯn!p#$q5ͦ7O Ѵf6Am'ʳsm[-?UI~:T&Z=m wc_@!ټ›lŊ?5G2T>0 [1-VTP()OM{%sZYZL>k9$7=ExcgS)g7$߉fj_K. `tjԾivQj=Es~y6,0R˛s[xoǯwͣ|0p{ct2G8sW Qۯ:KwFex4T!9pau[{6[mvkE Ej1Ͼ5<-/v=ܯ3]j+m)P|G07GpYŌO*^!}|jJ }IE򮊣mvv?qܬkDm{/hB H7krG)oOdZT nG.>co ~c>F֑c$Glm\7XږO&"y.Z0/UX馔FY #wo=ޯgzƆMe(j#FOdc-+L֞ᎨJ zSp&=G9yO-f+E{YOp|!A jj7>G2 >'8+Ψ+5=Ui/v>:ڭ;;n0Cą9 W}|*~\$q.6\uof;Chs~9ILLg-Z~6[wɚ"ɣy{j*,}jpz,?A?h'ٖ"ۈ7;\A>> TXtR[pAM=%xq=Io ;=?E3o5Md&Zfu=OpG&7`v^275+R61R40ءc@?&Vټz zRP1NWſw9fw7TYZ׶S+ٝF=ַMs8St226^ZC]=J:Ӊș\0KI{gj6f@(YPȋ@'Sмca>Z~Hf y1`ɨh}0OG䟦el.t;?J&~-V-1:`),䟦'(ɀJ{}ջ~X^lT Ef.igg/,g3>ۭtNupkim+OӲ2OZX{dEp}1awZYoݟsOԱEQ}Fd9i@GS^t=hM>)w2jŽVTG$0{'\bSqUU5k:B:L9.Bd/Re-RҸcEI+]%'0y1G;h8Wu<5_ Ă.8.hݏAn:ۢnq펅 vhnyvAZ{ϝ$ uoQN**gyrFеÐ}ݧ>ϩGk5%R>c/GB^0[\xk0,czەcYSFG8PO%aQ_ꥪn*\=eI^Z\I!IUygW竪YٵϸC Dkk}fu켑xWzIj[NjNDGQaݦ8P@#l2׺:Rb]G~?W'*z E%O@FŞˇ K_s\=>JKoN VNY5 /ءgy+$d9`kKԀd==An2b6rװdBR ,R`GqdXS{-&[Y~' 45΍"rslNq-7e]G3#@FU06Ze&.r0+_ g As -h?9`~괻J\Ul|عY?w~N@k3C R@5u;F"s]x!WK_ C߳oA x :#xez~xw-I䦥ǚi {I! <&tOB2 Bd(d@<而 ?D(DQP/4g I_< Gd(@Dq^}5?U?O|u4>yj꣧H.sNv},zfךMi= sUڶ685sb>U3Ui& WFZS?;|n-1gQ-/ǃgHͧmкNb߅b(88h$arߨ֟ ZR{h+ne 4t OPO'Du65ë;aBQ|x]SSkU6ϽYj4]El|tx-.;C$epo&t-}EU^gZCˇ0}W>8Jj jiJ3@46e۾ nxVFֶ(=%ZTO6sѴgMW|mqtz$lm&qv9+xUVtxzv̷]IS;8yop8x.S-ͫ_EUh*p|70G-.zꆰM?UKɪ%)nVGVDd!}X/Ɔ})5͒_G&Ӭ$Y\><0Nz~. lh=ZhǨ G}s2cSYW gG4if `3jh p~.{eoōB4$ut'-֢|[UG'/>@@Ul5itT)w̾OOh%z[SWU[aQQm-)(-msQ4owS/}?gm ӮՂ͢Sk.I8s+d!6;~FɮQhkF~"x `rSzMS:P c\z.⟁_b %J^YKZwbJښ f '+?د+4V۪cllVL ``/& e_b1CEd;QO.!s㙠k=/ z=8ˡwk.EV 0teM<`?a;]` >0}5R/-=@+)d2]8K[9$tzk졡S{)kػymsq4+E5٣h:0b=2o0zcޠG[9{A#v[2&8>MoQO?ūMݴ-imMCHü$1٣y:_zuM}mMuA3ULGaUp@)S6vpwֱ'ի~Wg[<ʝEELx<@M8aA>gUl:VHN&:peclW\l掑q<1킢BYKz׉MM-ḵ1{%k 3.7I]RͧmZWwIKF%۞in:s2luQI6Fڇ_eZO=ϟɈǑI=8UߌtW cgP%eM]Pgl]={)ІOT\1®ssATD \ZaƂp^#'Ϻ JLG'w]I(X2p\Ӏz&pvE?2C1?5E ;;CI9h5ڞva4qAwaTCCߋԫ=IVHƑN|ܷDFiOBg504c~fݧ.a!;ZGsUmKkÞ̐q0q>2϶DcӔrCpC$cP%5Idc 0WfLVxKSvue|<9숶HpC8#MċcuZy",SLӰɤČH=W S}<4 톋LoZv h/Iц*lgoN^i9uV>W#-/ٙ2A޷4:fSjji@xd=ks䯥 :<<CTzRHvcG/,07Fu6 %[5q2]$呷ai^1;x-L$ ,ks+w? ?;?Zm'`?Aʿ|up[69X,K;fVc &}u'ag>?E,.-Y8U߼=<\Guk#r/O.8XwLM7'GFUQ #(A('#<E6^#iZW銚}-u/ԱU r~O99WߵWX-Mjz;-] W;:F]OaĀv[&|n0 }_d.~j/L Hs=ǒVI|VLz{o'ZZ%Kq%ݘ0O-h!/>(Y<iZGiApc UChPxpc8H_cUk ËN[L\ԛ}&^hf{vZKu 3>Y[%Ld;cGS\ϯ4^k*ũM;[kUDId,iq -i}Ղ/W! C4TTI|q`@܀qmriqlgYUmSt59c?׷ouUVVTUJ2JH.$R16g%'gFPiGu.р59q~{9C|`s4On_i9p%UykO˅Me{ ^M^d` }*c4{[\`,SQxeahþf\q*L@9ʨVc *6l4=Feխ_掀dfGt㎧QG]t8c0ӕ@T$ڇ&_LMsCƻd{aY GEÎδN;~.@=Gp`q‹@J,a44&PcǦHg>]S_Q+ *pp|m8n>m?>zSKגK.i:O]eZn0%ˀA~|s2W[eEK;m|RJ.W50{m|mq3_ nHBBSuE%h&1»pi\vlvٍ NͿa n~TGV=k\/}²MO,tIo8+жٕeuK%E X~m|X㏪0 cWӏ|1:vW;tO KTT`'ܝY{+"6$lsyhkKy9 !%5쥴6M8? ٍedS:gymd;'=GyMsC=VSn$sn9Qsc[pQ$Uʓ h~]';F1J.h$8'3g%<8K0@VY51SCd#9V&9US}lieLnc',nFcZ)|>N;# gnYsw4BR8ƒϩW1G㎀p=U^54ݒouƞoP6[ib`yhK9'/99nb|v=$W:7k \NHޞ/ κ&=)հQ[{29ec8\J 3MhGd8{xv+$.IuXj :,,%PXdnm^f~_ˊ_+D/Jx?|X^Y]-2]4/4؟M9v֒=yY}!2QP&J ?De,^B2湠4ɢ χr`0֊pA%T8XecIY{?9"Jݧ67al7-y\&,`?.V|LܵE.Ҵ8y>kUi.яx+b7f@z&P-kŧ`s!d,I#t%uA8){9M{s_dMÍI[gsv-ώq>O\^ztw}73u Dogc+m u{?ك]]l4TQ=mK~0; ]l7; {nvekzVd㖸_Ue,DVꩃp=]*W9?*S}*OV#0qguVum[ecd'/Mj%KYe|Pq\ƴue`\h} C_YO_OBƾΕ,` UFqDwO*n΅Ih|dJ*%Cs$B}}QeE/4@RLgA|#(@}edO<}N:2K,A%cx)pPz*qX!^u˙-EI?utfg4t?iM`'s.O?j?ecvnOE%'хe d{vз?ԺX,#c?RBșe~i $lR.{\Sq||pn5qUo=}>ִuo8ܯrrN>6Uz=G|ueӷk=DчGS3I,18=8q՗w}h09j{$kM希TV]H${\3,{Z;de9O8[ =t2(edl=Vc~Wm/#:CC- $>0CH,%U3qy2~r?5gm̶$FBh@p;@!4 H48GP8G=!#!(M/p+zSM#4K*?5-e'2 #΃-s'wO6۽U*}lQK)F|,KY,}) J#<__ t] t>O "@>`*QM%4Tm|e/),vL Z^v0Thm4/XQ@hMMk''b㥵ig2JۼO1dcs\ǎ#W5g/֞;7^ʷ03)Zz%kPh?uE'ikkN23ߕgfiۣE⮴457k -4neR\+ꡌ|2#u!l*~>*Zto6d Fr9s_ŌSuoᕧF]";a7 #OFr<חݹ=9_7Q KS v@^q?' 營{TxNM~N+v4n=Z䍏9-ㅤg>-hfl 7MY, m'ø>ݾ7 'NfEJ=CQ5a|qcnA0OKڦQ]a.cl0Css'y'M}je"/wɃ{~IhuJ?UP: h |L&3=9cץWL/74J>y^`[Ihw 5 Mue6e=Lp-Q?-1.?c^wYkK,@!k] ǵ?wAtcN[gW}:3 2yifϳԔEOYḋSfVLb_Sגύ_`Sx/J'>* !Yvy0~|IZ,2eKkLʊI)Dl#跌MF|l^ t47ni4WX)E-D9g_:޿dO |Yz+±9nULv5gOWZ"zѴpc7h{F0/wϜ[pm+:I x\m\w4ƿ ]1Q*42-tzVrQ11hsGŜ}xutVIhD@}=-|RHFFZ/?S5eh:HW Ϸ:nگ]kG}Q8ulQwk >LD3տcZn.`TbӶyreiGEϩ?f/ٵruK*.՞T`h= <:1j/>%\1@+~?e DFѶWY?3,r=I/pPF\H<8<c>]<~V#[容O=Yyy[Q~ˋӕWYh(a2TWSHxq q$.jUJ|'Xx==Pj;<2qU5@kӆ]I]Ux >P2[Q-3T%{.q{G/GK`S75>x=[q4.͔/0ukw~h`ݟήf[p Y'&_bwu`5Mw҆H0{ke/zJKGttKpé][L ×I9l'\VY5Fi*G%=utك]ޛprAp gƏ!c)5Nv3PghŒc{YOy'vžg{z|nRZ JNO |8}_^]73GJ衬"J nX<Y9z4|#$^{M/?1R..`$xp p 輮4[]|QӯM 9Ed;oa:)׀; mhOG6TCr?Nq3?D0L I%P.~,(2>H*FR2n\L+zI׌#ZYo|-{Y3Z܆g.GX ٩-6+/pl$boNI+xϣa~FcW[ލ>}Zdd2O|d:BkrVFVe4WmWu\Oq;X 'ꮫ; ֫> ٠4;k'н#oZGs-uS4GS:kinCZypIN@s|{k7WUwDSKV>+kES3 /~`t琼Mo,Z* qSX$̚~[2W0p@m?.hY[k[<@sCWG-9&sj K#k{;A\s[ÝUrQDa_mel|Lf%V _@n=I4pP"g? m8<- nq?Ec\핗s6$3?XAX#K>9<33ݵЪqq0lw=Pñxߌ7Huq*)z48BAG~9GM b 8BD_)܌>[ǸV=p*qnj,e'<88H#89%e5- UK,ZH|ц@v0qgg,}Z'3\qvUD|}[=F Bvw5&`7JugסS^'7֚˩e}J]7GNJq"3rǾI}Bz{qK9}Jr5ĆJbN{򪆱vP4'Z '3AVm6&֍݅L0nO}V+ێdp~$A\.M*;)A G +6őtO(Z+jS垾=S#n@zKƥjk{duQSFUs'}VWᗀh5}]KMC92?. ϟ,Ǩ8Z.Zp*]R%+,t"vݣ{oISgж8nw6c7$7>ÅWGւW2]k./y3s|Gbi44}F'aeHCcx3`{pyevc<G$Qk_! oy?OjjO}eKz:o¹VhmQU]֕ڣ6@6Fїst~{$+[֤=o0}\jKяۤ~R7=ϑ=s}VMt%ۆqT 8KG\ۂ1V{y &Aǡ-Snzn{O* oK2@ 䎊nb֣ ]7=$Q=:ONTn>}Ɲm5U<1\r9 ѣs\>7n=c 6v18W[ݳ'K.-e5 i(77qT x'MpFsF9 'pu7[4L|QLqջ a`fFpKZxO9}S_-+{k2U8d%wrsyfHz⪧2.&w38_4Sit:t1%nU5oQ˵޸џ𞘃Cǫ { m;9UW.G9|8W[gNV2bc&Flp9Yz1=e}#Vh!kGp{p$w9GWᾦ&Ri< Iۗm0zqzc_ٛmy54uV tUt "ILq>䮧q۞ld|]!ECOlcI insc8pgdr@~s(f(C\ xqO< `|17h"@GW8~Z ?mK|34nx7yn~ ;xCxRwg pysE*f }=TJ#W&he,iztYV?zr| tԹSx,j/8̄S2iZ_g+\,3k]VzQ\Dc 888]*&H#$L<5hmo[[K.Ֆ)) dh-q˦U憽c<@%[Xh5|9rLXg%vsjh#w[r.7 kd0ZÝ M[5ZبED坧|}ͬ75=N(TNZAEE;|"Fp yqX7KO{~])CHk*+_݂Z8nwkifUShzYN⬥B'c s}UY+j%|t8IrJ 4KDڪwVޟ6> K yOC ɶm\1Om%y631+Ą/?zHRkmSA¡{իd_42: c.1q3.:0W_ˉ<`p{'Z8ՕV!]]AA_KÂ92q!r{3WAWO;C!|M'F. ? 0G 2l8Vk$v?Aj4iӵ5qMvJȘLJ^OnFȡpd}B!q>l9?%֧1A`1M]|O =ǞwA㍖wx`/[{Z3 #=랸\5]d#5L^Ldy$>T**$TA cq~kҔƊbtj$>EMhCdv.u٧]xK#R6ZGd䏆VebSjZW+#p-@yO?EQL73ǺsOd-ͳR7t 敤;8eQ#k0wc ^ܷ@*y%W&Vd9)C )8]IWmVڮIϹ]aG9hpyw'.n06ZtcArB8"FF|g،@Òlc}+I>Ӟk Jz~-9+_d8;x;ui}o4d%*`ǖ5ik3]wK=i?l{2.koQrr \>?/}Y6tSکÄ{e[s0ђOPV/+wkO|Vk%aǁL$y{UGKw&8psKZzdx'Sxb֚4zNN&]Ko1öZqwMd|SR%cec8*ijpt>k2ՎWլZIvAR8o `a3K5y埡+W)$X>=~AnAk+湇ii# ˾RMRTT2-̌t' gffҵa:zq%^=$6{u],F8T`wwEZ*xL߄gkIWL)X^]'< +ooӚ:!/$7 RuFbӎ~+q֌?논Mh,rZ0>Hdo͏hӅwd{$G{H}?%L gj1.t06gv`vE}<ϪXIE.G;,=l߰ =iԷIdEk!{cqBj[ dWU yk(ۋI?!]uٛwZe$4yύ)FZKA$`q-62ٽgbxVZ"O+5োj߀TBAKKq5[N׮m'eQ0) yb!Xp''?O;X0uܷ~L CǒB̗w1XGԸP~.m]TCׇ;Uyn,t]p!6JΏTIyr8$pkpݪѻzg~nURLqs\{h׹ *';Iw.UyY'uA-? y[[=Dc8cIwY=35EA`C[3E fLrcM4C.I u ؚ'Xxtw]J:*~ڧ5'- d;I)m\5j^L~ǃk* q1?d{K =QYz՗t8#? Mj/ .w(MOZX$tUL#eͯ=GSJ@y^׿;Vh iQT*]uqnAD dzeo=,ovJ]`@zznji`쟟 qؿO5,I6]T!xT_Vm3G9Hy ^|0zH.zvnX9TTOf.)=I,g)p¼ t-dZs; ~LY'!T6F. l~uis8MF%dN堸sx*Zh Oڵ^髎 JWӽg7o\}UxeJISr4vp0RN=^MGfަScU3/"7 d¼dT.AYCP覉㣚A\%kwwa;n _t/NsMdҶK3Q+D@S#k -~ӿEU_ 2NX$\N(eoU}ZT\*(5=fc֗4p/ <Od:.u,7*ӵؚf.3n$k;ԕB+^$c@ h'JGZN8oOU9)?L`7[z{~i:Jb.V_W+p Z;E`lu:8 ~Xh ^&ֺjzUޗJ a6wuKM;A-$5i᜗|Q>znp0{eqtvIe6]jmvIQBm#1kO>}Hhӹ|wH몪I9Y\qZ}tZ)Y!Q.nl5Ѹ<|j>7*Z1p^8!b<?4-(|=Ge9wә9%WRGl͖Df8Hs8-v0G:nxx_ 8Į{/k0ZH-vGD᷑Xy/wU(f{W/]$)M7=e5C^(b%iñ=w5.)xgSuIq6FH9uCmd1moCdA=heZzSjHm\ \#/x׀A\^}|wҔU]7UҀmK%ţА3Xz{*NqDi`xY$R4p8-p<MŸ S/k*6*?TrsQq!kʵ1 yVav#^@@{}xYriM;4 aO ϰXtG-‹IҀ9AgT(G){P8`UҤ`O$:QD} a6м \UFvqwSRq$87s˜I+ x-d↍}Ujc9Ϙ<:12I$|[6eF 7ydnUIŎi8 ؾ~ot6[u5 cv7ل GG,Fx9^1Iqp<o~7-EOE__8}梘i{~Úc@7?+ճY/O`"R&2v5s}o_e_e^#iK%Yd;dFcÇB0pyMKwyNβpO%uªWK=UCBr\I%c%lBݭ=Wfh =Oro$yv*4浮8JH֒xUr[m|t0:i]kA%vx ysHǑqWw%|7 :}t'lQ:)c>k!c+-Ԧ2JB/AA(Z]sL(џb4{kkK]US_u]kh[,vڙn7-?xYL=g3k*4E[s Vsi`;u!}} mɢ<Kn4#{?'[o^ h?j-JZ24/^+u=JŒݽ1s{{\7 lO!sꌒGO⼙6}g4-[]۫%UQ>W˜[0;~KA=2h#M\4A.&mVj衉=i :Ym}>w1`Qj 4D\.1R,gدdx= +v񦮵hH tb(?Î8kZN^wy};Gc٦Œ"2I|'wŴ}v?4\sP37 2o >>+--=>u8 idoNGdV᷊Jm eVۛEC5eΤ8eg?= !ǡ ٺ (tNJZl+eUE%U; 4[,wMSW?%#"WnZ@8cCpH*MШ#y 1y9'>-f,)ՌI=}KWT#Ϻ^rAzMώ_A#sDgŻqi9#_t̕6VMP$PD`=OD2{&GǨRw>գx.hc'3 sn顗28 vO(:l4,[nN|5~5L,n Ͽu`:RYc:f=A/9b{\8<vLIQ5 ip qT~Kִ``w㪪-X8;[&Uuc:1J18@sO0|Ok =|JTT E9Pl 8NFzgt$J?dFHc0KAsޙ=ocyht!VmDRdT1N\IǦU:hTUadP1U# {AI6Fcc@kZ@:Q+Zj~z&2Bsl9w`NdÖTD|l_ m>j M5n߽SAStm~bַ[unyu%ʝHvc.,3& P}"IQ'|vxAk|=VN&_qZ tWZ:Xid8wMiH:O[㑄φIٍo E444m6ݙNqXhŕ&27cs;s.ˉ +.6HmXas ],nv s1`Ummw4TZTܮVۅDt׺'2j>sWUe71vT6u\it2q%-d 7kg_rя{-LaCcL7N=\P٥Ѡ;/3nܼ5Si<k q751h_g7|`6gaWK˚A18`uq08mxgnҔZNRiIqTuu{!`[KP$lkH_I4oֳ}];d0֑1ˎ ۜ^P;yǿ{.y|"3/sKߋR .HƽÏ6N/D^kLn*zPeF9ے~k?ʹLW+#S9ǻC@^Ьo:HTl2yn 6\p9^ v_{6//ƚ{JZ68)8r؛쭴D߼};"v>#$m`ԎhU hվQ,Qn |mA'.=Y_[s \4=2SIE#r[vlUrڠۤ('=xY6׵#p <NTXqǏ ]}~ђj-:7쨩6Zw<#pӑJ ? +)Wlw o3/IN;rm0[R*M%`6ɚ)=𝾇qWɍ93xpv A== i })׿{^3Q'u7tSݤ|-iPp}Ck ,tZie? ч7&rrNosPekp%X+Y/p' 땯Dx\S9' a ;Nkk^h澢_cmZId5WZ`zd^xzx~PTZdg `;;?|{.XxWNqlkK{Kvϧ~[te6+gr9s{Zf<369 quw7EMt2Sǵd78;rRK˃x m01nNK } wo>`rmq=H|Kc~IcH||5$ltS.;v3;}ڹ#f D8|ꍸbuuT0Ȫ6?^H'Z+[>cӜ*`pa=qT;0߄\q{]#*c@m]÷ejLyϙ0IsZUOɷ=z/>~fkVu#S2.dqFwpYX6ޣh%0BiN邢\Kr=#-ګM#|e 6LZ׌;cr<EdGZ tɉ'wYBGn~y^Oۥ1i;n(|*g4>dz/+F-Nt/e5h8)}9q;9d'1$70i ߕLqUv?$-JŮH)u*RD:.lOcu.ճ[qe;뼘4 pveldWKs[vҷrpEGN&p qx/]yUW;ûfZbl.>ph^ڢѭ-pܴjUBz9rqOۓ~>-CpS|4TԹp-i9q+ۭv((cvrX[?@V"HJ9#UĿxo<5\pOEy$nIRh?8Oߓ&6Hӏ)'td79'T[W#ZG ać88Rl-~K+$OirUI$A;GqCeV,אHݓrRuȺBϼ6<Ϫ M4u:YQk3CZzeMேT zemL?%27pxfO `:\ rm03 Dž| yE&=Oԫ]5'IxO,wcI9]f++2y;6Y^GR6F!sqMOӇ'xoEemf.-iҼ嫿cnM3=֊:sK ߐj*ga<SY9qWuݺyð[-F3119._ºm;.66IiiF[/~¹sǢnGm*mzTS^W:f\z'F$vde{/oc>an+ZgX+hpRC PL8=;]$o4EMKjX!u#o;90ehwemٯi-{Ofqr靍~7ゾQj5ct5nG'bQbWG 1sC Mn ɳv5w^ؙ IMLd {k.Z~:SWA';;<ָ8c?%o?Bg =ᆑo4UkysrTJZdsI zݕ <$n湥֝~yʽ**<IgN{ ~I1okIM7ך LִCM9ltg{-9[6xWWL[iպQf|,ݥ?^ed%sֱq{dkK\syz<>8<\WI? X&)$H&[qe<: JksW8"qq;M]OPZnXdb/92Î`r ojreJx zʢ?hնlnԖ=3I.i9 鯆?m?mF!I\8wa!{>z$O`s 3qH=UAST3hkdS,|_ \Zǝw b~"h{ ڜTQ-BzHsr9ӎrTe>Ȏ$k/r\⧮ )#ivǒ=zey~g]%QZW`/m%5V*br[-n;꧗}ۍ5)X-i րzcԴ5w(W U29π2p}_2jvj:f:B^YqHe4T\Aw#w7<[o?)'TDT6ic z%{[qj!c0NF~V5E@IԚbs'KFbh;(P|_,zF oUSAS=EKƇMQKq-H7>h-GEj i&j^̌-;\ƑxMHk?W]]W'颯u$7AIQ;x ѝIuYtUg#]͞ߩ+ ,f8tn{8 x/fT&M\;\uuJm=]sj]1?obW\q_nYeEڧƭQ+bem4q3=4#y$cb[`ї)4ڣm߻FKkym .ݥ>?j/+vۣ^nvKfN4nisF\ǁc/4[55[hkk1X+Ӱt=i=ryI5+7^gxB+ԍtR'>)'-Ǜqa-gKL+❮S>lv:0[4G(C\H8v<tO-]D1_ntܢ`{nG%?ʻx+/5Ucexhks`'Ü7}:H~{oRߠj顾YwC݀fV5 t^ξ[W,zfrR@$4`;g௞~>$Kndiy18a߅/^Z<Zi5?|WUS6=8hGS-}&e֣NVS>3z/ +F|]e^k*K3'۹ xÀgh/h_fE%]=gޭ]{19>x٫eTZ8Ts&.d?*aX#\Qj Z-̮Yeli9~[(ᦂ6 , cp>C'ԯ\Iz=zSgIlmxD2׃w7KՉfUa5mi!wY-Դmy;#6\cy%>QT EUG,u $Ab0;+>~_7:3Qu%wc5]W23a$dZ:ý3᎞- 6i~ֆx`8sKʹ߃ VVy|IkԼǏ0]%$j^9K3{BMKs74`^uHkU?7Vuj}SN@%Ng=tB^D4-|Яtk⊲XJr˨qȨ0Kyr%W@1j xTg|)k#rK{[ԏJx77[Lujkn9RXJx pn=ǧ1iȨz.V\0K$$6Apܼ|eWajk`lI ̧A ቍ8$_R~YO _⦣U+,^XCpLbZn/ {䩞.NXgr?tMzv6̧50z'1 oF#^[ABZ۩).ꞞUm's#uTr8F w<,o*i6(` 1 1 vNF =~3}ƍEصҽT7E! d@ ]=f3׿>cZ92V}?Iv&JhG$n \g^C& wڴuQUC݆@jdö?#j Z{kјk0 IçQ[߇6 vs_fI44>6s]pY7}KxkmҿEU;\jY)-;b;2v+?{yg[,S65098=XMj\lxS#r5wM;zyn?51H)R%(rT.쪰*n*Iº9S!9sobUC 8DZ]|bxq죏D`У>Q8G,GQAGqHO8G!# b(K)lI# a[0[Ҷ|EL7gWOC:R9/pcsuƞm/'MQgd|]^ſHik^SS= l{d%6h~a}< !ht֑U¦""{s0rO/˕xSŸ$N:A LQE#Ѵ$/dxiҺ?Otq]W-a~&lh`88|(V}SE҆͋dTZ ir@ݏ@sosm m;)\E<>`gpz3}kEsIOw,T "(Ѵ:G;qqϠ|=*i-fOH(lIxv ˩͎(R35 C1|yGȕ1kKYD~RKM~}3h#F%7`e֕kM;YhқC%+rc,2@:gb5-i#R K${p x̬f+6hm=KMPtte[ 9B5w Hk/^:jP75 ˰Gw4?TJ&j%сăsK~!lzwP@DjqU,u/ 88<_yZ'|31ZiAZ\x?g^4QMMDhh'ofW8hneu4d&LSIq(\9/],|smmtA/? q3ڃNt{e0PcV=^rsYbw8?,~Yi!m;Cr4aKb=At x;wM*I%KYUld߱5w@I99)s1fM^ki Zk3),+wZjtBG^XqG-hk%iO =gzRMGpZvnivnFW>[u#w~gVF?U/ֽe{jcu?icvJͮsx!} Av{I ԎcįnsX>vjGSY,53XaGLLFܹiD~y!_i/kj[ ] sA&0Fz.fm!/ZZ{u7Nax>Þq,3N$"R<gtwU9[K36:*fKdRV|>}~Z#cluAD@sTmȋ[tgM-eelv1cGCxP~ɿ ZA3孱G8RBvxm=CnRPz:H <6(ݭhjozJ=+X27YJsduGɛó~P^3-u==2cZzabj<3#?_UF9'Ge;{2Rai-;2GQ[G88E7:SV*hf0Kn63q^luB骱5gDֿ{e cUtZ;m4s yϜ6@p䌆=z7jsCFqGS]Cxh,Et1A,}L@&Ú׼S;Gô4/5%d)# 0qY2N0a]8?-c䂼cp´ˣ!2|":0˝ýASSmcd0wl,F6qenik2w%lk!O#*iXG9piTe3Dr%VR 1ixNIgycdA<0>[Ļ9V:JH$;8-= .lцZUŒ3g>Wڨ]85t_w%v3?03BHg{vd|HPPnֈcc4Z8>ׄscЌ{{~KY_i}|՗).MlQE pƓ#FOLsXY53ܣ2' OA_^5RUKo8lH<#+.e{FalbVtcd[%mD5Q>&~y@ek.<8>C͓)<5_)bTQx='N˥Zvm;X玠*Ÿ=du_o62k}ˤ/wS8~eS8,n:SSK3nlp+<8a雌(?J*|o/\6'H37}֏/r֎×pW wW #܈P{7,o㌎W]iŅ|?\j os϶~_ [|:xY+5$[{pu8fնo'6:)G!-ZYnj zoMh OZ:Q#Xl.s>'>;O])#z%ysrͧQ+Ԗ+f!ES"~1Fӎ2NGAeECoQ?MKb٭7IOo(ɷj}AQ&0m zoqSB92^VeҒWFdaaA+_ ᶭD[ulᨪ ]` kLT !kX2K@q??l4toVuI6Gny`''.zM꾲o݀:.%~/zre^tr2#acq)f@# ^xﴐ=R5kif29-<v_N:;[Z+th4tS1=ֻ$v*gs)*> -1uҚhYnK$P;9AFBS*p%g?KKO>ŭ䃇߶Ok؍XT\.ug3%K^I%I㌝{1d𞲪k%xaE_`njKOBBK}vw{M>nֳSWS 9k=r\W]']aZ*;?Q]lwVFw 77$ ;/]q׋EKxՎk HBsu_o6S!G#VnzYc۪op>_-z<CGxmu}VM#\9a!ZAt/ 53(#KL8RVta:sMo-pIE*,^?˺(+zabfl΅2n 9qJSQ]uO p}@JIC pOr>=t{P,zNj)mΧ{%a!qh8c[.5UDAKn4MLl 0](UMUD^s#$v}*o4o߭ mz:z>XsA'i_k%ecZJ< wx9Y*:J\21eO{c## \uuwYs7ly9JҺ> p} XUt%xckßH>Jں;+Ls6cLnGו a9#8%iܒ{rS{TVzf253sO^SWA4 V4MF;땭^:q<Ϝѱ8qMYSK_09g>6_Z:+CS@[ԐkdV7hHU=Kb[ :˭}4zZS;c45k<;Qm:h3v:t)t3\:Żea,eLUSkCvݭW]= MOCF"kLB0r7*Uw8&VF0Nݸq~jiZ<!+֒CqH4{#'=lU˷h99VxyvI ϶9H_WsF5£EWnMIY4tu1>B#4}HmI0l<|Ї4<~& Ǣl-CM˱U8esWE$ҵyesϯfou3@Ӗ}{ cC#!?v=Sӳ|Vu?@5()ָpϦBuŇϐF͏!*;33fhǍdyncn˟z红֧OePd{o=tԮh\y]ӹ<{,#s#p \qVWd n7<1nsY={8?S7˚1! t_=z\EbtҘ&&˽녅C{OPL$LBAkWAT$V]{'ue&6ww2֌+z/<-кuV`{UKiBhj:zc<-]QuI2򤭏;pݹdd;#90Zl٭4U1LրO9#)iܾܪ+(muW}um7A$H'W*ټ/R[|*֎-J?/;_xɾxaYS6|x-eK'g^~]5Nz"ӶZW#0mKUu.?K&6!K'`CCH_v/X uY3X$|[ Fs|QxmͻhQ0? +7A.j? nZ. Yx~Ƹtq ஈw,SYaZ:JDr=$#@<6; ZL1nJ(ϐFִa  t+Ho'*+79%h7VK-*zh%2KGrڪ#&q9n<::z(KWq11̥ccÌp8 u,ȥkI$碨rz[6j_]$Cc࢚Y!~2_~=Ukۃn~(@ |cH8$N3A}eo.3$a9\\xvQ 4Tz?Vjǟ_%G1$-h-H97YL>hq$F2ݽC-'^TqT[UǸ1Ze= ؃]k6㝤;]\upS DF9B s g ]:(N3c +9Ntp GJ=4BÌq=x{5Xa|x#>`Y4庲E^wIUD>I b;K 8$۪LQ8w s۵88c87 M<tQT dqo20CCx O9G۵5=ArG[ln^2qpr>bOo_x8)%i$YA1¸6Nꊈ&|:N 4߲BߢP-CKAN)9ŭnNI?UǽHK\~EbtPYpC;)jF_AL0Ck#{ ?K9Lgі4]ShJ-88<<;mH^,UYUum%#nfr*SIcttoZһ.w[1Ns~ţV;O$zkKOSGlG5+B[KWF<7} 7WxVOS$͒ CF3KH0H2>zb'[1uZ%ZH'{v 9:?d?7 }HdGRGekeySWmG"y)/:'q|$')Jw)`KsǛ&ۼKۨl3d/,cF00O`goj;ֈ5QܮG  4$e{2d7ⓧv~nV,cKu\/%S$'uQc/FCYVB-a? f'| :.@4$l szL~ɪpkm<4 |A;/<x;kS-WE+Q /moIp:+.8qqrreLl}>KC,kuqS+eq; pI#\^}guZEWtuM`78Øu^VXf &WJcp]  =3}({Ɯ*lZڟYQARyb:F囏@I^]8c3zm },>6ֶJ?P3ݱ1ӑ~^uZIGmҐKk0 >ebV&eυIJpr@vq؜aekV?M?I4M0 .8s[V\/-<4WˏY}]p.]g{-EC 9ä9->~_m/~:>\4֖FVP H<߅ $HKqOʛo-U)5=RQKKwi#WOgSWrjJ8t>Qn61 aܗis-{e~ %|lIJ|.gI  />7o|Zѷ}"5p43[QL$\4o3+z-ۄ}|)>Q`Z-e&4ĜDe8p@!r5h+׏]W/.ԻcF@>%q}G]UZlWͶ("D['힇+ 憾Y]-Lp ߘ8kY_6~?ŷ>#,2j$U.x 24c>:jHۗr0r7q})څac^2>\^[ c-̩|>`iqYME1 #.=R/qiuIw=:ˀ>YV6\*4S粖O)  rz^Y4fi c n=9Z雔Z5۲2vX f? MlWHa\1pWȭqa|TY栳7`C lMO,As?jM/hJJjPYX)ߎgp2;͓ĒVg~mZNdKlm%ut͆rOuo0muKaZ۩c٨>`p1Ե'+㷉>7u~C iR!gしc'ҴpсN?7;}:^8V#SF:G2vԒ &c$r񪎌mʧ9H\TI%O13 s@ָ㟚fs*^)J-ڴ?k6uφ9^Dls## %a4w(fL ҙLbNz[7?7KSYbӑשmHk[1sעq\`½]5֭a.:r-k+&;B&꾰5;fIl> sOMTwB$,}i ƨmuȪi'sHsܻ;GV%rS KR&}4$6Y1}AkuoS%f;q`ОO6+[>Z\\Y.caQMk[kjM iBM5  K=ĭ?l VxgQym3Li&ca!ÝP{֔RŶj󠎲3GöbW[]ºˠ驙<ց9\wG>QOD_;~x=t8̀d;qL OҼ{CAp= YUԽq]}%qxqbGsk^<}4y4mW he0ED#㑧n0={,WM⦮O洂1edOx{I>f[xv_,o'ŚrRF[)xq$vH^rk5uu6VT@ʶKoh6\\pF3(חAϪk%7unI7Ti{6K!L´\恮2F3z[ӱU5f8&qv3'Z3WJʗE:&̓\A$S)" c, FZ܂rWpEH(]1=s ,dIhjXr65drյG7j-;eӨx,4Fq*γYS[%%٪yž>/#sŒLgF}MpkM0mq)OAw|8V:vܫ%56NrHG>mdym7p՚gUhk^!4;`$=']F}Tt Ľ?F-=l{Or O~>ӦtU%}㒆Fc/[e 4dnrNf95 fmq<;v;-E>ht~bՖ+fJ{m:wNzgVmlQvX\d^]/5?d:Ljl@,ARUKArVi^HF@dtDz?? Zd^ `t`pU\ Gg uvlSIh p45p$6߰ok7U,7;L* [ac]ndLA7e((%(`#g}Q-|_Ǎܣ̩XAb-0sy?>"w7?#NRGl}ZTn\8$$[5\3^傇ffx5KuW_DZe4(#i =|{I#8|QԵjܼ׾@*Q=cX@Vdn]wZJjJio&K$ecorN*lnB Ld;@|h]McG\zd1׎S3[nSA`lqōㆴѸca5`<0~!׃rku:6C{ 8[ᮃd HF\ tͨpyl91Wv{`lL#$zQecO&8A{\~!ߧUu]d-k9 '?2赳pQZ&=JM~ ˆʭE|T!IдrGBmXH[.72bVnytpHugczgψw`c#v-6 LJlt, 9r\[7*PU :W3`>gpY[x{-WVٍiیQ0 oc\ ȓ6ʵcQ6@dda_2RS7{cFgQOG+5޿Vh1Ls ~\"HнASyà4媫Ȥ^㩤.pd8/m`GEN)/pa s.j]zp7ON}.UWuNڹ(lݸKqw t Ԇ?qÜ{4+[eEdS7svB1d|=eg,q ^9 ~J>"|Qѹ/;*'o @p: gQyIeEE5|m3%epqvmcHl{t૥*&#k! kɘmK%%.F]ӧqMѴ:ZV >cA&Lc^IYtP:F5,\;jjL@ k;1§ikGhWcbj%<ʪp:85%[*ҵnA ;Io֠{d𻝥D:K6W6' s^։ 9 QNY\썤qN[yrwQ!"Ƽ:FOVq{|2=3Tk).*X/d ?*ޣ#{#w#qI{0/1܃~MUsL~"1ꮣci?vTFqNVBp͎FpJ s\ؾ ñXCb. 8ے~+p$mv=R 3K~,2GPd(M(8;iې u4x<4 =BUW5 kc|]ϡ[Or6Ih^Hyc$duSأu ItIM142yrgi  T 1+WKݣ@LUtUЗ[>!3 RZ6''ZoXi_ п|rrs3K13D׌niu*駦8~Z9ah(cI$ 7Gqd!nǙub䆪{awUY$&(X6; ߦ~kx&Zi ӂ?XR=ɋao'w.#ܠZɶ( `p1I$1uoVR:Sw0-{+c5];C}KEx.++jof#~9__O&wR;8'!+|g)+e R$s9T;UP>C!4Ds { Xkmn#=`zA ?ρ fFƊDA?kW{{GlT}ݎtP}}J`A瀂m k\`2p4DVE5E+csKٞj[%@r>h0 l|q3V‘ΕԆ쎇9渹;U>Kܶ[E$y'耣sjLlGGPj[\$lLa^=wl>ޫ-WyS[,z9TsL慰BCّ9Y7 B< UiMȨcn=N¼fԆ6GҿAmJ˅L #k~"1Jpg~?-wDWHqH7J$,'7<~}P[U۫{b0< ۳g:k|-̕!~>%6\]>fpO\8pDPDݢY8*5c.c'{^݂W0Zc@d>@J4oh=› 矈t Ȉ4aۜG.U*g;V d*<0悋`cd~780nv:d·E{`t63+#ǾBwR\^8p :K,1#w%9pU杣]ܐ8VlB bod GHGGWT CѤGӺj#dK3O$Q4aL*9RͪHH8?}[x5Opպէ) ͑ Dރ 'qNʪӈ3U&8de"WcyQ pY4/|S0l9 $`蚊C ,^7KU&D4fVӟ{&9qۅ/w sݨF̫֝v9RVOCWM)>.d!cN*rAH8F+)eF]rכWm}<s+4TJds=%I=W6'VL`LvmӟkG-%ō`ny'?>>7xcCq>$kWN]fǸ={ S@pSEe!UGio9#K{ԐOgԺvw4:{ Zx`Ǻ-r[4,h܌`eBkJ8iͩO->VUAUʒj WUaspx랋xxe/&)XܜyX޿HѨi l[.\# ' wgPh];~Y-CoK>8qz$4i{kLTrȉP03Jc+KzY4)3$F9:2*(-©IiqەS_c"j8^<1k@is1z+ ׀4zIS)̀0$B2rqg亜Ki3gpn5ӵs ծ\m3u+Z*700߅ߚG|{ 5ocFxp8g*4-kwS:i3CɒNK:^@o.fG8X-X*7s<#oNizj`y'^a H[cd{)mEUCy#$;ʢ%>a/#rB nsd?U:Ktg& NQZՓAW#{p9Ue-K[(KA.VrKlQR4E$oa[=օ G+ >sd;wY=W]0,77n1;^ 5z1[MQ.6{>( p{s-r<۞aS? e4~fl9i.ؑ8QlB)h4.ps\AZGB9>X{E[+:mўr*G)v+R vP]eia1{\p{ixux~׶ G~i~iX㖃-Š_Im\8pIe+j]EsG I;+#&;s`IVE\($5A5mT"e>O-,fy˂UQ5_k13hiTI8# {[KRmWYt3_%=hfplc_Ip8$FznSoLjJiXurYgm? 'Ks47q~. Zhm7orj`a{GJ+C˝4_0,+]*$9\$MsqIǺ_ ufeu]W=UA9+%'H9f@pʿ_ 9-J}=]IttF397=zcFU&ART3)Z 8gٟd^cbiaNHh#oQ5XlVZ{Du/s 446wz,֢RYyoulf8bh;;MDa5@M}3خG/ß]U~SC$u-Zp3D֡_gWy#h˷yx!øS'ژ"utFnTq_#OD0cHKELU Jq5Ӵ73<G|. c_b?bmEx=GtZMWhڧA܃辣ٵӔ:YHo.f` /Gݯ~:xt&A_"m<62fpZ+XwqWt2|5*ԏr52)ϖ!#Ӻ+mOx5CPSpc#-OG w'itَ燐oqAC`?yTe@kH;3 I-skcgk]]W#sGI 4e<OMv|u }?}G~ơ[am`ȧsa98#\8nϺiU^};&e5<Yִ{@A}~^$}|>kQMsm j/4;LeeլYkc6k>κ>4˜-(Hwٌ= v/hGڇýou$R[N4{~&3dc\78~kF}LE eEUhM *C_CKY+PF\w5<-V~ſmff/9O.]oT*5bHCvFR3Px~~k8Y-[ <`?73F0H#EhfnF\K+K/sp='nu`׆Jzx8=z-u~}`_Go h69㒮ZieC֞r13eӺr+AحԶڽ*EÚ3hdd/ΧxM*}g.:f$'F#ݒǞ75c ~~[QўN᧮W=ex.u~5imhYڛ^6Hͮ;YgOLR]ᮢEP7 Zi vPUڧ8X$9iy6a^>Ȟ6[3V07GKr@_%йB}sx?h)fJJŚOY%P 7j s3óy\ϫ)!cR]f1PZ4!hdw#y9d(=KgqkqJUE$J$q˜$v: vV:/V2뷟-}T {=xQ]Y?f=PCbN$M3z?PMUIrZ!)Ǻ7z/emm]ԭap(1y9w ӐM FQOޠk6<1iiAr:HZ{NCh~!pg#d!Z8 j;OM/djOmM427-<`prOe[uڎLڊ:`q- ǜ덖t8=FGSæqQ7?" g#TϨjtVE<4WF[$9$>!n% oo1cF9hʟzחv8kHX`z?N{[ O4H-}⪤<М`g?/_xڊݽ̖Wa칮~ ~Z^I< UgOCBy琘p-#$>vQQRIq1ƏrO*;l$Bzr8OɎO=(-(~YO*(YI)="R%@Ӫ+SG8RN,MROʍ2 /T]:K9c5T~s@fC3꽕w֋TU:zXjV ArKmíEnQ[VLI }N?S Kc]Z[C!h@H40A8ǥ3cLG`8aVkG m;4"||"ti~]\W%ú3mQr瓝]&6WdoȑK]cIDt,ҵϊZ;9کT5E A NGmr0GZ iܼAIY>6c2ҁ5MS[OF-;2qA핢-K)?sȨdϊIsgU}t-ԍF'#cr!kw ztc.g}ƾ=<7  gyǟ^]5%-30l>F3*nKE{~qn ;FMmgh!^[ |027@1vY{zk9 Gx 6%ΠLkM;X_Q;рӴ2qᱱjxtݶZ 9e- AqG'*Jc5UmΫ`*Jw|qbv+hnRMhX,<tVZShmt`EH%{c8Z6ZCm53ii/l=IX8&:H#ӻlog~\|TOFc:9򦤑eDrC@{O8#9^kSkndrI>zb\@wxVRz?}^g|su#k\2n NMLLmFI[j!lnFA,Ժ:k+l v+w lsI3g%j hj)L2JfU ol>fѮ\oچwgjjm'0N ZOr8SܵLQ^ږE%QO&6O%Q=ҷ+}\FυN27pPuo;\Ȏ8#?'kk.. 4%V$ #'~TQO)MNs~^@>`F, d[_ǧNVQTd\Ƹ}^u}CME;'mCl% q-W{J._Hfv`)o_N_yPMzV` ,tgfI>2v;}m8C}SgJ)H;@9Ãb3iuMteU﨨T2I\+]t⊖6Jy `Q`?1ZGNxVFnN׍ 45_L$U1S0N89aÐ۪<#v5RGvhꦺf6 [#/qq'伵%iX>gޮ>R3Kw4v +n7*uttͨԹS#z@x:z.W.dרjysD)^ZpsNsgKޮ%"US ׂ݃рk{ 4sZݱr}7d;?p}SHx\:HC5C3@skГAu-5E Nik68%$3s]jk? )itQI<`n?0OL,VBm킶V2"fߑ?>ޚV nsdt/|Xt냉w{\7?oAd=4af YO#ɓ=1apZoEfZ?.n7|k $g'[ֻytsZA"N@#򶂦&+l ;$m%$4Fk 9\A< zLCF}[u?Jl}CefHޤtr}VVLM  8sylWXx$e-&~4f2#o3ANi 9qe*+|mƖ쩒 އ{w)T[|лf2䑀w#=fOltm۰x+' ^% o rsyau$  M- fggh¼*a2xE/1ּ#t*'2w-2az-~52c * tY8148zppx0s\p VACXY,pZ쎙촧V8%alqGaғ82=?%lwTF߈Et-okܶ6|Xo|p>}J#WdCZ?Pi+ˤsrx'N$ӵ֜+Cdsp- 䃞0O_p0yo\n z:]z:T牙}3YwVY㬎I[;-a`' ˿*Ote ;:AJۮN㥡h-ĕv3vfAv> >^Ut9I|<4~'TSJfO֢Ӽ(˧q`壯JG "3 z8rxm~=Mh.Oʏ6xb+NˀeK[O#&<`C^=1ЬZ@KM&exɌ1~Qlu*I\O_C;1szܬlat-İ5s'Pk[~ ?NUW%ORd (+ϸJy8U#\ZAa# e$5,h.nӃTiifpAo#9o+p=<=2'kOÀ2YٵisQ>!hHPRŰ?˖)0Dq={1=8ʸ3- 8yh%OC5SZZ Î=U |[{Y9+C+]Fx㜟V:hgkIǂ:>j* DmQEqo9Ep[(Ǹ=¾dgqצE2:ePxLm:9wS |!seLCv 5,C2b8 lԶu kQ v>-i9#+;<2g jWXTya?i>q &`ח7'3UC<{cT䴆k.5m,łrOSuӹwkɒ1~h=-D2`86.eVQrr"v#i8{HsO 9o~TN_kM+jіx_$otI;˜r:I\縓*nI4@]S$1tsK Z }=UZ#@9Զ'< }^Qg7$Fk#cv4~8S_IlEnEzONj$]* dc$1p[ d/uF mdJrH-## C~Q֘o*UJ|[#pizeU>mҞ[n{QQO]X ehqo$q9fSrzy˪;&^̱l@o8.W,- 쨌ɇ FkLP@5D 2UKSᩉŒC+ _PAVpId` ܵ]P6MCq`zw*W,aFң䷷_B7z{:m 疡-U=g4n@j{u:in36VF$ K\ cpzb mky2D(!ٴ5͐rqN>Qf6}aS]j6秮x}m](pidOH!;3\[`u ESɧ| yX \p##zH|[kx[[rs^nSE85kwzJ~:kM5]P>n/<479c+z1>2*ԕwP@ܘpG8{ ()A QLW8+燄?t֪#lr$ yAp<B>R}o;o;v!{r]cL:^Q+*ysK*e8힪(iecn֌zv[S $XyA-~[=LƞPYZsciZJ\ xvĻ`,M#Q!lEXIU)-sQ/*e('u&$-Ҿ;kS,m_wM(ps99y}z?hF'y:`ilUZ8,H<dֿI3q MOalX?<_w~svs?]UX2eV?0$~ӿ=Z8{|.{5p]oj٨mmFi-L..KOAx*ci@>c),wt)6gFd7ʞ|$`Uo폲M[m"f5U7k2mfƒr38^M)Ix?N{F94Ltu1VTX2FƷ#9#9-c4ۍ5=.ttT1А tyUuTwK,!c8}VsشZkEEK\t4Lk٤xvݮ8 84΄t-L1iGr iAo>yaCRZ%'`:vTuڎƜF];9trO,ɹӿk-'QjPSiw+"8>Ip?%IӷQ4NY#$t.;NZ7GAlKlTEPFp7u Ft:A z_, [SO -j}ײ6̥XAx#%F~Ӛih7M='{28'ES5I(&*͏ ztU-]oٟuo!0x9@OZx|;|R)NA$w<`58]}6Nkt2AOI##H#=8[5R^$f>#Z梼ܾnFRUU|.`f a{ў4Kcežo[ iG<hK $͂~lE۹yB_2%Uf&y̒7 $hnp߄96 K{& M6 .F@i-f) >ͩL+Y$:i܃=oT$^ZMtnm]#d3iCO/vI ^?e[mE[io6#瓇+8'I:CI*ΐ i |ԚOD^UяtrGG-)]XvpM%4 X4A[>6bGuURMJp0Gy\し.;FIZOq{jMfYg -h `4$ʷ}sk;~B+MŠ cOFuV_v |])Kq\9{s.pp'n98{C?r|*<|j})XlZ`{E )ixsA{q =\A>K;AqpGs@>]=W .ldgpěn6 !.fІ<6ڙ5ElT0UM-m[ͬq.FrKG@2h }\PO3g7=n#p៦UZ*ŭ5|Q\YQ 9kpWcEM! YVܭZv o@T>gH 9$蜀M7 8-nIdi_Τ.j[e|yJE]Җ[5펦w֓`<*:GhAh^cQSS33;!9'ʋÊE+teUISKS)ٗJ'6`86lsC$syN$-#p;ǁچ}Z2Nd!|൐G "V7.?]Ю"r;kG۵saT2Cn#O)dhGs;!܌󅬼dL|S^+(ź:5nÎ{1 d:].>.xmjqav3h&~JY Xt^zeIy衏e]<# 2{# 0 A_/KeT I40;kxA_J>ɟkפD, m%(93$sە ,e$opꦤg6gKc`y$G#+g?i3]>uU6#W'c;p x.498_{~?GI|ԊK+Dr0Akei~ S[`>U wuFN[53.}@h!gƁOC/j{b)h˨;A^18JKwJ]y,qG@{\E,cKqM=SlI4x<.-STkmp0. G.&̐]#,'\u jRi`-Ā5apƯԺB *@c m=,I^iVsF c.&HvxlCx;ǝNvܜ~ک("ɧ|$pKqy]?z+]β wWӊC_XC0c.w-$0gǺOxVmt5::zY REDFf-qhfY6^5 KگW4W C07SDg-?;{el3?ஏfs]%-cIǮAi^|y˨-| U}{qlgYLwg iodOۣW:V[㞔mINNd;dvAsz:aTo؝Ha=ՑOeʥ5Za1K8F7vN2}Wq%}%+.w=tIh}ysi v&$eŌ ٚC]NL3MrNW5su_U>^]4N[ :0Dh\l]Frqq>Kv/15POPi0ns߈0TZ얝 Ę{L14 # e]MeNAi; Le}a;L OQ.Ԛtڭu1i#9k`v' u }Em_,q9\9` ݾ^:B<۵-D֭:~d 4yE6}WQGSsڵewbh8K\ ȑl-  \?5u0[)`c#WM]Y cٵûcXGM ?"#t0@\LnGV4u[<.PMڻ]룒H6yD^Ťg#3<~Uf=QR%LSc9ry.>2h\jپYIQj 6<֐C8eiKźyf6QXnS@cwѥ(RjtFė:@[,]9~OK,Tڦ6PK7s9YqZ=l2IqܵI$mC 2U[+㭡搟>W<6׃rrqpHO{ی-*+_GXW|fN~*).jJJ[4h9%  ; CNSCYigG@kw QSMJJ9~0Hv $xt⦛OGP".xLT dah~HaKKwe-F'.lrIYP$}ѐxqn]wSWdRLoM!KDcRIf\8C< XȥR.i!sk 9$OB_樞JͶh,X1hn2C L֙mk"[̶ wC<9=8X mEWM|6D0Ck O֓F:ejGf'٤x]߃V`X ڦ"9@K8=z$l]}mΪΧf!T  x's×=u@YX,[3 vCx~k}ム;Q_gDR\P־ZӼd5 ^Z[]૎S:F>&d{4@KuE|*%q r9W¢m6CWN= ̿9 X3buTu**#cˀh,/#:Y\(SQ$5 RBC2}zUVYlOSS9}'i`kӀAK~5jEl1Wۦ:fdn0߈o9ʫuEޅՐ(kbd#eIk5yc E]EvKQ#*5E|pvk ͍qˉ{Z0H '9^,rvxOlr $' 'h8Ou/OCTCfi6G'֞79m #C[߄چ)l5Uii)qLh˾ 8V׷lmQlԮXm7Fxg Ipr@㤬~-+%eui#ٻyqx<ԮIt/xmkq#U̯ EFU핌#.| y.rGUΣґV3h5ud*#2 c ngim1d!' uϲ; t&yGk63x[I+1†zYeT>1<-9`4+.26!km|<|SΆTTQ6*F3{Nsa-+K-  i~[_d_m[Zvʺ:Bv68@.'hnw;wY<5շ0e^]-?uQm9vuq)Zyv#iOp2::HƚȌb?  f>qp?!,u\Kcg5% )]hA.9Tbcf|9lyirע^|@ eO,t$+ U⥟PSʪi+ l8 cǰ+[R=$!c vs`^3dibx8 3ߌ/55e*+5 |s>*ncrHr:wUkHkoJh!, :SoXQCjwW ltc9u:蜏T67sk^.9pfHMm,1==9#Y o6 G+F\ gg=]/%*FGUpp'G8-⎭6H;\Ӓqq. o͞`v${v\# gөW-WEOtktl.v ;8ݴ5t]cCߐ=I=;ddIwmquaՓGQ,T;40Y:~"1땖p[p !|Ÿ|-'UѷI逧dksV:͎cg|l2(Cu'z^\DK\q=Q>k?@0c/wG)ni4wluN~Թͧtsn$=2y\OI_%:q)$p'ћ@NNzw}87dc8Pm M!uN#BגVFsVMt^BmN7V^Zzv03¢xwm'Mb_AwEfK=S|M p zE<aQ]$T UM,R&]-429 πJ?&gd|dx>oe^Y#àd?jU__,G<<#'|_>UPԵOo=$:6vsA gu~ɞ]PFր`ps(_% H;hk 9VrٍdN_y.Omuڦ~C CzI-5vֺo) WOAEEl-=ː{,|whR2yZKq js>Iid= UB;{!C~8zg{tzP5UU9{qeE;`e-8 y$ OL~JO݃Q +drXkpmchgV* 4@+"f0@\<(Dy>x~9GŷYkfڨ]_%EKvFY\65'$mã9qz+yukX%$8Smyl[|N^A#=2Q!o0;yzmtuto7KF7 #*{ںOoW-|, GH<엚Kyx9{|Z2ۨn٭QL[u?2`K4u;K;`>kmQ#"GՋ*"@2Gnpn=j-h'qKC >bQj[$IUA&\ʯ,y=oZwz<)st[yC7r0IjW%S}:a=V27L@'dmq8 4rJ#źm<;5̕԰VW=csƼ=~Sč;zQUE]+ a#gÏL.SL~&p 4TSş.5c2y/ g[ٻĦP~WQQ}OpӶ{mc3-lE,ҷg{mUSCCC YZ:{ղi狟k4gڄ+]-C&k@#`q q|m_O3^ Βf6%@vI !^1+y<~ɫEs^OEks[!y\ nvM.#n' Ѷ_ eMiFZva=0y-6䜸.$ܮw_FQK־-I[fy6|-dd?ccc; /oE%S_\፬B^"iO٪*$UKLښɋZkv üt~4;5LvO|GUWT 4n`9''c]& 4 i22 G$iuY4oRm Ϸ{Oo+􍦂"nX+du{ds<_}u]ҺV=dCs+ʞOUP+lOPD=JYdt5wkƎF3$ AGRw8_a~Z UnZn;pAX=?LVKj:ULC!dI:F)q\AsrUYo}PxUŦj]+ED6tPq= i^1}|hUQW+t o:vy(Da۹ v\z8^vK 7p:_Upw⨫8Qcu=A (#}el5 < T 8S!"43 oy詎TZz\.7VjOxlÚޝTifK4yˢYzdr&aY(|`HNǨN~*2x;OB ܕ%l Σzs(ITo])N5{)&d삧pas #Wz[jICp' kI:x5k 8@^q<$+7 h~M㩫u!K6Ϻ Ic~9#KI|e.KmҖHr:|REˍ诲O:GQ+F37c;xEf־w)m/:ltXv ˋx8\2iQj*joͥN31nk 8cKpsЯUPkq o %Ecat[!̑G ɺWMx]S*f퍽t̮ᾩGEYZԓ]nqAOLc ae ̷Z FQm n:7Tm3}LL\ێK)wy 6GNCs:V4 bK`Ɉyv&<4H 썲N[tqoq,VKr [þ+ M-E5T .84>֭V--(ojV!U4nq$4 7edi5l^LSM8?w8)>bx+jyWq2D݇GNƳ?pn\\KCq4mWN eknfgm,Is_oiZ"L`JZ:g׃;8\ko'i+qA.USN&6z*\h Xqʣٕ>Lx2^b##p1 CSWv+|LM#bkHoS˰w`vZ_CklԷɦX̠ͮ.7v9X[W7*+tivuZ<;^k>cN0RnlYS45C٠zqA36;{ѷq\Di?Tz[szhir2ׂр|Viо,/8F^G 98M\h'>zMyԐGV ;ApA\CٽΪg2צ55E#kӓOQ!NGh5u53)]bAf:܏uQ|q蒚u4K^kW*WIKQ94AXS8_lfh?d) |9!fƑ۸ ;VH64GrK~:Z*-El׫ogD>p&uH8 ޾,=4F}BHFac|9s2$٨dE1デ e A]_%¢ksITD91Ť_q;|Nݯ4±4t?x13'xqw1}>IqPSSjYh, sv .ˈ#Z&jZ$yl@inI8rFkcv)6n$|ot#@ЉQk}$M3]R' -kIg'H6lT_=pxӺ7Lna vF!kekÝ3;Y\ ..q[ʴBӁ8%QkzvN iNݭp>p$x^VAί |mToOLa PI't8 y5hi-fcƏֿmrY&iҌDO<8=zK_Zk_O$&ja=^r /qm:[u -`44|ktO Iu}1[ ͍6=gLdHKp朸q'~]W\+&t%CK\_\\0i2hZ6E!{C@y;q-Yuvmګ7*uƒJ*Y Sݯ\;IOAѠEֶ0=@oC듞p2!zI 0S 0I a@#K a# %0 Qx@zAK &Aфe0; e,"@@ZI<+vp Trn&:yC'Yi +Em{G=3Ԓζ$?[t)Y3xht`gds;a&]/䨥t ecuӧET+*+vc9.4H M.iȍe$*{]&ǘ)]KP\I23n98I+OϊLu\\K<;0M}[V?vҺ700  Z3 e;in=I FP/F<%#U2 x2?sgn22Jpz-ש]U*Cq˹ H݇|S^9V_-G!]PmvZ[,gSԶHI8+|1 38yhkemkv.00ܦKu_Eq$inzT6h 5w!sW6ӷe0|R~8yxVNc &v>xV沛2q%=~S="s:jFJ$ k7n|oBX|ܜ9 {KI}C)ēC ;q!rLF]num\6,|U0&?<M5͙&*|puTd|mc? { _ZO&3w M4Em#g98jFYF\^FѶ;g3τH#nˏUZKfFW59*πѲ4W|J]Ζ}6M(UYNv Xpy|aX|T~~Zg l$q<3d2n5fw:&ed|;=gK͢bTʪ1N%nط1k.;9 wqOxGNY)fg9c^;crA!hjdV@ *yq/wcہ_oxj̴ⷻ]'.Fc`;O9 _ zozKYnW5 mL3EavLKHVCêFc50ۭ ]<Γ c 8ƻvK6}'G@m1yn]@EkUO ML}ֺ#i[u=$an^'L5mt:lJkEDYVX 61w74P]Un/!Hֳ'`-Lp6ZsHkM4AkO9WBk" }}=4Ö( vc[{jji"{,2<sa^ؿxޭ4bv[K<,ܜ= 5TMu%-S q#xq#hOZ+fe0>iF ;% p2Wkc\k!*wRݤSMqynig+[ue&y-ͧbL Nru]ޭ6_M={ A3=@h-PζZZckcIp:8[ؖzKl7_?44>@v@Ni>u>iW^+9-ha @=]Yk &lOFr[QFCAn .p=kJ]gw:z8FϹ)O%Z^tW+upCOI{)$p2lxNm?$0y(aUD#8ns${I9lgc#+Rjt{LUq34{ -sкˬ> %({ &= {k!yG}ScoI42oaꭷK\4mE㭦{ ^LJ8V<`6Ik|:u|Uyc3 !]#phj7hdh8' #Vn݋EOILH1ԓjt4UݪLm|䷻M%Ž+:<Ӂ%;1h'zvӨuM-}VFDa>2 ǃG_0%lΩ|z=/}]>&sXK[,Lݹ9z{]R B*-4ΐ9ѻ9C<@N>.ށ-0y=qɻ Z\s  xi#KYVp'3JޠiK:y! ydu5I #nA-]*D?;fFȌ0V^$`ִv$+KTW6lkTTa+xضz,uAjȎ@-ªBFՑn$rqEisd۪l}-4S9F칮>ON"íKn\wkN y}L)Z;cq-Ãzv69д;{YWhzcY5U`|t2cqn'K΅MXJҺ:f> ] 8 '9^;WG--|P⣩ 8?<7r{mI顥umaHNs^  r9hٶN;h^LĮ zPo4V_CL$q2զUQk:ꊶWSҸ$ɷa';m-=p}C`J1 iw,=pkwHh #Z=Rj9睍.mk\9! 4^1ou.}?^&bX[8C9cE}ҕKWQILwت&ͣ v<9#J^Tp3#Ūʺ f]p\piLV{OxS(`S*K\B%-L2]H 8w?N> i7Xn;Q*pƝXiÀ蹕w8GQp"sdm6ŻwUдZ[*Jj*y}E}St c$r@Ё|4oi`4 '̎Pư %v9+bQ0b7Dns@x#h%ŤeguŶY陛,T؎Y9sk]{E}ʪϧD#ǟ~mnuWn^)necP# nܷ]STtUncO˨1?.<w8YKv]Sk]2Ϡ{_Hcp?Sl|ŪP&5tFXޛc=[58Zzo+WXp2OԆsH ЫjVT_-lS@;dq,oJR}E{L|7*8889ܐ]j]QnEqc+=s9 Gnc u~MTM? [4cFԾ!Uju[*x}&7 K]$Mj  < tzvXmIԕuӰ-4ak6G $m}gtd^mZh&Ҷzpqs2iqC|Gm YMJ~9/%ˇϢ4zV[oWt%M0kXx`]%}= %l1_Tvi2{ ne 5g}K*d-sd0[gXNYOn4uxlqeDϜz,IM9Z,6K yAn0qiֱ5}=Yj3s# |M#ۗ ;WR_YwG ς_-fKNyzsʯn3\-2Iu"Ybi` cpLJ*_Um46P\!8q궱YhZ\٫؃+"%a~N{V%%Bg=V$uZC/2@K'HZ{XULl4j Hfԟb0y}YuDpA#:3=;\yW_muUPUAJP\Ж!,LQΨ |7'镯-{GS1WL9) D_;FƞxVN.ZY-ױBS+^EZI/sZq'# MsAya:I]PNN0^߇N q PCx{ް]FL;#qFCS85RTEMImKOBvKF'BZFcT6i\]#[Á秠=שgUI%.Hc `b8땺mx7;{ݪædP=nYM'GnXKp*7v5RCR_S+>9hq,7^LVQo)/4 r>ܮOaͻR<4+3plO ?T٧#nVӖy)vN03zt+l COX:/qg==Pkll0d8'aWSmWE= LS{4$Cn@~7yoT-o[ODV1#܌q>RxxʞWLK^ɞ1Tim3Ru$597ŵk4ە\ yjA]PǑݤ$n땿ϣo)v{m%9*W-~'r 9F*7AA8 Js녒;$tr |t'tML[C*K #<> 0:Vh"Z1SR[_ cxpqlU:F!3o'ѵ†$N"p Nr=3Zdu`I&{#q~^p;nx{Cv84pt4i.0/ǣ-UW;m7-Eʥ|-7xWߴZ]f_HamEC]Coyv<eNx_3|[\{e[jЂ!~ON2"5'V6ްjmݞGdx2:Kn\9A^G$=#$.sI<8DpFPᰑZx 67zpΥ5T w^8 U) b**5Ӱ<hd$"٦w^jwm[j6I*$n8 Zo6Dp.Ԏ[yksx #sMh{ecVml_i$Zmip`8 =uXY͎U^.qRC|84d[q%Q_}1} ,%Ŭiäq,{Ӏ2W陆~~/5ʔ]pk'Uc \-9e yk8_<~ߞ)}Vxy>zRnmEds6F^TrY3x{vZTW״VS7Ǻ0̼U}.7 ;,uda 8MgO3t׹y4nGdе$1}_QtWꊪʩ GqOxčKLΩԖ`!pss}1n9# hia GD#aM,#@@~tP[ʀ˰GuktKkD $?KxGL4Neт2##vqn@ Ϟ2w(e9+?nU)SIo4PU[kn$R+51He-]]Kc'.?> e?W{'Z~p)m/EP# M#%<`c. 'uگ.z[~G-d: ;]1/i{&13sdOiXFPI' t h~w @Є  }?TH_Ü0=[*6)vx=VFAݾI^ڏ,1s0N= #c_N:ʍp*8xxpH/:[GqLSSuUڊ)'16:RܐݠaUݪH2 9zE<3ա>* -i 9q%s+gzߵht@+CsH8k.s猒A"d PKi\2F? '`<`]ojSbVQ[XOqO;8)t[}‹te'd1Wrn5˭ mni%/`-Na V;(.u5&xh q>DmkiKwtumWUL\߷9IW*vD\8pcv=M}wE+=)c#t\w$ bܲAXu ~\SѺ{NHC9O@#&fm}&5dykN c[eI~7ip0L;O<+]\kTtG&ֻix K$'嗥ߤ.[lϱLC 5KxG9RuxTU'lsWB7 ~.A!z ;t1UղI)42>|c;X7?5lY姵]bmc~rZ{޴%VgԵ'-cۀvG!spՂ;, S&[U$FrCZ2 8#өjZW)m 8>QqI+;5eUޭV˄v1P]%|S=7 #!Arr٪(m+^T6Z jMFƼ1-?S@h tSRA 0c绸9yFguMP`rw=cZ߈3$4oZ#í njItTGpNjv\6|jnF.P^.*^=}<@C88\"e|fܫf,|qǧr/Oţ}:z "ZCH#vE4; 7).pۃdqmP2I= cv@VEN˚5>`GY퍏ó sJ>ۧ-]{S-tسaQ;дfe5kMm'y͑n3@8*iSR,di+x|UǴY>Qq&GRI .q!$ ZYIk "/w~0r\謭:caho]hn_eCY+/V ZE~NE]ng0FJдliS3 )o O[U] ~!k̎}2ۿuEu 8sU>t'T?e+5v]ksȊW6F睮!}dd$D$m玿5k4e`Ij[:zGt;ȼBSWpQO4h*ILvp?UiX$?iϤ רrCSUC"WTH<;霌8y}N/ |ik=8 ۾~/G[%j :(H-4JCAI~O8DI^h9z[pj]pUk>#".;k{%u+Wo?^=cVk4@1$swO ` ꏁd |_+xoyj6@1ѐַ9$vjP)|]Wp!2I(crd-kKt_j&VFGU3D{zG=;8a$0eZv,:_h)Qh"2ycvC=VYt2=K&mMK 1#)s%3 ˜vyZ]IueƞƜmݐ1qNr8]RC? w9o`r8炠ԴG_MٟSKGSYyMFFםkIaniW -E<<|9zӕUL./mQFvcq3~&<%%ϺD׵k1tI`S2HHıV=;Jy~SH|`  ^ݶʻe} ,4 =d9# #OaEq[˶cq =;[-UL(F'-ksԐ~VcO19y+¦i*,y=f$gBhM/rm:Tܶk]E\pv Z+/Id5gB_k캇O,jiCH28?p}V x-ZdشU]{k{>8d`Z擏ukInM e hMEk|cppvw$߶$ ~쁡/hT%O^SEB> ꏧB 'P,{!?Jj01E.R*Dʽ 8,{>P˱=VI,SULNCwzgx~GËsmU.@sw+#*]filw?\(gt=z[ʹcnKc[j᧨_XiU,zw_)ilj8 m2IzקEVS1+Z3|#K^4MNEN8['ZH.X[Hh2ea sk&?Mc`:u'Vc`8A=$x-q`954dFcpvNwZA^H׻.*|opߦzl"NZw|T|I>FnUOrmHc pxn}٢+nJ΀gneupŽ[Kd/v28D]tR697G֞ O?EZK#8ۗ+?w9\ɪHǖ8q[5»e͖N3ۆ+p10>܋x<ytڢ < ?R/lj9Q~76?\#Z+fSn=slf8M\14kró ezBBG#JZշz{FZn.qtC os`8IQKh}6ڣ$.G|RcprS}eMKY4--/F I#'[I,fPaC>{|l53hEs 'oS#WHLwP JZö֟) *"x,w\`_Yl V+80))`5U-l˷0sj/;h!ÿe?c>[&]EO>8)8i<v`k.#c$;G#kiin5I>G`8m=k\Txjie0]Dq.i%h}swnZHFĊv%F]ǡ:*,ԐF9#zej!_l8]Aky8z4͂! Τ8Zj#Zj7<)&rOQjV#v_,Ax=H98䶚8*8dRH56݌uD\~s(efI%ǻ{s@dF:7mq5 G+1A{^NOk]5AB48-讼 A{0N{# v_ Z8^lQREO&#ےOYsmr}NxrJyLM*qHp036m2F;1FP09 ̸%` QL&P%G֙<`i5-WKL)!oF@>k7}KmwH` k l7c=O+eѺ{D k-(7;ii$s a/gkI=Oi(I妤uUFG ʍi覊SV2JA϶%3֜az(hsNȫ*N ZVvJ٤fȘgW;@#6Viha}9Ϟ=$wGZj)摔žn;e sw<_DlKh*a1с4ۀ1=4GMhmCGЇ踶^ eNkfzvRQR6Գ9n9=O=oWxQv-Gccpmn?=,yg'[>;O/h/t6s\O /0L \6A`g_h46hactrr>PCµ:kJ^Ͷ{lwKt;e}UW'Nxq-==]FQrmeĺ4g`z.~{t"F\U6˗$d}fBюCvr Sh)Y_*=ӼIpZpZN@7WYzZIS]81SK9m3{ktU j5 SR`9$7sf̷,SRifu1|6P܁ =8xzL+41P9ILsgP:Q 0Uc+T]<n]n.2 Z8ʽECUKM\vPOG{k2=;%=pZ>&@\׶6vָQpZ㗱vq> p{vկ\h2=[ޙ4NA%O'踏g6[tDڹjM$Sk^r29rqjG|2Y!rw4 y9ftf|zK+iF6SJIZvRy+bcdž`ѵh]ޔӴhX3VD.uYyMPKpOQ1踫-Q 41S"sDRk@<9+rX}+g%qn: n|3#o.cH#9+^5[ު,s 1Tˢ sy>bl4ޣnh֚*ڦC?/ 5qlW [{^ u5QZdu=%9 >#O\8TmKKJ'4d0|XקUjq&mq}:fE%Hi6fRIZ~8YUs>~R6)^4ϕ Sו7֛yuseGO 4S O#i$z`:khmnyk<Kx2#^LFO[a35s/~< r{1/uֈc^'oK#s˝H{:\tMY}7m!K_i[ 4М[J\08Y#e޾GI-;}ކ6Y/. Ե-eMT+k,4T$[4n87asmC(oKxzbM;Bf w8'''+Ci"3qi$-XR^4zҼF"VKF%E>Cpީ̏Z1ڙ ^GSTU[zRWW2h,>kwI:kyI!{+[Oᦱ4+=]Q)+ꑬ@Ɨ=q-003Muywh5K56T`:vSҴpUm+E4ϨZ票#c^/Y;x{^C󦭕UCI$ՒdkY#㑤78|N%įm5S}fZ7M5JW׷;Nspi'Lٷ0~:+=uQRLqx`8#>zwy-4@C" =Ǘ#GBKmm6BL e*O $fE9P$'Wi۟eq?5Qg ;@5OU{{COXhj+*RMiWVG#w8C##5jkq,{X#;#`x3w$s(d;)\|1K)1:"Ksg?-w-%mI4%,nݹquzzS;3 M9c;OsN+Sw˛c,8qo<@{i?:WiXY dt n:F ˺`wߧg%-LS;sg9ϿSm7Է[46 i*~Y,tx;Cg~ҏVEgˆEot cg.$p?|F+KuzVG[X֎hր`\|W{9[&zj;]_SsUHe3W=$#h|k 8o'B%n(I}oڮG}mQWA#Cᔴnv`@!i-p-wpG!^I{g%}L&uDT/pk3_x*ڗ6?*JsٻebQꂒhK?(O#DIn\ 9]06FwdtF8;]#ʘ0fNLMEO.#ҾZ&8p~O 6=JUYn4TGO7U?f!ˈkpՆuttYִfޟ,􄺆di0CNӵ9$I+BwOS438:I^OSU< 1})&;& BP@A@A4@!!i ;Ѐ*T-Fdx#raK&ST\ + n>8VWIvi9-'c^[éX xqK]m$3|RA_D4/Eע-hmFwjl&xqh9vp:PP)!W>=RxaS[jOqu%C(KY+Xp--' Goo~ yGDƢoK,Q ˧ –bUM m |2l>d}GMkg6ZڧRuSM]F8"*_~#:RZ{}lW -K|м1%,ve @`<$+\R}8=gZ7 (繌`l1`s@99LJMIQ-H R_ p ^-(hEmDN[|RӶ.AVppO~zlZQ(T~L=-Ɏ]V, KZJEhB+Kx9!ykQ ֙Uص %pE#6"Fޫ٫]$i JaN#vlۻ=7@\Sl0ZtV/sPSR9P[!9kGg ,=VO kmJcGOm@v &k vӬ;VY.Vȩ&:c]<#6C+{N\Z$HF8]WAt =: ON>iMigBI^ǿ?)/]2om-U7K1ԭHvpxsGS jgGL[ ljHl7wV|7J8$Fgqt1K#B8Oc+w?6 .U.,}5M$gsNq+E6%􎤊{)c1bB@qH+RMӆXj?wtJYè ǁ#O}'Rڨ>KFi^r:B0c@+n53S\"q0gO yRi9͠BQC0# 08 }m7LUQVJ u2B?4pzX>s~F QHڪWyR98j:i*+kEꝔ+Eo#X^0KX'npq^Mk/ɞf~1F@exnqԜAM$uNvx<~ 1+-57BaO ghx>n |0Ade⎡r;(ݭ#t]'폧6 Z^_7%}F]+j!܀ܞ7Ǔk-N_42Wa4@y<fCЎW~ܣJm[~P^MPfsYJyMk$ik4dv@8zrG>]>Jyzgj! 0Gd#iwMM$,AF:MPrB]@%'U5 {sSh [VGG KchiW/Z!e8$E(_P3kGl|$p;/ =:d&-\eRjxɋ_9n?T2>QHv94-}|8ȋ~%MK{KNs Bh'ׁ=keA';9= T%RJ% p0KQyuFK-%L=8©n]YS68МG ’5vTN8dxY:I7xIX>/&X@oVjtԻeEj9;#sVQT-¯dsc+E济9đ=r{\5kk!h ciqgj펭s"f8 o=sXP%[|bN6ਰFK36ls73F:[6;}2xgC4y#2]ߞrq-\u7k2ë&:Ѧt\U' 2~ v ϔ-OQ&U'@9sFwt>s{gOZ:穫5]ږsEMLelv1ww!$@^^QY. d N \ֻ5Zzg=tSuE#;9.==,a|;ZK%6gK$ԕLnGpWOJkwTeq"V6ĮnV], S-4o$q<3oO<JIS!Ϫ 19;Ynwy'm:PV]/T1YqG$NWmPSh% F69AvrJ^2{a7ːg\}&Vy3b,"f5@vǟ}&XvJGYQePOl*esnAn@ suUNާGW-TMd/~ZeoK'HHZTU:x\sX}+]CZ!DSTn$s85NIy$3:Y_⬔Ts#49r6T `A.3CM]MlYqU6$?ўxå4Vlu,AsnsݑB\gՎ9TGJQ<-Λ0!ix ELxr,uN1(%-qtcZ/qh%r1>(4Km=ϟp#lyG/돶FWq b8`m7Y0$p1 |OSSZ\e{k?ݓߑoZN}MͶjݖv$2TH#~KwI5J*{.mlh?솴{Fe/ClKIA,t><_: 1 %Y9ۘdW?o돈 c/mJxfZ9((4?.Bwdpd ]nv^z[m$qy Ag e #L0<|\uqЯZYV:'>7`?7;ҸAkG%_e̛C~<]#K0;d_]%&fԏҖǓL"Jp2!s9#M.Ka:F#D鼝1KݜO~pOEA9/p n qOh M7KS,̢O.熹@ :ůk!sj KZ<ێs8b1ncrU[VvokD>s\q~ 3ex[X}.mǑ'ߚ@I p3ҟkj=K[F C;t3D`# :~.[vOvj+alu }&74|}@^ߪm h""Nrp8ϯZ:;s˳Elx\g [0zGil7Nϝk䅠a䞮/=_߶˾ͭt%cLlwӵs'^ֶ*(m*O?y㑁,çdJF?\rַx($cNI#[Ix.׌gӮi:˩EpRG4uxǨb}Wѱ V+zH#eDFL}1Ԍh=W>\jm R@.|O9cpw3udd׆OY5[[Td/lQc%<I+j_+nλRmEP9ɉ9q$r/VM%.t7idɾnc83<v9f.CQ\նkE! f̀Z+.[uf[< FA4Nc[P\>7TWxsG شς@i*Üv0isv UmQ,[Ubts̍w7< pp U6֟c-UO1'$Ei8\5%1̬UyJk}6.NNCLq>8֏kH5FHݮ{f| ӡycExHo 7A4.c \^ AFn}$KGsCw;]ÀA粼ySU>ߥ!ex#PEAצ0mC`).Wڶ5:G>6A$z}TVhHZNbbHkp$}_OPQ}F :v]DXڸ+dhs).:G7?s]m_x#[PPZC ▪i!]ͧwJ8pד3qio>\{XjX,3A ӟhhQc Jxp_CGGqۦU]=g.Ɯ^yrIKf9Ugu▫g$p3oI7988 ZMۃ% dm;72;?xiԵӴ֨Y]j4EEӳnrey+\E|udwZJ)\iMLeԁǸpyU.k^KS\ !Y NH 58z.ei+ɫha>a;z|%˴4.>"f@!kK+SSk*NKGLysgk۴DkT4̹iߑsqz:(Gm~d1с0\Nxy_< :ezG戉8Iefi˱8n@s{.chù1rseZiEh89%kG: F7R˄[+*50d qs\g2Z%UXqv趆h.JG &іˁVN!E!\H#:m#OG^hE^^10s*jy#(<g\tGLꊰ'y1{hg뇗MK$B":GnˎGLz`#*MPJiŴg mo$cz#,OM1mAS22 -.|ͪ5E]-ƺ&꯻GLֿsg+&xί=y'oFrв8UI o$gk[׃yh{=UDH6fWF瞃u]c5\lĺAҵJ( Cl09k%as [ͣ|NQ}OcS9 ]#/ΐ=PI7 5}Uex!pt/ib78l^0xt_OfOZlZSA9\8$rrk#=M\(덮i @D-hxg'+k_[UNCk#%hG`՚5UoU-6u9F-,=q 骵·٤P'3] ^*+Z6x%volyM>4#%ĽMf6ir]s-?U8pIYꂌuAEGq꥛G#j#"[,ncÐ0_/toGN3;GSǾs߃~}-˻f4Pyѳc=v5 _Fm[Z[+d%t5?c˟!I&&7W>,~>,tj |RV]T4Ǵ7sZCӂǏ>0Gwe=uSiuS$/|n .}Y8ï9_/>,ctu#rR8IKS$¡2PrYH_ 1VKǝcbu,fyBFLdFZKOnA+ͺsTZiȭcn-̆g wRWIm;]H,ˏ ~p%X9tuCu42TƵO3k';^7 |֐?j58!3SG<ŰŸ90sBOѾkQ$>}Ɗ6s3f2@=+ˏ> Η7 umOݪ,Յu;B:ac%EuTtjm;C'k1UTM H 8x0gݟV).2 <50V?ߜӴZ*z-}O wy ̒x7ţ)mjgSw~opQ#dd|9rwS`:_-M ͒ @wÐH8]O5+u7 <0־`2A-r ]y80՗7re5Oh(. ^.JKSIw7w`KOEAj[kb/.h$pz/;h:z |Fȥs \΀?dgE->7h D[)#/$7 #p rqܱ=V;vrV2o+)/|eZV5J$B`mK6q۴sݫu_i-ᡭ3$47t -?[ǟ u*^<ޝi[,BKXDtBn(v mM/hv8$[MuMJfpY1t JC^CsK;8깴?|*^kuNI_QMI:Uk\ 99k/UV+4 k]Uqu$۞g{$ ]F04"_U=$,)v%E<\?U-dun76/#=,:&2yGMUn̮$4tfѷ{Z\3 `s躩Zu-3'$--4c:*nZFSc5-Ym29fAsUYo:4i̓IN߻T[Çg+]e.=;DTPB+t{Z8 +9oӿvxR؟@wG\wXou:E+9{7q3H^K/6cpbt#EnkOu-ӣ~ g.p&֗39+Q7Wx|?X#al9pN,G?i5uVjˤQnU2?ݬ ͒NsËz!y#P}|@7ʉ2AK7U=ݎcL䕩-}>nTCcG#a9=FB]l&1'vœk9I7m;vRZf x0 qr:d[um cg*$1I=Vl’DwWs{a!I:RVKtreFZqpZIE_o3]#yĀ7`e7MWUOweUU;]%MUdyᡭ\{ҽ1o42VT 3tS˛; 9[MT]!qlH$c0cEtޡ1WJvvnn9hCq&#Hu9" 'aDрV7ۖ3M-'/ FG H:Ǝm啂aa̴erzc +AEo,>ka1󌥥u]LQ;|fl,;o@~ʍk02h-<&8#cۗ9Tk$WձL'q1; %#=4E'tQکr&GWWV.SPxc=1)[$;sEULU ~.k`,k^>B4,i'TWh^ -f;npO # ?Wyճ_iL{6NAd`_zz$Q8%;w6ASװAZQ kQC3d.`;v?pUpVTCQvL>Zɣ3mq8'+ŇHiwuىӴB)bsvti~˳^<}&ݦ-*=͞p2Q$SY GT^x=_K8)j/Xh-sk1$zeq-U6Çtu6sWVڪYrlhk!tf֎[K'<[uMP2?\uQ+trD!LCg̍u@p\猴8χ/;M UmvRE(/ۖ5tʥryY-=Da:--d:Y!H#nւ~%P9D\ {; qR5?%eUBz.#沖xcs ZHÞI Bac\b>Y''l5ͶeȀ9ߕ). 'G$k62Lc9TAGKUe4ST;tpU<$sO;iC>˲O`1:8OP`v%lMƞt|HHNAyb5;DrX汲K,9$;h=0s¯ol5&Y̸hqNU6hjiApvqFrr;~=b+ u5K7bI;889Zف9. ƞjyǃ;㔞ٸeVRPVCSc˟hu+#_l=%-QLa˨9qc[-ev>Y\#`rp7gJ@b-R=zjc[&&ESt)SͥRiF M8~ѾxgƽcYYt]~LpNރc)lPg0*c*vH 1|cRnicÆy##.y~OFu4w}#iMsudO{9Zt"q}@.GJƞs='˗ A=TI,r44t'ԪV=[[[=cj+n;b$G, c'F80ɑqinډ"r{Ѻ0*?;2m窺M3n;9dQtmph/88YfjMMfWa0FI.y~I'.'9X YeuUGcu$W=tTNٷ47iלvp@?.P? cZ]u  /RZau 3ytd۱X~9tqO;E;A1r@IZ--Lq"[2;SeqZ>/߬:REUu\33'}omV~7 E=m& w8{ee dF.9~>VjimD0K ;?.-?7heu}DjKKA#mW48JEtplIpPq듏P}ԾDGh{EZ!|Ȝ7 ˤq=>k>ht沾Kj [T'wck䑷8䌮 a-{:lOZkLTVIyuxTԼ$ O|׀m+..j[MdTH)dvacvp<9UzU}xCO-c$~''/M*qLimQHӁ1ܜc۪-вwG9ȍE֚GIUpiVIQ}Yց`?U+/quMκKem=(k3=%zm5+SF%4up gdsKIlG9Va*1ѱ?1'qp7LX-nt? 5N$pb0n6R`qo'?ON\/}:l mnh´>X,;f ,=j٨] R_z5wt+inZW83q80,7-;Ms6+7(tR w啣FcRc CWOvѴ8cӲhUCc 3=ǖ[%6J=Cr0 AVU 9CAih sOUaWV&yk.k+Y- zKKSGo1Lg.qBkf>k-p Kz\E* DVr@sEk{+EqJ*AM,i9I q`k. %Y 6[cZGvAl5}HX"Yɱksр<.u)))6%ahZ23+Jl:΢0S*sתd7zRTSCQ 8|f1ԟ Ξ*}/n)eSf1Fڏ2*xK_rH$圛m&6')ψk6k 1$H'85fan8qr_e kkm)< .'~s˿.SZ֫ `uC/kmVhG8t[gҟZbi rupFF ZZy.$d1##y^[VF A  +:' {3k s8|-~OhjfAs*Ú%8V_W4vf]j:S1v94nxqM՘uQkA=DQ]]+Fq8n1ߪ Ҏtv@qawgc#)ؚ&ԴؙqmAmyvA<ᖤ_y*[-u0Ad 22x< {sp~:YU! )K. \vZ^uW:3C_ d=z~F8ޫُM!Α4gП*ڦ.&F$ćyk@q/{UL鄆&,g:qӅ| St5Ve[e\Gd44Eۏc^σ,&ބӕnp eikmph>Wfm2GG0:3 IKKg".h*18 ?R~ ʼN;~rr+6'uћDMNvO#vD"H44|,Iӯ̾*j}Ad~ERA㖒@僞խz~_LC$1Ӗo'wCzp9-ǣ54Ҍچṃ2^zok⦟z*]Cj~ଷ1hn8pz7\.wËEk5D/kBKH'Uݠ%E]͡0ds"c''fx'w8~yoV8ׅbIuUu]p% D1ԟAq/܎|J^SreCe{La`1 v>鹿{MOu=ɶvNI$479_>|Lm}W;Lsbc]A"D ] 9<.)Xr^)o׭KSE ia3ݥßAЮw}\#2 -M`4`q)UMoVƂ췾8+9<ܸq?i ፺Y\Gڣdc_fH?2IyrgyR]7- g:{M`Zh+*$c;K;|':?'I=]0VI-)y`# +mH-TմAHLq9a}^Iw#m>l{nxH8/VR{&"qRLS#G k[ޜIz{S)gezЊD\8[p>1FlmsNz+KȘTTDa>RHZ#;ƲCAPGXSփYUk>^v16Fa;0 *j%M3#sy$O9';=!ttP:&G =QGi!LvHS@zT!~h=B.ǔ}PQ~hD$>BT!R4 ;#@s!AG@@!^!FBBT4 0}Q@,GZcvC^8##r.e^oˎt뫛JoZ(cgi9p7Y[9s#҆;ݘ%9\Rn4P 88qns%4޽UT |WH\ *L eu sչ_i7ޮWctadSK4/rqrcFT@;ZOP-SN]-dr83dLX>_ s`˝댐u'Xb\TtaE졒5%`{[%FH]#Si+(jjTlvdҵ;;_o-68؀k21s1,.n[3FxTO_mx":pFyCcT^"i%M,cK,~Sne8f2C 458c/ږlWUoMD54NK:$i+uN@ju7 ̃/`r0y=r XyjVek6*ilyAQ"Xd $w7|2o,%K*\*cZ *z yM_R\i- +k";_M3VGb.6(_/ Xzq2w~d)S8,V wA. .!cYYPcvZĐ=]cv1v'NPK'07g-{MEM=&wJ9&k_G Yv­]2\uc6LzDE$Qk er9xϏil8ԶjPqn`q<ô8 vۈoR|mDzk~R٥kwT!Ϟkqr6⍂]$"jz)& 7rFp33_5vVQo|"X AUşĽAuke!1py.;._qα{ś~nlh~6K! qd[F\!銋udu6M<g{zs4j}U_iu9GXr]- m9OeKjz-Rt8%& CLG>[p\A+.ſ%fӿO{[np,Lx VMx\5Xe^לg.v} ^ɡFjZ JwUFՂ2i@-eVs\.U:w2G\ ǒ{>XWͽ&w#K]&V%kj$tD,?uW>:}nGL[ sSr`82!O+Vb ^ejO.GO$!G@J 5UWm$Bvޯ{k[Itnz#Js}i9twIJc#j/K:z,[%Tmj;f89vӿ^z-^~UdW1Ea6WCP}ʈ с9\cqx⧋꾺sE%CDVeE)vmc?×'p8Y]v̟i4jYX3\@՞WTVTSJJ<1q `5WexjdaqY8p#57xV[QOUΜLXApVn>#mTl'dbm. p U&*sC}]d;H]^;QZk}v};\sCx%ga˘ɚ2qIA\f[ݨ$.h27k[7H$>^5vh!U1=:S;|כzX8Zچ0ol>&X|>GQDj{پy vd<s{/ӱ-otT |b>o`,CUY]M5m:2gL| 0:g}h*-@Y=AO24 p0U 8Kˉ01=y9c\:jmtUVJ$'NL 5U-aytt%FA qU^\--cijZݜ΄ /J>gZkL׺C3w`玜q9&Gl4sw\ ,n 98$ T/˕ve4¶-==c(꜆-V8ϲ[<@ogz+dt[ ˚\8q}UUtm Xc|5Y ~x.'TkkmMmuE=tʺ X  $#:-tf@ [˚\r{/~Ŭ Y>k|LQIo|-#] oG]7jҗ+5⯫vpk7ӌioizZ2Q3tm߉<V뿅^ :{-׻ͦe2;# /lRBT`e@}Q~h TTЀ@wT#@}P"T!h@w BUYtptdǡ z_MS,D\q(c*mt^leR߇ڨ_blupt}2Bjq9h^h2HZA ZJ JPWո9F/?B1>eeɌYhke}6Hᒼ͡ݏ<&Z#u57y#dgp]\<5wLV*&Wŀїup:NWV/jgXds۾w3-w?99%Z߰X8䚢kC{w%Wc^#3H*70A9:yN{0 w/.Y^8ȿ۹so5n*C y!/`;X1<ߧX*hO$ 7 mT!݀qj$8I&9,u\Iv=pY޽.̖G+$Ævl궫Ne.XY^7C3I |#VOduUNsw88x nAv@O`-[|5R."b?8oŞVeH*ݷs9 +we}&6_$r $;ZA[ߐ0[&^CئWwqgZan H7` ?5}XNe{ˋN?eu湚y*mԑ |||#]Q<u`[vWC+msϢ6 t{:dzyzN٨}iY$ `I0c9_?=ᗋXY7գjqxC%ހON0}>e7KNqY$_O9rq[qVX*jy+#cp\\-xԶu=T`mV\^v%%q˕E-snS608F '~uϣo4ч v7 q$=EKWiI7iit1Ƥrif:ZT3ӗ/bdlF.9~eZo-0 w5VesHa>Z581ah7zZxz.8nÜljml늛䱕`Kx#^پ# }VH`h|~!}YnM[,T΍4oqs~VA34QCcsA+z%WLO%Ҙs^`!7U6^']%;TpiNb9mc8ㅏ꺟(hj,fLeFH Az/F$ݫvTUh<C\FEiakE<>a5~&z~k~VWWp{{#*,).u{l/qݱsOu+{7ϒDO$y\[~\/3YZn+[Em7RJf3Rܵ`q;WxrttTl̽S<ݿ9s#Ƕ9^S~ _4uUE-U$l;ap$ =SzuAk=nH7sGʎjj{OjT/f6?9 N^nkd_ۮxNj>i"t''sqNA8?T%m 3XH{rO;I5^(mU%|!12A8?3yv,tҺ*90 r#i$`#<_3\.26 QK>"g">ӹ瑅.h8R&2Jb~0`tz.' ]3`Է ?[&dkcs cK3ЀOXoR>)S{k,AL<ka˗=_$\\+d#h5aqk3eݤӒnf 䜓 #Z@?99_;mCOH e#9ԛw˧2;E}M풡c OsEUUۙxa--S^-8pPځK%q7m>rܥfmGxzҶMRUa9ZOz#tڮYWp/LkYbh۹'pX#o' rPS6/Gxr$>?3\˻bj*Y[[Ih;qrsokXN ]{/Yhh Ā?4ұQlya5qk+|7c< ݻ- `trͼ2iΗ;8p'GUެ_bCQU,3,iF;x#Ӝei%[*dU _+v=֒8S?<<c^>d6:PJiH[TQ\`-e\?57oԌu<>A|t>hc7c9P wp^?3UoUM,^p8>_y0L2PLdc <1{-žnpklPY+%8D쳖JF; @ד~UMiŰwGOj]:#~紀F0{?aFIڐٿuf{\[i۴7=:AXk]gB8i'X\=pz n|6ڇ c<\Gϓx̵jz/wۥK&j#;8YZ촷,l>yYFNy2u0<ve<8*׶%#夠yԬ;則v:ujfq՗G:8['kf,$J<&q˳dQyuMuA<Jxʯ[h mU}]TPS{A$+}\>/GLZ9ijqNkڊ8&tִ'nR{וV8 剏salbI28x[vgJj ߵlM6G3| ^ys\\y~.BK|mCvm,285޸';G洃}P"Q~hQ!}PT!=ST`Gd 2!O((@@HtP)w 聡@e@gwBB H&@GdwdctcsV=c#2Nay~Uce}ei$gӎ54D\RFmkKZ1mcAW;ie671tQjI=EmW]b/2 w8 5vArN.0POMI$*sr@^|y:SQxQre[/WW;͆kX\]!cv*~8in_c>|Gcޒs[5ޞvWֶK{YnisCWl,_]CISr!t#sy< ]?LiUmHvGGŞ>uxg=yt"V ꉇ SfXNNG iVi^*4ʋΌ4|yԲFYɍ'GWhwsS_&K03Ei#{s; +[Iho[]$GE#Ø@.h pş-]>o>})C|7qb%$p[˱Qa7OH]fV=-  SNֺ7|A㌏|ewc,t²AK+"7{HuY*``1ܐFO(wPTyFe.sHdP[7 ~^˾6K.H#!$3M3-4]`)}Tt͉*,M#Z䇑ܞz/gjN/lPEnutU*cM@rGG^X#-g1Br}WJZi&PUk.yKz3ײܳR`I"sd q^zH$n0Ǒ zO6\|<\xǏ3gzMYklmdq#[#]8H뜸xqG%}M\4G;tm29߈pI2C?}}Xg6:5A 4oi\s3e^98d^z:KOpKh&d5,~Z]ԵvpLTPYmr**$D_1 g>% ^(/ԴU]eJMkcꗎyV~EWcTi}Ml0> 7 c{2]0#iۥުka9liph;RN uU͎y#$Uc-ث^酲Hhׇ2HH]ؼF»a|::Yqsbqiiq7kR}81^ y䮫1 1{M܈6X 끌vjtp],I"k${g ]gF*cY(̌nxXSjڎh3߯ěEF!y9Gpq$c$N8+ni9+L[gp#굆 忻wGM#=\rL战I tiRXȤJa ;+Asq$I$SoUx'=ɗ&YLEmE_{w#XfsFZ 3gEY?GWgӴT?aygE}MM4K%4sdy9;[ /V\rN=WF{ꊭOwqؤʤuƜ:fo_mpT ?$=y ^V_j:GDEy[$2c4s꾮 6%Of)TS[.KY"mi'kH'O }${8YMs^7KcƊjĕtxpnIӺKTU9'z{&e4atDdW#VOiSJg>'x[;uE}Uk5fئa Cq^wnVzZ9<;ݮ)n0G Y!G~ZnluZE֒}+ \9n7pguӴ^5C& ڦKR̸#h'[>4ZyTԖn,xhs@ss`dq !y.~tm7pwP9Ps1 FɦkZ9ăUhi+ 1xhdaۀ}UEptFGD@, W'g!ssrI]&3VN@ۺCn痕ڛ#'~JTmW:ZFɟO i#GgnCe>9frYL7sUs9.s%ԥp[_Yu$}C2 8{-)dwCI t\~/4SXw SV_^Cz9kZi8 OU\Z.m0I;(O 냩&hXFAAЏzmR#WQS%<#2y^_я$+Ժ>]) ta-vr:;:-~ x!piuJg nupku x>Kk?N['5rhy.Ůx?˜d7 ?]nY=ǟ)(~],ShrSF<|"6zj8Xk/6UOso^2WFW[v5'+pˏ)r2cq+ܪ-A0s¿ҷ{-ђW_o9ib/+uUZ椬Tcq_~c_OkV=ΆM-,q|ug4a.9 6r?pmHi{c{Y頭{m<;? Ï?6ZVW>`Ε핯8g#/>|y\,~{ft֐mэuk]gUi;O:Yʊ 92sw+blUN-LPP#{kp3NI0V]hk6-HnpO#@=}Vi3X'K5mtl=guE] T֚w y*ڦKCX3''%g8On_6*6mxh8wLeǏaſ ﶇ%fT:kyk$Uz6f%sON:CW(VrǞV2kݛpGs꘰ l>>fK5uQO[xm8.6ogۂ3Bf NI5mʭ:Ųַ@ ~R[&k-,qFJL܎|L>sL^mWIgf;m83Rw8 ` Y|pҗ۵eI \lt5*f7ANЇp0w/)&ާkMTX4Y"hO?do)(vܞr^=: =sm{&^lS6Xf<hp 3 1zWꦸ[UMhNcIci8*CxakԷz]Af:nіĆG81Ԯ? lI[$.sF pHǺ w44]s֔+,FhZrC9 Hjw+S1OMROѿu;/Dj3˨.D$"}ÆwLy']k]VTIoӕq:jվI @]+𚚮~Wn[vUL1]q݀Y'[g$>E--uM]MYy]#zt $x[QEYw:x^^ݱxnqHif|7RH F > hSh-ǖݳsepu$oVrUiJz͖TY=D0qUsQRղhĀa'=Uw5Sns |7Vrq^{= E=c)/7==,O&^61D_MV"s*D6ð8U-A1K' 5MK&伻$ ~_ou~몣asÜjʯ%<ZGQO& qZ6,sH˳翲JFԹ- z3Jjj}V /hÃ܀r~^[+OF$̀GLvw9Z;3)'kYHe̦$3?i뎥fGo.8Vs_m͑dq&ڬH; rZH`ԟe+bsv}w8%[UOmVC8; v>LW6p؛2 ݒ}q]_qz_^*+썍sbpzg(l|yGobZ[Qc4=t dMiq8/BפU=%//`qF`w ~p7ck |sN[,Q\_1p?u?3Pqs}ZݵkgoOP2 5  ێ봟i/avO&;ixv5]u2GM1WM R>hkbf7hے(+8owj?v`i9W۪"|H<;h%C[繭v\{WxsEb2TLwqqgug>IOJ{io2ְ56&woN]}0m5֥3O Îy?Uέ.|橱pqpoi6N1vsx^|O\N|WS{M^/I(팑\6I$M!y\r\OSI#+\KzOT8>><8o|:]$fU5Ӽi[]/WNӎ=k3w6Dω:29]2㼜l_bol՟w6S3{<><3[fgOtWQJ9Fdrܝ<ᗍffT7QPG4zv_}ź-wotn7-2pY8\/$a",uSΩTa=.{| K=l[34IXK sK#i'7z{Q~f&4zʺG@֍v^d>lkSl-q?II`}+ .]%0?A#='scN"tI&cAU |9{8X+`8nMs1쉻KZD`w#X*TUjU|~{F>XG5j 68tp%f2{D<|F' {2#ëf 8sR p=k25 hϪ66]#}R51`m݁^l2Vfr '}#K~}\UUq0äsG~ ]m]SG񒵪GXXfm]8s^3UEimy 0تoxnCӎx'mĭ_k/S><2*X8XֵNgcێFx)D!ĴK?Eg0z[O%IH9J+([+`a~"XűFK{|ieݐsخw)魰rO |O {T;s^Y'W]l5::gM+$lC#~K*z4ʚH[lG)?ay\xͷzeCkZJC /aϨ#+SxM|N7Hat :8A<$>z'RD 0Gta, ;(P@@,# K OK =QK2:BFtTareXD)a,"BXOΌ{Y(Z%&<Ď?Uټ:KSWd܎ {J<9y5OSC]3&|@g\{-MnT#CxwZx͉$FqO Y|ݗ9_owy_&idbck:A<,}9;OSjTZjV}ƕe<u65V309!ۢx>ՅC=mI5x13Vf*z:# .&< Uj[#.PTP ˋԻZ꛵Si Z!Z㓴uDZԞzZn-YMels:`+؏-mAsyt~\@u#'#|L~G\nYvK=miGPu?EUŪ!y!>1E5TGGi`P9H13Z0AVlOjFms΅\F  ǽsNպSˤGGDꪘ;q"ph9yT1vX6;-I$=GUƊAO':P3#~d9Yꦺ) $:;dv{/e.=e==٭P[GMvjc_ΊO8t=#5ډu(NіMRxh9=r=zPY6q2g9ZNX98.z2qGHc#qO|?V<:/ct]]0Afl8Iq? ]h\U,{65%C* KYN@jK\a.nZВ'Լmc\̜OVPTF6?U>O.xp?\ߺ2p=s,m&*Mm8du ۚFDֱKK ɲ)!/hݼz;ItW륑bKS c`qDC>`hi&x꾿^l<}Ohe;5={y,:G?8<>2=Yu}1$hvA̍Bᾝm^kd[~?ruຒHYW<$p\掣G'z]h+zJ[`:7(.V|xq=;oP4E-礭f91\#y&@sO[|58KzCP^iKeJ f]3^ÁWooJ?t-~ dЖ @XF8-OZ=i]Q, s%ϨE=<8>'n~09\\C#`$1nO'-2ƿ`u5,+]JK273JӇ5=ȕZIh$x ;W;\9qoB@A$i辗'Xx]eۀ[α=Z^V:9[#[9gm邹zM|.}Dom?][_ yӵ9' uQkv\4qb&:1ߜWoui@0 yW\1e12׈k 1OAOgǶwTV;\fuU LW-7 Mp"07n-q6ՌKjl h'a'<XzI^˦!yl h)Z@= L^ynMFrrj;օewVڪ[6 n={rx[Vԛ؛[m!Hw1`CH~hVF{)BI)1fIvpqz.{W4MЈ! 5ۛ uN.\xy/H^<7ΚT.wc0&R]NڨTZy''q' /׺Z>8( CsײFME˷'zzޞ:G_Tk(x*O?0 8[;O*[eC( =D{$k''pV5v餉?͎Vk3$c hCNZ}W%sH9\jʌǯ$gv/52X|.~~¢,G*@\l'-8sV:jjg$'-Zuа1A5uI8d܇uWK]\ϖԍÃN{g Uz^ N ~NtmΐGOmSӽ'ןOugWcd5H*x+k~,Jo]AQEj?~A뵣9ZÊyNyi5|QJ%ykvuP8n#gB韪Y.u|숺OYS|Xdk4O7c?[Ǭgn||glk=U67t6;X_o*mm3{E[3l1r˫49KKtO ޽1f5u:?gkYdی-rxiMF$1>G~_frL[E9SJJ]~_|as;GŻ\[tR14堸9'=х9ń}>Vyyr(g(oTU΢u}u];Җ^{ޏhVن?|#tykÜwWYx{sWI,P=[T$? mb(ꭓu2Rɂ7D܂0z{ҴGQ_$VԔDd] `yB2Kzc.zofѴaK aLvKk8 '85B5D |n6xNA#d/QhmmC/S2ĻDaMMB⚖6 ksxgwM"YLʺH|l#$y}"lY[v8Jߌ^br}UVkbJ5#v} 5 G!q"g8_Lc9O1kHǙ$bV $w$핸hkԍGWlz`I# LZ]V4P|dH79q'gJ"BY!\yp8`oknN8#9뭟Qxu9Ғ9'>IuT0 bɁ$y廘)Rʆ+\ߺi5á X/3Qois$9W'G/k\㏗_~W>^IlV=U blTtb"csESlmi.#V4KU>t:eI}hnp2UL]Pv X: 28 gCMįn GX2FX=c9̢TK6Kǻ?_e:+\^X] tkny'Ii\5;c/zUrܞO?#d~K2@29m َ ю:nj-i${HW6"#/\h}"14!GWld4;oS+>t+> OSV ~m ^.(C!c[;. lWC$8C5Šq3cܹ2;)ԕrEU.bpNzuIJ^I˜y$)/tkp>}Ϻc6~ $y_ mHPING=8Bt)@GG z hBqP2B  8Gd8Ga8s{?s2S'uq5(|55b!wMėNI>PqqB8B!#g.feqP8I?sCw {UHأk"n\I/✼V~K<Ai#j4I,M>:C+Ew6`fVAhc"N?%Y\ 16=yg.Rq+_ 'n\=[ԵV{]T9y r8qX6;U cCƀlgeYE:$,aBn]I_)YMgT @_AsZ}=l ډE%yF2:tDzt˨o8F (yZk׈ҾP~"dQ'y^y9s٬[`$"'}IG3$cPidv9ĵ'J8/6:N''9y978Y/ۋ]j+C8,7{C(卤A> 3)EbAiez']W5ߩ9 x=V/rk!j`/+[ƞz-ut08V ֟g框T 7'1R=Wlr|v5rO핔Љ(KpYm3M;Ñ]X^o͇͏|xyOMi۫+?R/8XH.3 lxdՍ-e4;nV맵Ydx 36r}Fq.^CF'8ycfsKe]]nS^.U v۵8EioK],E$h⑭.˅ר/񽭝VTۛnp# HrC-KKN@<p]E7*glŸqGl&p].Ai&hlXO0 7SUJ7ڒֻF;z|C&O,Rɏ2bHsO=VɝQPU9W8@r{c-|\y1eo_ҽI%IOltU 'a;= Hw/-4XyѵHÜ pzUt2/*0x2Fq;.ut 8G7h?L|2AbR/ GSׁ+%Ԭ::p]Q\ցAGKQ-cNw'-HG T ?5[l1ebU}5 QCt͙^iZyāziQM]G;^DZO e x%ig/%ն^}K|R=4  P=AoV:Nꨣ99z,uMS4 G豗,r[#iϵUTu+Um4uX:%Ұ v~c dtO킢J|̞-^[:8s^U}ڪˆWEtl< s?U}=k2 x= WL~Vs8%vm5ΛՔmP'Ծ}UmڣN4M H4\=OOI]GE_{2s0mۉkĭ;HfӀ]خ%*%h]O4kvMqpo|\?NmMYLʸd2p6g Qi*Fg~a'׎R'T3S%%!yiz&,;ኩdbw9ctt@[߯EUYI#":9*z d?%V]rc<0}%U4 Hs7]8 Qtl>2p*]EOACc"Grʸ錳 e8 CE?NϬ.ZZbʖf5ۋNvH9YleM]c_ aXp:G ,l4h!y㖲,<5KlKὒA%KxkX$d(>ݏ }FVT)IG /i~C$=W.GZ<&Vyӱ[|fI_a-sn׏߷.>ٯQPGY?W0Z6\X;GOMPxy 9q~ GղQZ*mZ:[d~/-]ҾAN0ESؽ !~RXj˧|C}.Jd2Z?<`ux~W\zFfdL&4r@: VS2Cjlἒx =5WSDک)e674mО2W-axwOTAAJe  47K_Z:GC4z,chIu{ YZӓqpzyS؄0ùw)ܴӁKy[M^t[$ a*0_+\1pJuTAouIϐ7sL{w+}'Ot(<;0[e-Ec$wFsp3ʣuAam嵟|K__6 (sQd$p,73nTCpZ&.s\p}[<6 Xnhaw'өX*;$<5 `s q;{E{e4Axsq{ujz : - Բ4oi·W A xtd7uv VGQLdjwys[䴇5nUkSMDJJ|7 q9VrefӬߨ*1lU@f^3HuΊZk5-sr$H+8+b{0yn#?jZP=,2h5Ї11v$~kzJe@k\4K{]WLrЙW+&Z +5,TT=pl0r9ؤd¶e\TYw$n;v̧LSG,<+Z";ahˎVq陋Ű6V8FNV.Us`l201zSrzBOu35x%ju2!q,qpuW\qLuJۓ3).񌰞^|1ۖy3{̰ОW8[ᨤZ ddXFOcnH8[F]+%.k.'jH㕻fD-tsLe[j )1w[<77puj˨cJ?3@#qT4{e445!లsV|$5mLl'B2NNxٔ|n&s.m}mF"vΖ^9@괧-Ky{w}Wfuͮ|8SԀ}qZ=5 Ih~K#de>?'隮YcpYi{LOl~l{ܕPa+?|o-#=FPWai*i5OAs\m;ۧ_muKUH #wW XiY lwPGVq@R=C0^q>Vci#O9~>Ewˌ䞜,tGcXqaǨ8H[/|GܤFT&L0Q{ ozK%ql@փϨ$\y9qԿk&ڭD2ɱ:f _u\>%='WO9#Ӿ3R֫eTM_7sKL8%oG>w˭GAbjv[{_|-}=cnIwy2,lq`v%>1@YqYQK]s{uϮ:}$ |s 7s仦pG8@S)zQB=tǢG)#"GG#"q@Qꂄ#?DT@zئb}P]$z ;!hd##Ё A@@@  z' Biw@wBRBDv@$쀀Gdz@!4+jкj%8drcͅ%Wo]軳n`QET$ad9y.?3]yxy).zTqI -ki!׍o^^s^$Y-0EIhAk*Y(k@ {|Mwkl̸A='+d=z߷T5Y#D%.8p#UvҶdϧsY]G!դ*ow߭CkH<nțSsV48$_NtA_+}jUO,6td h,e#ǧEyuw "c%ˣ.#GϢ隂]K #kI k'8R3W>Zw$%66}~KrkۦJzGXi.dQs3zK-\@275 -n֦˫7K*9Gw7qۏUժ.5s" x$giMjid,˄ AUӝ<4y2 p1xZ2z,e;elE%8*7=.ąn~=ykc@͡ueT18Ѵ* Gqh֩(!8i#U:Ǵm({[y8V v#;1ͼ֔1>^UM籭wWm?_YzvXQ8?v< >Y8 >X.|z x.n1UVwxbf{ki#ZܓJ ssqFXUu %Ēşckwf6:7 +FDt4z{..m1kێmA=oqa{]-;KᚡatY/׾:-:1\^[l.>O#ϲ͒e2T:y;3#* $s7=.4.%,7UUc*hfy|Ececjb&M$ >ץތcA 8o+I5[k2};UZƃ;.#Eq*q;Cet<׶J2?t.?9*Y.%sBdžc _%V?~.竖{C d%|dZ[A)ǟ[a%.t o;˅/7'\ocs.Rd7CGWNK/× k%8U(-<Ja<ϐFȃvF0vڭP1M{N~/on KX[LfvK};0; A ⒖{D4=I$RAKR\n1u5,q͖BALXLmyonmQiL,P.IcxsV:x\Vw*=DhdtR58 WAJ-:([H80s[B}+y1`QEEnicc}^y$/k 'nnTk7~]Vd .5R9lk!q8:kWW=uLi;#\Jg[rK!m,1:=T wq.-O*vFɊVwqӞlۣ5d i V){M8o^eI[ˋ_ۓ]4M4g= gp.aQize^Kd7[唻̎G囜\[eBj|M4 v<ѻ$v$\x.;:ZgT\^.'{5Y\"c~]_RuF]O!sp@c t?%(/~]],%PH?k SFkIW"Z1Kv{ga^VEU3eQW9n=W}ۈi Ji5?7Yϻl='sۂO^FTvARAV,aFќ |D-O]awQF)qIJ9,=^%nt5E<$6Z3Ё/g)ۏ㷸XtOܦ{?`eRlP{37##٭*g{:r0ZQ]diy ?ieL0^ݯ4KJEWoXlg:`[|6:fwL$qxk8av55u+L9͹8 pO\rԾv#ig27Q 7C9?,hwWuLi] tw?79.oROJ|Xcc݋Zż9z{LX^JTT: f8- _|~^-˦yrHrrDcis\AZީImRR}G.oVv~WVS- ¡:0ݧ0,un{SVxǤU{4΢cI99eoIcMA~UM|qdcv:6rOB>k77ɎwnvYm_zwS׺Uo纈Lݰi@ } -MUS]Ye"#a=s|-oe $Oe- #88ao2rG5]HeO=sK Qű7'#i]pqL EKUS[jmOOv2^H0pCO mx[x[#UQ{'1N9 8jn ӲmJʍ O}MܭwYpka2E q|wPW̶K٫f]DUL0ֹ64>JA%߶yP' s4 ߧL,{kOM,JʑFbtN8H)`nZH +yxcpˈ/p'"|>xa G+ӎaܤs⒲BG'LFx\Wi%~T_]UK,/ doLӲy4s#s2ޘ#vJ0Af:bf>U +-Jֆ#N{uSy^M/,Pk(vwgvC#\Xo:D..tB2&{wcU)-1.Aɒ.YpW01%nc~9e0kmy鄑Lo~6Б[_T0֐H+SC+janys@lkjh+L0vc#eߢI"|maoϕxxj${SoE[)j˜+uͶ,xɍ햦Gۏ㢳:oEMpH(^XG 9o%f`.|1 #8{*:Xla??iS$SH) FXnG=x#<¾SMgc?8qcIp,;ZLcApe5d<1̱Ob0&Q\@&A+pgsCIrea04K 9huNxKK/ݢ8U8`t wL1o3yscvIoal3]*$QfZ\JSPǺZa]iQH_5H;n[o0X9SNCq\TŴ&k,sSZgv88VBes8TOr[21L5Ƿ%&rIW0!19vOx2iɞ`c r;g}Lns}4gf4t-"OTF zrg5?=i*$9=JqsRWHמWi_6H321-sBݧ,ybw{6f͢rB-HC}aq<=הZF9sesI>>ɿvi @k8t#(4p6 `}8餒J88{Z=~^1U[לH _'^{/4-?J]3NrܜgTx wP#) ÷m6)GG<j3R;p_v,d6؋vݠuE=+_Z4\dѹl,wQwD- Y꣌-pPOa#T]|])37Bw3Ǫ\]MmzRY`+m9v\pU:uv[0j'SquYp-/%A9:.].3+2Q-fs {ۏ-} ((  (B >餀2@Mtg#(@&*q9pN:{cxELRI+C912FzcYqдv}6B?c*Zjyx/\x%KGtta4vHkWyǗ}v$o|K|k{<,}Tч3929Ki;Wi˝y}e19ѻ7#=:wj-(g-lMZN0~ 1~S\-Noi{ˤk>2iig4Ӈ91?U./|A+/H9#p*٨UrHkcs𱍳XKdk>KI$< oE-,]3ݏqCHW+H[xl|F=]NEMs6kbS x;\I'YefÏ wfӓOT]O5l9k5?6~yEv/.XX[OpWEۨ`5\㜷>uxj"wvN5wϱz{oRe-+l>XYFC;.J*\`ZE-i$ 9Y+esF=2Q 3=i!յ {$lxoXT31r>_'$PU6g=b2gsS'I3^9}xʵ%3~;ƹk r8`cAvO85Fahvt u )pp{LΙEv{q_wG> KQ0u;ѭ!Qui$Lm?,t? D&[sFfO$Lt;&o1 w n c!ln-qqn}Y=/P燌9KG l&­Կ';O|ұX?xoA#Y H߈9!{֡=()m=A'$m?tY=\orѴ{-WkXuCΈw,^3Q$ОZq~7řk,\`NQ߈YӓT\mD5Ւ g#3@g. I=F渵á G#\etAte@!4 _Tg4FQQ 2) 3v@gg!4Tю( })DN6ysH8$dt#(B@ڴڭҾO) \y `SFG^>x]f=T9?.| ?~]zz?ɥZ0eZZ]L}w## ?Qd[PmEMN olg[nVZXik>IGS:jt[{YL@/dq=hhxv^,>wo{|.Î?8o9`/OVkc`BI Q z 68x8Pjt8[=J,vh]m˿^Go=opBؠr+].3U9\ae,旼FG~{iZv=Ϣ[iv6|<5T BP:{-~).c{9ǨS~,jΚODOIQg<+j_-z [I e`2wu#8k=Vu;ٍۇ  #IZǓ)wˇnxкEVI{V[:XN=C{9_]/^Rk-17Sr |_;u!yN|>Em͑<ib?5?[yu߷?.\;dzEdi*-~Y?E'-%9LqJɧnZ[hX߅u 9S"Jd|X+c'56+=uTPd-,>Î>!dMlA-h _+6q_xL|BSYqmrԵπ͙8%+W_af:ɇQuHW6]y.G>^X3dTIV3Zv=F:t^XY'66_ӗ'oW(XGmcY.'lmI!rqCGB]:+Z纪TƆe__n[sx3M勍UqLnVٜ76:egkc-sߜ/V||s,mkTn^ ܨikv#.NxǾV>yXMlc d;mvluS+bo'Ӫ&ڭ4ai\0wO+K?췮h.߯6 mV 2 <-KM 1cb~nw~gǓ)r-zbϊ UTy6Z7p%񞄓ny|uKBI水vۨL=8ËsN*2F$`?Q>=IS5lxsd}OyM 39Xcg2z31|+PyT$pm;Z 45\: N$Wcsz9};'|7ۏ=0`)L269}8^<ſ^v(^Ld4q 2\xݹi[&VیO |rttxWt#۶VK bxm~D#n>wq.oO׮ɠ}жF9?/n{Ҵ7s4 }HC׼  ?8gqfQ6 -fF; O*iQH`stR8鞽9-K'YF;Ʋl2> -wp>Kr}CDpR SV28Ɵ1Hwu83fm]_kNF𸎟c=u}2 :(]?{Zigm1/&v2PI1$[%ɌÝ x1 U#9 g{H wI%p"KF\~DUi%}sHoWTWQEX .NVfn!N>X3ڷҍ008 BCfjC`8v ?$uvA`u{kN9nNrts 7Adm *C d)̎on?ۧ}3ぴ}|7O]jVZ#dRJ摓5S[Z@H4tkkX3j:ܡ4 1}~3w$9u^Zf$g ewq4{s؇Ϧx[eņXf*f-˘ #-d֝H*n^W+%-$"K68謫ha-c~' ?5L )0G v4-C:zfekLQNO+x\r[iWZ_yu(!-nJ\$6\ckiHI;I`'[dsUyl.l-.h8챮Jבsw٣1I}_Vq`T q؞畲v]GS-YhyM4PήoF9x_3.E޲9a`]$=} ɥh)6F0?h.FWÖr㗴zatZjNk{eUżvx#=V*t nmx<|8tn+mŰWbt?s[۷p堀9 <\ֺ6N F?@fZ;q;W9Wmv#t~lsh67_R]<5,d3N];t(ge[!;]#4;#sF3n ,n}9Ųix=\/N)K ݟ1mh~pzzUu@CkN\dgX`_-HdhiK9T.m*dqk 4p@h=H_MyOmCNkp|3v=<|dak}Z8#GC$uUit.c_3qrryY 5yD秺TC> n;kվ^{dUӌo[5K$Xf[FA@Z  mc׿E^4y<#og+Z 0SC-Tn].ORndf uK)|qw gPItXk2RUB 74b.;O#~6g{+|`:-QgR_N* 8\\ 6w錹e]AG_黧_Ei#;I`q;b?#*Zͱљh5unŌ8#C]md85c#=^ߦ=u4Gݛy9 [WC@9#czH)I+g:viOQ}W7i*#c3{>6k%3-E8A֯ѽ]{Xys]<uT칾WM<|mAk-N3xk&Q !.mS@Ic]S ӏ˟6nc)]H|9k}G[gF+ mGZIۖ$F}=Y?Dz-˖iK-W*INsӀn8c?FdyP_M0h'ecmR @͕حɧbG9hRT\\d>k@{x[N:J]+|,{orɶݦ q0Ӝ6DeP9xnC__QE-9=B-A C==Wte&]SJn,X*^ZXcc.j3\Kŵpv&1}]01 j n-~̼+\ɗaOF#:d69G)s[ZywwѾ+$>S;=O`UJ^ʬnXfM殎gbH^[8w97.kh8u-dς:?—;O&$Ǣj]VMEmhc5mOlH)44q.t6Y  8O댎2>%}ː&^y OJWAGU1g\ּl{WO_,427%uk~ȚoJ1fYiৌ2BV2U^ֶo02}S|~<./1NsM4az$d.c S wWyϺ4 (ϸBh#ꂊ2&YK4'rz>1B{I8@'FS)aTe<_T@yFP/Te@uF9xK<}_T#(3FQBQR=F8Le'B2ꌣ(_T򌢖=O(J2X@O)>g (t}S3@Rks7unq_|DlM4čI6VNs@A\97·W Q/-EE$UH r{d.WNI'Zsxxv>ϦVোw&^QWMS(CNy-8e,2w9TYfmD2=<wt 3* 9is#ߞG+H?2=Vͣbu#DkcZXߋ\'-RQݥ52Z//.c!#+ulS#aM읙$ Z,蝼0?Sy5wiCʙ-2?y=vEWe6GIYKEު+Dm5D߇n8BLnWo7-vb<}Srێk[iq^NwEk Z"p2֩P;Ƀu%G78$ՍC}~?ɖ?ιܻ=8(i-Kpq`dtsvف 8ⶽ[slR03Gjƨ Iv0I?%[Tk#Gqc;Ŝlc;-sG ^TTV_n.OÈZ;de1s^XHs+l׌ږOA 13G8T@x[y_AFQ Tc焳%O2}S?4eD/>E#ߔcFP/y@D/1<(>2O()cT/d(t(ꏪyFx@2XGᩩ)\"G;֎Jn׹|11.ˏc WG< ~9p.OӢ +ր Y:k#G8 P\㑿wm8[5d X ,rɰOR8<*V=dl.>ʃ# Ggn!'L#-.'˔dz{G$bII8k VG52yn5 { p. ^[QCQP HɎ1/WuBJFKJ ;hʔkSIY2;kona#COvga]팖8fg sJ푾EO1%s~ v[s4*IA&3еU7tT~_n6<[dpn{)\~ gkdhtoÚ$+b>FCA o͆+WP]MAuD2h|n`p?p`g9N?o} $xJ58d^cv썽?ZT6_)CЀGzVj}'-uOYp5UL4/vy`+rҷg-9|sCy9=,a2zeQg@=j ԭeƍ^X%f1R㎫[MMx$qp8 e,U6ֲ99|))y̟5sKem4G'c] T*9áqyNB&=a[9FVun݀ AP-JrrqWt}0r0]Ak~iIm5(1;޼niˈ#3 hq\^rMt#RSj+S{#8"Wg>f?Ȝ`+J? S۬T5&7I!<=:7u]%ƅ(h8^_Cr|p.n?-_ϟcw'~=]9y/ r[cs~6SX$Cc#?/L-Q)aʺ!q]swʊAnȜ8 mjζ4Dhqs{pԮ嬸?o %niEۼ)qcߜǧeud5ϡl!~?E ? ɒsC@'tݩ/{iJ %g~=q|Ϛ".IXJ3j#|Oh[}A=QLψw>Edg砾SAn7֫Dt5qA k|#88%m~%?-dq-;/s[?. !Ye2J÷+_3|Wі9;}zyudOfi]EtQ;H_%Ֆ>K}_HɎ)nłxXW4c.2[JTy{_t-s B`xs2Q|3j~;OB^.8uS?=rL$yc&k%|mx>Nlg28BkOc:JVtM*buf_5ѱo,0MëH*Mi`p<78d^Wgя&0TUM#KnAO~En˻'pqs0wp37JU>Zy o+K77ˌeZEkWfi؛q| 5c6OGSpLkч` h ,\|ˠ\!x9wF;pnFxM^,/5ziXݡ,և8N1qEe-NgvԐ{/]yIۼL*ZUuTs n@9 ?C _tETR47W5L%CxkKC\Z #q g1լ6K@ G8vX?ԖT򌮌K(!cyHe2XGɠH(#MPB @M GtcBh@]GrP@B@!B@T$aꂊABhvmKNum =Tnt2nt9qӞ*ۭZN斲 MM;$PMģocnUG7d#trÛ'y~N<pq*tMFI%-`$tx?^KpKtt唲Hǀ6np=V^YXhQ :{ytr9F8p{x8/2eul{b22L摡~.=N BPREs}Uu>J]!qvp1\[*/HӖ&xm;cTv;]X?c7;~/S{;#=.M1/2O8W]l(̭$sO;Yct8g3G[ S)Xֲ@׹5pO' ^QݍGY ĕ#y4OEDy6-; 4vnzoPiZx!ۯ3p\̾ )q߷Ӗs˧)9o)ጇ4 p>&]}ůmR6yCI':^V)P 2}<ec.YtZxC始p' ^Jd[P%y|9srJ6mn:hE$YK8i^E?/2K24uKiU\AwT{iLooO46;TTggb쥛w=5 e0"{W+`zm=zhDn;ehf/8?.{4v&}TR=$㳱QUryu>c-#'p1]O<p|k&>="ZvKA;aIXmy;3W婭KכK!50$<[d wSi/7jzy*"e<r ^Ե߮U7w aYw_r\/ɞSe2k%Mm$wGdc& (@!t@ &#1@!4 HM.#B(@ ! v@! HGh(!4 rB Kp$vQ[oS\#WO-4óZS,2!s9.<*.ph]'$Iݪ27y'\98iy80~p.K1M൳]PPGpzZYٺ)34Xk3ד6m<3yr4qo^;r{SUyGYnn*2|}Y311q~V=J)0܎Z|1A<am\rqQ; ˺%O,M z,f+K #j+s9gԔWsDTWH1d}Zpr0F2 뺿L:_O_m{i.05|푙7 `B/UiH B; 䏋 se'κPO`j#o \~'Dz 0=H+}ʺ9[#CZb2~.?g1v#a_`v^O8p=?f۞Lu8A{;[+hƑj+mCdu[~Je>6!`f{wz/VoO͆SnvSJ!.! wvZEkyt`KmzViLÎm褍͜Ѹ=|斯ʖ_/<[_Chv )!!G4N ᧡UE z|ǽ0v:'_(޼ZJ5SKbw0teSZ£NK_<űr^ <,{?spǷZ>6)\Vx<`i$g <ٮrbet =q^x<#PcDFI1h;2O 5iM&ov`(vq||kJG H}L1v6,;*Zv$nVB-3ocWP N-xN:U[OnLPBp1A#ӽRjW%<0?aYcWَ/OZ {,qh>i %MTƎZjH2[?2dLs6ّb p݌cw!_u& v?v;:2R  {[\c_QEƊUMtԲFL #Я?$[`]m::71slNj`:YgNp=XQ ?,:?<9I%qۅqdZ5eQا8ĹhU^i^P\5tv8ʤ[JkH>q> ST7tYUJ{Z>c>(0G.#UwSP"~ K^LLAKIӮU.|{L.wPq$!]d(t]&2Ǘ.Wvu<mA-:,X`ۅ[0:2#␻텳 "C$PS0摻~kS}FX\ 6(eRU[=DT0)d $Xå?6bZ7jZ;0nOUkj#$ +SSm㍬lpi~,-RZ:aoLQ# km`M\bd`1yOt69CK7tk=^[5in38!c;-iǕ')9܀J8gIU"{#pǢKXac[I |GwU(m5dST1wCI$GI#q˜zwn>k@p:-2  &d< hBhc MB;4 B HAGM?DaPASID,|@QJ9p:oae z@P>d(d%hK.P4@@В=4!!.P>IBEH;%; hI29e/T"AH'TWtW;iE Lӏ*] =GEkˌxۄaj]WNJsyϪ`q}W@z8kWIs4_uùt3cKHapArڞ mi1܃&\NO0262F#쩖8:jm(^;2C,Dc`^lW M-Mm԰VI#0ٙ=!qWx[,}oEdwI!\hK.P4@@В=4!!.P>IBEH;%; hI29e/T"D4wKBIElNUzECO-eT /|=Wϱ߁>J0r65?#p8\zMr۷c^Q`2i yv~+,?YrVfOJ\ܒwsܨ?N8@y._ecK^v49 pJweΎJǙHѹ5e1V[BG=CFy~"9z+Ku+nF?@svwҤ5SFETispjwLˬwh?v:6.qۧt2a;=+%cYbdy vrei,qD8E$N2qŗϿKxY+=$~i+t <2{T.wዡ*Z쵿vVC\Khao }Is~ nz][ g΂B06m)] ld_/c꺋!vI#=bnp>W { \zN<Ԭ6•ԲS˽ϔ;A,p U[ER7y7tyn;uSHDlcc^Jr:YQh2=<`lϒ۬(y1yXyG9kA`t wRTo4&a20-#/ $=R95ǐ0NF`t>x}5TS* ?[AF {cAH'J?{~u/x漣]3tA5Y,9!+N6C7m^zJ9K*jۺ)el2|Gă =_6a I!4,mxKGn^l/|^0==9+]#ZC2dqp@*l..q[?r&1ڒ+$pHvdIp^e; -x;zg_O-k;mjţoP;gEњwU@@vFz5m4uTRS[3s|ns.^PTD!5SMEwcvsrLt؇VMEO&æ{]Q+߼J9c[iddpWx}ӺV Vl,%\W@BZgsL8a/z0[9^^ɲ^Ɨ+w_2|uگFjqwySSF[w:'z{e9>龪rMlҴ:J OC?㚟-jAlw;lf!N-ky#uS1r/2+m9wngq(_Cc՗km ;spp0}:k-vZxu=]43H갋<|Rwr{:\Y|v넠.,Lz J^. Rڗܻ9%c?%-AsY]/yq?g>^j*7\jP9ѻZZwӿUUǰyOǓt\n5T0lSYj 8t͢;VADFY(9l/_~-W]L@3?.kqӲF[l^jl4Α?<|/|lo}ɔUچn}\]%Xs$isGy|'}-]QU9۹.@4KxaAN㑻]tVIJ14m$:&rNV8{sdW;[ߦZkӏ;ULW.qX">[ ĔF8þ-o^ޞ~%l4 l擎qk c|ɸcwce2R2=x\vp3$p ;8(c?zLv*+Dt.Y>#q ac(驩.;גGAӿ h< I1qҺ)!W;G`u"Ro8mW"ܐ Xh=3̵e$Q Ҽ@|ϋ<ZJ)^C6Y:ܤhK)yq.vH>-D?RGY[̃+Ieesd{sp8?5ZS&}AE}:@`KkF1Ќהs{Gñ,wTyG0-*ڳP0K%v2TUQUg_@\wGPO^NT s]$i87;}OU{7@ݻ:`p]A{d[,#<8ꛬ~[I4ɹs6;TUu7a+{dd7khc- 79tɿbB|h= 3jƷ0o>jӴux|Zgl:.r񴖌`xXn-䱬s@ 'f+O!ɀZIDb\)kv2r@sS=Q 4~=J|^^[Q{k_b4ۧx jn:OJJcwsK䱆z,y=@r}[l+3$k@   ~8kZyqE- 8X\i?j2߾:v$Ǔ谁{>&Rug2FK[n@Pt=N}SGl!TB\}В24; hI29e/T"D4wKB #BHE4%h#4$(G?T%}$ ئ ]awG(Gd ;$St6X8/qs@1ӕ*j'UCQ#dKC$xkhg$=sZᖗYW4ctqT0<]to R49i9GQ׺ϟ}obB^@R$>Gt4!g#<%ܦ(AB( yGd# &Te/T4 2e#(G3]e(DR 5Znu۠ -ҖȮ4>chjӓ渙F.ђVZQ3 <剠DQ=K.7u[$e #H3_ڨ.tZxK;]֡%֎W#ۼc`gsgIUTbtn!Ђ>RT:LZDC]F{o,1e>ud?.on/[qMHN$ |ܮ:^-3XecIii}?,4$nf{igYoxMo+u&w%`xG'ockqhMI\"s-ah |`3_xWu7MSD0JIgό.=|cqy=6FZi68̎|/l7r۝{NZ59kB 28U.9+u^:h堩 :'?Eg]1gru쌨 ۡB @&99HY9lm oed ߚeuUSOcO[#Ð>kl}=1WXDml/Ӫ̖v{rkDӟ*';d=]ٴmž*ǒCיh,A:uzc.{z`h;bnr3u|_.?GaӶ tZeY&}>pzԮzx51#X* 79mrQ@sr'ņeepTBiAߪ׆f]t(eӃ4}1 jd0a-ߚlѵk2is6ϟMx퍺S68GtkNGF:%]loݘ;@H=HVI\72OUb!O?YUr$6+p3BHg\y>SK? SL‚6I[h-VN]=mn}*$Ë3?5Fͥd4佣wzlӽ'9l*m41=Y}VS?l-^*&C>&cv;XMQ^rP:Ze\g# ?VT= Mޞ B:Wo'Ö6㔺JxtOTᄆ/=z,E[LSdc+Yn[vH*M\(qv18't'g{Y}KLiy+GMpDȦ<4w+,(C 8ЫH5U~f y#kwe8ؽM lt5bo5 ~݇9>BJG k'.<{Թhvzc[-]6R,%kwn,k`O!v*]}E`N}۷Wqǀ;j눉75-V%|AѶXtN5qr UUڸ1  .N:ihsR8GHn Ao= {-~_Xf3i O/M޻hskI3 0{z<}V*-eTOϺT3,tn-sI c>krp]BgwJz9Ž}%וƒ("Q.ls%hii.h)}ey*%W<.G,n-sCWx-Y}'7Okxx̗ I6Ւ. m:Q8q߻~k˺9cz+ TLsDcs3=].#nI# 01/rŗqNiB(qwΤEm|:tny`m/6+Km9{5sׯoQO1Waݤ-N3ץ&e{uY-`4}RX1^L޶c.nXrF{0'ExGǂyn}vծuu6i#Bsya;Pkv7 e~Ϗ8|LT#(GCFW;Zz/4t9nc ~_U㖦7OcdqYҗ_1)'*8ty\፸jyw-qEy2 `@#<.٥lrN}~V\\lSXc7{āT;O幣-`}?˹[q5-D)_BY$hcYB,2+Ik> '9ܵy/>t.2X{{JZ$Sޣyɻe`Y3vqqwn'rUVI&yp8݀ʣm?s,lnz [|lTyc@C:`d!kvr:rSІ\pc\OAVI'V]],l"ڂKp጑٫(ˁtﭖxo56GZ[4aai}rRc7jIbz5SS#C<SԶk+Ky"X>DkeRj$meAt02I[N0\za8rcvZM)6OÓcJez8s_5Mۡf֏g /+uKhvsQ\1Ly^_t׌rh v@Eo5WJQU)Rr+_kpvη˷O% f"8䪌nqòlm t pp@x;*![&SU0HA!w@g(@e$(v@!$Te/T4 2e#(G3]e(DKB !QꂏTO==Q(Bw@@zY8)b L=@\>GdzXYQSUnbGNp}Xˏ7݄(=:@4Ё#(@P(; 9He>Q@G(=AS)zQB9BhT' g ;99GtEmZc;L7Gm9IÛkdϓ\|sc=dմXw)O>.N0RShggq`KYQC(yiO趛'Zm|QָP:7,w\ yG.5$:)Ŗ\yoiێմ607XzzޞI5zoG6778=oI_B15}iSW&ٽG*ھFTI$aŤ}MҶݖnF}B2ˢےHf3rrs^VU24z|jjUȍO*I Byy}:*H[(|x;t|~riݸ)#+xG$!r1יY)2^Hʹ}`lmw8z}:/ܲw,ucxiJzZJLZ;|9Pߧ4E0sCG챯s'Iw$9.q/$rWå[LL)͌+j&42E(Ǵ~K%GntDݬiYU'\=RhP{6c'vz88oos[#N[Ќw2O#- q8G̎?%rA^GpBh@iw@s u(@r2d(G` \頎O)S(R=UuMQ:ٍv23en_^ϔ%S9IAAݯݪѕB8- \ Oݵ8Hp{:/ ]!98(+mU&4FQG |Xd-.y:~<10~nǞ_k02o|XhL2Z(kdxZ}R ӿ  3eJS"yips1%-V98o\+C5Ljڦ(";lyk2R M۟T71<s2=[*1orKݗ7wg-ZGs=]&ط/l%n0u\ѰZ5 MށatcF^89Wz/kΕvGBW[WUώ6s1z+I6\67%: wǴ4z}j0[9$cF 0$ysn7mw8)R M1}:VҗH<]/ݳC_A˂vq<2rTj\Y iFVvU;Z+>qdCH?%^Q,`?~0r DfLx>.ǞvwdҞ$lS[`J\0Hu$!p-W*znHi[=Aq2gcӖ66j[PA2Jr~>8\-<͎8#i핏-ad^qPgۿcI:;n#k>v4k3 ޣ_{kkq u{bD=gӠLvuxCU5O.)\OcPo.yn  x医aɍL.|.o\+f@%1+2;$,\En4s8po3vOT[3ha&6:RzoV#-Ƹg^* D̆䲝5=K[(e-9p]{k#L]|,^) n1;o*;KJi|$|54|~NznlKF߇+]?x}LLs(C8ێBj[VCZC]%j[=3Ҵ7=64;Cry "- :[5 c4"0-g>86d Ӏ|xEܬ tHָ:OURT觉9+[䯷RKU1q<PxaA1vC.(uM4=#GK>ee7qy"r:|C <~8h F3 f;¯.j3qы9f+h$a1y d_W|}<\-Ov:t加?!Ҙہ' coZ7::--xxٮJ6q cZA?H9i-K]*xd`fq=o,5YM4kz*2O%YRy~2N7d}{!Upl ebn.GadL8,!G!»cre*$ypzij+>pVekyU 5۳kN?8c3ϦZ `˙żYJ=-sXys ZsK+ޞdJrx"}>Zٮh:-tpIW-pwo=>a? nJUoʉhcdMpCv~"99_55-ʞJXKM[W-DPHD׼48:%u[ llǧnXwke/T(G(MHO]2=¨R=TYe?%;}VANX\K4Pm"[,26FBW7.^޴W-njs2I-v8G?`4UR&9sןlktuzlHWr}O7n18m~3L)2JcIգ}eSi;@VjZ@2G+~c$*p.2w贶SsH'=Dh"F5$0etg,OAECMָL5c23`vw 0kU凴=O#; l60HO 1}+3!Voq.'юw?<,EҢ[L#o$-햩*1-qprc/ lr1ϸ_1CifG=Jcd(i*\"Ӟ <`+d @^ b*ZW[&nx7ٞM86d 'h˰ .v3FZcUzYs=>fŐx8%>."S9#qonEZY`18tc GxLzӰ2NYF]Wi(WSJ֌9 KP KeL{GU7F4#8?%N~),e+ ˋA8c9Ǣ塮8M|N?>?ժm%Sa4fݖ>D -,Ӳ x4,`*,}G<G'X᧯#r~.@Ё#(@P(; 9He>Q]  JH#e/T(G(MHO]>PrQ4 !@QTz9B=SAyOLv@zT$ tbKL"#Gt@evB;!vGtvK)B; "PP:@hH }z hBw@w(KMPH;!I4OE/T^wK}=QLB0BOQЭ6IیPFA0U>`lsϏI+~/Y+e{Ya-rÁ^|LCLjE$l p>F>Ki_3/6[~Fx}_v-8ڈ %J qt^`=y'ێp#A"je\Uts 9#8sOYx[% ?l~U4;^WYAKzks=, BM |WC!ٹh9>eX[kS.|!dnK!cK>D_.3G]oC !E':acxɅ%wqps $pu\J]j uIk~|t kG=kM\׺C9f|NypizvvUz%$dzmL!;#]>G`P!O EQ^S/n81GQͯ>Rǃdd;'ǡ*+=M}z hBw@w(KMPH;!I4OE/T^ ({:=[_J*UQ51hdm^洍= Y#K IQl:-=>Ǫ%&03o8&~ܿK&,iʛVj-(K-C0\ rE=^qaq'դA 1ѱ  ®3)dq쿙se92_ŌϦp#sTڲIÓ0x$$͓f#KP!5NzlncjԞ5{ߋ$I]%8~a<,6Pc6m- q$y}6 ր78,k#~5^rL{$8q?\՞#yS7yˣb I3N~r?9-4RUޤet܁ǃ$+Y!Ij9hIU{Q&urvu#^l%| vXʿ*`8,%ZͨO%k;Ls[5[W*|fG:N:[dv u#ccFsvmY飄=]Jv53vG'Pp#ZpOPq&39ӆsEy!WSMKjz%mk݇R|)CWQ&O^s}+߶lN?.V.6zY* _Uk*MKj(6>輳\W镼'u]Y 7ω/oQe|O)'旻Ӵh;-E%3;2 =mm.k06V{@ʛ<ȉ/xJ)X)WLvZrN=˪q<gMIΨNpG^&h~' b`73>`.K״&c+]HӞ5PCKNpxkQ j,'J[il,?I>溋mTT,qvAsMHwWC^":o&'s1*.y9lǪl̓ˊ0OCM8\m(jx^XA r>kAC ήe9Ori_[c47Rms]I=O  |wц103Kky*"Mz:" v)^hk[-s 9 H?.JW@]c?THi?q xwܷxB>q5}=ZÄCBPr4vB; By#}PK?S)zPB?4A.HE2"KB(@B (AG(zDSB=Q0"GT X; 0餀B !@1;#0@a !ABA@@a4Bc@c##(@a!c#Gt,uFe( #M)cB9F4 M!ꂏT&$r:#T fHp\C:3fU]!{Oͮ?UA\ÓQӣqe҅BΦ.ò}2aFǨnPnI_Y&ƎGEeS1 AO|Ԁ-??'LkzwВ]^VS^851W?|ixpi@_A 1 EM#9 >ީl xe3槎M}1/ H'j~0iKDK pyBI1!=/epo_NfY]m~KEVmjpuK6~2摀G^Q|2S>V$'pA]yeg,n7UCRcX]&A}O0H:Vtw<֜JyOꪵsCuzG!th o^U0췿L);0H- (D!Ёa4 @@@a4 Q&8G @X4w@aB;=JT3EϓFPUi1oψDy ۧmLՒTGI\w zֆ{m}LDrg`Wty<т_Wq>7,$+nA'7k7$!x|tM aȶ%F0K\, ;y.vr\Gl,% >C]&rvj׵\ ^燴\ue=^ LRU&Rq S ~M:ZFא\[ g%p9oZ5R9ә^y|Gw[qܻnC)aP>';Y-|aYFicZpH=V*̛=*&rߟiS~jv|Mpݲ4m> #kߙvqc(c^CK]m#s.]-pp'#SXƖv=C?T 0$q]ðvTٗ~u+Oj18>-bSKSt0C3o&8u=}ES9#hW-TԱnLpxzW67ܷi++Bֱm$I 8fNL+oc#|3,sXhIϝ߇k Ym#*621A}|0Nw):g{39${6i*_񰍯~Xy)#A?=1%DZګ.Ol6'mϟM#H--壎6}Ue7j_P9ԖAKJax'<<d:0ܻw$KFVS%8KXxكlHڃdW3#k 8$^)eǖr$~';c0WϞ||5y-ov_gWVu\[oQkHi7QǷmEcɎ&8őjV:nӱ:="骁.l8a>nGb u |ǭeeںꪶO; ZuR:iRIpi{HmUTi dcs˷;<x^̳f9gu&.Pba:)!np7rC.|Ƀ`f1i'iVpǗ ɇrX\2ٹ-p-#j>*jmBKU@wA .-h$sy_I!5фq2T&ch!BXR);ABVp8 FQAUfB~,;i n:mD非up\Ng{*A[xˎ< ĎN`;mnϙpnر+:+-M4xg8 cX0p>w~i;,q<quUjTĺVL44y1A~sre\a/,?!$mw={pholn vyUrO\T}Lo;zvX+,m%[0<ʯw]/5ojf|i_|یzT4r)!fpY۠@٩[YnC%Dee;H+ QWfyGO$WqzO^OWot NOeǟ>EǬ˷:Z[ɔr#Rw%_ ])'?ˎ]&`GQXbj c廇=y>Vi ew-^y$g8^)zvˎ}0Z)0krG~VTrMn9a3c$v>APDsCv6#>VĊguCLM6H9\-_wrf~>JK !#D$EHvJhm71d8X pPi-3#Fx<1.3~*)tDW['@!l4|ń?KdUKM,t Xp?U yT,a}@kr{8X[ 8?) \Yܛs {԰rH rQwBa  0pv@7q `9;c0GS(A@aBh9K 10*a K>ea  uF A=PP{Y৔(GI3@g#> yO]O2 T}P(?4 @)> R@Џ> ((G~@Ѐ@H yFxGB>2ꏪ)ge/T(> zHE<T" 򌣿T}PB>EB>eGTB=SGTQꌣTA 2.=;,: p]wۜO WF"lI1Zc8pojuIg(ܵvj_9&oikahN_<\*9ĞoJ*clqp|9^??rF2s˖ o8Xo2s[3и珐 e88++O OE]4DںpȌ;;TnTݩ:46iz?|WoZs OV$8f ۜw>M(b5˚!h$`NVFf8),B߈ڹlsq=`R%3o fgUwۑbvKyO[Ikk5}9Ar&|-qG8煨$9+5i:nx"W@ r{}еU̞*. ;?\juI}41qpp$`4N:r./Oqc|a؇ F{ Xa.1L<|ׇ?,/q_?wF\h83w__`Z: jGIHښZ0>X/A[{(x&Eg'cVWz51$!_L,ϗoyy U5 wG-=b"vP6+\T_W {`sI*tT2#/^9[Ww̠(#L/,Oꗢ}Q@eGTyB;BeR?A3>GeT}QK=S)zPFQGe#?G)g 3>QǪYuI~4Kum%-epF+bkY3B!\qу*n^ s|\3XIX^keCds~YsyqzM+v8c\j0 ۑ1xWsuE6s{{y7DDA=Osk ̮;ge허w}=?me ~eeY;dvIZ 4E+^7rsfxlw$q?N]& þ"w4tAlBw@YU`HVp\s1 âǏHfia$yoÚYzK4Nc[7$::2ۀӅUjNȚ4E-Ǔ\ꢪk~9BR\@q^;ծuK `p=G䬿UFn7dp}Tg.YSr tne%G77>2z~Bm0mcN2JI)g9Dz2'mƖ:9"{s,Z˥hl7Uu$2NrE4CKZv[RȮSWo5n㓀3׏* Mv!eLmčzEUCiʘH7佧qm=VT-98Xw=6Umk^܁UOTËv\)<8~@ik*շi+bq O'2Z=|ª]''赇ߢ&9y9z!^2=9đVKU w.3*fIF_;|.hS+>7@ X9'0O-{_T+᎘dG7c'UuST.h`r)]s <7jqޢԏ۴m+/lm1t3NBIԂ{ݠhㅋ/y1Lӱ'%CıL_PsvjƴnH럚q\#MKA.wGYdǴ&^~+blmnE>gc*) *7nQ29n #Z9~voX> r sRXƍ;i ג'_ZܴsEXoûGmg1p9鷧J x|G\0^nVύCgumoCnS4UֆjZ;ߺDev|ct{MlK'lk~qau">pIYg׮|Y?cȸߪ.5 )>AsG|v]#ïѵ&jWg $| hm_u,1n!|Gzcewula:Ӗ'AOo}6B"q 8?5K6w__:Po1-G8ZƠ*w]][uL>Kh?r!x&Y甗pmMh>0j[WheDǞ_0@B]M.7C<-W%Q{  쿦N+Îl'%Ȃhn(>zRL2ꏪ GTTSB!Sz]w: 3*j Vr,l=5%E%:70Z<BTWtdO4,q;֌3CGVoȪv s?FJPV29. lpŤ.=9lx_r㗗xvxKVVB];r9壎丝8pA]X:ֺpl00:%i9>=syN,e˟.y\DH'_u=SGTQꌣTA7n㽆Ac#E,jӐ01P߀HSvRS}M$ dk k:Noף3o(%[dmMCAe<z;8.㞋/5-uƮZN],>{߸J,9z/p|^>SnYY RZrH1D' ǢQh+u*I=\⚊3֎c<ʪhZk[3%;Ü#w*ҴGQU$o9'\VlPzxY8}O ײLz_iˌvKuӊ,8,n ϧ+{otKJjx K#!y;fm[,ڦghe,hG"28|p+w%6GGe[Pͣ2r}ֵP&sdӴ䁜`_AQ:8$ӵo g,MM4$hxb{j !? 2ꏪ(G~@yH: qA3>2=S)gTyFR)QR=Sz#B%?I?D* GuA8ǺB>!#?(FQD(@SM. @vB; ;#Nq.Gd "@(4Ё!4;=@vB; $#4LEBhtSB ;Gt$! tM(AGMI4TGh;PT\;s\Zݧe}򒩮3X]g3pA ا.N,9&.NiZn,7c3.ّa tW KRAig`3הmp,8-]2MVե.!M{"~-[Yӽ 6~3\ O3$coiw\.l{XCv\s|8^{;lYec#@/#甬k _FneoZ%lQ滌Ŭrk|{'Ӧ |4Wݦۆ[Xk]@;Zbo,C VINds<H##+|3lnqZ}=8a~I&3oi"1TO >G c$r>Olf?np=W/v5t4my~H᭏ [AK3W缜pYzYW-;̑||9ŽAjUQI1y%N<[y|.cݮmcGl-d;Hcpt-i$>VE ǃPM-EWDs+0nXk)Pd>a#>ٓ:[c\2SEGtr5 oUd*K\3vwec^7}1zJ Zv\(rizq-Ypu:+⤞ZYH.. 4"Iݧv׳}_|g%垫J=ItanKq+[i}$`>O$}:>gEzardҖ`pwE9I;;=@vB; $#4LEBhtSB ;Gt%7sH*HE^iːshp]Os T`<{)C,Ӷh\c-{zqXT;{dx`-g|qqEQ50kjj2:ƈk\vxg*  _>;g[%QKqSo99.. E9Ek| 'e$t3ܶ:h78svStf%îUI^"i$ec0semE]>ZOWײF^h?/.;^{tgIIg;+%Ci߰N3ZidQ8d9bKӷeӚ-KW # IǞosqc=9e˟ӬQ]!|`v %maOd=t&y<, }=)4_oW%o4R*MD,`SEI<ݖinG A5RF>q{d( X<=$6w]?X3kǛ8~3w>Y{:?0;y?%ê"k[e~.A,9&=mGRg2?ݜs6RI0w۱be mN'#Qt\/2-9#RׇysqeaH`nvV&gҽ,䝽y[3CNX!f[*ikvW2hw(ϕl{C1;wW?2 ? 5ڪwM;Dmp8¹!@Z&_{l+ˉM'E^ip8-iq,$r3,A+7U%mMO2Mciׅ$99C&E! v2~^ d21\L^ sNI[}gdsZrqGbT ]hnW4ѺFmC:Pv qjo]7t2/,JC ? )+j+*g/qvNs[˩_5\pC~3dMy!soO69eeP'湲C>o6Oyݼq߀;=GE;CGwTnw+jDG;Z02??}:cqm<IU$[^N3,UW:浠O 9f6:i|ORTy{~^}y]I}J[[:呓$zGw/ teRTȤΏvwLFE-uu7*ɟQWS#Y\丟RJ/NoR>lB@TG2e! ;]M(;d8cQiR@!X kfv^3"O)zT#4 k\co^:IItykz̞;ߥ5y_OSpFɴg8O?9 Gt  <&: @ FyMPiDSHO@zMSBrS )$K%`BOF=|B}#E d5Cr1opY)J9O)p?$B@O( 9G(BrǰE.Q9LD.P2>Hd'`L@FJx#yM& %4c Y(=SǰGssЈ\%<|`rrK%>Q`B94~Hr>Q߲x \я`\e4"A胞S )$)dD}WSU1_!?Vf,;v]>|*3l;6o(PҊ8ӎ}I*AE,~go/>g~VKpw?v1tdlot h==۶:lZ:c$9s}U*j%|cݷ!ub'i2=Kތ1㍲M]0k{2˯JQNŘr|3n1?)p&0Ʒh~e[qGy!' {w3;<9[5$w|Uc.1)tצk[etHiۀt \Z}/U8۷LG;oc9(x?arW y,Qχqӄ߸4e@zg4n9{{|ũ2όgRg ^KFR/$*T`[`sc=%i 54U_ Ӟ#Y܏ss.k;\e{srJYdm8#v0#I9#r̻ &?$B)>HJ9xKP d1Gяh2SF=<{~H8G8M{ &RGxDD9#}N ȫbMvXDaqÚk(:5%SDM۝4{ʍĊ*Y#e*I;Ԯu'8O 7e6Z/.b'̡!<"G0NBmk^6}*%,$zg'Z2p\8e!$3sM IetM;{cZׂs};b$488pG9X ɏHmUC]-둒9=FXMMs7qéT/a!݁*-qNF}p?cwQ\Z%~#PM$_rsv #/j#bkh|wznǀ|~ ߫%z^ 3ț5v=<%i|W:vAǜ,UD><HZ68㺲l8%Sꍮ l *Gh00-tOs$#_:szz6&Et"0ֻd̒L7\&d>Vb'[i1>pm˶oK-.㪅ֻmϺ&\C!k%ZeLqg%+K ]WV0 p ^tΩ3K@$*xtQ|Y],brkm:e,cA |*z܂Ի= a#k02y+s q /R? >'$l\bpcNY *yg{?jTv^Z0x/' 5CU%uSqwU>eHǰASF>IC(MJT \4"J~Jx*r}/C=NY){*{#h!4}#d@)@hD#wirx#H쳖3(qPx>+}ԋqC'9iyg?Ųo( jtPm}4-'סj KrUZAaK%_L։O(C}>.x+5Xٿ=$(y~^жXiC&ɐ8mt37ӐOB>ibs꼿=r&=]5TzHcHi!~}:y;x*5Nv1x*.#dqFV7eA;DuRO1G\U(6bьCe|:O# \z꯴5w6lIYP!;y%>OͶqW*HNؚl. wJp[1UɱשUMY(4gͧJK[P|`d"G[ɗq>ފy ג H G(2)>HJ9xKP d1Gяh@mU$cA.QB!rH=3O$c \4"J=ǰB!#&ASײzw>H<%4aBߔhcTv(@}QM$ ۪>۪]G=+WSKW,PGWO!G&>(@C2&@}R4 > ꏪi ;GЀ?4}PP>i >_T}PG ( 4w@}QB_T}PT&>(@}QBh"zO@<| AATB{ ?; >瑱2'=A+~j (j r䌎çu?'~路JCKK ^Kg*+>]4c /? =ݩY,͉ܵ z?H*o1络':_|TXm@'L~V>,p|@p7tEnX1Ův@Xjέ;#fiV>q vg<' <8`P{ksv /a7t uSci uDq Pv /1Hhn0~lp= 10d<\6}ōГʯ;b>fI*9ֿv 4w»cɋ@<w\Km⮆,VFܷîV(bgptf9<q飖1j6eIn,T$PdQcp䉲i==0av0t(fcZ^ƌ_MsS܂ZyԽ-yI Z$Ѽ;n?>#02 +d528 2ǶӨRh9o7s>^sӑ=;54r1{\s/AxsWEc,揗ARC&FUy0 N0Ɉ>ǭT)CP>G )z>MSGtT!ߪ>G@}QBhꂏTT&'T(4 Bߔ 1(|B0vN0: O *"BPaĹlvZpi?en |o9隟3'գð ݑiy9]Y.ssM?,g6Z:')>WM+CrH=JY^ZK{緲~`r  9x<V.#O*{瑞ch>΅Ld@,iW8d%丌(b@L+Ь׸H2r;nU)J] Ƚqp@ni;Odb2H7s 7jnue\3+}rV g;i[M5E3f =d,eYuv_92^8WV5MK)-t=rGQ+ Cq.~qThiA0ǑǯQRޣ׏$n k#jZAߎ~w߿lT2C1xqčt+ṚќrFYNgu'tM.{~_j6-ųD09=*G9]q2 @q6(6 Ai =[5T5-]+{pu]?R'{6Nxpdr G6<=I2tm sw(O%T~$.S=F _T}PG ( 4w@}QB=TL`xŸE %'T}PG揪 =PT}PST/@E2'x׸=k> =3WMB t2z۳*R\@|לay9X|wNnQUGcWU:Qod25%q} t5cM%1';޼_)17g=90\m)$˔IYI P;*Ϣ hlmxG;ScsI=uTL̸)v32[zrK=#'V|sPp L"%?XB=Jg a-v-㺉$[41vbrUyLF"(qgh/.;>;zah|;ܪ0֗|kp;>~pdLÍ7i{*l. sI'² pLt9_Ӆ[Za {m+Hqvq9zpy  ?l}Bx7o((_{I#VCMU_#|c9h=OW19y'nP9[5UY!t189+W'ɞl4U~O[ &$DI#֎Ji GYhneΒQ~,Pq%YUžKlt'w=Ki`c)\$ϯT;#|,h~I^84l[Hs}z9re:lp01Uc# -v>,~M}yL}QB zLp>BT}Q4 ꏪ#Gq=7i :8p>꤀d@.$Ǻ GT(4 @@!@XBAF8B;#;! B0(@@wG0  B10(A@vFFB0 ^2BawKxF9@#@wB10B0  =PB1a꟢Dr8ݱvpAú,ήI-I67q.LUϢ̷5.9&Ip;a@ NPP{Aا,'Q6Ax2ILFo~pmʐ&G1 {`_ U5[a@JA zw]2S 1ۇ\_!Wjg`A7M)`g'lm~e$Okˮ%MTI#wnp}GlWKU;/;8 |֪I f W1? hy<{oV5ZH%s7?릂a)~\ߛzTB)\cc$|$4|_3wWNM-PטU$QxEEx;q31[i;[I+C#Gp 8oNK(}lLJdn8*^+m2(EoxNe.~X0xoT75P ^\n^l2|x͵_nYA\\x]k]*% ;8l)}5C#̝c yAL/Ïy^NiZ0H&RHc\x;}#[ &fgFT#"hlso91)駷n0dq{ q+^1,,rj\9 VM=̈6p#*P۝_3$m$y04H$l=Do209W.2ch7AndLq{#VE-Mf2D:C=RNձQ5=,1yzMY_|/sll;u/_n\'Y^~uu@0RGRQzPQ^<1a>FY\![d #1F 2:B(B0"wO(a((FB0GF:!=SHSTa t ]`ݧ#% x=S?nі?跻E巋[0PbMKG;|֐*]$J1쯴GnѲwy1L\]{x<Tؽ5.1=*U1=5 f7Re@f9q8e1HZG;˷v/p};s၏F;~s}jVEX\Fvd((,- uVF0,nAOQdNkD]{U K>[חj*C9;Gߧ ?TCW.w\7'_Gpcɟӧ;.3GM/G5< Aao11l4qՎtywc c#Ze׿px$?/e͌uZ! :+(IQ,'E5S CQ0籿Ehlszk|Yso]O4*S# ,sHNZ=8IF݈20A89_C/ZUsEҷdn=GqլFd% =3Tc88+PTFZ@/8+8,5Uyr0v . #H;]3Nr>YI;,y/.y~7䜓 23%AH 2>ge@e#3FQzJ23HyHt?$gg(3~HF}Yegg 3KFxWd瞘PcK/Hmx mgwN s}HQFn,d 8q'#'ʻ_^r>.5eWI1SG ]s·($GQ}qk0$+ꘘv?%lh䕉陹--jys5#=IutT'i-{_)i` 7yP48w#]U;qv%#6\(X$̍?m<|:dp:#s$z ko$~J!еcMCU==#s'*_G %jdxiA9!RY\9ʀfIZ:V 9ʛk"slq=N\x-$g;|'_SpUcZb= )䮙Rav>Hڗ>BC;ފ_/~008e*(Z)]l1C$u,MFgs{21o8 Zcj.h/aa@wLP8Z&79wJz3浸}0OifIXy RYxㆌ=GuNx%՝0|uI "Ă'ep ueKjzG,`CqܷzRA9ip{r=sZ~jG6Vd3wn{}S{?[+(+uHIi}WxO(IBzO)g)Qp,}'(3~H3FQt 3FQt FPQtQgTS"yO> F~HF}(@@tה ?$K<SϺ=S[)08bE;Ï6:괾MDmv@B*nsX u@ttRv2ETk`t oiE.lr\WJ>`o]gr;ל8֙ck\ί~>#S#6By`^ie:[N=ccnT2Ft9"uV:c<@|o_EuXמ#- W11n3'%4di1'Y0z.ZWwgkKWQl98p ߪ}G1[)s-[X׹qeץF3A!)?9oL, mlAl-p>ʛ{baNq?eK=+э$gg ujSb yYk]|uj0COc&r3J]&c- q[{Ie;Hk[Ms6NJ]AN sþ?pMyjvTbXsG\Lu>%c`NT=k1ހg5TI{d k(7D_bpF%c)]QqXƐY:zl1ktB!B-W )].̐ӻXmAgPWUnc67;1tǟøkfO3HOAgsEwr.fT?QR:cO{~+pLcÖ^Wc?$eJ23HyHt?$gg,.( ORT5vmRE|?%F3𞪶}֥Y^,22~IgD~Iy@g3G3@(ϺeY'Y}"Sg89\ϸH,ڶ̂X@P<:!r:4n,SI h=|O|bo1>8;-qboOVz=G i\2^WXycˎm֡4ls\w~/pvwrsQRHlOߎq˹~cvDžA:g\88*9]!}Dp- VO3axreno_m-gPkkM9屏}ED܌:W h- ӱ\9>SWUtL{ˀy'QZAv}pnrpOŕ8M@u^i<&=-=VF{KU6HLaд6I$GI~ztd4F #7>A#AGOXKIwt.~LiVָRF1!yqoU|y[ɎZK{n6M=!n7yd],'- Kpw@Vm4Gy_;~Ywl[+g {(5`_ 1%3K> 2>@g䌣>@> (Ϻ>qS0}QXBd!ԧQ "?B!!2LфaTxHԧL#AXB1LW~2}>ArjnKAf3F d[Wt7z{OXgsNih91+ʒsx`'[R¯H"a5%9P}WƓ+ˇ;q𷢻p_Y1l t/krpV館eԯ.dN@'\ jaXN#vV?9ҳl^c0`Lq=UXc%܎3Ϫ [^ddr\'J\缃p1oxkK_ʌM9qpϮ>e)hi.(z`xUp<`p9PsÇ\gwbɒ.o;2ƞZ6p1:@oc@zv#hi8v<-o] 1qsaWd20BghPL )x{<{Q3꣡cnG*U.-pA#$u&9r2P1>t a]6\Olgoppx.` PLdmh8{,_/lVBiC*)qhǠ]ǴcS(XƜew2*i'3Ñ2A'e>Kfc\C8}>9z{`YK45nxWI#yVms0{Ҵ?Vsiq)jgnJL׾c!g|y y4~#䲎XK@0<_+\Fb0_.]9W4Βk0r;U- 8#%^PWM<~^L{^zTK[+-O;=q^Pu沝vGWtHfk[1ۓKynˍ8CGN?-co =JxFBiceKR 'R(!G*Ҳ[l aۇ!ztqG#ck#ߛ5Wpfp̞=0[qΈ?+۠6Z̵qL8h=Ou.O گ4jʙc`?pszr]Ag}e9Y/ݞŹ%>Rdf1U66X߱qۆS)m?XoJ0sGn%FT88cO8Bx h$F/:'}Rppsv@F0 f=Ǫ1_xE,&h\z _Taw>ܴ]ցtѴ8r;qmSlmK^?ߗ=v"xqoJѹދ3 Ǣܝ8}S8OVRS #{%iL.zu\&a c8ZMMVE\A<߇s'YY+s/[J%j#2=4ȯu&kI##]+眑?aJJ]$DsG?2@]oxoW1Lqٷh=N nvA.$=I9}¯DZB'eDv2ky'T9ΑO熺RQ \o88$q73+S)D']ӧ)[nׇO- /ӼA&1VTak!tm$=Vçܕr^\ IPOZw;ןɏcl1v㹭%VA[G8=;f2) d\3Ԟc<uL&'cnpx%`nGo;q 魏Sws߁ܪ`T 7\q@_[3Hu cZ'!EvZ1 j 5߅gs2k n]4ʼ54k=7`=+~'Dɑ _Xu5j׾>p ]yO).ݿK=T߸$vX:CVR=ihVp6Ja G>OPkCPqxp |+XgwUYX\ ){Aż|V7 ] k "6 V?p=Z[222;//,q|d$G3̇{Ie=™pN?O LÝyeWV|ZM8Fx3Ro8)=Pp@L#OHLc)}S?4aD"9B< HԠ@BP{;GTv)Gte=욈&uCSH@((@(@@@wGp@(BOry8 Q$ʚ;#B=v@& 2e&t.QiwBB(H!z&O#?DizTbb@SjX9#SH>PzƊn:Zè%sȟOTi6rGGz+d~d9Ls[GZUTi*了?̦xN1pVY41=Ne|/nMoLddxv=]*q?#=rRK[=0,sШ;Z\.KγWJNytcxO {ٴC f!־퉧.s:ʱ>`U4B`2Þ=IH^qFU酕l.3"'VLxOMǢykd%4kzJ(as/]hnƳq'{T -p'ڟ! {)r2ǜd* 呭cvw,|8Nosk{oK0HNJ7~# !0uqUrq`9~E51ګH`H掍G^<9j)ul{Gns& OiԬ珅ӴKZb-;@u<eSmxpif4#xM=Zޮ->6s{f8&M~ᓌ~g**!s:[985-mTf?4Goxݞ~ޞO|˙L{pc<׃1ka'{$V{s5uy솦>mAwо9o_yWsP؟o9#c>\mjz{X!TkZH>#Qih9.$8ܬOص֚*a=t屆ة{?̮#4UO,+}jk(0w'ܕwWQ^_I 2e&t.QiwBB(H!z&O#?DizTbb@w@Wt]D0{r9뜮QxSw4zZq<sǯyg|~0CHCc#s3JID8H21UX`Ii^ ?EY7y~ =F7UɎa6tREyn q§5C%K@;-c{Mx$!cFvqVy $NBf{7bp"ĀniUXF;w%rfݑaD[sώz_KT cO$`0{i#ֆ[':wI^!Bj|#YδO;e{ݱAT1Xǵ01;FKnpq*TOwzاj.-Uؘkz#i|=0rּ=J8wl czsdp W;[zd(7ޡI#,>N;d257.w p&S뚚x[Q#NsӕYͳ'L;G@U@߻nsyB s#.EV)Y+ג6\s W!n?sO!X^S'.d8wE__"sOwB:i&4>F8)堇H)ǿQH@zS<rj2s}!P>,ַ۪A5J'UNVwO]2(DKB@A4G~ =SK@@z@Dt#PK?(GdwED8r3Ko>@ ]e\3q{+t,\16[ ef,RݯFeÎ炮ulѶQӈBX"nǴٸn7]ATk㒯tO-Xd1c֨F}NR\m2Q?# ^~_w<1~ȕF22D >eXwds8ӎʔac÷1z+'LK;9 8z<8`8!HrZ'UiiǗlƷ44|UjJvUN9ȉk38uɻf{]qJ%03Z=< .9'(+3Mc5Wtܩ:Rᎃ&y$67n $7USl c,'a%өBΉϿEmk,nŨoVraO# nM풘r@82&Re4u-xhnNNV2AG"2V/b(\lU{d$nCcǪZ+elmC8YH*YQ a>%a{!1Hc2ߪq^Iu?77}f' qM9hKL/trA ]TTy%cnk2WVdC#`sFͥѺ@R;qȥ,7eXD=]3泄7 3vQ @;eQꂏTPHD#?D?DXtPt'O#I@#FUVEeD`fw,ٵAi G茠 4g :'P_}e FP$vL@Y@D3@!KO((3FP$FP/P #yFx@Dє _3@SK=S(2Gu췾l{.TPֹHe=quzx^ZJIeOu]̖)]t0)k\r~H]Uyis誶|vv=q,su^9ȶnI?8Oq8f߸1mkc,"Y Q] lp.vrt$ề=p3/r\c)+S T{o+@ǖ#j289OWY#3vǶx\.3oJCsǧ?%NMY+>jksc?1zJlQ; 1ӧk.v`g>, 'hV\(9q'\zKx~t$c?%po-3=͉;},lkZ#9oFMs1*Ρii7419Fw'gcs09N*X(߉ʥ&>C0^9ϪYyݦ5\%i8weS?-n>&e-#8i5MsL-3e n`%cl`8O%G*NZַhZ"R[ӯZ޽8Y㖗iEL%i{NsPm7 ) ?0X%<Opx(Jo-8u生啹nBָr @O.:p k[w;>S#>15qo-=~/Iє/'#=Q 42#(!=S)gS}P_32}(&P I@?e@T'zFz(@FP"2POT 3LQ!GtB[_z'[y36>qF6oJ:-L\r@q5m{AKD3縎|g{ zQ$ɞ@]id3ӯVT펞'we'Wy@_f1*x1  @<Ō ^|9=JP9%L}WLz'څdYß\rK,@~1WöHc'sӶ,N9qru%G'9WD5C{ZKcVj[);p \S[M{&& 5iG$s6쐖8\RS )$s\o\4W5>rs&?)ù+5⒛ cGsda3LvF5eyG\NvU+[Lg{sjnB.p^ђO ׸Z֨Wmp@׾A9#E{Ia|/֋ޙ7ɿyn3U d,HUIrHh8]NӼ8㔾MBO?G.X:zZjIn rF~U_5Ašm> mn;%ܤy 뽺 >ɽ.qˏtBAM%ʪ:x_#OAܟeRo_5$$g1m:;NI[X.oss߸W% U5%d haqhzd|ʟ6_8r4}T/4eFP%M,pvp9FR}% OB2 Bd(%%Ild7;h$ /vJW"IrZ$|@8 %+Zc7VId+M EE$nYӞV1DKz%Գfї7C2.5| t9]M# gNrNuOewduzpfAўx[i7#9+|1u>V.]=G|hXKvZPXʇ'srA]fעȦ|nKp9GX^?c1[b cVc!?j:Z ,|`'qw=Lj{qa18y kV 8?3 cwcյٔϯG%<ðy!`CG\qKZ0x] l27{KCs'a͎2ǀ,8 jA%%l-"7cVy_̱5.&FVB32h 8t!Uw9ŠmhϺ2Oʡk_pH PH|ST#A*({pAR =P$99Lt@N{ O @pvM q#8Gd 8Bi 8G .0q. "6F2qAZ 1&G 9}TGu8Gr8A &aMz#4LǢD.)K)wD#DwM! tM =P! S#?DDzppT KLt@q,WkP[B;U K5WzG+' )u_(}]#>^x/k8:uKưth^V]+,ձPUEU'BǷ}COӆ6H$k}_떐}W\])٪tÜA\sYjmҽ4S]f"!z74ynu>Ipd`j^j]Lbl8$B|\oE.s~9VL/9ZNr"t_ 0%4!o~ZR`'ei›u#ţy$U%{l n w3]!iHZ$? /ikpy8!\M%;gOeA `vk[z\`{CoS۟[ެXT%nns/GIH60d&I 纄$ko6,1H\ܴpı9o܌{#]d @rj啷ɲr Zq0\af5Q5t, ssVt~aӯ&!p=izQG  qB ;Ǣ;pQ:&GPG]@q8Gh8G(@ODM#S6ij6^N=\v%PJk* nw3OWc}4^jۋ)ۄ}c^`kwl<{S6JݼFs9_ܿ[#wԵ G\U4\-#][|ZRZw5\C@}yP6gMu `x^?)w}h!xv[ټ nsw|ic'kNwШԂ"nZZ ?1Vd߄:Zy49-)f60[2n`lyF !Q:Zick_ 8{ZIm Zښڸedm4kO#9 _rd.piˏ_m/n:e[hK˜el$ok!{Q+Zf5;=:~jT@N#hy$UAF~}<{ 1l7jǓ8UzZKSL;kqӂF**v8 .{'skkH`*x-qY2F&]~aS.5t8V4;a~ Ϣ}m \nGL?1EA8kLzTFM %ݿ5ksk0$n 7}9vw`7+ANڧxhfcpz}ͪc70qyK7:IU7b&8-<|c{aq- u׺ HqS,NH̎? #{zhʊW p<Ò-0=y@;/ز\&(=PPES>[&1sx͡]}GMFK}|!@GB(D#pTBh"qHO(\ # >Sz!48GA)Gtdp@pЁpz!p &yd3Kt iw@Jl9[ ICE;'Mwǯ+Ǘ$[c6K;?NOoVgDE?Z;\쟞1.U}ѽ5?3ӯA5ŹӢ_/;ӯ>TAw63 niބvZKic#'cq8O[ M|[]+T2Úx+.8e|8e=OU (cw"c\~33ୌ6^=Xˆd9c11Ι,sz 2O>AsHpA•%ȶFy1>?5{g}r(ԗ]%vdTZpʊg'ӂ9^/p]yqmhN \dy*:TmS%1\ZÞGnx 5BLt8v9 %oz"*PP8N)Z`{AFF擞Glpsq ֦ZpI T0$?5Z& )ʩcanǷ%eN苞wtsK>dGV{x9q_pOB M(#24[,Ɩ>)ٸ\:Ej';D#?>Ju;C[PÀZ}.k}-Nry%l'2I#'}UWFZܸ6F=ֽ{p $tDRwn2'VԴF#yAf#wT59?U-McjY eOS7OW?E: i63׌.9{z-2 ppp$¹|瑁+I#rA8\o)ޔZƽq<= S[' $CU|ekO>q7gUZZhhgT%~9.텽LnkyHph ;#UF3$`~Kc|CF;`-m-p.ޘtS\Zvz+i-I6S ΊFQSI.i!dGn>|ܯSC5H21OXWd#DO SK2GG(9A|!|#D|8B9IB\ (#G(9D#G9E?Tq藪|8@G($rP']9E>=-uGR0]$CakR gޠkRXփQhE=2KOeo.j\Nɣp}KH_W_s91Q6#h.wʧ͊i\*>0<;88wT C00߁z$]+l6-+_I}a@=y|woylj!7Jk+yn 1۰ e[dlN%oO.c&^Y)gM$s$+7[_z--un{0n9`=q]U-7RC0vC Q4f]~K+0Z]ў/j`jC+ke%Q$`Ŏ3weӎE3 ntmw@UԶqutuKsVvr4#}MO<|nkH]ĘڭL^E;f#;A\,4˥7o;}f*/q\vT_Gi~,e9wf)idk'1[6lKR bprBuxhxvǯm8i IzWsOXZpB,iqHU5o{+9ëdxЗgנIX ai<}wX<*V wZ{r^>^Yyera.Q rP!$¨A%I/T(G TC.2PzG)".r(RE>) 8HG(Q)QOz%( 8G  bQOD#wD#rOQ((dp.Q#8ISmG?,\jKU_0PGU&1858 $,ܚd6G$fXPƽ?w LbGQg,p$3sB_(FP Gh.k]H$>c|Lp-UMcw9x+B<$<aegZFZ y \>oO\|۾.npL1Mr(/*)O6AUM8<08d1HA>4.ї12Ov>^<.~n;/818 28=Vݩ<6O,ن^ENGZ[\دqs79;c84ݜ0^&hTQcKPz|!Al0qI =P0A DH\*@R;{ݭ]O?K74Rx\nk F KH.C#GI uLGeUţ]kYk3Y+ǃd-bFA8Gt 8GB(8G(E!D.2  8GB#p>=SGB;ǢI@q>>) fVK僜{.uP]lR؜_  ݳ<c$8 xAA+%i,l݇9pcmKm[Ȟ!h7=_?pg:Xozҕ'˨olԜ4T^h;׹qQҮ>hKF8۞x ,Z^ְݼ~L~~TUp"lk`pָXynQ+!l9͍3VB6Sm$L{/~g} rL>#wvYFFr1학v [kGկyl.{"OX [#8 7RLGf-!;{觀J&2nl fc/GKI<̐/p8;@y9.os葥|B{;߷ <1ڜ؉ܸ 18>X;K3'O%ęzVBJXizg euK# p NBsoeup|RHֶG,?ԓw0^P%zU2c)cw%Eʣ+;鋿UE̔1cKH?k2x#* 9H8ʀohwN[FrW5y?sm}m֮ H$/H-{ P[ʦVTJwә-;N;gqzsv|zcjF1$v_A3 8GBqT"=;zAB z##!qD#z"OT#Dz8AApv)D!oq^ [m&?XT>ɟ qL18,Sm9a%5bw܎}eoǜX~k2{ 3K*bsn2Z4Yi۲~ ]3|4^tܣMD[$:9qVIfsc-y nx]+wa&_M6`c=f.qϺٯ2ӈ4b&4tsW6ftLn;>7wSX'HSg?ە i(7ԝ5es 'Ho-`Ѹ5-i㌞.M^fUR.&n2=oDW]Sfŕ5OpÐ _MAG;F֓( 0KP!.<TzjJ<ɳ(> w9 -r:k=@H̿]>ދ?YLi0dvz-r vL"y'CK0k:R)tONm ];ə s%{,ee3ph%ƎVhpxYa=ȩfULg8q+Xuxs<{)l9Ā=Ԫ)%pMj9yg5jª M\4D2ÜH+1I~$vڦ-/62<$O!E~Oqg.Yc{cUGZvCuԶjRP8c }WtBbt4GMO>6kGf`Nۏ*.Shs۽ѵ cm<1Rv4%U,nt~(=+A1]Oy\ n>pw =ck򴰳A0 8?K>~o&Dpv^.D7yDʆoSMۼREeTNkNHP!֓C 5иM/Tʪ:#+9.<=QO p=8BD" =QGB G~Ǣ=P @ODDQǢ胄qg#aehB+V*'d10, cW8<}] ֲXYO h.ۻFG< ~N^mέz>|:R=.[m7ڒk!a&f4ggӴJ*z&2*|X\O8*I8~Y>?^Mx fEW5c|Xٱ > &d{-ACT[=j˝/9y1<~,7>wYe{{pü1k_ɺ:O,n .cyG9WrSE^dǔΙQj+d=&8Uq.9=jtSn4hY02ZӴQ#! qZumU#sÀ')wɎuS]M#d3v? ?,lq ^6P~p瘟^1$8.G#D_ )#1i[Snz]&ǿuUG%I:6Wd?g|V014p嚵R`s7?,5k[Ξu4vq=V6u ouܭƶTy%4{qj2I ˷ac9)V~'L#$ㇽ 7䭩s#`{ ?X*lQʚhF;YE+Iþ"CW;rG+룤,0yl;+[U*O7kQnؒ\ ݠjKl<,i zns=׹#$8x?qtM9KI&x/d7Ejm2 wZL{\ט湏 s x^|ƾ᜘o'Ӻ)787 d=Gs}Q]?WxspV rm~'AiWx-8~.Ly1|l3rm8Ur@VO.z&^N}p}Qi)=9`sCyF^Z:U A$cz"/mbJYZ$oVЧvOi%iޟ%e3n^M8tG^~O/LDq0\t<E۩ckh*%7au/ve9<d]AB)꟢GB(#@Dv(]KPKhdwGdw@vB;!B!8A@Gt!;@Є ]P@B@@zh#G (M$ ]蠣 t!D"TzM?DTЀ(AGئ:#@@]=]@,P^U=E5M-,~d0$}V#<< }}%.94l+?M7d}cX(1rHGNz,5U-;Qxg:*c 0~UiNF{w쮫Ffqp0ce|~ڥɱl&otp?!ߺ?IkOlyuA ll3 sU^'o4cϗC#=Jz$n;pqcO /m.+RvAWCpF;gKNbӶt 8 M|zwks%dR5;򩮨kbiۼ_9 cCnp>=n9g}NIH6]xoH88-}quJ z|$U 厎Zv5wIs ]X*"o9錤~9X6Y$,*mC@$%sD#24a;y2fxijIC%?v }XݐJd[-B^MiK.S7>unu4к,#|;~^_~VYa~qaqTLEN]͸Ulis䧦 UfIX^Ṥe sf13/%\X^AfҐ|B0N1XUZcH(,8,n귭3E\Ss@4OUa}c V幃{0?/u c~yT I8Ь]9ZDq?kv۝,qF=2`yusiČ34uie2? < _=,aт.#xZ詞ya8w?\Fv2{l41OsfRz-nE=EpSZDې@98WQآ-c %kCMS-L 5{y!;ˤ3凶.АU{MWV q#>o§QRѻ-,Q2GBx-'oF9x|Q9s}s35Yi'h-%%Dog l`W6]o keѭ 䜞yMM}i0XBiwAZKudUQc|N>+ڦhܞ{7 z uK =%lb)*G𧤉tNud/_1G϶vI#`4 ׫Y_ȃ 铟^_h)vel`q}W?QW,!dcX99#/xo.s{z>V\K̔L/Iv@&hiz>zM> ;wM.HB@A4B(AG(M$=SHO^]Tz]c; .(ɥ4 ;;; Q{euNGll0 p$]寖a~'w^\:4gQY- e@!ujfNf.i;Ny_1˛ɆV~ˣ#1DdFbXk># u!|r |@Z;褆WyG`v1+[5&g0k]X׸9d¿s$:%9xrs]{yLm(;>~4l0pGvc8c<GȊEd?9ܼJɏ7:f\N2Zѽk]oU7Ij. ڇ @?ꓹ6L8zq|. iv}}VKVZFz`[%yB kRRӽ5Io8vǏK!l}u-yk'ԑ(5P'k.L 8gK2ðL.=W.3=,K#tW#̾S@,,8ʾSaNds[Ay@ֿoTT:X\#q 㑃?..?.LfLrG7{9ds~Ͼ#mWwV2FKG6ݏc튾:Y)dk.~@yZ6{hXd{/5($|X>qimM;i`$B9y1X׎)wO;K DrtMABP|{\<y$MwGO4DDO#?Dizz #ꂃ0RSEGtDA)&PxFyGd}vB(B((@AHtP(D%B((B<#((@e z(Gge/T(2<4TS%B =8?DQ! Fze@T#4Qꌣ (=,S.4Q#B I2Gd 3ݼs6O<1!ģ-i{>ZOeUE4]<8᷿:3|˓t ؍*P渳C}FE}}lQo'L!8chcw[TY ~`9rR%т|ۧ{Z)HIǮշoܮWGQ f#ry?>r׀w3a9>G68݄Lx-?]HɩhKMC\okdʹX<J6?櫯㎣vPPBA3! FPT^Qe}yKiJAQwGP @Q(@eB#$}WˎUh+",`/{GW?p>i_|.'=K^lON%V֏{O #ZYu菊ֽYFIls,$Q&hksdK}L-̣ih!~!tqۄNZ89c29p8U&H9`arAerr2ZYު*[-tH[%\Y ~.6ZTR~ӷ8VTחwB:|vO-1谴94Lq۷m|vF Xj!iOVs|\,Z1$m-tN%k^LG&CI[ln/tm p2ui!vte>K; ϼP|]i#:}7}I9]W 1~Kߵ6:V6댻?TqM/E$of!TFyBe6K,6H%|2寍Ť}B]ХU]Jos6rpOSV)BxqcoBAtdv@eB=Q#@2eeB?DARG)!ge 2!!g FPO==SE=Q" !J ꂃ0RSEGtDA)&PxFyGdgtdwS+pm<0 * DbH7`5LŲi35d㌖W*-5RJ*!x9XpZA[iVϪt8ѼrA?w 2}v߹?u\QF@2wq }e/- dm0%@t&OB xXF+7 -9'!>g#<}K\d8=?'Q$ \ls{+lCXy*ƕY~Jyk˸s Z&0Z$yqz)㕛o)hvA-TS#icvr;(E.dN3{*$Bcd{s A2bņ7=ky~)椌F=41=48m}ZiZr]1bvTKZ;i1O]Y^9[k\ɗ0vmZN%3>k5éi! B⬱dPGeˏeDžc謍rm( >xX@.i+%9hp8.t¾Z|Q]T2y1jxf{yskFx핸^^ h^ALgꭨ,>)ݹcĀ;,ΆWLJ] M>NL5͍瞀W/]j㠴Z$>Sv`N3w[39o4L=D):ק+U3*!t s]Þsm͍Ns'\]trDz(Dz(Dz1g (Dz0%G@eF=GzO)w{ yF=@F=%F=d >/x@gc (#); 5RT8BOl|$:>K=$|ŏ$:gS<=K\/슪"FkyoG+c}Ic̸zcྼ~pu*fOp3ҺXyyOs  _ˏ;~σ>>L<*+L"s*G~?\rtN hwqsM/^\tFݒ{7ݱzszTK6Ɔ7<S9DqA"kǻ'%7l'zrcВlaVuCG8Hq'%+≍2 +|KTT# g.p?Z9m~Eh>H=7`jAg``>ʫLHhwŵ8vtmҝۆ'W?} |uwYc -3лs9}DM+K#Orzy+檜gP~|\~>;9F=^FQaeF=FRDzD(F=Hc@{# )c< 2Dzx@ה&3F=dR= yB1QXO (Dz> (Dz0%G@eF=GzO)w{ yF=@F=%F=d >/x@gc (# (Dz0 g=>&{ e~#InO4F/o=2GlvtV,US9T-ݖ53)^KǜJQdm$H:E7Y@ICG65O0s&"''?ﲷhFR(䕃vr8ϯ+Xn9ź*뉊gǗİ9BZ ц:bA>jYImg9򕏦ԲX㖑{^qu}>փtwU-=95ǿcw==G5Q)"dn272sRI%qiyPp48pQǪrd`|M;z* ?P]\"HsJlY1 {.WrQT[@MSKc{nvj:HZ1a49'w OO;=B"n̷1Ǩ TVړa<+et8D=:^\[/XѸߋsK=r4Zwgq[FyW [$9H.x&>zpblm;zTK39q~m 7+=ǒv"fM@TH/x]#@WRWH#yzpꮚh&#׏դ?{fI,0d׿sQvo Mh]qa?6.c~ z I%%zmG׹/s.z3䡨G 7n޴Ѡuw㜌v2zr,qb+2~yYӧ(4]hc$dec{cak..5^ta/g.JhjvJFG#9̲MϪ$7R8UΚέl7&4'NiX V@#9<1E٭Wp] 1-xKӀz;ٓ}ŧWCc$BBV"vӶ_1q8Wco!e;n؎y=n:B<cz;rj,Yb2H;s2׺ԙ#|<4ezdx2ϭ ʏWyh>Y1㿪⩽qphs g[uo&G0~Gsr˝_oj@xKP{#3KeG ɷxF99@#(# (Dz@^.d=PJ>Dz(A@K K0 Rx@vM,#p9@! a@#vF $K$ iwFr!@ %0 Qx@zAK &Aфe0;B0"XFGF HQ4 ;@T ;4  K~K^IktmveG ɤ)iZzvqwϢdc{^9WX'Z]$`Bs_kjmByMDDҴkWz9T]p4r?׌$D6"]~kVte.[X-K&>+lzZHu[_,ecHsmYr7,Qc?`j\ة0?O;x9ln0F9{sn@b,ـß~V(wN2p9v=7L/5r!@ %0 Qx@zAK &Aфe0;B0"XFGF HQ4 ;@T ;4,'`;=sYyElzZTMA S,g#>{2nQB 19;wWt֚{)SIUj.̊BYy#{.UAF;^ׂXp̓ os~Kw|K1zUtƊm̓qwdzJ¶6"ce$~߄WNk$', eh$48;ѱd${;}+ɡS۾V!X,kd.$?f'Q v|y͍Xkލl ݮ?ZNySC ~>=4u<2!m)6zZs1u~Aw՞<wo+ş%yw_UݨͮF!f2٣r PφFq3sgP]*"_2@6a+\/?8'}0dwGp%BXF4BXO @F < =SQx@zK XE2aDQx@!F@M,##@^$G(XFЌ GFXO]фaia@vGtc j,><(yRTHacƒO,.{zgc:cI2dzf9E0 m x+j 6,tRI<C;qCE嚌;w ^[q.WUmgR$A9 :` :C|DZ]^x%':8q0X.~.9 uÍi˟~*;TU5,Ƀ 1zkUU,kA.oUÍn|Lc!|?C9>]tcc#3\5MJ2/WF|6?:aYywӺ޳k>72[-GNW++>umTR2:5?5{v=ׅ[Nښ#[A?6G'伨cOSeDž[.rϵELSNG[fށkK)(`yc_e":/]׋hQ/Qov 90n7x ٦ESH#dytr7]jC3TI+&i -'QE~OǏoO?/=yVmJګ}žZQMQEpl&Ҕ;,35'_I^pxYmPK<ʨq2UITæymʹs^|ߧUH |g-܀8h64-LpdMg@=#3*u W2ܗ0 ^>Ln};pgR6==@hHn{yǹX,)d1 /t>>>s:M5?VcI>#W{BpG㱁9 279A=:5dl;8{]("2X߇qp#f>B;!p%OЭ PTY-;tm!$q=ku+ *MX־->[ ӏe`:ɮU>||/ Wx:!{a5'ad #9Kkp1GKj)GD#aM,# ttb>~@=G@!$/ꁡO/ :]4}?Ttz hBܡ/h) i}>H;%QB_DK@S)z=P}?TA#O)#A }~#P:!/ (AIB>(꟢G>ꏧH@v)#xF9GB>.2Vj &6@ewTX%HƷ#$wǢ~騪)ԻˍsHGOWL'jYnR7hiin;rz='WFJ*;.6yWV ێY:ș܌R;`f7 b-#=}WMEuP߇dfn5Vsؿ *C%CIoQiu1.,! .p89 "i۳$LS6䎡babůkCNޥJfQP脎!=v#tn-[c)s~~e{~?O۾%dR zsXӸ x.IG|[lv%pg$p Y=62sO%>;@Z2&7jX `E*j  %}?JY3˜KNI'lJ(rxUWmPaЗ]> }@AIH#@/&B_DK4Q#~=QLD"K@!D" }?TG HA@T=Q@PT}?Tt}ELtIOGt}?T I#}h WEҾ2TUvMEN&(`yEUse0wRxaYﯨ w֓<۰ZUƋ 2\;%sp24\XjIe͞^-&I5WJ:= yk@O{?VV*SYTsCy a[ ӏ81me.hh~w @Є  }?TB_DR@ |4vK=P?zRMz~G>TS(G'PGtB_O4@Qꂒ}P#?DT}?T#ODAASG@OgH~d$] }%P5^tv@@<sP~3)q.Mh4v6 u$8Ͽ<.|[zWLqM`JܜZQ/3 z9껎s-,R֒ 屯#rYujbd.drna Q>l5յ8S*Wfdqݒ?5~ xN^UE*ZaK藢$v* }?TyGP>u 7p64چ1f'sHc3:g8Z-aⅦxG Y⍯k x.-{6_a{O> JD{Fqcw/T|Gt70k.p|qy|hӜ-KE=m3~Yc'N߉U4EIx w^~"Wi*m46FJ3wRFg'=W55ULs˝P^D89٩4-=^z}|oidOc*j$.. K 4gʾSx9ouXTm8~1IuCR:k=C6T1zg#׎˖VKQ5/ݮ?{17hXsӯOzwzyg=yi2KMq;Xr%rMqCn|tm/[W\p`8o>\g\'~_Oϗ0>;O)#A }~#Q%SD$K+8/qEuYoˤI.[9t%dH?/ϓ~Lfژ BaW[jU@X֒ lcv䜒Xk?T#Ou@!Px(F8(@M$ 0]@#;#;!@P((H&!@Є M$t#(@ !aGdtIYꂌuAE !#<!4!@&hG =P Priz!@   4I ;+MnNhpE{c8aR熀;}U#kX̄hag,ѷ2Isfd Pp+X02>Y9BfO9)bYi++_EcY4n-jŒM UA ]1xmi !hKd.d;ݎ#:°9Tд1>]䴩g+̒=ۜܯXY.%ʬlTyU36Ѕd$HGt P@B4 4@ꂊI4BFyB1BiwMB=SM(AG4@PM/T$! 3B1Bi QdvF9A08 OA@P((H&!@Є M$t#(@ !aGdtIYꂌuAE !#<!4!@g#A(AG4@PM/T$! 3B1Bi Qd BP@A@A4@!!i ;Ѐ!EF8AH5|ԖaWl]uCȞ&~}~k.AG 7?ǟ yGu*nlB=AYuYEqet{弬y.T]mgXw|P5E|yeN~sg$I_C۽V]s:jY |ɋqy -CVq>G0?, 빼W'Ԟ2_Τ2!hc"{_Nx%3(n4#GMg9q|d(ry;vۿûUO$A d1>Mk{4~|&O%a|42NցNOhh/|LWO-צ߬5;sLc|#䵕ƴ9S<3嗕 0H(F9@!@wM.HB)[d,U=Ur=~K HKsIkrW{ib2c<7W>L_%閫mQ b:qv!h[e]0o;d`~\t[Y"2 䜜UTֱ Zuw|y2;4Z[mEdo|Qˈ歁[nyrLrH=ܹKSM S4 .BPivBGtvGt`TvB=PP( d twB@(@v@BI4zRT(M$"<[+snq=8X&,404aq uf3uSehiK@/R|L߻k\\)QTHs}03\$$Rc||1)g?\VPyX\8J('.fH୚jakYG{W_'c/>~Zrr,L&s^dG仞( 1ymI=T㌓Tp:zro8OFRI54$CKJP쀄;#&i!LQHD=SFyEЄA4!AԎPQ cD4PA LtK<4A@v =QBAABt(4!Bt!:#; TvGdM$ tBK=S(4;z ;iwBB(I4G&;$O)=SK@@(@DMKA`]#$ D @H!$ iwBB;z# Q{w7߲;')&*],s2#hǷ?k UPLo+gd6' tvPW_[NOue.dm'o})AT,0U3wq+T sjh9]ޝzlrN^In6vR ܇i!#4gPQDKB@DvzpI:fޮ8Vc6qRR\#avIA]WhΤJ8.a2&+1fԖP$m'߷|rf׻7'I[oUzN zadUޒf'ic" 8cOAkIh&ev>?RW!8`cs1N# TK kӡ4t)#Ь/2돢a)4CngDCB7+)<.B?4"dT!۪nw 9B CM}P/DЀB@w!~hC>@}P >B?4 ה>B>GE>BG@}QB#?F>B{ ])ЈI}P*Mf+ bOārȸܤGkd5qL& m{N2ߟ rch!q\MAvi[+`7%-!=0Z8韒Z2Im0wq~we&EP+9qLTV0n[V l|%dsd`!p㧪[קٓ~cVP$HCp-O[iZ=^xad_j-Y i|rO_h+#-ϑ\ك0= Fs -}.Y"o}o_ C}֎$z8۾Uܔ5UݣɻmKw$:I=3}RM!0}P~B揪>iPBT#@yL0}PT!Q~hQ!}PT!=ST`B{ ])ЈI}PnBߪh@vFBꏪ)4 9@BTBBT!ߪ >h@`T!B/^S(BT#@`zBT`!`DT!G@TB>G!Av<"T#B!&AB@v~>BT!>B:Ѐ@}RM!0}P~B揪>iP d-U ?CUDgˏ/Ƭڵ`P=1U]5CݍtE 1y>,}rBF0}R=SB!ߪ0}PB0}Rۤ4L7nwTgH{| y\MMmKW+bGўWLfʫ<\KTݕ8.˰kGF!4ѵpnުXߛE]s=CZlGd O/>u\z'ˏ/;g޾/ A`>ɆzBTT=B^HꂃSGt~h@'(Gd ;%>w@e< Re! y@B<&!g!J(@e A;!BTe/T^Qꌡ )zd@ge2!B(@eB#N#U*/3rq7:7;ˎLduY0@h r^nδ2SP׽`Bc Zx =fۡ|TAr8~gė+j`a k]WnKԷ3eLҹ@ #ٻh+(44Dװqf ZS䃼0p{_?׷гH*U}h3e3{AI@7K-PG@/qq+~϶[k(_1`tzVUlloCv-z|^nI1~am_fҏ/%VxxP_A);)NO+є /KC<&!g!J(@e A;!BTe/T^Qꌡ )zd@ge2!B(@eB#Gd 2!O((@@HtP)w Rc9;yHЁ4=ecI,OooБA9Oz(GzRLTeyHM, wK#TٸyH>%yB!T 2z$zFQP(=P{]`b(ded.`B' CL:(@@g@Є 2 3B;z! H yGd#(BꌡK2=Q#D#4T ! 򌣺?4P b̬~΍=@G5,3ln~-ܜq[1 10:V;>_ϖ^wt,6Q|G9nlule.I-ÝK_VETcp'=pg|ŗwu,W`'@B,HMꌤ$0D 08()h#e, x@vK11!X@Ќ#R@ t)ca@#0ica(A a h z^20;z#S(F 9O# axDE4#!Tz FOX0D 08()h#;#36&L㍼;u쟰2 l;)EyQˉiw^;We$S'G˰a/߳n'|RP׊WUFia%v&=W¸rٓwZۊVzhO+.-cK0A n~Ɔct-.N:*w:jʊ,}D&cF.ߞsϪ-kh#$z|[TzTVd]`֚yΌ5k̍|HsZKG~ssq^6+kZ:6XF2\z?5>r1ǎn~4;Dر.qT]婩4.{W߅i#O'*-/p~> #SGעpԦZQvsP$ 03e/1chF; aܦ9F2aXOXOKS!#G09E2a,"icB0L!,'@QSB0GTaQ #P{BS c"1!&R@!,'d#}% 0() e! @ KK .(`v aB0 D#Ht!p4xH }OaX@w)Q %02XF8@&)zRT@#@ QLKX< $B@p4{xGDeM Tz FBӞ 1a,p(=P{]a.>==AI3Dd#B;#D8Bt)@GG z hBqP2B  8GdGLEB8DP;ez ǢG G@T=SzD8@@(=.0bwG@ AK;G-Hc\mF9<:ᎹJֲc{'?",5+2NaѸu-uyᦺ۝W4~ht qhF39iӬʖLTg编8g s%nBՆ9k]q|[QNOZᄌ8`8Q^G&[3eݱғp:/|5Tڻ|ql?0u wCrNH~S>[SS1v AIr߷>Yۿ׷`gS|9ʉ%Ǖ߇k[K8{䍲wbuyh@I̶ h#BlzpO#>G8@ #AS v)Gtq Iz ;!tz (AǢAHt8@@wG8KBGt#Drq P@G  Ǣ; B8Ge/T(BǢ tHE2pA(Ji_Q!Gn{U a>SZRq&9ja 'ײG~B=QǢ t M.14I @vB;.wOGtd#G (A肀)2 H O;BH'G`Bh?T頏e/T(GT #>wDhPB =QB"'iĘGT$w@@(=$TPM.BD *uL$GNÂUX檷xA5\ʪH^Nqy'sSެ$1Op9|fA9 tF8U M@pWkoGR}|UӴxfUyx\qsPѲF1qG,>,^t}:ZBLO\r0XC:'N:s2e47滮]嗖jeW=/)%1ϓ.F>Gzz>finߚSu|xi#EVOssˉ^>]*',sFv=@=S$I>^Mio[FH:&T8%)iz& ;Ta Biw@wBRI3HHq쀩:V0cKpjqIxstX:KylHkU0qa}VtU|]'Px;-k7K5VZ6=-l^pP<;♐HLNƹ @~v-}&>_ j:#K24BHOG)tz!hPTPzG&; =Q4 Nf"kƒF~!r}BSKLt@M.e=4 ]Bh@z CLtЁ!4;B;  @@#=Q h#K24BHOG)ta@0B:&E(EGhc=S@P{@SKBDd#Mtw@vB;z"((4/D@!4 HM.@P(A}Tv &#ARLM=SꊓZ^.qA wGHGB:&E,uLOM4Lv@zGh}( ,tc}Ig( @Y>Bh@J2ϺM Ϻ2 /3H (( HFxB; 3wM3yF:> })DF};gBB@FPQϺ>MI<ϸGh}є!eSDc Ԟ=BJg#(GdODxI>A>jPh YFPP%A@@g@gBMM$QwBe h ϺJ2T}Bh"O) F}=S@ FPPe< 3H >A@e)GtdgϺBteQ} i}є!Ё}Qt@eGt FPP@Ϻ3t#hQpG=S1eMyMgB 34 >ϺJ2T}Bh"O) F}=S@ FPPe< 3H >A@e)GtdgϺBteQ} i}є!Ё}Qt@eGt FPP@Ϻ3t#hQpG=S1eMyMgB 34 >ϺJ2T}Bh"O) F}=SAc挠~iXGO(O eFQ Tc焳%O2}S?4eD/>E#ߔcFP/y@D/1<(>2O()cT/d(t(ꏪyFx@2XG\n֓IJˣC<By@v c4e@2_T}S2G( $B)OeE B>Y?5_s~avIH垸cGA)aM[;v2ꏪJQG/yFQKpӺ9[}ĽAAgȲP og4bgKU5͒6CNK@X#nr%tL| P >~h2cT,&zlGy~>7 "G==\RFP/O)gT=O(eFQB=G2QR~h21yO((>hD#AJ2aTeLєee~Q%@ D>(<(t}S2?4=@>~h2cT,&z4 _TR(>D,{Q)}QO(Oꌣ({rd(Lєe#cP/^QO=QL|єGLe>yE/Tg䌠XG<(?2]O<%P>/} (!}QO()&J2}P!}Q@}QFQ/yFQKe~i}S%D,{|'ET}S3LєeǺ> XM,M>i}S3@!/VR1UeYJ3wou#F[:C@$( z8㨊T4 Ў#2BK* s37FSqVBb{a{Y BA$!84Kܮ{ϴh1Sta"[ǓC $>w$-M}.ԺSGn\f'SrG9NK` d3z٤'߽6vH 4F!;7+ YAr#W"ӣdspdh"Z x9+}gQ2`KSH[r5(0sd/ˋx3!;UQ/82KIOO'peR1||nlYeҶai$m2y8gڟZJK]pqtL)ӓ9A꾠5ǂxyHP #Xޭ4頻4sFp߇>qYV-~$ZPGL?dH>㐬WZK|gO/@T Au :g9-_%. io J|8vn9瑌.|o/[}hd1W1QlaK'V[YN~^OOl_ZpG(Uak-`ݐzuTB;&utGr$Vl{˛OA@!B@T$#PPBh HB@MB =PBht$G) T$#AGB0B;&#;#@!4 HAB(4@!юB Biw@!AB#2B=S@uA@! HGtcPB;!@!4 (@! ]БB=S@%"B6#ټ1ř8r:4䏚7ЏPK) HB;#(#(A@ rM,Qz!B&!HF:$#1(@!@ z.HS@!H & 4).}$ H섓@vGt#B\P r vHG`%聡@! rBH@(@@@.QBIPϿ=S)zАG>!\@В>IHB).SD쁡 @T=P/Ts h &"=myh qG yEN7~!(*',3 0_uʀ9UŠл~A?qSsvCGAE-UdOOIz5}7؟Cx*V_>:2&F;Mp=3rf; RIW+Yy. NւNsϳΠYtԱ54ugKc9k^]>Z#qj]ytƶGXfhCڷiq.qnh}>c::M% 晕T1-.cG{'@}.ѵm]uVuT&HbwquƓ΁z~Mxd>W2<vNyI[a$7ñ<ܫ߄=,NdG˰w4}{/?yto7POS2J%ѲNE+?^Fy^ItORiOڦH"kZAcI@ nr /ᇈH)i*GR7ԵArFNV]5ϐYI$6[H/Y:hKGG; hH&P#4T ~KHIBEM$rhK4@9@!$.B;@З)B\(= h r$z hBB\}З(' RզY~S[WH!Jp֎I'[ִ>x(QL^q5 ZGGT܃6N}_e?M6j=)u`[_ m3a7uazÏٳ?>2\F(噲EEplMH|!pw  =sqҊ]rAGE=\Ee?FJy>/v~7FX4i'Kj\us핽O:SqϙFhM^3ӲѵoATGk~)2LM 5:>ǮU}IhZjh06x9Oͯq|k,2R2ϘPzgi?Dԓj:M.lԎc@xIBYs4aX8@WYɍM_=S+O}.[9zEo\Zsu]tm3PVQNé3^[KaݎyPNFzZ楲{IPGtcbOL]P yqUVg~p}M/|@N]i+6 " KKչ1ѹ_l>ZokgO)hn׋P;9@XH!cr ?fW^zKK*)>#:ߓ]d_# <Ui|q4+Ν>ٯr\f2a-`eXMIߵ0FNJz?|,GEXt LϷPGN3U&ߜyZJlgΞV3pu~g~T*:WI3 r$r4` w^Kw*T$jVϐ1c,u|\el}mPӺO@?9dz{:+1xujs_P:*8=pqoK(GIY\s.q݅¿lns~d-%#Ji댟r)f`%kF{}ȿ(^_4Z1y{gcx `3e< E5,٧٨+|R*ɘ-tY`@x;=죊{Kv+S"$x$|Iз9*3x#,T a{?ayw̨xKs;om?hs*Q LWBA 픆9'^5붚[kj 'z.pOt2L4/FpϲR\f0  V.T↠=Q_CEj6]hq2n{d6^v}QbUjx1\i[žod.{˹8%N N3T'j߳fvW\i(m¢gESo,8\ӆ1xp~*% Xc)ZǴ.!~þk7鸝(!϶'|u]?=UL=W?]$kݤm8X;'3?b=o9E{fi|_ݿwerc|}qPcc)?!}QzI}:j=IB y csFsIgP\us0A4%VZ|c8eձQGGcpsK\v[h'#V}; Ouxc?V]e]WA iiZᖹÇ|uLqqG+:GomWC Md y{v>ٯM@xxc]4O%;daPASFhV^#]}AȏFVxU$?RSQo e.펞^~_Um!i4$ e9q,GCT$RJеpGȭnv:O.X /[+KOW޿OكU})]ﵕGVE YkC[浼 NW{-s]uVk59둹c5myty# 1?@]'[[wi>5M/13 3p23ߣ4嶣zzI1gAA.CseyAm4u٪9G?>>/ΧOY^8-cseH.i8+8#ؕtZFɭVlg5%A ǦWEi].vOaۏ*N]{ʩɷ;r=Bz?gۭLeZC]-QƏ k#:SZqd`s%<.)Ϣ0q}N i<^{)x~L\S5$KC`eϘ|C1ԭNLo=r?5i랝;jK,`ï'ʺUZ%/h -k^p7g|$'*X觐5Eh3,3\ИP텭~pwS[&o]#byꛆ^T0FN]-ë(*ke1!߄07>$C{GNߚS;_!@'r2Ue;sU{gfXָܩnlZ1Oe72(^G6}om1Iis%*n{$yQd|Nv~'V7Eh>7K;]AkGr;.y.srVקVni` Zr=?eUBw*c->2:IEg:݉+0>QX"17p c竸W|h-OM_EQYc['ݷK.7lttU&4qWaw![>"jk}¶wRf(ϗ h 0ϕ mS=RI { nN #' \^I'ԤDwKBFyB;3B]h 2vB; h FRO@S)zQB2~h<>PAQ BpN  9Q2y8@TD*TU3駐'AE0^<^f;n2ѾVɪ06Bz@9.d͡]56]93 9{,\)m|2~(e65lA|l8i8#9\RߴN""UKǾƿwZ4}d>~ !:o5m:/ swTf8>oqñO+ibk<8=Il`{A 菅P;Fa-1?KdWW~}-x[{l 78 1yG<Uf7E6ц}av:)?iѶFN4M=qpɊLAxrCGKEw8n۟Rz wuVeM9&P&9ƾ᦭ж3+j, K  XzSۛmgN] 2 []i8u`]O}\U)v_E4W_ՕvN[(_#Mž%6n}W4@Th^P\Wc`"77#s|S?,{^)ei-;q7h3KIo2@sVu|/ U^bH2Z :eslC?ZQinp*l _/nTY$W/|[ np'+*> s2 eGUя/ۍ>B0'/igv߲g[~h\Sk 0.'y@ vO;x91M ^2RiM+zԓU H%+e_Ύ ʻMSplR1=>}:x,|)hwuQd$uhE.[MbƜ&il FI# lS nPWU[.XكO~l?cc$|ױ8Eā9zW+֣ׄ:N*Gf*xfninGr9]OzO u CK&I=Z b0\\{;+;XEJG$V+}$tO3fp770J]PTTdc{ԝ{y'QdwjkoTh$ {%X9Rf޼'FO#* a|Ss+z{H+ =Y4bFNLJ=1&I tK.(q 2.6|}=l@F<(n?sJ6L~ÑӹWi!,CWC&IKܽ~j~ϕaH( mюK!pc=1Wʞ/-~̯k󡧦E5⩀"j٫uT~NԖLu-y/sŒ ^ihw8È9U ={)YfmQ[MTV[!ql2Zs{G]C51âi- W\?ZW^ h[uj*IG釚S%n]}897d/4+>֔^(4Ff,nca ow>n?Mu5xV%3}2'<6x8y1eX]DiCMҲʖ]0SKA=W *<сέ5\cZ{y`#ضc>#+:C›;Z?M4͹d6HN'c?ҞxwE~Ư !ڛV;H{h|8v>v=3з .\(feD2].s#NZ]`pFt zW c?d#=BÞ@Th39+"RT'C)JE8W zKO8ppuE܌"1Fx UF-,8&[Ox=!g$`N:#i(nվG$ 8`IK<4U2GY?5\cT4rtuLWsb`M?GK-247 ff O#Wچ7e^?ķ2G{W@iL4:r1e[K,\Ԗ]Y(ͨ+.hlLO@:|Z?1K^tMѨm5+97(~#~lvۤE_+1t# *sO\A[\d-:7A9Hꌯ:q}4QI-ppS<p]A`"V'yoi/;#BrPz!Re@rA^GpBh@iw@s u(@r2d92 2H4' rQO)S(( #QQOKꙵS\auIߧx{Bਚ_Z5ُh@0q|˄^U6Q0"n]lccҿ:ǨL8|¯}-[pw=@h0QtW:h4׆:W#Zk}Cj}w!D= Hue?4|)a~0WG5RiKUK&LF6,b}C)#8lgo̮x<98q)N+2cI/wcSJ+gi]vcw Ղ8|bGa~f?&?|D1ԓ}>ső?<Au ?fƵvg߿C7Tmr}x 0x9Vg%{x=ٵwm?Oegt\fަa˟Yj%+M#.m5/=6V[hs">kVȞSuEv{-PJk}GߢTHvp\\7 6`䷯\rʆa<{ːVti{#F ۑB^}HXcij}K꟨\i*(dk&pp͑ @a5]hk:E)Q]ja`ga||&gGA$`%FTM/StO$r3ZK~7nII[=~T:X' %HG㐽]_ 9-RYozþ[nmh#pqls8bH췭q"N[+Zͨ!:iь%Ź<"гs2_Qþ>j;ob|ei\*|pN>W Y(mvj t%J)y4gm8J67}|$Z#5;e[XeĀz A]xc.VRSI%O s #-Fe񛯳b^ݹ Gg3-$Axs{u7K#E*z6QI!'sc'0$ ǪK/)[7r'{ x t!V/cʜt\gN (pU{@nBC>cqmPFFdIicӡ \ֿ V^!h昹]&|A6Fi9__0+ⶨPMec~?~њ~שl"C1~kXK1H}xA-xQ%h\kC#9<;# .Akӊz:X(6hL4yQt?bm'\$kSș k[r xlWNclrfd;pl `NwbDn9\ny_O}MS~4u-a`x71ڼ:qV2֓2ZJh?T#. bWMx-5(M юޫ=?lmȦc3gdz}2yw<'!M҃#Gׅw@z!abd* 63)Gjd!Ű1)7nI<›x |fO qp}t`c783)  -8>J; ߺb6 @ˏ )A )ŒfZ޸!g5?= sXr n?ų,2ǨMh{dcpZz Cltl/cN8^dl[Mo2Lc]9UK}ʥXN{V86[=@&f $``6j8*`=d `iLDI)8p7r6n8aDS2@Pl{[*8aE{Nǖ3*Aԃp}P JǓ4y9S ;pt cS/#$\2x4 p}s2i#'g8=}yZpˏ"00y#|#aov<_($nv)0rLה4տ"@s=] c GEn=`J J(89ϠRs}M#U@R\{:M1QtA{Da98=U*`4c=2=2[=aJdl-$= 6Q Ӝ|mg44BG>> $xp:*F#9 8'Ws E aTe{*CTn86"kqRD Yi21ʦ^?m2|@粉 ԧKd\!V XeOeM2@OM Y!e4er\14 Mہba$EJsG(`\9I7Er-k{'ósF9#Gd"wE>G`@P$S(D*ؠ=xogi)4uQ`Tak0A;-K|tՍhV GmSOӈz,FGDIǓUw0ב'DTYlt Łca5^8qҸH8 7COWeQt -w6n2lpWbx82ac (8=rs9RU: 4c}?g ]úRƖ eZHN֒'Ý [h 5fsF6o 7'V?4.Ǽ; q' iҾ p,jp`iy)]g_{e=<~+Sdž}/fﳷ-4ýQg? ;K TWI5kkhw?q$u[~Ɵ Wj7sLeo0,oV-yXͳz9v}Eu;+c.ix}qs`>O- GVre4$:mU+ڨѩw72@$ހpqC[0dÃwd-~\oZ#2xy|Xi5/SӶZ 1JuH]oմxelqׂK\s}vy#Y ϴmtc|73Vș9Znᝎ|=Z495ΌI `1s ~Ä`[M,51HH#Hi9 p;6Š +cT6(ͷw8 cxk4pco%po>UV#1Kon~&'+5 5-meUP-|~ 7@+t3(Y)cbtqdtX]o ǹ7{[;4f5;nrLg6ٜ!07q0xCZipDgϯ=WJŬ5-SCj:`{Xkր0l<huw޺Bxӷ%dd4Cj~P]`G5 &<J  qi'V Zvmp*'..f t𪦹2XeGat'g.f^[\)ΣO[ԟmI1-g]IٮxT0-5TBHid}ih<WΚ^c@xg|VܚT"2]5ptV=FI*pZOM=h԰;-$i+AÁU3w}E04榍V(.\aY_vCTH4m0YRvd?rXqM(HTsCI*ZG?4yç~my< zroTSX@>[SA=imu[[|GB[ e#$n ;G.#ٟhWw˻ֵT꫕{nl/=%{{KJcE0? k%b>G{ >ϴ߼@e⺚<#p[%}$5>'E#O\ ,Jz*!Gtr(@ )G ]$˘R0HvPI4MLOehm-q艖S+(=V^? pƒ}{[=nt/jog *tomѺP=FA[1xG~CR:)%@vT[`v$ӏ?k˝ \}u%K*"p689Ɠ/:4} B@6rϧ[7,߲5v!շh+A8װno桲BCPNgvmh@f ">@7ޒM)?/v @eXF膹~8ϦrtAh`*mL2])~%Oc9y!G\gR.Q8UVrB,RiU-?Qs@7`t* ny=RN[Eds\0 (.<تP.˛Si% (rF{I^p)4};&[l[DD:dQ0'rN } nkNx<(>6n8`ApJ9sT=rNGTFX8`oC~JGi>ෑV3@c #mtw@s h.J,y1Ps\?>UsCAwM17–sNCr s_ir[Ӟ(8 .8.i'7'PA >L8棜>?(ƷO-h'Tq#p@98*9;'Q g=0Ŗ7zuһIp#Iā?5Ep N)sø>܅ I\O. (8 ৵ߑE'#pp\ku Gbq_Ni'޸ '=z8л?4p=bK,'hMCp@Mf7n%QNO@cǨQA*L"CA#%,c~pv74 T@E1/*G47rRӢESpq;wl$U=NӂH>%$FG\O'-!C\rAvL0&0O) mTP? $ot$o\n#?Ҥ2O&KWG"O+x!id@yVλB[$%;!ߦs©3;~pXm>\oUEEZ絣$42xg;msƑ>`=oi~̵6({`S7xI9 m;)FeL*!;xx=_?G].|I\V힦z;ZK9g]O{֧PTۼ9,7:ig8ł2ӑ;+Q~ߴe [ "1IxW\SErqN\cϵ˦5}D#uZ#oIi;=\+3hrH37UqT_26SNZ}{#? pyT<q<,޿M_yT^:H+GQT,t;G¾yyk:\*t~!chU7VHfUG/q~ǿ4NZ˜#KS~]Ehn@nӐ=74Lny q6 Du W0єlneKq2 )o˙US oOeX2seq VTyɾYo;{Z-vWE>]~TD|,o>'~ g0y88:(F=@>%= aq%9?.`^]й>గ4*!wKcs|'ԓcةQ쮩]X ]vhN좽:_/%''NQ~'=uloԞ#ۗ6oYIRƏ?%wvqW; ~eK͏Ҿ3a]ß^+j]E4l MSaP]-97XM*>LJ۔3k%ꠓ i tt[mTlN$=$U~ϴ#^3o?W%8&+.Ls_W-9# h\}?=w?o: 542n?8>}Ee_j+ 쑸9f#n?~̮n6=CH$;:~\Epx5ȃXOi/-x=@w.cWSg'z?+FgJcʏ=i{x_g>:ٞ}K'&{*? xM,v\;x 52:I`gPnݹ+d n1oxg;UP\[d"Z߇(rsehGR4=P:' AުM4\~DtR@}0uMW skh 9c &#OvD:A>)ZṣTBBgQ`A=Joݤt0B ndOwTÂ^js-n'65ΑŎGvU G8ꛝk\(){tTӝ猫9vZrivp L㗑xIݥDZ)3{ZALs 9$ z2m!9$`TpAA l̗'>aA[NpGN p8p?.ҙq |'6F?XYE/wv32TD6V8d=0&ew@6@rbsd:0~mh$91u\Hs~5{ 7d`8b0Xz N?Ӻ$٥B VvRkZψJ#aMR|&LIomTͭRpvy# gD=0qT_߮^㹙ϳ)6IPR%ń61Aʪ.HOVU*X$HvO~@V#`[Ai2D쏞_O69=P"F!s+=SoK}O`Q45FE^gw&]eq &hj?-9_}qdPK8-\oWxyP56XdgQq-e5>+ Y##]ղ +Cg uPxu.a54 0V5iJk6gM%Tv|.upl9J\G?إj1&*@ EF[$;0G>s98_S4Lx!wGng C_b؁ tHHD:~=U7_ 9tq8_twfi)(dNgCp'~w qd]3x_rkF\r)lIq*0=!Ut,%(}DT#ԣ\/o,i{vsX][ᶲwa+轥ٗ¿ ))` A=8RG5Q cq' ^YzG~|-ӺPLdc9 C1]#Lo' +R5CˆF9<_00@9,^[|7)>źrM; iv4`+:OU `;'i˦]dwl;^Xߋk}3H[_be~7hzzMDVPK}hfֵ+wJ` e/3v} op; eOhB_QazaM.GF&70z"xRhf{OD@9=:{*Nm$ c*AgwEtmuH8Х#s?H\xQlO{9Sc:4)c ƒdkpqފ@1.hn=-08C3߅ڛ {TZy.|)5<|Z88?";v'9,`8 ꘋq&Er^as<8.m4a!LS$ ޽Q2=\)$g TI럘R'ۀN:"~wmT=p8GԲzm%E@y^U'?tW0l.JLn3H98 x8n=Si;i;(9*M9텟J'>8G2 ``Or2LdK4q9ϡ;!%"\u2`rI$bFyOCsϦ‡w] tH"BsL od`8' r>Hteǎ<3 F=Bsp q¨N=KPjFn: j9M[y>m`O}xqG:cTi~}瞞Cc@@~:Qǃo!2܏Ipq9P%3F>ɀ0yCE!1RTѻR>2I?1v8*@uE $ëPO9%z%'cT5T ]AUZ9ocR~J[?h#?DaBdM8 ALc40ø@c} Ogg|,&368Is~JD܏e@'Zw1qL w$@?;¢[Hp7b=oXٞ=˂h6KJ@A2w`4}UC:zvOM1?K=TH;է 6QL@##8URdLH񜰏(-dd *o'#!6)y{8ا0p2o' Cџp]in%F, ?J%[x CoUǾZj?u&٫ow+3 %#*D-{s5[U?$E T1G!36d a#qa4]@*Y/t=|.P}p#a\ Im#=?OvA]:.)afO "##^{\tO$3TWn~Gg+9fTټ7;=J'PLԵaZzy# y9#r8!~< BO{\ѷʧ|ByQG? R8ܴ71GK=ʠAK S;pVJGߨ2OcCJ)ZԵ~h26۳.RMqhjUu i\{b&XdoMMa j1h=1_$VZmм弭vpP@>iJ6Z _ʞߜ0?T:6q}+/B?&->/ηG/= c67ʨFf,pwQP@q@GJd7kvz* w yОjї3h=yO!#iTSrr ܦ[Gs=04F]X*rq6B6›g#Q6{ n}*2l-໖SM*Hs@T w~&T ,9psOlX݃Lp?¤ܲB}ATHWҨ~d&Ƿc C'*a>阁\$a:;HsPJ$eQH? 0u)jۘrOwcR߫yI2Ac#NX}p 2 U'R iETU9\񖸱U!K%sIA<xqϺ~xȦ騧@5.*˽OܞZGMKgc- @7{uS!#pGiw FT(ۀ ySOMc66[ό ory ɳ>*yФZ~)M)oACpx8YհG${4S#xJADCqOeQ$d.`kr"# 41#׎}T's "G-vN&Ȼc(s%蟞*Ѹ:5vo8C. h! )yCp#= RU:H#pw#R={z@Q[^wuG@ @<9'\aSm< ^=⧍ |dsMHKǨ8*f8D#xVfxL! ~7Don9!ܫls؅F@HUodccUcя?2wiV\rlGU.1GVT:pL4>E]%{pG'>i|19HqG@J +#YV#|*֝sO_u+'v}7@*6ԋ;ו6O!; {cNq~/P^$(~2GQ1I i=pxWӞRu49IU6}Cx-Pm4 ?!}\w;KA萄d9= 6boP()M+AtkO}0$|!+3orAn7D挗}ShU͹Grsq0pŻ^7CXMѸc\ܰ{*1s3 {4`FW s?LtS ϲ K. {Iv9 9ts*mt2ʓXלeUs k1-AksODZve,7tg?[Kʙnq1QݑI>Ec\#i \0KOd8<֟R1 ~/,Æ=< GoFʐG;~.~AZT `N}s|U g񙷶r9U[(i>X5ߪS빠R9R4p1%4D{D~YHߪ~_~hs|$N~c*6TDDB\8ZD?Eg0} zHqB@I4J Z}y'`*.a#܀쫤ޕy@~J,qy#>Th;~Jr9UOft#=v={&XzrGpF20zTs#8Siir= >vG6 o``@%L1ۺQHPZy䧷=-D uqk"qoM8ʬ =top~E] frU\0Sr3cQP@;$~Q260>WXo~TLM= E&T46=BGk-x g3O{:; ~` `¤gnɕVGG=HAOfހ8ۖ8Dg]';uq{rF[Mt&X$a$*S$"pO&??4e/%{T9e@Ei')0pZ@J;ןQs\7 saT84s@UH@Sg67;<H4ehSbJx=>m8oqܮ28=Z3ki=q.9RR;rH$*n~8 7>9d w8AzZ> gڣ^yQ8ۻaW4E6C0;9S)Siϲ{xZgV8OE(UCv9 _MO+%9.AU MCǰHNG-I-v`c|lP;r #t39QTF칍,;K"y U߄0-p |Yw6P:fcK ʓk3em5+f#rȨE;gVvs[0z\%?>R&qk2Ap^2#9Ii.c*^0JEAٱPSdsr}=Jq'~U|hហ[$$.at F&~UTEHV=S]7@I~x/:zY<=U[ˆnO̧*5e<.g68cϑZ$wTfHakܴTRpSTF襉]? ی(I'sKNʹ^ݯ#nAqN028QaEL#k \JeiᄟZjOvCHʇ#G~(w?_w[{!s%{O%oZ [+~xSlw!ݤK/ǓS*.0? qQ@{`7}Ssc\a F3**Nø%5AԠW]@iQC22r%zrZOs*{Rs?¤ោnI!0BZ[n& wJ鲂0xPyfzY٢>"EmoAyS ]ܻc; qJc<GbӁ[fuiN?V:g詇o)|D}ZD΄{*b29%zLpٕ@#٫SS {'F0N~0}oMSd  ;Jqo"G˄5=P!@?4}65qL41QTDq=CIP^TOwsJx$aH B Yߡ½~/nj;{23!U5[TXNlB\:`<5ZମG$ } `{Gh #)1>Ic2Hp؎9wtmN >eH: _FXlGUpP0:gءSa*c{?R 1yOU6honq d#k).S`njgQt,/ rgqԎeqE ?#$uRc#=P,+AvxS?<*IPC꨷vӳ`=@ -ʓcpvK웙2SiT 7>q?OEuї ڪ,㐃Q򛪥oF>Hi m?=G<84{wYwNofwpگ|e p=muV *QWa*a@xn'%>C8Y0tQc~a6ib0eΈp3HpO#ꬬ3r>G)NqOیp5B>J&~i Uw #EOy:6qq,oO\H2K#;?qS"c'%H6a'Ѫڒ&9'g;$H~'1#8qU*Nܲi=KH'ZTn#~Qe~+jrTMJݎloD&c$~"Zd cHd]"Ȑ@O$hO8Ag<E'%>-[*N\=SD9TRJc$qBJmLDsD@dM9q'R};FCrT/*܃!ߚc\}Wv A{Ǽ\M G?:;G@^Z:Q$xd,Yvudzȓ5lYg6Q=STrs o]?36#qCgM%6mގ*D6N0aZkpEѴoÇ7;sוC'׏6W'A pzE#H#ЌE?${G'ƞ\eUl[\>[:v['-~<|C؎sLAǦ0)\p=<*$B6"%z*i'RуS`|>])lt٪ORhk?UB `›kZSd矒qOU*Ȇ7qR0WnTO@v= R{`D~1| q"v@epeH(k?T  }i@a.9F }?UBrU^X ^>FJ*%pA=)yua.R,#1.A33A0;`A"DNP,q(xKv'9إߚe=?UBG; zwr}D{R<H`vD@8R9; zHTK =A?E?4wUMrc$@艠ND1!#sr\>"1p KRpE=G TK@$8'U(i|>yD, N0g1Le&o2芇ё$$;!M4rVA `;'Da=G+_%xq17[)p1Lfa{ϫ\TK ]񹁇?%9KãgA9Sg:m K IZ:I5yʂKr>o*^S1F H'5Ml=F L2% 8q-ս-e΢%t[k|UU]ɽnaoӌ]20y)fKK\f~}C; !c`Y9@dZCg?}k4AIf|ugҴ ͑ѯjUq?ѧ tovϼ玣E'Ph 훝a=ǀ+_Bmx 5 }J]nTQ7}veÎ?p Uqq!݃#sqkptT8{O-D&@'D:#όss+.skQ8逫uEHx4pu ᶘ?Ey?PZGkrU8țdXU,8gxb  =?5<oG}QiGd*ˍ$}p&p${&\?s8xVcSTF4+*l%8 `R|/H8,10ԒE # 9::ǷO|GV yD{ C[YVYm 34^v- Z?}pUi`O|g\GѹVYS!ĭ=((B"zdw#䓣퀭K"F6H⢪!ѡ)c8+$tc04g\Nw=ÉVqC+.qf:fRJȜ'+I;O#>HKho&GG8 nlwq$@-'ܩyaA$pJr@8;b $8> r~iM#ʦb[ʑv888(1;ٟriE[+XSnvӱ?U^G&J^lMvsi*>J"~rrm$ g ѿR Q'rTSOE̜w'TPG䁖N~[}sUrzd{ @A3O觟u=rpA( 璦8BzGd\T`|ӰapA)O"v.# d$$i=rz <ÞP~Is 3k񝥾#q$\c89=Q60EMiu?h1(H0zpY }U(g$Ī'mwr>r\9h?4s{e$@oaHT J(8ʧ$A>EOx=L?D,ڛ!7Ep kzz&#~ʩ1G1{q% 2H#Tֻz?'%&lr|.rT oFU2n(~"7F0d'视gMIyɍ*a );ly;{#9?%DB'*ei0WIU~~1+Ή0-LJR1Ag@F3Ü~D.!n; 6=}?$–Ao"GcTz (]YǁGc8F= ob *ۆ rS`8[$:S1 p%71¬{'=GJA7@8>[ I9#IvUr m47/x7p\'!"zO& *c?Is0; l#h#|픝z(&G7a{}R3?G0,C7ѳs$mq5#>?T1O旛 ?="&l+ Hk_nUq+pITDwBX~1z8=2Cs^!MRt<PO} [1nM~IaÑT>Sf)iIATȑ.B FORB .~icMHG'!0W;~h)2$GR?5:߁ =>ja$D@>AV<6iAq?ߒ}Dlw~R,y)w {O'_M IA8Q1Og y#9IǮ [~}d[裓$dÕҥz}P3Щ} !HE4Te"瓄 z %ꌟAK$vY$o~hHrR#SH~4s\|ߎ@x>語2[b{#ï(g?UyPp3ܻ]$OG+ ?sQ#r4*g HI?ɳHnxOR}[Xl>$+~I@O~ cfr$,4uf~a4cR|[` T]1YtdrކF#垊+F, zvϋ]O#E-X˿c#6Wfe|N%BW>f,횈6Yiq"k>ۀ4z֮vݤ4 gOMJ<eǛ*À ?cwY&3Xegr`)Fdn}vTI>̣~eF)#QߧOkߧYPba~`%-a?"cg"!DGwyg;<䥳G ):(~c*4nGnN?6wMEZ0TvҎK ~//O쯕)7 cZ=_tj?hisFO "/>J~_Azd٢s:IRSd~6">icKD;Wf~JSߚ6Sz)?FN?lym`Kgdl6#&}GN?6wfgTߢ6wb=qH\3 gdl?]34|-2~W{;F;ɳKQ<wXߘK?nDI/3~Sk&C߮Rw%?,z#?m4BCs#gdd[?OQBNk],G~T#>:[ONb )uKgdw w*;B{O;#d8{n?FPB[?{GB-wK9 #i~3Qߢ{Ozd,?#i dߧOi =ߧAi~Qeg~_* #cs엒=ObYǪE ^W?b2?1 l?#i~6ϺC%q( TmwHQS > ??D?ԖWߢ0ߢ"~~ Sܟ;a6{-g~;@=pG-Fi~ߢv%C#sDK-F@Q'GQLzx)`Y0a=;-#;O7w[O;Oa~P[6O; dSO썧7(9DwC6w荄3OTz?FN? OyNQ,Ca~yy< m wJo![dZ~e1 [П)l?tvOPF_钧Gٟ?MSϢ)l?6wf:$w?[*@.gw 2Ol}9ݏ['$20?ߧOkߧQL>JOw ;w? m"B?ߧOkߧ@w)wOWb'ÿ6ݧ襱%&FSO썮~6j2?ߚ 我(3J;Fn)<֏_ȥw,Sip>;;?('۲GFgE>Xm?@o0*[zFHOgpredict/pixmaps/maps/nasa-bmng-05_1024.jpg000066400000000000000000003105621427377236300205620ustar00rootroot00000000000000JFIFHHC     C   " O !1A"Qaq2 #BRb$3rC4Sct%2!1AQ"2aqB#3 ?nPi*Npߵ=Қs4MoOzT ҧ&M.hN "iɠ4)EDzҚ&(hp{RNM"hF&{&4ވ1A4IoDӚޑh S߽); SDNh *riMiNfT&3JҚ4Q4MM)h&h.&>toډhhS@=DoFM9 &ߵ=Қs4MoOzT ҧ&M.hN "iɠ4)EDzҚ&(hp{R&4F扢h JhD MJioGޞ@*piM@SJS@ޜDӓ@ҧ4 M@iҚ&(hp{R&4F扢h JhD MH=9ߊ4 9#jL (QN8ҊDTڑ8)ȋ@*qP3'*4S<P4 PQNℌ ] zPJP>tEn]NN+7(ף° SRӆaxFH!  |r|m--,cWu )>i FGF3KsK.ضVlUR$2^m>C^`};x EXt \Ke; Vݕ~ :͜R>ÑnZBcÞrL$%Y'r@o}?7_-Sޭ::喝5IH9ܭpoK>gv u{uxK-ݞ,(-һpI5_+N|?G]3 0W#buWv]Z'I |T"AGaʟ9ۼ\eܗrYIH}A'y`|W{8\cGxm O>b,LypG1^e<_u+VXlִ4.n.s n6<& Щnb=Agan, ?sS)Q)H1y1Uz[ LH+E˒7 gvs5r-1[ .xJsu,Io>|j|<'7@ےޫR<~+} p;! - a^Jp`Ղ,,BS(A7'x&?K/JqbxWZHtt't0wٙ>=֫WB]jRqr?̷ .<.T4`+5u,#~-fHAmji@o+c !ŗiYWћ,$sPbxAצc8Q+z XnVYqMZd ԡ>Yd`k b=+T-L[c eP%)[N-3_H)IMSɵ"^nUǂZ+ *Mo8_'[1sqeҼFH(V)B̃cNGzQmV~^T㉕AQ>!YY*D@cL1 \1#HT6~1\#0d\G Į1[{6 , *RJ2S֜fxq&m]9haƕér4w Wy;}/l{h0@Rl4,ԝF֮nP<߈ڄ) *piڏ#=io cx]ya2E";n$`?N<1\)n K'RN`ZZʋZwUF*Re-j*QJ@*&$?Q;Q*OW87IQ]ž0!RJ iQz'1?DhĮ\bxh֫{@K$)Э`JA>R;|;d>ne_mr獙s6ctp-YjzШ ƞR`C=ˍߪdw١|$pJĄ$mZ$E}/Ho.e.!ZHPd>_"fw]Pïnݓ$o%-D "pc|Lj$nٶZVjr!C؟Jqi(#To-q7m.ultZT=<%):>:}]<;y,A*k;lf;LOV2U ũVimpY M kQ uNUH2Zrn/[%(\DnFYfs0ǜPpnMJ} A~2V؀.H;fVhӪظIP !$$$j>É|4d,[,t)d U.-n}- JZHɀ{k)ɸ+,*Pҵd4t$j 'd}"OVw7lanajlqʀR R ڽqJwqqb2YeKRhgIB &9<y9<qכ1Lr-sbnݭ:R]Q)ҵN^V4 s [H S͏Q=NQ86 #j>V܊nF38ޚḤ$ԧ~*KoHPy(5GqbnWNqzed rTvv)^]cİwG *paW`AmFu#i'we|+Qeqb8Z%Uke4:um*BԨI? S+ژvN[R,+YFhm$AHJ $V4 e<v 3 Z4PHy>X "EHE{k޿қYl/%hTh1޼վNߋ,+?>>喒D8t7$;QM>WS"neAC6+AJ3LFPn+I7?L RG5{#r,ʮL-Թp?ڤn_%_9)jjAvK;Qܙ@Y[)=_|{JPD igrHLoa@E˸*n1KB{Y@"xm︆赣E"7Lc)k)*Ha!Q|'5O Yu=A,)h T;Bjk&X^Xa -$mn*+D7}9g,SfwlHJm A <$ j%=}.8ֿA{+LoR ߲k0TT6OF(߀0|[3 V8B}4:Ђ;KTy `W]Bf]-,1pXeaŔ#>PHNU19^%`b0\[u褨{O XQh|Me a]K˷6 Z,1 FlҽԴ%UJ=d޹K闣YEW_[yѻ.eL޶0 I*BXQ"](ʘg!jmb$jd Qi I=:amcV9'u7k]+3uwwxe\m߸  Ld͘}z Z62 O2@ IU76nR /Yry-n̵l{J6R#!Wp c3W \0宲r-PBgp ץFkEB,2vtz#xw?h!)JfJ$^{>*:\\lًe&}/Zfպ.uhH1(R)ntz|SLte q'KVf ei̗K{Ӯu$c}(:|VeYue*ifxWhe TS#p~];y.L1qfd^,-8n!y]BoRR>RP;+z1z/6,8ʛkJ\t4Ԡ|3}d|fų~TFX̑l# HZPֆV[i(;H~Vc;̴tjknRRAQo[PsGFQvB[(u *cKdbIN)B"u}° urU,Z}by+RTʟ2!-v'(uS8Qo/,iq;y!oݥ$K*Bt)@,漑+u忈\[u_GbBҠݍ͔)27Ğt69'pfoy-vͥFH32}ѶbmַXűە%:{E(>I5OW}"3N P@]9d<oGg0/0dnKUfiILTkyCxM8Qi 7r0{gAP)- b1LC7(9ӯΟbǗ u u-XZ![jٙ(=ExfG ; V/wTI) !`4QGz| yxs̷ػdj--:RĘܓS} WKdxzyoƢ 'RB$gjЋt0^~φO4t`x-{Lk%PJXyL[& 2tC|7o_t!nY*$),qP$&kt#Qn6&J~;sI[bʹRږTht5 Ee,aق[8pq&\YC }+Jc k>Bz5\S3z-,Aks*ԝz?Pl߷Z<`[N ypGUy6R^vR.,nà AHMQpњ0w^☭Ë wHթ4x\2wVNP͖RmQ!P~AĊ͑XthS#iU4#m,f;MHzP6qS OE[vڗU#ͰKH*Y^45ktu6Wa;۩"/<ԦN ";kXTXZ:Z BA#mQ2 [RnF~”°fV$A\]̳,3=b05lͺKvZmRP) Cn%.⤡'YIr'cX7?:< KiygBJRԕ)#:쭎_rRAy Jޒ[n͛mZm >PtQRvV%++ XPJ1A%J'a7oǁ8<"?[.cR>zޥ# l=||yDzŦ-f '@U+JnnUv@@1Lrh~էF*qEd0,'bX^%jv2+) I IjoL>N^t:#d6 uQIh$n4A>zB6z/ۧs>`Yo؏W!!_T$WaTe"{ PLMt}&/sd]^a8[/WQuW 52{ʔ 'QG< 1`FJeoҴ%֧ï(GH HAR`kˌ!cJRRJA'$ _R&jURF-rg`wPzUWOm.ZK{ųZ[jZ 17@IP٫K/W\/H:J<+|w&P'^1IK,cы.:aJSuI3D+@YB@ uV!جT) jdU^!J/{CQ=桭}p{Kim RzԀa_:/b/Jd;lI<1V KXOun 2 ZӧnOzC =|C ̓_#7}O$[A%p)ZP IqTrQ<e[smv񻧊la\P @$w>s_ZvGEغk 3loTq\Br!B-@t)cZ7}R.iXK2uDdBEÉh!-"ux;j8<Ļgl1FV6ܼ8%Ҕ܍dbMOT1r3C87҃LM`g^sSxV3j)¯N6+<3khW0>LVۥܸΪ2*>OYXꔔ.n; ZH ($3}Ȑ$ޱȹymQqQ*Rg3nCfs>[rH.0czO lTRT;H)e\oGR2S ՚ QhPîep*Z#sJ ~N(L[ q՜(1PS8Πb>/u5zeCm09:Ä)$)@D|4܉yCn)@s>8%1mbK &`hHJ=sc㨹?V6IC췇2)Vu@!URNߣ.:/Ԥ!94ҠR$A)3IӦq.)Cm)N >dsLr-pFO.$BvIؤHL Aw'Ft$۸zVd2k0-ZKL'i~TS4P~gMVmoen6V<H+X x]$DtY.OonmRp)AJ-d)BJLW40m Rny#ܞ}Oas w5q;3l!kJJBY#v?oNw]˙[q(3T>Ms?Nu ~b XT2F⏀R"<"d$LqLs,b>\9%d޹tZA (B1l.1<7PRnmg$F:Q}yԚv|GG\1瑂t;aC eV~/-e :`+u6~#-i3-|(:eao; K&Y#k)S~*`pH;V3uM\7s^e;W_ Q ݍ[;+HqZG 3'M0т^8~|lCie$줇Zu&A)0k_5L Lg2^?pL27։ճ,c'ǹZU $CmB $)^f4<}| WTfƏ4+7V7qEᙓ >)lgӹ#A#s |EYn>% 1*6zXri}t;p.\Wl-v;Bu*^Vw)nK"eup4ҼV71'xMtC7+b+fN Rn) ΥEnnY3?Q-lrF tnBYnnN0]!)Pҳy\J_,`J]壶>O'JTH;UYZ)BkfG;MArnXrSf҈J`uTS9l@ #ƽd[qÑ^B~բ`X[]%QQ 2:my=*q7)BBe>>34V(Sj Iܳ̅yyym1WЋC{PF,Ki2U*2I'7G1fNӱ,w#>4v؁Q"dFo%w[4n--I ,x;mQbEK(RvxַyihZmtGg@TDG5fZ97zDR|3KJRI{LS^m…AJ۱KE]G֊`5(I"4tn<τp`|ʈW+KvYRI+PG<#oyPY)#JUrJqDx/گ]Ҥ^Qʊ\NI" Nr'Z,-3VA#*']#xK,euXh݅}i0,$oF# BZVϿ{[?O9Pg B^?7-?n7%}BKo8w-/C2ۤhs{MWeef]ƌ%jPsU7H4ȁ#mT5sՊ.~qA֘մ,e^7l!EKQ\a _.l:Q.m/5B`ABo1_Z(Zi`on̛|:n-jYYJSj**;yt]vXZ>r UV=eFOoѯ.F^;u?x@8{x~ܙ'a;,Ā`\x . l{fRlOTW$, AFuCeW'tfyJ]*[m JO޿'cN<~Rвڒ\CXm^e!m-& O A`vл&jsJ*"bi9/}͟~N3qo)R| 33r84([Վ.LL{`$=Etz>RhQڬ'޾;;xwegՇ/m1Rq’$(-_f_ ]pd۔\Z%O8!ip)*.dٟ\ӈ;ep8 ҃E ( &`޽=k>o1VϏޟ xkrDJaIH'ʢ쑕1̱l'1XĔ^$HMr<2wke˜E\a@" I VJ @]r =͸{Nxٛz3 n.*J8c񿊛~uxS2_Ų}\or.ᖖ q(3jmӼi}lۈd"Ň5x :M˫vvͶc6-TBZ[h-<ҍ.RiI1q6l= OďB3Uol@N쉕]>ƢhԮ (ӀWƼݯ(m/p"'SD\6S@U)3)DWٗ1^<8Ssq\ 30˟hZұ*-$y&qN =I[*ĩ-JX$ !Ep ?u>?I eld'{ϡj+%R8n*4cr.&MwLM\ym7 X܆{BW*P)ֿ1%^[% c3~HvC0$0\'q3hKiX~L0s~LjV~]aEQF t(I%P5(kim($t@L"lض7ٗUͫo6%EniI'JBȕus6uo7X -f]hr*$JIPLL :E:e˥xF#{[ٰVǎQZHAJR 7.M._c ΙweBmClJψR |ĕ3~}v]3rMns eN8J BMd ͗=T=M[Jԗ[[ͿZ`ۉAT19߆ǸgT-n-Sm޺Q %م'IqISzҚߣp3ضxų +̗[]9rO}Ѕ8 ~*AODPqT+V 6ڍMB69V;q ~mvpj`)kOm֕> Y*ԖmJqJNPk(|ųe n+fu{>~e%)##S76.u~v1MH]eZun)!4jέXNJ*ä+yq 0an,~ "$FU)MӗX{ҧPJFHRI<3HR̙s8^#妖]j;k tuZe(OmQK{ϷpnۅaD.r<4\[XIҜu8Å[BJFŷZTRToˉ*$N V)!W؞qonHIPLɎvЦ_Noỻt=mslRʆr;DX\0{Bn-|%E:I>) eKiIGA"#c+_a_a}-sTo,!h,(ӥ'8{o,Jm֖9JҠ H;\d+ϲ+V=5U&=U@"kpHI>|yeN`yRQ&ì1%[7SqZ_Q G [l0̰.r0uk|!V䙧9 q]D\B$' 3[M) ܁z?-0pO"k@hnQT%*!KYI ONdo 2=\r~X JvPy-A|)NO _oR.;q47L=s[0ڟJ4E\[ 5b{49/!S A6"$+h3zitǭc`N=Z1 [{(dD=QsIԮnܺ}\).,Q OmTLTc]TI=S,I˫NGJ ڧulK6&%M,-wj$0ۖ1~+d岔0R;>}.c]m[.\Y#K[mÁ !GΤ@@\dPtD]C ,,lKÖXW/sA*ԓ 'p8ӾNt+to6'.ٌ a▜ҕ$ 'z,& ;6a}l" d׊i` JA B?X3V._0[t_wzWbU)!.$)KeJޭ%m *H-nb~/ek{y$<%F@H QP~\K# ~bݫ2`2ۯ<$2'5vj8ϸU.8onEw\qRJ Q^h5RZ`澆DS/fL^&QEŮ#,nG}Ez?Y;l{e,w ḭͲ-3(%冔:H\Sռk'ƟO޶jk^l-l\ hHI*H{X͒WXC nI\Dt\Pt>9çYxEȻU8 eM)!AA H#q4s3|~3)M ?/ 攔)⮇kҼil׍`]92[:hh SEjHZ4PZ26_xe ḞKM CQ$:ݸFBDTʸ@u;$\㐰wp9/[ZdҐH` $IpxC')g^Xfpmk \(Jipe )*JNҿ閬rm5\- bP?c]"i;-~z͎\E2ʾ}b]҂MٙR PT%;^6| *c5-aqtb®Tu ZtT^HACΒAԔUX)"iu˨y#2Lp3admlT߄Е:ƐНR3ltc2͘^`xrKϩO& ֔ް njhK"q>nA56ToTaiHNw3zU#[kqRog-#F*2,*1-8->C1`ȕh%h% 0ut0`㏯9r{ZN%3p&Ut*<(A}޲ᄋme!&NLHzK/m$@ër\ub^ÜK%Q٭fA,z`n2'Xg{zw5M†+HmS goTTݺ [Rc;O_Ul7N5~JgAvco]vnI{h̘$ qUJ~ȕ$+*#Qo- 1i DDE[t4[J-;@#k8l'`&>WXq*K HH.R JT۬ ϨVcD%ЄФ>㟭Ynq2ߑJY4nؗ3#wN<6q8+ ؼCH̍ɒRǎ+ʇAmhzY[an6*\pTw&g^͟i3#Ug 6S2xܔTYy şCmmĈ忸i2QFB9p[›(`ILyTA:W-{eVbZVSLG^*teZ$n>dsި\">Мs1(Rl Z}Ң=a?3 '&¿p?:Egv7Y”5 ;zR{n Tl372)3mI{3+gz;'̃fjuۋDt6*R Hv2-hVY@QiIXI=#b ~|b:n<+W-qe H(ZV9V)^ W [.R81uF[\!għ-֥Pi~J G?KHo$_X Mw}u#}w[vt''Xojr6+RTu>$X$h ϏluܼP:}i ~ WYmh;OS0c}Q?LÒn-|7yMtJQEuL_#q.t$߶TیaI ;+ғ0}$m&O7BSCNT/@bUOrT1,3>^Vg|K ntc4,^[bXrkk*y NM,%dF{WIǣpr6WsEmh.J2R[T$$w/n޶G]CJvga1_>ft<˲E[BNJO0?*-bKlq:`97vqB%HJwYWmr J}׼IXI.XB.8C1c5/7Df,,Ste-uii)NdDD QoS8vgsrOl.k!) : 92Oȗ)U|4z{ R6yryAI~@$-*@JQF;<|Xf <:pv]dSKQI$%JJ\*JI&@ڼ{a]!-8BSO6FCa LLV>Rk[ -?dC>~K ԒLTN\ҳ\|Ee=/^lƔ~۷ p!.(j<(1o'55ۅ9^_Q$@)m$qm5L0[' :cP ar섧G)PR6Ҏ kSLo.I ΃HL+Uf$ǞB~aJI>UHGqlY 1wJAmQ.5!H*jA$e읋#Qư[5):@#} qƘ.W{1g S+.KJm:ARA I% $UQKݞ˷R?U⬸RbkrR#Jyq 3ݍ]ax nY݆N` ՞p_m~ Ɣ~0@ꍦ7P<7sХ8m0֙~|iL9AA &kd3V3ԋl?o$b7%-:P!S%I:/-;{R"ϙ> v~veKܤ*p|.˛*B|& DL鱤FuO%.!5 { MRP׊* [S%; :V+s>)cWq|VۧҐqekQ%J&pemy:aJعJu a8Y IB'۬bLz5w0`.1b̲)rC($[$ָFrïG~!1'³0)b StJQqJPR[נ 't[/fb1NYua>q+{)&48vp@ti_X/ît_`76Y-ehyIt۲>d`ݪtOƾ7p]4uqt8ŰۖU:mMNN\< >g̡:S\r6oº>Fټ& 3p-B_P]u)VڒT|>^~5X*GpY2`B| mk]e,i1fӃ~((wh\)hAz,|bת֊DbM\ܲ/*˄P\[kLB@Q;sgRJ9^a }%.!:fnKx~k]žY$xN+KjDJ;-!Zrb\0ɟ3N{cl,ö^aJR@Dtv2Yrm[ñ9L<~/P@U}HQZRU_]~>VU#q;8oo1K-$ʂS!3aF#=Fd)eֲ trf۴ٷ#t*=ɀ }RRPr\Q٘8k0Xœff(% mai -*I 2HpFO>,<97YlzٜBK@p4C cR%*+$q]-΂q+7q\0weIAK^'"TZSp6T-IHQ'q\M˩mC(񐀴QHLL ۊ_[J ̥ȹiwBKo! VLGTuK) ~4fNn7W:.RR6?pWEB@;V;V:oaٝ?RnRޕB;(@WL'yeyal9n4RYYr- Qp A.f$kb^[39b3Y0O"~Zug>ZIU:zj+Cjq2ޕ+`(1g4G;pI-^0F+ PP*~9bRx?:qUG)tQf#/b>4-|l$n‹)%@J[J$IGn/eL3FoEϴuegxei|! } |jR4'Τy!JO}xy 1a[l/x6yOqEt΢,mS%_\e([Bm(Pi'J@J Q>+Uu% ڇhc˷ˊs(XKw ,xA ) !$ל3_Xy[-z`q,* 5:[YQ J-- } Mqʤqµ׎9cQSR4Sme*p$О&7/`sLsQ蚰%ޑ1"}큤w$T$%)Rvw^ym+/e+mJ ('`w$ dz1?tbfZ,UJe.,MCqȞ |fzu2ԥۦJP h=:H$pT^/2^z6SK[+QJ Glry{±J ZĬnli6!Jձ+*N⾆Ta*mShֳw qoK;rThI VECUǷ+='pk k{6OYN=g10pTBVWAUXث5_d (U|R[I!Dn<%H_nm)r)q˕-ɒt.I5ɔMՃN"!U:'~ILХ^هΟ°kpҟUͳWTJ;$n*+|~*㦘]Fl ;|J$Hea+H}x,ѭ!%k) m*Alz;2J33f{&VAҒC>"S IZ['Rw)A @n7#i|#'rgIDO8L.bت t\Z]qqŒC}#V/;|t[jZwV}ijNfc;wik*Hnܴus(dj}/u_ EݵXJ|H d8WʄCZTڂBO vA6V뽳xXv;a´cƣ?wXE+۸\F4%lv (OANѽm8oV/L-HS$lW1| &aZC׎(옂ӱ ^a9b>u@HBQbR&` 0x i_"cO[0ԢuqI1[1!O[&Np[.q0$ȯ~a`±ba*PEݍ˗x%i!:JR@)Venq--.R][aLI!):v0A@ 0}&{@;l۩IqIԐvwHGJkqԋI*:TT JFr#ckƖYN5)(JƤz$XA&7YBնV˜+ ShMqBS K0['zWiROnGB޺a.e-M@Qp< }RJI 'Jg%7RX,m+JN1@ۭ3uw E rsVܤMQK2WDrJӂapԷuuV@N@ n1ákIKkDoGmYo}"|2-J ;g}GV9[_fSil7 w'`AA)0@ A=4@]dxOZ3qj BP!Q&Dyj؍nd9r lx2#~:s+JeחJoSh Hizv 0ŃnŮ{ʠB n@׾G.f MÂ$5)O3D5Ћ+:JZ5)KP)L!)I_pL\̲BIJP7eӴ<;wBU> I ;m-nKS;Dy;/}8-{.Hl᠐#x9Ur.[išKC ,8 .l8t-l]%N$)p)Q;;[uNcr-☒][)[\3YԔT  ̋lgz{֌2ۦVլYUkr+H O%(p hxQL t=TI߰8z_w EڛJ7RLXJ` &NOF_J[M͘Pfm.7!(^o9ײ7afK#$?sw[kk@@ JGL(yo*|lzBVuR7ݴ󺊢$7l|g PS-ݲN[/EL%@ sm%\qB#I6˞!uevJs?ֶmn[(e.1L F ,^Tڜa֒!C~D ^RTJvJdMfYiԠlʸw|Z8!~&v7eҬEIKeApA3V-yc qi% *RZ=PA`RfFUw"iM/KȆ`RGZ}')'u<5JTtyNbBϫSr GKJ}p!E-KJXPl4pڧ:0v}Y{jmusvHP6G('fZ6mC,u)P1l>tߤΘ^8ZZYb,@?̹d[ׁ5_~c9!u'-٫V2vaE­8xjJj)ZW1!ԕmڴ5O5|ђc쮲qn*BdPZDA ~q+A(wLN޵L\Z|J°caK2XevBuDI4nѽu 8-WX~7 AR0[*BTH0ғ5nwNIK: &XIm޸aEݡ HzR,j%dF$z4|,ty%)F۩o6.-u x+JtIksVfQrͪ58 Fj{ NZ[7JpuKvLWCi!0\XY\- įG^+avJ[Cn-b6 HL$ɏce?<~{N7mSx&_h\4 Z^DW1KAf57mjGICR$~Q!5լ?}ry٬K8>0` W JO(΢7Q'$طizׄ6<ŪV[۠: /NkY%Rrǂnc9] RanpI 'RҀ" zj1ϡY;tbvxfd Il[jlΧ oҨGykiprx,g\%EBISjJZ|ڢ`(~KPDG,1 nfKs -,Ƙ6 A) v);q> o'֋gw }͹[J+2 `%i:S򙥹no2j C%@ DNu#Z۲fnBqʕxh9+eRxlzW\/r* [}*/6$8J+mxñ;&F1+JdέjJC.R'HI<_ ^nmq3ڛrᢦy>*JP+Qİ1MOF%rp䛗}뎮P%-6a+IZO2_ pO o 8[aJmANԽ!ɍ<<ڊzE+h8TuƴD ר>9C+˷BpKe^[R֥ JR3QR!ub<# tdxm%2HB`jR5܋&xՌд<)@J[JR Jt`s$k'e[ZYd+QRq ;R O'`9&mYW3`;shmE J lH"AVe5a4NoW\3T1 a1 -)W JeA&u؅lj xaWy0V!\p@(ҔJR@h^?-*jHqT#Lo1Vo77^%ÏJ¥(93aUGD=?0l3&y00^ Fdny[> ñ >Pio{C0PxI%%@{U3S <}W$CŰe2\/0lR岻-o4TC#*X-DNkz|ܙK'ez-c i* JРRH_.3Y23 2u8]#2؋ ̄$BH@wy"f3M;3Kb?-kuXq3SñPR`ԋ̩#)26 PQ Y(=u,`56y˱r&pV%%D!)JRSk3|7[սVWS @_@cЛ5Ylg]ԷntH[L'@!BA&>%WM.2jao\[))|$)IH1,MO҆ҙ}#:,{&b;| RE 45$D2.k2܌ФEJ}ěFz/pP.lɶu-p lZd)&Nۻyż+[(JQ2I'rIܚ~TRP>BhN};V MI>ԻPi44E@6HLV.™RK/jK{(H0I2LPV)Y` mSҟ eE^( %m>ޞ] YۦіEN֥($ }>,/Wl)#]ɒ?ݫ9ؗ3^YcvO#XZ\ Fy+LKFռEW߇ުWpt}>ڃxEF >8Wqˋ3}r &ݣ J!*$bwA>ZuC3B.rK-RJ[R !2~[T\a8#sԝ-^&@dR3iܒoW9}ļ 7x'z%>H<"Mc0RO؇[3wI r H 'Bucut!*c4Y rq(GJ$ha3U{ȏj͵60r(ҷLq%GqhYCั;Aj!: I)X=ՊP–&A`ˇP>xHVcJH.)*b B>yZn.΁9ĵv8t}$ mT'bHs߯35=xGH@&&sCf贴@ΒyEҔ^SIЍ!S;Lp+W=ѣ=8-e*ėsW.2[>ǽt˻t ,-))W(P򀐩$F{EsVZj!įqVgkBPœRPeɒA0mgL.9Yܱ n%q-hE7~!z)ԯAiB}NDA$ΐ0d `qlgVy}&dY W-q7*㸀F}~Ue_cl^d_l; fOv{E,lȄ!; *Of]P1 T ?n6[iP䔁JO"< a۲u.ͧa Hgŝn)Zhhɭ^83?:K­WpCC,>(6P+35/Kυo㌒RG'(B 'Ki*e t"B uHW6ަn- RT#`)REOyW0)0^Y-^ianlᆴ[mRv&_ŮSn޴t_%HKi>Q)Lb+-<[[v&ʚCeJJLxgckcˉy**$"IdQ[1 IJӧiP#VRYU֛ư[F()E%ZJD GdOoaK--w!nOxFX)@w ƱKxfZ% "BV $!2"Ltx}}(*T& ~ >W%6a,!ł  I ׯ0kCc)v z޹> PD+Jtu }˹O9N8%WEZwjoY>< )1V͵mܼ)Y䨔m̤0EJgocb!OF$j\N&>@$&nebMڃ=ݽ !t[@ $Y'YxA7Lb,-S`8%EjKiP Lg==g[bXcxP|U)_rJ L$oZ3k JT6\BoHW!KG؂@X&Wʬ-L^-%(rIIH&[!\#@#{ktݗSsqeexR* 1oU';K<.EkJ\u-NgYC6w^LWRI2,(Bdt{5ZiېYB@10']o Nqw@8VTm қN!bY#9wn[q Iqw~$AhTFŸ6uN*ٌqYNrد~\]Y;7.})[,0E[l{{s^=wypVϪw'T(FNVvZeHQuQH $DӾm\ᬺfqb'N{u`A3/WYt JכmJ ~Y%i@pJmʘjr>wwBѕ8XAnH%IWF.=\8ҔVU/ >bm5%J;@gc2/V'\])C+\4B!?x~ny,ư̙sn77zҖQPtI Wg.gc9Z෱l)h!;hX`ZGD[$D 3ȩ #Ȩh {/jIA&Aoʽ/zi,p>m[.}6/zPO'Lgpx>qJBdzż^IN\p=PͶX³+7Wyo S]jХ6 QJTڒcy0["]+l*t JUy;O914elP}`IJ;F5ѝde8OL;17rnQ.(K  HR€'.Fg/8 `li :B B.!2;-D%lk}<4"$L=DY%f>cB®|M%_elbR& IB" פ:M8,[,/R[c6mJ[D.*ZŠF98 z<}y P"L۴IU۶gXIT #.|?\r N^{hw cJB!njTOd Ej7 &Qt¼R1ޣ,h}D͡KN ~Q߈X"JVޝv0Ӯ=}Wy],TaCVj(v_0a.:Εi(RNޠq݁jӍ3qv\),: JAy6۴h4bTf`F'c-Ÿ$*A1ӵjY_5|.rYYxoyS-glGm-x’SJ)*GcV"+BҳQ]5dK-6$N[u$sTS\|&Vxt60j\ Zt'NꞛSR+Nw@:[]Pe9YOHNFs}q,caBBPK&͊d%*>]Դ ITH2]Kw%7<6qnp ohMU *$(>"]ղTv- >#n\^8G=AP\ ۱"<Swl%aHPޒmQ vepՆi")jE I>MU8hͪ$߈>GǽR|qlˏ)GWXͶX*oJ (ZAGG[&"t}%(Y*IJH߁;=^K<  9eYi:N$+x#sϩM)6j ;I<YO$vQIx-JY ! 17l[iA ۿZ\ٽh 6c2{}Ecy -s>?Ȯt +[F\*OQHQJF^4өRTIxRi0F!^d'wi~gh5bҖ N"*V+Imha*\T?/T@R>Q7p:>`m;j++H'Z+JGOpdBOZ&ZHm6l#~NΤ K$ASiNcmR j)?j+t%kOzj5}Jԓa*;L*~ʯR)ZH'0Ԭ Jc(] ~jm3. b>k 6籪٬ @ ߝ]ڭ \$ Bs?ګ#}DZi Hj-<2R[QIt["p-cc{o'eAHHUލTm*OfTdcz̋kl/@R -9l H+)⡶o\ԍv#j`\)bRg~Φ9HZLBΣqG#u0ym-JJBJ$v3xgN(%IQ&VPt uPm&hR3TZ¬P寴)E2aJ\ $=>N5r;siaWxsn!Hqʐ!`¡JPA r9_*/44e@-ⴃpA#cY%щ`W-#̼Iǐ'R[Tr7I2Śv KB)j;#*d_V8{ۜ[»ۛk*JL)[RJu%;ť7iQͽ EX}Hq.۠Oju#zQ@ֆH[:$`gpvмK13eu!7[qQ?s]9"aawYp0I Q U2ќS N:o#{Mhܩhq7'$q =ۘvsrPn–3yf)J^0Dw"aq&ŕJS}kzJHP $x(V+u_j~Nˏ_: k×63 aPL[- R;`^X qL#,hij-$q䲂i-')kB Ӥh R! 7؊r#7GRHH…a8jmF€T$ pH]:QJ8Y o Z-q琓V߲Ctd I\e:͗aW­._]ųO8R`_K!BJ 0x)$QJRF"x~ݻ`|qtSVcޡ:%/V .bcf[| BBmZRSwd%RAH:90Zi{g/nR^{mRJ!3ҕ@lLy}֥;Ͽγ^`S 'RPR$#sDl'c.Nf\-.QfSlŽNL$,!}lkd~(qGXAz3^"0͞s e-[e(xt!lw( PJ[0JNG^{סzBU9]ڹa8x:JW:L4V`LrM$GuZ,rZq6IԠ0BRA Y|2/>,}l"-ㄡ@Ai&;~Yϸ=sypPkoh- ;((Ir@;fy7pVfIZPJ|Ѱ!:S[ uwo4_uA$4Ju'hp{ᇫvn SQGKz֠R %:D^&ư{_7}KP dsRTc(YPRg;2 7fV1gE:~٤V=Lv\~ުfq<9ױI0UVTy@I07V\L_'e^%/2^N#xêC2% 0tȽwɘ5O^p[rfmJ@u.;m- DԸQYc{#6mZܻh0 J[!mHkJǙ-<ݪH Bz>Å]qDKZQ$IIW[+^X-.@֝iL X(FdhG5v"aSmN0PIF=NR :(W nOnK@R#TmF )`y@0h.(Ƙ4~N:ϵDNis@}#LP >&dR?vZ&d;o}92;ς3Nk=Fb`m8F>.Ko^h ` QZ/]eMߴist!ģPJV5yu&7 #Ӽֿܾ#owtBZWVLi|X6ڞP M:S;da_3-1ޛ}b6yݪxCZ+Q+qEo HI No)N;u R\2WT·Ӥ@/q:ayP%*@*@JW)#mUZjIR崭a-D[d?$~и˃%-)m8|ڵړԷ :3=+bwLמT[0yD2L{'lm%ne)j wҼRYm '%`Xai7-mѧ DV& l7zQ7f#Zđp 5<ݫChR)+PwhIR1XNbE(>2I+xNf~Ws=lATxt8[H'x tk O8BI najm`?hV6,LgGT2&L䒣}y\bNJVǿˊ涳!r+@Y JRQLݿaY֗ҵ 7;Mkn ~eLIԬ)h@#}@ݏzQ8nR7lG"R'Y+\Dm *VڤICCXrph{;koq@=Y6;>'sog\u>g*/ƱRuέ|F+2 5Z&PݳuAQZ|B 4 wQjf2-+) z5v $co֭AgÚqeJ9|;[+Ru5Fē34gŮ+O667"dԦ\wm8enu84;: (+iT}% C}Ei xtb)EBk7 KoQB"vOvmԟ7OO1 0 cl жЃpD:\JR,%ZΓCpV uxm-4!) BQTAHA&R3 l޽x˘qFImW}y#oi>M5tͻwK~g#-R;If+) ie A^"mǔ)2qkUQ͞#tqK.4%=ޯ9bnq[ ﱢ[H%;6kM'cҐ"X*(P;DPQERg;qJA'֡\RRBYKZ͓³gEEaRiY#Phu*LlGz*տAYM^ao \kS~?ޭ1gZ(RIJ}đq&R)d6@:WIo=J1 2fLOYmœ -nӬ0  `FїO0+rN1p ۵,]kJu*Jӥn(!%(JD] [Qu~CJ)R g}=MUi\w$q׷oqp;++{0 CY&]]JPy`V:i\Wl.~دmA_5)I񭣎R\|6H&PL~27>o1Gp'ZE&d%M }v~Z Y7خա4BJBۊϷw6*qY,<3'IۉGVFېI)6PiB{!Jͺ: tK ~tԸ4Od*RVRLJ܁~d68z.mn8A$=kE덽f7JػOhH)}jtuIm۬<R~; 1|w[G:EFyQY|Bm8фIWbTL/ؓ8j DȂ)+9w+fX`X @$S*QOi[mXSJHRLa>WJ6YaYSXq8Zzp]^ DξuaYV8}K8זmѲVʎD&9M#*šu/, Jv=+mw׶JmZ"C*b9?% Ņ[?]:YEڒImvJ^\`a#h}y!J: IɭYsjˠq&JL$թaO%Q,h R7 גmvtA/jw_^a7mW;j xJd "U1;xͰE.TCP 0#/[W)O_!I&|m=8uN1tpE!jyTƿqK%&Х)E$¨#xָ54ʤo޻q˧^`Jhw?[l9T Cc~6_Aa6\a7)[p>TT#'Lǒ7ؿ/:0YK׆0H3$dd܄(O^N[jHx`ZR*;g72kHHj G;ZUޗK>T Dnk/a _dZJxZ¦-JHmiKy}c+7vk%FlXZЂB+I#Z6 nj*'dH·,.xmBt'i5,$-Tv;ϯ].yE>X Q }V([cYamݧn" gLG- |b`D=wTG&G(I?lZJ|S Oz;13`лQKJ+JLEd-Рf9<};Uy-/, 2BH<8ڬ&4}q)]RV&JI${zfZ=oh6y%Pm R/}h 4-}+flyX!6[1*>8ǭwiK;=7l߉9}U[Sle+qa |;,!&{8DATk}B(Y0XmZ] kX̨^<˸ovnR>bֿ *H޽pf2HBޮl0ۼQݥ+NH}ڝœvVQ6(m$D&LIu=*Qe)RVBPGm91/V0_[9ziJ$-6΄r@S $a^wQҐ&RIN' )TTJR}揥|ҧߊSTsJIOHHO94?EQ4Q@9*XsUҮpեBjwJ\ .zA*eMmIiBeJ*Idi3>bJi{Q71Fνm %mQqp+Qv<+\bŢ~(n(@Y vGOk0o-\e_Hq0XI w Vnᥠ q:Dt c옖[ w_I䘭$d*U9-פv#2 %d"!`jLTF),I;{w.\F}xN Pr*M(h:@hdҋǫ iW]! ư۩ˊ(1`i;pNwp_Ki@)( j$oSαF= Z9Y)BOj3cxe=u=]"b.!AzkbNte)+l4AP2رomtKmFD[yq8{lʣNĞ  %!d6j HSKsIrd+4ϸOK;ar무wV4I qW- ;Wv] 2RP7${׋$ͱyȮz5ڶB&VAN޻H޶N,ck{wJ|xL(6d[)HnLWeJ.3k&ٓ8Pt*LR ڌ3?d:b٩(Tu~鉝gizalXk`GfŖK mAP=TW9c7vowt:S>VQL=H>USzíTxb%Egu|:d\ .;6#Wv@^|loc{{"LH+YDJ޵lfa8èN{5HHOr ye- "D " /nùq$Kܶ*K@qO2L %+H{rm );p{wm/qHq$)'" Wxmv,\TtJA̓$WxfZRYJO)GӃ턧Id@"$|i}*Ve(iF",; <ζM\GGS2y HmV'c)5i8cޕee{hoI" 'A.qd*y?I@ O"fl [6fk>=mkta(GCyN]r+W6AޫYRZ-,> (;vEw_8S8f  ڵ~߽CHUTѮda15YdK)Ӭ˕orYHEթ~|Gu'u:kwjaYՠ[`R ԭl%1$)) )]\6A؝I:II $+0lREJØx$4ZgyaSpBRS s Wcq ݃H—bXF#)h|+-P'cWscxJnvt>PA*Bʽls%aϺv^e8yy7IJ5% T L 7| 9y7L:XM@($ytx0THd' 7;ï[2hxVݦ4PVRʈ L #mpж}ն>a IƜ:8UKg_(mhRU N_C2 &//ٽ(ҶIH+QQclzxb{ߧP:3Yìrz˶,[;ovnRFyFB}5ؚX8,޿[n`j ձN*I1AVRͼ+ǮoVIî kҶP)(-P'1IXUj[Ά}O,b҉ܰ{1oD\[p^ Z.Vի!8Z߱+Y'RDn:y\[8 >UL}"14mAI@S~ny5~)?jRopq%!),0J)Rt8]#?fVJԌݓ.&?hj-e2'k%I'O$IuѢ?y V-:֫h?dLj\&,wf8Oq|Dj٤-;8^[qlC.PO/[Ejm.V(0RRPg,KT N.Бa%RRA fy:C[Qy&oo9=6b^͸+umAڒt %Z1k&Pk[ ߴB5kQM$:udUh߾tal-jU%F6$X%Z[޴^JG&61mY~}ZbXhİ; &PT j)VCku <oؓ6&^'pT)4Rt؂؀ո;dmW8nWYam7tt)(BF۔5(ɚ+jC(g~vVJTZZh ~$ mrxX7p{^}}jы'Y#(RD`̊yl!DRwz8$pbKR nvPզ*ZI#n}*-ѻ6xi↠yhʮ( ”d̉x0n[mAjS"vѝk@yJ[VpHJa}{F'6\u#-]4nܽ)Ą?%[wz__^1 ٔ%0<3'HW͇'X3p-uKi.+[7<LҷW8K쫳u t )FOa޶P=F?쫛1xɘOzѯ77ZmR`$n>W7oZTn۸G[)q%L4RA)9`s\Թ@ x[ E0pzY>Orޕ+%\:)JD H+Ř>/uL_Y:ZeZ{b;WVLۃ* :CGRa*:IRWDAi^/=N44v6iⲶԷΥ,H: vG& ,OIpN m,+5g x}Y-J+XZ7b'm5xM ˃ʀBQtc~H5UE2Q'un{aA[B" ;j: UYX͒niCiJtPҩ 9 lyb![!j *V | L-\K ywJ|R֭IsWNJVN05b/7ٸ[HH`y)LIwDؽm6Ґ"y}3ޱq4[8Vir*0HSwJ})p%dm*s8cqFamHw;'Q=kv]ZRZet4'̞G3EGl^:ʿd3zN9tӍ'_u[D{XBj~;בYdJC+{ANZ֩[>ʳc9qh0$ % X}b=y&oxf]LWIVoz7&Џ ."f+n)o7Kj)$KG摧@3#8(9ӊ9LT44zPDPz@(Hx{{i(Gz !@:( P܋;3^z`~6\"PȈkИnfY<3. h޼kg_ybo0Vvi[M{G#]T#G#Ә^,o /gat pH%@>SX~W 9Q.fS-RA$cV1 ֭iwǵd@#T(H@5? _x,a*'d'" qF%ת+u!Y{ܷ1kK?*K(qi* r;qKGPv'P}ohI $0}S 섄},M}⋋.}yՕGb$50`)ԥ)P`NG#yӱZQ#b@t"C͸*L)w mm4e&ox?f (wEsوK-J'>*#mcfY2<)lw\̈́صEJgs=n'%,/-nm(m dBg̓sV 4֖m"m2Gҡx}k+[^ݫ?wu'î^CoImRDNl x_N8AA)P!I0A5umeyb7Ք pD+ȀU{VIQk9|6n r"`$y=c۞K[Yz⛶eO-)R&$ }Z/ :_ebM5lPQI2v0@5װl-GƗyK $@tJJ Jꝭm}(ALJ{@yٵ) x%~sqҲ ؖIԙcv(ˮHFiL0$@M{8qX ;hGރ@@ފ"?ރ@Priz]P> ( EA{Ң(|KPQQGQDQ tǥ@bb{$QZrxF0#qԐ` NϕŮwBTP-[%+)< /OLQ KkV-5$0bgup_(>k [^Ꮆ e%; xγF]'SOWmcx,q%m%*XB@>ޠﱣ-d<06ŵ)g!! X3wxLlsVưmVjฉ l `JTX\#0]XTp@y+%idžu2qo<EeZJd*$Dy;l+e mHQhPsV'a૷]sy@ď,$q `&kbLX+t8) A#|6=NѢ #Woix走_w`zJBC xg:L!8B}ې7j+>>]\:U{y.֍y4cEh{m/n@[} Iq DF (Nנ6562  Oo4-YR@~5x OARJ yn*8Rq7)R`@ ku vG-ԍj 0S kglJxjwQvM+kxp]B)1Z&o]5O :KȟE>GүٗiCfeFHUb{J**VtRԐ?ڗz" y q)E@ED{E@?J(w=#TE twS$(2cZC[unۥ'}*`iXe  :H| N&7v-$ɒ,,pT-°SwWO SaiHV9,O23e, XVx8ȸy'JJĠȟN=gKF(0)$ lR~lՆc^JxE:`nK>p"LGaV4*4ʣ̤2<Ś~zsߛ1geh -TUCJ&6ڼ׏cY8٧qĸlOet j P)H;[ SxUxjmR#ş E1pkO-V &|3͡4T|nu eŶTt R}^o2f kELajD%*@½1'عߢ96ٗmG)Sw)RٸN81 ۲;|ś+m4$BR?~k[&libem^zf;\^y/ql% Y[7˺U @: o\0tWخGlbqYb|jR1aصzAZj5pwB'W}}+6b.OEnr]I) p&vi?zϣv#rM sU tʖxҏR~;#n?#Хܿ_%cַXM ueF,H1>LŘBoeiH̝2b6xZst. %$PmH'N;~o cPTB=WY<;gQ3֍jAIIDUe_)m BJ4)=vRշmK[v­$UvnCJʓ0kτvW5gu2-)Pm$wR`v o  ˠr``G2&U e*bmЕ>au2ê[^^MW ]8GZ o`)"Le>>Eac@uv 6 H6Lکx)ֵƘtGb0 ~Շb Eū>$$RH:˪.@)+' #rH ՋD+]onm`Dn Knj[h$s1>ՈXav@P$'1=Ŭ8#WT>I6q)$Õt_^bӉyڸ6zP#x5G&W \Ihqk:ֲO@U$M$VΉ&BT үVT+*R -"[m\Z}5t-8ťfXT~J,[Y\][4[maAqȕ˶Yh/-dRvy$О=Y q>j-#}lxݷΙ1ܡouh%VRI6$]gsǰT`Pax ._tU;$'NdcSDĞ#jy(PYOCy1~+ly\duLNɱ[$wlUR#6&B[VoiV$F(L(k;-a:skUí@mK g@؂dT굞e6XƒiBH) !fT(4 m-˧:a)d}  P)%;7(ԇKS,D=<atӺ 6Ldʼf*ZTBZ#`Ics8V1EݩAƥrڋ.RjP)O'cc{pg/X5^ vѦRfׯ,# }C(CB)NޤZҩ㴫Z}nK.!`&A @(}A"y *$'6T hoT~1toV;>ͬ7(KA%k)&9$Fjwmm*Tr;CeR{nM]3}ZԽ!K*4L GwUp@SQDPDP*#ފ:QDQJ ((};R(ڗFLI1"L ߽ qDR&HozD n)iP =P*$ހ∤cމ ?:$P j_J(dHҏKl/r3mդY-]&6iz?zA qG"͂h9nq[z?ܮr0ώիp45 Z5)12Adžb,bu?il[m/焲> 8<{dW8e;%f6{ B,[FdJRQ '*$F3uN۴Z#hV.Bb)WA%+^.],F\>?+쬱34Q;w|~kİԋvQahDԨ)K:AH.(8~B̶mY QJ;)2$v"A,ͧpco0;N}|GDѳ b7v \BuRɒ{?.Kgm^ЛvNxPPӹp쟴yjS)J;h#~.bob Bmmii#T1Gܵ #Ě4 ?L6_cH汁EI=oS :3=+f&pM{JO܎`b7~X'aܩ)IPq~}$]A!Aj.pKEEi) &s^cÍcM&"rڽ&?l-ŧۭV-/ҵ PHRtw1;o]¾p4J5-0t w>Ez.6hh+N|kXEJdQ5J"7⍽@3y@(@Ooz#"z&doDRp(@0=@4RGjBTI) #Jb'ً ˸Yroj٢%U{W^t2ǠݗmC5FݙZQ JuI Ki$ ̨A0]A- N*i˅Dϖb/=+m my? ?*>C,}_ٖR}r:Woǘ2ݰnDI+P#4v6@p;bWUZ+ p;{؎,q+۫բ!#`9`4R2ִ\']Ys[O'! ,-&)}\qoTm-ˇ٦-YZ܅\7㼍ZB7&$Uf1?X%35Dz/TxHJ7[0}.˸ u:4Ar xv6Uq뫏 hWJZaIAҤɀJ3p>#37B~[q|kL)u` ,)[>cU{S$ <Ӹ ԝ@AN}W xEc21l'˖ WlK3JT[#N $sۻlnq;BJRʂH >fngpGnl'Ml]v7X g&)J.O;A 2l(R03@ێZ(oZ?s{Tf9vfpA,:5O~/>Nd G3~Ø[.m siН>b jCma(!I‡bkgJyK PG8O Eg3xOP:ًe.Rm#e=ںCJ)Ԥ;d>~CnQe}eZN[<-rV2 o]ش+v)e,1q4}HY}2n4qH}jp m$k@ 2$ |Y|=y{PqV O5 1,x1;U)Iy JTI#VJW=Q-p7CIQ.4Aw#\^ݭA L .DƝ=mBCn B Eoocacq: ZOZi'%RTK5q2%[$NOl W ;?/KmJTDI3>.D 1/ܾwZL:TN  Y8wH\!@D#}1X?wpK 3km moEʭ-U֢ )"`2=k4ڗnnNZ€)@@Qa+өj@`A yIܟRMګŸRv}#+E6b[_d;i 6FIyڤfT|"uϙߟja4VNj<N9#[lx Nn~*FӔ\L=bVͬ-DHU\*k-L'm@pv⮘eۤUjI&"}'XkVh%.&8LHqPT%KXQħsc*za.uۏ^ߗ rœwNzt<;V0w=2&̺=bD~Bm(aLq4\1XY.))SA +~J/y_cV+ Г)^"[E85r#z"ޘ(jR(@2=(p*3F`Tfz&s#N7h4LҊqJP ԕF$y;mT艣V ɵSlwNBPf$P&-/,|_׊ )&[UU۲@Nf)iEXM9N M*"&"DQ@)Q@4jq4E3M: {v+n6;| #ǛF#s d&`}#z_e |@ O #؃]Ce8Ͳ`D\b{Y%䂴Σ9XKԽh.`⡨.~IB$v@6pSB][-jdHXۅVyx>2 v'I==>U?炗ޙ抭ancxHp7'Z@'o:^ے\\ UAqN @UrgUqtH*Tz{*rGϱyNf.^,$異hW6ݺ-5mR߉~+lpAKdrVNL-"Lf{Ă IAIm6)@ Lίclf1d lL:vkNZ R[\Ul6ԋ6vܿza.],G;I@Jб-^ "_d8 zPLJF+ݮ]U^S|?¨XT-FL&Px=FŊXFOje~/.,SSxlfԂJDD0VmmnwlhS`TLǩ+ưY-1Ve@ҡ>8eX| ]YM^<݀BU mڧ6*P _u&Nf(ZJBH#ވM9N M*"&"DQ@)Q@4j'SKRJ)P*ZBA +O1J Zh_e۔0|_-ۧ cc2T$[e#`R  9;?bl2\,1W8s̟ eKa[cA# S7I7ݣ{Fv)(tw=<}+B2>Lbm#hVV7c LĻ;0u[Yl;M)mƖ>De<9śuR"NWF!)JBzD9E]\!Lwub-Y<6ܑkwMsP$*#FJ0'[HukwNwrEպ+@`﹓ɘ$f%ofbٕ!6(InHӤD"~uuvק}os aomum5lҖRV-)`@6xVBHd1ڼ!mk8޹|vd q( :LK[oڈ#TxZM)3İ,CW_m…q:^EܡpT$nzvOˍp>Dw#+GA_]LE_6PJJH@>~|үv*q_KR->PV܎Lӥע|^LJXJ $$^O%xiOXGHɣk 2Ll+)>츨ˬUЛT2ˁA2G;r<-WJ`>\V?u,t_*P*Kt$&F #`klXg9$8g8eΔ߬. +g\[,2ԧ -im*btJ HoSvZ`̅R=tGˬ-3IҨaKvz$߸טK/em% QN7˽WwZIL$?کfn><}Gyڹ{0%e wQؑT1 ZC5lvnW]Փ-DDj$fu-RT[HJ'a&lØoN*Ta+HvGϓto_Md //N\N]/_YkbIKi*؞ݧv7lslkrӁI\^H#u@epl@ZF?>Ccc0Fi[<&nw[G;G)[)ĵ Q* ofK[/C.'d+RJ$T0ܶ!:4#2H׈E}ʹk!hEI*)Umf݄+:aퟴ $靽{F':q1ix/4"@I>b7)ʛk9. )ꃗxv4ϐxڒ~byr6lZRο<URs<֓X÷ǂ aJ.L ؎~EPم| iӡԽD $zW-[6\I-Ƙ%0L2VYa`fҧ &EEPh"j JvҠ444MDPh 9zHH@1EȠ@(4G}#3ȠJɨԢF3ڕ4izPE4zc!@1J8sA q@\صcx.&9mzyw\u u*|#aBx 82`ŗ)57L7$m %3>R7;O}o }q\F (&BTOt@)'wXz.YSL> ֪GQ̙uMa˅+f v߆fHS V2iciԬnٴ7pYi*y'‰ba@l74zT.SMF F3ڕ4izPE4zc!@>slC}pBu"@!`V㊏jõUUL!Mn, )')DrbQP#: <l,[a+t qIYQLed׼5$dzם2RWcp{[va<В3YG3pz '>L-ɹOW٢O5*bLoY[<Ɣ]x|ɺ^kϖy%ȝkpsXJ!)o:#R;k*[ JH%Gfca1UN*O띧+\fujaIDJ&I;iyľII`zoY_ܗ\iAZHֹ-. %Aߊ+=wc (a`$)*QuټwVؕ[$ҵzls 6q\ Hu6oJSLlR; =M_:RԭO}u16D jQ{o~@JTSqLň1`WV7jmڐ%`'+Ij~j/!5ȝW8KVwLKm81Κn|N?:=Hr)iV(Gw'lBjT(H~Upr{xʕ#75YmIB@I*3rOݠb=jn픵iI͈6#Og6Y:85u%7 eN`N?50FA4$kye~*|'d&pus |Z8+×V]VI'rj2eG(cWxN1lFԤ;nHP$ =*Nyq}oͨPWq-|m?3l8pEG^Y#neLw+bHqQ@3PZGS"_ #нǰ{~jd?; r][4P(y;W}ܣBUpLơz LR[ZԖGc8Y3޾'[\3Z:d 6wWrP@6ZHBH yƯ %t )"`p l'a&q%W 2?ۿ WQXVMMu| k9CgrVw^HEWH;`Jԟ kV}'n} ULu0^cwlV[ں<44{A1$vEϛItruN$%M^83gX2R|Tc} ڤs_9(N0ƻ/Tvw 7pPRTwT?g٦GpjR6#a#I3޵[lV+J[ZZ[NɈٳeY6"}O y.x9T3y|).Aq 2|Ĕ)}@ܤ'#BO ]Kx&ah?f|:^OI=`'_Mܒ~NI3"D{Em-Q($RRn')%O-fJnݵ ~ۻ< jҥ6A%cN9qfa*u)iBBˉV;O0Glβ|[Ѭ5)&8>ΫJ| d@:!<~sXMdVҦ{R4izP(Dy@Lw()T4h"Aڀj@P)ST@hqABPD@!LQ@*~(}4R< >4ޕJS#Ffzg^DP*b@1xG f (PGm@/Ztw4FY[`FjDB=aczG&8勄׍a([!Hu* Lv#cXk\奼&ٔ.(4ޭmo6/j\(Ʋه8^fl:)m%%Dl>{qqFU X;5zͧԷޏ )_޻lf_!NqDƹ;)$Es-tD9lBo\-SʉͬR⿒E8ͥm()u/%\ @Gc} e1ׯ!%׵8W;Nج9ۅFzHP9zwO T0^=knIӎ.\3S]bvBdJ;V'0 CvƹKzQ>&P &? ﺆve((JJ|$G=}ynS'd ڇ[iؓmGHjN"c®ͭ.b^ylY ZC/yK&@w#y0͔.K>`S"#PEq&~*xxtBԠyydcYmqر ٹ%\Vڜ֯. 7kq z%ĨUc]3ѷIqOxsS֭y1ϒ.nOD:csպ33,()%+X kV\p㠗 Ɏ}y8SbS+/V+jf᥄ܲ4.G @0I+ܜgd<^qT Jd3v1vZgmIAe\rRSPo wLt(d^t6yr۫17\qNJR<ݷu`n\d5o6F6Jdmܘ޸VCj6m)Qߊ,2 Yy7oS0kme.Z'O̸HFYcmfXrm ZH9*GϜZUm.a*J\aCK7+LEM~ HyIɹ?aJ;ʌ|*@mQ@:Q4#%&k}ͮ_`7Vaki$%[9AUؿfm@KJHp=y/R5?X]D}G([8je!Rq@")JTE#ވ4E Ҋbw(j]Eh4 {EEh<QLoH@yaOb勇 jZxYJ0F6e I+aNVR: 0>fjYaY)(JQ,DN߉;zrDֹa4jߏ>GQ?6G+&{ZÒ #uffYH)m dk u|* {TRWeG끺-)GQ'hh rS'>tԥ!^Um ^#pVMj'9\[y.GbNie$!D+,={hSI>J"y).$"%0jRk))QO\nAV]0ŦyU_;zlAl#iz "7[&YSGq ^AI{"klk~qm1kUV5`+L@x8IYA)^m^V0PpX)L^ @4(ڗjD zE8(kuW!CЎV|EE )a֏4sN6Su,.O>TSs8.6&LHB}u + 9>r{jZ\6K-ڂС؊zGݤ0tk[. | k+LSP/ B$$ڶ|lSn:m'޼mVCWW8oHB_$O9hJS؞ý[,PL6C6 ;}Rt2J-w,Ca%A{'`k^iT>HٔF$UجsRHwX<.%+VK]ʕ#bjHYo1ެhX*~s[)ԔlIJr=}wB5J[wNiJ[n:@ RGMsJ&P靏­0Qnh$drsv-K@;I =SL6lyLnФ(AC"b,wbmij4[!m<D{D=ɜݧgbpʕ[-q~ղ@#3 {Aψut--Pҥ0E iNsrwT|-%y4-&Ny;Ab)K׎XL%K5m! D  r52Cj?Xx>VkkK!:@p%(Jԟu>bJ <,05vGlRM稘Q/.R0{VSJ}L Q%F&jA[xڽd5HphDP+* ퟖՈyhx XD>H6MJ q‘H#y BqCm. `ۤ>4 ڄ( ۑ>p'iŨ)vՅ0JlϲLW3j۸`MO;d o@?E j`P5(ıVmQKk է &>[1ۼ`|B@yߟN"kQL5 ,jxl=+eRRPI `*zMTnõu2ujߊglɻ/)*5%@|mޮKKn:B<0*j!G@=H'},%IphXA)1UmlV񒤠%#ߝmSmWXdI}+G))z`Ҋ?wsQA(Si1.@ހ7((Suv͢JI@!Jy]` ێj7ptr&w;[kgu{j~9ya10~'Rw1OHPZxG Yq2H)(QrjqM8t˶6J ;M&b"&"GHEzu8ej)MQ#&fJhz& @$ ޔӚA@[\jCM%R$:I:e|ڴ骶oa)Ym u8^lt vnIR0efZY)mD w~aéDj@pPG nm֥i@d=O|Jh3Mrv$-)31~5H@P%<[]hKIL-E!+n?kd[:CT;ѕnR IihR TY\(&4[֕  WXC(ԒJt^%E՗i(  T #kW^!ٵemhimE$Vņb&4-+dPMӷ=u(Xnc;w3USxcRcl6l:h <v?eW+FrWOwW/>d[爯()I #c&"43^I~B+QpNʕ#h>gf8C LS-'mCS।*"IOR@>j1{{tr)\WV?ne8iB[;H䙓Mat:Hfq,m(&3DҚ֠vzѺ';J &fiMQJhyLPMhJiwJhYl8u(QS7%Ԯ>?BN&h Ĉ?ҲɍdLeIR5yJH>\y85 4CI?y@LdEa;*==1śl2 oOYR\U }V\@B$X޾FqZ.!-۶֔T3wޗE|2e:R@XKW4Yzs첄@vniŜðkᶥ]4+})ǾVvo $'mMXb[Ke);=qȷ dpL97%a~٤BNXeiu@,/}ۓ^`.) mbm`P)AF&$~B܆/1%iB|p?3ۮ?n pQwE rYJDH$GI  T K8d @@kҒXV/ZSmd*qv'[*t%Z"n av X?|$com I+?zɋ*jpڲ%@)j$v'oc ul* 즄V[ lHf_eۂ5&OIip2 L-fXO> 4JIG ҟ·gir%j$zڭ9x֐BWiQJ0'~{{U ))+@fH&ځ4M)A4I%D`w/JTR#zt8\P qDAEJ}S"vɞA6 4(4MnS8#j` Aށj"}(N7w#zDoNwN:qe.c 7$pԲuU*RVS*bUmEEBcڹVxme'gWvg.jZ\JO,o+ RIq5Лo& .֟.PQWHKmE[ˤ@`_hԗLҤ'qT LDm\tilD~Y>%R6H(rS;,ޔ8$$zOzIPJw"7$=Ұs'p}]g5P "#W )TQPA nݐf'HP JqIKgyp$U! ӤR?&`BwQ^S:v15U)ST)oǧ1|0eiJ-PB~_Z.9o)=wkbRIY5fݫӌ<*HjƤF))l$ZWTCOY%_Ūg] 6n9rAa0!#D$92})s/Ԇ6ͬ?+Qՠ)RK)ƣkŠtcj`dP PQD>Ejw;@"7;A]0GB5g5}N[!JhY3ڛ6Zx.[CjZJRH tlQ* R=;v5j.K|A=Է6 :=KҷCߎdmϹ%JNp^GJHF lj}f<$R HTn+YTiH bV̥>].%L pOޣkNŪcD*q̶ e$p@=pB RKnC`AߟqҖ*ԇ 3;n>ٛvexhJFoAS'ifͅcvux!-ܨHֵ+ś[& RIsDm>*v >SnOE'cے&<= ?ҲٞLu9-4^>FD@;l &*f1%^Zގ;DV b4Swh`Q"bzʀRB2(TJ^kIR 5R)Ҹ^iT2551뺺 \%${Bʏ" XsBRIFpۮ4C@$#pjb4tyRRFkHM쵖 M$$?ڤ7&?-Ŏ,-JnF\XH#ެUyuxRREZܓZE6>er%%:_$ m#j6jCXR;8d!#ҰO޹pZdJYY|Mz% I35+ HY6t [ՙZ0#*+mmZJO0Y&2 Ýv\;+%O>Bԁ)Eh}rg߶u;nB#'4ދnuqr+W&];\0ȥ|rm h:ӨNpy >Mya[%XC^hGnvZqGu/k S|b*m, t̗[%*-k얗p l]-V(L{n?ެnQnVgOႀG1PWL"*o ޴N8Ǭm<հ>TO΀cpw8$ 3t"*a` 801U H6|{m8 tB( ډ ǥ\PE>@(u4ڜ$!%D 7Hni4 F( iڢw yHSQ֜}hRE3GE/:JP;zQ0>TL9DQ*4zӦʀnhc@ Tz4zf޺C 0u9m̯ Cq)N%*Pb?P2KnBYLh\06.-PZmE*BA^ʝu36ְBeM)k cI"|~ ?cqղRZY) *)'oH Ve$L^IJ2apí-)*TD `W!9v-괺%ljP$irRؓ$j˥fm z>nJTC;VR4@1BuS;Ten<0J簟oUf\هCm{$(!Dv/>.KHm">P@֧st[s'DҬxM ite65 噍(:\=FZ^ZF1xpV`O}~qbL@LsHWP{ҍx*fEZ"P֝nhc@ Tz4q@ރt%3\޸axn.,4Bέ = =lN~VL2BqpVrwe+S GhO_wԑpi F7;$y.FrO o᝶{6BPX!!Nb{Gz IVkQm0H<|WO-ԘwiMfIi.a,KҩQI)@{ǵfYyQ:'\^%[-˴7)+ Qg,Yq q=)nC,,dB)MmYj6ە72c>o5[;{pݻp}Vσ:)L9o\u^K-+b?زJoĖ#UTⷃ@w?JgU[aWChR-ɛZ yѫ(sG2_Z~i+1E@** I֙wEI((jGJs@Gֈ>Ti@L&7@hOoL qE#RFG 椥O {wojqGg9mESm(J=48VHTB v.aj~ݭ&AgeL'f؀ $))&=,B{j 3w#t{aۇ4Tn ę2cYC$xdv-;|y JO OXg޼jg99'FKr,/`6>J*[eHQI#pZfGPzwb9ucu%IJl8;7y}"[]u @I'{L&?l|M*6V{SZgmBQ;8NNenJZ@鐝'kL\3 TJbd'~w0j% snx4sP3+1$ H )FRU QGsUXve-6\ Im%lL34ʈޅAo )m@Gn(*ʀTPhHӠPc4>DԢ:J*(=ҕ9>J}) JS"cK1@@QG=GҏGҎ8 >*.SK@:){SPQ|*}OY^]o#c?bt֍_ ~6I@m$bqwg'''gOx0RЭe*I$IIjEØ `hy)"<+=Wqw8ݵ0Uխ?gB׺qwh!z: ,O#'J.S(#Q: oŃS&>Uornxm)i@'a:}Qle`*=ky.->z2I D6P4y>ߍ]E TjBE[laB HJBT?J> YҒ5ꛒԂ7tAJBRȫ@'T$j/Ѝx@НA@LpjSekv)-4ۋ .jAt5aeohtwJAIs' {ub8׳ _UiVS3>T)_eQ}) J\ՀʗjcAʁ{PҏJ(q@})w>Tߊ]ޗtC~f{Ҭ+iZikiԗq Rvا}xv.xpʮn_)VjGM3ktX<>|Dl(, RPky%އj/g|VIRUz~5|"͋orF㨷%;~Tҗ\HJJ'@?:(UD;{\jZDs"}7=8g0Vny!`DVvmߗmd}G~Ӈ]<{t\M =i#ߚs qm4Z$ ɼgg;FtֶP$#i`Yv8B)fԄ;x'o^URAz yȂ>s :0󸭒SЅ){Z._9i^ı&Ap3n!7mV櫼IՋualˆ JPT+Ymi'=v?icaZ 4|S q[OV>p) Bf OZ.ebopź|p;<^`rTvom ;ϴq\{?-Aq@H<Ǻ^e)n2 HB[BWQ0#w51RjC 2ߦߙK1tQd4߷ҾR hҞgToJȠ 0L& &g@QG=GҏGҎ8 >*.SK@:){SPQ|*QOҀ*JLw'oZ.8؄jIy[Y߲Mu #Mcח)A^}5Gqpj5l'V6LpqUVktK `bl"MZ'>"+z^Ti? D.:Y=B>~[]S' `?{gW`OkMy18wRʉ̚N2$=k:y!+7Pb8H#`ALƼeRZT1v8]m)]Gջn%`==j4 nf- w 3+i'؎Kyte\ Hڭr%I-:-) ; aJVYLʁA3oW)mt@uLnviŪteGGlh/a- h$%D ޴|`-nl:LLע,XvظG[s[@6q܉g!+*-Ir?ߊ˧N;cG ,0[)!C~chBRg̫oakd[7p%@mI7f R.q Y%12DGoc=b*}bxdX$qERi*צsPcvn%ZH%!@v=[>ژ!HP|nmjm )'RT=A7+)GҐ8{29H* rGzL|M;<ӚU`1L*3zbNhҎ9%Q<&?JGs$P P&jTMiR~DҚz(I!G9ڄ ОiL#4y4DHJh4"1Nw*4怫f-(Z )p AX = TZ[4- &YAB $wy<lџḽl).R K *jiҩSmN8ҩH)H@0@*v5V~JLk2{i(mJtdBw;GXR,-HBaHI*c-1\2)1 ժJW36Axm$M7)'xߓE,Ԕ-hCb?E|{o+%sPԓH ] W 0ӡzDּ>=^˛ݨBРvFGJKz))DF3; ?X\mmSiAN*!$NڌR >e ?қI*chKiu +ԓ{Ƶol62MYp{zF Ș>i[+#/E˜ՋV~ץ*3 ۞6ۚǸ:V&W PU֤ w;@BI*=. fJf( (ɦ84Mw45&zGSAys^^7g<;6RհeEtmO}+τ\a0eխW[뻷BU. Lj p+*k=OJ+6{TtZ eh,iz%*V_B Fv08fBx?Va*VI`9Ҿ2WZ>%8p4|j< @קιndPƴDy7Z޾C*Z֥(- $ҳ {]eb A>\;#P΋(C c<^iм1\wtϾI>4445fgOҶk|%h=a[8IjB2`>!U-҇ I$qn+듥Ec|"F 6s޳jl )JJɎ"5 (j;&7Uw *%|ٓi(ekmZUiL t7vHAr"4cW| op;@ƲANG"ecثm"ARw 7_!7l!4\[=ϡ˓}Fl^8z,2إ%ai02jbwK*:Ũ~[ViKq**K̏8(PeJӰ=gαT@hx/-R @'Һ.d*XB٧BAKETLkB. b>Nx.x>s=3[w|..AQXbݸCeZФ2ڒ@I&Fv?ֽ\R$<\#8k}ӌ6[q>bGDp-ipRֵAizl\JG%NLP9w(HQ m4LqJhij4MIzs444A3ڀRhc@>Ӛ&RhRjGQ3AM)#&dR 4Iy@Ds@1ڀRhޘ(MiKMi44ӟj'ڀTI@>M>NP Mӝy j &P#@3˨apVհW"IԞ}#-ۇ-(S)(҄h/q\2R%D8AFnwS2_Q1+JU7h-.A#LqȈ0A[GXY,^_ٶԻT WF c`ծ4 zաoJR^{Ϸ9zUnݸؒ:@>sW,2d$2{ \QIt5AxTBR^{D$ݖʕd7ͻ_Ԇ C)IU%LlvvYGH[ i(<wekfv-۶R(R jsu<5!\XTl;vcYmdJT2ꯟ JV7+P?w'h Rl>e('Ra9DgUP$ӟjF!@hLj]hL &Q>M:iwRhޜ#M0MPLG,|K&خt;'PI<xTVB;Ydvzl8 $IR/m敐SWtJ"Yyw*myoݺmxrҍX6JKvAk!%P@RcoOϦpe =-ܸ8QJ&g+Dn IL&8߉j6mZ/[Y f6ÑZ7,r `%N.\ʣȱLM/8@W(lrUg33hڏԯsb9=;\6iU܃2ooǰ}NG^L_t$RjNB2hO*DgT4I>&B$&>ԻP&3@1@JM9}Dt@*$Dѽ9ߊG`@)4M1jPi@f>bʙ ĭ\ԇAQ [dpҫ5ĖT܈)b#`y޼Pnf[1z `ըI3za_nTz ҄c8N*vv$ (P<x ͨ$R# ޲WﶶK`AFkid- Cm'Ra xƦmoVVnHoh@؉Um\iT*P'I+LsY.x}Me{V|HxN qf|U8Aa?9uvcĹ:>$D:B$ k~c0gI!M$)IJ\_7ua7Uτ?bԟ0GY;6m,=n؄+#n~1\V9;i뼵a nHاJj|'3xJ[M懔0 #clyX\Qݿ: Oa9rʯ[E>Uzsߴ.}Pzɛ%@Pwܪ70 ϷɸZUt! J$&{ u%ylO`؄%%)w1=j4L/.XCw̔Nb7jI}rP鼎xB)#q0hбY*afր)ٲ2G Nz|k3wMKBUVa1ӵjē^5[fŽy*?3*z\o$g'l&4iT&ϵ Li P 'zsԻ< 1AP cLPGhO4<(<<QEN#Ȩhg=(EJ@FLw;!GQL(H@#E3ɦ8#E>5.4(D*}TP&z3bx]Y0]Jh+βJ *0oZ^${ch;&vv@ $!I=iH{ﴃqn1թkZp: &w$|n+tN -@qGIOzͪBhXMAa.'b43U'Iڸ!]3$SkmiG=!ʟX,2QQ\) mld)ʴqEŒ>!2d`"O%i{dhED]Bg=(EJ@FLw;!GQL(HJ&TS8#E>5.4sLPy_`7B͵,Dcz TpՋJKV;2A3gzR&cZɧǒ[3qT]b*?n%`K}g]r8[*$Nyc"ػ(<<Ш@BTO4E3@#@;ڀ(hJxhE?Zc4Sh RH@*4@*) 1@FwhQBB؃"W/) =;@Q"}Sk1UYhlY8eC[sEG=81N%x3Q?ZiE#K!&cZ:ۢ* nwyv]lq*R. 8.}7@`SX̹i!H%N)h5`g~kΊWs. q| `jt0uc,r=IuZ󷡰ڑ3 γsBl2mmW(A#WnR =^Kr͠RV$%`T?;Y^ܹkiœo4Ic̽e*qSmV!pHA}GzPǙgqg`ۥĆ2A)tH#̭a6+n\@NoQw3w'\cVUI}pqf&dRRs4Ph Ń(a yoWR[Bu=ͬnr(ԖD8 Bu&Ds%hڨHkD gx;}+Kɖ`:Z K| vh@b(+@(J}$'*2=}2{(b 6Jen쀰OX n`l_-)م!?{\~~s)k0k2P8RciWn|OŃx7nVOti0:m uHx\S+;&yI jI$_GYpJ}4Mu>Ԩ4zQEb((Hۊ] )Q@9}Q@:;qJӘ4HE`;\Q@0iqE(*tj4FJ}4MEyҊ(4@EBFRE fJJR}E~)h 'qK( .(NsQ<Ӛ\qHOF>Ԩ4zQE(H[ r]KO#HJtyH$yޭꥻ丐 qX勔~FF-\axk7ФN0u3އXZ#hժK @w G59[.RETfJJU}f ]ۦ?'`r`m%ln沶jҢI:;z9x>]E a$RS2_;6 ֙5͟ذeN ) {_+&wkWZv٥6NA@LLϭjH@*'U1W^0n+DQ]@&4T?ҧ@iSR4yP k;\F Zŭ0gqG58{t(90i0'y}^&k֧JB JAS`-*αuxcq-:%JH$;I<Jf>!k J-*Vri$W2` p+nLz~Fg Qƛ8٫St.M%P sry:: 1ڶlߟ\s7n[%Zn؄'hsϩk\WaW>I'&УJ~t($QҽRTU FҴ$TQ((KEq@z.fAsD)}(ME/NJ.hPy *}9O@)4Ti4TPHӼO|&ҀTQ(4Q@G;ӥ8qEJ(f`~\%bصqdK̸xp))2TxFHqZ )1n M*>bFME/NJ.hPy *}9O@)4Ti4SHP >PET}( P;iv@4 |r@ j  ޵ˍeqEǭh)]ZA` o&GF0D}DA[>w7yԩDDPN(OG9iD GqHN 4j4?iS".9Q4ޗc@w7xj@A;)Gׁ/z" wU)nU/J+ҦE*]dɚf?gl6]$6?í,}Flܹ˶wx^).2ЄjFE2$$ /z]ބ ( EA{Ң(|KPQQGQDQ z#ވ#TG t(=E@:"@QDP(PSҊ"tR=QE >ހ(@SqJ(z(#ހ((zhQDPDP*#ފ:QDQJ ((F'zAEڀ)Q%FjR<{TTIHǽ@27)Q@8J~tHR@RH TP)P)Q6o@ҝ*;LL{su* "'8@ӧyjy,-Edi1#&vHyR4  x3Th(Tx(loj3PHFF ҈ SDVxO_ƞíz ۠JZ@vnK *Vݔ]38c.b8=˯[#em: JRwLuYêi1 hKWm x$8PO..6EP ]NyVY]i!!GJ]uP! TN"fD[}zCb9O6oXoĮo%x͇Kn!@Z 'h¶3v)gNZ\YO!HKAS^$FTj)0?3F {50:vb m;6RdN)!?uOAZn\M;YNteKj *sv'~3*JfNOozԔ8z&KZ EdFiE*()OΉڊT@H Q)vJ8j0*3FzS@8ނ7A; ?:()M?ƀ"4M(ߊ6M;PF查ڥM=(F=@27* fmm[%050']?#|-u/x.`[7mn{bAq԰ ( `(_LoTq-{[pu2Sho a?pA(%PR%KCҐx>XEz}af>fW!LJ/Cl/@R Q 0˻5ium(;jɧp)F*G@ѡDlT=(q\6 A!I AN BR|4#ԁM`Uf'x Hԯo^gjb}U.wloXF3Mv!lnԃ 򅁨j=ZmF0 rSiFR\%mԶbBHAF"{GC=:8L7~@Z  5vR<_Ozmo %Xvhd!yLI$G16-rvwʧ2覜mIO;QJ/% {\h Iq.@)>YhSۚ.3#uӬ՗˗/8\IY J/Gݮ3<:X0lm($'v4J|_xWs c/ #jؾ_gqzBGsX{_^]/aiNffB,[pLDmYHܾAĀ)y318ptʖ9HWm Ո93VmJDQڀdzP*aKH ikBB$# &]%H"ǘPu C%$&$ *j0*3FzS@9ޑ4&iE8( 9N(N"hiN)Nf)iEҧ&EEE扥F0N4 (N)2BI *6$D1 hDz~1 86T޴bV- %5e! @(ECirsD׾BsI$?7_Z^`x.+'6ekhukT_qAQ0&"RPx v& ,:$/y*O%2w; 36>φI=R5{ ;8u-D 1Jvb>I[M'ZB[I qs; Ȯş>7Op rG4XBa(yJQ*P}x޸Mo[1"(ke͎Qqqvb8B1jR\XH:RVWe%c+˺l{v$Д@4\,)+;qY]^t*B@'r;1:՘q읅e<ݖՎnm.Z)Tۀ G*(*ҕNo/yWfZzCSq Lu=~~mY{/ۻpg R P2N%2,|u0dC0YKmL:-ΕjL,$eQP)Sr/^f;90ͮT…$x7 RBHEIj6 1X;t mmvHqТu!H $24o0׬J\qg/!|i },%9B|IW^-uۧnp˺s.6ٽ BNH RC'BTITXdi=)ޝ`/2֬*iJ&TQ')J&I>ԭJۏʦH)SejI:[U Pe*$G?֜.)'t,a`˸oq_/6vN>lVVZlQ$$b~fe+ZSq63"+ i*pk`J sDD hP( )ژJf]7%2ucaǕysW}m$VH>95뮜o^`xvL 2_?)cIO{hQs -~(,\-[iA$Sh2'HgL:ҷm]\\{׊@3KKs&tӰoxgWI;/0d'QZkJ$u1Yz$kL{e<Y[\7r\ ̬%oXVVJJ4P p=gv@J]i I ՔIr#GG;?,G fŃ35 t p[:O))дX: 뚧Ė>ON 2b"f? k\K}cq$MLHLx4Y(4f²/8l{BғR#׵fu+]OsU([L`+RRV@FĤ J(F;j;7r RA3;I~5>gMla:NO 8r%z6bșgo=ͪww~V @NFD|Cۺ-yef.7h7_pTN)  ҳM:W.ڷspW Ob8UmcXz7E:[5:^.eO6մ%_ik]Y"BRB&9@v Լm{(ݾown2 \QbƜRАBB(ARE}B%ԫx*e fY+4`6Zf6[Jc RPCZWգi#?:,ڻ:on-Acp-dݳ. 1M~JRw%=j<|lo2u/5nm&-Ñ%!ol8~Zlk6ըLc7W2yZ$%!; ҥ=&"jr~rNFYc W_oڶ5+bFe0\ ,gᖸer,d96d~FKM(o֪B!>o*[>bIWMB$HYn sj4*e!M8GqAvZ 4B~A>(ȹpZmo^e6ۤHO"S៤Jz_J~.YbZ&JYvީ΢$l;6ʤq Swp.a-l; f倡p#kRx<$W3]vS~$࿢ ͸ a`WM"R-S!E'jy̘mUo,Bb>&'!'BBV!d޾)SA C&[j bٰhU`va{ Q)LJ(zK&+eNğ,n?4@( H#k,)8֡Td(0 UaD 橥'TqJdQ@=Je$ UׄH} #RH56( $i 3*&d$mQ@!\~TBJDi&yFߕHۥxAmDΥDpRE pJJT&4 B/ '&8: G)B)ȤG)><J@ 6%0h({,Q A)ct$; *e [!dF`mÝAmKCT T=YDp G"9cNjd2 Ggl+;ջhJ’@)ęբx=?ߢٺԍ)}WC Zv OZ):fq -C$ ZX I%" $|۩4yғSOyL*XuZeQ|bI C2$Iw #'qK7T͕Je\hP IM~¼Dyb}FƥaTݪ]h6!`));D= [`ıwvŵͻ/>ݽH}֠BLX; I"+jލ)YPK[};}+u3!́WA:ZJrЭ &F&j-t|gtEr8kS=ob$yO*i4 Tj$J1aZDZ#GΙIO HUQV.y' xl_wVЍjfuJ8r:_ BJUnm]8ppOêc=F2Өz`SSr 1[PftD[/Y1+}oq^]xS+mZO2@Ԩ@"zܝ5~"s:|nU[F%9GAwΉ\݈fWGV1{</}eeA/]S%*U}ſBKh7>Gdow[]~ {2xwT[{d:<q%)PZ @Hޫ,I䱩A0`}id'4= Ka>v0t·~:1kb՚z?INfpJJ>{yB8?<fYp2ų qj!)G[Y.Ѕ3LV%*FZ _/XeL5;a6ݥJhDd&eP)$scҪHFEY5dD0؛KtˁˆA@*JNѽow2uf죅Y^ZJ<$51E.%*PQ1U5Z2ÃF@W&A bb]_a6˂/(\ w ǡ yy+'wiTݦ }}*nٶǔ(jcw?+}޽7ثhA?6m_z!|&^.aWN)ۻeWuE!'Ső I1ۙKe%T7T ޤP`oƣs~<~UaW,H6~ۘ鿽ix{ʔK^f-q R`ʌT-Vj'E%W|fKbSOjCF^j7Y.j816*AgӸ7}F0;o. 1oӊ~?3`nn} A`7FO=(٧(emծpyeyLډ+m#JRH?= 9O$w69A*a祙W)E9xK6Z0[TV-!)N5jPzyEݞpVқ|ёx0Lv%dw.lH<{zuI$ʦJu;ɟNtE+Ͷlm#S+Qa&I2}MVK.$ƢPLޣtZ8PȓIp'X1(PWP/HP ǔHI$P=mR^m TA^7%NW"ykJ[+ X?tA!Tؿeݷw TXǼG#$]'QPLU<%qBq֓;*~殃R'HP~)HIx4A0'  JíP Z(!I2}NaJ[q%mF88RN{OR HDTe%t&Kl; wJSn*@ >[y$D ǭz?۶6BNluM%K@xn@AT ;Vř?Eac ^V4dH:<I|~HDqZe̸^+^ڷoeuN!M%' {}.3}mZWІ3XKi&9x=Ԍ[O]fxa&R5 q#+'y$Oa_M?7eMÆUQFTB&AC9euys[*ci}%Ȉilܨ)&HRt&S] jEO9Y E8"]yoW qZ :g╤lV8! ھa_7vXV,-C(]}+D})O@Wx6%E_:&weqo':|H6hSiN$ej#l\c%bJ !G[$~uswɸ-%/(LNV?%A)~$|Ҡyaӣ3'z(@5"??s:-Cs85>-Uc sY_rAQÁJeRCIp)H ƨJBT Odt\L%@8Ⓣmcpw֩4P{R:SE $)JRR;@}) $G~UP6R\5/}Xȡ Nj%^ D?ʢ9Jj,$ {IA*TQU%QPjtRF B yj"&hDij֊(z}Am2 0"YLIh0)$Z'Je'" T\h&6C;+xGܫʡTnv&S_ @@؎¢-']ϭ17 h8=i OW>D igd32TN&iq2i.͵{jUEB#h:JSK&DRBFJ'J2R}#@ӀdP Rwm?SӨF-0 ,,u% m_EIԡ##Pe__*l xOQ[@J[rTcRT}*iVnw ɫ&A RDJ&h4U?ΫWj|ة"?#TB|iR@VQn$F?h#ƦhB]a &=Wr{zm %iS9 OQ?LjPuCjp@'mV hPxӷaIԊ\qPKe{?G &b9:<"A7* AY J; AHB[QY/ -)R˅;A46Oa%!BTdTROxJUE` Z# =Zn_GA]IҥiTUGqG=քВ4JڐBҕo7©ViJr}\gޣM)&Ie#GPy)<v]Ԑdߓ3PQ*7Q1Z(w7Jwt[Dm|$2 MinVf6VI$(wO yzM)TBEiRF+IPQ:IZbN>txT[%$50R9 Oz#t*HQFv#jz`r~tHe_@(QE)*G:O1SR4=S#)p⤂W:Pd} L:dMԩ)$~~LƦ-. wKJ܊nH, 7Τm_$RB}yUn *m?ݠ,BПR)B˅,gCQ왡[stPN. zIx6Iڤ U4-E;2jO4ʖ O@`MD*D)I'T|$pDRTؒR['NPNߝ2 d<5LԼ"F0RPBGΠjP@q5Q 4wPOa`[:O?\"cYS ioJI7)h,'jZ3'U3=KwlOG h#s@ ~6<|;Qǥ@#hf ԉAHE4mzqi`ODZRO$@4ZX!Hc ?Rz} x RҤ^='|TFTyf }*#˿)jCO)Dȓ*@u ԣI'ڣ:iҤQ)Uj޹))Uf>!3#{&( UE UڒҚST J1U,$@$XYy2KC^߈TT=dTu?%vmU a@U) yQbS֩mRd4KH&K p+͚8[R+Vj!ns0dU#$X AvLUL ZcYV/[6hd@dZP([ΔY>̐*GR4ڛX%*q! ?"y?7DZpm$]nڳ-^RvYj[|5d}ZXM:?U }ԴT?VS#?#3!~d}}j?IjK۾h2D|2 X@i# "m̨#)F~~]Mbu'}IWU@\q§TY4 ƥ>ʍ_ޠ?#DGAߔz OOsHm_'Zi'mCSZjFAGTo*.vP>J$wyշS ֏T';zf5#'E(WEIIE Km K*bGcR1֠ l@~R/@UY4C`gI53$TD{/,)MIH@#a)W}"% aE>b?EUD/}O5?H(?tTB 0'"'Z%^&` AR%^CP"P8%'?-@?KSZ5yfӫU'Q? "` q TTj>h*~RTi>)_Tj(w槠*XmiG%gơG#A>Mt*'j1OdEM#G?~RT?V:OR ?,)A#M>cU'' ,QNB*?KA('OD{+ނL@2AT-_?\" ֪?O*XRH ΠGʓU4>iIlS!\ ->>/URB} PAU_=TE!#p =KSʁTDAQW TT *RKe=?֘iI*VU$ *$ ,Q7NN֥??ʖMOb zʍGRQ)=/K@}@&P??j3ޔ *I?*II8'}jZƑ$E#֘QG'_ނjPOH_jzGY?t+sH*BOԴ A Q*)?D/?8=(IpOE-O[cZUGzsɎ"}TvZGP|@zH>uMcVōbW?D6=?ME 'JQҤ' J?ҪL9R~,D3{/ѠQ)Jb}2Fʑ@?*PU+QZP?xOj ij!j-(@J~Pf_/@M(pIJA iս^KA[)(YTPLTUd8+,,pL)ђs%-'vʠWDL~V7ރalgpredict/pixmaps/maps/nasa-bmng-05_2048.jpg000066400000000000000000011337021427377236300205710ustar00rootroot00000000000000JFIFHHC     C   " T!1AQ"aq2 R#Bb$3rC4S%csDT&5Et4!1AQ"2aq#B3R$ ?p6}W_ANE+lSE(/w(@_(@_.|Ӷȶ Ed/Qd /QT /2C; _t /Q" /Q"YT_@_Ȣ!@_!T(,l/Qd /Y@N[d /Q"" "@_(EEd/Qd /[E(.w;FT_ȢQd/QdQT _tR; /Q"!" Q"lR;ln/Q@_ȢEBEA}!p@_Ȥ=Ӳ@_ȥNȲE(BE(EEQmd/dRuN"ȶ EBEd ꕸBE(,Km(,Q"n /QTY@_ȢEBE/Q"!}ӿDnE-@_ȢE@@_ANE+lSE(/w(@_(@_.|Ӷȶ Ed/Qd /QT /2C; _t /Q" /Q"YT_@_Ȣ!@_!T(,l/Qd /Y@JS!dY@{%'d[t=d =n ="d{"@{#"PE{~$Fd[,G,GE/o?dNd{"@{#Ad{"!d[d[t=@{#B!@{# d{"dY@{#@{#ȶ!@{#@d{"ȶd{"@{#E/o?d2Ed^ߢvE@{#BȶȲ,G,=B-dY; T qIc襑M EO D;4t_!t_+O/ /WߒwۊWߊG$_t]B E)@Q4t_+@ EE}J./> |;""hPE4 /"h@ǂwJwL.! %}ӿDEЀ/ 迚E4 EQ4t_;D;/GT_ .Q4( Ah] v /怀.~t!t_迚/ EQ4;D_d_ۊ/D_N_D"aDwH;迚E}at]B/( /怺.'t;4 /怀%A>h'WE0D>h P_~In)_~($_4t_ "'@EE4. .#@_E( /怿@'4@q@]EЀ/a +2/_ /Nit]B/_ .h@_EЀ%AEE4{D't怿_Q0E'wJӿ//'t]ۊ+;+#/怺.D]hQt w@(/ wEЄD{h "P%AEHD>h}4_n( 迚E4_ W;~;PE"w@h@_Et_ "迚(/tӿD>(a@@S!q@t[bR,ht$mrBv%$Y۪gB!{2dR@B۪a@@НE = =Nȶ@T!@;  >/tmԧn(dҷ- ^v+nBd!ѷRE/t'dY@D$&B->6D"7G=Iu*CfmVbՏݴ0>i/хI7L_UWokCɾֲrtgvPKJk?g d%fo' ,ᦼe:n /-U5ԮK #,c@QYZu/pi0aѹ*u] DG'GS=rL)a-|ΊnX/K|DA$w*R,O'w H-C}L9Wgn2= &qsI;gdKnZ.)b2. P!y_O~CkP~ox?aw|M|U_**Ul{ kO&+ tT j4 ZZAC]O )OsLS5=S~j9,o"5#V'UHjk&zYwgs٩t/\ ˗8,\0B3fyL E$ELqWjG[&V2h53C㹻.OUuZ0%5Ac t>K\? DVb8B3%đaquˊׂb6(ey`z7*^lLC(w^״Nqpَ!VdvXCAym׋[g3KOEoi5ykYJwCDEۂ sKǸ?a(;/!f\FA鰩<vOM5DGaߪ_it4SSE=.3ʪ\lc8ulmZ$l 0ܮ| a4XumFb5U 3=g?qqs\n|BeiVv]%Ḻ-P}7rHfjث*jY"C Zok/OUy1f|&X ==FL-Fl}wξkg++Ԣ8"@Mot$=vb7xx-.WU5߾ .6.W'NSQc:NF}<̥7 N&n^qkXM+2`F9M]xC?]:l-b//6_Ke;_uQu+AtJ{äa84/?Ш;DU /'p;/ eLE}~3:6M˃  $Ug\'c_:LbRr亏i0;5-|2ӊſ ,Gߌ;nq6>@y57|=WԬwK,Oq1φe BGcOĕ029#jbݧb4pdObks"kf8j~72.MQ˞-k9?uV+)>dF9;~SھA+{2ţ{X9r0/f׻0&?v- Ʃkjx1dBlCExv⽲~ǩ5 Hyj,6LCqSO;hp Ⱦگ }Ц i%8Hי ţmԨi-cZHu]w/tmԥGfV`4u454UΥ69MX,](9vi2g9sU61X*V'67e944S~NKس'f&q` Xl=F6Qq-b3?NC|ѳU}&@{R)0&Fd= XU,{앷@{2^۩Nۢ,^"!^TYD"7G;pE$mԧn(@B! ld{LR۩MG4BGvA~@!;lnO,m3!Й)uBd !m0 ^NۢB{d[t r I ^l^TY6SYi[eJvE/tY;n@{2^۩Nۢ,^"!^TYD"7G;pE$m;qE :@4#PK !x! pAh4$ .hG42s(@ABrB9 IT]S(49><((/Wd$nݯsiAG474@'H&cpJ,* I$p;]^V6eU@;cKc\Ĭܤm5AvP>YO1ٚ% $6s 7w5ĢՌ0_ ^mĆL~&۝Zq[#71l-律m8.k+؞!n5ʸ [NVbRbvú&0OBӌ]l+|tt>N1HXr\ck0N6lZi%cH݊T|xfvusvLɿj$;6" oӼdw5xIk>c#uEL8DwV"C/a_£"3~iYŠHi NbEor:e[G<kAL 8D6>"@zdzNySNJKxm,u;ٟypsty ͊v-jrsb-vTI$saPde8\cbV:K^- 674Tld|Vg&Sj>U`|6K+(qCii&9Celc9wmwf&Yc$#@^6}TIOǻkXD {? ;D//dZXd҇5 v֗[.?v;7#c5Ώmv)fqk&rwG8v),mN=ܟ8n -T?k)3O6K yK}v1q;Yvb*#x!w͒2Z-k;Uqg {>>gDIoymv0|q7E/-Cpa Uef!qt"ap^?Xݷ~rįaPJ;?=W٭oqSyo]#YFD[V5;NM2pqMSksF# -㪉{ `،ԳLji 7W<K[1a77QmŮ8USWǢ&7X ׆p @Uw4mMNٜ2Y` Nn<'o-awOg:g1sn{m{s<]7;M/t>]={$ZnIlm` Eeq2 haq6MX/o9Cl,mg/u=FE"%7OS1MeTw,LGxF\c?t# ƆM3r0z!fτꌶG7ILHH8T68M#>73@hMm0EjJ5G0 [b8.˄2`AWJAy1.7\L/>dzT9bzjkU ?IwCα6謶6Jũ|$C`[n|w.ظa^e+1/:[p)ep͵SX^90!ۇoYOCHਉ9jo.%9Aڬ-0.~lS Lhd,A];}0gx6/QCÌ,&8;u|v׈2ʸm<ͦ8\&6uC<,`9,byWb Ԡ̝ctUhjwX[AvPFwgCvYGbػʣk-eӬ}8mt`Ȩ!=G`44XSik\9S!nGiK 5–bm=}/jUDYEOmSK(ꂃSr(@6u~Qs[{CqC"B#P Z,n{^m8A+fF.UN쫖k0D`|sgޠ/bi.{>f->UðLC!f0 }C׀m+摿~pseC0ݏdưLVoL>#"@nEl Y ,&;5Y#] Qbqf2g|O"ڣlwhO͎_[iE#Ąii:㧭}8PR7ɘ>L!Aוwtn 3a]a0vG|gC-a5`mbc$%w,啜g*W6kjOS HH j*7>G2 ]YxN a8v/M's5LEFmjhhSed 8Z$`|n]d\3w~iT{elg1}Q%pqV5J  =HO/e[GFCIGVq#"ku?n*~:ZͧfYp=RO#V)xt|ڵt_e4N㹍rkMD}C7t~IkECiŤVE0G %.`} q=V {JlKj4`x#Y +^G0at'3溇85h*[J{'GZy\LXb<]8pu2 C0vz6H1|=53Hx8L\CI;.~Li f@9q@VͅOt:RMeV< >wK?h\-﫭鴟jfn{qX,|RR20 j5fK3YN-czHP^NO@VBwNB )(u-AKEDp&\](/t*30M=KX~Fa\S20Ƈi<`Ϝ01.|b0wrH4qWg{`pʊurtM.l.2tsd~Za1pkbwGK4vUٓg{@粽;XAZⷻ9Jd 0jMT5ok]6A{s_qb6؛ۃt2;f$k၌?6B߈8˕9TRdi:HM7p ݓH|c*l}\ kcװ+͗]澜?»y)v *)*go4߼u'U4axf ǩ#IXluǭ:'dsJCZ8wy4Ϛ~ Nɸj ]K he? o qrY/[z`Оckj!Y)h'VK_{Ar = jSe1FZH$[I!ly&L٧w{*~]W71f|p#5L}KC~vvkI_lrÆ857"u>kt%krMt~H4y#DMSQ=ѹعh-"[_H9#9%rB<@P8 4s授B4#B9  9! T e.PHD4G4"i!pM @QQBi!$x4p@E PyJ @pEN]D$<>M;O[! -$486 ]E@r 䋠?EЁ(2Pp@E'}~!_E((p@6N8#wE@ @8.oug/d++X KnocA>K]~yYE ZƸ3̸`AK=Pq&   Wb?`C 4%g}#J% v;l쏰< yE6cÅ強b {?vƻb $YrOfWq^,& %(`suY⶜7h2˘2F?03Xun;Gh {c=NͰ͛ 8w CFS:xY/ v>5plsge4B$P[f6 Co}EH1d½v_ضe-*9ZjmCL=#I]slڎ%h\c2EY'am%==DݗK7. \˖x^θm|ǫ0dci4嚏"Hܮ>qbb +)gc8Nru~TEDzEqhj ]Acslg&jc=TəZXv .Xdpή/hɖke3.+Tkw+h[qNF:ucsmK; sݪc~<0+kG6GCcoΊ2ZGAOa81 qLə=(ʨ+&Hm@nfgfn?Tѽ>8L*C]Hpt-)ܙU=TvO{M`􆖞98]ǼX`52;%q<#&d4mpKa]h_OhuIdńgXf N)TKs@ۇ._؏h]5.T0iLUX6)xocgkċ;0ڹ ^VQb0rm].+9b9}WyWt0aE\$q$8'ᩂTbgsfGч`vDu1{\Y60Q$.YOL@Ph{v6Lj>k3֏ⵚr eK!CObԷÀu n ^e*0^gmPa1vy{X/E~&SsUPK/KM4 C^>㨏}U6O5Aa2;M'W,AQPȹ_lR憝8#s dnH,ן1jRˑcθF Ifj;4y7Wf.Aj^; SFq?\/> z 5^Vj:>6")]ƵnF.e]ЀTIK#@"=3˿c1 fNn 2ʟ8 XݴaZidppy"ֵ߂&!Av E:LzIy|sjctLۍ?lY7p<אpZbv2 9 g.`3 oĺf\CY0) UҾXs׾B]bmbe߅q\SC3j\FSG4qw$F]>%t)pR6FC\rAOe57k{p$4`yS2>-1-nTd94R ,ԕ ;S?:@ҠP>f N5L6Ca8cY͋ak :?TT6&8.qn~">H0-rꩲ;E~U>s[vO iaSQ1Hoe>@{/)f!Sɂ`߾N5s";Nx̹ dzf`#LɍbA?$jc욜oUǏ6y-=W !UG_*@f;mxFWkzTVTVc5L{廉*ma@:[(.%Ϳce4Fk|fg_G=y*1(&:M. |h6aXy8SLQSlec4 zCᒹ}m] /aB[e{Ż sܓ2=f,4P",κEC$1VbQv杖]'l_5lA/u.L8+#qǏgۚ{-Pj)A$6 \$_׼{3/#fXN!3l?򵅌ߧ\2e1قl>|J3Zjen7溅;9dp~rw=ve95`,Կ5)NaǑiVrk},Ea l2sϬbf`uO#N%ǝؤ8.3<&sM;[u@M(bAo.iDs!sVۑfﳍG?{L^n nj"{F8dz|V<\u_[]JY#Hi*YkZS UN;e0l ok+v({4s/Ö& F{h/*a\ clY'O!`Y~#;5@ݒ74ihwT ɗo3g\C0Zsvk8 Me>uٓH5y΂or+g+O*0J*>Jgsy,L/&056oXc94bقaIUVj( <6鹿r^-L_1;a;aL c$ )!  7X3|, S 9?XƏf^"Y%u-ߴUSTY;# $Ztv \s䱁Ӧm-u0_)7R{o+K GvAx${jO#wmu#bGx'w\+sLM7'/UG@@4A Ann|.nݺK6o@`?]e:JWe|YOibnɨ~Y#ius3Ę K,>'1d+%.L V#:l˸%.Hoo9.Yz=/i6YkK^;Wl;}  wΪ$Z(ez8SU%m O.E9UqvS5l0<"v&|{9˔I |C;.{LTET@-|S1avZ}H<5$̆V!UDId,n9ٻ s7CƫFBcmmK,6{(8敢jC/~@ 7̚dᘤ=t}eV_NPJs^V>+UՕur\UOsߘIJ:;=4zEژֵ#{ n4vTok4ܗOn_i7p%]wkOc6` WM]` 1\dk~7`wN!9.`LHŎH-k8}]6+ܳDlc^Hݭ(iq-w%V4U1غY1*gL]O!s$﷒u\HVo0ViZ\Wɨ.I H}+O{[6*J㣕.h$8煯g &}%bwL5mꪖ=X9]gJW-$1SCd'׺15uW>BW4Ocۯ =cctr7PwYه 2M,vW:P#Z-Fƒf edǽ_u,>/\j؅>APSKCEw[ԷNU;ud͒'G;kiv}+t/_6@KrWRTGO0܌\}k7DJ{mӠ߉7ۖ7;vqߗ 9bx}CKH.\-G>k䯂I_'f28F#B$t{ڇ1wlT:B!,/ʶ8nXv7il F,v~ ~mu<DrE[l ٣+ͳt6tasu_EK`_ l-`puP/r_R2KO./gFWSr^%Y-!U/,ܣ2IM3 <Wqqvظoogvlx*vC4 gix.|,t 젱J֜jRb#e{[Z kY+kݱqqL*cTиGYig #uWIe8!2Qu@R(`8 "]8%;E{8*4Ẑ4Aw/ !"$G  `*_G$UU[FӠ;K>GW `ܚ㨟+u/7-zkQeLZV#'ba5EZ-^ أ58 m=(--k[3]̅T 8t%qm?ᲀ=A⵻iwG52h`q&G|./1FO{[X䍒L#Cd!4 dldl 6@i $l\#ds(@#d@lh H %ą[^澊~Yc7fj*;%Y%2f,ˇC$dwuA#}lj^3d|Z"* ɨj7S>Ni)<10R%L_Q%.Ht?c~@ SMhi{n `eki^?M1fr:)iiĥlrI!sCK+vO7b~\/&el00o$ ktnyk2S;$fYjj/h(E3s|8u02:aSKG;O; 0vRhh!c@_FzIeٵ+u1lCMa{84[mt{<[2SrM#kxEњqb&V ZH{8M䏍~Ʊz*ij1kqZJPv^Bm_G=Q=.'櫂6l~X dp7Sڍ6b?>b}>4 V|7+x6[ٶ({:3e{Lh=.^\N>.7c'`{r3m,Փ(PS'cdvgVd › %N+ϖ4n1As ]vMY~mnknT`}m +̝/ &?UG.4w.1Ių) -k{]-uÂY,h_?,͖Yx=$FPIxkMow펚<"a?hG/)[Z''u>; j .l8²hmi _p.NÊ>V09>k mhdSM/]oB2\uq{<_$Ca:'AgwfI3_k;|Jϰ:9CQ5rS`r4Ru5"͈:nngٿE̘t]bXw]L>* ,h:.>N[k$jD\qj㹧,{h/vw]+%f`Zߡmqk7&Z»@ʸT8fc1 \!F"%y  qC=>!b_#.gb }SO;)d&OQËg6nmnMLKԾ8ÇWCRKU-H [wrZEΛZ5K["aɀH,Wmo3 ʸ#sTTTM|Iq8jy^ưgInGF~֪`[:jZxy3^~;f!`HK𣊽A9wu2f~ ֛2OT;ǝqyvͿ dՍ;/1fW4h9TRaa䊙slO/dfjO.1f.2GQ5;#ce{V[a?e5'gTҰ Fn9e>efX{# Gjhqw yn m{n9fXOfu/tk1,W/~ (`hdk_&+gYZL'lو[$W1WWSֆjK].λ>f*؛f-to6g_pHV]9vʶ24,B&q6vXmȋ>3KeӋ`P퓹|L ìGRi>'B֎U%b9cvڦ-YAшxs^]7Q`<_J*ɝP>/W$1siN ]ѵ\0/~W^V)1\6_4.5NFÌb$n7+Ϟ߆iLk7اkf `R9eox,O/`Oxxx]=QAvJɵSt{#c6)A+(`y*p1t}ˏDlz&Ű%SGz|GDVߢZ|zmdrlSk Lm/olsHq6`bٍsc6ɁxjCjzǪqPj8C "No2dD_5wD;8^LpZrwXm7WʢOH.-6U9f`imh}VV@؏u6ۉ%=".+.&RV [.M.:IVv6?N婝C8+6őKnz.eo9C:&§D\p'mG`J/7ۆ"t$`l(8u1/})ve+ɹv:*[n5P  l-170(lW/[j$f M1 iL5j<8p}'c }~3N<8"W6nh೻d~kLŵp<|E`fn_0"~ѻ_2YdC+>T306:3$loE- Wg]au5gy$LyZ3niC"mV-tn{# K H6#X,'k۪^ş&&meo7r ز>D;B8v[t/FNꖆ k.'s&-j!X\ @ֲx?*qGϑn[MUMzK]Lq5^Ģ55?OI('HYw8YvIn.賵Z4tYhhSԪ g.{jրn󱵹 FL=1%x1n#6i\ ih x\osZ->Y q,~!/Zwo}E67I,`x:_\rpGeϳ[;sO)Dpq̲V 57<8,eok3XI.bba6Rg̯aVUc.& )3k ';1|\r\ kbD:\AHiK; cceӣ*GD)afX~y;;V͔v%<# {aIJc|q]Ŝ=ډZ?rK45e+]%K)ryrz]q /ḕ"`1 ].c-CI| w 4V9v]Nt5Թ|^]q F|Dr ;+] U+AcpFyqo] .w登5lxh[Gq<9ܰyYy8497EQ9h9Z *(tLJ$kAwvNov)ؖuʔ4F;-QXdTGufnJ,Km?eyK _s3WN⬥P4 6;WLJ#UW#*%|tI'+?oE3f#luo/a-lcppzڨc+a?LQw~dd\yc#WI q6_A?aIrHq*GKW#;y{9Sf(YogF qM"=BΏٻC"R[`mI,?/%d8IJjp l/6{߅n85CMAc ~KH7ߍ?WYn;& nV-r]*J<-,_G2By֡ô!r5aIO3`axC 5cKt7mˮ+`898yˢQFCg6B[Yn \r=o|}|-vq˸l P`ucsc٢ >o._3>qSO{Cm%]_RXR⥐9Ԁx߷^})j!jg@| Ml&Ⱦs&`eESԲsKAﳴ Z'#C wSJDѶV8gj6#fv{.^xԯ/&t9bxD QADږL8ա-tov>kS #;В[A[U:x0qpkP/h(K|Mׁɣ:n2z|잆 XtfF[m^}ŖIQfH$|M2#l8Zy̐GLcn"m$V{FΧ?U˽MRg/=vHƉc'K$1C͔%e(f$V1un>Ա c, = ū1 =˴й?u}3}T*h+,յPqhcT?-x}:`bJ7^^rEI6c#bbh6G-*W ~ &i}| j"k'E?Pa5:w2-`6@9aZzeeq|UFBO*F\mWih' fL͕k$,5qu 3[EN6F8a׺k5nց{+SfE.J|5o7vNhh4ۀ:U.R5 .:hNۻZ2{-k%G% L`!|V=, b$y 8)2 [>!cS=`l6yUχXIE.F rPTBS\ oA=\RY0谺ZڐH6 ۟EGx¦ ;9GEݸq&VtxN*H-kq `k\yX-nLUJy3Q-K48nsG+%ߢԺMVgxwq~+JֵsƋ9EA?[3EL4 t`ԑ˰g0/_d,30|q@21vсrNI;k%-Mlbuɏu~^0ERJmߘ}?dw+<[v@6'Y3Ͱۀ<\Oq/;'qX^DEHetG812KO>$M+>=X؋{/sK5d,UbUU 2R"pbA&+ʧL"訧{i`+$3<0]|+6-6gyDC6$"*J{/Ͳcyn1}P6ƹoJuW~%4=^ s5 ٧xNkZ斃~#ן38όd̹]'ajKHkfJvæ8Wʾ;W]1\USZF8$1.Idf nwo09'p ΑCcu3*Gtwؾ4V_)Ά-hK{0+.SNI.T4쁿fu$$vpkZPP`Ӱm^IĤb_.74騋ǕI^̘UVd¥›P %,3c9>V⹗f=v_d,'s$83+jq7u`6kw js(i@ۑ#fe/Ϣ:>԰` 1{&SѼQpʸ뤍ͧÝ5 CŰD(þcr,b{EZI`mx;_ svoX6%c|=Ua")P 9n4bRkk .sX+2&Ri喆 ZȻcx~߆. *̝3m{nJ ũ /3)Ly{4w^ww I&l`;@QRًblmb8 z[BV2Y@%Kpl/|qT$k95]_2f25aot8`#錃}6EUQ4*A)M͈px-GKNsFF1\GWQLh7 ivoc7̔΢È3M_ UEn8^Xe{ퟰY˹T4xͶ`:EۮYq[5e}]\C,Y+aX0FX&6J1k]!lBHd 塚F<#whyLަ:*kb-`hi'?l/y;E;+3vxGN"Hฐ *kR@&1kv.=vj l+9J,\6 m0$wu8#˒2{2|#㴌>\MS *dIQQ,t:#7v^l1,JFku;H6Hsěu!uN{Rtt-^|^fUR2n͈i& }3Po5_o7ŸfRwx I[A F%LJt}.- F⻌ngga> ;_Y+f6[C@ do}2Wiq,ɐ^PM`SM}_X1`xxr:oCEfVղ  N=7VCAFmϲ:e2!䬷D TZC#v%l6lֹaA8!g?5a 8=u$~ p[:8k$c<]w\P ivkymPlM4r7 nl.  v=FErN=#!3c/s(p/kD!Ĵ3}@_n:GbݺMK M1lMSVhh#l\/׹^띅TU[ f@;fxX 7. UQISyJ̬鋌'LلaRhXqKE+ LiEOv ;S3S8J<27ASKSVG;Hy.- [/QA3 { p#\M}L-fjc jO+mT3WbR6Povgnw^V>KY8&L$s6TiQKOQN pk6+<{f~n mm>Gݖ}0)ala>l*Xh#Mhб,gȔMʘrEa0wxl&횢Yw"mMqߴv/lW=+!؇u{1>=8˛#naǰq>v?bb/l_7@Ѩнn Jbbִj%t؝}SGA.wtƍNvl9OD !p݆VٸnD|c!u<,Fָ"<1f;$-@9/ŽtC@pYsN{LșR\'Rbu55p7~z s27ћf7u&'UQhfͻqcog0j{Fj~9pJK &ܭm\ ׌P3NKǕ;hKZ];ð$Z[vx8R0`q҈X$$n7=J'a]=V݌"knQy/X3]A)vawIE]gxm>7/+.*P?xhԕJj]j7OnI {i#I0  lG+f3bKb (E9̭6 !QdA<r/ÉaӾa>l\IscC} o{;5XgxM3$[xSи ~Y\9~JӜG_7'E# kZZFxy*\[5\o`EDVnoq!kʵ1d09=G =vYrim94 Ynx'eC-=7ls}Rt y%;kU[e ;o;+CFUt$ 4s*(uImu#v#.ysė~ ud|8iS.\ܕ7W ;W9]SԂF.tyZq&gf$xN2CŎal#XB[ó6rŪ)EV#宏}{Y^:}ln{,^^8?x" _*dvb5cL"C"i[f;8Q; l:<ǛqHl :\7Oڏ_·nY2(Ѳ-' :2Xxnp"DŽԽw+餮UPdy7.s䒣%lB-俎?߆~#ųFOsmsOWT2JIcow8a[<. 3𑖱 NJɛfFE N.KN7X|c#YQ2eb.l@0J[ݞ`~ӻh{0lVmv"t1AVmZlx?o3=F gx)G,a*)[%0D$nLuxw>s>[c&tx|̏swnocksa;'ճ Ko3S'SVK+ P껖 woڋdș6`luΥp\푾 !Br/+3g3 ,21@d l 6(=$Tx[11߂V6vcgelQ1.LMsh7*J J @AQ1J,KCN<~ӻW|G&eu6bGO{-;O%Np>mUV4q;fy0`tvq06WW_`5Ӱ 6 7QP [|:HSWXf%"WjZ@.$-=R?Oc}׼Dl.I \lx+lyr>Jx^Wd'pU{ H M4S sCNpך'AyKvp%U(t..:n"rW*XU;**Gy+#;m͇]V(` GPmt5 Y57s['hc7拶yiq7@go5 Gicψݦ(H|N`~enqs& nZ,'x=bQxs\;tYCO9(JvTƶz?|8vVa{c{$ p♣lLk@,h%h+YbUh=6aUMW,[#vWi$&@6T8'͹5)m⻉7C vلÆVm1z'x<\l XHۇQfIk0ML:L٤-i?hWv>Q0aI9mGÈq8۷j(xnTՙv/ׇLBx@#Xmm-@s=2"~3.S8;浃l,rq1 6F>Pӫl/oe>pAr7nUSцF$c^蚏 G4#ӄS?-nO3H"ϲU#0zg88hsq{3_jܩ33é[2DO,~.=`VHygM55 :$__}M7 <0 7ǡZg#s㧑qמ~2Tᘧ̵(Xp$4H'׬~uhS+ġu=D0 ]Hb ;_Zx2=)i3W*jlqm =ฮ'wv}+k*%m!4roN7_M]+֗0>`75,SKQ wHؚ._O'2Jɰ0ڪ$V߀3ktQ8'i<]`K8f7؀ 7_JZMU[6d{QX*V:M dd} 柏's~Kɒfp**ck%q6 46,bv)A"69ݏ +5Y0y0:SY"Y> z)31ܥ: <ְ\<8kL~fK)@^9ֲWI|ٚsW.GHZwz&lῄvvY 9Sؙ6,5<5P5\qÁ&s{)8^.{#W UlN %H֒]=K$rl?h} )3NZI1NFo|nhl@d,tcxW|􃹆6gKrO%+;;[ӳE+gn7. <2G!gx06u[~?+ s]bF属 &B2Or*^8GR"MrJ?gy<L>CQ;fӥnMvov >Jh(@i+NN*j+XL)cݾ@m+8k){Ʋv$ND]6UG01mΐNot|Zniq<`H{Kc~Z603##Df%L@,Z$g;lOf_.jqzX]U 0n*csIfxE-Wu-S{ T/xۏXlg1yZq]XkeL}TѤ.,V2%{ė:ť\4doٗi?]വQΝkYGt;YY7њ L0>x],p=,y5\ NSg -h=ghyi,>`,%EQX~`rd7鮀&˄߷[gCnK;S︺hm_/Q VQWEM$g=H輫'e|p`.gsKM@btژx9`2siν6T:lEܭ*k+1ϵ^>nMd1G!ß$@ .r;X|9.+ş.RZz1~_c=ẲfK1^(Z1 ˊR ᎖nN%z{ǘ6 p)wGLד^8oigihxwͰhk{[g,c3F ;iC 8j ]˖7f,iEE}C[ߔqlVG]p"ke1ҋ J[k I+v9 ҫ6t nI a<)%9#k8rQ[Jx #㣉۟R@MF7 >Vi0Ddv[)ଯ4'rNLj.u/M{.5]tO#ݱ4v׹#QKU q)\eQ-vT/Bʈ O~$|51E,:0RK1OOɌO >CNi uJj$)R2X3_)q\>:'?U|7_%JcpW@-l:aYv,ڶaK_4GqNIzn~O&=5H}틲Bg\NA&X=Eٱ)樖:;r09u?CS=;)k?|7n~VEn>bMv;vtX+^W53okqL?|a׶S~l nK/xlZHC kO+j_e-_R% -}E=0cSWZ"3hIK8<>F1shC-qp;9 GJh+!P[Zt`pi|8?eRc~tK)a؝vQ u\$`V\YV>oO*|4UQ圽L[ '&$0yYvxsET Rd1! \,tuqث\ǃ7Vyç3|y,:b6 lM5{u +v}^K8lOi* ppA^%p"]Fă~Id\ dw;pIצ85#?<#1`ϣl5t||s 7Gf_f~OðfYtf<'TJZdsI1mD`xI%״RXi #;Ic^ɠK{w@1pv=Bוfc'Ύ?*\4ݯ5mJ.Yh+nη۰n 5[SDؙ5B4T6W[ {4^Q|;g)Bn=a:cudäjw4]npQٟƏnuQ*3ɧ;F׸^&x_1Bӣn $t꣨p0bsAP5k9Ln>_o`7c$"Pu^M{G9}f'xnxHQߏm!yo;MG~5ARbqSNA"70RG#p$}W0ϟyV/`WKOS'Es-䧎<>ᔲ1h2atMc p t|EtQ2iKiLNi]uF|7HX˖iΔn6Sms%7(|w)ZWȮp)b oA;״_sZ3ҙ)dl,k˙\1f+-i+A74 @.?;XYk8oh%cUSCSQQETœAn:λ@ \Rg>DTNfkAIQ eu.>f{23Cu4sFtԌiv'*vԓA If}gWIpwGpcX M-E<w ǂEٓGEKM1kj2ŅLlXBG /ᧀCή_*@[VVxG/C ] q(aek mE]گc}ݮ7}Si<<45 `ko}V}:園A\82qLM5ltX~j' g8/b9hjfTJjX |M2I+/s^n4xg{v3n_튓 S5WAa .m@i-7c{~NŰlGqlbKuUMTKY6xL3/G%w۞m-.E oZZy@m"߂'n٬ 8okpsقYT\)k";>&b؎ A%]=oang{Dl0Ec1κ|8_ff+jÞLd-g̰;$V~mf'GRٝL_+H m'7~kEOM= 0 C#cܛJ71ekڌ&^rFO^ [FÒubY0o~ײcjlj3L>U8-l dcO|.a,W:J bϊgd_/fY71vwULfk¥, /A;an,+Wgݙp<.`TX>Kbk(lh 58䛛ɖ7IIX/˄HuK1k˭sevl/xfU&/+b8)A20 o`WMεuol',;;=IE;]Z#p|D4ml|riq9pK[Y1({ڻQY@+~>9;I+2'cyTx OVg{)k#ܗXgh٫2gб|[:5y@uhLnh Zֆ>f;e܃|J$n:Rl>;`H&6ͼYnz/! ]`._yyCWi/sc!on`c-̘T͖ 1H/cimNu4Y2TVAE$fSB bcMrz_P~sUUbLQaFaK?_fX GrIrr>K0<a -]%kioc%;|dȭ+fH2x6}Ojt?"1َqjӛjpu.BZ7FKRX-k{췴 a{$ëdc|)!s_אA 㹟Uzpɡ#dA}#xSu{! s"<`5s] , wd?˓pn ̐]i]c,m N~\ݜ؜uA; om>%<-sHw5eß=bY*yńdNY~M.If`\Ɨi\f4@Qi韒+2(DӦ7kvد/OEv_5X&=ޝ&ѡ+snه&:ծ^6]/b;OC?v;KC)gah+)rWӦQv8.=Zkie 8)Q Ѭ7ab=wMr.x`1:jvIh $muS3Ņg̪V hϊ"N|uu1s pL'P!3Oᔕz}G- 1܋gLf ݐz6a/?s}ڗlY0eCq*VGVT8G~Ǧk~mg`tV1R:G뒡y$xY44vI{9쯴*O/`R,<Nhջ pao;yc=Fm/9ٖBVǹx Xls5g]ss Q4Ρ};G{HZnI>et([ϚŻM2.TdpP=3{4B+7t +se>KQ.HCȶ{_7~4/C ,A,9=cvxv8x[93bn<NVղyLi?<EaVU4 v!=Dlk$oyn=._`o%N$~|D̿6ft-X'KlyE~Cۛ;bxk]O[\ o!Ϝ={:epN ,҇6 {vf<$Zm_Y8Խ|#v MUQ+v٣CO~#5[VIwRԾ`3LEpE3CG,LlMk[7~ -W_ωuѷDXkQ6GWE=!6B :IOd 6F h 4 d"(ۢ=[gCOAce1Rvΰ]rz@]asa}eFWGOqnmo"G {>ͦpgVU+<8@kXo{X:{s!=vLTJSic5 M.hs! yk0+C4H8>K,`}R$%BVCS:7kT%杈+? JvulߔLxbh`t1=h $pO{Bbvoۓ~rYkI4U5XA5ܑn+¹*eLjax&?KM)d8@qpnrm2>o&cp-gG2q6 W> ~0J{~ efkp/ˢCH~X?{蕚]vq _i)Ũ1 |Gc] fr6 4 >I3KzZ0;:#0<GhXdH(^=lv :l 68_ò M`MS7LX| &&J֯Ugc7hٞ)?KNPftT˕Nq46 fJ@}daxW8q%R%G9ߕ__3/oyW!S6 kaxO+ h9W'&n~/OG{ Ӹ ;ȴxlu0<_P h̙;.g 36ҷCl\{[c y+ 80/f"'Z9ż1)-gxcRRÅPRPPӲ6CO .-h`-e(xhj+&ac#|5._yNmD{켩W|5E=z2<8#bt^|O kex[_~]-kd{ზjxD p-K@W"7ǧ絮2H:/*bUE,1S*p! w[P%p^]dR?C.hkcD:V_KYo0vk Xkex'X`;5}%w-< QI1Z݄ jRZA6$v?iLvD:WY >mB{dH@9s w$ϻs&͑C5MZj"608<c˕?,ٞh1EeL8d+0L;I#d-.AZލ걮 kv*Z,o ZE54UggFvt#ї|,6@n` ycZ,oAULwW%򴹶7UM7-߁XSIs0/Os2e;K#&V0Nq|XU?1Jf^iyMPXq&kr|z*i륉.c٠jo~! ʲoXhY ʸD_0)jZS+ӝ!-pp/5nGAqj*PyC0 \966갱s!Ou~ }R,/׼k7RT*ak :h^JtTTMWRMRSTMpK=OVnVB)Ηα&ߋq7mTlUus9Cˍ^{<<Y;PiZ8oǑWXG4Jʆ0>m[Hۍն !c*Yd:ß5־# y)u&7i{*'uE7臭71ok;EHE_I17AZ7 k'-uTSwd]3g;Qtr Eq))#b6!k*b|>["(_%s𙋘W3st-{պWM;d%٨ +r(@lϫ8+'C0:*sg6j"ܒ~*Ta.@Om*g-im&6k&f0r-j"{k^xAP)"YcQ%n̉Pɀt]S{TGsElFR6E[6$qجLtuF\ZM4.tV԰ ܷT6Vs(ZfՓ׵m]D.5JǨV}M;9Ћݠ<oKlgk4pZ֒+*7qY0 pPzblrUR :w!!䢶 lVKxUN'{M7Zhq S 6ŝb#*?Tzvߊ*i|olnhIl6."3+cibmeٷ˒ H58 M;`͒2 ~T 77_Dq .jJJ\́y8 1:(YmM4\)J* >>!তDրMa1 |8If'#e+Zއa!!ef8aܑ3 bK.[ub2zn6.N\f[⹂׺&w^s*3f$킞)ex" -|M|ś]/5-uUXZ4 OӵRoƣٽ`dOv(@d-lI6XM꾻X\[:Ʋa>G.##akm)eDŽ]|ȿ&~a4+C-4P5_HrGnYC:e;4`uWBjsxYqu~]3Wv0kK,0hkFĀ3ZAgy !!-<9Նb4X&JԴ9и0 ^AOŲ)KM#Jىa.-1oZO e8~KUS>1e yҒdiP^bp\G/VS@do- /kjݣeJ p!MVΠu.I&^?^/WĪqʦalϫsZo2bIMye1E< t8Mv.AGQZ Oxl<%+LEpJZx]Gh7SOa?ǃiaу:/{ȄmuȕǗ,'Q<7ukyo3Ee>%,Zȣ:-+ W/!Nn6bAJ5T?M;\Ș!s> )ݒ 26hÛpg?]m{,Ƿ:cE&#KOcʘG ׇrѵi7ǩKq##ifl\l,mc/{ULgSb$:#;\8/F&c3O".mreӦ8ozNj^lbX Tvh5PռTROLjj 0^66|~0W O~ SՖ=<˜_<.qg6>aONeiJo'T3廇9X=>&)ee+t L|RbrQKl/#Kvߑ绗sjb5F0a _e{u-a_̑\tl!WSVJǃ\1;bRSR/0 e$o`,wO miIAkߑ^;eD $a2O7o+B'fwwo }{9vsQ)jaf6#6Ž=Ò'ðk+i*I aӸl UbٹflO5X!<.ZDlԝK?Ű0sVTL׼`a!$rQ|@d<8*q@0H q %k{ /MV,n[Zw[^P)]GQ,&G9Zwصw ˵mSé#Fbr%'X0m_e`9&I[ZE-q,? |K UA!t7nwk$Pah݌@# OO am8}xBѝ7-sn7Fn"pqӲ!f%s-aBc9022*K#"J78 9ބUɘ[q;H.'[:ip:' av].mɘX{WKb02؃{X}\Qer)Y")l^+ ö;;Ajc>~jqRS<)YI s eY\ !߻I"\S1IQNHprPs@[7h̯f5T>ρ YRɮ.mwG{lN.VnY"ZY+A0%nk+vgv>$GvEَ:,ߊU>v \427qev?`1ݯdeh.yL~_g;C5s`fR\Q}| ^XĢ2Eպhsx}Ƹpm [qI2{/v0͂U.wG#پ-p-ѓ&e DC'zC 15k ~å+ YT񝚚 ^rn,#2X1qbZ n3T󩖻Ӧ; q;pVĠ{)X wx.m$7AIMQtHrvY,km}Z7К<`F4> e>K\H%;߀V?maS=0X +XiC@I6loY㩎(,MpW4ceP9bgɠ2G48ZHLtKK\dG-;\5U8ƱI.ŚrI߁sFYԴtADm?]w6qe)0QVcTQU7Ss/bIm'g'8M }<wc}5> I8>O OKKwMsZۛ Dyz݂L<1˯Xg]>#S2$aco'F*ịG8 :I˞ u-A ZLm pZ[$_H_Ga=0Ƌ5*7og|:K58_xoԪ,^p5絆6^_ɞcv񜓉:èXH50Z<Am[m\"v+*Z K r_s\nv[mƵ^4uMO !_4{*L1n.8S'X]<^48}f^hLwߚqoظQowv;Fks L}s=K 88YI3(W&i] .Ƿi6Ø;+=/ݫf,\; r$z6,ksC\ۛ }G NSXE4w3d=gM$87ڬaGNVtfyWS8ӱ:ʕgmt¤lPM}(6۝^gΝ2W)R" Qsm֔Z6h[NJOl\]ߚ~5Y8V50 xeΖĒ &cm$FjVR2I$㶦5t+@W k\IqfoUֽS[ [PqP1nl.RVI6wX-wRJ"iE@w횾C0zcE-]Q eOqZ7dݚ㙻1a.H?v$Ѩu_[8W pJ;sRL%`g5jsKzYx/>{9!-GĠt&3Tw염# mX. =5-NGȄvmrwx%fQrTLnuyWQ2a1jM#ݰsHIYL]4₊vX}<,.2@C/˄9I|lW \\nުCei7Wk%ijjXV'5v&G˄euzt /9c؋:&A5GmJ9rzL6zv\m _M$_lM.>۪s69$Ί ~'n=yzݱ&RQbNyq ;5_{'lceFb:.-s}6Z5 hDca@9-cG~]y i.εYxӱd:  é8}TxsTp6!kylhjJFES 1o BLeI,B(YzS~a-#jh`t|a44ɱ^n:Pj l8UKff#cE38ٍ-s §pplNԆ6^"\A UvY蠥Ʋ1>&=Uc[t0<͌8>bX3 c%ŭ7+_w g ^f]yo/1Cn`4#%u^$6*jx2wzlSo׳p;Kv©\Ұ r-rvqNk⇷ W dW% #km+#f*A)$Mhw9z+,9~ it1:j lzsR)k:USo/{lU%'jkq<>e,T_5Dy6]ƒ & ՟񺪨0$wA: Eêr'3 %|UxNx  ˺'q{̓.bp߽M.;$kHة|Xdȫi G?UJךh`~ cˋ l8q,7F1UhX ծW=:A'kamT͍H%F[}MjN+2Jxp7lF;Le1Aşigɡ[\4,* FڶXxz|bx}Eldޖ.ީsVC1JyJ@OU鲬eM8M&Xʉ=Xm\ZwmI%^lCdҵkgm˪uv1I'˵QFfZ7G1m$K720AQiu{+[MuLcf=mӞf_#YL+1zΆzF;58i$E,G/+3t0 UwF7M$O4W`l|k ^`ȞMLeiin87',eV.O/|1bXf0fSJE5j&5nJOxK=%kU8#wtFnZ?T5fXci/ur/lAu-Lo[2I5F9O ,cQ/r]$Z28(LWnO }pwZ k<2n8+RdMpIl<+]c-;&*01bw]X6U d_E (q61F{1ʔGXmFϱ4ay9#p֛V#gzE#Lź|E: uQJuC!76_ab] FIGgbsx~a3G1Haz #V j6fv-6sSAlDRlQOQ)I%xj#Ǟi+rnOuH&EIiѩz]d6JɻX C}N +5m{tYXEu,QF,dܟ1:󆞡43LJ$T,áh,-j۲[}UEl bF\id7}խPiMi5 *C;yi;onȨdeM]FFQH Kbゖzy<)kc3]vx xZ[!=x/ݨ2q4IMqg7Lqp Ms=`;4NƣmV e1R3>HJcel-H0m z3֧#ݸ ">dKPm{wh͗V=-CGU3IjrψGp-tn}m=jt=غ'齸 i51̩V9f'[(0qf-d,l@--V/s45u=L h}Ѩ ]tK 7T;H-w̑VQM4KUD$oqZەπUT _~&PcÎt[]K0l:haGX [۪2uQ1|%]#ly8a%]I+KI6yeۅ]]<}]ټEߧEOmC$8{]KDֆHFts{WV=(e" OPlLNtHU&5N͸X-cLB0|GOwIx66߆Jmn)$tu\xuXcm=fZ ͏ F6z>ME}/n +"! +\Ym.cuںfU1;7(pl$0K23 K訑bECec ;\\䅜zRS8sl 86\nbM7.'>iURй9:&n]rnUL@"l yd6(w,=8u߂n_2]pKij  ?Zi-hMĆǧ`=tP,$c4:`dyTtέ\S:.eUfcZwݺ.|ˊ);j;1Ȭ3dD KLmmU3'ػQ7<9ۇaϥ8ӃwIwsi"\z'ï ,-ͨl.IXS54φ65t*룍2b9hC" 8ơlBSN|iGrY(au8 @y!ΎOLJ^!Q6jXRLpS[pu{O08*)XqQKZ"yC2F,|6cvAdB܏_ɘ{3`e3bl;E-Z})&/VǃQr [%1U/g 5 هn`BnrO}36C)+Em{PU6 ,$5^%AWEf{@v>YUUtlA)n!CaƖI>!;K߃l,xoec;v{:'3brfLF9i:~@ GFm, U4z{?)<Q=b{$EO .ނӶ0l;B ?YT~R doPy>0{Pp{44q~A c%cWL~(]pL'2KzV61.;{Hs dl,Os]g{$,/0:Uᵵ4-g'SҖvݙ ,il6UuTT^[[FHڗ]ksp;M|{8 A▞0C`H~ΨK^Ɠ ۴ oˌ8\=%.sߊTv֋tخbV28Qj fLI{ꉑEm+{S+㔑ڽ.y =۝b"?lz(q`,Jӊ' ۉR)V#HpF9tΎmqnXn>cQc8a%#-nے\:+9g*R?͌Y|"9F$`6\U,{"OL{ DXبF:ZϦ+e54D08H]p~;./|n0⹪PյָK\4ߕm'`n3+id17mq$ n+2{+31TCE<\K<8)}$uM y-m ׏p/f?u/vʚNp:Aq'}ᵈ7f}I[MR٥y wqq`2νUe7'.q碁8,97m[k-}{qܥ'U]rhƍSw*XR7Y-çk,N~k 0DW4I^:tmLH4yJB*bn(>* /ǒ2{FY%È6:Cy؛/)001_K q> 31,Ŋ[i Aێ<Ӽ0cn1RIjgn2rG~+pN#l̂ {o?.2nq9_óF_zֽ&3Dc\5`#/~#2q=\*E_CM[+PGk-p6nb 2x)Onz/|7koĆe;1X;Y4?)PY KWƃnq9ZoZF,7㔠nmt[ q|ql=62ʉ(m {devۂ`XQ)*奝ёlwqg\G^t4UWE@ȣ-s.E ڇa=GO2%AAdl y^c-˃c ª=0IȐe=Acx~9YISO]KP$FFŮO\]+hj0@2 N. kAZ}ד) ðjpfܘ\! nA;yF;S8rӶj*Yib|[ix D:Hk}uu} |4fHm.+5I |P- XoI>7nӸe\OtڕV& 3|ѣf[lm63~HĎ!7"7 r_N9R,PiX.&'1 .KߗIs;7樾O ,Lª<1ؐOh=>5xf'snx'a,{}ߵPm`^I; ό0ZEI}+\}mC!H{́{Z<<C~7u,:N$DVOɎՊx~ n>WNWI܊)=Q)/WOO=l8X^.w6-OE\QI>7?H4u=m:vFS%ͨdnpѬin{/avwabsv?RaH\\lO߇7i Tt]/k2mm 46+(s| ?We}eL졆dSh|2Q D,n@yl.!4U4S+^d\to{om^.\jLcvO\PTca%ZaǏ/pܲ۝va m%#\mo0?>1p*EykX3E~es._`oąb3:J8ě@7zDǻBmK|x=,i UbշtWy5iu m$ݠZrnԖt[(5q0{SѱpƍF_lh-oہXl$`xX/\gΝbs濽ۓsx#j}.5\ah Ҷ@֞6/bwۅ9sK5^ W HF  so~)h)呎v$szp] B lS0=T&\fknpnpa#Y _ q!Kdpɋq2> Pkl6'q5*{,s d}-|]T$KX7cbݭkߚK91i_O]$nlmsw*j&i ]SSٜ8=$ Cۜ!Vn k쵕ě_)]⢢:7i/6i-qİO2==:FUlm;;eѫY-=Dn:OPT%qckڦ_QYxmL ȝ^$"e;jDx|f&BylC]}ה_i-jF2b/G9GFnO3VLU ˇpvW06bSVSTTU LQow$*RKOQ6*Fl4n 8wݜ5\cxwvĴ[nA*H!=I!tnnsU>rohsF5ߨ4|}W;IM7%Tu 81|2fAWP0y $%\c+cȔn6:nD̂{]=MCRƽ9 :k)eD'Y7#v&1GDq%L-t v$)[4nIM#(&I"Eyh;ohiCd$\a0i]|<-[l/aׂ.kïžnK*V)4ص7ϦcȼVR r<^;k#Ƌe+),u}CCWO)N[GհO0*)0,4pO14fqMVM{#_vZ#]Nlv?QSciۊ03wS}HTNgȸ}V"eIYs|Dok!Wb۫WO a; 1׵ʸJg/Lbi4|}o 3(9+fv":&Uoߐvը4kָ'n*/ ^ x*k' !}g3QKS0 ۖī8F33rInw=t6 tɱ><98f\:KTݰ~ ?&!{l[v!!l:f{[lt3`{"udm/tqZ<_NuLxvhcN߀ZV[i{}P#լ8MˆS;iG0ouoef)qJr$[ IX-j~#>8~5yYkF`,aw7jrk1QI۾rqbcfGlEpiN=TQb*zGfFtnߦ˃vU<4 l@-_ ǥ~xpfAZCO3 퉤qo+LM| vtUӽڃici-;`~jYjwM,-MnYjQz0I6{GDH%%3N;ˊOGIR\FDz i1۩ORw)$BD3Niߗjk 9{pS e lHG#[-p6_UW歨|US#,ynwE-\4eQJ&LfO3@G\|T0 lDw@˅}v]_ªcf+pͬ,uov<6>dǂd#I-][j je-.e5602l5KO݇|C pirG+(pi,;棙!wVo%ڊ,FR,bK[eG l ry[\CG*R^8 _:+k$mW;:PslhB湦Hai KIÐ_c\9lbhe׹Z[wl̬Jnn)6Bh帿yDZk1T8se؄0c#q zEtt)[aiQ⍫nA,ŤoY w oV=|RˉFƾGU?mX\} uU)F$}봍>ShK>1U?tJ1(M'pE,9F"OWuo6ſcl8!C5j12'0o[ K4o2IxeqkMPR<7DTNA| 'Zppdp-{.Q۾xdo˴#@e1b^m{oEn|Q<}']ajv{'Y th 5}x WUX!ɴ/'?3cp4򆓽E5Ͳ;wj=ksf/MQb$1)lCd1M͈a+Gķec挣+q6 RcpZGE_Ag78ӷ4{Cp k$_{q\w/^0#.`xf=¢6sd`ݤ٭u$@XazyY}wֽC9SX^ܱlP]{yVE۷$MX{K:*Y*ec#n^ֆ$ H'|3FY+N1ͳz,Xj$B,oaR0ʹ `h}ܮ6Xt6qJo.= 0~@P鵲hp6+Z= /@ֺ'ǯ!EV< }.o%g1 ;)840YDE`/7=mf6gf톸RO;C+â'8,8%vLogn<cyy8u-6\}tacKiqdm<䷜3 0c]PG|Oe12MfqL>:cAQ\mE@1;Q6 7Q'yz.%8p9gYSUW Wnص.aA+[ֽCA#eωύ TaO#;,.-.m/įō<<;o?ݴf9ʜI6B*lyWḺᏱc7TIauH ;pI>=HVdy7 6j˘f&f%uuvڅބ/c⥕4]~qmT|P?U+[m\#dvGXL^YA -i}p~ss.bĔur^ 5ub?v-`.õ¥fc4`Uss{ ;8w ;/mݜ|cพRé1|j*!MKA,s\}>)u\qv'KMSs-X:gcӧ|m&`vۚ/gdvcypDq 7gXgqZ&mf!M;jXXWZjKkdk+g%T L!lMhnM_os2e(*jH\Ca{H6`#nwؕgqުqgG3!}{ka p7p6$(=&`SESLUO;$ %-{riƜ1(O`6HdPi 4ۀ;b IL(tfц:lAmy~J)Jq`&+s0\N 14ny.Ij [;CYb-nXj*\N tnk^,Ӷ^ϻ6y9lK1&bGRM$d1]ٮ}l.U٧]V/kYp!!K \9ǚ19;>7i jIhqvHm8_RMk\R*G,R/WFSJ8]Ͱ!F]FE!+QT_;58KxeTYG#]sTpyjL{0au0Z9쭥2 Áu$ \lvΣHb{o,wq6۪v i롊O)k;@7`6S w A~HO+K\>%G٪(˭Mxݲkv%6|K?9bXOgK ['rJw{I6ЏTi( *MlOp,mYsgې+c'W#7y$[sn{k/S*MNT֏T-Q#DžǴ[ ۦmHz%ފ7K . 9{71u p7.;l=EG3V%[|e }w8]rlaKUWTFep .m$.g8\u1{]5rwXJx_8]f!)R"zMeǩ8t֧K$NH.&-\߆b9^0ϕ*ETS94VrzK|v Gpê"!:&[ (gqluS`l_35;xبV5l0TAW4pʹn8H;- c1:晳P278YI%~s6#sn]IkOWaOdxZZq6;X ª*l:l6eElP=}-{w'u0f쥒sWc1`}}u5E |.m;b7Kڞp"*lURk*ji{*e:|Rۼ`@,cmWR%,3>FKH |?Ng3$ni@:l?5NH} uE履}/ 0;^T5Ֆhg`Oku;vked+n:xj)ZjS'n4o%.NWԏģ&ī;\ KpJFYK&c[|W˘ZÓDnB.uv;T[wi..H@]EdPKAS$fi O+eW3!}o1f.Iu"\dj.?W53:A u-cѕ3,n< }Mk \5 q_ -(c40K\n,Ap^{ggL;6Fq^UA~*q>;%v38HʋOLl\pCZ6p_?{6LsH7u;-OӪfEBc_] ߏan\8Yhc]w:)p~κjʙfGK42I#rII+#-佒i4wEEo%T]JIt_+y'o$ wM/dEo$[to$;B迢VNH 跒=E()eYU4~YXpY$匚$E\q:WicKk<3NI&*HޜJiZ4H8\^u/*76\YggfBꈯwuV{B aO Pnf1ͮhl<@l l:F#73ɞKrצRO8i i0 I߀XuWҺùy:Lmxt &M n 3ebZ`s#Heu})mrQy^k뵇/bp%^$séU/UK$Ikcirݮ}bv)$CX\nPk.)]`G5fQIJɀ $/w7 ˸O˔=^>-Q}M #"htmDRf*')mor$8]Vi˄P򿪊ZFփ{[p!VS6yofLY|-9KC?,?_)Y/6푦m{kz9ow-,!6- s`1n1#a6s>WLqWK#*_}$X.+1VӺZF86 l~ _Ջ ٍwEECG#+&f:79nvG;x+t=ƪ Fno qq^@ey$9Ħ8u)lu pRA qC#e/'_;X3OD)Z,ߤkFPH);v}+p=6ӱSc&HZV@oz=S4Em9^#|zd(6;in'e`eQk;`iW#@C \#1Pgyl-"BFNh;]]ٓvpB!;]O/Ϊ$:f641&Eǥ;a04}Hlq bMv*9$:&;mp?~ 6ر7|b^,#"`I)vNl[Qm/zև] uTzR;wS5f41KH|\0 ()jZ ާe+ 68n^e%R]&;+)YZĭqlHtMx|#:K w*)j4?8va{r@#\mYץkhp p:.fn5<$_n `/5Pb4=ˀo[YY\繯  6+x= kO&;k]ezx76]Ka #5ۛnZyrD$4\#K|f\K6cwUJnFyo-v)?{buە;L*%yv u&-y5RHK@& l:X)i:".-YO?D4B^M\yI:n0R_ňFo`t8_N'h\M%xcp 'kZ~K3\1 )e Zu0VĤ >q,84 MTH_6O3KရAlE,BHFvuS8c\>dA{K\r|_I%K c;]u\ۇ%7SxOV-Q K 㧍ΒJXV3FzO]5u 䱎x{@FcL^YYy݄rA8WSfMS69)^;ZZS.R=k[²T:xq.:q##a`?k "J*)餅&<EmPG sY##av."%o%E: JW%HGsϒܲOk|у78FZ6x:9~NUwt횮+شp?͉ST>UUI pfe:mmk;X U륯}t;pfqm}>1IG4RU˛!5}[/vU-ZĪcdC$#o<ݮ5, j$`۵]n>W ~SKsiMW2:FP6k9i 7,ԺN)\@h[]?^aAO=nT# w҂I nͻw7($)Oxiw^LeZꚱS,'[C~R)ljNkZl4D^]-usZ$C}[}yhk( bn@zW.jG!4,r7)s"<:W(qzjVVa49ԑsmJVՏ8ٵ2oďM9#X~_}l^5[ua4txe5Tg+ho ҿ0AE,,WI^eKf~)p*X8B=4pFb{LPdtͷ[i]v_fZQC\ѧucI'&C0"- ';mZOYyp_q{DGo}a}!-kT8]^# es{[=7HC%x\2>V=:YSn@ܕyE kj){ h@ݭ6IR7PzU?C%kٶx/Ocs,uD\vV3Q`F&i6$Ve$raNhlϪF^>텶ysSZyvK:)t4䴑O \IVR 3OT)j4kl.8]nBwSqE3vkY0j|z>w-c[އYߝO#nJ)aW%51OLB9hbU\=8weOoGmLa9G:D[41]r;EOa8~bc=lyi觊蘆n6:'*N}1kc3/K&47~jFǺ6H!Y3/_J`848}e=5\s NkZ$qZMrv7G^=@AIa;y`e\K6P݉US2Tlc.|cn_kp̑5 wq Kf^ sn9W:9rȣZjꚀfk?Qpq^7=9W}X#bRMZAL1,.oۑ}[榎C 5X_3uq^ةi#:Z/]N=45GJ4< {=YQ/k&f-"ìߥOO%, Qana(1,IsI=xmPY6]}5Lgɵu.7ꯤv0=I+6,hmUzI"ӭwy{.Mg7f:Bhcr-_%>6;"Ϙ-]!JBj֍xo?Lv5o~<9 c߈^d5;ǧ#f'O;l8J@pP]UviPq>psocJTߘtٸtqo:;QV$7415X㿕Z&!SCi Ǩۓj5ax]KjHi Fh 751\|RTPe hxuZio Q9jP_`ohAWmn zl|iOBX%i $G Ih{Jk#E÷G⸝'ڶ%8L5r]!X M_Pr>Aݗ3-`4L°*4䵍hqǙs+uY{S;ύfɁ6V{)'ZBc:a^"35Nr{6G^GQCf ٶ_RFڪlcvv-pe*#Aq|EtK ; #ro N;ˤc5Hh;,J{]QY(ovHѾǕe(`5c>@?k\nR0by YQfq(]5t<;;:2<R2QT8`ع}^LUu~hDMض([N wtȚ ݷ$y򪲯uE\U<,.s Jp|\*BqnձvQTR늂&EK@aa~zM89 ʇ6L'/l2_!eRv@ MEEdvHS,YXV-_T؎WQC_Lji1+E.=⹙`eJ|,LtqualI wm~wQn7c38 \lw`O5E WbaQG)un O0Aد'7o}vCن^RIS;_\Jw ):lnXn\mwloS sŰ*Q,uu=D:Xŀ$m;\DCY0 -Q8%l7 ς*zrilW%Ս2OJsR$4u^/9/D^۠(~stU ؀r|o(tw'5 .oo$Yg<~8t02G]4|h7jsn@x^q2dcmi[4H{ֹ0oA+S:7g,.S \MR:1$i&+u/ӦjxLb9{*)ΐtjJf5~N},,%Z15"K9u&S)0mx6&Yd32u5{ìݍl,y%7,9{k*'5 gxfx#@4s![ܲܽQso,6: h7Hɻlrp9f 5+d|al2N꭛zxP`sؾ(;*نScFxԵTb55pca.hZdrli>eV4|ZΑ-p K|r%x m$q+=}u _͠wȿ{3,ܝ.AX >EsJ,-4٤ؼ sҁP-uLwmk8_MSTq$mp6f\zoAO2FXjcpN)P6C݀x6 C9npsMyP#7Jb9g=GucutaW?XJC$n/l7H6kt,':͔' m o5?#:BjdTc45n#qpsI{Gx~ou{jS#};q;%qE/o9:E|>m#`{ɈfW+Y$=q1Β[/}㴮MCm[^mo?0*)g@$$Yw-+ླྀK{.fΆcx lE^\},h[hé*1ֲI^ȮH ~V\;0|I}P |H6!d~&qz HE$pMZ\Z&RlM=/V}|-@ܯsYEωΣkYip۸m{Dʔ nbgA K&y \ixsvp:N9?V^3:}w.,It݉`9e=N==e;f`50-K,z{x{d$K.qw7&Im\K#bkCxcÐ^)sY :<)_({ns7ۭom8}f` Jl s;avx8(qCMA%453|_bZqR> (' M { i\*ͅ7R'WB͍){.,@UQJyY#t4 ;}i9:*ŗplkð920>p& koH\n=e쁔pXB%[\7ssIYh{<#ưLB-qb4C,  Aد6/M]<΂J'1͑ Ac{n8^t4y'W lU|k_S'O˝e,~9oҚZJL~RYK-咼wnn;%ql|P* O=ɨ,`27S]rۓ`mkFZ5T`[+i6j$x+8 ߁=PQO,nB风*fMxdqh:A rm8/ߊ M s$A -.k,ר\a:> lwqq:7XG)si6lr OQ&+UJL ߇ebpxg=7r 8I-t]\]75&A%E+<v꽬zEq e|̬'OyiEy㘽%wW+{>ؑJy!4RSws5^Đ.n{g 2 éAEGa0 47(hvaѴ aq4{ kqhl7/-I'tNc|v]|A\s1=]zWKs#6!8.j e V;ג}%[6xen RV<5<ͳx9asu_ija͸EsfKDmpcnվvz,Ɇ3\88w$sJB-nY42 sƺHX8 Vo|<;e ꩚mh[_x12H:I# v'un]ph+M}+X郮ceoğ.\yg:fߜ"#G^p6[>7O rUc}ŏQ4RN n&Z4H!լ }8 >,mIbI;098;oL[1 ,؇_rv})~׻sH xmp^iV<q~d" >Ll-fAx 07H܄ݩ)t&&G$kj^Ryd^9+r%men:g;!s!I. x ƴL i'mGB3KqJE3l١. ;Neݍ/ s.DfC>5<{u~#lGovؘM^B޼MT\职 5WRV;bx -teZ[6RU2;"6`,Y*[,:>&٠a%,GTH6-6*J_G!]ZZn.6;X\*sUΘ iga vY HQxtce3{nߗwAkضKo驥RTчA3i$%,-kX>7Yu9Esߧ%5q9Jw5[ nȋ/+̆YPK#I;\,#FS$؇8YPaO5ltmaf/fw+St[Ua"VTΈL-}gm8!ae71Kc1noWu:G>\<@e'OVar#!tOxY7{#ʈ.[۟h ;u) 'f`n}5ܭZ88@nO=uTGTFHHik?lxiF3%TsF e3Ƹ]~cqpU~ ˘AA>1P] &}&[PSR׶Nx9p{4[© SG(2l'ZU5Tѱ|k-~^.>v8ܞ7N]^;s^gc;䎉uxsn  ^$;K&ֱF.Sar >GXHk7^qݕ` eˑV߽5C};ilZI{,lYӗG;IqaS6 *jfJM@yEd*8̱VUBݡMv͙E QUgqbl=yjqW棊)]s߂vt*>xv{dY ..4)SF׋?]`<[ |$>A[s̏~>işOQ8:6lxRJΊƖMVlI<R )qHZCo/e&,31,C\2 f4m[pzYm7iǜgWC.s[my+A7%m`$*qJyHz|`rlBTWUE%KiU:N úe6&񼯇Iii]OãIBV%&]& 1Z9㮃EP[b8gpJ"yc`}lEkS3Ir}x;tY9C ey c tEK!ˤIOʹMW(Skچ_c " ġIarlukk~)eڨvFM;nGOձށM#Y#uk)-xZƩ"\t߈"ފ2iᩞ!k nX؜ RBv\6FacWʧV.[& X[nmW8n!{iC8M}T\]K# {p4X{Zl]A)`X!Q/ ě[ől5@L0K4#޶]:gYjUџ-wz㵵ju䳹}q.λsQ.7 ±ȁl2796$^獽6Xt_ MYYuKtOt I,,Ii\.ن)N3',E #pgKS!.BvpE3{,mFOth5tS0I)=Lo{%vA_5`|78 یA좖 3Qc!F} q-=E6 ɉa IZmv:w/k,>9f٭^sӚRoa錋qܝЭޛ(45͂Y5K-h F./ 0m.9WUtWb.7{H!gМSx蘿Ts]c&H7:ENm[ז1 qka#{brIܐ,W=BHQPzy%mƝf4پ?%T %PacI  ;nnw]3(vOpi"tEI&:ۅɲpƛK&EPڙnL척%lEW!sg_WzJ:x+w yŘv]MMN3(0|=3!TC\t"ܷ'Wƽ'e!ry1&*iZ7+_hf1(3V7S>_/ 6 p\E om׫ms=?ۇQs.%l"'2J41E;E!xtҾY\'$T5+8ؕ$qH"!c4-uM=؁vlcwTĦ.w[~F:viUY[4b~1 MMS|?괲|rG/B٦s ņ)qd؜mX$n8 6ᑹ7\zcksx FwM`G-vk_P()_?t-. ?Ϲx%0jao_\>k[ks>{i .S4d-n ,{y0vonŝJ6c<9&NSc#LLs]ceo$.:|&Js6VX{#a66ܛ oU'E,3We49~ĝ9 96 +1S#c&7mOܭc1mbvǡ_;?;O͹󲬧h6jWqls ܳDgY-uz 'ꊪʩ Wqܒy^r9{Axf{Xu|=tn.puk_S d "Ȳ(!@&BxODn }SJȲEEB=TSD{" u@ DPԜ<܊ ɮ{9bg5a.|tM-KEDEZKnȸ^|G&;Di0lB>X^3{xk 1QLMaPbQEG2xg6cZ_⧱߻F*lÂf©!.vM6p6 ?mײcjy,AG[IGFj̭q;nZlyҬ RMe\KPԐ+58Io渡 'w|6SeG>;{O;(Ed,*˔ cvĹm>fG1xhUɨr.I;( >+m|F5$qvOwIBd{~]$҂8\4{~is %BG4%|D]ɠQvH; eD1Gu^h<= żvZpYViھS,O|$ލmҲkخGjɣic~jiӵroV,Ry0)ijT!\6ͳKnBa]Lh+\L'm~>3vγE-[NLlEb؀v^}$Yֻ˃;7sg\G*b17y~VpׇO{Iql;AaMy@YU+cq s%c\  8;IgnpKf)*7 ;)is+7=K\sωd,IMaå&9wx CW,Ʊ |Dc8`bs͗;i+HZNrqIԾh1 ʪ3HK5/{&RT?.i~i.yg1|#E~+ϖvW];>_0N0/2E">g /x u}9̳El()e>?]\–B^K] vUk._p/ژ,~^Jq )#Q.FSw>/mk{ɽd@n d]9|Cqo]._&X Z"k-\scӴ䪿lMM_%oX䴪zX i$8xa~,X甲qk]_u!Iؘ]ck;4t׸ǤZY$>kð*iׇL7ӱJ\@hžqxۛO;IkMXOҼ eӥCjɖwFbQ1E0ܺ7jrJ\+H>>.xioci/HIwe`K%5Cw- ;򲊩?iH{ocY74d<8䏲#Ivl|{!# h$QofK9oFu[EutU0O00=:)*L2ji?0آx ~^I'?9 ʺ.2ο cby΢ûdz\6wO5EEߣD^- =~ ' 8 k]CqFMwK̄ifHɝܧ&q(vd%Ŷۛ{1&!I4ĝN>k? 6p7i6MA44CRUKlBhmYw1Q፾!Zs +xf-O QbjI6K:8:Eۻ8oaðrMG{yk}ׯo]{c3eC ' ǝH]UjIݢx}W{>*)YCT0u'#]d6<'u(I+办+I_ X7.p](X5Eثufl\#ӊJZ}J d,~Urjh"$O4ؓneqWpOO/ocm>U N1 1:vݷ|,v-=Fp`U941ͱ:KA lH#D;;X{xSh1L54csHH0e2 EU:i dJJ]S0ݭm䆓vJ`Q~ƨk1 (L:6؛bu[nB@0:㨣~/c ͷ]G7voSQd{ǫ;F1&S#ihc.wGp**0wTLcFOmp<yMɇT׹B!@\1,1db,B[M %ٯ-`$9 .GصMukϚ556kwڦWnk(0 %k,6T8.S3OLC=$gvG [m쾁f&,F546$#1oY2 Ә'&7M#n*㝗rdɸn`v%DHItLk7_w3؁8vWl f!Ct@lEݽ/\S=c[q4X@ݚ]J8\ v$ǎe {&<GI{~䁡/dP~ߪ2TGT!ߪ o)#K?oIMCFETJn7Ӷ_{w[u[7g4T㪩Pe/.5S%/sjN*f ipr؝T>u=6mkE1sNmauF)qq?I wgJٿ,f|?Q"ŧKc$+Ifn ךν$VaR2@fO={ ]V(]TCOM[5T=ﷺ~'a"jG5ur6WIݸV z&d"8xsL|/l35\j^8̨tvIpX+l.[$FOF;͍_jwMzd5BOK@؃eb31ԒqX{P-OdosuYm Y,houfVuRǾ0XNd?`X:xHhd0Zөq'nTeqsx/"s$_ "-&@8?(іuۨY#ig+*X,MT8qpg,n1!h XΒGT6fћ^n=8ac/;k[R)n1juU8278ѩLM-\MĨ;JKx9G0@0 UQcy<F unl-zq㜟nwn?,1OSpyx%մ."l`;-r^>2>?%v+J!m#:gY ݜMz&Mގ*atkl4$767]o9+ۓ-ڈp47RRdžMgJ nߎ.0uFK1s`ai&'1UK|TYS7jmyI61pj,xln[s؞"jUEDz3tѱ,{n:lSHzEn|8c{֝Wې7X}]\@UuF3qkoKQ؍+3ȝ !$#Wq'\DRKeySF'&I+ I3^5v-[6φݗڭ%mtĨk chv[c6G|V|Vb}亜Q82>@{cw07+9O%[uUG1O {xipPTe,:DkY]cssӚq hk@u'{jO7ep:L=GH{4|nfLKh#{{ oߑ/Rf:TPڐ%:HZ~usjqCv==>zVspq ۴Yh5;PS]aU7ecN'6"q'Hχ%suwO|e &u w|ڊ+>YN29QE6^tؾ:@~-ti7! 'h$*qZ!( ]ڳyquf%[9Xno-N_+c7;Uvmض54.kl!n)#SAv^/?C/3+p66M9 xl5]\0Lч1f*٣u5@$,ǙXGk3V%.RGS0.H%q-v9.^Ro,ϕ1|T8n%M!ji{QAw{ '1lW`|K<54ϞFs^7c\ȹ9BPրx Okh_z72;[O#gɸ]TTधG[a`y{/Pvڗlf/ ? <D$ /uj,W6f:M:n|Guƻ{lњqKhh@Q,X߇;>XX/elɄRj`tO|{C{s_{d;~~ q*qLg'fZz X|"vGݷ-tv:㾭vj6ڋzxEJdQHaĀhfnsUfe^`j3VֿSKG& @/w 7/N1W R+1,FC-Ee\ixq%̕ A6=^f=c=P3ic)\d|RX[pFŤ@!kD GTOWW$Xf5ѵ7:㇑ߧ^" "s:x511k&vSw#aZ oG]_ki Ed!9{Lǫx0II@ (Y;חɪ`d8qܭe[SN\a&9 o*v%s.JƲ%QCQOzIYS dE EOG%=-4|.e@qkc{lluP MV{my ^Ry}N`TK#ddn-auz}%;jmfR XX}eutnٚ 0FLLoENKI$*yd#Ē^\}J*L1ZBhnrB!(AB  @ YBI4Ўh@ru =6ߘ譔YLMQH3I! X'kB/%Śu>{`)keQŮ)ZG{>.wm?gbu60J U6cHX% ;_8!c 7 owbMe2pgRHt;@p--;_]KfvإnMX{$As3 22 w r_Dovd 2bƚi다Iεx'nBqڽ+2`>'= u#{4X kӸu^|ls-86V #{r9 W20KMUF1-$jӪ#f\JQ,tqI$t(˕u4yt1.@dbT] ! E7t]5L1& LLDQ|R֖{n]H斗:䰪\@ѓ,6u.'<ɱYifqn[ƮPM-%lnKSZ#ce^ְ )T2 .hGhc7q 5N)(2Z<1O5S8YpO_?>3L/ X#R#s8 ϝ~'s{0n0i=%\=Y:XpyIo/2Se%14.O1XHop-{opgrLq+{7/RiKm,LCgVS؂]o+r܏.3{Js񾮯 YdE,%];mux59)Kw'4gp3 T !cpwq:~}`ݷa,PX} M[N%ZO-;lG-v1q \rI1᠊-ixת:ocm~ceee\ 51ss̮~$2M^'W1!ZHulP573C{ -m'L^dyl #@2XAsjWV5PGF;y.|PvQyxTN-}°Ȏ4g>/mFۭVi-4pc$nι30f},JjDyXp@ܶcr;ʹfڊ7~142s W pt:d2ۺ6g9ְM+8}3e[cs@ Q2bXmn&gTIt`8$Fvc-ggAV ZK+y1 ,tm"nbc]pb؁druznE;&|[^ɧu5DJx->%ǍnZQ.ı ADt_$Nǚx$ 꿷U~0aTX(/,Trcsap$,5MvHZ$uō>PN7}]MG%Lf>S$lpp,+ %ǘywp\V{谹i⍲Yr< },AmF]"#Pi#mtnw7O(*5\VTA@hX O,`UO18+fl}-;C=z3EPWQOXc)2FvOm}tyB =-4|sZ/hhr]֣jEU,2j$ mNGT4[N=.㡮'܀6|'QUC˞etTݡė<_ba]|N``{ .Q`53fj o.̏:5}X.7Ňn8un+pD^p ylx=bf:k1g0/eqSሎ-r587`-b%W`Q*z+Z<9h]BCMv4#(@ !YHG$4IW₋qAE !"!4*%&D<˹ҭ\e2ͷ4s}WEMSQ6V=7G@[R q@\ l quV*068-W< hӥcgIl\M+^x0vӲfNvǂ渖3[کj-8GC\8S,1w lI<lQG!h.lmq׉\,j rtc#Zx8zIׂmZGkx-II570q_*y_Q%|C%xD~;o!k2i%< 3,pEųfKkJ/2%yZdY0gj\dŽH_Wg\Xy^F%,o.JyC+|GQ,B Ni w1lL:LORm Z|SI,p$ 624^?#u4h_4Dr]n7q \HiB}-;lRCZj'Ӓ*yicw}iYҗj9ߟ`!2Rtݠr=Vf9@ 7+GL!u,~&Irڷ;hp%@{&*FF־kt 11@tՉa7` yjjG3]ӸVeXc{zL|q6HP86Fw}kצ'dHXَpCsAE|HOp>iƞ/dd ӧU` sÄP`vK-Oɚ2im[XnaoEmobǚlal%ye/K2ڕlvۧlF[w0)ZS2@\-d -nq.ih g|ۛJȥz6>;sVᢙ^ ~XrQ4pqx'B֦Q9`s D.5DŽ{Us,GTW$<6'@VRQD!0s5XMבZhbK/.}x) ,-X *Q!}ż4FӚ_,pgFp {q)wֺcz[l<׷> mXEHF4`! <EIk`uvw@OwlktBHsE>I{]pumˍKŏ2cyؤk\7 t-mJ*6D|d6J\Y"oKe6inDž7eGF[,ŭ5vn\"%o6JAk3KxTN.[Ӭ{Ye!CIc8T2e6\)Ѣ;od:bր^id2(r.yN)'rA9T:;DtZuDGrͅRSFhl:\n}V3eͽvi_, i}o5pPZG<]{Yd]E~5q$H@qsE?u:n^WKѹu;S~ pcn1E<}]Ivη4JDlWEIaMqmEy:8擱&wֶW4>8揤]8̏iv:Aq8+<*CZIPA6x{&O%9` {+֣0$"#lg9:AsunGKsNDYY4̪zx VXMȫ4 ^\,t^;{Gyp8z)2-s\ f \|vI捾^j(*c?X5@x=UpНd/!|KP^G-Ð[k/bV)qؤcw`[wl۟pLӃJ [&6=˃Q.qnn,q.о&f[{LP h'YCP Q.7-e.ImGY.}2ECjjBǘe6?r6Au\҉#c=?U37a;†JO# kPPdlWd٫8IKRq=9dMy6+F?bUpxoa < N<gYMN13-%ȏ = o{e|3,J(p&Q֒8v z㛷tyz4Y=8fv5k^Ȝd0^ps=OP&<͈ItԮhnu8r\s%%̨rs eL&h: !M=G۬f~رm-lԘ\ඡ^Iܴr@eW<{|aO5AcX]3ĆZ,-f )ZK+C6Xp[iqF_˼DdhܺTv>SAJ)opEOPNc݋.Sԭ̨i|XЗ{p\~\ iN.eweW=vr[]yAOja,apT3(&=24D/ ?] ddQ}\O5[a߅8=,orhb'ws-rqSSE}&&ǻ]7$ 춾=iiw >ѶU3wݰk$ lv\V~9<1<8h0ZXM:ߕ{q]:s|k}\^A!Z{Cp+kF6o n,wS9ӆ=b-e-:I}6Z5ypV&FʐAő{4}f#G4| 򺒪cuϪmk,ԯ`xn:H7nc]1su]˲N˟0o(u1-K7\X.1h;=՘7t_m8X Ile {>1eIq+kx'k@}+^hi~((PU;k{tY^'dђװ5ËHe?៷Cd32AV*"e5VZ K}]s_.>N;15c/ _@/2`X_yO?2)bV79ηr؂\ ÁkMׇ ֗ _Ŀb X)UᮋK47S[M=kPvhU8GTarCi b k!:?9c0S(m@%(!sOe5*K Z "@v7$rIpZ=NaцbuaK~ūχ.δ_ĮX&8ɠ* mM[^WcHV\ǵ\Ǘ;CƠ!FF=]Z4X|[u(eI.]䂡İ ]|J'6T֖ӶwɚEĆ]kYg 1SIbY\ZXL;nѷCDZS7vzM.&Ꙩ+K9:uRZ~[:23F9lGS[ \Y nmkh ;im\)gK)6 b4cG E+x9-tçhEK jhb>*y砋:q}7^N|.rG9.pMR&5ժYG ..;bK5ԎֱTU$5iݬh/=#5RTiH@ܕ衳7!cͅ=.6Ѩiď MllsXlqJ5܎- 36 k4\O+ĩ]4e`] Gb5[oz9I:sI^%ܐle{ ˙:Nߔdj֭\p,pزĴy-)Zcbw H\7Y׾SZ`{u:"MP[u4s .g+UKTZև]+qgɎ.RW`ijj$GݱJoko Ԏ:#Hs%h6vdU>HѧI[tuѽŤA?e>,ɭʘl4VyNZh{ct.\CwZZj wo#68ݱW**1Qi0X(BhI=K^HRT&OBvaoVq ] @"BfX9e\"F#b_{()k i}bX?Pb5t?M;Ezd&+{bue)i dq&dg4:* M젍~VwL~uM4eH\ܸ$w 1j:x%F`nk4s+7jc#dGGo{9is)}!haWc;s4΄ .%M)\u8kjmoݳ:M;Y1e&aK ,EPIW5.tL:v Z˻xz's1 ;C}_x-;}3Ɛ6\߭+i{ٙH3G!ZYiyATKGi:{U[rUbRoz9k<WV/8幸٥@IT0H;ET: q(JAQ!4pj >Q=vQ̰>e$2ekdul/anJK)g9G0 qiۅN˨yhM,QCZA[ _s;/'Θ;wvWdrUG=f!9pb +))Ș n/ceeì_I<.o'6|SwVihJ,d>8-g/Hëhbhs@$_Xكf'Zc {y2]mjZ.ĹNY=,5<+KZu6':xweO9nK1:LWio]+Z"YיWjpg8ms fow%ƷgIJ\ǽmuVS;gI#[k@bH?x!{1YooGY6]JB8Z^xhkZCZq24a4UrU=/0ԑȂJ֑rA*~8p;XgО*Jpw&V ė=s;Svc_4wX>{շF, `,SokNG!P%}$_Gxdh-nm&n5A԰&Yp7,GIJ0En۴Jkh u>l|ksD5vU6'So,7GReTP#0,,{y[Lpk&y7B6͊7g4,yCE Bw sNBGa2}]:&w=PIQ.{ oaf NYUR恔HvO&!Hh6!ԡ{EF`+*Kbcv'#nJԝL95xI~~'XƆuq'(h6G#ion-+w07m&uO;e2w}I`nӊwubϘ/{s[GG |L+be]{ap\ǁb/㤑nEKeN!UkC@́׸]qvᔟnvq>fxِ*#|pY+)"'5mm1`Y^j NXZayc96tpv3 5sagXu tY, UE ϨMMd}213vч7^<6!ؖO-dmnGZm^ f K]-,s=5ۂ}{~;^r/CsK(bNs@sH; 0FH0z"͕$ۧۗ,qؕfuPeO#JEO$nZn=3~D͸Un kpc i"jk+WIpI榚gX^Żˁ].' KY[R5Z. #m͚<_'.L1_U9S.Qa;:3CFnWV DikLc"{+el5ؼ8)qhU;!"X GbN|۝Ze,ÎuNm,'Է#zZÁn8(p* ʌFc/H-}e3pڙٮy -ݭ\t+QĠXn QXy$an@z';ŌY[].!!>`ՄwMt>_1bUӾSstM|ʦ#& 6Ί{y?}4ؔ:Y`,T_n 7s5*WHc{Zob֛wk(ɳ|A96eu8h(^K ݬگ̨e"t$&,M? \YX[n}A-}SX$2o)]qfjZQ;է222ִ⺚{^[cnK*)_rqp])>isekHs=WK'del|qՑki2"IZc0y5P . Cm,WLs {U<뫚Ggq7wz~u=S)/W NJH?UC=UUV̜C#E{ qYVc?mZZ2ct.Y{\ѷ3Sh[isM}a;%4ulAE=PݻsԒV/hw_AQ 'NL F\}n&}n6WLÊXC)i)ゥ9\8:#syh5ψ<n7u;e9,tm`{̎1woh_W㕸;sxaY2fn$'F48j&h*8=nѻX e\7j{R(ꫧO;#%l4Q'TsY4Q6qH<ңd1_Jx$92մUadGjY,Z䩨M+˟#q'rJrUJ0td!t4T!pM$"(:IIh: =Є ;B(}ЈIz\P 9qKЀB~BB!&P]BB=P>(BB!=Q@)lP" Qm  6&A^_ˊt#_{55ovPo &y]G>YWќ2$-m1݉u&6Zy&y+줲E~1Y<2V46lb_f]~vy~TU8`hkS0v8ߙQxlF t\q iey=S `:6o. G%SO[NH齖Aq0W)%iU3P^=mk*?ƫGNDɅ<cC~CH;ь-J0:'vr)z %Cf%/t$ ӫk7Eo`x'Iⴲ٣ $ t2'ivl6R8vTd)]/ոu;j|gUmҘs5uLLzwbZ'bu5,gN5u(0:L&!T ̲n bxbu̡sS&ljUE/K@kX8X rKaaX|FvJzT>SYTZ-+M ?Totd\ZUQY.ȥyx:KY,^~LS`Sť='+U(i@ؐ8(|Ba#"{ A.}hfǢnQ]Ay-بRc2F ym]8 KIcmͮwkQ6{d-WQv6VDk\HJwM!N쯧?X1`ÊhtNmmulj:L$8fo^rӞRbΤql뽇㑭tVaF@yfhS5^$_{p'rzYbH{CMj'Z>e3!>rj \'v09<ƑzuQrJX$ foMhN>Vw)SQ(SQ3&vSY~1Y馧vyX۬S*+㆕l^9).?1n^N^O $퉨_{ܞEe[,&e9SR (,+Ĥ5=8eLJ<ǵ6GER  GJ^x{sϊհQc(᭠[b|I1]~x\?$:Okjx/_Uw9qO#fRѐ%l=;lX71F>STpk.;lt`$o&q~2%=K&qXm\$ӤOWYŮ #a+)0vi%ŻZuꤱ ϕ7GNދ3)1su}3,Jvb{C%;5G>J| ^jucmk؟U-V.^+!xuzcM},/lfH_`6ϐWYu V9Ӿ&o>^cG6v^~{#د##!֟m/c|Lk1l*:lD#ԃb=WK62CP4p6y$(`s{ ]V]#0Ϫ*}/ksO[T89; 4P#56R6NkX'/V%*F`ؚ>nWMCH|V6R` ~<I(A8UtRصt܋ooej2~خ|[pٖ'<@7o4/sWΧ]%EDqQiܽk\ ֛s_{qWX%xcYHembJ^[k4.G,mHmmm❕iC.6*Y RjhTШ,z!!Ge@{Ǫ@XHMt!|Qc=Є"BJɡ-,w yl!K%#b,7¥/"Aٯ6#k2Eqy5.ݗ3 Zږ{[kZ>1ΆO4fKMjܧA_9 H7v __<~cޘP f:GMkYtY YP:28m栝4\nle{^|wXpmWY$#`?/+Z6ܾۂ)e1-`{%y-j쒊Ow݀>˳iՐ`ۉLM﵇.{$94#8rȀ{/nyuk^ܙ93*ÃUWF>\fj*:{!Ѥj`hi.潘1:L:h5 qד>)%C` Gj!Y[{_P] 1|3d\qli=q O.w`l@{%^B0Rי H^Z~2axUSK=%uAs;40~"><2_K/e^q>Zɱ.}m3k=huŽgYz}xk+*@tq :(D, 6>k;kYe j hpߏaVEfXXhtnx9\ z\u6q\]3i&|n.waFxg,v=`VDEynb +N#\GN/'&Yz];ečW(0kOrzn}UG(-sxFudkZ4ߍcwtʌilYS42I#E cfTu ź PAކYqZojN_w4C1y lQuhs <8& hDMmO:1n.> _3CE㄂C.7q._lOb,ϵ, 9m*[skqZuTrFI߹_nt9d-RZMEmvޑHKٶ qXr?k gbKbrL}FGJy%oK]-LsCk`~6Sp@#I6~3 '}vP8rDu^| |Ǎޓ_58ka$; ۦS8kgҀK4s^m-̎heֲ.I]!veSgi*}dww Z\9ݾG9$o}ꥡ`I#)H%p ̟FbqϧiUZ7iX,a1 Ů!X#1%\ˏQ^ְJ91[C)pa4Z<yqtU9|E|ݾm;'TM"ka7ݥ ""3e 1⑕FѪWXK/aZy]F\70aj$ %S` ܓ-/+2FMQs-loѥʕTS527wxf[h㺒ƻ+k0ER-]o{XzǛ˻ukxOA!1n#;_! uCxp|fvO"lYUafxisc`گcYL% q2ZXsEP :{bc q%@Z-_W 75`Tխ.6V0H<m` $NԮw'CDw~c30{c !nGx>kOO54m%-cWMI+M$t{,>eWL91K-bߺ"Gqgb{`xz.pb/\]`=V 6+1}{5>zxe,ذǖ [Q- .kw訰Sɇ c"sr~zx[wz|˖8I3wo'v![-  v.7?eҠéTh@ 86W;-zqtQ> 8WUC7ٿn, &ފ \w"cR`uDfXqv45mmlKpcS94>*r@okc2>)4-G+6h7<1/:7.AYa1SBVCU+ZrFmY#TO${FN -Zos $;Dnܼm]$s60Lahka}Wl;si0)DqH%>u4ؐoh02FS+nI<-Ejkw{@~[#O< 9mjY5LS%wL\ zkȩc{gK\ lUcXé)UXysYm0jv ;aS)|q.)e|3*Zjn]euxZѥbK4Hu zvx>m^P\ӹT㢎6:}m"[ m\[Lǽz-1ײY" %_/6i9>U9JHhp@~hq,ZStX['{e15 _#i'E%υ1|M ˏPzzK*%,denyainH=ow{.}lr M3 +4i̭ԍh~F,m- *\ZZ+IU,>2 $_m]7ƀ2Ս  q\$SKp=x.TڜOM4w$7 ӱQ62Ƈ5AAIPָr5|4 Y!-+`=c+^h$̮-<(#{ջp{hmlJ~O[l=0,ǽm;=M#F#%C! seEu@wcI>#`$78EW<}܍n&YY4sbXb8i\Yզs׽{fVw'^`T468\Nxӊqr8ך_ڼߙYSC# r؛U,a׾"j*jdCw;d/[O ꪠ�$om-18 mLC4P,c\7uưl.)Dkc4n|)Wݨc|b.\9嚺ΣHE#tBVCt$/.sܓħu00V⟺\ly-n1,.."< sn26p7 W)5~,msy[h[&\L;QfCL@ID #bd֋$ܤUn^S1mê@-qb?oEd#i){DǪ@{E=P"t!t!TI+aӲh] %9 0AViw]%Ռku#e y6_Ԙ_?ٵx2>~kcoQXe UkG$zE ۭ Űڨk း9 vڬ.l+tSw )yAqV_ӊ3/˴49pVѰwvh."~EBZL{Btݮ-X#eV,XyJ s{+&)hqGC5,U鴣^)w.)z:"R9 |5֐7YaP6aK Zq[qkm,$LHB/jCdB]浖^^⸕lqK1S R62,e&9WCM-kJpHdHk"֐ur<|ϸsc/q[ .ZjmR@ڍv-CKHŤ~3y8Ia8]n ~WZ"1Z"I!.< 7DZGc"æá&Z&htxmVsmcȬYx6k@amlzUH[p{ëL %kM)K {O{|6,c]8+b ӸpۯoNeLoƪ`Xx\[\~0eA?eF}Y̚/X[qzYqn9'U YGyv>!X2:HFx0]T]yc*y c$r:u}9woIUzaŇŪ'I;5 >^FV6) zxYea'F浒mskX6eK۰>AQz>$M3Mum⵹۪7+1lm^3=US+uZ6R"0,IeĺxW~]W|xwmYRuX3\-o%S2k|QGsYη?@#7Q4Ϙ49䵿KIz.Iɪر S,=T V3]_~Gŷ1Uk.||p]7Ҁ,ypKA=:w흩< UCatHC@`U%oP[--7my~%l\/пFM[qA @[_f:1ġд< ;t! EЏ2T(ꋡtA}?L-'gP#^9#|u].! +(W"aCQf<<@؀|#K8O5XTU'xYܵ67PY1P2Vi$2b$i}l?a2vwf]~+.RCNKh ny Ii*hQ4IVhk%ŖE'7N'/SOsL/| !$k$ܗ'ryg첚橖StFvU5`hI &N e>3YDVDAm`m˯hT@"r7,ٗuJY7^'gڳ;Qrv=h܃θ eZ折앇|]6h q%Z+1{,ŗkh4Z$y8u o~=uY]#4 ĄuU$}P xk+i#j->ݧϸYG]>-w1ȃ0{LbB6rq۲_nQGY_SHhדfü`krNPX_la۫&]hQ>YYdhG-`7Y,x븦,lQ3Zƒb賱l&V4ϐ\ ZCI"Blr52x/.uy3274a&95 zzY w k5&\=Z] v)'epH T/glי5Ce,>UP?Ic XMW\egs>t >A no+8܀=,/$>gC;\2z1)h\#\/cc*r qslf;q8P͹9ӶI-3$5G4Zf1ؾ\ç0>rFױGۨXo'O?ezqìZPRݖ7\Xk[_z E+wu\G SRM qjs7~h.:(/;_ISˣ>Xx1K]SGT*]TJD5 ) KFR#6w;̒wEQH[+kqۘV|#Yl \30LTձw;@<-ETtAz{O(d9K_~n@]G u0:mqLw'ۏÏ~[G1ӺlVQLǒ-ұM!cSWW;~*:vHZ5hӢ{,~" /Na$O=o\_3ػ[MW+al߁K6F3V@{e|'D67]"alҌ>H tmȎ;U,m.yyJi A,>N-_N{F͝el+㎊G|@ekMϟ]^i4UyC}A$eyKw b}8|e,h%cekQX?]bn92%3tSǕ>n_K3$sA B&QJZJH [mg[ۚ-(g0LשuGQf؊gk#k1mqHbtZW 颉$iw.f bay]-xݩS:x7xfi4'mUNiw;l|]O& oCML]N'phY'1Z:j1@5jk̋al3nX|#% L'Hln‘ $͎zO/e,5n7Fqkl=ʾ1gHGI3YLwbpڧw}7wFcũY H7Hj!Dͭiص>WDpm _쳾vy Xop7"'F5q`ܑڡ0ܛhO5oL\y *ةnr^4Z_0k܇& qSkp =zHXGx$ۏ8t sdY[fLt\1S-l(ο60Iω8:_hX$XY33Iy{Ǧ˾8.5x>%Թ4`.vy=Ic c=-wYck$kAu5615bd+=:'4tt04X;QVeLR_J&6=Z-uk0 }VykM51h/pqg>I-;>,{ Mxwsrs:S |g.abnEBt_hG/m=^]d8.׹Tb1P#?tJ>uymqI]3?f74u~ihg;{VbtRT>;ւ8 Kf"Hك3 $ҷ&ۘz\Y]aY1Lm9Μ<.mEhQ'1%贺.ue2# my%[R pmґz\m=3x⁒!}tsGt!vB(ꂄt!rq'fj5`IcZۿr蓮ީ⾎la oVRC uqu=mpuՎs@-murnVg SZafloˉ\Rç3b5|f83}]i=gz0ޗ ښ̌o#*Ī⥧k]+͆RN/|o㏟5[حN9[Xw.`:ǔj-0[Nd`>%ۭ m#@q}+N?N6Y*Hւ \xit3=A].#h5y"ZQO3iauF8ټO+8lw]0%6%DLp]Y|gu֧2lʕ̚},۱H|O[{?1#Ki_kul ?QS/K mG)K\:f)82PI#|'hs6e.uE& wI³ N3EJډX)uy s&\< )f=_䘦]|#LI8>C$UgWBgy ^'GOn{R$iֱhqfzywG>a}ra&=+yI^ݗijɒH; o& ;LK^7uf Ԓ4V>/Xzfk{]yEa/{ n?)=Y'bTV82^$klA2HE1]-h '{kQ͙0a8%c2{ń 78.y2~G=kDq;_WgWRtVOMGvK'ڜ`p}qՌI#,>9'p 3 a0/Nv}4/%4 iG q(|x[cٽI"]쪍rQ'Yf Jݷ!4//þ?/ ̇: f:mZ3D0 fuwmz ysakXo;jێFWaQvRL ."h\<]\/+wEޖ6+ ydT5p;?4ҿS  .h>Lsu-6 `&Mnimp6{NY5dؙls3C/sF/1sfM.ÇF 'rKIeŁAdBh~=!D*cI cl&m,^HIITKi rNn;'ukFKu㩧le2:B ]P\EŊΘWѿ~'U@%!ĒSm{ S(q\J:&|q#cị廼)JjvGIC%nٵAOh*q|٤4ۊYXw|z,G8ik9g 'h``-l8xw+tŃv6-#k O~\q)y>cA!D-֖@ѰpmKOk1/|nn`mۦz]9P좟|PC[AN؁Ű q냶nW^rH'_!=+xv6%l]V:vpk»o"0@ZIӤ/>^;lefdᚬ,Ǎ>kt@+g$Hi (/|k+{\Emgrx3YXӇ4 uqo=G.c[qg[L^{3'5 U=dl ϠuScpqis@qrvȾ]1ޣ˖]s"g0&̉@דX8\ Ysk;NvN\lPñӈS㬅)ZU{x#q}.q=D6 shbj\_eؗw&!F@1nqSq`N duSUBfN`]T%qlR?pY4O|6 AOANL퍦&Y29x[8UqLل#lROBʂM&W}sfZ,' _icukZZxG.vrzB4EO!W ?[⧠pNN|ENQZiMa?py3Ṯ\kDt=;KskoB1=G͈c|F#6ΛO2ya,5<͐x^EWMbcg-BWe:ۧjxLZ&Y$ 9 meh8[0#jc7] dPM٬o>*ާerw5˘3)v{ᙑ-7 8)$"(%1vXC Ʃ4n,{ó C=4q@NYmgrkFYZ`%v*rVW2a+pOMvU29i$忤֣K-XIO)cNZ~EVnܖq G%Q:6AXxg;kp.w;5 7;3BƪLd6վljY[dΑ91 4CۂuRL5G{uR0TS 5 BĨz.W9ZBxZY6el i#'Z(Z<&7@6.e}.O#Ú7kn+q#Zv9[W16f`|(lN*x&.^ UzX:wL&]'N7>6K$iqs)ֳS tOtT:̅;^  ˞BvmICH,cIc>W'YJZ D-ذWG]J;54)bx v3o[Ƕg>?=kh;d7NouC jx~nXRIF&k@` ~dYX/Bٻ&F$fXe4j^ֽ-6~+c঎jza[(?uXD_{[&ege^t[$q>!M3`o+\lK+R֦lM \FHԔ; \!BO+c|mMϪ9ܳ|-7N,)qS`9iS,:L*!&[yYzgg'}\E결f7Uu$/@\ʜ>оYNkE@OKuWLNLJ`kCA!UR-J\Grkuy~sa kFڭ]&h̦֩|vs 7ˬ]=ߓ(o,@  v8s*H'īŬ j;߀{_}[[{8l9:z3"k:o_UEv.: GPlmUtp8mV3N [[>&Hnصm}epהw"?|f:Z Z*U%} k5ņ^Iw$*[4.qI0l3 [50o3Hz澴B9#ntBp)@Fh荒聡@#D2mt P@F Dr@!!6F.\lt*:kU`i/,PMgӿ\nZ-N%$wTUL!sB66B6B!#dcC]9~|:lÆ䓶AFg.2[t3Xé%㹰{"j91ژFmhqq;|XIq@ڷ\iﻋ/r,sj'Abc\J joqN^% H)$|++mOqq7J}fG<-TD7W ,ch'92ĻFr(vE6G*/C\@VEWg99;3c8}\$释,gCSX؇A\Xu] +v#fQG{?UDz#WAOL*< :I?qku#__ hrIrJ˨+ OEQ %0"pÊkjpzWs#}خr5S8fjkek.ܼwŇlgsJL&&k ~nX3ݓ2MMYڠ7ӆqܿv}_Wb0B] l63p49'tk 48t,v6rO/sN/͍buiݩ6mbpB9$IOgc44 Vp{smW\;@n4ubВ iib,xq 7iG_|ok&1H%Ϟ`hHKX|*ǰY0Zf!e} ;- WFHQ43n$9\im<9Տ{f{).IhV\y1eo_KQ,Sy o: qA^F/:Bk|-c79Ăwc}켹YtUR \AJn"ǡ6T=Ei*!ԿG_Hh{mfc /y1.nE$.};A6PI p: urG^uGL K@[n|zk$.yc%{#ٜ2Rf#YVV>Uny"~o,rLok6,RKCn,NMmyk-`ؤPx嬈4I8o~+__GGVnJܻcF7.I5@-,e㽽eB>gQIM@7tf 6(Ls.GGh )bWHiX07pu3>e{1v\Tcշ|<8-czg>YӮKIEUOR1t,  q>j*J* i뫢ZxCYSk]cS$tTEO#Lc.{u2y̌@ -mׂ幍rj5q6ɧ&hHA?qhFRz]'y92X\jO ~XҺ6FH.nn,N$M?+Bݍ-.8yoH< \c\ ,+3ߘh*#hm^aⶊV;I<ÆX#d1htN`6m-crɠScQQI%KG]k4@ k6ͷ.kYL ژ̴X9% k9.}%d31t.z_,aS`XsMcb2 ^.:"`,ޗ $jjWeZ RYu ,-66<&*+O521>tOq Kae& ̜u_O2x9"[.M-. %Pֹ.-pGV s*h匴؝7 ;-~9p.I rv_rgzy9?G/ʼ[0}cUb13.[zK;0gIM䦥Ɛmk.EWlc!6aKc[$\qS_ ̽ccj0k/? o/lYo|%I BH1sep9- 9g"EUA [}M3F@i;c|S0js=-u{}<| k*v>adS =-=mixZbwPȬFT:9XE"R+s?`E lqAP3k'FNj&=xrX6:Rck;M-|hdfpQXĶfZ& CCDKF۪ٱLQOm1`73wG#ڜ,ݤ6ǝ͗gyy8fMFUQň1,vw裏]` @C AtpO1 {䁀hkt+͝f%n_ǜ =e*"i Ҵ q6U#æakpq]4( 3^7^c\wKB<!1VO[-K4rHn.L`;\b̹Vtl,\D./w^ 4Ԏ1eצ买=svZv10\˅GK3YE=5C^eŤy,gŕݽ=G2!MMML;-$%:WCDqɚq?@А1`0u̞*y@Mw-7[ul{![>6iݍȸg>qI5@0DunIZ8wDMxmvlנk2-r}۷ c`y@p4߂􍑱m'MllFV1haSҹCb;[6 $Lefz|^mնh"(nZyqeKꡎI*!`#6wG+)%p7icT)G|Zv!͉r~Jc45!sۮ`Ncd}ckAs\AaRNl5f>"`ȪX184=V5Fa5⢊HfӻM[y_ĩpg0SP5 zsZVbbj6YN@|/mdm}Ԕӻp#_-lK?]tuQмp`\ȟmD e8F=I)H!Mc䲰>cYS,p"9]_hq<# 24pHcYEaϚ9xkK#iJ,{FmCas'QouRW0>Zl8؛KIщZbǞʳXjii .xYEf*=E)k.5tlUtTp=s]a ߉0qlhܻۅu&S|1Jg` ZI;imAؓ/bVUZwtJ4T4a^y-',Q`KYPUU!,(&_W~_7<]ږ/ϠX0q杮.Mw;6 qZ\R^^DH~r3!%~" qkckes4K䖎'l:K%898٦,6Sqz'>@=hJ%E$p1#";٭+ȔR\n- ˢe,b0QW-M/nß3^*qcx p#\O6eȞi%#8z x=C -r23pǛluc31&Zy=̻5-p}U'/ϫK$OXm$O;{/K22T:M. Y + BR;KI[.+៳ptXx'.6}K, OY}]UF$JIc6-kȸ]y'vU\>,?\p-edu c$"z]w%vE6QA65#GD ƣ$ /|N^ n9'n_5=T K^DXXZdeS;dR-tMzeQtuf,,kF[n:1U+Im^ˍ4Q-H2,c@\]a. =>$$ s$qq؋ߢ9Oq56vObWO0NZkZ-`갰R[0rc²f9-#k%Dsb8lKhibtO:=@pX4uz$h!UݫP`Zp$4}ư^9t|q1 F>-RDK35{KAq.괺ct桒3&62r쁍lm{qY㝳+Rr-`xS2il1L$l7OPJxt625(}[qQ k[jc mkDh<֒qͰAX,,4mmFGcx#ce^8V2􏪕cN*&| "YH[/6%ֵŽ%_^0Q;\֢*xi619HX7Zܑ=DkM2HTgN;ph\VHi$X7 K@e!KJWi>Ԅ,҆67 <U0<: Atǽ#?mslWw5 t.hX/n l('"tkmƱ 9tQ%} *ulo˒`v'R<#(P RD; c~\'tIh.p.;00^&q Mϩ樄:Q$L;q0ckARM)dqLj6 QHpGW̱wP6M6LpkS{õꪍFO!H( H-ؑOvMȎ{rt=Xf 4n7pZcǣcd{knkq&es0z \j>ap9xۆXy#1jvГ\tbtILQMK2Ua~ dž6IsOG5ّЁ A@@  tO9B%H'HA$PyQB-]SD+$x#Ђh?(uB(A@!# Eva.4\1\ZnƂ5EŻ9ktXxF #Hx`gÏݮX\N?hzLIƲY&IpykPT\!4|f A$ z.p>l muY|rٯwy̰W'\|n|!crUh9 vjd2>f߆qzGPaPTrƺFo- RfR6S]sOgVI{8.ܛ.v=2FO$44؆&55u~79ex'Rт|F8wuCF*$2]meKA,t}ۂxq_?%Пh{ݪ\ S^~ I tT.;ֲniX$@}-h[>DȀ-ߟ .Sp\G,aKY :C_P5vͰ@L\fѧ\/S3E4:X|%4L,7csp* SI\.W\[SMp|HO@g588ǂ`F ckx `q='&%d UOE\wy,Mvߢ#w |?˗<G6||w%6W(-;jngȃF,H~ lmz.l:xAs*88y4s]1J.i䆸%i#(䎨3((qʪj!.-"rI>ZLOQ4'HKY-"üNfǪ D][S$S66>Ruۀ;q-}}N)[5]d頻ڤSw<'^U[i)j )c-uxekYN)s2vS5p+[zHSQLbv7'qSPe[4JO4M{r5 t[qY/q@!)LFM ZD,Fvy p_nr?2EW~䁫HubX-5\R2Zc$wخ30&1&#Z:y ة${^YKmAu<ϊ)!5׷%L͗]W *k0 ê ^-|2[he"n 0C;`i.h;WZ|Põue'C=!#e0H+WH$,H::2W5 cG#Q#u,Zpf[{0N/$Sb1#D=.8 $߉:\Ǧc^K5zk:iatT+5Ka26W8R:âKo?WD6Y/gXhs`irۉ:E!=<♕FK;. [<9)ꙣ2:F腤s:q`u )Ihn#ZcQzjUaGG89/n'aԝ&~Wo8cs :9;3,۽hX3[|qoTޅ:čZ1И\p\8TNbHĸV*'MQSAi>>ұq9j<:4u=V«ɥn(bG6k]T]UAӼR 6uk}3Vq<?[uO<|E\ ؋q+\q<ÓjɪeTص[n.{r5|CvxcfSL  [ߋq~!k3>%b,9w6,Yp^>Ynzz YIk*aѲvi7nۮqpK1zbiZJ7x@OŤ2vS8 T5斯USĸbq-!rH a7E>2YIt%}eOա%8qm.W|w?i3v*%mA)-6s]ٷ-lU4*+piH÷ېxl~%5<^+ ;%}DX?e tC[] cb1v7<^R< nO{?EC.tma*:WR1᳉t ;S LuV{Q tZwIo+%̚7kq.7Zt8 Z\ @N=<=<LS]i߭'pdB/xp j$ﭓS%DG&É۟K?*b$ d4;`[aaEPg{Y&})$@؛K)_ 9uP6=FWk恨[{oaO,mk al v )Y'}.w$PhZa!\c- [Ï55;gsvY4׈d` p䳖[0iM_Wh=ۭA{XpUUbtφ)^; p ӥtG'~zVAըcX̒F;]Ş㤏^#c]/n69 ^tO&lTb9ZgInss"v=QOS69 I:g6cvP6ڎ׵Ϧ{虓;8U|{ ZOo0Fph'kCL}!~!GϘ(jd:L"$H]㗚Ӫ'q.{-/E7.Bs.=,)wi#}ߗE3dPTqR:/OnJJ."^i*T-C .ȅn;U톘 @j/k؎g wR}ooM֣抭S+M Zo$8_ZpΏ]tPK?[jȵEu1cL&[P^֒kG\ 3㸅]C3CC<>T2%ji ßO@A83nfs̎c>G֞\'%oO碟/,z,,XLVP>jM$t{gpG5 q>,b?+gJMOEl5A0ۖ%7 T3Ivk[o.'mP\ؽcs]f'TD[R8.qhuq(:ʈm@^k×7|<<ǎ<6!43s{ܕ++˜$;ʽfdcUm tx9wfbx#GJ,~Jˠw(ed{##zꜛ3uszugE >CuD0I xdm y9.}vO4RQDdx%WfGpcͤ{ isIݦG|>Lߕ!,] Ŏ&mͷXƠ_ap}EPd?\nXVOè*#] F^Z$(ȪXE\Npmn"\8 N0iij Xl}d-?:T(kYDI v덜//^}ci F_kH`i(sDqG4$#B8&E()HBh@拠J.M . /t_4EQt .) /r@]9hP@$_{\Nhcn&Ǖd݇L_`uղNһdϳ71 \xZz&A1hhj*bư N|qNῂӵmΚ*j1TB9172ձW 88acϢ7۴UCN#H t48ێab=F O0YQ2-Ȏ~wZ>|»ͰeSz&8PH/vY6kWrwko* lNQQ>d7LMZM zy_ {NUPa5 t > O-퐴,4:_uW>!#dar- h sqjakX^;n:区Z (id"C,#ët[.O1 ج`H紇\ )\=|&s. t2paOW|<6@sInW ei}Lx㪻hoFKO 'Hƴ-OlojXdd. en o[e,ؕ4Jqd.H'PuG۪ŷZd4K 퉦@Fܴ5HTb-~_hR u_,d=. {ح_ dkZhۂYtd$_G Dċ)*,srAWϭbDϛG9%䰱HơS 73Dso~#qqZ'<ճtQa_G@h-&>Գ8Hk[q1΋b6"^d^{ppy3,pUS9o \r=#ǐU6Ue 8=h_d|G$ /r@x8=Ѹ9-pAE]4A4]@!4 ^迚i .(@] S@@_䀿4 还Bh)n((ɢҾۢDUD@mڞl,ppH$\pEd /&-۲k{G\F6U9ah;Coϒbݙ`$2˦i\@l?~Uz{>/ϿQȰ-a1FT30Jz!Juw8b5ICԵ #C} ;ߪ¢˂ 䪯g{?~YξZ.lK-Lح8Y뽘99Z.WT4Rk8q6n[?f+X _pt[Top]{ۗUpjiripivw_d&qkw1)PMZY4L2;-0,^,87Sc+|PLwk؋p<ְ͍;-z|κ.s/śۅH^GLS%Y~RȺ.k\U`o5L`ho۽_cn[s|/6yb$31,3!06g M:.̽fmCӽP_{ϛ,y6i]7s55lF5v7cHi1TX \ o0a3[V5J5TUYI{"5YC0ך:hgQ`ï–t̹ |1EIXHKo  ̙zJYе;V(g'WվTq.j?9\ߘ0ҵfN\VʏZWvs8,u>"ƸMY]VFYN9/e?i8d{%La{  iĜ׺,*ۮ3{bPŌu/{$\CX q<=+*Hx70-GN$i"Vhˏ sY4$'ft<|sO/kR͇S'H4 Ǖȵ(,G'+DRO11S£tu8 "y>WPyu6I-?r&a}Ď>$Kn:.6ז>ږ'`h|dm{[Y7Ր$VBq~m**F2ildۈ>\7X|Ͷo{FԾAd"姡#p-L=l?4H 8r!uLE54ܐZIJ:1pO-Aؑj|5:kRe{cj7$沫$d%fZWpyc'?<݌m- 6HiQkSFR%f ? qJۍm<Ӫ 2P|D]HܗQ]sgKZo~\Vg*l3C$=XáE)WOWN \dKEIO!vpo{r[Q]ZZ,Ip˞8k{f1\4jntIDm:d{G0HUNT,ok[eUGON 4Yŭ[-n-#>(Zgks,/$wK>]txYtR(\Hpmqjy)kG)5N2 &^溻6cZbx)Px-5s>F+w6jp帵k1+és79uݹ}nJIrjٍC4 w^Gѻ$09~=GL".$o{3FE cSZFGt\^8٠ ܞ$jjTƝ|-!6MTa3I,}?ۃkoUF5 ⪖V6I tm~X5m"܋\X-M=sLn,},tˠwjomn[4i\r:FH@ 6sl$k-p Z2#W 4b Ïe{0f)\-(#.8>F|. 'GJ*^r}bR}K`5d$46rx3V7JfmMI 4SO6Px6;GAR;='m[. WɹMR$O6}RNIwe+i{Zjp ke'^ 6 HzD-2߃ ,㽎miǮLX~`7F6ջ[X5qVZZ#?IC#{n#FTк[ƃq{V^ow-mm[ I!N8iq'1ۻU? !unz ٹ&gzHE-5MKD6.mm8NV+چI$6-pF DIK Ŵ#cN18ˤ4t[PioSz:?2 |NÒ+rtk$'[6.^u6ڛˇ%GR$v:\v'1.n ;X[G@2:%.k<m3%DOj'c62y嚪V7W U^C w6nkv2DہǪ?x'͍Ǔל8~S(45S_Isncm˶F![B0fenZ=xk[`SCMm1QN'S2GE]).uƫۀk5[sL*C},z ʼ_-k0݇Mª{[G]9mmq6xEf*X|Œ;p&|yg},rǓ(1|WԶx{dq^ðحCYΊK=^\M Y#.Oo-醇鍭キ߇K&N1s6VIF#%̐\[PXӡt&h4w37a. ^|y;PafZ)GZzI``g:m^[MwҬX Ѹ߀6Q3A#{ 6R4w{ch9/flm;N, 4"?Xa;abulql 9Q_IysȾڇ?E%Lr-OkNij+ nkrr2&{\H$5x#Tߖai<ȕzWm \CcY ԁulu<{aW[|K,V5'v#Q|u&*ZcV@qN]KD8$E.+q|{&oOno+I: MsEVX}M xXw"˕ayT /qYu78i%sc^-F^伃1n].ڠlKH7ܛqZv<1]&R`- qs澇BI}WZJ8 NCV{ mCjM50{Zs\vhnJͭu_}tӶM%;^!; uu>)s1ؖ[p:Z*i krη6@|@qss_'N }VuޫfGQ*;l靫eVC|oc0K<v䜜rUd{}/tt]ߊw+ {@>.^N){&J.{'tBE't]t]@{tR=Ӻ.>{J.V@vN=}/tϪ.VGwE+ ~)C@BwJ=tB=wW$Onh7;yc4ޕo_4,K u4dRlN yuXtMOy#1&}ԙK7/F3}>_fc0M.A5e9y3o^镀T@F &q|V&ܿ>Pob9rw{ wpSt D;y%㻼[;gp:V ^5IO#cc v nlGEMcb7'7_s-`,#-342}p6mS:kB'8E MK;$׾h^،R SgFEiq꽘_?<'8j}4(ለF-ھMF!F͘n`jmG< 9qGf5{lZ)jY($9_\\^[98rIֲx1='F>qN%Б!x{o((ikIX6̻fϷ|.y-`L{k璱Mq ˠz00:){eе sN. 2WZJG ?7܎rm.Y-ve *]-kov,|*aY?4\8)Zmi2=&Z'h\V1i MB'#و %~e)e@"xnJO  !3/4& e5 _g=Œ0S]+"ίoX=AS$Pk.,WS: GC{RVo^ؼ8SZֲ7,]謲Z+n4fj#,@VzxM0ei'bNɋ@9^w҉ kkx6}J{Fײ,|BYk 4D6Ѳӛbx4U32x܂M\ʑ2H={"`}.ۈRچQg>K^f -$5˦9<[}#o&j*ъ9'~ʦF酆w`-c[h3=/ dLc+mKh}gŅ;#  2#f߮i8[.8|2\~xLk|ΧSb}V;guc@n';g9>]U*-c3 Kb[/(l@w/ xy0ͮ,n hߏ ['R=ݺMojɩ {Zn[kxf!VSR0KLl.~Kn&.x2Y |Vbx*$19MvQ;^]š_&1'_U$i|Z8]-7mN37ӌPa1c1xtkX[k/]K6+4@E)jxMV*\K Ű^D% i0 ,nA{V8*.d*zUNJ;Zr,[KaI3|rb8<4\ֽxi&eDSS6Ϊ Gk$W|꽁̸U2>,$|1ϱ %8uy1|vܸ{s e;6;0*QJ-.$q%+ s/7; G1=X"_QCj\7$\..,sۏn1 ňC_QaoF6z'n-@xfOQM Y5:"ν/5!piYP/,cXGִNX KGFdN-Qb6=Gq W4OkKZpڸFG~ۇ ̒{E$n-!9}SOx||~80`xt0`gD9 lz RcŲ358GC$NsZT+ DҲG湧÷_eep߹ |P.,hp.6*"(Hk+˛eFH& `wN `+ca$Úvpƺ̼3 R*ˇ'\iʜ6GB4v} $Z׆c mm|`-]co-+U4-ñ[8% )7;X䷧Ϫج1ATׇ\$ͻ_iDbD, 4.{@$.Nбl>yi) i%M3?UI[P>\/ɬmŪfZʌ/bP0>Jxow05{_Ҥ[4@.᧙WlnE?p?}/imHNPYY8W#K71Afq5҃[7C@D}nVő4gxZxxG}{ۮTXn1F #>;`KZiy:fuvJygcp?-i*9"K-o +"mMh^ g-46oIů=;w.93KE$Tl͐Nw,\M]*0d0#F=fe9#SJ < ks-8c iWHڡ"oz1PtqjjtUppqnڿ;#WVWX^5I1OVk\8 k(ZZc2jk}{n rZVa/ @3XHop= 8Y5_2;Nϙ<6_9j )k屮Y&;rnݨe bϙ(Im%e>6ܷ`$y/;.mm6y# -ĢYP6lMR9[2VdLJXsVQsf_v$\"aje񹻯Xm~QULD[{x>EK+"v{;{XFaçk[| $hmR2fCU nwx޴\e6X-Nz;8iU٩@,K]}ȶr?8͎hRFvs/JJ E$neJêW`t7;59@Yp7QN}eCk@f2&݉#\y0q>KpfO1M2  VM|"lMzcsAs e=v]1g9ʈ$/g7P m!|wl BgaT؃cwq($CbS kW{&mGtxe}=N! 751R~H@PoAy/V\yL?jo=ɚ{-,X! p6 z \p+"+A|T&aM7Em&|,C{ûKkC¥fi H{Ho~>nsKWˏKu/Ş\Ws1CGG= TRXѻp~XDTtbcFHkE:~HedX.9_إ-6<\!Q9lQQ7^/_?]=YqǷ~ʽSe^sKVFd6Q_>)ES6#u%Kffa\cqk5doG#g) .j~r]vpApjG_?&& FkHe)$Lk'1ǗlRrI`|4~5~,:ZR Uk/ӵȱ}fK3Эs4u]X`cxZp^]qUMIfG,h\sF LC ĩe5$kd. .YMlbjk^pه`x~>Z=Nsl^r=|.p]KK nÙ4XZ%nMV & -lg[`|ՀL,ϐ'aqgWK;.KF^nm,ϮK6kZnJUX &o;+T2)Ĥ0M*ufR;i~e= a8uqOK+e^3-6UTvdQ F^e6̩ Ck %i5S[Ck0}yZYN> {O>Xt1\EM|ED}֣:v̸G͠c77ts#ԫ2pˎe;r f!Hƺ8coi"uBo&{"GaU4q!t sK`mvmتig.hےŪ*IH| uL>plocpqJ%ksw-߆8[5vFT ic{*Dal/kFFF-%S4\Y} ͺv{SQ~ѳAf*<8DHI;v<7p"~g_YV9Cj)Z<2 zm 86Rѳ\[q #PkP7ޫ;v-VΙ䩩*S;NgJt[~V*q8)mEDy@eWT@iq/q7%1ɊAS%8'Tencs$"m[}1;0j6ÐP6I\1ocJJJ6XYbE2ԉ-veŦũi1 #:W#aդsvxs{0dmf \I">XáD[i~+p[ a5I_ĭa$ob]s0S<>8c^X[l9))u6w'xKǧnZxYU]+EXq6*,cZ!i׽ۿas_p6$5YGF.]k^Y$I$_\"nUדcmļ-~!Pa#C&kJ0i= 赜?l7NGIl-+IΠ k Zl6cmlcJ>G6Xܰ;ksj$6ܫxaa 5[䒟lxzz-bf2J:Gs+exhc\5i;r\MktI"㇒=1m6굹5/K&#W{ckl~]SѾ8Kpk< e^!W.d2Z8l-{>?&9gjZgylCAkN; @ ;%~f2a;c$UȣU&m\%lpoP6n#y5vvSVEPP] &_*e|:I^dswn>5 GB̡ $tӾuMB-&!mAB!$ M愈>#hIBEM$nvE![ }Qgk{ K$irBBHB[P n rHG %BB愐$P$[( #? KM] Ȇsu+v_pJ|,B9ܗH7pPviV Kς-}e+(u9\y >O8^-K>7a4qiwyg&3әE#9éFl枠@{ڥsp\U>6ܴze%^]E#0fs^nN~6Q\.7A^[5\xo]=G;bl&r. z[]"*$vmV!p@:QArit!`v9梍x^;:`I5.n,}n<M'5(CMq8>G]ޥÈ'PxuQ6bHď-EļAky^q.' i:f 6\}>Xiqg/aW_q'L84\*RqLSCbk_:Dž%N|%Ưvb(RaQK:d 9q_]Q %5KfozHa˝MO/osM# 2}PTilS V#Š0,ŖJ|ոݭ}ʳ{l{pԚZnDLi*KX>J7G2 >{舨X]5Hqi;^n7^NOǹSn78uN Stlq7;P˘אjSv'DQ-Jfiۢube˙j)_\G$ %|_q~;xGgÌԲz+nΙa<ԓOqsƣnm#H긽v=[[|QR~ʞOӴwN}ec{ xkL. kiUMb8wZJGg2 cdvj;Zy5r˓[˓lx~O?s˟TH{54 pVLn-p-p6 [>?.H*\/$2E|M P؎U5SֳFٳ3yz猶Y$sI![hKt-ЁIh4@@В: hBB[|В244rKtr@Вe!$oDS)uB) ȆinBH@*^HaKu6+걬F *yk*x( a{q|vv)&?Q1yK%7m SFl7+ljch5SxvX8E {wl=">W_2+ŏɗ}lirnUѹ:$䞫 ]AqbTϪJ@5VE| oe->]OCF>و0? L<^c]<囬nk2S{~P9tH< 6L>,gM. p2]!o>˅]G_|]cn`(8rHAso/!XܴeLJxx.WfVӼ]ǟNkre,8t[ԭc <ݯ?qTbJǺh?/ݽj-f oUK򍃜5w#%:\ߙQXqt9xwH`G=zpvreeFӾ*Kܱ.o=:ch4O3CleTI\xzYrRհ㑵L"'Sۖqwͭ{vJ {I+[@f{ Gdk8VVex08>H6irM+\s˩|5hw+0`U(KlyJ݃_YwbԵ_2ں:zY$r0 ky5g^@1by {W9 \Hdzknsi~ϫ0:Yj `0MwPP a5'B tV o|Ev[&h*#dQ>60؋YͽˁP7PRcq1q[qp.͉\;ܬ#{G!XmrkbI s""6XnI=V @uz揤nŮN<|U\we|˼nh{Rxs+sn9QTW؄F(.3!%{1A;S[T+Rܕdq/gS4$Y;]ỷ,K,a,P? jYKRiiivqa@/7Ǔ:o7rifʜlԲvsE=A{f1T*0(k:/~xb4d]mq8'līT6nǂ/ˇ-YXg&S3t_5+C6 F ߘ#cn̈ uX0TRi?{pCX8&c̡žٷӗSuVifp%rN}2~9pw3GTOxb >xq#M ε#`?0HKw\cˡZKzn0%]qouMFO6N_x~Ǫk+W$1;ǵ˂ʬ6IE#dSQ˫`?׼^sf?R(LgwD7]}e44&7W:icsa,ayqoG}'b[sV[.>9i>h4w܇ O^uof?E2ʧ>)$c.S9aqmrɰtYed15C"2Fbsd̗HX KǓ{vGvsՙ+!!FXY1S.,p[rMecI\;-W V,2j G%48 ] HmE-Ú-Pksm L'SJId؉, 6諯:iEa1Swt2+dvpO䰾UolIbI:ruZyre-t-s\ֶi.kgrn(c!,Pٞ>aė?KENnX5Ş,%8ù°KFJ[vܻ9bjjװidHXykE3;P9~W6xL$_g9>/W:YYQAODa(QqIuoSmf"c~SI j;=^p=i\Hɉ%߆*%k1{Acy0UЎۯ!TB[|В24|G$ &QBFdA2T"hRʣğI`cN# 2h@h{^ߑG19_0%2( C@./}S@ t;@_.TT]S(B>>i(PA}R v#& 4IzX6cdxPU;]NϽq8ܯ%CRg{孾{/Qm% 74E,-),l8\oqo ZT.ktRTx653{@iv'k=8ݖ.#UhroJFÀ.K;}+$\u2TbT_wh`,/乭N-*g)u~:[#iUwXXZǢ8mɖ'sc֞.|.sxjsql5d L<6\UD>:jyXX^Zy.b.{İkf{sÕi%ġ}fg;H6JZ^.q*oEsk6x-e 體Ocَ=eSc-ikqZ8tч<Y뵗M}81<jػҖ`/g&]`j \sO^Iy^%\NԼ4 p-t ~_Cl9~6,gZ.'~:ČX%mIa6GsY\d; 3+ˍσjkwl ȶۉ\-o ji_26T*lg1b45 lwρ.ؗ^w)䋪wSm(AA@! w@BA授D B怾 s) PHBI/Kt e.PtA}4S(AB K*OY#%īGy#YTg5Tc*xtRص؃Ȯ<;ܝ؈2GӴ 08R8s%_ds+EOiiyG㰗UஎZ@Ϙ]M]#c7~6W 5ǟ"DjI.|O ZӉu]M=#}.h꧚LxZ-lV Q q>sh<ד.tT{Z9Lvl04nJ]:qrlmf4pQׂu=Z1cIIQX)lpoz/z@R44&fÎV=,8?HYxM)Cp!Yva0Û cM6ev9oH*:vD#Pk{yJj>ꜞAQS#p MQuXܯ{ 9L]DA;/O ౱* ө$5E5B.JlL)|24z[|uTB$`Iy,ZzƽsFZ ]fƹp~yx-;e mMn%di鵁LJb5ˁV*@_Z˸SygzkSV"x$3Iܞ-v\͆*_gЎEHOBoҳTSID2XJ},'%%PD4%KݼJYV^9krgO8%F gQP w1$XfKܓny_Q)lwB*J]mNss%fVW~ /u^%talw6QugӞ_',?3U|S=S$pOZ@zj͸Ţc\[Yq[eCM "WeĞkmeK+絚AcKnMEr}84y3j; 1a돩8;{EO%=^:cp7kIXZ[UAE\ wJx9ż|^yH)DDJL-W<>"r9ZagtрG+Å rYOEfS}DIUD#u%{KXs#eӾ2[ "HR~A-W⨖X)|$r18 +柟g>X}iÙPî[d su,. \Xcl۽ڬ6~ 41]7eD^hveNr>9u<; 5˄l@;#TYtnwi=DR9TOd,^`F~efu;01Q.s-ycl Z:3h IW-bf:8\}K G,֒Pf6n_`ܷ4ŇZ>w y,>ӰÈoU!G7gjq ?.G-ܻ6ޚ,_êcHLFv7wG2ȴއ֖aar}_G $.skrA%x;zSgUUW=41Rɳnx qZK_d]5{k[o=\ls5ُ-2I#fk׵ 7y{"Ӳ>W^lsLƇ\ Io`mh81UT],wX& s~̻Qt1ʬDmW$%9, p p8j 8sܕ୓)L$S 授D B怾 s) PHBI~(]S]S)uL] 4xB E! (ꂎ!$xGT 7@G4 AGT =S4I{!hK{#7G$u@jET|T FE2;.Sz]-)2 7@M .G0Bh@is@ot q(@n.$A@F2ۨp}xLo};egyI}WwY4: AlØҰ|!b fOy-\E,.D IMkKpbpX=U3.Qnlː_KHÇCcPS:|Q6ZEkk0lFIDNm,x-ko`?Yq2yyLcYw560oGSVS a+bXU# ᅎ=ZæDcUgNOrNkuL@%:[G0S'\;l#' Qi߅.!3@ b-^._Ϗ]F7o.t|fg !} vveG$f|W22 |xvm {.?74I_z;#rk5#-[C2iȌR4cmla#,Nߕ-+;DZ 3vG9Fϝk8V{j!dnkcv bwo4׌}"NCq{QTSxy'lDxTT32Fא]o9ׅ$Cx5uNpUms]; .]ƅ}=Gx]4/29/Ǒ/zI+e㙎4 8á%|,g'M\mtEE5QP#څZa4E61FKqܓ>ΐ^mkE?sLp\B&K&{XHwƨc oa)*<ՊaSCm;^¬j1*Y*HqEy_)4y^GR~L͛3XEtLÈ9@' $ErǍ黼atB:Y(fMK[C::PZG9jǪ`RiwNxApp1>0󷧿|/f3Da_KpZ2vBy3$mc<,MMiWq7Ix+|]V*e3G1%ؓy#5=FxsI6jc.<¶A\KHk/aLk~1Iߥu`mMLbg9n8I|䑤qS?`{C x.r]oDFd2Gv -`JFXΓn=ns+CmsKteA " IilMuGyAc`Lc;ᾛ3c[Q3--_jN>9@e^氿w[-{'gqhxr;xkk?W`|. c K\,Htb4+d 셳T+xlmP "i.|LnH27u)kSoϒсwn*܅XslwHZMMEi7gb5n">$I#NEYKZkkt$1:-N 룯2ȃtu{-mEKˣWCHQE,| |&K25V1bXiq4쀾7;`/oebUxm^I\n;8%91*HpĒƗ:Bxy-{`EnP2VEL du.} i)b{+6xٟ%t~of1-;]fֹ/.GRSYXDܮZ:ٛm۷*|Mۮr3Hnbţkc2:sZxϥ{qߟE5LSXt%-ݍ(_bhY-3dİSbᮖCq.xrx7E`W8p! ѧm9/bf `Nn 1ppjit-цbqռB/W3VO~7_5~.嗧Wqܓ}ԭ;Ĩ]={g-l~ Y|M$ 9(bnPxvBAG G%\E 8SwӆYaSa; n۷S#6EUb82#eDԴE&]:"7b7_336%Oc}-5md1SD׼46#5\[<:{kdg l~oyo$]S+鼡4B#>is@ʷ,} HRf-y^k q7f}V,:\6 [,26F˾ܘM`u;Z7Ne` ۂ\ۡkSQ28w3ElQD顼p񺯽|"* .6$coE%C]I]70}M*QU#DV,mKە*9,c[,·z_ l OQ[b> -MS(̸%2L =1rUXbF!.|j,_ ~Z<cCS+fDwsmq&e*Q:wrY;玆q>;mYGSkqlTAp8ɜxmKE6Zm;ZK`dOkM;rFfL@H4'-Wlar2F /S7{~/,_^' Nڅghr$~fv^uqm aUlQj"vsP` A8>SL12ܷ+]IUZˋ# \-{ۢu6U2u o]-/W-A^edpOKK5t삞7M+0\[_fE?</m,4w6#q\yg>MֻQSrRJh@Ё#t@P(9 7H]>H ѽt ( JKe#t&[x.hAG4F7B4t( I=?Rc7(A悃S r)P$} EHD|A!!"4tG4 hBs@s(KMPH9!I4T%?)uL2BD4S(AB 愹@!E@B![pyٰ,Db2VB/_}ǨZKY͵-bհ|N')h$:^y"~ >OcϡJ#K;e/.fqoE@N3ltGNc~^,* A'mڲyqa9WZ/n9 @K5FWUς'jH͜W>_\gށi`DW[>y[!xDdfc[ث^Tqw28YBQUKG#` 23\ZI M+A16 Īj*&L}[0zz# XCqN/QL.&K,.woϗǶX9>Uj@9H[뺸.;Hke/1ڱa5>k,u.w ^G{2>ΦM67u$2`B˶Gm8x99eޣA;q D, >jW6d* G$(H4!!D%r/ntȫ2F7Md?S}4>@gE#++=M4tG4 hBs@s(KMPH9!I4T%?)uL2ABEu/g2 =.JVPʺ}< ipwЫ! 98Yak%_6k(dmr洷]܁;Y#SbIkaefh,ӰL`q~5#CZ<$$[Yj#0y,3|2=˞?jfHyt[ֶYc;ikl~-^Ov>kW~> Č8q7[,/vNzKmqGV+H`~U|CqP\Ab˼^=cwuL_Q{8,9vr7V x=ڹ܋'I%p$gun[26w}q7<,`ˋ}DZV#Auq/7u.>OsdmEzG[.kg\+Û^B X&fh) q/tqku9O =7r{M2CO%piMVFω8}@o i$~U|n2ԓH "e >LDT7erRAPWB5Û[0g\9/^[\lv%  K@Uc1J_hxի{ESѩ`x[%D8ݹ{k.`8#LyvqlUpN5R5Ftzk >1gch_gx]n'54^fay[;|z2[i|^_o7/>^v7 ]a  i͵2O_< )sb yzJ8Þ$6\;v;Au.@'y9nHl×65meF'Tʉk*dTmzvL^W2:rè:üo2?U4?;e{4{jZf@ZYKcSk\fUV923vs`9]2r~Y&>{Hd;i U:Z=FFw,so-&>SZvV~̼,n [=FdY>Xƹplׅ EP Zc4]߇0M$T퍇+t߅Hɦeۭ:ˬx,6o>:f.`!$~-?~w>.N;f_G>ƽ咒H.yKk Gn!6U?scy[l, 6,)[aG1s͚I|=/f]RE,tE$.L9Mq.;bʘe|E,T.1wBI81 x'.Kzuk0(.Ge59V pʪ(T./,88sʸ]JWL -MAwßV=cXbs&44G3%ACsow?Re?k4}nC~>M] ckH'^wVGxmSRwL H--@!4 VEM$(9B,EB9 ,sMY S(ꂀ,+nMBn sT<^>O7;5yg*aZau[$ygCٶe²x¨ 2k,ًl{/G,$t_Pluw\bCHKK@ܛlni ߅8CψnI zz7ʼn4!#nsYϫ҇M'oٌ:HE;*xk]nkR,ߧ@⧏kd.6bnW[nC FߥÊt)kYpb[$ml9w\6Nm >2_ܬiC9ĽRy@ڌhb`3bLt<1$⵶S'74n-E.Hy*c\0G(s|45q{8)hu0y"\NE7Ȯ9qݺN|kd|R0{﫚[t,"˗cէpŬe{!lr35NO;{kk@GHQ؞&F)(.Lp6 W:QfdRdI; ,~zL@S-OӴYXޝ.:t1H(0S,H n,.,<7 TFCF\UP h&/ \w=LNI[TsK+QWGpwŃƗxHJZ(5"GOx2qp$PhI%5&h{coc>JSw5׿OEbؐu$av_ܖs:ɜי/-۫Ӗk+n&4s5kƒx8u+W21h CE(z=[éeݼu:v]ZpNEGCx|N.'a.Y&=[8RXnc5/`⯅L|UK n@#(\[$ fu,,LdvhZ n2FVG4v x٧`y(+~kMărW 4KY"Y^iW2 xȎ7J:SX8TKc82J>79c~#9M#-4B8 o{ l=zX}9-gd5hN ]v?;+]CNftF[̎j Im9M_+6R5Pw0ޝz08g?]RH: e@JVVN(Jɞ^+b,xYR9Evihk2 qyBU>Ed7io]6QY x7rApn4sQTFM!?R8&S&RuFhmZ$nMwd`h2-k#A6^pF5MWIE}݊^H$\lM5#8Wiegx["xIQ q>ie=Ǽr_k+:oYύu;Ug߉')braj&F騭c> 6ѳoŶh(EPQ帝ajy8لkn9maq z?sueٕ!M]}][K;5~k~+ +Mbdp.Cc.xɃ`eI'ITǗ ɇr\w rnic\ HYVۚZ͙恔x(*n24Mof$ƕMtaMQdY V+n9B!SNߍ%ic4{9r2p*㏽罬R \!אa ի^w_`m>}Wr\r=. H<#p<,VtXֺa,ܛ@s\/İSɊ7Kb~D h*|5UIO `X |sycn> J"is{֑vf5QS85 6y 0M:a vj7^B%sĹqܓ~OYz|ߓ Y5GIn qE4 Y!sh)kiE6WTE1嚝ۏ`h*O$8<T&IMMkn  M #"ġ/-S|חI/MoqxpI1 v,}ExOh5etT?]Cu]<9yY@QRV[˖cLfQ3O D/9s;u4fizib`:f-pqת&ŝqcjX =]3Pn&`95/Mί|t+pL|d/oQ4ոlRT㼆.Dz`b5E]Ϛ=ݺ~k+T`AԍQA!9t^.|VI>,=j-nrGcr|m1裚* `cv%jw!{ʹ-qBvòd𤋮2V57rH;yo.:)iEU,G~Y{!#sȲD$ETT_Y.vO㰹<{FWQ Zv9Iﰷ^ -xߵ'e]I&AGXֲ3Sw,ۺ ps.6 /zы@*%g̺3 g\Zp'{}ZJG d~,& %XXe*I_t` A j*}|*GO6]Rav0Sk#Hph^᳹6= {ԬnH nQdsBY  ,lr@7쑱q YdsMY S(ꂀ,+nM!@[tY%C, $Ow@qHd&7Nϊ#h%AA_bSEB=ЈWL> rG%}4S䋣=Џt{ E}P)L8@@]+O.tt{}Ў|P%ABA/=t# G)_e.t{]#?tSA}tstЏt"DAB(.t{W<\x]yb.ņU#cCָm! ;Goe)獄HHܩ1,o}9:mbb]#d8~.qrUFi4SOF9_P$lۏos/BZH= "ԙlLgulM. mc.X^ezqڎ%2KaSO7P F7lGץq,c]qmN77<QccsucpRw^[p\0VW~X\SvװwlyC. J7KHʚpake ɃÆɃ$.f;\yulsV65wOorM66GU0u SaX\tSKw2l6 &cYfֻOyZIi-k\?k!5I <.lEIoEV@uMxnױs\ѡsDPbs 1VNX m#lƘL]2sRn{lKpSp:`ѽǟc9>>YN3 oeT2Fm!c5mbm`Chtl. \qU.8u]mU*xOV;_o2>٘H(0&BhC#~U#,k0y؁t O4bFj$\wKX[ZZt0</.:>\S˿1qq*IU -onSzے}.dU4f: kZ_P mȳ/̭ٚYc&t my\?r2_|:Dvyp8c`x< 5mmT$m0:GFHU9X&/1aqn4$<^\Kwh3lNKk0va-&<&:pW\<-H=Ć 88__6A4{zt{2T=.⟺G)B!|QT S6|nVx%g)2U&j*\HR> -u[Rbģc¥$PmbGuL2JҙL t}V?z79grpsO-.\o_᳗;}e/O0 c̮Ά1:#cuss H +p,,8 cNz3~>|__}ϓK쥒U_ɓR U+>U4IU3IU}<$HЕxum"$G`~ .}ndžQP̺-k\4QTATli F| \g2A+fEN:Hq@ ܜSxk7ɽcf -5]4|㽏1nI[3*#wzmnr^)*pB: l.\?P3?k}Sa4 vg;T/3~y\xgQg޽.cݲA=c]U-Cx:6ն+1ÈK]K[W+e7'tCe7*~l7ucK@U]+{RrG$kTBptJ6i h(#c窛6sZ9O* c+fscpqss+GQU$k%[ZB)n+%;wشu'ËboUE0'F%sbR7nѫ8q7J_ Hea"2>vy>W9={Oldk_;d|xaR۽-b. |֭Q߹2H/GHfK0:8$ l ^Mbyx$m !cɝWlۯmH%?u]G=B9B]+wHɽ mA/=t% L{{S.7O]#?t{B6OP$DJÊ}R 6TQtPMwEЏu⟺(ꋣ 老P"\c HG$$sTUs@rB9!Ё BrA@ G4s& P(A@@#&!SAOT]S(MhAG4A! EPQ&wM#>GT$sBP sMqkb^3MV3.Dζ#}G".N,9&c{H1.:َih̃]5ƧkԺp׸2ݦAq~*]דamחZmKio I'ISz-a5w5r&}<ǘp6]SN 8~wsNN!:niWk,AZu idA.;_+<-'x$5I5 نi>aMᰈ'd4EG;w::Ql[۹ HÚj8xS}Gij'# d#7 %{ݢN~k|imELds!Ĺ? ㌫?cqTI=歱qKwUnaudR68-gx.-#,:0lSm, /tq/rz5^ CąC]#AIn$y+LzojqrYEZ+|f_ߟEm>(᤟HMd@qmAYX.XPR3sdi6r ]R:Ii . auqv3߂K.)괮]omM+uO_M\\{lqGǗc{K7ۤg]vya]A๺X c"KZ7E<CkǗ^>Lb.wr@]KA1e=.o;ЭB*Xi  'cSt`H{ד,dLJ#k걇T\YlzpȢp /})| 3Ep^_]3|XgZ}CD29 8),6` 6cw%k4AtltDJZ(+h!׊gy]u*bh &lV| puA . _Q;ymO|^p *@p*@ yL#6@䫪5\]Vc}@y,P߮cF$sveumۀ3luk4?I#VDm~6VLMI/汭=skӠ|ԛ R10t }棩ēpi骜#Z;{ǚr2LrPBwW1W>; cp]hYAI.?ca<򺿙&shdLknytxj[ u6 LαZ|URiun+vĩ%lNd (8^ː+l&B'wg#W$h}ZTUKPܟ$tg+'H'Zva79n8}KG,r4!ԮXT^qX*Zց- sXn罷8~dj|-7CyZu.yN 2`pqmokMO8bCFym~)b'|A%a䠱ܵ 442!XWwnXe.V,fXM[[k!~Lw62lT&Fڙ;nk~¦l晌O1/ۇz}lL|ÉWxeyj58 2Rb`}E$u"-2~5*$ϏuKoݰu.yhW[QUVVL4nԒW''uT gki@G%guM=S)uL!4BG4sK)4S!R*  HZiY<tr=)? l!}%\i>,WIMU&ϕڬ9rea}, ]4 F7?>);[;yRF!.S"A=B|"E \! } 3}BrӷGFMdB@NHd@nЄ)"AFNވ@ѺedBz W(#[n [;z"A;z& 4[ W(QKZ;/WE,Q=?GzAEbAa@-  sPvYp!$ B24Vזϭg %3rcENLESKY+/dqG,B161}sKߨ{tV6ji=y,@9؝ȱ!'Xө6] L{=Rc[H~j%d`` DH~nƱv}E{+20 ͧwl.oYʑwu-i1^.$($K4D{Nsc us"[ן|J5 t̍T]= \uOkdc =&X gǖqɘ;1'F顏- ߍ4X ];vlzp[sEf 8`-clGgL6|:* RdfḄ^'Q!-#vE;h4D.1i{nAc՘;`.3ysa^?:kqINH8xبlN{F!r[SӥDTFk$ͽk4n]ɗ) XV?q*Y.XHHؓos]x>.'92p&E1yy4*9kwky}Gk@@/8~CsȷFNAer-7B-ro E@r-+)#ododЈW*U[]KJn*5D&>}{A H> =#$o.SE)ntЈF3^a!_b,v>Y77yYU-1Ou/x![>Y卛IS:`M[6[O }G'ou8[j"G3;۴"<֝2K~w~,cj\}vLp s "4 _NNt+ufȥfB.S-Shh@iR-\L}-ѽB!nH 7hE+yo BGA#$F;z [dDT!}PyMwOM$ 3.(G$.\R>H|y^X&̞0CdqUtX&T{}Ri]7Mt{ 餀G TG9{ uAEBh4s@{@stsMGG@=Qt&NJ~ |S\H2 IA!7)=Pr;E OFGt۪ ~r>GS`2L@qtqpW~>=naT5sYg]s}T4GM/x6hcߝo #mJrA设MQiX+h$0$6xs{d,ۑk뵫o~'u+K;MÈ9qx GuK:Cl.@e1YRs=T:AOYu> 7 <6sZ Q`526J2@,h/Ԩ~25a雥]k oU◆s< Owc WZmeS& x_-=o}Q^65ёM\PHt{h=К zGTQt&^(G4/t{t{4PBh)*{EyѺiX-hVysU* .`YL縱<\yy 9lAmֆ8U-"-/I:v \v7TIb$[Z5oj(N3T ,'+[bA39 q -F3T;mez<6N~7VsckV߉053x"yePov{nV%QMTitu {溔ݠ Ǘ{#sҶkl츓g y#!;8`UGVȣ*9n}E{}^[r~l' Jݹڌs'n?2{QJiQTmypօ1C> w!cHEYKca|]ӧnErŞ7Xkx<ªNh6{m9z̳6MFI}}G/Ȝ}n' Vagu>+;P-F /r.`'e㏕˗-T=S@^!\PHt{h=К zGTQt&^)9S擶. e_5 Rҏt{5P=Qt&NJ~]^BS(A\!s貰m3N1HZNp#yʼQ8DTE-i276vֲ i[nFSI`snzq= ԲM[M-)3]8˴/]{8ce>(Lj<.K#Rz90a$ÛsJ#8YuBuJ>đ#fVBՄ9l2Zm>[gNMKWMO0!q~k)[#a \_E GRYnXK^2I$)c :aoz8_~+wo`ê(q_HyW-cH?_Cmiqn$ h;Ll7dm8EUE0<0_!eYih/FSrtn[xm$ 2vME :$q"Acɤ,6H,NJGwvpiԖ61<>ُ~)T]M.fI7W(Go#^VEЀHzG.(G$=4 M=wL (G=AGT /Cc{Z"! l|/1m wyxOЀ=4 @@h!@VاhBAHEB9"۠9!dd B,(@@sGDY@!@#d2[tYPd," !,uLn)"ȃ\Ӳ-BmddY!Q"PE)HӲå6<#SJOj|7Eᨗonigf[ՍKè 7hmG#uPE%h!"w5Pr) Y>J$΋iH|plyeq:W|B%uhlNThR ϋ^5Q X@m͹/P+ϫw56_ 51ENh!p9ۚ|oHY8^S9-k@%܀klyߪlsu%y;pCMz$vnz+Mi T,6pt,Y\M#&i_ae6W#ZK9qZHhD [N\;Z@yu4X ִXt&ܷ<@{nZ^TiNI"J6TIimH[ai887ܫ`PH'R1$r9 XvW"pmkh& ,j71XX$l]\j j0Lu; E#/>ͩk@Ѧn]ѥsw ԕݖVW3Gl-Z̮{u.S޻Ln?I.7:{)BYMEm& ZZ $1íYq49ϳZ7o X/Gd:GǛ#o5:( U>ox68@ \@lH.i\_3s\Jyhs%ѽkňWn6.2^7OI.y _ih[OYAQ#kk׷_7v+<+ޯs&j,H\n!Ť[7=mJ9$ȡP"TV,9;"۠ d 9@!EPB-YD; : dAAPEnWJ8wnaۻmcCkpKYy+[= 4ؤ\ %9iiFno\6]jjf9im6$yd`4-4.t#Ikequ%H TfPV69N=::0ؤ$AaC6dmHX~J .}?v0w{ 9{/w,k<] lԹkn &Vhc6+|4-|rCDIC'Bd䩈8i#b.[Y~NkYa7ve +fKN:fGADCR/9Cd6h)Y%gl/zkKJ\9jߌ.z/e'q<3v8˪oqGIFW$@0./qnj|̲]PeB," !,uLn)"ȃ\Ӳ-B md &"Y!B,ODnPqEAȣ7;lsM/XZxoMŰ>k2.n^JI t>бă從K/166WwL`9uO7w-F=b _C/U],쀹2e&H7nV# N')Ѽb@YĸQeܠG2yݸSljU+FޡAFO$.eAVRNƺG^.\y&êYoVO ᾯQ8h'dfVlisMP!,B,GTq@*3 s0yMB 珻ppkN/Q6"ǢF9Ѱ'EBBQt_d}NpMt_+O/ /WߒwۊWߊG$_t"h›.t_J.;@@]Eҿ/t_D]ߊ(//t]B/ x'tt迢0W;Nt_ "Q0.D]B]@]EwHӿQDuE@@|O+"ttϓ2]V6⯙u#EC[ID`Hxi-s$tp,ҜG2RMK\%smv1VO24ΏT`xm[|\y3RJZ^.N7Uf1uWߖs6䭉Ewuv#t`M,b Mt8W qn6ۀR6qq~oZkS;C[V.S͑=8n:f,J0nnktC5<-t9{ƑqtW"ljY;77怐0  ճHW~ry_aݣeadqX̓sX qaG>?t Sk&gG Mo~ARK[;%{\1XE6Yxiʱ,qsVUӰ[j"oÂŔ݅EDPi#Lh{MlUs} m*Ru ,xMѺmr :xrnR.siaa[a_m aw$JdyzzikfbGۡ<*8ZxHo_~gN9gnH׳ s v ECրZa9$56`e= oA cl9VHww n\9k,|{i#xfS ɷ2ξU1޽w¨1Apso{(\$N}Ã<'o#-c9%A[wee /M@āӚu4qsqMݴwEO._@]B/J4.D_ߊ/E4 /苢h@h 迚="wNw@_/莨@]hQtx_;%}`x [sa Yzw-s2DKyqU~]vfw"g`NWk pc<%k9/uU4d|R,ߺ߰C;s%vs_.5V~4{F ak#S^F=Mğ%Dzf41T7-vj  kR0>I[#̫Ťb[JήܼwOLi &8 b$0(7"dUT5 CZGD- Nk.E 7Y,m;Z@AuM}=z%{񰆹8]2S];@WL˱F7xY-k M9ynH{>(1qFL[؃J3Q(Y\?lQD֐I8b+d0VB76u7Ê/p|qwM nU3.uW Ke6Z{mr樂RTVSu8Ѷ`w pO`Yl bN@i=VhaV'\8AXu92ritM`Eas?8^ڧl_ HdO+7&Bsɯ2wMP^v qqLceؿ. %AEHD>h}4`4%96V5 [=5$d]Va^ܻK4W;~;QD"aDwH;迚EvB/( /怺.'t;4 /怀%A>h'W,s#kL` uD_)d0 alc| ^A@?\Grh)34K mP٭G'V>/~Rpc١ױAf WXO{~bkctV?j$#D#@l9_|<8r.2wѱv?=TQk^ߪ6'#ݾ7S^<,VJ(餌тlmX2B!|ӗ4@?s؋/_ uX_m,)sn7L0A[˸Y8heV˪|,]Ux]lQ=]`O~#e`u^{]8q3X:Kรp(t]xwXz?A) Vn؂iڪzv8M#Yws̭' ũ1x E2-E_KSI#^bcX5|>UsNtM7nÅN,sOشa&x]$]k$дjr=:{.d4$4 PMTp(umӍ7;/s.Zr@wUdq FENFqer)]4cDt="9\O[), ;lN H)8VG-LYSEB-.HN"ۢ [uLD/t&B,]P`[uL"=ЄR@>IН( >&B,{v@-){}Qd ^۩NQd ɥn)[u)@dVB!{n;n ^NȲ){HL[){}QdY#tRa@D$&Bm`"'NpI4ZkM`EKC3T0;l%ܯk{9Yq vUI3 t[ ~Q?4sYbҒF]n=];;]Pֆl|au Ajdn8tN a}w+/qǛ x#|v<,:*+ "w$xÚؾ]\,F+^nO+z+ m4ߚn8_{_8wVHh؂ﵕ' >ϴ qmգ%r`70 +^,."֧j#,ƻ6)-L&ee.l PK4r]sVkqk&}Dt7!õVq/$ i WK#C*m.uFk!k5 0vgMxsp.7u4EJk;+7-m'k-Y21 2~.5ٜ:GaϻnQb6 qs'M# fH1N4{} h>"/!-Ǧa=I;@hko{]fGC,s[(/so%xfoCv>v 6ֶDŽkNx؝7#[:ݤ=iy)Gُk裐Fƀַ?U+en=-=c@qY7𵂔kdc9v6 U{"$oeRJ)*uX>ase^S<8>GpfA.-W[!-?xK53Q-VsM*0CFJ\֜wu)_Ri[eJvE/tY;n@{2^۩Nۢ-"~D$&B->,DntvH۩NQd 0 " d (lSPS-"O+c'Ƣ1B#vu F=kwC~{t\=8خ?ڹmjhrImq?M$]&&˫.H#qZL.xxq%`eьU {ݧo 7jneJk:VX8Ck墪cex'Ƥvp7 qৌn6X]ڎhi^s皒ӱalI-ʷ4 :'Vu:.px)wOh\aǯ{nDM|/)}VoQJۜXFa#_kmvہDKxxz#O)jX?3۩Uby_%,m?"Â۰lنrjL)78z4C!-7asxܙ+,tg 9H1X˪bxk.55xoKS+pM6 {Ŝ ]קLQ]'X8YPd2wC)1s![åEfGf+E9G[!2Cuqx"BÉmZǢ z&Ce.w}<5ݪ|׼Ih>|T^h8M\P y^rMx~L|'PΕMm8/~ƎUnyw"͍2R pI>L&M_~Q.+BuW"9*<8ےˤEEK#GvZ{LH}E/[nXqh/-nd+rӆw^dަO\Kmv4Zq"X\n[p|E=E+X#6oy*8?'CE dv#lYytec4doѿUkĭQr9/sZtǃ8\-:w7cO"ZY(&`Hp7/2;ĬYfNkvV ~1SD V*KmpE|~/8I!ruEKIgK1:Id59w/Q}xڇ#*E9G4ip:/,˫F׾T:X|[/"zG9M~qwRihB ^L"ȥB!!2n(EdBAd u(;rL}@@uGhE+sQȦts@ B jn@rG4rG4$$ IAh4}Ѹ6 "%OA(G2@x! M$ :T ]S)uLB 49sM.h@!Ei"(Ix#>h@@uAAr) r)џnM_q{YEq_ODWSOSQs\Aiثx݈j{|bΓ{#\ {@qqIнc[ ZGȫQ8[C wv63`sbѿ3eO-l@K\ۑ[Q5s䩎Xi$6ꪂ@x\nG_L xY\OHT̯nO3UUBh3rx]:9.b{c.. 7#4=pe CuD膋;;߹Ӧ$~_Q99vUMWY@[M4}/؅U7rw-.+ՈnR4PM-{wpSG駖k/d74}{M7couMEX%<YJ`C&K+&oGE9Pֈ v^MYgL>iۮ1m-SI9xikZt7v)/K'v' p棱AU# Ϋ PK>rWpl! :W_Ug.⶜=M|q öe+\1Ym>zVA1ke +$w;I&APL#FHA.%o~'t5d8XZ\,lc8Idhp|kh(i!3}-]OkV|M[!:uZ %?-.$釽~VC!t,;;3l ]Df(Iv)@uM.@s@B 4 LpKL isB9x!4 9#CݷW$'BwPlVHjf34;17 tE9{8~=UD#| $f7k\VDwҚqMtmvk(b~,(s!Uk$sX۞jB<×h͆J25w= qBH,B˼X" ?'xc,kuW*-ml='L U'}Ro>@8z',Ew6J,]4Lt26i{mL}cb,B.It&P.HdK$]pB. E$rL@t8%;? /pMܢd; I8&8'pETҿ(GE ;E?J @pM%8 "xwNGT~( 8 "A('/LQpB.EJڌ:*J)ap|sD1Á/R`ي<`n7M#ODY͘4j#}^V⺏ýmt Q <_mKkP~sz89<39e# jIf-m칕MpI!XDDTQ蕟@W\6eb=dmxo5ǞzGs$67ePp/mԙbHӠ>:qEoe،T/LjN41p{lc9ɸ۩2@ 8nO%\ZI9+\Ï4yb(^< xӽ6pe%DO h`kC76o3m{} ,x{(x%4{y*LJ`2zUCDj wċ;o䱏$J[Q4[g[*馞G6WoRV:-/0IVd¦ªM Ņ5:wVvQA~ۅJMi7Wn P{Lȵ^דXsbq.~&:\8q$m̬ &({>ۆ4ok`h#W[ю:x\I\vq*N͉uScl17kmeU(mֿ%]2($Ftqq>Zbtm`{dcoס%;l%9$e̍{\ oQ.hy'{JʾFC@+f{CA Ե,Yr9.sSrh]Ka] ;gaQ=Y#AScFAo U9e^FSjah-GU3..qJ-yu<;7w3vi*F$arEżH'8I>Sɟwv؛IϗwkFr2&Àddio+cTCætL/k<A-qkە-M]\)䖴ߠZ)fZZxY5~9j`A {*|<?U){=80I +Fqu]Lb7GRyaor+z+T,$utb͏DQ.!k<8pmYe!s):`tX>InOO%Ew1 KytWq p٩f|fޣ)- na;8qo asz{_2|=_[7_t _]VW5K{ ѯFm_"x}ҾpB B!8"t] "dPd]@N߂(/D](<%@4 O$}`?EG; 4_d \ȾA/|t/%@$(`*e%}G7;H$ /uW"KG]9\kVf ; 쿈aTOK#i`{evX߅ Q>g1<XejYdMHJu5@B42˦{ Ϋqkݙe 2N3-i&_txc6ǽ$>LǓNۗ/TLZ6Vpq[RSKtvGLٜ#צ-#ki"o켘\;'|lq9ly)!u?,C-) F_[:P@l;ԭK#[`/pzr_y)\y`YuZmma~ef]8'pEA&QTG%rI+-̪QނBw+1\ ȷd 'tI?|2 \AH/˚h;'t*ȠM9ii* ֺt-is@<!@[]>H䍑 E6J@l$H<ҽa"4d,>K]Rn wU6H#h6FP6F<!d#k!! [#n v4QFۢD-K)sD#n6BF@!#du@l&kG}n#h怀6F(lr) !4JC/[ŰRbrhfg0xTYqe0_Kvҹ&7||Վik\-io!af [e\UQzy pgSg1cq*@#[n7i~gN}N/<\C$'X\^^`sąrFxYu,/ =aVe<&X;!kM˝k]BZ>ʀN. ă&xeLr1DzMU򈫡=ۀ{.<sxm{[5Ų^V]k=vmWQ s *i/,A̞&nMa⢯ldS\p"ϯ,f3>nLPnyxק=osXݜm}>=*""AV;>ٵڢMMd{K2M9t풂?EXIX%pFx+*"x6eOLgŮ\L}k]5\8@1]ql@[E=< 'f櫨qh.$<.Ii`,NYE#2m+cu $ l/7%!j-0{HaoӪ\IеTwJ zTWid=}Loc&K7.ďk%M"(Ƣ 5mS; <}.w1y$k^[@ {r-OKcu o8*=PcF1% p} 7X'QSlSPŶ_G.%m2EPϒ[TIH2G;.<.y}$Mx1rSFگM5 P/.b'~-B#duAAKennJelͰdsT1BiXFmtB 9 DsM!d pM :6BAI#> F4 ds@@#du@Od\#d @lrMmt#6G$ 6Bh@F<6KdVfH;RvmL6]#t4 +ব`9nYUf3l,*)̬sn | IOxvu=mkc&d,0dž{ǧ% ,xp^yxzzx_(Gоx[Q,1nt%`Xf)zjgoyumW6?_WNJ nsiܟ> c͞m|yDV!QFkq>a/đ|=k[|:jl<>Fm+רN2Yq+HA ay!ٶEu[N^^ppdc%NOW%+gN !ך$L{#so?%fC~(fS,,|O3r||r VY1Ipdè*V6)mtuoЯX9rk&NˆkZ[gs*L:xy3 a7qK| rA39yCarևW2 A~칎=@61b8~˺K\9hwY:#|nܷ'콟^~^9F{%{:}\7+mF[%4S(6F4 dhEd3cX;WOQ%4s >4CN>aqXw6F莫6BAI#;6H-CPnǀJf # |2\nK|aԽ"IMC#"k*6HlS.\)8" H7@A-E| -{JFEcvIjBh Uv#M{_K*ma9}>A2l7Emd .hP2n #t {#k%7)섷Otۢ[2F.mtnB7IF$S n耣d$n{!(nuOt#dodKF觷D#tsD#dnn Lʼn^!QL.0z콝7nlrj; Cp|vؒ8,AW ƞha!8=o_+1eŖVVCqmw UiEotUhFn#7qJWvj~]b|[R*:);L* oKv ,qx:tGScVvScA+("wG {CCwzZzjh.~/+s|^I0Y? I@pwV>Kls+) ^ˇ4BIр4U ¦űyXPӰv{vzqy L6Oo5[aIdgw?ƪĝYTѰrpH>2=o^5Xd8]iX(m 7j9]sXn ؘKύ׸~o赽u\> lW?EjJfG=|eN*s.bb: iDSeEFv o9x7>JVbuwcHXUXxͩsg:(αC;RH5pQaA3e{]7Xw %+$B!T dEH[F%l$ Yts-]|nl~8Hւ`+͖{nM$r2`\\l9SDhbY˒;k+[%H-"œvyO忨|n~>'˗?ZwwU.Q`Cm=$nia:TD!w,Be#+uÎ4 Lcy˄cDj-q$u޾knhicceDS53ZVIlKWD`sF@:Qb6RMn ç1GhqhkcɲT,/>6F8{pIu3قEP%{n@OB0ň=>"h=]ݻiWK#$~s-vŢjWrq,.>o53ơC J`F[b.ujnl28_IsP8ɛ :6nEfr~N3zvgmob7Gr[Tau767GT~f6EW#w-Kz0U: cݝbH^B͜77y-=sG_"g͇$7oJ1=Srpo_z7S[[{tT`D$#t(T=L:qDUNph@`Z낮$=c#vŶi- ,,Mhc4M ˈTR] B6Nig[YV{%]`:YK]s\ヴ&7HR//XenYoHvS[P^:K`7 4k {tKLp@l# tI3 .hV4"!Dl C@@#\ JdP荒!3dl d ! !!@l#-.Q6莨DtF{!dmЀ!n@A6AGTQBDۢ:6AAlSFsD#n&x 6B9!< ||E{(2;1/s|r`v]ᓲܕt.6k 2FƸA;;^<]Ќ X4(-X14҇ii%MSU4LE Yk%O#˛F5'Mm4rH'ӾrtrEn5Ya55p-o%2<42ϩ;`|+dar&tRdETVpc|[qT(d /RG v_J?KRwscV{ߩ6`!K 8|tv_[oVcdw":uXln.g:;SwV0U6E4 6Ѷ;,[Y6~N>s;6uH.p{,6Éҵ+J4@l,CeO\0{*2'uc.m}l:$7X-"Ç?Ex<u8W lZT>8<%ov3-;4=pW=q*i!*v#ο.p]tX~SUS)咝[nW<;r_[/Rf_{$w cys">W,$F,NCH_/yˆx9&OvNQDL2ggiukZ?ϺKqͰc-?dTũJ|_{=A:.w0pg1hsd6Ǹ+7 _<_eZ~i Kb2Rplsbݷ ǀXb;sKݫ$AKY1Ђ.\9}54԰JX [:Y\=\J/ZƾEV2֑l)e,nKy['hUOMNvrYuT  eD6z=tY@y 6KcIr&}My]Al2~wteQl|)em|ЉHiGcD M]oE闧Ѓ -4\bxHZZ]vcp*_hEB0s7ku徜679 a /?IlBm}%;s68$챦\ko6Ez%m]OW6U !kjd<u$W.+_KI\3qM4@:+o'X 6kY5л3fvֱ٥#,ŊL>:RE-ue< V2 Zh?z8d&B3[nMmZFhԔ $w5|s;"89[A-s޸i"px<[j8m=8;ѭu1+v5 aP4BQ~D?fMADlr^U$Ln>_W~f_~έZ9]K] *#uC\C{l\:*$,2%;r 'd{ dUG{{ljK9xAB tG4 6FB(ۢ8!lQl!{$x6莨@ls@@lPy['DQD!ۢI H@mdmtrK)n.^ZJ 2TNbaYƎ.q6X!-+Y,T|-xg%vh~!xOm𜟊cعgUL݌Iw yŸ ."d/A>AvpB720éS|{ӵv"M^@V`w6V2Tw]`y_j mE4 u<9꼹qqtKe{fA=V^M#/ݒnӽ+tXnUMνuPbL0U5xg'#us dmÁ~Ǐqn94r* ,E~'lx/&]HvG5>!䫌݃웚uK#,qdk}yk:"۠4 Y*`"XO)υ[+uDM+x;òósN)+!T&r~LldFRƷ#3np:*Xê(gؖ={nܒ|ϸ>iI>6B[]=pL v4_ã˓|zK6lx}LQc[ ox@yo}j7:wes CvXz|~8cd-lOoGZǚ`mvY6_";QHF{[3Q 0>H E!6!Ǡ9n1Hq]U]ay.+{ņ㿺zXE0n`c6y{,/ŶBG)0& 52JOr/SY-CD\F} ngN"l8_It+_WCJ fҹlHq>VzdI:{T n\D׆ۅ#qIyNKDY=9񹡼?5#P<6&Hq皁b1Vz?n<qvԕW4tPko?%kjjeKJq ePDM՘zLG$͍ڛ7vR֍!I$F׃3=59IY{)gmu}T 6%ZLEOGlW֣Q߂4p/⓸A_[.-MS0"솴4X*0۰䶁4@TS2(4D.isO9h(DKhP8&M:(M$)HOiuM怎h@uAGT LpG"4IT 7_A> `Beuntgݠ[ת8gbܗ11.%;9ef$ܦm65Uj>gx}yw k+֝^dp_fY55S[ ;-4Op#%ۆ9yIjK,0kX\αXCU3䋹әH;tLz"|ss#`'`}W#1[4"Z>'i`ܒG2W79?.%hz̄N%ܦ 55#I]SKh)GTPI4AG4"i4 B(H&EPQ&hO$x4s@G4 :Ȧ8#@@\<\@#9# KݥMVVl<4=Ղ74"ι;V)G˼a^[{Pdh1 tu l {a!kT~VNg~7_YcR?Y0」qK:'K:u pKLxwR ?Eҫ9.!9j碒kWgmkaA<0kY]ۣq @,D]MA޴j'b8ryg 7C3YJ"k^dK=VK.l664<EF9plo%TF]\8]ڬb`sxX4np;cccWbc-[{p`Z. Lu/,۝Iv#Xtjf..6U:'5\$6f0=V%cI}Di],GbCSEY\9[㹸íd(]]({lFW0=k'F>LE d-obcef(;4Dm7/ˇ=Sۆ7W)w(͆WCw\= [/p$524 U$9E\I4 B*ǬtUI.'rOTimd(M$)HOiuM耎$Oh)"(9Ate}H@_d_trKG$ .!J.@; BW@Ћt_t!}Qt .P@r@]BQt#_e.Qt]8" 4] vou+&]W+re馦?h'&Ob4Ur5xˀ+GlltonbH6rjٟ I;II34ulJmbA PUg3Eu߷uӽ:e6QՉLpcoSL,ςv4g_UIsdp :p5Ulr9 5 .χS j0QFأlqoFSk1֩Q;Mv;er25%/xq iRlR2W6ݐjٶؓԓrECIi|- <7+5eS5O J>m/$ pWFމ~I=<١U}Є(d$2ZnױŤ{sBK5Wzgٟ-k1eF6VP8McoBAtdr@]BQt#_e.Qt]8" 4gَ6u\ViYgmoUH-X,A+fqB.״r ]/o>1 2u8xZr|Պ&09;^K'S$vs7UF6I$Gi7qOK'jd0 ,٫rH,ZhR:́o.Jԏl00s[G"/ӥUr:5`h;Wߡთ%KK]lxe\"f 2gA2#. l."ʹ$#h!V5T!CÍ|[VU(36Fwz%]Jh#s ~Cˢ]+lV:yvl:0Zg6]2 Kfr,^oˏEG b;p؟f f/cq7Л "Ú᫼{\.<'MG #}[FNeɖW?_%4SO%S<9X웻ԽS^텆KfxOFL{Vq- m!A.`Fuy-̵wұl*z;Ȼ!gokjTOA%a̾tu.'AB8o?2 KK^\5'eˮn^);@cR;}7~Z|Z$5F9đK(ΊwCK['+;Ƈ ^]kϋWu7#SgD4ywײ9Rf fx@!I%о_̑ςi\ژj#H EUzf6R6) \zE)ԶV:F3Oxٷsn.=7\zQ5Ta8lܦ/Ɏ[s@(3^rnis+^)sn7ЧAJiddflI: 9z*kT0ɰcVy57䷌JȞ9H-eAg@5C}9/]6mLh;AEUkl7o Vqib\5wǢڂu</hLְV_ɺ6h$JΘ~Ѳ7ūU!A=;A}v %iܑ3uJwۦ7ǸP|~7+L#w{)Z(o᭪cKr7x.mk1b(f m C.c疱7&w6kp&z.ow|;TqsRSJڹvy{ O^Wb-esEdYt]EEҷ~Qty .(-EEҷv@]JIK4D[@].i/dE/蕼-dt[@@]EGxNsy w#@]B]E+tE.d[t]E+$o$=vO^?gbOiu):Sw{9\y;e9ó Q3ȅ@v|Ô93=_KC#复GMFÂf>9P >l&$dk ︍zXNiDE RH޲~ٸ\YM,-.X\ckn{̢ZRJU9K 7[{nw< 7[/7X̓\t5EnQ1 ?rfߕ{_ dJַU [^[P$ }n5S6ԓH#Ps97rzs-d8GXs>9~-5͞hXۺdO2TyBK+oUt{}>ZVF+"nCOA/`z<#WNjlNvZaX#ั6h90gjQC^wzI,A&M=W>j;nWF~Q;y%Ev@]E쀺Q4*o{nt{"H-<#NJwK[d[@uA@JK, Rv@rM+"Hl@!d Y@"ȲrE @sG0%d!+"\dY̡+'dBE Y h"6NlPRvE dYsG4Y+"B,"ilEdPJȲ (diY G$F4 9@!@r( Y; isI I4 ^{QArmeu +|!^ȇ`WxQ nG4lsow9\R׎?-egn݄u'-,Q$bii+oc+YðfR) J mnVW:ZfC#i|h\S+akY}\slN EӾ*IM}W촚SM&%H&5cz:6>8m#AqucE5^~I];f$߈7?nJ\kƶ:6%Db0_M̐Q-9HZt76ʉLQ@uO+!-.BEù(hdr4Ž,\x7#kz/DḋF#uF4o>U9eJI:o7TG<#t}̭2.Hrc=)Iwq7\vU8},TRLuJ4q_rMqY˕ߴSbtsM%6ڇt7+UW4[_.\Xc v'&F1kem %l.?1h&7Ӗ\I%oBx ul:E>0ww5ڎ%CU>L9$I5ӂf1QIQ'"{zK2Y],>8DZqndiG%\5I`|} Z9k±(d2YKN@lH6A<Q߶h&偌=-Z\~Ӓӡ)&c驆wA]AfܑORcdGu3㕼%pXLmӠؗDel&V]VE#k GzTCK+FHׇ,r:]G鵽UPP>r=/n2#c N>?bd,6l;Cԛ-vdƫ)$X!%6:m7ܬږaNtϰ{G?=6j0RB&s,4/^\쳷x3=Ahkk.ݻm7߆KS*&~br.x5z*,WxoҲ82e!~i@sMSdB,"d^Y mtC(4D@d4{ 44"=T LIߪ &4rG> r {~x )2$ ߪ\~t@Є  {~2@AIH#G$Tr@ЗhK?oKhosHGA {'d" {~) hG x#T#=T4{ 44"=T ߪ$|$ b"kqq_{.K˴V9N cp6;nVD,FRZߨXq7¦9]F1KbqU^"[ #e9yzxŵNYCzVTIO#nfֱ:b ^Xӯ[.\Zv,TT{iG4'-{t$x]YY8s chgP'vO0Lh_w6=_I"kPG<{\M rsu娖|nmu &7>1vȣcDmu]ےbl5 ;~!s2h/br1].%%HB#{\u XT4VY^ .-#~^yzL@+~r)KnN׶ic88f$!a\+ϞXㅙFeFt›/˺ l]s5pZg$¦ X1w(@Q9#PyPy9hogHP>HI49B2jsaB>w,'4Qr_`B0UT8j|W0ĭKo-LKE--uh/6 ԓuevGMlɾ|WY;cRP5rk@N{g>UvuEUK /kl1 ӎBK=T4聡@#P>e {&<GI{~䁡/dP~ߪ2TGT!ߪ o)#O@!ESDPR@ЏdOG=>GT{~h@@ihE1${~9B=TM.h|>AP5r\/ 7\oY՝7 8$rS&$xi<8Fc`vbK.vwra˖qgmTTΚmk <Ġbu6Cw69 GCx !z~ԛ3;ʋa~bU!ć߻sﺩكq}*ډOoz?ʬ5^t]dnӲP /oG}d{$Z,e]> )5(,EE u79QGPdƹ.'accoEϤHpGWJiK N)'\k1f8Sպ(cq:OL6gK^6;݋輩NU{?fjyr&Ng4`QY {dܵm[n_ ;񚏣U6&a 8{p$-X nX25V֐پVi#/s[%Q_USJ7b!s "]aaDH4xq9OO'p8] .떎@}~= '$s\򲊙|Ȩa.>G?..{61[XOCI/ӝ^6i{N!2:cIIyz-{͑t:M#n{ьu Q 74x[-8y ->i{SP+(ρP@+IڜNRR1cc@ 6muzᔒHvk ĹrOUW/+!isGA {'d"\!/o4@PPRADm9b.Gʪݳ\9u20ڇ im\.$I7]m_T#=UB ءءI4( irMhnrB!(AB  @ YBI4Ўh@ d9!Khi&_ -&h[t4!IEPQIW@uM.HB(@_b[b $@ ( ()\儐@,/c + {Ӈ-qӫŗkgpVUwp'K?R;jYOx$xyrI[ K-"~O9m{.tr͑m:ZEC8$’ yl|I\=d[q#ovu:$-g;pc|ėY V%4 {w[%"+dfߦD g:/)B3JjA{`i 7ص?uǃ/X&=Y;lW04]1l>݀͝nXks^8"kNaZL]B<χWh C`K{ Hpj6yu@A鑂r$~(mLv l>ĵ2T { 8y}.QXǾ(֋{vm-Ņܓ6MmO;rZEܹ˖SQ怄APr) _b4!(A4!#9#GTrB<PP( $ 4sB@%H(@r@B9#&i!JS(i!sHMsB4T!pM$"(:IIhh@@h(@MKA%Q u~Xnf2aip|k{u<Ԏ &G6<6[MJ&ԃH~ŝ{촌1Y_KNk"ホ6:A#ap#e-;#AXclaݯ_ㆯ{5il%vzy+oy21hh h5r*(1| dt`>Y0-?xd߷ԶFY%> /C]{&ZUc%-a݇W 59s@4N Y#L/U1SpGS'45<*N zhh;$11pxuЮgL=U%>#o9 p@c^>nYM]"q)2#n]txt&MDO꫎2OsauK~|,Iɡ$*\ЄPh@䂄$ :B9 i!y.2:4}AG4!sM.h@uBB ](B=PǪGh@{@sG!XB =Є=ЄO@uET#@BBT!XB>D$=P;U*əOmGnCwFo}Ϣ}YzK\Kk.7))]*jZJ_JFv<7o+umaڲtQ8I5 =-k(\@`M8laio[-/YleML&fh& uN]nnʏ1Suqs6Q$U55 lÁbQӹ L.4oX- I׵kw<-wVMVa(hY_+Mw`;+"°=PcZOzNh?Q c5bZ?6ืlWOf0'>HϜ.w/XDtqU ~m{59ISVxj/b1(k5n5G&V6HqL/dzgKh@!@{ǪB@{=SBǪ9qBB}.P,ztTЀB=PB(!{t{⟺Go4!}Py \BET#BL@r!ˊ\$XBB G)4 7ꀄ =B 9B>BTЀ\P,zt !Gc#4 =Є 9ET#B,zDBBx :Ǫ@{!t!wNǪ,zt"dB!\R4 9"Ǫߪ=ЄHp T!DЀBET!ϊGHzTr JG c`upȨq✸o9aNikKKjXĥAÒÍ&/7Ŝ9\Ce^G,ztTЀB=PB(ꋤ?fݐqZ i{<#{\.7ɏHءc7] xX qlNJ熶i6q[N 0UXlSm1,I~gX8C>#UbNTJds|/%x}~;'^(h=ϙ.}Vy+l['[3Te$N&~i_S3@'d(HG$ 9%>Is@]; Re! w@B&D BB#PA4trB9 .!~(@REQt#/Gi((BG4}Bd!(@]B#;HMGT}Ȧr).hLAU51&ea/(除vsa (6ߪW\G$|7>byǪp(Y'kbƋ 'eɫW+{)(ckhf%ֹjTtLh2;. 9&91ebrG5MPxZx-Yq -^LE꣠⠉ҙMLŹ< |O_U<:7*\$ym{Wǩ4W3(q%.Z؉a0j!OKI]J#` ޯoeÚA1ڡdai/ؾO8-xJ >K X{;qZTH5Q>f T]S(.}HM#%B揺B!Q Bx~ ):ꏺ!Py@.E4t II$#$|.H@]BPP)2;!}Kr ψN ^}%4 @M.i }7%T]|ӧ#78ܒORWB]]S)uLD#42Q+ {þGB!Q Bx~ ):ꏺ!Py@.E4t II$#$|.H@]BPP)2;!}K!t_t!}(@] A9!B]]S)uLD#4 ! > "_+lDw0q!t vFU,7HfG"7 u@!~V_'|lnkyM%]U-<@0 J̎Vvc1OT{ic$1*=Km@^.E'_啚ʀ Ga#4T]$\L"PyBS [b"d[tBLdBVNIsEE@#JdYPR!@CA`ADVE%d2V@BV@ "9%d[diY; ]Sd]S)[d @ LJȃtv@!JȦ (dSB,GD()G+qNȁ@"G"JY"ۢ ,,a(_< n>~0o /1,Z o8Sڷ[`,;쵊 n`.r_C ]ݤcu͕ͩ BKj`o:|o]r|QiSvpG4*`_]xݦ7Q~onKAI#*,sx\ypvq?}|2 )8gGO_cRjd;ZI#Oq%tA q(w!;Kݹi, &Zji2>wϚq#: O`j|-o?;~'>'S$+Χ8+G ;Z_|XG.[U6p'HG ZLOH'dX^_U.n AE%d2V@BV@ "9%d[diY; ]Sd]S)[d @ LJȃtv@!JȦ (dSB,GD()G+qNȁ@"G"JY"ۢe+ v@rK--!V@Ћ"R@ 4'mҷ ,G4Y+ 9ҶP@@+" J+'dRJS!JވdPIVAKK6~g8 g5Lg'ca8#YKF׷kNյQ 66WKοL^|O0Bi?rc\cƀ,u//DZZlZE)W3qyEhJZSJuH)AxYd@ A#L%m,tsEm 2B Y; 9%A+ hEdAHY) N][Y@#,i[tY(A Y h䕑m duO)uLn)G"ȃG,7E2Y+"iҶY#׿P!6"E~mEHY"xȡSbm6@@h(<.E0"捺!fH@rG4rK䍺 (AD 4l授.9t@s(FBl@tG$PD e.P#n\ۢG)#d"hFFFEۢGT )HOdT#6@FȦSۢѷD RLb3L#k#m-n=b]vjq\9͚ujhlH6.gs[OĢpY$M{]6-a&l]+#I]#y\.AQs+Cܱ>C4؆Gx&'0\GrkΏ0<(Hc't_<<kMM}K6+J[~;WejһTtJǞ3-սB FK)!hFЀ(AB/d B@uB6F.QB"isOn(P9]t@!!#nDPPB6Bx#=Pۢ 4h"KOnsFAI3nHG$ 9#9%rFF@ ۢAHp6@@sGDlD BЍ 9#kP6H h䍺#Fۢ2T(BDA.i#Od"a$}p "^F@8S  ƺpm$Gǹdo;np w|Tf[[4\n! :lOG{ :QD6@@h(<.E0"捺!fH@rG4rK䍺 (AD 4l授.9t@s(FBl@tG$PD e.P#n\ۢG)#d"hFFo!SM%LI]z-dAMh"z!Xxl@~%voF|y*x#=Pۢ 4 M.E1qBis@(Ar \ hHG & 8@M K| $&44 q(@ G$A>HrGTr L2qGT #>i(sDqG4$#B8&E()myyh30|& Rs3 Keȱc.ac,lkSřOVvJl+ kGq|_wW\鍘{5MUMڨ >׵֝WU3{k#k͘{1)HrGTr L2qGT #>i(1I~$20#﩮-67$B8"h8hD"QN"4Ԙ:_@wE(@_!4EЂ4 %}hH9!4& h (  B EIt]Ѐ%ABhG$ЎiWEAMt[ (/!_+-(At_#ht!4!4]PG8";t[t /4qBEP_wE(+"(leoa6~ H$XidlN}U7lOuq@7䂋Lm  47sMJ)Mr( (@ /SH /拡& M$tsB] h !/ht_!4ߊwEdIcƦہςscuAYfdԶ&h!h[r+}EEB.sM. /&hBh)'tnaS@怄 EP]; /H hA@]}G4$_B4]Qt it!Ё{i.h@tM4_d#hG4+a S-]MM_B /4 hJ. Ӻ-uM%ABtlPBi .t#hJ4rBhMt EP@)EЄB9J.4}H @&NQt_!4BW4[tQ4!还G4+BhBh( :/t&wN@_/4=QtTTE+#N/苠VGwE/tt]ߊw+ {@>.^N){&J.{'tBE't]t]@{tR=Ӻ.>{J.V@vN=}/tϪ.VGwE+&{t_A +GwE hN迢){;~.GL]EtB#t[KNQD 1ꋠB>>VG/MVU镅O#d32WKp̛!T[grѺ`جijYbdc/vzH{wGCnαqkO:) ᎟sI @=[K6euu ]<@hEt E#t[dv!{*`.w؂BǺ:)_x_$Mo`ݝmEѺb8=&Eǭ̪&7=.P =N){\6>j4΂`7[~by0j|L qPrFisbgI8l8S fSM-$^kܨi#Mߍ~m<샱@*6=}/tϪ.VGwE+&s3 Rkg*Jy.{@{;o4{t_t ?t]D#t{J.^T]@A;t NQD 1ꋠB>>VG.K?t_@t^ˊ-WO.{}Qt]tRHEtBGwEH2Qt ;"-;t{/ttK2QtBwHQt{}Qt]=Ӻ/Y44K;N_t=Ӻ.VGwEK@EtB11\ϙq\YL>890@؝5cb@L\,9>ҷ5C$b`xI\؝7̩lÉoFȲ9:qGK%E؀Kÿ=vÙ]`LYCk]-sewױO{=ªfw3 SSG`bm?ԩ1oLgႳe ;MeyڜmZvhَ q|A3{NO ;+U^zn/+Ѵ7e5d5;bi \^.q<|bvs>&#ccKahx&Bf 6uuP=n`9 e3e E݆hY-eֳn}yQ|By .1W:!HI4$sK9|A-4%eP@$4r[ hI4!!->hIBEH9%9 hI27"АFdCG4A⁡$ |В7 hIMuHG$ xhI0H#,8^=P]4R;I-p%quYMDfaG7}Lh3q Z(tvGZBv㹹`K7CZ=$ s_sKO-Rq)jn,X73AY4՘t4tRN4:I$yִ z/ϓ'vK{Idž1#tYD#RmF714 :ɛl$68[w9f-iqE^ yU eE[rO+d~IO>L9sUu2t+'Y8xo{CKA/'`g9Czzi*mKZ]Fa~vKߓ__*db\U@4S fi߼7woq6nE2/c[6P wk&\:i8uo.:u${#eLce<2Kx~'?k'wvi3 ENlĦdF `aG#7.ŀ_d/LO6#Lx1z] xiicI@ m /jǴ\Ôsx-S_F$Or 7WoMb\2&Fo>XI-ߢw6蕷B: vBB愐$P$[( #? KM oD4sKt(B #?hKtGT$r@АLGi(@.쁠$@$Py9F覄&RF$$9>HG 2(Kt eG9 -4$4% Rf WfLV ©&q*42K3hܓ-:=ٍ+k3v@x%  XI@ [68 '|KE2+sW 57[Gj~E ٧7cb9"ཬd 9flQ Ib΁9nAkf7Y$TXUv%8zݸs;3>/ WonHleWK'pdinluO:SvK~$*]lfpUØ+'Bi&{sB̙?XF0zZ0 %vC1P═RQWW;PB5$ev#M:_'+;.%MaSIGR)Ƈ#\4${S3k3RIJ̵1XY4X@+E}+G᝺j̼H1,2,d9ŮekpT)m-_b8*d7w|Q ppVsOs6*xn``Xfbf.ܕov0F״߼xv88q]'G;6\2]uC~E #`I VOo]nJxm!ح%-C+nlZmzLnk{8[n[>=ISGX>jf姝Hi-sH+gl.-/ &IjV6pYюl?7ORoT鮪m8ɼ|4voi~hXbywFvޫv& Qf:jX1]R[-)1NkfS{-8v2')qZjc[$cױˊ~PGEl}`5sG}| v?M=H10:-tep ~i mq«G aR?7ELe>dIE)FFA#Έ$T0{?a}t}ާX炷 \NWSq|EJN+)Q NWBA 픆az 6biy;PelqMO` o_\XIcK!bnΦ>c|Mo48T8V v~yɹR\vu2y[L誥ZQ=ְ\ zh+M]S0H挵>m6!~25huzG7Ÿeg3atq H%ocOV7}Π˚u:݂gL a}Gv,|I+Ź_TؽG5^e=YQ폖  _:5`ܯ{~ .E,,|m_aPbPO{ VըZA|NI=|[  k6wwt׮nv ݃QF:(̸l BbK[~`Kò{P|O,\,84Lj +?9Ӥ[VwAHɢ/uDq^}"?z0==e\ٿW|`n`^9+|HLBYAY+Su~C#9jɸ%CχJiZ6#Эf7ҿDl-?b1f߅ʱl%&=Y]ȡiiiI@z ,&ê}M7cvTsJȩi_PLlqpH'[a7Tc8aT˅H$eOͅJ 9iwXbXpXd,l {y+ζIvձc#ÞƜMR3S=,\ܴblW-qm7E~^UUc6au,i,onxmM+%U#)ZZ {]u'/6\dpۏ%(>:^pwtx̡xvEey46= cNuˊ>:k=*^G[M/0W,v5:ex0{P{ۇuVxߴ]{8~a5.9o3IG̺Gl[ݽqn줤*jL&H@jٴU"ɵx!%;{qX'eL .0F$n+0I#C#~KAE #5Sk,cv5qtd9s\9ؤ쁣[@В2ltĜ](*#JWA}N,KO/.65Ѻ5r< rnԦd凇xKC FkɸEſff,";)b1Ѹ]m:4GT$r@АLGi(@.쁠!Py@KL .h@rB9!.h$]B%(( 8H |聡@"ܡ.e4B @I9!I4uOuL2t#/\e(DKt(@B : Gw⎈U R:S#2lw&u<To=lUv xjlO4kO%9.qh/{{nI$̛w#]>]II>#S5,OdQǠԯM@`m-eUsDf|md'CG , 3STQ􎕍d@{EjXFH#Hn@RrQ> BNKL²%5q0^ L\IoD9m:JC'ߒَbM>&T:'6[{:2[zHu]CכqQ6% 3%ETiyn?dS(ñMW6c8{{Z$KO77ONQS19E%Sȣ V{nfZy7؅:FXݸ!ik:qe~m`lҖ2GW7SOe6=I9B9X^ݖ#{{hq1QMF3k&ő@'U_7iWn!4#rX'4_E*s%S/cy`<ʔ;>9a9wŃYoPZӷq R#L:4-{A5e*J|=ˡ` \w o1o j:gQt5 ;J5f<\dW`ι .쨖EFZi.;P#xby#L&?w52^쨝vJX" piwV=[#jnٙ6aq5tuu*ߡ"6vǪ+Ѯ"͇7*_VSEvY:| SrŎ,Mc56%q踾p`5n N6K ;I-vY$v5Bu ;ar,Y,z54h ߍcVXk à}U]TbcKz v[n~ 2iBwRQS9绌Fiu oG.C2fHCY5+d A-6_e./qs.&rOUH^>hit@Є }Ўh P2 $H$Qt@RED.iHE2" ?B !Q" 聡*or6?e \*ZYD/Vexb{V/+ퟵ-ؖ\ȸ+a5Rv.h,.|%f[fLJf:*"4cx(N瀿9«/y|Q~Uv9-1rLB*UA>GIqn8 ?Ï#,P9pژjd5_<k;y]2ჶ:Y2vQD\U8[0~{_ms7wrEh?))I^c,؞Yyz^SϹzT򌩆w#kq~kƫUő}ЬCc S,1"0HFiخOQZDG] <9WV6 ^dOK-yto$]z.~#0zvܗK_t84D3?m9_ݗXF}SZVeU.3×jS5flfW` KWy3gIvZ˘`,2 l.J4r,i65 >U37(pjnͳ T22RAIsx _%w96M:ASB/θoSr%_gLlu+N׾{C''~-aϒway $`cc h[r˗Wj?W, :gblM̼"ѯsH]§l]SbyX٤V6Hcc^ q>lւmr_d](8 ٶY1C{0-7ii#b !SUD$F-s]pz.yTisݾd)A$ o$x}$p0 vӴqVHhkŮ$;VvֆnEײj8n"];CY+,Hہ#tXh$mTs<2w"6b~ۂx+aU.tuھb:2['PcP#♣iQZ<,/6v&k{+`eGfF)Ӄ@Z);///0,{e!50X49VI_*x.dȲSz<6rd쾊lY wC&)2T9ăwlfcƘ.t:^θ=v3p͟ =ej:KOEN2jaI7Ú#\.E]C6PzH״- O ì֗Wal!vvV`yE+{;(mͮt1>;*ڮl3gzJ,9W/dVśpʷSF.HepcSgtRX`[mEtiw~Ϊt4xX$X>,n ~@ZkY3#* [mu-mast&ZXEwXls'0+wp%eY`vġYq.rJi8}8.!6po5Ko0b]*$v# FEZ,ST!$j!kXE,f=.k)_/xtfgCx힞JLo(WUHSV~ ?7=*YTD]<4k2^qa1@P>&lWR]'iLw }c-/;rMvp(6Ͳ~^L&sCe [$/{AѦR iw.Y~[XFp 6LV86o鶯 )&#Pb_YN,n,\/kvAپ!bX.O}mlxl"z,WY/~l_./ë1r{G76l*zw8ow q\'GWb]fꬱ,]>TmpH#A<&*}w]O;SeÕ10ESK=5KGE m;p湽~aR>: 7Q- ]or;,S1b$6tclpXW㺸ax Р*<,nIPB#;HGD.7@G4 AGT =S4I{!hK{#7G$u@nЁt@@&@nD@!4 H478 7AH OAt$\.MBV[t_.\Kdn]n4{3.4P %q ^xhdE{XĮi tnlq /\!`Spt?+m^hEL2iMKvA `M<"91jS~aFpDMj:%d@ݑBH)M3lڦJ&n-nIVu _~k+#[.L:ۂ5[ 0(}d9=o YiI|vDaD-ē}@ [( 6\?X5Q*J%[;YF7H\qkn`uUS8aYEQL*j$.n;䩕Sם\~3E6\8mlqw:fx#PA_E0lQ`Wm=QVe`ONKvU^,1^ɭ%VϘ>32;&Yİl>2(o˱ŪC,h.,[s35v>2!ݰ[rXWint'hTM+±H"chwI 7^ӥ%\lK/%MgFD8 ܯE)q.Z#YsKDm@CȤ{e&V5͵qdɥmEׇ,K\CGOc#kh7&rNΚbc Ѱ.:jy-`Z8XsO=EE#kBڋR.J6S's\mu[L}@4]k,bLkZj)4Hlv$\7^qU`uϥ-7OG/t؃|^[{<LFņcm0Ūj"gw Ɩ6 Mߪ{j{&^>hM7M.h %x#t䀀Q 7Bhh)2T(FMHO\=ЂR&d{u__NҾ&YU`԰HlGmMV^-k|8#䁹܉cq.!vO tRx6-95U5fn7OͻU7 4GI$Ыw$Ъmzj.of>=i</cxb}6`Jlm-o-ӗKXK K4n ϒ Hcf#Ns:JIݝi\l\uWy%ǖ9`ܖos|[vN[WX.6tgwzJʇ޹mZ k-+wL–cI F7Ycu"1;][F7 _ ћ@CZlUCg m~`Q4܇CekҽXMIˣطA;^+|;0c{icP 43ĖsVߣ_lK$H[qqgl{. ƨ1UE[ ef\"T0lr8<{+ӹӿ@%ٷ >":nW9積F,ftAX8`$vKd_M k˾S8KU3X?Uc٣|pQCe;|&B@ϒskMiaLbqvIhlժ~6侤Oj9;K` XͪcsZ{moPWLnQ_ ;D=ln)q F[7ݬйiN&ۚ*.,R5x98pp9 i=dr7f`3Y)IMohX>))uNFWy~V *챜j1N q 6s]R6WP܃i{;,S1s(I{r3#p7&6' };pcԵYd],%uog9{!e Hś5 R[GyFicas`MVՔ&YMYq&ػWF,/l*glL8qJZnÕ9e'$?\As>e(fb3? T`pF V5ṧбq땢9)Y9rk cZnr߶n;A{S=c?v`2'OaF8^8n|{kgڳGhp &YSBōtorCE[׾㟅þ3IN̛S9P+= o"Ob߆K;Dt5ͬF` d.{ث&9E)eo4{Rֶ+TR5jC[޹{O6 Mm;y_pn3ؙC/W[#9_*hmn {~m֩ѣHn=ѐu8ӣ,ܓ̶ߪrZ E5}왓Hgyk9sv&-%3z++_2}6zF7hiSnVF~V%l5=ٷ\Yђp8]wq !{#ck#mDI,!y,z\_ ) iu]h./" o lΚnM$vqST%~(Vp(h i zN/)ai6x@[JW޵!p۪|Ll2 }3% =@p+5QmG2,Mou4o|yW/SbQ`dX, WFɘZvmxkw{v đGo8 qm4Sn㤐M\`xZKMSrZ}l.cwtiK#"eօ>\񛍈 tT1Vww|ok&+Ӻ؋8쩌jvGo3Lcp<Ζ88C nSLrޅV4j6@$46K5a<{+n9Utf7~Lp\@{ME=8XLwMk,cv$GdUA<+hc@&m&`@J PZž"MN)+]HoȪoaa6>@쨳k]]F,ۍ\l \G6ih[./cw^7F@XuK\Mm~ iPoׁWIlIM$ mmpݾJԏ=8*5ښZ m*}U%۟N oyO@njh6{PC#c;>G "ivzMI\}Mq[ƽ|]۝|8G$9\)k@T6JB:.B@ Wf$ _ M؋U زu w{.ҵa~ MoږGbM,#vJnnAXeD.=)2 =CYH*iwY +plfycETѳHٶTUa{#*FƃRw6&8n\Ł^Z}F5N"W FdDXpS<$9;:gǴH<7 VSLV0.M*CA6flm$1;&᪍[a}8v<j]m~U%ȑCeg[yX7KSA@w,N%%;pۢeK*s\< +$p8Qk]:ݻyY7ߞ}MmȽlKypM:oޱ^՘|- ky{LJ :HNxnZG"F܃{6Xt!] ~8ʱ#=AL6.yC9z]E[}\@U׽fs],#Z7)X6kt]{gq(d k@ AT_c6kJF1 ajOmʐP)p;c|7! 5y-hsDkz o.lGxώpH74_A`xeob.:dqTRѤb2S> kتj7ߟ٥2F926NW"ɺ'H݃Cn<ڪ#59tқ4ðdOlm.EkwU8WVޓZb<6⯼ Ny muXx|W 4 $X6~w*{:ۊȝW ۭjm 'IvBETsyjnkm=}R,|B6>k% HL?WQL# TӨ7 [An4`Yc[˱bB?h"=J]{a䵴윁x#[x֒>La]7 ,[s`8 Ow-7mHHkE°CC<)II\F=IMCЦH:WVṿTIZ EobȞ#쮊v^-nI 0;pX27Jȷe}g$zPl EVb18znvVjĎ0`AEg*?CQ8i1JYVPIٶM`|q0 \G6 +r%nsUd7)hpL4o{[sOC{y{+tuMv'jcAͽ}vqz_vk)'m=Cp\Ò ^rG{<(0Hũ$yÀ-pł"ӨZ\2+% "0IpWS">q<^d']>VE4p>˥pcc4Pn,׊gL+k0Q2ح~u4xKLa'WȤp4k@꭬c&W126SMz*{#>w8QCy:Yu5}TqTH,GsBYt3e|PR1plpE2Gy5t6{{ʜ4We:mNF%w^$ R`s_fhh:[KŧpZV.mtbxH.2mqDv}-^ 3箪b1M2F}Cho_I%v߂N-rZ'.__8;>5&xsaWx[ zKWR&cq6ƥl QmR=8c<~~*~0|DZΩy_#J#MvS$cf5ޭc>zY%cn{UG.Wf)tn5[-ah$8m%MCf]ȑŐ$Z̪ l[skąXoee'\s\4 lj+/6q欶 z ZI fCupZ~br&L%{Îf$;ʭHݏ"V$tk]92\ثݱW֛T8yҐ^G۩EMNlM@QX19@v+Tr>rv7{5 EsmqWi1\k^fA,6?b7gEbHK_H7d :VHO̵}{^{oq]657{s$4&qm/{쩨PpiPuY[]qZ9X-:U ˚ JckMw;C$k3VI7.'F ƝEiE^U81<ǨVv@w7dKTRq?S \)c.>:7J"`,op SD?U7n6!<ʹZ I07T5kZH@Oj뫊H&FmsDŽjd83U-F r9ŎexsnƋrCxVU1xtdsQ|!2@we)Pd+=dO'nV,SEP'$}KY#\XRdk` c8W/}6{Svjq8{ZCF#n* l=+걦w6P 74g_x AI&[n:la#ܲ"ݲ7nm([܉#kJ- IoK^peqO0i'p JMKT$;%Mtg-NV?s#m8?+HMEmͿ7t4;~X5 K`%J 4~y~abi]m8ߢqÿ#.{2ĪEɠc64]mˬ-~jfʇ1HϨb4@>hk.\f J&llzXos=C3gyc_\a00|W߸53y2a\}C˚7xl>Ld"Sfdni1R2vIjrϱ/y{Mk֤s<7m{d?+ܛC]1,ŜcTU2䍋,ۏn_/O^Ws88/ؗO乩adNoqCָxը[m.v\0~ }b͂\ӃqI(G k]oR}RrD|F_[7NdAGOu%W+YE/iY *y??&->H\/oX8~e;Fı I-fa+{On{$+d<zf5ϥj@+ub7O3)|9${!fcݏe1k߼- c1h0i;=0Weͦk[k-5n,ѹm+6ym}QyoҾTvY91x]v]X>sKu+YK,C3MCOlG-[ @|ײ+nZ݄,^K~rbbW`=,BT|̱7jhKitߨg~\n-ar~\p&$$h_@|wy..GSo KiCbӥ獭i i;Um;Xe,C_=+xUɰSBw kނC%a;8VVDd 惋g鱷uuSql]AnpXl2A>z@L9&kvA X͂IOz~RP=wiY5\E\^ +Mlo}s1W2SwFz$vp\r!Ǵ6,l,:pUH[k곾ڌAHEaG28`:]0X6's]ژvwU{rKm5Dq]~2NR0K1 kF䁖6Hhh&^ɶ׾WQt6R_r8C;'ETY;Tw,/Tw`X} x$)n|$-I gd8{+"  A m$n BZrqӧS]cxYOPu]\3aU4YUX;FH!٥PEV{؏eQI6(kcqȤoߕzt\ؒU!w8O$@E;|W<V?EI$ۖ@4ȋh D6mA8BB8庴^Hf쯊x:W`Zie V.WFy'pk)KQAp$Tw< qob ۚ/}`6 Ǔx'XxnnAѵײFG2wA "Ƌ٠ 7X[i;5]26uOvr@i<]؟~ D6:w_k_BAуi ?sI+8yGz[&<h\?v`sU-swioOMō)]VKGР/`[XapJ ݎWMǛM {Z__vO;EpԺ۫bqf}P5k*%sA<$+;8~o1lRHwU}<񣉷Nx)7naZ{#" F$piF8Xf>`֩|qi$7QUߕcCݨk Rȃd 7Z2Fo2܀-Ŏf:W?Cǧ4OupEf&גCY09\$ylqe^ Pr/ǁ- 4n{o⫏Om$R[]$ctM*.#m7!'9z,tM&Ǧ*ZE梱\b64\eq1߼oPb$kƐm{cX^Hkw&$-"".9e=1ԿF+q|cfEw_9f]S`g{-ϏeL^l"(ߛm΍Z氃ZU5E$s(&##9/'c7 49Ĩ#hJ C2 )ELbpcC,mc憀J^o N+R ۈt>^aS]- ܵ~7&& 9=$kU?=%G4 {6ʶ]2t.O~2aм7n[{0P:,CܩVa4-~Jͯ( ?LChqb9=,Xm׀ZːEX;pwĎm &ВRH< {#0GrV|q:]r1s̋VUqەI%m5z_qđ"2mm9ÐoI$:X3ivI Md-⑺YxcoQDm{M-EHvފퟶ9 X{y"F|Zld.,Z-/-)Y3a\N׋nwcsIfs$,yakdis/gF/oUz8׹ tOvָC8qkw~WqW%.\(D5 .nۇ4eO<I] Z <> [~{*Ku]},,j΍: J荋 &!^ة/}w}N<RwlheunJs=HU $XiY]v mhood6&Ҙ{nMik!H֑ U%Ñ ^ֻW;;pEf$}C(kl,L9便<]Y2 t`Sx*SK R ^Z:P׼7aqu@{CD +EL$$㕅[kB:e;v< W[i../KBSbs-غÝ}5u;,tkvV]%pobUbc2⮅nԝNw+y.Cv<Ill7aW&#c.zZFp5+޼Xq?S=k9~Pqӹn gA-"[ҺzƂY3#ߊ.% MYMSb95u\qMYH~ mmOhFEC۬k4x MmeR)M%D+@kX>rl@ F(5Jղ<浮+BNX/82y26;m_ni\M! oi5fw8NV_p48nY1;P٥c 9S`pݐ=c'STw'5bXdgtN;WcC?үp w/aqo y [dn̸WcGa%O0,Ʒ@ )׊MoEfVS ˼p6Y@-"ذ#s-HN@1|,o%Y[ɐ R"m?rղU4:qe = LcaTa0 9u 4duP o3LMs0GQ꬇q/h#8*hx6*,=,|c&M/#sus@;X_0n]ts@6(mKC-T#6!*\ek4ܚ~jh%'{MXsIߋFZnn/+[2r=B_}R(Ho.\=}6U][˛gjIFIyjڮmz}wB M*s&n< 6Vc]{X+ pzrUvjh'`7/R jv]{=2C÷ vUhmc:sEPX9 yʤ=ykbvd ؏0n~EP2ī SqeȠ:䋰qXEkȷR%n'RX7 > ?YR3p{@7MD$l6Vi; U + p~;Y:\88X!/Xݖ˵cMH>vChup-#ǧUVFOvglvn3ko06;vT H"'z A>jogz[pAe+DMh._ Pbbm.4+S55xݷ!ڀ޶M }T%  dotaPa!2I ̵w=R5.=Sk]ʻWlP@6@wXMoD_di?S$y-LOpVު.n 1Cpa7-S8ۉ)JLc%`=A6w9X$ƐnUød}8:}%226=Pq)3y MD?#@$\b뤏WP [ O~ʢy} *m}ȿ;Zm-YPUUOlPw{*d:@%mUm,n,@}Bp;[}7 d#j{x\v\{F>ʻq`OI@/h0qNͺ,..oJGo`5[L8,O}1%@!R0vxr8yEfS<Ccq3=V=lRyy -$*cmAޡS}#Eɷߨ6U m<6;'4M8zߒmeF)ʩ&h)Ď$Q;Zdk*,'f@rW܍@GKR1]PǀDO|,\;V{zc|cw;v',gϑ}É`!e.i 'Vx %KdelH;,L"fyL|XrxlDNgp4$E!U͵0R[fxᣋ`tqğT.=}27^-*)Q߽tMo5RispqkƲGcb|gqk۴ɚgluUeplQ #pW!ps HC}h+[3aCZé*=p.{ˑW_Q6V{,i*ۋkKjY/@6b2AmtSN;6eEm|4%67jQ75ص~ut5?ǥĩ_\AjXm%;;FꊙYO LQF #'ĨkVskU;"MMzwI1DYpFH."Yߵ({fݎ J9]H`{%y ?qRA}A$y1Ny+= 0B@@>lMHpK1r{.0nXd^{=1i5VSg9.ٹ}2/$qS*cph?2AvqC[ }$y&GՙH-{9U 6G[,= IKpU][UIvZOB:0eI bj3 +ͨdH9 [gAqȽ]lh'"[Vì-*_Q~>MU.h܏eB }նSGm:um&l W5?JD,[Tƍ>ɘn9ߪFG04yq7A@*m!&K:um`{slW?Irlc 2kC]WGߺvhf ]ڞ3jYLPA72Hk5߭KH>+._VX=HWX { !gٍٖT:} yBה3> mZ?;+1ns omWm;ou-mЬ>$g%h>a&k}_~+ Ԇ\OA`vw[4XmEH vM\DMLspYVc"9*#rj1d7`0tS=я7MRmpZXόHᘏCѶ!6oYw4M&]@zwn%u:Uw\ujM7nX <YAw T V1yZOR0CgZw{}%FΘ5RE]?XC"F[er\E #isGSk:!a7>U&qb|@n5>Y7zRw;H#g~ULe$W< <~|1L{N̩s7Z}ZlyRe$h$xwC2M;.$쥤 l.V4p7<S-q!Kcͤ_J,j¡,"p+[&NSy eLQ7p͹[+Z9r 䍯s͡7UOW}4Iō%Ta-qi|=շ@t#y"$reԽ$ns,I"K阴UCQ;G@ ] >>[eh4u.?Օ yir@읦s9jV)7:J7Hqxq;Z}B]j!6x⭲Suz!ܭ 9@Ss'>=KzulV]K,nqY|mH1oILG::ed?po!A"AN:ng+uC_h% * :GWlY#U4ߍǔkƱ|_ie 0DU@I\8d߅]-i6VM {8;4&x c4P.'X4_oYfٲR5mYk ONL.z8;3t4 >{{ coaR:In5?g||#*͸15L Gp?[ep$\F@32. i۪6氄Q9_+m`b#@-.|؁yȬ)[ZmJakO@,viM~s[mG6}Ɔws]kF&&TcRZ>cl#|+O;|̍?k%bU>&S8o4ToH[exS?o-]źdnFSxsz͕6"ypݓēx+㈿w=W;>MW"@{nK}ӁaHW.]!YAO|}UgaIWF"5q`|CNJnMU丂oxQW \ީWZ[]~ uUmR(#P SmWKR'O 4My?‡ M=Iżؤ.tW{H[ȪnZl@ xH9skY0\B."4}#k2m  S eodқ[CZTn& YbÒ-mH@tȣUSܸo?d^ ̷Tfm=Mw qz&Rtmq^DsNH,U00hd;7ȤY~4MCX{K <ߢb6^Ԫ"Um}T8b܂.GEϨ`;/k~n [@ܐvhMqJbM|ErD IܟeQ"ۂc w;"L Gm*Kw LuZf)P0>׺_CLt+ sbZ|RNtNKi >E${&9Og/,l̀8=kꨢ'PeEx4Ghxٖt؜]ԸO@?Dxr̖GIfqQFnk:KAD,kf^WKG6E+ lswrls٥@ܺ=-׍gqrzS%c+T1厒mՖ:)cjc%_כbǐ` }26 x-Sm!ۛZ+b U4ZYEu?mnL k|X}M,dx~KNNVTW;vm(F 0 GOzz~m5pmޣ)AB)藍lnk7Hde> jOE_~OB͇N*&)#;SVoL> Y9~L5i$![ȩl=]eFf9Tp42t))5h-&0=^U1Q?XlAX?].G$.oOMI=ގ+Pλٯ]tNuVK16US> n_mUe)3J恳*z~2HXB鍿E ?pwJheI,Z}ʣ.#NW9?RD4=mun*m|}$ 5r7@p_p #x,Z<.mo@7=I&·FLʶnB vRG#o;ߢ8g;~*_`OX G }+b/1QCIZkupsYUV xdS.﨏d0UP D--muPp:OT4Nƫ zl~0h--tU7agHIUEz+Us6JAHM/uN]puEqhܴ `vPKo}S}'0}GAꮓj#UZNSJFmA;\Zɂwmz c F7`׏kvx~a鹿 9ePem,,c9I{zuKgk]cS%q2}kmD|>aR%stށ5tH#.u3oʂ%!b?!'JlPͅV @sT""( U,y9oMTsi۪K4y0fޝJoUUa ^$*''zkzIiq5#Sob;mF P|qOSy ۚo 7uǢbM])ISn=GHGc}N>Wm$SI?dm#qbNx\:T`a܀}v !W~ޗUCxD\nB!91w&bpR 4t> i"zUw;<d~!;\ݑt6JF mUB6${ҩuCrG"o1t`Wiw!\lF#ȏpvm#VpUdRz+OTa{t!5pݎje~ s}Gt7\\LJTn ˇ/䖢x~"Dž}bd tM*_@%# 7'##5nwDVq +%?eUp%U&Cѿ$'xM"Dt0đ {uAN zWPpwR ?7ͺ*u0Gd;\N ?S抵Ϻaǣ,NW2>ʃeQV9y<~i<GG$"#P|aGzwcwpTF3;IӼR7鲤0K,#F;j#ʻ4{y\+hgM b*g* \3~_ޗm>Z ΚA,MJZ%htWxXGGYAzBrG_N/Џ䣱,2gS=dNiR?EOx?#\%2 JQ\oID)ʜMCTTRDx 4sr=IHH>&Vnj,&PrjXw3s]~mPȠQzOj,YZ1\H5@eNLQHaXiyÉLyC;Oғ =_/[gЫ3Ow~4qЏ8Ǡ @d4,9T>(h*v;KES hmhSDh?m_ݩ }zd&@ ;#I?l,ivށ=;O4z|;O잒?ߧQu:w;O얃ewSẸ$n?zwi$oVdi?ߧMzo%w~ 7~6H@?4ɳ@PO4#OXd'G?lw;'sGȚ#OE(*%w~Owtv=ddh?ߧCFZw;O솅>-''iPATnڤTwvGAQy* gw)k*t oا޷Qw;d;O▓{#?2A@k(%w~w;z#Zdh?ߧCJ"h?ߧKA*ERU:?FU{].1?zw-V,-;O솏W5[-;O0Peh}s{'w~~Rje^di?ߧU;ZIdkaewI?4!Q 33[ŧu^#I?[~GMc0^ߧOA?tj.w"=;AaҍN-Rfx?CߝߧFd٥#=Bk Uh?ߧOA?;GDZww~CUC# q{+ww~^K=Ĥ+byv www~:5k=gN?*v#\;O'ɵs[#YUGɳQNwy;O'"M>\7Uw~?O쨴!T$6pW4#A?lQޮ sFd&@yA=zOwg~CQh-Ī>S{*d+bUi?ߧFd٨B;uFJe?ߧMPbiJ*dh'diGvGz]UÃo4cPBSݟ#AߧQO#H斃dh?âE#;O4t[4OwNh--rgpredict/pixmaps/maps/nasa-bmng-07_1024.jpg000066400000000000000000002707301427377236300205660ustar00rootroot00000000000000JFIFHHC     C   " K  !1A"Qaq2 #BRb$3rCS%st43!1AQ"a2q#R3B ?nPi*Npߥ=Қs4MoOzT ҧ&M.hN "iɠ4)EDzҚ&(hpzRNM"hލQ4MMJhbh@-މ4#D@ZSNw84 JTҚR 6#y0^J<[!IB&y,|;/0`K^'#QV#g=nDNsշe_l#r-ݳHSlbVsIrk$@HS1av*{'5|ۂ<svR];jI ܒF/'}3UvŔyY0TC(ch+Gv@]\LMd x ݻ\faxF2E+QĮힺNٶܨD$Õ?D/i9ۼ\eܗrYIH}A']e׻z1KWu%v Sdn ؂ZѪX:ȹݧ`MhRksp8W94n6'j<9a3XmG &lf;2m#8[vfՔ`J`6FZ.\$L  wXLٲmj֚-%&Ĵ'Y'5?o;?aXcyJ=HGMiMD1@v'~7BZ<=z½1۰=`Ղ,,BS(A7'x&x.5;8晴R]R't6;^t_o{cs#[g%v̏:SDt)殥}$C?kjr:n/nZ@P(J}}F]+dWKi_ƌad'48ÚzvDz ێ-o]JQ7L'.a .wŋd-(I2U)R| mofĻ(Y Sd)Kqbj{^Hψlmm!ņ[wܸ֤: H*J[D7]`0ABIH d#~;9-vS~V˸~^T%PTOxVVJ(Dm6o^.av@Q"Dpci6ڏm'1\#0d\G Į1[{6 , *RJ2S֜3f?˸ _p0JԹJ:}%N.$(hY;;ϝ\UFv76Jy:ҡAܗȤ|X|v}]۞wns^l3m 1vLIuDz*9yE[H*%m )O6<;UDڛ/ŨDM[r)δzkOvLzR,"7;A";bvMonz-ɍKY)d7]S0Gk%-7faUY8 -pH% My ^ƭCӂи`&kix PBTCgbq^FiJzk~^#0UJRS} <L IXVce 2vvمCY V#L``#A g3c؅گVp+M>lx B W;X*d+i;M3:^[[RNBJiA^]lVڴZJU ;o5E$wߴ0&|Ȳt0ahΦΧ#r,j1HWThP$l ɔ ™e7P1tBw$?t0\ysŜV#hNਖY@"w֍(ܳ=q<)a ơgک76}.4-=JQZ<07ȴctn×TP LHWNXRǭ e۠ H S)}R'q܅2ٲw,Edַ8h -G{H1.?'$)) $@<֑ܝ-2Mdi.qqG.hn dmZݹJmp0! 'JB0&`nM/nɏ"$ŊJHPy$IS`7QZO UشS I@=UҲ[yx6-&8) (znH$Pd0%Iq %.̀~ LL֜Ue';~p_[gku%E+DW|n+~9_ ̷-ə0ܺž> 8{`@޽.Y!g,Fr6^6 sj֐5),i\N(PMDuO(_Okx/i7e Ǭ[w*mqF(l+ʿi߰~u*^Պ݋;k,!wn!Ŕ#>Ib s Gz{n6|CW*[E8⊐HR4E#9(N=E9>TE#LJ 44MnS8#J` AށJ"}((N7wTVy[Z2lUZY*]g wJA,=gwF ˋ eJM U6aT>SdF0 ີks*xH1ϧέڰkqZn]L q:n)cwɊq]^a˳*hsI"EId6jT 柕#3Ƞ8tJ=iPT{#3~bc ē4V~-vξ [H&TRtaWkLq&`6N>-pGt%J#r@Deѝq{Kιw|!sr/RZu& Y$Dr`ul4勭\%{[j/% (RNMmS>M=mʆ|>!b7lTqlŠvto\OS :Ѯ.q~ʊûho; Vp|+fiRuy_;/e)Nj78u6jIRvջE%iZh!)t#0w}r!v}zUwbWwW$ul;r;%!`Le/}lܽ϶W6 2ooƛaĀAtw뒲);ɕ75" }奫gﰜj-Q1% [p-[6T `vVfϘdRYÜa`dJT(D5ٳ۳,ƬW7hi-[C@  $^&XaX~I]Uݾ!vf@!Jr쒙)@˕~`e{,b>rk8]]i Lwqi:"U~f7+YZ°\.ջg.Sl)P ;Dtiݭp<{#cf.Qwey PaĥWixeͶZ؞^nH޵KuhH1Q&$LMn?i^@a .1KըYBYZB2l vao(v]؜FhL-|<t/0R#q.;Mts_ۃbvdE“P|%)Ka@;Q{9Sd`ۜ)0*CzVJ܍%aD ԨI#z_m'koٻ+7p,il|E3\ N- QB+Hq:$'mVS9ˎۥWp[l └9GX3޷,y9T6os[$[,NvIF|ye'Ywnq/BB℧Ĩ!-j0[nfHK<fKf; i'Iy(JBvieIRBOvzc%җ{yX*f/a(O 0id^{iLVdci)/]X4_l6 ElY v<8.1ic\);,Z(d-6?)%n'ѮE.v(ICV؅HƤk?v %i,';]vo]rC :–mO2ƴH5q_{Ȼkb̂]Ҡ\w3{_+[s,ͼ- iRW 摂LlھLERIsdÊ,.EuK|jO;S9Ә3`WrdۘJDw9ϱ;7El9-8Q$@kM.y]j =3P3ٻ8Ns7Sncُ)p) =tnw; cݮnQ6cS a8,aImSA &G$rcވp}g2-(?D]60\v a:5{I-V$kF ưHЮ;RVka[4Ox e[ZTw4k}zuSGz^ŭϐn,h.[L< ]_<roqftH ^8~Nһ'C8>g)ϘAtW"4%R;ʐ{VXWdWG=[-;s>2n 9n{^JWASK)2&P654#=i̓GJQ#@(*QNw!J*q5o{{o[m"Jb.Zen$I&kx< cI[.\BN.-KHH@#}"o3 7HF/lŪ;[.hDN`#}@dye)mn;wo1H%+<2hyo3Yð?-v B,$8UiHң>*E_}68 3[biUXmw 6ed-]K~𫻋b-ڪV7¥$3 +ZJǕ1Lbjū߉qNTájJ'3Mm_s ledR7#ϬU R5$R|>Uf;l]K$ЩHǹDAZZnڎ=6n*;}jvPʮԨ8F)MoҴӠN7@(/oz텅qnq$Q3Aֻ1QE ˙ìT5NJGre #R@V;פ퇱ǘ~/4fח1LIiMQYJ)ԥhI I5Te">ՌFK5ob"SvY~0s3؁r풞 JI +ira}`ؘ=nRj.ƕRA޼-I`;xϊ߿pI&;v`7&tֳgŻ%dPP.֜]NY: v%KnLn_X0NW/)rtAX*Td ADgB`Qb71|T3#U>ciR[(}-i G[S=kv-x̝6mP_ K)j+ 'g$`r`L9nyQUkq+ذ\Rs M}#rًkY\#  >߉&5}؀kg҇gs񵨀8L!%:k4XԻ}|#"hSof+Ym= @Z7/z9.\\)JH U[[E2\w)ȗ~jQԆL>ufA)y#U&ln)HJ@3'mTq?XsO@BU<m&@)_ʯn. i[iVr DZ"۴)iGT2daY$ eF9*eĚ8s+]O=Js[WȘKE/c6Aۦ'~=no6qY[ljW B=0 櫁m2éCRv)724 V3ݿb֦ɀq[W})|Uؑ鿸9!r I#aҨ}2y]^mc/xa\Gj -@iBfwڬV\6)nnѴPV h)Jc]lsvkYʷA5GXk8&+gmnR(+PH>t>p!eHPRO#b+pgtb8) C}J ғ(I$ қ*UaGoTR387%}HICP ]@3&+vזd$T)>{ǦKB{n::"?5"cw1E*>)iJ_Cz=&GS^m…AJۡKE]GΊ`5(I"4tn;tP`{ή,0W첥VyF޳Af4D|WQ)ƭ`z'-U%E$ +=,lnu:d?28;2yU,lR͘)IX.&@4F`' \N [h4$ϯg/;m>n$0zoo%749I"}rb͎J++8>U 8Jԡ?nTiG+֡b_j\Gxb FO֬m%!H*K GSܬ25ki& V1XdCr k¥+UNYCcjvMPj6R =T^dMa'2FMv!j^~5M̏ 5ޑRI u0 i)$H$q5M6MEY/Ri6r7r"!v ՛4aM'ȊM6 kJ@p(8d~wig'x]N-P"NEJLmwx'?m_~B9I⻳V`rȩ:-6 ;o+`rdbam5ݓBHz|l'_* RQ&?*R°-n?noH*AV~LBVs},oXJ2 nI!;"*W*o9b-ԆɍZHkhʙ-7tՅ\ +u!3@)> $'ac.١)?6G~8N0h!S\(O I)#ֳb.#o8&zŬ5{w? IZJ@QS "HO`y ]y%zl㷡(H(uA^ L RTk^3)Y)q5mh#hn p*1L-dkub [[Qh,='sbɤ}sQ%v]xx,/pu!fZ¾9qΒ W.3/e^-L͘Zv, W XnǠ)A)a!J ">{};Axo-+*uc#ݱ'Qr%9 tMt|cawx=q|[7N%= w/RjˋAx脠pvd%je#>'qv{m1&PNa(Em y$u+O$H2VؾWkV9!dpö8 X▫mh <BTu}p̜17]l_°R[qn)> Z's:p G2ڴ@._^N è ;NID<H>O};gؖ=n@b6#](eJR+p;M(cWrj0Ʊd;/:=m~>D\7O)3)DWn{0FvB)7͙. xB Vbn|n$:놝rٲ )K8 IBBAч2g/[+H \˙۳r^CXMyg|ZlD Iu*襛й?z%Wg9J.<4f|vݐsK͸{n= APӭPL/K8_hs3aqߺŘ0;%5m XD*5?g.^P\˸kam BJJRy* nw$εږWvcrjVNozw~ە) ZK)6POImʾvVumIƱOÛn:M(BBI*L{g틴{n?=ku!D,. Pޕnf;58-yecK,(6P{IH)^2H3(J4?gbg8N*[db6۽]~ӿ -n JH!DN۟a.pd#‘\ฉma.%w y!1m-@Dl_b'YK7~!9n]ܴD_ =IpFݾřkb31ٰ-$YYu%c mEhYI5(Tŧ$냴2P&cM<_6Lhm0tLf̱s^j v>6tR[>%N)JFzwLw žolۆ瞳JWóp\4R p+;en75Zew/ԋkҮ-)qA-@6V搩L Ŋr.ɒ1VWw|PcN͹q|bRcR[HK G#qdl]ȉ9Bw7%Bۮ-AHޔ<-rkv+s`3o%˄ݴŲRH !-&,]ܣnQXjM*XYNhN$ "rO(8pvL'sdgc!ⴂ\Kk 昏 U I h:dQs25ڝ{72kR@ D;WndŰ_N mxJBm#&XYII *X)=r/s͹ [:T ZCIN5iͶ:|j |26>bn?erf]Hy'ԷJwj#V6ĭ %I@'J+>k}8(Z6!I;*9_0q&õ Y&^3sl$AJVB JBPk&@ _,lpENiBĭp ҠFv5/fΘcn!/(\ᶏlZJaDʎ%EGN漹Oᚧq?AvL[!]HZmAIRHAGZָJ&GGMc4al qm?pgQR>IvP~TN՗'E |ɩ$Ziǥ>i*^qw\\Ym\uxRRTA*l9Uj}rbͽ{ǬCT]H@FѫQ,F~n61XƐinzZQ P9 xA;~ 9^jY_>}g'll#w a& (:K/2KA .CHp0dqkֲ'idgSnTtĴ(E)sBdfMzC9̟±L},,Kl8|lJFU~y'rŅk{xsaçdIZieU-.Cyc6X |M0),hyCAI"DkE.i0}NL$ ?*ɚ I3 *$ZRV|T6)-I--lXI T*cinknVcFRsݳ,  B2_\*A?J,׊VO&vyYlO}2HUq#m;ɕ>o~0l?[m@`ȕ 90Z9AuB&D)@ *HueBJPOQ?ΓXҔQۄj՗Vmj ԢLRۀHկKaR]J tAm ~d[7jԋ6w$lO>}d\)y>k`BЂ n+Yƕ:uiWm:hAC"uAJ$BSՀxx mR*UH?H>{G57-`#p^ީn՟pNVt5rQXJnB`}U\KIVJ/mġwMgRH0 B"drNo5qĭZ .߳ZB3V",6RhDO:RG[$o$ >*oWz'Oʵd_ hD6(uJXRO)R$?B+onc+'nLPPe.(q$-3}u/RrU 3|6lX/6w)$;O w*E*V֭3%3:U968ʮEů1Dҳ8{QX4IKq;hӱqKD4uK1YT (ۥbэ\qx(kS[*bw>y 8}́`Oa[;.K}) W>G51 MU4[l#eڞYN6uk(M;tVD* LNH;>]jm֜-pKP %qvͤQdU_¾Lf}4w e)o p!]'t&'Lz8̬`vs\<L*#q"x3w9m{baZu#y'z]Jo- $)e'h7L w9 R),.BkK%j :TLԄڶvz9A/f"P򆔎bz>ek/#Re*FVkfZaҰז>]+V|QXR⌞i[)HѤnxʪmW-2N^]ʴ)=vOe]*\ (?ڼUQrZ۾%/?J]˭Q I1z}4hYzj9^m,\},($x\H0Lo,%(FЍ Ri~U\bl3nn 8Nr jeޢ8 "dM3T!kuBUD4dfݨp`{fZ9.!_ج[2(V̩Kᘾ2;p]OҍǬen:qG^)w'YR]"dLm+U;kj*S+\) Jd"=v&nay!0:[X-FBH>@"}xzmBҽp u/ Kn}l9aeq%;- IV2U um2m>|<.]^41;+f4>WԘ ձl<'r\]EJ\#RB,AZwVMPtΤj)-q:$%ĘI{ͶWp:S $*BJLtIm}&mxHF"JuKI0d%;Wl'{k f ]m-)!օO&vHj8!]8E:BWoY\$!L%m2V7;&glO3^۽z6ûhw(FN$l+YŻNl^i J +{cjw5eX&g X}VYl (eJGVkw㳛's'^{L*xU۶:^'R<&RdmJ܅flYgsbKoidP!-H6ioo]FmKCDLFnJneX\4n\;hBBĉG$_&/OMgTv/ضaڿ,~틀JI"|BWQ$m\ ymLX_eAciR\O#~$Oϵ 2`S9\b١px]C[S!i*  @.U웴?u1+ LͅہcrM(+JI f%<1 ږ?"ջNB2*q)RI Yljiكex^jyvmPAH6\+T9 No{$`FKm9Xլ^<Ҩ ^6hJJNC P>vfafAxMv]=ͫSi}w zqC}7NY ' F] ttGxgGL V/~%+xziqFJeݵamE*mac A׶;:vW>)f+} { z)PKvHZAK)HⶾsK̖w؆7Ԫ }JJ.P?t$w$y+Qd$Ÿ 1{3s]ںpW(^Xg̱Ηgn =nK I:Oy MzW,U$nG>roe8[2axM0m: hRv IoYō~_+CIWqdx⽅|PxF[x`._(IB!w Y3A:w2u[+X˗whiK{ }.%!(i&TTR< Zp.Lh; [lN \22Bi$JzLDu,H3y7b1?\b ~en<ԟRN©:QQT6S mY\?tNPR xRbb& yáeTę;#FN5Dr1Nΐ.XW6 L.Ӎ,B_T$'BOw]=eXX- QmLRJ ԝp A20[Ó{ vƒ̺AHZW0A"8nʟjLپ61_wڳh[W _vZQH5 D(.k/vfmlлKNH#}֙{`+/4(H#c t>ӽvpWs߷M "y!'}̝bqZ&04/ܕ?)ZZqM)ԡE+|rA;5`K#"czZPQ<*큤w$T$JQַL؞u"-`X 栥Kd$%?yEFI mXaw"8A7M!PJJxGnMTbV`;.7Xmdˍ[\|**XJR]Q"L ;!@b*Y؋-%M^t/R@+o^TG 6qi-ۭ,.wxՁrA 0DHJrgGdسWhu}Pa2PqZm8JܟX[23`Cz{btyOұHurm'/}5lp%(|vDk6\RY. ⍿cҀ|@zP`$"j-_8<%oaRЋv8y3}v:$MVvn`?>Ne~ ZR[XƯ5xqPjJ\Y?;cט.D@q{JCv&6vA~JWORB*XֱT7 IN;<8إ, E iA+u gB-JL\:?v`JjԄ [fnUa/{x\fR/񼢇ymʝpi~ⴟ&+ţ{%pHeݻ5m*(*ӥWxYľi[JmCzUke/aY?ϟ u Ƃa+RYeCFY4ZGtY6P]^3mni3e>J\w@$,TT p'js:$ܜN1msXRQ&N砓'*lN %0V+lb8#]'T-Ro#z T9߭Po1M,KZ H6:YrfM [n$|Na/[!lĠ*xG[Wcv|ݮMD"I^ 0AxO2 "X\y0Edl_ q+ ,N ҆عRJa:F- T '~򟤚Y3};P0 ATwJUˊep @(J@Fϰ2`y6Xi/^\ASzgq[L&ii  '=S AR^g+Aq/HyEұz^-'ҕc,P,G.ֿJf?epԄ%.) #:r*;\(K1nWU5l߮lo;p +ޭ(JKXe )`WV8y %xLצ5MA"BHRT'h(A6aٳzIdV;r'sVV~¿B$S;o?.i*״ϥZTBB  IpBeۉZ[q$ +j }8jlTGJ Nn@;qTsPSJąIAT xVM4H S'T@o;uvTiBҕN $_t0-rDf HRRғhk !& zYcrΠV:%K$MU (7P7Ra%J$>Oh,+@-&5XhAR[G:GAkJ UU(6# !3{ ZҐ#qZdZDKZ 6"VDؒ(vTmпw#W]+O]#q?Ω#kȈW-:NKIĂxuje"ZDc0ԢJ<ȫ H0}\$BU3桳&LrOUe!А ]gʌ"AX]4$)7$UܨEX/Su@;vSqX?TI-Ll$oP tP֒ cUȄ*l9x NJ&4bgEr[Irt!DL"L}9"j]&p*mUY{N's[mfciݖ0*ki=Τ+LHըA=*#e}cq|ɋSx.$8HJVdTeFPJt1ɡ//}En}_|Zx/ۉS .“RR j2V%7QVi GP;e2Şx#4 ^jTRBF&<v vr `_$:˖[( Nn 6K. B@JSYpbW C⽦[c^]_W(7Xr|N.@*f\^.H qw--HS*v4dϠ@zo%[.JQJGZ b73wA6_mbJF=%Du?Wɸ2vȴ}.q;%OJT)}AN:'ĵwY ƞ!dsZCM:ߑf>\!eTR`\xhN"/aHi] ~do s%&W!7s6ūaoS}e IZWRwBxgCelCX[qĩŨRTt&MF9WGӘ2U6 }WO[i_vҼnL $1;wW'RBC-0wۼ2Vx@'cZ!z+Ust0wԤY(JV%:ܐ܎&cUO\okVVpZ.ZpS`+t275a~zEk0ص LDTQ=d\LJǤÏ7uNuFTT|5 Jh@Tm*.;ݝ$9 4a_Awt6s2>@,tU­Kt>%դ [z'mj4$N[?a^VM QARA'+ %(x☛8) f7*Qe%P$)GDx2Ᵹq!R JGD:V`V/+;kfk~!]ڋt@JtմGxbe/+[]A y7a*wo"*5:I.ZgRE:GQ<]ˬݡRHj齏˚>Ɨma,PR Jm$ NPP2jNܺWvI>>fmUM6ˌm P* :[BI:sWwjB\t’l; jN0 } R%BT>N7x8R-C0ۮZټCFKzN)#Ɣ| j:up#mo>/Ѕ>ܤ-+lA8ڣr^+/PKwnD’`H+pk zًR] &B[ywj%GeU 8vC_Ȝ"-3_5R$V!ZtaA]YńB|d)^i %{B?f8Rߊ.FytHl/~I3U) (:Fڰ :P_B(ɷ]*WrE 0v9jR<-I?)ίE)KjPTW"ZaD(E$UJcneAq=\&ڷ ~5nK{'TpRK#S$*'lX#ij;}6BaZN3jq .>up0 %)s;ץ]-L݅-Po"q !Ŷ1T.o־RJS>)otu]-۹WF9NS'e $&&DܓەVWH:Sju*ZTtɅ@w+DHI AE^M7gB2bfvĒ.-F8<|&N"FU6qK$*PH7xX>ɹ&%E0xyQLGP()Z8 )MϺbUvH!טXh;5 IBEm˗޷Jq))N:cx<׏<% Gܟ~+%vխŭۍW);z׃&]\{V٪%GZqI/xy;?w@w i7m@":l}کvzw!E r *ϒsӤZiwe=G?yr< Ο !(lAI6(@; Y}1g]oj̩Iy=j,䋻GW}E${Aֲ>ܓ@ìn]ylˏ)+Sh*8pO KvC%M(XQ{8[ ٰӗ.Y_$b滔Q!@jЁ'ns^V]K%*-0[YH[/ !KT *`|Wfmq6B}x;A "*kf<0ԵH3|a_{Ԃr IqׂRO'ʷطm5!A:LJ= )@oryIrd謠%)D$o(VԺ:xۯJ.J\7I#IߊUgB)DBU鸞u2qż=BۨD$ojrYP!DG”y^[8-an#JvQ*H#{ȫ:#B7?Vmx0(KlV >/JgRH7?Y[k!lˬUN*'q $ѯ1ԼO&`{}j͵F-pu=cVX#AKDJoJU&6jl>- BYL+xz/ƴD}o}i6v?_#/'nZīY&.1BS`TDҲq!GI` ԁҡ<>J4~wO~"$uN$)#þv呰k/-J4i {*:i}t+*VAϊ $UW\ԕ$֩gS O%e;@OԎpRI$<kmneD9ݔٰn7P%DRM83VV 0De+") 8jXJLj/aO m=jH?SP OfH!$A39Z;rQ}Oy)H-ܚ߭mœSt#}  cpî՛%*hP5mhx%!u%II==*ᒕ(ꀟROZ&K"Tw|j\Iˢ-崭\x ttw렒1Yۜt6(պ ;N@'@eie[}-x7ۈ⬪lo{ g(O<9QC +FzW%V@nH&v#}ՋbFTfwvJՃvC> S"RF?C*OUEͲ%jxVp6y4^T'%HNO&PVDt1u* oEewQl BLB10&=8ɾ~mNm'ZQ; ɞn R*ThJwJsZu+1-)w~GBjejPCsZz0 ˖WsnœŠiVPSjmQ IO@dϝvbԼJe+9sV:T)IW ?ʐp865gv5zfSc=+@}PҴCȃ^֛37*/D )3Si8ODFz['S;vm'Ri⹌Lt˳ 7֎}E)FT#rv ynxZ^ Kuln_\+ݥkZZT  gX{^Y.t8^mu-!hqBNqA@Zqq-ܺJ(RH+IOs4[jy?BR'qpï}u)j&J;N䚕ÕziKHWQ#0c֩(b4S=j6*,;=15iLԂڊ:zt,7"Ov5GXv$OGHE`;\Q@ 0iqE*tJ4FJ}*4MEy( K笔{ $)W͎2$*JZ}V{sV$D+QӚ솼sXuq8vu8v:S$I z=˧ eImZD@2r7Nf>$O,)fJ$O滶Yg CCZ}đq3E炛gI؛\@.6+3BFѷU9FiQ% \?zmsjBRվ-Zo8`X=*ɞtwMFL+krI3Oz–R Wxc+(޶sשY7ˣ ي/mvM*BB_ )vR:U;IV"h%Ը=&`lCV]]%RHzdcqtݯuMzVmjTԃwڱ/V^*<"_z.[Pu¹9%mr^Ӹ8T[n^ʒ70 _EU>"TfyuX3#J$n1H($ߞ?ZBYeO<(J][˶mY= p֨ečɁNSHѭ?<)RwKhǝbN/ݭl;p %g52š *#oQZIp$t@J*%6ReJI:HRtmr+0Z Vm( zv&t6d%J;qX}~azʞ[`io) iK^ZuAշ|8LVf JsJZb@`[8T:0ku R1LaHg% H>VU/%rQ:ʖ&LoW[ZXJQEq$ ~bo [mmSrO=!1>SމJ_Ftmՠ08sTֲ!r&vJs>u̟zq-備 l '~f2~! u/%j1#R )'Lvi8#->7ǝŦ֥33s9E<kb :ۛnU3 JwQ$8mc(ڻqL^] v (H$H2&rRl{1}j2˷V:R%@U>uu" JP-FbGm}+F)cS *v'׎9In`ɨݶ $XXR&'JgyvkIŵ2JHTHj /"Cjm u;, -jB V}+u6=LYNYRJҲXPÖABp`ܰkR C@XVoLI"b<|[^nNHL;jU8ӷ/҇Zi* I@*I? S-X*(Jch2'ků앆r")0D 'iHY jq{-`ʹ'ώ=re8#V%^Z>`x! ؝QCD`Nm8NU[ jg2.v$ѻ?7,اҏX2Titt m$Oș˘{>ҒZK1H\2yh+Wo\υGqrHl@xH'x۠,dk26lojmRA*)$#rV sn]l][4*EJ;Izذ{9Z'Kz5ic<+͹x;#1 .WoLo@D}5fp>2Aim*p#PQ#ʻ彆;vѿi H(KͤASQV/C }]N#pv=*/Ɍ]))6BRJW=ޕp^{u jJt髟np1j7n-)ԦJ'L˙3dBwP1?OO~`VV۳d`g+;S>( +YY.-TzD9h>rHBdjA=xt|OCMy~*.VjtZh~ϪGUm:̖woE< 3xJH::u+LɂyZҗs`(jM В9 @JuUB"L*}DY lQR$I*Ԩ1ɍU|**@En)Q@>*(4A&4T?ҧ@iSR4yKmu>Ӆ::jP 5@$4~my5o$Yȴh"4!>(HHNVXnY2kԷPq&DɮynրܶJRke9//]x%o,ڔک R7a 5[|2S2bIZX(kTwDǯ3+jS'8WKpnButL+Iȭws赳|ivoi ҝ΂JN7&ۨ['M6H m*dI# qQNLYܩ/4Roᡛ7^]V :gmDtYBBV)%:ҒzNkBڊ jOS\nR[bVIpwdIMkW*SjQI;[n)o'EjXe*s:iҩ\(--[`qzTui5n76ŴW2lw .@F5Y4[Ӈ̝ҝ VL@>Uʏe$=6]B ^#qקT4UnIN1ci?f "Ԑʁ;30 x3Fh8J礄yO{ b6]!?jе $::ӮI&7}euk{rʭ)Iit@*CG6=~ìoi,AwDe[,W'm/hx(R"AGIs4t,ڵ}0.HIKn Ci?$IL@y,qa\5ixi} *x:B'r&=o}eqq9j@SHR@q2gHߠ7̯<~J䜼#}96~q6REN NdSArpkS~7fҕQC(lA#pw~Ų0-!Hl$D1s]7iVnam.Ԃ~5JBz$vh8f|ٺ\X},¯¹U= }#b6>uziB('uvܧ}k^aNsgaXҞHu̔ ԕr ĊV\ޭx{yYFDHŪ(OteH) hxN3^Iƭ޹ qT$e)7k99-kEm4ƔFv"d/f!oEj`q)!#}N59. w:g͹ыrMLLaА%@AںݏbgZX~K,w$ygi3mپݔ.ս ۾tkX3tty1n6BőW R[Op9U_-]mv@R H@ 3ҝ;^Kw+D엑Dt#oL5IlKÑpg4v˷^< ۊxuM&l%ƈI&PRBjհ¯sy4e0RAGOîgN6S}H҇tH0A؊uOEc,1|MY^-Z{Ref%0O#S1u4jf>@[v6ӰxP:srݝ.4 Ԅ6*'Yh.Zpڒ7JIڳR٫Qx;%AK)<*mc8ur[lZI #ۯ*w/ۼ÷V-.I ʺ$L[*>nwAJRtPU0DHb%:\nlܰ$$nۥkضquq{j cmĈTש IqW] W- u)DO̘YI.j+3zJo4t|m1 uHq$gW"8}Ue+ I2DHj˜uPPV遼H:l&(Z"$==OȚ7QmRGY²J~CZHǞJo-2bٴ'–s$ J5fݽöAЇJϰPUW 85> cdIcoߊ_J䩎ccWO)DRIε ֠T0| #oWi/2_`;NRaJ lxB֒[BwtH>$mryҜ>Go w@P L+lEj)GCZN)~Oz$-^(Bz&jҽ^R[sxHA^^գVq-6??:^`R _vJNjmy>MARH׮.loYӗ*65!SWlk4;Jr+I0NӼK0aoqޤ88A$9yOU/6H2B&tQֽeitRfAsD)|ME/N*#JDE z])z"iqQ43ݕH+PZB'h8esr_BHJ ΐmPkƶz1eLo0n{ĥZB TI>fNhժ[i)oY d jPvKa:@ē 0 TY_=ZabA[@hme(EJQyd;w!$Zbx}˫UƽefN[ƢM[X[ iǝGth,( 0cr7HT¶  TFKXw6|T- $$$I)t a/%iP26L_irk)`OiZѬHRkuqIHO Anb+F뼽I!Ry7S,(sلGv)S{ Ļ~Vw4 ֣zT;QVl).wҥlɦ鰦)2vTH%6ҢRJ 0ϔUEB4W/ZƄK6UQGB$(NPIUâ7O$NWq[:n}O:i-vI<[1/&ԥd!ǞfmN9+A!0P_)k{̙ҍP$:Lq\^B;AUz~-$k9)KGd#N*&g:GqPN(*dRPyʀhEMu #ʁ@@JA"|#TOX֘H@::hED `o7ᷭ;Ӌ BJ24$̈>,cpFq3ܶCISc1Okj%?6=n^K\۫Bi'BGxޡdJUHg7*Xe\,l(B ;Vya*-ʒJyVĭ0t5]}Vbyk̂ͧy x|@+ON@OJ/\w0^;Z==Y')J2F'"{4qu/='Dݐm Z s'p7z!W/aҮ^ 63Tk__˶pT@ w#mJ^JQ357l):w1 gnЗ?c:.˸=X]DnjLLL[1;x_ڭie炔;H_J]z2s! " x|}t>ܵ{/껇p RJ[n9$$> k'OHqˆjJjgO$ ՞O>89]Ԗf/I@P6%03X4aE?z~[uHGS?q)*LUmvOso+-|C4hqz “BC(Պ(bW,.R8 DstbgY!\M-!)IA;B_eO 1R8RJtA)#y6d?iYJiӛl)W"LZIC&Qo˭((^'OHa{H%(<sm;W-ްJPCkK=;oP_h-!A)IQm^[Kಿ%nmROm5x}a%iz6J&fFuӌcv]m:'pԨ **ITwz%V)ĭd [hRI  J0÷{/0%6OAq %VGYQj̈Rt"YLQ $("d]a%яbJʔ{+JRzLCP\HLE%FU2'x$ۨĒ{ZAHzMS~"igInҶʔҽ:Sn9;|&1aqQHMggb湍-iid'RAY+:4 '$\c͢鵕@CQ)PNTLnĻcn.Ca8P|RA|wLNrKeyt(VB^!DD;{XluvJv$uw6P` wJZBgmR/Q˚KmIf-҉_t1`bkwnՋ%N<u$f$H;Xw]!MmAL HH$6GAqb juwU)@P# Gh=ZpjNΝcL0!6Q>{7ؒf!/kZg`$Fʵk|͓v*Zr30 DIzV Kz6𔄶w#DF үўLIS}ƵgZi@T#nÈ5iNO:407ӊqpSgJ"O~jO]9 F{XPZ]i%c`79wshۘ^eAR;O܀f9$N]OqtZe :Ў[rz਩A:gzMҤL)oU86Nγ- .ywZPBy̓zml,7CikBe3o׎|;[U.ܙ[SDI}kb yHK( c>&w| xITRH y5][^lwYR>|cc(X8[:}1$ xp[4t5{W0ҝRSLHu܁[nX j!)%dܘF 0YMuHL^P@ CnbLvo8MxԩHA%= ¼j(Fq/$d$IjŊn,REZS0$ $M &8uU0t(壩HIe-GTmm_KqfiBUCkJ\T;@UbY.pۄKD.4PddnzȞzqT,)h!r vp8և3䂃:k6éS֥x1@*#֛zB\iXH1fbᘋ/Hi}ӌi!hpl@:5M3}+;Vȱu UhٸXp7ს_PFDW0ܩekM$_Ci#T`nI:soWbXIF%c+6x;iZV  eaB`DY :'቏xwRٚRM Y&۽a2 !nIaCa;a[e~ψn֧eɶ[BU :=cm'x~ )ےNG^}(\,8ާSˎn}їIJtb he%s`֌/%giAbԪͷEF,MAn%?CZhǐؽf儐ҚJ g)jtAAeVpn|;(.4ff 9oih [[ĩzUndY8 ٫u8lOyet j P(H4UHl4b!xRA _cW~.SS6wlZ&ҢK%BG+<^ԿlR66v78qj×/Di:~u{qL9v@;>G|&g//])T6BJB F+J˶_a8^\I兺@dK?wRl}jy??'qtb-0_\/N&ۋeYZ$lDɉgxM.ź~>]!^@Kf#Ęvks j ۶$ԒpڐLnoöܪ&vP+y#5=./n*13d$@3 =08a%(IoA*{J“+0RշJ߼a ])IW4S0ϵpC"ۓy\>*50a0W~IR`ski6Jq $ @ y+bƎJO 7ھ֙.q_M -N.kC|;NEzp=Cvx{lwj H$%!@`E_nS-ҐhLslFxzV' ]a,2ḒL(!@Ԃ:y _rWorS ])IY< €rH V-h׉$E{w(yҖ@:@؃#~GQ GšًV^Jy?\o8v~ҖANhHDOC"3rGaav6%lV64Zx(J؀D *-ܥM[$)oW"O Gh+mٝ$-k^iNɘCҠ"QUN)E@GBGZ(@EDPDzҊ"tE*#ր(oAJwj_Z6 ` I`Nh"4M@%F޴jR<zTTIHǭ@27)Q@8J}@0=)|"'eh+l3p夹Y-]&6iz?zA qG"͆h7'PwW8`oQq:EAOG:392X_Ӽ;OT~w6o iݖC PaQ'/bZ]THugık;ŵl'P$H>` 1<8E4JdI^?r¬-/mEP PHRH>NՃ];VfpSKKKPdzT )(:T1\/.b FԴ&2dWi=G];)NMA蒁HoZD n)iP =*P*$ր∤c։ >HR@RH)7r=Fbe|' ˘Z1+ڶd@/*ʺOJO؇`dVñ.s۳+[06% $ T Q\W+v[\}iҦ_J|Тg^i/HAqbؘ7zݟ»Ϡ`r]S,B>ԂڜI3ʌokknap| %Jdp)=mk}uw{lhVuo<$u UIDco^^R z@:Xe%HjVd #Jw.s[snmV$'αӏkiQ:By&J66 n`$gֶ<_nAJJBU'&rO]@t>#n;>SZ&2Fu0F/Zj\ndA Z[BO^] NXY .$\1RHv-UwACII";Nzy8A,GY?|!O>\VN k y,%!JT` b|*z ;ǂ~'ZHI&|w;} a9rCe~I;ɎxcWte|[0]s~hz+d Pʺ)@*9[k*i]p%!6w u}ͷ/YuyjiP?I#o1uNn.(Ϣx4,\KBc5))J1֫`q>$(ϧA_}GpۋTRzڹ&OYZ_>ӝpJPdo?1 /a7ZCoZ/u!cm ЮJvv䨝 Fd@X|q&-R\wn+BfTi0P& %3׊t,>!37aߌW1|k5uvՂ4l\BFRIUllqtNb[n.B[Ru+W#ضzP+RT2dDgj+"v 8a؊)(ZVq?, [Y\3Ǒr|>o YEl^ҕu.*7`jMd3D]/PӋ@m l(*ZFs<$ ,TCz$(xbN?RݢvhNXS/^lm^Rĥ RJ'`L8̌3ceqg quD ȍ $]Ccq[uafŢJjKimEI))S:gٻ'+bk)4ZsJ{PBvm&wܨTD jӊ<\Z}D^~x4Ȼ^g;a׊ ͅ(PBҥ)P xGHĖb(E`@2'yq;sx>.!JiԡIҥIi&[0d[n-.=J݊YrbHcmZ2}*e(>7m׊j.j& o5=\UcErիi桖3sMb/oYR^sJTRHQn(\R072_&ᴹ~}IVEg1$[0p=vcۆ>sxjl1~HiNp$VscXEhiQJs޾zP]IQߊq,_vN3x뿴µB[\ߺ$$NtϟSbVۡIRH"Iߝ±?zK:h@v<8Ğ ҧV9}kXᘅ?*h$ l xyt2ASziПJ8'a*-?čb IJ%X_xR$Lp&+{|%`ZZBBD)~'LkcVJR'p Oo8+GrDzԡ? 3I!:1,m9_6 PZIKi)wRHHRv&uHWw.☕˫uۛ;qFKuw3&~y[冐qIRJ@>r:V6 V( Ԣ5ĝ5>${LC8%jmx xqV-i)P$Ғ&@"}j.^ۼ-ӺRI(H2<6}j.Z) I086~x^#rΥ_|eR`? ]ab%JXpxONV8Nsr24uDG1"DI?#2*f)bX2́CE6[e0 Jo\1Aqr-_y ڰ{G͖أK_ B,#Hdʧz۔\nii)h Wi0RRCSpV` s,NГ?=QY։:"`zQJh J6"#ʀ)Q@84m@8FhրqoJwh;4zFsD(@*t\IR;jBAQ'T(X+ou"Q&&[\_\X~qGմEUn}i#8)4 DQ@DQ@9h"h4 (L @z)Pg7wb [ORcN{TNPi >^x |=liyv"l';uHgϙ|IM䂴'h8re6ILm}yiK*l7q⒅H<>w; A:qm IA6JֲY-uU[tc~f7Myz|ON1}p)f1h\$ys 4Z2} ذ̛e蹵|\i)WJzCwsI\M}y l.W @JK ݺ-Jo[+ܑ];Myq)KQ*QIrͺqQ&E, 9[fz9 ,*3%%:ZF  N[[-.O©%My2u@'(&kӖDE7$gSY z. dVW$2=6/nښ~b=ޤĤo"˪[wcnLxUjwoBL?^+)bmFOjeH`p ]sSe;6DL bݬ[7M۷$%.H'08&sdZݕKI͚RUn8e73tFO }-Jt7'1Xی%w',Y7(~'azZaj[O\3u#Vo#)VRŁг3VA!ͼD]MTxWRɄkiԝ jjK7 '!@+^H>_ JJTG %P&Il_%qk 6pmIRd)'pq] IiBTn?"El]+ԋ+ݎ;ĂO*x:s۹Srr( VرGyޡHRC` DyO{_ j$+rZbB ,2Q~UI[3͗!_޼뀸AijFAWcr.bTe( JAVeJ8صvHޥIOK'JG棉).[ *>`$VʷR4]5ߴqM<)R`s .XĭK 'L8Lqg[um8`n7VJz8lIԖ5}Gg<_MQj۲i6)8S?q JF[Tj$A=;]\l B:?Py_2>#.o b-|%`R摹(Pm&&;ie2-iP |fK|/g\қv\JI)NI&UI'f,TXGzF"*@RIw*i +Rrn;Q}) 8.*.%N.B=ˊܲc9Q[ Cո$&D[F,2Ycc8pynV 9SΆ:HBA"HmڏhO22Eݨ$ٔI< Ib[r[3iVً0SjWCr`$Q_s?a{OGjslzC0&{ 9!(YGR V<zA[ >uġ,?^G5$A⧃.XťsR>b}f~7ǒQ'zy*qFdy3XwZ RK@ҏ]USN%%l%qL}ӸWU2}:<:Poב_%_'ګɑ%ujF\_9ahK eA'Sq&DPx\σ%2Uݴ9Lȝ}|\0:B)};#Ÿ?BdTb󓅦m-%wxf=e3xfɐR #L'+ [XP$lv wf\fK-CM@>ʾ(;+u-yIL0$ڭ)T%6gsϕVYa핳 485 DQ@E&Ҁ&E`ҝ4iM3MMDQh(hNiE8ހ:4< Q@(P(h iuv~jBH#jԩQTRۉ>]yG,( <@U)F F3ҕ4iyPE4Zc!@>uj\:n_rA)$&1VÊJUUL!MN( )')DRbQP#: o̲N./Ŷqҷ)eDm]0 >0Ҽe-,5K9j-GzmВXfG^uԕ+\RA<&97.WGjJsqqt-vןY+8 *"4Fwy9])k n)IIn|Hv3ͱkvzf:u8[7rcۑJv@5/*m "Gf,VYp(iQ7?βN\Za-m:ZR@~OμU]ʖ3oVkBxԨ!KHիP#Lcz#Xpǂ_[V]Ҷ)ߧ557`^hD6N;;Jm3kxZucJws_e-bx @+bzoj?$$ikُ5ූ/> n%!$-)^RQ1+IұYcmIPH!D~QbΦƛ}e @?2+H9 [QRIki6XԂy?$O|WΙ՜cxrJ l6#Uᅹ+\QE>M쫽J[$&fCζ8w-5'SzAC=>W&q\ OW~Oq^ O{!doG5ݶ<'=~g/Kw<+Q -iPtZҝ#[hո$ Pl_fyEIAl1sd_T_[vԥĄҳ~&qLnC̓)YRRJU!AAD+2`Wᖸ{>" {)e$ Ft((RY1UrFqG,a{l[KҝLP!}T\VI'rj2eG(7xN1llqRS!Ct =j,S^\_[\ 43}>,8"ϟ<̳F!!֘HWa*ҀfTxWݎfcV֮۴PANgtAٰu4!%uuWrF,0YnQ*JQ=+S%kCix:ozn+Kzz|IF{8Swu.\7m2cqלLV]®n+T A]0bN8%- O(4tzf( ɷ+h@潃:s&EdM7zkPZJDɂ= X2?x=OcZՠzN߅a̽t\O y2ًkg< {%pbI2xq/۬łu>[%@RL:EM^8 u\ҵ+KdXu/rWnJ\i-!%aP7D#V͛YXyIRDrx;%MS&m4G<͸"1<5dj!?x o3>$מZE.m_wjgy6&>P_w)1R$LWIʎٳ2ȒIn8{V0?hyH1+]ei%^(`o>:uxozJ$lmyVBʕ⼚3?#Ͳu+kt `!<Yp LZiS<P8Hu:CJ4HPDԀR8ցh#8:"BT PiyZ}E#2"(iϭ* RG.4󢈠 T!րcޑ)(6@z<jyӣ7 ic `ߞk<.wr1'R5ZL Lt=765o.ZSBmNەwi-$8S1Y o2]c֖܁0{\q|Ic8DS-ojԷƔnk`ڵrICz[ -J&5I3"ܩ)T `d7K8>#~5k|y(۲8rٷi-㫼P+#c}j3>gm]曺җږ3p9I D+H04Hz* vKCIt-idž*mmF"ﲼ5akT 3 ,kkKV~5Ǧ'T&Idћ^iR%%#BNa'pzy~66KZA$Aw tChڕ6癇,Z{nU!ԕX>co VҺ1yoPS[x[Ef%d Ƥ'ʽ&(|3X4֯vX:)X6Dҽ ''JR5֙旕tQ4J: {r3[f{~H!+;O^-1%[iB@up ~;V*;) _*,D-:LORo9q]pkRA̟IMLQxhimBҢ@ mm+n[s˦]<;mX.ސu }1|e[7insnK edKJ @1!$rήMڙK[g\żBRģAS] Y9k!`[_r+}N%7l.Y2][ZdoH1]ieݾj! HHUrH޹V\e뻴NҎILx{>'v~]n֙mjH,Z'HrD̸HGPSk8G6,q6-$#ʽgj |%vRR:\(̔%AZ` k|pX࠺GNM T!֮TcޑLҠĤz3лr݌5SurJUY#="jv\0$%[YJ]HP50\w*Y9\F R@Tw0<\/ 5Q%<+F~)KJA<!LLzkiL`8c*i绫B_ ׅIL@1X4jOYx;b3IpP-\ 96 (RIx}}2Xm^-_-#K-Nw1F<[,3ukpMR+\@rOưI)Sa_2ޥQ*BbO*qXmesy6}6oxTt nFwgy5[[ܫ`[!% ?2g۟AYh)nN4T)S""^`4 tM4$G4t֑6ގ ң t>R1L{&^tShR@QPN)tzA"& qJJi$gH򚁠R<(E=T S"∤yʀ{PQLREmKȢ ӏZ" ڀT(744Oz^XKؽ›h!RԣJ Of;A.T"$6l7f SOLߩ]ՕR K-8HR ;yr3b $%ZRRD#dy+:2wf]S GwT}| ?_Se:Rҁ؝=5 tJ}kn~$lL* ؊ZdM XnjT_CtUyWy8ڂЊZG٤0t+mK$pVC˯ ޠD\I )E:mzZ\8ES*6'ܶh ?_›̩%mI^A A=Z[Z yUOj@X):gv^%%E`IXWB*:~fجvJI \),s$ՒyDWNԼV` 3WqL3HWMgm%:h**mZn/jHPPJ5N$I:Vƅ:7*J R]| ehn zm .'W $զ=풅wh( BB:xU`2|˷!kGl Һ?F]۶N{t8GB "z=Iwqv}> G,LfXi.vW)׾mos2l[h k ;爊;mn'Z Bss\w:_|ܴB\,  ƭ%ϩ& #QViwS;y 1aJZ] K.HmԥnAd)Zs!nq-*}ZXSd}Ɓ0905(Q*5O;vzZ K'CLVI0kzOZU\LJKSQ4E4(hڗJQT}FJ-8]E8@P C`o@MRL-* I#]ii6G0}*mv}5$ax}T ퟖ;ցPXVu@؉Emn/4ԴQ1>jpL@b8S/,!KXٵ z7TiqҰ$#uʴyJ_ Ҋ#mVqDRʀ{PQLRPS zE8(QLM) AP"t )uhf)P((JhQJzF4yRNfU-$ӓ@944& SD Rhx&44 SD4g&]MUiQ& G5JiCJJ7B<4Mg8k,]\BPP*@ <\~Yc%`^UxO Fu 䔒 M{J74wYw r!@$%'c BF^J֝ Tyҧ( 3$I1'zBJdAAҤ$`YB P*-i$S* 5ܞM)X%IVpQyTPۮU-Dl<@'Id*mB@$TKīx H✒]B5 JR%GX:y?/_Z+nzТҔ&-$kZdzRSt!52xn-rW7-wFzoXC*aW_,='eiAdkHJbF?{ąVb3TS9\^dRZ]^ڴaF3pO9$"9v)^$bH%D# 8_!FA|zJITfp;;U(ͪɔtn8jұ"R{h\PS1c̮/$4e:4]$ LR7-]N.МSw J07ʷǕ;fPHV'װ3Z'`$pPG =jmRh$F#W͵*~ )9fWP -qȜgzǏcoh ahFq;$ WFv}'<WٷV?ni/+SmRL̟Rk_]ҭ<7?.GnLfQD5z&$6hPRi%z`ЁGri@3G4(މ4<&(&4i4:y4PH T x.'"z*h Ĉ5Lk$\X:SJ _G(* A9浬S-:VRL4HNdS;RdJsAv 44MnS8#J` AށJ"}((N7w#zDoNw'fݭzdza$ai.6,iJ@R\Q)ReZFpTT&s0NnpIhy*RL,IvjR@fU]d[+Bo.֟.QT:+Q`mO57DS1oCM$^Y8r,i J"?>Ց Aԩa@:`Q!;؝@R6gUE9nca 6Aֵ5QVvR;IOT0ˬJ#ʲnX0fqaHQHo<0|8*{|-%KYQ$r+$a^QJy$\Rj$@!.}He&F#կ6Pso[Ja#ZK.7sW:LJޱ q6-%Z)ؕ3=fo?3l҉ T ޻XJC'pSb\q2 ƙUӪY &uqO^bM"H>U+ 6-BT0.ژyS㝠yEJu;@"7;Ax*vtŰImөqA&8mTE@q20Ҋ[o te+L@4Dzj p_rJ:dq)d~UJܲ&{0Hqv]݄IZBhpDuuUt% $HIϔyo:!-HJpB<[ί27ZXm?IX642SLnNflq)KUw:4"B@%IXЧ.HREEpRL{~v"MU>,%:_sQШ& ơYr  F *?zêq)dG$2TЊ+6x+JBw$,~#+R*+mmZJO0YiN 0q7v엜[V Mir^|5$GEs> Eͳ:pC؎+,|.]Yre;\1ȥ|rm*AQ:GΩ\;(~tc5's3XFM [ps=$":Vrn>2TIXh2_JB[ۮ(f^pBh” W֘ S[X>D@sclZ]WvA#f%YmtC:T7+?H皵BFc޽B~N19N%c wZAAwCրP|JXG@6I邌Qʮ(SAQ@:HmNoJ#:S@(QGmHԎ#Oo(Σ?Nf>tS#U(h@@*ZcBqJ6#S4h(GP<ڀnhc@ Tz4zfͮ95NXb"hvP :tJLWR!D%(ӭ@>:06.-PZmE*BAZO [f±xNK@HH4ܳbWw`e'^ d]lZ Oxn5 *)`u1X OQc^Kj{tۺr. %CJHL5;C78!Vw6S+2w $(AU &ɫDE'JL"G;~YPr2I${).nlûۄɴӠLyJc;rBw0'RA؃WO(ͅHo[)J%;aUER IWZĜ%XzRyjE2!:& cAUCAڭ܆miHgOγ:vӺI‚R~L;{QrߋSN-(ht@Ϊ9~;;I "?;xqGHFROOjaIGByߺ*PB`z8j)VpQ;| 3@FP(qyPtJ)j,$zԔIonB$ YJ(^JmG[Kд) tAgì{}kDij" {Q7RR ~>]|!=h ;˻5n.0FtU5I&=b2>fp klޝ_WôTjA:Rc'P!%*YʖS醒N#`izp/R>r@=gδ)'g8.v7{)lڭE)qIY}K]uYZ >DId|6ܲo2hQJIimqRTƻe9ic#6!<2~FrvXg өP=h2I#;> ZP6X_#(1^H@0 RH@> f.~ڪml$g\Ct 4SH#QUve-6\ I>Tm.X)o|&TP sOH ~[Pj* t$O('?HyQPNh||)Lj])j}QJQEQ(.ǵu^)=){QjU.5U*.MK.+V[oB6EH$;|OIܳ>.ll85jfۿC_ 8@P;_7ؠι{;DȶNvXj,,I<ƹvMR:5WZiۙ1=أ)W7Vd){HWI0yo{^^o" yr]=8j#ML"mS-U) P*a.Q+A ^qV-2 *V̏¬킜OpP]7G$Ӧl[P@%:S(Bui= V/ Gp P*cY[A'BϿ+Lĕ–Nj;*NA.(ҕn*7+G4uy*lc: @:ղxuKdH=mҢZRT;q֙%vVm?AH)#nw'1ً(GVlЮ.}zB;ŕ0Mڐ>kⶪ8HSR=t=T׊]x֗tC~Mv oF!rZJ8ۃx!ZON)3,0+[YJ}?*W;$txKlrNmZMȕ-UAJV"J{hW-]ڥ)*Jxmɯm˦}*ˏk|4܏= uiнN5IeK_4mPe!E;sʼNǏsmpyne; .V:b)a;$%yNȊg2nARmQ7|Ͽ5fwpKwl~ (S \JIi)ܙǓw&n pj8;ܡ@RA$um=Zf.KI)nԥ/̝ϧw{f0NAt 37 -enA`-DcbSXX,żj.F\͗xUم r}+a.mgrV֕t<3l8ھC<<"wrͮm[-ꁥQ" ֻ5_N1+toj @>%A&n1-bMmii.BAupĻHX)NwҀAr=+ۆ-0E; _`^v_Rn"k=7۾G]7|A*HcHu<3@FZ>U @9Ҙ&yfgځE*>TP*:8(RL{P^)uZ\Hsҟʀ*ڀ>T|S R|d'j%)%*PHkང^7xw6HKiE'Qx[NO&nb8+޻bYwa/JT.5b~#A1] Kmx~rK%dRB#9.ܩ*RZOQRy 3zRŦİu:T>uQh j-$Ӌi>I>V.[1$ ||(;P;{'vX`{ .Ajm_1i!>-:Bv Vۺ'ڍ$%۹#m6+/3̇AiHo* a7)Z{2PAIAF{|r!E2WMw uLsD3NFKli0Vb٤!FI޹p^1nm쐗R|3 RuL{uWl0XD\!N!u @ڴ_#ZY\A%+$$ȍ/&=&İwn&HBւ'}EY+9*XZhӮʐVRgcDn<Ǚ2_[W (ӋNiއ}tzըTGg'$qERiUYM;|1A5 $91 RJJ H GWv 9o"@teڹ)&Rܯk Dgj>T1W7OۺIb@ Pt rDs;շZcګ(4߀#9V"1Nw*4<)SUiPQHNdTJ TQ@?:iMZC$ҜBhO4h‑Jhoեs?{:JR1]6̹|lW7 Ow)V<,0`6G$ԡ@*]ZXmvR =p -$+Te 'pgh5li+mg3$xKje|ָq-HPB>SӭX6jVZjŅ:L1x;Qmĥ>@vߟiǃϜ%j̦~vM)ĘM& eD8sZn]q, k3 KZ4S`Ko|›|f\KiRcnvԱT6 `|gFb.XAJu$TpzUZ2c z }wvZOrR8 |o Sӥlڷm}lۭR EmjlpGdp#0۷0H. )0R??[m0Kl@)2LǕ|L/ꢔ1v Z5; sNjNJ T QVf{ۅn8)JJ#}mְ8ZK.HqRVT@Wd*?i\at;.@R A_{|-‚Gۂ+t0fap@q6Dwzpgrn֛\}\ZIʎH( t ݚ7Uq[|K]m-J̐|&HqTҀTivxR`D]3U\ؾ΄8%* GoB'ڹ ) Rd`|^79rR= =p9KRZV u19GRⴺÃ`A>W [R/n6)8>`?'k ]a-Nw%!(Oy:P Lg90(uFIRD#`~U`'Gx$$i>~Qme%L'=UE!+2RGMq?%sqxH&9YÈ5̈SZ Jb=VK-0X's}jkZN!@﷧QNw%VD7b>dl`9j1l18] *Ar [`>V q;!E-lN@k)96g;9`z0ᐝIZ.L+;A<&xWmHx%.ZUc? cM8o\+Y1J@>snٳ|O)R#nuA:xZc LJlӺAKETw=0y \ ӗ[Rq%ĖJpH;>9d.oSqrεAJ<}b' PaHiQq*&FZq=RFTq . uӭ>GoP#jݻOj%4DҴ=.Ow<l1@ގ+̑⣧i4MDSR&:c@hޜ#M0MPL&JPi@)4IO#NdQ&PE2})P$<Ҡ M9@)4oLR&4Ҁ&4ɚRiϥ@*$ӠJQ&Z'~(&R< M@ѻ k=v[p+Otl"Iw>'㞲Fm/e-<I\@>WG-F/m!ӨJKPJAA{#/vØZH@@eIOxRTV`_+Qo3#M(m9>e^̗,{zPݱRR`6ڗ21cX;fm%,(o_yyıG~6K`:{ 0l5p^|1xͣ<@B$[dGN~w Z- ޲Ӊh':PDIϔՕuv #j甹v٤ JS1b_n됆^oTU" *˺4Ӂ@TTLvx{/ү5o,dzt,b4!@%+rO&_asɶMiiVhN}(:P MIM0})t M2fb&sDP 4ҀTI։ߊIzs444A3ҀSY,[bMXT*)'PAdJm;Ghv16x\(Y H I>ؕg.$GS>}ţ@֦F$l7&ⱀİ[aCOD1NsQ(˂v,,-iq咢$wbͫq^4)o))lHH3Gk KW.{ T'*n_r.^O]S96]'zOz4^2.lz$RJ2hO*DgT4I>(&B$&>P&3@1@JM9}(Dt@*$Dѽ9ߊG`@)4M1@>Ӛ&e|Y02RHN zW0BŻI Vp4Dqּ;6ƞuSp~$$dʾoհ|+6bouFD(ILyxIPR QzPOO20қSjmIJIrcRv qg_ymihݤ$t #R'@ Î5${qh(HyH b} 7w`ulҶ')ۏhNVv.7(P+-%&w yc?ioamᖖ+VT<Zq\K[4"Z6. yf<a*աV̀}6H?C[Q7řjɗB m<4"xGxڭ39*l^3=_s8} xRy~9qn4V.eAs3OZX)WL ݤ y ¹`kJSuzȸRZ G"XZk&9W+]Ү[7̤Hf9|}[8i:a!@ڣɏCYVX*uV R<~&oa툐BA֣ )tfȩג.дCkCRJdL<޵ݪKږR@ZBP{yДQ@za)Fк4L N >kƯͩԙ@U8{ Do#Nw?d1M8S!iF%fI*Q?ұx$<&0bi1ҜRQ&w;@* K#E84tyQP ΊD@#3ȠTQR<(yʀTThZCQRTzP)T 4Szvo"E"7#sOb!:Stέ4"Î Q.M:ۢ* nwSȨX6s](6ٰ Rˡ{Oʹm$RYf+X $y@6iߚWX=lIƐL]A<::ߏ9eK;p' $$P[EJBJ;l?=+ὡY›mR(!RD?JvîU)Bp?f:i'I;.T\rwneڜE@68Rs~qm[: cag~1hNhT!!*Jbzy`LRU"?MM %햔TG0QL(HQRbhFn>n+pnƯ#Z!asF(6R$Y\]:'8˃KQI[!ڸTH+Zk#+]Ôix:IRwT*eA-lNc/_A7JtP`$߉kJSa])O>ZWAθ9sR@6푧#YO?J!\bieICiBTTdw'rIp:m 󽮑krulVwL֒չIW澊 Th*2})QEh*(P:DPQERsDR}h*(sN`Ңs#D)qEt4w}*'sK<)bU)4'ҕP*( RE ;qKP*(4O*(@;qJ4uy@0h.(4~TN:ϥDNis@}E#LP >&dRU# _q5MIRJU]@HQ"UI2fyf媻,mP5eDxvDHU)+aZ%J4O44:Jʑ9Q@*ri*QGʊhsE/(h4SR h4MT;ӚT|4A&4UԾp\o}oWIbݔJ?xҢ[^]ٝ5t8nPXD@Jl@޻B FL^e6-XbW6ϿܨwIYt FO -{A$NRD4"+]vdlOq0.S]Ē[@wlۄ&Ak"[ i*I a,mӨoTPE)|(Q@@9ҟʕL(4PhE/ɢh ޜң@9*44O44:Jʑ9Q@*`HӼ714TA4|(Q@@9Gʊo9X^ǿ`]J~-ྐA̯$IKIt0&v$`I1jn#4IGʬHɢh ޜң@9*44O44:Jʑ9Q@*ri*QGʊhsJ@Z.TfAs[GJ$a& x;9;j"Yqֱꛄ-PnElv(&kDWa"[o("kr֎F495*@Q(t#yiD GQHN 4v/n^;E"񁉗q YZPC4[XPB؇`WKJvȖUq:Œ wؚ2 חN}wl^CKB4y^*W^-Dju<^v}j#N[w-O+EL\:QiO=,݇sG7(l㒒ޣ5oY˷XÍnă$tA-ٕEzPNJR28C[ZX۾wJ_#WO 1s>?VY;dRYO]皰" wkE)nB~yԢ Tȥ@3KLy3@)+7s^]s% ėpտ[Tf댿{;s,56_\s@t!QL )"'Z] ք~wx4&:(":84ڀCL~w֜o@hDoA(sjT"(P?;N(OGHӊ探AiyӊJiuh@@it4 ZG,44{5=a KR%@$zh(Gh mBD94z]i֎F495*@Q(t#yiD GQHN 4pG6ҭ Bm( Bz!$=}1qud j`ܹ6w&w RU0 1U?tlMZA~e3P'hjJMQHǭPI%nV4@މҊT@H Q)tTJ8j0*3F޴zS@8ނ7A; >P=(RZ"4R#~(֑4YctMRU#xG?g23qsKmaԅP Dm^ο V E9B"{cߡG13W#v|) SЁ>(HJISVv}~‘qٮxuE*óK!-(jRnYHLI$G;XvfݽŮ]ζBTQuۢң4O@ƟW}}qGxzp&Vt]ӴGRV/oWWvú֤I t8ҒRrjP+!smmvq)S^2[$x-ǕyﴟۿfY)ϱ,ЇTWaE2ÁN/ ca9 eX;͢)%QpDjgQ dyߙs#ukˌevM.XlLI#?EK& ƘI_4SM<@\>йawn5px0իbw_'j:;y^e9 vȱm&E6,;Ҋ挥L|+`j-*$r7;V#h*jR(@2<\۱t~a--h[R!H*"H@N\\]%H"טZ]h*H JҨ @$HY`Tfhz&s#N7h4LҊqPsJP D&R;PR<ӈM9N M*"&"JBbw Q@4j(4TjJ! $FĈ>&ۯֽ3{ݪpxp\#.hű-8P[JKj) RB\FcߢS?#yRyM/p(M?mhHP:JZha_ 3\e*^6qHl\%!ԡ>c]{>sWUbàe&ROXA mKnʂJ 126x5^ǻ>3.cN"}.$*RLwoR\Hm}I)$BLz=ą]t<gq$Gsݐd{`˸oñIk&2Aq.'4u|C_/6vN>lVVZlQ$$b~ɭWax>wfJ2"`\ 0m gDWN5ŖӚT֠&EEE扢((P S0&)nJ2v>Xg1n3`Zj[*@č#Fhg_˷mW&*̗']q?J}+=qf7C7ؿen.H@ $b *t;:g3]5.m-83p-(:v 5O޹yeqEky+*$u1Y]i>߾c̶n1ǭ|fu z%$jRTZ݀'ݖQs< zR彛HTyHHu @<Vɣc,3D-۶p[+`mRK!JQ44~^n,.m.Kn FxwGֶh #f\n͕na=m'J `Xeٹr,qim&ǐiK!za~:{E-̪2ehJlZ1π ])ږ ^!(]2ɁۧS.(pN (P>! t؟zY/_י5&Jc bJZ]L1F$>md6>1-ܸn)|IKv8&~&Ae-Ñs鿩r;dd=YwV./{--Hw#HWI5!B5OQO=X*dk+,pesžj@֖py ax,2 k[Y[Ӽ씀>Uz L= ICM*@?Π$ xԪan$m[R TQRiL Zo'Zj4RJG$RzУ^FF˂f0\9wI.ŪۄHU1O7e %ީ3l-򮘲&&xj*Pz{ư\W#휽pX`)?}?f'̂Ex>~m^(vJp0N(';}GJBPBz3ϹզJtU#o< Oeųf5Ù+D0 $ );W]#=gW2a}bv !jð|GIАlUHY:f7`% S I2WϙW2z,, Ń1 X]BeG 1Y8DړLJz~gګzyXOR @":GBbR}jH1T<<-ܷSIjIP n@ZcAPs(zҨ"P| PJ!3T U15)Тd>P=SIq-#hZDO5 3ME HL@h$tXH򤔐wיhh T)~j'ʦIJ#T6:R4DZ=y $lqNt`~4w D7GPyB ONja 8YE#H3)ʒJ'dE +a(XZv7VXk-ipqRyJAJk5;ƐGMRZʒBӤ4jS<>݊\`dz<e|.՛b[PiC0JN~߷wN#RІҴb"V? 5hKG@E- SNJIWi GxYNs=*Hҗi3:(3<#k0& #<"W an'ĨJ" +_WWA "ARrܧd;5;fvK.Li|H!D3IԘx;9[q 'uL\_4^eVE~a/$Km)MQJ.q1*I mi`)#"DG5?26>V"֠BU) eB"x5AAH0R|c+l0{$Ȅ fZ{~ͻLvbnd N2jЭ &F&j/ؓ5ؓ\噟ı60-,_u I]Ya@-!ƙ!*D)_=+T譑ޙIO 󢤐HU(Ն<ʆ\RG6EX/m:j9vQkQ[һ9.g,IwuLv!9:gyP. bev3ΕyT8ࢫe;J͹Xeyv-Oj>RIdrhtyWrD%v|V5}ohF%9GA wCm+õlbEeA/]N%OYfEy|k-.u 7?fG6Z߯Z~LB?VN}pVFA$& J)1I䱩Abq wvlt{VXIga[emOd9BfyMI'~p~x0̵Wm]ӑf
v5-;fo./kȉ)aVi.C !QJNѽoy{3yy(6w[=sv֔w({)I;|iuGyo©nˠ*ˬ7" %"p[ek)*cg]}ezI3mZ-#x;gqV*bVlpXXkIR %;!v^~i2~5% $fN+6Zp-/IS72<&'r:W7vy&次0 o m~G[^\A<˨(]uDdkH YTs4.C ''!W:c6(u^͖%ĭV)KHJF5jP%x>j/ny[BmNF}C3;ȵa+ -۹sfG~}NJRff*AƢG;njwˢ)vcmvKmL#qZQ>'rj-:ս+yE-r<+QW>뇭K7IO|O-E{RRxGqIQ'rRx} 0)$[D#rtL <ީ:\KiS R'OFAH)$hb\[!o!E8GyPL%%zŒT4V63oWYr1v7.h:HFm$?Z$Xee<5nX`blJu("%FIkrolImgѩ$ =BԐUVZHpx:URðl%NaXشT$$(s HW)qĥ@ǑJ>Sǯ_©Tq$H/,Ap=dj)pG}wVl0(BB=O|e^ FqSFclNsg6H-ث7; JH$'#8nc1,nwd D7 u5e S!G;XfvͰd'O1Q4a[FҒ O#sA#"\. #L:Q>^}*C}ߊdTFLEU@)iƢ5=E'TAV7sR `j ^)ljb*Vb q@|***fLտ|%ai$҅7ɟQTԩ+ Gjhy kZz #MB} J}Ee;@U!+?:H$@?*e*lؐ?.TBH:P*VmE2 I)> @(+U {P֔|=grGD}CQj#n~i7 ,B p%jJ;E]0}b6$ZR&dO]*3:[(Lɞh2}6jQdA&:tTYvMpY (*@:uҚD>r ilǭGIT{ҪE LT"Jϱ;U7Ț:H?QҪbcH?OG$%h'>y0>?֧݀x t !XIQAD>Up vIE zAN*km+M$)- yG6H#rS5J^I<<$7f]Ef5_#BXVxXKiBpOoYV 1| =u< &R5 q#`d$I~p pJv_[[>ܡ7y&IʜB&EC9=.beC’b[7* InAw)Ի!?3ntƳѻqJ| +aqOзXx:SwepN?7*ߖ|s)֤u^@q^?CmvY2V$:P'tlߣqkqَ-%/(LLiTJ!&Ͽo`TjAt =QM!F^`ޤŪADpJ~ QWP<InP-t* *S\dETB| **'Jɫ`t* I5eKh_vΔZR9&t`$-UD-D Wi*BTP* eMOH&{>Ch)iZ|GWN ~cjSI $ư%I[$ղ =J5ޡ RʮY>ܙ4e9#Zk W Nɀ}W#禦%z5$%>|p >`ThI3䩩IL|jh#7} MQ"|I'[^ :u[LI*zHY,%7 #@j)l=@JҕA{V$’y2*$s>t=鸚()!H$)=߄|@6(@#Y4TG֦ L4S-#.ڨRt~#oB:@xR?]i 4ΛҔ´Oj! ɒ>r*L8$$4WE[ $ ;@j (QIv(^(O) Q=7ubgUZDiCs㽐 ʂ7R?QNJ۹hwΠ* ЃF{U |qM*p@h =OSTEeR Ȓ?5)km7!]a8See JOᐿ(RU^Zҟ*ϊ.RBMVaGmjBPIT] h4APjVڅ_~f|I\DKB` ZBVgE-ӳR`}*\A(GP 2[H#jJ%KADϙ$:QUr,c  ONk'\8 4 ![Q(kQbTܷO0֮L`BAϡUEE&xuPxEM6**>qU"H)S$Ei H$ECG W;K"7A4PBgQ$&T"zT[%CuD) FG;zT "<+J $\ JR'd)hH;~4„Y#<>쑺 P|G6LiO݉8(H ]M# J "iպ >|W|1 O*ZROnhI ;'~QI ~d 6$)XAxF,o1Ol !s))4!NS(U2A@JD Ji*Hj_?ƢL$qR6'`R:MGDS'ilp>JuREJ$DZG+K4}4NBixRKX^@Soa]6)hROSB`Z&d}( ?*~SP)$O򨘟ޑI?&t,|ZzdJ, ( `RՠQ"&"j2AǗHZ!o8⩛toU7?R:t;!`@*#֜ڙJHGj%:z9" G?* @3=E2c#i)0H:WL6R Ұ}6$((D&h(R$4E5I:7 oV77 lfJ6(@2DIm#RCF5=t\% h[*xYl6@}xةִ$vmyEO!B'*֊S+IVw]ʠ L@7zEZDmOLPDuymIc^jG_GI?#pvim Ď(E)#ޒ@GL*?u__K&3z8'G((E>`IhcEi)>@~z W֍~j)J$ ? R? 4+Iz #z;{:zPGCP/mO{ ?OF4OҖEPBX WpQ *l)TmMN?G ?EEǡQΪjTu*lQJ5OR*mbGx CB's'j'OOdImiʉ>? rGSG.'jޔ?A,#G*>TIOPOMT?,)ۍač>?ڥ__OL\p*O?T"sQ)b*<#r@W#hd`* OΖΧUzY4[m?*4$J _?E4zYP3)Q*X$R,A?z)},QD6gQ4V(fL?,QKǦ 4Ui('E -{n ? Y4@+)(l=U'Gbe`p{S="~aK@C}CLRi()b`yϩ5-$#j? XA{RNOD WUiW*:G?(;檅κO?HkS`$G\~?!4Q?@"ulGGAAw?ڟ.y~怊n}uqA4FBBU :ؤ!κO?I<*“l[P#idE@ " UT!g A比 YRoNIGUTCϼS"y ,)@;jXѡ_'*la ~gȢtO;J֤PODԣ']A%_昑l1jBЫH:S 'N5kiY c`J ԝ>v'QSlL}* ?1Pn)Rgpredict/pixmaps/maps/nasa-bmng-07_2048.jpg000066400000000000000000010557011427377236300205750ustar00rootroot00000000000000JFIFHHC     C   " K !1AQ"aq2BR #3br$CS4%Dcsó4!1AQ"a2qB#3R$ ?p4}SEPB,_tR; _Ȣ@/w(@E-R;hj/rE/Qd _"}!l/R @(B/P EPB,/Ӫv@EEmQ"!_(,]wN[t@(Ed";"ڠ _B/QmQd"ȲE,T_"۠ _Ȣ@.w;F_(E,/Yȥm v@(E_tQd/[D Ϛv_( _Ȣ@(ERB_Ȥ=Ӳ@)}Ӳ,/Q" _ȡ@EQmQd"Y_!T/" EB/QdYR鐀/Q""E/vE@(,T_ȢڢEEd"YE@(E\wHS/Qmd"Y_A}ӿJ/Q"!Ȣ!_(@K4-/Q@(E/QT LH{d/RdY_ȢE@(B,/ڢEACN _E@E,T_ȢȲ{'앷LdY@{~{#BG-,="Ȳ=B-G,HSG-,= d{ YD; d{"@EBG-=mmP=@E=dd6@EG, d{!E=mQdd d{"{#E@E="'앷LdY@{~{#BG-,="Ȳ=B-G,aAdl%mp(( : *@%A>h'}P +uNh/.%t@E}7B_^IMҾ$_4t]B.|4J.:Et_+wEЄt_迚.( //> |//D_E_}WT/_ %}SDwE4 "a]EЀ/苢h@(.;$N_t_Q0.Q4J.|NWt_!]J.n}}w@>H9"h/D]h] tt 迚W迢=4D]t Qt__ }@}4_Mt_/'tt_@J4h@E}wE._EЀ EQ4t]GwHS迢:a]h]@+'D; "还B/']E%}y'}7J|DrEt_ E( @@@E4BD{h/@(@'4@;""h 迚D_}N_}S(迢0/NiEЀ/"t]B.h/t'T:4}DuEE( A;WN_Cw@E0t_+O.JNn" 迚tQt  /怀.i_d. Et_]Ѐ EQ4DNiwEE}7@E4 "/ ҾPD"a_+'T._E/D]B%AEt_N"uNhuO &dALY超0өMG4 B'h-O,ZuLB !E 4Ai0 BK;"ڠ@$E 'd^NȶQ{}Qd 4SY4e{RdE[TB^өNڢ!EBHL[t(>4BQ5OD(R'M^, ūi`|_KA+3c dn醪 }-eKrtgvPKu%5uo4FNO8dApk 4L|R s[SEqZ<߳Wa՘K~륏w坙E%p--O\_c5 l(~'(E{Y=678a5\{5HtϢ{-Qp/ Oݐa]REJ24 -U5gʋYu/pi0aѹ*u] DG'bFu=rL)a-|ΊNXyxIVR.'Ĥy-UCxS} RGa.i'S{ ku\%|%C}= ..CqHlj riG5U|YU .Ϯ_U0Xe=+g{Q6͕iqi\~v wF0{sw{ ck pʼfj"hiE:}O__n/pb/pj񚿘e$-Zmb_TԲ4} d37{GH6e~q>nBv ?8u< p%TA\+eЛxy Z7vo_ 7.x`0<6]_A;XSٯbKi=62SWS> i%pmf #P| b\C/j~>C)Ȏ|.g};I {8Ͼ^?Vp|Mv}O=MWGpw-ΎА/aOP[_ðWn2xjhf{UKgqkD!!]u+M[AQ\S] U[ >f'Ës7ԛ.Zq> 038c|Y.aHdn}#l0~Ǹbèd<67`~pG1kpVU|a\ORa/3g$b$k9(x&}즶x\R7Ym$k{A!h:yO vTസM\QT?{׆4Gtv~^DON幦s4Is_hWE;ɛ0F׼\Z4~{oĘ6bW^:OWu9{Ǜ fp%؋뇚^eÍG.h.:Ort1}E5X X!Na}|81}wLE}~3:6M˃ =$h+lk16UeB_bZz,-#%-8lN3R WɎ@-,7X[iq~0ѻ9TxۜֈI_R߉.ȸO¸s8Bг1};7'q*φ08s|5طi؍#%GS4ta˸Z%#N!'چņN{ij8sm#c/K q`ĸ*QwQk5|G}>HCB9V N܍t{fF?׈j^8;v TVbDH{egꈫye&%õ'x]^Pɔrc}⟈2w=xM&#gxjo?7!q?DTs$˞mbB/hQkGؖ 41˱hMm,5K[T;i+$g-ç=OG|5OY&!b28d_Lo~ G}г\=A8Ĵ \ָr:H9%\0yё{N,>u-LlgXm}UZ{t^rSi8{(*\UMaym!hn#uI MOr_%.$׋4;rajM>$&B-{}QdY"5G;l4S{d S!nVG-L(SE${dI!!;hj S>Bd"QuBd ZuL"-G=NȶEI2dF@NȶQ{}P u(e!F|'i(u6f`44KN^RaM=- ML .{c\@YdJڠt&BFJv@/t'dY /tBd"ۡEEd #THөNۢBH)%@G9BN4YЂGvA- PK>Hi3!/t&B,T&B!T,^Nڢ t{/tj^NڔYT!@/tl{;"!EE^өNۢdҶJvE NڥmP!A{N;j ,~A!2mТLȲDjtv $i;n h@BGThȦ6KL \Ўhd I99HG$ B;!lP6BaВ .hG4̡(@@@r@ 4RBi!at(sQ/VH&6$2Gk}暍7OT !dox%ĨxlO1Sӂu|ѾR_Rٳf6WFkL1yq+.J=@5>(]aX{^1> & $6s2륮kC{Yٞ,i7Wm 2mTY"8!6ԛ4 AEƝ4+p[ {՘kfl.#+26-Qq'1| Ďu+1Z;]sKnrUrd:p 5Վ|љ68c?{kFڒ1awx%t!ƑoE('~YzpW'q";~La?7 q #* (%6#H=8>A,Mfg )!77VZv\[,h.+? Zz 0aXpDݴd^%gd|ORDʉùZCzWW.n +(qCiLsԆxmeſh& `c0b<^;L6O$#^W j&f;bt]y엂3 L'ōjc=@}3ho`V'-ѥnk p? LXɍl0 c]6myhWZ?nͰ ewb AyscT)8nu-W1nHֲ"Z7 Gw7ߛ^ f:Yjp/bL{s{]eO ΋?aqi[1t%4PnBm9sr- p^6Jqn% VO4-9^X$.,Qq5A#b4"1Wt~fM#˚ f(0IkJJ녱(ih2B׶PCU?zʵI دkìkw_}+^־.8gJ^ e`sqC V-[r8EݱJ=8O gejq_ANorUY#mLO~Aaz|nx| F1%3{:޺WC_[G?M#\ ĝvmk9KQD揯t\me%<&Gad`CN{ic1iiC)ipk\oa~о8wx[>ئ& `9rːvۗv4ؤt-ǗUar>vUGf9IIq\3xh0 0\!g{|ɝўZYgLjq. htVð#YDb`nA͔i{yk\ LfE)+G[U{kZqTLji 7s u(,# ssZp*ZUDڦ4Nּ5bXE"IGucg/s% DŽdžtc6y)]yԠ?}+κ1 {0I .ܓkUpZ2 En^ܠ $j4ɫly\[;fw%"krR/;\Yse(˛*=Gxˆ3#@ ɹZ2 !f2׹O]xJ *N"gHq7=O`\{B([L.;EtpZh-6]5.&JW[0dTMCcOܫJ )J܄\4E4anGek 5–Biu>[rLE/X*!ta4s@B(ꂃ\躬#k!]pt`2ZSċه4mt]}Cφ_nէ5cTth2P-ڂv(pjx±8\ k8i:䔿(pp; .ѵt|pe}7 Xj'8쪬+;&y0a-h'å~4\ N78v}0=)xXgz5Ů0tJ#,G so[y/~xѴ# {*%uWtqp ׸;$! {5Ub<=AK[l--q9meO|}qxRX]V9|!Auc <QEQ#'8RW>&۷¾4uOì{8HAM+F' lsੑ."0pQ]p)xN aXv/M's5LEFAi歪hhS2Ǒ/\ A~Çwlfb q?WvT>!-GM:d׶pY$C>/oo nvFŔ/e\!Iؾ|#s݆q8Wq? K0Sa\T }ه> rq&S|0<|6\.Ζ27>Ee7C##l55އGVq#"ku۪gj6]e;+esFeC"/q8F0 j#t_El'Q95W&>pkOt>5ˢasQ4 Ei+"s#{ L,Y0vz\%FfsU},/;2-TKUMQFb_Kp晤hp;7:oON+xɪ_wEYP"q!F;)6ך5xN%1jt.tsu~1b& oG;ZcrQ^K8%|4IPM^~bF{U DZ<.\NĪ؎Y+`/ sxÚ`<2E1}ʵ"(pcZ r4m|$h<؜sEktǁ0 -mx{E;clܚg]apV[+ 65]aոMm=e⨦ww$nj9N ؛s6'8˯Z7ht]]G/#@E`mNĵYa# .C^UAB$/Z#6%9ps[P ~gQp%՟.nYۖ ddO;t = ٩zU"aj{loS I գ\hNd ™!"H7YjX*#ᄊ6\G$k [EVܘcFFKX~Fa\S20Ƈe<`ʟyh#|2\4.|RRuͻ=rr6,mbzn5)h?dL";Ik0 b׹vW ,FupNC#\_1']=V' ,a ?j<%)1\" 1)x:X0h1e".~!>qq|] YGk*l2g{l\l坾~G`eC3 BV5o:ѓϪ^bq~"i VS]cm QaɃWüg]<Ҝᯥ2 yspRTq<*JJyeweuglqWW`?&JC ,7ߔMɿ|7kb;ٟ͇5s驰1Ơ0A9ַBI"9Ӿ<;$;J*0 9LCJ[}&ᡏ~3xe[#h`:B%9kjmn?$<5`e^i8&@&iAp{AiuE$sK9G В(@`@44s授isB9ePAB@BG$#M$ 2TI@4 2h(B4! dBGTuBi!#};uM.@@"2PJ#;C.?͓;}2gl&@܁J;9͓䋠d"@/d&J. \%.?͒E@B_͓E()&J._9't_D6MB#tŻ)0Uִ$U,(Ogϋ1 .6nVT"mp߄3̻ne1질 ,@a` ֿ KpxߒqYDԡEV̳=aY_Xb82[FƝ$;C`Hmo -AVUr[%09:Y5a|/w70uf3Ge {c?ggodOj(wMs:^\G p'g|bRTm"sr6aU(g}7|8ڬ{gp?8ᘇ UKOn4/qp<]ᗱ/l[2YSQ4wg,xk1X#hi1ں dco1{jW_.\K_0/0aaDrR` XҺ좂+<L_8aɥb;q]\w\Sб1Sp#!YN۝\G&<9Y&RuD/1FZlE7eGiĸ4eCW3"ZmڟƵ°9Sa{(b,m\KC;KO/q^>.$Qbl[]́7y=cSHEP$T4gmp]#8Hd{)퟉~i/ԑ#2;[tN^H{Tnna@Gf X;aдXC4Mv=Aw_^x s#"i6dŨnwpcßH0ad x>k0iq\G+tF:j^ -L\0J8_v53~ 0g?r>ynu9C[g.mدv8MmE' bX<:#&:1vv}lHsrnzkpB 2+pr,C%mƄ9_xbW2CUgh!6k⌶nHu۰OׂTVMWrH!;\,"=mqgےgGѡL@Ùmi+څ#;TVPÒ--0Xmj ^Og P~Y掃 ]4y[SxŰ7Jg>H \uW )Gk Tl*b7ʼnz5a9 %q'-ѺsUT V@8ނL+rA`;*saǛX>@bxZv<n-{w0HxY?ua3Ҝ@6Z?丯im*s"6WO C]Lѱp@E#'f ڍOA;XuDO7b<XwX[)! mE!OPH":ض- c>93j 9lpJ b-߃$qx*Hmv574cKh|CKW+3 q"'z)|Ly$飭nHL+1N l+|x4Mg4>ϐX8ZèUeg^WanB MG!{\|+ெh1L;ũZp>ptn[qY*R:ulISvMuX#8wtSvl5ZSˢ{>jx8%op08~* 3NJAGT ʨpXmq5zez#8iblkkik׳Eےa8W a0F)d22܀6馼? ԛ\sN3ʓcqU&HZq`l[#Kk/\ǰlv%lEkP5^scv86Tƪȁ~]+)G.3aR[ 3TS&0 [Wf뢋<]3{bO%<@ӿ_ `ɘ_. ) 8YMc6͜f>xo%:3 |C⎕'0lW$sWcV/#zG~!=?1\$6VL ,P4QSUԾjBԝJd1Xk";6M97?:sKxҪ,Ma5|-0`8/`W>> )ka,hfX\@F; 톫]'YzC \GCbKx3x=G{Y:mY5-3}# bOuOÉWO{:>+_%|S,C!}mO|\8ۅ Y ]`/3/ /~A:.&ߍNĎ <&Oz#L>)h#bpq`{{J餚S `dc)&k|eNQ=q0A\웊(8jvXEIh [|3`pvTj*i_0:܋XdAF]zZ b5(6 A)~V@@+շR˭k)d>NItWQaHAʀ7(wQ@DER#Ūi^((*+js歃!QS6-r`$+?} 6 *aðlz7|x.EWN.1{ +toUb1Ywet_KG949 [$ ٖ:@X>8M!vqS`V\e{{ 1K8xx㫚\Ji[ΑmHy=q_xt5RbI wu$^⇵J8[q*vQ6Sz;(ETT._kh+/2yx$X/{s.(Í01"8vfxSq; ນxN :bYZ1Z['$;%||@Çp"-sԺ踵|שz1bQ1,ZGn[8Ζ$|ŧ|])Kf=p[{R 'c$upؤEilçj^Ѩx>x kآ7@tS&>N֌E)g|Gp?c=;Px2Fݍ7ӆ`.%;cͦqa|͏sZ\<3,Kdm1*61&YBy3HZ?3EՄ\t٦E {*j(k!7G2FslAVTd3O;ݝ$a6%ÖmxsM=WtS#kXnjr9TpoQI2c j]ah'{Mͺip'f݄8e]Q.5Xs } ?Ic 3 a{#y;;C.t݃|ئ8yyZ7hoy^o8g1| nj@I>S|a|[q--G $h Z8\ϏO]ײoxBj^G4nNd/ByENiU= ;d,M Ճy+{bkĜ GMO8ρPC[,WƉe۩i/'$KMLrwĸ-hgCO02;coJ($s-KsZ|1QN! S.i:L S z#F$t486$%Fm`pueOL$q+BA.O|n*NSirx-/v%E&"id?*54xYq ,Nn,͎b?-[>1!.;C߲J(+IM f׿n/>KLp|e?b4gpJDN[[X|Y[pFIK/d&J.2P "]͒}t^/e'5 Mle: F,S *,f0\uUtrV:Ѵ~k-48,;\s`j˕tkQp-+C {gЭj"lqY zPey@ ~&U 1|NszϜkG?g8: Yw'᷎{D \z ˔E@փo,|9# v/cǫ{]f4m?K|>9]`#^驨cZѹfD0(|@BiY{vT4ZdedQsZ+2l?͕.S[KWS iZ125 A:64wRttL# #>R Krs7ФȾ6B.ElB I?͐tn@Gt)Hut6@Qlm <XJszR=SfyYٛ4TC/QLmOYk&I˵u䜏?&s ;Y?k.8+([#۔5 oK%l!_)I,$ $p)rᲀ=Aj7dzK9PC7=Y>n>꭛R$ha Bh4A lM 4Fa!4 4M.hDhe Bɠ HD7!I/6hxf#O7 p!M-_}E,s!8ݤ\j Hۚ>Zog|SN#32n,e헏ș 75,qŌ06h]^k2n-8."pLZ/*6Fpsu);/1SM.|v Fĕ9l2IlWͼk]ئ(㹭b8 k}uH>1$@#(t؝E^#IN;}lKA[h',T4X>hR,qy/T3vMXA/> cfmF;bp!O6/c Aw4mz%o]_>"OK饫 ;b/y.{I 5e6]Àf.9ԟK8@SM#{\ 3 ğ (8ˇ1!ҶG SK# ǎڒZtTP٣c]b=CkD"J\~~L'trr zw픺GSӼ3 sߙݕa#qL4WᦦAfi{r5>}|ux%M&9>*02f.bk/Zע#S# b y8\~n 2;ѵ4* 78\euƆ٘/G J|WV7=!ۅHݟf N!`5LV8&25VI3]k;U~;18 FcSJCs5tg6MnjizOqUT0Wvbe&:J\QC(:=3;.'8|]ߍTGf\.\mh?70ZH*1vKP.즕h'16:[oi\OCU@J)k'PMLSQv5bG l>*JF;O׍>%!sR|/׊8ˌi JwP@GjckM匸RIhn+g߻%쫈hCH~N1Sdt"-p-Ѱ?&(b0Lͨ"v&!Vأa4@J œ |9b8#3IE,roR£xWu53isb9FL܂ԣ۴IWE]DZ-.l-J/?!l!SUyCMngԯx&oy5uu,oK`}K7cݧjaQys;\< ôpqGpM̦8C!k^s:j_v7ؾ9E WBƂE@rDNq`mg!b͑hl[ݗs溬?˴i3 KIFn<\K=OEgLfvFD̡rֵ` z8nczH)@kaI1\jdxK8N-x.J&2JlK68{2~EKOqĞ[c 6]b^sqؿO%ߘ\\u$9Z^}&B[lT9!",Y@#2EV}\yX:h渋꜔u@9ā)$i$g[E0K < mn8E<:8bkmdi[cpI F)vq G$TO<ϝ,p`#q&M$SB!_SakOx|FCS⡱AНn/yxPf8C "MżʸgߘRG$jn-[N5)u\Su^ܾgn "7ʦg>c.wPtWc^x$9A! z5]>fg Px\4$#0{XIAUY,[&֌eL0fO [D+m)pQq6tQQO#U#c-q.\<[EHm`A+#c ͳZ7UvKU'⏥ņ7FGzvRP]KEJb XdxN;aPas#iq&s T-!tEɾ;RjY,#q^|ξBn#noUkwvbU\IKQ3l |nn6[|;f<% "i\Wa4XNra";l/~ *rZ~Z;٬mMלEEkx]NȀ׈cF2̛_0*1 5TΞg8Αى'-\k|܍F*ٗ6zxmE>+a[SKl=rM|hv狲=Idyx@qmp7%jM~fэvŜU)v)ĸ)f+x-o%u|m$17q&: T qLIUͼʓ '*&d>WeG%(XeMu 4 F+ ^Y]찿(v#3p)c Te{[쯠ÜYam nBeVC!_1_Q/d #vS#isMYZcd^٣vacdž6ؖ4v*(IO,q{g/T/#3 ,p3['pV/=;i ̙ue%8\"$"5aac0gb2 kEV>(L._{u:]mvw9g8(RZgD5 '^ub9 ø0C3w٭r@]{ *E73*v4sr W'țp#ork>k0%{""7Ge3Az͗Ip&J0UR4Ly&VR5qmȫ.x^v!):h=C#J\dr &`nt+/8.{x"` tc.p-=LJ&ed6f?rEl'M_ ONPN˛NגA.'qN}#Svp<1A d-ulr=;XtYq'9P͇pS:G]3~-;H-MEV!PAK"ikm*hawq(%`%0 3:aqEx`9F=slkI.9e3gąe`.jbbItm j0 h4\Rl#G1q}s*+8ɞ ߚ"#v^jN #{re¨`h[Zs\6~jJAiEl.y$3>a[s>J/!ރǭ{x.$uf!LkXuO,h6? ƦB`tsM0RDR3gv\Ikt?*IR9^#w p'9`HT7{Lv5S?\l kHxoө{m+\GeBQ%asZr#鲬I-~)1 Bci)롊Qm sXe¾**dU2:0'=vҌ#];꼾8Ίim+2f6'j2 6q3IAu;LP8+jz DSa~c1K͂Q4panym;@鐒6?5+43{ ?-ʶjxvu'ւ5ֲC:?˃'`XuC(1LF'i'sb"|~.!Vq B˦ٝwfz/ON ei&&p$B[Mrz>JؖA@P*<E$%v)d@yk^MwkmFQ-mu`}Ms췾`mϫTPN̛1X n-ٍZ^De]]b >"=BxPՅ]bkCZK,U45X2m 9OPi\O{#iϢ=4cl VXFZ1:ZocI"'+ki}Wypnv1d.t#tT F f֢FF {6^}-M9#EԌqk bqglr7܀wXxog&jinlr 38Ek$ѐ9++Vc,,ь;F!\AҴnN"\HZLJ Nm۾[ȍ~а$Kޭc{bT˳i@iԝJu٦>O|odÇ6Ic׵ßpl°9(<c]]=TP<x\7`=[jBæs} .<`ɣ~d,ѥu˙vcE2aIWTK'XÝ|ƻZc{d6_h z\Z**pN nzh|_ R7x'7RXFKrܞN\{cv%ZR#M ,uskxs*㨦. x77{Gy,eGbK4xu,+=7N6$>#b0ᘠV`f 1ZWCC e;7+H>Vu84T@sZGUxm;_G$KLÖ]ZǚN~6. ĸglQW duomv-M&cSgu;vu_b}b2=X@${ ū1 =˲й?z {$VUSU:WKJX/kۥqhcVb>k `|T1ijptzB鞨ًB6c#bbh6G++4s^w~Yn\Vk'Eƨ0ZQ; dyjkl斞YTh|TSꊆEfZ=IL,+X!am3ZWFqUwfj7-{KF Z7iEOÉU0_#VE+חIhJa=90jNԬ#^qSEwfїo. fJjC!{EWx'b$pl}II,8k8'T6J":6;xlWQ_DZKTz /l Lb%Q#mbCHV'SԸӱ>ɸr>YȒD&|ma`8|b]RP'e.Xn5Yz⺨!R*Z= Ɏ/kZM^/\Tg+߂^8L|n$4;=vߑ  vKSxRq Ya> ˳;/y8F?8jpJ"ñ3-4_+`q%q]ikt_mOgpqn40^.|TXU~?6p~3W_#{EpJ5/3)] l\o{5Ԕ/ qar+FxuNtTLr-@5L[ѳTUJ' o`wiGpmSq^/]].Ucc 6 #*lI$R@}Hm$ 쵞ݸȸ0nǩ3khM\ma e-:u#>SL)"aVcog`B ~О{pآk)gJCK~9lc.W(ٻۿSpKޱ$O&}\7µQx6!U|op^߶fO?|&5P8 8)ZɠZ"Fld{.{ 6;$/jbήl2:{`7?ǩFi1FՊ{2x>rtq+v/q [јK壎h{@{ӱqebgpeX>'I[Q_s[dًdn!EOxǷx[1cYԶZeV^]vUڗ a5wG;IU |21&30:Gnr}͎[|6Ov b Xu \*Z|3Z301e8/h;*r{dإ+,>$]q ׿]>KW_V#k&1yxK]TƼ9K`i1I"4q=̹{718vÕO԰M#)gHm7^y~!OM (6ܛ NNv7ߏ;*ưۀU)@DJ̑4֮uK0v46fռ׺ ,_9~~<1烇R0ȩ)LzA?6E=WB88FK ^KKygHId=Wq3/ĒRNj2E#l|CE]{4>^xv#;=*25cd.Sbdk@lα6^x4հ2[Iv}9_555Qf42% Oy3(y. nt+p&]>q\vwc<`01Hùw{#x,6]N e1#bGD,34Xʸ 0ɧ|TUi O&Z ᯈ*1S uR:FG"!.-/:߳q\[x&xjƱ Cbueqߝ+;/:hOxR;l'.#Cww{tk *[+cuv }9k7FT>x * .EDd'5GxMqT{9;Hzh1ψLW-~~4H 'E[q3zzb}T*AmdK ]pL*! n9E d6O`8:wU;9f"%f&"V6"#36k {.Gajj(\VB+)x8i5Q/Yxk;0q+m=U.Q,2\{8-&? DZ1S#e6{$#K-mck뺣<-\QOƬ4Q:WTR ck4& 4fiOMq x[pJ'95"F3:2͵k>۾p1ıKc1KaϊY[Sw8{$ű'8K 0WSbۙ)\XւlA.\[ˆվ9 Cq- {T8kq,6e{Hظ4Z|G 5IlWq.DqF9IK`kn ${/5 _psU#F!.@, uW V>)n%AA[WVIQDKuMʝ3 D΋cAWHil<k %t=עvGZVAD: &E(@G(v؄4A(K"E)TM 33zJ Vl/h%p{X#A +8.W-Rb.N@9Өj(cnzx^\);\ku=8eN|uPO[-eif6 Y6;꿉3[M qmfqq.Mbk>Nb:f q9N(EQ*'=I!lB\DJE(~yLd|ǧ7@CXa D'=y22o%cE#kGtjTi.4@F@6FTz%ȣT(jh@$tm(=>HYyxDaRWW g:*Rln*$j4骭O5sAq.ptNivJl1e6XD]MylJ!Jw-}y.OF]UJPlXä}guE FI++Zɀ -]UO74k;_1[g7F-{(|$lf [¤Ĩ*KwS3a׶q58{Z6f "B^ rtOktc:9ʀ:hoN-wR0F[4QQq!k4 uVar#^ze:+JnnmC@ AuնQs}oRt ny%6j66#)ЋyP4 {?X ΤG{X.*Mx1 e^#őI]5tC=65Z: ĴӾ @6+fJ0zyLBNeγIT:sVgqZ\?xg֞', 36Ia9c%Ud؃Ӵh;֒~o1S)K-+dž*Jئωŧ{@p]|9(R*Ī&{jy|LrIԕa+f9[pw[/x|oQ3]ga{d"lnW_kM 14 O(W֌Է(es%F<#OE* osKK\7Xn\MuVH7Ԥ".9sD< Qu{YG0B4t7J[BR@dre}moa{t!q˖8cA+tk8>/AI #'vl e,TG0g'vCKE83rh>/IZ/-<>qV`t46Q_PR阀5)M^IP?[S$L ~ʧ$aij#qq&>[1,"0:enrW6YGU5?#AVRI3 +y7"2 41CJ[Gc_;bűElR&Ϝ$ok Ή~Kԑ1짎6ĪkIbT!]vvR1j%u{u1)}3˚ E" 5t5CKO-9.-+6f# |-.ow3d^E1T< ΥJRc8fX6V>C{ZfdU4yё Ћ-lNhvV8XUHcg 0Zĸ֕syJ+gTZ+^O mqmo`Vj3bSL$d/oRITz;ҵ|V -U%Ū0Z11ZQkS 1(i-Oq>#tXlxGm/dtRvt7 o@r_EfNsC;KΞ#jMu܃^`wM=vvغֻX)7D#c'nDmsn 95KPtu0Kf{>Vq!# x]{3HfęT`VL}U0T0pc]ٝ3XԆ)!4~ubU ]!k 踧gIG7hV9{;qvwS6_}ijk\5]vjRFZ nnʅ=cAk.qBѩ`}&s0^9ar)]@K9>VT>j8ẁs}#,iN6Fr[ap;YCޖtn A<0؀nNx|ӂ!S6!_pk: ̫0<2J8-%A؅k&_cilYeu$ujѲ|7x?=qD\҂btm\,J*jIyuۃ;bu@#bJ2/f^B_V_e :,GNLAmNnjSZf5>E1PL֗U;|+ n&&܆ =J$rS s#fIpiI']d^2fx.@cmnΟ ZCEPvY 㾶!SX2K꾜|ԗy,Kg9s+#ec-reYC褑ԗQ~ I+0K{עUG0I' ݕѵd`f(tL Εć0W4q9#b~- LǑz9\s lkK{n-,k+iǴk5-7DӈXFI4\첒ER99FԲHP6r&U?gy;0Z D훼`{NV6+ +j)k#ģzYtGGgu5ά `O`4eu0話Jc%>^ly]#3w\lJIupnMsck{({7;q)ap6[\O=-ߖ1HzeQ(|TD \ӗW$lh+)٩EQN/KF T@5i|ٞKUhKgtN6w0YHrr3u]XkeL}Tє+VTI= ZUAT [^ORbX?#Z[e'7Ѥ00fWo ۸v 67f7Apߝַ] 4i_.U^<̎.HϾo8|U,cZv>.It/Xly?dN?Qu~I*NcHfYwL ULiЪei䘅43hJl"$OneybũO߾ksX}7$+6[ w7WfUJ4oݡXI&/ݮvVv. e2GNoL5CCY-^\Uty<9Ѿ^2x[-kwrƽ=x\[y)]ВE#pDݠ*JCsXYUl +䰓ՀpH7BVslϧa$.?EI%X%hǚr-3[o옢axr؂pݿ3+r,k&d ܪΗinR{K6Ȟj z /i/+\´ٴiw:1.nVAmr7Fn v#uŻKz^k#yh 4=naix"]Do὚U[IC@b"Ie#LRM=\OUYE4*KC4dW'S0@I >Plmo5Җ@dZfX]Us(ksXZ/Lbfٻ{a&GoѪIٛc&#o ΆU:=e%&\Eq- 2ەyyO=hkKoevoA-Eknؙg fw}vX a4=2r>R8ol?Q> JSTw$aWl˙k8\F>1'ld3i $Xـ{]V%fHxeXE(pxl0uYjl^؈ݖ}Q  PǥܹNαgӜI5u˘"kx 8r ¨()gAQ "Y3?%9hͪ&Y|;,|m/@5/#5_E \ie#hm8Ʀ0  a!7w%ǰ&n!YJ-s++|S:mFJ ٔ>9,4,᩵Iyџqsp=c|fW/ji,_hP:7f8^\b>#'Q{X0`VQ8nZX d1Ր<͌ Ń2brli#ݟgmF*DRUV|Ĥ q0&[ ^3,;S&'+ONidcV1fGOm'GӃ3e9auc^Keb5E-lxuLk%y|mW sm 6'fV}0^ָާ 4.HZL %wcw]oM x#x^(몃8;- fn_:;G\Uifh+g0?0MDAQU -2LNӶ.;jmwħkMĝ Xvf )dq+n3m}MMlkxq9 N~Ѝ/!%Ne8wJ!CbD0W|Hv]ǪG\CO-5[$|6HLvɔFZwO+/_ՂZ#qg}7)h]cq#iYl>b >\Zv/1Nv{ϩMW#K@}P qc{ŦOcN1/5~C b4Z_i{?d/iVR&TKRNPߘemk:o}dbߴ x>8:8a,trFY[1±#VԽpA 2G}}v\5s]kmw v ?xgjb?zGw!pZޫ=1OA] ~WHkk!L.lـ:4l<=sjNӴڶSa\wW q|9^XʌuuG0v^W㿁3c ,&f3DK &kȸGz&N.|F1sN.ocqqWڊh;ȥeeNXHݜ1ĐFޡmf+ԣi|Ꮔ^˃.';=*,e(o2y\o6xpi*+Kk%i/__n4,ox~ RJZa*VZ͸箋ߴƜW`̈́Vf>d;A-p6^y#\O6`|GV5I&j?q3c6K[L}p¤@x^$Jj6Txl+t ܯp_ ڗg pgRcCxdܻ3mċ_x?8R*`k#`8=hq-&}Bi"$b+ûKCߚsKG d@xX܇ "ksN>;ee sL5f8j; C`CÎ ƟK NI\8 ]쵎Ӹz|>6#"xm3`n ix#?\K٧͆VERJxv6v\LolЀWb^<^쯁7Vb8DUζia`llںeyx+1.!T6\h ֶn-8/|X> ߻.̿-+Hd㤎X/bqCĜPʧT>'T "r38hJg*:gxl>JXvǕ7^BƱJ>#],8w^dc!`ccoF4z_u~x fCZUVR#-pꉾ۵< rh=8u#Ln Ҿ)sMLS@6ן ~ja-?P"91LG9%j,:S Jð;G:J07sb/cktL"4 \>[\e'`~|xڳF6؇ſf+ oR&kI'AYX\j9w,,Cvkx0F4ˊQI#A,K ~c+j#ã\%&֝lk`/m9O,*g2EJL(0l\b8I{&4oDZ-hy˶̸n:z/يHc8]mH{{4ʿfKp[t39&m=u^af3@**uJY+\v-栗G4'I>PXn [b=PTKfr;nqk]h1fQ;/ݲ~̞^ ş$H?gmωہ}D~ A:cV6Gdž_,cIә{/ Klqi~Bq8~?Tp86F۴{xockKXzO_!f{P\_njg8nz*ya r5KbB?e?ь/  3abuLyn#7+NIUi__U /.XjG;s***i8xRX<}Gcp֋洎_` \V64SBn\ Qm5\ڏ6jf- ,F2j0JJ k%wrN {cigYEϮߵY8ϱpGv1Ი%/8}ZrnV_n| ڗg' anKj$+;˛&-& ]+vikFJ0nӢ:-K&_^H f==жܢtDuGQ}uPn>,հSedlyV;p-خ'h8UO8O$U-@E kp:hu'z7g*x֚C?^̱"^PȕBMZ9Ijd"cM֓ppWWṮ)r,-&lq}|􃆸g I$QrvfyhKtC ,iwx.lN4v}GĕTU\[S5<|3). f\-` slI9׻Ia)c=,xp(nnd5 dɒ[[fbe> qF*izʂbS匏zH.&PaO @hQPֶx dT;6 t'Qתqr2Μ0eiV5xz@9BK,QfVX1WR1񔵷acY?aQMO)|ſķ&yY`\uô1)e9U/%FI)O@eei#,9[r:zL ][ u%P-cЇ,T e#`-n>F # hū5. tUBȚMoA &*\h"Y4#ש#UxjHz[9_.bz[?UOON.;Nģ:;+dn#PsEvsi?F' wh VV%I▆vKJe+'9ahsCH6w !t^]8GtKf cKj)6?kNLp$yu^~~9~AkiqKD~B᯲<Q3ت:XY"_0:z/lsBkvrqklkc${p\ƇP(1 ;k(9;^^|%r:-9) ?kxwb%S<0{jYp⡠=1yբ9$^|[gc!t,_q"'qX#s:|qwTF6(U\W?lgyAqy ܦ੦5 fwpvikTX|2 jHE̻{,΋3J,0U˶g3 9}Қ۠i77WQkZukF)W6+& z'J6ptyil 66hy*q3iqw;p*6tkv?p bT1LsXoLh W+; + h, z:%[0O쮃)sqoƐ>!k^|[pPڧ9,/+<Q~cW8(4nE^p-OUWRً2n:}7]; bUmH-$n\b47'S+ia-bedeke(lZ iWQsNZlvve ۗ`[ EGxlM+5j-#4ݾhNI ۘUf#LONC-9}px+" 3_celi@24fF ` jR%c_p@иkoUy4su贒\` 6"d4d"daЬL9[[Q洶9QQ;HYh\"x'f3s֟UO##ZrrZ 2w*"?F{jmIi2*:Z iH;6s܅ J+XYn A]cM%5tĦ; Inluu^QDH bw0G05T25x#%1Oc-;$d쯒 ObA`Mκ-bk176:c4k2K:)![Z6,Gmp| I`}y;d% i' ̫0\m*8dj!c;svg%x545M5,}2A{NQ, D-#ϪѲ 1LY[fN?1e}Áa#OԱ>C-w\kunMYdqMkbfWGLiˠ ?Ʃj7uȮ3×ǒeG!8 ikEa>lWŜZ@:7eͪ,")LՍq:v˕6kqGTp~%iI5:Ffݻb. LQog'W܍+v0bČӃXkc=[n1f1QQE9sZNkOy$x|:W`\m/_ H.ǚ_3bka, q,?&pd[bu,gʚH[%5{cn6|ĭFqg+,R+{WW ||{s%eHVB-+nGLy Zr]ɗ)Tz8|-7hH{)qBŪanO+B\0Sf+NHy..BQ!kLn9]bs:+Q eϷv6';a[#FO$Ѿ쐉m`lMu8bu]A-6,s-Z,|/uf}T`g:<8:4T&']!t{X%[j {;d_~7#ݮQdy ! 9IO9\7fe6Zw1 [ ,7 lo2r,Yb{dh4̭>%(,ws͛Ԭcht \.zXNa9[B9YU ASQZ@1K'vֳֵ}׺vY7i%f1F=$SF湏cf[Xz* qW]\ 9@qWW`!Jt/tci+3k## uG;l-s2UD- R\7;͐Fcgݤ6;)v|*Yf mD&)Mh:ۖ==EW6ܷI0&Sֿ VU}jF6V<.j5e:Fv;Kx?Wֹi꣗1]g? IdlU/` $K*ڬ;19沶)у};d1<:n;EѝݼXaeI&>QmEPwmknnCY`O_5_&MkTNa*n)|1ԓmVOFfs%-r .,u.O 9/V8b>-#-Cuuh>dq'ےQNM҆Hߩ+O"tTj+g<W`Xmn:Hm%ƣ)%l9i!kÉ쪜]O L؂m*цv$hN(ٲS5 fp|ve->g`<h676u>K'O1C/QRvV-E#)␳ >cS~`%YiaGgk&Z`$W]Ί٤84HߒpjZWAHos=,վwVlTraG:?!F;}9l11 U-eK#,vdiqǖ#?'FڈI<2i\漃 k إL4PeipڥiKeuxD,:Gb1ܖހgbL!سi8y>Wf9@m,@cx{swhK݇`K%tb6} b<~|:"5$O'KŤ44i̮üSWˍONCsދ9UM<8~'F%kZKI9-ENkiQ8ո SN)$n c`_\5-$ 5CK7q&!°ᘜNwqyـkHdmè c쳌y42Z窖fR0ZIۓd\*PMKCZ,Imߣ|~bs^%(0ǁ;KI>6)1"{#$He>Vҳ dx}DTaX+*S(gpfQ̑aU/waxtWr8 KC'<->;l^2GćK#${)e[;f|!|8$q2Ja {4\GwfxUM;[4F'~l6kiA6+če344uьFMlwpsFāp9]yÉ"{CK/tRk`p$KhǤhV&0~MF aX _c9M+#ً|@ns.0ªAUA޵.>kp ZUO :7m}(Dpgu<l /l!hma 9%vXw͂TWUeH\[mCǕv9%>?ype=@ iVѰfݺiUA]C? p߫gê|E*dӰͨñF5,.ŁȬ> ^$Bcl\ߐT;mb}9O6O|Sq ,Wadu0 pkNP4&W>%8 08 .L PcX0IYkK\5Kebj+vsʟ4SUPՆ8$2GVMQ>-VS8d7A#GfB-sne㟃bV<4jxf(j0J.),el<{;1&9pϥ0Cc|.Ps^81wRђ O^1xħ5dBѳ[(#&eCDEt+7N PӾ!n_BIjX{]0 v %{T>Ա 7ke0Wtg80:e䟑',8C-f'YW Mᱣf@2ıj[u,؍dΩc,lr̩ܶS>Œb5,.U]IJixb kKl X,|twŜ=Ia8k0[UJOs&`b2k]y{Zkpb j{9u/39#=11fnj㍠Fv9̓K6ۅof}HSg[)sInE )-\ l=[ki8԰VLd dUFѸ57 'p*< M F縻=v'ڟhtL<*c ܙ@m9,v 'Mļ)a315}LV?8eGal.(Y_=8֝vB9zӉ~5d8p TXQm4nslو˂g2]~{8گx08Ӻ9kFl/r/uvH ]w $82y:awk M׫T"a&۔X!@Yu!4R !PqS UVGS-=3s:iH,h.q`>$iiÕ\1]A'w.6JauM.JJ=q(Y*%d68E{=p\xzu4m|n ;/.xۇI$2穦=Xo?Q`xfp4C ulH\\\܂})Qg'8I-KK^NHݽ/,|K~Ԯ ø7IiC骨ߞ Л6;/\Yn?V w=69ZMΦە`4ދq%̹ovq_ubrdl+GO2w &cm$^9eGF2ʧpo#!qQ$8٥U$}^tUH\oꪺjtQl$+'#Q #$77$ 9#S~K[GTrP .¯s^ش|ӆsQJ[lxqwEn [`lrsI% j+0 F#E< L/[$+~슿J\ Ǧ& !3l,,:^xl[g5 qkt$ SHe1^$Noe_/gDN ŸN+Mkxd`AZv-N|qE  >SnYfx秡Ұٯ{hh- t_f⤏%:@M$;#}Ts@G4 a#AQͩRZ..w萊{Xjl."(+%*"L"iE=vY%Ct35Ũ7I+Զ(.hj?/`3X픛)xQ>0pHd1T"GR5зP9xmcs->*WjKz|!8⽂($e\&di?)-ݰ8Ê6[I:dAWMNgXYaQ: pz,B6`% c{6._qt튟f(#^h\7.uN'[K`,IM{.KKyr*+s#3ѕξ}ՙJ3JmT{!bNi$GS,gdžɵ[OW[ {]_aض-R9mC ۪/I[hYomBAkt'f6Znt@h龾K,~ sli[a:X$km=D(UV3c˺i*ಡ.nAkY] i#)쮤q.-9.i#-C5;#KQ5cİI&L n-=-f<85H؅,cA Cw=5\ub+cŤSHIecp0wjFo߸}-3"'z*7MG8$nt7>mle4k@Xim ـSek\aJV4a˔JťVichp rə}ȱ-0z^LѼ4n} t=AM;$ijZX3\,nӨpIxf0+.K,ҫ%G/Z@mcP?cSuu[. Htn$eScv:ɕ>Gkj U|@ hmeBegqv"Tu[r ;q{R>yݗP^24nr9 9n_hݘ<1LT&׵ǠRF-U Z*+qk\\ ؍ W8m7᳾jESE/t =4{-0jf J*wTJ쬊6so>)㮈wBfT;Fk+a07p] >i dc+˞vZSߙJC6cԐApR\f2m?> c\p|#`ȵ+4Z7N(m_14 ,8-e]; K.c 0i0lCIŧ^E4K0G4 q-Y`$:Xq.WNkJT6%諃`ѵ逵d kpAVw=/ɚ;0Mf~̄@]ŭ4SEb8.b77;z)V<5"\#b-hsn~MIR3'eI(m&c~encAmXpcA 58m{j*FnFY2\/b geiVѱY@Fr܆ÑZ5pM,nW4jZxJ*r+Y*\Xچ)A!]ҵsh;“Eԯc$0\0 scАEs nrַQF36a%ur9XPԿr|m[ aNw[+ a'[_pHrM/7m D:6f $228eG: F"'m-꩗ 2Rn@$\O"nhk.nT/R#THIqO_56:w1 iU!Sb\=uWr k9.&+xEhqZSL̀Xu^Ӵ:q `:cLׇ62|.w%{ K4]O_Fe«a@&kMm)q>R3A獆GtN ؕυ43QS= oJEWt"nߥŵU4Y鄬c8n%TSW5,񽹩= [ajCĮcKZ^5à m$s\mSSrș#meηElıٚ|:岛z<;ͅ˵eΪlH{~OHYi$14wΖG6e<KlOܪue4X4 ފt=9:=*͓>[>㑗?P7k<1k1;>FSSGKcam%vvg מ0\`xSb1=%Hpd/om\{p GaM«'h-y[]-3ͱΧh);xnV׽(kXϡ`u]gxުgu-?|Lwscecs`mTu&%YLȇu#넬sD_A%{IEvɯhXc16,9Y\5iө}8.ոOaXsF]?Ce6禽U8ci4T2z%55}N[v/S`4ʹM+t@acWok7栖 xo[3#hݣkB&¥ &U j$-\@&U'øU.'ں6ЮoF\}Ku6H\ocswƚxM=} pMptRɶї$ - %R6 U]/amôD2XlM vOwFY̭泙$^:疐Et-Ӫm|EߟASIf5 ;T5&ֲƻYH:_oe8$m\HZ˚e}+ oe{q!-,&uMt+b(sm*g@-YUG,="\I4/ݴ9CbTel%lWs6>S3D-ewә{vWX9ư卭ik`!sdy3 nV=\eT[4F~j"kf#WI+UKIj&&G2RET 7"tU%a͎C1Jqus혵`y qyCɧilC@UqY(a|RDb1f u6+7U0g͛i6Z4 /-Tսsnbt]?SWOG H\۷ەQ$bu4 [9kO*ގpz4z~GH)5ń9DXR)x56EFJbH$-$8NkSψTgw!7'Ss浫i}U7]Uݦm0f5U[%)TF͹jœRAUeDKH:ddRFDWNY-M?>So~ }vU)f> dKss[~j }d pu=+2uN3I(Zq]CxlS5bs#-_rVn?S-W'*ճOIbб31( 7-(c8#' o7[&k\lf,NZL!k2m5Y’4Nh"IsAhJŐ ;6*5؛`hi'@ޫA|>"汝N`IIh y+Y[\7^iDAkMȳ8oej˻`(%ˀЭ iLrzj`$o˴ 7,&i]Ҷhqd?Yp6MWBFlג?.\-aO E9̇ZF&ϸqUN%*t䬒KLǢW2i0H2#{@꺕/qLp%QҚ~̓%D6Cgc۩Wtؕ]uY#;<:sU͌>WLJAfy(͊M8{iv:rLڪ+jkD$@h5Ӓn?V̍3<%rkQFIa=JSHǵI\sϨ|Ak]CbH:X9bl.s6fcFlsoUFKCz">lzxsc!!+v0͐v9 />tq8}\8*xKs?ƕ+w>ON,Is`kZ㽹{qNZGV7z(s8(Ñ jX+L*bҍ_?䵫8%!bګ=WwhXG7hpcOP]>%DTa-1hv]nE}O^͸Kΰ~,:y-,(䂠2:H]aw8 \ĸyY|ub}q5An7WA` W@,dXNۻGYSjZT_ ci!sqc{pn8lqLv(i `9gk >+x/U3I#NH'.uֶ୯k>K^VeV'_SB&xn4YsXNR}˻8ਸx,>*l>6U>(s{ 27ut4Sb5Rj$l1D{@kG$w0ρ0>)3M|h)q\$j,.u)(鳛Vi<qQTXX&X긩 #G"w[GvG`c-n8hEIN ( %l\J}aap^??8N6孥{Mt[#psjTtIhvu31$rLAdikR[ xM+``"Ε]nbԭO.ۙM:ko` xxqکaݦc.IZį[Uİ\;IF lKIl9X| Ǹ#48UU C*Y;exck) q|sX>(optH'ǟ n3#qY0a .In@H(hGg}v!-pEhkkٯqƧy[ æ]?Rݩp|p-+⚔di/kk^Ww:tx^40~'+h8|eIJ7 w =&;@lIWffb)q 7 Zh43<ًK-o1L*|57Tf'lC{<Ϋ{C|5|&Tv3<˸pJ)`/2KXC@/qDqm?|%<;agq?GR4❤ _` s}Pxc,Gi^5lo[OUQc%$m[ԇZ]0.nU)ؚ\s&g`'n07 b-;)%s@;ET״nxk귍4ly3abC+.,/i_ >';R1K<ɹܯsXlϐ|$WHf<Rk%w;1{Xw:)6SsE&չ0~uN7\1W=ŖdY(-MT5Jׁ2w§'tml^a-JFDF.EgygM011\:3p X;SO%sb+.Ƕ3bW( ,pzIc i-$Hlx7hT;$ft6$zrF;[cpU&C }NuN[ { cl}'-s9e.5 C+3!l-- MtʈI^wݳ82q^~{@Eep{r#Q! []L ;Ǔqf2뵶*5ls87(co룯u5CUq!3Rm2;)E(+lJ >![B$f1<ޅW%'UcS;VtE3Xy:|c;eim̫̓Zwp농oI^3K7gl`D\i#6[Td< _T "`$xI0ðQlyn=TfZk褍]uJ!~d|bĴD!FF\_s'wkEwwRV=$i*5R(p]5X@?Q:]SN P揨.uuX4n\ZUHcjMy|sz+gkn?Xi+TT?73cŕwEJ,L0cKtJgW9$ Z2 쌀ggf;3N[t@$.$pCv+{84rDn=UXy IV qkr8d;ƒIq5\uT2 tsNrPǕ>Vq#e(M@ X8DG(I#l|#^`EDx[eAZ̩Z3 &6p 5Ie}Ԥ FN`E9K0JڑT5s-k곲cƓp 9f(fBAIm@T5$2M/Akc+y@1@6$kYKe'-ѥ&e bfkM @AmuVokՅ9rX-Aч2( 6$\T㨸F);9$\t:^K@--#e}إe#UgH k9y)2mrn曦Q0SL@ی0AD,"6 _<zƩgf3L'eGx 7ŷ A3)Jc4oV5 h5#VI7TXI k{i>Rs2ؽAj50Jb㵵H]0/@Hي@H kdk *L H}3}w͈DluchrZn=GJ n k'e:+4VuQ٫S6jwefW IޗW?'G<ߡq]Ņ[aSOA0( kKC5١v U=UMK/QMS˴ȵ4u# 1PQ<çp`=wu5D>N66VXxlq ;, 纬q~#q!"wZtHƖHH~qi3*jgh?׺աܴl}D!#.X$ ym[fcnX{J3-UQ9ĉ#9*qi2 _i/o{swF0 ]װR. 3vVII  5g[#CH.o W8WSY;©t[qRAv򹑵G\_|bzHqfF~R޻pݡpvpEòa4^"kMA릠Jn4P3 jwldßQ9ŎqkF}S1n#G3i5d#4&eaۙ7 O%Tw8\V,=C/ O|S&րcci:[j8 |X6au#S nn/%fUNk)@Hϓ߶\48ϑ6w<=ێTr;\g}AVFsuW;dx>!=Yx\-t`}^#66098sk^8wc,0ax\KsAeHn[y~ؿXkz㟻yih.ki< -G~߱^x|bi*&p?-L vP \uu{bsW_+)+q*ülI#(aTI$qikW mwq5t {p44HhU7٭^=[KGc3WWZFr.A)iWGfGd? tXly8?ELiB 1is.F4;ږ#`M) 4,"iS`w/p,u2vaPp-x#vBsAG\}5:o9m#c[w\|辄pҪ6ܽ8&1KO$1>Y0,kkf Z/:,g~|oXNYX見+~05a #9pԯawn猷˙v]-pkGص>)b?Uph;4\߅.ѕ9'}/ʗ0/qB@^(!Iw/}B 8'A|Q1pLLk\Kwf2l0fR\M-,BZO,tc$Vs ῵kq:z:vgK\Se>~<+݊6-]֑2Y~V]tזRj>*v)G5?a(KH ۋ]tC[xҷ >t gMq'{evMy+FE[I_-</-;bF'ꊲ&١wO'ju{tեN_O$(;E0(q ;Vw mdkZdXpv_q{ +$ fIJ;e,kDW ]ƱLֽ.࡚A9|tyNجoVO3lxo$_F }ZV**qBnЛe_,eY܆Udz=hTSWT8ܺ:r@4K~i7U2@]o *jg,{sZ?$B9Xdco,-`x6:)qaS0wg~|[ #)SIMgyINa4y戴[fkd㧾,'$do=ͧ8&ە6OS-e8 iz58tHﵕG[ ۥ"Y9#%.D,4[t/kװ9[?ݥÃal.rl.t ]&<ߑ\ TlfGw#5#v[ǸlUxX+wX\m$/ra<[Tq5c91)CfSp"ѣKeUǃ0ڪQmo :s6|o&\r[GF Ϭ/`kLRsωu|*LBQ:0/{Eh! X|~\>ڈn\ٶ7<˥ql]mOZ(#ms&+>kVqQk]a=2T?c4 .9^y[?g-}~%YU}:L%Nc dvݦ,.q?9$ϐ7qp/r7N-b썵`da+TH#xN-7[љcLj݄㝏?3Y Ϋ4ۮ}WQC=\4uQӹ8.Ck6#qT߾`Sȑx CLyy"5B7].fVejNcr\o6^lV\2aY-;G3hl|"mXMwZD5 \/q^:5x & MυUQLV^Ĵo4yrgexnsNʧ\P-l6^?Xf?+i鱬l))n[VX[n4_<{,'őDrѣ@@.s?lmwSŘ.K!s0f}rrnnVW"IFS;{\8ܒu$FKڕJt_D[Tt]+y'dt_+y'o$h迢-y ;y%wB-t_+y'o$t]G.@bR#tlKn:6M $HUQKm?uOq:gecKmSb澂 SC$F蟎V$m_S%Dqrh;kuP"9m|Y&UtӘ@ XFPVOftu`IfMG,ʾm*mF0r\ZM~;EC5iU&#A1Φ꡴pļ@x#(6/*  UNJ/T6E!kbG܃1! T>"k0#N<Ϣ-w+lXXL]37GQOtr@?!5;04twl:c䫒 R9MܾD`l%fu]}Sl񹅁Źy󷪶u4"6eh&˜{I7KU ZCߢy!vHJ-͵ ]-0.sdx#;Lj{!D\kfKKZbta)o$ѥ,wȌMtWsm76svEݿ($f9- D]ɦ>X/kmg\\JiƑө],QUaTA>'6s.a56pvrH*aSmk` 06?uRl+f}從jesiBp63l+6J"yI0phYv7;͚3+Ka`u$BZ\38(օ.v䪟 Ԗܶ7{(n:7 ~1du ` nJ;w`$IUCǍۘ]8*c wYYrWw-_Z;h=>)¸bXfRN(Os*"o e}fmoȿ|y*!rd{ }:ܛ/_+)e3x%cWLLu06t}M3TtVmdxtl)i/y QGĜCb~$ Mϙl=P ̸_h`R #A##+G_Y dEQ#ZjMR7-k6|QÜlj117剑H)p*C~mxl8a9Y$kKC\! bvZx2JQ=M.-8m~jeH ;mЍn*;&cxY[i!:w8k-Nm: uZ=cO5n a,KDg4_ǸfK[AU 5xk`3}%eOcq7nm?m"* JxV {3e%kł1WʒbUrU ]aO-Is$1<ƶ"`%7exnN½N2rlRI%bHZ?ulԒ墩3<Eadt;+qJgRE%vK,fːo%8+y$16iFCv$7wj|G_5jՇj+WTUgIv>,y/RWHR$4%i^ȷ&) ; J0TH8J kV7uS@qqe|7ٚAkom85ًs4kK _:slu:!BlJqR5#u!Q߀47C'#S!J*_%6$wo R(^@qђE! yj dH#-AŵdNCf5k"lHmM|'b$;u.y82vWͳnUWP66K$862[rl ?x8y 5*7#/.˝c=`0a`;;qiꮴ"hydtRrJ_t[?J)aa*S y2>69ܷ\C)0NavC;:Ȥ̹a4Ħj̦Cq`hՊ9._a[f/k*n&\O?dgD?v@ I*FȲ,D];"_]BA_WWIQ-5L.h^ZBdYa=5H38 MVwSRk森cF@s@%TvT9Qش<0)s+HC% ej 2|%mj/גFZT`QC$N6}f7}Hmƾ xo %S=D`~f`Z7όz8&+{'Hs".ؖā;[kö3W%4 6XHk76^OS*?IK%H 3"k@_΀,}<װWl5'nA9s^1.71FQAEhka{ae"-Ϋpc+Yb28kr\ᥬ] \3[GK]j.53.GP5>ܬgPf}+k%O8 zh Ma̪JHcm4}WV3u:f.a汶hJA| =d zwH$'^Xq~k-kXaC5%H{%cf5PEVML]A6=A1xMX`sߧӪM e6.칞zn{ִz6U#Vڐ,Ou塄;kR}=P=m=q m.c YhhIëF[:( :xZ"Z'ť%eM67442B@]X:F SkTes!Z-v>X4QmK{&s@౵{cLGjt2#luJ:)ٙ(jafHr7z[Q!н+~MMaXXjXGTcĦS|es_m#ЦwF ``7 V&Wh\kѱEK&gz %KX-]TqҸ}UpmCctVu)j]:\XcaP@i\ |췦Lbxٴ'kX[M;ݜ1.:A7n=%r9$Qr7{\S`M쨱K+b)Q7YitڗɕTfK;z2*Y`hБNCs<\OJE[Aidmlvfy"Uc'}A{/ݠ֯)( oHkG3YSw o䰍=p?2N.ʞ)|Gik8Yh^b6XF\kH:KSλFn}UUKEesfG#E:]nY2JJRvj=ϊq/Ô9SM_ 1 pk1 5hִ}vX5q'1S0f,l@%ĒiԦ _qlэ,@$Aw_qZ?TD3SպG QҹX5-Ovw \Dkg%ji_ a-s\5T[oh/SYтc5nX-PBا)#ĐJ)sG0%ddK, eJZȲEV@H,Qv@SQv@PRvBiYB4sEe,iR$ u-L$mlQ&VQpIV1@ֺb8LXw jUauȇmCX>G11m7YlJ[u!sW9G-OQ@%thGCpWL4Fj̦VeMVL-{$Lns03ũ;?2mjUZ91k u$sJB-n\q"S>7ұF}:!EprTrJDrP.$] p;賥1]Ik(pSQuL{$Q5y]Vhsb,֝~Ile ]CJ<'SW82`m1>g9u{{Ck] X3)7ht[ yF).s,tK.Q1Z[*5=} cmwOeN  ϒs9-KuO٥NǑvv0 /6HKMS!HGTM;fe1uFVtᡤ{Ry*5)eaCv9q0}Fߧ\딂٫u.x#;5(5L0Y|l~s}Jedu^#:ťk]Q+Z,ցy _UGJ+FX;+-\d媴yYusԮp(ұ\X?doѯ;OX`sΔqe0|iOvKL>^k6ê Ly݃EgìQSsV6@4ve7?KX(bZN {zJB%E@y%s*)$U"Vk[k26&?W+x U% {rM򈝡kM/ldZG"-rPYޱ^14uoa;o[5E֍ů]I^E~ TRws{ F?jJ Vpmk][ &7 R.WEiB`otn]k*i6k@ J,^׍֨fvHƝu蜘xpk 4,w\bf"pkeciǪK*Vf#i66o InٚEwoqlk REII~'؏I p-u&̤8oDeي4cl 7 _Sx#1pԕa淘V5TOϸ|2jƫIٖY᳀6Sh#^;K^ES_<[^*Td.7_ ;G0nZv w 뙬T&5% oYLE'o>Tt.`pU5$3v$On=ac {.V3+ |9j_ %/7KC@p-NFea!,Ѝ,ԍnQ{JJkW\ob5+EnkZ-ɆF闕۷Z>2xk[mI22?5>eEdٗ}UĘyQmKo+I~qh%7UrI#IIs:V\9A&"5."y!OUAd5'ewK =6 -Z5nrǐUdLô%ܺ+2f3`t(F<ˮuO *oQ)orTf#a{Zuum~g_Blч_keH$,ZT4] {D%Ie<]WIMs,3(k#fnPTViaF wGsd̒2-{w}ӨWb5Tqj ˱R3e * 8:9vfl.˚Mccc{v jLZAo$jO#RV͈=_EQ _Yk%N[I) -o-w>ݱg05>C7RZw>K7C6Ym;x5Uio(44wjZ<0sZ9y0Gym, .Ѡl?qH,dxn%@:xu9|8VJiN2Yc,ku]sxS-7w-+9=e``DɈR2G7\^8nZlG2>پ-,K {@ }qυxe {pX-EI6 KQvuel(ɕIXk斆3`@a6נ;/N'bXKE +D3w{ 6m&Š}@#A-r<&& ʹjWbqL^4P*.9:1n’|at4fr_[kW˥,)ͱ;~|HVBy9i!8Zx ĒJrvRty24]L sRԹOkw|N.kg%pT-E#]B^o.*&0UbS :l *xN)RUI_,3XZmWWV0>HFZ /nd%Iu|GIS,QVBv>G:I5hZ4 |l=4 1]ņMKT#~RFSZF ip)di#ӵ0umŦ=z~UnNMC5[-3]E\oj.E+\_nW{d;w-hlITTI]fĂ@+O@H`w{<=09jAqNIHˀVUAwL@ a'oHꞴlώMbD%%f/$zցUR6lJ]l ]Fč MR6f]eqv+W |/-$t$,Y>h#YqOCd_/!zV3^[GJ{+#=Z27<( FCnw}7]YC,e.nyDp-r5^.op 2[- kus@?N<%b5ixCZ&æ~ Y {%&Bӡםkd2gtC;+,gqx;6HB\N69um=qab,9 $gv I#^Zvŝcq]M6֍of8pä8XrI_W3i" XpA[tJ'\T16**#:.;X]\\U2gIeq7.'%\c5xn5]I^%l39=ĒW\oUeepVZ"ˠ[t Ҳ@#HQdVE4 "r(G#.v.sQR ˲ ߗ6[uwfU8' M3 ŋ!y5 "Ky5oU{Kbu{fc5{ nOu{3Đt4t4EM6xۼ:[Koj\]_a B<6IhaMikO%\qD3.FUA .4FO+Z,kᤌ14rFĻM'r9Eaқgqݸ:*, QQl 42<$I;A؎1[jd#kVzh]q$j97^s y'* ؤ+"hP$E6 =T.a?d hK@>e"ۄ{&QY"M4uT̑2NVֈ#e{aF :/K#Wcgt/.Muﳏ]^ῌ klB\NCوI#)kܶ:ѻ/@hkJ&i}/f9*CÒ<"N21;WÆN3˩;5!FlvqqJ  tt&֐]6\ogj]FbQ?wTͦ8;ư[Fԝ֫U8hĔw (4'ʿPV| {̝ˀ:?ꜰ ,p6xةM\$kfTߢ/{te 4w3ȑl$l"㉮ϙ@o_iK5Ky}o /f/i10@F =e*XzinuxлK8n3AUTL*i%1'_;MbLJ>#A:} fXb`"ai,|ZDpD",|iv[8J(u?vC/ap.QQ1H hPzWvFux#f ŃhZφ)5EdH-CD f꬛q~V4lcyi+?h i~Ai߳ YN":w𛜽?]ջALˑIr务&7D+KHg{ogz]#/tX:lx#,UjDNsÙb|Yi*y`ؑuR w neӒERe!;$yqfcbOTLDX[cSنW.H蓰6K cļ䑁s7NMnʜmdFjE(ѱ: 1*ʼGy]-N>SY#/Mhm]f7R9t>)"F^ʝ cSSӲ JeT"V{6&ڃc乖/Lپ]6 2żu-щ-#Ctds\9bWS;@kesB^ߪ(K4vB HG^ߪ9 MuB^~2TСGiB=h!/dTIJB73I*%o~J$"(#c݋-拳q+&d { i-=4^#ˆ-H?"\tG |u^0q^ к6T8g aRGr[zf}&IpI;8F$k3^q%}94 5Eiŕ0v{rzz ,lp? kYeos5. <+ƒ_z3XcJH$hs|sM;A7:&X>U9م&;T傸14=^>7ܝal)WU8luC,nXݕ;9&ma}$ÝtYۚ 8|PGU6Q6/(WP j u-ũ{d{Kc6qPau-=,͌6XrtCvZ/\1~Ή=q[vtAZFLV^F6ZXX ktvtQ2G{Ɠk IWRLV=٘(Z@nJΟPӊcNzYVpEEkc>}ɛoeqvqBp <67\_ /4OĪ*j {iV2Zf7GHmkEP,GNHkME W+A^߯fѠ u]b ::(㉚0=*q0:x|Ok4m-q/27 s? &\A 뮱ùl9bh`ԎҜaC5.Z+Lm7/|ִ2A4`Dm aj1b.nQ;alG4մqUR84̏~5QZtBI5S̬ |<=#mn@fl]9*D ξoMLcfn[mсsI:O~%.X,r4ci$Ug\&eSl$f1;揻q:uxdw?puo6 bxj^Z0Se8 fe:<$Ef6o?% Y ƍ ;G3|dJ˚Smku/A~9YMHnjv%'D)e+&Ҟ+F@Zd0I X8UWI 1}q~Mosjl贉9%y0w\%{vXg8"w@$Z2alkXߧEsh^38l'V;erI"Fmc.dsDLcZ?e]X| &~JB4 cEC%l쉎h%]xBX:_!5[&1,m~J©tmi-r沴(49$sfktQUфI% c`%;ȐG# ef85m3 Ł9v>E{CzmKJǴX8lm{-l8DNUJ-ipRYvJmip5)IL:0uk- 1Coοu ic2vsX#[v8w B"(>3p{su|04wk͝ M>02Q>q%S]YHFAk6 #- 7Atts#llVnf+ &&fqӼq$z(s0)is[Z691k VdҖ]%:=%g kٌ lY7FL]Ԏō7),ctD" ll@s!mK%GZ-vOhd*3ZSZ\+Xߗt oulJSa"vi{G kf$ƕ* T;)-נYYKEJa&#PSb:VvF%c7U>P*̳9ͫJ.ihvP6&fpk|1|؁kcγѯǣ|=ă)J :W۔SmlC4Oinκl$b p sdA!CO18Hu!KEB|-Ă/k閙EϝcqU +f_ k _GiQkne9iYa} `(n<4)=TG/{lpΰѺP-jĪm.]9b*&ũww )~FvOaĥOn6}1G Ku$8sg@lM,({jSX>WI$N$#cQ i;CgJΣ@DsS$:8=i>͓*pPRG#6sˋse6~ gmSc|!.6hM:ןʑyy>7eδVs}!kDhg9>fgbhcDlkFUH6Yw zpResR8SrMTW8\hkXCvBC!"vh9Ul̳cFwf>7mЩ4ku36,#|^f=Y[6eM3l IÏ5BBcqsZw|@FDXVp/*͆&_,uw+Ij쩗^00JacQv/B/ Rw0EB{u:Y;`!MQh\݉PtZ5͊M&rZ7(fTg1ko~!W8FU9Gm2M< kjJzE:#X]>rq/ƸEwq0h<6MQ)&Ҵą%jLh1omWğ[OT )tr6 ńpy%,B y;4x{@1\f CGduE_S"+je^Z76>|_O85*3_+bll6f>2Nn_Kz:XƒFotoUq{Rm`ڹȰ "uș[#ֱQU+ik@cIm3EmEm)\Sn{ưol褃MMmAU({a +*(ki0>!,Ѱ h[V9x^7Uke2K%'~'"]*ueeF!U5U\T&{: N(I}oT_fT sy*bAgS6<ӱ털k l JY䙬80YK%tBND@>GT3ydY9ۏ7 =e3C혷OnX.157&Txm54&֊25|sѹK%=㋟y2ԓ ʩw<|-Ob8%TT8sf@6[{EUe,.PKCdk,mh7oQA,8d\#{)k+)57F {bedf/ YN?lI&5ҳ,>-`p=9C7}F>y{{qEQB+dG$ր#9"ڠHG$ (AB(( BdBM$UJjN٣^aS( Eͮ?1 lmFyj|Fjf &B <U-7x_du=dY-V%:`n 1 0wYd$t^!c/k;^k;&yԮm55fO#^u]?^Ni\QD|L2 X-rJ"{p{$}38qZZl~L l]9B~lВJ\g08)ka䥉ה s\.|߯ |K3t:k8?pkÝ =㦨pvg46: 3ʎÈ+d8 jj۞ NsดU!293Fi0Np’у+DcZNFCIqݡѳJ-IJXgqHd4aLH <̯R3F~aE? ݇ Cr3}ŽVf1Ƿ%0wE>VÐ`I4vPFVz*\kN VZtni8j V)Ņ3K 4EZOicEtYO;NV4k#+4٢)x4x=hҔt:Sw+= k24~h}Yxȧh 6[gPi>  SJS-G.q9)S|Z\U~4LG u=Lk Ѻ^Tj`0OJTy.Mꩳz<]wY ah8vP:7\ M+5OLj`K!utrj$ y趧ogX-_w<9u>نPn=)#s#m{d, .˭mPI*I9y6qsͶN. -#[ 9{Ɨ6[ ڟuH#,uUh0?Y >Em4O|6^plG;i&Ǘ2W #nPIͽc/HͩhSx;Wjii's+|hsm߾#(i,!7[TTu:ZWF],G o\×\Չ {\.rmת ͒>'r=GP0-ݮKՏ?q{"PnE$,9+I8ϓB6U-fSr@S9$bjGNHB<4 JGg(KNI%YX4:+JLS=,m"3m+Y\FH46hf3C}V;";p=ya,iys+^Ft:> *nZ޷AmbAOcL23E;fVM Yd:򺶣21ox2gEU9")Ssewzb朧PG#\븼rZɤc bXI$id1c)#<_U7$5ߚq*96&[~j 1üVlK!ϽYUbU7|w|0SuTe.Lj;,0[y5r̮kĸ$=_,=|[Z\^tWp*G:Jfmi# xFod}_r:G<ˉX`,R҃F,І8/}t;)ח.wodc6`u%r59NKFMHH3,el.AUf O iKe8sn"5!0 ֵԳ5жar R>q҉C͠qzUXeSP6 EȽ28ζhe~#ӣ\4h8Ϝ4gkbV{_dͳ+.ly+pԜ-r40Ic6Mr`W9ݲ9ǒkfacRoݍB"4mikZ}K!OG1#CnYXGrB7;sPaQZ̻< zU moq4:|=5SFqxa9Krĩч결4ݻtR}#HԂt,)VW+[5U 3'Ҁo}&!{66 gR~bY#sg[vb 2v4C4H#plgk৆8,^-\ӒGXÑ͏1D\57Vb$?kKaT]l\DS`̿8zI)e3MFOBY$zD|d$h/'nbL=T`fw_ 8!GWyhE_mC8Xrɏl㒣p{dtRf؋uW3*"`!7 ڹCؾAYUXiL7uݵGќm M,W,wwsx)ےjbAWaI%heh̿7+8@v[6XLS .% %--+DE fA)˜\'u4F[9H,q"4k,!Ugkd ,osrh4`nY3.j9m<ִ<+JHZuj~u2ɉKIÕ=I5s8K[W3\l#w}xG n>u8n0m4pjFNVFudCS. NoEMKHiDnatPBzaj4:\,FK*<*p{}YӐ^wiE;d]ݏ jٌsuwe}tyYb{<+yY7G[m9Qc=q% ty(BZ~Kn~O@\dž1Zd |MCK'b_qG;k$ !ŲUvŷ!O>571.${f16,08:3;`8+PLsg믭~)*i+% Ӿ\{Rl4\twxۏ#(_s:Ij7uPp7 K6ea!v(覔IH-b |-^ D:56W3 <$;[hmEF/WXRyfR/˭+rEv& i ̬mM]k[趾hhmD?]i5o.kϒ-`x🞩5Mbu1W>R3}[ 5u&P!h1IVt۫\}Eѫ2\BiHd,{RfW#+^6lߚe^o>'Ғ쁒 9&wv,39n.7MB&k@8O@X35>yl;z(T:C Vrf6BZ8 G%a+fsllf5[aly8s#ƺ]sN[<юm k- XƆ,9lBѭ:8UgrܒE826z;Ii;4XLu sIyZaZkOdQtiS䷉oU s`n\ޜAFtT_H&`@mb. ZdZ#xdebI#/84XѨWfh Q9e{@q˹Z켈wHɀ4p9L:>lZ6쮱,f 52dnIY*#dL'gx<!rf3 }>3?tmѤI3.l%6Hmb5+27.7[ K䓙ہTŔ%~f˥vH$ۻ]?O {c14\mhD@ǘރ-4AݥxIvTGB1ϕݾB(\<:==Tr(EFk0| hT^x &pSSj-vC|c$MTT25ܝ"s 0ӵuڂz5mgn YmU-+ 0tpF\2dkDsA*, -=VV cIWD6Xu/0GAgs@7T)i/BWRI )98An3ei]b ,#As=q$Q4̍s` O,X㴍uⵍ0CG1[\e;(`'-4g8n@ind{'rGRV|Rz4lOc6YbYP2ZMtqb״o1tϦuy7 s]!X߳XY6*up Y5Jq;r C}բH>jRW; _TYh I^H@@Q!M$ 4]S)_t:#hP(!isB! !!]Pqʱg-@\ ' s_;,ܶgG<(+Q(/-#a{W%S:Yd:xŧt|l:vW (cCX =,(.؂<.>KœQٵ@ܺ9<C5u|t{Z^tQCAI @EC$6 U{ѵn<2C{6ג)E4eU<{yRӾJYfSgZ#7uJ ɜt/k_kؓ1xdkOz Hdn{{}9;+ְk@u.Q<~4pi2=i81 )癔A`˕y[ s[!:ۧXI%d!]xqS[Lvy1UWX"klL4t<ʺccde2Mf!,{'-nJ6=Aûѫb-|m8eqGS2Wk/ણq1 tc$2Qo33L#ghGO%lDi{[)5Fn2O@h/'" ht Ygit|5l'Tԕ;Ay#Gd ']0vz_o-Z! D,}&?XfjK/F>ƲFdڢ@ k=z:FC DMÙl ۚvDZNWrI&P-+.pi6j^_gİvEoANpyrJ[Nm.6iYql*dqlqqh(^Ff;^*C0f[ZdZd.mA^Jc-cEJ⠵%aXx6U1SHïRG+hଂ6ûH6$^(\ 6RS፽|LO=٠Xg?/sٹԄcZYd57;_W1`hU6WmDm4Jp;ie{G:;FKE4wmNMy!g*HK47',%Ȭ3C _4խma kٔ>K'YH]ChB *hn?τAP&(,f7\36z8]ELn$3%]mՋh q8kwĶE&E");耶S}NupѩÆq捏:<58h PAwjp<"3`H1>8_JtRwNII6Ie5W5Xds9-x-- gfxoxdc>mCjDI {<tG#HF #<`Eh"M OV461a+ dmHmE $k# }$Nq-p\>%C#or YÃU1..s]H>l"Ų@ovrf*L]gfusӚHf'h6pipir8v(*j$ >[ᶠKGLj?.Heƚbʊi0=2 nJ堻kɱj&4$ܻ %+)9@'BG&Gl˙ tǑX| 5)3ɰ1CtV8ELF rIZM~G06X9$h ap3ӭy{~kQGVGeT253R)ej]|%ycCmRA9֑ό 8zF6z8ݲ(#5 \\Dpr4벮0X5rhe7R^Όdf>PRņn ZH궖+G2TwSs4G#_f Q5Q$ nf- q=[sHz#'-)YmARRL6b$$Fiګ mE\8g8]aNj22kzqS!!۴0s'-SF7VS"7>LGssm%y| ww'0K-̫X8&IA}6oK+$w`=Fl>:־M@nvZ3k݋8#O j'euݙ9mIh/xcuQK&g:Yo%c9CZ#,~:pY`>A+rX' 8&b]{\ʶ^ZY渾.PʍYc${ 4ۚ{ٟ`ߥa8cZ$]@i~/N89IF({G/K^Clƹ#C;)~+<~DŽNZ$wF0f/ʩ B2n)έ]gQ"tR,Lepr[VQ F#*Ż^.QkUKMRI1QstK\>'~I5E$²ݡy_9ޏKE^&#а<9HmW H拺QnUR>WG;0 מX~#}F/BE{HEk'Ӛbϛ8%Lb2KK&" FAC`K.eK ҆1͞/7o1_edYY]D؈CvMz+9F-fMŵ*ysķ uw\pX-Y]C|m=nnU΢k 7sÁn QØTӚj)jH(mskNy\GM~1 ʹsr2i}JS`-ΙeW4zE¥o|Q Z׸ʝF'M}S>Ge^t JK!32Ycłlt oAN*ɝ4,|\=j){b˙z@IZ5#{@'. Ɇ'xb^g _^$e.4V$ns_v>8I&kSQH nGsV8fA+;U9h6<H4=H-_g+j;[V8lO%V400xE Dnt=ӈl[ı;m~5?ݼGu0g˭Am;eť[Qƾ ";L6 -?$s;<=[FK@ih<ռt E7IRq4{MKK#79aQE$n}5+LDԍzF%Z5%D**gU7\}Gw^fW4S >!tYL& x$9ݐZ wzK*{ײVC(u$9:5f1FMP{ N{esI#r"K MXsP{:ramIMwշ1:HEs-ǔ;967A7vLj\hLl39e};ÈF!fh 'l-7;xd,z#N%+ŽcylivMtW1c 뛕#A&SZߙfcC#|tWx~3>i}_'ѯYm撄S!=LYivKxכ~蓥asy@ɞxX q кG 5E1 -_3Dsfe:Y)N|ØZKyM\԰c.R#WG?~ XV;2ߚ__c$q{i]MdU5Z'MNA%9륊0*Ki.{`=AG]H|6͍V g2jܺJ*%G0R iX1q2i/57 ^k飦` OW9=}Mwﭝxʯbw ;.s܀tnz~~3Bj\W<f:]Ͻd:LNA!plL-bw'` o<;#1Y%is䰍iEPm9.qQF\]iZJ^[k4.#[lim ݱWTu ˍ ,PthTTr@B,zte@}T{@ET#=Є!BǪ T0([EQ 4eNgFAt!]n!}5Lq-uFHݗxSF;_eV u1ljFfLmk\.hᬌi Ey O3%ůiz8'p-t"9/>||58tfEDa{o&Z_QP."1Q1s]-,ݮKꪊjpyt!.&LZJѕu{ߒpf ZalrI(ay|TSQ,lFOK.3+{M[ݴkԶw+/5,*c#O!:4yOYLQ,G#{#Wot>tu7X8&=.fb8& 1h :\Də)c9$onkZAlO%~^-.NjW<Ih{_͍!MJS;dxZ,y3Colnq01~JU2@I)@@v3 }g,Wi-موb˖|)_=M<N @{M ~Vǣ-;浖1\Y.MkDUre/\meg%3h_elG5^fD%0ߓdmܬ%tq9bL 3EVv{Lu'迣`r5(pʬ>GKFu!i=Z 5XTQ '[`K$S 28uHF0̍7I8hb-6ˑ<ÁUNN/pWbFa?ǵOv ?rR;o>7r`>6_=-zyX5Fl$7)ӦYj C s+'f}rdvE-Hs;혓W[+0jb:8iPKF ֽZCԭ+O͑% }6pHKn.J߽Xdh<\˗7aeи0*^*.jft k#dk,w#b<)/L[#0$t$3 3*1"mEb>K6 Tm3đ\-}YJ/]$mp O-; gq`9TΑњWX+/aZI83bL. ",i/u+cj0#45pTybsKl ;鲵4PaݢMucġ p{{{-ë0-Lg{;`X][i*gBWk)3 !`KƖXweFxKQ%.(C#7-~jlxw ӳ!s@ګf3;@1/[y^6N}:ך,l&1 \-tf%YEjZR?-dםvUjF&b ỹ5famFiuDqтŭ@k#68sۑuZFfVͥTuy4sI-UMh|[H}"u9%HUEDHC!e32K{uz_r6O/bB8ihlXkF%,mDqmt^̸O ĠkdU9{.v[z1[vH__48A(jvɧj(.XjKQMUSK Q VS9=-ETQGKUޙ2cIl؅=]# AsY]uUd嫕pcccuFZ6I,S=6$cZhhiK+b3w!d%C ׷;;å.\Tn'W57 -d,7nK`vzJ~fq&NSn婐fta𷞖^5ωoo{o^m-F)[@Ʉ+Mp:2Tn%sH;^ljӆUas+wtkuY=Ҳmi9g)a<ۅ㘼r N֐.b{OP5]/ E%,G` ӛA{4cH(c!dDRa9c}K۪iJ9Uݲdw_xmBbc۞C_F0\7 88}/SQvsW4<#!k^meשx`^3~eD:Qk֓b_fhG3fYbոl?s39 1 WXURHi{R 5[ | =s9M$58* eq|*k0ԹuJ d$@ӭ^tm8juR|l;5'2-ޥmrҺ?9,lz처 W,.xs]y}Ut@0\c6B󔻫yn4pܵM8c`:%4f{m5io\Qѱ5`2X"1[c_&o}Sو^;Khiosךz6=(x!փ̭7"*a1ڵ:e"d2V[A~JƊZFr#Wo.xk[$?q.'E^ʴ^'27ťu;;o%&B LM(fM3;{ui O2UY xMՖ- Ŧ#H|轐Q_1kD"(U(6i]VJ<+˔ \gx5hp%l47ƖhR(^w1 wJI<},,@w7痢ӗ.j :fxrI c8wdRV f7 jm0taͧom1%9w*u|EU,L-:G^v]m-kEsMl,2Y^=sA;.|V`4n%'F):e)zGJGa檦0f&_.:r>zsSõpz%ٙⵍP**1aQ37[EV-7b3HZzX`Ϙi4 M5LG5YyXrIPTL\D@q+XøW`RGC9eu&k[*KoysX\8xGp,jR94'VR҈pN冽97 u5E۸pR9i~疪kXo}}U66vѸqu5k R!vg4 HO30n\nf $8G$v"%SWx{^P.nI^6pm:~zS?vBƑe%o{b3ܠ k|qGoڟ~~s8G3 y-n'ADHLwT ~Ta`qD28KA1ie4aN$ES.VznA@+#dE/rw*Ct蠑I.tLq*Q-Ex*5onj/%D4ʍ;ܡдhABA4HBEЏuL2BHGt%B9.!R& 8: {HA!sә\PsjʌWF\1|u+]]x`mֶ*> 80q[qs|Gk)\_p%bS.LY'T9q:mq잟OGё%|iv8Y=5Y8a࢞Nͳ\rq=WS1V AsM<4k5{El-^w5#]}_uv\R[9^GIEK3wk\Ofg qcPW=Jq*W;A#rCrMIRNz')/7c+jY%ScZ2KYtJjzaSX \q\~16H3F{ V_~8g hhjdt9؜ptKsW1N h+sj.fHI˷"`F|7>%k)ucƄz/JF:jiXz҂ٴB/n^XڊxzꆹM.||>iA'I&"k2.Ўc.xYѲ ;h]WŰ Z:Dfk>`a]`IYV{#5&ÚyET܎U&4E=Au2ɅH+VZwb[U嬭c .m#%ltٳuDZjY͔:*Cm}haTSq r v{Ypz#%0m%MGsL\{JfK8[~ pyts14ogc8*ȟ6\1FIi:yT䢻3FڷTPSPQ!/g4HI3y.{<ʯS[SMVN@ ۢlZlbmgT>w=snrORYxxn+Uc{fmlohu {[R"ōāpŗ-;.U6>RîV#dY>a;;k.\wZn[<  e^14kX7_|`N_rif ao(qإs k^|~] Ӛq 7L( e/)Ih%Pjw}K8b~'Q7rmgmcc챸W3*avWu ~E8ףh'p:ꊯu0ʂ~VFn X|^#A$QS EkƖ]ǭ;uƦ :ԳEl㭽W! nØ42"d{fk9_m>O ;F;kCZ pTLѸ 6:u{7 P'ڗfsO-_8[8c ZJxi!gh5o5,(%mD4msX&٠`I{]$gq _0VQTf(_yq9^9uxu 3l$:fWt.GjL!=pMi7Ŧsf1)/,9UAaX3QI:/5q\!txɻuэkcp@ЂdAQC!861I-puZ342H*q@s A\=HבN5h ' i+Iݑaqn{nR+ Hǹqu.q ?%'w1a8ԯ3hnXM[VUᓺ[H6rWGx۩#v'c|5+ةZ|[ ᕒ 9?Ro %q `nx!t t&EwLŋIO2IxK6^Y;AرpWgvAnu#+TE'x[ Hb듶Oqlɳ$8Hx]{%s-; 5 X2L7;Z]m4$x|?%SqLj @n6;جgjZj?[b|s"*CIL5C$Xe~_C!6k_SX+]TYQ#90lWL{6'ԣG2:l`0Y\:W0Dj؂R~̴]ݕs " y+ʇW4o"S2 Ӈ3P==m{"9-`:z4d^F3ZĬqX[QJڎxa$y6$2\ф}gXN8X .)鄏m'akA}@Z+8daW4?l0X;J~r<.s[łI=m}se)Q$H0wQ-u,M9.hu*#B 5Suk5oRegbrw2m:ʯC 3f3,?bURWNc g1kn/a~Gx:i5R+ۧ˭C %JnɌTWG\fnN,jqq$I@Zz1ӷ٠]S+C.}Ё}R;B/.h @!uAB. ;4GT},A#tȦBh-Iv@hj|%dB,  A;j@4"ȲG4Y+ e4,e!+ Y]+" Z鱨+Ma{,ESśU,.Su',RIX:_ TSRL:qUpʧ2f.־FIel2 dk,$nmE'%Mks0<6~9JT{F5, hvc^t7`?/KU+b,$V~z{/j0=cclq.LJҜzum$;6cxcnHn]Ӎ i''Xb`kY}PWbX+]~q(ޭyCoMUD/ ϥc`&1ABLXd#yku]#{ v&7Pr6:\Ӟ v 87cgc[ 3Ii&^ڸMWP9#<7l2&u>.KD8Q 䧻>$oݟPO%3aCyfsc5;;^;F#i'/ #0*xǩ%x$Nq0ˠ>CB7VU88Cf: P33"óIsoC7h$>W|4,͉mX|Z0*ݠBjFv Z\iẀSi^o{ ΛF I6z"+kY ;2Ըd\؂K#H]H8@˧5 ^EJvQiخlU +Fe;qG'L@ےֱhq m݋5fGgG [߇8d#,BljcY04؃cP-Y0"ż"Nk\ɬmhJ2}mk3͍ܽA=W->wXlJ0 -x' -5e5鱖5.Kisnt(4q'ӣL}AqVc]h<4ir$MUP.i xΛqzo!|HǃB65U %˛tV|^\ vҵ罱|7{j;@kt"sl9#&yT@4gRrsvݛ彙Řbuq7Uci=y;\-F#2Rf2O7*?k3>}I*#BCld$vi/)sT=<0]Hsws.-+ٛ^C \7GN%|ֶԞp%~}=~P +ZhZ0m4-=NYG)9M[ے\uŵuD4d48,6wÍu$3x4kxfI>@uh1$}/)uvm5I+~gyrvrcuX/q$4<k[wU#,5BJ@+jdBVN@+;..\by4l+r8L3Fqq3//%2n H;jkhm PY"=atZ`I'~D,my[r}/lX5hɉ#hq ?V}0*na'Hn-ex»yvOISQ;| P >ukC%=SbyNWG ar7K:\Ec|yUz4| )etfFXsuƫvY@mg=뵶uqII_KYKE%9sZ.%^KIB-VC8Mgxx 3G7fէS}lz(m@ڒxZ#3uqq{.ߕ`Q~cǙX|7 t6 h$Wl!<˗5WX{%L4,Y-"q0u ițy_Mm{-u8@uqR撒p)Gxdm/{ h*6ЪeT5t ^.mF6;]f3)ɞu+hWz~ 5F \c _RfEL5՟Lx;k2SZĤV:tZ.԰*r2J 3VtoM VE0y,Y&Tz1& 7i)lwn6KnXȪ> GQFv#㥼'.ʋ43phːs4ohl_26>픦SC@m%r`<AmO#!uQkGp4l)&t&yZk?ϒ0*!øŽ [ tmX kkXZE\]kKMPS6stz;e cgJ+qgi)߄tm[^bqIG КW,=ln?Z 8 kclчͱa#>R) @`Z5/I8KgXo0Q YZ$-nv{XA%׺qG6jM76a8xNǨ㕏rwn?K]{e[$uBJK |<29`v澮 sĔS\2LClꙔ=mtχrJKVUC=sY$$k*jb?wӗʀk4RH'[]YK=]%]S D55$ Zui['K.\ JrtxJD*$sab tie~gN> .dmϠfX[$xkB/`Ţl.m4Ҹ{MױŗOx<&Z .<xz[a~"G4u/hͶ -3&{QkKU#l8 ԮP2dj^/uPfڸsqcb!kyc(sG^2L4-Ѝ7EP`̍vA_J?dJLMy"ɻC0}[v}M%4o40snn#74Z(>j"$^[:86gΑ9Zrnv^D[ b8]O7&L;<7[NBL XikF-\O(d ^b۴>"\n 0Dmp̥g/ֵ}?<+Eˍcw^vSbL٩ 8ӻ.xf<^ys ݣaVUb(iܧpt>dyUzo.!-Ti,u50vjٙ qnVr~i}5g1qO+,1qk} eyt\ugDj5Q\C ۉې _~KO#d)[QNKa1!3s-]T:Z]Ps$~,AODxOQZhc7_ mϹg06:+Mo*gSDm9g++斚6֟.ѕ*9p3xdhg:&/Vs`i;WCM<@'Q(d}My[gmq_CFKA$<: -!I ,y&"e sTRQԑ<G]? qtnK2a52I#iJp˹jNrEٯSb/Ԓeܝn#P FGt +9",52Cm)^nI;g6Ѥ*h-uT`]ڧeY9sHCrnѮ=#[QM5LD(l:mkY#4ŕlg:6VR h[X9ޞښ*t7K# 1[AhQ49;=;{^WJzTَ~OQUoY9q:| m]#P/^= +:zy-To&0H~{tFU-#ZZ ,t9]"X7 y\Kl}}Q ,6ēֽ/.AZy:1\i% vy\ǒMvTBC+H 9]^]y\}0MViYCL`]RGrȽ*⥮XxlFYRd̶b-aTM9v:wXp:΄Kc .'e*<ҝ+0M;-L( =J%{I7]Rajf-nfsrY񚆞krf; .m>YZ"uQ$ݢ-v\.<>yx-t9n8MAaѭ}P9-GQ>i#[$C/ My`5O;3 KbnԪ p$O!9av,~-Ran@tiuYE,&);خ7 av]sxchX惃]˒E]SdTV2>B4 2Y+!tv@Ea Y;!Dl!FY!wGDd(N@@FAA\a.E=: sFRLۢrBh4rFB ! C`hsGDhDBӢP.PHӢ9 z\yEM5 űӘziv ^,iɉ6:[7-!=ԅ9z媩k!_bAs?YxZ@pXOSug+]:Z"8\K$#m' a՝,ye@1ɞឫ`}QO+!|O[n^o׸Ye5CpU=͐O'%C\l|eg΂& YmGB_ KwTJ0lEͷV8\G6782(l-nFǝRemp^> b l>j#g+#am{nWp(gI[O*A"-jRJka0URNŨ {d<1H᝭ xk.$zo)у'qWw8f>D<тT&8u'[.O1t5sY>ߓ[`}]{0)pz1yX `nncWĻ1ŸnIL e`z18g`ԫK堪TS3Yh238o_Up?@Y7 C;W XrVݝ6n.:IZ >}G8\6RWU=̖(0 륖ۺ<6t 0mrkV 9P쳴U-SˢkL~XB:<#5^}ZZ6C[{[AqVǗ?9llV͡}#ki$)#{qUʜFg6iD1i:U-ts N+i$[)k[3ˁ77'g\j@HnFҮHa,y,灰fs;0h%}0|8u mm6-s.OBrAQ%p4g Iwc-:[¬iED-]GF-,l{ 827.>b[5X0b܇b*,C: s4 ٭I\"VG,Z|>k7eڬK13Fou@cbv-2M.mݔm䩙[b#eeuNj$㫉ųY]AMnBute+vTgSEe'@w>d,[6; M,i6Yb42M $sk{.Jl[j) saLo4sGn;g2FOѧߪc2mx8GgU fQRT#W@|HӢ mlR@F:#D hF2it  h@4rF!!uEDZg? Pۚ2`Ipm"~~^ۚaJ)Fr5rԞMԑGB4B9]t@F@ j':H8rJy%G,`9Nclnw\TrxfAL<033KK@[/f׵ †EwX )S| ̞:p$CK%ɫ$VAhuI#_/n=htᴵ doGS+iٱE"iyg&f_*YQ("Eǡ  8EM(o( %Es9RUSOfC@W/cYu-G\FY1M; 9*I\;ѱpKg6+&hڒ66Z?mbI]CQYhJôxW =fbg [.ixir1Msad&8 |/&i(BQݳZttԂ\̆wŗ\EsQ{jjf2&=͍0rFnlI7gJ=Id٥farmf\W+9{wbޮ!X|!`!avLs ..b*K2Ȧ kFfE[=f\KB!eV<ހUqYE ³Fə69B][iK+q'1Y,In#Z#]WZNQSr9u6g'p3_Mxp:QW&'!a OWBO&X5G>h. 6$.IW.#GN' }䐹0ݺ՞]SV_Jzy$ob_|Iɻ,[_NMb7Շk.悼Pvfu'G+ $Xa#[OpuT?<h'nA[v_WuS5p":77[3>Y%lm{ek\CGAyqN~tZȸ.H,Nqʎ&1JښB̬\e(G5Q\WG 'b8EV %8XD1N9sѮiV2"s1:W.րE;x.n/3>td9B,F 0JZlWkꢩe54N;!وn/'?%654x<%yZ*Nw]ckx¯+'HQbt:aN1SR{g|䘗f.-SskĆHEI^˾SEPS!1vNpozs*"hL>x8,q-$r]lPLL5 Jn"] e\{OAYNwsHh{X`y#J3`N21X>Swy\nw:s)e4Ĝ]3!#xh0"kZo qV ZBI \mqUL8 C]b-mK~UZo|ÐjJġ55}5(o8wH{$Nkqep`j{MW_55amמ8G±\BYh) k_(dǫE.7_AuڸcKV$`݄M%-a?A 8tq_k5^Ix ث~? !C-H6 tW91.bd{x:}Q崌O2e3#KtXJhN_S<JbMuLFbB=zVjN{~cak^ޤے6=\f HP6 :1 y#5S \IN,g--ꇅj0G$F`:뢺q:F:vkk] }W<+xf'ۆ`oތ6\]FgX\\(*0ʸL,}ѳ e{pTu|Es":y\/(!s,\AT[ cbb:@wR7BNtVXvp;&1Yhn=Eec&k(p«2 w!wys?ԲPܮq973S9*g폈1nĩ*e- ac M^DGK{J :g\솟sqoG'wBǻ>ƪs&i.k`]p]ny-ÏT%%,mm-[\3n[ñp>_Sb.-uuGn'ʎ) d|'h~_kKV}O` $$doEl䳘v%C3Lm$oY1rF_iEj7y[g>y5x4͊c*ѻi>je,&pe=HTlNKMeepz*FUɣh%5hӤfq*?4opt , 2B΅fc>\Ǒے F6Ū\;|Pn"9J>;IOXx*Bۺ%M,-s\[M tݧ8&Sj[ /564;%嶏:Q K ~jNɨ g/`.h|.H:.݅x%@YKa!)*QAfgs{qcmm/W1YASY]*q̫|/`7Puq X7Qm35|V3٘Y^myg>TU0,n{`sߥ-Rj,{w> wvDn0 ;(i#pN#,;Fam?ew\o`:*ggO°Wee|tlFu.R #}UY bXL-c!C q#p:/5'XlsY7Fio䵷qτRY#;%곱Oc^IspsQu4߇]/LǐtCiDZ\ E+ZL}K,;.認躞fKܱ71$!lNa#>^X9*w"C6ZKz.@ msN>9ɣR=VۗFU_ \ҶZM;j~p1ٟ1}#E=KR?0togӶ,:R=,YM$&r̒s0z~Y̔Z$7esGt <ϽZN n艿[M9X%l8v1Xi4 VyqYҝ &}?dcc^j-8꺎(DCO^es,oVG$1 frsٶo)I$ͭ\SOˊM$w0κOe(f;+`6)m[Z; 9ubশ瘹gfcT 9'#5q6ԓ[L*["'mo[vB@rFܶnYj 5 "ߣUksZf[+%$^#+v'a~5^> R&k)G l&.Q &;BO#)IGERD1Оw(FIj" i\ƻVD.th"ۃ9i~1*JCIh!_]4/<]k많g\P ď'aؼys\MjFG}~/MN5sKhcZƱKyҖJgc#xsqJ⧕LhZ5/+SOHѴbu4Kc[,ُt#sn ۂUIM% x`9[ nMw©h =܂j ^O~k3O!?Ǒ}]$]W-eGke ) mX/h1dh8^Z=Ûm8 <J:$t@.P#N@4 2h sB44i@(ꂄh;#z GTi #(wvY$\F{i}-v]GmKOGŸs8g#Q EQOa#a؝Kv Ckeh2ApmVUB#*ʈ4 $=` :,)fFƱ–Ak:dmVSkߋ_Hؕ {\֓-7>)cf/9\2nUxp!k2~QQH@$^uIl ]@>,{/F$\O5$Ka(R7X)"ݧn@>VyȵGԹ7`mX㨎sjvjKTU4+\+oWhmAvB׆8X lͧvV1wS,~Y evssd".Յ$,ɂs^E޿`dk BWm\޾Ia %;ey^Z$_Qr1}G}W5h34Fu/sU}~xi u?%Hhc%2Qhb5lO׎ttEB] e5;;ևᾝJME+(&K.quN"Ƿ+fy7(۴[q+ _ݛK<[uomw\yLÒ\v2APB 삀 C`@ .G0 sBdr@  rGTr ?yT]S(PEˣhAY#|;FsB4huBE6M$uAHAnݍzN3,n4X_rsS krIC$zӲ8{ ief# ӆ^M= =4 ~I==^>9dcN2[48\h9hL6 p:ډXpKZs.HӐ}p ¨D s@nsL>L UOX&_  qٶ/վ5kKr C5cn K<8u}& i~eS#%7fTҖVTRfB#59*.mog%X;c7w-s;.iMRxs:4hJ_0- l k6U(-:Jy{ c"7 YQ/Pm+wј[#NA6B_-Rc!PwKu?e*ʜ kF1%i#p|# l>1򸸰=EΤM,WeSM,8 d0 LŷͧKdSceL#_ M!`#.E_-k$T4 к2B1`3SSAtSvj,q61BkJ^Cɦs6$s-*axv 4s"h{Ze>q,ʼnA6[׊,nJn*9:*CUL:psb7]wퟵ_ +a-%ԍ h7O X} m9a4PvLŁe򰼕Xԟ{_qfIˋ HdۿP42%US$SdwRs51 By*vyf{Ԟgz7#Cf'i(ӵyk$[ *]:O&dVJ$kaw\ax3IH=M/Q/`nNM[P皪F9h28!_a?Mr0Fc; 3@[) y#Dn٧CnZP2i.pAn d iP k%%Ó5M{-'F2+9h^6x7 0UIG.kX Fl>OTcroL:ydF1TEZHӛoCg1&RB!hO1Qo֧VI!;~F{(̓hApעyI#N쵶ثWTa26?[*t°CY2 |nnf!j2djK(S _]cqf5+ij+hkݬYz l cm3 e$\3-zU?PIU j}H+i4#OF¼/y >Go#rr䯾Kw,m,"7[][ s"oI[^ws$w:>O͹JޔU#A MC h8DVɕ) Xܮkw[}tr2#-FlV5/R k Q^17Pmp 'sԮsIFC'QIKJz8kf9wsidYZo|Jw6W\?+jr 0d-VWU!T%6kCY*9W9E~uSlS2)Yl 3zStIgl5 T1W%(2\ܨ}a|c8qOw65]h_%=5U[*K"n6ѹt#֛<gme4B&i3}G">~G$7TcQ˂T2i.jfxm-bώpLnxjjj#-R.m?MXi(k SQm֞Z驺ݘGK+0b2+P#RlI雙+ =e3tzRam%DN)IB d3 K[w $k\+@1> ZJJn Zo>˳HO[MQDFcl|lkŃ׳SFbh%,TDGLr0V)鞸Ϊ>Ƣb*Ak ,1k#+n659`0`>be;PA6ԂtU#ƩZ&'S le.: \};+=E?eTf8 8kH7yE;8fŏ`(&|JI&sI:YF[ϕX %ӷ{ pHmeawO4s H2<&nnQS]#wu}H\g*Q(U`"sݧx9F9k]{W|*Z t-pM_uj WLOnٜ/=.mKN-ı sv#D-k!<-5 %UOTS2H״ѣYT!yw c-%ªB]AR Ie5$l7 +nQSxikՌRBءtt3Wx HؒIR▲A{Ɩ湸;kXJY\JZF]UK4p>cVntA;(3ս ^)nݳks}v(WcT yEįsЫ- 4D5eoZ6)ZÛE ߘ墶rP:o8 st:T=]M~;6}:3JsG7Өqy±g:t|Iߦ%7P s_ fm-`1^ §1ES_4Y\} ;,`tpE cٖH-[k27]<{{*͛ѸCaGHǵKku7iˢ8{h5QUV=קUȪ$7M7Vmfc'k\~^`r#캥gLKG0RP9@qZ{ح55SiN̶i9:8P1q`Z/!X(m=ဲZ KmZջmmQp$dT终-(;qlBi*$9<XJJ8rWH+W9 ̌fznS)BkImobUdsw0h;Xf-ޗPdȋLҶ26W 40_>j c~W٢ Z3EbݣS>Je1l*%HzF s i-;mǒLܴs[-+$WwN&3+]{_MUP/H@pD [>t51F#9 -vp_vYRgwKl`8) =z]AxG-NPhicKD(۪1шiSQw+k_7ZIY˓z5<;&ƣfY :,Y#n:>2̭Vd-> N} I^'km,2=u[ef"gnMn}ܑSA|=ĀCu-Xw4]{%dΒ{⮣g) 6%g&cIg~aaRH,l iٱV%M֏ļ;1v>vIRъmlIݗܗ5mJR@% yTn-%?6"awk4@ϗ-#VNm=I4؁`MU:H:4+8fls\b ҳ̎JbIsb> |B}D:FCeMْ>9Z?1i5]auX0u*ly7[\%4HxNo_U<=9>淲 u7>W襤i|< ܌qрNSӴQmʾA37[uXV#pS{c U;:&؝f7mlגӸa)i*]Q!c4sיVkLB9g=[-N8yϋ)TiFŝڀM㪫Y|G~AMjz;h1 d5ȯW>H9"h4 $tc 6!EQt4A_BB{i.( 44_D#4/74[t("aY4 M B CV4klxk_-.sm-s<4 [̫>AR fhu9ѭ nQQ MÚש}3/aʬdݧE>G&Ĵ25s~vs. *!ԲXdɕsmrbC]q{hc: eM<-e:cI{: iFxwa̬u]( u7}o\گ૴zJLcP\Am`#r2}#{* Vb1w}N:~U7h-=q/WG`Ul儘<$y 7_bq,}4͕-;ߑ_78)i8r|z=n[#ee%nD}<ա\rZ|o+*pg,p7_-EE풲FO8ݤFJ>SN3<1<m:FRy? tԱ˯{W`<%!WPYcZwKӒ1ahex*~ϿRƧ'v|v)&L.jsL֛|aÜ5u{2bdP մ6z)KGn޿J|u8o;7cyX$4#67 \ .Q˩"kQ8J3TVLYI_@8 pzz3D`9j.u>ro߄2EKɡm.p l^!MSO 0ٳ +J5/Iml 7UbMXtkYv]ѝ][xJح+|.uCaCw9IYY$eNs]݆6RG 9Mȑ2+ %YGlxP^$͈66I 345\%X>TX$/aXÝG5Īj`Ǚ { hoEaب/nb[k{ߐ#8?~)l kvm#6;5ojc6IiN^G%@*_[ m΅l i;sGl _5$R&4}_mW AYM5G.u]ZHkOڗ:ߗau&1I2k\_bz, lpqhidT֏v[/檂}mdz :rj#{fUepɣ/sxlCK.)X[rB-J*!4x 9~R@(ɶ]xm,xXW'E=-"1FX~ QTf t0Bֱ{q54 7uU\ǕZ8D8h~BkhXPT|FgI&\G_u0j%b6oiX44x*F=:7fݬQOqUKzx8nyFVXtڛ=M-FUj좝qdmYo[^Uĸni -|x1 >!~@u?*q(LWpȫw7#+CI[ZޫY~85 .+)&_#G}E }U, 86%:t-rh6Ͷ*@uanz))3bk& Y5K ZDQ!ff|GaU㬝iiptQkXn AN{($ov拼o6tW>eۢkX{dx#}{ I37Rdh9o~9GfR@[ =@0Fx G%^nMR>²j..Ai]Dz̢C'WA4VP䨒V״:ћeLG1ZYk_0*XNMs:-qt/yvd\K:gxKA-찯±?9s@`udp0KH>)9 3\ /BTk85tN4\m~^*!.G ouÇ]iFYV7ᓌ5Z9koEl%= $:Tهc:4U&8f'uQ=n.Pl{j@6\[F elI' t9ZQfXp* pNjZ׷wGHI. E.M)2 G9ۢXRZK7xn],SK &f%o-݂]%:fx{yuB/;lIrZx$VpnԵ[a{a.IaϚxGF+hBs<[eyU\=H' Υ(Grރs{ko%Q˛?n@]"U%ELR bvry媪V77 pUO84ic輩Ř{fge' =W2Zp^eY9ߪGPJxZ [>M0I_fvWM2Bܭ1{t}I`&6EG4t0bF+_'JIknvM&VdkpDᚹָOn'v\ּo=¿ jAGL[#by|4hX ~2~JQ84+i0XbfJ@,G<:Xހo|_gnHS o_^TEEGFiU,5@_]MmPt_!4 M B a@+B=К$mP//4}L4a@D +#N/苠tOE 趻}%$]>.=Ӻ.-dENG.tӺ.t}RL]+y;'tB=Ӻ/{}Qt]t Q}ԣs[#\w_.Ŀ'į*&*Z_ l 6Ǩ _bqpgijp~ΘI_pl~!Un#k e7<=W&{%vK4Ҷ<+Ccqxw-u]l=vCKø˪k)f9t|!an\,o$A uU,q>171$Ǒ_K\>eS_G뢔4Lb>7"5qGt릛h`\]C' _ s[GY9malwN95lANKduF_ &DBHvf",䒂[J_9FKWS\9E ZW7FG_%nv;A-G$QZ:R܄5+449DK_*)+ k{cUps-S;x3>˗-֡MV 8 Wa da]}yh1T0557ZGv[> d̓g{q+J77F8͹- 6p_e(de1˙\]`E-Tkvm>곎 X]hlqu<"w4Πu\hnJͭ}8J0&摑=AQnه_W⅔Ot00kMUIR#qkЮ͆BSm[lo.n/}=p, qڧG%sM7\NPm<[i\4)EDRG!J|APᏲEh蝑uH/tt]nkw+|^E 3ꋢA{;Qz&J.^ /t[dt{K;Q[@/tEЂwH({; gE hN迢YT{t_BwJt{t]+yh:VHXW97)ٹZitRhW]|u4d/rqZRK_W 5iˇ=MYO!{j$r K-bQVv[]f3`?OHtX2 jd駕q:9Wë)\1ByQ|r&K]muvSgLFK)[OH, R`lfYO~V_K̏%}/gxl/[8?+\ v[I$] Ecae<7q?Y;.\,\bꉯkt4$mE\ps 3ԋ<{fˤT#.r]k8ٕz*2bu iIf$\umO4ԯf^y ֙ ,05d1#C ^]>'I2ZHQ40o0iq 0I]Dd:13|!q-Ũq:YAM[eamblp1?0{y\_.-^mWp}F)9Y3vW4H =m)%sn$:7 ^ɫ>vX+/588weBء{s<[FM/{ hh#۬~/.i[#ܾL^]kvܟfKm;ft#_ȭ$dl2v8 f>l.{ٽnXP3Z^:)rSR6V8jk 01x.Wp׆I^w>Z\$k3kAamsvxL1ߙ->aiyvƔM*c TG0ɰ!,d5q[ Ze \Y BRm+9GmY$o璻3 M̦:pWR QU5W9gSFDF  ~[`|:b|ϚZVI#S3ήqMN܀p."Ļ%seu-qL4Tذ% s6iu>v<—I)!;3h[-RLB:wK(Wd_moGha_żKֶzDS`iٍ-w`8gtoh+Ai|m#.ST׍)6$껑3+~OAQpUC#Zz7+Wã{|kg&F/Me iBme?x |͚ XGζ76?sspX{eL#3v^ZCnC~6.W~r~G %O4E[$U Ͱ:"SI$2GèUbSx_IMvt4eh=wYG,R!۸q?%rc)qdYb`1␼MQ1M5D픓Xu/E!C |753w`鲴gR郞 [nǪғjUlQ +lNWuﭖQY!I9 ұ\1G+Y8HmstY<7}kW3'E.C"V:NYr5&l'W`pI uNY2Zsi$ZɅDP?]uxfysĴ޵ H2mq|tC,z 4X-&V5smCUT ],7P@Rn;6 II$d$ێGX\k k(qC7<<[QU/wvW?]`븯)k`Q.q{K#FYra{2DXR\=ff;-SWC$w4nRQAm,˖669(9mûZn1o2F x/e0A ȋdDsK*'rVp9$}.o|5>4k ]>1):mC7;e}d4ZGxF?QE-Ƹ-ż 6 sՀRM 2?o}8sZ.l$X[}W:x6ЀVuVp۠p&xbNi:/G\rbt=?KX=<lH^iji+E{$bo%Gv?>c)$8W:U*:JRH ;+ZGMwx>l<*l}6k)>VPoC!s\Z4oecSewTw x7- oQpZy"Hִfk&h0+H lf697ck\,. cVAQTϙKHu܋k<\ep{c8OfR{by7gkutwVGk/xtG;lXmX<F*H,f;KmyIRo 8\Оun-+%u,73i۵f-O)aN wxNo=~3C7nB9GGL9Bnmk5М%|lg;'e-r4R4^7r<|u 5fx ḽXM4Ő0\< ו=OPU>p\~81Sc$t0 P ł08.9 q T ۇ2J-&"+dq%ՅFpq"6:n}RqS>(C}ES53SڐH,qcԔ-Y}NS:F|{Shݔ lsZn:&y =\ڃf 5 [i8NX Rsk]i5f l}gK>W sەknn &y{۽@holGdTR}CHwZ\9]{VǪ-H:|e2~'aWk-kCAvQb(k#<c1ؚ^u%s\r8$_꣞l.@KNf;F hoɻ-Z^2Å3W+5M+)44;賘-\-ٳrR]e%~is,TVcTdr惸U7P25CH~`&ws>{EmFN$:Z!f;颴d٣KscL9_ sY _[ t. hzuē`jeckex)r] ~m=cY>uXնAXKWINu )K))Q8yg|UN 385b/dǧ3SOxx:/>TJ^fqq&ܲz=R,T4"$Qctך GTxs6s]F,w c~J]2 aad 4؃9F+l?D{t]t T%B h't@GwEТL[@+&MTӺ/^!;}P=Ӻ.D(tOEЂG7$pi+y~R}?'ǜUtJ7ZZ:snmr6x#P=WUwJn#?cue̅#tRk-!9}Y^v'/N ?eXY6;ZIFrSzj& iqK@dH DKX˝EJSH˛ݷ;/J/MǁE]GI-6fζ9GѶI E YmˉpV2&掣F+Cfk.$A=u˙W`cuu\40#Jj/!n.=nY`d͆6]ZV| a0fh#3u3[6r_gR4j@Y1rۇfhE>=C GfqY9ŰYQCX9)s`\yoj;cYh~y\ݭ%NʸRzxIIxA.įR@iio{/AE/d Ɉ7KiU[~8[) 0rSRȁ'dsB *3 E#FwN1>:Vp(he[V{1p b)!V0?gaѩugUSM#堰 nNa=EV&0wu=-"0[KqlJLkϗ%p.8U%a.ٝ](휲0Kϱ!CNj!"Hun4:r! c{槧5:`]k{:ځ׸1:aԭgv̬rX<>I}R_+ىB]`mP @M  &Bis@G2  #B@$#h[t&HG4[T Op$WfCs[Q悔 V/KP][MnI{`,ÒiftJ9irۭΊ.v]NJ,fIo kY;h.؛:6lEF,7qczZYNtpky.{ øc#-$ >M15V p 0vwtF/8۟ԕ(ŻfĄayr}zGaXaKIq1M eK[n\JA$\A& x<&|Vw kC3OqpӒB(#gi*m |Ze6T/L,7:+ li=*p'k/x#+o ?ir*@ߙCm98ǙĂOin-滫nxNʚsc~n.^7r.<25Ҋ3c 8@0[{kr~5 )eۑ>,F>m#̎.Yq;{+lOLPpSwi k^c18"!` :nŦ=QpLP)k&Km3ib}e)8cR9pji[V䐋uWp>vA_LM#88hjygh1G^ 5 $3k%6^67#pA]oq!O]=X 1푗FbY]aܥؐ ksk^J2>hv|{MC5U`O~g<7H ok3vU?֙%txmmN6CI@ n]_}4Q֙t%.n@Uw'I%ʁ﫩t-tل</aqP.qɎ6,*D־_ 7,0I$<ZRR?q]*u4r:9^ s YcY?nN-{V T*gڈ$/ih| gocS1 I55{cwq($١pQ}~\þ1od aS0wd w '>,sP~{U<}ϛ]v]A_ .uG>Կ^*vv[\d!pf.$|^nv\˴hS ;o '!ys},@4}c&+SESs EkeX^VxE=.4(cc}'Y$moI: S&H靖ԕVQSTb`vm㡀ss求H bXwYogVĸ :KK)cӱҶ"rt SR౭-pmX]aq\>zױNUH̰Hm;sE&FshN2Q+Ad,05`BHAaj0'ŌǘZC3]WX7yeh|Aqg?1z|J ް}6 x-Ř>Hecᑕ\[nn'[]]Vȅ7v89\?Xn@76Pl,գjcvtXU%TXkbm,w݋ki~.a->Y +i3: Z.ZѦ`mI#yqAY,w-K_Z}Yvc1\eU-5Mf%V,\ka*l&%kMpmQENek%Nď-4w;\ fI<홭$au7m5\}5ChiCg\v,Nhm}_!{nTjh246].5tRN&f}=Ydq+{.`G.sK9Τ~DE8v[F\CEaHs\5p #ӑ&=Gtp$n@Y:`dp`u94aTjj\@YK%]4]dIq\(cQ흽E/;75mNl.87@z]kT1=wP8uVO]49 :{)ղfB!hy%UbW,lt4hc$\d4Ԫ4f?b +q&5c] f.8+FH1^ӕV4٠n4涕taJJs0{ $k#l`9l(l\C@ `Isn xg!u9}y}1v5 =Cb֜uRx-i9W#zbDUH~pEPC{eo Z^^cTՑNP &_)$|987s2mZDѰBѐB9  !a9ELP MmP!mPPi ( #T #ha$PyE4vEVw89u+.irG5!+TBZPBZ$4rЄ !-PB$Ph 9%9 LA #_?:R(E)ꃺapp1=+IlX,sq(wދ[wlR1,oQRRɃ_-﮶:r7 A#U;!Fn8V/s氰ܿդm_'/o> k*'G5VKV̑ݡauDžbC(ʉ#f.=ĕxuv?Ta4%ϧya:\۪rp8n y,|&2Oh=]wzZ{.qyViHJ f꾾 6 4p☸1 t`?:sn5\Nʗa7k]$~W&'OtgpqvW_Ii}#R$¾k ;8W tcZflqˋ8fU”Pj; n,mrnyea#Sϣ8AS[#bIU7xu+),[ lF[>klRYܗ>ΐh7Y\v[Mz9sq6d{,ӳ0bV8y椒J;%sd|M}6^ưniI9Gt\6V8j5o8'mSIWU-m31'=' 634 m*ncsZy arERᘔu/|%2C,D[ 4.q"zZzidm39./N8__<$jQB9@4%e% rHG h jhI BB$ BEZ$5!e.B kB tBH@>hJ/$0t걬F *yk*x( a{q]}I@w|SKF DƴG mu?gdx'|9uQFFc_ G?0hy(8_R_]dS7<2,qDA C欠l,5 hpJ:gsJ||(;;6 XTAsq]S)BN[[oo}&Z )Z9Q΂=q%t*Pşio`G`]8{ϲÜW[gU ITx Ӌ 6>/Ec 3ݩ_~uYIay!eLӂREA/wոh dGfϱ,ZG:~./LwLR8X9eu0E45nsH*ʮJ u]a/FejF%]4Lt<GucwbԬs;^׋H ou)l\õZV9 H dl].BÝI:z(c[5~D/4Ql&N#uTi/tmu,5j-d8DouUt!qF'=SF'jݳjE$̾8X_(Y?P~kL2RZÙ%s I.XfJ쑵5icm6}4Cũf1D56}x?R4u?+dr%ccZS-sR-YcAõ/wwɝ"![9]ͷlB~v@ܚnkbiMb0c!GqU;0s$e[2hg^k1Q KX-fZ"I-1f&ckG [y;OF_E }鶢BH\ψ#ml#f簹`~ ub|e7 &G637x z 5 sŧ]t9Lb@{맶mV`xÆixj0|^7d]Xνm/ugH> ~3-&|;H.ü* 8aT8Y,#Ap6.Y5%Ime[s=,9YkB=<}Ǒ^=5\]>h+?xPĆLLv6iN.zj=#M%MC;v P ~ª# ^NGi.cD G[ܵو,Лoe0b1bsRGC72p LژчTL<@}dk}C(VpE罉5]@V,0$/ hًm ImSp4` sxH5{+c>>-Z-XN|sQ4=JLn;8clOnb 3B|(:94x]WhkC#I4/h|25ѹ"QA5eap8rf-jTJk.y⯅8 gte,tQӋƷG9< 4u~w7,]t{V Am"pM(cZ]\mb?od {A.&_WÎω/%*t|o׈j9x{]S+oL7c[rZt..4^G뀙p(()I/<\s%n9{<,]cqo 7 d=|%.M>dvٍ_q}V5 nUOTKc{gk-^V[澟q7TR>VK|7&ĖB/v1|_u o`ȱ|1/y^XW,M7jP|̾#m3m7lA[ <B,ql6Ŏ4UOKrV66OcZY:]᫷lKi40ѿ *IPӘ:uUǐ0)ƒѸ>cc].:Jx#6sL2ZnM&s.S[y/ 5~abtDw]mq7 Ult5®g1^S_XeMYv/0Ua&g$A9z_OP{w G<3X0=-*iZs>k[ц1 MUX${Rw+Nd4V5v-d姈Ʋ FU26TgyX9Utd'kr9M Hd\ѡ#>t4<\j\Q T)AϚk>'$} 5Vܩw{m5\#rOEo7uo`/E(ֶn80 pJSlг vs_EC~wgxmT}?~I$'Qm.yu()?Fb`s{]YO !I%@ֽXN UM#aoՓ Qݾ7GQm9_Ξ}@lŎſsgyXړvA殱9uD[4oEb^:Ha˨q]xeM; 2),]<{x;\{0ttFst{lUR9̕6/&ԺG4+KGA1t9ytW4\mk__[+p.R[mJqrS|t9;j8oa8 LX%w 9C![nQ`I$ϖ q85{-/21@[%νdd\tܝ*p;%Ւc`Ct~^k<1?`۰ Xv=AY1 sHV,E[oU3ȗl#NwZNK<4p֌y(bafy xFTTw\qv4Rs$SuqKC;:9k2;IWNׂZe.ߖ*QT G+Ot4e篢Vd=l`i mԫzzHC#TFw1wϪ+#n綢74 [0=04 ׆`t$md|ݿ<;!主l-ckj+nxUY9-#MCA$/l%fkki"qq6 k/hU蒞 (h )^˕R3L)[oaUUe|Zg]y=D?Kg`}^Y7ɕ=/qer%ƿZ^hIPB$I &PS)uBhH#_?h斨;BBHhIQ-SBGT$r@4$(wM#|Py@.E0RS揺9(E>Is@\ m4 `^ٜ㙀n-к [,LZY#\wVDy,)'1sָ] 8yuJ}Lmws9₩%S2GP}7X-Fz%J]L@ 6t$:#] BEB9 P2(ABHtrB9 $]ST]S(PEЏ/\ 2!4~SU M ]bYLjfYd"1`ű s+Q$]L{4X=q~]M s"Wؐ5"[q]&M %@t_Һ6_KpM2k .΍:4FĒU Zcf'p<ŅEGV<9#NbWbrL<c͠()8Ow#$oLW}ڶf $ }!$ko_]ֲ'GQ׃$20;pyWǰ)x{}#|QLoE^u7T1t\оJ3=ATs 7SI=V &"5"6xJx3+g}F\5@WvgAnM!=t]"zd0v ab+4(!o[/]rJ)Yz9%ρךi\Kl杈PcV݉9XaF8v[6{A'ѝ!kK)2GF^| O񣲍$>SL K; r!%Z7jXTp+ĩ(f]{wm?Jghn #,׌l_˄W(Dbގ!Q1g<,F!c,lWwL6oIA̫ťŨQ#8XerrZ>Q_AjڟwAE|5+b>mFGJZў>xq.7> k&7"MΡk f-WKMXxetlk ;9:S8g1b45ґr%^j5<=ѱΟ \_wS'aBJnNZ%$]G\L!P6)  授DB}Ph%̦ P.H &/.T2Tt# 4wB@'¸L2ZJ @Z5eb"UâŮEq趖2*.> ? ad0,H:̫l6Jzr;qmΗr_ ]c=p".]1R_.R؎0|5)Bm=3|QtTaQvf[oUy1 ;hv%X"ͤTѶÞQbX9R.֑m3pB+V7gLuAyɞHAx46ʭ4[f A:ep1`':_{= cZM,N'I#/a a8kul*0դ[4(0) auv mPyѝC  I6Mot80ԍ46#* ̰6U=Ye mSΟ+jBzx ۂ: ə#$nE]x6 Rӽ8$o jySd.#B /WXUnZ GUf#KN&dac^v $WXp n~ҽϘmQ~$){e}53@'C:4g}*<+"l@:V_GЎE_4.:gNFKETx}YOHed4.?[Dax$`xDvʣxq\F9zmkFjLcպX#㚬 }S%ed7kHEհ=YX1S:U s,Z-bi28:jXEHȡpi9ej1T<2sI%OUb3e|uL_pSQFsds9InT)~gZI*f[ Jx&E4oYqEt0āXØ,|iJ-{.]I5SC4[i,^5U;:{*0z[QU2tnsI ,oKiHI11eOKHx9D͐ZK_C9~#xgрG+Å ro]B7XW͍vq.#*bFw I3@oRDԒ=,C[ osuqwIĔ҉ĀfmW6;]+L \4s.]GžC{" X~_ˆXeSGǕMi?ǝpԈ'\"nWRQ; Gp4n196fi $g<^vlrCq͹nO!V:2~kpʧkMQmRWVzt\a&>'9o{oUgGDԕv\ mܬ}Mcn\@w=7=eӱ n7z:f_3kIlTPZv#&b2谡೉q#op5z!ލeikR_ ]@>~vX[,l!p ih4>siasI"Wxȣ!~¥m+uqH'ֹ2o&ix;pGɖ8'2{c88ok" ͪ9rQm z/;+- k~{$I90EЏr |; dI i ѝvI1AKGkf ]ufF潆<9bu.2J:;0Ydh[]u^\;mƩ!cE{m\q~3-3dq=t5.LI{mlU=P9MDP=?.KS#<2%Zi./_[oedb&;Ȑ_g؜KNɃ_3giVwYm(hM4 $!-)#s؋۝9+ &Duucaq8NlXlWHt3%ɴ<8@SfK4rSz\Yk}q9kq;t!HZWwn#xːmvwUa!XnWOd1m<5~ 2`WYIq& >h p9mbAmtYHTkduG 5Bh5A7:RB5BhA]#v.hb@9AG4Ѫ9`WSCcjiy1o\bhιcc4_,ww ؜:ěME H_q =}9s>Ds[fgH"lnF]<;oo: ."$usNǞR%8v[qR^W! 89 =Uo 氐>˴4#[#_k x}\t`//Tqe_:""˗:[ŁG sp[IN56L֑Z̹ZG9۲¥K7j0 xX[-L\뵠}F,͔x@cNj\}(p[OJ(k#Mو]MfU#"tOTCt$kH@\aK,э31 IN^c؆ %9wr;c1 +"pXȾz)0z Vq+@ m@=iܴX@YK̩gֵ㳺K2EMc\4d\oq{Xm ]R:p/8{?TdKmU9ĕXM<`lm?å| 9e䚧m3y8_mUe aKP. _Wi&ln<".: /%t侧I*"dQ$r}k VRb"oC%EXM=j!ءװ yl٥m{(]!SVZA#ԍ>#5@M 5K| &Fkt nP 5A jl@MF<@FT]S(PFAB#Ua5RB*hk&Zꄮ4 kt悀 S­SC\v5^k+{ q=4^x]m'qgQGD he׸Y\3_ͿRa@._TQSV&\$G![ɈRa:aYNaY9 ltXF,FlU8.6oFjp;ut6U茢6[eAqR"0ghk^-:omUjc5󲻦P{[s^岘H}88-bb0^ t7a55O.)\<U eϵ,Qјdz1xF~%oUVOr#W#G@,㰨#w67@_/ԱTx9l4ȋlooΙX̷+⒳ϟ= 8%;gRإxcFZ`7CQHs H!}>FfٝڸgŏeNW4xH򛍊?iݤM,mեx aU?^5hy><|.x[9+x>?G_+}Dxt.bl:C` <8>U՝S*CDGFw\~Űl*5 c qynT3Ӥ'$`n}m&2vu*x;9%aV>1vS}[@CNϬe*6t ⎙wz5M=Cb !?H+/BY)lw9Kl)BIFBC| jd8ud VUe.'RkvXQף)ӶLlK1.-+Ǔu\Ob;i+VC4@/y+[+p.>vصXe C jήhsts}|Z4|١L=_pa|Y WERFȚZ##[l||Jc}--ud1SDǼ4$^#"qlɻ h uog)uLy4 H4T叼aT)i5LEvI hH-%}V,9ƇEU&[ DdH ϊ.=LK>-~JMr!ktZ ֊:#6Iװ+jkf`sƀFN`_.8Z5i|ֱ#,M e&yg|XnsXG s$ Fߠ\~\XeU dҺ65$ ysVUF8N0zx/p^mņMd8&ytNlit^../ ETо 7,CFO:4*_͈Ҷ F`;b6O5`Hjr9ӟ㘛8jcv+bW8F/v]``7sU<ۥy'.kEhTq]oJa)#nM <,&9/a Q9bMS^$PEƢ>h@l\ Q뫍cCa.:cߪݞVCZZnݐlȑ`{H+v4ALjZCr6h_[3EYTQDf4Oi: {E\P*J給Hg#oi`Xl |.N_,[(GS.Ѿ^G*/ִ60FnԼ0DBN]7OtY\gfQr,Ni{<0SJ].=UX"/cKѸeVуQER3%M!v>ʊ4  >hit@4!ЎhB\h$G$#BIKt(R@(H ͪ24J}l-u3yL kY]ێPC/x} ƶ\{+CmsXdmp^4=׹BEפ/`5M$Һ9b鸳 gIQ&0b.4y7]c$E%nm+p_U9ѷZ,^#ZMWkFŤi'_Ō{側C d9 -r$Ra#4/ga(ƣfQPe167V6{Ͳe;B3!34qGz˞$snptM c\sdd9]O0⶿/N_6mPq+c7 chMwE\>K&ټ:ss,G/EøF_7*oH>Aƌ>VVgWH^X.̍.h7;Y;}y\#Еq[_$kr:H{ߡt89&QVluxmhnvILg.;_<`\yI9eSg=QbidlG[ke=KA:36oq+`±-D,tZwvVx_#۶Ho`^5WUœ75ʹ5ش-\|׷덞|3ۯb=j.\fI_=> (׈x0|^\ hGX|I;Zl^[rsM^ܮǽIKKd@y9an[4 F\S>OE+UbU/ZʗSTpuB]S2TBB4#e(B3k{[2%Fvx1@?԰)Q$#ys1a8jFu.5Lknۚgd x}HC;mvf1h<4nd<,}cTC)i&[]Gt51X~]m=38FưW؛+skr7/1QG[/w$^Kn1eԨrR>Zdݬ$,p{|Gɓ*fuqmcb'fd ku:-vȲkxR>sv.iHT#>SfbW8Sxy=GMKZcF[Ru4^tYQH_'Q'VPEԥN7X(ZOK4ӗ r c\ \AQP Ϙw4>_'/prf${z:_TC]!f.>07Uţ8aWeu9VXxjPCb\Vla+e2D kX5r'/$6X<љ;/8ZT>vJxCo}tX&q|F'+n0u;3ZN_M=)1LX#i[-SfoЏuIŸsxܭ㗢1WwӲc63\5ttadlhv乎-T`E SrO=<)`曺pck͹5%p40=zE6f-o$$`Q͕EsD@J3UDZ!B\ep.*8MI#x9^KC+m'vәmvߗ[w?Fs8l PwD= ?HڟR$nNvCXj%kF[ݧ6TSڷ;mp~k"SGE0O#s(KM $hr@ "W"<  .P9>iУ(AB9.i( !PQR#};}P !@!n0ȡYIY![D#hmmQ$Y,ЀD"(@  imQmЀVEM$mJ,h@"(@@@@EB9 !@+n!4mePPd&V+j9 j#hdY@! (,!4H;#@Dvj7  )#>fӪ H] \ht]Ȩ#YK pp,/ar|g MGPI xlЖMȅ~v̈́p¢ft}L#&iq<27U3+io̮yW{2BHM sB8[/'g%ǻ܌=nIϑݮ#*+f"8-^ᏸyh9rq^O#}B_M\ᦚsYq8ڦJlZ`-sqU,ins]^RawoU8/gH[,k4g'l/kci mcu`hlwt-Ebm|L2 lyGǞW?!0[ b3|S6GH;Ǹ'C=f%-Afetpu qh\Oy47S:F#ltY>۵f) |usyyK?gFK#Z%0oux.9ӱ ԯ>1##p.?SM%XϏ: {j\gpg5Y?8:hc1gQUQbf 0&lU9s$9s%sc&X.!\Gpְ8ԴX!9 m+:2c]w^{@ ]$؎7AFcа8%Ivw#|kE;s)j˛3]͵\ nr:z4x|s2\FVzˣxwJa6\kRq3-qi /GUKOU4d;Of oJ˺2GwnD:-qMy3V7UcPᵮc20`[io%X^[v>˳uJcDSbs^ܮڂ dIM{`&=qM49˕wy nmZ#SEϷ=pj^J;g:ICq-nnk] , \ %ꩩyH#eafjA&!፺4%HQlN2綞kıX Ԭ/E4i.B$ӌlo5`u2!FeE3Ӌ#È5LvQ-7P%6{lj6̅rL֜]ěfpGRnKZ qh!phy;nz-8մ,qlY .?H:ʬVfprDvZXe>yo"Qm#;K<)[ei]LPM5\0`ߌIw~?Ӯu pt᷻:oM;sxǃ#ӷ=UN-°.>C Φ.̴zo+) yua4 , b y8Q%%Ϝ;%m%|hxBZCZ^9j Kz&2ښ<:S5BA 6ZiAGCCµEKSN[$\ķ>';-+Jxyf-K[6 MxϊWQ? XGTLq5WsvǕօWIEPQpRG@]-P<lzr.sej䗑^c[娝 lN4dd84.W vøߎs)epmD&(XεArl<*G Y{!t>#oc\CE}\V@d/i$jCc\󽓇˔w'f pe7 q`9!-#B,ŝqw̢1o#Z,ւ:EoW5OeIVBk62(Ȳ@+jMB 7[ImV?0[:ׂrI2lԲ>|ۛ-s:wiyr(7z֔MM`$ŠYq?癬/.&[~KY&#|8cctm@ʶ%lRwNxkj$ @[ɼ{᝵~tXjz;}cЯq\pAXTĺV4l^^%?"hmo;^ds9:y~)j0d5N#@GT 5q ̦R5pc;K+j7-e9Hv.<]]D[I,"NĖvrqwFN $FTQ4ޏ a.|rG $w;/ŌUrw5W|%3=V|#.2Am}+JjL2KQMp//U>7?WE9C\6\*g#I16sj. P]=]CY]q!˫\;/^)|TdϤz)YF?K@BFdD$羖BW(4BfǽŻ lU9MYf'C[ˆVplRj]$M,.;v>ĐL0Sܒa{ŷ_m,Jjv3~eј#.g-nw*ኗb8ceD%NQnvn|US%<".kg7Vr91L͖T"v[ſq(*M$84mWxK5DюBh^ȶ-EYȶG$ _ŗ{y$l\HodsM,uA@E[ThB-,vEBWLs@"ۤJj,#T9mduMJ _BSBЏt!tI3/%}S4("t ]G%AB)L6t{ }K@Et}P{] SH }HG=t{ +Ke]G=ЁtwBG}QtsGt#@( t]B;:K~ nQF)4Ny-&:*4؆w#ze<̗#uMa$d-3}>h[ccG49Cemq;9kG)$"wGDuuø7,f \ðH*xo/@~n(1գP.9lK)N'| |ȫ^I6CBCv?䴼/} Uf X[kکcbx/o[vâ8)l.Rè 1@tKckIWTG)Wy^jJ\a85<8c2o{}_}N"d 0t2I#5M*#W^-Ců[UmØXjէ {s+)Eů7o^TSW2,@TTX2A#?WW³qQh4se8$h#>i CoQZr9j[Qb,3R*h2cGiwH+`bcuK\ikoU(2J3AsȞ8-ח-"'f`YjRYM4|]̾V6\8Rkh-!}ʌ̧6c.LJa}#W?t tt]@(?t.{]G=Т锺Pt{HGt({BKOӪ5jsIRRfL6_58g)qi-S2+,A'SunMpM=Q|us-2z+S+d}wE:w5,xǪ畝bIv+qKI_T.i`9OUy.:#-@;鿪G+s!n :B_$SL2L6G7+lU#k;/5Z163w\=DC/wy;cw=uΰ˽H;̚k̕8IJN%AEY͈:Zc +7WƽX_age+$oByy%}c" tM1e=.vjR:kv̨B~?QsZ$f۴lXlH\fv4hK$sbjp\:Ye|rvֶasۀ-A<8z廁=VlԵkC9궬R-TU "xCJ4vXjp懾s\*1&# A)lŸhST}uY88{믦ΊAJoլlr&_՞V*qJf/v =|ce 8"ƃɼi=MU$LRΒG eBjbRN] n@ n6z!wo\Pֶ {tnw[r/cTG%c+Y8q?0`]kcMI)&vϙ#Rv.!2͋rxsMyUFH,K'tv}KesXy8BW,])yU8Uz~|VU2QT|g \SA8lHYUy]+|N%vr$a1|n6[gC3G.G a<3Bڂ-p<7vo]mx<3\18\S1]ĶՐTw͉>V*us26> ^?9yga;j2pvU7<`ִpwRE84Xl6+K$Hs4s\ZKf'1_sZH,\7|8G tZ`ik t[H+AW;}ZqQ%$.o޳B.N账<jn /GX 4qR}So]?*K fŧ)t' G3#!nfFeʰ :6͛+}o/(x}[ %;1˦߭ݟ_EGm*~樌-ϝAbey׏~c^%lbjd/'V1٘/WGZƿ{ ^ˍ͍څ1p0>>g(W|ڼu/ 6,-XV)6Jdh崵ٚ9u%;FUXJ nE&~rwZYC-߇\+pmܿ5'eMJNR1ч[.#F!qѡYTMu|nYp+^^tޢV^,x#űUnA'%d/ngGZ<3?vs[Yӳd41Y31ěg>~(8)m<\FDa$6砰XnKW?HfiLB p GW2T.t{HЏt!Jd^ǕtiK DžےVd*QԸ)YRј0lt;vsNJ:'Tӱv~#]ʗUt?zC8⃲ U!@'g Y>Vϣ2Oa;L`ds][ۚNln4 xWKJ\$kgQr.*ώR|K[x6%{u_kq˹$'wNBT]Q 9dH:w#tQT; J12K|<Ԧi"9'U𓕲='˛:.+ALPDvO\W_fCULW&v::qz.(- {/J2N+9WFl<7rS~䴶XM.\ߓ)*gx;W>A㖒V<-;{kTb&٪&eS kr\ó:*) DX^"A m#&iiGLt~esg +K';ڔT.u8ډ,o+/Wc؅TRSr|A4V~cu(~["*2+t/dj-7$rMB 0:(ٔ)+z&9y+G29.LX`Ս슖/o̫:I`ݽŰ:%s[ZOOrԎdnYq7'~+bq־!)l`f=P%]E#G6*VJ5;-#u ]~\m8@%١pF^O/ L. |5TrǔhEϚ*{YP|I zm'OIkl ^f1LԜ6#6׊0 !b.>4ғNO_Ej`B= s]/tt7Ö/=] {.+ۚ/e+Gt] n.?twB=Є(F$$P9vHo5@B4BmwEЏu#~Pꋣ: r@@(\ir)KABrG5{\$#B P9 lisG0 sB9 5BG$#B@$#hL2!4 QЎi @"('T;uB:HPs-p Sq) X{qf&GOES2*:^[*'v7蹌쬕N,cp^/ds^L>0z6pϒ}lu޾e"sX: Sy7ptHdCH6GS9J;3Xj)92885[*xu[36%,o#sep^ /I*B&٬wJ K88@-QGRn9[U.cݔ>dr]X 5[`L8XkT#`4\:B##cM”Rf۪ipRs^pބjvA&JY,] ~&& <+7pI{4]om4};K+K\颳]uWRE  u d,pеWk^MH| 9hG2P@@r@BhuMP&9\УB 94Qss4)wøq=EÂ.%H wCۮ]8d}<͚'i^ ~Grt̵{:CJruRcnX\]uCVqV~CȾ,oч2:D؝.C,{@p; C.sA g)A[y%3'eåZL:8=mks\#YN +/=6ۀ+v\ fHI2v%d@Dd+LK^@-8hOmES0 ndQvuuk7w-ȅs {,<՝UE aet-llh:vjW4T 4|~6\ͼqiBlߘar$,>!VpyRfF|]rYL )\$k_7",ؗ)ˏKZM%eVJj1+[bMO0ß#m=Ol=oy;7ʎ&N^A%,CÈH[}[7#uC≫tWinw7XcCKo똛S].I75t!7u_80(,]u[#ffTc#K}WEy}=hKw| h͉|\h.yX*gɔ-M k[S <J/ZGŷ;\Y0B-~Cehq-Fq}Uox`<ڴ4Jx0Dl>Y2Q.;;o$9ǐ(#+2q#@Et2X)qh#i uuYj;78i>8؅c$Z"iՄk$N'xYK]ek3s_\Lsޙ{) 쯋6VsuOX_עש9%$9m5},N``c-ꭞOV9nb=řl_y\)،';#8\xtҾ08Q~iOM$WsuvuL #䨜bSؗzy구mԵ/c,rr^ª!5.7;o[I7d]ܖ g+t}FMD<܍L94T5<<3A;)-,N0Nng\sM4&~ :]x-7bn-Q5{sxZmԬ_Xdt0ˬ%SQ1X?⑍~z6f[.iqRV5?N*x 2QR`}E,HE |_}pn5Ւ 4|FG_4\_1jq*ɟQWS#Y '$?G~O%S:~=O9/!4B:T]S(PBB .hQЁNhf8$!&I GF $a6!d+8R7FwT57Z4dYrxe?$6XfI-6#Eh18qBZzQdt\/ ~3xkn6#J`|?0Nyc(&X:q&0 vlh̐0Z~,rq)1|Fk &vl(.]dI4[ uB:HG4k\s *M{.sw;]e.7ejuO0coe+y*ȓ2|~,ilIgB:yqu}i >VUC1$dpq-:EpiK"% I/52'fY`3T\T:Lb[;¬M_@c-$?kBqilA/eMQj36'bj%2; $ ƒ7^h1t]J? IitE#YĒN$ 6Z9{koE 0u=`Ox:i#cCKkn/V~ZxH.y4_%cx6!F$r?UpYYQhѡAu>J2-:7NMF꾂xݚh¨N%AN/ɣW٨8 hj[AJX٥m+V{rB7tU&?ɇ: 9SS{;5VhV\, e$Xt45rn5X^(ش秊ŵ0lE׉99`-Ki΢Bi pIrçm}>e;!%hAL&>=4nGTt얁4T@@L<fr<@>hG4 BH1 q}Gj SHo'T;@QduMtЀF7?>-蝼W(;y!rz>\my!A+&(p ŵ!r!Qv!Do5h!r Tkh QFOQjlF2Z];z DFNAd(L@-Qro މ.SE\>BZ;z"AFMQ\-ɣB7h@#5G>I)A -P. T #w(v +j'Mbfh?.jYl s'P:y4Ј c/LQJ0e'uRܢfj䑔D iUZ!HKisFQ0g>񷼒9Iyra6:w\ut:/[:4UF{)g}jCFC*ŬseXdsfR|"fيXcq n&v,$ǮI. ;'e&>B<`^JjCAn\r|8fk.sam;/s:`uC-SP|RHkǯ@qO Ə]zYm|EW26H=I=/{:^o 񵾋R=-)B٧+4lJ\j&u)lWDywt&IsFw ̨9qZ)Jj2{EGX,{jjx|SIO>~`h7vIa1.k9Юa6s㦗m}<ϒv^Uq5H 8h 2qD=MnK5VvYI. zBt|7; -c\ ϭ7솒 u8E>x)X+"ޙ5l~,>9aNRW85HTH<[n.y?:#ae`vUQ<)XNñуձ|ԥ2wnli9Kt!RT[E xM'VUI+#^a՛gy::hQX$ݾ{\H\j&50sluYPw -4Uc .2xC[p=V 썬.qVkp~_{phĠ# WumD4nNdYa7KuUe@cw\Vbجk sr򛐪]~M2#,ѹѳO=n#R,/DZZ4!T.tף5cvuwQ 47VnlN33u*S0wO[24r\KKO#1GSZ4BCĥhЪEN+(rx(p9{Hѷm[|mQ{RCrܺ)) ֳ#Ao[Õ )xQE1d{-f9C6uNV~.?OF0ӿk M =JYKw/~|Dk,q6s{硱Z'KQO(doklã{!4אwf1rMSҙG,Z׳l7oOjzɉUE'K%Mƒ xauOɚo.8q܍O⯶Ix լbd][9kuky}G 4 |q~;.Ie5v/AZn Nވ@GToD])APwNAdɡ+Nފ*>(~7U9@n͕E#\-AHɣAMwF;z 4[!EBF 8^%OT ni}NjR(QEATGU=,Od{Z7jWPHHK%q.)!6Jw]zm I1-t0|3Og8 e`8z*xf6X SǸ"/Áݸ䰜"kprJL=Ge 7굖pq>=Qjߣb8{8r-kkC$.aipO3aP$rlAGZoBpV.6^?uQ#iuR0,CNʐU* %C& oglTj3y#ͬ,0|NnwQ:yVݣ'uV%G2ًEqgxRG)Ak.<𻠔T kKH~;e˔ܝN[o6qI$PS6q % ۝x{״Ia9mm/T=.Pw¿+C0Oz62AnKMʾN~V)m=U$BZڗ?9moa$}Ip: |xGU R z{{̩R|9'ѻ+Zl CZ;1E.W@Ʉ 5LZ];z DFNAd(L@-Qro މ@eH\ ɡ-P vE#[(Q杼l>.{GѪ9NވM@=P}PyMSG"t@/tϪP-I-|rG=㥫(jc'"zG G Hl5L t.tЀ^M$t{G C4[=4G@GuAB=К^M=Єt{ht!{ G :t{4Nh@+-&nA#,@=PP\Bqlq(vPO@ôm$M2[<Cay>D|xF)ii"`clFQ>gf]AOM#BuS{ f@p3Gb4URDqIIC#̒ a_2վ˹Zt}׉hEc@s$cjDsfuok*Ƥh7EA0jCR1s5kdcÔXu \Pp:ա/tQ9^Aml٤*T$<8[ c$b\,u-Ƈ[5%oD,hj%ָ__$ü/c}@Y{3شH*q"V| ^uŕߩ*DcȂ8*n=2Crm8N Are̗TBN?xۖiʀqR${&8 }բ/pU X R[sOug a41& \ۚ%ގK;TSO ﰽ q̀sG#ǵBgtxLI6M=V~4؝3rK}\|/&XsoLq'gK]dwU}ռИe{NRdkѕ:GMxpTC!M{G$tsMePPt&G}G4t!s{@Bh}QM]Q=PPP Z窩/f73m4۝<4u^X9gstj\0DX؆=Vpn,N%?PK)"ˁ ANV264 5Ud0,ϮBA<ݺyݴK4&)vt.%s 0;* -<.9qW-lr706p;y!(G4s 7 /s6"àTc.@:XHqdu7R.{#p%ͥP=Bq-^Y;:C&aFh o},Zɧ(;CuGR:T 4duX j[`u!l~, L.[ 2QViqh} /הlmȝtUCi'dPJOwJTPEEMj!|Cm.|Snߊ^ڦ2WG;]xs[K.S0iE0pе4{. 'tU#\tgB0Bp#Umli{&qqOgwGdS2XsV2'k̀5KK7Ϻ9\34]ޜ-n I$L14kؖu\-˃uGzE<ͺt+G܃ToYKHwP9pyVꆺi\]EbfFc,H1jNE3T y[Fѯ#4$itl9ao>k DکYEG uF\jN H২q %y6n?+Gq]SQhi3Wuq_K俈gIGXJB X%`|RgZw42m#6גY;/`)Grb@Mza[=4G@GuAB=К^M=Єu0#4TcH=КG :t{4Nh@uG:^B>y%5)2sg9J^⬩0T [^\ԢZ/0WG=wFW,T-0ܶt+SK-/zc);sxs4k$tSzǿ̍h;+$<ug+0x-#(I &)Y؋'W(5 f$DI#֍H-$6Y]).}L+xG@ˮ9#m^JV}uK!w>9L5:70>G~3`d 19RK @ˆ)k|)!S}Uiwy$]?zO{E}Q{=S@@{@/t{4zGT({BG}= {@/t{M=Q^{ os \A[TU$Ih.$I]Mh@uG:H(v@ 9\ oct$ ;ݳۨ,O6uFӘBMԂ,D[d`Py r)JT-ƱK1Rhwo=l%DQLϖ.}ـ~)WmV4AńӚx\3 (a`{,s ~O IH4qVX$sZ[y^k^[rx@h-&- $Z^KIQn7mimTH@ט *0'8H~;5ZE hy&n7zH k&$tnk)fijFQ`oIW-'3C%Nz2:%d1@<*Gyfb}5b n^j-l} `_N"\~R9ג$&URbٞZXNZE[貎7QUr\<+Xwqg;K~q\U:9:֍[R77Z}ـtëΡn)٭ފWJ.)Zy4Uc33.Z-0ml;dpE1:[ dNQwG{m$iJb{Fƻ_MvrqI*Qi]mk(z7;#ok^ZwLjSloS6 v_8 lEe۴sRtrYi墝̖7F9 *Mƚ81zv)OUU3cX[kr}<ɗGH8 W2Q5CK 9bz ZvJ[[\-T[0#PGNlaaկ|؁|_9@Xz'&fUՔUE;]'~:38}*y)飬EHˋh 5>d}Cr`z7iŏb9E ?~q5ek&nwNڻUijSӵ6YuO5^'oR rбF=@~//"I%y\!v@Pn Yh!@.EyphS OM4Otō;j|/=mV/}crW )1E5}ZΫy89k=w[:;/(6==! hm4窣œ.hC7WP˲m/rRơ48dX{F;5EE WBᙡC*yPJZFU ]}̆OCu-+ 5FdSOZ$a|ػ6R$]ݬI ύegi= 2n,TH|&qc@<a-3e+ҊY#$.p@=j4=ML-`cP^NY9A92I,3 oO;I?vC]eL#ݤys'?ilkV:v=9KÞI tEcmXe&{%*R.{d3dQ+y ӨJp%;yc 7Y.6uf*IHQM**e`m#2F2H |`q0vv5|gDy/XW(i28$ 8^6W ]alyyl?6}_HW=G$m#7<}2,g8tb 9yZ.Utc!g81訥|]q0N-m#Um-%mݗMulq&hS"ۧ2G%RzYoT/jjJѠwQ 6_PK )ƛA1G1"T*B ^k$xkG]OӪrWD"bAP>isM"@Ћj "ȲB,Q"۠( ekA#ب '<}ہ p(ƥPbeytl$ ߢB.P EO_D%}[&.%t@E}7B_^IMҾ$_4t]F=4J.:Et_+wEЄt_迚.( //> |//D_E_}WT/_ %}SDwE4 "a]EЀ/苢h@(.;$N_t_Q0.Q4J A;WA:"Qp? é1rFl{flتn mrAܝ}G6.jo1ZX{˻6u/]2\>9m4>v_2&fj0S]TGMrT FPeBv2Fᵬ|$u\ʠ㮪Q70_T\}NLn96zz*?5ԙ+K~sK,mh1#)w`ܤ\,]p4ג1 Y^e&/u*$snn"7w{r _B<=VisK^'Hn^Π*%̵M9@v d@{o]WFG"kC4.zrܪXX`w=TtM D,62:YR:60Hۢ,,24dXkn .|*_+8bN..`23UjL?y ?yKgJK` #cG# +mcqftI\s=GG0S5Pp{x "smQJ1 U5+XƘsߡYQbhX~H.}RHZ/pV4EfNna}N㚩E%[rGwF+I*4TKh|#W.*6 166չMe&~R# $i6GPMp` #sFI&zۡi ~oNG9gwIQUHwT;'~ 6ט_cBҴr;ꂷv6gJck\{5wN5DC^^Fc`o7 emf7}ԆSI`[kc[ \Xf9 \/$}Ԓ1Ó5 M6gZی sr \u1-.qXt6Y|C syʺ7eUpkM4l/K卅n]A[G.9.uxӿ*#m[ VE-L 9n#}n g'ظf`A3ZNkBE%D-$ s8WX66[AOy$s!$[[9{GU)QSu² r?Ea1U>NB %Z3`E.|J~'ät̒N-XW9eMEkB⓭Z0ڊ1I婖0Xce` `xpNHr=&24f0EZq4t;;|b5ְnXܪ'Y hԻdEGKD'e_h- s\_ϛx\IO  >6%>_E d EQ4DNiwEEҾ@&i;oeMsc˗e4+Ta5P+eEDwHP/D_ !ٵ %t]@E4 Qt_]ED'T//莨@@(%A>h'}P +uNhJ%dmuX["i2Gc(**6ϐ+iukrfɢ쳸oK ڠ'f}w_nxahpQ3_]oe&hY4 Ep+ -F X;V$v9VˡAW+ S"t&8Gxc~M_Of/J[k@dq FEa/foHs4&cN:Yב >Y, *dw˶' ]jŶtX:9&i7,RVTwlla]666 a~%tF sH(@JWNa]EЀ/苢h@(.dw@A(H)7@+#Ц,Jh9t ?t[D $'mmP|dӪgB^LY .LB NYНE@ꄊ/t_; @$E 'd^NȶQ{}Qd 4SY4e{RdE[TB^өNڢ!EBHL[t(>,jBu)tYHLY0d{M2b i.tsM%jp ׊ya, Eߑ^NvxޜT"M'twKk: MGwy!œ\%&eQlp|M;{ȝP5>[G[g$0 #xm>+;iwoWǃySR6'HMs5M-vR4 njAn& UZXܮP ĐFNfznCbBt:B; Zs䩆8\y벮 EmG2X֋Sk?vUrgks rRveVVR,saG+*14sS`.AimથY&ڐ:`.isI9wH:k&`%v*0A;#.)&i{|nX(y f!\o|}d9׌KMF{/ X'q7л &:},sLn6r\c2jrALR8N]Q$fvȣ&S29p^t2զ*qsȵͫw͸fo cƲ7ZuPVhb'Mtd}%K&6锷amÅ`cCǶ_KU'*vG4_O%N1ki)I-0GC/;NR;MMcrUMxi>fk!{%(,|rcN˖ߗasT1RGwݗ~g`\FX1mpidɣU6v7ּn5K\EFԺҸ8Z$}սq R-I 6Npdkkr@-d eZuE;!EdM{RdE[TBwTk˺㪪ZJ)VXeH/tBd"ۡEEd #THөNۢEALY超0өMG4 q@ILCXh-zV7ike 4> t ;MU l\b^GG7LK{>NH~]Xkɜ7;Iwixg5!γ%MM{DMߺ9?M(&kMbG[[ua3 m~O0$/|mSsvu~jOn5T=ax2Q#&UqF r{;yduڷ<@^YKM4y#|se1Y䘮5=BIKZ,BIh.ǻktV:l ѧܫ>E"C18!#/ג3 k tqf֍Xf d0zCewDdNG4%.,-NEN9T:X{_p1+\a&F/Ѝ]ե tiԦZZ E Y /tBd"ۡEEd F4PtL}GTnr)[as@G4P$AMrG4rK|7|B; H(@44s授B[PlAE羾jt̡vB 9!i!uM.@.PHB4.hQsAB94 !P&B :IA>iuB怄Qr)S4d%clAD]bqL+ׇp"} cW;Mlt}0,ا;e9 \NV݂qcb:|JA-+P֝ gy;< P!A\O{eο4ppU|QU8t*֜ffW#/SM 7!0.4^ P˛>)~}KBÖ;Mn0fBL\xz]¢ki\@ܨ]I&JĕQǴTvFslO歪i%vRӔy-Y=40s*X$!ٮ:n\Sf H ]vvf8&ym5tӆHј ۝MnJBia36FBF %K]#I\6XFј.mӥG2*%AiqvVaE,movbnno}[bu ݑG')hM2ɸ┕qn{mgc[MOON"cj$ma{gK5WZ[ 3hhnwui7q4gˑkxtשׂG @6ry%}DM!8̫~=̉EGX/^/~xiuB ]S)uLA4isO\У(悄 sM.h@B6M uAGT(&;#}T 4S%Ȧ .hG4]ojL1ݞS?]T}ַ`,o}ɺ[d8d-ň&ku6|:r=Βlvۂ,c|]`m7䩺ki#CUBKf8k'\وC|pVk3L[(U!X_k8:6[JڟƁpJ$ڳ=K,{W=:cnj=UL؜͸=q$ٌNg.S^F?:س35GnZ>6:Q䝹8u sEv@Ӛ\lHkpis9zFTG'w ,J@wNG%]+MÀZoa!}TSj23|ơP=HYn](\ U5Z#isO\ 4!B4QPHBD@SK4 (< Ll"@4A@K$rG4(snKo \@evapثUF;4:17 t .hYø }a{[nM>j^0}E=?pfcۘ6 ibq~>);q6!#B+# fh`:XmF%epJ30=[xZP-%EXHXj?FG0.d%_sjKR#<[Ǿy # mT8 Z׿?k쮨$-[F9$m\E=~&v͆ -LpDρAtTƟ 4wy2)lז8!tiH*1){ڹ3. {sɺ)1Z~J3*OM@)7l $7Ԫ c4NCc裛dZ]u4ax ~elEJ{B,8)۱F%7Jb o"I)hx|VHk67<6G5+Qw91'̨EPJJซq[O4*ot^bWjvp)`xi b5, ETmoZ|9)ո$sB;újscQ#ct h} F |,; $suӏ'Y (FKHSRIq`콫#-u KdsTI&Xcݙ-ƠtEZZ=8i2è墶).rƣdg_ ty {_ETd.iX4#6Rc3.s)izR@E@Q}. &\^׵ uAGT(&;"5O=e@44I@6BFB#x[|G%ŖAАET]P$͑tI wr '@EЀ_ɠ]2P "%4_P]%l}P 4_Rdlh #wE@/dt ȾuM+B?͑t]/dӾ_T(͐PȾ6B.ElB I?͐t]6A:}Ⱦ?͐t(<%H6E)d"Bhjpꨪ$'FP ARc+8hkA:/)nõ]tݢR`ƺQ @._|0,|3 ũik C-mQu=Ks ut.xŚkExτc`2x;۪,#(rg)i6iŏިx? ESl־؀7pvUaİ;]az9+?j6pO3rH=xZq GLOO$էFUO܃575E[Yx%Ikt4znTw5$iTQNt8E}5%Y@<$[HvlEK8fh"bdī-+ !l{uN\k -otln:?ajjdLk@CAfT <=GIb㕙 h=Yltӽ`p:gk5uT|o;@Vxs*hisoj8lXm8`n uYJD؜ccsMmj  b9&_Kn|TFs>6Z`-Ӯ7Bi, 631Ѝ],WGƧZF. 몆+DE[Tu .esmúUh0,;k~G I OtQeAih$|`؁ qthޅY0ǪN-,Pc원y_jK/xk4|IlEоف'lTҾ(#EЂ6A;B%A'lꋠd"_ɠ!(Edw Ql@@"2PNd_B(P6B.hA-Jbqw?|/{وj~h-Y!h$F uGg0i*D[1SX Rh"M-H7 RyL\\iP7.&0ˏ MJGWmgFK7a~p|"qH"1hxOQ >!qots)B<;X&nJGbUA[H.OG8:pG}n7E]Zrv.in6Ui/Zjvas$~|',k'^++4drL_EB6MB'lyװ t67+ll] tW ?d !l/.?͐Q&PddD]@#?͐Nd(uG/.d]4A;\!/Ll] h@.H D_T%l$]!B!2Qtd(Kc$= &e{r'IX'sthk{i`..mE[,W!Q=,-cQ>g1;iUٴpN(wI1sZ]mc]<J, .ewsӇJ@67]BIߘQfWM'k5<%E@VKP~6;|-^ce[-r]>62FvVdҳ4"=n/GܼX(sBD.?5E-FJpC@KST285EOWOS\װ;/ɕޏq6# 27HK-ks&Al:9/ic.ֱ4`>0i"1z6+e9ףqħD65{aQV\#{b0|Nՠ6OZM+B I&|.q3yh+ JQ!+u Im-YNI$P䏲i&Ak6[I4ވ5A:PQlED nsKH6 4AEtt)%; IKK$hH@!4%tʠ ۪ChTZ3~hAZ6 okm bX_ݖea8_vW\DL;!k1::g2KkՍWQҚiRɛpd$;kWɎq0_G9iD8pkqsidd[ ;i ٵUv8 q \v ^Y,A̛XmqOYv/4[Y$/2k źk8V;Yk=b [UGP389}=odpARd{s4uu[e3O;KIHv%'X #bP\G?ddc<-9Z`eI-1ÞхN.p7J)$O+@?7-Ȏg*i5eky䭉i6+}EvdMppe#Xs::rUb9xkw,EV]s&%KK..~ˎe;cЁN76'XMI#%ii -u>g.O_-3׎VN'Jʉ#Ü^ ȶ{Kmx`/ԛs:n]H: FÕh v[:ZKn^َƺ6;؝ǚ .w 2p9oe-ۍ iX TnDy{*6FSmV%ZT<N]bݮI hFtVsH }ԟek\Ǻ.GˢVN|cFF ^f9K[I{摭NPkL}`{_V4Nb\r謴\k9gmop4,zYeү14  Í~w7y=D!5 F4t4P4Ђ-.4GQ#Nh(h B !Ɨ@-.sOTiS@-#Du@-.E1ӢH:w TcSb m ^M< n\ &)#LbfԾ;>zl6KWMkqײV0:n},IU / N_C/q'kR`l/ݮ,W#r؃veZkF_UpRɢxܗ3KGi} O h x7t`xY&X}}- -cN{*ue>ao>ɤ-ifI4A@ @ɗ_ mr"0֐@~VtWafF A,jZ.]HN_`ᡷX;;Oh$0c^Y ,BÁG+!Ȟa^Oy0%m6uQOB%{]Cz|Qv1 p(9ptmuHԞ\t+fG;m"K0ITc1+AkTnOTQCcffuj)*i@eD{orz| .+GCb"{cmZzx0t cO(6F z(ZآCܺ~9:g8C+ cҸ:!F^j֎ȣG y}[9s"- +}J)#|$H7WV c37)./;4+-3MduNI-|sVy n<ت}L#vZ@_; ^6Ya4H\gkUr PLR:F [Gp-gٞO@ܯ^? cu`={}Jq).9Ckzt7QO%3#0q /i1xKOif7#e`=:iV < x{O/k5m$3#}|.7Ē>'XTA?]ČMSJ3QZf[D9/!h4FꂀeNnJel͠dsPc2k٢atBjit =h@tG4 Dh!CD lFPBh]=;i4莩怀 :"i hid|rFBhvB6KDTf(:QR3Kl0)7HHkK]gnWg^7r9;ux5fQVY` f1Rԝo3w<A,2C?tZ;ì8~nɧcx0EueD%hy;{\=\頇CQ j n]nKZ0L'c;'8{hۨV6zs\'bӥ-'8ZnOZ>%QFYĒv!.6ONhX\yߑx}+ԥZHP%y ӝJsB .{A QS6O[6[uUal4Ok 9W]POEHӴk#^?o\{;2So^ks6ၭsŝBr0."X|Ab꾿BP'N2s V[;EPwO($l%AT+8zl,UMk-]Е.1՛c|?4d]]_ej݆ܔX|sy镸|u@@\دy>XYͫc9i9to?r.!Û 7gcQbNdJBh8mLX{+˥m^ޙpu$ODJxCDT{כPn4ثEhz#NMB D|AG4 h:#hE4 .ipk`fsc`*t9{y81K04QE޶{iD 2i4F莫 6z$wNMPR Ը&Fj%d$ wnKB#Kܓ ]=#d 4ODrFQmP4Ij9%ѭ>HX~t (7FU8g0{cbj&@JAm{_K(DsGE@ 6#KYВ 4(Q HY]FKTkd(BZtKT@-5M.: ]D5A =RBDi-nD#T j@(#G Ђ6z$wFQFꞨDjdh @'\5BNF H7@42=x bx.!QTS<Pz*훆p ^F81Fώđw,GNO4s4b7^/+Ňzg|9Vz8\-LָH\nk\X| .p{H:kOX+Pp]@jt8e3'_1Ʋ{򲮞3c*q\y{ Ü+=KQ g&ZbZ.v95^GR1#ltl{<QkdEł}tNi4VUr9YlE9WIv bѹk#ϥ3tHwUHvM57^4UsZZ[ i[fll ҷF=25΅[`ApK[qk-mOlļ8q{!B* }:]wˢttΒK<\!wWDZK~EF36 8 HO5㊙j8n:kY{8oqQG<+9ONށX1_[nUFV~?*DBZ@tKT@-5M.: ]D5A =RBDi-nD#T j@(#G Ђ6z$wFQFꞨDjdh @'\5BN]=R=[C?`|GDʘ1wl>8\ )XÐci.7 ˘Qo%{R쳊E[A+ .KOU !Eu2zjziNIpMBGXgtu;tXks~J:hIpsݧn.KhI'I) 1&n;PeԲ7畒99 PުcphG+ 5A4WHX[.V@ؤcA#9Եtν@p-MG<G_lp"Iۯ5`i3$ fO1 Ҵhl6<֣Vr'Q\Ƿ"Zc$g19pUx,2F{=74եs sLn4>50[boxE݌#pČXDiedֻ}EF ;GYIn1Tc(p;cFA q _EQ2'w-s@ y5YJ!0_G?RT 2#]5+Z.ڸSb?C/$nF88챦zeGv.4+aŁrD^sG.cc>V:ƽ Ks7_ Jz|Lawv`}V0)EyEoO.FA[cş"5xp ̰Sœ4RKQsx5[n-=dj 5am $edy/lk xGI,FP*9 ȶt+q{<Ůyt Gf$OMncdk/3\Ȥ?)byю .n.4;;3 |0٘KtQ}QKJkȯ -v! װLM]zvMkrnXRB t  Sۡ h.vBNn`ABBz*Q.hUDNM4-K:Hؘ'P]'yͻ#f ؖ M,.QA BKsnKf«&+c{"]xFVoRG5?SÇtަ{,w*T#m@`Xs\Χggx|α}v[+S0GY@@eΜn]S3_lqۛ{k)I[mǂWکdk> X견G &6ۢˍ~kf!-Lku-&]}G Jۢu0Z{G87QK,ILpםCk8^ mK,wH폗љBӣ[*KQ&9|] w*.s#!7ہaad)f`/GX2A3]s9Uid0oc`15)`X4:&bqo=eRYNGCq~JM;17;){A1LQ^K̬cGZ-E]#}B'fp{4k+4t4n#呎dӘ_E6W##`kUD㣋u)ZxaDکK Ûk6豴qFwi"/d|p{X=U,oxi܋]r^#K22Ēlf%Y$H>ۨ.q5 WMK)Avm-Nwu瓾Ee$r_84FD2 DuB4#z!@tG4  :!d!DhPBZ]=;h:#G44AAZ'DPӢhB J&H L iqLlz<ye^.N&p_Ӥ;Goi#_#|7Y`Ȥ{ $SQA̴u++K֏uϟ8f^3rř_{94EcrS>ICiro`4ԣ*?Sjgi/ I{_uW%?XW[eFǝwv#2' U[f2*z#Lwk*濫#s4Y'oK*qa9.{%f Xkq,Kj>$ഥi3i^[AY YIlExaccv_oU2OLUIQ(jȨYTMltԀ}.XdHn瓱-BQǃT,Ћ{NN/>vM;1@w$W<tGOe6SO^K[AK]i#Eq>IPgJ1"c|N2C ,l`ɣ/~)b^{l\'Ѳ0б\V%qulQNֹB{Mmn_?Q ׾Ď+n7! IHj7#y/]㌫ 8dC;oifxm~7&Cxh.>,8_<*{?9TtFG% S0H!"&.U__ws6NWQߠ:GBʨPIp/c E K46D\KZM/PvJݔZ&Tʠ7NGWq{n\w%.B9wBD #N4BD l hQ !B KGt DuB怀4F(< D" tB#N&v@!449% 4i+ ʭ OfEL4nM=_:j X#-h]>L7f1~VІ}pD54<GHeN=V)YMѲ27+kH? q-Ǣ`@l4;eꧧ#gw\ "㈰b:`yh@-wqê5:nÚjQN$h E SM-;x@R .$etG 4rZyuiif+ ص~a8`sƎm4X+pX `'\]345R*WB ]!3TrU<s#]KY0З ɹu ^^Z7TcE@hd!y i*e oxNl7̭B|!`IOI]@h!-.>GT h: GTS#@@44P$rG4rG4BGdd FA@@#9B\4rG2ȡH4T=S(ꂅM.isO9@ 4HB6M EPQ >:T 9uAGTS#@@44P$rYn(q(19glSIKy(K56g> ^<٪dtPGB罦ţ8$u'1G`~B,iIU#\5Ss̬|t?]r99sm|յUlGw\[kgbve<:;VBljHK@!+]|luUm+-,sx'[c%kKk5P<K5J6|n~FǞxlXlsn?S,񶝎 hԟ'a8:޽VFtG4q~PK[ؤ7ST1N;DϚ~`KZ螵.&߈U514#7 7kF^aNG,O+cclu$ܒ?PڙDP{b+>1;lȅUclÚxZD!XIC+Y1*^JfhFrݍ:8<:W}^kHsݻ+aG>mm_hBWRwpsch:E&RX[Zq:쫵؏- bbS۾ٝX}ֆ+ /d`n#lIT=S(ꂅM.isO9@ 4HB6M EPQ >:T 9uAGTS#@@44H}JI\+g?vE3Iz @hsg€ccf?SI9eeӻso9]Wm^#]KNBv->L/v %%ɈH6 ڐl@:l:^}TtۘLkfi#SֺK2ѐ ̈́#@-)a= uCthxn[bpF2nFl85cdcƀhm䬛+c2BC^ 1L>8c j8ZjY5 >k2>(h6%y]tA|W8 rZ&6{w^F8JuѳS 1;a3nm-RKTAQ]ak7H %ȚA{WcQPTTVps䐒@ԎV]"9dnQ¾(-l&WH[kU{I" OEmLpyG#Ϣ9qe%˼r~8u r5$"5:- s6J[[uqhjZꡒQ\w/{l9{HU!Lo^gUkI%%4ͤ|wp[%&#|nEYG#&a}k*H{7`WƄT}ycc-q X,4FF{ RkdsB!WBg+5?I[G86F?06k4ܭsoQ=iJW:xdcA!W^vtzIՔ qܝ?|Lak J9Z;ܠgknz58W;682)k{X֮' .yA+$brX2d]m@9 ɩ?gt<>-.ocsd MFJ5c7?碥E.c7 d>FF檶9˚٘W W`{Nukjm.O+dL"9ےUt1ѹeK:hpz2Jn14魂>|Ӻ. ix: ByQ+7{)(x#l-JJW5;9$ VS/k,=}{)!=FW㷈+⁇RP]N\nBwZ] ׇȥ%){#SALb38+ c՜9Y0t&溚Ťb*[nv[zaJGM2GQ.qf[s6y_Xݽ1s.ԮX8 r{ԸT -_CN:T : $N(< KM G4!A)&PB9!_D_TrKEB( @:}Q} }P}J] /]BlW2T.@sM#dBE}t BB((@EЄ;};:@B%LСt#@ I2/-˱q0h'9/QvC6w {ꢉŠ%;: p7;ix?r(e45N \clc[iQO5H[hڞWVqTM6a`7ש!d[>- *C0̸~m}z/*v~MؼU,;k&%ϑ w>v ZYv0EmYv{Vm{&#&3nC&!7m p sEbqzydq,$[49S7MU@/7Ea؆1(M,nkEn}/TIE2= /ؑngTƸ>?MAPK#vRl_ͤu_X8ᯢ6VRԱ%GG~hO2i8c1dsCMjm%n3Of 'AZc"1N7-2IRn\p\tSMNØ5t<noyl Ԍ:H#lW.)&V^DKE3YP*ljbo赙 \m qa*hkl)؁e!=mc$u:m+>tQ.#QZځ#X-ğUv\$ ckuu t0rq"+>4"&\YjQQL[>U*!Mup aէNugt ~o%cmIQN,ԛw&θv䝪K,;}ثliW hxDn^v]ߩ?eO<E8W\*ODR]>hB ]@\I Đdi{ZGG4(jS!>51I!MhYCS|ci,u7i:h,Tt5ȏ,Ř.m*S6YE0QV~W0H'?#t/uM48@͔?'+ʴ\[1,v"YGGg]e\Uh-fRAG"TS]QF [Py*%pcl?GCm]V&܏U0vRhӹph;5FK+%d$e`eo!شz {t5{]7Ьʚ5mtP6Hux$u:*)#k) ].^b 9Yx%J_68ta69\ bж6f6$r.%t# {w A'>]2g0{n/^-R>nLT햓KӺ& [i{,-KyQH2e9t]ν`_V3^y{.VnFŬkiq)3wyl \[ӟTWQC3sL~Vzny.%]N(p-HY6_{'q>fxԯ}RPw_t򌔬.Ni9]BBt]@#w#hPꋣ. 跒%Eo$wK;y !B.d[]Ed}+y $].y"-y Qt{#]@@I;y#",.H.@#@H[@;"H./蕼_}SK4t_E杼@;B/蕼.y#]EdJ.d[]EGNs@;#@@E Eo$[NHE.@Eo$YAMps*)EDd,q@;:7(^_:j=. O3+L$Bs>[ WUlzg^Ʌ:y"uCܵK}iP mP9]!oK')4bk(℆q+W Cx%7ىJTo~jo${/qQty!y"Ht_D[@Eҷv@Ev@+i{&."H\ӷ^t"H@Ev@Eo${ 跒, Ey 跒@#.{"H}D{"H(-y Ӻ^_t{"H n+f!ٞ":Uu/M#a:wr7$w9֙6s8 yݴ#_E>zy5"sٙb~]כ{!1 [ %+Pn_v_J###A f6p'&|S7Hs7vP5T_[ .r:GE,E(so#2]9*3BG! ٬:_ti5,8\5:@.%qK"!#(vYFI=`gX$xHAkUMw>FJl *f!4ΕڟE vG{3OX㘛j0]).dVnꨜ;VQŦ9s>qb\m7Y,c o(-2K iJxgs2٤Ϣc9qH哄-7xz7STbComWJevi$q{Ju2ԻGP ^'xYGat]GB, 跒-.o$(EE辈-.o$.%o$WTM]Eo$to$E.%o$.H@Eo$Y@Eo$G}Ӻ\EEo$ Qt[@+to$ Et[@+ꝼI4[8z.8DɖB]Ms Yn-k;l e+4FUssL`InK'<91T7 Z>ciFi6f`,[{sӺB0\=u_j?~>C|3Knzd!zR:r a.^0C4b^bswA.|Ԩq 9Y$QJlrg29_=ٔ/k3Ym3dd/h6*#lE RI\|**co#Zp̣:ٚ| |A6C'-n8ɍ -^a[)cFZͻ9ַ,~əB֏굿u<3NZt[J-i2QU2fn)-I`n R[K/oYi0Ƹ?cu,vrIy0t֜LǝYtPױk6J52E^, =ٯb$aTz.VILׇ}7`':&Y1|J/i-W(etxb:.=Q::όj Opʟ.ݤB~9lk<{Ä1j;m{K{%MS}eT6FAɂP`uk_s?IN[ⷫsh(cӺ@3ip\vNMz4喭vyysT0z$1M}REf|/ }p:vLm8s.@z>I琺x.Mk?b" 9ťγEl7Tx;5|l"k_E[!sYkK{c^] tXTԶ ) c@&xuP"~iR[{hzY 6 FF6)mWo؏4[lk+YS e{iNXDUxt& ۖy*k*>Y-y2v[w\0m]_w\g@vK};B/蕼.y#]C12 =o$ ]EGNs@;Qy hE(dȠ%disEdVE$sEJڠ$#,hJȲ(EdP9"Y$,4sV@I Y@4ȲP(A@JEj6Nj6N VNPM+"@hVBE5'dYBM+"@(dVAw>,}SJȲY !@VN4t@4$Ҳ,Ni^Lo!؆+6/6.jnt v`ؾAM$Rp98=)|i(| ʏQ|K̑t,_5f;žM) }' < l5+Ji#4I%LDa$,- [ 6Y'ŘxETbY+FAk&`< 󾨫(x};%$聯WH'9>j[XILoD)2n2u],%k[:IayYr\u?jf\M}},v7ho@;贌oV>Z;ޮ,$4XlL:;uɋS\+ܩz$ƙ^KoWâ"ʥ"a̡+'e Pd, lTlTVEdB,!j6N,VEQ"4}#TYd@PB,9 .h,Rv@*-fK)~/vB"?Þ IzqZQA'dsIp,^Fp1h- ( cMt^|Zxs@nS(>WQƔg2N ڰHQR)8q.>JXTMNbƴ}&ڹZ/a d20z}o&%N8?柟jJ.fۡ?J;|[&Qe{En,o WFOG0Fj1J66q65eHh<s?֖5;13]+U+cI&:/~x{q~:Gp ģ(`xR p[XnET7GP[ɝxe'>%ECOTI=4s"/ Wq'!8$wpY8ÒJV>TT\ѿM~I!kjC}Ƌzf(\ZyZl>9q*jZXk*0op04ԭd\r/a$Zt&͛&eNFf0Ƙfxܟa[ZmwqY)G02 rJN&K&F+CçE0]3ٓ,ZbE5,MdڻN<¥gXkmީp:|ndrø+Tp0Ǻa[׳ͨ`G$fR#Hvo=q4d Ekq/V7ARÔ]e,~B4 sYpkRo%mXtF|7K|Lɛ=+- w쒪voy-< UY6%Pj'"fX@e }7l9VF1dYsMF!Ep,+!GT 5}#TYdH@cd9B&vIߪBIIsG$s#K@4#B; C`K#@@K@愽TPh dDG$Tr@4%ꄽP e.Co;A 2{!З~ߪB=SBGT A@#};Qh@@ES$omQ;$o!.H \tz#lU.Q|̈Dg9qg7xcM9o^\MX|"YSPA( B\ZGÝ=_:KunF3b8s E4h9eQ>k˻D,j;)ZFI#gy}NO'waŮfV0H' ͵7\UV ')˸մOu()uXc{'$[e]W1-%7O=4qK: x@<-7VTß+Ehʸ-UVi#uRq'ЊY dk!6Uc4?1 KpA C0Hy'anCXI5}Ƚj &.h]lME,4RSPUNcr3:B07bݪ89besZlP^l>&(R9|'&&oY!y7^XLf7?X4 Wh>ϓUĪ]QUR&sC\ؐ4l~a\4{~\~t@4!З|Mh䗷H@P~ߪuL4(uBGt{~;FPd!O@G6B^ߪh@(ꂒ(wOGt{ T#=TH@cd9B&vIߪBIIsG$s#K@5:Z0jcΈJ*IŔ0#aNw8N[Ŭqu6!rw#(:zt[ݣk'Q%K,yw+s#/ ^A ;! A+ ݅XmU0 rMt44!L:Gk7%ΑCv Y',g+eF'[ltnHh inUfAgqZ: I󶫖 \u$+xy?/G<ҧ &o}ot( sB^~B-pTЀPPR@Av ds":r=Uwt?:P #9e*ʗ .0q y<+vY:&\Vn'Si.h^J7m"ȭ Oߪ@B P/B-BHA@KhrB9!Є B @A@M  i hG4   rB9 i4M$ ۠A4B B\@$!4@"(I4EB]S@$!" IQd}Lڹ [#@CZ7K.9X(f40nϥ/Wq,#XU5"䦁ő)\AlWXiK=#lo6U]cI(bk0ӌG41苳׿6[4 12=Xqzm#Z]Tָ9r!u~yٹ,De/k 4GE4X{SۃečeYlU1{Ne_6lK)NJ猤^٭y۪TgV2<_*L.4ch;欥n-Q䔙?2]6;.A5g{ok,$@`Ӧ)јKkmvrX3_SB؟8LAU\`0CME΅4~u 7f|\NR5k71al?;'4bnq ƽtQ43x>LgJdqGs_Geg&Nk%ĹUʃXN_WgM^ i hG4   rB9 i4M$ ۠A4B B\@$!uM :MmP:T B(ABi YrM.I$Q08 OЄ B @A@M  i hG4   rB9 i4M$ ۠A4B B\@$!!QPi&W@SKh! _B[BI4 ,9&$ 9-rB@"  @ !@4!$@Ўh@(T-[g4Do[dez %k[͟s?S;^F0ݤ#{j\JO,df`4=A%x= Y?L_~h~a9RџsKPύļ's%qypw Yaq-6idPqVq6hX pW/GOikikr1xXS<&nRFNYd̦aw o&йHHXkZe#GB2#x66jm׏ƖOߣQ[Z6*q] wq Zc[N°NJ3)9;`IA"!@Kh!"Tm<訫tuT5Q; P(HK{MpG"$ OER'ζ I\N1NʾMJ j-NB 5`xdg΀v-߆eݶFc5W(l^;ӒL߰>xZ4SdQ9٣o:AmUuu-%XQĠl6 im[Gc98yv(QO#$-PATx߅$PUawyݾ6WѨoӹԯn6gٮPܬPؓ׹Uu-v  Z!-is+,] 4EIm f~rwHHƽ9|ÑA|KGҊ0]_,Q?,8MCeZC}Sz-UFIkm㝯WSs볉٬ O2Vx<9g]a ._:*K_Poiu9;eB17{d/b1(k3j5G앺#diaCtB$Fzt&!{Ǫ9!T{!Tr@B,zte@}T{@ET#=Є!BǪ {BBTXB>hB>ǪGtЀ=Є {Ǫ@BcB =Єt!,zt T!S!BǪBIzB-h@c@B=Q &T!{4 !=Pt!@TЀ,zB,T!pv?+qˉeTݠay+MSEUBvGɶܗKS(BtXB>ǪGtЀ=Є {Ǫ@BcHs^C"f ᪆OWT$]6,Jj II=}Lt>ypk#q;|1&!'oxk).Ī*Scm,\]s"xlأ# q6kcAk@ mW7틵.,ƨZ8_Hj~Fu||o#G./M . Lz6s9M:3\O7Tlt1qsZFN1jݾ:X#`?X}LϖWHǩ]|oq<c "lXaX꾟$fRFA_脁L-6GThȦr) >@$$rB4%].! Hl) &DB. Ph@d ] AHG$t!GRBT]wM#!_T]@BB(ꂄt]@#w#h. ꀄPy@.E0tKM]B&JI'IJkj9|MoAG014M/c*:ə- ,yO.)1pj4TQUA$FZH:൷&[Sy)df^DZ7RSQq,Ll16۹y"s.;$=Q)A`SxzL-69v-sH:/SQp~5q?3HkkwQYZRٶ9ְ\;>n{{6~wb5U83~-׃Ql`ytUSDlu-7.n;,N;M2a=<`A[;pxR,*'E$3W4ݧPtpD,\`Ogү:Wbxu^J᠕䈃s _%@>K [ovAb5P|6zExfa;"-q{0Ge4:k2ww*˦zq6RrR@W\kam&&DB. Ph@d ] AHG$t!GRBT]wM#!_T]@BB(ꂄt]@#w#h. ꀄPy@.E0tKM]B&N&P$#$.h"t!PP C`Hl@@.a4 .K3`wnqh] .)\@d _EI6%`TwNOT4ؑ蛞^nsWB/.} e.(uEЏ/GtҸ@2Q+ {CGvt! (@EЄ;};:ꏺ@@ 4SDt derB9!rK||.H@B 6 }RK@EB(G4 P.M wG$#}t#]S)uLC.}Ё}R;B/.h SH7gzN:ǴTt/Hs׊UuTzLz쪥d6!1P\:^y+_DWI Xfpdlo7g,i1T:64CYGV-6!MW/nR ٲMq~O WpEcu9& efk6iir6ל{Vø[7L}JƣLzZ7or<'֏wYAOO$c[uƠF\h,q9䗹۟R)3hLm.9?֗Ň>* g<8{NJy${gc_v ^!&h-uC;hU،gq此yrnBFªӜ;& )#},CriF_5.1mRvAe)'5h9-dY#,2V@2,.h䕑miY; TY;!E2LE#,5BJ@+jdBVN@("QAAtY >mӲd 4AE0(tsEmPLd|4[D[TA+ dYE 6!h .TE9Ys)mQd(A Y "IY&uO]S)[t@: lpq\Bjel0f{.v#UMG4yZJV:VT5s,3X  (&}4̙K|-p6u66w0Gf^Y|2(LvDM'Cy1 .^|JitR{4 mddUS>g%BK$-R١+!R!+'d uHd(Ћ 胺,T}Ҷ@D "JY ?9ȶA&R@>HJrK--G , D"R4NDVЋ"d9Ҷ dtG$hJJ .d },ideVB4[T%mP{psMP l6A[(]4E胺,+n #DPy@.E0"9N@)&mrB9!rG4rKB9#N !@4h94K@is(FB(AB@FG$iT#DiRB:!\ӢGt(ӢB4BD! D:QDA悃\zt@:! @t=؇±$)g6L$yx2 N^6ξLJ:JbBYCe-sai$FZZlu[k/p<']}FW "i#^/%/p+j%cS1ѸN ^Z]|^_8:]IqkQQaYď|r[} obI\É8Wx_L )e-hƹmq[u0yi±,9RS2W\"'6&h[qU|XvlTT]a<WTG5Li7]L.MGř(بA ` KM;6XI͑ŷE.v1bXf1ɂT܌{#n { p 9hxodp$fiCg—ӛ'ܑZ嚴S&ohͦAl;v)´T\SSI>c@s.E8\ d33o[W^i2٠6s WTxv4SU ӂdkOgu&<:4ͫ< eTAoz op}-'5g\IT.:qRV7 Dit/`9t@Ѐ P@@4rJA@PDKe B4isONУ(FB4#KNPF(@F@#};uF4@@ 4S r)#4f$#$sG$$#4 mlR@F:#D hF2it  h@4rF!!uB4F e.(!Ӣ9=:$wB$BFipU 簲78LEp8z } [+!ZJ#Ԍ7v;M؂4Xg{ѕ+).H (@F@#};uF4@@ 4S r)#4f$#$sG$$#4 mlR@F:#D hF2it  h@4rF!!uB4F e.(!Ӣ9=:$wB!Ѝ.: lQgK3̒;wjɠTOR8K6 uܠja '%J#};uF9 r)Ȧ6@M.hB&\ h#Bh@"PHl(A%>hB!4h@ܡ H $HA!4G4Ke 7GTЂH4QЁ!P lE(#hB't?RctuM @N($7v܂z:?vO?P3浽nCoI(䃲rY~Ţp>3G/v7l( i!cgNj{"4N_MLU{#ĂЪ4˱hx?;Xq:ZFzhȦ"4e; HG rK|9HG  vA@!LliD@M9rP9 |9#9 <@Ge.(#SB #|;FsB4Y@+%k'PBɡPPB:"wM#&9 7GT A悃S t&4Ld@.IsOG4!4 B(6 @M 4s \4 nP vG$OG$uG #hL2hA$wOGt)R_SH9"h4&.J./SH BBh@/t_4tsB%AB@/r@B9WE@Ft[t(]M+}SEBЄ!还G4 h/&D(/t&:t[T uM怄 Qt ӿ-BBi hA@B9&W+$s@4rBB_AB%A@@@)t!!4 /H9] S@@EB9 @+a #}Ӻ- .&ҾڡBhBt_#h4]@B@"Qtu@G@DS-E:c@(}P}S%@+#NQ{"d{t]Et-D {@/tϪ.tDyh({'t m.=/tEo4{t]T%B h Pt^T]@+y;dҾꗺwE 'tGwEЂ=Ӻ/=Ӻ.^GL] /tt]"5EN .; c@(ATTE Ȳ/UiJu* HglpƂ$*hkU9;dEĶVV05̆0.,^w>\Lwubw+#M.-i:e&bdx7[ibtNFY7ͨϟ/>h6@hh@<.[{o4=Ӻ.-w@A{)5v']E (,=f{hN@a65vu9t:3;f9[TV[{PK;Qm" Ut6"ڋ _!=6&]sO?} ^q0Ѣ7GZ6jZf[d ј빹XI#-{el=} 3ꋢo4{t_W4XPK) #w3uNGW{q>"o4ҾB hN迢^N{AZ2Qt(>.DjySut_BJ.VG.ТOE N{t[]Ӿ_TO.^T]B B2Qt@NA{'t]{E^BhN>{J.@C>.VGwE ɥ}@/t N_Tto4{t_ /t{t]Et -Q(^T]@"5ENt/^T]}P}S%@+#NQ{"d{t]Et-D {@/tϪ.tDyh({'t m.=/tEo4{t]T%B h Pt^T]@+y;dҾꗺwE 'tGwEЂ=Ӻ/=Ӻ.^GL] /tϪ.h'T]uGw@G4!(hPKB,I9-B9!!4 P6@ B9ڄЀHM.hPr@BhuMn jsM  &HAGT&\Б!S@$#E9؋٬;H7~ZFFOR^Mk,ktqokE *JGQ|l5sn7egyRD {͚ۺރU.RIsKZb7(lI9D$k#o7{h'IxXaݘڔHBK s/dMd8zj+a^@gI,x[(y.iĩHw40.Cfۓdᯆg gILx\]*s`;9.k]cb^ār%31pm_ʷ1!QPǎw%m}<[q.Ͱ8 A2mt24Cqst-ho]wl\Fg194װ[4C)x}Zl[^|7v58OPL԰EI d/{l|W1IU3߹c0Y0,X\ i$鲙^ug{6웶W>8S^_ՒTTcH8XKs}6qG`\?FxLc7#!k\(Bf ]7ǭN;AgԎ L2Ydå1w4A7 ff7Qk.}3By`/1W:!Q2̸yPgr5RmijZZ 7.M`BisPs(@TYY.o r@BhuMn jsM  &HAGT&\Б!S@$#Q!Р &4Y!@$sG$[TrBBh@$ !lHsE \̡!!!! !!@@MM"5OB:HG4]!H@4) ,Ӗб堟 VЏPd"&HHHB."@A@ !mBBi\ !@E)]Ђr@BhuMn jsM  &HAGT&\Б!S@$"r)PBZB H!$$sK9$#KTBZPBZ$4rЄ !-PB$Ph 9%9 LA #_?:R(АFd -Pw@4$愑ВBZHhH&PGt T%=PL (*5R@ܭ>ٲq~ M?x7kEfp 8ũ#LUT-(-׼7ymW8+捴<7Jldj\>i7;}J -uK4{l)iEQIZ+\驧o!g1sߪO3 C٧DULk1Gl >(tf\&̥ 3pF~󤢓:Q NWBA FJCF^5qv1O>4lqKOhIV z4kI1_ʄFF|N/A9-bZtxqeZye>4x+A تc,%1e:lQ0FZ=|I[qPi N9K$a>i!qmWCXώxfV9G+3"Ť ˉOG`|^F!'6>o e?=ʼP 8u\5]x4îyyփ/~Nl{+Ύi\e9"Ϛ§Rl#4u׶%;1zt/ ^L28ve űYf34s3c4jW{s?śȮ8~'/❝l3)_ Tр .1B?-.QA5ckxͤhdgM_ȩHt=J)vUᘷtx'GKN$i"9AbF:'~yl{s|S_y8r Ƙ+pMn37@_|bŒʈ'l|x.5~fWL\jWjOطǒP-&HYC-uOpwtx̡-?ceq*q-i}X,z"ǢS0VM'k n_`-ou$'8Z 7&c# -ZSM>"ab«e;p=4Yطp6#}]N_R d7 6Y٤5" ks^S].;.90. ,3$ٮ#[-'.h||ELQc#<.R {!sͦ% 4$-Pw@4$:%0VMƮw EufUU16[Y8-;~aq #E;fpKjC5,; Ihw Ę=n ;i1]m@aPHhH&PGt T% AA\`Ȧts@%$rBh4䋣BJPP@ 6t$:#] BEB9 P2(ABHtrB9 $]ST]S(PEЏ/\ 2!sO PQP;};Y>? Z <$O싻\Ѩ,gTk=!pNAECO5#NGYUU^an#^cac 𰛐:_^\\Iq*pH (iG)%@aXt4t4UA_XCXNo6 ,=~?cU0K]TT 1K<Ę6h<[Dl ?#caJ'cc@C hq ) I 1^nbFbYVCKQO%#hh+X 2,E‡h87 ⴱx!3\2;0w hL'-x@h8AXou?x&.<[$Us)ir,y~P,Wx #1o|AO0K)!ԉ'M ÿvjs=1ym*6Qx`k>Yl %\Bx_^&2T>3H%ZMEE<C$ns״i*S\DaˋDkc]yhRkڪ69,nwXq[f[F6({KZ7'/k6x+ᯱ^, )xs1G$T!;k&ݭ a?ێ_HqMSkaYbpC:ڰÓ>}Tm27gUho4Yh Zt_^;7\=|G;8c CSTFm`e O4"),XomETp9pRUVp9 "fxji%o>Ni v/>8(LWİ[-$ Icx4.;_R80i52X{L<Ε,f<-fp|1|wgqg\?U0e1帾B\oct7-*N)xp?VC]Q]᫚F}ckoyY s4CU1ӵ=l݁q6 ";_ߒ)r7@)p' :}BX&1{K[$;2-DbR$i{j^UvڽWQq8uQ: 3PֆFAOU\k¸cqR* +wd11q=~|;S7@Lj+g}5%>+4EL\{lpk@fQ`=u] Wq6|->hk&l3#KnlMEƄˋ\K$ܓD/QG.!"(KM ]$9!M_t]. e.("G.iHB }Qt@B(@B( 6&Ёs%d;}o| 1RTJő8@PmW)7XJݕK8xFԍy:ݽ勚 _ [Kp+,;(a Npp&/% @^T=Ӹqʩ1YW-$.9܀8ᶫq'?r0ʨ*^`Uj(}oMƬSW LFm]\2m.ˢ@OOR_6#+֍чs=-iZUa퓂Ditwm糭9/yN%znsA 5䏼0MO$!9|x;?q_I=c;N.v&\2K :rWd_nid`Ttc"y6*n4XcTbTAPNU2:,мK2GU &Xj < VS PD/]ky")qũp .[?ݴ"(+/XFn}SYtR閨wBA ƿӋe}MF P`ܹ,<~N&Da7Ø?\Xde eXmnkVCHEi/۸ˈa{5 fhGMtK;]E6jf4Ӥn)N?;%- RG@_bʼ.^(|t5seX\[:g߳k$<q RGyeཀn>X:}Y#K˳ϵq/!q;ef]/|vg ͅU0,&*Ƶ%OɆ2v?=㸼S\&x'tc)]O}N~{K6xJݒ brgk M/8u QQGSRb}t4푎/8v8{v+QKXw|/tscs[yFς rO) pG?%/;G}q_B>7=q=f%Cp30H!űE8qt__; v-ن1>INu(: @.ދA~O 8QU4exyPF|s<}*=٭&\3_xg<3b05Pa#no [VaQc[EPjjDHӸs]pz%sa) ̦F3i0 i#I-r/'#Esm\ᤝl۫xe(Dߖ'eUpXnMɶs5ЀyzSLY]g eJ,BtVS;xhx>dK[A~*RpEV|Tq^ `BV74%QO[YV}4L5 Q2~xFch#XkQ ;w,Dp[|ףT%l71:{؇ytr;N.'6C0*p^&CP%N(l~WCEko\4.jBfBO`{M]vGX؋/TiE4E׽s7@ZvU K]T) 'uNjX"콽`î|l>vK`H : y+diԥ-?-i*ƉZHӴZ׷}`mwytOpAtRRƟ\iYes^9 YCw&cp䴝8ˢl,|6,:nKP-x:g ﷧E[roeE9tI!vUdaG[yJ-/79\C讚6ۃS-'],Qggݸx|&ILZEi>#MI㹷㶡]1T\EN#R4)w g;m-``_fآ`slISkKOe\6Vj,o۸=g R͇ŘGfʩt$i MF6YhOo_FfbbH#B} MfU2Y u{R-sE.E9X4q >bʠ{cеJ/{_Be\jloz S-$ !$],+c:X_S ٴu;7Knsp BkX}ILJˑg("/m߳1iCHnb_@IwJ2?bAOHʆ - mګ GuvoP |0bֱl?cEa40t0}Gkr91մAOk]"[0ywXUc<f8就@ˏUè'8*=m^)$qIOtd8>ke;{⢑R 9,TPCRlOuJբ94|}GHW:d;譿p+Rg-CW˻kǟo^p\e j0& ]k -IڑM+A˓]Ak)H$\熼i,q7 c<aCVX98fzoپ":e^brLG꩙#NȻ81N^ӊbT OQNg熇k[GH:_|xu|;$QG'gXkcpse&q7Kk#㋪xZiz|'#ASvZ-#/obe7 q bRV4ESK=5KG@wF6cKG 4 { iVP$Oـ(IP;};Et9 tꂎsbr)M.hv@@-lOG4: PRjAjD@MSK@ܡj9 ROAFB/ `BZT_t]uL2.Gt\T!F5?K)vyZp`5B.G3ǘ؞J/nP^0>~p)vưq\{ ÝCH i0ɖ`s~}p EFpz!3 Z)bhG}BIutpvX_208@i/ }2>ɸHUQ;raLk3-R_bb uī;$+b\@eOvsA=8)e[U&`'1_O7=Wp!C؟PIyfly/Mbj<+FL}D!frӜ~A('SkJv^!=O;\}1xn4>!FAn֚^>8_ x3ԾGURK"wXxU;[n'-CxWϞ *DrN _o⩧1Xrz63\W C0ݖqSLJ'4|}8K#央aa-4oæsdIL Wq}S'`7xKwHnz=SGπ\SlGUSK)p8z3ٱjau8t= CPq5fww;^Zَ`hj: /_ NU4Ϣlkfkvgh$ƿ Ũf>0Fc"~sd_^(|P;0:"cX{ \?_;;[p1~kpqQ1aLqxELL ]1G5@M  R4s is@ PvG$B@@[#9@-Q42TB TK65^e+e] K d 9⧫q6 _]CKi8rstmzwg? w}gNy˭8i'[G$>Łؕχڟf.pl?t_c uL,%}$49]QSIE0.7Y+CGL)ᣄ TB78k0 J1pdV{ۍ.A{;at=pܔ.HʚO$~'ฝ/{i&lvU X47\wV||?{,fhAgaa t4]o=ox_g\/I [b %rP!b}T^X˼s٪0?˘MF4#GQa2:J*Z8|6,+$?Aq;8lTU/֜\Ó{kk\- s(0 ABu+ 3\[t$Q|>;etgboScEvŐ}n>a 8"ɵ out'DؤTt-YRFئ9u u{\oaJ9d{ubS 3D줈pNa{(7cwuUbOw4),Fk[19L('HRD3+Z -6b{ vsLy|61q7 bO)EXdz*RSfXƃ}E39cI#0G~@Shh+RD06 L+`zsP0cq; . -%44lh#lbXEr_ַ- W?;\ܮ`:ou.PMJ@4ꩀOsJd!p &ۘ;]9ZJ)׺ AL.|n?m:8o t4&듧E#Oկm5RDDl,8ڴ؅RsQt!݁*AE ,v}RaA:_Dp2L׸[*nlFT ~D~-UHmkd;W2LF`U"${x ![TO4.;EL U+_ LDEʸFV[H z֝BERu2֖Y|G%%)6-=u4` ګ bH|^4I#}\"5vZ[3TT$?n@y ֛h4ؖߚM;eF9sV8mNg^j_8r,:%^dv hGEq W.BʠrADbcN rAcXq.R :<^f\y$c*vwQ-cQtr2?k#[;vtRaHl oK5D yjߐnR R.:YR}\q\m3l͐QsRdˇ4H:`7[;{e72&[Ů@Ɯr%)^ߢ܆nmAD-i)3$e#]G<1tteؑ]r.摶U.,[cXZ} 4[$cK J7cpaM_7֖>a,sno6Y-ܛ]Vi;nz*S۩4Ik+,kEl`[r6` RQM4[JS]XvAe؅N'`6ca ^ӔҞlZFhv}UP$ E'Okp/U ubLM3}Ԏfx )ƸgلHʌQɲ#4 ~ 䎥U֍H*3z9E3CCiݚuQ{YؕDw.\sclRM鷄ɳ\| hlz90ЩbNX[[RQ}$e9܎AEmhJ٘ kaO?< V5Ödc|YHmmd04k@K Zr@*9so ָZ[;( o`ZU9uVt$b{] lZz#wo ugjQ]7]) ʌt GUd@98X~iFGF^{swUZ^~`5X&X8SM$FtUg㑳AG0,p\\K,`TAAUt4bE3H\"V3 춗}1*v\3jjjr˯ַYaRWop*#컇lsS۱9[Ѡ+NX&웇bMM p#خ$?d{v>E7l~,pk(@E[2,.up cl7yߍ;KC&nlnKL،9de3 M3+ctOs5'F;]"LYwf5zl-YTaq⴬ FNG6svIK۰ ۔ɆAIe|0X!e#M÷3ʏ$Q~w/kl`2}5_~(?ggő?gF4PM4yqa?u~ OlpӨ'ԬxkFR,Tr-<~ۃѱiXnD-EYA& ?7m)?8Sa[8O[4ݘчw؄ |)h_}IVx96d|Gdn`ul+E*qWJ7} Qطœd0|1ۇR<bG E n  %3;8%qn3i1h6pK6^^=l&|+adTaQ h->`;+-iC@B/lSg]TX -MJ-uV<_LNϓߧp?kF\[UGH& fmaқq|?b =~ږ-Jëcᘏvhտw퇵/piKk6|m BX&ikɶ*ȯϐfH?vq WB&dRĿciR7Z|q*!k];!2S>0?G.g=+s3[sa6ϑ\-D(ps][Uq1,0p~4Ü|5tmp9T1A#&eÛktZ-8j2tSy=A"tۏgA2#sRz߼;E,#Ÿ1,? qe_p˯շ FMm+ז<\:uRYM,50ce4r#,vheoe44T07x0m)hH c8c79I+|K~*3>əq \D6/d xv|&n ;^!n꺼,ކyK#th0ZF颎s&ŃmuIa!^g7?q #߽xj)L$|rW%ṜXЫpƻ Ȁ>Wex1yq68ÉjZWbu X ֵ`Wˍ|"8cq1Ø\5K< cu෷~8!hY- .,uHh-ޱuS3갗8mNNY8[ȅ[h_`Pvt5aͫF` d ""*]oqG etw}!쇑!ko*őN c,sK͂ql<5\{%2G6V\Ub|7U7Rdyk 3 1o]nVs89 |RCgoQ{G(Y7Dnk{EYj&_#ԷBhbYϺ1`pKw]W̏[Pu{-EG-EM ]y&гK&T86ب1`%4FH[%/!Bͬ$dU e7fѓ-A"9˨EeD썭|2XG kb_OMsqbU秨>)ZE\\zS+l Y-fN8'wƸOp*Um[ i z9[)u6vRd˕%bFw`j򲌶S|krV&TiqH$qfJvkY#Up͹[!e [= 1lĠ#01(YK&cv_rY^iu! TqIN*hZtmfhN)M;Z ]+í)#}\3]mzM΅;3ڍSAY3ǐL)m+eκ=K$/v~Hu6* UI 9}q ^k\];dlU*6L>84+#.0PrɈF` 5qs_S훍m}qWqx/0.vܲ& ml?˳1_zLrΙxsq&n:e9]OsC8`H%oe1hj%m|v\=@\+êz('1:9|]OP授KhB92B p[sԋ*HG%!$T%4@5[|D$Yz*r 5$l4 }~.xhq1+duFg7h \p:\]SN~Kv{jtp=䨤Þ`uSoUwۅ'EԵ,+i.kHWѸ"+c`[O<Ѧ t? (48M0y8 G1uC[_N-AXCB:Mgqr} f4ۙ nh;{.o#z"ZW1 (́=qbmSc}M.?kob -pTka񖖝-mPG:.ҷz6 -8\ָݷPhr#7+lO{~1[N+AxaOMdXJ(ѕmUW(k>m%D,uTӣ*j.BcCva攒vq%7L6׿TQs`M骖x׽a2Z,mM sίHF:hQtm:Hk)٘6koVNѽ8-5;waY :E8T+Yٷe|‹jyei>N M|`X@$$hQ#Ғ8빠Y# @>BRGlk3hCHTi#B=5Re #1xQuDS+HWAi ldq~Y}C(˱YZ]&*JѢL# fc[1! ;sdf:Zd8;[#麺S !p5絣_䜇-@Rftvddqi{[.y+mT\X*e.. -HeG coњ}٦mP<5Wuԩ4ms(kd%tu&<q)'aqYQ`f iٮqL q )72J,^\E0A,O|nhq4ىsz5W/& LKCHu/ZE4y"WFc1vk3m(s^\`58=o"g,K-Ngy&)#{`.]d;Gh~TYI$ҭ6{$Kz!v֘c*1L疺-. EE%Li}5\8!dtPIS;irr.t_u^;eXX.<\/ⷄjqU>78SkAvhu9}z쪂IO a9K"xs6`1E4Qfm=Cp][%0blόݝ.pũeyÀ-wvi,C]+%hNi&é]Nȶ> M%yxw8)x](K/_}ɑ{DF\8BF(6WIyk6lpE2Gy5t/:]{>vN:kjž f)g37VuگWC/>"˛pVH?f7e$ks}5k3h"^nGB/k+T8v_\n_[H287-0rOk@QueM1MnkjiAsO=3;w6P.sox<>"vYXrn| &jp=.<ɚzm sO29'Ϊ웈mQD]udlݠp>/O;j:rI~l7|Q? Hf,쾕pgXj1)3n ,7Kw}у|YqmQ>|]^+FoHW x$s\k/&ew S80\j3ٗ Pp EQX<'rIc??}Y/$hx)^zE? ,%|KDSz}3CMI :w2/+?Vf^'( 2m?qb=i3j1ڊ43aCF~s#UbZd#I8j" { C0Чetc_ Jo&<XԷ^3wQϕc4c/ |=pv:~0|DXTbyGlzχFx|9#6K OX^0!.#{8ik._ѝ;^̪يaQܭۍGkXZ %tz Ӓ.p-k:=vab!YZ4ԥhxNj|]6v*dz*ir,W30Qhnbw*]ReTϸ<"Mt->%-SpU$!͒G=ܖO0#g_4LgwKv+oR(CYϸu3.)5{7Yǎ)l mI$;ey8]O+P^4"*z}:B|Mr>Wfx]l QuNKAi+חO($0t YKol ndJmòaSEKrQdh: Wע'k[w9 o䫶69s {2ǸI I'Q@\?BͻN4xdq?B8403Zz!OM0c/y?[~qJ˗e%T͗hcF,fij4*,,i˙w@~R3OS(< 8zK“Z.4AU<2\5kc;vnJN9B\^m(OeT.2Yiq9eoEQ%iU3dvk~I$ݢŵeF@/{]S&&dA HhHcN<2y+cOwYnmi;;(xl\Xfuqa6 !Ss/Thҍ7U>Z ÛM73Y]Q !UH׳uxHYaRI#kuЖrF)c5X|n={U5W9Zmel줏]>ݑ$M*'t-FWFdd7Iɀ{.IHu\C|3֒ đ,6-x\syP 6*rBD0xdʴ0!*4̈H<6Uhq2lI+SCs3t7 #%;;,7N FL\1}W Q2#ѿ3'pu Tc{ fcl3^yD pv*I,4FÝq][lCa cײi,˘oouqسa'Sߪøs]Kbimqc ]H[Q$"wreRe4ѓ:-Ct\a.lN<'}[%G2?RsmfKcGxLv Y0;>Hsp2:?{QN>14"})iLbq{BU$iKAKEhk$5 WMl`wk'/jqg1w,D"Shp>_ͮ)\S)>R>aa&2P=ŌXĜmm4TRC?me^-Ԯ4jGq3@/];dWc|A]|GL5GOJF齳۪Qz&:Ws6q6_uٓTE3xzX kًڝ'_f)Y,'qV ,Hg%uI>h!9/[@vē(?dbRpkEO'ʟR"ϒjQd `.y>\1q-5N36'M.!YI;r%x:<^៳)hnh&h }$sU^ \؄Gϴ<&q0%Տe1k<2p8g $:aYԍkmpemEM F}nh6(_g?c)5?aR]|9 |M.]`41ʼna8T>%o r?_5aJ.5Ǯ(|wdxW76rN>WBÇhq_eko ƜV86Uk%݁L>CeNFx^u͕[h5*k@mvDF[[ZlzA]Gi; |-']otD(*򆾬9UtW0of[}.LB{$ L $u79jTپZߔjPIO#o1hv>YR4noTǐ?V(==Gu(b\E"iA#!TH~R;5vC Ѫ))/ ~b`K\v7U271}]J%7,iUW;;_vQl A-h"s|%5Y@ ytm+F: 1݌>k*oꌬB_^al\uSCe Bd~OTnq &yjac!]D ^C@J 7{m}4h׹ߪrnv>gX_]mMDz2_@Qs8j;;4 %}'׌-Ú״ݶ=UZK uQ ƴ{Rni!S2ӡ MuʭB4 YRq1h \k_ɫƻ@GF:kNZ` vuj ms llf"UlK]rJ#.S߻{3dá%i@4kD.I;y#9GRJ櫾pp$y j }#!7uR25z {^B;\YWTD e Anv2덬-ZGMcH!>S Zْtmi'vB3]Ő^ѣuݵPn] 3r쑌xp e p>eGs'68Xʥݏ\SeҠ6TG=Llb5ؠ!{h }ܩ>'~lvv&af<[* qBamΓ Otdo }oOoGRTM1 JMs2BjE ǥ8cP4ڌU+ȿ6 NcQ{HޡPnU6xRsZkGko&몮)ZܕkQpC-!gj09X<ʟ"y1SHJR3ma{F5Y I!/+^ُeTʙmD[B0KwXtUa,v\%T"E͎Kf ݒ[$\em_ILoi+] 0R7ip kDHc3mk%cw0 l{LuuϐVV& ;Uq cplOBԳ-p~/F/}~{vM͖ѯjzb2Cu)y[gޭ T qra ˥ [SݡKa4n&Evnֺ 'ն!>Lw)L &ZH7=&Ts%*q5ȸsјzJFCXW!6HTD[LƵSU!nfl%1fcuDSnA{28Bnnw6CX[T|c$,J&6鴞bݮ%0zU9_R;-$4[.skfvQvJ,l,5 j#Aۛ\0K_i 7<oG] =>JHuW=-yv}ɸܪ+Ni؜|N,譂A/9]ri 7kW)4|„].#@Yu& G>a90k0JgX_`J'6F4Z)ԲoZUW39"  d؂4gAu}Q-up# NLqES#㪞K PomR,c Yx8؎!1Nbu,Ql.%}A%;ʻsЦX-آ ov4"NLr[m7RR4ևߓ D. Ci k$ff#~kǑ%[M6JsmpJf \pehM {."Bnې[dOY*iq{Y[]eTem% Fpw42Zѧ(9v;Sǩ1EH1U;0-ˡU"4;vCldh#OlRuC{l/=YB7jqi(@V5<҉ {^>^A3`;9ys#[)1 05CA;@7a;+]+2# 2{ -N\Y[TgIf XrD@ߧv/ni-K+I sf.Ѽ{{f/UlPۖ$Um5Ij ?8x:p+76b3S#_Lע*fsaaRlmͫC ب #Z,#{ Αb]epАzuC)ПPeH<-ii1I*d*2HqR#+wF:G)hS(Z4kF 9+ KUl.F 3iB}1౮w"\tUi kܕRVuVRռeSG-S. -8y[ۖluPm=mSz6:RpK'Zx/N3@%#-'A;G)I+w >"fzeM/ UV[x*}}Cߔ*-Noؘ$o5T+TCbtQ.i ԟ1e'Y#qb? p$)hQ8s%6w!#FWT +w cNX#UE4חhlzX:och#g0O Aݻ2HA]Ic2QOT)H֋=u*4/.y~@ #@6 {٘*reeko%Wo|.^ZrW.-z'k(UۅV'$h'+Ĥ^ ;(u:VϱQ~NcO0e(+#ᵓ枭L6|pyHAcI"B[QkK;_BtTha 12(3|tR@?O-,' }s_Pzwnդu 0i5LfhoP`bksU9)MǶmPڵWr.#:;%D86u!KiR Q]EYжn6V_rjFFPdY"k[Tl"ѥ(n=oJ[l~ʋ%rQX94ے$5 )tS 4f4[]Iu҉eKxA&Hm@u=.Qlivjʏ6 !7Qva~mIF,K LJluͯs%{qE3 o}բXk\oj3EZUIQ3ZX.. nn 4/䩶vq%$@, ɀ 6 6 oBha^"lAeq}QhTN֋\ {ͮ7Fm6#O.\ZGP/tau=-ckJ9X.EfD*[x' ^wS `mʓil*qeB FSy)h 0G[&u ,@"H 6,ߦwdR ~ct{mktLxMr0lEvunk:'xCGԭm=U +Rk\Rkn"*f6AqeۥAPvf ۪P*Е,Bマ6GJ-YE a\\y)@{HQk@#RTFb%ksPM6MhMxGn$|s56:Mw;[@EEFMd_d6mbd;_Сۘ( RR-@OUwc=F91EM%.ڨ\ d([r,th#c@@X6xY"ֹ>i$]-`1f<'U  Mm^\TC(s(>'_0Pw7(k\t 1 }(FثJvn{Mls?Fm 07(.jMʖ&T+Oʦ5Bv&so5I+E'ˢy۶77PvݴTy#pTuzhuqTz(&M k]BԖ jF6?e3E&7.m) y<ŬL=a$Io;,H7mW>r=n`H' #!r s;ȳۿuURs `GRK[nvCkzlkyJw;# ' &Āy'7zӽ&r#5c}.QlD{K{m|PƁs*-'FQo'ď'ԀfnDervT4y2Ia"hrtVe{w y7Wiܭh66X{Kț4$9@68v"L:uMň#gKu*x$HCf3Zntڶ*xGtqğn8}.UDZ#ݿbx\Ѱ^vkM,%ոU$h-C6*յ}눰h.H'Iԯ{A/ u )Q;[AJ;ȜH{ItHsnoa{URF#a+_ bn4jDo:lBf`kdl|Ƚ歞;%mG4 ʔY-S&yF ģs~cA^U'foEX;VhnlBitd< ͊& u;U.xC:c1lQF # hZ #R1bST҉iKp!HN>лt {$o 'BK=ed6Zm{VW s"Kh֙iE5*$: SfMf"< ZH6آ5 q"_'%;\IN? }UAL,I*%' dq1{b)!LTX=w=U\(̟2٠$7rۃ3C$%[|f)>VXtps'1ЏUjzy)A<3\%~Qrct f/;U1(sW]. *^]ku%T-/TKEgf$ȷu8Xn:x",Jbb CœXT}I͠{B*% z]H}Ø\yx`ER#ˁ`%kkg^qSS`>@g`:<#QoP/hS.dP כk~F*&Hb vQ[̔HCB1DKq Vөk wj` VJu * u7U];=uI`,G&Z!:EO :2UJDH*XD~+h%NRH!L{7 F,1%+~9N#2<,RuI,";?Ћk<;jiF:%y^b䪓9.4طuK`93\-JV88[eVw.mj?9 +|C$l죦OEY4YSjocuN:ͥgIoV[iݷQYlWELOzeuJw]IYϨ|y3YJ\<贤-]+@#u gi4yxh.4,J6U~& >j 6Ҫ29 lo8~V^ʜX9YT`?DFKa=rʻgZc 5D6:n%xHˇ&(^F^|Z%FHb9uǾ`uU^ͧP//6Se^@$u@mKao㲶dDdB5Vs͇ -Y6JDgGF.~+_*ޙ.qfm5A o%95\ld1;Wog K7[_ICr@ z8^{EӴuFJv@7ul_R8^mCt6H 2ۿx ea?M-tn啮yK} N|W')+#$/<rT#ՎW]ex.&5u[)8s.B|el4U~yˑx 7n9. s?Ww{f!jY$jvqI=ؤQzlwk.s&( ى ~nAK+XooA#OhZ!iU#$z]SsW4[L7 ]eX諗}H)ƻ_\Ϥ^TdqL77T8"KWPWPt-wH͓eLpD 1^jI9ZZO0 {I:WdИ NDeqj%:BH|~ t9ịP.eLZGUqPsNЦL߱,׵UW4_eS{zd) (H\ XArvXܨ07?̾i4e~`,KL'6ռt;QClI4sk!m$ze}ܠtlO_\0̍U %16<7̵*oTw.k8{s[Chă;G}mB{6@h"wܬu]=[Ӛݬ\>KBU]7e8ݺUtAWbPYiJ'd{(#d.GB;=4#= v6[GMﲮ#Ğ2!!i =P|F_dcoBtnؼ擟wqlh>JY.uVExHE48{ %rMH]ӁXy Z37SOTAdHk)&3S?dS'5ܛr ~9>u6kQ mɃmJ[!..7T1cUDCp~ʡ"HA5QqǮ -ȏE@z8>z]RP8r'{F쟅AdF2kd#0!i <[X!ٍ b 9y"[R'FA MuM{򲫩Hy%~IMo}neHG;]L~M7j;CviynuJ>i`wӪ[;[MXu^K;ЅWpS(Qs}#;zH#ucP\NʂbIÙ@:7DTMڛT5"%w꥕ )k䞼԰R"[Tz KFMV?{ I U7#vZ̻ٗE&F3U ~n@EIV^yQ28n&iH]쥊a?DӻEԃ2vu,wY꨾ '8tiW7n(vv{\%d߮4PANAB?)$VKAH)nHO%8옞=ZPj#8#ݸ^Jn#Uly oHKd(\@O"q-"C?e@w_1ujdr&^ tR処BxKm:dA7SqK_P3parD<.g9Ux@7#Vv d!sU[$5鹺[ȩt(=S>C=@M :\>BYQFsmWNgA)c`(ɔbk77%-{c+j2 u=ec2]rlmYiJٌ|U>3@,C+_odXD)2x26 KL5Dd:f+^ӒE$EhdoլXj߇3`f0@ޗ餈y[qlĀ})28>ZG.S\'əZ⍜q1tn{Kk7;8#V8wlysQĝR" pJe_KQ$c< ԗ )X屖^OU^6\8*/h,Zf-gc:6 u?)DI|PZt(8+%1AQL&Vpڇ9dxU~'$sn5}-swD3 KaU(WLF3_+F@`/Cu.ʱBלpb+ŲeDH؇[P m{_0m뺵*xYqs.TS!Ӻw.IY-jj+&Gv1ͷ)2:vgOM_=l xmO?UbaM# ?-# )- HiJ:haTh9S?8՟SG3OqUOf1I ?ȶx,I4RTrVG-" f)j)\ HXЬw@9| )67ɇoOó+X:cnʌt0oq Yh4?Y?ETGǜj]V"7I3Yٵ.+yhb=p![OC}8aݯ Rl'/;_Zٞ&41C7f;,y;bo͕4.ܡt/%/2Ub0FwmU 8ԺV$V6$r.]ki wQlqvcnK_$YS؆:AV:FAFIMPr#.H7U:F7e;uS~ףbZI!>N6)"wi  9¬ '1uϯYh ʎK2= `wJE s%04 nQe3cq!H(YrEͯtd&I^=PWCo;(&MA('.s2>D(]gmkO): >]|g6ǽh!TkoGB5rEy_altc-`TeHN7snUv,6y ׇl}W& o@SlSڑT(ez44(:~k{#O̞_2#~CAhٽ/IӲ GEǥ ߢ2)6a~IJ(vRKjY;!I"ڥ{T2R/D?d]{֝]#cQO&,vfk- .6'čQ?ڂPZШ% Ij`N<. 4ꑈ5P涅%6'Ȫ"YcXPA~kP68*aEyJқɮ/0q aH{,1~GK+a@t%0Ѱ2WMP b? bMuk}ÇY( >]}zwRhrjtmM{ju%-E'6ƿSH;eFj'GZUzy(bX!R=U2:\)W`2 om}HOwSy6MF9` mFf-Mɽwmp7>kɱAIZyhZmsdGuCc{,HHE r Tyz\6bAttHD֝ ut0( X]sOBY\4$*XZOGUro(!`s<:f.\5~쀧-6VIaTADrI `:)fwa l ؃f"Uw暖(魥>Bʉ[} tG;o{-'%~KC<廛.ǘ"5 TؖJ)hr}Rx뇂:YCEL1˸t`m>_Ax)^R pٿYYCܣm`|H;۲&ݤB @} [.wh*@W {@Bu LY2C3[;"QIBXw߅ժ!ݪxT; ɤuH:7OdcPhEq؏`7AQ2Phu#Ш`jI>@pnDwm ؃G0ցsrރ@$+BMˆIaqKĄwJN_T@uaH1?֏╇!дTds O쓋Oֿk[ <ʅ.yXc? QN1\? OՔ"T!\XF>wATQHDN>1L51:Z-KC*^Pp"H"{>ɹb4LŘ}Dzv!.HAZאt^ϔ&LH?1-6Tn$Ad42?E*64UQƥ /SEO)>V-kP _bquzY,=K;AX(i'uoo +zO;#o%L9>~?@}9_'cH*=ۏ7@AݣEG. VpQ WDAŎA(qV 4 ,!Lt,G{ɉ6Y>i6;;%/c==6Ct'{sQ9>yo!> aom@O>M#x߸M8u'BoOQFݢhhMݱo詘Mw0RG!CYT=ULXiíхޅ[(_pKdF`r%7G Xc-Q_=–Vr d u@Y.#[tLL`R` 8z87A&*Ok:ʦX.w>Gkzf?Pdń"9"ǥJdkČ>vRlv7[T{ (>6[)-FO}aډOʙe0M&lbG9O>&lw =A>&c>mÜwadQQ&pW-LBrX)7 5Ss5;.wws[(dV ,CꭲqFzZ`tWԹJm+eh!UWH\ ˽8CdtopA?%~U:-@u-@}|'V&8&i5lǿn oI 'E[=.qOYgJ\F*fg[8-n(E*0/rbpw3s]l~=g.6 jv1@ԓYɛQUU9$g,=lPeP_<`y(;\ѢtL?O??)wQV{.? @w(saLEK>Y~~+d}K KɈ(Z)wTǓ F<+bBR"O'SKb21Y>}տw?av&5)d??O(EéL;w?` H.gL2߉p7K!pw)ݟT;wdO-}2,|Ddcdd?bjE  ?ߢ g%)ѡoS'w~,R-x; Cdd?[J&|Rd?ߢuԓK'5߄%S(hw#vc c $= (w?Ow%4K)2OV'w~e<#!2De?ߢQ9z r d;+;(b~'ߙߧB _/o<ȱ?YBF]ywߧK-a`vS~ȱ?Y(E.K^>N#!?,D`}ѐw~Owʐ$BOw~AAo_)?2+b0 Ʃܬ;OCd-+;)#1?? be,#!?XFA$g~<%#Je?ߧAC"(pR;OSeFGqR~d?ߧFW~r7J;#'!hkY:O'#)ߢY(W`GqS-?eww)-0$ҥg~Ow yww~ Ne?ߢ2% [k&.FCd F3O쌧( ,ꥐw~,4w;O셠2襔w~Gʊ#1=ywy;dd# O47c?Oq=wdmaw :'gh;O쌇%+8r q? ?K;אK!?2((dEw~,(gGYww~/Ie?ߧO)?`v3읁䣐w~? 4Q;dd? $uGr2}n? q?2#!?0?#CFR?O쌇ZF}:쌧;O삂쌾FC{#!? $-_d%cdksCde? M+?<@9g;O쀕Ecdd?ߧ@(^G}«dO2a2Owqg~,%QDAIy*su,;O(5?(;w~< )GT~\w*Sd+lR)HY?FSdB,IJScdB"*F?;wG #D< A?]elP]}\ ""?Ow~":^vn=ݑe@9:2#d[ld~7}Ԁ }E?#!ǭ/Kwgpredict/pixmaps/maps/nasa-bmng-08_1024.jpg000066400000000000000000002674671427377236300206040ustar00rootroot00000000000000JFIFHHC     C   " M  !1A"Qaq2 #BR3b$rCS4Dct´4!1AQ"a2q#BR3b ?nPi*Npߥ=Қs4MoOzT ҧ&M.hN "iɠ4)EDzҚ&(hpzRNM"hލQ4MMJhbh@-މ4#D@ZSNw84 JTҚoYds$^3ikl_y*S@/-.Ƣ!$0v˫$QEl93rjRb@jh-ĪuIȸN+[\ǎak˥6w4BznB~9+1-8fw)ian2 |kmpsIi\fq)HζH:{ϊDxFן ܕsf)<=2d2Ru7B ^dHGv^`}OFFzQ.%}nʿcNٳG[gŮ眓 nI܀$+c;xQ¼'5|كܾվ]:.h;H![@ۨdߴoh9W+#0\n*nvT]Pe .ZTvX &&yڏ៣۷kŒ/؆]hj8ݳV@6;w3r'0;wCLBK)PPI&{Щnb=i3f7n)ݔ o ~õk5ެS5r"`5d{>dnS,fY(*KWL SekA,RkHbɅyu% s`J&:m%?Cwh&C GxgQXWC;v,1T(JvH u?dz,w'` nfivD$Nq`@;^t_o;b^G[hK?!.Txx Q:рzWR>g~ح_nGC2B kVH%\ohݐ˴q m+ћ,$sPBx[{oo1Kxy{rQ|-j T;+x/?#UZoʶm8?=.ؤ|Dfokm E,0:Wm\-Ƶ!V ARUКp'mչ6>+ф bJ@s dgo]̬VI*{²UB j >\-V Dtyڏm'1\#0d\G Į1[{6 , *RJ2S֜3f?˸ _p0JԹJ:}apm;ߴx<hY;;ϝ\>WR@u![CȎ G~x%o.1 Xd'PwDtI5~?N<1\)n K'RN`bֲ5t4_Sf*+*BpQ>* /@Ԥ2՗OmRohv)rp]d9H2 蟺A4j#U.wٗ3f;]g@gbՙ֯ i&d1Sئ\nW8ͳ [ #U$!#h*I&b+P#q#֩\6}!+J$Wܗ4w`Oͥ,Pïnݓ$o%-D "Y*X6JRX@ԃ (zL Liv[O'ZV<<Ȥ|X|v}]۞w(VcA3TN B (NwUCtZѣY_Rq< a$ƤcqvPeC%b&-n;vCsPF(l+i߰vu*^Պ݋;k,!wnTE#LJ 44MnS8#J` AށJ"}((N7wTV{[Z2lUZY*]g wJA,=gwF ˋ eJM U6aT>SdF0 ີks*xHϧέڰkqZn]L q:n)cwɊq]^a˳*hsI"EId6jT 柕#3Ƞ8tJ=iPTtd'#>f,@aB Z=tBJJf&90T Ҷ g_g[ivDŰU\!w$@$nH謿2fn3/iy.m3lnT_sBA%jKA'R`ՙRDIݱŇ-q-Z;Z]#gҕԐʲX\+5[`esk\Ko [j~HJJ= GKȽQbN op[w>3wwxڂcSI| :ʈ뼁;1]elK2vTF]&mI*Zغh+Qm%`Vk9Jfq- -6P!3kgN_ycOms[JLLO1 25/qۤ;|B4̀B%2S6Z;*$3݌7LYk,3!.6n#ܥĔw/ީ"IN-'WJv5a^ ̽ZvuR6™P-E:@MC<ϹF1\Xv) aAw q)@o+0ﴯiX];Z̸^H0޶H>mZ @Iҙ'Jbkw hL}>`9np1f@,V fei 8Q*Iڮ?훵X[b22Znӵ4|4m)Q8̞{(?m,ሸ6.w6!& JR `\S=KL8v^.Inp%YRҰQqw)VIНJ*mGk'fcKc,}m5 mhgm+Hq: ;ofl8<#.nmmpIHShTuOczܳ3vV>ΙS#70嬂\Fm%a) B:3Hsl?clpl6V]wMd)` ZV6]m:d'Nܲ~I? i'Iy(JRQRTOԠ}A\ܗ0rn%eL]e%贻Y-6$%Đ%!&畾9;/nȧ9ssx[*m$0NfG v2ұokaYulc0aNK+TKm"sTWWdKƕgx)%ĭ:LJ ~ Bc0 q+77nI))Be"5[S^>?h_ ؜@a7LYT" q1ۮ[y>훫[o,/y+ qmRAдB&j&'=e.r.~pÊ.J4t F$|3ڟm϶13/txqw,&ImI;IިNsf֭f̕r嫊/?lҏ-!$ZipںT?zg g,MTHh׎Ԏ`0tF0kЄp!Hn{Ta/ nÊkmPVT$$ w/NwF<^jI_gN3.޴ -KB|k⸞[M{sݠS.$){PM썴a9?a*wS"4"N($LRmoWG}gaOTs\.ڲo Yn{_JGA[+)2&P65$sPOQHy@j'ԊP TAQ4ޥzfjDG&VJHOQw-?'Bץ[](e!D\L#f'aTw(DN:`N;G53_߲+c|Ͼޒ[i# "j]Wﶞn2^50ŸfP"R%k0C 0V4Ϗ;rhrq&qFfVvna T[mZVZz_ /?Wb7صq6n>liq BLfV-^r-y9߭ʁ<ρQ&dpAYYpz…TaB *T!;Y~;'qā"r뱩d3z5)ٚz?(+\M[Q'Z'rOmVP*UUۚG1ɠ VthubwXMWVwܴaۈP@>jΩٟc~_dvFwg*d  jfL}7y7 .Y};TTRue:2Г&@kÊD} ⌑G=~c7ygݳcT (QOx.JD$W=e\R9ڞѰ@`J}q@Qh"I넡-aKRfwu*C~HR1o:'i#f{+OJSk[N%wSLuɷRPYBIT0y$܃5~j=瞣+H%Fo$b1Z:AZwf~!$$P}i B ޵I2 jdj3B_\aX-ʢzC[{5/EŧqyV0-JWR{)}6"'m!4v7t1k ƭW[FV@>–E[S=kvK~9ڝn*՜1+uRA>2@$3rdѠ&'UE Xe맖NIZS{~8ܴheQFI[MGZsN{I j m[iHFNrI#NbHvy < cYyL1HJ ]/-o̍2=WFx;gʐT` I0&"{~b[Go7!"v;d(ɓq\8:o1g?տ}oiu|^GBd\GmXf%`8n~*l+[fV"@?Z%ۋ%)t"\[(%h;Ĕ֋"\K6ِ~jQԆL>ufA)y#U&x!*R)H} g4DT 421TиH*߹p v}Q=mݖ5{?MBR /NӨ +9dxlMoCn)@s>U5+mu|pW/)T#DGzĭRIe-#!D5k/i?W6JD%Jw(\6)OTV%Gh #N'ElCBvO'ɂڹl Z$);LLs_m8 l CIhHVůVMe':?ד9{%_)Zn-8;)T"Dm꽊avgr7'u@_?j8T@%D(JLVvw7ٷ0qcSE+XRs u*UWN?-㷎ܾgt]'?eqjb^zEvÏW<Śh^ ;wm"Sդk^쏝wcQڞ)E'c:n\Ri[ SV >6;p" f'u TXQUhXL( L UWB.eHŏ_|ͲAc iV|^Z4>"7i^%>;~,-SDK8뾔OO*Mgz}~?-H -$#a}zoZr8DNZB$]PˊWQՓq̍ U|6RU6€Z%'z_hsm8m/b }onluɓ :x s\XiԼ*$rC }+҆xJ)/e_ Oʯ.00>)-`AI?#U0'.ڶe/Nzz܍]Fյ]lfȄ۝ oV\a2ȗB 'iYF7'0 dncx oqn+{1ҧ_ "]5x }IJ\)/.ҋ{6->>?]̣vXj.׿u)N- vT aֆ'7ML*eѮrkz8n;,5uepOwR $lc<VX*uMˎڼIPH2 ;kÞ)|5wh OJ -@iB.klҭ[p[}"ut!"4F69f{E\R슕 rU&'q_IgmnR(PH>t>p!eHPRO]j78$qT|V0_wJTVBwIjW}6V7h :al RqP<+6%a:a3Kdnvy;ް)Km.3YCB?q峤k{dJ_aƇ> khIRg'ʢIhV75QpL=vX!]EOZ?Zح"W;*/<(!h*Lkq%mw,&vbɨYAˣ^U)J'bVª1^ uh (tu7l-UlD. 'KbtGM9r"BW'~52eD$I, LjH&do%FU,Q6rGr":>VnZ<х"+7-JBRR q>q5y}8#rӨݵmfTg}>/1dz/>'HRGݶR:qd,i w~XCN*ޠp!'֫c#ڑ&ʺuR.Ӣ-d^)xfoπUa1A/q pr ?U[uϺ޷[Y]l Sd@Ҫ[Z% $u-$~ )M}XNIlη|,F*`[%M*QI IPبV]XCr m} m!ܧB˄,2>)%'מ孎X䋣Hi|"\-ffi- 17JI'XZZ4SQ^=/pÍ+KvXJoO7n Tk`;+9m13rA-'h"8]8J{aj-dI;I}48ǒ\{k$:h 8q,>j((_vD mA'bDo ^x0eE̹ɷXDZ+Z)p7jЕJAXHR@$_g^Y}aVk®TJb퉍r3rMtscVYŰ_[VRMRjYqp[Bqn2&Q${%3G_hg\sů kqGm`MBIRG0+ߙNUǝr/= Fmmn,D^k⎔]}e|C/'knR±w Ch._ d%)ZQ@*HcRVD{J8b g8V,[`طۇl [%R5HQ$(>#EV`.`|.H2 hBS PTkɽ}p  ³Vj İmt{lCLա<8:Ph26>bkg;3_o6lJW{d[ A!mH@G) r;wm^q[NĔ$lA<Ҍ|+V=75Q&==QH:E$mD⽌cXMdz𒃆ij䐠Be$iD@ Uk`2SE(z廋{vN ւiJP sNI g(8xiJV#T Mz#9^^ec 9cb6LiB8ZB6 ikƝ}gk',Ovln`w[;$m2M%YUtLf;FyK1kZnm]Hd撱@&$jJ$ Xhu:( Q$Bdz0$s`IQ$N԰%%J7ڪ>ʭSj(R[XZx S4@|u=O. 1Ҁ QIڄHk5qEuײi.Ox>Z&XA}Lvbf@NNǕűi6 biKd rdx~d@&dΥH;G-lbAcomb7inIڮAm$5BTOڷA4P(  ߑ")_fKۻf[-O(*<"(b ,C,[KwjLƠH0kO-6BӊBU@;VjYjM ik*QL[/bE~SX7 ^klw&n.Z[9c3ұ.Pޛ}pvk:SuK5?ڠTPOAW76(Kž;8A#\G<Y":ST ԥҲ8\ {i& mɃ J_#wU=%tY%tU؎֗.^SkmiX;Ϙ};1#.fajh*&2н&w0DHr βTWmTRv#-?q?4J[uTXXsʗBKAag&ObZT|X!H)&v_S./K YNNZ=f4ɒ׭_U;x-m*:R<50#)`VHV7Sa)!?:׎G$,3;1tN,iBC= 9油­7K__D% AL<{z64]N)pyҮQy.6&R@&S)(D `q@.e$I"d+n>G8L׹,P)"9 FZpViyYaR=ۘų۾VL螲#qG9IiZb-[?kpׅ%>`*]7itOjKa"$ }?E\:IJ9Fևm})-6 [i)>[Ƴ~fY'~p!(RcWԗv)JLbo,X)!I@*nXiRnSe$ AL" 7 G_AXiA ^#PJyR.&P6}+$_s,T {[+w֛A XZ~ ,scrۭ6m@Je x@~P\^!C>reHjKysMMHqIO0 ©9iݖЃDA=EiO\x+I2qw w%^T0lTPmlL@#rwUW*%"Ki>_֪5o%jZiiT(SeZ-A)%? ?/YNcI#XʻIE>g e zT $U5`uSEˇOA%Fgڨ6x!] ׊v#R6 %:d5.B,tU `|QIWƣ\’ M@^f@?"|Ҕx+k3% fD'BuC3V.-6Qqa"ηP!2du\^*o$aC9DCkRXPi!"@:"8q eW4R`8HPKXr>81 vq`P:pdFß<3?xBܩDu[ZW/[\DG@YtA z4V#LqKD4uK1YT (ۥbm-[.HmZz2}t-ޠ,5v'f1Np Cn\[gL!*I?1ϖ1 Oh~$yE~_N4՝PVΰHB:ϨeN/5v5 q;tNPӏ: DMD;L¸tVg;=Gr3`P{wG&8 s ou8;2g0b7'31eu* n lIFᙍɪ ]ipwB VB#ϐ1a'ru%QI< /1μZAA=ӡjuD @vyy1zWUHv zZ *YyҕJ1[Urf7n-0Xlt,%iUp#\:WF˹k-P,m眶keh@R!m&|pE.ݼ&:@@צT'g^cSStbMJJJVA3Q1e/+ vV}<ʔ NN>Jw:̩&BTLqҁlPt &6UŶS1k%(RB`׭_5:163cذS3+ '׉ QxX1Zǂ~4t+ J'V2nPbbv˛r+$&dA#f*ԖʊR =<\B!- $k =HI> Ai1ˇÚ0H*="#~g\1klAiGJdKR  C5)]#?ޕ$]q*x&lD-GDo*&GG3k^d+İ֚8Um%a\ ԃ!I)B4FӼS/q[l& Ãa+ uHRZ.N"I q$$y"9]r) Lo ;^RվcgpI ۅi OldlAu%wFMx=sb݌aY}ˤΧPv)!%R!( i $dnd&>~Lyd]6RP~@G;YZ/t;xE%H?_-#3ujR0ȷy+Lo6e 1x^znZ?y“7I+3j]9{x-mw;iKed@H&YK*<߹6#ol.5j xeN8eHHvcG[ s/3 q~u'Ēzݿ+O[/rMJJ0h{(J'dumedٙvecZ{ᡒPY) CHQP JGNO!1\6ș^S! c8,!̐ZI$FSҾq 3iO5Ա#;lfۊ\Èc#q8륕R~V!KI; @[mDmEPڝLe0\"|Ma 1 (;kqS/d<8]csĻ?JV|rYHQ*0 WoCui_]b-*)LzTi뱍ZOaw.XTir.RH#jk4k[)0LMOEj;֖ˆtL D(7^md*JL0GZՒ_q%*@_nڮ՘Ur+Kvm'JD2w"cj%jW&04/ܕ?ʨTI-8Bi0V^=M1FwjZGDɀ 'ʡ.H'rE=)G`ZOd+x5*_) @%D" G;F68a}-F>WUvلȹIV7mf@6t\$}̈L: ^\ҭBR]p()!rFu)CJJ([kJobT*@A>^,-LbΘi, No7njݠ J@vt+qxݣ}j;ncؐ:gsӥc[knٶґ>N1.[ht>YRWC(Kb̫|T酤)=jR~ReRXjN&7J<6`(%F&TIo:((UZY-BG*m_m'dAF  [Df. ֆJ3-\w1d-VH*|67XQ-040B@&$̓=fW'LIӊSHKmL~n's\ Y$LHT} }jd!^[ɫQvBF#aɪ ViHՒ7VѱZkjENzjm2mR&6±[R)KRE39&qAԪv"8KꌓDHG?!VU)$?U4JGko`u'&G;oqs$hF-_| bvsnwmei'Tb!N**qM.(VGSE\ !Q`UW$v)²IQ/NGSs\i3BwPP:*Z.LYt$g^'m2[:Uyו@;f- ->JZS ɭaNe]y t5> NcÑkzlzW.VGz0t35m(D[}E'j6eDLINΩ_7lEZfډ]_Ĺ?cn-?V$ڹi{oqpmA$ PHǓ]5$+i5d2C%wCJԢ<%[%*LiH \"m;Fe ۔p"ELjzq$F!$z<-YɸUFI$jr&u`**cgnN(5  AhUӡ=<іaw/4wʸKv^;+i4<0QWC5?)YȮ㶋k m+iEZH#R3W$V"O0sI(% )g{i.Y[]%ZH_xIPA3:f!`Ֆ*R$K(^dj+-KClکK`W'dbہr2B^n!ZQp {^=1 Ŷn Yw$$@\ocX"qWӊP4'~ LLVU䣛IV۟*mA߃PA$_\q~aƩ P"@E[ v?*ߨ Xb-WMZRAƶl䗓2B\bmh@tJJVg޸^#q|rlI m<}MTC,y⠦dZb7$N G'xVإ.6›BLj'i ǯXnlZH Jyy<|ojy [a3`&IÓnY' a6jJp[46tŨ4+R0 יĭ Yf_KI=R _٫̊g,g]-}:aKT֥IXei:d9:Mٌ3{|eݼM~;v`ZBWIKb ?3Y;{xFN0n1~ǖ S*uRi>IOէSzj<Grm&/.&WrZn%M~АVRHfI^v+^hϹ=,8g7a Ʈ]v/Sm: cWVƥnжxU|AҶԻ4󖸪m-RmBʤ/~# /81콛Ktᤋj%nRw[XO*>\۷=Cj {UWop%T~mVOMbP@ ڲV݂Y!Z!'I?rIHIBP2@;y*ľn-D:By?iV_u"/*dT+l_)!dw!#6jC1& Wcd0] 'R9"H=6޵#tiumYkZ5HZRBPb+hS!R6ӏz\%ݮMX"If{‘2(BC^\f]Ћv(6#)woX I5~<]% C)}9ݒTW%S)L%DiiDԑ#cF) ܲWR$3|uW"OJɖhY.*JT9 W)"z(jnqseۛ{*<~A?t7uiq6ٵ[\6PAVH!QBVeK4aۗhZ.8b< pJH!)GZ%; (7͊O3JfcvAt2*ۨ%%h| MTҮI9c؝|jB$q?Wq?3iehq<#iqWS;{ >/ϯ2,d7C i:NP; y-j+R('̞ j˰$ӟJ7) E0})t $&h(iMhڗf-ٸIm@J6Qm2v 9$=*ZSݬ{@J@:}<}+yFWiMSVIpgkS,ZonлRGNuO'qn Ls=(GSW8;Rp ̝UZfm[J*IQL1ݸg {Il.(H<[4b\7NCI v@m5'[K:P&4D|)K=ҒI$ogzYfp-I+RDjQ9RJTB1$mK |VSgc#)K@8E[ $k<60X r~T[aWeqd1#V;--ԨL >r* ;>6 Vvu?ҽ TliocĖ[*U[s%6$԰Du}eg[^-.uiקYŷŶS)J+rԮ ͓Nfy>_f|¿BU3i*Wϥ[>UoK$npO}*HhnNy%Gl!KP@#tk(DZ BoqH%ƒO|)N)# SeJR*t *7ZGOQNQ-l(L -gTܾUTQ$U+ttHz,%t#z݆U NI皪XSn@I/OJ]KɐBP U7;9s5A-8)Za@o;~jVT$Ϙ2 EXɷti;Ʈ||0+v GwU4$5VR#jNbAߐtv\n*T J/]wB}9R$uR$$}Kh$bRR'eDa3aik>SHQ!@J$ ǞFӓ;3s6Y☞!l1lBZOv HJ\Tm4P9J^:̂'ʤGߢ ’V$x.“RR j3'U6).-Q?%e MNP$t[KjXy* N핕3sy{n b6⇢POElJ֍eD[U. ;%jyM!j mnw$H@gYRܩ"y࣋*4JH Q=gKN١ntKʈ^'`SG_lI 'mZپB@dW%7QVk:N;Yׅ^aa7[2[ SYG[/x%an8Te@<iCrV$>U>UE*T73❣5=ywXX_ w&K. #qJ2f# !9E搔W h,4wp I=jWn[- B`Vngsqq*i.:١2 4)$ sGk?N[a,Zp%EzĂF)H+qJ"wQ'k!o!dsW>"/})1u25<=mۼۥZH֭* Y9M݄۶\|!Na-)*RpA'j轢TyIs ɘkm%Y컗A2Tu I ԳɗQ W޿wQLmZRuAP*Y0L'oen -=p;! nIy. t22H)+ϭPW 7ݛ[:-j hZ1vҔQDfnӱWqvXm)Іm Hu1Zʘ> &|o,ũT&ގNW]$@5Q6 L&d˯gٴm\yt s,Ug͹Z x ԸJw@m*)=h xU) n4^{IWvPIR*HW68JR1'ZPl-r@>-E#I0$)Gk׸˻`a  R:$@* r4~ݻL"߼HWzҋt'Lumsv1W[!ڂYFm $nga"* ߒ['$$]hiEHTPwED@\X>N%Фc[g8฻R^(Ce)y M%$`0y%* #K:?xi?6sn 8)I=XyFt+ IBwo5qۛ!+piIZH'_"gYw a0!` H%I<^N.7qKf/2۶nuHIoQ+)3G PqtˮNcl%i+wcZmou0:ӈZH0GU{+7v'eub6 v͒&esn,6KqNI+s*^ F*]5IxP4  ę^/\PP<5KU:/JSF!;wKJt j5fJhYPXd-pWcl׮pKhB?uRT}o,mS d&:A]n z.$iV|LC+ݨ)D&GB#5fĻGS *HJ*.GUxoI`PD QkX 6L?"A[,c%(jZQQBN˚jR-g?(_/Z)TtR5j{PZimO>ndlE҂THWޕrRR"f@έnYRq՚&єMYI;jFƧ[mLG*EJ0HWJ*ެ]_nUnBPLzuլ\JƝ`Iڷff %'}*LVx1KZ3Ħʕ m,&@–5]Jb)HZ\q:(> :V}!.v֩=vw i1?W)M\%7Ls$znaCs<ڳxn@pJu ܩB@V$ĘVի$4'RJqL މ'y.oUOޢN%MBӨFۓ\aEo=F4+!| ^Y -E'J[8 Qʜ Ql,oX*)(1$)9`()Pq<> YV#L-Ed:gJBJLq#=LyV,!yH4Hڊ8;⬂qv7$ߒ QL)kpS<@**T 4 c!ր(*=(f@(ysioÿU]$ð{]J#W>d+[[G.yVXl;νvP'ߊbuiqkkdQ޺23Ex:reG2haG@yD39m-EkPu~8D >mZE%9q!%aXr@R ` Qn#cqָhm.Wޥ ,d8@CRմ4_j-iATOlyg/!\u)RSI`o'Һ; RJ4(Tt:NdkT@R<^BIOҳ&H}>;0])( )J\7ǔmZ&ԸJ;%A7wݓ HCP$h?]ʚgBHKn*ܞ7?amJNܐTRJQlJ|WSkn#JvT QÎ=t??W)pkRLWz Hu!1$,Y H+ [.Un7/TQV^H[uL.<Ҝe T8]?ԙۊ8ڒQQzTHҪ$=? YF6Yy@D+(G]m_}`RЍhNg`9foqi-5'W^d  iKADD{zN< 3+QJdfO"6TuG nJ͌!iqLx 7H Qf}˃k~vw`$yY ;/>J O߃c۞k7e~SΠjIe65%*91>ug4#˳Rk*ܩ I;Ͳ BILny޷UzRSE(JȒb*eU NTu{HZp,6jeJֲwMgH%lOA Jvꍭ³8Z#$Ϲ?hg%0*P΢;n Zη7CZ$gu_h(ՑS¥( PZe (lʭ%3.n܀ak";w l&"iE RXVIiEƛ}2J.!gHT8F=X}򒫕"[* >Tih XȞOs]Znt !Fv#}|ł,]mo;uK%Z)RA0~0m#riN) SNkL*v젞gY[fF6{HQcX/u aC% \{I;zg:!HFB7SgRU="?jr`XZ߸ql>%%E:F|=Jyp(}emaRS+r>VID).^fA$hAoͣE)ORtQ)uKK[e[$yHXiqub' ]q;5jGIdqjujZԥDJQIR{*%iL 뿗ʢxWELɹ"ۖRJzb#TLzqR QUB+Ua$cTu14?#D)qEt4w}*'sK<)bU)4'ҕP(+^;h[#I {{߰}6{dۧk5V,HGQ\yFiv(͠_:%!6B>Q%RLsܻu'Ce-Jx;H|Ӿb0ۅfX yB`\."^nIupw3n+eQx1{}◖.8AqhZZu§@>O*YrKQ33\v}f4]ZչX *w )jKJ +u*Jlo>ںz~}PH!Zn;$rFj2ѤѦl]Xwz2.m'WKuäXfH `=*|tujk\)$ ZD>XkfnF{UXBj!Bۨ+h=O&Q=&}M6VO;"-L1?ޯ.ЖH[ުK,))J` MzUA!,^v!D{bnZjNڼPSx=coP\m]넩d}<q>JeםQAn}`!%jJ[Lm=kYJ q%)ZV*O3]rO -tZ~!*`?Jp<+-뚐iP!=gڰz,RVM)~G=[N+U]҇ 4粫n\mť 5GִBC]+Si2[Z;qT_axR֯O\1Sv( 뱢[H%;6kMf*@@ubG4@EBFRE fJ(*( JA:qII Me,wdgj0;6KhHt'7޶,[NԣrB4;i ~k֎qm q[;ޘa]!HPȝQYk6B/>M&vqkmUinn?{RεD"X.ܹ]-.JuFy*N`uXW)E_œp`(NqqUee#Wv@=w7OmHL5K޺&GX"j)MHpc#y0',/ omB6i:kS * $%b>w04[ZZ)·,/]GvZVH)* IQ[MK6!M)m* GzȲϩͻX R@#cV]V^= SyLGxR7O҆~ F@ڊ@Q7$C mI) {}`pbnJ Zɓqۚײh6h=/6BGJRGpk)#_gRI (t3O4]`eZa8mI9N(Ecr1}Zt% Ͼm* )m3ZJRw+3mki)2<@ZXB lK*KzXk Gv("xFsu`u'Ҳ+C)XPRY+`OM\kge* XJ Avaҹnv֯!Kd,U93OSy1΁L?Xl#}_0=nj J>cb`Jٗ:Aozq(C:dtw[웉ay(oKr伕LJSe@f;5\ɍԑUVE%V7 A;~zvŤHۭuYIz%MNJS$8iawkWKB]yJ2D:* PRg5&ΖOiO]qIIU>#s`4Q G}>o[rhSb\yE=TIqXQmZ PPR\&'JĂvy:k3\-6E !Q& Y](6!#b+an:UiZ m:X6BwQ#P#5e2^>89cw()2U{"RR\R@1V!C5~ -aZr$!1&7܉5q`KH:(LNfmHɷѯm)n2JRH+Vr໹j߆`m )j=7~uxKK Z 'EC RX֕X%%jfk/n8;k lHTFLLty2a#J;lw5;L $6'tN*ƠңK@l ?)Ml am\2ҒX.,\2Nh*aWn-b ` *Hj 2 N@+nL[۫NlxaJ%Jww MiR.J@w;Ğy޳URA_v#;}}rn^1,6C-w*TOLI$ DzmΨ6IJNIT #mUۮh[IB^i! gt$uh~!e,۪_h\Ν> #cҮ&r¿p{덥V(\G o-:AҒ@>p7ہm`KQqMIR*Ϸ |TH:EߓʗV7*Z6Y/'=p2$?(g(ZCm bhIZ>%ǻۻ=w5HrNvԕd]~{z."0 @U{I=bl{%Zި/P6a,u$dngNs ͖_I0&;W >6]+.vjwtЖ}h,;ާgv-,.˖yZ P"AVGL2S& =kǍ<ґf$6 В9(I ?9Z$CxWzŰp-I >f9>~U+QFS'ҕE>T揕|ҧ׊STTsJIOHHO94?EQ4Q@95-LUʮ0;`EgJ0{{u4ٲ- 0Lm Y"0Xi:a nTccoQwlܢ%(QZJLP= L|pr>/MZu2J @f>uv`ݵқ%UT G6ݡv~ìo% ,Dk[b,bW'm/hx(R  yWn78%7}E-!$!%!wq'}MZ z[kKGQ ` 7Ju du)@WFǻ~-~HR@ :Ft1e|(`w-m$4'm2`wuG0cvo!e=TP A3+mE mdR|(d:H iۚ&5Isl ABБXAԑĀW#=4\2^ |;|Y_D[80S_zPd* ۔#ZvVsi*z!O2P (@#RO;] fϡ<6H` )$iTA Ǫ(O,v+[<%Z[AZ@8m휸J\fٴ]l:@Zfθ> x7YmԦV44( A&Ago4e迻|w iKNާᚊntq<ۙ [2ÛiA06dϭaА$ F;bnbn)~pZI>Ln9z(]  Ԥ G^M{K[ XrIثv녭ZZ8rxn`0]8i2t:|Xa8KL ֎W:QrdtKԢ:}ѷΐ $Q i3+Tbo"6o <ϡ;q]+ vVu]2jfix-m@<(zoZC)'Zfv \2 aƘO.R,@OY$d}ciC( qDO1`qmUʛBi2 ޣr.ժP7!N$d0 a\ߥ( ,BHO &U9햴e*A(DAOZ+,}o-{YBG$j@A0k)p#v.ke!JI'xI0GDY g.CkBnJWnRDAO#xN5ػj6>Y'`5'RbGqdJw(K m!%B P_bkot{ [HqJHH D(I*&&jG.[`6Е )Y!@6m.)Hj Ű$Ck !i[Qe)]=ڐMzb#I8&%z[vK:3W#F^(7IҒĤ oDzU ųEDօ;bվ曢LJcFRXuʽӿ o wV,!!!zˁ>Ψ+*H\SQ獇Ӗh[b A%JU##;uoqֿyP[R06zķljd g}?YmԶ\H&y<]rkpv۹Da)'7'cUq{ZR?d@ O7JY@BlZB9"`ߦ޵3t4+ZbkAqKKڴ 'OMtCv}MGKʖwl.IIV鸞w*7e]Xۡ 𡥕.x@W6\vT%F:G^}Zp=f|,|A/*c}+KK^*)jY**JxIu+%J[Q*O$F픶 y$ Hm0;KI-@$l'sxŷQ\nNl _*PGg>1U}NxT7V%~ Td=խ{647;~KS^$^^իl*a$J ]MJ)_vJǍǓ^pj>~/`j\9p-%IH*n{D9*]WԟXV;5X]n%KWx:;$~f`@>7$\QN!:gi@^DitRfAsD)|ME/N*#JDE z])z"iqQ4YiM)N%\ kbGXN,YU˝%$-@PO"c}f6Z\li34Ǡ#m ׈=]Y2 iF$#ZIԒJ'ș;ϻQqthS)ͩA-xdڲ~l|E[EJ4 DvK,rVxtjשMP$; oZ["jƢAXZ7ݐN<{AaBSF# q,M]q m>\72"}\)q(W!"J ;%#[^Kk DBD06JL1oܩ TB09V-nj `]NJG ڵzA@`x9?WR %I=Rdv2O0=ֹj5(!D2׆IPب/5قF'|&%^B;Az[4kSH (+FTM4u4OFPTȥ@3KG<(H#`Eրr bL xh4 Xo6׭S@pd%J@$̎7kԸFt\N±+,Bp $TNJcIo,X8y/un e OzUHf7* 8]vRm 8OIAa5UۉƱ.0X(BIA7 j zs9Z2/!\Ot`@<W/VX[RH,' 3ʔ$mgPƧ%ׄ%E Y[aY  !^ rA HWj'O}yKRB5 'z^d$$65~BQQj뵵Y:S JJ!ZRrzߑ܏lMquon[-4(T';wp޷sems̙_L.VziMq\ RIVi1)9CVEɾyKN~3RJFaDM[aܩk 8:>vrܼзYR:U uhW LpFRA/S+(](XJΎ 1oORX>mŊP\, O{ɉ#nEa{C+y;#LAW.|2C& .IOgnvVM0)kb64Ծ BNzfv{N˲owl—tFZ;FGd?a.wIWg7%m(!gmVkkFH󤨏 $8Ge~U~n Q{[@#y$Ϥ>+: | o&9h;_J A3$n-F.qN]r  *ޔH_ę@N괅$pz{1\׎y~ Wv@ؐيM;.خOEY|}vlZi[L +H*:t+H*pa6=ªM%KV@RTm9'fb9mmpm>"Q R+ θ:~eT\~YHBD@J{BWd9=Eͮ!ovk*[PmДRV;]7LC<H#ORbx5ȱ ź}(V֗+ J@)TDsa;^CI,LRVgmUڑd~SoQސo*e3&'L&v[sIH$)$z)םlsvm q~= w#)Q{l$Dc'·f{K'mT5)$tms0ۭ|0iKRRR8Q'jX1Y\0ZC**[j}$ia7 ĬZ×emuKq*a7DVhu >L\x1+9pN'mO {EV$UBp}*nݤR4DHGqS]JV[6߉?9. 0%7]Y؝aiv*d :Y:`Xlqbڃl'iyWKYq4".\Y(ǘ=fqllY 3z׫*M?-gي L<{۝)m3>_Jf̶m-L$9;x^nmVT$OoomR) c|__,% xjHRH zRdOVmqKE@J0|)[ 9Nϸ ]q)Ծ ;|fzcݗ|vk[r!꒝E)b@VӖᶸjEwiL Y3&$m1oj^ 7 ւ$ @mNߴv0_CV$RI;OMa^~l x#5l͈.uOun;f"I7`ZBu(Jf$ׯ5it4 Z ~wx4% ğb^IJklٗ-GXPSw)Rٸ+)S r e[|ś+ tfN4J@5j=^yb_<:(csَ^Lp[ Ygym^NVJDp\/hV^#ԆYH!*}Vl;иF j]h{GIyĶ=esU*-C\-r1]_eW y- \ >G|j0Fsaju86;Єga1#`ve,+|3]\Ir 2\TƔK?wRl}jyӏ./pyئ.k.podԱ#d&LOv >.qv-1 pYy-#Ę#hs=`Wum˂P_RJ@ ƒjI3:{ ]S[}PTڼ͑l4ڧmЕ H:To֬.u=noҔ$'y V`[o\yfƘ2D{Uݭ\RP8IV!_nLmǕb_ 2ز /|"@Ԙ<nm۶Vl6=ۉ)P `~cm~'p.͋fCS+#mzaXkaC+[z!I<*-2+8-uD"Fqi6UijGgy=r;0өyЉ'c"S<,g#1V]݅R[[m6iVLv i.biKWIQ5E6gɣHNX/Sf cq7.~ݪeGV:ITH3)E5ejQ^:YDR0 `rs2ť RѴ%ƢBPQ Q 5\ɸ-)FЭLK/cZJW+˥h_\u㟓I?=]s-1nJBT+2H#ۢfۈXRu% $k O@jX4\[:-]$R&Ȑw9{0;"J:ĝ¶'bQۋ/eNWW60ʴ$B H'y2@ Lozï0ǰF^J\KkdRBɝog١V[) R|MfHWSŞ3q/k mpABcT5zv=9&jm?)‘czԒ* z8ަQter^`82Iy]mx7$Z޸ÜO"RPGŬ,qV5mp6 79ڼ׋c54LIڼ~;X[0_+B֏.%Cm!I)U,;V̽o]zfVTa(m$,!) m'Rj`[k.%!(*i˅8 &|5ffԇ !o_zv~?*>El}v5,Siqje q'TF7& 0th J#hJ|Xۛ`Gy tRQ=x1޸ (AgϤ6v:P!JG#o ìD~'r[b^BVXMEr\3H,-^kDDA'jь̫Kac7+*):xxqFÌ`HPyR<) TvZ62իW ttJa't'qMi |)Iz[@$Ȃ Ajb[6OXXԮ|oU06]`\HcZ""4ֳؾQdڷ}amp *DvǤI he; ˍ!&7yVN񴵆ۼ-EEHN O{a}?ZR&x| a9rIW<yqn -ex%]b=vRvd P/.nrS%)e]kfVʊl-\ J_QCi1Ozzómm^Z`T?I#o1uO#N(Ϣx4,\KIc5))J@pkUpSx{\\((B'73辶-lnӋ *I0 \MtI#)seihNw](Z 553e7ZC7i:hW 2b50ޖ䨝)Fd@}qVVuǮPBf4VRPt2`$zΙŒϝ8{݆v~VUڞ7V •q( !I&5W2Fp--֜ͥ\(\op϶Wg-ų8 R.X@)U,*(#N Q%^Euñ8RP,JHI\GcӬ\?~'\~WXh`af) +Bw3!@Hj; %I O$(Mvk@zCj9'iS>8g|D;Ӌe.Zm#e^=\ںCJ)Ԥ N? Xf"o g qQ`q24I's&]f# 00-PR[Kj*IH3 }rb>&/E1ԧi(d'fg}ʏD@s&M8I\".#Cվwo"g-/.l/_):]m*YRu It P,ab C0 ~Exo٫q Ksx>+B өJR$ @x+=f\UbExWxWލ\ΘNY qNeIygY2fRH֓(|Zz>>fEmouW,-NVD~cıtXT47HJzW϶#k꛽Cjl1~HiNg[vnL▉ Ԡd-Eco_;,r*gv_Z!}bжx=p  0InN|ͣv-O)K$fX#\F ;=}*)I˴l啣A tOGQ>1lܺw@ĞAiNҰtDv1gmP zRz9T;]haCgqkYZ:JU)[m53p^m'1B)*JAWtknǃI u %ҵm޻Zu*_Ȋ3Ʉ_dwV1}}zl9z-$Q:V#w\;W.nn޸2V'Q*'s;ɬsbQpCՠұzKI:w BAبJ|gmcXqdܛ{K7nVJy);OQuk}պARDnWvxڦI@H?ڭ jDlv̛geh 0w^|- ISR} .PeŶӐG5iRAm)" &O^PTlP?nH L|j.پ-ݸ D b~ }ƷE*u@P${V6VԲBN?f0[,ۼ JBÀ}>Uxhv]Mf]1"I5|qsulwE&`qnZq- \_ ʸtʖ죚Jٯ0v=uwp P"6,7t*U^Xll.lؕ(}W0<M߂!'+l\XH"F H A13$%0$[Km &NֹA=MzO)-*n:X{[aW- !W(@KD \ jԱLSo]67~l zJV9k, [wCnLxQ6R| LDtG|X=_їQH8XV)ٵ ""dk Jcd`v@%.P^·TLi3qm^Gb͖R,to 0Hy!h4 jBmZOZ(1ʺԔi IBԕ)$DDUҧ&EEE扢((P S&jejCR J| Rҕ΂@:yJTECV.1|2f eqh SjR6*JO ̜U|9L7fP+ `(v?SeUpނ 12HzV}%Q.mvPJ}emsjJа!I;ևsiv\AM Ǟ6[_f o"8˞&;. yPȏAɚf,np.'mJPѡPA> ?#1~.wR&@iT_[˩J̄cXHZ6; 3;~UM=ʛ~a _tKڙy AR*׌ug.i{w m 0e[Dk3b^KT4pcֱV7nRi]ʚB=x NO{2Kq)ZJ'P# vAI3B+JUʠ{Ͻe~r/v;u%հV3V5,2,q“1g V1,͈7gle󡥭-@xIҡ*Dn;DS1mE6^o-!N+RJ1' O ܟ>_U{c448 LηVڬy8k6(CZm#: S1p,^%6Y_vm =sv\wST% HP&Ok:Tƀ*@Ў#jaz)|cb?ǝcG1`4 R>{5:MԴ kLʡBd>u߱chC(iA'R"NZf<), FC<`̀wOOŅ_ =ղC~Ȥa,F*kɰ_bL_\%C-}2$(̴5ZR v+NqrµSR:ެzm?F Έ{hM݋%_SAFEA'Nمjian0[p,AJԅKl )?ǢIsv*joYkm@NϥxE2~k-'RO6}OyvTa@@̞j6p]i=cZhÞ5d!iuztR)ıY{v:B ~5Yrћ&Co3 R&6ZZSsbt'Gʂ#cT&Cs'ְᲢ @Gֆ8[b_ZJQmi:AS\[[:ʼ?ds]Z^S;  >UXl0NiS[TEMQ@9hT4 (L @3Jihh"D@@*sJ)֑֑b@(P(h [sezSNzH#j󪳫u/PyVoH`b!`Lڳx5Y--q8E¥%K~ }m>cRR}䁾>כlN$2P5&c;MŻMq'P#Lt<GH:2-1;[{kﴲ8Mk0 h(ڼvۍ)D6@m3ۯt>iƒNA8cPeg,Ù6f 鿭S9iH1wJ9"q*t$JVT T ֱxOkf>'Z]ujJr93#VPgqcfHZX~|V{uV ѤҼ5]4IϷ1Z=m[:#@BH%ZLAMym}qo>⊖ԥ$M_fL f -cZBu$(nAOcb' (uj-i/gOÇTqygsۙd9:i 0RTzP S"_ #Aъ:uҷ#IN; |b.biK+JK 7$W2f(0Ur)RU ڽ;ʙ-EKBld ySXes/n]2Q԰nmso D&HՁ4 r듡Owe@N?T i}Ӂi)_QijZ-;r%?P1OIۚVFjd?̭{[M6 ,)U$yXLȻcjúV06I_ }AhUI!lA7P"A`Z*ٷ| Mԁ3 cϑ&ODV O zdj?On@3$hHmn&2>P~]E'h; tGf2֌lA T stag1lt71Ek̯w/JS0Fzϯu.-:!*ZR|;nzycPx͚f86mԩunD<<YtW|&+DҦzR4iyP(=hRi*ҀfRh4MH *chցR<ӎ(<S ():(OʐޟO GuR<""Fҩ@*dqH LKʀ:(LRh=*@mQ@:Bnh#j@΀6::#z]Z}N[wxT JF5Lq ;ڱ5qXhSB*~cj[`W -!6̧bʻϖhů/̐Otjs 9mjUޠU>j0 8He57Z: aa>imNdƭOZTXXڤ/an=p<:I~5X~vVgjC$8@uN ^旭8x]![ KqKR>5jSZx̑Ja{{9ԙ ݦxhN}ٶl`‚ʆU\[;[&PWBP dFdqZu/JO5F3PJ{Cʗ 0Fm D22X>co VҺPZ\pvT%0k]r^am)f%d Ƥ gII{yE+ᚹ>x_ڷՇՃnkA+ڎXOSjF4<Ί"&)SZzGTzPh)ԐMż Nyb)Kkm_x#~ڲdwmLwau))ʼmn[JJ EMJ,NJ5;%_z֬d3rD GCfl"B|zDk%ÆeMt͊!*aGmߩqKf:wQ0#׮mv7:AubeeƒYvb~-Ke=v\HKܥa='16 ܲ]x dȪ7x\j2˧żo=6g +)m^ I SqD8";sJ6|5wpӍ׻RHxcl[jea\"jX:nRGT`J2Tyl>MmVmיbHPFD+w}N;]Jb%T 0=z\ɼAH!!*|ݘ$̟N&첪r+S-&c?Q]]iT;X└IؒI%JI*#alūfv-vӢ41#b=9g^.j#Te)|Nr :?vgUYpI*4Ygo5{]-ղF"~!wmd$DQߖV)0T{ BP)*HI,V0 C|akWv3:X"=Mjӳdivw}۰Á|{Y/czڴY}7LisPH %&BHݚn!s[0㣼[%@K>DϟwVrjwRRJKk&%1 o;O㔤J[A,|y'm1+3c,ܺ][PR<]7e3.[l=2$BH Wܒ7M흸Ju)GS+A]v}{?g.7r3[jPtŚt$L˄u=沄sjm|xsT)ќZfv3W eۥIK ip2Pib6 czGJNM T!֮Tcޑ3JK z;Ȼܻuvk &n6sx 2&ykoqn\%[pA@r%)0zy _$m~ܷ#IqᅣmMN0@\7 [fv jͽ %I)}P>dy֙Uw:,,}sFNx+fiN޽0A"E!27ƑaQ%<@;aw ne!,nAIVܞq[_ŕ{6ԋ-y;Lu?#^n_ $ eu_eZVF\*ع\FPAq$>#MqW/6I->\y{HTo1s@ҐOTdc%+Ecٿ [NZR|3^& 1履%-`L}>ƙrGm*Z>[C L/$Hd92wbąTAOb)03'uaVWzmXۂeD̘߂n)0Py&w*-\Q:*%ZҮwI ;k_Щ %m;:)0:ˏ嶰Mƣtl^턡L܄ zx%+Byy񹈫]AXФ )fLn~ZvJ Z9GV9]: OC]#J銜zQDqR.S4844ހ"Ӌa8 B|2*=ih ;2%mFrЀvԒ"w8Vw鲻gTuccbl[W7!ASjZu>6bHZR\Z[aMDOz5qC-s.a7}|-TS\$;Muke!]X]T{sl@$2<&yW.j۸`MO;d _N怃[OuW?*dCiCj &L|ⷋ ڇ8QnDNWOipkX\PFݲIIP=@7Jl\Or)iBB@֬RHWbViWxyK+3&q DW }I)*$O"z˖vhu.v/W^ ټQpOȑ,qQ\ 3VȶBz2TRP: yۦ*^+)@$ L|G))|J(Oz+P8)Q@=DP( () GJc]()QEgiHR IX#hJ4ASzKD@1DRP P&4ʕ9JhO֜[I& *sJhiuM@=:4@11HNM"hhJ7iM4 MšmhJ>!1G>uJiCJJ7B6tAh5$uNͰcnn|(yթ*QPRA$6f Er]4N+n.cQi; 'RT M,J75kڜt6A@:FJg {3[G*֥:EJZJO1GQ^G;|HPN7J·3j#c)!J<@ ($&@Rlz]ZP |*^P 1*9*DB|@nL{H$!)A$Iީ-mtTr teΔQ 9>e7hm)NOCj'J9PQJ6H9Qϒּ<;n:w (:VdOMe *w?N+2'I}{^ MdkHJ(VFB]RH&!<$Q:4I&rܕ\[F[v 5j8'z8UdJ S=P%R݀Jw*a.Rn|@+RQJqh9N]9vB*lʂueqW>0LCZd:C)GyׯS:_?JJ=BD tx&44 SD4g&]M>Z4r?`JlvWZӦݽܦeSP5˩cNY/J07ߠUfLőq6E*($t'aa;j@pPG TúIm>bFmS^ 49%23օ$</--Ք&6paPy;LʥN2q-;cST <:kf.UnjF2O+̺CKb 4~?+)+grзT{TeD(L8Zj8.-v6hm)ZQi*:'okk;:fǚvGGp\$<ǿ4}Yl0ݓ6/8Q0ʂb'ô>{ ZoPS:˒#ֳXy[TZ'RtlnkP|LJ.,U0 i8Sm!=svwOw4@=7<REy/^Vw oW3[KA)A&HAMaZUgfMɌ(&#DҚԠvG&=!֒WH x&44sJhS@3bh@.ZSNhSEDJ`EL܀xw'bfL HYdƲEŃNj)ATB|ʵW-:5 2( H֥ft6XJ_90LBPyn=KE.2ipa|ĝ(V=c+~[* Fh"\nƔTtzNem )Ҕ#&^iXyMhʐ$;*6° ]~{Fxï;REHRR h0~Uq1ۆiltg,zIzງ6ep !Wjp,k &:?Xq ڲymeqB$-Ad`[]qLS>ChvLֺKsn8у {j)H#nMP"A_E J*gJj}ZC,DžIK$x.Y <\z+aպBn<wzGz)`$cw 0e=RVU'ok&,ÿ*|[Xa!$ZTx'hU0 E-M _Qe0Z-ΝD'T:RU=fXO>Wvh$#iOoW y c<3#+ aw6n,!26DUՋ_ R5 'pu qOVa*5O΢Ҫڲ T>]knX4s|m:P;ŅO~QVD R2ܭ4 D5`>oDҚ&nJ"7AS\( `Q@4qAEJ})S"E(w@.h4jThy@8 ht! S dP PQM@@P tZqM#zsh1v,{:[F !ZuRj*RʴȨLzW> i ;Gf82\YTw RT%a$O}S`VN --AeN8%M6<-URHHgʲ/]lv;:cX1p-i>q\׶%5uhe VA[mt[K)]hi$%QLZY2~JQUJg8oGCSG'ktҘ08x&nD4OEQ@1Ҁ]iu4NPoHPy("G$m@nݚㅇW_*TxkH)?FA t9`I~ʹg~kUS/q {HFGg,[,(pGnO0 5jK7EÞ-:n 88Ol#ҭ,Uz[qѠxA1>ΘѸs풄6+" Bgח5xBɄJ^l\H1U򴶒TI*ߟ*ҔFzUkoC wbLOaԘ! 08]ï-t$٤aaKOxI '"Anmac´$Ď0Z/T*QHNW vVǸe hB#a$O:]5gaO>S.X&;A\0!8Ҧ\X:T!"6@$J/>ڞîJ71 qΕ$ǜ9RI2GM%~FL/w 8`Hck`}{„8$LGH})I3j4RE06$ESR/y)=҄/RdPx"PTT ('Ҁ"(@.z:'~(7F~(<@6u5]]*[xm#Ex]T#m7|A̝2m)K @NḦ551L+])gC)#a(2@'ڸ^iT25]IyFə0uWo/B *T ܴX{BP*(uH$%DAj4EP:ziYbo'r1;LJӼ޳~8j[ѡ $s‡]Zu_y RΦ9$ Ve*ZP'Q'̙԰LY߶NտXS{ KmmZJO0Yv^{ao.!Qֺ#JÛ;t'"ka8m.m~npC؎+,|.U,i% E=6Hé60P"vpcUEQ@1Ҁ]M < ! *10&s@S(ʀ6jGjʀOʑ{yEH8u3@:)JTt|@LsHP=iFx*fE:"J:`{PLrh~JoA@SoLc2?q j=ۅ@6@ %*Pu^Z!,ޏҍ:$ǒ͌<ͼˋeQJdGL͎986=%܁D{lJNd+&cpݢ[ !1%E"LPf+ԺlI"AT^e-iu͓\J$r`9-*Ugui2x̠H!.'yJIHĎF嵪-HvkN^MiqJ ~ B* s}.!-ڇ9'x ǿ|'0>YyH1ǐVNn[ QidABG5gw꾕w$c-]ClFGʬ@*M.8<nNبii qJ6#S4h(GP<ӊF戧(8ރP7ey~{? -N,P+:$ -Je^;{%j0JR2zOb - )¤:fׅ`hN(>OYy֖_ȭӨ6BYq ۥ`X'~~_\٨ ds#5U->n$m8\jِs%PZ>*($w}ݕ\7KB[v aY VYQ@S,-D:~eG.[aEQ6#cs\]Kҗ^b[siHӷ׭UF-r}=\&WHV'I(u)7X6a R꠫h z SG`Az-mCUi'Vs-Qo))ӭ'kj k|c11Z2R*.:7:}h_5mnzJGz'ӧGv'ֶKl2(껛]IC*ة̟ lOA,YlGoR)H'YNM[[mD%==q'8we9)|o1{G(*P OPRN#*IDDmL RtE@:t#"(8ރ 4@S(ʀ6jQHPqa#֤O {wjqDL L rQESm(j;qZ@:T +viٚp%b6W#KW-GrR L>>[f_)K`\I)$AI .維|dw#v]n\xҊ4:s[6' ][۽A!F#ߞk}L%!*:R`c?g)SW-\+ʴ7U JvXpd4<I}PL{ ␧j:q@{P *(Hn(> (HfwPۊ"**(*T掼TP=P(HSRԺS(P=GʊGZP*]ij.SK@:)zSP@7ʻfƻ)y6W%)uIebV.@."ec-ajំڸB]hV"4 $N_!ڔ'd zr_Kp))PQ>Mh}Aѯt #<@12c7qƏ;,,7j}ee j@GڨHSR@ǵ.ǵ>j(|Q(QցGʗZcڀ:KHsҙ=u6kf8^ ܶoV6 R|wIÇXx >hQ}:#L3GN3ź0G!*[ #Q)XL(G5+˘]zWV}[޴%_ x#m /m˦}*ˏk|EKL\8t y+;J֐Juxpw-1I7QiHN-e:Wgekww.pt︂<(}1u^T#^cӮu}*:Y+Kdϟo10奊rש[;%#~{Mܔp(1[lRy :6pB.JSpg}>UZ:BH"=yg[^)h pPXԢD&$fk0|qo\orOrlg:b-]04t@1oZ%NZq^t<O5FÍxJ><,nNÁlݱgmVip- mP4$A<:f2LO^  O;סqX%$Ӻ-JR[ IW3ެJ}n-WVÝˈJPT`G;J^j8J!e'۟5󞝋~m|H%ZʀcHu⾸HMڦw{Vq>U @9Ҙ'I`#ɤx{QG=(GʏGʎ8 >T׊]x֗tRGʁ@*TԤ_!Y<.y*,7 $jIx[YMu \aŬ+RB[OFyn=3>N:lpz/`^Z`WKl8֢[uR p@,ڴ /.d\Gs[E-ZG5:Ry_i=FWȰs(TO'RZRt&k"uTI'|L\Kc`$ {}ӥkhKH*ca Nxݘ:'jLߵ`~(TWԶm =T\CٍS|ωmVKSpC$QӥXbaإlKsrޡ,$a7f*BX;0?=k)ax))YN ǔ C,FKlivjRЄ $dgK6F!v*-:#ȍ]Ǖw5X̥ܥN!h6& _$mFҲ$q~+g6LIb)`wY2BBǘ*%\˘ہ:i$qwھGZ9$ƤqERiUYQ;|1փjHrbAڥ>j @P%!@t3Wb1pCr'TO^j6sr)&R橹^AD} c*^uuv-~HjJ$yk֘4߀#9V"1Nw*4<)SUiPQHNdTD@yQE4iP:ВCJsK<ҙG)hi)M@M1F%֑h)EFb@LTiV%WiBVCOpA­miA:ZV&N$8پ͟~Iq:Pj\24xX!p\[%ۡet"8&|}hFR ߡR: jx >pF4Ya΀[7RL6b% uHICbBN쨄3M-N,&f ?xmYcٺ[[6HXlDzD7?'h^zyYu6)izyy־x8'qfgЛTۭ*hUM2(B o_Z]u-TTgex_B7ԭ*Sbjm5!{+IROx֕ZJ[lۥKA>[鿘_yX ҝI@o ԘbzAqMxgҊͶ^Qm!nnnP;Ђv+gVٱC)NV9G}cpD )OնYb-)ZH&z|"WqJpbsԥ%:P v x.ڮ$$JT6+gsUZԥ%MZclʯ D>P@^P^Yj[aT00X\VPpH>$W3U4'95Z| O N[݁Eu.8ݍû:8$#o/jL(AI%*AgxKc%##BڵOzN88+R'kB߽~#pjshmϗޖ%@4c!֊ZHqQNit4'S4q@H@4MM1)h94<Қ 3ȨSpi9*J1$|gVZF]7dsxjJJ~u|g]qZ\acm#ăw؎-l!VC  Gkm>`ֲ @@;G?_je'?NqɁC5P:怨W$lVW k TFn~Z4$$}ʝR4%+TB ;ܴ[p ~WjO.̕V !D'oUkKбH:GTRIJvНyjQm呪iWK&l֊(@+Z?u0\1`IwjwbmVBq;[/ e C loz96sfp.^w )IXk OɫKm,:iT Mu(p^+g *4 cL #RZG tŸ 󧍵ksnKwh!*S;.0 |ٗ԰{VH(&B$&>P&3@1@JM9}(Dt@*$Dѽ9ߊG`Ih:G`:YϨ]y,2Jl7H>sAnlPĝ@J>lIm%Cx *' gaY؃-2[N%@ADڞ'ktOtVJjr80A(hv2_i†]\D*xF c`ư d|%l ޣrث b8 ( NQ@R I;$dLJT&44hN}(:P MIM0})t M2fb&sDP 4ҀTI։ߊIzs444A3ҀRhcڀ}(A4M.`eJ܀PH *>R$n|3^MpL}f;-jLD'ξoհ":g n#RUqJ!E@J#'cQ{ J#z}7,@.IBIRny5},[4J @5(v p#݆-|uE5 "9ޡZ<%_;L>S*}>YXx(P+-%&w ~xciloehl\QԧHiCnx6WZ?pƣȁ#`?R`m݅)W H2>My=g%Ipj(U`M;zsE.7 P 6V}7< ~$ZŅFZ]7hpcƮ>KE}"l f+]0M0˴%$6"`RΉ׮)L%Ũ@HL{^D9qNjt_YخW-s H>>˯vKIU;jzX-^֢HҴnR$N$jO6EObx(KTR5gcrgʵn޿R[KzVRR_ޝڒ6ڼ)'B'nZ,)fo9d72 $H1kՂ242EVu,+VdFCNwdY8[!iF%fI*Q?V4:Lo$g[a4IL0FLt>3@I@1@*(P RH@*4@*) 1@FTuQ<@L(E:T"y )h*1֐@TE3@ U#&‍4Ժ< bȠLpjl*h*RciޡM}6.2^A]bVmk-Ƣ”Gb9RP[o3X0lM l$';EqM.fĞBI^yԄN$5$ĽĞRW~БR|~#/4\FezB#` VooJJ>::_T!$nS'Vv%l 8*&r_KJKD!^uq?TeJiU N9h;whu!_I}3nZaOS! <ğVO$K I%e#ڮ"O4,W\E"?VN(TfNI $ɪE}^O J6yw )h*1֐@TE3@ U#((Os@* K#E84uc7X|_k1U5`cYB]:QD'1 .&v}CթR81mQDdBwJm* lUrͰQ$6Tȅ֥snZMG~,]8tUjumǃ(PL!)ūT!j5ot` 6(LOۙߌF#8/܍`'IJt+b8ڮnV$xSGjjr\nye!G}QL(HQRbh6WmWR[Bdșz9ctIC _\2lB 2@$NkteJ%iߩ0O=Z/*z(7 o*ZR㄀txДxNJJxZ7?Hm!~KQQx=]2 V¯o;2JIV଴nڟ ̛Q-irulVwL֒չIW澊nB>&ʌJTQ@8EiTPwy@0h.(4~TN:ϥDNis@}E#LP >&dRRs4Ph PʉR@9i.hOiTңD JTQ@<qUl>?RBN!;(q&7y566%#?Od)}[+nЀS=0e* AQֱuqJћUv!;LttsYiEۊ]()Q@9J9K'9=KxYjBP;D$u",SsY?b^!IH%Q2a9c$`ؾ{.q=Loak!zXi)*V>1 D kײ>,~Zk0Y+CakJnpp$M PW"u6.;8orY GiU۱qxݡL /!( H+GڹnM/Q*H$6us؋-AMZܭ8߭ 0${,~w/۳:utz=Kߕ(TqHeasy u/l*G=O'FSa&:V͜;@sU6Zn؄'h2cUXc()"rNMǡFzmD*!IQT*ri*БQGʊhsE/(h4SR h4MT;ӚT|4A&4T?ҧ@iSR4yTP .+wȸFDp pfÈ]R,~*h=/B-$ʸ"JtD'I#"LI>T$ңV$d4RPNiQ揕|ҧ׊STTsJIOHHO94?EQ4Q@9GʊqEJ*T3@@9$qmghջ\9|}NȤ%N 'ci5ˍd_s/4P">%C+tnvJ3h( v'z&؁#JDE z])z"iqQ4\.e>$Hm%e%@HHqkYJ|Yie'sI)):[Nyk,1ܤyLh՗B.J*2SkdeB? h۷B<֎Z4:x>{oYj;~5”[&KF2)P (<$L iLe_72[p,Iwm[8>J7?qw.rݝl/Eˌw:HרS!% TDYKP:БtuOEDPZ@PriӍhTtԩDDP~wҜP ((摧@3E#8(Q2)P (<@?4 "&:h)4M *Xhh ks K)%*HRRA#cT"uqh4 uZ:<ԩDDP~wҜP ((摧@3E#8(Q2)P (<@?4 "&:h)4?AꝌJ@M QZJw$&(י @PriӍA(@t4ZTEB@O)u R#ր"" (#ր:"Q@Dz$qJQEtG((J>tEEtDPHF5$9m2g dH $HU}L<+y$E5(H)SJ(O)RtUÜ?ޱ°ߣX2 #vvZ(,.P~ͽ'J #]UՈay/"$(?#VI ?((BDz$:HV @ ``uE@"yϓϝBQEtG((DR=h(ESҊ :QDPTǭ*" y q)E@EDzE@?J(u=h8DzBJ(":#֔Q)QEEPh")iEP?((E* ֕DP<]h8=h"ΈEP:E R=hE@?J(Z"qoJwJ}zP4E)h @FQ"hyڂ74(i@qDR1D TPRz$P J)P  )FԤQҀdyP*(Tfz77;@3J$*(y4mZ:H2 lnm@Mt!ARxP;lDU؋{EZp؃:F:ŦL˗OHtI>%$ʷLX] D*s!ҐHI w5o3GH'+v դIܞ}jTJ"JJSDVWbǶ^ ɘ+hŶROZԢDGdH4 kpS코;-4YctMRU#xGSnSV(r7I(r"{Qz9~MCyN3tK"ۉlyHG>5"{cǰUJN)-K 8 Nme5mR<_O{Z g Ef҄ ,x@LI:yϵыۿfM[[eLhNeSJӈC%>dɦW}q sN<&-LkL+`ωFkw \طa)Uݿ*RB]t܁ʔ '~nNffB,[l $\.#nBrDAĀ(y/2_տZ`IHW#pH3awJ6"(@2<\[t㩸EKKZ`HA $*[8quZ9v :W{_aiu C%*JAH]z7 NMzFoHh48:( M8v9ysJTEME&@@@0iNQ@3JhBH ?}h4M"czc>;UF $F^SzыcZqZ4jp":T_ 61uvvV[MB$&Vֲ@ʎM^N~NCi*2 sSNrd3/ܫtR҄yKQ*P|MoBlqs&2Wgً29tph\Z-–V +RS13Բ<w _xgnJJ-ہ$% +q!~հ|aeskNRe@JCnQܨψJt=3og&FYyC ˶eۦ|Xt.$!jmJҕU([okMnݻqF)}]!NIA }K WUc~sc^_2vwba冊4A ٲ ǒɳN4[” [狚i) *IG=/F0N2?n_&n) =ԡIW;_}}bĵŇe )2i mC%ApRI&F[kdK\8>imw8!/QԮIRdf8Hc/i;=άWŨ~Nw}g?v?V.Yı%. n/l6AqWnqKǬml[*%(d$bɭ_a8>xfJ2"hp9nNHKE4854(((4MDME`ҝ4iMrWٓ9+vysW}m$Vv$m 6`sD׮:]go0ܙl@)Vd 8?&R)hw dgmnV[iDfALAW|ɠ"NֿA} ۗp^pKN?<"N% `#|͝`w]vc,QZgJ$u yo2^ i3ֻًmҹ 0,4/[JJ4P0Y{p=gam ) VU:l@<VG3j}ǃ=>!oݻnN]I:^Jҕ'B QCzi17_Q-%LLDL'@kHn"EK" Y6 f8NZ1@Ґ hR:R`DyOixҭ;;wRPK*RJؔ={@O^Y2vlv .mP)  =kqh˯3rfCN- $0&<WO|ivڃrv+9k$%--| jo~԰^0 c>L?ʜ)qEp D$,B(W%@銨 }숣ol3`?نkV1ckvp.JI"U\?{m]❛.[p`p'@I-8ch'A!>QȚ>c)_ñNҳf8qt< ŧ8@%yRϦ?vqg[%./C[N8Z$$F6J&jx?*Qe2FygW&n-=V14ۃdl Ma8edȵK-y)^*{ԖB%[z@)Kϩ--`* bQiKp%| Jm֔!MG֓<#ih5F]E`s]eFۄHU1O?e %ީ?w2|jk"X/Z" `*mcbÿe˶]I5)<dHgйpJ6x6&ij) c}F@ F,J[U‚Tz ^ly@;x- .2 Od(⣩RBTږ }h>'ؒ>:e;KbAi&zsS3jZV;,z5(dz5* O$Nۙ((B%`V/Ŭaummu֗ u'zֲ=;7QBBƓ ΉGد<ϗqge8< fJ\aڃJ)zW{Bv.Yم-m+F'l +mʠ2a\CevYRo#Z:yVOC 7`wuKyW u?E7/i+Аt/RQU`Ƽ 2l d*$ *7U̟5)q0U_[ZmNw]q5-;fo-ݵD0؋K4h0u $COjs7eԽ݇޹ZB;;Rv_cQ'Aڠm8ҽ>I ҫQ )h]RS;UsR yῡ3.zb]bWvzi˅>Ajy`]'ھA$OJ0=}͖n$hJL!-N6u/nMMyG(`-[f yQQD+K! ?RT'!W:b5u^і%ĭVJHJF5jP%x.>jfz[@YJq #7jV@[ɷr)}OJ}dSIӚR1]ii!(,}U'&ۡ{9(fouiiat Y11 %{6ؾC aD'qe|z^JJT7 dG%_t{Ҩ4!m- m(Aޫ cĞ=$ z 'R9g Xb0 p-N <6 0(H$&75kvo,AmkjC# B*7 uH6P #JjH(aU[ìluAn|*CZHH$%;JG<WaŤ((6?T8$y*eAAZc"GΝwSAH5]F}claCh i܏j* TA9>e~i͒ n6*!ZzE@Kp$JL?2FODzF&pǁYO6x_~$栟%U?p|ۄu5y6vH[3ir'5ʁү*cͥkݨa2P1h+mǧW Efh)] 0@Cm7 $_G4A yש0ѓ$a)U%4A0T9 d̿{3ð,'m ?܍2Jyhg|~Azz~k_2&̿DnfKl/ ز'zӎq=vp*$mM p[[D=־`g+ۥ}7N )P5(D Q];a* fK^f;ݩꦆ$ǝUH~Į}?/bi|1<ې;<)HzLѓy{K=a х3ysy_7 ,I'WھdnrfwK*`ZAO% + %:|lL$o?Db/Zs֥ M?tҬH:LX$+es$a*1ԸvjXa*֣bm4U"IHzj'Ԕ:I=bm6<))DX" ydJs B QD\HLU%)z=LE g)X2DI1mܠe@F}jA# ؍#=UzA$PڕD3~Hc:`JOaPC*:PoAP@ I$>9)TI;(L@fRߥA.o*>’Ҡ.x *lwB [wL m Nf9M㘠'QTɑwi@x֤u(Gʚ.Yt *O~J6=@V!*DyQҢ~JJAt@oh@rvso")9Ԓr` P4l@ILn R VG&N3r cIBw">tQHQ;m>ʤB%ĠFHnRF>m!LJML44Եt%dn@ JJFEB-YFyBAJwUplJϥ(q?QȏKWCǭS *SΓU$jlD`jhA)ګ71*:jIGV@ez@5"i+3li!k)$z:¤'z@byz*?RF3BMD.irÈHa)<#Uej:p;2,?؅n&H}O¦֒-;j>Fy7IInlŎjFo 8/i,%&**#|οoN޳"JS픙  ~Q{J˷j7vW O#tk~Y[ZRֲy{=ۡfXC8eG\s7ϴL f8&`(LLiPҬIغFZRJaI J|GT42A*ضB i3)謗մLV#jƓ.%cHN޼ \i ;:VB̟(%ɎD |[wIpTՐ^ BPґ*:  BVZګC-K H SJRJ笂? ǢwlNn>U6)7QWKu Q'TPJS= PQa^"ɢ +dzi-k:?\$}-ɝ3QhS-VP`+y&*m e y3SI JghS6T"LYAE'׊I}i$>?h5] p*C PꎠR2A*h@)2 < zU]#zI b"'4)'93KCDM v% 'Ϛ+bE&HJ:vF@[D1KX=h() ` V,; rcU(pm$'JG@!@\=[)@ޮrtT T`zKiJ GjmH!Ԓ|bÍ6JhGRF=hH=NTiTT)KwHb9*p֔7 Ͻ%)6vHհ* 2٦(Jlj=>fʌ4gz Qr|\xB:RB :^iw/-JO(j6CU܋(Aޮ}%|&*Pfw=V-eN{G(I ԓW$LɃ E25(B1DTi SDP"HRiw}jBRQLQGE &"РԴʾ{NND֖(Qtx5" VO A$OÓJz&O)!Kq#iy&I=o( /rX}smJ`;mKV>I=Q@pM) 54ArI oH4*GIeR@@#CT~S#hP'TWY#P ڍ@~D l 74'#q"z{FނwyHG5 (Ih,H>u[ }E=; GZ " >ԛJOUG3WҤ ?^ӮQ*'EN8L=hOujYO3@j1u<ja‘@lA1 N!Q"U0w!Z52u&=w`~rS}M/X)iO;yE#lЁ*" 9̓K`@WTʓU?DZ4W֖ KV2W W֗tG ܤtM z cK`5"#=0Im鎐"*#LC6'ԛ E@S*Sd- H=BjH5 ԻJ$yDԨG؃jSҤ oTKI'sDԤOt;#`xIU7e G֠QLOY"l> L)Zv5+b*HHSjMiP>CjմArf)=4߅)gmo3GʲD% IƊGD T p$ϠeCiN>7I[#mPojٖ^{{n)m©<$q*KԅiQF%HuL>uc=biwP=rҟCz5Wi*T#IUՑj q <څ\4zUJDBDeiPVK# P%R6 ZUoMW)WVxBu'6#UdO&MK(%j< VMKҊ YaOzZFY)QVa[?/ P#JPOүe )E\*!Q.VB&Kt-kB3 @U $ ]Zc*HL6 ZRY \5h \,L)K)>gz?R#ihco*A.KdAΉ'ieV=ʪL؄f1-@JgpSmaCV 52GODj|5>~*ed}dTٸ4jx~ $ P?aw &˽$5r[U "I׭?wKDD~4[F*ޫ ‰i*,˜>B9i?@ Ȋ[zΜ&x) Gc0gbZV:~!QWDGCzY4HR(JALB( P}▟œKP#cQS ON =6:WKN‚`m m  €?M )Ư2'h AwR AWH!"9(>Q?A"H&>J?Jq~ބЀӰWzZ~8 )##4GΜSy wG?GII {m"J }Ѥ[T(#mp rE! ZZP7 T? $3QL*b#ЃGw*O?QD#Sb%%[ǡUA  X#jZcaj? &?tMj`58U#Uc€OC1#O.= yzz~ Lu'HOʥŸ*lQH}'cTjGEPgOd QןCQ#T'}?%]S?1K"G2(R- mLƔ0gQReyi3H3:ˆj n&}!&@PԉU(jIQR#G$?Ϋ>J)RfviI&}A~?E(9$Q^5_CQ)d@8 {ԵWSQ?,QGT҂yUR~)b}IwMT"G?#7R L*qPITX?R=$I>G)IR)=eCS)? 5?,Q CUYWtEy*r@I*:}s5/PIR1D,m#$ԥ~_h( &hFT~_t$q >\<=h]'OK]*Рe(U0#zd+!b*UEv?D2_ ,rSH$oH+eTOJ2 `LjXf;}jGc(Z P%htibcdT'yL5Ӌ%j)W %>]昑l51%i7NҝAI?3V[.:ڷV bcU`D+9?OΡ咕*?gpredict/pixmaps/maps/nasa-bmng-08_2048.jpg000066400000000000000000010520631427377236300205740ustar00rootroot00000000000000JFIFHHC     C   " Q!1AQ"aq2BR #b$3rC%S4csD&Tdt3!1AQ"a2qB#R3 ?p4}SEPB,_TR; _Ȣ@/w(@E-R;hj/rE/Qd _"}S!l/R @(B/P EPB,/Ӫv@EEmQ"!_(,]wN[t@(Ed";"ڠ _B/QmQd"ȲE,T_"۠ _Ȣ@.w;F_(E,/Yȥm v@(E_TQd/[D Ϛv_( _Ȣ@(ERB_Ȥ=Ӳ@)}S,/Q" _ȡ@EQmQd"Y_!T/" EB/QdYR鐀/Q""E/vE@(,T_ȢڢEEd"YE@(E\wHS/Qmd"Y_A}SJ/Q"!Ȣ!_(@K4-/Q@(E/QT LH{d/RdY_ȢE@(B,/ڢEACN _E@E,T_ȢȲ{'앷LdY@{}-G,d[TY{#E=d d{ [tdYO"5NȶG,=d'앴){#BG,=m=hj=HG,d d{ G,=dY{#@B,=j d{ Y{#@Ȳ-G,dY@/o~[t@Ed엷;"ڠd{"@EE=dY{#BGE@E^dXt S6T8h}ih 4D:4D]@Ed 辛_D$_]/H._A>h%AHh/@;B/t__E]@HD>hD_D_tt]B/a+e]B/"u@;迚D_]0.h@E4 Qt_]ED'T//莨@@(%A>h'}P +uNh/.%t@E}7B_^IMҾ$_4t]B.|4J.:Et_+wEЄt_迚.( //> |//D_E_}WT/_ %}SDwE4 "a]EЀ/苢h@(.;$N_t_Q0.Q4J.|NWt_!]J.n}}w@>H9"h/D]h] tt 迚W迢=4D]t Qt__ }@}4_Mt_/'tt_@J4h@E}wE._EЀ EQ4t]GwHS迢:a]h]@+'D; "还B/']E%}y'}7J|DrEt_ E( @@@E4BD{h/@(@'4@;""h 迚D_}N_}S(迢0/NiEЀ/"t]B.h/t'T:4}: Bt[BQiԦ#HN!EBrBv {@-:}Qd!E@ E T[dt!{mP R d"@/t'd[D(> u)tYV2=өNȲ{TBd!/tiԧmQdBvEO!$&B-^TY!FAHөY N&mVbՏմ0>i/Xh$/aC+o!KYF0NѪ)x.H@ ` ['~̟ ᦼp3J$ɛ 9lOy09;4Y-3+|=0;YUqY]X;~YٔXq]/e&;Zk1~oJM02G{$Wş3cCiQ&ڎ ]XL?L翓\ K-Dzٵ]^%$YkiԮK #,c@1YycZ/|{_w2kSO%a e'U-3rj"=<7 p`<aMlS ktW:w_Jξ @MRp9xm}WuajaFC#6VX|kX1OŸQ48mE;w9fs }x)xQ=|inZ q:CUY5(${- /%ۧeqyO0 K<*0&s#0zNpE}w8Wx kk6 q/3k i?6m/%K8U5M~pQCN-~vn?P>迚1_^f5_aH[o@ĿTԲ4} d37{G(6e~q>n!;Oqœ UheW 0t&Hk輍ݛ C/ZFӽ&meO8=0ïvW췃:AMZ(M=;RB¿=gIaLXTTrgdkrFh:uL/_W6밊~8Z,N*:M.9uS~ƎUqSI+IU7voȶy^ŞB }xX;L@Ω-xkI,l{ck48I#q^0|S]vSL !w hE,qg}Vp|Mv}O=MWGpwq~[ ^ekŸq:w暋u$:6}^8KnN&n^qkXMU`F9M]xC?]:l-b/iz/|}>v6'J%=0Eb7*)`8 cnseߊ81񎣜TR6[_#.@v\G쓂!U VZa1 }i{(ȴ:;KD9_&8c1̴߳Kv6"&FO$"~v-? b!ϟ BCܝ>`p9#jknӱG2 JimÚ×qsap&JGȜC'چņN{ij8sm#c/K v8b\U(ӻ({Wؚ*PB5 iVol[C[xE.#bKAIf) 'w?8rC;+?wTE_~{-1. ı\Dity2/k?>Y bZSpt}y@ލ.k\Z9fvJIhsEî&B,^=  /tϪ{N<5τm;EF&@iԫL" Y!lcZ ,[TB^өNڢ!EBHL[t(>,jBu)tX aB 3d(G"QiԦ#HN!EBrBv {@-:}Qd!E@ E T[dt!{mP R d"@/t'd[D(> u)tYV2=өNȲ{TBd!/tiԧmQdBvEO!$&B-^TYBQ5N!D:md@(ꂃr)K 4!rG4rG4BH@d  @@#: B9#B;!H4:T T]S(PM$!\' KUhlC$qV!itBKvqad\"zpN7] *^5v چ AU7+ZdskYrQ집FɯsO3 Wq  [4Hm{eksu;Km 2mTY"86<ќʂ;'yV830FW5͕em['b|+`X p>ԬkVbv&1-VN ߈C]X#c3m!X8yWQB-,i]s$ݘdžXgŘ-31^Zuq6HF8'nf kO+$LG|**Ih#q+\ٚ]7vĘ[Bi sDL66`ܯE_*/!M+C'dC@ #Eg`Y7vd8l!IYe&9C!apW@C{z)g&GGE p'1:k"b}V)Ƃ_SM[M%}% ]}7%-TYyߴ3a5x)<|S]Y17 kͯ- \'{ypVv*?k-; ;8N[ÃWQJH2Dֵށe÷N<8eW6[7$[/b];^&u?5aŧ~;ol`Bٻ աwe͇{\[CՓ;KNW68͎\) 4Va]=m*-d<p&:{Aꤍ>dppG ^CbsMn"צwŕlI طkìkw_}+^ֿ|_m3٥/9kk̹twkBvTS@8~jyx8}6]66IgƪiѴD"W\u% 9jL2STGcOSoxi`dM [uxs l' t(5U0y9-« uxV7b`si,b@8]slgY'6J*29A+ Ⱦbr 3#pld>_ANorUY#mLO~AexS0èUKL׾y{joRa|=Q6s}vmkӐ9t9OSdq֖D ? ;D/?X)=!.pkζ/ MD7]+;bx{䕣MG k.;mW0l4z\yu]V^?iߊ;4JN'AI}CA 5;t^L 87T0F=PMH{핚h۷W?cg/.1^l5&VL1 I]l,@:Z `ԸԳ׈i 7s#;ߚR0iURG&78 \6 @WPny -pL^K,s/ mawOg:g1sn{i{sLp;\#췳Lu^9pZw#rI]D%VQRƉc%`x0g ;D^.gq[*)()d1SJr4.lBi"3M6'X3 ,tt2㖢^i݉KL4Fͮ=oUF(GEˣh'oQ4nQpfxU&=AUU7n@{؜)ܐiu m7aSoc}L82T>1o#Z?8Z a,Ũ\31_gfvc&Kpq>#lS;s{⃱ f|UF#6u 7r 貦bR 3•͢k>!N$- C\ >%(Ȁ9:q+8xTtUS`|/S Em5sCTcXv:1. lA7> X.|Ƹ{rŰ;"s4V4U4V5S2}}Olpg|X#*$ɱ7J|MV;_<d餥o>EO>?ylynN쳃)|c nr~`XUTq<EA[%)2*V\hch]yc=ж;h" soqu;h\ >E^nFFkHk5F2&D 7Uϑ6l62ˁvK+z0 *{1=4/OVQ{,a:7ɬerj#G6-C/\.:N,%dYcoa`i|&XO@ˏױw·/WEfWJj0<\ ig^,_u.3q=?9vARVL>Y?^3͂8LXbH\$ha-gif&?~cd#\.4`FM[)zN 82jŝVTGHaMWjq)uSV3]RIbwo\Gխ9ݒi"hk>"&ր5,.J5/pJ l;h8 :)71ic c؞.'GUxlG,QXz}U3ŵ8T-ŁݱTb);9VenXQSţbrnx.tX#펅 rhmuuR Z{}l$L uV5SgܑlZ>j7dGc;'LC)|i${d-s ݵnFr{7İ|o٤ǩd[M?('U8ÈjwĪs$倵ĒCI$ Va5mV.dSJGP;貵yvYz6:%;]i1׳`Xo;Z4vCXİ@LW,2`.x7 \sJ&M0fkh{<>\-f.op7Q}?W.1-XmxF+e2ǧ5xRIS/ݧ}{b)0Ƈ;%;,EWpZÚid{?po&"ʑCddDZPAhed,#n@cYF2}mb6jװ\y$9 5гtRQJ!9Eb1sMN(eRLlI-C\@> Лs6'8ӯZ7ht]]G/#@E`mNkysH‡'uk!\Nz؃KݡZ|{S]to?0wK?x\-oՕ鲟jfn{qX+|RR20 f5T aN$(/`'a'+VrE:u df> e"chrU^%nUXgraM/aV3♑~4;)kT :w F=` FjXѺq]E|: 9F&cr.l.XT8/E MP觰OSpcmmku~FI;`ISVqgi5PսtfY9}EBnn; ^ql_1']=V' aM >lر_Kwnzn Z׾&>L[`p<7`X>*X> STdžgHɞg ^is]kݾ~G`eC3 BV?A#:_^bq~"i V]cm =@_k x$pY _IKw|'O5{'3=#S+G<-t-unr8GG?p~1Ou  cèY)ho')5C8.n{8w.jS`8c@ai k[$P@]H߲?C?/rCU񦒖)hcz;E_;>>$ %0Un!ϵ6BU쇒y&=>'pV9d5h6.h-";}irG4(!B;!lP6BaВ .hG4̡(@@@r@ 4RBi!4FQ@\Ѐ!@lA@(ꂎPM$!wOGt @(PyJ @$"'t(!EЂGb`Ou&LYH4 ]#'}}P |tl]lEKd6@E]B6K;h@$E ;6G$_ɢ@/d͗AW~2@O $dD \OgËq .6nVT&Mw!eBSnM5P&d7Bcau3:\,w$=x+(&Eݛf{abvWWD\b{2Fv-t !qQOo c-AVr%09:Y5qa}t/{c[: w=_]qfپļWxa*j32Eb(y}?  pgI|RCɍ!g8-";;˱$Uݳ(q10ݦh^yc'ᓱ3l[ײYamĔvrM `Rc?m&;WA4lm9nc\kUdؾ7a1BzCc ]mKV?ce^74hmg9.;QY#?t--:AݮkPA]>8ϵ#."°jtb,24@7R_>p'_ä$~GMX9vW. .+qeHYAA=<^IKk`qǿ~/CqSc0[NPD?s^|uھ;U-`pLo;+K'gċW:-+O=pٰ= a/`4êȳ /)8eq+ڬT0P-fR-k?gn S[Oq.=<HF+pvPNrTŞnKsw삚n#v ;ʓGg[>jG^5.¿jG pRSP@OΖw?V0aͣP5DRjHuM:#GAI]Xwۢo߁WAA81q OUS9Ԓ@`.gI,a]C}(m$\\'qZ7sx8h[Qj q373,ܐX9 Y'oaǙx>@bxͩu w?iCa4 ί5 o'6CA=)PC]<Q u3F3l/i4b{9p$Tp c+Q,S+1l^ќCPq_Èa NQb4Ӻ23- 샦0vA]I4mO|&E"e67oV$]i0|] D-Ay|ra.ctFވ{ݬaYc",m,ə=><7oAUpGax}ۈ}F+SM$XZKA{-a*wTxWabQ^=_F xf0 3{'LZmKE(CWgs{$=)v,MmSlվǸp3Z;t%;7[miobԔΏu\sekl[_EER .*\8r.\_m|Cbz#hs c+멷%\> ¨Z'8MR#&ZA/k\26ӱJfޏb h<4X>7}ErGtwLW}φ\ L0lg i&[K[hukP6>WxIu?.&lBlbG x55,FDVUk߈?'p1asU tD͘/wڻ0[IUq\Jyl8u|mD3?Q %^.|_K Ե.(Zz8N3`y#;ˀHoQҽK΁/^i3M J.mD~=󶚺;\ m3tz;M5^eĪ_QUQ5LBԓuHc6נDvlsV7჏;0aA}gWi*1%氝|-0[\/e H~5ոqF]H<2xwmvۯ8fJRy+mB}~!;L{Y鶫2ƥlO,,XWr/>5x~z#T[8@\ޓNm^Əd;+l:FUQQSD #s BFq ڽ㝟2U`ge5S;.>rF[O-9$gQ_\/v vJ_KM80`̻/~K9,FG70)A}{xq1` ftW:ϸiq,evqn\ + me]S|g=VZ8༗w?OěJLh?aUb_+X|R ~fyN@42' |[[dd 6:Z~OBu`IrE8w3xGi\5_[P衏9Nx65cl+wU Ti&-A0,, )<^=&揄<k;X&yDΩy_%< {@-#ꐺF #E+j.Tsn/cdDFKdSZD LFw<;f&&2`ہ5輡/vqb:LVfPV@H \,]ĝQEjowp`<O ︧VhgNɗAμgt\7ITCŘOWb0|1=/'FM#ֹsܯGp1O<6;e-ap&#F!,Q<6Z\I6.W);MtbOъ1;a;ksU2RHY!  7gX-C+ǘ7 I8sއowP^`Fz+f+?{@g;,kw-\0d"2M"Tk0 XZ䛟%lFeo;w1@nz)úEZ)aqh7Xǚ]T[:lX6)#i%F:Tl A('tE} `Fǖ YSMVχ_`b7g A T{՘S:?^k8v<9 h>e<3>aBNؑw-4^%dvRF~]75G{3qlK:pI)i ƽqkt8W]sqj\B~ s)"7wEa8iU>ݥvbq¼u`л3i!sbu~~n&wᕜPXs E&/#%pp9v=SqP3TK[t@s3Ovx;Cxôa'Y[S8>"앬f8x@o3 j[ZA9X2 SmJw$]7(혔=t߈^7\F ġΦgm OKVv_/b.lBfS-u v*\J]__7,Cԩl _u2bh[i+= ;5TU&c5n>KǼ[354 q)c֒? _UbAW-Ccтi AsA! a6jm<fݓ5j#60},KAncPJ$9o{h宪9]R"TH|@le u8cФ^/k%1L%q$]`4V벛4oEU!hhi}X.@s^H6_N n$Rev/N96/Ԏv]mVK8٧lEry.u~܅K`e/y'nd(:,oٴ%VkkN#CE s${ 6];J3ki.A'!mB̷G9K\ES&fVTj=ECl:aaep6fմ2Gsz[_nɆѵ^,lmt墁nt]cUԜQͤs \+w0VXQ.y?6h́oKȑ{i~M95iӢi.I?AVJyf'y$'Rn5.CC'>x`aail7pԍ[#p9Y4Rqjwfiý&W8a?gdtlgߌ3Xs3<\ q7GQJ%C緓p:XlXF#q9<%hݶkA^i)zF~Cw` h%c{>~0iKI>؜t[$Jƽj]]^$apsLi `9?o]Њx!u\k ,l2vxc ׋ygcx`UKOOP3T0Y>UIǜؓ-4u1IޒNbֆx7)WbE,{|sTIC35n[qOᷲN'{+B.+`m+KN;1heK(486"%FmX~`&c|$㿳/8W{4;5&ڧma{ lkf|=3>VC@_ eɊv|{ f1e?P~Ȏ w;9?iW%KVv02 k/*>wD.ڧ+j;*xQ oۀ4'sW]R(͐($@:lt6KwE@E{͔4Ẑ4Aw/ N$G rV_G$UU[FӐ;,K#PRMqO/UѭE˜42GO Bj([jx-ˣKZe(qb{Ae,hԮrt@_׍{B |v _C@Z .~ׁ Wbx9q}3ji>G%ѩckqW4ƴkfh5 ]ASCSsSGYU$f6M\ 8B.|<ۃW9:[BeleVjY$wL!W] ƜMO2OK=lP}SWx]!"LH=KZVdFeuIƺVLih&N.s ۚ_ԝ3c6HuH&-[RB ?d_T]!EТ6M$E@?戺7 I@#?͔e\NQ: 6A6Df \ʗʜX370X٢ta`E3h6E[MRk<_'_.W+~'찓#Ԃ\m|ǻ|pmŞӞ+Z7nNU켟ɍ6 qWph|nhlot6̺v{-mLhvh#sfXbq{5 psV])w|ssz쑮e7v, CD)UNA#|:}ǽůic8X̳>)` I2\6P;[F8iwG52h`q&GUS>#'íUjVPL!MF;!#D ɤ &Fh̡#D4HY44h^w la{zMp|? q鲷ǰ3ɹdsAhn\j38fѠὺq)>bNFNo|uoõpYqvwaꡆ̭ e{Yai{g 8ic,ft]k2[(xׇ[qGc/X }(ݶfϢݱ~K [\ hx%o]_?;" wY*|p ;bsK|c`9oُ';R:|N>7 u5`qݯcc^$4{xs]+`c!JzdqmI-:GQMg>=?*)q2xos /[Aocvφd5;K3ˠdxocߙa#qL4WaAfi{r5>՞bx?lX!-¨`ɚXZ58ias\C$D"Þ'6=)+k{lñ MuM7 *cgq/? >F|W,v_qek{]9Xl6^y}6ȓ9m=``|;WqMU|f-㙏wv@Nn»TԜdaRTWTכwܮ0~&4aE]N(l6I7$/3N$58|jgGF|Mmiϲ ߅za|X,i1XfXuV3-x[XxpLc0h*!8=l73\FsdxƚjW5Aoh8'Ƙc]29K,@ot'̞bcof>,jǣ.Qvkfvv µ v+6&FU.9*jwe4%h'16:[ohOC@JZ^ ط[,aYG#ZyOO×bUgqqJ&)A 3e7#.7JSz#oovEᘏhh#5Q>Ym+H{ _,_*j誋jc[bk=MNN(3 )x(|\hN u+6zq<`*jhG6#ZL܂ӏNݤzFYv6q[RӉɄI^r/ ?D!SOPng漯~:*q2D`TmM_]I 37ԃ}H^W .v*{ꙆK]O4.$CDEQq_pO쥄8Cbc^tkK5Ӹnű&8^(dXTr${?{e-[0! 1lU2i;?˴Lf.B prFn> W_hoLco`uu x(fkZ9P~#>l?wǍdf[٥ц07M5/e_/Ęc/<_p\|l Gt̤3BߡЮ'z\8?uRbO"ǘ.WX{g:Rg|䧝{~>72{#ǥ4^Go#_=5L'uN2joey栚xR..:Q- sHM6?ժ_G 2G^C|۱QqAc΄VC<"^5muNJ|pb@J4T3ŭ-6>i|Q1`\G`d|C07#]IW8 Z6>=fKQ;J^%YK%N`{̏i'Al"꾕G웶W=1fXfq/q+]g>!,RU?Ųm{} Vb 왍|ocÚnp# mapNj!:JW@kXjnD5 cЃxBvWO5HA6P/G^J?bz$Bv/tW>i , Y-?;Ρ@IEۄ."d}7S'S'Tk G+O^E@\d[d제 ^N%v$hidK}-߉8ijI[[h#+loru/µ<88φt"yŎk@6oFaqf7qU5\)Qw1U:X\χmKbď vےgJ&:Va'TZɛ^Yo9rU~9|2q:zӸI#lS7ÔXM'\T(l-Ue<8o-!W!^ѫq1[ACQb &SFh}mj--~oζ`%x=YY55fH69G6THwT6,Z;ځ5}\Ra=X6I[ޏ F^Lܐ !,L5:ث33ݕSPs مvq{j|C];!t⑾(nĨQhh&#}Nhh hr)\; ' ӵ]|O0w,$9)sꩽZGN9 WTS>Ww<$lmcXSEHC9f`r>5JP#`oQH0NR⣝Y)@u^:_+ZwIF2 uxK]!&be\ ȉ)|TQ#5hM ֏K˺Ů{ovHn_37veS3ɈE mQQN׌;:+DZ<cGt3nKIV<.kVvC`S6v*qOgE5R\TZi6ԫڈ#>X y~pz=*mk*1*17窪Sf>E:؟P][=lxv - kFk沦3'{m\h|XlY(u'R@?u#c-q.\AuRn|K ?yԲ8a~ pӳXx}>"bWKk ^쇰, z#ƨ"]/vUYձZ{g$g2Edc{6l߇]~t$?2@-{;ob}KK?INhtN$Ǚ=VW1*q7eaL-ӫvۏ׎{oD1aTq! grE8suN^Q}QUاR?\6Otd#H)ϜybCP) u;bb$D#] 7|sqܞWtMsKpk|ܔF\Zc_Gk URmD@\~)K*{MgR̊=YrImp7%jM_6ٲcq?K [9$AEu|l,Jhs./l؏e@/nhqLIV{*L` 6Z %QCftN| ikYS}CrH ;%=5+Hb1HkA1z2uWaɤnv+0Ye{[_[lW)[ &,1[FynfFlKZtE5-bJS3d25t^Ffnk#$>%G)&ssYH\"$ޒL_ۆ+]MT\6 "}ap9I}u7+9Қy[ OU2NMصs=|yXcFO\qy{Hsux hț-CWw446Õu /UI oX3 ,e{aم'W/O *F]&;#y&X -ָ]A]QgSO@A;t5@V<SvU8>kO%ԫ=Ŏ:΋ IA8+X7nGHg9l-I4Hm\ٚ9ey6q+Iе賸OE AeHMwb9NG'GGF{a8H0 2^ZE>yn,@57[# >'*\&Bc~)f4Fncѩ|7am6&n5hxâz1ߧ,=@X:H#̅,ARm乼Rl~(8λvTcx'PsS+C֝7My~ޱ]_5hl_c`-Kl9q6Vc cSL9_6KfqYzυ?<@!2^ZF1m;q?p<'^atO͠`6kp`ztv{h2CO 4 &EןY 3$, D".yPkZxZ9MivwqǼI5XvRY/9v!18e$ ꤝK#-MwyLrv9F3]SWI8 '7}m̝c+h ~>G,SL&[OEi" <:SGX; /3k2`7EςVC>QM7F 5e뇑&bX"z?hT5 ̆J -(+M_U'5ss껗b ǩ% ;9i{m?E(+Ī'ØѡK/nTpxzFHFˢ&&,N|.9Ml5 ko]w^oףG{,kfh妷A%Xu;]f7myvrvE $h ?sC_HabMgn {I mbt[p\SI+)ÐMXiFO[1`dPKl 2X=B!q=>Tv]OLMKflн﷒ټ:B٣ܻ0#K_ʼ7Vtxmd.t#tT F 9C?#Lp"Pw ґ2]bqglr7܀wXxoMfpI=!sWnV]hqk iZO{'sY$q-cÅv~'GX׶`Do;?|8?1L v#bJRObIuOjvsh_,5PᬖFXpp<+I(밺|IUAQ$p\?摾 \wFaXm3Nϰ?◄xl #Ÿ&H!'m|'3K|I3Pc,i1>lN10SMm[RhxZͽ\ym g I`<JDh*PU)uEC"ˍJ쀦lfnk Ԁö-Ni8۪B;5H?K%fݭUc *\/+"kˤA`4%mn0՘5iy']nV]t䑯`\8穢;nh췗pG% L`!|V=+1| Z|KGa7Y8g-Fw:j3͹0:eʹtyzf>±5\'@TS|g.% !{coȅL|9B-{3m3r}Z)-O`RDluuc]# Ĝc-R!hu9n@颱1LK 3[&.70:/$2NOsYR|Ԗ0mR;`}J0˛)*-` ov8fu$*dmkj};u0dtPwn,t[C}I+48S ZhH%P5s5aUr}U -[-gKmc{(/ͺ+Fl2Bo}S/>ognZ/v-Dåw вdeCMF I в`Us3Bp9=/u&$\^N/9-`* ҟF+aTs } v5M,4nCb, nPϻ7 q t^f'sBKK-nd~9~Vrmdd5g>fpYinl9VN{/]Td[SL/D E/%A f (pRm #Tz#DoRߧiv,Fhܸo>$[ |r1_bhq Ʈ?E,aX_ >Y0Z>kɚ{"7i,u<7kx2*qd^vsIF:btfHp v 6 tQM[Q5d,za{/*"(,ƛ[,Y9d:Ze{?Z^.NRcr5܈kV)=YyO?20^/jJ*,FH?+8h7[ Gvٟ Up8n%]67~w]tIFI ė X5Z b{K5gܼ$ZtJ6⫛=e F44HX @%;K-LWc!6XŇ`CX:}H6bH)$WO&C{k=v[dG>9MOS3kM\ma e-:u!aMQ&r3c{8sb8WeǼ'خ YYK? Pio5-}*ٵ Sp85Jec3ZH$LVJ,o0jx+_ ̇ib5 b4dq-\w6a0$kؐ}M+`F6QW$aH4?P.>gg5Rˇ-殊*G #йc_sqz\^b &O]5\(ߋv-aET )1.J8v!.,O N8x~q N<69ܐu>SE1n0ō^"oP:Bk-`r쓲_x +rU|22Gs9Qx&zN9/d9WT\#f,s(ak5@91e #Fa=9IY6)AJ:{k\  !oī Mk7@rqܮ 4=5lMC,x4q"rwenc}-uN)܈G.h?m;]a}K *HY#::Fyq ፍphrmɰt;~p\kƏLVա'kmV^}\oo< n,;8I]wԺј6u Z]cn-/߅/n==]⑆EH1>gqT3h i{G 6/~+/bL3{vy#o5enETڋٖ%p_0IQEI0i{Q?;E^MIOfXvvcxeedEK=Ņc2Xl/eCI➚郡I`α4wnп Ϩ?-F&2Fꪩb pS9uݗ@dO|ݙɸkc{OAp4#săo ˸?gfk34PT>0@_k~[x">ֻJkqTHP١k-dž\mTMW/ $5lf0PH%%p~9q`7 8- nIJIbvr'vV)1ӲJZs:!6s#tEkxv ?/q80UR3asZK@$km?_E[bU.I;dOkyY{#5k3ʫB1jVq'o%Tf-NÝ&Sldcr Gz_E# fQRi-q5ѽv.-Scf=mL16`qndct3n+f ȽgZ`B3l]};78{p, ı o Iݷ;ᵺk.ؿgq o*x0z)Zicl5Xٱ 7]z2a]4^?C 48 =)&nb~-TNԶ4F[Y"&KQt/amqaIiQ7F EF: ꨕ(lPZ* j ``Ht:C<ᵯ{+id%H:Z_G }vW¸EWbokek._O5Z9HqpˮCT>_^[Ad3Q9հѐFuש|p+% ;@ßc1bU:=@?F>/ ]6#I]sL2|gC 3TTX0jK΍Gu[p(Z<>}T[I4b:f q9N(EQ ?$#@ $c rL y)$ r@WU›XM12[FQ`5=JѪ}QD!$n}P"PӢ9Dh SlT!fJjʡM5H:)^ֹ\-pܩ6G7w@\mMUX!yZ 6}Js̴>l2OBX^A=Nd`Z!J.Zڏxob?'{eF~WqURd1)8V,M>GI eUUָL\+QIS=G˜ u#_1[g7ȳml1eH6kY-방q*W {H&pdmmN^/!fuX8-fږ'+O*Hi-m:[]~&qME]d`4;{\s-w/-oR ͂q? 1Vǰ܁ |%(6钌VT$%.I:lBܭ; dsCB"̩uhbnY ɩ_j3R|LRѯu8C#|1㶇Mv_H8qFقJ\J:P&a<9es|13=:3 RI$9klvߚUTW2y{Ƴ].p>qѪdm-K8kk-*poXsCI oׇjIch٠k S]f.n󭋯:.&,U5$s K|ITj&g7=@dž9-ke=MXӋn ^2WxU-c_#FmrS%cUR6!]J0ݡ7"pYDf[$26ܭeLdĉɌ#wbe( n ͓ m ?qJY%$gy9V͙!Yl{+Nc]V]I{ȎEWnF];[eqmsf?28_N*0w sY7ˋi3"[n G_5 pׇ4 ;ipU/5-/:/bz4 L<գiKEn*@ 6R2Dz?\Pg+4=\B]#ܺ7uƈ̤5nl04ݮ:pl NXe{jcf߉ZNuxcGSðTHX3CGU#Z"{ MQѺq0I [gۀȷ ð50Tust2G^`2f 58Ь8P3-4lcvf#sSlڏpzKqGMX r23&YƑWM_ERjr["l`E:1O%)*+[\ uh! |_'(ĭ.U>Ka*pArGeu H7La]U3ewA3;ֆCCkT1h),=vbry-Kˤ-a"k@[N#nh^[ecp%{"k ;8 ,Sr0Qp+%!m.hm|#JA$v ieݑ@EN;ɢscھڅ?47uV15J 9сi)]==drd!Rd5ýfkm}Tx,N6F0\NCY<ereau7s痛{pztL.!&_ys!P:FS=j_!`w3OTÙnĐ d]xT?1f]Ü9P v|vr֎A]r7ktVtmD.:jg:hљw5G3b,$@ A~Z[9L8s W.ԬtwMj^쒡) 6tٯWkc/A a' ݕѵd`f(t <,6[vJ^ow qC ȽW|t6gK~KvkX,\F'70ܗ돕{F1#]r(q h;RH]{4Z(Z:@ j]DʧX,'`v[&KAQ!w[i7Yaat݀{\M_%^ly]#3w\lJI5pnM9nr=tpQg`\,͖fW@t d7 cc s<:ޙmb=~H&kJ'.F &XHom ,'ԢFP#Xo ni>,%ukN i;X5cEua1}SFS+ rF4J'$PUzf +[MC&IbuŮ Vyʌ{{MqRtnP`Yze6NWk/O$-٤YEScI$OneyiLxs[mW%iYkpzNP)^9Gi@j 0s Vz\:Zyi cˏ nw|NRs=Q] c6?˫wP ȲY9 { e#ku:$Q`>I|W( ?g@{uAS~,MSO%Bbt+K(&bnG5ss͡dw ]TB#zæιr%3fPӐvW흥r[uY98y8T^.C[aij[Ja9nRg>Qs^Iita8cacRU wTovֱP`RFY%ku;f|n1味cbq`k?MGkei3\LjdT_q` ˪|U\մ.,Y{vWjIǢ0X@:mw2f ;֐$4ۨu6o̸CEoQOd%ĀplvXZpTv[yEq^(k>WHd!0f NJE^ֹѵ!_QϖRf^{bT8)㙲wA|3IY:>|@1ѻ  V?wrOΊ1cT 9遹sNCo}sq`~EEGLi^Nd.Wٜ4 *{ ٹ^Yzq/7/K3Z#INwiݰ$Yn3؇1+& #`l!˕@$昗fW.1>&ObkqFTl;QG6H/`; W$x +<2xnñgCcs$$\#}ŧÈ8vf^d&$iQ=l+㸞\E%л=Gqfu i2c]t~r3ǩ/6 X;MK>] ms}GWZZ|Q+GTx Y{7-7nuݩQ:,<&LUC2ma 9_JCUWSÔRj<>"o~ wnRZ>eA| ϚNGE6D463CmkiEn!1-1tv5pMI _78㎢`BFI aq!pb|l$h^;j o8ft09Z9-b5QO \: $$c\9k|!G3Pgcc0 pUY6&V}D۴*k%n1RdvA8yhl"+ă],omi. Q/TmQG]R>pw9 {Z fn_8ø*%khc! Nm1~ұ>§UMI EVpt.sLe0Ky2rNhvk7vgUm6<SBW4ݰg .-lkxq9 N~Љ dn}llp npx[ q"[]iWt c쏃l:qshjf뤅,#sn-甞V^'R_eI~{/9SxV\JGG>+5Cd?ŲMշd}vC=agNO 5dT[+ nl7 *|];SegV9|AHj$BdԸgiuJڼVz`vj: @'vl20k/8H2Γǜ?v?Ɣ9q655O)d 22Hkg8}]Uql&qP4Sǔݬ-cmlJqRpMr6676^gI=9 ⴂ&4 x.XeQX cTXYQ Fb|r͒o= ~ӌn[ø?2s#i.ahKx^Qc2=--u9ήZLQ6i#~hekOx\X_&8w>׊TZwce طe].: 56۬d auֽUXZ MS;vܭlm-ntuc&JY{foBy8*u.i.R־GXEָZMnZhÆHAg& T㸇qaN<`Z9gly"~$#%ᯊTbu|Ωΰkݔh[`t-A7`oQ"Wxp ["TT%s٧K[<YYM8Ct}0eYDR 7+a'GZ|na9H֛ĝpWW]M<17+]EY%):A:\XX_k)x]u,V牢GψW;kl}~)>(. *0ZqL_rNVnU׉qxh5,P/}w|OƸTfjڗ%ibNk>vB8EN MwcDr؇fxێ;vKA`fk(0[o[uL?좻G{ ^VW|lHcv& ۼ(ho"FxuѧDXE֑#+GD#D & OD@#NhPy.E4(iJ]z$ 17Y^_,ccJ)}U䡚 IrY\w=&w3<o.Vp^+ĢGIIM̬JvZ]ȵ~O.PP4>uLmphLQz[FMtE$6]{.W:$4Ӈ a2o s4 7]PRaheuw7ku $H,t/6Im@U ̊UB.ܬ#ˌ\(p7Q-Dn{s$3;`9|\jrZɛ($[b eMY'-\Q}+`F 4^Nj\=9;[/|LysdB2ג}H0Jl6z-3!sKs x+I 9Xz^8jmsh@7YShq.'WYz!e~==ͥ2 p'0LFYho7t & KA!5ĎsN4JCPCoy+]ʻH̯u2Y=<5d#P3p=9.1U>@ghXrY.> +p#Fݶ:uXy"b~fHg4o{cNAkc$4^㒮\Ƈk{8fm A_&yh͸n7e̱+$kr|F+{ƙCpy0v`Y,RQx:#+9R|OG J=\U(b㋺uK?%>>=!ZȼK4;|{5iB.,4eС,)flҸ \^GWL{iCՌ'{KΏ(!eM3G/ݳxZBO5U0C݃`7]S~wq?6_~}3\o=nTɨ˰p鯤C `1V`\8oI1[ "k QpFqvE˿ Vwy+CD xE\%OGErق&0gEkWܱ1΂tl-?kIXIp:_44leyYh|/ҀM+1j~혳+SqǾbi\Za9$m5B_14/;k^[x䎿>0XN?M?q#7B3[{2X?,jIxc,.lXl6y''$~s*Cey[kUIȋطOʫ7M5>;+,0 J Zyl.i'ĸlo!XZYp'Vq[<K5h٢8c6%j+s|^f!Kc ^܀V:8Z;B} p\R,}] gk+adcM)cm7#,Weu5dM6s]YZHI6wRob5WRJآ|Gk̏`{ NRHÌJ_j&uDlѧOX'|m?U VK,3_7KdjMi3l*qzTbn &5Eсa3hlSOP˞^$4Qh@VWLK#4ԸZ>cqor{#joxm 4II3I1ӱ3[+~0fƍ%5608͕(#Lo`~®°Ljx=$W&}+Hǯ];ؠ;x# p%`h^ #(᷈k]tt7>:\NKI/moEs¿%: b9`ZNG4q1N2:2U|aǕʎN+nJvR cp1clc٤xAua^9G8*6^Cp . ]TaԲS8:2㭜o"ҸƔ5Sw%Ԧi^F s^2ka j|c xXmu\㵵k$_OsKK⣩|f9 ,sw؎`#%eQ9_^)0^w#0t :u32^㧣3uؠ/wonMa|49bi]? U $cwBOsLۙshu +QEQ= $c!oԭy1e1NH:y ~_r~"ƶHƁ`"wuY Ƹ\QfF,,uٙu8sZBF <6VU}k:gev-0P2 :lc*2u,c#]JZWPT:97 Vf, ;ͨO11N+HCpaݺ?%./Lmt\I]O \aVŠ.oq'whyar^oEkUFVc|wnA')>K^ zJ8 XdhD0*b:ąlYREdc r2eR]}x ꓪ˅Nbd]EEu2tUr&kK5%:|]lD;>䪌!-]GJzit4)a\"C{_䨞KntT Xr;9G3/"#6X5e7Tɨ2d]ed_3l5ŠZY]OTX򸲿a¢/o$kT42'ܧhH:}~NiikƿixMc@û^̬ 8;J5-=:ա|0);nt _ T.J'z]eK@#/nz}I@+YPIf#Wxcd) 1\l?=/ 5fnASi1w.I[i*V6\ ,< |_o;u?R&XHXZp) wI I\ qkHZ`TIp\b@`~Տλ~6?Fj|7i粜717況]RpE rJC/#y׈qjJlU!n\)۶%X]tk#Մe#N/V:w È8%g6eu&KK h㞦<$OR5KNj_Mv;_SU=EMS|4pg0!9tr$s q~"663KW0{@#uȮSÓ(eȰ hJjgɨ LEl:77U# aS5S 8̀e76}CƵ/[. !kgnfPdF]xB?r5,kOFiͲM:p|[F-&-A|/"N\yM8&A+#bT4uJf1 Op)W%6uT ʪ۷׷?%dѴqiZtJZ/.Y5%i=7atbG3?,]\-wD\W=)كl2 Ÿԍ_[Rl&rcd%,nܒ 3wn6Td%{k}UWN ])]Sv1gh^ݵF9A3|C=^)-$H'2Jٛ\,|10H${fr}t^OV6i:4s&-tTZPC__UW$ +1_ERdMl18lN\}Z?h;o&װ"{{>9ȁp?[hfva< uZ h2Clk? 0^3%l/nE $2xfY! 8G jz,CnOEQOYW޺d.nSckWTR| }5LkIЉ5ak;Vi\8-7Yh7@趼p/uVEݐODwurZ,Xofc+OQ:F+rwe]TlDȀF#حwb3,sR> sBIݼ[ń^Ђ;+"%UTm!&+>HւVs tm1P?k(_k.̰ {3K(7m1;!?/a{Nnzh⍌{s /6`XWWm5+i/dh/䳜'KYc4* #;\INZQp9E1w scbK X ql. -8JN[/]bto{(j bj Akau!_VYVk79ENvZ%)jcfff}{.=?Sbh0!tsV$SU!/.5=mkeRf7,\ZOIq'` NؤҾ15} ,uUz\*"ayCQ,n'0|eŮ s+`4plst#kş.pb\{Gݴ ٱ ]fS<!ēON A`]ڛQZ@_UOa\DxeTQ4G =灭5%D,2b5B+me°>@X猀^3[uvĔN1Q4$!#n񱋜\%pCڿ#8|gY~tmvW? 8'ӵ9] *&6'R ~+wvx0ʺ([G[J%v>VG-hE\Ӳ.e{Qqx .0MF{q gH1Z|[wSM_Y;Y)i61$d6$j=ry?g׌cI !cuҽ`vaٗkCU&1W=MD,;mE;_8KYlP.ek.v_(+8h]/j|p?M`\IF۾sf8mZf}hSg[)sInE )-\ l=Kk)䂞*3:ft["w ӘceQOqvzۄ? Ř|-v`hfqԍ;;~03ۏ?xc8 3h.xNm^?G&pςTsQB:Xpy/bKC\6_.(=o2*>&b,=w< h'$ń^nAak[pnL탃X5M ,c͉ZPnz)#aNݻ$ K[ِe+.\z h)q7pWES-5338<^4x-J;^*O7u61nd,Fe%i8Xe,WGK076 aSֻQK!ks-q_{G]qI.He*))uxK 'oߏp ,*)M5 u?wusԺF9v~:'[xNEU9qoy{伱 پU{=?ԡCO!p[ؒsf6_141]1Ӳw=Ms[u$9o_eyBL9Z:--jD -WTtc/yNߪFBI*qJ,HYR鯪ZKUWS6BWC-_axV3Tj8Ӽ]nnPMn?%ϭT!Vi qkMw]׋6iI-j88rJXrYILr lU3)tL ksH";c\PdܴHR%r3تv-Ћ,5KKE +,-9ι HچE4'&2:7GU 't$wO]S@.hPyL5h>9*BSk[E\ot,56H}rUIyaʶȓ^wk[gq>#zZIX+wEwF tX DԴsIӺ̝1R  ^ĺhiٰTkٽ ;pN4 aW3pc=a1vV.Yla\°pwc4J&U)A xphtctNjE?fLܙ^ط_gK(Fk rm:7xxHðFI$Ƒ=d.ipi2텈\Y%sI>В,na&7U3e^ߛjNfZ꩏3X\Ge3 HA)ZDft?0Q 92V;{]d0[kƶ UUlkh5nzf#gFZ @ul3^-[쨺ѭ ^fk6 U\11m44?eCo\p8@FSW|;6-DHķc$XNmFdc?X ;߇8Ee6B[J2^<8:i ^C; qW6ETčBi ]Htv#VF:f19g-$XEq4ԕ9#si/}ښ6vh ƓI[2隬x%l4LZ}+XK\Y:{kbwlH"rəTЊh(qԹnMC;%`BK]kUV2^Mukʱ| -h9#cM*LaT2N﵀"Vc\^Ίj|! #ע Hl )<_tG*zehudžߖRuDl`!i vTji#@sgoo$֗ٳAUeֆ8pOnV皶8d# Ɉ˺ݿEȪs2/CQuf6ǭKsffES9j&kCXsi.#ym5EE}\?Y_III$L&`NVspsG]WTWqL2 c4U5 Z]8V LJ ~ 5յㅂ4[N!8' WMIf֬%+3Xt"bsW?M1.e&i&.t]hPo9_1D7 Kncq?.ekdX=wz[tvVVepɡG(ynHizgϭoUuKANGn so˥TeBFSdX&5E*KZ[9:`H.utD",]V-J:1Fxbr՛üFMw%y+;-ihq@.1gӴ؎R9kq p.Ĵش2D)yKxN7sH5Ý߃\3)h4DK@~kmlY.^/K]U0D彖dCnWϋCZ7LK\mqj $F߷ \mU26ccsY`曁{*oz[P}UN 6'uZ7H 9fc[Jm!sۖZǐ5(p`-** r2>6ٽ_Ix-c7*&vl\#^'JcLu$3'eLC68 y/i"dl-@0EoyqPRp/2F3nm]Gy~I഼%հM]@imqkXu ӎQJiݘഴ AxfX$kv6v=|x h曹~e8ˇ5/5 E6#0a OaXU+")_^%l/7|UYH0L[~)cX\8 -w#٥}';*ex `ɚ8,fXsV*1  O޺IA^p[-σ;)ðZɸ>WUB4)& 7mG!A 0mT ꈘƋX 8.+\0! C!\u.luXWlJ-tx3#iX|m!=5ƕjh۝I&][Nx0(q\fm$rVLgv()5%7zI{\@PI$6|-vuWbRɤLk-6Ql{Mm5IR7+\6ɦU' gu,9ZyTFZC&ֲm.k]}4wgzZ[8T<1Wrpf+fqk_Ky, `L>Xu}4k+vnm^o \nl|"6]Sث5ѽ|n`KsI44KUq_ LBOs{-B2>#s1_kSRIM^W73Aq訜2 Ĥ6A}*kȤH p<j؝4Q\3NҶ@dm3F*s;0׵U#$y;Hl]wběF(VNfǖ]rV2"ŀ;f8؞T9s-t 9\ z,L9Fɇ7 n)V_I{+ ˟`KG㪩OrDHh.O~Rr]UVQEG$r4oSaVv;1;SωKq9srQܩ=]UeD&^BZr.jt| $>七U+i0xDϫ̮Mn~j"#uU&8\]"[(% k`ט HSJE7*b !hKCWq)8"Q#l`ysru7>km4B>⩏ݦl1WXcqLK,nZu9iC?n9t#I lő_ "sW1?dy*TMM |2I?}995w>f8 jrIlҳ/Lt'rOJ:M%nQquиu<'8| ttߕ*%{ͫpq|㦫JOUIr1V9jehދ?T1e1=J~3˸k`W߱hvrOEk~82OVI6'@̀epKNȚz.pnaeTw l{sPˣ0 .o$; 31MYO,~7`|55Ę3DjjMl-%綆rj'1t쉤飣anq 3jan-/|#Pmuc1'[5/`20IlMa\e`f/]T.Hg7k=IN5MK^O%D@1X-)i&e|L3t.uZ:1Q%Rb-k=|xƓpn%Uc M1d,m.&ynt\;.qzzYp9Ckc3tM 5٬TyHlEǕ+8Sl]w|Q.Ask&]ǯZ;g"jƶ`sǏ$yЁM1zM_%#Ncpц|HVUSM9.lCK&6иOU,yd-ͼ@ѭk+{BǰȌQb/8{q~F6.lci{\$Yӡ !TD;2c.W opA輙ݻ?*{3{Ȁa_ZWe @ջˡG<3[za=pa;4|W輂q }=-nv<5ҀlަQeܻIq 7 WOaؼ7Qa%٧鰾+qeΉ_V?=FP86.T9=[wZZ/+5?G٦CsT!Gd|I'x\ 붫Y|̦4gB\Jyb^}5j4ٰUNi6,~hqc9( ,lDWƎ)-$ewk\w%dYO]IWP5n'KA4 ,rC[vkyi{s\: ]Ȱ^ʌ64k/c#k#c/{r/08AO^ɩ%j0Weͮjhhu#PN# _N*bV ] Cﭤ27:xvyDbEn1]SJLK=p<uﳷWaԑ35&ה#ϕְ$xpG+jۜSb!ckyUsU=̆ k!og9wTPCQ _o9ָM-=1uv\cۺ&(:.x/0mO鲍n;%{ ;_[fl=x p&iTK X=x԰6y{sHv܅<>&G ŷ{GfNoUJm9*Gg_jMay8yy[\y|_]įe8 'o!7kwL8v_V6(>Q[<$TvH_ Z)İي~i8=118eWԞ.τ`SıMf#E$5!RB u/V_u[>'8 Ux,6kt `e`6 m5N8>˝KTq8+׺Դ҃ -]5ƺ^awnGn.8״SnY&Y[?Kg6 즻p7 ua}b:9k!T#b&fy@]hFOONiYAM^$39d nZ\/95}ư*)*#(zEb\qĔtw >ЛP;+O;y$ ^tЅSŸ76xVt:oq[Us|Ϋp8osX]\Qq!H֌Powlz_$id0 c[L?ہ: sYvE-s\'hs2U0: eQQ'ct+7'"|x)ήk4m,s9НUSq Yi'3lVCۇ:L;\W 7Zqo%䟊兝c3}~!(pPq~﹜ť$j9^iŸ 7pz(5uxa"k ͭZ(1Zt1U28x`cp}仮9jL~dy4;s PN]t ,4cGa]ø/pL,c,4Lq X_]^Wvo}cK-.%^H⦊yZy ki|sSgmU⽊zGLJ6wjk_Hܓep5AXR Vw 69CD4\5nLX[ى˕Z9peoUdMQ#|/-6pЋ~(aVE&s!>UaA:zwEwH| w@BbMTF\ҿhRzpjOkԵ7fߒ%\bSRHi²+=t}/~{,f^=±<=|̦)+8؀A/z}?S.08^%{B7[?zI|e=Wͻ[.H>)qH\x}]aMW.eYnhj@kѢ<$4 he7nW\[Kǰp-uTԴϙOq-knZ"Qq`JYR+^tC]p5#2b-u\YqaOqBn]3E41K *fE%U8y,tfcm.Z,a;VjH\v'uۻ+8`#p œ;WCGW){ˉ[=07G<.s=GX/3R/ a\#CkroG9FnrU$2{aA7|;6\4YZB.EzpXǝC7PO cv@xU93b枿t$(մ4Ź2ƈF\6q%[fF E-m r[LâFqtդ[I &THAؑs3!=LnߘZQeR:rٯp12?yfV፿5kd 8^:ɛ#f? !>wA˿tyEgXZ5HIKwDt_T2FysFW@/Umll꫷2>H IfkZbGp'lc-Tʊcd{m6s [bs}2z61֒3q-?Řq\Qw oq#ct.下XZ}FRᕓ4.oiEN8? 'w7'Ӛm;C{yP2^ S {٘iq)N#qP#@V-SivUZgGUk{FP?UFZIpc[+itgW6d%[4h۝Ջ2mi4 ;uHEZ'%S[2mGS$KFؐ V}Tx :50[̫MPFmɷԪP86FslѸ3GUmuLQ+ВHLa .TI>24~DCsYq;t]fҸA>k]afa! rR^ӪpKk>NEVԾ!.h7r*B g+Ad 6i I8&͜ČǻSZF4 nwYhdĮ.9S q7*e_CR}@J~?`[A+#o\E 3xI+GZ]p *O*r6\i<9svODLI *5xvcmR&l&h\sfχC)7ɼ,kn#NVUL9Xnnܬrlf m֍/䩙r+rZlV.%Oq4E&ϘUC$ F-S4yi'Ix4؟uG7[ԕ؜5R:EV\^7P}j/ Cs;1%h9I3?ACN詧'gOqk"ؒ<6*69sq찆6/KlZH͌=l ֿVEjP˙ I⊲>͟brJ젞ZLgmld,%6ZۡZ~rbT? j-2h+>^evL2N%W ZF asr4X6٘u3֧}V#{渴3>iRNi2)2Zٙ{6/_U~;wl-cSѲ*x7祼c?L#ĩɳ%u<M-# {O`$\1 4hP|DRX'2W_]tq֞9I]U;-^/WUMZz ^S=ҹp{[f8ۄ0Zy1 (r`5rCC]CPi=es[rlI'8x7HnZ/r ƿt~4#fһ, g_KaKη 49 <Քblq=++p\f 詡a ?x,Cf}7 EbC{3Fj^t?0v0Tw龋B١XnJ,൤|%54貸-/>iI~eW`CM.f- nB[m49׌\Fֿ#n!%b3~턵W=dAAK;(-(){hdS`ZgҸf9i뺷g$U9ox#j`QMe>Yze>./F5tdncW,5; n)"9F>~'S:9,@vO~[,Bhs䑦;Et;9l:Y#h :@;Z닓U 8wlxX0{j'<ڇ0_]Ɔ׿ǗLQsװA&[9@..W,- Q䨋NI H'Lbǖ=.`BHs$6+W$א)vpjHt6qJr[*7O5M##X"*0|«?t6(IJ e e=CS~餒ӲdMJ‹on ]SF8|ױ.^iBji̎4]7bnhKfaV_q^<~l-Y #-ڏ'*m(~l/vb4]88nWZ<> v^9FXHc% 18睯֗:+*؁1Kg-권3 M_btfmD,Rp:\opo굺 ڗs?,`mt.-KvUic qs^جQkQ6㒎9xl{e`ve`C~lF9Xї;[;)vok'v/I;5B*y!]Ͱ [W`DT8[mX[o5s:S_^I%>G55_bqGB*R)% qIɊ4LȬ|ŷ7{t՝N _I,e"ǘ+80z|<3ccJHƸ1z [-5T;\Msun XnGN^ ]{N|lW0:s|ǺS8^αhUFyW.曂lrztYWp8W$U3Is0nr쵷swMH؞XA<1Øa9R.Gc(ԍO{"h/!5NȦm`>nHL-\SKXm_)6}V49{0JL"Ldf;B=kCGsӪhkp$U@k ODv2I[֪YAGLt7gڝU+?4XT<`Qr]5RfT"G" 6׿?Ua+'sH$] EeU4T3rV6e3ѕbuR_eh:aǙT )2[NJ!y["룋_ҒE0ZַͣoT)3I6챏?F0~eN'b ^7܊ ̘ldlq,0QTCt{;A6-[a:AT(iOU,< |f6W6tq+nG*u҈;NѰkhlE|rKu_z2WPג3`_W\)2FnYPA&gH\/e9\%Ez*s9ʣl"FL׽llh%h+GDZFLtь_1̏F9᯿MM9/\&vNmžTZH4D=TCd:$wʣ-mґ,ފDj"-r:'%isM=A[v=ńļA_G- +f2 xߙ7&@ƑSe Zwa/ͽ٣~k0`vgh!{+ ^Ρ誱OdfW25̎ֈYO^* E&s n==WHsw{4 |o&\r|{[>#"J,9fQjF:_"ngE+%}`&GEڧ5.sC\ ־ҲL@26Oǝ}&~x>]Lʧll:ob/`@&6^;_LWvÕ9"|0Ŷqwˍ)ij𪘯M)#/oF;ZW폍8Ī=m+)yhryN5 +\8snI;z!y/rTe*}o$[Rt䝐D䝼 ^ɠ -.4䗲D䝼t[E HѲZl9%tλ !"Er[l };+\\梴潀$Ia; GF؂EYP*% =[.NR ;mnYۢA*؎^ }Psx"XFZ-$ʷ1wA$0hW2n =)hu#TԔ&=H\Ȫ̉ir\$ ݦv|/%~ Ḥnu>[ %k,CAlaFYc9yU[t;S&xEyC06d׵c۸5`kҿ{եd4ܥ(qjwבnH&ꢂ>1vf+XQ%Us7l}㉽B?ߵ-/`dN~piYZNj\gX^ֆiVGkc/tn)-^\ H6bsD,,LKFˠG]Ɔ(Ys#ѽo _b׳HƧ\lG(&m}8s\5iM4R脭v3Y]E cuU1"ݖCp$`7u`R}4 МYBoc!.k#UtD@or.74)|痧53yp If`oq˕q7R1g"*%;mouDse. \RОsQl\(Rx9{4DomɲcVC,)"F(<"PQ#K6eM}F4nXO#~sn;fgڻ`4!Qy,Ը0UPFnm`cy;:Ƽ3;]-z*`컁:y/YQ܈pݢViahpucUY7)) \5ЌE{+UTId٬4(Α/q9$SiHIֿN}d_%Md%;\ےMf\mbC3g#smT駖[uQl~n: Fjw>Ht\_EY )e@$ 4434 mM*2xwZL(-2ϡ^ޣBI ex i6lleˮӒ) jw+\ZTJ7R|{n%sCSoUhFmTp`l_9741UPO-o}iàgB2:&ѝsZ-adsÝ쪞g0*?#FcmDmn掠i^|)tA4ۖ({,4L"g9\Zʏv{_;m7cl9};G7)>FFNQUw=kmPI-޵ܷ#TK*ϱ4WY^2FĵQ1mv7)sowW^E7E$nkUntj!pkZK%LIۧK9/>Twܜ*4B$8Z($>YַE`Zs4LW[U;9^C2Ьcj˴XrMq DkDȨ^K,[j ]/.5u,0 p7'C3y HF O[}(x78ȽF[lȉIyT{؏sV7mUӽц%Tl~oVIt,tF >o%fa'>\R*"o$Mf+`#.=#wih^Fr[qpf.$ԫc *i8Vʭu&!&V9 ܺU({M|8 i!=@cYr|GU3tvMi\:PnnV* P<ÔDo^CsySMÀ"p5\sٚwaP{lKI7F*_'F na;`|?_wQAO,lZB*f{p3 dm.hӝK U?%@ /|n:ج]i#u]Y(D{~]V ~mN'B-Xn'eydwsڒ XL*($qEwe&64ːX8ŰoL$)W4 <"?LGyEF5t^~.b8Xxcbf[)@ֶIW?m5M^,'ijZMsI˶h=duv9#6l1w8|hAr{99'&#U%'}C_`My*Hw ؋WM3O!q.Tui{@oRS1`k⍀א)*1S0"hü Yb4Ԭk#=\}u];"쾐FVHus_E%,Xع?|#pU1iE{!tѹC[ni_$1D#79'XWqȮig >lvRQU$ eX/WUr e}-}W6J-2QC(w% Wn I+rܝL>'Frѽ|#G7"5q]vD"f 6i*9Iw-q,;,ZuP|SƱvcO[_I+#qofxiI-#N_v|3hѾbg׸R蛔3$^m:ҲP1ol˷VjɧqtGus^-j1]"RD<7KU!9dF@Q2!N)UvTƆm-;\\ie-d3em1nfu\A_P|-'C ,&Ԩ5(X[ҳtCuG~@5L(|TؓE.Y:1c{%vP4:,8`XkUX-іi2[u!qJFxְ5=6> #LBsKu7ӵ-p-jF_?/OW/}U] X_5lo`> (]!̖Ri8hx#0fbR3Ua2F/s6y\7-d=rV1xryVݭ7q- kiO>#K<Gie9w+\\ u-|~ǻ!;D\zG44yxlI_=z.wLWSPq KSx'm5Ͻrٚo]`9Xk/`eH#1s5 rhJl04O+d םga.0jKKRcەc,lwt,`A؂>ʬ3 WX$qa2Mԑ-:XZQS ^l6.WEnfViA ^ZTѾB2 *B$Va6ͥE^E73 ik9gs?;oEO#f@i|7qoV.uIV[D.7#˒{CDo6䭝S#/.擽Kud|SF&uo;"36H@=*L\!>j-$Z"6ej롊g(Y8ˎXh'h,Nz2V2F5-?Rm|̗eOW[K)hcCFsd6&Wh\}Ube,FX+8Z\>mOoF[ZqXXȆM q uDM3F%n'%A+"Rf{--iLL`.בʛk Xk譢s[Onh&hk˳s`rzTPg1gUAh:8 ?3z8k*^Zd>V:̠?06)8ek0\bmE.KI_;_GHIoVF9Z _ZlirGCD z-⛇#zppmM4?{1:L̜؝meSBrs4dy{U|2R#`OE f`BFi}HTw^6z26aFivh`c=4T(٠}涸]E3&l Qۏ"n~ks\V:Zw0KZ e0g*.q;#o3 w!es-tNjt,l:Sym M,L}= s24;*ZG`C>{6W@'m|F psͲr-Ɨ豘A>F/>fw 9 *^?!WHNqwG |4,;a}0v4.u~üaUkĒDKlG\ #mxZwV6C,>f2@Z7.Noc#R׌CVIOA#2 |M\s/cU.<જKİ|!|Q$$JI2iZ{Z奒);ַ^wWi㝣N8I ە6 MϚE-$UZ1+c{s&p.饖B&)zbH%kvh9EHJȲE2%d, %dh"5'd5'd+'d(&d sG4Y+!FP"@暍e+"@@[)RDIXlle Thd ֺp!mOUŸx[_VUn2n[MŖ[i)K!{d.pױ|쓒\)J,S8-t7 DTJܽ\CY{tn-,c_cFU)**塷7.:Vܞ G+,qq/:^CPj`L+K,Fm̭!ErTr1۝"\Hw fM\%B;eQIs!myC} q5#^dyEk{+3 v'_+_gJ\ӒߢrT1k]f ~qɤl͚qJ<) P)7htPo\GhۻOR-m,Cke(Mo.6\n䓹yp\`asd4|ѷpy~c |e7mԍ+͒=3DiSQ4화Ș$-cCo訒_p '{YRC%;ޥsK!c55.wKc;5(-%DQ eڴLޗE2:Z6iϱ]j䦨95Q <=b:5n@Av5l|/a淘VT/Ͼxp{ٖZ0ݜq64$kQԾԇ0 -P(6蓚C7 |V ANxeo)pt!sYT[0!ܽ 9^+jY_lm6A&6@`.A1;$WS=ݦxkM3 ܺؗl%#Acp /f VNZ4Hfu'PwNh:aL-ye 锑v+GВ,@mmź)"v{ڑԩl_(8_ &wg w;Zre+* cS{kt1O,$ @r/$i0\)C[3(Jy'i<7(nܫhT"e"[H5MDAG5njNR#JJY2t%+ٰi^cuh!ɘI2gmhome\u*TH$l/h:kf:~g_B˩wZ* J]lG4^@qЩwр4 ϱ۩>Bc9Yp=lIicr5 PkJ7f${XvsZBFy34NY^w$mx6>V[+xK/vtZkQ ދ1A|74Y.|u VZg>6VK\kk_e<XN-D_JqvFN6#Vl蓏S~,x\r>@]ϢVpSYtX\j*&x(9vi# [+lz , aݞq[_? 1eeeDRV=9ihc6mAww췳 fN=p0I޹сb9s_A*[waG 6,"y$ 'OKyvqL^47}sTT\kwY-}4Ph&0bL{s37ߝ'8XՁ>h#YqRd.|H7N@m{tV]ni+'W;\>8y6Qp>u 0!k|0V0!Kx KHSpLŤnfp0I%W`:^l:5/xN79v16-nIdͦEz#a8 egh2aN m fO${5#0AyC78H3ᔝrܒ\{Ÿ},S{ቮllhXXAafӅnb7sNcֵrҽԳ+y_$/{\8ܒyKMY<3ǐ{TlY佝d"ȲPE EiY d$FM+"AA9[D##.v.q~C'p]K_m̓pS3x'kZ8dpj%\暌w`-W%Z(*fk5yd.!4e]X9$TMӶhۼ:[K;Q:7q|To/p4ډFW8 tUcS᱆[޻yhuإ^'1w%ί7ʵۚXx""/hhhmʅiv) ȷ=]K\ t.a?d hK|D_t{&$|z^6;3GSN 24k 9l((U -v>|#U+ՙ3?w!LF5O0uzK|A_E`T;03|THrC^NT;Aq=XԜ7bTT`7ܴh9!rO\Z& im .$HԀvaq+N8z<6(8쁢w 7 [;Db,qt_GLxF@mmX.-1C)cc荣~QBz/%>/V(D%qtN蛌_mY:[ +K\ R,kf. ]$s9l. ng+d\6G6H]M\0M#`'9ǟ}aL&7%Tb-#lUAEI1q7xq#Psa8N!͇LE6zI"!}v\[mj»İȄ4uMkˋęi>q)X-lsMŏZ쁦1';MUuvv{mؐ< e!LѮPU8įV~K9A)t#a?E<>x}"Xjr3R|6Z\#8 {{^Kf:1dj h/{B F<]dYGUNsGm7j褋ɔܷ6LTHqff u#Iw;r:޶w; +#m}ӏ)ɜrcP(٦evhgc5ncmg-s*h&i5ʳ,cr,GPK ,xsbc2nVCSPRc9ǭ+1@KI{FeZ:w\s/zR㑙n?lx&r 3JzO+;#L\ }WEYN\[u #^An=%?C;mDrl>isC#\Uy2P%0 Dtjʳ.tٜ[54xNJam/qE\1a5Ul?ݮc2z GV2lA$`t-z,x_Sdnls-uWwIz9a#oiĪJ*V>ascpPuXj%# Z7lwO]+-DtI1vR.=Jb#ocWႤrVsΛ'u0 814=cNQ,ϒpo}Eq/2^,~WYA%IX, ReH,q#nńŞ,7I}%vf0Ɓ儒 hH-o|&*(W-H'6BIhmɣInr"ƵMcp2h[w-"S5LCr~4E@v4\BY&$g1\G.KuY*#x3/GHb ÁnkEU8h:[!vpmYJ\9̌7庻.lHtK dc84~B*(/6&j^Ѡ'ku[%u,5}3$]UBHHډܬ?+j%gD!qU]Ct}'aFOTB[l .;4o$Em;#s VӾ7RFʝQuWuAO䰽d5!6U#_{{vpR B$rTw&,2HnqR}4ϑ0+:hƙ65ϒGx"<.Jv޻gO5s-'x^^66춇`0Ct[uuoU-i"xiD)GC#ZusYӠUcc,ěK0|T28A7* p%'^VM0{CνSgEun3\_fh7f,wpvM̼hCZl=}qlslqRma[ѱ{OS8K (f-2Vg$ZNId}Ya[K?y!$k4f$ a#رSUKIe0&kH]Ett|#+'`g2-:z)A#X"Z㣼VKho#$ʛ k: 1Eðb.hGVxc\t6Q_>ݛ %]D35k1423BOtL-k*:=,6g14O9}@I8ŁYg%Avңt`\ ov?V_eguGý6s$*44Y͕`m<=tY 5 WQ1\-I#%'( amߕ+&Fm˽bb/p?R8q)}UDqWGaitRRJadm $7'Kic,صk*>W=q77*ka%l }H+>xȞwf]O*xl#˘^\\i XcGE&@-ԭY_5BG+tTq+n3skXVD8hmS#1O»8'$~ܫp:+Q!PT_#ϙ+"NUey$t8y'̨NhI}Tx>I7cy+AL K/<͐ 6Qa~1uKВ @t%FaUA8Z#{+MঐhZ\mq#Md>RC^@.9E*u5OO,eej晑$F]μnIXgG}8E> G|SӸ[3"VE흷m^b9 ak`ׂEy[v%G{6(jK8B-f},$ ap%6my %JȲW?JAItbkțvJםwrr `#k`\mP$# B i!@ &sB*t:f4טQeRT^¬6T!X侉@y^ T8;$JOQ!VE9ޞ|KyRḛ8g}dXc mhl@9@6aܭӇ8`tuX4Nf4st#]:/`B91**8 "ku]soCcå3~]ô^{ZsۈCbnufVǕѱhI6+8 >,Cq8$5QOT50(ӟx}Wſ۳iy>#|[Քк2 ZHn˥vWSSRbϤG=ԒklwMTSB=8FTq`L11,=H\sПВJwiǟ:\(XY8ia{͕̐}y {2Z2-~ li(lI}t]EނLN&GsQHmI0U_<5FZI$iSK][#CGE! /{N[š=,Ys;45H++9- Jj8N%9_&kl:X56KoEK9df;_U錨ʨH}]sB9 !Y#sM.ii&W HE@B4(JM$fa椶REΚXATc,sL5BQTKsƾ \?ˇP䚧{n \\>MiǸhⅎ#q9rUΊ&;s I?jyR;6vdp 7k-NkWS$\|#l}9)J[2R5׶ZXd_z,t]3 lE6lL\bWLJ9Ar]? trge.qk|u cֽ6Yg;0VRL;؄n|Xy\8u#*?-q&4_=+z:F*+3w*Mˉpt̫8pZvvcwnyY.IkƸyuY 5(%ª6[5IG<[HB'Y͕,z걐HwKTvKjIt-C: &mAh35;nVXafV7e)ޙPKix0*_+ei&s.iEop۫!e z+ ROGYC Zڏ<:"\F\.hjOff Fd{.s^MSO5m_KPXbV0rt`}Juuu4qPyjҹ46!8[EB) lڈIpwOe1l/WТ:qM-iqØyR}a,NR}YOF_3NR> !wXt nu\K;Ou3au))Dq͡(vz~K9Kb4<\+#K}=$UH3-1@9*tJecH60xKZѥLGZ_l\k_@BtR$|[,_!vsab0k>K_bNC5o5 0\%fE+X ]:%Y>NܟTSG8Ũ,Y؝涎{(4seϙeZAnxl f"a`jx(eZf5rY80YC{]ETa1|AY+dg`6'sZ>ƻ0X]TױF/}BXѥ,.&>mNb -^WXNw{ :S1m|!#|JL(s#\yۚw,kgo-SΗep fc%K]C3L&<:%$R L%u؏Uk% |D5εl޷]ݜrTb^Ay'WJF nfk _#q/BZ<"i(ckJ5ca˒O[4j(׵9/:u}EUWR1 ղ}Ϳc.s:`:bka\s8-p]}`xEӱղI!bv<,5f18#cganKUiqVSaSW+2Hyp5'`O6Y䊞7HH\} 5*N5fQE]mM,#BǷVm' /,'ĕDT52,r6hEɢ$rCZcE>+UKi dCMՌڙ`~#,-'#NV7̟%j}Tcj2;]E{.jau,qvѫy[+#h?+,/@c$C[OUKMOLiC 5P6kU0{)iqwE"&V1gQNL,h.?ExZO!m~⎦(|nsxEWI`i`kK qhG%I+cػ}z07U2vc>Ļe(iG-Qh~cSdv;cl&h,9AvV5-vJ9XcUQ% Q..:Rܧ˝alKZHXJZ,ZyhƏ ƊOZk4&ʑVQq 359Ѱ:ZG{U`3aQr4"VGߴ@C\gm[U8fu [, ރ˸U""t)$-r]VnZ~am INi 0Xx׺<X籌q"A{)D'oq%6JىeԝM #`5Z:QJIe@Ϣ%x6{[tdRECrh{A5r =Wj\ہY9iŗa^UEBt{5:hs24+c|6ĎZ ⚖ԺF:4jfv/+ѓ ӑ+I3AٍT%O{>)D.IAEABQԛ[J)VJ xu *bTqOdo]A20Ā:?ea6M4׃|7q͋k"hqJƷkW7] ЋrmU6FM6v?B̠7_*;ʇ15XW#75lH5BM$H&(dĨQ{z 2)K)fRB"c4ݕa謐Ekw`WLݦȲ,ZCH +T+ewsy)7|-ӺJg9Ywy\^lPy_B@;!r G4rG4#9!ВlP9 A9!В .hB#P9$h,psIk4Xʸۓ$E !oUtkX5: vp#MQKRZI,vxk- 1HyJnѵ͔?[ra.1h9%-=#MSMHT9}C@^Bȟ1h٫*^Z5VUbSO,2D2/%s˥:^EZgDB]2WNu\<008gn[b)[4s_p?8 i گqk2JvkmVA!|EvGFfwUNمϾ l%PvV")euc=뭆|41 tM ؼhKƷϙ4K(l3&D܌p-lk`51F >&V8E.ًIPV m@ET sIyU[f8=CSZg$ -<h}E3eܗ+ܚg;,C-'ٛPtni6U# Z.ѭQ- .E3h_%33>VO ML h1 ;*ؕ6#?RV%/q~SqGG;08,F-<3=`gpmE8k^ՋI%4m##/ս(c-mVUkdc< Y{8RI8Xela{l]f>'ې_hܑe^lRzq,%s8B%n 0ژ\\@(&n?56Cx^+n;t5Qcth#` LfwMېQVrOkcTU; _TYh I^H@@Q!M$ 4]S)_t:#hP(!isB! !!]Pqʱg-t . Nw-\:xy6Ȋ ˣa]>fe8}u KB]pihElll(oW'Me\H] ӑ5_ixf#M$&:IXMwKl8#]>7#]::F;+֧c42AR6<\R49}X#ck#dL" }@e.Q.%V٢IKJJ=)%lTTGBݵ3"{ƣZMk["]%mcE9vy~/WO5}tt52ɣ<İjx"l%8.&B *fe$9mqgr%1љ;Ƌ/ylH64kgj.6g$fEӸ9l`9,k?I %dT=K'&K+s\I xuԥ${(Qa%t6^2idXWF?d GG͡vVCע ;! gY*؜ؘyCP ÷G՜Ac) p^PYhozgIQ 2\I%ۆ;,nv9=J!+dZ-~{U↢ObyӚ3EV08txk6p#%@h5 (x\D\ #*u8o3c}m3eJFHeƞ[tYAFA;/dk66 1OLC׸VUO cc4 8Ļ U Vn$z*hp:lVX+Ma8d$6ؙ[9$0G^~Pdr k8H+Z0rEto=ń@ af݆;.3w.s]YF^˝F6INg,eh[avm(7,nΛASRC@uhk'גĿcrKANUi'k{]K4[i*HX$|C#Nx},6/&!r4E>i8 }yeTr> a[FE=)ϵ] ֩0]biDtý{[Ͻuv\ctQ<{yXTy2aMh03 c m=:qj>-3*rZƸs.U;,:'WCP2J}vq+;kUH8] QM| kiiVvikn- GDMӸň#}Eia±W5*"k_)~b39+)qurSG!ko\-uedhQ8 RU-%$f27(tn]zV8q>0cx-vRr`A[6(59i`A>*خ(0LBb3Z.PK&y(4NF%x]<[yl=EHg=/0ZU,sy[u) 4 x3Ď؞E11d};nsfe%58UG z/ ,5X*/tDf^UEO+_n`lFcӡZ5t5o}p[=W2r<Ɠ 9"MI/ncJ)je},wyg9rXno^Rp~Ίy=MLW:"H{ mԞVQf%4i3uápK|Ep>aՏ|ΎM#[l3ʵ44R:?GC95ۈnn=v-RGS$4l3=#gwbνz,}f :7G-o'ֵ K-r6&snwe{Ze;K%f݀ԺL Cio%Y],G3\/m]Hp0|x^K-C c5:i:,g8o6Y5 1X.0̦oˬz[6 χc%s`8_i6]tY4tӸk>y܏WCGJ "n[Ȓopۈ/6ɮ]=N[%|\ևinw%[׾*Q<7m<:)YQLn"Z3Gh{99tc`{mK85\1|:TĬä7Ff[(9Z&ٔjHYn-d0\a~~jSZEΊİ,{Ӡ#^bӾhhNRTH;yعe3֙s#h,itzXP18=UolOkm<.ڶb赑͒ŇB7F)dt6;JE3_5TvQtd5S/ER1a7*$n7]UԳCNKqkwwĺX7_w8n[ֆ|sZwDIec&y>WX}'#ψ^prQFz5ht\&,a/&ܮtqQUG0M60F䍾_&\=m~+RzEUs{Y$gc|KlQυIw|1 VⒾy_$.!مeqe⚹i0?p >Azx7i?ɔr(hYlPʣ|w7-\fxSiwᑑ-rrsmw8~p2"K^S}M+gn8޵T w }?_W\3)C]CR@2FXi_D%lml}fxp<͸6P8QLQ=krܤ3upN9&39eط]%f(&LJٲؾUN a%A29Ů ^#M"8,tqkJnfYcX,}} [ޜϚlΞ>봓r:U)3؃nS_Z5c\9K1~`c%FXNYgﭛR5k܇g啭9F[C9ܬ=K{ Y},nH͟)'sMГ;ۗVAP/0C6#Z@\#v^ޚعx`| s3[`l]keKTy 41Ɛ;bxÜߕ,PC}H[q$ivZEˋH$bH)4h|'W9질#iS {{IE,M/s!ZgULۮa <ҼVmM eGtidp*.&HٻA.Wi pya6/gt`sӠ^rq$u^Do689kZ,^8j|LBnBQjY8sop,)Gva'F9Lx.6wfw3@NY,͸-=Oݭk{8ODibXE<䎛4Ɗ*tͮ6Y1!iKjY;gtE_a`{H<: X0i-N-jG+f06k{..1}crF{njtG3l.ufY9--]_G+\[ieiW䂡e5ahvKm,47x:U5OB]Ui;2߫+6 NsA9Netl佞:tV8W_tnt-%pHЯ)t_&AC6/Uַ'c| ϣo$N;l(L׶YK$wf#S2:v,^s=Ʊ F2Ǐ|lk9ltnz~~Fn4Y44Zܣ6'y'CbR 3"ԓ ]`d/XiqLNLrI%isiEPm9.EF̹R" $akWyhfV H"[EwlmvUH2B!i*T!cBGB,zTc#h@B=ct!P!+&-,u TB'Sѐ~+^ytFH:}muFHݗxSFv]Mb43I\V6鏊-@Eԯ&A3d xcYôF.6o8=8_k3T3W-u|Lh `p]&'QV$ Ԭn%ړֈvbQQ\i.nQkvfyIhMWZ[+h]-cTdt<_?Uln57aTWM+f-knoZQ",>#ɔ4o?5)9%g)w8^g>7l#g-n@vM ^lpa1oQ+(gh^wф]4dyO{FiZ@M{Tɏp؟@?6(&dtV^^wٓ7˱XkDxXCORnMEkيg[ưc{4MגPT>Rk%rky44eښv dm[ayb@spyt[{gϔ0-'DSI8!;PZḩ,%ߚGmW`@[J5kctW0@^ƌ;Gh]TVIQRDja7y%oBFtōzWfMan . d]zz+K|k;n0w6{ q+}w2qLcZ ؗ &zrz3Ѷ GYLiqi DHip,e{x~Ol4\b9]80.sS=Zy#ymi: 4IL #ؾFYV#.*ip(6{&!7UM[t0DFa @?j+ob7?Uߒ7y^ɣ8n :Z:F͝(=r:iu8jE)§/n{$`qW'ӱ_]#/d :C5lğ%ָK;n! vwA0p %@ksxƵ-'O͑% }641$fk%9(AQ;S6FI-'p͋AC8Toid}čm\-gsۑb.U[} Fa{9 韮Ml cwI)kFdlͰ'tWUNh(`$uŶ}OP&<xc(My]ū)94Ic1'IDꪪaXl%3U<1$,Omr:n+cG,'Q$#kP,l.wYzb(+t1ցavnVmEQ䇐äq'OAIJD,y [6*ڪwUǺۘMx9,tC=sUt1sNG/ꭝ5?mULmw7ӪY9-f--ˣ,ʭ UCq0mᒚ΋sA?OuưG!+n1'^OqX/IGCcdZډo| \ .ٟaD{pF/ezc.N+fə F+VӶk6 |S|XNVu GMC9ͧ;HatF2͖akr;Tb9!`v˲[k*Kku^SQG/{Lݐ341. g S1}1s{!wF?vsv_.V9K#M1663MSO3<9d1$tHrpbx^%!l|. j֝m4ؕI9+:|BRi`4wq(x[d.twMG;K._Ea6 kٛjXM@?"F+q\aΊ?"{_P <t!G%S{\a#-qeqKصDfIZ5 6X<,)k{~]&a@<_Fw-:+> W3 .򽧡RdAݲ65L+mx̭/53n|w 4~t#~|s4o}\p3fh6jSYC= fca2Hvăȥ`5ip{Oxk[| ;UU&sG:LqO W;Pʼ2;]G.l v\&VX9`z0^L\kR`v6?ES*jZ ulG[ TUVӑ/9suo ݛ_&/IRֶ(`:7Zeahs]LhbLsnA?076Z^7^` XDN1] ++F쵪9 ;M3-:i"n־'dkA%+Y.0|2(5kL:f! Uħ8!|وn]T`drJ%e~JZe# fh疝,iK` R ԫ2Y!ꐦ1+1K$8&SBH1"{a\f %6Z`/BO/Ee'+fKqEGFZ##WjnO3|<7.P$s_u;6f95[WTcH<8tL 2j ,FCT2y.ʚuA)xlAQd̎sKrN]}/V?tsW/ @NQl]S_K*3CD/:\u(ZCouO*vGi*o4 BtXB>B,zBG= ?t!uET#/A悃.E4tsG:$@H@$ Є tAAB) e!@;!_ThB}P}J H D 7I0@_Vk=ŒRFg6hbl~ ~">;.?hhԫj-Cw "7ZTs dq!#>dđSR9]_%O^>NiFS'XeNtwe:9-Zl GVt]Gx /P]X`:y,m$2(s䔐ֳ)Oըx]Q^55vkJ:,-di{Enk]s5c ;RHk,,I<>!`͘NqzYiCjr80}%,c1KO Kk[vco.sIje6_QY4Aw֗+j(NnO 9.@o[\Zy9tsPQ4-*s ZJLfO+tO&56c7[o eLDQ`nmMi5J-H( G:6k_s>WYv;4e ItvWv%ba΂Y 613aH&]3j-mwYJ9f9hi7V\c4 \<&ɕJqַXU|M d=×bx@dJ[* w1.2*ckekAOF:4NKa+^"7[IAsv EU%Dp6*2$s jO%R2:K9.L;j$f7^u1ϻ3Vyts1 =YZ5ǵ;ݯ8R Mbxaڂ5mxpum#dIHn.t?Rh2S{ liSЦqxNjO4R p^U&Sqkhe߱dasrV?Zk_֌mGPMG 31#?Es6COQ,Riatis>܇4+wx[S.`ݻ8i0j#Y"67sfv\&k6;&M.UJ>"Ģ:pLh ?wsT0|2u53cup'eo ^4hmÆ[+31y+S@Z1mBآ|dy.IыE730s $ʜt0yUFbu&׉_aK rƺqQ^$އ[RQ5ӱ n9,^DԞU$\}m}~&8x$d1 1)[[3%A>L28␻S-,ϔ49䵻4SJ1tfrgl|(YFUko=]DHU rO R^#dE/rw*Ct蠑I.tLq*Q-Ex*5onj/%D4ʍ;ܡдhABA4HBEЏuL2BHGt%B9.!R& >YZkbd: #W,>ڲ {?ה$iخXE[+#kv@|'2#c <5_}qH/FR+[2$6rƸ/T~!80/BƵo/ձ|%\k0ah{- #VVՔ"?׽49+jgm@1wb 7^+ˇ&9'FjVrAw?EELswm.Оy].%`wS^=\IhO*1FʼnSRM dvVRv*hf =gdt"o;fO 0cVqq=W ?q V ,}{,,k5û@L1,Zw5ևrAJ-go|nggY6xuj؇C B|m:Cy]+V-#ivܓoeIqIz'Ni~drLƷ Z=-Ut0AΛPr ï.<g:rѷ5G.B+-pꚩx.0oKsW1J [EMWX&!D8?$lp wqbn!K>Q0^?S4#ЯF6 jIe=Ej)i\_ef#ÕLs"]]K([^|~;׳x7Y RHs>suYQQuҟo9hUl" DFiysnzZIĎ X9UHT CV۴Ps6.\ˢE #VTj!&5XtTxߘ tW$ܪM~ Cˢ6jswD5y9E*榥%u낤ʓ pzI=V*<9Y6ZCȭry)"*}p% !u)|еeԃh\_q.M/tm:iG3l?bծldQyŘ?MD핽d =R0rj(J{^)gèG# @\I4{{nIUUuN+9whtEP96l]WXeQ±*jdHJ.FꐲKٞ]3Os;=G9sĒIRG5aǍTb,qZ4slohu,{[Q$HH-=-\^ ;㘁bH~K1OARKq';Gܤor]ާAu/΂8gK pEJFk[3M-ֽ͵ZC+2q]Im&61X14ǐZ3o,Tƒ(皓xۗmLnlbyMpg02=vuVeE+-|vI%~%T#rwm}X@y+82aڰk/)IVZE 蟉qa/c2fTcqYpHyUSGÃ:ꊟwYPOєo7ˬf# pI @Gr_8Kzx+p0WRO<.&pI%pm}7X?aQaH+Pf`#ڈnZ Ma$]\h̥ -1(F4IF˕f[a rQֵKᱸ hAªj豜cJڶ;lXM/ɖ:_a7B1AߕHבW~fQˊSSPRb8|!TS1p={i&!KNNn;W\u|["4ƞ|XC,-ue^;>Xfru꯳uj*(L5,gR7G9=%eWT8[~;ƒ2l?k,^ GVbQ1nr_ԏX%`qc#kYE Z;K 6ZjR86`;kliojS^4EDzAPV12Zyu l}FՍr^g`%=! dLDGU$T+r.r)o+gČ1> CC$@ ү+LI O/sHͮ<ŴYSh`-1pW-0c.xi]mM鳈 r1uQ^5mFcMB|PL.:%^\>#O#}4>K\ 3'V놵-؀Щwb6J|;v7P=OQִ4Er=Ԫ&_Ġ12({a%=tVnvˉ z(bk( _3|%5Z4pzq$iБ忲eg}nֽ>x`@#fe$k<|y[\Ay1[V/6U;[ܸrA&y,[8,Qsfc[+c:K^Ɛ=K޾܂#{O_{YjG7RY7Ӣ}sP]ˈ>1޺s%܎a& es]w]{_mV0OrrVCA,wZFsc=G^/MSoԏ5#,N)s{Jf"*zE1mQX<3潯{slqTuJVt{P=F7Vj%(@mX%Mk䩷-bJgw KGC9$5.T]JQt# 4J}QtsG]BD! t!d:d 4AE0(TsEmPLd|4[D[TA+ dYE 6!h .TE9Ys)mQd(A Y "IY, 4 α7z,]KFPclip^!9bJ^Vv0UpYRqݭt듹>[,g arlR5Tx]a#sm=~ ]o ?4ex:)FS}i`I.x?I.Q_Q|=,،!5/!pge;av|:ںʶQLȉIl(:ܐ6l'FTa0ԟEb4-4JGm~~q((k@v6wzh6ZAcq7ӐS}%fэ_`}QBMa[t1rNθ)ؔp~FMs݃p\K{ikұ;Ii&^ڸMv][F8k l&y] l4EGol&Qn 8q=Ao|\%AU-;: { NeSR2F|}]`< SAAORK,HRI]܆~*U2iChJVaD]vi!c{a;E\噱5ݣ{o;Aw.,Vok|e{ xFL#{} :Nj+]Mi1bU,љ2 nlA[5tD ?.CY8T*W=Şim-_"FG4U{@7Z v4=,3I|Nea oO *itNڥm ,JM+j BJ@@4rJȶ4 T[/TVLE#,5BJ@+jdBVN@+3ok8!Rby42+1N& 3H yOy|(#pV[p|BWC&Ivru xnmlr"6{.FatZ3$s1yEu_E`uk]kDіUg R *`a'[.x랖ll p:9ʆxUqO)E}WJÙH2XDζܼ/{R0L/b.!s{}_%j(hm wSH㝶n_{Wx85f s[wN\Ln_`9 ׺Z@jr˭84иF)܈d{u3i[}8y5;wD5:܇+^77`-\6 5>Vz+⵱RR=yM_M#3>>\$TƱ +*$+.d|nǞ^1(( kkk9k_o>4}Ҽ1/y5BWOCWK+ϙs m+DFln e=;At93n@hWڦ!,l0FDm>yF1fEM)4Ʊ6J l֞}$܎idY-U N#Ahq:\7禅q"ߢg|MV1%%5aig~F`$QU4sȑt\1|7Sp]SJc1v3AWk]X-ANڙvgJs6bHh tL>G$ꄡ5RGKk{ZH1\0w֨`;ֱ԰n.X;^jj:9,PWݼ!,y#En,x4S4;0:6>K2'm SqY,њ]JF.vdsf89 [- sd*. q8s@jKgۦ`k2W?X^eh{]"+ cAZM 81j9csy]ݓ5׶P6B,$eeH# mp@6`zœ.)|eҲ:Cáp{A{MuSxW>0i69&4I;.'c`y~sߘP f[Iu<;*j>VoKX.p*RqDj^XpKĤ办wV6; 1r&F vaa5}cu!ι(?nGQ YO4{AM׭,j~Q`<'$،[B?i;<>'\ [$R4#{ lTL|1B?2 1]5M "6BÜ}>F:ь8{8 'i1p Ӷjz*Mxssmtq{j5? } X%^ U8i ]GC쾾MG]I.Qig{,DYA_-Tf{||izcW8l5,V: \Ngxqn8l81@rVA0ia5,2OcV})r^Om}t^!UAU2, '}276[[.&iX*wHS/ Ż䀗KCke㭿E[F uK1/l[T mbRq%2I8u"3G}U6 Pc%iBsS:(tHӸ=&Z-V"]a Mxj[ GroױrFC-5C{HHi,O+_]VղNJ%;3$b8b1wJƌ7W`URxGe K3e[Dɔ@]c{vSWI-/#ęeZIс8T,ҺYZ.nՎ9<DNjf_y `lp3s 5n*hq E&+G@뻕@;.9I=`لrvHR-\@b 5:.SWCG>%T 35-&x%c0|N&h4gΓi2C45ڛߠ[GTFKGƴ _.P=2 h׸[qeme4ofw⮚9.swJl=u5Ep`L:+Rp sN06?]U֨zԟ+Zw+/R48/kȣ[VR$f@:+X)2;${,==!]ݖ HfSRs<稜y"SbUCI%#dsu:gHER\[l_IBiͱ$X ^:r+>uZUq[#7$X, h"!Ab fNWW5Vqb o({hi]TSc1yAEgP(|o&7|G,6/R =ny.?YkV,ѲA<= %pwX-8TVLpX۴.2~VVUT|u$9 NȌs9.uHWոȐ\;[ & D^o{Mi + @lJQg6JC4[=,`4}5p-L|Zk|7_]E;: oh>'ĩ][W $]Zf*E9-hi٣+y_tX#iGcG殫0 #XޜYh0Øu +) '0mhV3PTVUs,>7BQs<~eŃ&wPF[TaԎ}k@`rORQe8(/G_"ȶvB[ y1 7Xpi1橹r1}MyrQVF3s+$,dF0k>)d;ح`9ݎ^Gr}ƋYDOEꕓETY;!E2LE#,5BJ@+jdBVN@("QAAtY >mӲ(dLW1|2AبNǒPKFG4 Z\[,4xtS9;a7$,|5y:w$ +RWɢhc .V oCuI#_%vm]SMWR5xeDu2 /{VO.8N4Qaۆ6R #w;cfx{*&H26&I-M0MvӞ`;mOk\:w0b2606p>kʣ)-&μٸs'R3ѹvFLѫh?͖HBSE7g5$ah]Qp +pCO 8cw:@?+יx{jb!lMhq}o ˚Jmq<>G-5Kk$ԍ3!qeWn\ŔjښlLyscfQ)o~Ҕ{>-A$L_`3aQf+o ؋[ zap~775fQ 3dϗ0 6+⤿]a q}VC٧19a3\Zٮw_d|YG/v^Z2L×KBp]9*#n"҆:Y,In#Z#]W[OqLn5;]lny^u.x1oTa&%#PI'濄dˋ!'H,y#۸`W8.#GN'Hau<6 w=<|o9\5v JM*_NM">{[vϗ47BRtq<"'c ]ܰPx;go~h)fѮ{~R2A; su< VHr9i}@ך,6sX29Ćb5'H,ON!*8*My Y{$6N ŪpALhcED1LFiXv&)@ڹ6̔6d;ZlWr90  e6I,q/ZHהafBa8ZVp:MG%/jn:|s8 w{4:HLø%K̡@MAΜۆEJ17CLIԁřZOW;n<ñ* ,6KH  mZ|a1Hږ|+ռr6/(OR2%߰"Xʹ%&Yn3ØF6*+%wRFrp㧐[u11Jk3Ɍ7f3nGF7lWk&j婩+J7j|c1+I\n+ؕGT:): k5|ƥ!9T5S5wd0|싔Guf/vuA>5Y>';3I-c, M%a2RRFF٘ume횯L;.N uMZt+xPTa=\LYgR/$՟S)~2qH2KL$zےPb5. o:_jpֺX垚B^-FΕb/к6vvy]s:El%u<4Fۧ?Uyb? ~.Z@/G{ds]5nXL`|*|ʗTLHݙzmBnG/x&d̥a{{-%ێz5OQCV؀8{}h=µ;in0pQq3ji5- 5e;{JRGH'"1H =[} 7l;DXTM-M},10l|g\u;X&lԎ5}Jxc8OI/aH"vʃ}fc^Z#lo`W _j<]0<)i,IOekÛWHutM.ho}F`uY2n%K46!k~*;wo5aX]}$!QBnèh衂p/;q*lLS 'VD]`#:ib7d6%D*sk7 WK8l"'Sw]Ou2VIQTRYoq c0).q[z_e9pvmr~j ߺdCd}uζ+ k2]D٫vS %FGZ7m?Rzz]a1I8) 2{2쒢G6ZLIH5#iAG6ѰbpT:H4x!-,7ڹP߃P!1}6-7Wֽ3Emaqq4#ApL seEj>I##lv{)]N ( q 3\q=[ehb9%-[ZrgFxmsx_⪡k̽ĕV;1]ZxpeK)'ld s numu04 .t$\{V7Q=)h"vo`[N9#Ƙ ԘU;g08VK,V_gTf D:|^m-L[ v%-43煂Fw7{ts ,UO1k%,h6M.xcs:yTz + b55 CrpV^:VL'R4>&Rmk/"7+#"}DM"n X鯮voŕ 2..bq?GH譩yxn '[mIqW<@tpnnuٱYk{:G4xnmq>(j$f-vܼ pp=YdDe\Ώ+mcuRVDzsc#shF֤$!ұ/wM,b԰@$2:0>erRz5Htl)1~ -,f*)%|mn Tϧ"[NOe+͓WO#QQ#M<Hlck!IQ*{&cFi/pߜw1QB&u7]f23rk[}rd F<ךԣڜm,v|Z tlτyk$&`un!OOW:aC ,rrorT4I|\AW=E 5јNgZ} I-L9$.cc:4upRFrӃ9mW4_l t%w%Cys2Wg8k$eP 7#hWa16}<!?ڨFG < ph{bN.\hkZƵ|76Ϛ-do91M+B&>_rO%I>46C V,"xyswn T̔Xn0W^Ţϕ33 qk]{ cŃծGC${ G7#" ;cIBjjJѱ)uInH ݔl,Vb g3,eK.92){vH"k8F?#pnÎB^j{HM7RUo<\891Hb=z.>#1'xs0ڈ]P [rh́ij9޷2%ā2\c]: GD+^ 5 :شefUDSIsnc8ZHFv2AP|^v{SZ5#%D&H*2r awXzmeKjw#8#`7[`EX`8CZaxHVpm;~"$Xm=}p5413a|܇+tJ]IQep`p-LSVAA(${ =Fuac-}=kܴ[>TІXz^`\ccxAҼ_3GzhouYr\ 4W-QfZV?i=H*[39I4Yg,Ӈ?;!$wZ;r lJZ}.+Ø $iQN@N npءs%4]WD{Jh;TGsAkvs'_)ρL#;%=Qj9xkPf'.!x[m-,L`؃qղSdsZ7UO{k+SI(yx%JFB^W5 l܎ـDQ] 5̐IW /cB@5 F,4ҺlR>, d΄9k{jJNRB)]T]>"6ZUUGPS3KSM]Iq14+_> u.]2-|c [1GE XKo5W!s dqvLc9st6yO6f>Xsb-eԲ813[S+SA&MPj c\rv'hymv}zf7 l7$kUe+Cp}:lo#ph[llCk{;\KJ~1VA? K>a}վ ig\z0Utl9%>Ac!!4 B(6 @M 4s \4 nP vG$OG$uG #hL2[:;#hAG4 sG9HGT!A]dЂGTƂFN-95 -s7LwR*z _%nn $Iϧ1]R5x.%kfA \57V}pЙ\Yn,-nKp&䥮qkZ<{  6,rexiS{I؋h5s'`J<{t]>g5dM;_s|M;jH0K)CcMQƓY J{t<.5> 17EOG4{ˀ ٍpln~~nD-kZ/(X?W=fbs56~HyԃG#P&@Do1f(86͵ej3 di;MBjM-H#*rK|9 h4({ct᎔gvQt=<U\h̭7-赲/e0N'jI$q*5 4\zqȿ""һ⪖@x'F@;_AUڈZjֹSvj6,q./B:As&kؑF +\Y斵s fŶE>q+O {xlx)DꬩKU5LuHf{M!u>|<7+Bih]6xA ht?\SAF"CϐPZ3sU򰼕:⒏rk438V1$CPs);Ȁhч; hqZ3#';A6:Z1 Vj䪫W]wRyoq dFppvGuCKK#`|vIXƶ5䱯 ce86cn@I;X*5'jIi{&n{WTH #mDb$nޣ[]Ta9Z %I}E;dUQvWTTչMcK鸷,楍(h#muUpF1QbrE  K˚ ~ӄrG#=Cp?jU`.W2 -m5FιHbA&3cSVziCEl2n =SW8jثʓIFvG0Jh5^!4u0E%,r\?ܵ9EŮ亼kីh4+SWT`ᕆKQ1͡d k핷Z q6T`ӳ,^7j&ڐNڮ+q$]v'Kd.<~^WWMdAuQ/DF@p7uA+̲/k6ls8eO1zH$"2/l?t&dlZl=cQ?Q4o1 plF Z)jQh/inHrGHUp~sLKsN~ "2k#s~qTKV)2b3=΁ɷ+GƊ ᒺ&I`d fp97K1c~%@sZXH+@ %¦,>(G擱h[/d}REзbG6*|pTYl I"[ ۳OD8 )BpLQћ^2maw$)881-097|砵*zZY\b|pFr6\ENF0. ƎiU7*N"{(3Pnhe5ΠXj j&d}=m5Ldm)cq4ZV^AM JF97Hk^KCd7%7ESl9(%lc,i ꔼM_5#dǸG3gcN曐ALJ8t@,in/kw䴓XbI[`I448oo11| WERc2h"%Ѡ;N,wpB3H -iG~&fl^m_ ['O-In6:趜d* Dq[xOyU4o` Z55mgu0dX캥ɔY:~"yGb@>QO)ઑž\ŲrkZ 5tM'(,ĵ8_~A`_tt xdRkߗTQ=Rθ>'h޼Fv:ߩrJ *j맧t|whuscV$PX\ M;jK;+\[8bF|̵[=^ fxf6R&-99\*)g\ Ho8;p)}¦&I#%XJJ8rWH+W9 ̌fznS Qs> )]7!x5i>I\ /ZFZ%6o|ռLEGkxRӺ>S`Ǽhj8=.6% Kc'.b)֮HEuWtoŦUDt "8<zz*m}D]xi{8/($c(pJJO 0|d=;\xgWokA}1tSORO7_/uESN) 5;3TE%6F7-*Ѫ=-&1:vk66[} 1H<*qx 5LDe yѪa"`CrmaΗq[ʗ]61]$2 MyKo[v!tOFW3 kq:' cءgBu$rV.9_DNc:tҗtj+#YP`{䀼>F_$[`b ݂Z n4zRB?4 ;#hAG4 sG9HGT!A&B :A4̘:S@+!]thP/H迚PЎIJ$_/ЀWEP EP i4]@M.h@(@H}Hۚ9WG@@mq{8#<&y[de+)MV;? $.}_Z^jX1n c ;*a')%$=KZگUᵐSHbr#/d'!p)+#4uc6(7,,KI?0|Ybȡ_'ц\r|ٓñ nd5K`N},oQ k!FqaŤ2x"oB7X|3Mn!=DB2F[@ chFJj5> >3 apNC~]6)TI ]:OMVo`g2;,t0-o@zrp1!I%sbc!{NW8l6u)5L-_h\9QU٫밺jSQDݣc%g QVO糆[O;\&`fhդquc8]'#c7<>zc* ؼUQ~;H i7ڮNNj6!#s[݇9nf^mu*ihKM\`Q,rbr\tMh.s+elYH]!uoɽ`6q. Ζ:ZvU39%XqrM*(_-lnѠ ml8졵}.Lg`?<ҳVBGtke*(FIP㙦v|\ ;VuFmӼV-Q̼q4nR@hlM#Tf:0wu{͸RoCRyHcqњtA]o-WV~rfn ǻpd[S[fe9@mO%7RR:yO@^Ëٝ @?Ys㏼' x"JF}gvc_ߐSlmfڞN/ j;+4rMu2+O9H9!_$tc 6!7EQt4A_BB{i.( 44_D#4/74[t("aY4 M B 6`=R $\ "BY]oi8vi IF7=# ;/~v+ٖ O=SY6Z&th /NR6~F1Ud{!:̍f!}9z«>*L2</qpk p9m=L$&ds eδ.pmDŽk."q\[lzǤ}>c}@7FzVA \Vz 1kbkoERZ O+I3-465_=aY@pzI F \6ٹ\^ˡDvaie.k.7k±$t(ҿg%Ҳ1bmv8[ u7}o\گ[5&xdFՌr7#)} tu2;јimFsw'UEqgn3=q/WGUldu=D{4FKo܈x?CN9j-~{>7K8[L%.BY'_bnZ}ތ|4f8k0465|ͱv cto]W vSS2QH[kka6; :k"| {u}K_rNiar^7enF04\4 伯3C,TNN7e\S6%OCXD\-s5̙6%ECx{x߹s $Ml:|fǂbyet =ynKkmj %.'鲶4[O9xc$pY1K q .$V u$Z0?c4Xm(QW3ag&{pڎ©p9₎!i恫\\P:烋[fQ؈;:F˺3>{nT jlDHuø.L&,[I"x5ldŧBWۃ]#ai*&Q|! a$mִ9 {"Fkl?2,k/if_h\љu\h5D(*^٥|uo!{FP*ËRN14.dZGaVشt7 ^|[=FqSJE; CX*+اKEdk8}TBWDUãyQvjl\ڻ{ZVt99_.5;-<l}F%c e,Hcp9K8N0qQQW8uN#P 1:)*\e`i 8r9l).gz,F>F=C_&3C.Q#ab29~Gu4LӾJQ Zj\m窯Y_SY#`.}i6 ZzhdsF6f0pU*M; ~5ҚO}ocYKܒ`t;$N)kdo ;($kdkB*i75 ,/0-?+1ek1JZ, c]ջ{ߐ!lmĺuZI[kFn̹52,QˣLu{HMǷUU,TR>A`\mZ|hם|l2Q e.<(+6EWb.5Wec q>j\vX|2yl2Tcn+@3@qhةm|39z_X>{1`#3=[Z⧉ɣ/.nh؉lMtV' ܲ?Zsg|-2(q_ p]BԣGlQXM+1F2 mjX+LZ:5[嬰?U1K>GE 1/]Vhݍ4q(AuN:prG f*Y1?ڐ=đ$Mb>%X<1"@4n܏U8c*[,汭K6ۙ*qkGD>Wjp*0bD߂ŋsZym2lU᭦}S-k[p600 m5t1tbH^X$a:Ce۰jbư<>xU;)|1܌ $\|67+z0yq{hjH. bݷU}،0:Lֺ=>pz[f6#R6tǏ m`Ca%{#30NW^6y$Ӧ}m+&Ok[0lN7zO"i2kw/Ei|j9)jh^ 禢UŰ"ϓ{ o l7sEX"Es^5 Y5Hs{UZ_ܢ=ۡXqhm$4"qN$bIP42; /hrm>2%Z(%Xi_Ff3 xݗ'WFLjSL ^C@p(܎{x)SKZ~ A5R"t:ksE.yUvd\Ppët%d/c$@ݎkk)_PiZwdk_s|IĖ8:c^{\QQ:yn[;松ޫqRtӇ##D'[3?U;h~yi`\FelMLXy3:x\/pݛ/P;A|Tx;'ioC/B3ʌ1QUs]dFB/ك^S; I#0ЗhM~#)[ԏo0͐j9jٍ }b$0Cqpu>Kj:v򟘫!F2QEnzmwR*Z%=p^+$||b#MweeL9`xWtYvK: muh$7'O7eb>'7EkW==8n؃m6lNi`iVմ/<͓qx :JmKPCo:Hi<`]DK4 87BGE COH..9yX+TscĨ#9]-8cisFCDFNuWMȷ#Zˎj0:dle uŮxIN,8 yݵ6ח]N)yow;]̿+%,a u3\@5#icwy*#H͛k ~稒9+|]ck}͖ѱQ D4K{4\h( aŠR:LķUK5l-%Ϋ1Ch ,8QK|%#6ܴ\BRHLŷֺ'g#P[*cU1ю.H WwF{V_WɌnYK|1?%+^r73]`m괏hAǟv<3R>ÚW _U)5x~{a4x^w61ꯎ+/ $䃽 ? [ڱLha88sMs,SIim׼{̶י,IQ]:h!/*%sD6fvPl(oVKBڦӝH{}Qt]/t{t] #T[DE ;!ltt]@{t] +y;(V@vNt{t_DL[@+ Q}@!t N_Tto4[VHGHܶokyc4)K__4+S~W@ijGrN yuVUCMOy#1MYRV;.~E>i'MYO!{j}H;XnT8W8!2cc26f.V*<dT!##3ts%} 6>mf h@~ۭ/ٞ'~?TwLt-}NߣOi L hp$64/?:3Dm\wot 8[BIyQIdZ\}WsO`0l(S%`wq[ϢGe3˼ݷ+*L cV+R6Wo+힘F.x{nw3[^܏[1k-f W7FH,-i 5S#vf̮VuRIlu$Qw6ո%;q ԕ1i|Qu]Y )Pu=l-a宍ݵPV 54X=.t 9#]AUsk`ֹ cgǢQ!~J\%K-$]HP6Sw|l/[/) 52\EɺVU^ O+hD-"5Ͽ%*1A󔭔McH.⒧qgf;Hr$\ee}\y{O :z$Ld1HGEFcתORᬒ8&f[yLAdrWв'Crß +pEQRt/k |W6xO⁈aX#`8\.([.>7aE3%to'U>G^79FEß/NMYr9]dVi پ 8Ø53(vqq'+q"GɑkEͼlotm\x+L#Kwmi6K];gt̑vNL AЏ%M{]G9.sof\j&c s\9]C9bpx+\KqlaѱL ;@=Xl0dͷ{'yG+_i\amsvxL0_) Ks骅M J vh6 %Wj%$ƒA}=V2'/ `Y BR䕜՜{O]&S-v3U؄5C "h1G:Ǚ^%k-{>"7'7_`8[U l*1<3<'nKq%/ku,N)8C&wx&.znXR8}WpxX{g'y0^gQK++E%C@y-t̰ lt^ENX V錏3Ih,֞jt!6(\G9R:8Y|\0u!v{6]l%ݼ;NCEecw2Ee5R:eԵ"0Y 5E#W' {eRaiĪƇ[;FrKE{\5ev)Zꙅ'62S71zE= IT%}(pۡ{ǨF9X#"o<[W buH]`+ۆ Qmb/r4䑢|_ĦhNW4/ \ăQ3&g9ʹy䐷UO5f.@ {hΠ^ypXB KlM5/GbݳUlIkZ )˞Axvh&Ә ևlR/ |`GH\l/Zg'GйI&vx\̷ѸbJw菇5 u5Ì. G7{i#A#ϝ,rZe$8O☿\,xvʖ0@ov5cKAԭC8E#rSZa+ZֆIs`u$-plx΍H j:i*p3t[,:r!&-.Wp=OOO&斦v !7i:I&׾bƵ״de;]\9kU*x>ZPH \Zn9/ApoiQŅO1|DYC s\Z4n:~g2Jͦf0iw:6.Zkf!u}\ 9ծۭ/YڊdQ9ya hMͭ}@&]4lu,lyu\[%~s,h53o,$yH^- m>A*"~-CG$ uC[u9|A0p@X~gŧ|t9}\e78F e}#pU6/3ז8e{ЮmKS $yU#!:k ie(#kHצ&6WK nL%dnRN[8~EkK`փ9T^w+/{|nsY{} ^3I!<[/[nӊ1gZ.i~k`q:?P̂M<ֺ%yfVM(;@:>6Fom}dᯣ1QdxNFvH_;}-1;xo1 Ӂp-OˀJ^fqq&aܲaPq$ݠ*,m^jP2#8YvkbF<\67.p.K :j1_] K2Qt 捂wHd{t] /tϪ.Di_tK;W{;A[B@/tt]#T{J.gEQo4w@.; hB9:ho Iz $ma`o%=@G$ ! (@A@ !mBBh@$&4s(@AB@B@B9 !4B:H- @v?pN (x}/t2f45k"zTvmN{efi^GB |!exW1?u(l; 67OI$U"FnX˝Eb%«eo|Bn?(sp~.gb]MKP m>m3b":mͅ+#j.nބs3=[[7cèY⒪2㕡5I^d3rJ4|l$K z^^?>%+G*Ɉ7KiU[~<}55.赐Qk+#y!67>βXvQW :Oxc-"0[`5iDw4MI)fk.KC°/lFl>fAT$+ϳ:[yLQ8䚆'7*_?%v}M?EĐZ栐t#K-(8^o:`]kScm@Э{q Ju0W52Nv"+y|Wlġ HHЀHABB &jB!4#BB B! 4B- B@$#-B RH$wfCqyñ3ġ/u$`,Òifts ˯n:*.phwb4,X427w&\5ܐ6iyd䗤tem'q3qN?LjaC~vE-SGKt^0٢"@Ys[g>Oa) _q?3+m0S$$ _?MXq^l/;k٦ŕA奬<5G%j$njUhjAFN_UyQ NWddҦ_P_,kou~Lc@q]iss68 :qqLҕ+sY6-hdְ\V 9XfpX܁t\5"Ӓ);6l6a{I!A{Ue |#3lӋ tY ix|^H際F>$=#+nH6LEH;Üdpr 1\ta6$Ba4/ ogu9Kٖ2arA5+#q5s"$FOUM;Eˈt37DC[;+e$lhe]\u ZC{tW)M2fKq4;py-  J80'˘ZMf5Ӓ7ȸW^;3 ьvP] Ip@Uga[j-N+-S$cE8mAme>M3i,t }5+;U:xZx5eZv:#gwNJRH(Hsƅ6a*)c?MraMFR;cp= omnV3Um|KnA8\v =G*⪔U7Gy`1^Wٮ 1JzOREUI#Ý-c  C0W.(h%c$zXu2b=~bP5wvuFbY]@-嬝7b@7#[II+N2G>Ӹc!٪7l\|y6oڐukvu?Ki*ôxR;ese20Z|J1*[+x?k~J9#.l yp||US#~6mG /wm#GO>C쫆vbt|u8O< $mA'qb2 ~1[gtngsKpJz>,Вb8l v`KMƻ@e(l%<˕|U.;ĭcې8㑷Up|]H%Ki3#Tų|'`[I\ u46k*UR{.fed{[ Wf1R-H^ӣ4V؞9:3 : G%:r6qm\7ß;'eGtm}=N#751SH0n'~(IA~~wU<}Ov]A_ N5EKybXvv[\d!wq3eG/{e7;.c_b. /kC¥f`i H{>AK-_zXI9bv{RCQG,/ڇa 64Pv4p͇;|3I~SKbw0ZNIEb,qv{XDFnpx_{{95/ q vJ^Ć#G4=ܐ4E]u pêjқªq*i9%5XfFskQLbjjbtw122 c!1F2IC9$6Ӓ$k#t #伊TeLًc0K+'b׽K7/@Uf:b2#nk[E' N="ÑiM5[5cF4uJc&kxcK\NIyMK-暲YX)gڗdWp38##㍠i!|#O7mX>*J1#e_涕y>wU$ %N起qP$]#k:ۨ趚E 678OMVٻ4oȨy䪌&#&5KA,nK#]'Qc~XŻ>4JC IlhMk㑌#?cZijHafo2y'xa$qn]vvR{=du2; a3CDd2 s.=6 dEqFSbPH_>`9XMnN$hډ$V s\e~[Ak؅( d}.psr8,\TѺ*shK% Mep:%a4aRSŒndž\+ipmV#1y B;ViyopV&'E JXtil=R"#w-K_ZWted}َ7\CYbTUUoeV<Ϸ 4WqGKAކn2[mT'k%GI3ۗ(dԝ2z^I-.OUɱTbii39XI;UqUKKQڢY"m upKbq:1r t7әӧTMHrC]wRQGE&~rCU#s<٭{8KEc$1s]w9RH#OC#nB4e7BF湭|Gd3EbfQs[j  ui{[hE, r4;}C#ꄺ.uf)Z fKS4S7hEݿEwC#S`܈qU8,9yYn Lf)ަ_+/&O';R5%Mi()?uOwi;,7 c{1b"v 7؆a4U5sSAZYfni5\^8_W$sI>HG LBIh -P #@BZ4$(H@@4rKTr@4$BFD uLQ |AZhIIEntx}V5ECO-eT /|:5%}>v+'TBw|SIF DƴGD<;$>+M٭gU da;]K͑pyp(g )I>5$J)U90HZ\խ-[aht +㮧xS8_/vP@-cB|@{OX33I'_ShrȓO5SGy2kA\n&ANk WRRTb$-aEx7>˛W[gURX #;NQp5my5Nt곔0R6~KFj#q }Tk */6L5X9,bp=J37õ7+|nsHMŝJS>W nph01NA)qtG"u,.u#KHGt{tП6YsIg$ƝUS3`ɶrh> 5PG[ηjyXTagUK;y'+LnIOURᆠ_f鮭wwq$v[[[/?jb<٢l\.gK;0`J(&T'@<'^\Rz\ϳ^i5L.*W23G!yJ, -xC HƒT=pu ehw7a3N>h8ZǺ*x5tx=ItPL}aQ.vVPnk 2:g99-ssX-2Pd29. fDaJcVxIHR*2;cn\7qQakgh{́yR@1q)ű#l xBo2U F&k3 4udwu%3Թe@m=}^%NckHk@]}WmYiHxئ e^uǩk:ݝ+e<8LUĜE{9ŮqX}?*mpSlg"GU30' lFx;({nMt5Ԧ1`(q̩v`e#ckf)X\?PF]5bb0qYih0{Xkl5=ḫ+<~ R裡/ze =0f$A{+h)'0de$ A;ܯ~|$?>GW$`? p ?8aT8Y,!+t ph!̀cz\ԚQ7<3#]<͂.3pQ_;0 7#+jʁ.Yjz>V|Qu+aq9{gkoK즖ekAsьԤ_T^I3yc nV*SF 6CAPn,R؃eg6*Td1I((mm-DK/w=9;MkjxNЅN6F6Wӽ1նKu-Fޜ6xTΰ{]P NdayֽX\Fe6챕o붞h:{(T7o4knl/lgw`=-\nӨf|a/&fs')xkk)c9;`-cs$A4.u<]9w+߃˕R2{F=Ӳa;AmUcW l-U q0X{Q;-n+MZڶ% mb Ǧm,D\xgVfji_GMl&5Z9ugUmZn ή`x0{"Db"1" ,iم٭:/m|d! @>hIPB$I &PS)uBhH#_?h斨;BBHhIQ-SBGT$r@4$(wM#|Py@.E0RS揪9(E>Is@\ m4p^ esfbj-DŒ<5տ ]f Iѽk5isH*}#:+O1,/ Ħ|KC#|ȢWb B]S+(GDsK@G4}JS@(@@IHG$@KTKe BK|;FP _T)ASԱ:'5B+E]O^#s4QUZ=38 @溍.C^3(k\ cqI37ѵ=l8 HOOK({l\_/5US2gwS\u蓮mƴ9s_ٸfpvm@OCRZHLM=oKLf5cuNkY~S\7)-+c!24=z."uEL47./do7;smmS:ͬ߷Fچ‚:#ZRn7ks6]M4oiff.7ˀ{S7g_/7e`wN% (eS .p8u9n;3C|dPs,Epa4C@k9 Ubp5(Ee\y|x7Hg^Yz9#My\Kl杈Tsà6UbUfh&_ҟ~λlqmKMJ46ܞf4[pլ8iowSSdߩW7>68j*2ݧ3r騱YuKaû1e{$ly,7ұ171湢p} ϓ|iMRGn0M,',;tns^h9ɝRʉKZ]בFY(饆 λ{wm;.AXm my dtF.w_5?'|bG+Xw W5!GO,ղ.-]2G!}VT9V*R9IH~r-/1`Օ0苘jW}xڍ5Դg 0^(WIσ5dwl ȶ:T0a]-5ckѲ,\1bUr%a|*0F2XssG]d寏,":J`AB%((lR.!"(KM ]$9!M_t].P e.("G.iHB }VKp'qO# k*)hw5g5sTQc*xtRصЃȮ9X>~EÜ1AӴaqܞj q nbr_ii| )a/]1R_]2y.>!KGy[#b;\pOlog*1sQ7lUw%vqm"cnl9V*xsNVhyV<9K>GLvr -g:*a;ZGR ʸ!  <666>xkUlS5i!  sfǟ6[#HЕsJ8yntoH)~cWc*YtcQ cNlK|9مCMR[-)VH(RXRyK l}J鎙ȟfBZےž$~!SK6Xw7VU{f\՘L){v,PAV{ʨ[$i#P<5X6^7x]b7WNi,_7::(َ驄5vm*|+A CΆ y򱙜OK,ܥ(P70ri7'){ӒÍŕB9S@ %f|CQ-ut)kFoj 7MM4.?[DQO##~@*aP 9zkFajsPWQ27V]n{?W 9- -/Yg+jxk~dkaa8h(!0T%t:͌eZ-q8?'hk!77apʩHu F;\ ԞaUTifsF6TQwz\$h 2S0\v9IP4)"(dSEZ9qˇC mVaSw-o˘ 7%F-Ox7,^5U4AHD_)ߞ%z -t.?ĪqC̏%UeS}íkAӳdi4h`كGƲѹ|ث ?-^KW[9ޑsQ)m;۞ $X~wM96s%]Wwoc\yu+c%YF㘿%1d0T&d um*L{Ed^9 -*hiĮDZ[h=􁅠֖O$G(z٢-Oý \j:5")` aff:7v []:-`.1 [1g;/Zq]E-+ lqG 6Iv- _C8ݟ}~?v8L.?֓^-[¶}LIUEݺŒ}h`2h88:'=mWbX秕 \pF){T| hkUÎ=lECh8dk{RGJ&\٬}v8i0>)sDbrˠkΰ78UbOH!ە_ɆXSGۆe%tv=EP#-7  5Qq+OU$z:!p̅5[6/UO)I,Dr?yPm] 529Qnk!=Ji*O-o.b/TVQ[ 5a8ϲ1{iZQќjUӋ`h}˗Gb7t:&?K$hԬ`,+PfcEaqrqG]l/ ̬l 1 VF i?upr>k^]z!ލekP$fW:Y剑d#hk\77h >uia49Im?xq4XTtn+x kxC䷈,Kx;p>FL1b8xokb ̪9rQm z/<#mR+x05Ir`U$w@AG0:3mb{2ne |RcUak:\lw^}S3IKRc{湦/%lU8e-{suBC14ٙ, ?2bőVJ״ w6Uи_ xg(K탹 s_děg>BcY)&- fbȟ/EcVE1! 9$,lYk8 l9VGԾQ-RX^kɣq|MykؤsFlJhàlf}ξdKQ5$lE/7Y;I OEx[$RdR4< 1< WN)3lh~g?Gc)r9Y~ad˫36=!.i0t j@m$Eȱ\z EFSfcuc/ۛى\ۦAFjgd4дgM i`tG!批[o<*eO[<0[ |_kC.7o\iO%<yJ{GK;b2h0vLָnۢб ^uETW 6@k+aq`gN?#.MPg*b#mJ&9/bBݴrW45a,hE *%.JFɅHhB/_RB @@;!$/.T2Tt# 4wB@\!! :!wN$wGDꋣ怀 o :͊zȦ6@4fAkd#MZ>A$jHK9Su21PZ#,9C"˜%rWEMuzЀRjAjD@MSK@ܡj9 ROQ PjPyΩPPWH4(ts@h8T]cj)C} A\bXΣGSAQ|.75S<:_Y3+)hq:= umW~5ostZwe.kr3]{2XiVEAnEY~9ödog dM5|(ԯ8>2\73$s_wc8`cS%`scgcub2i65֥mN; cXy$%8>PDX_WV1ͿVAS[H6>˳TSM ZKihhm_U~β ,Ee˝oaݰ<d-n3>z(t@mm؛^`؍W7 Ff;uW8c-{'Yd_&НW,qPaM6iZXUpF:oeL̓6~<Um.;?ee]Lw"c_G.YW:pwCdRde8[mr1" Oyt/?',SCvn MQTmt_UqMn<".: /%Ā.ue& 99^˸p$Ts5z+ySI=q>%AMNc+[ݴ{VuxOW+qr㭺^nOTR& r>j!ء{ &=84e 6 u O#- q8F9!TT'Bh@$j\BTj|Aj Tj4nuL2j j\8uVY%-\.;fָ["iEJBI>h(~~ξ]Ε'Ž\y7{sW"DwDl*~2v1Y>*GZj@ -lTxkdz~eVf#3KVYCԇAQs9,7naXeh (5ǡP8;<ǐkL2Z6|z9.I[FZteĎsc/E3$`\24s*opk^fsMΏ1P԰ۻ hy[b9kr^V}PHc?CFzP|z9Rݛr$`.kX"``rm)Zw-v6 \јÙ Ȓ۲r FR}|{m{_Mӹo-z}q#iXr^Zk'H214![6n"-7b|l.$u[$vB,,[\yiȐ<EMu.ŃӴB3Rv N;08isӹX(MFP&0n*DmyX$8 cv`x -cܶSi/ԩ&81#17+v{.&E+wSQ"Ď];a4+ZNٿ2*fBc4i#zy-2r/oebfZERM^FyYH9n\ ܋lwŎn0kmn-1VCL h۟@ZRHqa,d~!%47+(gKuyZ*K IO)y+tz+JCl$ռXLwx]@Km,ʹڅQgyˡkgSI9_ͱ>dph ]kn\ݽվ%GccnO[/ a4e4ox~`/g2ڛ :#=e,]MD {k]p\>׶ʊ^y$ës:FMò69cm]J1nHcF%qh~Ub@4C"o/\W|N nm^ɞZ&/;j- .d63X,ha0EF(4uMw!qO 8}՟2@Kv mii`m8離 =F8nsdveh?)E`X|2 A܌w'/ l`  /v}咠>W \oWTM,gt{ؖ$``(=>{ىS R0f`.h_[&S48tdg}7y2><9#qV"uK9>* i$̶<8ܶA')AIںi7ypxz({5 [\H a-p yORR.G0Bh@$j\BTj|Aj4E]=RR@FT]S(PFM-R;.hQktjiB6M5APGT'THɎH5( !h(< L%Ȧ}Q)&P rG4rK|AB PPP6) hH 4tG4 hG4̡.e4P!$T%?]S)uL!T sK|;FP sB\!PmY1da/GtQ.*.?ëNI ^؟PҶZ~dÕm!O|~hq7Өoqdfb_3r +e,´Ѳ <(fa\b _q_Gf|pS:F#Ųz+z3>~RA6h%3G FmmtW5kXƲF,kKs]{4'U$i~KM$̇4G5X xgva&fw"<ԀM9RG? -W v8IH1 esKmBMLM8f\ حvӾ&CB@dlKj( {H;he)?gY -rN7>J¿3ߦp촿IǶF-x4%FHsߡu& O9<:6QN\*Lf#4HY9K |vb$gjz{*{&x:^%Ewk}GF31->1b=Ӵ<7& ZMeM78Q+NRp4rq͓<1{jCcpsmu>?|EƸ |;IP8Ib%m. W\yx2(D'5<ր ߢf|#4V}E\?WMP#NS$I.PTuL2}P.iHB *ufQtο|@ʾs)G~D @YD9#e. ]F-"7tkwBn Ei|m%n=9bx?zpKof@jg`67S_E5M=AsL oI7L't#i>䯱G-#@仈i涞kJ7W#TDZw$~7|B:zk+ V8?&{t6ZPAV^(3'z%mw_[>D/G;JfgDQȡd1v:L!~8*G\BT)lv&/Bppz=гVh5'_E5U 6$z/Դ6irP< ihq#e-7SX{;'aԵo1c\ AQP Ϙw5.9|⃔^MtB:8U5IM >谼Y{0sQo%bш]#Ý$-\}/*f)l٩O|K@:WS 6fІ_[X@.w7POIS7BALr(@G4@AA@[D[TrG4G$ !4  @,A[T[d!!4 mSI[R# mHG4 ۢMnGTdY Jڦh!ڢYBBhB- : "M5N#@APẾqGLjv\B:S Ϳ >HJ  ~:- l7WK!-]OšU7DZkƢbfOӱq8ųW=lmѵyvA6A+\d߆RI(M5C.9&5q$E̘rcmK"G%-ۘl=Ny8 kCs洆3 uxѿUd6 /l,- JmIƶ7١'1FE auxzv԰Y0T1 \g >KX펳%(dц<6K&k/K'+~**MhGt;(Zl&jx}Ty]s#}esʸA-3d퐜Az0xA\]2RcXcqt^s7䢽k^A޴YKL2XͶ}P5HZ]ˮ{dZ4[ @Md[T@ԢB,dd[D#4@FۦQYBhmR9 !@A1wSc*atE't,3=GN3NlX8J䈰8k 0G ?(qnIZ,1eoQ1T=~ӭbq;OC~+$7a9YWpH nsHvu|S4 W91hrWyھlu>96әUe^Ʋm+rZoy+ʺr9ԸO<?t^>qJH_Tr]ʸ=Quq3.#cC~o%|AH[~\ Io{M"iSVD, kI`[t; !s>V |BfVsA-}D12FNv7:-OL;ϵ\:槯45̳C+[8wR}Ӵq&v،%.kr/{%BOXt4YMCPFB4>6f[ub|p[$,?U9~ZOnuC'#- [c"+S2Ffq7yMUE JdqolOPL'$o᤻r靪ٌMhlm\@G}خ9a,u\/"8xx3ژ{nw .$=d`3vt\ÚRwD9d...İD,I+_eCis 7^d+኉n؛v\k8Q#e8xR-RmE82NNr,n+5^,^O H-ǩ[X\9|x]{=Q:Қ8֭^-$P^8~.)3H#l rW ǎ1S3"GrЯF<|txryK/܋ln/pf 1굼J2veC=3m kg~\V&?5)4ފ-GE%,اcsӰʜC#j.^;fYoӭY #d-|ͻEc;GRp]['׽푏"sS*0Sqau6m̴zvyg˕ְc'Q)9ty';4Xy*)IcZA_k/=)ZP`Ɇp#q5\mtZ7~/xj)#j`.nl6a=ZێEp,: XO[<2Ky[b j],A]՘Ubx$p,aK \s[vuUN;K+5co:׶ SNJ7&8t>;"oc:ft]f*4fW;GU`8D/Vk^/?7_[]Hٱi|fqyi<-?0=y// _EVm]Y 6Yؤm8y8F).ՍͅKKOa-^H%\VburawnխZ7_˞y9^3MESSMQ_T;6Z{FeS(p*%pVF5εƝ4X((-I+oXj{dt2x;t~4q/wrY(ȝmW2,G X.#c+=&kf;65V豏,Ϟ72fS$hvf!eH:űq na.:3RksX{I͕$\0e^t͸b0Ey!1{+Iϓ}V[bְh%6[X$jYm^]V;3UTR!q]͆˄UQfWG 8ωh<@}TQFڊGFCwu|д\5q}5.|lhx?%iks:ڒ/:ULl:b#u&RDAQ{(`!;nFcC!wtDS{.|rȹYtqVKTl~yj>\ֿ9y21QI/1-d[ ASMSCOxghXzuV+[5O.** $g ;s]URj^5ҌuŹEL6P:ְЮGīR9Eۚj*H ~RԥE6~.tb<-dc+tjûI,|'H ӭ (kN]oKM͎g9C?K{M$9u8wg jWE#uApyX5&)77>7WT HYPsl؅+臕n|S]TFXk7jݍ4Wn#f~ѡn[em;Rp;2Jy%!O+xͳ O%C. eiUCc;^ѥU'~C _ yF}Qa?#Ap񜮻݀W7uC\C4+7ϚV F]"*d#ciQc!vXŎsrI9t_ES[n鎕M&̭8&t%0UT4B4.㓵Β9=[QN`խ)7|Iא21U}qV$:4iqn-x2(%x~)5.Yh's_NW+{7|Gq ;ZOo¼[f`󵺕ryHedu^suZ\g&ᡪɟ.XTp>plXcıڜOcꠓcݴٚ9nmtN \5S𯯅цSZJt-c|(,#[H+0unKO?Ț3ּ xib{8OC@px8-UNjD~cYy09K.;jIxox=H[AꙄzANSivvqSkGMl? Y,M qLpq&PWqKiq\RJ I"0 ,bxp?S#hG=L2.@Gt;Gt#Atsu@%] :7bv䕙%$*ŬñLE1ԴM{V]Ϝ<ף ~;wO QtuG.; )ȣ.GeL?'un)L|̨jS4~`xIi#ח7t]V$2׾V su]at5th:6Cw @G2N+%O[qòSK~䴶XM.\ߓȩRTKpwi )K+g;ӿD竨f,1`6ݞaT4Qu%&K ,@}«(& Zj%}G܅_9q´)Iq⠖Faj3gȜ?K5_O%ϱ|b%*n}A4V~csVsILJcZҺZnH-c`uӢLf@h0Xj(͜m|根1baieldT%Z9gZ#X3oqw,\V,Qr:y\aEkbq>!)屃a{i췺8}dyة'e@jvdobS(5ݭwHp>diu[ m2]slCV]s-(Ћ{5k :d${z|Dj ^fqLp,xٮs4'Ej@_dt]PB9J.ꗺL /=] {.+ۚ/e+Gt] n.?twB=Є(F$$P9v|]AMMt{ӺGtСGTT t@@䀀 QS &4$# j"7HG$ &(ArA@ a!4 Ks(@;! jHG$&HGTKe BhA#9 4 9@$!&EPQ! "NwOuMP\;3Zͦ_' [^f&G]mESLPȪHhbMc8$nަʹ_Β9f7îEм|(ao$RFu %7/ES| o71qj?1|.gKE ԁsn|uvg9Gf~\].sWllWDI6ss]Ai{pTb!i ;/ttm3bdS`GN0;lG@Px_$=[ݙ5䛏;>sr\.(.1)ֹͨ5ɕ΍ڴP9+)J٭c3?d]s1D -;SsJ_eheVbM6B IJHHtJ]7qѿx'#BEԵ5w8:6;c]2[Qg]mY9em0v_[%+\:Bw6&>i:0`+n'f|+4W4qkݎjUhMMjHwkg7GHc}dO|^.涪.ͪ*]5u<Z\\Eg=M#K%e{H}c$^P0pp7R ܲJiK^ \,Uv;eԊЋ@s(@;! jHG$&HGTKe BhA#9 4 9@%73H*HB|=~3ge SԸ 4y5Cۮ]8d}<͖'i^ ~Grt̴Ύ'9k9Sm,. Ŵ.*!wo+?U!diaɎXes{Z)iZ\jyl5 `m&g c_5mWJWeGs NC]@oЫk`i:\FT45Z,-dwF]4貔2K},< Ak+x{":BEv۸󒕽1Qv/pֶ_P/B=@*Ϊ3VDֱp͒K򆃡evBZi(*$kfxm@]rPiѽ1:99~R<&.G/i34̌7 ' p, c5v!n~lKGOC^ZNS貘V+%^rƽsSK }MsIsx>:ANs@O֌}IĒZ֟~gӪqyc>6sܔ~%KM;6-c⍶ic|['RM-m5Tkj5gCrXj\ֺb~k>wZ⠻2⠵֐ 7) 9G <{a3j5ɦ˜H>䩙  kdau@o40e,]Ih$-b~\Hi,I|cceq%܉yRX`t9Mտ/V dt6oH^GHCL7{-m\|1:ut,c<Ֆ *Wh>`qbLSsA+ьiIQ5k&Aݜ{]G09.k[ '0tkEQ~k}l|3e|=7֝odg<,U)ic,9-QȖ=zHc54A=E]S iaqss;f<)KS ,M6_ n:xy&}MJpN aF0Ǎ`ں uoMCjIv#b6\KGl1 [N'~5W`?2QR`:ݑXԋ4c}V5ճG T|FG_4ִlKZ> ]uN%WQYY3*dtK!ԒW>TEb @G%c&HGTKe BhA#9 4 9j21ģ$!(f"%FM r9,7| k媊14&͎&kE汶E'.jmlTg|I6"1_)-6#u;d(\'v_ORxucup;2Ӷji/6'<"޽h\{^RPEqTo|1%=Hht#WR^}i [OU #%Q躎Ga6"Y쑠rWeYqI9)UsEPI3!ohG4 BH1  GDjte$I4PTYS@G ]4  O菢:rz'o 5NAAkd\Ej!5O$[^HPJI(w }LD}W(;y}74}@NH54}@#t\y(FNވ@#tjG-P.\['o Zn Nވ@GToD])APwNADɡ-Qro Z[(SBDkd@!t4{ $Zꋔo MAloD};[;h5NB1eis4 N|1hIգ\ iׇf|IAU1 `df_'r]F[ 3VH؁@h-?w-}\pIۇpg rm_m f=4:/l$'3$α ZhZf 9WVwHsڴK-jBA؋a\vbpwHs.dr/esmXmuQ#[`ln3L荄Kl6yтki^KZd}po[*9 sg,OkO-b(!S)"t-x7$VI+$ae_udٜ@.#󨶇:.3އ_Fp94V*WT]Pysh ʃZlʃFylf5gMHiYZ ܔf3g8\e86%Pi`,sU#I$ %ߒBC(q!j1}D {awU˃J0RFf-A7FC87-R9дt:v-\6G̹mz9%Y^AUٹHUJs|*-)k ?͗'LnUlkݥέY*)ૅFˆt58ϠhШaӚG/pEI#Xc$x@/߃SGKY(#[p%5%3Y#I45>@y"~/ڼRbC哹쵘^WXtP>I#߇D\6m]wr;,ut)_AHXP[luZ!ISፔ8mV2'A҆8x0$.wWn~kw2G/͇a`g.z[8⪪8CEVr+{=p7 5QbS1<^rhWt(~O5STR= zA DIZ'oDT\y(@hB^؁qZz٬u"ۚ$t3\_oxvTW5kcisuҸ"@ `S'?5>"_Q0s y؍ nIIOu0Cln 5,|{^)E6iI굮/i2G;}mpWjylo:7e>H0?MγF3GD.,T8bw _壱br耫RNij0hy+*5L<Č0|NnwQ:yVݣ'vGUeQ̺(bkARI,@k|E= aU[c?13rru|o'm2tNhm8lnC kC}aBr48:[as  ="2A||f5M6\ԹA̋lVx m,sr|N;R_R:h5'v@^$\R9Ismg_蝕-6ǡ-Ss tҺFL!ѪeDz 5v!EfBjyuMM-7RE tGFMAjH7ӷ- TktЅ<ӷB\Got@#5G>I)=R#~P=HB =4\O9H].H@VX&:̞0CdQUtX&G(@!2=H tj=B{4=h@(@T9nr@G4 MQ BhA{w4s@B=i=Єt&G(=;9Niom=7i ;tT}PyꂄuOӎ'#c]9E͵P{z.6GP2&u|lR)h1CH.]ПUk7+Ru:d ,FK^m,5@?xmDSR;CkXl7I-O_MK p:&C.VI'+!wٍslfe>fp^EfNav]OT)fi !o3 imʷNAҍ\^EC 4IWkV$亢<ĒlFTR% }@2UZ)vo樰8 oM FEٙd p"W*($03g}k8+ $t72\"-Pnbn7)TU KżHQ|m92UN3^6>ju)M;uZ9ch[K)R>`D f/n2JGK9݇p΄{/mB'4r1{\oqkD/BvuYIH*K^kp=6+ۿVlNY%t.~,97} ³]dwU}ռИe{NRdkѕ:GMxpTC!M{G$tsMePPt&G}G4t!s{@Bh}QM]Q=PPP 2-kS'$-ι :(cng:Šf{tZ 6 qm+ȗSdD\ 2UI1ܪ<7+2٦oUg~踸kWd(84nq{Xz3Pwm7M,͛CVXWv4uZ mvPtm{C鶪69 ̕\Ap۟DD/[%\ l@R'p<6Bw~_%Mn\YI5#y,# Rи܏EQ AJV5lt%i7m},}ᵲ8Uu*/龎=axc6<&ibya\.d5rTܠ}6Ykuuݽ16;[w -,J \[Wi>$[UA#`K\j<ΫQıSY(lu&/;m]zJ;,ϊN拋DѤBċK`'me>?KlmȥU if>_}_+uhkF)ˠu6eZ&ZkbRS-$Vٴql8PNa ^߯GR[A7脭l6 'a2푁!P/um/sw(*"ϕΔ8/`>ex'KF61lNC qŹ5s[]cck[&gdcbiX%w #Hp?/%iPe:;Ȗy.~.\1A7% AT# ctW,cZ t[)0d讻Ҿ C׾UX*]KT\=Ӻ!$;kvi͹IF*ٞގuW_ICy0KeVn.{vGʔ썼V1vfEcڹA ,ULȢH`֍J,*L*sd[,&㜲6ڥ4rbL?~6Eq׆ NT};4ly \qkCَ!CqcH0GA% >S|ױ4yt_T]PC4[=4G@GuAB=Є {w0,hB=4G=P /ckH XU$S$4uΧk怤w?tsB=4@EAdS [BЄ @rB9"BE@ @E授, sB,9"ڢ"@d[DYdYR鐅"Ȳ9;"ڠYmQdY@GTn!HSac{G| f|7%1ͭdZ~jWF9&Ғnܶ ]imA'[sTȧ+'Pl,RRhwo=l%B״Bټ9ܴݕ:\sնń9WAUUn:/afAu91&QksNlѻbdx~62 IJdvcqwx*}9M8?^8TjsKik:ye8coe)dt700T4wdk "|чp^!G;QEVIlu r!lOi#oMVJ P\D*2淌3&T1ymaЎ^KO4 qsN[y+Qd8@/O~Nx_{F$o2B鰹Fcox4窦Ls7]S^ܽ7Ltj8_Ň`Ѹ8f5+rݎEUȬm+p1T UB5Ѱ45|_2 /fІxnKfh?Fwk%=$NT %I ύfgi[GHԯⒺ-p[Q: Wsnɟϱ͔k/eiEFM3Fg:+zvJݮvW5wmݦ#cðdlFPNjJ2sM6ZcUpGF>75l޷{-68F0Ͽpo\'?_xXc|.8_#֍;,=KKM#dl!?UkT`Bp-n lb[4^_e]& USfkX`d&~'>X'&I%=@zY~JSsli{Gnʩ )ΞDilkW*xMKGM^Z&e&E9JTe>g˥o7\9|eèi;_8'8{O^m Mt  Vl`uwS0X6ظy,$c)ӵ;iDzIHbGeEro-U@ߚa6H.}ozJst=#<[K 9#nx3_A{񼌋"وtLGh>}BNl/']E%}y'}7J|DrEt_ E( @@@E4BD{h/@(@'4@;""h 迚D_}N_}S(迢0/NiEЀ/"t]B.h/t'T:4}DuEE(('_E: jéĵ0t$ny*%̑AP:pw'Ro`a,}00gIK-,@W6]AjTSҴamOcv_2&vq5vh2$~brnJN&ֹ(}$Vb׹"sgvUfS:5 {)aNOn9)fS%Me8ܝu\h6Tl\M a{gE87 nSHB:tV'neYZ!w/pڒymQ70 $ gcG{-( #Z.}]Y=f A=Dֳؚ@ne=,i6zmp <*C!@)|J׀ȵFJwʨ,'R$d19eBn㨘 mT4j5 #3O;l[-qa Wwnc[nkZ nkLAkS'i2`p6+tuyNW$Q9eі)R͍1Ŏ7%{c;X>##CYm]%l0my_:H#4l6!y}Rwx FlON5huK#L' 1^-R\s -*I>T_NZ$dMu>ͪ\kjXf2SJ_sX@ vNn6ZVj)#fƙ:7\2ޠt:~LJ1ϒG4<5}ĝaS%E^9r;N`m0ύ}T⽎c8c&U%Lѱ - WśepvykLwEO.;}L EW;Nt]B//t_/J. 迚=SDE@@'_;%}<~5\G. }rf_{4;CѦ_TE l38~)VivWAjH籣iվWFXfɫIl&FF)JCɳq[T.hdV%n[.w2&u[GENL'i{9}\]lSj:;{u?a^J+6&w6fS_;peW{c=.09&'.7ʟ#-HaXYAWa\@){GZ ZXm^BaAX5KKGT3FckEu鸽crj'YM+|_⸂L67##xYA|,6 G;裡g}.tbĢ\t_]нF]@HD>hD_D_+ .t fkoeMsc˗:,FE{2_wU洝;}L迢0/NiEЀ/!D;6d/J. 迚=SDE@@'_;%}NYFXkbQm9]aJ[Mp@|%ŦtuyG&l8WKʰ'34yu< ivMOBYf_Sr}=xah0 ] 6=Gw^Nrhy^v+_D3rFW_;<4suLvcHu-wUUꗸ:7N؟+7]W_-|6\?M+:;s %N_&}GyUR]-q4^YxM:WF/BNmhۻ}\SIUpKJ/x uƚYr )G{vW'jU553 svԍuDT`K ݳI(.p//;a*5qA%%DN#Z VA1d1JpǕry,96Mp %+u Ǡ:8Ce&aܯOC[^41p-& b3;U&-.cpԭI\ͷQot{bcoɼT80.$=>b>itW"IKon8[$l4&/)П|r_)ˍm=Eȶs =Xhv%[Qdh t*Z{1P ~SRƝ[4T|@h1[#r ]%r$FBY20MEi[.OU3 컝z,'PF~*(A6{ou|:N\24f. iBE _i.ٲS:=,lp!6Q9πK3m&XF-w4,%7{I`~a[me ^AYS1ͬn/36 a~├nJWRib}~J ꀕD._EЀ EQ4t]G>'TJ:  d E)!ER,hA#; O D[T(%$YE!B!hӪa@@/t'mQm=ЄT읐BvԢ@>&B,^; BvEB3!ѧRE ɥm(-: ,Jڠt&BFJv@/t'dY /tBd"ۡEEd #THөNۢEBd P E) w'/vdŨZ S-{5&0\"uOCW[E=D9]koȯ"Jp'`|uN:\AOH[Y3HQ?7+gMpLPTE#j%s&nkb?ǓG6z8Sj(`|idoPm8TR-<U"*1Lx T_y,Iךg~sZ@樽7sHx:,,v7\JZX5BsmSX-ˏ#i!;xExm`"BrW7#R/QcHphƷRdvG˙W,/T0kGuD;m~T/=k؋( ? Úb䆴f$wh6EM$ Y%r@ c-I0 \DтA-: .Xhe4J朗[UkpwOg!8:}l18fnMz`u5;UfkFdY7A2Hh]O s 5:}MN!sxCeŶݟVҤX2˰IL3_S$nauy+wMY,W7|kc` }lك~"ЖwQD2F&bkZd:F9 q[k4.{# {sϟ% I]uNg9}q8m5T[r@onA+rNWq*\s@\s3*H%× /TՒG.Rfu)_9 ɥm(-: ,Jڠt&BFJv@/t'dXO!$&B-^TYBQ5N!D:,^Y$AhS -:j2%~aG`}Fc7OeRa{x$0Eױ꺗6OQ -6;86#U&"s* cKsU9+䣼OkE`ᆬZQ֗WGn.VyLB N* Q1跡ě>lam+msY͡q}K)mX^j*ܣ/bҍvTX`6HH{^k MJDQf1iAA,)7i${]MѶ6!kϿtZ1▫]/.p?IT0ݏ,~b=e j-ruY#L,M)1)A#˒;m4cd/256HE:6;cb1yFֶZz}b`upQ4Nc\r+_vcei,R om#v/#Q-[^'øFMI2EϚ㦾:duu[{+0,M6.G籭a&ӭ%8 l{FJ VgG ed9!c^@Qg]T}&Y%tՏJ$t[Y~# R-I 6Npdkkr@-d eZuEӲVM$Zu)@/tY;j@L!HHnN6:`u}rR!;"ʐ^!EB3"A=Fd(RE 0 !#t=m `!ER,hAZЧdgFhi6;z.5}8ӉVjzD6 ;ŴW8f%>V*iK(u&f~"ꈢlJ-x$8rNjD-r}F^1A9fkݳOrF: <-qm)FIW4w>fkׇSԩ3F=<Һ9ctr4ص*k).VL&2 1ؒШaWMA_BJ2!rE9L^+3\E|ê)]-4l]# E\iC R<7w1eF5veS{r>Mˉ#c}qoWU IZcI $nˉ!^EWN::YN*4ͧs#B6yƴ2.:"\2kσ>޻%$/kvc@N d-aoE ZA *\/PA˧ ,J*XIS!|Ѵ֞Wgy`y_Z6gsAGh>c*SZnx{s[p$!};%s]w2汽I9(+f2O;j4`]p*i)fyðdf8_!מjJyImEG@@_r'(tb^[`nbpUNJ|skjFr83 #KkIic#fXevsOAEέ';,rJ^y/6aJƱΉ:F.䣢6.q<>9"?i\ |R:TVCVSU=i\-9g)*I0SX86p'v 1[X#ź}6G{mV9P[k...чcRB :&5&0K<nP6Z6aOlI=B(;YM liE%<\X[ܝz/"=:,ѥâlO3u|F%k4Jà=UMi|u)\\n ^!EB3"A[T S#NNI@B(yE+sL QA(j#Ph5@$ot!@ vAAB(Pi h " E箨AQdsB9 PIiuBuL2B9>isB 4!B4QPHBD@SK4 (< Ll"@tu-Kda,{b"$^`X9qOԵV6G[ |Wo{,N ͂Sr i_:@]KO; wڅ"cYS8HYIT͞p JzskYD`J<]`"hh'_lclM( v<hZ!vր]$Z6UHH`Bh4U8tYo"~[.)$7az^l-ӗD$f.W\gشs*Jױ_\7߅Zi\v̛)KF-CΑ8&S.mGݭo6gȬfyXl90fu:rYyČ< 9Iq6GcQ.jdt1FJN],I"fO \K1,>H]Z昜Fpnnw߭-t$i%c(DZf$qqY l*n2~\iOO#.# #5e]SUddhߕ|V !5SEg7:J.OVϟoi|WS[Y \vYS4Ho$/q+#XE:&D|̬h__rTH.PHB4.hQsAB94 !P&B :IA>iuB怄Qr)S4#.٭j秦9*3Fַ`,o}~Yo=nø<2GX>d#nY0>ث?fa|Ӊbp;se:05%oWea7;#Q3kkQ~$GYV0V8P81\5xH UT4.=XƂjULwՁ'>Gnۏ$S>O'avr.$hZiAk3>AV51b\asaoꓣkcͭ^٩0! 9+#fkf YCQJk_M`dN[_GG)U1v +ﲿÛF2F#fh*xd~bmk /8Kݸ yoЏۯ%<j0#I9jwYba,5 1[d[ I \rOsmD!؞]M/u3wr4Ze.*Ij Cw 쬩Ա*gQұY@~ku!5=-<_M,;- {䛜ҷuKiG,;Eb-3C07X@jll}moYP3__Cgz]`kG n ĕidM4` XwÔX5>D4>eء{dh|i{c6/u3`JE9kH}o?4V@>I@ drG ,IiuBáFVo* -5VDa.iKsAB94 !P&B :IA>iuB怄Qr)S4#A(irB$rG4)ۀQݷ.H@ 20wPlUkUK2G:y%j˴,a|O[d,{toWc_F)s#344K\(\Oɛ.)Qc9b-byx8h 0]1`2#j/qF'QIIM,,@%'*+&ԗ_I$#C\[vXUTH ζ@`/%J!blך>;z6%#Ub@, sɺ)1Z3W]3eIҗ l:O$FFfpi!V8eXlnYG;&jwUg\3y쭈Y*i m\Ca>?nǺysXf5i$o$IIQ.9<TJX}U q p{иZs9>eE,u]T5ŝÙ;(j],bCK"vի+x1iv]0JKdvg8J2f0a`o^_|}+89gSk^gjK֍1$43rK*%T}#g11DiUȞO}yWx1zv;E4緊ƫNi!dOb/yRf8n_J|2n-A22H(ˈeD:(URO9"{86-Y kr3M[Tr96LKeM$o{~keVY-Al^9INKQ Nݻi#zb4HbBZ<|u>&1 zR'Rd[_G&Ux"6  5]GTS9uU5LƎ.sf!準9S|")#i{k2:?ARc:|ZClvknnyB$ql7 f )j^8rlw~j(i"w :ץվ" gtB؀.R8}pQ$#(p911.7[uMJ"\l, XJf>F:Zsr*Mİnmw q(cblLff%9jLs{A4_\۱w܍6>~J=\.cl08ip4*8{Z[X 6ƚy5fvyc[}tgt/rȾuM+B?͑t]/dӾ_T(͐PȾ6B.ElB I?͐t]6A:}Ⱦ?͐t(<%H6E)d"{+1N."ihgb<,X $8t)GCs# . \^ aa:g]#w&/y 8.SK{ Z5ԭk#8Ť1SQ $v1[mwYy=ff1Zy(87f{ }C㕱6!^V u:8FN]3$\d\jqp*ZwXomlHz/Eqd)v)d!:%V=?LOFJ"1hxOhqot_R/[{oy{;+RՑRӴY܀OTŰp|Fz9"upFpNn5cci9.mn6Ukt`04 ȯtpg96G$E_T/dt Ⱦ*o*{ PCcr_Eȿ͐wN}P6B B_".h@)&J/6A4Et;BT"@6@ELhpHz}} `d"H6N%EBrG?N"A/d" % FR[!2&e{r'IX.:{EM_ i`'ilN!_؎MEE$-A]b<1/qOhkj\]MI9ֻ@˩Su WTw pwRvZH5ҼFf_u[# be!G%m{,|%IOQcf %[5m r}BkV91{s8:\V%~XZ[o0<}>VX?AG8}>QV|%[_%N6Jɥdy ]{ ~r]gnLѷ$pkIuc}6\|c)ۤb[DҰebLW-k8T3Ї1{KAia.xvSdpp[܅ֱjJWt_U@͐ӕ:܈ 4IYNI$PI2 \ZmqЂG$} \FuoDS#A*Fc4k 4F([!ut\ =id|rFH WL.Iv)tP K h MO0 h>ITI4FP @$,Y4B@-DuM5M.(h:!4 KK.hQsBӢ9Z#D! !dЂ6F(4B@D>MQDuM@G4lQODNM.h?W7E(l؎``i5L00~#td>v7#Bʙ! _?nV`ձasQUn,{}{(Լu?1 hi~g6IŴ}lTZ_0 Lhk6=w*q,/- pOcĜK9:\:k(ZSM+*r2arc{>'80n iXpkqsi<hmC l.6!u;:M}M.;t9a >ړkM7M[v/ 4l-N`ᨰ[ϯ8itH(|FJcR#M[GP[{F~5Y;*6O@ܢGRqԌE55MLnkLr5tXhk}6`o¶l4^6J3[`njdmpXihnуqc ѣ:)껸$,aur#jҒ@ƉXYޫ!%D/s]|Nmv2{!Ev\G=sNaH61%λck^$:Bk1,sj:]^#IE $D M.t&Iu;$ e(- 1$vP'ZGf[fNYnH%`.4o?%m5hP eLǼG.J ÞǴ MI?_ 2V8G?5{21 _K_֎'e/bۆ󑧲bTp c /yMѵ9| ʖtqda6ŢéVUū R0pk@oucTx IZE 2Wԑ4.kwЋ_1RGϝ iрtTj$k^# ړEDZMQDuM@G4lQODNM#~f|oLA<7W<l>F98{\zbUK-Ӗk? :.˸m#[>!ufy*q@~_&& B٧|Y.<@@.:"_\D3f>o?Ua#56eRKGQBֵ\ n5qٌD2]gAb=[d0~RydL!&ÞWhFL0z4'ῚcXіcu^GrZF@~SE^fƽU =܎#Rp,avP οCEN4N6ݡeXaV5:+|'xs\@ItP9skzkѾ?(d!ѮlVL@D]kMɶ ±BX~B6БgX[ !j|n2}ʎX0U0"h٠\߮S#e.{A&B*p :>R-$t6*԰k-USL ` }AU'{n HVSBq!k\CmꮙN3bF> 㒀ۤzt_J;fC3Cfr: ͚BؤrԬ,3S{4>nWGn$;{sSf[Ik gUw}.+^ ĴB.GE_0t']dz.|N,psß'7_4H/}sTUL->vbm/,qG<񋓤`̀-%laەYA-u\5þ88:O%ƪlV_N痪` ` "X;Ès [ZQx^z|/Fۜ_~ּk}/z>㶹Mb <_}D 76Ͷt%``v"TM$"{ĞKQkCE:S_M 9}N[RO>LiʬeqhUp5S#3nssPl_Ǒ%flQ;sLa{ĴW[gx$k홲9u [C|9GnmUF:5SQc.C8tO|ߵj y(yυ'?rKڑQ!S͝9$0\[07ssj,[q< &G4v﮷pNҰq4@. > Iޙu$;DH:}Ϝ'PqZ+CtBjZ%4(B 9Di@-P)uI_g|#3~wX;m, 5Lo vR* ]`` OQrע#DtGUBh]=;t% .;YV`R2KQ+ \E{r\tbdn`wq)ـ("}|U}6HHޡGD#T B$:%hP䖗FG4 #Dia$ (7Fb7f0@G$ $ {2:[ma9_/Ln{!@2nB4Z[!G=PӢZiiuLi%ѪQjz#Nkt@!KTBFH =Pn#5B4T@ #T #Do=QztB5G4 hA:%zLq+xX TauڊgCgdvt81Sw(ώđk{\HfuEF t3 ӣ{5ǢbqCOUMb 淊L"vWKal♦4ֿ}FI+^I$LEѶGJ,}Áܑe88'T733t]pYV_ 5ĽB8f C\X&jq 8Ev+i0&Hy@d<DZ:h^赞( 4pEO2Rك0=Jxpnwf]_c[TO6;#Mb=B?6[j'.E֊fy~f8=G2x8粷m`..osQ!ty.z(k\ {B~fH.cHy:,- Lm6 :8I X4ϥB9"iٜflI5|Qh`3#IS\:QamW֩Tpis+Zʛ7+؛.j{5{I(.cx"O3:.ĿQ3ܹ\6j7]}\aeZ69ty#hӶ#ki:9;-'.klZ sm`Zɝ5MpxF²FHwo-S8eWv熽wUg3v4I?nW\D|>blFP"\O0*%ᵬH+iLF''Zƪ*`!-6Ce`LJumWMZElKx*KD%z DOTT@ӢѪ4KKTУ$ F4B5I =<z!#kGtjTi.4@F@6FTz%ȣT(薗OTdkhژ1g>lP̧-l ѓ$m%nGSd=vY?j0):/G {V=-C[=4'$Ѹ]H#~',y\3^UXu3b|9\{YÕxぁ @p띴?eoM1fg9̰_uYˆ(abX{%@ZŠ_]WˌɧY'l/#Su$ncqXS: $lo/.k#KhG.QH&quw3fjs0գ{\Y3X_͎dLF">VrU+pns.ţWˍO= b&@ݑ_M,yJc.Z2 ]ʂeFHCd6^TDTR4{6G-v >e{c-kZvˢmT' vgO\_fceBv\LhZ؟Xq0 Cz f!Sph#_{,m D;<@u"bddɌUMݵ,7]#QZIS[ . BN<~1 Z4v'(t$bUi>7YZyvx/q|9CWX4n|`:-:ݠ KEJ<̅9ϙ&GPܱ63_Z{8٭/hدӥLIn IS4I.:T|(%l91m-z#T_@c#[ڻ  Nʊ3lˋWF5t.VKMUQ+Gǒvt/e 7Bg؁!uk(hs /kh"#[/I{?CRD:%eyDAڴ8S>=]B6K4}dL)qm:se !.qK|/9g29 Y-QC jIhbTB4脍BD5A =RBDi-nD#T j@(#G Ђ6z$wFQFꞨDjdh @'\5BNF H7@= ,FF@>HZ @*rMjUH}4eW.F#u&Fֵ:rWSiQCFX5 E#27bd&Z.{+vűXlxe([GSaFoԷ0%E_,Xzy+=Q llq}-GԳ<2n(CGmHDI#ZC4.>}r6[#g rhG|c$yc(+*0FCsE1̍ieCE-P`5̚M3QF6#i"6$kע|6&&,ds@B)K]Qm6v-twE&Ň1I-#Zy*ݒ{6YE$%Jn ϙ3Oz8c=#]N)i[RqHI G\cݭ7p57z躝El5핲uE,IiOM]0 5C(<yo`cH")B>$|PSx_#Sq9_Ś\ZC*Aaꘛ/EٝkrnXRB t  S۠%Nphss OEJ"E낪"7x2%[{==TnXo#ZM p=Pnw@3Y+ǂϟZÛ#pv\ܛ 5 2Kˋ &+Yz*r@sU [p4{*ztKLl4B#N&v@!4Z'.hQ蕓BDh!@=,Q9 I;h:KD!͑9!@ Y Ӣ4B9  DuBhuLCDiP :#DsHAB4FDh!CN@@ 4BOD@#NhPy.E14#4FL4B9!id+>p{i{ LXl1 s݃p9vxub [ dqBuђyǐ\ӱ6݊`ԓBem1/ͻ-T cɔ|moRNk~S蝺bX T:6T=m@s1`pJTS;3w&u sqI{)XC݋5msxX%V8r+~Ύ<#_ 3cus;c4:s]:'$m 5ib61jhbS!sXFev"Z-.W|U+-*R T /لYr[#uj09ݱYFx7tkm[+;Xװ=5 3bDKhYi8p̎Q&6[7w큭px&ڕ"KYrWxc4re&r47LL;h9.=q $Hee*JfF-Xz5ͽ"C|G\lUI:Y*! pS3$6f7LRHh4"M}[##`䛋ysf$fӝ♡]OQ ŭa+CNSf1,#ub7KKi窦1H)Zئ4mu&87ܖDFrN:IHiD5ĵ&@꺏qCVCSRY]46U`:r__.S%G$QkYIO0h!DiP4IS(PtGT!N;GP DsB!PӢ6B4F( !#}Ӣ:hs@@#DhztKLl :!)czO>4~nT<K3u}w¿|rKecNDg6_#|7Y`<9zaXc0PƌiX}iCB/ cxK;$s?SH tZ1K%3; m(st{M8ʙM&o / I{}oԬDZ75gj 3 {5kugJb-}Uִf# # @SKGۜ3B{`ZU2ך$-GfAwi+>7COap4X e0HFt+ 5MLo|w7jCF\̸ۖwMp}N#ER긣m7{V q#)C33>K+TT6оy l#v$^am{lm<ǡ^9;f(<ek#5E H$Xu7^11w=ukkv-q7h?vOG)D9au┡ED0{RIאqLG P #wLͦ**ќ6J`dc @ctc0(Y;%nM.@nts=7.;T!N;GP DsB!PӢ6B4F( !#}Ӣ:hs@@#DhztKLl :! D; H@Y]4A@SEVLȢaY lt,b1Zbr:y, fu/Ǎɞ8g\`?A;éW3\V3%Xkt;T RL]gԙh7'.مp7OA"K̕}?#&tVp|v: [8& Tk:ÁHoe7+)AT͎*=^-L!S;K6|>pǸAy$xW°>Sֽڱ35e~(k"ce+$>[kE]}ƖV5 hk.7,:`:;3nG$l hv 4ΔId7{䭤458KEWU.8L|GsyH}nFQ.[a2892ZӪbrH$9{ђ9u>ic(ǟԋ^$TӺ)386_qnJәu:~!N_y|O]}*cx-X~H䊞7i)&SnEW$h/B#M{*lG5)y)nMUFX㮈j2;-@;! (RRثn^2݄}piKf#vwOEceuEǍ\2}DC2#.F#2Cu X 4m53r={}q3 ()I> !#}T~u@.E19Kis@;!rM.I$sG$s@H@4!vEP6@om>(4saЄ 4P9 !#&]S@GePPI.iG4(sAB94 BɤB :A4B;#}Ts@G4 (\cdr(4vB \@.K/e1])=E>SPئ>Pkyl=#{4yòf! #M|cU#j qW$Q;騛3"m h4m_emƷbULBAkϢqW@s](lj^eSISLII;&$ 56hZvRŠw>f|>sf0K 4ȜL_-Ƈ[[V-DbY-=-eTlF74d=i)N lZF Dl&2˘6`ך=dT:G'w9%{l("G+]4 VV\z9d|,.b ),I7<饖3i\'MQ$Ħwf~QaI )Y{cHvKdMTGT(&hAsK| Pi4BiЂ(ꂎPM$ЄNHD4\ :"4CRH \C> éd5}[}.>ٸ1%>qɌp7… 6so9]sJ#U8%r8Kxh ~-Qa acGUex>I% p :ֺ\xSc-am"#|RSf;Vl5+ja{Z4< B&59FCchOdS5;V{(#cD`njӛMFgċ kW)Hv1;],9Z.@'-}&UK=z)8Dֹe?3_lJƖ6׽ENNtgi-pZm:<صD3ۺ p/soSJF [K/\2z>Vmxi+rmm,˞?{x+dC#{"^0 DpZz}Ռ3M_S(FR>:r6ds ?e;D~~2fFs=CǻQRUI_+4k"ovKMU\COU:i,}ӰdsG4Z-i _<KekଃzF<=BՍ|&77PN}Fy5Be\ia54o X86;n9/6}II4L`,/e1y$`2x&}A]7'#db2Kĺ45NbkHRI\lO,Үg$giuM#GTu@.E19Kis@;!rM.I$sG$s@PvQ{g[[?ZU7.Erzh.{P'p]-ePosR(Į6,1^ë 5LfUkI)(M2̤tytrw ([$-tMkUv2>KFϗƢy^\,[(E|*I͚ mGJkk}}23[v5ܮvn4KXa+zR\ַ+CcGTGyn6OwEͻy1mwJI5[(o0&H]-F K$oͼ ^ [!B e3VXw- @hO[}SYVèOpn} AC(#/[eY#pɫS)1&+3|ʡf#dQ3/Q7'hX0F[6UxQ/%dE@ E{Znn&U,2:8j'{x#i!YYiTEF]MqO`n=Y|%7|6g1we/C~a&2Љ2X&ouqTגѼ5S?iiHr[~㭙ɃC]O ,&!ZM:li e,n7 V2\΁mĨi3 o]8)S-8Uӵ|=̍#`j&anabV+raTmkk}/ֺY9M5a!=ecd/:oe#2RJTT55b5hZlI~v# 5QalA.8MV 9͉eYj=k_iŝ׻WDx͏8ݦs rc& UiySݓת>H5~w7nֱ\`ͣt@NBORM52gkZԟO}bc̢*F6eAw?EO<|_!Ѩ㢪4M.)%Ƅ!R}P,I VqiУIeN1XLJ&jhOSmϙXU2cE˰ }HBEЏd锺Pt]6BKiУ%B/.h6@BP!]BH:d ] 40RSBBJI}H@ge h$Xv1<1⸚V8>;^$Xݤy"9>(GWkEʹu*gk#㑦ťzspcD05i;ixj^~HmѨ XܓKK)\Ӣt"HsdwnEu":#1H9AB(Ӻ?eǍLyY%;@5sn6Y؋ &[!~6<<8&qo)pr!z#2w-( VЏ;,hZZ-܃XχL=zwpxd`/uZB{@\<][SRZWy+^KмuI(f nP3e u*I!Ik7i:c/u<.Q27o.Jީ2 ms[#*)4)GUk2aDvMgO^JØe;lr2 r%NSӾF8h,iLAnV4ϣvW\Ѩ~0\?pO#lLn-ס*jwٲR:-0&V># nkYr&Jg2Ϟ˳{GS$f7xI~dcjp(MLs88hJf!rMGKm<7joQ&܇Ppi| Il 9mE-#9}4,Q⮚I_UCֺ+5Q PʇG^ڗchejXmA˙tqxi uc#KU&jXu7b#/TjO=\Fw kQMQė=lxdf!!sCBO&5F ."~QB3eϐ8~G-/w4RD8H #t l]P f{=WKTf*$%)d/ )p N̿V1ۋb@.u ϋ~LS3qo RG3Y FQ9 aS:W%ii2;.׹sb*^ w[;mgM$һ48%:q TL#z*a~>It[r ,.H.@#@H[@;"H./蕼_}SK4t_E杼@;B/蕼.y#]EdJ.d[]EGNs@;#@@E Eo$[NHE.@Eo$Y_DvJH$o$y.O]Is[$t@peK(8 o|\ ~aYqJͯv#!ZcܖV,tP2t5 VϨZD"),2x1ITIKӾG74ysUI(>R&G  D3 G:~!F#uC si6E~>&q9ASs2X{^lrgQ]x.ϥ,KF;sWXdl܂UT $\8-6(Q kƎ:(ζgNgd/eXJck@p 0y:hddLub 6 z^oe_q&i dڌ~6I$@su.9hbLaTZчQtԊv n7>6j:CpMEqKC45a~U6~~Zw+ $D2^2\[p*c% `oጸO4lf@JڣjkgQAMH[oBL>Vf.d'>R۪)?edUx`^퇸&ݧCԃrN"+.1g k& ۖˠuau^U,й&^魉;rRJCs<9z$ 9o$<o${ [;y 跒=3^Llo$[[T@Eo$G}Ӻ\E{"Hd :Yr( Y; \dY d9&dm , dYHV@I ,BVE .h,9%d B,@4rEdꚍꂕJȲ9,(Ed sMF!EJȲ :Y&BODj TҲ,9@E"$s@4$Ҳ,N{/g~ҞӸ\CN+dkog8:/&5)di*cCs`H CإUz7#N2g_ A9{Xo>OãvR)$NqJ mnuŅ݇Q"wVW)q,[p ^3KKG@csH{Y2Iq&EEJcл%k쵊o5Qv99eűU#h[tQ>7d m`t%;nsmKQhUqW=;hD[\li^̠Z;W=A\I6 qX\@"'M~5Ts0tHNNy\)˒}+*4!aXgmSo䮩X cIU{(Q dL kh09m=\krTj*\k!Y.ٮVkc`pu>㽢U5TJͽ]Y?x٨8uS.cy?qqך>'YnT 2OS~j 7k*_avZ2!@ Y 9"ȲMFuMFuAJ dYJQ"Ȳ9d"P dYPB,J!'"5EiY@Ћ Q"@J"+'d*/`"Y"Vd"O KzJPDIC^;0qzк|&~ f O;'9~S)a!7}}SqJ[`s-wQ:(!c!6QG=?2JD!ud&^m5W<_NHC24yc㔒:jspMW2K}yWee;kǒg[:8H8E=OSfP:huZ` I]\ts6;uw/A 3byEmG!KT6G"ٞy4u>/M[f-c~|>jƫq꿉 X,++/~Kr>>l#C_L4sV@I Y@4ȲP(A@JEj6Nj6N VNPM+"@hVBE5'dYBM+"@(dVAw>,}SJȲY !@VN4Y@)Y; IdYrG4[DB9" a5S>W8^l.O̝-vu kx{:i$t%W>B;VyA%6$ys6ws#-tLc7k`Pw䱧X%> >V .Hf'yf0i5 0;Cܳfm,j>};aCߔ 50Ns3ݛG_E\dw^M3 I_9+gpuָ]/2qojUFM+Kr5 tsN}Dރ%򓣯"{J~YH%˞qGo5Ɋw 5;/7&:yؿI[wOt\7^?WN[Gհ'Fmk-&)NL e0K񘵁ٗh߹ 8TS+cg4Qu;Ky(G=eZ9i ysb'X_!~n'!KR"nb;cR8rGsj0Ź[wo-ߜ|4zt\#*e;%I0o{|+Ue9H:Mכ66/&3NH HckAG;3ƿSX` ~V,f M Lu zrZN&Q͒&Fr0n\H,_^.3KKK,TfHyͩiT Ùb+l<;|:3fJҸ~ZM%Cd^|{<&쥆ӶFe-Fe. K\`<]4Y6UX6ЬeS@Mz]>8M;,a chk]bOSRű2X'Ӌ]|7]IXuRfJ5s9c˷.kTIٚHsHsg5h%Jwr`붞KIhu&r.vkE _p0FzYqz%K "ZU=+Z Wtl^X*0MiR2j5E$e9Z7k#(?6G[mu.p; GSVidAq /P|aZG ӪMuxŢ 8hxGV=9Ni_g9*/vdg\.*E ,M ,P?p%klyW22_nĒ? >(VfMM?SY)y7Ou)97z9bZ,^qG.mtU]SWTgsC Ԁ-eAk6 ^^?j0ad e.Kd=\~t@4!З%;!$H#/o9 MuB^} e.Co9wGt( sB^}( 4 uAIЏd;#=tH@cd@4sG${}MrK9#!^tS 0*tYIEI8F /8}A;- f׵-pBMݧA:94Lu%,rUp|Mobw}%Qla2dH;sVQPQiZôVJEh'4nm\tvt-]kYY^d.sn\O2KCD\\eA'U\/+~4!z I9Ѐ P,94 4@+nM$_T"ڠ!isM CSB(ꂎ4@+[T 4B P/B-BHA@KhTrE@E醀,䄠4!PPPH"!$HHisMI4((PM$ЂEB-B94 BG$uAGTIB-T!@(@ССM$ I4hj9!hB H&E BI44# %T-[gx1Bo\=Vdkr#c/.93NJ>Jz󺺆lNM,`f@Kcmp8O=Vrr[S%.[_/dGE|3QFfuXl$ %FihX&@ ޮpN=6WRNֆ14r+5MH]_,nپ5QB,zBG= ?t!uET#=}Py #v=P(XB>B 2T!ece>cڐ5Xnz+ұb.7^!&SvpTcFjoqE[ۚ)m>V> camVZ-$♹{gkrXY~ZbM2MY30#@6 kؕ%`csG4R;- qe,ltFg[R?NbAsp }y& iEs,6ʹbh4w105كQ-Ik㝗kIGJ7 kW>QZdž`.MkI9-j[C^Il~cmԔ29ή'caRyy&CwB*r6[z[-ͥ  ؒ]=B}Q th@=Qt!{@}P !{Ǫ@=R;!s=PB BQ t{wO@Qc y!@.GTzP}PdBt$XBP T{6 k@tMBET!sB>BC4 =Є tXB>T=c BB9G{BT!@(B=Є; }P=PuNǪ GA&A [@KrET!kB G C`PDЀ tXB=Є t!{=SB['x_{Hm,XeN揊ۄ4`Zc>';Z~'W|GT%Rӓz!{,zTc#h@B=ct!Pꋤt]½OhQ9+OsUQIE+'5l *JȢisN>K\-9|pv熶<؝@ Jlm8:ָ>;XN6[ qrٮ{|7$oUvڧ8{[Ÿn+.FZnuϧ[|3딺17 J2滛Yp\Ep~3*(ccvxI `u]h Ehxt,:H䉃oSr}LϖWHǩ]|o$e'g7&!]#%XaX꾧ё *YTQtW! S ` r)\h揪 2tI29!9%>Is@>AG$ @肂RC`w@Bs Є #(@H&@;]B@.PB>@Hd@G4}PЄ tB :]BHꋣ>!h(< LS@G4}PIh RҺ؞v&Ep%ir噯h.,s-R:cDC)fUkhpcq Ra8Hൗ,.v_+2lK£^"«LQֺ7GOUbY m{+4_2H)l6k{m&ۯTRC/qgoFGGW5n@{l彨L_v8 ߚ&2TX5e1V{t9 a!܋7f"^arwםŇ:t!/S@mkE5+ɫxG8\WuD 9sr~`*2H,, ]aŽᘥ[d~\ \z徇q(Zz /-p .IeÑ(GydQܪ.zy6RrR@W\kam&&DB. Ph@d ] AHG$t!GRBT]wM#!_T]@BB(ꂄt]@#w#h. ꀄPy@.E0tKM]B&N&P$#$.h"t!PP C`Hl@@.a4 uR ψL{hn:}+wHЀ@M.iP/&ְRJs= HA%z@]B@.PB>@JG4--DЄ tB :]BHꋣ>!h(< LS@G4}PII.iK9!]B'D &RKM.!]@ԡЀABA4HBEЏuL2BHGt%B9.M"GYqCAF7s(W eho>*_a2x1ªB6;4[PUc>C(>Fفgy?l[TqojObSb Sa!9NͻIi/=;( X0km-niI#]l'CnPN9}LٷR\[ wL$wMuEE@[0 PyBr)E,je+ 䄬$"ڠ r YЋ"B,e!A@i@>itNڥm ,JM+j BJ@@4rJȶ4 TJۦBG"@AFP%d sOꕵNVB!+'d uHd(Ћ 胺,T}R@D "JY ?9ȶA "" ہ86ehiU__)8>2/kOU3KOV:[f} ~#pGTɛn)#0;ZS>0 e#1[5M8k{`y/WG qSUUxe\2񇽍6fpn.WQ݇8ϋsxU4';dleY&pE@p9G1c~ 5mEe7|]eT@M1$\3܀t+q'0N&;'Y)r/uͱ N xX9NuGvRj+%0}w_(%dnqcsb yj| F' Z34 9qnv7"z0:8-|p+NL%D<]"qN|NId3w%ZNQ0*>I+`]B9B7zNBm7)e]f H'dX^뢒}3V]k-E9Ys)mQd(A Y "IY&uOꕓ]S)[t@Y;#T(diR!JQ%d,dwEꏪV;!@HS [B!GG4Y$VA Y; IsEE@>AEAHYC` |蝵J dY#,2V@2,.h䕑miY; TY;!E2LJވ@@F 7)hdgsӴӲ"7`?9FP3K,wea8qZ:FɟK3&lR#\ b lA]ߋ=.;d=k`};kDb{d17;r!cX9zvQTI4.|7.'<;-ER١+!hJR#dY 4"!#: !GTvB,A#tȦBh-Iv@hj|%dB,  A;j@4"ȲG4Y+ e4,e!+ Y]+" Ҳv@.RvBe+nT!GtYjB,?V; ")^)b,V;dB,wGDd((7Щ[tY r)tBAI3n9\t@F@6P6) #D] BG4#NB4B 4H 9#N:#N2Ti枝;FPhFF:!PPGt$wOD: h 4hȦSӢG4i$v+GL 8JxNeeVηuoWlGq+-]#)*|23<&ai6aicAm3üC3MxNWW;t+݇q5C8q\+zjJ$CH͔ka}{P+±^qx`$-val '@]BбV^e%͍,FD7(fݲw5˅K"l٭eآw2(#2I9hxQWS#*+rq:fg˓DtrZFeQ*n#e؃M'u}>]Z-!mC(`9Duc3mI-NZ94[lB+h&jj`[$w'u&<.+d=fDj&hC/97 3viW|8O4] Ѝ: e@(@ { 9% BIFӢuL2!tB4DQ#D!ѧDh(#NBGT #D >uB:N r)tBAI3n9\t@F@6P6) #D] BG4#NB4B 4H 9#N:#N2Ti枝;Fz!#o4ÃAH*sYqs@&0l>V2lFY[n#ba^Z.9MR)n(ꂄh;#z GTi #DPy@.E0"9N@)&mrB9!rG4rKB9#N !@4h94K@is(FB(AB@FG$iT#DiRB:!\ӢGt(ӢF M42I]PAD4!Y kV0ߒ>uB:NA悃S t&4Ld@.IsOG4!4 B(6 @M 4s \4 nP vG$OG$uG #hL2hA$wOGt(Ђh@tsMB6M"uB4!i1uG:H怀 4P]aseS<(8^dЎW4Ldp z1(*j)O&G,*J=ŸX8 p,w.zc m5MsM|x1m NtLw/v9KV0a/tMoaqþ`<6E܍:L XD%cG\oGƘV.fë"2B dfV _`x 4⢗h(c|h6Zq;2oqgWã q9\KyjȜwk?0,uUL{y&#; q"`hq:Z *LE0b4&_Hw?E,qY[f8:m߇ FLwF?VǥM6-p.[bu~nRO#4Qy!a%g44rj#˦AFbS t&4Ld@.IsOG4!4 B(6 @M 4s \4 nP vG$OG$uG #hL2hA$wOGt(Ђh@#hkk'PBɡPPB:"wM#&9 7GT A悃S t&4Ld@.IsOG4!4 B(6 @M 4s \4 nP vG$OG$uG #hL2hA$wOGt)R *"&G16 2F|nc}F"h7G4 (!dЂ)[t:DvGTЄN~d$_@(@+4[B0@EЂ.rMW>H9"h4&.J./SH BBh@/t_4tsB%AB@/r@B9WE@Ft[t(]M+}SEBЄ!还G4 h/&D(/t!;ڡ_t_#h4!  Y VdV%p,XU'XH9"h4&.J./SH BBh@/t_4tsB%AB@/r@B9WE@Ft[t(]M+}SEBЄ!还G4 h/&D(/t&:t[T uM怄 Qt ӿ-BBi hA@B9&W+$s@4rBB_AB%A@@@)t!!4 /H9] S@@EB9 @+a #}Ӻ- .&ҾڡBhBt_#h4]@B@"Qtu@G@DS-E:c@(}P}S%@+#NQ{"d{t]Et-D {@/tϪ.tDyh({'t m.=/tEo4{t]T%B h Pt^T]@+y;dҾꗺwE 'tGwEЂ=Ӻ/=Ӻ.^GL] /tϪ.F ;ET{}DLz#(YEH%RJ|1HemM2:UfV$b& HcULYX5m,llM&5CNWdQwP9&B4MғSN"B/tЀ/ꋢtDyhB Is. oƊ?#i[87e9t:3P&9[Not{\ {t] -^6*4`Z[Qua=.p)b~!&.t{~)f`;zVBs{#FgkXI#-{el=} 3ꋢo4{t_W4XPM) s?7T{y{.BwJCB hN迢^N{AZ2Qt(>.DjySut_BJ.VG.ТOE N{t[]Ӿ_TO.^T]B B2Qt@NA{'t]{E^BhN>{J.@C>.VGwE ɥ}@/t N_Tto4{t_ /t{t]Et -Q(^T]@"5ENt/^T]}P}S%@+#NQ{"d{t]Et-D {@/tϪ.tDyh({'t m.=/tEo4{t]T%B h Pt^T]@+y;dҾꗺwE 'tGwEЂ=Ӻ/=Ӻ.^GL] /tϪ.h'T]uGw@G4!(hPKB,I9-B9!!4 P6@ B9ڄЀHM.hPr@BhuMn jsM  &HAGT&\Б!S@$#,!-Al_K{*)t~HFi{e,cKPu°h0y0r>*\KI7sk/ e,l{7an}Xߪ*EsKZE$vC@rE9T쪪dR22 t_+l ̅ s# 9$Sケ )!tF@_^F)UXmEt= >H Dȇh[(v 1]3_pO TT$I;H!MeRO^,etFY `;9.k]cb^ār%'# ub3 ;bci/g'_ rGvgȸZǪLco6K"Z xBp|uO_H2k_-!͗3]wneZ Sq71=5,1RG7?G%ٚ|NqXLL;8d4sI6lYm/px k*|@A9A~Pu}ϚQvK~+ٟa)ل1F.jcH8Zf8mqITphG17# k^(@kV/#|V%W`p$- 1s%L:S-wKtu>;+3먵\^{Pə>?8|ϧ!%dv2Ime;['FD~ȤٯlFUak-`prtQv&5YmG2I*e` Q !(G$&HGT (Mh(@G4 BBhu@Bh }4B9!Pm Bis@EP4G4rE@G$ &B P4@G4[P !PH.mP!mPPi ( #T #hsEJDB`0]9i ^Z ܏UhZ)t_U!+N99#.P4@G4[PWE}J.r@BhuMn jsM  &HAGT&\Б!S@$"r)PBZB H!$$sK9$#KTBZPBZ$4rЄ !-PB$Ph 9%9 LA #_?:R(АFD -Pw@4$愑ВBZHhH&PGt T%=z@ CW%;rs"]j\IO-(BE3_#Ef Z<Μ'EsKI [:6ƝpYf.7s iZX3kryod)vsqG +[ 2OWH2;kKc$hٝcsǍAUW q TCQOE(v$9Ɫii卒f1ŭ@;.!!Zlfжu4PёŦ"^]1ɗﶩj&u_`<6 /U9%E\QZ\;hotsFkBUyCMYWCEAE-]mCpef\/{5؝v_xC:G,&MS#]K0ѯ5YrKg0 *ENKdy4f\\OPVlh%3j+#JwT`C%2e UMŘ/q-[Q^%O,32EQ V=!9b35:߰0?gXg`R[OD]UTq6{˲1Xh/:JIloૈ3*g㙱Z8c] 0)R^("s/oGvCѲ0Zjyt2O|Iw_[V]1k{V Hrq6 &mZ]B'0]!ׂ1+ħdF >60ћILw>烸;#.>#>%iO-S  -!qi H.[{H ڷ<%3SM`O}̑>FK\@$E4k55-șI$[e$OD /Pw6蕵B:  !-PB$Ph 9%9 LA #_?:R(АFD -Pw@4$愑ВBZHhH&PGt T% $(H@i#T(ЖDЀ5@>HI4hЖP@2#%$t@4!KT愵AW\CzL'$QFdg֍I=xge,Љ&zHZF %st$ %/ NRVQԜ/Ebɫ[&f];.Z eW>{l0nջ=f,A,{G3CpI]Hڴ|«)tsDPF^[ḭETob<*s_췃8¼pK%oܜwWzF]߼짋' KKFxÀ#WO# ӜB獳ztZ+)hi6u˒0W<%,nYayۿ̿(DDsF=@NVա!T8Z0mD3|ЪRN-"_`>Eʬ(1UEPB?@<^aTh7t $[V+ yPB5rIʬFsNW{+kLNgT ps"i$gv_h=WSR b\3%TmE)Cl%abh߂^;WGp+v5o>)q\c nj8!xp5kpnٷz QݛS^ 1c7{#d)塵yFGER &lT>Whi{xw"ƣ&F#fM{q!!:5nv쯃;>wppw)°`28 KZ5"OpOԆjZP.gV2sblLnk{8[Esbf傡Hi-sN}ώc KpGpjdj(]X^Mp?ٲ6UG]\<8sX}+tkN%avy.Gj k__-<^G1Yw+MC=[$q6៲[C+5W揻Q|5s܏%;v?=5@f<^g!8|mU$8_bQ`,m+($^#Iv2vH.!L/sY'"/;%c!S"d 1}W)-ٽt|gFNN̫`}CbgR 2R4:]8ύ([saTƁV tѠ/Nh 90+_RDhw;a~f1TA-46 IcEH:F\Kqyd9'ԟ%>jIQULWoP~q#,k%Z(yiiymoػ-?HgX*85mtxG \ed1T8cc_)1K^=%5NAR\95:y2<×7V?Qp1 W8q? OzhksʯA&|pCw2L\ E 5 IіVN1B<2y=W$g 1~>|KGQ-?xA-族mG#OVG7nP.j߳.3G4>#k0iOP=^K o:19YOrqfTA;cG],E skAs %}x q{UH^Ok ^O\^cp_xǁHG haX@.bZAЃ+L%k ;Qt8jKp~1WEc{alr,]-~@\Wo@쯃*4oһ?+g=AS9rf*RhQdeu}8wY8Ci*]uw[oħ,C 4$܃`,Ȏk,{ecyԴ8qKR$l͎V_^'INw3KOЯ?/~{)xg*q3W 4M--,=Z 6hn]Ø.$j:=o.VRҾs̀/{y/C <3i 5>-E,U tF!؟ XK$raTcK4 <'EGX}K!kd-]k_WbOpwtx̡xvGm{?\Q6%kZzƟmeWǢ,z/__ g{^8Ktlo+{\ci\Sq WG 𞠺ە8d^[3xs'T|Sd{ovlF5k).J{kei- 2θ\_M~A+WFϳ3~uvwBV^#2;5vk{DĴ>GhkMXi{&׹9pb5!ij$ YM5fWEU1V6N,K]G-YY,v-AU>|)e8ʂӰ0_M ?{lĻN)1=Ѹ]mfBD%h@(HewBB]Q 4hȦ \a]G4RLHG$ HIs@>H9 @ C`w@BA9Є _T# s) $wG$#BI ?uL2]>iУ(AB/.4B@PQ!@#w#: U$iݣY4%  8v!A[bXsu9lͳlNY\+w17 f0-Zӧ)wư[5V}o_sR ^4$̺ G,k6`u _*|C e27{^[ZU_l 6)v"g9/yIʟ~qi#/0OO$ϻd]wÿcD37O4置)< ZXǗXoa}9E+^}uK{%8fvkW8ĝGǸ5㨂|'x\^k$Y=J؇` LBi[8jZNS<߲`꘥ͪDg/Ѕq"F` [VPb8{8W bB)5fi0:M7E( õ_vgu c2ll`ܹ,<~>&Da7Ø?\Xdl2J2֭G[8='fCCQ#Cr:Iht7~˯[fa\M:Fﳮ.|BD辊p_aʺ.^(t5keX]'@lo}Nږb8L$ F[q䷪Ȑ>CTO"$yuvuؗ? ^8QE2{4\wϷ nv*cMcZd]r ߳ 1?=㸼>\&xD}Z])6Y%K ዴ¨+8넫z ;`NRA\KC>`XbTԸ$==T ky_ؗm؃IIK:R6N|Y np̕> rL#SأOn?|t/MssśC\7ݮ` ^n0^ȩq9Ȧ24Xdk6EZn$Kt11N J lou]87PVEn::s*@V|$FJSs eIRG{uT5fAMo$@`i +U&UfA _{Zo{[U[(1ya(hqZwqJg41Xkm9mr\Cf%C084~OvR^_oFdRGoH~z),.LtpmmWQ١xtr;]FZSkvaEvQ`!XTKQq#ĐK!@>eiЀqC06OsJF\¿l)IUSv[4Ts&v$r.Abr ڇS'nFizd `J7;e] \AF\M+{;6Qgmp+B1͝o{) \/~<x^&qtF(}s.˄ð~~Y[!;8#b6Zy#V|;^1 {@S5=8nORzNb %: uC?e` WqT1s-ܵ/Ipe#V p7׿}.LX s`5:R+xcWeccit Ld,>܂kqu9p f1*XH{H[d6Łá[) Ck[N5;y?,kjڞlSTIIEKTAFw aˏ~+fO qaԝpÜKsf8-ptd8>ke;{jf+mBFIEl_{f a_4}8gs,Ȏ~l JD&Y08E1@[#A؝Bײb NǑW>*?Kj(8w KΜtqۃ(6DZ " ]k -I u ߚ8y_%)/V3Qq[bP0: V-"CNb:ӍfⒶLG꩙#ʼn`%Sn8%H [=E;şZF}FCGH:_}8t~8(,98KMN.ojl_ZC-Iq(~.5E;-}Xϑ7 [7n21* é%o@<}9mถ+ë(deSNoÀKOY_he1*NXbl>wF>V49VvU /)"|@Zb PGT ;. PTu@+KLl5Bis@$ЃG kd|9HjЀFd &P6TT'Bh@$j\BTj|5.5BE$%i:F\Ke#T]TTA(55Ui*\P qktu;5HuV:9MbSQtw~s D‡bSvCd`pBCJIMbY1ԲmE>):~1·c{q82Jؗ {uw\E(h8g.ॖeLG—kǸ:6._> T^?cgksKxUC&&A噱俺7nY?p#i093;=,_RsȣPNײ퍒C!1{e#3vVsO >i|cyO v%tx]SGA蝅$_R$TI&u1+$f1_pmN?d  VK[TY"zمǰ٨q83fww;^Zَ`hz* 3_ nUT΢lxrIɭ#K"xF,f <;qsIl^Aj֜?E??۷ Pivs3[ OVe ?]p|U|5Ŝ>dnDy&Ҷf!4x1Y<;@v9Z K A4#rmb( ,c??=,:g? 㦣Y1wY5͏(f< UͦΉFXx9ѻ5`nWZv[\OPwRF` F-1);I9@:lFZx h& :XB| 7ԭkf#xVcqz. ]]ױsk@T2,3+[h#lbX +D]&k*w9G\uН4y5i~d ]a N:JA0-KHkqAIpᾺY 3}~GU!{vU,9jeRwPR^I؄bRIG^ePq UCaTbRtz`n7KQm):Dvla:q43 "p^ݧЅ*lr8546Xi :_plsbn$" tJ {_[!>)%k[ -F=;j-਎˸zv8 oZލY~إ$O73|49{ޜ !']}Z>[4ykfo pikE[2, Zk+=~!n++wm$L٬, -}Ldsi']>RtrkNcKc qn&hӶ~,G>kk1>,&+Sc2 N^mзa. 4hȦSPG4}Q)rB|HB$sG$G!d( .y6OU%}K~N^/KDXS\9 jōh엋Z}e7M}rKh(^?e;l:"M^Սt8U`e_4ݘчw؄ |)h_ԫcj֓%?> $sD~̢:Uҽ_Co5Ը_-q\)8 h>62Ը'9bGNacKrm;baoSȴ~fge݃q]'Kbgӱ ţf؞!n vz++adTaq 9w sNV4ȷmr ^أ;V(/p.56ۭ>>&gF}׾ ~Wi5U-+#Iߣ~چ/JfV-,cO()yC}`.oR|3416?)UNC>Ab`p=\B##g5_)c}p\|r:"`|h4399ΎR00eǦb-G ƾО%wq Az8u7lVKdm?gmk)F-fLk,Wڊ* Nh*7ķ-' ñ uv9+"+ّOli2z߼'೶pGnh0<^,9a s 7_Qwu{"^ _c}KKTڼcP@6ck@@f\o=?;1 p~F೷n8!XY- .,uHh-q{vưU8Cs6ħl>sXſfv څphqKO#]&ڨY \a bH@Ob,FH)tz=$g͈wdB;׻!koC4u7"2oYZ3*gx]a7QqD$~Rt|?sZ3T5/\RetG6ު㝣+oIeBˣJř͵ַ{9. ?mDMRI/fviiDeGCoo{@ yP6G7$k@&ި%!S$C+G2-uY}szF7YKe$ =5"eL4q{]hYXE6uʘ`6yqÜ1C^' nHj4L}+*㝤X Ԇ8CK+>6$CIMNkw5Dݕ"IXZuVd2ٚyStvaڡJnk=J~0:FTe$۵8(9HWBY3 Dz ]c*FA{3[r4 6ccH.{PU$.:NZY)=#0h9ݪvc+ɫӵ0xcn4_]{b8ޓsu^'\I盛(#^Z^#aS:2PMoO%1{Av٨LS\b;S1s spCd3gDik!zOP掉#hG4̡.e4P/u'F4u"ʁ#@I4 uMP'Mn4݆>cRQVbeh˃&i']{SEo7&;x5 c;c9FZ\YK |GtvKG p?HJL9XKe6_G{W TX!_]ITʈ8jmn9r*!m˯GFN:Jz85ƚK<#oQaq~ݤbXw= A s5/+E:/BE4Ba7.h;Z\Fg<7עǽ'#ilIMԇ8Q?,}YlKN昐X\4HĎJFG&tNoUdGR]i@7[0kI - O@>P )/pBDGR~f>ꐠmkۢbm-oDƣFJKC"F\9-%- k-suʴ,}AE;C#OA1[+t*As6Hshm]#J Z͐Q~C3.<-vGuy Af睕{kc:Fs6(Ms )_uZF)ɢ28/k}RkĶ-pu#bCKn|6h$p- [(L\O?E@f4;mls2GMRu(iΚmI&K<[ld6qF9`d;\!(P[~WRs7=;0EX$,3| yb64LXP / 'Mm)1F2TuԦ&oUD`l:(VKjm+7:)iАgW@PdA Od!;>ૢցk+Y H6'y*WtIa`ZT4\P5f@'F?Mͫ${'ܦ̯6m)Kzi8uR!4`]lYt> X)VrS!ȋIkݺ)XKh㘸CZZ7Ρ=: ֽ?+dI~= kvͳ~a bPBݠRڜH.-sp}lTθp۝HZIq[7̷>M=gppUpM9٠"ڠ"ՎӨS"e-S?)hm+Xt gE&$y |Ɗ9aSsA=AWK 1m[,i=# -6WW/Q5lX6θ6UZN`rh,=$Z>D)X8%)<Ⱥfmڪ9&lGRF5s+ߕI~VM٭m€3 >}PK.c󸺧9($j9}&ƝƁ!r|QmnJxZn, 1<Q}3-u kŽ.vR˝m x\!8s4h\頾Tm2n Cu,VᖫQ++|qKAzfgxu.|^9M6+&poe44:ZhjTMPrD4m۴~$hq|G85U]-E[ir@|s}[a}Xm?یTaݝ`.wubԲ/ـj{/@v} .nkzY~nW'3 KƪM`.5}xv E. osrIܒu+U`$(Zx9rykXBau17e䯓u(vW5o` B#9hY5^ 5uB mCF~DA#Ruke~>qDAvOa]OP#˘ƾ@d Grƥ Yq Xܤl\^Kz)>+fy]#%qY >bUM/d $`ѰXZ}Zǀ}ґY dk9=HK3@nĸO ᘱ<&8ە +e-=itL \zNPK^,_C#:pXSx߭ʦ*g7nv*dx;EU/kH`>_~]fa]ߒIٶJQLz%?Bﲡ cyul-4I|ѱ22l1Z-艴)O%H^WGv(x>H9nN`?@9z8]O+5P)ËCN:*pИ 8MUN~sH%K/Wo%l# v$y#{.- oW˒Ai\nmouI4rR_%lM_ocݛh쿫Sn;\5,auo-_ɒg`s`g_man* ,neTCBsf wV8<I)4Fǚ fhw1~wA` 'T{86A}Aj7Qh9NF\:j;7ùu"167P,mJfAN)Z*,-H]K\rBu:۹V I3⫇.];Kj| { #v]WH97e¸.7DP@eYƗ\QX(p:<*éI$ͳng쵽’IB7U#) 6OEl,sdFITa=Dv孾cuD sH֛*U2 n-݆*$;])e2#,sI6ZQETj :;($d7gc~m R&7-d*Ksy|UHp#C8&1,S3luYp;]D70k(kHP`33?uUBFJ Roe 6HC6$J2@bKK0:$.1 ^#Lwyyo#`IfBbkuҵt\q'PB*D so>iqapF[bWik)bL؍ռ_s%=6&*Ȑ^F_][!a&E).4?Ui9gk}GDުղ>a'DHݥey6I5"dG UeGr,I+\GP\@ ,0Isluɛ6qc+WD廁"JMoKeRd2}Oi.0 XF\؝ &xO#0F tcu.91̖ƏaXv3#|uc 09#ڋi2D=rEv\>E;=Ϊ-L~ x&&qx:FбwbUMh42Qu:AXTvK#̑,#t͗vcŽT>%c8b4@>hkD5 W֞<%{.=,FHesOP!1~J|U) ~_IU%^цb CZ![IHEH[!Ak䶲/`ZlԎTjG =ExC5=v=q2 sV=+nDC2n8 MݜGd1ZoRNgsI1&2sf.[jt\cGed'qV m,SYX[ԓ")Die^~$mtdV~Ş{KG@/EO'ʟR$䚔q:YA}cطwT=x8k)g~m ~^[/hvqgòJZ8x[0J Z+GE[11͈>#9ǯ=Xv[1Yރ ]W PƃmԯJpK Y,RXyÐ^m.Ŭ<1e1ܜ4\)vr^v+}>!p#MFZ3>\{b/>Qfi.s/MPOCu"bq)IJ3+l״;p%V媣1uQ6P4 33M CoUi6 qo*fZQIuYC]R zwaU0XT-uWe'#@g;ZCO4oN))>' We+| 4no8j<٦TT} &X"Õ,y7qTh|&A|UeeȻZ]E&d]kN^;h;.u(\Vx弶 I/N\QOL\y*;%3BIH6*ST]>bApI6Xk5Agcl59|[Z2WcD$'[+%. Rqw>G9lڀ&>u 8麘t[," MRP,vm dܕlSn{x.qЋ]UBˋTCLf̥3]rCA]:v\pQômհ+{Si &'ZG֐suԣq˫(:8ߡ@Q,o;Ey7|]?PW;Pnc#ȶkEicЦZwzeK[(6 CvBxl|[a4D}3  Ώh*6еީ氿 m#@@$˛6Qz\i@>l?ɘڤ؛4 /I =Mp#0Ck v{u8&!xz*Abeǎ )ԨwpB˥Imm≯;<ߪ r'@hAѺy!o[ xߢl 6DžJl.7yla=7̓OB KhCH*nk*B]/ 6XSn@'DN4tqR.񶵬:IMN㛹mBod9뭑c <'-q`A'a-Vّkr*^B8srE;|C`A{E[T4T8Yh}]|ᨿD>c Ew4(Rw./n%Z1.yPN`-]ָ)89-!ŖnR"AM]ͶeQ#gc*2> AָͩZJ!NVj;ܿ+\9[Uo(}PAiYL؅01>;fu)=4<ʪ uu= .{\i.i`JF-Ϛ*"skUKț]so.oy[k{dǼDEђc,|2NJA(nqů O'N)M%jD2{q{vIcūcc :Tl"hhs.촕}ћ3ż'` _R0 ?,Chq{|\;e׀\g`1sa/ɚgwC~beoX=^xBw9qڟڬnpFpKsX?%>5kE@2^VQR|^EpU|q[>bZwrscqT*)o,>Mk,scXmɲfk>JrcP]bh麛f٭{m]Сh:8[/$>)F*B (vo;YT(:>mEiRWlŃPH FfZu[q=nsܶq/"̌ T!0DR9oooU)m۔hƹnX/᪒A ]@B,YmV! 8Ru*%3%x9o9_@-m-AT 6r:&J,%smAU4fR<*yIYJ5v<.lb f7.BֲmfT$uPwN^?.\z u+XW:eqrRۻ|wKMP5 ` wQ`ΑtjUdx|m}Sl XH/AeBDm9E!@|9o庄<25H\3ZJ $AWDX-qp|ʦ/L޹JN92(=lL;}%#"k;CAQ+Tl c1$4נ2K`sΉr~nYN2d:D պUɻA#b\UX dd487)YIԸݲ{;CewB$8(TmnBudk wF uy#Q1IR,}nڟ=sѨceD;')U--y.oM"e-O㧚ht6*b1o-Se{t#&^]TѸM,ZStn۩RdAAknbZua匒:t!uOf;9ߒ}UMAG޸  Xk"avWsHy]3-KnֹBm3CJη N3 W|yX#,׎o-m/aYQr(kus_0/ky [S͐ZǞfU6| #TPq#!dZEeM"`d to6nzTn꓿aWd M|¨u,cnm өS} G.WQha1uR1F[&-'@f!# y^`Gx\p ſҘ>ceJW< u-EYP襣ZL?3K|ƉĭQ,sA0O6̄f(YS;v*;j,=r n% uԟ4˵}#PLH"k}P>`mJJJ[ @?p'rtv l{/:.K}Ϛ<[ < @~7WwBBA4X7Ɗ@no>Z0#(X|A"7M0AM9C5$PMηh9(C/ p>E(X qlsdZf`6}d"I dxZlA*@rTwj\@(Q#b:y&}AQ@0nTKs_A+ƀǪPmgt˃cdl~:v詸$]V%^䍒#PAiݷ sQpo0l5BrX{f*"qܣAa9oU/[0D|),/ad/7q7 3sg,w{^R[RImGc# v$y}uPk,Tm Tt&9?TMn= &K8{HԨ-'4\yX ]^+@dž 'RK{qh[)E& oAܟ4by%l\\Td䂆r]&I;6'.uMft4?M@lm䀋{xn|fe8%Qtc,b_&NB6Q! .240C ÞAL<>Ry)?7\TtEH p9,؝(hsO/X( }e$\5Ui"ETޏ ynA\<$,5^ `]);k`u{S"ֹC$5sF!׽56qꩿۈ {# X.Fz*sHCkCwQ2$&YwDH*.$;wM M)NΜ3l-iîTK)k5L0}VlD /oT[NU,Ą[c(4y[}O%U1$#VЯ!ߗ-,XuY(21'#QK+̠ZNN&=Բ_3o2]^sO+yk'ԜyZTܽ`VTl HQI/AɁ5R+jkG@y#F&oEI2ײƆ6"X|2=,pYUE M.f0쌥@G QSodA(P-Qml'oasH d+bB-5mZ[#T lSyo̧jN-.t#KEжOfRsV۷Ъ4잩lR!\OGЪ%dHA:z~_;!B= w跚[zQ,_eu#o 6[tLEx:aA$i{ +=Dy mV6-_wdEgs35ˢ^c[U#?rtC_|LZYYL9;C*/*)G P:kŏ_cfœpl~Lc?5{9Tdƒ<_`{k\[t[ZOI7i &Edy wR4ea7] n% 6xлO ik5hJ/d{8%F9 c]v.\ePQ9z%qe`{.=.ؚg[W#@R oUF셿u1^ET.R9@YR) jɭNY K,R C i `. =rL88kp7&Ex D5ߠL4B{uVķšuMŗ rFV`{=-7ּ\)ϔ_QlkQ Ano樊ՠ$dq61hZEkd9=uP9x<ʈm-1eEY`ZuWhRR-[['ANulfIM L].{ŕ@s~opc@@5H?H*6Dr>KB@:b]̵]ZU Dd}FZ$Ǘ`M枂15,&'n:?_Uůgڧͬ|`ZG1| A)T>73V;c!ב$c2F`UI?doe@RvdTƷKu7hr'nm]%TkAQK/IfPU&6]Ba#OiWm{YeiS&rjm\/qJH)ޡ@Ӏg?UGvu#R/9+R $sM#$ARF.T! wHUۛO+F,Y1; &]k HTt>0uO1>h&DZ5D͕PtoAI'ʽU,<I;d =ͭYE;]Hlokt m@{)e)e6Fi&怐pUM:n~)J0݇PS V9tD)`GʳMC5Nj^]P돢34 D84Q_l*&K@@L'3膸XX _4H(t˭TÛ"G-꥖O=ToSK&Rf+Л zfL~ctF#XpL48 An_{irqP}0s,k\ZNf;!s(,fM4ӂ Yo#b$tQS,b5H=rEI. H|տf#L*al>UwYAK$%Ů\}`\XfbyLlcs}+RdmW纴j moy167?[wh)=%,$nj)k7vmax28ݝ=.p}HzVFfK+2ˤdyv$C!"Y(ꪬu`{X}Aʝ|d`qw[՟ғVɚ "q*;]fdmB\ ;G/B `NK,=oj=ki XKqsico`7k&-foӗZ-IFtT; .ںbv7q)EI n5?u-TfFUŕkÁwܸ{yBϻź1J*pnG'M~fKTq<5 xk~Ϳkf{_LJ@:>۹;+ux܍A#)E;rTKeKQ -8_Zs6ͷJeEt#2--"FdST4p$(dFBi7?u?&IqKCNA |X9W]ZM"wm{C k#CNǐ)./rלϣtnyȫhass8l V \Y6Um2GPn_ENަުP.E%6Ŵ{.Vu ](Yt@&F@7ݸ!Qm1hWr `e `$a'Ӽ6=$7>vl$!D9:BnLϖOOU1aW_&Uq `_[<;Ew.jZfMvKZ죣IaE6> &C$am鿫EO@:*`Ou-zh.=E˥aD잝SBqHgmԃvQy5+h(4P.'A}:"h蘨nUl:m 5}-Z$(KSUH% vQUNh-ȟddtT۷sm B܉F^=AxJK[#ؤ 6~T` Kc.?ЅOU;WFvcB쭲QLE*b3e+kQKbwf#:ABSw*v s6ꨠqbQ4l,Ryz31?cekӰP9[!g#-lIK` hٍR1,%H:7p7BvAph{l3<}\3ߒw~H/=.T4qT@"<-oͧE{rwFVj~r 9vp–[}mzTMLe!39d︷b0ѠQ2rghMEIfU!+H?#As`} \_BNlZuL>\ ,s_7Fӻ"mrEBm n|yKw&*nX.D֝0zog5mU@|ĪBPt䔏-#F*}y_mK][e,.o/+(> XoЩ YcUzH2[|ͷYH7}s b<VLmrpCd'vPk2n&=μ)`l-rOjeF^h:$-}%~KC)$q+ߕoʗ(̍Z%v`t yRMķIOxJW%hu->;NG?}P6Ka=~L"OT $oݡ@wFuhߺEοʖ"\x=}9Lt?D{)+ԞK_yʹbm.R|{DvR5] pv'e&}Rm@3<)wb0#[\zs ]bFBFW/a>ޅ,)dp7`)DAЦd} {Töqx}0&e ,oE69! n\ţЕ0C>NW6a47!,|#~f mkzE/{<E'*&RF,۸DZ7qoz;6-f0F'4QwhB]'soD !Gϔ1(o濲bpv-*6_v&Ἦ>oM~nmgr}rQ7:iPw_UO)>@n#K}+(;L[tfi>W@U˛p~4jZi=3Y+y Rl=;0?$\O η"~> pSnna!m`>bNqrKH}AxO~'tTiZzcKC7,/P9:hpdB,L~H}BDIGy(EWz]۷UMέs)ҧ`@,*K+$6=},3y_}:S$n;4fRP}' $d#{ K*6<􏢚6ûicvS,дd۳[EpawUGA &6aK!_mm}܄K:3E#t,'B3E"F#,uvB%Xmd`kcdߔP>Q+0k23 StlKYw*o,R}?Bh. DSFNRu? s4AǠ-h)6.(, t70>q *n) V DR;P) L*%#ԈފG!Iﲖ "IZ>R}Qޓv1=Sd%9.wMDQW7#e]#mNq`:WXRp[svgR1X7jXO#o¶d v4ު7vṯ)95(3$×=r[@n}koe ohR`w3Q [KgYw%VD{&iyO 1-(-O1Nd sN|>ʯuy- e!R;3K- +<wv}Y(XO!Nd~,P_"22~?K;s>\%}P} Z|)?P;(-QSOw#!n=FRO;FC% ̌2 oX4HL}%iFPya}X3]ӹ Cd?[R[cOO;( dY<OW}Ki䣕,G'arK+Q#+d!-=aԨ?de?d(ɷToC>?o2HFS, x 7L~H:d!!by('_AO-o<}YEo_v"쌤~w}YhE;S,?o) )[(rO?oK%Nyo[ %eH]ndwgPeC[,P`r<䌇O)ndru}2K% 'C#!?Xe?d#,;ex !,FSbt}3MK)ndB}uL}Q} Ow%Agt Yy cwADr?K+a#!Q!<৔Bws,/o0$쥔}S,Q?_]=[Ow,Po22K"6<^CK!ndK72A?[dd?粂񱿪A꧐}YOw+`3:K!?oh E3O YOw#!o(pM9?*yw#?X4~u#?;?1dA]zw~%?+~oDFCmM]#!Ne%G%3?ovod;g}dG%OJb ?3o"][d&y/m3Y,;d==oE~w[B0[ H5%}Yw C!,w#!nel0N9w#!ne;G!?O쌧F?Yy4FCʒe:6[dAA`t([?o쀑FTr~?o삉]QcS+~j9?~w WFoE~ yw#?#3G |D쥐FC+?j;~&ZoYe:Vߢ]y*v?y 쨢J3aWOw#)n+d[?b|b}2K 7n C}2~X9Q3~SOwLi ϸQ3?Yd)k٥\e?(0u asp}2~K #bc$S[Ow((tzQg{9T[w+eչrgY#!G@X2t?dww%~D#!#S,P) Y63w?w%cE+QGt[ Ϳ={y_OwwaPt.?ގ*}dwZ|X-w?5``uKSgpredict/pixmaps/maps/nasa-topo_1024.jpg000066400000000000000000002207071427377236300203770ustar00rootroot00000000000000JFIFHHExifMM*C  !"$"$C" K !1"AQaq2#BRb3r$cCS%45std3!1AQ"aq2#BRb ?ޔ{e)JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR8}@*ewGK=g>6^=ViWfu 7#23=9:l6zhqy}iz"6!b?(<~N+{iٸukMpK1@MC+ KM5N5}7D/Q+[ڼTh {k} M.XfwqhCᦣGvrnzxئt  rF Hޮ)TM4+b5)62~f%f.EXn_qI:NO,6vxV/~ ŜnZo`,{] <,vԉL&tqiSp#BcSyӏL{Y]n-4eۘlZwۑ % h5[u^~EggP|!tmASݕUZbI N~-j}}`K{J;[DS,jW׺ qȽѭѢVS'ZQ|"?o4}ݫ5Kq+/cgbi¿BLd0Wʲ$qv"㓁K'i}54̷XVg@@,sOd~vk+)’g?B#$A''*`G)| 2$戋^Ixe_g u{-=~RO ,-ͭbVs =~sFyb| :Cx6wrόI?ӷ'/^A9YLB{k]0g#"h$C)bo~A Sav& 2BPXDUOS9qX"$f5K4@}i bm0p{A{E0^kq99{q˜*8ⴎKF[ň=Eu`y>Y>UNѵJ'P? iZ^oin ȩ[[i?/A^+|@G ~+tcыvr}3D1+󌝋Q]Vm6`ԭqnm%0[o ꒡FC^/ul[1TDh>[n?2s^{jڮq[S&ėSbMtA"MR`)JP RM(92ѯY{[liǜ|rAJY5E71+*:3Z_ z~Ej:B$A#\|88g!;Vy+"Oz\mFNKng'g'Z7 {azSm{-GC cɃ0-=QG"㴯mY+6M^tg2ClڣWvLy~^PZch3rF]tI;L7)m\JRRU`Xnc=h+j=bj=yrt>3F cث4'bwyqFzb}CoNkuq$"&Sn1gys|Ij4M&Sۦ 02S4m@]̍l>xt5p95]bZE̓$NH82k}͒cnqv8bs{c'53C$AT=ֱ*K=:8Ge=y*!Aq{ sv<0xAQ2D29bTd&e)J)J,h.|vG PYnYY`6k*9EB<51tb,5A(s^moKg'B8-kwjY?#:yvxlWΕ?=0vV]\F䑷kG#$d۰ּg JX}g{q>ԆhϋgsJuaqe5dEܑwa *;{g{c)@pRh7؊J/IJRJRR()JJRR()JJRR()JJRR()JJRR()JJR r݇0 !T'^okT}wsUv6>WN7 b/IO9`  +_O;Skou+M~2FWF:8w{#zMybCO9,# sQjj޽iѵ#,бh"E7'< `'p̙6lvZIsY{Se8|>4h yy5ӻK0_]}Œ:jV vVc>=buv=>nvҠ is%f @Di݂$(]i}{KeO8Ay sTU7?,5 5"ݩUco52`0 eXӑJ &>ie+W{{<ڡĽ5]bSOn0 ;$lc4'F8Ҳ꽢;+t\|ݽćm)b:Rg&4AAJVW.44F PF<.'hZ/uȽx7)2}?ݧ1t j22A!t;T bvw=_k Nws(s8!p"MoĿ=769 @gTn $2qzא]/sF{vG=U}s^xTqWA/EŦI.dbyV8'^ߵz7hXe&E\*/|_쫼,jgxGz⧮7}3>3Zڶ]HM`̐s!@pI7$p<[Eޓt}] ȃ$+j`K5B #f ܠ=ATok:qwfR%H'G2j|[IQ'xvH&Oy 6I'8Bz9JnZ9+,)JP R$Hn*pA5JP.vߵzzo|q%ê039Hڟ^u.V 3w]_SkŹұɧEh_@IvOP,4dd[59Sz|C5CK-m[)Y#3T>+ j"j5NIhM"@I)yHC@O=*>K~\┭"U")JT)JP RZSS>v \x>$cLL!\2:NjZN߻jZd(=8׿گ !4Yj*ۼ!9$ʍR]WZC"I.Yp>Ք3NҸ}s#$2eJ4ook = z˪], }*/|Cپ펻/TQ2\,9b~(rI{{sݢq^6Qz"UI5بX +hp$UQN$FFA56mUkzkiqw/ugo,U#.;*Ԍ"x|RyRi~&85zw~.xj?v^2cpOHkR]CwyٟXxlsTo&+_n:$f;GR}7ZeĊ-cI>Ն}D0+d$DTb$V隃Ezg^moe  CbA+,bAycyǜgi|ZjA G u.h,Q浿R2eQ9eOyYݯ浜|5dK :)YHR{xĘ09$%NGⶏK?ҽIgj`SVze/-g-W>5CC[V~= &L~^QU )?JibQJ[Fx޿jX`lUmEJ!FOL3xλw9NM0HRh 6cqB|'Xl )>7GJ^,\2G4nv~8w$*dN+q).ueK$nC#<{6sYokvl5JH1ӂkޗ4ZD{Uʡ:yeGEb$X>7ޭEw+kuS pMrqYOjYi|i>\pGvN QV1ƠM歅Lj>&y٧j'}[oea =(gvc1zi>9d {O7 `#yΛE mڅ$uz\zhWtof?^zFs䷊GH'Ġ>2y$^[Cza$ybF)EIZv|AXT˵{_jS eۍxOʡE$2SFȇ H>a3\2*Ğ߷:gfI45+wbǻm{_=eeVdX@sJweW}Rזdr0FDN:|͎8?D2TUc,/-Aê*" w}t9<QX'h)*),r3O/|I5^Es/ Ѐs'\|Ue!c֖+:E%#HǾj _HQD"cp ׌q9&Gi jWi-oX-<$9lsּ\잷$I6ٌ2`%q3`2x5-wclmNᙉ1 ew|Xwkdayqom|1cXjX.?ĝ2}/Ouovd2MotQ;3;;fcI&E4d *ĕU,e j()JJR>uURQN+a7lcjp?Z.xW&A̢'ʦvZVyaTUTvտyhE!ev3+,z&$4ݕ,p楂dErsV\7sDޒ`w̴d`^n|YOwM*8sM͝8nzrvjx."?OJһ#]D#r7`ˁ\ix\ɕn9YXS/n;kLopֹWq#n [Ue].=< M&uZKUR`sVNAB0y V  Ð}E"\f[ȷ uѶp@TK7Es*5"/COֻ_F_bDU521ooaߐT`Ԃ \2pyڊ˹]W#֩?PN4=R 8k^]K=C?+~[Jl^kZK2gʺo&'gtbbV95ͿGM ׏UP?˓[c Ib&d(-;>5l eԩ1:TC#`yWcl龜P uUg§e!V8ס\,Hx0u+]LFc5|F~чث<OΉIvp5}!MzT]nvdl]l־؍. 5[(9I7>z)*iub_s(I^JOYE/mYikug 6>2k5Cly3#ZчF^}w; qYvvEGڼ<ӃM ;ZebNsXx@Ws0Wh`bQL#$|A$r9 Ʋ#.LNq=~w=;m] pH8׀zV[K 9Tjm۫`%c%x\d } ?9(@r(N!RyqBۍvڪ`cGAδ[]#)e~R9K4Ѯ9m$}VCjqF~ԍIkiƟQHҶْNNA||B۷j)6mCy+"呛8]Uu# ~ִat;]ڋqNAr?kC#bu8 unҮNM*3=>^Yo#>!I;ݫ"eCҮIZ&.FO֛RGt:WW6*p#u-:%׺"۸]|sQAfӴX`EwD%Owi~N)}Dm K>(XHT?WoJc]Wm4o&rOyTVqNKgP8^|X-0rcPܣvw_ibnCuij3)ӤK) ;XВ=I5SU*(_o!)T(^Whw=Դ&Rֿi ۪qmzttt Li, },ǸOFhʏ?lvԭ Fy'$>L]ftˋ+kMQ9Mdž#=kګΊE,fj=hu(-pGCF+sV-6r])"(p $zW.]v8m+Gs8+)WuXA[OޙH.z@a;Yh60˱{ppF98wCM,{us{y-ķ9IdrNI$Ma+rk{H}sJ6fol?_h#qjj.nɽ΢&Kf^Op<\yV=6J^m)=+Uӆyv ̤A:iOLvntEswOgNl]6q0]v*UQrKvjN8Q; !vFhة(rTk^kחٶƣ"@ fh_+*}LU71vූk *Mf zNP 8$SM5= Ba]h<֌#O޸s|'lc4U#*H#<=පg۷5ϒ.{`W5.~g־6ym^fp 7~QAZImy>գ{.cQAgh;VṞ"s N>N"EٻG0>ݜ+Ek+ chgǒ:k,i}ђId BXJm?VF㧟QYO ^q|T< 4,ْA9*V]rx^̌U9+d`?f(1(1?`k¢BcqWU GDb [yOʲ@)UVkZӌx_HK %üqvwsݺ`y*̤l~iYK߱ŀ85psϭkfߎz[o7"vݏ<~ 0Z WBܡM\<4$O[oJ7q{1a ?ju0bڵG !ۊ<]h-v&rH38bsF>IpEh8ϧJCi58<^ h/ݷh- H?̓T9.# XrNsҝx Qŷl|Q՚Hʗ>3mbY$P/ZxUfmzʫq0qY;dsүyn|/+^l⬈` J) 6v*E㧄Wud ujq4Sf<`r׭iwmϹLTԂI7dd|N:zV͐cX\>"*73`J5GáQ|n~UޡXG9fn؟+xVK#c$t W+8woVOr*ĉ*U82 'qWu$}T&oq_&qCQVtܬ!?YTC"JN:[vw&Udx&d IcfL 8Ee, SZ!߸eJszX7w-4L  s~UcČnH`'j$[M й5czU/xQFOqXH3 W`PGN96u!1ƻvw$QsF%TxT\k+T sr腀?A+:. bvClz^ ufj^,w^ ř YdjӶ:vIZ(nsQ{ez[G+}T?:zݳIȢ sQII9L4S5k+eᢵņ¨cϖkcXZY,ƕR5#i7d|jzؽ;? ӳRm&\:Ka*@AG'xS|Bi$ū)Yb:q],J8O5UJ~})s.b^i.`0q q3ӁT6Hum$""?H>Yr1^>xݑe8 Ԡv_Եi\V;9.=&Kt|IBQҮ%R I`2h$jive ow3(!I2SwS#8vJHI#,Hت"1GG漼QuܲuXFp$\t"79%I;m gkǴ Rd%α\ɢ);{hb zu*!b1N\9߻'O' h5c e5nU+f7IֵՆH\]J-)Ij=tʥn?M' C8 <[] AV;[84VQHYCmmf6r*A wGS?OPO8dq$Em8<^dFE)JToơ]֟s$2+9NGsDq^CJx1Ͷ 'oχO̱y*c bIzcuϧFT5lxR!Rr”)@)JP Riη4w, C'g>U\QA'O^qa #bShqmݸpCmvpn8g*:kax:5>OCqҰPEu;L5k@IJ8@,1{Wr j϶ #1du?N+bHˆV*^:_=-$6CfpY]-yU^C3Xl ӆ }~F dIbp{*r[mO^a!H  XYG8AG$*le`mLXdgҽon4_}QwmpN9<^gT.#Iekvlcު'VЭ¸`ބW 62#@$BXC7+]fP|VE9:CnV}F)ŁNZ9Q9e;* ŰzWAc >|e$1 )ϒ=\<2s[S["1vJ8㚝c Z9% Amm]bI"c:BdW2ǻsr}|}e!'}*,^>J8@ek)B!T0J>sO;ŷȞ3V0U>3Y~b"Spr1yVFG#HP>ubTFQh0Ҳ*B6; q X'ʥTV7+/|GyV0UNy9pp|ZL]}$*̤3Z }IW<|8Q*F'*Ǹe6Ny~[ګAwֶÇ&YT%W32E*ê+&zwP{'}Xڇ~s'tI FRZX|Ì:V K'ۥǍV^,gO{Hn>bD6ǩ+1cbԚ4ɵ pJpzsWŢťO&F}!5`DIvI}EK-յ&2֐/H ?Y,^BkkYͣI  ?rpO VyWݯ9*4ZtFYX+jxN$>9!ӳB@F?X^=3NJmlDf 5B?s]881;Q-lI$juPnAW$|ZUu^nMRJЖ=r =88j!QUL9 ;84#t ϖHQԳڑ"x,OS4ZidX6 :_# w^ |+_UJ9ZR)Z)JP RCF$N>(_ho=' :*C) U#4ʹA\Y#m.55"fI+9$ۭqHt|9֦HZod8}g|Bݜw-API?*n8 GC^LR'%+CpCm,zEyq qI* VKmEDFmǀlr07^i]=*PA=sYdd Y/cVg/1zWSC|$YdN \.up/$ֵͤL9פZ%=k%R]Ш zr4hN+;HD*pO+Kaŀ=1}QCNJ9)(,1ErEc`G?q[ْ 2/cǷ+n:(ŷ#I&v%p8k7z61by 9 qt-6Y]}J46 ?kai? V,UF<)`}Ml!H1񻋢TѾ,bD{\ݚX `3T,RQ&luMޝqq| iޣf=&(oZYZiHy\csUG$YV@88Ideu <'`-!!z +͞Idw&-s*9 9uSv V>UI].1"5j6 0G5_eyMQ?#l[_#+3 sw#!Ui2\q$ի(׊EX{Mkp m$1PgZ #¤Oֻt]7Y} Rrzk}9n)JRH)@)JP R)@)JP^w*V8H6\FQ g`|cbB0>k>f PȻwexڟ϶Eyg+nD-\ZCcLVh;>o4IP=kcR>w3TF>+Y#o2*c95j26+g8(YJJvTLYn<^&Ǹ9=M]~KFyp-y⽯,q²Ky&Ŝ7M*K F 1S-f6DrTk3(1`32+ m_:5:gdQ6m-ch$05+] j,?ϧZOHQo1Z{ەu?Q4ڊ]Quea:ri$y0ЏOֻH  Y7BPϞ;$ Y$CqsyXDmJ'oOmHJa5t A$l~a7;Q'T4N>U7pΥFAzVpץCm;hDN7f;M@kf22 M^ p)πPʽ [bRzr `D8~I]Yψmu#:GFcקo[)_?Oe6{'$~٩I%eVhdl}TzkuSVK@pzD #-+܋--\g#ˢziKH;@9lCs&ճgtԎXd#]HpP\VI`|1K~ki1r\*HOԎ*hNf6!ePލ5m&@o@#?*̖w@s Z 924e0R8w s[L?pHI5+T׺ G?*4 LJt® F Fj y'֚Z1wmonG$@LmYGbk{Jقp*9|ds}UȹvGbx L緑s35%](a#V)B~f󬱇- 8jT%68hflUL '<`%<%'#|貓4ugԝvw[1"$rOҸ˦ݼ&xn'bЌgSJ)#Hߊt<+lbl)cǐjQ V'7:`ڢ 0Ai/,t)J,V"7$@v+v߰[w#ç,O&IvDR#mDC} }Tq'asֵ7=aWq${6wDc$ϝ]'t0?O?>k+/EM \ҪFsFsF<晦+ XOz"?M)JE)JJRR()JJRR( K$G(g5g{ dI`GInrITv=N PuuH?As Į bsNG+Jɼ+!!ʺ9=*WxmtPm >Ui',6 `rT$*7a0l(q[D+V]r#RE!2Ѳ *ׯ`hбB+-.%F!ךk]<@]X*C˹mfrQ9\=\Ǿ6NڏZ-!W'neghHI*Sc$|PqnךZ1X篵d1EجpZID-2 3#'ہ[:dq( • ۸ncD*AwZ+]N&qd~ ?:by1͊]X&XFτ]@ #k$@ Ǐ[IHAXKhˣ9Ud+Y &yxu-*׽BF9,}s4'ec _0b1JipZ= jF:g5]\iMkq88浻=y^E+ڴ9oGzxsQǥw;G-4t vXyB(,KC˫gH$Q6ʻ ً4X&ͨ#a8($}z>i[XI`IR]&KU}UՁy=x$:!'ִM>鐅M!9pOۊjЄkqwͱ^{ga^/c0P68ϩ֝a-$]Ƴ@[ˮJe<{O*m&I^22lCKmnB;ABp}^3Y.I3 ːvM"tJGHGrp>kiث珝{RTHTF!HjNHG!Woފq4A4!aIWFLDGb::lZ' Pn-}XoKPuXq6s⬙}+8,bbF+zRrtI" R tt}H_9>UF(9DeTn8kр+?ZkogYo>F_d@ +r D7)M[!WXci\6EN RH]x.-g,HI>]jˇEi[ OS\ Hש<ҷImh-W7 ڠmi]HҪlrW9XK٤IX.<#Zg8<^kޔEh*I3  2]6OL#;?ޭc`yU*i>X)JRR)@)JP R)@)JP R)@)JP5C]Źw}KBu3PrH&*e_DCY4P?jo&m)ѱSDttӿ6$1+ӻ $e.ؠgq#:sIx8$mX \CcfiHKbgt-11'\`gt"}T@MqNÌ"ӓYn7x|Uy}^Sy$uϑݝyn8xN#ybho^θDڞYL:@Xyۓ9hUscf@ׁރsQ+i$R:Z΍j\F!IOk aI'IqxϽbo6BCFT{ n[ B' TlkG7 F9$7-nnk=ƞ]TH1WW8,BqׯJɀS=:V98tdikn`\*Hr~chJ(KV]rOWXऑYXd|x4#E~Ex\a4su;!ޮmdyY'IL~$|*'J]!h~Q!kwvH#@*`8(x.}ޢ$CiI[v=9Hm# WTl/'ZBevTfeR+M8.GnDK5[f\T#pEsb${NXoǒvmgy1$+ w38->5'-ދR)JR,)JP R)@)ARR()J582qWy{."FEqr4Hm^8,eS9' zmI^/jTq- Q4c:m['g5 Jȸ'H qbDv:|m4sY"0wڼ| >OufA9Ho,WnivW6\JTN\ZS7CBm@b}>gGڣu"^#r$Y?8n#z:/I]]Q*+٨|WZRN(mJZ?=qg Wm ÁKx;jMv#P#w@T 99+/S /kORRɱM7vJ pUy#lln-^kQȲ:rG9'ZKq]oalH<4OG% y3ȗ 6${6A g7mm(InHw>jw?2<26F`sϵCOqx~ 8 aOin.C'yC}pAj#Iżt\ZMk$Yƙ`νIF"WCq)9"y[nps^sk-kR9D|ǦzJ,ra1Fzqr(K>g۸;xk8 y1k%Әx>^b8o_{i8'9^.Yo5B}Bu H#$cq[%r?SMRDEӄos%L2#yoczŨޥXKQ< NOM޲t+SL5LIw+w>5un;q<\$g{y$Pq\~bŲF0OVL4ȓ)@}jLT^\uή=6sTO.,XtUO:sTE*4*I()JJRR()JJRR()JJRR(TU)@z7ÝZNPg =8{j&rN绐'<+Ĵۍ>+Y Kd#}EzڝYvn_fH@9SHA ־k4R=\?taEX-aI1*ߗ$rxYTRqam+Q"I'OR{е@/#^$>I#q r:{bnm)$xd9 00zא#dt xIǗ'Au%e>5tehcj +nsݤIՕ IZF3sgm yk{a$#H)vJՙcWUQ|9V++[:GY:@p}O֤֩kl8r3PX4C_E$s|,)^)@)JP R)@)JPS5JPʖ#́CR)@u;1Ik\#+0IBF~]+t_IK]6B1wtAyN_4KkpGhB{$GBz|5Xt49EVzwv|߈mRpc~¸cK+GSxcd{mgsqXt߃zMir<ӟ*v{J\եS0a^|ϋq?ak:sUGla"bY݀6ĆIln|`>6IKxF[#OΥdK8U< 6AO$}YL1ڛ$կ,fF%a9#9F8bR %?08=*!O춃Q]v_Ʃ-U<P$JzIع_c7M>Imt:RonOr>Z-9yIy58sF99!^u]K#+#wbǩ'jCAI'h70>#zTrς9N!<| P8W&IpRN99zjexQ m24px9gFȰrcW sr4 <'9hÝHnu}GO\p8y9}W7k\ڞZ\idc;i y5tmŬ"FPsyc?^%]Oiw# Ĝg_kvkֶmARmpy' WGI%՝X_|#eO0#OTVIq4lݯ57 8'tfsg¨]8+8i5x64WLu72l$BA(UbNk,z̺F5c YCW˞O׳g7gu&0b+ F]x18S]}C5(xO좺[`G*Ku;;$'Cl&L1oDL`%9 ${W; F@\xՊ2qΥ~apF c q(7 kT-NSHEҗᏮ0O񨒭%xY[歞@g\DC *˦CD&Pl(VOc9J X-ܰ0`98Vk%^YIr q>V Be(`NpwZPAǝV1Q"BZ*RUd >G.sQ)ln$naR2$1`R:cRɩ[Gpn aK$3q쵈Aoqg =K3]Xd,b7 -Q7@Sq9 I$`I{ yZ]L T9^:=[:[ "@hРa0r:רڝR 8=|#z:tܻ{jo,q z{%xN1>tz0цK`vsyE*dx/Cϝa=]ĕ$k;g8gZ$ w׬6 U=*IRж%&8B8hNx?t#pzRH6xV*+]JўH/39 |=5nXE7#TWLH$oҤr Fnj5' Lg6,A R-fU1‚|⺱V4l`^<קW)w䳒Gkg(QA\`#`Get ~!zH'{y4*[8DdcЁ+ϛQN?$;.^Q)XDxⴅb'8RX8(d Rr”)@)JP R>B)@)JP R)@)JP R U*ހ]>3,ee6 _A{L:eo/tMV5ˬM#Fcd!C>D`Ț.[.e Oȩ#ꗋ\vmN G'g]'3v?}>(S"2C_oׯ^oLl {a81 w:vCw\n8ea=HQkזd+1z׉$>3G5Y{^3O3'ZwM# o>mGNYf{d,2^|>kjZv6PE,sV#y85gKR8ڙU`Oڸz,vhcOWQH|?v\ʩKFWWvB 1*&-,m-q5ڥa4ֲI[Y=&a:}~j{xg Lc*pO8G 5 ֮NU0 /ӥ-uBeC0#l3_48!n$dQ]k\K{s!@pCr<'<`Tg[{-JXn_1};Ip̹]"j4'')_J\R*1<↩JJRR()JJRR(T`HϵR = c*Udq&@G9>Xa m=~cK?M|)Z]Γ9T٫YK7IrFcaRtvܤęm$ˏYb[HcVkt1xsA?j<vKe'v7#xαj6E8ɬ7Z%V'UJS[1E$Q0T\^+k^9+(~X5uHw7ws~tGlYBDž.Rȵ/Qӕ'Sq^1-;iRԼ>OqU9e::̗A"W% OzW]N)&ݯNm&7J繂ki dT8xBЃȯ>]ZΟzwB$g#8>W]?cc: a`ԆǪT+(-c8*"¨WifT./ j-ڳ~Mj+˩%Y" ds*?(:oOm:cD(fxal}k8[D"b){9 j:T9?%Od:}oHJSVz}kgkfCz]3ӴM!S?+\s\зiW7kgc<{ * <I{eǡ8l^~P5 Ŗʥ5un`CdETx&FF L`sӊk]}ZiDɉ!~<o{U"_62yW˿3vLtD89WNCcXI9l)O:q.:&r_AR}kr9?ε# NVɜ20N[Ӂ5/u9)YNϯNk8MAbT8{+u޽"d+Q˝A;H'xXymr/ahcPؒU ֦}59 "ݞrI8cĤ=2ƚbo ݹx{2p:0_?CjzMd>v}1ӌuCov9'mLֻ% !uҨMnE5rm3/#$r9VQڳ24JAoG '8 Y`'lUnj,Rmd:jrYps\o]%KccY"NMRpkvhH㿹'Mw<jPy歮lZHbmۿU͍NOAUST4z,R ()JJRR()JURMR3U(*@)JP R)@)JP RZ>Jٙ/ZmJՀ$pIl0Le(;DPi_O$nx=F}v+A*~eW8BFJ:yt5i>*ElYĪF&x(3`ztizE< JHH###Qh^mvvNo{up{f ?qE50ѳJ21ԏ8zc'»3r$o/ xLAV˺; 0@>Ҿ$<2{䵹=p '^7'Tv6 c>-b9-#x1HcNO?$y-j'yK[q5N;'9=JR(A춨f ˄8v;KlZ|E޼2,i: O'uMjdƒFkTԵ8n\:MCΞrM4u+hS|][&ao݁F?y5Xՠ.[dPFL;zWh+ӊA~XcEVi`Q3 `~⻡iS0}ؤu~M*RsR()JJRR()JJRUA#Rg:.ڮɒdJB+s\_l|8îD:7)֚G$|MDioXOoq/F㢎Wdw1Ҭom0+şe$\Z^մ*b*F wB1gr|MkKyݒF H$t#X9ѤGjq}vt.ⴼR s!7> }9P\inRMBIV*zxp%7-*'LWĶV<1NJ NSs38Fό"5|PחV&vs-~FeSyoG,=[Βnlck?ԿcB_j4JNa]9U`񌚆fK>*X*C.#t`IJ t,cӬ\3xfݷi#צa=0:]Ե9|P#a 2ʅ=F}85)BS!*ņy 6tir:oR t~vB1:ܼsc^J8H#A F*]2G=Evtر`7)ܸ#9#4e{k|ivNam<,mjP+I&X$pAw6?.\j%wl`䐠vxo\GCi"f xR-#D*(V<9r:VN3c{=v~6kH@_<ױ[)F'goj|uƖ7:L]XpNmdIv#r8'O5k%eGZ.|UOHɑ`&Č$Ǚxf4MA鷑GhCЃ:,:)~idɏ#(k=rg^+NK[˥IoS$y F}:Wjz_Hoy\dEgvs$w0Y]B}ȫO%˟UmZi~wГvI$Px<#=⫨_\ƒE$c=asvѵd.ĤFaspGzZV,s9c&5M1qbKƒ)_f?ZM,0As2dXݰOt:NtKMZxJN'}+ghH7rV I ![S*2ŎBK/>XŦb);#ZN;kg ~_cԮ5RG(` dcCKMaYV'ϷGo!VrTVNsVL[w}RI)UsݜFx'&+6Y'O/dx݅^ҭ&Xad'x0*$|#{LrN"'x$ҒʻpJ]"rA@)}kND1s==kE7DLJF|lE_A襲ɰY`,ق>#ǟ3IQŅVi&4ndd|wRJbx@0 'kZVWyO#^9?Jt$7$zVńDɵb#;}jz}Yl1H>[|XJ0VQm6񊄸pާڡKq3<93]2v5JBcEgXžNZsA aZy{M[o 5xAęq@=sVN 5J J)@)JPJP R)@)JP R)@)JP RMdYu2(uU*a}}=kZb -,l2H`M # qǝcu)RH)@)JP R)@)JP SJIƑc,ɹN6&pĨΕv3KѾ1=I,;K KȊ7u\ϨkKAYH+Oh^ "wNy, JV, }UOv*Gη5kum|@BUsMM Kr'VΛh׷iLf#8"f}_ w?cYU60I$+ۮ8e)EY6%8I$G+{¢8qfW>J|]h/aHT/$cxq_hG!v#z`-(I_[n q( 9q{&>6׃;/-*M-Rptrw"U?+Qҽ<]vm>U5LXeB3"t準0ڸ$X IgA a/\W_&7+koZE(oQ3\+J%wdȭm`ws'QߊB]eXI%A<[,Ib# W~nQ~m` 4yxh/{Sk{PX{7wq5EU@R5ڻ-*I4qÒUs3ҼӴKOϷǝ4DŽ)JWdv%}OKIYܱ Ȍ^vI'kXhe]* A.u+k x1bIWkD~)"e0R4рzr6]swVh|o^O#"eoqzqm$RmfDd(=8"\Y7-X18_lVVMrwv| 4:cetnNxF?_taQ5:WE8pD6  bov_+TH $V;8Q Q{$ZPd9>W%Ԯ] h/MF럱vj8QϭhUi^1ExW<[m!f$p  1tրH*nǵg,USʥ)[()JJUEJR)@)JP R)@)JP R)@)JP R)@)JP R)@)JP-N d[=9L\[f3\LWeqL^6ITGp#kr>Hc?ʸ5^*p≾`3=R2FkNNZ".敲mjH c5<ѯ fCY+Oy%/Q9U_GG>ks <]**}&rOx[(iJ 5qJv^ӳ淅KFc:q8Ύi7RBХaPYqȠkvۖQAy<>ufb!UUc}xT_' *1_ۗgLuQѴҫM#cʆko,NwR`Vw=<] z'Ve6ނ-d$ycTwpddY-+8 1^z>خΙ$h۳{UeuUgiqG]W#NIkrKxW<Qvkg`şfRsko+Ha<.Έ`}͗+enGy [JW8 @%ӎV¨?lGxorgy qQQIiXGh%\)y$ 3 >fT#1k_N}lnܼ[S_4(/ 5%ᔱ)?o5]&61w\ h'<~:_v381ٵGϟ5:k@HBF@ht%T$?*=̴u0= jaY>5}tH5낲;ޣW۹eAt:ԳԳ!9$;焢R9K4av:Euv+dT.qzC>.W\py-Ҹ*[%mg>{U)r%ǎb$31821Zj,?r&|.aO #>w?=y c32Hnۿ 5RO*ZNU߱:gl26m=TuWd),^ǴI2ۿ|$bsQݦ̶ȊXׯ4;$k'y3$şxs27Vn?ɩw߳17o>+0m7|M)^Bh;9q,PۼmHz`H)$j&3u)21HG$\$2$;A&f"7`c tƄv ^W ڵ{$R犚XLk$bM< >:=OEeqmWF滋-+#˝}kwZ$v%ǥG4_nѹA zyk*$s{cqHӃ^\3-TJ[Ii$/zLẓ̇`ҽ'Xn)ۂCc3jF9j^WE *^s,TPl$7ǙZJlAȧN1rmX*ͅ"2i?:-w% 7̇qU^~l{5Ws(vq)[ߍI7#Hcۃ']FqJvR\)@*Uχn\急)JJRRP JOJ`84JR)@)JP R=)@)JP R)@)JP R)@*JJRR( Wz'w0wʞZR͊9%*Ւ}r]F'}\-ۛ, ;mހu {`bH[sn xA Ny>¹!>*~_i|E߰?QX-yfvS`|S}2(HđE C.|Z7\U=<%[{֯y&3; RG׉z.+Uf垣ژBGm;6@9 8ڪG<2$R w ʱ[-Vm;|iZ]EQ XygץqjlLʥCJk#~" ߚ1!RRJ]?eq*]q ‘_ҴA#^!?ibX)@)JP R)@tmjM7#V ==:סX\ǪYGunk΅[ܔ|+Jiy'`82Uqr?[b"%DۦI.7+,X$2ysEL/A rdn1YI1(V<1μh= dIH^)0] qktKRny&2qvm勴*ŹhIhH$A}R6ir4Qm@ߥFLFCsz.x蜣)aKE~]JWybH`F:)Wcql`ۦ>]7 "w{om1[א4l8/*'.3#+)CR:Ƌ6w/nI1`r}zunX˥?&RTi:a؏CS;Ehp^_&"?ۀ?>e-$#d ֦}&j_+/F^-JxP}q}5*Q]pqH87Qc'NUⷭ4fUa-MF\$:&Em+^0\[ģ13::W, pAnZ^=f%3.YFOԭH}2g5.RM9P) $*s9s2NjJQ"RPr˞z>UEJUE< Uv*pz{1SNgzP8#Jz qOJ:PM*
qj8Ќ1΀)JJRR(Wj UJJRR()JJRR()JJRRT3@Rj+JWoݜמy--ƹf+;Tu<+lUg8'Irvê~6g> b2ϒρW^V4!$bBvB+{u!`$`Wje*|Igف3zSZZ4Tz\ם\[1x5NĶOJ6s J yN3v'v&Kpֵi[;߀OBU9k9>=l )Ur_ !RO``f<:U"䴤QPo/<+[S %1X"<[Lі=ڼq⯷vur03ҷŞxQTR=vn<O _A4ja?ٚJR)JJRR()JbnCaGvfnc n۹iwzT~UM.,RSei/ߴqU׵k{/$U`[e3Oa>Pks.RH:0"ҵi5Lgs->w,O-N)[mjG'+H8*SXq= /L~,QTqDnW2*}sա͵7.sk4e-0VqMq 5Ђo)#v9$k,Ҫ9Nf€3͕֒ڊXb1TysМUV8 V%2ÃҴN寏xъvL7?j?ZhR>\u5Y ĩՔSF4zaoqy") ~ V- d'Eyrt ~OYm"yk~zsׯ?*h޵’D5rU$3ǧg̱EWB[e08ßsCqScpj V .|\A m"*3$zZtc;&8zNJYm93O=GTFٛ -G1ĭ8#{GY'2ON~mV}=zX Pg 5kR֮V}F(D葃*>yu}_zrtGK3I)JqJRRty޸둊րQ1R"Z RH2qVyҡ2 gr+y>y5e:>Λ{zֹ3(sÚ%բZ5[ɮ. 55J G G 0p3MNmG4Rɺ(rv |9PHX|dS#_-@ِN1EVsRftc"q8zZإn,]>׫OY2ӕeMtb|1Oz)XFu#O39ȒOlեWo \)@)JP R()JU*C?LPҔ(*@)JP RQT()JJRR()JJRR()J)LHX69#c)5LH=JP߲ڳ(<*p@JRHwG^aٛwd-Rs>@1PcYIJ=Frn.Jg#VsA>w'.?cm}6&R%ҢoNJՒ BqU)sUe8)>2DFt sjp0:b.E@9A*μzVd|c6H&S'ǡa2k2p VLHa9 7+M2t2Z6NM"bNy9Yʈ!ٟr@֧i#yj(i{>1Q\Pi⧨ͅs|z~p,A9b58EZk]Ɖ#LE}>U1;v8ӯOgOŨq|y'&)J,)JP R)@)JP RjW]AAY?RzQJau%\ET0}]F=DX(,bQhWb R>UK %،q= cYh61*J2Zڨ̥[ەW(5xE""&<+$%Cp$] I]xWplZ ;nJ8IFգ6a>{tW+:u ,"ت }uDWن"WB܃*I˘~ Prl`{֘s<7|hcNLba-"[Jh;t;|Y0ęV' 94%|Iۈ8IkI삆:o7iRycGGyEI<#:Ϭ}u/F\j ӯ t'ŒnrmR)JP R)@)JP R)@T kYl+=zX@<er^Jd#Jnp_ru=.Ic Q@r1Z>#Nc&SMi|6Ï>P3*q[K8ϑԶI,1tg?Q ۜ"}*.Hfm+h%I4)$,ufhcMOZAe]}Uw 㹕y%X>Gk^$I$Wo{z\Jt$;,SÀ6~ʩy'gxOaw/hG'*r%朒&Xe,q>yw7\x%r.{Ϙ@`T'oOXcpTdVoʲH2uظ+ђw²YT\v=9f;8!Td`#\$TK<8?#[q_EnЗU#?ˇ*;򯂭5ɊʬK ]u]~洒A]'R)ABry(poNcKMY[k)SF 8LT uh3 8>tDf[]X]ZTF%Mrvħ#<mm3:Rz~BC,\gν5m>cmH'b A5%eR$UMR8JPmgT()JJUMJRh R(( R()JJ T()JJRR()JJRR( Դ.jmnmAtڣf9@ H#Ece 'ڴls$[Hn&ygI;CAp7 }2|1#0iUx3@ ϔIx LT9yb)! TlȪȌHm$C1^0:Veho;sbU]=x[ !HQ $A "wj6s֭t7$ze&wɭYG3o BՎyqsgtRщoZԱgiXshn0r*JͱvˬV 1S7Ң;lc>4zvs{T#I*: .Rڟ1*|ocLW Ygoj8+L)JJRR()JJRR$ٳ۟wP4r+}YA*!YU ˝zs} T5)3}kW{KdĬ3I{S^ڰʡ *W?şVIUy\^jF&3AEBcUuVK ݀zyua$q~+)#v'x8'RhDWvH>XRi'iA{N9ɷ8IKgVRȈQ2j1RAy:)kk+RCxۼOڣIcxt4 8'b#0=k6%C$y츕2V ldpJH>_ojxԓ.R1RH)C*P UMRR()JJRR()JҵeF;B5ϥS&8M>g~M K[?TkhXiI%dY튌RގqU ~y QԴK[Ā>ͰܸUG^s*#v^AʗIŝ{κ!Ѝ6Tc{=F9> ѱ$ܴk"[X1ֹk}rXu1ڢLerwt/?z#ӹbZRS9}}s$vv,噏$589s%K8 }I>@Vm>kB#zraU I6r<\#ԤoM_ı\йd[3u#ӭkj1\he1ю=Axoٙ6K7RMy=&M9q3ԤQ׌((DJ˯ ա-Ј~durۘ) gx3Z 7ܕ~1^.)C$y]>j淕lr \3发 5ʁޭ l|'ok:D|H@\ya ޻F. ciU@֌0HJr( )@T*$J>Rj4)@)J( RA`J=A)J1@RST()JJRR()JJRR()JWTXM%P#UIs`\x>¥dɸY%W@f,YN${>Ljس?6v|ڒD>y$ H@\*B&T݃!X^Ybwfp080A2;A\Vy&)NTHwk5vEl9?ŎYBwCjhKbt()JJRR()JJRv7DmFI5 t;<u.H1i0W9\yއJd{k@i%=0Vm:Y?xaXק9|;͝.mprx;Uoe%rdFO%8]sƅL-JDI|ٺ`VlZ@HWp>u˟F]9F;)^QJUH#ǝJR)@)JP R)@)JP R:mR޹H2%%li+fbyB͂p*$/X6\}l儵rCTHm年I;Wrd}~]kЄk'8D?s.d6ֺzEjJ֑(c*7axփM>#׋=VLrNm,#\.ZEgfXQZn{[y;<+Puf4^P_EbKu' i;}fFC|O܈Ez_glL:8F\'v%\W\z}fLMXő|cT{`;*m)BJ ST|Ϋ ' T7E[0gکJ٪qOd fݩ`O@>ltc?2 Vps϶(X)@)J)JR[8մ\LyP1@R)@)JP R)@)JP R)@)JPnvRۈ\ӍVn$H6 }69#6@M!988|zhDB,# B)o_l_=XcqU7g~M^GҬz$e_ ClDAwc?>H"{8mmq3s_Z[ rddq"og˥xWdjqIC!XtvqJeA f恥g(zʭ±8V֋ƥGFp9[~$mǒ8+Rjp2FF: MBqJoF K0> aX1L𞦰(U;8O.êe%EߕcbmzU𙄆P\n?Gmtk x 21,/t`Ӽ#gdZo]>ܶs!OjWؤ`*)JUEIb()JJRR()JJRmڞYYl-&]Kf1 gsss`.sllG u^MtPݼ-Tdyl_H۳4SŲKA&H0>`Ot}?z8;ED$>Vh亇( {7si H3BSYA8 '~܂v(6r=zT硦Х+Mʮ^1;hO_bFOB&S6c::FGBC|V!$.N4՜1D< Z}O$g85[aRD z*7hDQdqdwf9pYUoc`H8ΡE]}QX6#-q.ԖrBbry`yj}k 70R9gӴ8|-o63[w5#;fbKԓT{JH)W$R()JJRR()JJRW=վ jbZE]ȇpI>L>NƟ|9{=x ]I-mܘo7#=knXc%cA(2򎥭mx!9c ^P Z,eNޙ].ٴʟ?_3);=E.$N8Q[qZjz"y>kF{"1skx(9Wf8ٓ.FVYKꡀlnT'V-ouԑ~o8yf*^X̲J$ e:j-TiG6gvȘx=zWRV@uPstݜ~R9}E1%~G|k93Ah].8J>va?qOGiۓWQr^5n Ga6m)RU|]G6JF>3XjEX$YknQ}*;_UbR} RRIdU)@)JP R)@)JP R)@)JP R)@)JP RURT()JJRR()JiC-Ȁ?w E}(x^o.e>"rπX= x ,5p#>lkuYa3En{ $vfkmjyunݻBrX}\h-"܌8 <]I;FI-cH3nl(+>ּp䋕?{j#yLxSfd["Y!Oώjf3ѾUW#1>cbxGCZ%A€5.`V2'MEGKkn_c|m6y%dvru&XwHl\PaPQ^ )Z)JP R)@)JP R)@)JP U5Hu=2้<ԏ5>cδxTJ*I PgWBM=\<Jpr˛ibQO^%ROuM(ψxO#4G# P<|nLeSwEHz$Zw2B9UJ^G{b,q?^5Xcig7asU.JO$bYw44w-^sw82#OA}kڤ" Xs\Z?O{K|?˓{㢔+3()JJRR()JJRR()JJRR(fd֭g~+R@ ׳[4EbWęk' 'ҽOR[Ąnn3ZƓS]k#:q)$Ųy$|V[{Y#/ \%LJZ]l`یdHʸS!Ys ^DVwF/pdFmȓj;' ֠^E8% 1]U6(mu` uiW=j^OXM0 [ztqt*#2kJpQp~x'oe"W#w>oJpؽJIChZLƒݒ@`q[1k^]ۀs,c m8r|Gi;=kGr㯗![Z6[K$`so^[ΏcTڬ4"p)<)#=tZȲ$]7(6ΊΣ X+O{*(5MFDmnKo#<} p^ʹ ?ZڜȐ԰ tGuklhX q"ηNIi. ffx}\VRR(&ѝ/.ж˩pbCȬN#vfbrI9$ռҮJRbE)JJRR()JJRR()JJRR()JJRé*r5CwbFzg^ǡǙTՐt]sRԦ'eXֈn4qXVqUHvR4)JPmf{Sw"**c]fWI3Jv1#3*]>.#^{xk-˳זSq#tοipWrAD|ǧIӧ2$Z.e, ly>o{,6bF¸۞ E,w4 օe9IɯOCf%gъ{R( ŌQ\IH۷,;ȨrjWGYc1HIVԇQخkmχ85cm ӧӢV[9'-}=ǩXom֖^>J)nRh)JJRRԲ$\oa"2Ky$VkR& 6#9y2IJRR()JJRR()JJRR()JJRR()JJRR(TU)@Uѣr0èj)@)JP R)@)JP R)@)JP R)@)JP UxNs5JUvgrK3zTS뚥)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP RJ;*;(W<JUN3ȪP RRT2Y!P;Pzz5أ\u9d[4~w?Wwk  )J)JP R)@)JP R)@)JP R)@)JP R)@VWPM=@M$q`,@kG^u;+3=y"S)/ ?5Id;dQ{g~w:hUvi0'ך.,KZѣcTzxKS>eM;EöDu[QHJxcΡ[\$}gmJ+F*Pr XJRR+JNZ|!gæDG5E/S c9%VRGR>r|nFc6LzgFGOʮj/eg$w2F)6@#{/QKke[VWZ|  go>GYt~!lceyo`*}"?'gy鞙Uwh\j2X鶑F9h:q|@ -֟t`WE#v3q׌qTIr*]i^'HSR(, n86N6Zdd~"&}jIU طIAU;־vLc[[kf yݷƁQ۹-ݛǻ?lVY"&)^ڏKY2 @݂åF-$xJ_ Z/nܙ];"6~ X,ՙw'0H[Wln_'Ҿ7~Lk0w$j0 Pdֲ:v#m,a-n<`<R~~u!,/澃?{ڸ-vKb,~sTqka9D'ߊ=F5W_Ge 6hJ^kY#1!w}ڢW?{mz}OTUumt7=56Odo%X0rՊ=r'p$s0wjM8) F!CϕJԑ4(x8\ R)JӴPpO)@)JP R)@)JP R)@)JP R)@)JP Rin̨79'Ӓ>kMF+k-5̨, c̃zJ1W&Aئ+ޣM$d0&Eݾ>O*uI4q 3tҲF?vT۟q~Կ%_w~"BHV{Ə [1@r2|܏"}*M>$kj"m$V,`Ι^θwnYcd'E.0)gesw4QA A6ӂ Vn]e)5}uZ{51# o\$sǭI)j ^>wFDYCVę($d.8OX/O"k^um:le-ܒwJy;0l_.&G AQ ;I'dӚ5h;?fw91y_y1XOXඕ3#8$@~YWN]hZzy St?O_*l.-)1ѷG\y=@ \s\ݲQN\ʙg,4ӳZMDΓOnwc'8>WRVαEsrI&ǭv[wvrhB( 6)O|^ZɌ2+ R)@)JP RxUjQ<Ρo ŧeuI!F<ǿJ8}z{?f-lǬ$,jS|Cq FHf#_%}/݇ ^o6ZE&cmr˜`ZiŜRƺFI!Hy?/sW4MMd]Ndjb0 BBϵ}6Y̏mg qFGvV23g,P2& G["l󱽭if5y.Bw9$u]&E, ԌE}iaqNn.ԙ$x12GԚ,pk#:VZSb>=/?w9f=+y{-vp]> ϻ |k$k[ '1ExϋtvZ{R1@Ѩdv.~v%VMV nHn::v۳ <7Kl)np 5<9!Hݠ+1_.1ǽ]|w֩MݿGD'ϿiUMރƬpp XӖ[~c%\쌀GPk4[%VFb\\<|\hGȲEp3K~Hpw] =pq]}ULuImgjʢB|I@yb io!`Y8ϟL$#$y<+d,?&E/.b,>@HP9>^v/:Wtu 1dAξ통[]KOJ%Y%@O}Ty^7#1Q`a"oUs'Nm{W&m;dDHc^|&mc p{Ϲ'aǕKc4>\U#@1Vye/4DSF}']w:vi^ox~$Zeݥ~1Lazϝn>@UQvuےvt% |m@WwNq+=`K̼qMKVYy cκ}RRCif<19#;g/]AoP6ZXfymgn&琯## ϿJE( #߄\̭(d)Y.(!>Hg>K[^iM)i%9Fr1WY818#ij#TBx[*7'm1]~q`[´2GvW:uO!HnDNrk4Nל18Q<ֳ yԨ.6AXC7t)`;G Huډֹi;Fہml+h˓)#b+e5,?)Ks - p d9^cBz'9ɒDGX4ތ7c޵-Qdfc gz]ɣII"l"oANzarqOrɿf?ֺ<ѤR?jރDR7) =GŮ`x-DbpI4d| W٨L.#ʻ@ItV>ѡkb+PΧcbcŽYԙ8*vxۀ@U4BK2%?")#SO?:ѓ\Xy`}֕ηsy.e jh BkK&GN:PM m$Nm ʸB:W֥w#F|Vէ$#m9j=H'z/nddpFrQ yt-kO#-19pq"$*2kn?6RNzbY/>?5ۨ->e)p.Xz 5uk<32cJAT7xGwsm5-u;[HKDJvᕃ`*<o]&D`9лhzH{T#s1q}, )C%^탏R*H b_(}iOl WYJϦvzZv%P [32ҧ|~Aǵ9E-ۿaik^G)jk.MBMmSӀyG +*Cj>C[Xg-A[V Ӄiٛ^l4X]UI?#J˪CΤgqIm.Z9X~BǧNfAmO_io;e Q]tC16 Rf( b1Y8c˯A@"\0;fFf>O8O^v{X]No5GpƭqdTi\Eh>YXj) Rtϕvv?We/$%n$!qײͫF[hrG T}FۄHd/])F#YXnG`:}>u.,Hei>g\}j3a-@i*GxVAzA$8#+MK~墚tbkKG<2f jkK6 ?SύTllgÕSǿt -ֱKwqof 9SWqj&=+wpx!c ׁjVXvw?xR>wϘ*.2Ki3\azJjI'Im^s/QQT6 9_[*\Z=?$,3aygtDX7 ]f091X^7^$v XR3,u,LrcϟJչSl7?fYZkn7m'8q\uu&|[~NI8=i}`PHtd*|X_'&;4S2~$sm&Ɗy'a$MA*\rp8TB]R=򦠎7g.8>͹ԧxČ>\0>U_jQڹZHb: q3귒$\GI*U۹ ǰS ̎))sѱWJG²^K?ݖhZD,l7d–WӒsxvhčSD,85_LצEnd*8v_ !仏ˀkp[v2ߓ~oshs,>L*)sN6cb}| tF{JWF(ZUqn .}2HW:h߳uh=|@֮ƮRO֦|,.seon;Qԍ~uᆣ4R-hhX>a-.|-V+q>:#W2rRXpd,NpT,<!݋Db6-{LlpA^9d]⌸#1ަ9 ޽#\_2 wmr}#n|총%$`noϦOZ߱{1j; 7 9}u' 2:&޿*˚S1>!ð[/j7d4kѭo xS.q_Πߏ{B#w~(9OqHwұHy>PbOSb̌#Q#^J-#< g̭ʀz?JĈDhLI'q߯W>(xW!FpyIOʳi5drnl{IYH66s2o7fYGy$ GґIp"3 l[m1qsӠf]2*2rs֬Xᕀi[wJڗM1A#snR? uQSmy"7L.TOkU %?ۃH3uێh+!oìy¯v:J#Hi̒K|y+f͘EߨVHcۚX2H d6r3 _5#L?ꬩ5bu-[սh虊FʭCte1ԓ\5.=q/c &G=YsJJHγ$@\軺%jR@8N>U%GQ1'IDƿk* A'' sY}`ݞWWR.K@FOR]Lj# I9#ktqd/ В3y ׫Ioc"VYBkcUFG;=?@OIrN<3v㔱*(LV $Gp˸?$nC $r19jIZ6rq`|ϯ:rbI2Wp=Ǯs\6xJ9?=~x} %99 S'P:ӂG\ϩ b=f5 [˒;?ҏxId.8 ʏO:ɤh*kq`k^K#9Jt?1{>?JHޚm>ϸ%J |A֗?/c~[ʟҦ:r鍬I;Ew 9K٘#\g6Z=H .!XIl]vr(\FqOY{px-Od/mҖUF5h/ Lë*~8'Qeu{==o^j u<$hd3󟰭Y.1 hׅb"ޅZγI=~XOmy*11Jmy1Leva7?_5s#?Ҭ1L!@OmޟfjAI'ڪFωZېycDPOi8Ke(2j@ب=vN ;d-sfbǞ?U0?ޫdы[c\  ˑ[6Z0FU\=+4q ] XdհH 7 [eLHL`{VXf=KOMl-2R/vi\1<>ȬGhɖ98P~]H|eQMٻ1q޳ǩC.]#($J:A6Pt&$Z}Qݒ=7pzȲ~,LKe-$d1ы*p[nhn,m-4 d UrFG>F<×'Hzg=jV]"r c Q> ܝg,^TYIlIbuWem1Ǐ<.<+vSҬnL$xx_:A- #ncUoèjv̡LM܌}Y1fHow_$>*F3]ǩޗf6\$>xyWN9/B^}٭}*E 'ܚR5t4X䌐0mݍK,dk+`Ֆ$J4N|AV*x=jQj,g2&fK)_GYCtہW:Kb}ҢƄ[.x3HΤnfU*pc}aY rrI޾hiڍaa#Ь${^ΕVX 2{$'ZEBbQqǡ,7E BCŜqqYIRmn&Kh'1yq@U43UѮ;@PG+(wgj-vI%v2t#PqqUqSֽԧXW/\pRIR'>fuG؃bk,ps4R}Cy9k l+McZԎwVnW伻7 Z q2l`t1zȗSș}p.FVx U\k%rsTc= h4G6>u݃+1D.db]T! yZ "Oך' 8V!OհNLxfzUZyUֲjR+z ۞=sSn7#VDS\I!jy,5Wwy8s=kڔq;gUK!pLi;%[8p8),yOs5I̋)އ珦3M9W g;^d o*$ivXS<󃁞' Zݙ@}?8l-,7a5|w)t\s//*E4iY*q2S]uҥ\+DapzX$d`@U4T0X\3$e,d' }[,Z nqGSfc!\u*yL[$ sWr|0~bMeqR8ePd9 FU rs^܏HS~uHQ [ >GoE /n ԮZuմO)i#zbB1ze6_%0@8sYjSXwid肋vq wIBO?qf_g7PY + \xY្+2"FrY<\umvŞ4E$LԠV ф>SlYńj\n: u-* +b2>YlC̠plO?'eivOu|#Sфa|=l;S?"09ˎ:4C'=q6@?Q-i0W( 1N|#ߚf9VTXV><WεD@}WUn Dzo" X9?\k\)`I'$t*{w6HgĄF:WOyi]ӨY1u>+gZʾ&H'mҦCT|ܟXcj պz%bTJv\<ƚ3[X 58$-d^lj}=!V ug՗s?^߳+h8'OjB]{GBW8tY-u33H.ԃ(?pjl˘=Šnh49$rڞq q>Gʺ΢T(?PA8jV*7!ų*cHgb(OG~5;^2rNq|s! 8YVKy3H܈ ,Ȭ ^V톣&՛ʧ*]51Xd!gXB>WYMDF,],=}[/ً#WKa#L`,"g@k*v3.?AV޾Jd>^$QA);GV-FQ>?T-8?Ջy[pԬD-d+~H3@p}*٭&x{ e/#+9ҽLQ klXIxXm\B?j:J$y嶙ggqmeoX۱ӓۥZ%Z,L8 OJq(!g?U߲#=>؁FmزIRH.J #I浥3wm2@ `*jqxP&+ik ~M̮T 6 9$Ma升=*3c SxDA`01=~0[}7(cQ cb6;aL[' x䟫,J:ǂң>a bV7|U逵4M"AxzUNn9N|ԨR)K&<զ "2jduwgT}:*H?ħTTICbû9G9"ssSPg n`]$R#d Y21P6?9%q57m*ˠ`#U:U>X *QE\dG1"i@d_LdG 䟸OvG#r"62&?5Uc4c߼ZiďݕǤsLHx#T4s?_E/JcO #_*{"ryWdߥJz~ ȩcV=b}҃N u'j^,~_7v25}i:@1W? >)$~| .N9sz~?ZcM!K~Ȯ0#*$c ϿN4_30<W3#n#<ScCG?JqjXȁBd```pxΥOҭ:DOpl<ⲪJnAz;ވ22c}vv0&#EPvr0r.|*7D4a?޳fB Ozh!W%k"96|*S54|Vlxjd3[݌@XIpWfM3/@9j#V*B W~NGqQ#F=AִtrR30 <?ZErp_jTpLY{lf/BmѤP: c\gY~)'ԮH"`S"#f#TVy*&yV[-<!w,xBIٶm@- p>~֧cPQ,QI*f Ǹ5GѠPzSd{_sgpredict/pixmaps/maps/nasa-topo_1600.jpg000066400000000000000000004400511427377236300203730ustar00rootroot00000000000000JFIFHHExifMM*C  !"$"$C @" O!1AQa"q2#BR3br$C4S%5cs&TUd3!1AQ"aq2B#R ?ޔ{e)JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()U)JS(*wp?Nkq4M&zI?CTYiRo|G~O5;ڹ ~8 >"Ɍx;Vޡ+6i~Т;Fgn8` |>AqN+xKZ#GM3.2FZAӯj)E_4nX̗6@܊Tb 6m)^횒E)JJRRAڀ5J$9UNIi~u8̚vw ♮ǎn?)pNӭIωMfn·-Mn|WGOw1"2 ߩ oLksI/LJV$$,u%wƎp]GqL ?1F0'ѣ.3T? 9IO*>5>~1^?͸8$i~k #v/xq~G~iS>E3ǸWj"DZr}9+>[o%uީ,D=jqLԣANjR()JJRR()JJRR()JJRR()JJRR()JJRR()JJ:ҀR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()O?S@*Tߢc_#w G]hsT=CDԭcqi"?CP}zTcዸc]C|#O|n#Q:0[ cQHnF}S`QrMK>[i\oY1zrkӾ_|;m59Mw3D06'Ҿ|_XfAl<1~@l9\u>:_ۅ_i:lNU}9 sj|B5Ԗ־?Qw0OCcn+]F5 $uu ޸C]S6W]̬Phs0sҲen>0ԞIɲH'Ě?ç4ǻ@ڥxo*,H8qWǥ]NUvzmӝ~]E|(Syn:K̴6+^Ί2I{TΫdb]k8L, z^խ2x$}֟rqq倬2~GJ}##rG dq8`+yOI,qLGNem^ r:1m,F.]+zs\ k 2PN{ Ɍx4I3ȯW(cXF qҼ_> SM23;(cSez:yP𮜰E%Ԁ1ՙ5| a6J5Źg?LW̾g^ %o3ںg<k>oei$#\|힅+=⹶V_^BG+uG+b_QIAx/V?Q<5xAf[gAܰSk85h܎cF8+dFtP-@YUE$՟)!$fA>ٮ+%v _Čbr PdB|)OgCd~Ix=[o[P1K>*\?gj4kО6fk|k銠T,^E#MO'NխK*H޺| u x[TPU$IrW`Yo֩Gmr#5 $Դbz7|L!G SGRo޽N*켱H?_MZFZ[`F|qH5M6]dȩR۲H s߂X@ t9R=;pԐ0 9?fQ`>aU,Nj5@^IllEÄH#sD`T,x5)6ag)cZ6Vs֥0ro<9x~y1Ag:|]!Y=`ᦾE pq2)rZƩ9! ZZ3)#o<3YdsB' 4O*5RG,i$zZnud|0u,ʱOҾ [H{]G@yּwTà׳i Dq[Gq˃pNHkhg%"n𑭲foh?R±_-BiI) -Fyxω?a 6v +_M$=yfw\s_D&ߦMmf| m<.)=Ft0ZܻH5ӊWDSKd)RH)@)JP R*"@S42.mM5+C R2h][ᏌŴ&g}HBzr1ҳyeT8}zݯ4 RKKs EMЮ}XW{Oi]i7Ѡޑ ʃЄlPCGdR@c]as>Z+{X |pw@ ¤íJWD[msj~7Ew<NǞލhkf֐MdIGKQB?6DV(Wď$"'z ~2\+˙7,|q5?+r?@N35qM=f2(ZI?LU7$VF(pT}jsS^#bկ(bdKk$.sϭl[qh~|ELo.Qę@E]VA ej짙*I-x̺zZE>T!q9z2D}~'}"; !hH%9qs5IJkIׇ`hEX-"y$P1PgvJ1]ί?VwvrfmNCv&?+C]v-a¾3")#U {]>>giy!SQ4i72Ԭ5֏ν閷Ob=s֦$^Kg Y *[pX)VȪUI,I4I#wcNI&)JP R徟qq' 6hX!T$R?JfGPE+fo:V (_R*CRK#*FsVUQ23+TwP5m:4P-} OxrmV𮽫iwIv >>9QlRIߺďd g<,|å֩0K5 KkgPk^ve8d6ـ5~(K<^U#!p5w xLgbcQ c W~k_B {_?aKIWq(|{c #Fߴ#2IGJhτ7]wJڇLfOw,EX}3fK1Y"2:R1W&:R$R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@TӚVũqMZ9F[ 9H?1ȁW_>6RirH(n%pہ#5ɓY.l Ĩd.}kfGլYo4xd<2=ska0֡ Xcg ӥ`,W=2i.\E<zK[-RW|m?Muh|Qۓsڥ%{lt?Bk|1J;MIc0?LМ=MVO0G"n`+F3BZ]aV^k vH(w+ܗU."zG#Fش-Z_^I>..$B9%X.ty`\F@e鎿sIX|uF~q< zcq+oe̒1q¸$(3Ktjz֩c10@A`cל~ԡ$3=ِ>qqַ&KOqH?\X&-y$8ZK-R[]J@%`"v6NQY}Tl.t`DlI߇څ!ȼbd~QެJ< 8ᑊC`w: T⹧T~zm)O$r-rYs63){6H (UQ"cOk-ȿNDUCOƏ2ڦ0Mvp0{_ #{_鶖[٪|'S×uz~q}h^Bαk#s#B=>-͖=4WW6<ɰTWbLTXfxmc^#qΙwVm[ش-q<Է~68`-(=גqc3KC<>Ig%ذ–_nP|955kr8j?wݱJ]oma8^}joC߽W#ֵ5ڢ#(Ct]q;"|.3P#On//b(X ӵdk ±rx~O]C]6-rF,ZH%@#95KO޷]k\k_[r;UTVh=M7UҤ^/)CmP&@Y_?ĺ{iO[[jNY'"0}U$|WFDFrsOM'\2WGX75.(n=z+ؾCR" 4F-`~/|Ad >?l5-N6K9_̧I@K"I?88T;[j?uyuImNޢbojw_T2I/3<뎵OBw$rü`wyIZ_ܻG|cI ~b)1z~ްSkyume$zec)1sMt?PʃbYכ=~=b͛, >)ӃԢIWVXO{e/ZyuI6}Q֏Pͼ?ا#i^lX//mȻdP9#GwɮTORc01C]+`)JP R)@)JE)#o(68@[J߱ulvc[7~խ2UJ>HVO>5-J1Lu_k晣I=r4lEVܽFrk:6bfd8`8?jhT ca2XVM>JR$R()JJRR()JJRR()JJRR()JJRR()JJRR()J= uu:#HUg] x'R$E#o$j_Q0'(8skHQ#  +zKn7bƤG]H 1]HN+FO xwR#jVZhqs\!aG !>k$$Bq/N nߡG4yZ;^KUV_m ۈ!Xeʉޮ)osI2IǗ媩FGS4${\},m'wb}kX)dc>u a/uxV>}o {+ SZ,"Fh5`@ hrvBHaOX0:];⏈eHl_.2{95IryYż2R3Ox~QZjJh6I6q޺c ܫ*F 2(ğ8G57SVS|MWE d@F}@Pu䴴KYFWg\F$gڱ1›B[mƼA]kZAik2X`5­˻F$^k34k3:Xe`^gkM=!◊ㅑ5(c.r)b~QV%<7fT8H}9Ip1xV|YsPmf+%+9#B+5)ѣFFڒ0קYx1a{wfț WON }8__O 2-M T]FI/DE,ďxCSԭe^Dـ2קx-ͦ}?[7^L?yP9# sֽƟ&4}rwp LzϞ )]Csx4m'l|vֲցR]3dF#5;(Ts=0^Q r {[{_-ǖ=>?J_I lGepckHG&w+ezg_=!sowXI,gM!>-O'ӓZ hwּQaojg2BS7\\閫$1 c!xŨiOlSok r ҼiV4 L銥 s=|S\1ךCMG{7#JV=>4alyul2XfH¾'ivjkĞndVfaǚ|muOP4@)JGڜRjR$t$ _NDI# pGrTeS7}wPIainqKN)\ׅgx\X*181M9NJ蕕!޲\Ҕ()JJS=*4'MҀjU}+VXVIR5^Y@fybS>/u2ͶMuIiI}y|5tW'U?)kCdI$%\8)`9֯U6ѬxnI޸_(6K3\]$V83r=;Tۯ;YTqcNT;o\GXX3T[rɵ%xXDv'ULn&HUvcSմ+SS^\>0#\aXǽhkpO:Ԯ-m2B)= Ǐ>%-2)(TX\ ؜qWxJRECHvHH=0 ~lYI4iy,k2uI H+G/+4z$֩T*IU 5wV!=sަn|;k<&51 DCrzseM]{T4fYC&۵ũH"ΊuRN?zL6{+DQSSi-ƜհdEk=5i$r aY3}RId$D ȍӳ2'[viijæVZT2xF?ڻw^es P[^?AZrI1+>S܎9#wsjE5Z6\W*uuk+&V8k N[ރKDF1T6,+c=ZtUhiWΪ1Xkӌk8OWcrT7X3R'42DDVQ @|RO?7Hie~uB8k6L$)J۬, g?\$i̡q~lt6j_V3RF$VE}њԕ$:20`ձw䳽)J)@)JP R)@)JP$*<y {v'# jh^KBю7  >ղd)] RiJ4Js ^dK8Z(\" Z*ON'5 qWOz->ln.ؕEks3 MH'{Wmw*H!1^nOYFpv~7޳rmԊ7ژrP{qXc-q\3]8_5rd*V +΁Ez{f'bpnG5|#GUUjD6 WCD T(IJ!\sZ/Y'UhߏAXT"XaVDk8w2DLz{#^)^qk(l"xQN%9 zI䇉-+v2cPK)5cwۢ^j׿"$9ælg$W?S S Ǡ&HfWYgknYm $0>w0Q'V+N$ycsXn`C4n;0-b؎jZ-;Q޼`YT;g"mvv;eOc֤tm2hmGjM}{&wE4˭8u4&#n> nEeV'sbu/dd6Ns^<;<$6?Jܴ0jDrGcj}n6k-G,'Q-}-_h @pX8kp2>r{Štv4A=yZޘRi쑒=+(`ݤsUYYE yzw ]d`Aw_QW-&xv37?4|Q߮ gMl+4w4HGsZ~"{ɟfZ%̪Pepw! .1Wpq:.~Q^ޟ[8qtmwV5D_̍ӱbO>$ehgK!\QW6 #1"#$lPں xrPL0L7zluQ p< k.& xj;th@1> ~`{8=^J.OWJJ[+";Fq +G}&kE[g}L/мrJ ժIu%Ŧp$1G:fj:jyVD2r}N:מxQ/3~a}맃Kfa3΁\<'N?]B]YCvǣ3mϰ{9 d`Xq uSC刨}=~\jrB'ې2$W?)Р2%v?v U;c]~$bV6#9:rzWOJ=KIMvF瞊~'ҳI-1I]kz&IHԤGf0Lx=5z0#mQB+RE)J|WIQ6}r;7R~֮4krՎ:]3_0^])I#cu#=S{åxQ&r"f8?ƊcWOU(c,R5Afؽc-$*zt6b$EZhVsT1ޯ?>ӡ"x#RUwV9g#jlsҨhV)@)Jfh8X˖ZW&k#$l w4iŠK`&=ᇡjcɬ)h[Y>mKCKUnAݜg8Rg:7^-:=W1޼s>Km &$3#^+yjL>VG@2j)2sΓ9=HQXfDO^i=n3)#,'Thy1IqvN n0{kbJt887Vs*#t6?g>(nRD,OQֶ-n2u4Rۜ㱨mPKh.fO+b R<$?[殻Vpܪ=>,H!ُ9}蟎ܮ{eLwTZkȐ`*+*)'d[ܷ R/#xܠ&o=[w#Յ->4CiVXd21b<#qg[J;6<ʏTk8CXp1?^d)lAvS BޭwiZV_Qֵif֫dյ́-f?{8A!0}u"NUhĻN_TǍW2#b8hzaR[`ˊ4=w)aE#jKJ:$iRK_);ټ{=Œ*bOLڼgŧ5كZD1[ ooj-tMJ6c237V3AG0+gEc j khzNe˿%eWG]躭FYfHVۜ~{W^+nh (w)xUQi ӠR?89=WfpJ)tȣYmn$[O$N:b+.tPhC5vVK!qtcfdjWQm~\W|>*u[\$b,ndܷ( 5;dRé];lH^ 鲶Z>IEyk2)-rF> (?Z#XbQF$Ax!F85& z@ǒ{|3^H9?JK29SQVbtU}e7vu=~oI#ڭѢ,aje'q3=i 6"H_zV9.3rqVԍ+p챜sX0I 7V=mIu&lbLUV]ʪnb"=k*_`\0fb )NKQcqŁ(pT/&ȒhT5S+gȊh]wpNO+]lvrA+X@~^G$"4B9l`M#1UE'8 X﹕k2oZߒ\E3;PsΛ)H&Lx9V&.JaASe5 aOvkW]6qX^dZ{ }`@܂]cQ*1 s8,b2ыMtC Ԣ@"8tDۑQ:{UwHqN}*ɒ|7dQ) V (s y 3Ym,[P0`?X?;7:%cLb~=z:lnQqZ[:cҧj/vl|"C5~%/9Y=y}sm.ma־.hIH']8TLϙx%4+%TsvO3Zzwn#ףuXͲH;6OϽB=J+I YʲQ!u*Ʋj>1{|G%Gw;ήʣ9BIvsVi6ݜyqhPy#7xJM9 ^p=GiC wU] z a\ZP\-*ufyCg*$bː˴}jJe]l6?+$T,Ba=H>N#sg,H `FN+j1b+ٶtT˸"Q>uP%nrfR`]jHЋr,I랖wgG4~ϧڬ8=A=9~ 7SH}kDm%Rc|Nsڼ \#ymR*NqkZ;krIp#Olv3..2_(?÷+8#vg+)^k5+{,G8 aֻp|(<*b9,X%*@QIu)T$`qVNFr ޹_|@-gWI!t2IzJ|"K2"} ׶G$ȭ'o|LYjZUΙC$L/ziYҭ")0+ `<j*}wym_UH_8|liwox03)d2q?s_;k~?ٴ}s\uҨ.HmgigY\ $jOeN{T>j/#^뺌@;tCWJWHH1,ۘ'IPJr; qިW'ۑ紩?F[cu+1)ezPg%(RXJRR()JJRֹ$lu9,rr*iLvx1IM܋&D$7}i>犏I~V  ~wrUT xIY 1-Yl=jmd+(͑V-acO5Ҵ9s-'g8UE%v;Y1~*A>$zX25bB9!͸ngbTsoֳUԉkB[D*6lcN5ӇO COy'v=#Ao2pxîkP1#W9̱FK,dXd-^0\4GQjj{IG nGkoa%*=]߅NnO|#41$%a36odO,[$L12Xdy#R+6:I߹?62Ew%UdN1#Aw., #ArOXˁ~֪$U2M'DmQE@X1TH1:eݷ1ӓ\Ep"ɂ4A)%y7!3)#5l#a~Ք: J*֢'s[kg!PZH=r>"c&l3'f$qBVkY?v-b@N(~e|,0Oj]BU4N)#]d' (f*ڴ7\,nhNְ#F@_ڬeP-dvM~? g :~oIhtj8gc"P-"O`-ÀT;n=+if{=_M"ymw]0+CL*{p5[0H9?Jo)"IFk䣷$ ĐȪhgP2rd@JlX.8jmS2h]`(*ė$gR{[z.pz!_|a~H9CdVJ0oZ xZΪ85v2x'Jif㟭Xe'ݻRv0$s+0 Ҭն(C;@jڦR1 GknڥzVrOX*a]@EOjHwm,dV1&Uo0Fxfpb,;HP]DI rz1Tn1N[C+VP 2ڹɭwp\ppL {ղ[%b TS/4WxXrX5HУ#9 Xd:mê 'E.`P`OOY5TEr3H6BefTp6 Y<7lUSDٸ2]ɓǨj E,3ߥs:A#PO><^LtIWMҝJ|/Y>O\gNĹRV=(mðUV:Lqϓ'&=zi%[{f88خk\~gr1v!4)_NzםLJ5ўGuӿk.8ܦ+OrM$t+G\qw7'>iu%ݲ,~՟:ya>z͡Eӯeզ>7qsÍtQqAQ2H~qAǮJ۽&nXgtq<56!Qa{z/KW>> yk*-IM5Us)dt;3淭eO5Kn Ey >o M5]z孭$VqFִ-Ԁ! A ĀG\Nk{MEYJRrE)J⻿OjF)1WcpVGmn}5Rcĕ5ʳmŘ'5\U+JUWn%s(H5Jv ~2wNk B )JE)A@Vxk%bi"sҺöB3qnFLɵQk!|ZIzkhc5Mh֫=^*.Yμulcj:B>P9lVVVϰ2ǰuڝk$o!#$[Ou1Gqϵj+nrI<^v5$or݉ \!%8wla޵Ǎ䒌{f|ٞk"W 팟Ҵ/5!,fxXvYbI=MeEw r1/vzU1 Xr~/ikoic9ޕU) R1Pk',=jEs) VHvȳ!?.x>kՍc A\` U}2 s=*וvj’4VhOLUbS\9G[#.@Yk1fUǮ lo5~Fj8OCSA:6Vi9u pr#W\tFf3zԸԣn ZF)Fȣ8%7*geܭ'8 J$yw ]3ucϖscy$y9S8O3ۯZ3 TyzfLd I|lJ,V0}8V;0KgGQś{Wc“KР޲k!lUʪJodΗ.͑o!X ޣ*Č#ܰE@(0']$m t *+׵HC=ڪ4i:COm͚mRF#Vŵ1r*xYK]ʬOTdAU o3+y};f(bce`{Įc 쑑Vǁ9KqVnNj׍(h=+(>*wn+L˴meY d3sq;rqޢIZgnye^s[cw,s2 H#TاU ck6uj2ԁ:uXΛT1 iJ6Ũe) Ţϓ:TDTs;{gy {Jйu?jHed׫gK!iJW@PQs֩J*X 6l 3n+ۢM/*Yr4$N+ J'JVκYڰa5ݴ#VL-"98y}"L2#KH JP6[ i@s\NJ.M9-G/ז9(7+P}"+$*EIR, i$V #PKI.^()$Hkw}[ZAG'\$D%[JP x}/Y}\6zx~Ou?KP5^y ? <`Z񗍴K Z~w )"錌^a,#$vےrOީ]6V"Q=ob%41!y 6k휗fj5 w[OE}Rn~%|: dJf&(Ez/>'|(&mBW9>PT5й|e⏇7DwUˏqz Hծmtijq`_v֗w6I*OwJ=_@Zj6h]X,[} rj=>Mq%JK}|'t@E$n=IݕTq K|F5KXe#*rK񮇦iھPj 83WOz77s.=LbE8a|_GkuwpWz`} *I.L8\'@B$`}j2ss[|\Ipߚx[E1nALҎX)NzxluӬ ʃkF}qPZ)d}$ѕ,_ :ޫ,E8+wF*EYo`dsm!O3ghst a[`͜+ni*KɂI(ْ3Ufs#l4ȏ85V—&Fc[F1[SC CrWlcUKKY4KHF0 F2~Uɪy'zg„#ޤ$eWzUmAf )K1[bnZog#e^gYUV& ~k,16UGUm]KKaͷ7.䃟ֱ|iF9M!Pq>VR$JC9qs$\ezs d5Cu" }`8o YTR9Joj?uxՌN0 9y#*QQJRrE)JW0!wj{B F N1dʌI'@-,礫o;4)~CsTE-~M4.o6MoΏ[9J@O끓q!+stj Rzo@4SX#.Uu]b lqңo-[2`Џ+EXgrj_=O(-bG=>GӮ5;ԷrIϢJl>Y-m o䜓^SġXݳq%&o2%co*.[T;Z+?^ui7:t&0|uʶKNz#iNq+()JP RG*kH_xzV}b~vM\jYB2dWR[Bk,ǹ5b48~kkhϕ$pnJqxܷ.?"m,C ^g; @ڢӭRRDU R$R()JJRR()JJUT NV,Tqʲ!ǖ;~ڥe7ٹ&H>k0Ks[9ߥf堅Hle^O.sZU%$)JV): @5ImnvI˃Akρ+)!#;k0[-4⬅Ȧ8D0Pq/zG!g\|;R݋:LfeYw\tgT˒rve9, #9#sZt+9c$cOnx5l"B]38P1e05L0_U=P1NpsYP壎i8F?TdpげdaǒYhbURV8}oW " R 1T\He|1~ob} 1JXVb~Y׌A9d$T;r^ާ4O.J:.[y:6p`1p >p3oC~;vobWҭ?ZP9@BO*ʣ*~a*PzUj]Ut Z*BzUvz`uOg?֮RHTes] tHHkI펴W`l<[HWF9FHnA`1#V[WS =ΙDˌq$iV$ b6".Xʞ>xmaLzc$@vغ6Čd Q1SXd IX#6 fr@*v c#sX#(6CE)arV$N+$C[ #nxWQ*L$ڜSW/0?N:!.3[ȱ@rǮEM#EͿ89'zҲ>hv3)}Ҫ;~ UbOϞ*= {V9clG8qU}ʍZ~]G1 8UFZq 5xi>շ'$3Jqfǔ<#ֱqaXIʥF}Nj.ri_c!eL M0oЎfUxCUS=T6XeUB8XP[pElv=jFJIzYpIPVhTԱV$^LM;O"LN.sU&Fcv,lw\n3?.7cU*cWA{մ%<#GA[c!2BɭF%lP J!:e25tq+m6fpj`[Vv[MN\/{oRneeedo QCg,Zm#H;iIv tQxQ,bW4,.Gq}wQܴ;WQHřrw6s7K-ljm-ɏN ׄAe_8?z.f;A>åLJW?>BTMA+HmRP|=D4dG=YItl$JRaJRR( dQ̶9:E{se]u˟Mܣ(h-rÚQH-%Viv;u&5PXŸWx'' {am܎ &E;3w@_~>dGt)4'5+TƊ”\wv)hX)ry3[#lѓ1Q G<09$$\.;3!e=Tb%IskTo,sp8M_COq]#z(A{zQ!cK3ڷ!dCXTڵfHù)9ɉ6I TOx5; 6[Q5H|4v!A㚹kb ԎIf䊾K&Q ͌8mMO~YYJүk+˿$ ێK`WZ2hGI#S3+9day_#ұXܫ}=ka>Z [}]*v*Üp#֬US}sWʷ&@GN:CJFTںFh̪)\ZA , j<&O^c@+<`VWl&ld!$A8pt/"Fx Ul,H# qAdY1oՕ\rZY"tur5m $̸ϥIFPckn[S!E +cCKA"rp\v:"̇0*oHп"]ʽWFjuZ rC#id*m;g#J&ޡHGJ^s_0)}T#u4g/ H'Y|yʤf-cHJ`Ԁ<}ۘ' ")=VK%fP@rH>O dK$T868m JI4\vUG _s*٢|0nYARy&첋4 CwQ]%O"E:{VFg;rOz%,68uBk{5r@s}j9+٢-a֬k*횓H}P!SNQg"OI8\sSAdA!N;0~ G?%! Z R5<%vFkP->Fmhvr{P )?8?` ܑ #pPIj巸%%;_8  ђu`yyba)oM ga0yxjvTi~lH* +%#){{EL30 9nm&/"# *Vd6-#wrlcr[͵8y3GÊŧ^" n\^&ݤ3 `bڹUʹ1NXs}bv#ӚVidMÑʷ=}cQXlx#V˒K)JT)JP RϽ^Rߔʣ2޲ɼ[d펕 [R*b 2!;tmx89i@`9ՕJny1ڬKjgG#ӭVTAEa#TP>QzҥG% )J"()JJRR()JJRR76r8>Ն[BBqꤒrNO`JJ~ G_tǩ ^Y mY=j5y̒V5;w\51 +s\q$pUXeQ|2.~`A9k#A"Xc=kmnἋK+~S12zbIIomCo3j%}h @9CH_;l !=29겆(?Y\$|x~\{WZhM{-r)+ʓۥh"u oZu?*.?8q<~v(-,@33gsQ2SFݔ$u޷ Mlçj('^<Zml!]\m4)2+DpcxDӚHc\Ag,bZ$3ۆQZn9go FWRjt X (GQtd4p2xZWn!ަ߂"ՉZ &JHf2]P*6 )N99䨀g"-z$lwޥeĞ`^K/[R6ܜ=V'ʭ;on#V .QwoI@Q8c{ ]fݙXqɬy hi=R1^zV6i浌(1=^<~_Ry`u5V*UFx8*cS@Ҳ 1/W}ͧ5Lj8'W9wApG"ʹ]NA? `jb\ e\c5uq.VmiG>f*pWEXaDԻq9YTBF&BIk'6V*"20=Iw'bb(瑱Wя?qPڲ,2ӃWnݫ};՗2&bfInFhD7{ް3$)ƷssWG"`Qr Y-s.EBx;F㎕d^Ո?`M7!#F.OFk2AƾƏN8fwH#/XbW*ܹE7޹v Һ%&C7 JW8'b[)JW\R()JJRR()JJRR()Js]~!1#Wbഇr#\^X## U5 oQdbLchzfmVw.L&O HarSOgi}!c(YO溯 4@[lx/=~8=1RJ% 6Wf#)۵]-\7|VE5e3rX* $kɆqPL[wuTdm;YG(K%NLs[zԝA-Sgb@[U45DY'ү%ޱ=NEKCin?QWd6={YFe1r1:8rn-:lA9]xҘxB$ :-AC6+u?bhs6C*EʑyOn'; զϜP1ޭEd| wdu{.eٮ#ect=5Y-#n=sk}bÞ:՗VΒsKƈ-.?QZZ#y>̪,Ђ8Zx]U6H(Q@WYf;+ y4xB8*k 1F #yr9fŗYPMk" I돥\b$| ܤtԝБ MlHq_>0%A$'ӊPyʩ<dUcܑEg֍<7&| oǮ޵dU{G*XZG`+  }; 脱/ЌYI/!o~;nJ*ccc5d-#eیg$Z6.GZpA9R\Hc뎕#gNdVTX(GI#%]knS R%*_ҴM0; h(J<ȢHI秵mٲD I㠭]GO֢̝1 3j yj:#h#Sf1ߗՙ"=IsYddAɢd[FhZ267m8<2wIQbc&@8ZĢX\<W!'n;o$q.7sGtMH ^$bV $`mmO$2Xbl$ NE_|~+鶍|; f <`.(:ִ7AEl(aOHљ': t=^|9q,fJAJRR%|/:A6Ԑ'h[{m"KX3p=Lk!+Qr}x~<^?c)+|djTnjWi^O 1!=MkRˆUIi2Le݌ )XIQ 8w6 '.]qּI$'239%>"P@-y\Ι]5kl^NU~FգlRI;UgR+]ݥ2F1% SaN>٨$24q lK+Xtd3-ìJXsj.$N*a&bD A&,YFc1Rq1۴֤Q3>jR pVN1Q[$uAQYƺ1 þ3X8|2+# @!*X%fMI#"`ndy@ʫ$`.H* t]Fоն9mMQ6hWF,Jb:խnsEoO e$sPW[D.-.}+ e킶,sjÄe9b8J9 /c9#E-PGʪQ3קdR:N\rsүHڠ%*A;rjg1c9ǭyڍ4:fB ס T$w uJ vGFQ\?'E<JkU<r r0}T012ֲ̓%.,K`)PSތ' ciŲ.73UyQ0ѽyPf_B*Lg#} ʄY0#weGQ';ՙ&u@92A:ƾ$>BmnU#$?V K[^0 ֽ"9K2j7-k:H2o957^eQWlR'm բ1J-kxALǠR㒎ݯ(;Y4s̓';Jf#J?JnGH Moּ%i[?t+ lB1;@ /!Y gk% V9EP׶@MWD&xEUc^c^QZ: mU1R"xȪ 2RE\0_|@[6/CV&XdwWkG5 =yȎHՉ.։UϦ*ADC[2N7AؓUhubA`dLeʼg*eZ֖ԒG zMn'8}ke\8qi|ຣ{7/B8H(\zL!LN9qW顤1܎їsQ -`zdm$TĖj#n[-2psWLU.Tvo w"P롞Xa%PNܑIQ$U=~\*a8pIP|W?ZD_c1b zWb+iZA&0J~Eu]CO `ݜftc&gAJ̆;ys무kc1 ,\fg"MWsVkz-ʼNn nLڭ> &?b%{h%|}ydu1.8| Z)VD|>=m],w2A(˕*: 9=*15[/:+ch&V9<\DW)r2H-'XhBb,wo5AY%k $`42ώQF֫uolmC3ô0JmIS6qQ׶;4 ýlg63CQӑ֤r \Ӥ/ p6NGؘ<r7$̖-XaN<9aqz$*IO$?$3:uĂTWEۀ LJn<$nČkU8D\79TKip26uǵu6:|qÆaZ܆̨o&ӑ[hd#L÷ZGq @ ڻEh[HJIsinlr۔#V15QpDPɾ>hzid%+95D#B7sԟֻ>.^]*(f[|#Tk+CڦmpQ05 *k 5|wzVZR̓U9b q +odR遜ַtN\Q8 wۂ25i'nDry8mmEib6=R]VeNt NԄ,XaU`ᖟ*TWmmc&@D5ߝ֜e;Xb K|͟_ \_$8`E0IE'uFcݛ+|:lB6Bd]@nqkBʌK`*MsZGZى ܷW|6xV哱QRE+FC;sVa$ F9#}V֭u#4<ZҒGv˻5ݧjW2,)QN6ܟ*cc<ҽL8(DE* U)Z.grZG*cT:Q* )J)JP R)@)JP R)@)JP RM)[veݶZ Sn?sz4 YX!,R_"x@쎼S+Ҽ!)^y> v&dل|> 05&-cex03Z3@Zg8].YԞ+m]m""7)}j>(kkƧ; U y&e*JH8>Jz-`Ά,o>WL1II*,МK,I"ndz>j_q%;1ٷqK k[<&pdo\Wdzq~m>$#P r>o.t 0s몺i.-e" :9[;lY<a}ǏQq^qlFC w[wGA\k=Pf8I@TZ]-wFp}+Sɂm5 2Bzb0:q 21[Iso͌N+O5e0_*v6&*ílX17GRq[@*4l ɿ89=$`M[ozVKN 2yg%a1:*Wl"/k\AR6w$(?(B=k58Kcwmۯus=܍,:/ÎVz5KID2i5112ik'ӤlBVᴽBMeWt(IztW7w7$^w`\[~d:nq$Iv޻DZ$y3^ao4`te851g+eYܰ?jhdIš_ | 篭l!:GfT@2ȭ!jDXE0 ÌN. F>`ԽM?>?r:kUG/iA$jHUI=RIE#╰?ʱp~-7n5+^i$bnX'5arq\#`8aA=+1өg>YO"|γn-"d98\K>6p-oF021r?_5Ě5閉j.aM##=-Zݭoa$8^.sRx1ck+筴n-tqws3ҳ:2CBԒ{ֺ"1D P>/'(}GDլ4[Kd/[*$/Iֆci ^KRRѕCpq+,]yէ(I'O Iv#2ֲ_/~yO?i{;጑sӯmH4&h_QKq"B܂2}h#Xs.i[꾕Lf)s+6!,ā;qSM(۸-V=nsK!`1JY^V'&ua.; "&Ob6ZMQ$z>e՚S4M7Sk{bnFrsXܐ3N$ewF{ƱR9#+Nղiy8IIZf sĐ{su=)w2caw* }CXdh#d2}Agɶ[@?4yL}mcj=엳F%@cD'kXS\j>RdPաow%4pE/Ilvܼԩ%f2Ԝdd")ez` 8Π$eCQN:`\@%7+b+qpZ$ R*OZrҍ1>iҭ$Ν~Nt?D8`)k-+8Wbk Fʶ;\ssip#0,xd}zװ\h-qHE<󃚀BˌfgN 5-[*(\(#hZ7q,GtnXrWYkI >f@m`p3ojoȽBt'|VbJ*!C_;Au%q r=z#N"GEr+hy. d>F8mF[uo1Oj/6\?!Xp+k\[<|Vax,zиX ̌<)UIU2G/1-ggf|o=+sÖ! Z Ԭ-.أϘ}nHQ \8oL'OZrUi'okŽ& HBOn+MNQ]!Jo1Fa_.UT_26!dBpgRl9r0ivld|8?oMntSuwX~,{={VITbȾ(ExʁKdc䚫?z3YC0w/+ \jAvvugKl~oҹKRIn}]?z觨DY56|<+u1ѷU84fbۋ~F%IktZYi~E)J4()JJRR()JJRR()ϥ()JJRR()Jpr+4%Ŵo2HJ X^kKRbQkbLGDьK 6,y%-GG="Xm 9RZk1Hga_6* -P+2@ۼēRW GO'+Iyguj.ѻ$ =+"kRZZZ&`WzlH [Gz0jr<:_|ڟ)z>u $~8&a5UYgb~f<ӊ?x2nE. "f]u0%/*+,$5ey1\[sn-Y2OVܽ E?mjpM=o;;8溆윅7a=kzM TBozZ,XXN6(Xn'OQ[\/NGҺYa V͕BKc?JX&y܄@0ZDdDTv (A ?y CRay4Ϳ!j>Oe|J²rrB7ZjKo8$fM!Xg"sO%uuv[\zXcXm209cɪo4j,oA.KrlL nX>RӨS2`Wkv"xIUSV&Htq$\%$rw6xbqӎ"K|S= [aJsQ /-k+QWo1'aYu/:tH!t\WϽu7hY#Wgs.q50If6啹(Q~PD< \T_(9wp*,spֻ2nԯHW~OKdd'ALBW>Yh`BHY-- {aDG 8_HouKaqia#rZkw gݱ{5X!Ĥȱ8S8>7 uſ-sK$"ydSJ%aps_O1T,3=ǽYZ]KLwMLݴ`[sKԷ+4Z$ɹLŗc2|]Xr88G<v;UGR{ ߹{e .rwy'$G0F`e~Xsه5ݚYSē3|U]lbsҲxUMBQF% q[~=l{;Y`(dcxVxq#Yriu%Ieq߽tYd9 XFzj%WFFV Eiqd#Ѯ%:md2nOmt->>%?x!b U$0l޹湔G\rkq^>?rq%=2FZ%UȑӓzTG%"q8~`i$U|A\sb?6bo*O`*V0]tp*I-*@RtmȎfQ򜟯c^mH"{w(~mOA5Ӣ>g^eQ|+$bGM% ?xR8[W;$q_pڵm>"e]^Z8* >knuws^Ö?)'۷Z&+o -蟅Gٹ71ֲuJGC,}Əgiғ'؎ZMfЈ-->umM9 rEI9ziDEr[^)BzF}VMcNOG&ͲiBN#Zq҃ dVhC̻gy#ֹ[k B\sJI[> %I#|+z >FnD)cWTJ[ 霴qWp5؈c:fIweV9Yx.,-\̗l)Nc=O yj (K&k,$b]DEslHVEMx~$2B~d5*dXq+R4 fђ5kљHQ#88=)I9g)P%ڕW,yfb9=;դ+fB{ɒǏ߭s0X~h"Nsymѽ[epO?@kyFR|(Q9٠l-aݹ}'?DNZ\W .nd7ͷw;GNе.m+r^U+^mKa CJnl$g@qy1\χմbq2i7ɼo'r~I慚I }fyi죉Wjqۓڵ!1I[{ttpdk4/8UHJ`"w'Ov |(~Ւdb3<;0Qܩ8jץlPkWZ@69GtZ9P7y_ڹoXݕnQ&>u+-A$Vq8eC$ǫ1&HT,x^FIUR9dF0k;#V;xB 2 qňf)=RH+N$Zz+-ABHzZ\<]2R=ZR`>V8 XTNjrH(V ,zTׇ,XL.FUّ[k ɽGDQ`tLGo4dD8ڼwp粒}$H텺H ob|E?Ȼ@1 5^Xpǎ_,U"v()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR( T5휮^+4s yG pGQJȳVI?)S+z|u-JC+xrC9uhf«̓ߨi[vB 6?7#|o{va=2{_@x {R[{%Ү#fЎӽ|ޫG=4Ou5Uvha{vHG89#qV rs^,: ʠ:?A=yWq|ێ\+3w%h犴GERQv+YjԾѯW7 #.}+txo~W@GŠ[ZnFv&XѥPB$6@OޡΉnnv< iƟŽdc=Y[ޏvWHS|֊J7Aѥ)m qFNmG<^ڲ> t>Vպ;UI#Z"XxUrHktE#rK%|n%789LN/E ^Go(ew1l Z:U +\P)BE)Nr(*P R)@)JP R)@)JP R)@)JP UB}jZ1Y-x6Y*"'z焾,]k&ip 3Oڹzusf#]u#qȈ6@A d_ Y^@?ʑfR-(hvxmǖ2|ԾGv֗WګZKYYd;I$ge[smfO܃WA?fho'/qq.ʧW,K7ܖ8J綊Enu\-DR11.NJ ^_wPG 18Y|1kenfnȁ<-}23ϭfarrz n|pHo:SÏK ꛭ/"[M̒|S<ȠU5藶,)moֹJT@1Ү@ O[K"4mI ʸ8?Zb]ˮG-[@ 2G'-S{ֶKw1(ۋ4iz=[ɒ|6e"@1Pz s߾j.#u(3H0>Y@Y&[x[ ,=YFRN)=)FHp{j:}ƲY1$zJ9o/pPo\xVq줸Ll #Qio6M1$o/V}ȸdJ~1rgp OJٹü`s1Y4I##Hj%tMxڦEbrJ.UE\NgyH`ʋQؓ"YḎyfrDqԃYW(O6E4Eb0F^ܩ{xY|W#3[#tQdohַ/_'BQ68m[tMJѦTVFl!?F+񞍧^)27;t GL=Krr x+?6{`=JDcsr6r:ա4Rl.Um d8 GL=5quI.hHhZB%HŹd Ÿ==g40I*[~!$ t|-pʬV/#JQO~PHY2KXMuik& MicJB4`m ?ګ(28F<̶k?1=Eokr̻2Xz,˸1"`mnp}k I%?Vcd d gRB&TǦpjk`ϺE\29"KvY||I_\j*k(lRn'%ѽkPZ H#!c_[F<ؕsWoY%O4#T- pWrP [9gQvw]o{i|V. qZ:*Gy|~A&tZZ"QK}+^&kPcc3cj@Ttj뇥v˥FKˉnXJRQT)JRJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRRAS:C^o %r<ΌyWF22*sr$̥e5ǯ{Ka'l~ 𦡡 l!tX.l\U# s'5VZmiyudiNczg?S>8w6sPy楾Ww^4d/,/)#x9x8*3jN蚹mB?,hS֋p9#+ ?L/t͑Ae<9Qqw*7*H6tQp346I^GY<?G=kFR$ 76> 'FjrBau5c Vrh89ia3a21< 'VF['=1]%Ȍd݌ WY4I7_cZ1rOl[$\*Wey,Pc"4DG=A :Y JzMD%R&mrehA^k5uEĒHvsSԧTKkr1Qϩ_Ȫ Ԁ/ +& ',J~i%u$k0(Rzm v T~_oz'gn/DƧv4X\O-ĆI\>m 2E9ԐGAF}+kXkR{)JJRP G ԥ$Ҕ()JJRR()JJRR()JJRR5ZӚ#f*G$U*XIA_t.joȫ =GLֽ6^jipdburk>Mm%>]Sǀ `y eč_#c;i_hg.l$駼IIb!R۾övϒO*7Dta68-c2őp7Ҽ̙Gt1[7--q'8%4E{ϠVޛ_(kS|'hԎђUBJmB0$gZ H0ި'ɚɷg4O@jP`1EC}cѽ+;ܻKn>~ 2r|f7Xf̑WpI&yO0E<M^VS Bn 5J&y6gӊqs ;ל+@P_N殆TASO*+sJ^I3~9q<[R2sl=4r䃀zOTi0Aܚҽ -獊rVCA_{|ѴЅF&o~'ךuxGZOw˸1?Տ~>ujWg&y"5Qo5S*'@=omZ)d–VS"hd*J9#߷nuj nty[(+g@قӣf?Z\,,xTN{5h%qO"lpĜ~W|}cQ[w#28!{c4ĎW=joIs4]v1ϯ}$QeRvw86St[ . ,O#ޡޢn¦ϙ?ïۇ[O\im ,M]?͝= w 񝦳2\ :ݮ|S-uΦB Q\fBaڱ3A**DI+?"]Pܕ弊^ܳDjNH5冘oEk|TgfF1Y"b?jYE[ƵjVӵD/a1$ v" Nx5emu;q4g/K-Էk!\`5 Nk<9q=ʖw ,:8_0O W \+S8(yקebcYrPiGhWSܛiJ~MhuʜGAt?::º7FXuaX,#6MOb+&M>&y.DGgkjدR7-/!\?ЌV6I$!m7! \A:}k{y٤ym8AZi-cVQuʅc9 ;5/u{HnW`ݸOYF /MuX!yZ8LV_ԟֺk9-&դ4kk{4d ~t"!_1Mgq5][jZݽ;u.B#LNI0#Z,HeGLۊuc,.FGO>dK1Bz<)ry*aPh 5㺤s]ל9Mjb[UnUpO;nZ<;_q=+* W<+lhJXrjV (u019+ &6Tk,uD) ZtAi"a̎cFKgl5q|e!XųsXt9jG*Fc~8?0Z6@0+H r3֕nf{fڇ?'9^٬%|O6ɿ[Vttx xKwU]sW9}}$ bd8}èk4̨AH=jH'ݒZsa}' ߐp=23[:#'歷`&*$<գR9)7luխ$x洒xJ.gEޓpK!?-yyu 1~T(dgJT-/td ?V^8'JIg,ڤ<+,8 ss+m<ʲ 2fU8{FT$|IZD8x?|3fmIԗxكc(@##Mˎ l8ę' mB[lvt cA)7!CsY3dڱFnUHQJdȭx6R),WN+_ dc822jGqf\GsQ2ǥYGpfFpH Vdzs ƅ8Lq~ͤCߓR+m2^PШ{c?Z(dKˮb0$MX*ʾVy%~ōY_}dJP~jR=0A`* \f's4![UX5mcO sslcE)JV)JJRR()JJRR()JJRR(⫑)@Tz*b)JJRR()JJRR()JJRR()JJRUGJW) 0G[J×4NMBMuUZ l `T9?7_OXFl1GRq!ץyͅՅ]Y\m<HܫJ|WxNN^@v=Ay9dÕNהs,It`ZM\p@^"y#ya[Ķi*I =@}+o#t;eQS@oNNp;םYtM%)!:(~;ړetp3^A \2נKR o z޼+GV 52 $ISu]!=d\u {?kR<^݉=+ #MjjG-\G2ס|=uῇl%G.%rLá$ƲP@Rz}k䵞P:ks*ϨI~̋+1rj}"8w*GzZl*)1͹F{l:h:c:URF5AH~iPmY=ِn`ړiw!. ëf7o,mN_S:Ip)n٨4h dq\w2wmVlgSL~ rd  :a(%H7}3ҶcMÇ$cTKI$RJ@<Mt:T>u;AGXt|S<`짜jHărzt]-j7 1]E"c =@54nmn!dN G׭uⒾQƛw}?Ȯ(.+B<O#6PJܑ-^NQSцŜۍܑT{(p{[XW9o#]3jYJ}YK&+?w>֕9;| zUMŏS-r%(}|B?{m2+xϽz(%]o5ziQ>}:uc"9Q~; :7 8W(ꎣ܏JXr"(q}EGrKaFG+A.&d,dh]CO"=g0IIi{džoAkr9d&n3n!;Um!b4iM_ZJM %M\ _ |ig|>xd?!<{6;WzM봂N#F|Zc_N-Q흭cklG->5?>/Vg=嬒,Sa~#'xJƗvZHNJE|OϤ5ǰO$VvsGAJ$g*+4}SRLxoz~jy1aS(*}oivĘdID Xc'k,q HIr|Wx{7-nkoZ3$d9K88j&eü-*1v˧P x5(7%ui|Tp}'i][ŨVS3n~S,/c2krD $;(}EkMil\-Yr; VWfAO9K+*\F(UN!j.OQZ{ȍut>VSG@K'30Fv\'y]>'ڡYu7iVAb X֞K5%C^ILC3H@W ۢqKf`ݙ] =1d1 RaI<zz&u,Wւ,9` `<}I̷75qݖ;Aknv SZwhAql}jRXX$y q~k fF`:T#&HGIn pj.6ZV)tU#jk"JE]q'+8E@*ࡍ'gҩU4.R)@)J99)JRR()JJRR()JJRR()JJR8z.s8T* Uz;Ŷ̍6.=Gj_ TF2"BE)JJRR()JJRR()JJRR1xc\V,yRS}"Q(qqMhO\i?.^&i9}yi+q !O+W ,M }u=ܷwRŝMsbm ༧k1kQ"QǿOxj"D\nEylRI,nRD9VK}޲(~08,;OPЬ|:~>XVz; #>>14V;ܠ 'F3ZT0Wt8]FKlgEy2\<~/mlA͟ pf('+Ƨq`[BDnĀ'bA"\X>EUxmG ڦfG'o/peɞmJRR2aHR]eƒ͝bVIIErGX`smi/g,I.Z?N%v-(vٝ>;7m2KX9y2R95c)jDSG 6g4% ܱ'{%>J-?;v};}y_XҦ8{{p̣׮qS66\m/˪! ;G~TQVAiSS{]x'II]^gWI#=Bȸ`;d} a*M/P: z}{Vח miq#HLWIM.0mBO[k9/Z|ɧJR,)JP R)@)JP R)@)JP R)@)JP *|$Z|Ed1!}2;X?׉|/EU,\JbQ3g_x@;H;x"*0>W+ /O&d*LO8 .UMJV,`쵻n-hIJOqGVQږHۏiaPx8cQ 2Z;AmȎ7Ko}g5'1a(\sYȔd4xr( ^5\q]+sB6,OrȮs𠜁\7٤|p&v*(T(OOXRDP8r>U{ׁ|e}jķd"FNAVdo};ix "kxÖZ8 KoB01cL܋7'|6k״Eݫi7V`HBޛT\nxєboTgmik\=ͤ"|<9ֱҽG8%n$޾+>\еvFLFB<}}WtRI$R4n*pA&E \6OM>rnDlmPynj2k[2L`S랕|qmxv/euڠ|sں'.w4#n1_M,Sqy#$mst*NOzo;a[LŇ;y}%Xw!`?Zn$ZEYs.A-8egQ:jZT|,=u !er~*)#[ڍeǖҡ+$]dr^*i9ǩbA B$,\y١١U#Sߊйu2Iw[(滼D!/ۥUGU ŭ䓷H`U?+ ֲHDJGҥ<$1"q8$t9#ͭ㬆${T_VWsq4J\dXc#)l c9[LBv7l *ٜ]( a ~;>yb8[l#r0޷mWd&hX2phծ ެX |#I@w=bU9Ϋ2z !->'c%\|c0#ְL7]$FqP FcmQ:tFֈ8ray<6LA,fXcB9s%VZ]ox]XtKl#+FyXs:V[hcl[*֠/9ۮJǙS U%X2Gj+뎂Vi$#б dxA )tVQhZ!1sv2~/w{ 7ilXsHۨfjWv04yOOWCyoR1Qt毤[n`in1 ݵXH\6z+"I#|'Һ 45fF'=V2O^CJOs桩\I{I47H`s"09M̺1KLAp}+첼Z6r'Ӧ+ ?ʷI.Z[vS\46'{cQ*oq"pxO݆kF*pc?jc")@)JP R)@)JP R)@)JP R/xuϳQae|zzW(Աjj#Jyr ~$Ɖc}9O8u kDg^.Rqo!h  nVŦ׻n.\$l"XJC2&Q׌=J+{ܕU8ی~\ڨvZ(BQ[K+=IGp®8݆=j.U9"ɖUO̼؏C ,hNѓڴz#Ǔ5k_ƿE=85u*1CQUT%xf_\U g+Ft(r3WQ1$9٭(;VΗI%![pkKP.6F}*:ӻ4o\qTvSw`!Ptcs c&_ʱ*Pd|1ϩZ;Onax.p@a$1q`e~ldlaȩy ]YzV] Tm1CQX&9A tyλiXP<`_jG~_LVek5UYBu 3 _>s܏&HګGwh9} zU 5鎕ky`F$aX皔\ux!%,$3oj.u,qF ITޅna6g8+vA9Ieeesی5[T1157(<ȷ2˗Hdh mywX=Zd[b z֬-psV/J *L%ݎҒ/n; 95żeWsm 㷧ޢw@ [Mpx'72%fVmO`xxgIQqkm#QqY*yb=H Dy$ σZ6v20$Hyע)9rkx^ w-M)˪mF\k"+%@ _kd(m,N\n=[l^u$aˀ:wnKˈyhF1O^Q-{P/{FxHTvOW^Y+ƾ*1BoS}}S[53ET}R(ן'.neK1`%Bk<%on w,tG?nc nj,5kKG|(IZU.d5'>CwJ._Jy'VU"JV)JJRR()JJRR()JJRRU()JJRR()JU'JP R)@)JP R)@)JP R)@)JP R)@)JP R_f4N#o̎rV* jJVt~јd{spgtV7ĩ)3TҔ.die4Vevc9cVP]\TX݃;q?Z4攀Nk4(җXgr_\tmG*╣BFsV(H)@)JP R)@)JP RB8늶Y3Fl)<6=XT!!#wA-ƭN}2*3<ΒH]QԀ;rMBn)RIij͞l{- ?a_shڌ6i+H# ({oEG+|IAϵ{?CrP?_βeXCaNOKi*Ȇ,r9ZvrN@8F296؀8>NzcGtpqzV6;I ٭,Y njQVdWU9G*dѬ wǥK\,H7Ya}ˎ8l0Ž@ו2l^pAu׏R-: qTZ^ԝw7q h?$FJڧwn=]n-X`z,g(Tcjk`x8\r7TFsԖh-DjZEd7?a#\+gܫXM219$ҠLy6$j9 N0:*Pj6JuMN՘J0 sXܝ^ HIG*GW`T8rNxBZ.IE M:-nd~!דT7]6 @\kuBҼҥQYr>n1Td:\c$ij<6 Αnk\qp7\/3o~<-*]gV@v,;}k|= WF,@Lp,,9Yr6~1Wz]X Lm`pxįq;+w;S^Ƈ=IyRi{ cjթJW1QkIaJROM4U/rS]]7CkˈgW;޼kHB`x';0 ןh^\^uw+4YI5eS,!4򕵎KihԀI G_گY#>:1r3on}:hV!?|Qd429VY9RR:mnb z}+^C=g[.̡qXIFQ嚓X#@W{f܍G[{NEÓ=랼f [q9\꧂jQ2<>ګڧYmn]ͲU 85_iא˷5J$5Jظ)@n豼݉W99]bq\ǁX1\ȱ2m Ñz 5T $W]d1ɛ\{mۜvR^4()JJRR( 7Z.3u)JRR()JJRRP2p( R()JJRR()JJRR()JJRR()JJRR()JJRR()UJR)@)JPV*J:^WhyLg<ʴgOoKiPm6jwD6kru 2;g 'fG_tzm`vW6 BJoGZе뛻YTLz{oݣkKpq^6 dQn%ry&IڙRR%i[6u#o&W# qךv7v71NyŴR'MEJCm>=Ʃ=c;[,rEF0@yȨk dVPpߧZГYQs$4xH*~mr|.Gef{kIX>{}/.ЄVϩ,X%&-.H`zƳ0S2 1IFkW/,/5%o4ʣp;GXjתݽ+ϮuY#XQB$,Xd.jM^6GgqdM'^{đ4p3[ZȤQừk([s?^hדvڧHxq~fҧ V'PrY"/o50`=({_LZyX/m'sHȯ'Br#c0G֝ȇQ7g4EMpMj o}- p5]bY#2+.tSq t&5;zqhQf?3џ͉A%V P|rmFu!Kq=k b|ۚ"-˖zzM]Mozpzx*d:" Ymp;F?|Wsz)WXjڒ Q[60_7v88]|;cЦV+]Z=n=J yaWi4rG͞k?t}?Q6jqI1Rq|yj' ;YBc#")w|? .n8ϥ{x=+ o>ig*g/AMA1Жa+./n仺Vǒj{L/u$K]7)#DՉ#hK|mDo^NSd3drhi2}6yz8Ďp3*chn4̌` \n_iӮo]x,}N#U#5Jws=̗7R˻k*뒥)JT)JP R+]  #cFHu`zaTѵtB;qɮӼ%ߏЭ(7÷]RYKaI9CQb6O$YB ָ ^BpD$Ý&y楿}Gm9wH̹'$qҾ5ƙc'H2Iد9jx=vQ?8Fa}r\>_a =[ @g8!-e9+ c޼OI⑲]-)4RFSUlrָ5-2ܝd©DR l$clhs0NJ"]#9>D?$gGUq]_.KA k "`9䎇+_c ?R*+.R|Eq]N}uQͨS$x\Ҩw_R#lu5nmW+Gg%9ty,8c+vlGl lRN}jLi-bIA,pAR: >³jL)'\,[yMESRPR()JCҔ*vcq)@)JP R)@)U`["ā@RPRw`S} R{U()JJRR()JJRR()JJRR()JJRR()JJRR()JUR)@)JP R)@Oxw^]. ]GڧkOicp[paOJ+sK%Ӧ2F|WWfn>Q[9SA}7IX./S~!vMJsW?7ad J+a@Qfai>q*g+VvZض|n v^_j uo>tnQ+Ўkb eAs!pVZS(N?RZ UW -g-MR&gɼ>]SRWRMŸX?dCn`;!6)꺥Sj)r~){y G,0Nr%I}}?_B\Kfq|#Bze)JJRR()JJRR()JJR3R=(pOFjU*%mU=?A`mق?:m!ѻ>\p+|-vwaI`N3kФ?BHa 9-'_K~ 4E֬YB@sӊ$6(9] EyM"-^(ʩlzݨB#u H;-]$1DzTٯ}DSgkd(6GxiBP:jXdpvjɧ݋l+r84r^NɊH&cN*!|):s֬y]U2 v 2"}q#u'֬nVM.WG(z[MVHDUE! sy/#g؊fܡGqPWr\:k /? v   j907B+r;b1*Ju.i'9>KcDF+]dJwjG%fqxnLr"uݤ@XGcZrn3A'|U+&t(u3YF9ah;TImI+*ʮ9>]3GAӠI/]UY@8)X\|k$H\NIuXxRgڴCM{1Es=:Sx?ce|ԂGHz^mZnQTkKƳ)FN!Qj2ʮzL=Zln;C-L)2[=Hϔw<6+ Osz_{hd р?J-O x>]U-K,>/G?\VˑE.YIr\#Ŀ־&^YM o_p?1<⼾Y%#v'%9$յÊ0^'n_%)JV R)@)JPgN4T}=JuvG3ɀW~Rݽ6#'˕3qzg5V>qߘa?޷a;4hdb}I7K&˨4"|G|{t+呍NBGpһ agsYHˆuQkEQ-=R]$NȊRꚊRMT1$\㞕CW@SM\udx,U+0zJtp.&#bH8]6 o.3Jv$V/jң8T`5kڎ=bD+͖X5M}.5+G曨\XZʷU= jU zfJѫIg"LONkF$mo\۠YN7T=Χy=v(EP޴VY%w$h0֩+|"7TX"AAɬqH87dlcr_k\\$(p]ϥcWGK{{vv~"6SdIp>Jlc+ xӹŴcvi@z"cg.mV~fm8YSkr695J#I wi׽k$#/];E )JqJv:*䚶:fӜFA@P┥TFhF:)45rʞ~n11(( RmPLU8@RRsҩ@*R\d96cy^*]ˆ)^yk6:3-QB#%d[FOrz eatUPKjAyvڬs_>%vk\n2Y!UJ7?^[7HqDY>Y}k89$#G*$jgF9j;8")0g{aˌYf2yI\P0\<~7*%PN7HןR\^#tF-.cV8հ 񉃺$&9xLNȒY2؊-?֑ZFq-§̀s^wSܥpEy= N2'ˌI7Tk0WȨ;j)'kp0$$8RB=Ak9H?CҼ u"!61_ 1+dc$:Uca1bs޹ THېv^7K"^0hnJ㚏Kv(CV\m|5lQnsϵf1Et>Bw,[E Kl-J'95|: 61Ʈe.<dI0Z&9#bXy3hT8ޯ|ȟ(=@}kIVgmJrYILD|v$jo'&NS#̿]eomb/ ;(jт|x4" ivXduVk<-,%=xuw66=ya]T~,D{0(oI%446gr^F} wȗQ&U܂q:dwRE Nq8㴰!i'TOG6gѭ$Ik 1=(+L6|,o&[UD@e>5yӈRJߏ$a. #F8>xǓAkqij~B=~l^)X]2*5-јghϥ|s_E'zdq)_FyB)@)JP R1WA$cҰv >Ճ إ)Bxld.*㸭]RP_&7HPi\g.Y)JWI" qR[p:UE,R7GUl ! *qڹu:JJ66KXܝ!F:}+[TM~}`#_?RG* rg":ͥ*E(%8k8(]Z%̯<#uq 6~bymt$t)JR?)*RRST)@TP)@W'*@80q>f=)JPzS)@*5Jj aq ,I[JJ8P R)@)JP R)@TF %p Pr*i\=j)@)JP R)@)JP R)@)JP R)@)JP RP*QB~;ހ)JJRSҺx?Z÷改=Ad橓$qA]"Ҳ ]on.#XLG$WV4䀑XL`;z峢dV/#>{^vp&m#w'j2NKa2_ 0?z—ֵgV$ 'Ҵsqݛ29yCNHFPV<*vs2:*R1 `p9iIpXAbLC6ak{f,TNAZAbr곃eM%0n!*>pQ@~^yǽGKի)V;V0\ܻ.@PnbqjoGY9AUV<֮9'Njke+Qs7cֳT ͔m"U R(5%A+g3ZhюN^̚}tgFFU2knH%d zg~..2:2cqIJWPR()JJRR()JJRR()JJRR+ҙCWbp&`XXNQ$z?XFʀq\it89$ONחQr@L6V$ F\F99UշYYa.Y$@*3tQyv +N<33JV]x'5Q'8#5pUfUYAbO$YZdU##9=ZnejH zđ(ai}+3=*i;&dFdad 0H<ڻ:m[j!7&Cg1lH椷Ժ 0d4!z dc_{ ui ^% Ke'QÈf{DVVJ&^jc>ThwGcAo^qk=!L?4Cr}udKU*i ٯogg/$1X{Ҝ澑$#*I()JJRR( Fp`sa? TH)J”)@)JP RzVP#ڏ *޾ z}tK˧8`5]KMRm3 z%a6D<ںIU>[Z^)i&i2GmIׅ| c֎b p#u*V#!eIpGKmuP}vdL9So*Kg,21Ҍۘ54KV r+"ԕŦ:mUbfmB rog-2 5<5 ~}yRx$sRRioZȌ UdҮ^7?ɓ^Fzq^#'l]c)/*G>ԞڦmEZZݝ[vw+.zu9%ﭪrH=)YeFƣqf=+iF'e r@k駞1uMJ) `<Ǩ)y$$,<ZG:'UvjI&O.B9Pz}jD-dパkcR1gqWgEF F*P͍ʾp[".)JP R)@)JP RST()JJRPu;1vOJ bdf#X(B)JRR)@)JP R*)JRR()JJRR()JJRR()JJRR()JAJP>!ǽm`xJU\Tfhl)J"Pjkܾ i嵥G!ih]Z2Oy$)ҽCiND+ 8Ǐ3Ԟ5]'lY_[;9 r0*+U ֧L p 9"d,BG5 pD5fV&CXX @ծꭌqU XC)QM-<1Dƒ{8#ZWɁe`q8#Z,adlUǵV@» fR=OxpxY2.Q709hYyV27/Sj)tpv=EUd.:梨-Ufr9g_NWE`0Y;YɲʾKobGYO,m\=T&b8$n/ZC֝w,oI oKy#6ZBXձ;1}b7?ciAIwNrKu'ym-2}w* ;ֶk-*qi=^p{sr|]~.k}>Iao+>Պ? oIt5W2۫R=:Os=yS5]RJvR R)@)JP R)@)JP R)@_*yyq]2Cn1-Tև؀y^X)Gǂ.$9w3[Z~/&cfEf: ?8[D 1py|hjV k;AQZI,àwtcp"8$TQYG7/ic'VkvA59ivQ*z 6* 8iHK&˾E9'c f$Mkƪ.TS95xub{MRK nlVK"h `G'n,v8nךLUT,r=Gz)F9)ai6^QC;dIH0$Xr9[𭥣7/AFg[4cy/E<}+ԵK<Α06F+'1[A,}+ԢH¢{<02T>TBMo:YdD;yvኋ:Gq0s^UvIW"2pysJψKh6@yS>I5zWUfȿ%'lso)_Bf)JP R)@)JP RQT()JJRR()JJRd K >Lս\鴔6}=֣+*t6>d?k X(۠.yn]³YHb6 #ŴȣlO#zSAÕ S7 5;u}@0EANiwFbc%$lޕZCfcI6FKA_Ev.-p'=:,,_j"vڹ;ؒ7.r t~iQuf ]4Y!lm^ ݒ#sqڱuΧ [6xyʗI }kْ1A߃,7AipFvL{W/ަ~P`/'$M번.$!W1w4QyZ %$Yʴl=궚TKO"B22[c>)Qc(nOW+cuHޜzUj9ʝ&&,XGV$2Q= SL`t5w!`⽨'d.$LEbx8.lsYuvk?wֹEŚ30H>VazjE#)V'=G[%3Ȳ¿[[_R ?-Lf|G}N82'7jƨ `$An9DƱbA#nk^O5xwIRT2$R2k ]&ݼji6T)'rjJS~QҦnt)2cb?FY[Z9E0뚥{,Fv\&9XцӃhy^"]\60=ne+!L.CZ RI")@T)@)JPB8e'TU\1( )@)JP"JP R)@*RR()JJRR()JJRR()JJRR()JJRR()JJR6:卽qk$'&ҧѥ7rΎQ$-gމoU˧jp:QѿR;3^'$RA'iYD(p1zW5x ul$vyNjNUֲ0@8 $`~Vp 6=*0pI-Wc@hz@zk>С c#JŗʅTdH}G-WC%歐qW ,!G_ D2zTZ $75=5VfEsՏ59yz%PTg=ke,ʑQFjkQ|2=%]"19Z|BY,Ḍ$v?&GN%:cӢ+)@)JP R)@)JP R)@)JP Re=V[ű"cYv㓊25ox5"_1GŁ@+}[LeRS2ܞ[A}TmC'# CV;y˕y&y[ǮMDFn'֧c1;FuϧzоQ",W<~1M ȹY Hoil #RQg8Y+j[P;~\]Vm<ȚIr' ;xa y6=1ZҲT]Z{mlpjN6[};OZ[T8uXÁ5t(mßB}]Dtu?*d݂٬zTln,`̱rfkL1˧͛,qGxekZr sTI$+"$s)RXR^٪U{PT()JJRR((}@)JP R)@)JP Ri!%ӑ]&pb+HUT0db rjPG(gf9m7׎:O)(WWh7vd3 ԏ^k/eIQK;]{a>^LJ>odtU2FjՖ|јЫ #vh<8E敾F#$ C\pk^,N Cj TvMWhNsZZ&Me>^_(}\\X;fwzZ}^6(;d~&T1Ԗم(tq#:v+޴Aԝګ4Nr9U`" $=j. 'Hs#թ,RD$\2=Z%2q33JaJRR()U)U5JJRR憀)JJJJ*ST(*궀R( `yRCPT)J”)@)JP R)@)JP R)@)JP R)@V4]F}'Uԭ }[OV*%%OWɺ࿷E.ﰃ\[ %rY[ u쏹~.[}W5#y:5ZW׃y|-,@÷bc2s*<``6kYERp(AelEF,?,"X)>TnH唞Z j7أBeu*.ww&Gb_Y4q,Z$;֭` q["v*̩͂9Ns'm[m,N@#e[k`zd%f=9ǭm(͜zkSd1IЦȘ91?֎6LbkvGbbWۛ(6@>+n+^N7}*ucC"JWjB;x%ڳ΄䑐UM$f!n-#+Gx'Rc5.FIY,=L#hEErc廦 IxĀ`G-*r^T]bҴuJ(Y*~ՍB 2͑G]1G\MnڍɒNxEiW~(>ȓ픥)])JJRR)JJRR()JJRR( e鮟剂F\rWi+w|ͽA YFE-L,J_9X#$ySWsRcG%𓟟;W G$K?xrZKUu=wgmJ/,e+(H^̯2M #?#=qZ7@<r}jmFMb!Kq]dfR3늳$,y=khh?#79jժbur9dB?+UH9) 6 n8ppO.|ѭfYJj+[,RWR{wPJRRSTST(*`U( k+(#9x(H)@W5JRR()JJb)@)JP R)@)JP R)@)JP R)@)JP R)@m^m&H=+Ėz 2&>l׋WU/5FqLyY{=y90yF%R`l*~VA֢w*#oJZњxPepF8+Eee`dQ`8Ҿi4-Op@%w];ko`f9c59AV_ҕg4= 5+o<Zb+NIH",>pjDb!cLf szZ9#V!Zo(eZˮ+ТYau5e.#PǞX%`FTm F]ᮧ4X?jM$R!=~\WL?J{3u0};6:zomy"l+ ԢČ?zdq_j 0 1ML1tؔ`015ys#סFsޱYnYUTHG͚\6LќA-#T}$T1+mķlp|dN*b6JeagpqZ-$GNmC#DF̙TC'NsTN2QyxtP9y߈u&/ |v>B+džQE@W:徾 R{dR)@)JP R)@)JP R)@)JPLoU"49ڡI/{(2M"rq^XZdjǹ>5cDZv1d(Ĥ][,hs=kklP,ܜqJ12>A8&o:Q|䯿|UH\G5q}0GzaHoqR.8`YH`y5^뚝T2o bǯO3Tq!`Rj 2+0Ktک$LA;sȑ&6T5eڛȤ%zۋ280A#dQm㎕e褳(m%&Y:ˉv*6"<\flB7:9UqgJȯ S$^iYflJbe;iE(\9o%cqOtZ(X2=3 SS< $䜚)PIym,N8=jҪ1ЎsWHsT,4JT+C( ER+Ƞ,!U )L)@)JP R)@(xO@sAW+(#p>=2p* ;/ڬ #65io\չ#(GEd15*^4)JP R)@)JP R)@)JP R)@)JP R)@Vt/PO{{4r'MkwCIdt{vQCXk\+It3jvK R7ytזȒ$ OlW^kW?xVA\Z ç^.'?gV=G?Hϖ_n W#K GL<8ܤWhޑ]3I#l- 䁍SekI@_^,2q3܊ZWB̎C/յN#?-z< &nQo#qS<^#_qN CXzXR&azԎ,8g8⶯c5t'8Wups74P;R6H/ gV rGJ12=OlT%l]1^;8VhYF, psZ ѱ+OJd}ԅRH+$P,lX`JȦ2 +dcW"gaAV5JWB~X8ҳ[D̍d 3r{b3aH9UInѨ ub9ҵY#l=EfrcGbSֺuFg,7#j>91\sEPcn/^٭XFO+n8X,#IsSKcq6T-s!*dzn9WmSHLBk_-@G3a'@mN}4iuVnqLZxM<'Gۑ%T^gᇹl! umE*ʆQkIG`ڰɦ,NcUZ_T(kMv(1:Zuo ߆M$bBV=Yr^;eHH]IǧCDCB6"u8TH PeԎKHڣ㵻Y^8sڥ+욪h˓‚pr9bUsP+z{|3s~\_<4$^F9,zc}^NcPEoUQ;p3RG5=FXbcsqf܂Y(`]PG桓 sW9cדlX\ղCҠ,|gqӫBWaw(PcUUNB9-yef9+|s}LT"}*}q)JP Rk` ( R()JJRR()JJRR()JJRR()JJRU@,BLcm%ΥPGb{J[SltçLs3]̪ᄫT1TK`K?oS6v^^БyU+54rݐǥDI,pIEH_%TpT/k|ݸprOc9tBXҵfgv8.!sJ@KМ)ZH"D ``qQ2. 2 d=]@>6?/vymc@n-bFڵы3%(NlVXgkzM֝vVq;0G{%ՌWcغ)Tnt59pޣ<`HM%>y¸V'6 p0N9 9+إ4>mpdc3z:rT?xػ/s\'s^`6nFjRA1Ԣn 9[rk4vd_8+([JJaJRR( !E6 ct 9 Zi$hY`apyRk0R(TN'+n[sЫ=Ś5gfR̯lyQ˚FV9銶;ZԹAF.I!&ı$)Uj()JUR)@)JP PtPqRh(yU*P R)@)JP R)@)JP R)@)JP R)@)JP RKZԶG*t8%s޳,rky#)|HQR<+M N%Y-(ۂ?j[^y;6[^ )Vd Jc\Y|,z>ke}'ޑSzs\VW08x98=ƶ͝#j8BªjrHf'<DU=8?myHeMo(带BZ:a V ߛu ۃ{9yioW }TeLdM[ qV~ (=3aV1 ۼӓH|*7QPYH9*Qɀ~nQvRNAsK& 9+[Q͹Ts7o#|À{R/,[T ~^]HS$l3<Ux}5GZks%:xrds1>уNQF9%Qv9XiN)R%H)J”)@)JP R)@)JP R)@)JP/ïx?)B !DǑ>lmlc)gllVcȯ> osqKd3n3XeSݽ xS٤tAN`\/㠮jV/naYM1h3* {z쭣I3+s|6t䌔$ Fs銖SH1UY7|Is5┟VԜb(Ioj\QWZ@uoG{pN97IeĊK?u"GL24 Bv{Pp"(=Ra;Umk6HY3'5GVNj8V#s*b8R’D$ Mngn'f.gdab @;$ w%">벲퐰z3\ 43c]^q4iJW+JȩN[R7 "E}Z]YJJϵWq'砪T*:TsԞ()JJRR()JJRR()JJRR()NAһ "WoK/m0 A]VKW72 ߓX15ǧ4\31`O@Zo[5U0"MvVc+4C8pMI2l 5^Aw`-KHѺ@FXs(s[Up:=IU2G'm='-2p=kB(P=ڤ]02k%I8FRi[F?o/H/೺f`D0=sUeQ.284m1ƒhh9\ݐ&RBvϯGK*Te\mVռIH)3hX4[J0,}Rym.W8n'y6Qm Nw *m݉E.5;2#ED֨W78̣eu6h H7:U:Eg ^:ᏥqW{xKqWZk[H E8+kIC^S,2.>kObUz{UU> R&H&&n\t)+Y=Kw)Q])J)J3JRR()JAҔ*j)@;Ҕ()J:UARhAU)@)JP U{U()JJRR()JJRR()JJRR()JJRR7tK SW!iT^I_[ᱸLpq_,<1hY#Rn$1q_S]k`E¼YS|Q#qlԊhhx :P#=;3Cll<55a$5G< .$=~%2å;hc+pN{Wr:FqZtSN^W&I[;H0$zZ԰2EoFbgd]3WoN튲Lch;: C %VDs@VIٝ$6 9#ڤc]֢X sֶ PJdsT'ԻDڱƤJ}Ą(HF> 9&1ц1D cw"j"[wv7=GYxPsk\x9([#zGDg8+AF8QQ/Y 9nr1# k֯/,F1Q5`W"߃$۴N+Vs\Ư\wwrSp` jkh=R”)@)JP R)@)JP R)@)JP RZrZ%$DA#>5V*~iѶ]N hRQ0,=#+.#\9vFu< v{\#WkK9mȹ\J,mRMU3ɋFBrppG=My>[۴RgjVNSeb%H^ 9ӫ9,+0!A 3jR_0L'rjV(ڬ9gM;ܿ(P+AkopH\`$@PK+6j+tm\GmxdwnQSD\1F9+-I$OsZ^tw*=s#h!S X(AF>N8#{@X  4ڶ)9S7hY gA܆XFx5i՞6 .8f8m~FK|9irF7L25NMմ,$GS]7G0S=13YR9-Vg#Һ&qۘg5mOFh #R= ThݣnrRI+)@*;AT7$D!'P(¿z=H JJUcDŽ)JaJRR()JJRR()JJRR()U)CҔ)@)JP R)@)JP ROS()JJRR()JJRR()J[j^7FʩB)q^ѼK :p;W85[$Dl8nB>evd elO~k}JK&*Gc&# Kyyb)qi EuHUpAǡ9 쑵Kld,LVG<,bpAr~.ׁo..mϑ*?.zqӏJ|>y=TLX}Y.t LB)O$g H@{N=MFs]7(h^-\4(ꦗ/>8$r*_tReP>9+oh[{ q$1lG'^7-1C[Xqf;_-nF+Ni$J @R5P*c,IH7 HvBBS*KcHLğۚU;Y|Fw7jq$8nbp+'_ZR()JJRR()JJRR()JJRR()JJRRT b¸76s$lpu'چ,Sf>_UF9E`bRq )hd`y_Gd%Kk+l|ҹ}EU$ø!xXee9d47K4āj,ҕ;wyq+Fp #s9.`ZO"D73\zU#'dnn[@# cž0>jrs$qCGFq &َZ\&Q)T JRjϒC#>kiRlH)@e{iK$N AfVԯ7ˎ+JW-kl)J()JJRR()JJRR()JJRR()JJRR( Wq˘ubӬZ"3}mS8=+c|)t%e6m=zW[}.E ldT9ެ&i`8e F]I8b;t"y e^ﹹ*5IJϖI\ uܽ@b~b_$<?  6:uʺHIJNI޹8nT50lNG#tC\sZە0.#O-*.p0wqT~&o}+^D$냮Wm=2~V䎼P/,\ }zؖ)"GXF[HmNvB Hԑ*DWieW9 .yzf$q[xBoPp+B5ISW*W9,GRxJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JSSTARz`z)@WޘJP8R%)JJRR()JJRR(ZU5~#ۇY y8+\4mm+0m{w?Z~ E,L3[Xp}]>kP\y yt5z$ߊWO%ͼ2L&o,,AB1G@6F62FrNs]mFԮ"Gł6m{*O4-vs\ݡ-1FB t#Oz1eQ@W5MYBe(+vcԓmǻ8*9vBϴUWڨ1Ȫ\𠎕rfwP;"vAK(,YYضUr1ֲvt98ȭ4py,v]oRiwfuEaZfrʄg>(Ö+P",iN]DcWFOlQy$/l$m/JI$IW}v,qJR")@)JP R)@)JP R)@)JP R)@)JP Rk> LҦ}m ~~Cè漞mFJ `$:}mfܬ=n9mDDzjv+xGrz5AiXIɂ$摄? ޾7iw.NK:k+) ԕ?]m#Cf 0<_8SqgTDBےYqY"O1RqZڄx'AEPr~{VZCoʖsӮGWI4t*tsljD ',@R9挟u7kpSAc r90FDU*6S-_D20؍oa`1L{>3QkZ\d?#I-WZmvs>r:[#1坝n#G^8_펕BXzsOޝuFIcBvLHOJ5W(ճ1'l)]EI#Iȋ8oymqN@8gï7gXOi,)dt 2Aǡ)uZsz~ @c۞{{֮tc=#Qǔ1lb;-.(D =H<|Ym\$E<oIc"'>Fe ۯ,mst$UgHG_#]12A ѐA?Y!ep:b\w-;/+IԲ9bfImR3hB6\*3/lF^̌z՛dglh8ABnIx8OrRxJ-\8^Ewi?6hEq"M]"O]^9-ąpT@Ҫ;I#v9$5J=.8#K%JRE)JJRR()JJRR()JJRR()JJRR()JWFBPi@z~!]:" ut+]yἷ%sϿ6W6s mda<m_kڽ-@¢9U+ß{}ͱکuKi,1vKi]#*B~keI$2H#VcVGBE]z֤et.79AHp[, y쌧)?LגTWQ9p񟨯/[4L2iͪ^8$ 6\sJ"xۛv[K[hc[H+xj[i,ĩ2ʬ %+aiq5ꥹ|zn%yBO/c`>Iio˖PHǽlDl'c\PٖHÜ85g#9b1R)}m nң(K08^ެ>L96׵s:m\-ƹu:[ ]Gk9IbIt=5^fE @u R[ۋ(#s;>Ma4m"B3"rx,`*hk$#w ޿zsI~FYe +di^rJKVwv^py H̒c#_x֣"46A Ӳ" |lT8%$>k[vKeEl9w}60RǶ {⛙A[hF7]x?i3Կ!B =~-FY!F10nڽrɼ/)n[^~azVxJM$uje!7.cP_Rn.1#OLsG %i0n c*j4?6 գ鹣$N}f,.iJ)P:$c]ssZ#%ݘI5mzm --m)JWq")@)JP R]Igp psIjzK-K5ZIw6*8Ss#Fc58;xwWeߟW|32bXu$Vϛr'Cߒji MvmE&)JWIqJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()J `RkmmcGF=Oz䭔<$g j2m^gE_\}kvHmdO-ف/߾3ҬUWv9[2ylrͽ"8[h&,Z2>e,G^kzXҍ)fM26G~Moˍ 9QڤZ9^H#=_SF}2{) >QXg7miw$JUa=?݌zZH&r5 yirJn]6N0}C׽ݽ7ҔzR)@)JP R)@)JP R)@)JP RxǽR(WJh R()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JUV2#5J)VAMHxQ,nٱ*f!d`>?\G\0QCju:$IU鱢FXêat5kkU$`^+Vp6˶J)J԰)@)JP RZ~c;GsTYXFۀdOoks#f[lzj}^D\DW*S5?Krn>oE֧y,cXqtYn8wzk}.Z*ߓkWQkFHJWFQHE*EiziRX*0R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JPcg9,PQ J|# rA=TvCF++3v֚u􄔴h2e82ry#ObT7c9 `1QVF1#BsԭE΁<$k^DO(cdׅ7glJP=1޸o_4:4Jмdj8fg?mN+hb%/$_x^z$lOйY>/6oE+aJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJUx4)JP R\')JRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJR^drqVRv)JRH)@)JP R\K ]jvu4om${%%!]džd'xG[^k!B"78#h1,y NymNM)k/mLL eW2^^ )VFkw7$$Hcn&Wwr=kkQ,f:ž% FO;능,"Ga$a bUX$Y2{qGI>sNc\o/:*JRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRYMUQcSVRk;N}NMRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()Jniֳ:m91ҔT2Yz/[am$Z·mr(plH,\q45%Ɠ [[]%ˈu*CgGUJɥT=TF* uf\4A$zol,ZNz0`Z ҟz:8wnݲ1lWE)JJRR()JJR }EuZOuX`~k:cphe$#rJ:~jjQv8͒am)BE)JJ&#}?IRB,rܙ#8GJR)@)JP R)@*p?Z()@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP RX ֩JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JQ8N-)@)JP VHcGGf#+Xjc h R()JJRbn9PyvP;8w%W@zN}+Rym cӞ]|JV)H,ʱȄupWR]Ȏː6Ʃ?|֩)JE)JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR(Wb}'Qեh-]]ؐu,ǀ>* '(Yӱï؎ YBE)JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR()JJRR@)JP R)@)JP<Lb7L7W61qq+_\sI:VA-48{Mt~߉6<2{p"(^IGk>%njPY[I a[Nx8&e鐉!?Y@B~\5.<%e'x :$⤷!G1?6T=;vAt;C   cZ,k2p,}N{(5lxPƀ^ 䔟%MOIՒg}ۄ9]fcO}CkXHƜ};.O=tM[B[M^[I7#GݥQQ䤝)JWX()JJRR()JJRR()JJRR()JJRR()JJRR()JJRRozJRRkwE5=f,>"8P`wQE\U wP|#$-2D)+#dBIr沖hG}3ިAj](_D_\fxSA LǨԙ/"*(KKsl2n$$Oڹm}(K|?ǚqǢ:y"Ƹ>ܟں×.VmYh>+)d5["w`H<'oKW_lYkʢM"Lf]otI.WTЯ[V4QdO}# <ہjs}g^uN`\q#q)^|zw"X.W֞$ [&OZK'D{OY>{Y^Ap ޺c%vU2=M+ڵEl[]1V\/gq)?}Ԓzk2d3PcEeZhLSQnBuc3wP̤~Z7_kCw;1"C v%a/:7$c`kq&)R)Y,#FP]ɠ0UYdw ÷ r>cXգ[j)% jOAI'+)!(u>QثVUR/L>Uy&MIsdƠѵ iWAu+ۭ#NVZ7PE' Q-Biqq x[VEeq2N?jN¾mP]Vqݮ1+FGtIs Y5U,3_:r1hp*_ <[n"7c?2օW5F?aIʼ6dx6N2W랕h5މ OSHe6;קz_14-31?(?+O~>IS]rL"ݽKھ[.7gYLXXa֥ڈb>UI^~M,m.lgY;W 1*rN+4kGk"2A]KpNw(5\҂&s|ty&0֨lIZ#H&{c~,֘MaCuqQ<-T}ȯ'61?7ִ? iZwc̍Lw4u._&toòjBFnEl| u <+:O,j9_seo$1l.3uK_EWj+V>7*Euƿ!w@..7q5 mHNzt}}}w+E85}Ҕ&T f\C_ǂ[ڟ5;hHBK&MWm,!V9D-siU$}96gO x;ɔx3J#9B}qZmKl<wR7O+;wW2%_QxsߵŎn#G{}rJ>/owZ񬬮e 4Ȋ"Q}Fkxja9mqgf3J:AZ!@5P1#LrNzPSzP R&O 9=* @8\JAo8JR)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP RzS4=q[zF{=.?( .)L Np?WxK63.=){WϥEbHzjZELpM"x$zsQM0R+.},+#ޭI")@)JP 8E5,B&R:RJե']6(3G|h"<-hİI-桭FAA#S_ _i),'B@ A^×Q8'T^1KUntYZGPd-Lyo\A$#[˻ li$#uY[%6);Nj.-&[;6XCiX/VǪ}<]Kүn5+d,*"R$3Gx"As2:p1ҹZAi!HzWCa"* }O=k e'mU$ҧo; $/{kBR~0yy ƹ=GT̷j}܃DۀʬYx>CBq~"<;Vc3$_3'<8yfRb1Vz !݆eZ7& Hπ}1׎WQڜQ)JR)@)JP R)@)JP R)@)JPJfARIWTԵ[4i7Dap<뜞?JF=s_OAKTukAY8Nya3ڃڬ^H!Tw.wn`s\[=_ە]#`zsG_q6>IHٲ<-~RwY?RuEbGU& ᧎u9oIn͵]ǻG}g-/OAeƸ]/ZךǓxqY\oXAFs+7"bLR'dZKn΄ej6A-ͥƍ8ڸqk2}V#K{8[k?3B5>f2O渔WWd_*ςOsn7)0DNʻ+jH_vKgkWK7TR4 Fp$ }j=+ž&[7_ e=x*$O 48f}-ӣ%pvp3+;g`EEg)`w kuEvM?J<71ܥڹ Kt:~oھ4MO>n8ȏנ`@ֳ[\ /!5. |}_DflC.ݣqڴonS5ź)C`"/!ץniB ;ʲKdcIǽg=T04|yֲrx~CFUԟ5y?2̀8M}SY$2"$9f=ȹp9QfA{D?,IMDujqI3Oas^lXBkrZN:ڍoxd@=$K+ +Y2vKdrN9{,J-+TF=6qLԾo겈4K(fWТRl\3zoATau$cF29TK[? yk27e;C$閾M6oV$CI< ' MX<mgn:A?C^$FF;dW; F4" ])sqGy̖i*daVsv ƴDZlvP🉠፤I`Q}Թ_igi# wg51ygŸem'i͗g\;H#_*uEQ}eipT`c5t.]ToڷQL䊼ofH{+nG#N~x|euMmqdqDt\6Lk:<:_y+w4`IWs <$ʌcjdƩrJJG̞jn^Imn4u98zx“|۩IHVDKmN8'XݖO!5M+#%OʣϗWn1F^(O0* ,35c&c9cZaOʐ?z&m$$0gi]ydD`,2@QZg\ق̅ܬ=V6$NO1##- rjlRx j%xgd g=g 6vcR&%l{k%V_osqlB;c'(IKFdyI(m1U,Y TF2鞵{o2A뚒0GvY40M񲺂yLG mŧ6q[Bk gphM)=md|fRTNɫ1{V2'٤q$B!s*٠Լy#TKIx0;wH 8cpyHd&pq-I5|㬇rОBFG5K"v#KmnEYR%Y7cU2r*%E.2,Aaa8}az$qڈJX" 8ѣ:w1DG 2dt繫UN57xOv̪\*˴ >5 ޷M>QB*I()JJRR()JJRR()O}(W*0TVf= RhZܪerӊ>?GЮY4ojzL{ɦrԯD> |Ć̨qu^Gn/m$+@VRό*4!LjC<kX0 -cֺV~x#^ydR"p8#9ޫucc>k~=oXT!k$`}R>[2sNdnzOS|q+_ 屏j:ψӵ'9 }9ɛs)] #aȯ5gi6hj?5 ΠQ-w=E2;~|~ wDb仭h\dl>Ay"34k8OfZȿ\h* iZ-ޙKe{k$ѣZ|Гq\eŸȒO(bÀ*[LuQ}!|i_M|-Ōqk{kusQ,N̑78aw9i_ H\բ}f;fa`psu]LI{3#'?/k+πG] hGR¼UIJXiڦINQޭ{ ΂$[O<^DIhGJy|1{tӮ%$3AT1JN? tZ с6k'xL+CE.FT16)iv{ѥ&KMu$u`w|d.ftv㌅{Wmac[{;4RE?cMuXQn_̇y/:sĖU&oP>x6EKFB@>;Z\mv=8% o,T5My{'Ң_O o-8;ZeT"ύY;%wB-b P˅S\$I#6*6R3_qKtc1BR7ϻק?Jk FbͪE+xzY>{D+$o@$z{שO{)e[I].RdMϡ{ީA$+$+pzf(dsVOD(/<9²^ Mܺ@Gw'Xm|&q[%i,$%gCb:~9MݧrII032nX+l[\mS5рL5?kigwK1^oswy ~ 32^+4=H6fgklU[:95%ov0RpPץqdp!Ǚrpw@~*f*9LWMmze JB)Hރ.O?zd,ˠ5ǛyquvA8y%ĤÜWK,C@<95Ohړ'2?nڣQ?.aYf(Ր V;!K oo19P:Vظ@@ 亁9=~b*¡1 >{TQww>8[B2`ozif#͟ ZГPyqFOq~+]nsb=T82NG < jnpzyb 3`tp 'j 퓲\DNZFlt :Uwo0\o(7c> ǻY WQſ&Yu-+Ī\dd{ o%6TAL}*sqB*Iѣcj,`X$զ[X8f=k|C$ e8UI[h.F@\aIo$"/2%Xi]ȋmx-{[hʱ|5Yͥ +[ Dd4rgr~RhDTm߷[vG灞+m%@@dk795EU]dmBg8.p\o q]cCq׽P#Qv&yn{ړ]nX9q=;V-GEH}04K9$~A/ cU!uj^K+ 8[h6#i1ʛpr3f-;AMV+W9ZNp]TJp7tjƈ^X M{hldI$!¾Q56v L וTA!%g($1*C񟅣 iRe޹@wR6rsǠ MZe@G[hqL49s NJ*T!.b$8iqm(")t1\1IJu'5w`Tb8QUrd ]''fT iB.I5mI#e 52gxME=ܱA>}Ԓ.&DW AKKMơtrV6*+P֧V*1 ..Q+`FW>T],{ݗ>P+Ą]iob$/'Ԭi;&/8TxsvK yRMIx\u>ݟf9bݺM2H\}iTW7Q$֖?˯cϖ9 52Bl'VM]:[E; )㓚ɕe՝qs*+恜n'O[89jLg DT&?*QeLn" ~#kmtb=sL +'m΅Gnj_Eն x9Tr!>p6@շWBlv=B5yz |XzVc}kNg$T]ڝ:nJbɃt*;V UJ:>D<j.*pr*,M.i~69gUdFqU{{"g$V W~bzRlqWVwϏlqn7ۻi|_]>$ED & %ԵR4:0d|c_D4o忇-۰Umَq`՟JG+ckHο< _`N𺗘mF1Rڅ8G2F6|+H]][H=! ˠ<>+m[+utNt+ ?4Y8.K#*i|+DE۹=JX3+%Y#X$vS0JBO01bcnvUbFA?|/%/QCpJv7\`{wYX[d|2ȱ(n e#Fpxywt N8F㡛WHZhnÐr92+^Ď9<1S&0ju!  [8J/bn&bl[CWood FjgL fJ]aPKv9.'UxȟqUo*:;;+ .a3y[n8ŭ7o3 .qP2̟hRI(?ڡawvKʾ[m8~{tP(`jYJK8*3Yn 4K|ŏ$=Vj8kE'l}s_Sso%dFrmϿZ0) aK8KHHc]4$r۷ZнkŻU/A['=jUeA9Q-$v.ӝ4R% :8"ϩ./'Ǐ^ 8B.kK8Lu`WwHؒб-wneTuQs_2#R#7Q_ݗey@v*TF||.9j&(w'%YN l> pƇ*9=%MO0۲Ъ9{ucm1ĿyCjZlV' ްI2dXX(;GEwD9z;i ؅yR2jwv ,{ANڹI4ĵ?d[U}xb/Q[YcVv87,lu+?ӵ@¨'Vl>9޼]ԲU09+J]OQa{?AUbBfBdz݀ɻ$2dck̖Wd̎Si0?ZmTS%ed<:V?7S4~;?+|7S6N-f-$5HK8A+`1"P Ǧs9M.\o._KȂg?ڢ'm8\?z{GvO9jrWB%yXZ=ib"K)SB1^yWlm֕kӬw{ƭ(CezgkDȺm ZW(r RdLlK(."r@=w ]YG kcR*I#N]/qXţBQs:1342nyY1QC/fO.<5jis 9b9A aԑDF?ZֽS&ƬG޾CRF>vbMNҤc R 0'WAJBQY<k)ZI c$ڲvr;uH1O >ya-K([VK-Rm_.7s/hO+vU&Qv̒@2 5V AY b>]qaWmN9?I ^TJI gUyE T`u5.&n3$CT95I]Q 7я_c| H;(ƋNv[<VX78ROU$G YWܲlIZB7zeUriYi>[Q4̻wیfcٞ\սĊD]>xrwoISvN0 ?ڱZ'q֪-L0Ǎ7<ǃԄOaZZYz56AcoV$DZX/9W r2} P[]z(A2I.N #(5[yx9ҡI_k6Ր2Œ r}hX|cz1֮yPFsҥ$IfC4b0H޳.웼'ڡB1UY]*y'֨.ހf ɴ眒NjT F?ڢ Xe 9Uv]bWCdws*'$evR&*<`J"n5/ j[{ },Q Y&]N8|Q]L2ߙ1Uź@ ;IlAm( >XPH$5aI‡~B"3jؤZpp=5 +Ϙzr ZsJBL+ϏPgSe,ʤ5𼍀hKk)epv&F/N&`򜎘=muK~H$P#ic%1[)+ 3UZɐ`HڇY wTZj5JR"ɼ>ww`}\d瑸Q[8ZCFNz~4,m]}8$ 5 F8BT{3w;6$Wc'y$ڬӿ>{HK;X,guJ_E%3F*OJ6WfN1ir1@~11.ڵTgdY5D|gڡZ\ 탚#ƪ!A^:`QtkvrGڱtXp{zT,sʱ OxQHd<6tALrGPJ{S1tvǨ;^}MEW;znCk%8=1W,TwȨ'wQҶ8i 7=VSyR*7xSWn@> D1> [?LVb #8k* +RI$j#nwD1VG$}Hk$V>mƭ[(Bu5Ѻ";;J^^Z]@fL"?B;8{ĚI5 B*=~ǨU6QGX躽{uil@hgH@a;6K?Wx/O; C1 HF=٭ݼQJHj$VNϓK+˶de(وqY&uN&4,?4ֲw"q0"" IO!A3vT?+ S||-jB T4<!fF#rS۔Vܚ+eSo2Gb}8hڠa`zPDkQʐ9R8lNݪnϑ $Uϭb+! *}G-Qk!v2y?@z|cβCLAϵv)4%rcϾjp).'mq"H?E`TOx+nEIw$Ti %|~Flݽ:k u!EaGcC\eLך,Zw7Qgr}0627:U*v=7yTd8&=B¥FfT%"^6$g_T{$o}ǒ\ u;TmfȣG&nؒEl{#?.IszI`?QICPd-v+f+@F9 J2FTlё,hRZ,F? P?Ju2 ltrF y~ ﻾k>ۃqP1n#5+:f#_._.@Z/cE ƣ _spJU,P`mDPDd39F]uǖAPF Y%Y#ۈd,8~\AwݸÚ'B35XމF偔W8%(ik8,ֵ 7S߿54y!QW +Q`F@= g@7"0JԸNsj.t8ۙ+V9ߥZ#^%FDylck"!hqޫ%V2P޳ܙTR'>Ցvj;x_Ak pZ4 zЖݗ|][#E.3$ m D8 >ՁW%3JOʏ}! 0dGLKҧ TsW*Ē;њ(ЄUlwg 1j(6^XVG av5lIܮrkj9FubUȘZavʉ$9E8r-^Dl$z*ھ"%7](eY [e dzX#8դH|. F#@2dD^9!C్:iKD^չu;HLgqBӏ9gS(ي ȖG]4f@8{*36ԻM' 7g?J'͸J/ɣGJ6M2b RsGggL'Q!h'X.3p9OSdQon=+CPX;Ƿ w<%#xSU,@9 W'l7w׳' ׭nw!̓ʩ&`Ӟ˻U9\MTsZJۈ,Ҷe[bV Oʐ~ӵyr(4TiU8!|(5?gֹpLާ[OzUnJEM+ M8`իj*k|8#5O"0--ʯMV88Uci|!Hz>vқR+"_;gM?R ٣¼Wן{A*ż \) yjKvfrTmRr~jm(wlG;L`~˾iM5i2o^ޯ4ֲkx _h uo-/?tKKY/V"Xُua^TuAdWoyx*iFo,9sR7ZF[xFҪ.UkTNҪ\(KKBvc5Vq3Z6&ҫ )Լ[(ccg0+UMsOcuM}$Aυ!N}Oz^<˦\ '&x<[L-;Rs8Ͽ q$9s#9 jƢSto>A,v5@7P=k,yܹ)ư9Jθ!w1fW6]AbG'?Zsi)"Ogtc6ӧڍR#k1$pcqҶ㶿 y򒧧LK?ZZ} LIer;t更G|$vZr?$}q"O |amɤ[>]-yI@G4^kAA?jmqHG9cA5r{spjp<Q"}uCS\ls #*iSgFo18r^}7v?)8 sUqHd\pϥ`g=qV|/ǩ:ե1VPp3U~p*S@dSZfsy䊡qZSRy'U#>%f 7suһd9 $֠"xfHqg\觝[(xqzm4.scsԒdQPo5V'c6ՑFI}+"C|qUHr%2Y9UVXwNFj확XflCi3fps̕:j瞕{|kDUvz+!*BN>_j$mJ}ݥ1`:ڳ[-l/(uU׿JkC(i$eåc$3w|8ۭ|셲B+’PЌɁ]ѻqx6\cj!Ҧ>jkYN͢Ź9+ӑk5}3bLǨ=Mp:ȹܐotW#Los_=n|&L ܭ >I/e?)EXpCd~x8# u4IjWzqҢQ?fοJho7ٮ H> ,seMĝ1k-UM9acM+ Gɭ!PSkyf*Tqmx\J]#*Z,-*yd uG9_æܤCij" zW8<nG6=$VДdf\_Һ- UmB$dt\B][(tsl|?̤s<%neB0Z8|p:(6Yn4o u% 6?bᶄl|.?L.*14ఝWcSK0GzVY2g]C+f\Z{[¸zl Ѽt!o%&=d1-]de=. 9SҠd}y7j{N}m3U ֎Ix#&)? 8ɖH<"GRw_ <[v7wwºlFx`8p;*>q1̘a[ȊʮZ3QxEp\cQݖ!!IVf OYB$-e;T\usI.9ڂ(hy[ԔPDeY>Rysc2-YHm뫶ҁzr!p5Yck#<K2a`G**ȫM0W0VGs`a䟥tPM};|-&@ޛg X* FYy4O5[i6rGRcoj`Nxg5)kNy9umCرp>k>B:2p{d+$qg}eLؖzq {MDd:*G ɉey1Tdy[۠1bPvy&Ss^ ]wl1N hH p+Z95ʎ6r^V eV3qJksL"{yՒkcI#I3N8{[#[ BRTJkejǧL$+/$q,hGBSRb$xԁnGמ[[mbf˴c* xsOhcCȥIk)a,ڔ])T' v2'U8#%--d ϐ1߯?Wmլ.fb\O Qwǹ}x)\ªW{Y< E<Ⲭ1< 2sDlLɼ+ly| t7HcԖXۏ-GO\b,ZE4d@"]#ՑtNTF;:|Ԭ!G,Yd=Xt[Ͼ(sYw ^¶-" P^7 eHPIF]:sM$F-gׯ5 $ ǩt "892Af4Pv#v(۲[Oˮj:b`kH꧔RMM^YStHQP|ǨHXvR9W{ R!/$v+Qc~'_$PNOU'ƥkUU" 3}M=ԫ*d/!Wo5؍UYJȐƇ5 XSU3uBULl-XUCZb.'$U(US4EdQ 8L@*xp~dTZ;%bB<z0#'&]S`+(JPIo&ɑW\wy9V I 1뚐b?>3FRQYdc}`+(*>4b 68U.A>.73 HU[i_ O6s"dn.aHU2ڟ,Itq !STk9<\!'>uW2@2CT#V 0`JAu{EYRf^\pAڥBrOEM!WUb⪰:p#9#֬E'MWdϸj1# ",5pֲ忦j #Z=GޫҞ[*x1UOoTFs)lz _Hon>jy9 Rci 8OT6&[-|HǵZgb9ӵ\m=anA#=0:^m21=A% T۳{V19V$dvpI5A6bk$*ǭ ڲ9? faJ|l/ڬYfdc=#3 en Xt ρg) e͵2OHIY)@'#Y?ws BpѷU֔V[d%vATy^Wut#MbO=4ٌcnVEAelӖ{uH]ճ-6\}+pG~qVrkcM&8a?(Փ)9V7@7)㑊؂0_F jhugO+̟89zB$-di8<Ƀ ]ƵnRo (g$/=sT^B3n*6U6G)lp 2NXdRLFߡ+iU'NJO?lUwj$SFkse@IؤJ9Kwf˨#*eTt$VORqUs>櫸InsZHi3H5$dV(g$m22xf#N뫵V!U(s75*u?ᄖˉG"|%Kn7+ #o\䃝;bl`-Hmi"4pZ~k=˼7 m}Oj!Ҡ4-EXh6vy}E(Ȑa?ҵ_&O'E+GC|ڜGh9<\YxnAm]l1%ptZz vPv֠a}pBKr{q܎I8Vќ_l?6G2PǦIN^8s$aBzOiEWP//~E<k1Ay&RӀ9z: F ٮ}Ah 쫿 ^&Iu&!bݜT9g/<΀rw*~$>բ%ΒXKv4B9(Ϧ*f/ ߣŧa0DA?`ڡ -D> pK[̿ZWZ,'ۉ0;I: 7uaa"B,QEwLS?dˌB$Ȝ=w,",@}3VG2IK}B?+WA '!X"F>U^p{#dO:vwxʶ w ±\U62IOw^Y*CHpv$v1*G H^FHYGk%<1HcK~l槼UXr6퓲$Ks%N71|q.?,m˷ޮ{ gUy-ProKtaG‘<}v .~(tؙp+}[63bkt9̨̺bO]6/HAY$B?֧r#k"==&=q15E-V_FsROPl6$Qsl Y X˭ϛ.}o"KGގhuZ#F8?ʣ*ѩ9S֡` V9y9˯oI8#Ϛ5D83}!.ܱ$U\(?py `}`.qDlfV"2/pb~V#$ji9:H ؏OP0uSzYvG2ȧ1#dR# ~:{M&F?&|^(FE'#jR!qԛW{qvaֵDԉ-ڏAN]o]5r,;A]QS[ՙ4#:֥dȑl\J?mT  :Mב!D{g)4ch0 F+ j8 _vĻ$F*ilaE\+upҮ"xdy1ݸ]GU9D:O7~J;c>ޘ m0BgקjK˅Ҫ{+}B Ŀ=p 2Z/fM hj9LǥMª䕅|tzScSs]Tbzc]6Pyeޣݾom&DC0EC2FsVbͱG}C!c!p⻿IDzm1To_#c8tC?LcO޲jAIye#v1mkݜ)|i(*i6F,LO5vQT6ms_%sa3ZLuMV̫!\`g <JYYF+O-wņoVDS:4 qԱgZ4~TnDd6I{^[Ê#l~`Z۳F>Wǟ|Tq@i,g_͞~}n#HTʠ^En`_ (A\B֒x»ᝋ!U<?ފK䝯ࢉgE*xdf$ r?6ք·(!yUk9i0.GBA᳙'fpOl˃Kb?噾rC  `EF*xAϡ$AE+q_jG8t݄Tu*VEm=q]:yccI >)q#V „?j}򜊜nACjIi1?&jSpҟ#+  2R5=x?R8L7sڳ4>*wD!ͻ8WT>Y$_b,6~ޛ6H]4Fl ~cթ@.B82VfAY"" Ii5ؼ)d}+)`FjPs>V2!}ڏ$FiVM*p|䲟B#dj=ćh l?uL~u*OC9FZ1'9һBsI$,r98V}1@W\Z~?sS"=qO?Zl=BE Oq|mb\ߥck6c#lWkZ;*U wQhˎG]?miOԚq|puaUmGZDCS<.j;~"0wfVd?Muoid[!Qml?Ml',,zi ;gy6@iGL޾s-l [$­:l $v_uA,7|vej6\,A?Q g*4Kad*UW*dNruWZm-B(z蝬LG˸ߠXMDޒ}F1Xmu27ݘ7!N8=8eqU+evZ|ӏMa=9^:3Xb8UmV2ǞpO56\&=r-jYGg#w]tki"P=rդ2#{H'aʮpF|GjOrm޺daKB1t9H,?AM썇&,(cj'S1U+{!Q憞ZY(?+6 8o#am_?~95wؚ60MŶCFH58m92 ULpB~ CSQ٪}im }*T:{~6_n~Oç/Mi_aU7M?GU}O֛AUޕ5Gj~ko3h)ST琇Կ76iSTy1Xj7"v?OŸ"?R3zP7SOZZXA~A [?槍Zo,m9g/l}J;!R 1R~FӜ6cU5kH%#]/-??r W-٬l/M덼XP[/RFÍo4pbd? O'M{l^J>SFۭv,[z#c8v YUNzq]_} ~ Oګ)Zo#:TuM'lA3 W%ͰdA+_eˏjnkqmyIH y?N*LXUޫhdZק=# #Ԡp!1A"2QBRabrq#3C ?l0XfZTnE=FE,2#O^Tj9A07o3yI};q+cpm]ڌ |ieت!s+ #` 8(h۪dF$l\Nqz`܈2rma{p˗FC~3?})TWX.1.5/ޚ{23jʘլꓔK\UDiO`63?w-ojUQoݱx+jQ OObp@gLhHZk1L M|hi]p}KV_>ɥv;GE5Y@~44GhI8?V>,4/;q[Ykٷj73o) ΊQz`jwd88ծwӚt}5 ['ݶ&M[߰ͫf>&?sN=ڝ iKW:v: JV]|lWOY?m޷M]Ƞc; zcKٛTA;-̚1ޖi>=4p]^GG+[]DZkAF<RZ (\]=7x@\R]M]:+맥;NmE?B(1rVԸj8ǵttxm;Kem={:7FݍVk?W,Acd%5`ϭ@8UN{`EuuMPzi`09|*2=;xԜ{G=֗J+$0Fl疖#Fp MJbiho%EýKF vU!@ҨyQH}vTͽ^p:i]+wO;Ntk8-HQ:c!Kς\q^%pAW#k-K:Q=v|2Q"㡨ͧW5:ަm>8kcR wUkirjauIbeNѰK4jhZ+(>m*䏻O #'`U/:;fe8үRp8Eh8e>)îu3NL650KU44%4׋gNK DyF/NÅ} vjKfƳTZn5kLѧQU|3tgdp6 dVGLm4Ϡ-{v+\[8^4)疟{ccX}SZ2RM Ϧb$пl ]|>?=Q1]} ?q5=q3q8f -ǭJNuJ9*nqZڵ[gDA,T`|jAT‚I ^^Y;յS(8s803'蟌vt0%yJo9Ԙ}g@\6һ=;`K~T4VC%VxXf(?4x鏉;OTS/; Tnյ/ǫ4o;$CBQukY9#ߤ{.h5PN!rc:Κi9=]vÁb׷`Q{Z;8wҭ"ZvʂԩQwqZ[ӳ۷K#ۂ5m^:5N|q3^ҥ=&'j99x~֙ҰۿOOpRܰ8j{e}v,xW)s^7KukQkbJj.MUƱ[,yl~ m]k44SӜp¬{R 4QBd@hmI+9Q9-Bd q3s[&"(e{XVǃZvM>OqノJjxܦ(Ҥ5yQngOO';1K6OvfǾ[\Qf˒NK."66.{-oFs*TK}Ӻ[*}ZTgj/c|jg]ZYWUؾQkT:56OQvtoJ;S%Ƨ'iщJ}\8">#RntM9̈́`oJޥm]3H'scfCcRamV`J\:{MR\"\[zDeoɖYe/^[PZR[ru,[gpH\$^J}y{C]ڄ @@@@@@@@@@@ڕ>jTV8;}[g$/}v_T4kqkN|UEOڒgoĬ-Vw)xMF}*3N>qj~-k d\p'Oo'(;/vi^VEt6LVt0]gD7/MթRa>%kk֧mw6">-ܵ/_-#}`B7bרQr|-*Zln_DB|kM R^P߭KtڿpPjZz.rq-l=^_ˎv1U5if:.iU|rk-DwR5"7$Qv-M3ߴ=ojUsݭF }Uγ` dc;ѸN)MhwBiҨ+SsB̠a;)îw|5hVmzsGm1%c>ij-_9jsu&&`|50n?WOCecMk\3 kX{?iZf]<k7 IEۥ5.YE] =? /7Z>ݥ4і'LG?"Pu# y0!Xaxu\%J ԨHD q}^J,gSe2u퐛g)cIZ][݄ Տ.1=DǴ+HWkBFBr1lt}p-sl(fd uzm7$]6u,o);润*jjcq>uC{ 8H6['P*ʓow\Ndm'$zWT[ MHΪn_V]{WSPtKkcU霶ΤwWNrTo'gc%O3 `.Nf9]_w`Ǐ%E tYtV}C_,t>5serTF(\L췇ݒ{˯%ekVR:K}jy.UK k™p˧Vw]L"W:u3-n}?:cZαV9!H@'V_&'Os{.z[|۽]ܲ`P{?9ɔɮXw\R Zψը_KJ2_KoO:ٳAthc9D-xeGw4)sqU?.Na¾3[YP|,dlJiWRW},@ zG+gn5o$ZN] 8{zeo_q8⡚*MI`EBqC+O^=}ȕ1q~kelϓvq4Qv MHS7N1ݕi[[T,'R4,g1E}6VֲGq\+io˖nglz?W{GڡQ/C^l+9 fgݾ=vL'-, H6婙9fV,$P<+T0 o @@@@ i 0dc8r/xuۗ4.FWV?m&5kRVj6dj93׆kL^;_+'.*8cA co7w{An9ٞ"-mڣxқتT3{>%;l׷Kq*=EӷUNiJh?m1fstx}Ke*ڣd'Ǘ<׆3} =dkZFQy_JYwc?ٱm*88l= \j=#R\v1'ho/,<2 mOkMs }٭M.5hW?θm˫KcDT4*/ 6WYCN 9DڹsXn\UFHevuN|1 sUr 6КuqZW@MC{+k#PGsk``JEShnx]LcOxǦ5Fj1 I]P+G3 lϳN[B|zj5wjNk>o`KWP6nn;~ۆit1wī݀0;"]+(R(*2T\륩jNM:铓@@@@@@@@pjkT:8F E+🥪7B+ՁMBgMٜ/F_{+ž%+Ԫ@߻4׋?1c/\2Uj9{;ڎpVOv%=%]Yo4S18r8wl+%sPtuO5F[})/MǻٛkV8}SHi?0]vJWජZHڔ~Y_DoS7|~ʊVz$,ꍺ+ggx=kC+;W>"4P[,|pc mW36>j'Yh oNJџ?= -Tzǒ*1obovSpyg^̍>-"g^)Wڗgw.cb=6읷ZF3%RnTuizj55&^iX=heM$NI*.[?ۑg 4屹zir)\Sk<Ovm/gG QiF҅2 BDd?OGOde1q9w6\_QLRu^=Sn:\?K|[2:}8l teq^N\7jp=~uqr58JV/_SJO!`h>]Nc2N u8T~:zZfۢ5dAWŪcpk/L9;S6n^ޓۯ"TW>WvS[q-:}XД #]{] vϧ&w~WFKz4; 3a4]VFh@\Se.OF5{}M<~'C60Ugn)P(O2T3HHH6ݎPɮ8DUC}XԪi0௝q_kJ7{@wC_:΍=4T{k\*al:cӓijUjZ3X3:x e9+~S~۾ ,聗2)yoIfTz u!#թ۽ëT R&h:H W]Iӟf~'pѩcYS|)?g t鋜^R|1  1LXMCVIJjMB-GIwXQ T2юu44>>Y;¾*\jũx>3eUw8 B߁4]}ųjVG~m*ay$x-hwB;t|!*k%n| /kZ?yl쏂 S[_%_#ûa8cަA&(/f>gyx-/ip}tUi>78w]PdMJVQ}jy?bƾv?\wKi6 QpO3%k4Z3 è'a rd)xS}UQK  Zx'L|X+{NJUv#>^_$_CM./{: zOޞL.sO/?_Bł;N%moLZn_IǮ;emϛ2+I(~0\dIvPRAC9rY$' tF` l))p Qư! =3 xk.Խg~\e}MT{,x=G Y.*)覚I ڽB5OҷcF8355tSϷ!ZB2q3O95Ӊ2iT–U,6Yq;RjVU+đ)y@jzfs)ڢ!Nh:+ BWcoYjb&UiMM ѝero+'v%i6[>פ'ǣ;_3oyV$ROʺt֖m|:q-J:u> cכ~j+>y]E --[V8񫓏QtYkېO.Z:  s\w|-_ӇnϚ_p˛)7Jg#ijÛz"w-SUQG\|ucz_Tgqn%^)!doE|ӞXEq_pjƥVQEw/3:n .?Vֵ!R8tioeɬIigQ0QWF8+ZoW;4r8AV>O_{uUsW-Nޫ)M-gL:>bbc؊g+czWp?S2JQWN㔬Y t;7êUM%ժYhMM_f3)satR6d?dCn\yҷ䋊J䟿)>4?rCiQ|yOt}{WZ=ꢀceajp6wĪRG6O;f\^v׳VkskqBK'OڎLT~-K!ZLT#Y#Cqk>$Ci+Wʅ]X{lcEd|Hp^\RF@)9wmohݦwJy20a7.M0`1 1 @bK˧1MY ͯ3R[qmI 6JψuE3QiDz/w;V{CZ{zL%TyiWͪpݵɧݩ]m}_S_ݚ kRev},߯ nmnO{UWz/Cw[|bbIyF!vp0ïQ"rS?Ͳ S轙ք5EAi cgmdԾ f3,6Lpͪ5kvvt@1txkN T~%7)uqs|}e~jԮ.)D:#cWC̟/xppc*Yz+%jt\QSLa=~YcN@@@@@@@@@@@@@@@,pOn 5S|).8&׵nqY9Y| pk~Nޫƨvƙhl}~F2$@juR98?] ԫn" lt%Gs@ߞٓxխ3JDS̪(?>9ZYs;gk!J9e8uoڙϧ1_ITSTmO xoz L_8 w@Hiק?g|qy}W(ڔsQ?ޞ3O,fWqVPBi=g<.xK794)vZ]/ .o=X:f1vmp/[O6.]ԟyݘccINѕ-N U4L|nrP_KOZѷ/U#Dz Z}ۧ=GnxܐI!mwg>ٟO.__SqnpKjt-gay+9]eZ8L rM=:.QBWHqFm 垗knk8(Q7VDTe?og,?v4?eto˥ez}߫ۥӸyfݱzݐGD honKd_~i5参~vw^ۇtED41pدY^_sL}Z}3vZ ZKJnh?nzyܼ^?ZƱ \*;{u;cOgQVqY 龖}K0騟~fێ:~:۹@/;uhիTyNб пb)`k**i\!u1NG B:4ڮ礏>7NID}FX хj6^u+~[}akC{(Nѿ1[e)^kK3Mz-:~>f{*;Asؽ5okYڒY:rEWDVg57\(2SKѢ/T׆zy 0 e4=3 0 kL@@$r0YGRrdFOuNWPXb0WY.K>~g7wJ9 1ko3pg++Sz̶x @@@@@`3&s06Ǭ *9`=z/IFUx?iY~p$VÓГVg?j2bG?hoٞ:[x_b*/N^&vkcoҭznilYtE2N9vs ª(JJxsPxaVJs錏ڜ/ѩӫƚt5yotkN1.k'?s:qб64kRsmE0wMum^/m8Gz۔*hRN)+sʳ.}v'bbݵi1jӟfߺ4t?0t(ɵQٴjm,hTiĪOƯ5܌ ]s]3Oq{aM< H_vCȺM^rGW4QN#&Z4ak ] i9RjWj9'>j-DԞ> 4Țڥn/AJx2YVkn]KdpQoj<*)/ʳ\ŒNf}fBkB* ac>S7^Nř,Hp3uF&V*1&|IKBO,J\K݁v+]ZvXNy/V6WYqDznKI>ZTޙx>zyX$wE*t:3׍n," z[p)#ϝǮS겒yGZ:7&j&u=_X]-A2rKc_<}S[vgQԠ*9;ΐfp{9nSUZ {J̧>9|/N<u$]?-TK_V7?rkqfx7Vw-q[,qc&«?7m^Cwcbe!.3Q3ܘWjcީjۻqAso4B"qJ4 QvṊ7va;ĿR@UUtv2ᔪ~9ק֝O :xݔvZ=^Ӷ?Fv75 '/g70ۭiWhZ|ᖖw`Vm]f?ooSzb;cޢ|[ٝ~m,tr-׫y枮R:"\R-TW:N/~.]{<;c.hƁbNz*YNk> I6š>1ԳPOYun-;)ȵWWթ6;qܯCK=<˽XxG"ׅ۽vB3"i;'\_ E}L~ ks V8 zJ,T.i[y7zz# oG}?oo֛V}y ^c ZZuÆ*#U |RNne7.-Qusv8{[q6|[25$msMf|_wã[ⷷ>j)4nsaOQ#GO^[=&-/zK*Eja|)L/Z'q]Ѭ.m\M4D  Nvg9u帯 ]kl¾UpE)0=7f+KT {ߠ#!Q$xiĝT۳N՘rM'OR{Ss'ҕJp*\ b,)mͪw7>T֟%'㏗r6Y/ l(5[3|fʥ0y`?A,zH:v].)hϟ 6ReZdcr|v~5¬bkj+_Y/*vV<ԸW7|L' ֶG,g<7:OI*ML|']1߻aG48|J.]P:g9LyI қT5.|EDM.=VI9F|I8٥hwb1In-lQ݅PJ\ <ԏmŠ *jpsѩ- "t'&6 0uivo’jX&k=SpgqV[#&;&Z( eܟMNǴ.j[ti:M>p{b͆P0dꞟM ,mriBWS}v3&8TDZlGcxT5;|4}NJֵΘzr2b)57^`L_ U`/:1ïԸMœn0<ٓ|4ɓIt;θzTӂa|kq+pꔽ:a1M+8#ze i@4 }h1͈ ⣢:.]cj[*S?x>6}>/VU-6ш&kY\'BTo>eD \:֝P-$&37'"Mf۲503#~ry=XxXTqM͹]?ڨq~+i vw]ArqnpC.2bp#+5j(hؒ@ ď[BV}<:SWw/RF 2֯e||qY \ߖ֙Y]_Dn[AOpLZP~l6O\woG>pѥ #wgka/pFʂYRqY;F\cs{E:KkuqT1tiz,_˥۳_58һ$]+68__2>קXBN<-7{|v"jjU(8>Ξ>x͞:7_p D o*me{z4(roȽqՐΤVʩ;`ivǫgp'ګ7T:Jj+)xtgw{~ E8o{**@F i~Lx[4š=aF.v®HQԁ=qi;pZt`t9O>[ˮ8:vOg=];ӧ ^լQ[AL>.;yuOzví5ɱ+J#J@78 mO׍;7{Q{=a{x%*X<(n J9Qi#mKZtY*6w>s~ ߇iϷĸokqA,?oē9)]~雾-VjL6Cs_w>}}-eZT*ֺ'|sth^5~5:{9MAm5uwm=_6_xMԮ Sst7N/e-BUfA#Y8%j #Caъϗ֜)1~&v)Rխ"Pf(x[J/vOkE:5L%qW?U6'mIϢ]H00*1&.)>lozY4pTgaP/5I ֻRt.|ZFRk?yQ+uj@JISm<e'j(: t;>ĥF*l7{[w.;NSe v/O޲M\vj]p n+R.AԍcR׳WBoNõ6׏ݐi=GSe-L+p5S%omX\nz]4G4Z%b;Ns"JC2vV2l. 4[mE|o 7g<\aou47T>c.U~Y19 V1(ʬSu"0X95e-k 2m $DM!D[>O iJA'Ѷic|Q"BS]ʹΝIgceL ;.ښT OCǖc(>.W4=+QSYP?Nfm4g8U.J`c%q;v PmF57ݸcwO񳿳W(S=qc."R*Zp#i'Oqܣٻzɩ*9M %J'D+`FB4K6Z_3^1N粴uT돮Fn(.#RγO8"* ,8)]p;~Ǫo;ap(2,>i~Nݥ̟ <6z\?.|Foxzxe1Ν 1jt^)'$I6R.2A3ϗ5Ʒ^Pj뱘_*|2f,?gmN4#}eA٪*!^Ub5٪ԔesQ/?+\UO> a<2g4oNpǮ^xӔ@3sm1BtHm.R)SPAy GqmRݴURx2;hmMڛJpb۷t)-3M_YcntKߋTvq[@m3I9&NڥLc-=a0qbݶz55)d9'KI){Mm@!OOK9qVݦSSN8u'?8^wLk?u&Z%V~ϟ^xqP~Kc 9~_;e5rIL,l9|iCY5[ʅrH .n2Zl~]|26j+Ѷ1G3[g., ^G9S-xKiFSns_(5Qx=RoNڑ4a~o[vߊpBޅ@Q|V>;7Sݍcxլ>aIUpcԌ; gkŭk18P|1Otc]{TqIvܞcSEWIVVRC,.d|]Y UP>ls\,ו H9b8"V_*4~Oef|rN+}[CX^Zg8!;i2xΓݫQ $ҥr> 鞞yY nW"WaVs+m]{jK*o퍇˔霑_M"h;PbYf?hSP).uxru/βm״wN#n6 sh^[ۥh>QT1UayJҍGp5aUà/θca*SIZjEmM<:ѡ y9e+V<Kz=Z4^Ti 2λvy=GiĻ/)LSgjZ_bN=,_FS*cxUyOΟ[? ~@8 0}Y|Ng29ƙ9iB.#ukv]Gy>9,xu#]i}Ĭ0_; I(ҩQXzn2\;qٛE6ӝ6]rsFeV8 M8+WZ^_S _=W*]t騮OC~-e{5sir8 NRVdd\i:C"m?h삟TkSʪQZUAՕ/~ 3wc[x*?H+q&U>' MKܦ|OaWgRUhDd cdz|ulӟk}U(ЉP+Tgw__y,|z IMPj1rg?if/ˇTNzB`L 0 8g,">Y+oyg q>;=GwVr]O;:*>j.~⁓$Z\R]D֬1~WRlǼ#5i̭LBu?jc+ ԤqNvᗹeqщBk)1F9a2R״4PIryoez;.TP.4g#K|ܚ &r_5˗)t*;s'8ƭh*@&CVɦ-Ҩ#IȬu&4#zqV?3*nJgAlF*' `7YZ͒ fv/_ iY&#lNAv2Ld\N04PiL=>4]vĢ~i݄(tƠv_cӜh-8!9w?90k8ѶYu36&=JZRuOoA4t-x]_w4KSSc1hVi|.N#Ha/T"bn^mo;*}9_qB}r}F{cSq~;S8u4s/vsYX ugEV⚂>SM[!c@9dI'fp98?1-$ ZeT'#MӃ/#L3j:cfkq9y <3]5RF:Ը]ʚqkve醎>>kgdBp_]=\o5V#(_ nU>ȏqR S$?鏮.s5{19ۇ6\isU5>ͭE)ҧߓxt_søuQ}Sf珿-9ջ5l4c _힉2f,pi@lYONJ4 4ƴ)W^~V{Ɩd.?W=rK|.2 ||ײַf:x% |eG2g;:ml YlL_Sf-Et\G/ڜߺ%1=g PJOYL$]wKƒ1yc 뭸 Jë9|};&|"QDGB;sն}EەjCe7luAHt>X]=Dsf?m{bŽe`/(1SΓ?OFxzu̸"qO78_v.7WÄ/uhj&⚆WsˇˋvԦ*SFi񦎳gK;N5ō5(+SCL7TF!dQWxUɑxtTo~C6.-=xB `ꍮYj@UqӬHW*TTҝKddzc3=;iH-GAgl z\֙JZ@T=F0|\xo{e]Ђ613ػE^魷3ͪz]Zm}nJgS56i%դJkWKSu9l%[F40ꊫxZs8ƥpRڕZ0w(oC{t=LJV JP Jꝰ&?ϏgbZ) * 0[;ZUKzSįȩqsiY{c|(7h\8,}XxxVtJv^pn*Z / 5 O'=6C"K/eJ|+U-m: o/xiա&&V.ۋ{sVZlpI0OT]Oٞ3r;Uhx}*NR w3YK}ItJ5aLUO٫ϝBTA;Ӈ"]VD$N3ygӛ~v:&{[XLŦu,1dsOkxGJ?PrVkn9R} qi\T^WŕS/p4 D 3bW ~,r>U+TpcOrJMCrnONmZ\+N<)ZTtU.,_ IʍzH$*]MɴOvˁۡ)[])HQY.U:ӧ{ERTVAwǧgikjjGPT tJBf-ВDơzug XiTB:|3WNQ9 zw_U$CWRUu:^4P@PFG'(5(W"&Rel/+Z->5Sw?Bp@O.= w++ݜ>?yyudY#wuetO_T{(2A>1\}t6H]S^ԋ p`ctVN6hz /BHCe|G,<.l:}7kʻs*N_4Ctc#m{=(:Ur$ =|2ͬ|UUsKK}9a>cQmY\g3bECէP3Y4U[TXl$j'#ѥٽZ$Ra2,#R82f7g Lo&Cv=?}(ݚ1 %Zs>cMYLsӞ#D֛`a,r?nAŸ s6T9*MmVe%-PIpc!gd\Gܝ(-ґ*r`yc W0 up!.o K| c;eS< Z]in-F ~DO=>lzSK.r=r@G>}gc>z/E_wl`{Ef6~۲Ehb ]?nO6v}pe}|*oٺVb8gxC,xӓ-Ѩ(5<'{6w9wy[qt>~d|uᗟk ^ΝNݲ(hr VwNbhm1^_Xgmil~'ֿcmjgvGC>)Iҟ RanjQY=H#gl}t/N==k3ч/}Q]>&9\{xv>ڠANcV,{_Ⱥ _=z2qʸl+!F#نs9y2h [wc]. k(srsR#±/rO?5#?INQҥwNkL2ENpjQnu&TqQej.$ѴTMa7ait}I^8!9n:YY7%@164K1ڭAӌ.=X`& I9#FhьscmTN|lU4XsIS&glyB IJa=l7M6ALidQUWR %c+u4#iIMpQ35 9UJvq YZz5H$mӧ:xN߻X_d-Lv$n$Yz-~95:olnd_%iJBfe p sN4|sg/ Zj(~sY󲜾o藏oKӸfQ!@ Ә|=L3ʍ]-G5V:.ִ{ܡmJt NI'$O%;&,Z1M[]R*jը;iah5l,e˻p{aV֊nî0g${??՟Oo^NR˭9vuNHǵwl.?4mhQEV?UgϷmi;Mc,ejW6jO+ϟU\e m_K|ǜzϳpF9z,a$x3߻iio_<7V E/nu G%ôSwz^ϚڪUtOv'zZ㖿3[7o_Jڢ:&!rc8 gzkϧ]IfY~/K'Rrg$ M|=xr޼oxgUN}߉ wgRn,U5:Оs+k⋂ЩUF]JPW$u|q$ZڕO-3jz}h]7W9W-Q6%j>Uz~^]\[)ek[_ӨW+1w)VgjO]j[pW{TUz$ Nag:cɻ0qGo @@@f3@7!.׍ {mqixWUGNxzs7(ښU !ֽ>O2*L[tP.ߴ}+wmixkp ;a?U͎d'MNMYq "Tư6ə܍NΈ%3+VglHn6fkSޢMq@i9_tA /3c"`bݷMfnwD<+7\UPMqG=l*N=^z]5 n lΕ:co)U`pdd]5`Ȋ\oo[3cZ=&{Xn'l'I~)B6gqwR5.棫zEI;u<#2E#-gKzGnXN~)~_bcHT|Gl)n{bpqxd/-GҤ( kPmJF5cUjݶ4vf檵{VˇV %Ԭԙg551Yqd}9.},L4 8Ǻ}~ϚIӾWqXᠥ O^߫;(]g &3QW:ΖtUY@u%qpޞK]oj.}KyG N3[^\9CDO<1S/g+V霺 ?{[ǣ~'6n NWld/ֹ}?+D[ 4;e-=> ͵+/ּU5$ )_a=z?x|9c5r{UZW技 8PH<^fiy7c;8o8wh8{VQmgdl|L_k73%xg)aN O;F5WT-:1ز8Gσ-jz ( ^_x\zxYťRkR? eo՞2MfYܣRUg'H p.d}/vgqŅ(O0߇]RD?Mk&XkfARp׳ɬ5ՊϳtM{>o80 3>0*^qkMVbv y, jFyM}?Ԑςm.RO h~©yr T]I;[K?7vwݢ~#wH<'Mv͗z~Z2cmĸE h_Qz::y0K.9L C`F #c=ѤaxURe?a2h^ԮygcN24*Lǽ 87uCcQTx:#ў aKkT|zXdog|_-HV杵lʏLxYWNѿwjD%=AS]O]2Enq[Z'"kA48۬i 8K礸ᴵKp0yFV.1ݛwX ud=2'OrM!f `N9z|jT)X,|ʻN˥ޚل PHPGVpcI^\F^@9i%;`L5+-u%]wQ^2#~ 2u=eXȹ\|-mHU{:DV"u&q@7,sWd…>cqn/JUFl;dkoΝU0 N}3QQP3NRls6^>h4q1*!ut8 zkc4ϬXͭEBN~$GNj )\$q56!oLb6ܬrd|%6Ցr=}w[]5# zm2.R\mm?%Tn6`(?&yBDS(6S?1a26T4jTQmMT6ћ# hy̱k=6<ٶlrgH#md*'֘.ڛ*PʶܭJfSw39Vӵ&)\G>SQN;R,rmr-d.HNږvn:JkQ: Xoij9wCS)b I33vdMM5ٖF1M4&Dd)9$e P%`2ˏmw3Q ;&թ:}8X2VӁ̈J |023 !!H=OM ˶ho3ӜM6;z&= LWjᚣl%;Nc>g,]{QBxA,sSz^Dڍx]w9 3q[/u0TQcվO0˗z[4RBé3γC50c\?z,uڜ}zs 2eG,;v^ VN #UF*c'%{ Ric3fQifq坲՘92+s]ns $vS@ȑSչNyb4$PFLhޭ٨4t!-ڰ@6|GٗI*CtæÖcKS`'KRpeP;LCCDu! LuKE0X̛8oMę')M6՞^}UP6]jS6GFVj\-69r ū\a46r=3]jh D[Z`fڪ0"o/ j`iҘ^)esֵLdB|Ov]\q&9eIKptzczEOwO>=|ml\.x\*G##LI덥VQr3p @I?}EW]%?8ܬ;Ð?kkeX I&j4iUP\|CK..h81M*T#K"VAdzfpy.65+gMFh qg[VZ}QƵ_ig\sZO͗'r9N?oa_$[. jm.O^xN߅y]=W쥝4O%&Ȩʘ|u*+{gr..ڹ9ǔ'p.5PH验>sG @ZEƢzspǥwJcO6>\-*tޠ 9+|ЫB;-,6er&z8\;\ĿwM)JRٞyz-xrwF}X.w>] ElNtٵz(Adc%8P+8;>C5厙|n 2=zL39R]==3g^. 6s;#3yϹ<8W\Y]n\aF ݼ 9l{}'p:N ٴONiϣpKkWt9˔4p`kMO 5;vtϯS}aQئF$/lo^v?o/^j\=49!KφƦHEj"֘^7` >D\5fjȩxڳj5[# <8DU^S.Qx z Z3tr㼜`)s3S#,ܶJ>g5DPE+|}۰N>vg.u['oC5$D,lj]xPmAy\'ݓN疯Iz[])x\{Ol}=O dWG]6D[YZtZ n"6 dewAUԃ9Mpo6IsP@ܓ;lϽUre/*ialF|ll4.t_w\~SP.J0>|m. NM[J#hR9]ɲ?"1Ϥ&l&vC7Ʉe[A89 הev܎tӬjD-vK zzRE%0t:N? ܌ɵZo[7'4iOPv4*RhElቦP靌ioS[1bT|J-b;׸UR?q ΢Sf*pIН'Zhjυh 3`96pgZێX0oFcқaJȅu=y mTS۝-mm cl=#mmS6mS;]dElclFAMj1g崉nښHFXR8"[ج̲ʲJ9;zۭjLyg[옸s2ܳ? v麝1۬Zg˨֎ۦ0:D4U:!K6pF3iKc>)gC%ڤY# do%DH|ߓRB O@]%N՗PQǬd8ūKJ5Q 6z~ L#$ֵ%y|cL؇@awD*XGmcVqzKJ#cy %kmlsa*~ ÜYVT~WmiRJkI˸ڱ:pfnMRFkVWcoNRKIXckɚw MwzHr+1|vI]S<0&F>++K6˭SHt wͧblr9Y*ӨJ ?M^2Yq:ȮN~3|qbyKO;AP8]G 7W)/MdΘ1˼/er1=FJF*H&:̧v3]W\Ҫugq3 zvqi(6; 9˧gy=2K#t#o:X^qWSѺUpfPx=VX]qu.nGx"ڨyP;(;(?Q"l:#e a[VϤoL? Hrŋ~Npв:Kۖ"eJH8[FSJzt]~xJږJucv"j[l4;8FbDempd`JrcH=9ƓlPus_lIl 4rt-x>"29-FO L Ӻǁ[.$̘*RSuۦo[fDb@Tg]zm ˬBFHD'l!zzYJquQ ԫEl$x9>붡:?,Kr0TxNO23Wq"Td`:9ɹ89UXR֣&9QTSSˎ; u:\u6R ev&zDpJ.ۻ;AwNF+=_Vvǩ2q@鉩l5m??g3n9wp6Kcƫ))81ÿY-<YWVSiMqYƾK% ]-|7ĢY6 /i~<)vq%w ϔc 9CcXP[."ÌcYWV=}.y\tOw^q{cL@I )l;ǗnxY9L>taNXz|2-\㷊ŅCGknٴwS^JY{w3ş&wЂ@tJ`jc=dҨ|ӧXmT&0#oQ곴7;KHa!H>)n]5{ݼ~='ZnSYrM oُSWq,_5}cIXG:g0: 0a)2ǔ}Jf. LČ/ޟ'<>;e^RNkv@ک":cU=ߓ;; 1o{|zG>wj 5j.Ǽ5'uEPK|joc5<ԭ2K y]nÎSM,j9o>_Wz+>T6fu)P52TxLv?Ͽuv>ލ[fv}Z@]˥a>oSJ֍Sm!}_OS;bk?JhpKgIN.?jz1[K;|/IRNN9 7k=dF(9ȜXT,m<㭋-RPH|S,ۣJ[d9bFFM.tDK MvM+z-n~lp6tA$8$lONbe7ǬiZ[K 5`Ԁ=&&gvH0:dL S:'hڽo`s7;"TvP ͍iTkMœY&T#7#L-RV_uBfzd e.Ns5&br+ɭ&w 3ݟd*2xHGͥoޞDIM[T5 Ifҁ%5tcsXJ9Nzw㬃b9A;M55ۘT¦|-2mmyraZoHg$lV2nA n2[ 𑝣rXdcmui˵y ˥Q0>It#u9@wlR8kSl5&$ '9?I.IfWS$W(9r.L6OǤ#uPc &nTwƹ5{Sg>'$qm,b8b35.@S븆k9* 2ז Q`ęҾ矯(m [ ˤjjn64ӧ79ƍ AB7ƟMF;\R-")L򘑩QafZdzLIp9f|לEJ8!Q3=2E֡bִiY.YS0XXEVF?)b5!WJ&E*ڳ6]+J0lsqx{BӨK2gg:Y̱0tJ oŮVWr%ޢyTf,rw&uU`+6l<^Ǵp?gWE=I:M\07@|+jonMj:wח?:oyvӃ^[fHm 6x#.[c2[vgq{_Sr)끬vtoN}cxW Zq:xN.Cٽ% `L%13Nſwpİ֐R 䎠Y[%?wS1ѵZavbshV FOoYh`;9*K];zw2#O1Ē:DU#q_f-4l]zqt9LVZwDxndHKLy)=DTB"A 3W+Y욋eg3B :w[f'F Wj 5/'"X(іX{O+6@:ͨNMŪ} ;;Vi|-ET0<=1~3-+5F0<:j1k4#R3c8: iji$T!F7yeP$[**n*nѹ cYYg9"D 3J샅RoR,i'~nxۜ[6Gw1̿UoHN'ǧv:N)uV0>.nKq7 .o+<.k{ txMV U#F9}aeg] 1ԙ]. NΝ*`qc38.Ycgˎ!MҝcNp'~8Y%WUtUA_NxoWSn_(΀GVgXt(>l L~׎xW"ε鮅=Xg~+iб- VjNO?Sy3~ӶiWg^{|Yz>ݯvn7 NCgc}w')J­vzﺸ\\yoS??5pTbUI!Ccﯶi|nŎWE6, ᖞw촔 oJmtVDc2G_H|;= V ׊yW>_SzwwǨ{ڽ>xmR&wc ۻ!ZZ5VjFr|{w<^j71d(%ǿ;S*F\}NenmݴR3$I y&ob63<ʎdXji@ہl{XgT1]$N[Sxpu֝":;.f6δޣ,$wkJŲJM):iv_~YΐpfXVQ:Yʕ$ϱ I6= ic;Τ+*%Tr<1P0yi69N O)'I剾mKN :N~ܞ@-EzJ 3OFr_Dַ]]>3SW.TF7;44c 6ekczFKܕ2[a&:o73Fԙ95՜)|U- Nvba6H;]GH:4r8 5VU[o=>2XQv]`b:H$D; LeYRxy9wۭi]FUH#N $rG\mjg?qb''q<7Dy0"yo,Mӷl2 խD8Ps2;i3Q_/❰5+]TP{!Q m/5F,33O]*+kq| 8qӜocn-"cMwkQ8Dnj)#P8LWUyç<%]Uq†,.S]u7dz3'}ꢕRƕWwdM)sR]]W']ëɧW&8_f'qNɭ]ÔbP5-SX-~((/IN}^m7_1vq/xU~q~SMt4rqa{g.C2'P4MnY Ň& 9=yyS+[VpSk5f-U~r1 v5%I)3*@i9diV@Rվ'Mּ5ݛs,\-_j)*1h\|di%SaܭڽD`H(-5*q-ej>#L=r ."lNoen݉=e xwzzɥCOXr?MFJF9z}A 7uDPURm9CZP9fu_|)!!3tz qjS҄$f^h7.ϡtLc8}3ChV&A(;xe>?/Z*NNzݚA>:ki+FLMEkOS{ⲾOQp:Ng_jy\G^DlXjo˩q;>{eg}¾J3 WSu쯗}3} WӾjWˠ#,i==,eY]~o$3gr&LqP;=6L)rxsMOql.*[FqO4-w*_t^)QjB'N~e~<ժ46L^ZݚPG^񓉶[|`@4redf4BϨ692~C[e_Ug"lnc3u坬շ'#]('KX0P>?oWwj29ӏIfs{Ɣ5垻Oߗ@Y6_kM1/U'>3ٟ/*ҷq]5>Dz~3up;Ƴc5-ҠÍ_KR+%ҫu=zsYM^+91!G.]zMN32Fp2P #zZ x崛FsjiղHkGnX,KYCTeI'v.#3Cl9ߡVX>Gʛ_x/bl) ,(mYt} 35|f5zXjƴJ5d݉*)} uض;(jtЄʯ&iD]#+R崢DŽ;g]h@C{7ؑ&l$Et;rBٹr&\GWeQaI+  gjeL5mndR3mt㜉r;5 ܂qZX oʖ+nOFZ y, }9iY%6^ahmhp}$<s&UdMȅӤe*; 6՟'l)< ,~BKSvq&s_-NWq听19JHQ̓ DP*רU܂W,%cs8ntiA<I6s;%,F~&F#e1 6φt :AJ&EB 8HDonNF%ЎYR~8.Ӻ[帏rt40}n}_5bݹ滷7c=iqN?ruS˭0wA4:؎Ci0e99/.4oy~?xtw+t'@܁? uɌc8ѪVzkzE䌍%MՀ>6 Y٦J\<, MAvrL[yi;-m?{e|ܜ:b$@F0 qaEGvccNgI< ` n^5lrI [֡ۖ}>N.ՊHGsLs|-붱s*w5i-)Y$˹jh\y27۝ vF c<_O}X3-1˽MZ)t*rP fը˹FSL'H ̍*լ\ҷQ8!AN ܱ/EZc#%CX$ik3\ʛqxk+jΔ3g}>w˽b˯*puNԨ}JŭWٟ;[8{E}$pFgu;Zt=OF#oz{0vN}!q.- wاnE9S;_O 6rŲtƛW48,/ txokmTr|o#Nœ]-vIO"sk|_]_ 8C7Ի.ڤ?WVB]]+Z'qn郞~O,f)=ὪbP[5=jy󻚾[GѭJ( b[(^a[{7FJ銀9Ϗ^t̿kS#VE6}֎ՋįMJGouڕb͞s3HB>"YV0a>##8=Cl#lDқcg"fBuc#'58]>kwrڦ,H%GP7X#YZ+y5P\UӈUEm>τ=Yk?ցԙP}Gl5GS_zgm7"6q˽y_+!1M4Ž_9M_b+< }z˝䳲|([9`G6'Qs3pr lgF/pkZtV6su{kf$h> М$ m&^+a|?tB_aߤm{QRs?>9-7 ojƒLMCv[%ˋOF|U?&N2zn-V's oBQmig<&sTz&^Q*0R)Ǎ}/xvvw=~#zVpЁtxNpG.l lp2\25S`y0;ekjj?33 #lIvsSq;הzKYj.^z/_uj>N}.)8Db)H9V/P$&:0ZOQ˜ַ6#1_1&+oYw=BB[vȩi6q~r]n73O߯ޛJU.X bwO4SƖ&rZU OA/I=ѥ^!TetGÏuV]Lզc|xU2]Bzg^=}Lm]J4! ƣDL_M' 򞜽Nw]ma) EU=',Wt`l2mBM*[ MNF#092h2,1M59 `l 8" i$!Y)+9 6RtqijT[^AzEnv&WMKokA>> IaQ-zuzt͌Lks:NHK #*Tl̊q*O,Af2q3jVSi B9bNA;W?qy(#~X1#C`ۤTr4J[rO 㙖#U}# FjWm+I)=e4[ z|[}[Ka1̜[Ӳ96mcl4؉*$ d0iu`[BTH#%jDxHmFPȬy;ʾ}/F {ÌM{t8uǧ^"mw?g{.tI>3M^+nNelZ|:>y?g쪯4om=Z [y|:g9\o6YA %[{ɤ,0>snҢO>^8 mMҀ=e1bdzQy"|ޅ( yvyo+՚pG]j;p06d}Nǎ*,t&:~+TZDr~-:c\ӊE6%XgM*KK*R8axLiT5js=!ӘMEWַOl~33~?s\d0\7孿ᝋc?KSRq浥uYSB'?I8zv.0 apUsϗ7/pMݽ஄OO\\b+VN ME z>uԿrk؍ڪc O.XK=c4BQJKisnˤ7,8K}蜀4ZVqYqw;%J$lz=zݻfTFaϷS)Pv8RAJaG&A|]rӴ1RjFg nd'V܈[MIi 12V cdȨT2O&V9]z' hp1Ya&lH|?Yzƚ_ cO,T=No]skۦvϧ' yRb'їl1dBs1nū4ʤ?zy}[{8au,{8GԎN-a. ֖£T Y|g\9s`} i!CsCKzy~So"vfQ9?9.v/M͒ ܐyEYGJށn~,njv3?ug|kMWw!;(LzԓY 耰.dIVZjgSAoO>MDPA垳9nެ$寗_̕l5J4;sy <ێҚumo>t^úiV O:)\YbL:{0|.R6 7mQO&͠`JQ!x_8`A>*2 6ڽ2zូUF+TA}xe7e\j,gh "6i(fi mmv(0H?S2(mUuK jiAofJZ *Hmdk^)ϩcuD @#Oe֚J`ACF9 (5 +[ny?Tfz96SjV!{1.@Zd-d.Fvy>? 60[ Q42e%91)ўrm[1;CG3ۭAKf*Q4`G{ FwoF&" `Yаzs ! 9gg/;qU)>˥}+Z@\c;gi$A䌏IH;oYBB׀\ a 'Vm<0)r@ko>矨>O'KP(RΉJ5YYz=}_Ҳ8,f=NI$Wn)( ~g˞嗛\b爻TrŎq{} p~fQԀw%QYuqx_4͉֩Fbl[u>^׷kٺ-S]v'1sS3זqOIb2nݩJ:0SQ}]ernxKh^(ܾkf]-Sf֞ w]"UT<8;:99*WۑddyXKڽ0SaZ(>ҏz]*eסtT(k:O^m-[SL?)v`e“k&[eJY'LLmcYk:8D<,vdO> y~P7M]#>ZfB\=ul ccm ;O5ryF_#dcIpɶ693xAaOFWm܇w!Π')]Pi`W==d:{һk;6R3JFٙM);r0gOgQvïRwve]%4A9q9g#-B\)zsnl[yLJ8 9u>QR`glcfr˪i )`,\iJv+OpZb # rq~"].Ejx~3T` 2I.f=CM6Iz俋f*ɫ[R(A'W?XO+ũSZd+s}MUƨO`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b̩_sϧkQw'F!8ǡ?S$.Y|!+ ңa3xwܱ f΁ 29]86T9/ϭ7/bG }FۛIv,f:NܯkZvfF{>6~+55>p⒚HtyMY$r,nl70=}G{?.QY.:Oהi8d 6$GozR޹GT >xi%9K:sPD]d~3׆ H0[9vk[G]/u7yt_T4r}Or~%[k#pF4MoccZR8xv%ұ: -2I'&6,Qhـ_6l6CQFǮw0YGzJu9 ј0 -8Rph>!M5;8r#[J^':p~qol -oa2<X)25 \kl[f-1Bt~l1K4׆՘cQc dmuq*xCIRq vj,TV? & ( [MQ=Bt؜MvEl;YZb0"YݵKNf&э*P\uc#0>`˽x":fݛeA@xFj)cK0A9f;[[f6; ϕ&ư?f-%sskMkmXMy$TV9=cj'Lcl9DNry &6iP 7/d]d9׶@-hrWX`򔵪Ul*J9̫ĺfp6cm,2gM'uO3FV'S)Y5s8sJgz[{p.j\6)piS@@@@@@@@@ލ&MWZ%yIݲ8-*ǻ.]Yj*GLR-aNqJ2.$7dRAK<;FJ@@@@@@@@@@@@@@@@@@@@@O3ᏛnŏN^'YQQbRSg>Yv6SEOX.J!<\Ag<=K+9fͦ(8I)~xL=.¯sRkŏ{pa5"'=$ lu :TPTug\. Fs ퟵFXY뒽 wD}.IPQ)HӚ AUt)HPlxFUO92tdβX99Z+%5 2Vd8pH3qM:4/ z8t-%eXi,56%ky]z\vy:fK(K[!dLb.IIPukP@9qm'#$Mje6ltDlj(oXjV]xH`.[T~o[]csߓ,}y,H!!w1 Wa\ƗlUDe:LJΐ9`=Z'i$tups+KB2Ɠ pesӍ[U {s>>ftIn9n9K#YBF5h1e0-qëS/VӑJ er~_Λۥ®˕O|Qҝ9&t@B2Lx&8BQ>zecֶ$cc},+ 5ң@<9˭<,Juj?3;GZW5;̲E9l'g׎H;+zOZu; N3,c#N?ni|@0gΙWZs.j\;F!dB' 1M3ēybP5 ZhBzR=Hl~Zsn.r³8g*0gMv%0Af%}X9%<&hHhc1FQלg#}#bEt(|sΆIĺqP|3V^f&B|iՁ陭 ԩQ%T }B0rOY(54F8eWQdPr]5(%ʒu$^\5X8sΙajT ce1d8|n:3gGjU\a3E:ϨLHJv1skdFFj.C0Ps vi9c3^9d%sOGv?+I & ?ba:pA#8_ f?]kdV~y.ы&9=>|m"GG@p=dފqFX&t` qسE4֚I*?Id[;rHbvτs|g9٣kB$ 2w $ejbȗ9țgr2XKZ6;]YU)Mߔm9> m#2mbZS06S ·GeokvUM#$N9[)O>1I'n~26dS6k $U(d:].[%|M' r}vfI ɫ)*m0275.w.rrzfY;/J;󞑾;>YÑwŮʢWpaç+_uͨMb{e7gOE$OҽVBH??{CV@:sgIr+##Pz/?+KW` le[ϿwrřАHOtzX\'ge7rILɮѦ8'Vol@+ 3g3%A6 *im63sz WWN < ο,߁6otRɸYIItܦU-~=] 7P_'gO;hb [P}';ޕ.;mr߄ݍ]i8I%.RybkZ\.%= `rvIwwҳ'Lo%Z` (!w#:L56rHf*+@IfV92V5p9*\I;LHj, &|#KFho^)Ű3/n]SCBr-?H#/*c?ӞI3:f5?,<5 @us\a27ih5V@m]"]e4.^sI>%MNjAR"%tw.rH ]5j[Zl@׍彼3qr g72sZGxD%S#|佛m[ G-B㢝SLu3fOo gFRJ =s3 J{X(SUV!=:ߧ;ZȦ{XTl*gIsgԯL [l0oIkm#9P.yr,Z)O]BA8MYIhI;;`gl96l8s (neVBWk|UnTjݝN8f mq1qtyhiNw0U-goHT-+\0J(xT.RyD28%F\9̻(x a \HikVD¯0Ns\q{͝zyQ<(|+9Ύ3ۗ KzM @@@@@@@@@@@@@@@@@@@@@@@ޕVږs K6ߥN~R\/RvD6SOp*m=,Xls>_SpYAL#"xO1e]w&p#-kl-bTSߘdNm#(~sqVʢ\ :ͫ+2n,5Z\kҼ,1s-J1Qi $75`Sݖ *'q^SS=69Y$rH-%55  tMR=@7@U_Sq.^@5Z+j(uu6\$:~5tщf[v.m;Hl DzӮWSh"&Iqw,d\pM`cìhrĩ>z_dXyf8$|$Mr|9q/m퉆nl<{CHe*Q񓌑MS< Ow+Ze@=]tte'I'[! _>S( dyAEq uOs$I6)Xzt) {zZj>#v3qrkj0 ;frv)#y1m>ewܕꇤr'c2YYk'2 ;{n?B8QF@Vrn=mwQ׭r|1=?UX뉧6kpQ*f}ގw<&TVG\(ӷJB- 6+[YO_wʻB~^coItq_4M#Z.9}Yf \u# )jdA-H|"CMmMWb ?-ѧJ+ p~g8m>~C2&54]:YHdǮbzC| M5˷n1 RjIߜUWDWAeUYYzLjF7=n %M#JFu:G,z@@0=$SN c$/!vS9#Hi!(4|BK]yS. ? =~fMm;FԠ3nI~`H٢SI-<]$3].ԣQ%Kmr1+Naa➥H76whoF HkM]qYkP2c^LjQIΪ7{ L7:`Wݴ;,zgHZX~sQx <5̣sZ8F%@#g%wzN@oA"ҵ'Y-^Pk 5x6#oc6ÛQ6:HR0غ]j EUv8T^>5ΜbXAm94hqLD4=J ٺv%Үܫ(25t[!Q 2;rCebuu֓mӧg?^ܹA WA^2e_P{ n9'p't(\">x\{vL+8}bY NqM c3.(=RHz!jS4l)PC2!CCSn[ZTmM1ZJ!ϔ 8=!6Ơv;|!U MJ骖|CeXUPaS3ndUcrDltds>]4ف xOM-i|sI5WrhTv3kwy)FHs=dZ6#z\3W\:]6ޟ-VyꂮSӤt0üVQuG QuU3e-6]< 9# ~/mT`(yB%Ж xGLd% ,2?SI sLΞ2Ҹ`3zdΚV @±@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@q݂͝qy})]}bWP֥XMe,=͋/mC#ӳW);98W_U8TMzu~ԝj >˯NUݑF6MUGSᶶq^q\S퓒+<-9qҹE\(l 8cT]Jp[P;[\뚖D0Ų} ol{lS~8D̥yBrN]iZ2 q7(K'O^]MY/f}D9lDd9&*m q2E^.uvoN&ӇS^e;j?Vt*ƭ?_!̿)$s>/\H=J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]3xL]*t댙 K6չ:9:x&tWK^-mHs~<=~N|dzutde̙Jkskq KH7@>,:cv8 t5|LGw_*ewivzpYHW:}?)v,5JЇrj8lOygtlR'K@kqdRxvӟ6ɆvdF 1M |rձٚ%e(Q*EyDiu֬:fm5teϧ,,·.F3U r  \i' NwĔZ~Rʨ0~#eFʪة , d5zSjc_T4uF]l@A4Xv U;z°S dd$j'ZXͬb F{-IP6@L ee[½zbD۝Ѷ j7lzMlR2?P>Ǚcŵ"P(wRHNFcR'`$>R5CX4ѭt jO,qkR^ DZ=A3G"[p7|l]XQ +5_@d;|eżjTd~X{"T]8Vl(F}%(:* #2tF,ғ.۟_fd{up 9.6=T81~'^pNA8J?:HԍhSc>#Ԫ€wI6R֒W,F2F?Vrc%&;J&:` 9 &q S)Tʸ`uim=\pB 611[WkXz EQ;\$efݍkPgQ$r8[Zeo93 Q=5g][(rYn}^?uN@#_N;[­Z:ϧMr*]=Nlq1%KjUxnL6 /?,c]2Ѩ`dKcYb(\?76ҝ$iZ vQ1T`0P&}vڷ)KH@AWݶX7ePdR*bZ5RH&K-T\\RK1rI5{]FloYkͷwq \&:1wVK/їoYkS4ِ$<3猿wFAeB(uvj))O>Xߗ~^,YԼ}UB{]zsQe J.լo'lnT)G#lG;A4 Aś-Sc~Su82ë擰trTIN+iՏ x3]c9_kE( .+rFRCY%7(ǠpPj94ڊTuJ3Dhꣻ\,mqj @e'1*QJ\M$Ij,FIEQi":"rH'sRNG3uMK?|ĆѽJXo9K6ma[M-65t'x6dmM0vfi6Ը#M1um5* ǽsAl#zUҹcI2)g J~R>ya4\+m6 `dԉAMlp?4vtfjKF1:N B)]3ŇLxq>[e`̚w|͡fIԂ;jZk ]L/pz<2-i l;^^Ia5;_li20I5l*z,I2Q•gV*0vE#UQF~QxJ\Lw`1pVU4 k6EPHUM*1} G͙8کg8>PfѸv0֖mi+#ed[us ]|= [w۴rմP09ߖfc\Y}72.-k@~BO,僝{hT`Obǟ,tWzhivt mQ F\sliS5E=q*FJ,E0jF^kHǍ@;u-fg#/Y)aNzoZoI;guI>f~c($r~-CCoC&{on}'Td(JUƾd},'SMm\NNvJ <3K*;& 9g-mέ[wRwp3fg=ggirSENG6 MD.cL\::=*XǯbU6`:lg12rv"6?ՈR_X\LkUDn㯔X\2{Zh8q;JPR735 7R5 0v;j%G ̥s\)fFA|Hb:lxy̲ bE GY+kQuWBD5EB9HiRȒ"z y8[qjQ}ٞsB!St9㖼Daf]㘒ksyN݀C>neN+U#}=2wYZqFzj)˭$xet;)m|6wS@ F:dDlrܺa@]̝֋N!S &L0=y~S]@Ft%*;9c5 8'dUE2i gIC;jO!j 0q-S@ye7%1?wN=ۥJ]#ϳ㎭h.O>Sw_ڐ-jW5:7-8?8ua1i^LL-Uԇv9 K7@ 7//IeM#%Ӯ0G2%{tTZ5=R6ϬΖ8ѤjW.SR].zj€mXr +Ia~kc#'.);(ղ D?V*S ?ܝUnJle]<9[Z觀ru'Kɽ" ԟ(pv"twJk= ]y3z~\E\CBe%~-9vk}m{;ˡa|OU]QQ<Q" $ odab:q6ҫ9΍Amva$XՅBFďR1I' SCT䁲Rּ0峏#f:8h˓Zv2[台ykSEU86&6 zqgchX},S$(3 oٔEqyCq6&*.Ϧd*%s;.e_Y5&:7C^Ycrp@\Z6ۇ%kM4*X䞓S4ﭪ-Dm:ޖSjE."svԤ39-̆# I_4qojp:?|rE8J5?3:e٨YimJAa9>k*5-=4F)2ڱ}mگ?Ԏ-[tӶ=аjƥ7& MoԖx^N5kp 4UΖ365Uj^BtYuqǽcmUPe ×Mcʼ>twgQ`@=0xgu qEQFwg9؆T`ΙL 7>Ի[nR` '6i]Y7x>ԫ-엽elW.@&hef>]NIVu,FP_O9ny&R^Ғqs#׬̭iLpp m^Z8 x˒AcY&IsASU8%y%i#)ҼiZj~SLJ%^4,ܱ"I vcG>Ϙ.XyqXe-ܕN Kpqcy\ܫZݫRs?}t~l{Ž X ~ L vc+l Nr]sR?Vf⛊RA:TMkczzWW+B:1 bLΣzUZiN% 9'ɿ9ܻ0㝆PԠ27!ygYOس'sXyG#5aӻiuJJQ0ӌ{:36ï_jTr@ |R9cɬn DTZhĻijǻ˳t4wXS^oΓs˕'9;KJwr>?5+W*F,kmvi 3S 6F v,USX1g (dMET(ۤr^1JC!9vS tt36֐7S20FY<6TkG S|:YxE+^UѮs8'L:lVJ1,60~脵Uv`1jV,t5ϯ@nv5HHiV`z)k"+s3#@+o.M*C-V]/֘fs|B֭3j4FۜŬj,&&Z|=:U2UKuSEwwpIQ*?>K06ԇ ϴ.3R+G~Éc{n*SE=z1tBS[|XSN6\کG#vlG%{{TPXUdCn~0ʱA]  9/9Ɔ(:YqQ/U>)e1-KewD_ 9x[k?/TWV5+*ө\'Æ9=fyL~oM5jv4!|Equ~_>WmABG5mɩ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ʱRv#qo? ZUAP\xahp,TUer#L7{Romő1V w֚e4G@;^u1Ur (CިmGSrYrM[TGvEwWg+ݗ2 RK\:sZ-)JTdf1guT/w)ؐIǺON~.<*Ts\/1 JHkTʩıRAl 6٪ sao׊i(v3FVSB ?9gew2R1V)(88n;=rmHyB}7L{q-8A0D϶ScpK 1s©?r|QӘN?](rSbz^7vswwv%p䳍>OጓWYǴia.jTG R? k갘*۸L 2i2xN:¦Zbm-uo:暌uԚwzNqנ̻tC|Xw( OsZq=~&}.|w@1L.xX=eSR2lO,o.8NW5qf-^}JTDդ=NzׇzL=+QPS t+8'o2TPU@l81>lܹ;r?ޛtݼ٪Ha>pHP!Q|UX{SK/nvsWu+kyuWzz]jWlUux4.y<ώ_W9~SSV2%wѬp4@wNֲ]׶q2~|onn8Ee||{0τ=d.q^".VH4kDUW 8aa,0B(8Q71l NMkfRS~YUӨ|@Z=KZ -t}i1=t{*цs {}oz93e~Хe{k׋:L?<ە{Ra8KO̎+ j mӔ.r׻:|CpNrە_V­2ɍ'+Ϧ ҺX*)rshp.EW)t>g\L6ۇ\"S3%®,9gUQ%i vqiGWYjq-Nm5Z.iҪ%i.YC-Lj+3.)&ުn3=ٞMkKH Qp2ziOE;۽ηP6F)t}Q,c1cs%7TYP N_8kpil&wcWUQ nk\3ڶ!6kM> @'9vLK~'Orjbx+g?\m3ɮ*܎S.܁os%qs8+l>>R/9ZRJd$4rv:V0 xsY/QoMWS O(9ݾ춥r-$$ӕr͠_Y'g r9|p'fiss[qTj]c>L&riҬԮ)cWǻ/MBt4j'讬kMQsϦ#[Te6 =m<5*SPͲ2G9t*Ec,vwbʅ41\&ڎ嵛ſ,X8sVsG [;~J哒GN}ν;Ē G$uzY۶,ӄWEBHlmm2awڦxӶn du֜^%mR%|sxWrJ٦%hTA6H՜m%kG9F@^g8bfDlzHԣ\r!e%3Сjc#s̺ZRoN}O{=~ z?VcJUU_S>ώ2Oĵ S>%un讷p =>)S,c;隆~Q.L-Bso}՗s{z Jj hu X :lQ]ʥ$ӟ|irtGxO?=7R&|VZ4I,esܲr6i;1nSXݣ,ڲO`kIsqfѠ,p~Ygսoc˝[,{.03M|SS:5*yܙã"l #VIo[5ġ 3ƭnN sLejJ뵯xO]3VmL}p?4-(ol: vjcʜ-I oX|U!,{ܤe,)dKl3,i^jrg/n׿%p)^4Sp/Yz;V[[ߔ-7 0B}3aدMÑ6éVvgqT-s2Ϧ=ڞSaŪ jЮn\xSSQKm4͍):n=w⋉q6G3Z}vP"]%^KznG/Itchp@nDҧarmfCYs\-q$}?I))zrw&}i4@UZ20`,,}e|7OaXI$s=B[[ք WW?C1c6umIP*v75fZ}Opy_J3RiX =]:t8mSތst/RmUa۬'J +N$Q4YGw?AîVqoaosjXLIQ1gTtjJ:%u?;0e= 1|4)Sd*S\Ao{q;-W4>rpr? raJK;mxY^d? Z.YK(9fEˣ; ,>%qߓՉ$ZCj Ky➓);}ecZꍺ-RF_NGxWTVMy}\qWӆSW/[e'83ҧT*gl_wsk~^r mv 0 kp:fR`JDŽ|=֒[TtEFڈʱf7<Crlw(Өj8ѧPlyWss$21F)lf]<2XjxcO\g2w*VHU`u] k⦁MonW+q J }@?ݪjFrx{5lx}[`@'3f\nCtRzVF`gmKc}щ)kOQ 43,r˫ Krx2QRc!9["VHQi*k%EmY&c*n!#,ŬyssRmf,I;>Ԛ 5p˟Q<9~f2voQ 9=lw'g*$*|> NJlS\sϠz?{/Iч4H1D_U's'ebʁ2?oٜ1l( Mrwy7ck-4(#츅 rF0}嘮jTuH)KN?fVƵ镦78hjէ LK*M`sŒ4UQd|#{N]9w!3'[p.Aޚxӫ^rۦoKªq JkqL2rHlc&n&:jꨴJ~ Ϥݻm̥]ɷ;Q=t#E}EjU E\?-s$U yo51KU$JUuVjRF*&iv zH7՟+ K= l(XNFrÐGD_cQGn ߇z}|7ᅯQMNDP B5ZL}ǩDŽ_3/&^/r姟_[P'Y]ݔ5;|'l] u|jp]=9zVy1Jځ&'>yWe:e@ u9mDE-ų5t?^>LnGlĀ $RLd1(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@pJv\t˓iyg7SK(BmvL`3O0۠\h`/o Q 5’I̹1pmآjZlWpA˗[k{vt4aH aPskƏfQp1rqt] W4!W/K3/%ʹx,h^qF^ v4<3 nZ.vTZ;7f{M:Oݜ=W4X6NN32>X{_@/pnVoeӧ Sg~ϝ]ճ.09= /흷{~Gnõ(->3>wS_8H#QKr|v#jT{sFVD`F6f ScIC+iC wPBT5 VP;!@q _>20 DFz=?Og#[xZ.]g.X~f=aŭK}}pt1ϟ̚z4i\O77~䜬t4\Ql2xHj2*5d"j1Jق_ᗉZ9ƥWAˆRlFt8 nx[{yػVFSYp7ݞnYo J}})[ڭZvm0Fg`Č 4} }~ӷ+f. d϶G_G[tQils1#B8V&!u3*%|M:X}'T}Jdr4ǩuQ{6+U7JXu Rucg< -w(7u=\\ ^ɥZε2͸@#f&vJB#3Nu^GEp׾ç7LX+hV c+ggWUf`;l:boUvU@ThVS5ܹ*mˀs'\u ^'[8GPR5Qb.S?C*wzle*|7VsqkS`厣.:;6dIBu]Cuː.|g$&C6$i=?VsIxv-Hkݎ?gJ(W2, Ͳ51ݥ'_r-۬Lui c!mW\֩6TcZJЭJiq2ҍ68!kymOpO/ܕ+s jdaHو$mT;8\Lk[Z۳-r25fuĬ](rO?i|2kE]^p%8q1UM5P9K\8թch0=vjFj2kW'mp"lqxط$~:^Ųqxˡ׌m|hq8Hh_^g󞎟|jbNNO3=1(@ci5y3xg*1)l'>~xuzY~VmڝFU⧌ٞ<2JXMc;~xjf:Sx{0gúd{ps>>6Q;wopJHl lv-1P h@wJ?RWӨʨ93[ySM>oo3Zhԝȃ m32^%Nm+Zwi.XpNHvPpK/!7>-%Bbq.\,)7< [U֢IHq=CI7qL=Og vYUoc)k9GbËPYݔb[j*p5RbcrO9k4JD#R?>Н. Ll݅A2Yj郐YiVqo C7%Z,|wlu.@n}1#h n>2&ʃ `n$JiTF[94F ҝoYv8sutu/O.QH,l))Jc̓]⢱)[U*mt빔ӉwzQlq=z:=:'sJyQ@,c4Σb+VejcrjI),OrӟqR4<cgG6e/̺s\ pNQʹ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MoU,)ƒmjLYlcaiJEb &nMǧ5(C&_w׵YۖIMَײNȯME1yIVʼnX.5J_gtGOwXjyx#-@#9]+y>Oe~wP֪r}L0N13adB*EqowVİFTA;wgw\G}t8?N܏o>=Y.j,붐^#lxo y,vUq$ņyaw5⹝0 Sfp/O^Kxqw7Hч?ao;5c;iM`8ec5l^ % ;hp64Vc?ۘ AcDtMk[T(kD'lrNd:>ŗ8\l[LUtffƯ3Neo71ۀ3굩VpVb}>|sW="nx# %l7D@:N|߽SnET8JyO/VcSS֬Q HNO%gg{x^E)/Ls;m^Y7ZgW^~_ghΕNq]l opۭMŻwx`;z<~dkO;m\\΂ S&dϻ3k(^4]s q_ZH.8m{$(Z7&7e%NY$q=]+./QF?_˖Nv)ay>Z,jz}@QZz0\2r? R,] aW[Xy >#xg컫feR'wyA˰qTx c^h7h&:NSSduc u)ZqT |ͯ]֤[#b9%jٽVWU`3HCgޚe ŁsްP2H؈,YQ`i} yV^!BN;,I.Um2F&n46Z)8 fkB}N߀VȖWmmnhjullT |TPD.4n׃58j;/iyv߅O=9.vt "U dgod;ER5(m<\iϩDU~ыFϻg8l זujlXxm50K:|eԟZb"˳/3.[8Տ_W=8Uܗc=LQ$CZ3_$nJG'XŪ.5N?TڣI mbS(~sz:Sܰ7̟ڮ'1NJ}GrY7R]SNO/\w~\qg(\U|㣜g5UHϤ鬪@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@eu1 yGK?–=W 4dvC뷤VvKWAHP[yzm3Mgd_QDj.v'֘laЦn Sp>M]SNϸZth 8||ARz@??t3{ `TdlTSURzR=k8k[zA{KcåOOe#uɻIi܅ v-@6ǶcnlTӧU@ 3|&=)s8}Tie '!Ix[Y >&ەuX5&n#"mMgǻQkNg$dji cˤ5+ttxZj';zfM bmӊ @df(H𝡀A;t)A2 d0702vD@;J#Q$41R|CmiO@2~2) h9Aq~'P*(oeyIv+LŎXgГ^ Ny%Y5kN?yOώˋN*Ogĵ\}{nZ.p\cٚɿw~߄Rjϔ`Nv|zgT 9ޓxw^'}QQtO9r} 9]Ot.\r࢛"J?%R{J51~m:n\ -B˫(Cl~DVg7VǍsq;2@ޅgR*AsLMQ4)X2L}?1,|O< ,XhF4+?._{.*TwnɎ И+ot+#g:׌"׷,EMI]}l,6._LFloM͖E4vѿVz3ÞrSsgKb wT}>UYю>Uy5WOVA:Oy{t>ɖ>Xu 6lr_O})57$v;2v;DxJvwŨ']jVGjuywN_<;OlZƂ`p Ogswֵptvn`NjabǰQ2o``oVQ2V ἴ9Vyd҅RCC{f1=V~EAly1,` 5gtukQbV%rA9cK=;ӡG ?kh\6WUfQ-@u}:}i,NW. i鯗χN'+4Q]j088`~(cN;Ϥ>RwK#4ٙ*Leæ9.ۖlKR|g eYH.ZU>9 ~'ՓJ!TE/`=y2uV%;Zjq?馮Kڙ׳vנ.ʥC6N[fӔ\Bʵet00˟x{Sodc񋊶hZD!뫞mGofk܇;`cV<8>~ 2Ս TUdu~ctһ"WB%Ds}$+T],A4Yv8Uv6<̥@6< X4]Mp1 DMQ \LU5 .=͠ Ֆ!|ẌҞv}i\]SU(i8oNcvkjvG-Yt !HFȪt<ѿ3YBwJ2Y#{x}=gFa}- ָ|}%m(e°;_lc#L6;(' BYΧ$Rs Pb0b.!; Zь]|a5r̞Ed@@R⒊MI n:LL񽥆c^#>u1͟:dpVW*#dOR||NVc}{R;#?>L$~ݫ͎jXQ@ tu?zwM;HtS^_EW6Z:|@ָ OFKg92wfό1ꭳOϜXK<5jkY*{Fϫ&ʱ; cO5uu,-jx*hLV;HnL.|'oWNAøΕuc9=>:r;/g^qJ;ᜩ˟gO,E$v%s`[\QgΕ|Y4kkԠK9䠖uldْs؂e>ve֭жTOè>6UpI.=*u-*'Պn_zrz<,_*P#.6W2x^鹜kxZ wdA%z|q1Sqp;aw^ʗmTN ~zSK R_Z7/*zjT%I31}31;=\ybk@kJ5mu 5y8ɞ躗.񛧳RPUY諃<~^<տ5jk!iٚknݵյҎ NY &V&Rq#T4r3i؂؃23ˣj*+(cHg#$ڴ3YG94qpLnuēwq;Yh(}\%7ripvs(drQI'lc|m坮zƹ*Xq^֙Xuf&ӐIٿ;c&/GKZӦ+Z#d+EL`c۳S vGvIJnܞLp>yZ>ۼP*GΛLOQ/em*q;$nqU]iYMoQo;swU1z`y&...S>P5NHJfu91)ԉ+J08mV&\:v'=ڪaP PdWG*w8a3{DU58E@EJWoANw1\7o/.q ipXc^9>g3ӝuWtNڜTj1x]uMDžΞ&ܭӎngtaz7ݙwoJYK@ Q=~e٬z{;~Ze+(]Z79U׏9ӿĕifևgp~|-ӤFN\d[( UN4Syަygyu;4ܜ#yp Yyɷ?Nx]5~nknj=n06>tj6,/ecc,*]$dns>_憴:jQ#l.˪[tLy)\`Er J.SˡB:jWMhv;sIo =wVN$,R<ǿ{<2%ZMI#,uzZ<Ո}|.;4ҸeM i,,ԘB$,{,G3i΢r *:Tc3MjDx!*F?|9Π0J!@ܞTݩ;zsgM*."Jt3]z%_ܖ)͇<:OY60*|D(9;(Ӻ.hI;bk`e$sQݻM#s㗤O)6moMB(=G0_ҼzuZԇKFI'$/pkvw+qP(%aoMQ4Ik8ZܳJU{[h_@R OBgiQ+ V(i=bImLSGq.]I#}9@NOgtq/.Yܼ9dR L[^q3m.|cO/S?5ƫ\m`3f៊Ζm1.Fi$ddyzmKq%@)zc 3˶ߜ}c.廊yQ?pzqܕ`]jI\χLX'aeDHt`}O^Re5\޳vOcy[g/un78m z֎I8NA9,ֲŀY<Ӄ6G(I^śAWFzj3Oyo \nU~J0a#c ̫;n/W*w*P'Y<{x~6-6*:4M4TUU`Vs1|>g\x_VD98;tueӸt(vmmZ.0>&i1]HsSn*Tk&lS ,c 6g:+J]$znGÈk:uVziҽJtV踩]JM=2n5R[gUli{_ K U)eYL ,|ϫ~̹2tw/VڕB-TuIYSÁN<:n "o zni2cI*#z} =nrp<[Z@?9p㟊Y'c L6%I xBWD'[}$/Õq/ڻϭQo4>O=/..zS]%WO̺SJ ͑V?%jȸCj퐯kI6mx޺mI yYL :Evն>9]cάs?5zW2U*6.|qveZi"Tpl3rA}驓jg=ǘ A}ZӞ{ѲͼZԜ8TN./-wkB(2#[NK|Bڒ"h)5xN1˖? Wr.ӿZXRDJ/-릚x~ziorA+13PtݗZ1po W])Fg9\+:;D)sFoa3ljv ]6L2 B)،;rEyyBqQW#71k<6j7J3~e{Ϯ;TuTAJvU׏ &G:<#)cAJRR0i?{Pժct~P`3$%N՗iU9?Tғ_^/UÂh7idisi]#^QHǧQ\"Ӥ4! [[xjOΟӫ 4j32./;9^驸ˮq׊tlwKn#ri}~ˎ|^#slY23/Qec5ͺ播 RXJaNN!R(i>G!/pH 5sPc璩ǖ]mZ^ M%Ӌ5 :BuyexDp7ㄕ)Rs=nX 'qxO o'rJ|Wݟ=|fqWp&Zl uc5vxUZt>4jHy^ں= |³5Q|4g(<OWŬJJzNX}>忰B[#ZLOs-Yuv7|4m}~ F@:LSN>3YEER1!_71=FuUk[֤UFB9H:㔾MgWeZm=5LS4mT\Qmwsg5~]%7ܰoG ;ȶ^F¥3f==i;CtZ%1n^,>Y:̲.*.Mbo7I.= }4.wz?*R H |OPs]\Yy Oz}Yb5jLg!]^K&۲v'Tļ͍wE>baC"˵KD N:8f/)Oc`Wi:Lc,&OR gq;MWˋp{_w:cvh&%X`Hs*i8'l :F?k5Υq_֩QEzo/=oOuNѕk(G }e{?/.#Lj3^p:4*޻f:Wu?ּ亱# x/u^ G*f8ei.<>Z4HiG`]Ժ&'%#IO9٧HUYcIFŵϫ#eVnu&ȣv%✶wݕ\Gf Fߛ7Y7=<|UNǛNY]W|Emю^-zy55ZZg7e)}%gNߋӧLde<` T#Ur<%\c6گWp7Q+h~ڑ#*|Lg~] / A-Cښ}9喣ZE–,rϳ59[asoMS֊@u#}5GWq:U}SH]1ޣvcatϺRcQ.zQU@`߮ZJZ_$do۹jF(< I;q&ݱ߄|YmCKKϋwL;9_ |G+[g}1oNV ZJkq]%jV :mjp l\؟_=JyybYXLkR z9=g.SnE zxB30ނkT~ miVm}j˭ $<Ե*k~g'>G~s#JTT0ʮ*< 1}黨UwL~J=/ e[: TAprpUu/<[uz1y^NᎥ|zl3=M~ԦXuD`F=;O zgSs֣ YLps^i7]R LSY>Λru{Z?fUG7qtk.Qc~OyI9nr$ [Rž;yuTj]rF2h[-+/4cJs6m6 $in@ .&}IO6LhyL9_Nri8d4QܗL33=Ύgb9u"23215[-]hI'1k-a:"`XNG m~xtʸE1eڑq&\&Tcf*mϻ+AY.w^Wb9z~?Vs*U1n~Rܡk 0<:)Mi}o_qS]nԧT ;t9ݖ6?Y'X>m畻wz)I;7*bkkIC_>my|w۩iٛkqu՝fn{8Iȸn'-Fl:|3=|݋%Z}jԠ F0}~ڝ1p-'t.Tlo+`3.8#iu/OgJV䋇`u2)y-ê'IW?3ܧω}l[sr)xXR>!qfŭ56#IXLDbe)Vf$m g qi!q:Vԥ`C23΅oN=qqRڵf/QYL$so}vvT_B9P2=ӝy&?a+ FAfw[eԾ#':m&i%U }1#lnd +7ǙlC,j㖜>D)^f*;ѭ;.}k.{׳p[MDS h|&4O/d^G'L2ͼk@7;.Zq *j(FRfĕӸu r5}d7\Jڞihy)`Gz^Zz|ZU Lj'3<.ۙUJ`smܵ-!;`NNuRu)fˍ[ǎSZ ),Eŭ4:q}^]eut8;3fNGn튈ΧeNpx8mS$XqE*l;Gls~)郡*Q-{)qWR]ؕ~^Lh{uRU$Xof3h:H%yxcI YEؖfE\4*䪂ܬ.f2؉t֙AwRC]@iʰ!.q.7{4v"]'z55)ˣ>USZz5}˛*O6kz4b|ë9]72Vpŏړnq,]Q!g=%秏eJu|Z\lNE~#A3>D%T#Ip&WncgO"shRViCxUeK¬Յ7]u%Z8kgV(+>KKcnZV#QÐ8Y2L&=OI*l=HŎ5FܮANuJٕIoDmJ22i>uPhFb;r%ֆͫ1vX:;<:a|qK |9K"W#qtEj4r'ޒ_ƶ`c}MF )@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q |O(CR1C|I{+<~uop>nd>'?ω_C("2Tқn[+YM%>˵@\P>N6gŶxLd^VXL놧FC~}'==Xef,.}98Z; u 'hmҀrM$F9bXc}Nv:;;hˌ.OgϳzT뮚~1z6 ҧGA8mc\^Ӽ5+&VY1m[5w/U-t+Ε|+c_~$]?sy/FQk}SƁSEtڞP_种]Q6h,O:Z{06W,n>c:@@¸%sJƓTa#>cWMcϡqJ+z1 |ڟy+I7ְU[kr) Jjowϣ}nj& QdzS<;Pj xm" [!w-r o/--_Σ5GDfTLjbR"-7xy+ˇ7To8w!V\LVe]-w*ֵqݸ;dr}Zuykʽ47;`38W{T=|_:㔾Xׄjr0<IrřvvY,eYٻ~)^+XxwKtM.w(o|t.FwuLN;g&xVr빟_֗?j_kjVn@ma4{K9uz9ty9|g@֦ˠasŵM^V`AܿZ]8L].yRf[^be@ӏ~Kqz \*T!glrzP`ޡr@'Lu&ܢ^nFibOWEޙ}s(n݃?=ynͨp4(t>fgg$#9W \t6A9+J9Y_oDc'r?tn{WZj2hIY>f2D`1 Q48m^6w2ڐrĻi)`6TgPCMDy-C]:ϻ:NWFO*N8#[b5Qk6'%Ϩoawvn-m8}~\׼EAX'(7<18vFXxT|~"sm$z#mEB@m=$Z}(ʊ XLzE =Dm%̜٤2ǡÕBi዁o5/fgDɇ.Z\ɶq#ϭDIuzdP<^(MceGSaM]-wٶBŸi[zUUL49e6nigv\56uD2$C}Y=v\.x-~ԷQ 嫜>ٗl4?A3^vjKluͩt~~k̦w/}U ۠3˷pt▴ntgOxsNٝ0,~qtRx;3}k]8}T`,ˣW},snʧJ6wOgVO=V9NߙDըȨU)V x3̭JsPK.ܽ)Y{ u#Xybcյ!֮}N˻ݥ.KS]:IVTUC29?&&Z8U!@٪[a2B_2b7Rv)`㊯I4)}`_ `'O,zeTIµ4 Y'^r{[ePHggMɦryZU 㷙Hհlӆ] bL&euA[ԧN^X2쫿ӽ8gJOpm-8e,zxd&p}#dԽeT晽ݥmP3f'qW̺I9̬N" #9qۥ^U8T3!8/K6E_Nv>_/Mk}7]m}T]%=rfq?7~IoKMtVN~wg)uÕ> jج$d G>UI j\YX*PpT=4xq59+^ysOS!wXO%m'##iZ@a͇_׆[T C*:*Ճt9&4ݪx;~BmϤrc6rMUށ^Ceܞ[M2 îM7 g9U*. ܍Euq@ը(#&_^MN7slK6r=OxWN&.y7H(9rzs}e&}󉄺<>*ҭ.p5(F,yOWWEo}A{vP^zWOE_<ѿiۀUf`8['Sm^·TzS*pI?6=Xf5J04}͚tڥۡN꒹SKZfXp[RaLe%~<>iIyt>SyK!r8\^tsJ] @Qv<~?T.xcm.@'|l 6iQ+[#u~rVWw-O *]jӮj⹝pպ.%a@$|g|& n@|c=~MY|,W96vSҼ'e\u-8vAO2=DoMOkKleqO?Oiw>#wr_Њ!zTޣ*SRI'-ב7@⹩z(T sg˽}|0}K8Z)=5MY8i6RHC!s>Ģ j ,ݱ÷u^@'Xg9\ ǡq;|/vy}V(> 8+}aiub+ܞZnR$J7X:P~2{Tt/h#~3\׹*FOM=si9F Nyr`H29pKN!Hмr>*xn]ϩogʸ\wYmj-AoեQHyjOc&Y~g}[~ˁX>mEp3}sT|IYWmL9p&.wZoV_&-u4ͪ50u靗+RU[? 2~:s[kd t:RV&qx.1/bxgQ*E@7Sфcq'ۇsRTc <3Y=9w'Ƭ\TZ)dcM)n]Ve[[vOMg\pTvƢj.Z(-߻V*陓kTұ* =3ɋ@81Z-ɇ7,_4nFtrnsYv͛J49lr52b.unF$ ˒ Nڮyҥ䯇o76i~W郁v Q2-$o}}OCW9Y,~eK lľN'|2ƙdkM P#/y9#^]X=fep<.] z_*_8ƑהZ\!EЫVv'e/)]G|<9K#+Fzy\E[6杽ZēW;d.9V(Kǻ̟nr.w}k'YgmvZ.(juӝOM#LL}mC\bԦRǞ ҈|okY:mȫSZEhgv I#v2KƚP@ 5)w\n]4Z$eRrqӞq UñH&X<ݛ #? yo%ř#.un3'4{cqgLsmjߎgiJ8>33o該[&Y%zc7:ݕB\d3\'I>պӞ]?IVKU;ېϗ>UjP'Ty.U\1 g` |^i扏w5/01rOqtm]kwZv z4ͨ+jN;T#&C:iکir|l\xw5 "; ';ԕbQҨ )fz0%|bSDR-ά56 Y߁flBPǴt~Z|-L\t=[Vr 2; P@:Q1lr&:UƤ9RrAgc[=->lY |3>;{6m 2r~"p\0 휁LaNv*D刄yfFv_|sq+B4`Q,3'zie|kTc%ޙTBl&)3\GB,s19سN>7mSMimďiɆָ]ī-kt8\0d тAfةS[j>I4i $n~b!H,5HV! gh}Nw:s+_jONxM˸GV맀';Zݏ1zo溸`lxpP"րmMX',zM7z}Ihi'sr v4:#U) wp'pϤ7}mIP depw9M]QYRC ;=4Fk_"V*Xu vQbuܮ:4fؑ7n;rRrv88ė8.o3fIngnC>7/gnr}KOn'Sַ@?)>9+r y "|)wN:tǡ9riZz*pAYR{a".9g3rvQY:<$}W ϰ WA$-)%.l[Zd/\t8fѢiSP>&nMwZҳZS*(aGg>W)~SWLn {ӇRz\T_џS&%]#eW}#}iϳUV|>˩5>\_GИw{U2%TsfxwV81\l1._dKQli絖EDMf lNǮ&.[n=Y@n$j`SI$p# lN>M^ ;.[WlLثִl}g<ɤ^.7/4/S$f;P\9ӡ "* .Zo o$;SFҞc2/tP݆q`bꤱ5ڂa=IlbvmPA35;<1uťMoYXBX?) ci%s`33HsܜcЧLRLo+PTFÝY>}R_VZTs v`/ gs=-8; TfgjK"L1_,E-x|ψ][=Wb˄Kk?V |-sda,+:4=V|֕B汫Utrwxkn3ד]Oَ"ܣ),2ǟϖ/D=[TgAub`4eKX k<`0ʹ^*m!s:cRŸJq:M˷ /zARGq\+ 8jd٫yNJQnt_u_Ϲ賙M_/c3ifSVͷf?P#C@urϋm,|<{9qH(TNl/{-8m]]6 mk'ױv,_)R±cGmJq:9hFp}gN]^N_]e_cӝ/7[;(AXFSD3sWǩӧa[$K)ҹ4gNN W{W(B?2|2LˋZ%,W FQCbId\kJ3PrOKY{]vZ[;cQ|&UGM_zڜs?u΅U#ł39g=8_gD5F|hE8 +8.՝Emp1zɍ۽kN]{J,ߦl<b4!nY\*u?f8vn.] zA.necXR?go򛙛K^̲T|sn]=EֆOHI;hF+oݛ^ӨAh\- B KF>1紗=jڵΊr.Og-Y]89$uIrהO@CgHkޙkb R֠[SW׻:qc PGN޿mqbꈳ@h3x4?➩ VwopREΎԬOuyfm-{NqzkTwM՟ Pдҋ^n]ř9ZDm![XxQmn)")y{H,Pڵ; jI5-F*}eC뼙W;ݳsiw{N`2~r#4r3Lgrn\,EW:w3uPg;ɊJ:]AkgD SiJsHl1R&!VJm57W"[kRܝ_<=S^%>*U't6Mnr}]Hps 99b3GTқYWƌWj{ޞ/Sϒa}{tl8ukfF֫N 5GW.{(=N\$o7}zx3Ǎz5]KI6<ڟ;zk/,g0^+~-buX}'ʝ|uPYV@=L|re r|*95WdR9S|+1;ڥ_GuQN1֪48;*i)mX{qFR.NgܴͫՇL2y1*WÆ_kړ_ϯjS[N5i'^!uM1|5F.6$yxd6Ǡ]+_/Үjꨬ@s.w 36W?O˶ǒemcGɝMѡ5kjsMHR.re5|,1rN$6kH~qx%mk঎2P|.)ٟ/cՓew_~ol-饺 QM3wR^7g"g,w w,.A>6ߞg9LGV޽ex͞9eHŀ}?|;ڼNd ɦY6 ~r\cO<˰U2`βZ[rr{ZpZVEQ'Q-9}-p J-j4<,ByǗSN'Cz᱐pzc9q߆)Qar$ӧTK zs5iu<тnH[$r%^]jmU < 0u fgj"XS97[zS?}:@##t=_Kʾ{J`9w֮2fc mL9gwlpfy;9㵓KMQzsǿ!csjO+QVU(S`]p<Ж}~ȾVtR:*S'%IreqW_N][¨]wJ7Qq}kOU/i-k@-]~xU't8e}9=46W0U3ɽ',{==>eBgrۊ+˺j6 7N>]&x5Wj@lN ֑:Nz7ch5)A#9eV7 f+xXTUT̶<{ZD#˞UG=Mܪ2RP?Ngm ,wʝҺ|72Tg,±(j,|S8ﳞY|;SW\}` X:itu([Nij}<(2\6]٥+ƢRbG3cq@Rym]vvqA] 74.ѵR!͢jS+u6c1Dqf}v)ωUN`Ljy.x%K%Q+ x*Ҡ7sz+mcjHZ}%ӠXL{ Gm>~_n-*-: 'Scv.Ğfv ]wjy2@UyOr-qVu(z^_OTg UKJOYUN@\@ujَrw3-N!PTGpukrp|7YJSJGJ X2o)+ˊi֬XX7S[7UϭG-_ū|Xg$mihY"a՗ܨ997q Ǹߥ,=`{5 Oz'obAO;ovrF+OS, 9ҿc^gnMrU6|g9O&9˫vRr|+<ε@B뺎ynSXiR V*˩ x]7nܛ O#wQ\#SiOa3Eŭ+jn)!t|F֯/K1Ӟy:V{Pj0gP2guqVɪʔ,M39g;WS@@@@@@@@@WWO)ه_SҙKu}quQZMN#btYg'5xCAT)ulx$2~7N<šxskJl5+ }oF9q&Zq9 YgwS5L&1^2; AONun֨ K?"O2'<ٳ@>cijO)n]8DR%{WZ `=gM:. \` AoԌ6WndAwьυINFVS6W?B#%9\\6LJpfZػcV bg,gs*WO>:a}fwHhna;{>ޝUY}9GV$4邢&,y7jm9wNwֶ dym9]^eMӃw>vz` k;ZDr[9N3.FvN3w) 'o:jng۰r:!Sy/Wz{ ifaձָtawg_TtnBV<>Ao]]?uwV }lqRV,<->xL毻.Q<>ۋZ8v;^jsoo?=Nƽn&n+yd 1Wnv!5} d;^]xYt`3ԶQˀr2'<]%RCd;GL< [.*Q:jFy%XL;U 9ƾ~JںTfRDyutaOWBk/a>W6ױRDΖG*F~+33/0zn;APթcnKVt*} tOx2o~vc\ U*t Pĺ_G[zO,k7- ҉P| 4gC,&{;sӃ[\i*HaNs)[G(6 OUӲ욈$81XQ%\\tg8o(ǗūO&k@諡:cwf)ÆQR%ZNtZq-v~-K2|)ܦ}ZWk^J`-2*Q'|jZX:Kɜe\u$k>j=v+c1ɞ{PRC پWiq 'g}}O^X2?yTkjBy1OS Fr,%zqIcpUw͏I^>iuSY"2UiKVqruh 5UrcVfN>iqG{3 銙\&돯]~}: R mS7>:y:,:hSl]$ޙmZߺUZfהƶr^|X]Jb&5wo8uՋtlQs̝Ե޷] !#ŝoq[;B[Y&UمӐ)ĉ'nSRMkljS)Y426r~F[-ۢj5ۂT;wh,Z wQi||ڼ2eڪvax6֒vt6lIc8=^m&F^4cL^f+3~sWuϩv[ XNIJ`pzΘ==>ۄL+Νu[X}e!Q_7{<튕[[IdhըkqTJK|'?:6]ZNS=G8Jgw>򉠚J?N9ru}vrfrRN[YQ Rr?$ri Zwj:\¾63{c;kikNc3-vy3kemƭx=^Ja?|"7]Nׄ>-nũčz:y.=L=WMezj.}StoiZ~n>m_E]W-\tڊSC5-Uz(UFy]\m>FILe0N#|Xk=E6)}Ssap*0R@sM=F*nNMh (#Ŭi*&WV]T']TzЯE+R#"M[ϦN)^ZJ*ݳȍO=w|}q/L\Ѱ9 8v]<}}%N3+=N-uNF p7ʪy5yg>;wӧ/+>ۅpZkF48E}f>&w;{W]Npo)vw$21]$L5v3(rvGmCGWL%Ο +9/0+qڝjw9nM'ODҪqkU,j'՛>)+VR-UX椓$}#]~pkH\9pIFڴ9b9s◗MN=ggײͧձBVT3}|իiִN?qyn%j>E[ :N6Rɨ)̏Nk߱cM5f~W #M|$g̎ʨX1*ds1.>JZ{)2Hlzf,jTp#>ciz29==vtcٹZ]9cڥ֚m•4josKŬ2@SiwSt-Qܩ{&q@Fl`'L/w+*t.<_7kbCx%>ulYꢥRX)%@8Kt҂U@/pz|=75XRXc.}{Q]S9mf :GMPm h*n`I8 ?#JTp9lfRveP)HjCngMEV MOH+Ez:MA;bJ5L%L?I%V& $㐗h[燍#sͧޏ|ǟYfӆgmZKL (i.ڻbTiEk B6G(u)maHR'R Ζa:2|S}?>ϝ pxZ5jTN9(}+OV%s{+9zĒuUrχ7ü?ǎn;c.ތ2{ĉn}=q=z; ޷ʙJMNFO}#ϕy{Jnk@ |ęd[O;Vơ+٧T 885 =[iz0oר`T_5qolt1.r,QjxN<}f'Foc)re:/nҫjr ݞ9k]{PXTe*9:]|Uާ[ޟ;tg~^eK7 ,q>u\Wj"q-薚ULS'R?NV+IRPqN9;8^Wp5'=D:SJs7 ץ7k=lH& T:.69=_nXW ۼ}ߴ `WK 9saW^h Ч"kym˻(*වY=3.2tt7_L]&INn Y[M]_=~BFc4@pܪlەRMG NS=vLdt֗.. mc놺h&xu{q,B $OTW- Gc;sFzoYlgٖ?NSWQNB<>8'H=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VEAIԠtϊg6E(3 }X-Y5~aStH#c5 (U4*H;scѭ*U1GPgԙ5:.jIPnvF%#o{>&͟16֥xk8ާEATccnax?/O̫J7H43 $||Oojc/CZˏSMux2~Zy{dVDhm5!F=ޜ0eWXxiڛsld>Oԝut֨j9r`~SZ£)]Εt'wW*ωn)rĂF,WIϕ\Xx-}_T8wYqN9rV ÏRA9l?3\ea~ρ[pZ|3RZ4HE]}oVcv{RHNQ#$YtϕT{5;tZϲJvփ|Q 8+%WSB,fgڨ8Ƒd62=:Z03z:9o˝OsCz, ^^Wĩw&r|]ڽWme[Ni0͉ƙvɿ Fj#k?XN%L3)J^7DԻg?]㥍 Ke%} Iji3wkAșƋr%!g//_Bo|X)V W9#iqg{-_1:tQvՕn:`00:3tq̿N]A8ouìuYqq}mm>ޞ;NoϠ@@@@ލwVu9V}YԻ-Tn"n O}-c.P6<3WMYEF0^_ݽZ?aO.N1AKz];oTcFl_[9Y%1A]LJ}f{+Sn،}jɫ]^R`c.-㎝!wJSI!3-ųQ4Fs6rԨ|q(ltjW!y~3yhƸI]"ː96mz yDMdZ,H#KdJU2̆nҋT`TdSZAQ鰘iZ-]G=OM˩u.7ap ##y\:W5jYO&8eZuIík$sjF'z.^~V.jm FcgOwVK|K+1g=LtX&M{;p鿨ϧ:Us6սp# xLOjir4T=<9,ϪlBwBp$z=&U 0F0@Owkq0H wl9n$T}72ӤiB5TP$iRuRUkJØb[S)qq iԾ~֝\w v;)eڹ]D>X3f:po=}; zU{NT])8ÞS̏-ytnj3='zxL1 HSR.3/. 5O蕕[<=oMq %H퍮Watꦶ<tradq-V[EwR}yˉ66F;96*pjY:ؒ'W \Ut-gU*QbaY2|?_}vAsZЭ1P [sWbu]U)Ba}-{UU) Ofg|0\2ٔ\6jU[ %p町}\c'oT9W8xs$KT8riÌnG im)1:q<S@:|I.]ؔ#G:ﳬR\w$ۤB(=71"}nA\s╮5 ٘iV:k9Mv:\15 tg}'2e>gPm,zdܖ7VA\ 8î=xݥ:t\ !^Yx.ܛwԎ˜|umyo@X) r}anAPsWVe4Rq'wI"CX.);Lm;`q_,ߕbL;g"jGUpހR~Z>uxm*I֥6(C+9VOTpY׈Aq~Jw^ ~]KOXXu%{=[TJ$y%߇}8HmojB(m9ݹ}wF-% U;,ej6ǐf"Y~)JA˖Y&XǖU@U5QzǻKk+3Ϩ 9` g~Oo6]J4C.r.S^ r~sGtrCXRԻ}*a^CO>vk/pr/b2"޷STj#^'L/}%]{߬m@(BǬ>),WO@xV^O\zMwUJW;d8Jzɷ<֩*'|qaY Tr>Q&]т00suUM! ǧ1NQ-`^,3lo?Y۵+wJtR=\q}L8uJQ193ric#Hh<]]x\sʓgJuqXeumԩ~=;6gnR%˕˶3_[Jcԃ/Mެq;M#WTARKzz,KA* [!RgNc{X)=sW^K5@w Sr~'\k]ԺsRdݟ $XޥǤ\8ufzЭ[MZDdrgޛ,:yLձ'v eNq1n1Qk# m<\f\P !.*Z't*S3 wh(2n3g{fTn"=5e@tn72gUC/3!\c} xyID~~7ߩw7[_Ou>h)[TM@Ι1[tZv^V  ?ה~ۃ}K'hZ0׽\3]l>Cu[i_<kT<.Y~ffr~GzH3jAZvjTјz9Sm^:j)SF&ewVM@78?t78^۟mUovzdO`}~? ަN[~oÏ'uZԏV<NM}) mu,=F}9,6_73Tok֝\yI>sUC7enDs7[ nShPM:2H Ss)ܦtpHJٟ'Z:WT# e_ڟzi2$Lm|Å6pVUY a5;L-*}/IRrޱkk8;tPӧZ9*]9 #Ω4;} g) -C'.7UeVF0>3Z{u݊.0rfZQXLCwZpVp݇9ekuM9"y3.?ꚫ+*v9<{QALbrI[Ι4,5KB.勇Uh>l{7vi{S[1[T@Wӥ7~;vcڄfQnr3zɯg<;!o?7kw` $2>&qM1d']C/LR۳ "^Z9;3ZDZBn_MJTc35}Jz8G-8>''IW LX{px`kW|?sڏh8sMJgz?Mn\/&ϸz4^59y&5N^ 3=\r,gV g;b oN:S8,f]q 4x d;xVps z,>߅yMM:6|E]t@{9;㓔ƥBX~=7)>MwF_kApFQi UU1XoU w6GZ e~sWܭ8kU;`//9t6>T'uUW`3pLmAuS=xݨ Q]zr3O6g,r&4.[tTUF?ygwgzWwR\v 33j19'oCbhv\c"]+zuĘ2fJ>jѺ`bb£T)yLruqF͐s?=sM*q.j8 1 p*fe_:{$u6RP@yL^/.>-M6F^NbJ6rFv?)\z{kċ7/YYub5e-U{YŎڌ;wS;.)ws ][04HJYbm̻bTF'26Tu낹|%xq+TԠk }\J/2X@v~tR 7\xxOWL+dlNdJI̻50mc߸X_]wm?)=<1ʸwCK\ƀ=I#2xOvW$I3nj5 :'ss nKfc~S-Y ! Kh( c-RG,wQnAqHFSɭZ> N{t, 9137Mk wR;aw$X-ESS,)m,z tP1[v-QFY[z.9^3% eMyFi-AHAs))Pܣ KPu i:{|LmoP%1NUUQSԽpnM$fIc;(-Ft֛zҚY~9+}.8` cb636enܾϻ5[?St$0M[.111,w4չ.*ˍlb)iFcBhtY\}yox~-kq<-@=6=.c\FYNpR 6 9[npˋ]{jҷ|,=[gz.ZYΡXlf K~*}cpsQj.-Ӟz{[D.\kyuR bM ּ}2wkM;Va38M,#~!ڎê- N O-XGŧLqxyoS`6oF=)QVqjnXi!qǖj~LquZΗroEN v aןӯ)T!ܸ qcN8l`ϧĮ.)Oldޜ3߉BxӶ9m dRiXvK"( IArLX٥^"*Zwh\ʨfwǬ:cj^hא]+7rNclw[mN0)9QcY[Fj-Ir;oGP\db1QQxNI9f̙^Xvę"r[+iUCx[4a˧w ɻeتη3PH#+yyϵLK, Ϟ/WCĞ]4>|[ϟP=\t18R6I Ǵ8f(T*P LVrJ̴W=Z驰d>"K,rA:< ׹NS>26W:};2Iz¨G?}?OO&^<Ji;Snh?x'OOa|cϗR= :' Xoυ9].x~2WԸC抽_P@򟞙{=},;M jwX`/>@uOld-eN~\3s&LӁ6џێiRA9 YF z.sRE|S0Zuypw=9xeҙVff9@Hv艛STUa73Zۤ1 l-IOMYc . 3}jr: t9*}d,7zNyPwYq'uWgqfpgh;3ǚڑTP9Ƥϳϕ}7;|qڗNXw Ypg?AkO\Zշ UFL2:OxMKSj@@@@@@@@@@@@@@89M  )ĮiVmr?|C StH]2U?A? n+ּj޽EDF}LgsӼwgOuVQMLciv=*]lS;u/%>~$V*،t9,ĜzhuK[dJ-Jvʱ2:6FB'8ȳ+RԯL>pd[{JQN@Ϝ&Nj\5VT`3'֙E^A06Juh5ѣ8Glst;Log75fI6$w49ݛȹkn+Zc9zI{uh1LRή/v6S-msԋzt-xeoO9廦S9.#3d geۻ+ݵ;Nt'mZdR4F2S1dᶹ͹=7#J Nw&{'ݳ3G&k]}i; ̟u)w '3DaDjjKɈ禝FUF@eFpz37w{w8W 8usT `jM1{RN&ꤿSStuu٭')SK#^%3'9gl;ǎ8XlXrrp!S`2<`TVOܮ2zUqꚒ=x3kˑPx)__y}=xIiq bw*6GF`ߩ2;:jU{-U5"%O>}I>Gy&<2 gӽ{)xVA:AsLSgy;}%Zφza0!Aϖ_3tYx~qhYRhcRM4V=w;]kGwZj;ytO(*WbHs kopu<o8a;=֌:';3q/MnF>C4sri9nQjy>2etwop7/6 -tx]SΔm;ۜ\WRY]%EcX;N]\&x\So}iY騠~|~_)oifF f^]>{UֹH]gBTEr|+>I6ލ:yfJ!Ԁ#IklI" %S O67jU},t~sSJ@@B ,ɨ:c )ï6e%tx{J#cô|d̛f׋%2\r8>u=5KRzn(*1^))okYݢ;"V  A؈=gH\j6>^͇u-ӻxVPu?|J?wQp:ϧN[c;8O@@@@@)TrTm8KtݕUc}ƙ%.C[o쮩z޳.Wo /{CT+\ӭ4oUߵ=^8;.9f){Kؚ>zԪRVVqV_ /9ˣYe]Mef4ܭ<,\oq~Nc6sʯ]#;y1-#K":,:Ěnbj3 :J3NH:RV^U=g,yE崝2NW4j$<ƶ=.`8ۜ̍s.n*dnW^S lM\mU|U$d&|;auZ`$sRALvWk P9=0\Y{D]$&bʓ--ZqMG*q31KUFQt˝yr®3IZqǒhV7B0~k˖,\Y:Ъp`IݎZHcIQcqy4N);5⚜qBĻs )ԥsSQ^8cSKQ܏Ic=GJ i>0E{{0I֧~MMGIHܓ/ゆi/SqjVp\UV-y3{YBz+Xf׈WV]QS.9 =fo>JQN,Ⱦ-T)0sho| s91Kӷ+e(,Nu7o};w(tSBMF):{Cyp8}ŕ+JC)gߛ=^3s>WTzز I |u sQzA@$doCp/5]Vڢb5;U>׋K7?So/dSih+s5!B#ZmڏO\N.I#gNNwcU']lӆ 07w/.<H\"T.IOLOz;3^Ӌ.j鲨o><)w4)N2\=[}:NNgʼnf9'rg܈BnPm( ?-3r򸸬Ƴ9q4j!H~Jw~d2r֖aw^v5l>ȟ[7s-Zm3aI]4[*ٙ9z zIq=r@忚|O}[d]ʻu[,w;6Im̮Ya[T'|jwgNqNٲ5o6Ag8o=X֞b} !HB 9=1‹+qVo.a=G I$Z5sT+xq}4^xur{k'|JSI _3p=7>qj"ˢ#9[ݼ|*OJ6(@ m+!r )##p1 B2MAEY67^jz@O͗=ޓpˎ_F_kOvs[=+(R`rϋ=NS.Yۢ -5 Oq`|Ϲ͑ M]]1&?SxvpЫQS9 ]_;kq^T_O֕Պ IS͕wvTEp$YާK,ims۲*PczoBckn TPNa0n?rt(=vJ J5~g$xvko.wY\p%Vml,|I(OOyZRn!Zi.s]iָZSd"kj}n5_w>þ"[{7v}J>֯՜IX|u{;Q¸5FDCREuOy.zy߳6%V=ڂ#Q|3zމjW%}Ը{TZ( H,xW_-. ta*.̤Eg wƾ,|yileqpύzerC=Bw:=}_eR[/jJԡqhKYU=3Oweeф :ơߡ" $f F#;϶@p+b)TΌc>ٞ?Q}Rex{@[[J0b=OpëqQR=BM~^ovP@]NC ~XuOf]y۫U×%ϯ3QJ6a=`jvj˜+!QI=HWէgɜ+3L'>.sɪ-ȶ+է8m1Þ<|mlz ۾]T u+'~|q.?6|/ȪϨlly_7;ecu?/wĸyOV) d P1$𓰅bR9 d KF'PLg?3ʚzklGr9ާΝ|dۉvmU9?=?vޜ.}5p?u=v?Z/V Nlrϼڳ9z?.?;SH\X%z˾92Cپⵁ'Y'㚯z=G<{}/hPcHS I#3N-ߪQtGr{kG6֡|:\r NE 9߯սk2x\eVN-ܶ+6Ѷ,2 JGV1 ,KtE;zZ]9>rM8זꆮNq<5﷿uuï:[.|{<5x}FJt rM[۲_~.i5풄GLχ|o)](N|Hh 2wjv= $Aݍ(rOYջn7 nd2Q&RC)s P;N3ujeкT f.]l)A?0=dy(-P_3˔޴-6 뼲V6:$%.& 5JlƖ3+,WHU{~]~̉kzU'/h?Vt@  {T2xٱI1ndsF3k*Jx*à#]F *ybDiX07UZ66!{9̳sz5]m'ߨSl)geLZ:Ek{jhbHAV*pg3Z&df'+oVoI:I:Eƴթc88|[cʑIw9GM.ۿՔaNf>">mzWIrtQnxbI<{z0{^'] 'K ;#21@rs{Jˎg7ƽ*$lvNyc^;Sdp˧}'p,kJsnGFVf`$ v7;=q5p ^Y|$gM$6PE%88OS;>\g,3k[XaTfk7Y}Y qjtлמ`|zy_<+"ߐr|W? 3g`ch 3,Sϒ9 tj's"Wc 􀀁009 ܡ# wudB6GjgR"M/[pMV9:Gg鰳KZqKw6>!5Ǜ>=yΫ3rĐN?~w/67Q=V|[ѼV,zjtTM Lj|yvysCv;gg9uTMs="tj4i4Ag˗S[ೖYmTn0gIcuN==dIekp)>GD RI\`cpuZ;Ě\sӓQ~RU ,4Nޫ,ԚNy6ꉦIv+G`9xY+QNi9!OϻGŚ^.' _7iPT|<ޣz)}jcpPy~Xߘ5A܀@7=lڲ@fr4GHL dM-ՈG0q5YE&!R(E1rVz`Vdj.)zb֤\U+X>{{C3YwM)9a3V,܂rO-|]|#QN$wqZyg\3tƜj6py~;4.kyƏ v>1ڣ9-eMJ?RCqPN㔸PRYMܕmWAqkY'^D4׎\h9"fX C[GSS ]:M˧LjZ˂uu%"">3j;ʾ#J4 r#GMuxzFtiVZaGݚh,FS}C?7Y]ݎJPW/HG]ǕVԤHNSlzHoVHUvkOEsqWM"`ffyawQGb=zdrk?N=V{=oT 5jsT-k~|S2|}w oNS`JDc2>.i:xݭf%WV_O?rWuz[Rݓ)pH,Z~3kd9Tژ=:Tݨ ksc?5Umr#8AMKcq}_B|G;̺_^wJm'Y2u[_x嚑+5*w'+筬^NKs31/v6~'>)tu 272Xɹ\K:1kf8i^Y\LQj%NNze%ʡ)H>Ie(J `dtl@@@@@@@@@@@@@@@@@@@@@@@@@@@@ލg2UpDc2f޷Ɗ7 _}3~\~l>b;Uƿ @6ozNڱ|9(Qip=33Vt\)M߻ZSUdz3WgQJg_I S^QzaOwǡS.\ӎJb>}.>.jIs\?gi]&up=+śj/xu!9^ڥŠ.rTsWJ7|5tUX]~ss#":T *rՀƯu^q*R P$io[_ڛazL3:Kcj.*=j^wc,S1$uoO+9xiS:ngxX5GrqsaJ8V>.<_5upcÆ3U@@@@@@*jH46aPq#k%(J8R9XSsO[k}uAS?9ޖz^-nW¸澧ޫ˟ܮ ah[sI]o5>ѻ[d rI~ZJoM g)uliSiw%zs<Ϊ|QJKBhdzK2b3Ui9Ċ y=~XNSc @@@@@B)f o6>׺i)!r .1wbF)@@@@ܰ,`yI2i_T$ F]9;-7M9.I.:"}ڝ%vl>Sҡ=m t牥ޕ8ndKTƟsuMHH8)Bui:9(ҫUbmw[QK!Öl)!12f^J?ig M5))Qݵ;]y_z:=|w|*q baOk(Q̓>ig.SJw=@Fvj}?_Ϋ;&sz 'Utc/Aie{eL;"v ڞ{ORiͽ=(C6/4&wӓR ۇ\f=~)_MjDM9rg~R>Ti8sJ9`'a4돥P[M+۸a29dsLgӸ]d:F`ԜN[gmW#YQJ[g*Z2_=c~'5e܊*\STQ5B[F+" ui~qhݜTRFgZF5(nwLTLiyj-)MM<)dokۥiÝ؄ Y坿9G V*G8ӯ?gڙt,F@(;fkxiz&npH?\fg 덷v[pΣ 4ޖz+gNi}7ü$[Jܥ"Zf|rSos15.ڗֵfGr 3Oy>+wWv\RSz/OW8>7[q|}oOb(Sb|Jz89kg:T>_R0VgY6-bϤ f t(p Β9(SҧUB ` 3'=۶R/rLX)_>#dk'8~'._&I@Em}.7}Ґ 6ǟKϤ @@@@@89Vv# <:ZMM@1~S)6}R[+s0Sf ]Ư:om,ӭj.g.O -z=33 bjbwN1͢$YDL3e5T ^d_I0ޒϋlLfw8E:n0r;(ly&0 4Q `s$AviE[=%݀o=>9c4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@d@QnƊ-h3i>\O.]/>y9{{ڴTwF횺cHVn6c܍ej!,z[,sn[#9 s3IT fNri;8tlΪw ԝG)Ȭ;Y;F́4 \cxΚ:y8VAE '1VM SlZOݜ%uc~gtOO ^q o*_#q_tcfS//̩Zƥ.l}u6mZm@)2FN:2Nb/]<]u67xYn/cHLp7EW1$8Lހ *J:8\n]3H'SSuXhz/>ϣɇ?S< )[iW"4@@@@@@@@@@@@@fDe ݞ~C{3fv s~"|> ^#ix'*~=}[qsoNoj..tyO_ zoL=*UƯ\?9t5\Cϧ~qtnhܱmlHo;plk5j'm&|F96M-K}P-50A'_M󒯗q>f`IhkaXRjkMʣPva#K!HR-Z41 IS\:U*@Xm@oSsw\DBz;zYN1FJ|a=~J%LZUNb2jU ̈A%NFR 6b3l!噩jzxT r v2,RzjB1YlJPLj#x3ҫR0Mp #IVۺTl34c kzE8EkvB׊ܭ\"}t}nXv9Mx: >"}rM6)$3SmݭBTTy:#wQFIzTnUIw&PfF*wI1j]D7 tf9I`+j]$2hOM[LY:jA]:M¡IFt,T2Lkea CtBGBڳPj~ 9p喠F1NyyZc^EkR{>lniаASbi`76V]=nyڭV4>G=GMEnk:㎞|nkjV4._,|s7pԚZ5X=F`&mk; o˴qyrIwYo}D5Q%pmCE5Q_z03n3^w$VoQW^E0?.K>Ccϗ1S}긐6Fs*c;F J,rn Mij׈ 3yg/}رvVZ N/1w@Fl,emU~T~)SџNu1zyYtS]RjU^~ X)mm_"nO&]&.8DPrq'/ڰ{YݑQi |ABy]4'+VװzVJ1S*d+l~Rp+pT#?G\7hh:mQ 9e1k j*Kj&@N}Lm_NTB$2ao/A:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@S2qJ:hb˶@\lv#lbf["_ڿ|қUuQ|,>elnZK/YQs oݞ)Suf#N|2O.,׌duKZe8 QqT>3FV~\YEf;/vT[ d[FP9ghvN_$m޶rftִ<3:-`a4ȵ4UVd D'tF0v5n+gA ޶'/U#@Tl9]ıFQ) ymEyoyxWU[n`'+,֘pIx,GNv=-Ww9?kı{/C;5*GIƑb\2q["YoC0Vn)*v^l1/#\ܜ ;z*3KS.3k~3_ W‰ 3{?MҚ3BvB@ .V֝ED +C8a}9}X~fM/pW!Jrz{̧S |QDZph ?NXl:t9-[oxuDIO xolaϞbcT]L|_.c'QijR3'i7݆ rh;'UM5sgʧemŮ>J\i$q è$Ϲ|?IN%J9z_g

cϩ?NB{Zl9HD~sɵQQFGz|.1=NB68}!#HRpsgsNpNa'f ,kp<~ A-^?{O/OoP'Q1zFe,[wP#QR$фCOUo/5nU;T7+Ke7Ε](=oG|k'ג\{FQLxzn'9;ƜZ yBӜbSldvOh, 4 ̺wĕ[cޕPSަ3N;27"ekSˡrNS6P$ zs(S9myi7U5cQ.)3w{rijN<]'LqvngC=3aPyrsY1QU=i,5=~ }cɳdGVJj<@g}VRuӫCG ~M~)ۮ8V>˭K:W˞G[o-\&41mX G6UZy+ĩ]NJc \'='8]o.ȝM?OΖ:3Fw7(C}ͥM;k)̷&I;w-/lp_YΗ\<.50syӧ-mvs( }(;dϯey}kwqm3>ц{Vv_j22OÖ;법!ӃS{b,%R˧bXo1tm6[j4om%+eQAm븡;5[Q;rxWɬcj0Ebpe1_ٕDt`>s_6N $9!&%s9 Ds sR{RU hW^ofx=n,{OqZ(\_R Uo7yվޙÿ4Ng;Tb ;tap%B(ޑG|yTJvy#ى_$t֝2ymL3FWNk{Jd,w|ɭV0zeC(7% @&vԉKL`~yײge~bfMH9M<&MmY?(eWV@0E'NO & vޭpvYw9_5K!XNmj}?MGxvR]J*40,<:~Xz2M\kZpQOL9ϻ5-*Pz xҡEUƖ>=.x+a῵> PN4ozgzup ulw.ʍk 3#y9W*- )5q&Yt֐tW,)Uqg;cj2:d I ,֠Te8B;~Mټc ҇y5us{Ai^)%%Y =ޏOvͪp-EkvuV2{Y=ƽo @8I jws+xG2dsL\2EޢY]J 5]0[J=^08$Y1Iʼ|n-~{{Rg}7]׎G:{Z N"ѨFAb%O{ߗi8ss2Kw]ibQ> G9T!9#8Ȟ_7tw=? a=rWogY2cuU eG7_/I´V3'}V7 9ItCr :5b֔i!lFtHU#>OS.gm"*nL8YWa)i! #&|]2"u Ǜgz.8۬_G.\>s\%[ uUvL]&fYUP,&}fڳ93riRӬMsuܽ+6{5h2L|uz/_:Q9nh <款vhf1=7oVn?9:59bn]pŨ2륽F3/S?&"VT{~=Ũܵ5JmkE)RWmMJ>6yK&sbVV K=Q$69PI42"/p 7bso a8T?9mQ'Qīwfta]rJfZ lU Ȗe6]LmYXohsMAʏ רp1*zh{4s6jAV6;H:|iRvv+SF1yaw.%WaUl~\eLo)SE]RqotQmO'>͏:>'H1f# ;fŊ'l6Q[LČcm.a_03wTZXt#VK#947,pXم|U'G< 5I M-[kjzSˎJ;LmymVB -NwryPT.}c3;KW#mH̵*|}ދ3պSx bȻ?3g=Lw2b54c^ &YSA0Dz$Kk]kh`4?[Ԥ*.9OSn -?FWN]\rrJ˫[zN]sfwRm#EЀ7F6ݷN,Wpb/_^tPswn]"*QG"y|U3f;zYt]:ZVnH\>^ wV\3qyj`*Zd/9P刱DTF`G̬iNP2a3ۛ_զĠ{&d-9e˷1yL匩Բ u̸_\E !HB;kKDu +#*@_xj;yV^"@ԔsC0TRFݎzl76ƣ)k3Hr@ ga1U:F:טFp9FђIjܴ`&mqQD泓3(^6 &Q'bHGY }M폗YɦM,Di|cֆ$;7E-yO5"@\e"ɥ \^:X/$`9U*[,ryb}N y>?pZOt'Vk+ZW'5#zg9X:`q u *B('vIIf*ȒxitַqČMC ;KQ2q4[4 \{=ݱQɒÊA9;f#:Tž~z=.sfSir6 #8p㕟{19Lȳc~(KNyZJx *LG,Dƛ=izx`C2K䤾#qO*O= NņHY?) =Igדs+ݏ- oBxO o.2߰v[y[, =eoM4wNLJSJX36I }-w8vrǜ-2 VrlңRZ'F䎑r-->!U9 >^ )qw8]4;j/=Xq6656d nK{fӁ_s^j)2;PFqj'XJ UO=<8CulmWc}WF›J).r{Ţ)%mnO)fy=G_q?/9VW>+f]odUA8Y]J,0DKk BmI,M[[Mt.1QHΐƦYu7xO.)M]nmN:Z? Ag¸nJL.Ѻ0E{7mGK NƏ&-%VB"fq7LۤFD+pXgj(w1˺=3[T$k!HϤzi/fF.)ٔjym:OF59gxLƾʓD \.\%METXCpsz{=`0AȍDfA#,VJDMopIz| MJNe1iWKT3TI#?9t-Ӫ 7qzGkJ4+f IV,2sr;Ne"t)R|J}IAJR͌]E:q9⎞*e]cwĵ6Ɩ*:w5F>vg]*ܻ?-xU}%[Iۡ.N7S|s|vՎԝ3?]>~wMkÓwoѩQ> Ä׺}J(ܒ%pݩ9Mk2z3Mտgo%^n88os[% ?_ 6H&[:F2wϲiwmyn>27slj9'"49c$@<ăw̡D .M; jO;x=Dg5\zI;]=?g82w69|O[yOͮl~iՐ2OX9ל>V$bٝ1U6O@6t-ohbsI6yEml5r_C{&szMmҐ!3SE-K;Zƶe~DHZ8L/~US=fUZ⮯;gl99g+u{ˬuU~Mtm\l%ZoO}>2";U;|Nu'ͯS3U>ş?X<:zr&uWlxOm<\-E4`gb7?^S;^6g {2Ӎ{)US[cL]/Sy|S6=,YH=\-dZ6TE<SDf`*]?7cZ2FIӗRʌ$c;j B!bFAlv]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Td`JAa_Tq>Rz-ey{g纸p8͸3xﺘ`ϯ@r=fb%VN$SXAͺTL^Cy6# e#ȣ:#7v#.\fE1Q2c?bB'x䍒i -V*&?6XTOHjWf$K]NFAǤigMl5(D7"͒#&At/3Ss○n;'D| z,D#o9d֛\JE0n"b2j*6 N1synJ c~SCzj3U+I1c547Nޚ/ UO\O.klQ#*w-) ;UUZ9µZ8}1RVA9kH.)R}oIzG}ȎRKgm[Rձ iUBUG"=;唘{N+ºh`!2t%1J]֧eo;gL轙ǾM֡V*t-^}='*ͤxJެ=9f?ٗi;NusQyo3 +iZvRWQ3gI' BnfurIJr&sXv4އG^$d~i5N2ޅqFyrq^[Ȑsu@.]<:?6jx+KbqZ㏺^/^%[(}6n߼+5jwbIoi8ŷg§xD*?X|f'͗V[SU6Goו6\ԸmuX~~Z̭f, '|S֙60yc}Ӧe&2O WujЌcG*2Ts66z+n)HމJ fsu&InL'qPitΜ 1͆WOB!RsbP/vjJG(]^δçڞW9O^ZE5kԦ9۩y|z^j&xA<ҹM)*>ރXP[{g[=Ws]iW0FХX&A6:Vʵ"q9Wwh5Qj0ST)S(Sόt3:n9w 63]I; jSc1[ Ɩ x'f׸^C1t½SIM\v])f|Iqg}}LM6hʀ<|ZӨr`:`Nv]V/*\G ~!5ަZ6_w|Ej9<~ѝ,u?q;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vZѹoNz\J Sm$tvW--K,;QGlEjLJyB#^pfDNTmް-0glM'B3cmc"Vmeus$RrAt f: uVBa[QĪ ֚˥/ˏ'usIf m?յ& ߦR\N1iFlWf{=7[,2 \!' b~+qB9#?0; Ѩ)`9I2p hamc=ײ@%:6T- Ma%XRC\H#3S-<XF>䝶K{<^~˰&v֞A# Ha\ydO麜3'N<zOC 6W*ub 6]$g:1$9T2AyE+ a$blk(B)! P o J!QL\{~yih>jWR+S 4 4zew.]WeRֺٞtQۨσ~^spS!rs#3Gyp) 1˩u8ޕC:='}n<>d [j`g.2IӮSSNIOw@mhnYswϷg;W"TߗHH'%Dڪ`ԬvLY4 ˆmL6څur2r"2@FOf59l|&-J9̮!ҸL ÓQgmmD1owJ,{= ~Dx@ LRtr94Dʕ$Ailz?^?xIW2ΦbMvXW6 m]*\'ǾQkZ%j@QwEz[s Z{f^cI> P#!~rc.ҺL6vWUޣ|Oc0|zkI4B*iVqO+K3&5&t-<|3qx*+.?/傔ٻ'Z?eus6r;TRf7OVXy^-hDž/O.X<}<|B Icsi?O[{8@0a|M# }H?OOφrWy@' ?Tp| ,p{},TNj~g3:gڽ=>u(W4O7q2q#gIɸ mW٭]fKRvxnV L:r*4u9#5*Dx6-Wg匽2%þ$șc;3eFiِ A-A+> W}Q侒kn tǫ:^|8Rh>SsJŽ\#2sMbsϩ0_m' ˭|:oCD 48i+XR ![2ei @NF?gcD#s 6 1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ꭥElNd$2e5G?I~gz/|;~ч[>a'h) sO2τx3XvqwYxT`iTuSME|jPq SVi<GGKO2UgטM-uUGl@GO\VW|+ 0rR$TiӪ|9X6䩕3ZTTp]|me]R ~#ޚd'3U%קu c-M֝ 1찛.m%tiʷ29VقS5Wʃ˝&Wh]['bw Nuμpku]=:s'|` }VΒ~i*EP[쫱yOwWN 6@iN͟|Yb8u?.R*Ҧ,cp0edSQ+Lp>ށKG*?&\ C JXZ6y~S;Y67Iq-?%ڵмvT,M y=>V)Wrtx%*Cz ^_U7f1?C+(hPw阬NȮ؂:zH\#f7WÌd'Yk~ϾG/>),۷ }@qf/I20g/Ncj#|7?S~yۼqQQ1̞ۼjNIyYt4Xϫ1.Ϧb(sɲ f fELeEEBETɟVMew<&R9|ηZu4tzW 66'ad+ fiѬԛRdLjMRplF/qnq̪ӣd $-mtp^=ngn{M~Y&z۬V >p7@LHcgaX${6|RgYn5*ɐ}e9,x}]J|2qQVLx i,~.2S^ɸuBGK&<ZݨY\F9zfYeԾ\-م@ NonYaCSa237ɟN{)#Q6$n&..t2ՑLGI4㲮\8jyyFTƯԺ7V*:]H8m|1L)luU2zۗ 047 JԝjsLa ʕ;fad>. J ?Hjj}J4%7z>~Lo)S8ruQxCp]_P`? _)7$?K-\؀=f+Q.YIKh㡧׿xՑ7uRNqiVxmbUtT% ]r#5i"-[!m1i;ujኰ ,Efe!94D;izG8ғ4$zH4MippN4{o i]3#QJ@4} +ˏ,Y) q|vsoŠ*_Q.IOY5MߠsשpC+_M!9R= {SCj0|y}VVvѝ(f%`Wm_"7rB9>[jpNT6lx?*OKD]WT0|39~2׻Vjj/zd~kw.)>۰m'[m=A9ɍTkP|[I*!$vX֢+o$fճ)SY 7nvi[4$cÀ8?$IbUM4*q봼\kSJ⦒I;]ej۲d73+FeNv2ԜE{0r|̽yn!j!U,9LnW>O¯R1ʂ =~m]4qFT4gx,}wb}gli ;@@@@ޖ`u-%i*;?ݔ j0Πv|̽Vs-Izr j}|70@? AbG(Hd#2q 6` d@)B H*C6;Ex]- j"-XxN~Xiw \ZN|%Th'3ͭkMEn5Zjbt3}=.wxLH4OsJ/5}LhVT SqŋbSI9\ZF6kA\Jme,#j#srI !zBZիum RHS!d0M`f*햦 tT6ܾPx9+RƫM[& ?îY!=6HML 2zJΜh2S'SbEKg;?ez:Fo-Ft F-1uIe*@lII#[V%ooq[n)?vyL5|i$;ɥb 8Qz-쩶Q{tۨ#ui__?>_5_ߖgųئ 703v\6R Pu̱MYN>[.˓,&EX-3V&+(}&6ܛKuE02靥Ƶb u>\79qjeЅBap9?,9J?+va2̤|L.-/ԻrM(7~o%y8:䃜c.{.xßW] 1[ru^ybnFw>煭q!r? __-',rrq܉h!R:n!d8uS5tO*zOh*S%1ιjw6օI#mI^kNgLs[WTU?,wuAP-cN7,Dm}x rتrFq1k>o uJUuKk|aÜY'6?YrQr1y-0tKMRoEvTcj8'e z|mA-Gu{\!v>%'7L7?"E6ШN7kpwO`-lCVo`^Y]ew=oA`6]\^zXc#"`S Zg_Q-=zBSm826tgqz@B)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}+e)MZh埜TPoUVTo8|3ũwYum逸嶟3xD̅-泂`m!Uc Ɍ7_YQ%6bB/S|Ps8?9*N)k-`袢fvbVÄ<SY<# kx"JjΥp9In3wtϋaio*DP ;&p v;^AR1n$kjt2kEɑv@fFv~-ooEګ6daLs}Legk'0f$r&~3Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9qՊd0̍t?YϩcqccW ժ =mop 1ϓs:'L.r;sܺ<Uʝ|#9b+0#Quj 7cLWmr˱C>xJR 9@-R:e xᅰoR:E߻ُnˆ.s8nժ)(3r^efV!|4>ÆѮ릲qN3({QgJ\нXy\q,~UnMKaxAƓ>j[{(oMy<%*jvTK3ynPUҚ#/Mtӏ[)"Sl&w@*yҪa~YRSmY+㔚;=8 XPAYed9+X2MN5)[VN:miVAbXa.Aܖf"Cskq .G1ዔ^.Y<)OE53QdZkgj=FSws &PE4?M}vb~̺V9Y]_G}ͪ-E%T_dQ>祚9%kjYii|L}|  27%G f PB-PN qI+r/Sm*W|I:J-S㊽pu.+;T%M Y>z󘖻e%sjڠNqoId\&>B A!U*mOK'j xhfd`Y,m 1.L9JԚ!73] fL`c2^ʕQjzglfw=9᝴/8;tz*Z ˨vrU-m~c:bshI1*:1UR$#pwUV22qsM3{Ohc[UG7.</%kF'b tbSnLiR t1Q)qKWHEox_k1:ۉ#KH$sOeۜjЧY[+GQuQwYTSfl"6f#}"g[|˴7{o,#ջvU.͜zI\ww9=Oи 6 j FvaC*s\-g,6=v}ȏdKjI:Sf vgv 9ǻ:Z;^}.$L厦$} $k @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O{s1~9ïyOS?K^ egŇ~[V!by8O A6ghM%E|tgf|/Qᖞn4\s6; ]KV/p~GYeʼ=7^}ays_cvp6}7|*ZөVTBgnc+Z.tJ:t䝹K8{`˻wt`9"be\y`35r^@#q:ɧ65`xaZYPr0Dus*uTu]9e:q(פԬ\v:42w 6p/1\pL.beD4Hv=K2y]EVj*]>6;9 O )}ިEZ,qe9AuSLt]{Bmilԛy삥AU7;6\TbqϫjZӈᔂ9RdaV'wHsHa }@ EY㷓(O7'qϯ39/6_+C= w;A+qj4Ww:[i7X]:tu:5k"Mjt~{[}NZVfjT I IJ;kNVqRwYXgBcY8㹧z.48_Ve@o'7*N=fёaq[d~DAE)i2ygMÖUcdMj$6)c*Tpuà=%o5j5EgmXH c9s"@'w%^mrh5Hʼ]x:nԺ|qvj-Mk:4egjyqnvy4[:q\|-}_Wv\*&rw`ac6bؐǎ*Ł,A+)ALm`NX,ظzkyc#OSL6qvV'v$J:[&cc-0@v􊳻fA:j:TMez9nkv8 g۾YVb;V՗-Տ_/6}N3h%`6Q8L7bv;e6 WrHǤܝٷSjQZvvr&.u՝7vԹUrW I@u=V*=N6&k^I v8M$do@\c f$h:V\^*AGU>1Nڛ}S^~lj !HBIL@p^4酦[gSx~|_i= oB% |qzMni-G7 ^Ɲ$ijtʹȫeyK+ WV5 @RОޝS,޶Tzu`|:W^0H}?EʟIK|n6NK[RisaK\nߧ8qn4jQU@=1﯑~KW }ǔpx}ҡS{S_+-JWss@Rq5W!N_"G+dzN33;.]U&2O?C阼RVRs&g)w]F5WSG󜷧KIq179*6\CnM3r  .*F6&+O @3qg6zZWCG0bfw {d=~}Lxeqv=a|q=ڣ}9#O#'rORceVllyʛeibT]Fvߟͭ㌍Bn\ ,z׻@ĝN0ON3;L;79#beF{v(}yAqu8u :`I-tJ ЧG!1o> y#fr瞻9ݱjw4O q^bmIP'x@pHWy u ).{JKeOƹו5(w~Ys{mD xHqI4y{siן v{zK8*ǘ6pjWd햪@.n22L\sxbGAX,2匮s) }cޝ hTΥ n 3zϿҟ+:dTm-:gL{GMBU7*]]NNKSy<3u%v*J,qLg{Clu%y-78 Wk b@ ~+ q:bp 0W$6ֽ1Yʜ H|CdtQP9 M 9ةqx0,v̚UkPQVS%{Tsts;zu;@}ΗJt*Ө@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g+5Cw O{Y^uf>nRw>c[*T]nWb1GqO1+ ~M) }zLpׇ՜\iooO;] Ö'''γ˗vi 8%0f ΚP*$*c4?ژF}pq5ö|$w-9[ jl1Ͻ==/Oz{ػs'&}55k#ߔ%zqsJv$6Jg_|]2e{U`\G_|vg0EN2@B{Fyn7A_獎6_cl-FvO_UMiUC@}p&2z_JOlzƛG] "D*'ju]2VNQSowIUz b]5Ǔ[ӬV rc.Ӫ-$ݹsIl{=JͅPH=zk{-#9# >.zWΒt>j/ ?I}8ǎͬ'F2[KdzV8zvSZSwmvz:.ڮ3\^-JZANwy!Q^gNqipe m@k05@j0k(@@@@@@@@@@@@@@@@@@@@@@fZޝ;ed g-xvY*T}t龣Y,EkK֣:ԍO\S>kxێ/7uU =Qܰ M8}%zj[pv ,ckMS8gyJ |yݚg+u]5IbWJTl+z@"nPH-ʏ\LmۡGSA=!-VqM2r~PJ6UQ5uMEm_LN`7sc&Xhs^E'\g c?qL&w=ygٔb,s2+n~]e=OgNNulժ]91$3j9 ^uNV3p8Gө\*~N|g2ZcFɭ8Ze (}s).:Gv؝}3Ϗhpkpxqqpw1|zuLjzIr@mƓLrKV'Y\mnYLl3y5#Nt r"c{T|, 3ɭ^PmMZ7;O|r9)^f~GP30dpʸx v\:@V2sO: PzsQJm'оڜ웇ӯ^^+e:}ڜk8bwv#[۞rOuv԰r mA̒Obg&e/x]4Lgi\*U4StI(PfMD6iy6Wa!*JY rxjSۇ ˞gzOşewd\f  Cu̳[:+xgztЪdlOKmu/>wr~3z%Ur-ranx9#9)"Ba iϖ˅ neQ*|cs3!GP`0_EjoӽLOĸ[ʣsѝ9۵9 {^ w&btޟӘdY 鞳U4fq9]ij4ďtSlPxpJ8 gVeIvjl~[ˣkdd3ioi#p78n_ug㖨K 3v2f#ۛjCM s3Ӈ/?+7rn(N yS'Lu>Z}ngZUH*WWg?O=STх8>ezuw֕|$| 1owQ;זyɭ5{*wZZK'c%p弧7vޯёN7:LUʗR[Z&s4gc:G jjd sqim.%b#dF q9%r`7B@'o4ԸZE]AQr<C2wÞ[ɟYH灑hؒglyy njT{z~Yby)jYq}Iiw7>.}}v>jwTVBHo8Q/K S#k'#˦25i:ԟiÓĸuЄO@==/M}ˋ7'v6z_j0t"3* 'uz>I-їtezLƽ-;aSq ˜  :Ӱ}W?:svaP8w'>nyW*\`@Γ)VU>!ښ٨#ms}Ir/Rj\6]L1tgy;7U}Z݀V'@GE./UICtn{8翮-3}>A_ʤɝxsk> SzJϏ?9s=yt_>95zom}Z!;bK\F¨oϋӛoj'^ X qmZuex]Diε';cTNFFX5Zq9ܔn^.YN9 #SC1_Y,Mj࣠MMIgvKMwOuoV;܂.XY;8xI.z~NvnJ/FluO_G[wl~F;A+=$ܲ׹퍭QmK]Ne2GNnUkn.WJ(FϘ1')y3sn!pۗb}zs}Lx٦i=p5~oz6^w5*1g;c5SAKjBNk1WW\||ؕxڐI {Gzv{.7`Ѥ1 ˽[Kj8 C /kʻ}_8!9I{b+΁iZ VYc|5NV+6ut.+v3;zqr۹x 15| u|JAY>]o/lz |&Djs5zzBom8W Q]kj0i$9$cYQDYTCq? bfZ,i.c' Ξ lISz$j`t=19.2Hk=O3ze~t[ ԈzK$i> WLpvmE&l`UAN57/j:uZ0?1* M'̇zKi欺!ΦzmՄM!/F,sޓi]Α*uƓlmD"E^?wx- 0'ݞK1r׳O2 ^OO.xgrsp8s1>bˌ[#p}w|nOLgl!;%.Ryz&HRNNGKq.Ww6&U>0951ۛU崀A#xʹBI!?e~eyIm͉B[\Cng3>?sJWƕWAtoei٢ |w -hLyS_-Gx5Y2: )5 iwZNM7)}Vxc x5z1UC0!,3b'zaͯEQ#^>jEO.TzZ9IQB0FftJئ}f;nb8<{*Zvo8z^;QH1=gxoB9)oJߚ}1òpgޣS=$.* >zF| *''33h6BFv*\0kI+6-Qzj혫ulꚔ 7"q9i_ kSWڄ #mmVaBO|W}/=XTĕ%2pF}n[矙dҝJiuWC:œUCl|m+t-nu l7yn>j\1U[HJ:URx}|6  87OYgepFFsي.DӚ}K>U:ᰤ9téMʃpJТtUuV :9eF>&.Mj-jj\?c~Ug.RPzxfr˒r=hk6@GW-zp៘[ TPބm< oxqC{+F^;5-hUw]v}y.;' ԍꅛz]|OKw*}Bֵ.[E!}Lp-ZT4끁>Sɗ/jiI<,ܦ:ЧCnI`v:G.[$8꺐-p@J\6[t鶖we` .橝LϓJf 9[ʞ?k5^+)P nu+(1.VN^ef: sJ@m.")l*sɌc;!XVrNg0]96@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2R/SնߗWBK 7.]MY)GLG9rݗY tfLKt:E!*Þ$ +]X @aȒycޟ'tf\qKVtSV^7N甿yI>T[:ϝf3f?c$k:Uimg.ˌw뭵:oERX( Zso[M7baŹOG x+/ut*(y~:8aCJs!jnQÎ`L5Jk.>˧u>Vdt,(= S޳]l֜'9IJ{]DKu6:6µgѝ,B 7'j||>WjpġpN1] Ye"eӲ9|M-E0w]zw9Sg &Q4mHigsz{{*Z5#cVL=y]kq- ¡ZW~gof-6H|[IQ*8l̛Xh2IzKӕū4pfH>πSZuJvj_sI')ӯ<Ӌ=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I;O;n(mIl+G*{P}n1")HҢ")f$LKtv]Q_5?-/橢x:nS_N?Y=#h.so}lmx鸪TgB';ϫ|92Bz/~M>莹Mw) dwhmW=[mv7`j}I4:Z>>_gf+=z!HUܣ:Zx۷ H3@ o0VJ8) fn[2+zܝUuk;rWwr?KԻyYvX꠷Að>|# U54TY=O/<E/R 9L,z $?N^|W;cpNo].W01q֯+{AuոԶQѪ(КvOߚTGGV/08ѕx)I ׬՛F1I#8tԛfw=-&;(o>8O3rf-$M#y@B 1hw'u3׹xH<&J;GuByC*u3$NhRj((Ȧ`|ά}{;c՞ 7iS\g}KNo/\܉d"Tp^}a{r4ש4}mjH<{Zw,xbiɦ eoUgu9Wt}_FYH ~skZU:v$Kwv2ڥCQrˁv,{}NtxJ~st9[NT;6F r˨`?$$w02F b J,%܃|y[YcSE[s?aHE z^?JHޡ1|+FF+^=%p2奴kLfއ㻪/뵉d.5j\21Zg N}\-aO[ur˻QRxj/ۏMAYHwn*݊Agܛb姎㽯E},=CK'>tڪϫ8m2 Imn5!2RJAstt+ vg(粕8a:v1vtBY@bz{'R|Rۇ\UZc۪O hOg㜲rFn.>/jjVC'7=ͮ.4Ox˗@?>x{Z:1癙6jm֑}׋>)S[o1SHh-sBU1F Xl`A7uMtP`}fEN mLrO3:ɮbJ8# w{!uQ+7v#"3V3_[2?QTJi9I>5ӫR//7yG:5njQ{+TgܥzzzW+gދ\2d9uLn3)cq?WdS<K-_.|@@@v1wjP=GL\}<32CdǗ}ٮqqӏ=2D zjT:I445UZ2Y^ײKFꑪ^u3'(i. S`쫅JJ-w`3J:eڗO!onrSn!jhTB8LO'~}N[Ee@Ʈk7k, D5M,L4nue+ '֗oTkzu^kXue˵RDSvVnd]OO? <ŕ[})='9x#zne#1:K(|`z^m٫X#ϥ*uQ?Vlݩ,ZںZt:eYvƅ B `̜PB1]j19/ɧ[vS=oiLCΕ{OV9$AN}skl1Y2xU;2x-9ˡĀ 8)@@@@3 FpyTBJF;$jtM^/Ј›@HV#[O  X *:TէMֲhd*1݅xfb"G>0&r=>3CZThTukTVgvI'ͼ a+ IL;xt7>̃O秘m12[ odPH>uM-LkMVC|UHPS-=띲=AlKnqPZdEXi۟ ?$Qϔ t8Gg︻~L~{T[8:4&ux8e.-;ɛe]>m~։󘬛{W©ZWn*! LBiż,Pz+^ % nbiUgEQծOu$|Eޒދ`kUuM=auc>go;won.*9+^nc (@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@u֨^rQNbƥN궍`g.x RQBPQ˅'Ѫےd=a;s^ջ+@[gէO6}I_G_^Im-EJzƝjWHm:x+-nA9%gc+U~RkRޠ^Sg1~tʾT9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`9 k0J`J$ 3:N>zcrCr3W9=:ϴEO˒dL+vxV F@~LS)||k;*V֛ժܑb>qTO{N@Չs/tMJTt3WH#IjR##:'(:sgMi:G0=Z|ەO T'-@r9~íSOK|V}]Q,0>NC׻Fn!wN(ב(߲xrq{PnXMa/8Tx{ЩLiwDm/+2˯uo:9S8pT0!Üf8 J#Ș=׍^{ǩ7-eSBq߰3Ǟe*J ;4@@@@@/}[*h(93]['KkevUsnQө񿗒^?Wi-U)N_A'VSo%ľG`,ަ jE]w(|Gޝ%NQb) Y[k}D T:io(SR"3Rq6Q&BQ"I+pq8Fy[jVT#:BbMJ}=}AkqyJ ko\;#Zuqޕ J%Mny4emT\Wu*$'sWB"/}?3Se0irG!7]ݙ, ^WT>TƷӧN Im-~W?POy~'O1޻J 5rNvxcx .on)Qekӝ=,36oΪJήҦ/ yJS6قP/"P.A+<{뽔f{npX$CmŭLq^OQwKM4\/S~_g9:M:DщcU){oMxPkđB]Cxğ5h>jwiuoy5[x^)/[tVIՀPtN54Tx=vJ޳ܳ(.-+[6ԩ)e؃Plo!R*I}wHGVؖҳcQwR5,zſgBT4,#J /Yp;0CǺ ioW~?RF Aoi[2]ںEW[lqu|g;ڬZI]:?=X<&U{P'3_ZF#H%>7it .wm(ӦK|ξW;vC/K%gVZl;duQw*ϳ[v+VvcuX"ގds_I7GNZ}D(өY9get*UI#/rG鼺xYë8zZnPl'\&8G,Y]ҝ:t?3sTS*+˟';-cN=ѯ[SM\.f2{;ϕQeN; 1.vH}陕MC \rP#2N+Nz>kcª%d9Fc?֞ly5z[QrIW!p4:xe]?fo2qxF-S 7:4yӝֱτ.we;/NasRޘS:\#Wǽy^yvqz zu4Y۳nkVk\d_ڭ*l Ȁ1i+[;;kbr m#SSsUSwT Ckiqo{[Bc{7mMWVμR_N+fWmFT*/׳Zs}\9z&/_j>EU'Ѽj:OS7&4b*TllIF_g_1^}q{VLiTogbͽG;σ_NW.\v6KЍBb5.Ӧ9J5KzT#XUdE1+x]R噃*%rU𯕼I)\nPi99a擖㷥oGMbyi8]:viϼ)4Iqt)e,q8uZNh 9$ےk,LqөPuaxqX;re91Žպ]҇)r4츭q|BC_|K;'v!M">˨aBk8ѯ P)V"?ftߺiOUA/$Oj]d<9P?'ƿvo~-.(ӧt\>v-MջY1nqe]MiX =_:SVEVB9|SJH@@øU~KY-[;7xU_UQ]S=26՞lqǂ} gѫJ=ZLj]Pg/S:QxeYn)#I.N3|(1):+I@hAKԷΜhVN+>c>11W>xqGc6uF\7Za4$7@wNn.*\8J/G6sׇYӔώӱvmMZ*B@( $ޟЍmMx>^6 ^wíd݋}qZ&Pj$/Nioڠ jکkOp"-ε,ƃj O7ٛǫK4Ńzj|N)QQjԷMޒkt$CZ\b 24*=ӥ>\$tZ8L@> ?fgjU*TJd̀_:m:5,2x53 M mK+3 v%6S?W'^{?3?ϲrnxE' p>3Z)1S*}F'#J$xWfک9q:ٽƪvcY){ZdCRaƪYmG>)&n'z^Nqj趵I8Eʢf1Gb7.}1z׍zkOk ^PAY3guNWOhgf^햭Jg*~ޯѷ8ޮWҏ`QTneQmUeoxv;q.p^1f)Y2Ȉկ:47o';8EDK 8^qe;O8ЗTMJzݕiGO^I;T +FcYCiP⮦Ɖv.ж T!dV3\џafK{Z s7ݜW>KvrmLp3yLL#w$th8fLҶQ^<+o|ӝ^Z4pNs˯)*#4Q4GA-cc%Wprrku ګ“=?9_ i2vbie8f\`\LlQBYMUlJ@Ϥ-cr)4e֡ xfKO+Mӧgs/qGwzdc1rjb,P`Ix,~s85:)Uw9-^vDL8I̸nVh5 y=ן'=K\:i筶4Qt'ß1-۳}!Wɝ,m)fgJomMCmm`ʮ$IjVl[l=.y퉽<$n#$W3qisH9xJPFZt߼r } ZRNOTjSDlXKZX  n#3jȵ_2Tq;:5S1gA6&ju,856U$jS:՛' >V?ʥEmxY?hoϦ6nrMdR{\>4hӾ=i q[)skY]Y(9Q(dq4B ulW|zB1zVCXB^p(h[ %߰0pjpa _6.Φq_K<[T.,*Y:DYelrUƾ~SW؜26"{PΒOfJ臊 *2#i綅 [.Nmg)U ڰ([Ir^u<(]~\KzEw Mg~NJj> sM\ s{]5al,z|q9K׹CMt *&[f6i PrrXY}wEQp)j(|6p(իŧ_><|IVcLP%`$'}hcv]pFu)ūNw9ԘyY6uh4tl}I-~?Ԛ5gN4'w||}E|5ޭyEAÓdvJKuWorjx^cFӇZ9*WDŽϚy-;LG>njpfPoIsެcK;zSjDp|8ԛW\m|I$~Q'rs.GkoX$:9C>_n<>:V;ԓ./RƋATn?Vq:wv)9CnYEI*%gţPfl3cIi["_s]>[ۨ FNd'QM!Wc;DsqQFEwN |kY֖ը ˚DžN>;߶?s?ֺҪjjjPzy2ىp]uiΕ/(Ə/-ASTOd-,t `s,[?ϝq wl+p]ft%Otgp^5Z" ;r9*qWU%׍M8-u|FFvx)25{pDXT齨U) tm[. FjjddK.TW5Q_5weiӦ@ ԁ \b W?vf< 9dGfYkq_;埪W􏮱9I3B3T]zGF86\Nω#S`CXn+sMJ@#$WL5Ј<~5!F v7NnwbP9zLVAqBc|-ڎ"뚏&m*j${tePOCTeyIrjFNCifNr}fJJjHzM"6&t;hѵ*:u1nUsM v',ڶd7ASZo Փ:RcO ~N{׶&-'$y^VwWC:oZ)]0_ar2iҕE5sX-w+Tgޘ[Ll$ؑgKgH2MRe6R7R@҈|1.jss#@eEW:jVS-uj2*-#.IjiA$ *]3NMyՅ8*D9IMيgKx8qZUkL L.&prXKtK}Osj`K`d yq,4|>9FTewKV5 #B˭unƥo>q֤V N7 ~}b/ѿ "; ^ӥz)ur$EH3nTkP+Bk|l˭ϗkz\?C6<4:j1ձm>=G'l=DYWݘ\%;wBl*AaR󞉜22P####J!VFVQHW%>lzߣUkEgOY+2/h hӖy$QUR\sQ/cãoDgTO݀ݸ|<:f42s8llo:*i/Ɔ/y;^PƠv ΊϫWD5OЭJ{{ŮqM2p\]|WϫOIמD5l*TRjgmPs4v?Y/ysasI6z.ng/i#%K#=CPO[ o]QhFk[BKfq*t骣y v]ә3ѫmYISuNM)v~Ϸ)5:*}p7Q]ZչHrFOy~ʤ nuBڵ¯yZmogO'SŹ^_W)خfrѵZ]BЀ,{4֣o9{oOi4Qf_ڦj^ۄ-ed$G?ZcMRQ>uX՛ycA] )rҝk> @SMouteKᾛ.LP7jG7ڼ%O''9ݞ[4RwH0_O|SϟL-v-+ԶLr}l_UvTy|={]~n圯E7b]\ /Îwf-{F3>pqf3ӎ:^j.ǻ0T #Lqg,/cEQn+wj0bufz㦺];vJT\z9&f\㔼t$ܶf)rP7rUAq=Γd+J Bjj&Uĸa]k,~YkOY VȨ[Nq7u+wfmcc z]ϱ֡G ];`gogGP-Z Al|5$6ԋoJ5JJTSu?j;O mW2Tdz_Q# ls Nfc[gP6 gpvsN覐ȯd[U]ohi յkQ*B`i_v>F_sqfIι\.CqƠUCmZ4>MټZ~XhT6WLԮ.9si_kL7S1o=po^*013 k8Q'O}j-jw/B֪t*r]Px|ˮY֓N-Zh7u5sk9ܭY"׵fuk[ZڵrVX fmZtޝ.:ben#GyAt dx} )gθcE#^VtTeSFy'^F-$'aor'+[ltcb6|%bvqfvʤK`;K»td>n6[Q3ѯI$ gK5o0rC|[8f視R^|oV2uaur˒OLf,\OYPB"`bKvIr F/L齹ŞIҳSu+ʞ=|xۯ2 $g9߭✫\J-OJں`9魶G'IJӹM. _ASl@21rڽJxm]I.ٗF4S7!42Fѱo2#6]x.gs.K4olһAbJ [թd~,tZE:T`4,yfTǨf1rSfݦ/Q\aʢb hp=p&97*ѳM . N5@6Q˩FͰEQq \$*v w~EK۪)Q.?Q?/fw5w92m-;:HmϵKc}:whѴ(+\nG)QVz@ap:oSHFǩQ՛8<s<u$sy¡5ʥG#ԘUu]v@wVULzHϹZ˂wtM@f8$ޚ$ƿK:%-e-OË-l +\<}|,WiJUqjcvmT_R4ɹ6=↺Ly4:CTOս~JiTA@<'+EٿFWO5wL9/*FJhY4Տ®ʴQٽlM&օGi TSζ+J-ODȞזk _ \b爕F `Y@S}iJP$yw@m¯.-U~f±l.z;;ޒlt494/jJ f@d>&?u҃2(iZcM>w+N/;B9NUuN[)ϭq_$-Q\)8Muo3y:ۅUNzTV?cĘooju/-sqp*(tjt_8m7N ֨Ĩ ow3=EJ 's &/T67̕_vS^ٖuiȩ u pMSO~ڳ{@LH}_'^C'n*֯N#LG?"=/2^^.W# i-/nu #hueie˧>x}Ƣ3|:\MqNH^Z֥I[AwB7[YfRW2Q`p 5<^:j)F`A )bI I' _]%7MA.Q] ɖ<{7oJjORT\ *:[¯|ڧ,/^Oi8%zwtQlZ{6<뵕_GܥfQumQ .A#lYxw-{7߼N6U4a.uk J?wzo ,Υ9<:S @3"ᴞ}ٛ&n' fyfvb>jcn;Sî NDll8RcJ1ε7UMjJa >e_sYy59JᨈܗSso_4sN,z]܄ž'W9RMz`+$dh^uaS9Q?k9Oa[u4ըڙZt*]-r]+Lͫ4|JTX "5xg ^Ԯi|<k*\^!k#>mt_N#yOYAqF_J4Ss|&jj=PIҊ@|{Äӝp?G{[+7z.2JYg,c֦U>JisUi_ikGGvHE-¶j3tkԟv[p¾؟55jR&GRݝ<|3sot'NްԎSɧ]D $Yf6N}^' sQ˂ϔ ^:\%#vyGVCzkEXv G}O֝3÷{݌zhqLe0Im$u֋ψu&V9ouĐ5N9gqDD9M.W 2| bkwI4L? Mo^ϕvڙ_0 .8 %ÿ2fƂ~SS-'&n(m۟MSn3&LGoAd9Ҵ92k۶I6idfՑ RvI(uzI:S.JVv<ϬlV0 mt]>Q'*Uj:mlgS/P5l?|w3uH` Ijht4(9:K*XۭBr69>蛙i6AlΖW-J743kZ`"󊑝 35f:ɵcQ$5T*ƾ#J֊)cI rAHV4GI]@yu:ۏuOcz-Twy0߀rVE;wm7ͦ]&SMIs$ѵ Uv "O 9wv5SFπpf8=zOٸKpV N[jmyχ|/e._EGk溵cOꚖ3vY^QL&GFF#QU;SQú2NGVgRv9Ztҷ j:WϼWOm};f(pˮ풬mrF8ΏbZmvRCsm𿵫FS4doDE%93SH8AD5 Μc[2eWj鑁XI+TNBhM 1[lMG4ucbs<^itZT} azaۋV?ڑf"6!QL'8Q Bee a2 by@5.ߑeK=v`hwfkrNqJuM&U-28Sc-L9fѷU*5N6NrR9H*#I[tlkgj-N7~lQWv VP|dЧVO]6*98):}9TTZc``QS[zR[ڕ]HKsvC؜9Xrs>E֡ v8shԳc4ڸaH#ޱjHg:bM+FՐ8 qO|FnOl< ܁&&J* 2FWsLرET6>ԍ6F3Tu$&|zޣW(ȣ^8tSϋҏKJű}թa 6t"xц:}40^˻V"4#rj^l:dҺuY4;G$u|])YBje[RtE3k`{WklBeUޣ@wM6_ggjןNv-4u᧨)~)fn3*jHaN|:~u(@@@@@@@@@@@@@@@@@@@@@@@@@@@@:mQ ,pFI?Agyh\ 1s{?~\N6a?tץNw];Vôh \n\d8Y?w4VnMzGI*"L{_iK\+ũn_hwlrg\c8Z)vEq((*Wͫ%ux&^\8w/}ZwUW[5't29Ζho{T/]mMRSb Qw{oBoQ_Y75)xU hEƯIfd .\4CwMUVzL6mXK{>_:m-Rz /QN3x"oB!_yvi-j꧖s7]Tj%2g QJ\&Qt'@w9;ȑݰsTAuxido b|! ޥtw`3ܛbF< VU%/fk5iĹ{z!UUVd>塚QG=TD@8>mLs1ӥwostIJ@T«FRV ^&z[>˂q4)& ƚQ z>Ŷj{0|G7|Rnai#뀾"q/yYYTlpgYְVȻgE#/6dN9t;}& :*/Y/Sl\-oS6]`s4٥NpOItsQ%y*u@ISTIhg9m Qa;*m,&8 4gr~]emJ栬Pԥp0v9kULFpX9ole=! xVQ:}>KNG#KPg$'i \0!s=I )'0i5-jTݶܟM6dQ䲎[?v4424NN7=zʈ[K ]_o}viXd$况7S²mtm¡dHmIχVNLtLg [$FWꬲ61I:?k{gZKf2, R۪1_wժ*JڡLi 뷳g:^ m;/dLh<~eΏO^0(qv_yƚc^M&hjiH.3&z%T+cs"77hjM #oF3tQHҹZ~څ%؂&nU#E)&6ɹ#BEB`7SI[f$'(\cfoLFiR c v+߭C9iRg}`>r*J((kږP ʊj_v9d6l9zg]&^ɗIG 1l/M ؓѶC>:@iiuPs?].L?M25pH; F˟.zmH0%w uބ@܃7>#`c8!>=fRv(57ծ)t`ޞCm`t1HѶNj]nGP:,%SƨQw!Q}}.u3GGK4Y˃FLN Y. ɵhj= T%ѫ[ и&U8a]*e=BK :Goyǖjoh׀ix)<^ Ɍ +⣜gl0۷E)P׏O-PIBGwq .VI]r}R\:ԾKUSρu=C)f~&?sJ><*t) Bi^e"Uj6'xsiyϸ=ĕZָgΐiN9S¾CxڽF̙j3ľzECݛV^"?9 >P4ԟjyԏo{985DF^J2}^j~gy|1p{jU LUORc\V3^J<,` Ԍ|>֭~ vŚIڝa9s~Kt*Tp}ǚTWIصSW ?VM*GPc%H=p44;s9g8ѶjxnY8SN$LHٳ[t,-RğIJᅯgUwօ |ӟhѵf}]w8ױL+h_QD[g'o?kiYU'u}]5,69?ozjVi>3<)rew=3eǗ?mE=[J9{z,i w;2nR CbM]@W5tu^cmiִjkTU'm_gKux +IJτsyn]rXԵ:ԙqQ9#eʏ"L "b͵3[n_[?8'iQHL|3Ez M|pH50NJMniaȮʭ\Tmo]xN)BOfOHTgGT2W'*#z0 ڵ 3zt*Vfn@(Mg鸧Vrp_I%Gc }L^-z;FZ.2+_;+R*6 \6մj{;mf7 jRLi"  뎞%sV*#$UF4n|k.s~Eh,C0}Msۦ~tt?woyxo^0ՠ.#${g@3ӏ(ಜ|D֥ Z#4q)Ϩ7%B9i6ia*kq2 oL$P$$S]0oäl\JhpTsLcLj*ͥΕKsP045a֙G]~$'qɾΗk+sO"FC`w1qV.+jaБ:kjvNz!kjl[v M8q́Fil96F~s^GJu;'eQtRVLs8k1r6>Q2l+NlA˴UmGf ˴zw| vgT:GP~G)\I=s٤f ; ,|$S?($oȏ_M +N6BO zbQ!<>ȉ^ O ?vXe#tɣipDߦi^F@r@m}>05gUq*"R=PXut?ft5HѥnA/ٚՋW@wFdyI Wlp{F<`5x}ٝ(?&JHgp@/_jM>D#dֻ60Fp|?jksۻ(͉>L#t5oѐra?S"^j@|`z>}:SM:^Uv0˘!*0}7?%TK_3X򑦏_NQ5ZU)v9,scdUmӢo7t"sri4_Cˣius~3-7 币;S6ijl`IM$i2T=9Kų2/68@nUp1k7K{+ey%Z:OǤEYq;5È uuZN xZK+cF-',#L7|3K * Br.пp5? 4+5kğj/ tԅ83Q+ vT|W1>FE`QU,r#zwrO()_h&ruh>s6V*w֚A3`\g2q:No5@ P#n*[㞰g6ҽZw vWjHƭ#rJQcyfZ4ͅ1ƺų#6:RSe#SS<Z>qDI˻j hfK4w=`iAK|A=o[N:s8݀<¢kTw`tr6];M_f7u_*\q;YsqIE|q vKTnxQjim!6ްXn] rt+K`99تg+~ScԘy?ifT|hӹq.iiZssj8 үvا^Ǯ~ӏ*}Qm[ʟӏ AHuVobBBݣO5*c ~6);3S'a{F~>.#K\EkPk'a-51I~oQ^fRqj[^˧V X53zn"F迹S|j,mKqo#OSpZ5+jNG,0/Y\wvJ˧m>jbQ\?x,nVM>xpu0:P;ͭoi4;@pDN)B|kk7(^[h֝&vbŋl#_}#kZw#Q.xP7m>]08 Z Sׂ>U> -`Aj4R*ڿf4mbߵ4h=ζi4m.R QXri6iP,?̯c8ƍVo嘥i z[LR\?/97[zsퟯ$ؼm$8]4^ PJՎ*?.c29+T KxѵZĢխ,|##YRlé-?HV¡PPr;t`v#۔͊V ISOc&/bwthVU4Ar$zzHՎ^sm&C'Hl,NdoSmYEdB ң(}$t638 ,sbN0U:Ѵ"NDK^4=ygJj_U~ ̪ }!NHxmA6=O)*Xק9Ӟ Fk4& g&l\ۉ4m9AV(F8έi'dozɥڝŅL`6۬hJ4a8TZ܇)ժs.O&u){qqtl"!NGWCe|?۝.,r+Ш N^=hg⪎-%Q4&TF/-&ru*3ɸj n+)8? Ș%sMUWGqO< t;Os.)aHb:e?vnң@c)nڀT%&=xUn]99k䊗go8'&V)-&$"_W^HR[\H[b WbNTU{[j^%&kvPFhZFj(':UgzksХ*uj\:}UZMGWv5-MLTr:?M"ޡj8hT ǩ&_f[o.45cuf_YKO<PM8#if-';R7hW*&V 12\I.@39N+ҴTbu/\{4*5Jp6$Эs}gg_=JSQ+3 Qr˫r{ٛjt֍S҃} 'Vyv08}: 7iѿl*JȽYr?j^;NMjvS 79 ,%ΡƸqTu疟Y ɽ.%V2# 8QN"*̧1d3;]%[7#8ckz\71ҷxiO3.P2,ū#zigW־8eػChhu>1$:ddѵwnU\pT}vN^5dd'=FMV6N?lm 6:zy&=B *AѶ}ᓍ% 58{*<0qhX^WτjkUjxu)%ESB.VTlʙʆ9? LculjZwݫg=Ob]3buî~]OٖRW JUԐĄpȤg-" H~\OJ:ie+-j©A(2A_2j=Q/<<ģ(`qfNHxJ*ZyzsF-,JMDmWpt]#=U9$JwS4maY%Bwe>bH fZ` |霯I6`6+MJ&tmU5֮XIJU56S;zW'>Q @D"$8KStm'㼊ZovQY.G,Sb,cfӬ[xr1}cGqYJhohdr#cM2vi`jr[9+iۧJ)A D":SZo.fӗ+d,"Eobrp&U) nX^sqpi6]wedzsiE4mVFA~@'xѵJԁQ]W4GU4HѴu#1m)S#KƑytl8yydf4i] A]L]ez R flr?`B'LNym2+xwڰsv c@ȩ6ir09 ~Rmt9~qMvcfcfc4F@=2tҥBӤ!l$c8+@哰6fn 펤K;/eS|>siSr#p>`Qcm^I]( 9yct>{u}8sJG3V'=4#`ڞcH?ڕj%( E1I&š~M8\{ uV; ~|HOx͗N6EQYb,yݚl~1.P{+t Ww8W}U_=Gu>ys'ixJUD`WB$onRX'pcmQOL\lw-w(}xm8e1M_̍+U*okD$dVWg /alIi(JSQ̼6eTW>(MLg aa^ݺx?'Ucs<\t-DcM'qTqlD{" ǫ!$~G"*jmQڹFl]4C1a&jb%;rWT9)^,Iow(!Q5>$3~ʟ,ʤ~ Z> FHn@S$i6iDF ySQ(ϰVMvFfM4R$^&x;d g:Ɠ#47Nq1(%:mM7|,K2kŇd>AÌUd60̻4.Xr+?xLuygZ(*2m #iM'">&jwŌ,;H4mLrq.jM C|PIJZW*T*OjY0ϗtDJ?&m|}@4m2Ni4YceLn=Aq^CVV8c̜M{z.|?hEn5Wh7;l6&]&T]o7'Ih -Zf$mchk=t٤FKIvs]|0H5ݞ[sĚ6H\]> O*셷 ?FZ+ݴm4aM,@? *k$1+|>.L1RҨw(&E_52f Zѩ6:ۗHuIQ+={-ކ8jcY]{Vyʚl!sQ.VOe^+jkTg6qxsY>*cO.Յ{U@:q5Vͅ:@jNS(T;n@qZ)AFqgNjj@O|4UԩZbاVm3{ϹRwj .?? ԑ֔ڡ:Wo?6HlcnaѶH¶҈jZ@3?3,E—RHߟDj +U?8Sȭ:`@ FA+ɇNW~(?/tNvӝX_-*z; bfޏÄUH#Nbc/~Wgj UB ΩNY)uA\;SH\2t휣MYqzEe*1#?f֤rNjϓF=.5=̥XK`j+e ًmo&eX4pi=NyN+pKj$>!ӝݛ\v7)9ӏ*N b>m :] S>pϫˏwLvx"'*IQzW9YYt ͬHTk𯺳6e|OT`VBP=׳' jwTj;PItt8]sJⲵ{7J: FA 1#S6<,MZơ Ȗ8M^|S[kJtwIRdZA=ceV ~^ooxp5i sϡ eP1usJAb6?4U[m Aay,%jF dFG99̨iv#嗀OrzriR(!Lt܏HАqM E?%ZY$u$D2 Q ,ƀ(24ѭa_E K2ņ=s,f*QC*ImEy-(jַZՆ Dz}_i;\*ޒZxWN~jaoׅ=J)]=w28DeN|j&D׌y~4IRDU.u|&Hr>MC-?&M~%g!M M-1k~PsA?fD 4-Sl4_yDX (*mP^]FRM4#8)L.]C ip n. GV}1ĩ(qaI,NXeE|iJ朗gei* }vS:Mg0YקOKjo}?*\;@OFӋ `c?/&i0 zv4#0 v$OhQwLIl 0[~dѴ]qKʁ6gM"euw#jX7uJI3|d2r œcJƍ7$Lv^:IG?26k0uTAQP58I?A@*1|2G_.h>9$HmZҩ"gj l.11zMJ͈•Mg MM4-nG3>RmtM' qlәpQ?NI#[8@[m4TLDΩ`1hڅjd1F98ѴjTJ4TX DiA%M6 Y^{ਃ̞_fFWzi6Ɔ yd tkQ B،e n ?Z6\Mj?Ͱ?%"@(ڢ3jp:/ ꫃;'B%" t-nSڵL_?h絵F$yOK;B)U>̚p*)IxZDJ['HvuG͊8R B3x:vk9:C5ź~ƣ*=iZLpôUwUr]~60]~twO ƣTBqBsSɲ$iuiF"hUBYjbYe[7ۖeaҟTxJSIӯ_ ڕCTRKj4uU|Ի]}~LՖE#uNZ+Db~Wq*>hVsv@]@Džj_ڥVB F2@_dW4ƕt}8* w4Bqr)\!pTO]W|:=i&lBi3]tAF/{ZVn/Lht`~ק}5x&cTM(Kz\8ܬtVD#+1GJT&p׉fn[Y4-~!񒍶woR*EWN)UW( Ce;6wdW2T5l 3r)6TQM:iJTV~>_z5VcdKcŇ6o,gUOԻRJot9^ÈlÍiqjMn ).2rF}b^ 5YByiϖ8gRmQeOBy~HZee_)8$m~eP&ѽF)끜2wcg]\}cIV4j*4m&5s̠.Lhnu>}dѳm6^FϮy/[N&}uq]/[;lndgy;f4l7WU眃RIc 0^5:&=`82D wf]o/McM*M.,@ќLxN؄lo ʸ6) ]D >01 ;'k2zFU~R6i<*6mKqh~4m(62%zzƆ])Ѷhت}6! /ʶwD TdE*Tiפ Ldc=1dϠ]A< ʛk$=L\w۬J|Fj 2Ȭ젝Yi47Fh_*:'O-ߎ=&қ,tTohUslVr<cѴI|Yy3_՗FNok>P 9xcf-$z}ٛV-l0 ƞ_dPa*#Z9 躝[:`Э4"NS:.dri[7#F-rF68 )>-+5ˣ&G9m˨SFV }ܛbW-Xwp%l`~xتs.ҹEܟtpVP(8&YS3pVeF`HV+ UXI'=4¼6]N.M& .52yɡT06 3 NhQ'8+4SQ-PM %(?#Gv"TvmDaC zG \zFBd-'X·ځ2ƍu̚6'r36I鴺g#?KʍFӝeKeo&1 (7Zzg#FNea /Ɨm*^`e9.S23 WRMIJgVN'$E$mKl`|8$oIdzI~l3rj3YtmV\uKK߾?cI95)XѶRa+ %ѴAHH7rWv?LǙFd.1iVd>]9K#63zKbm8Fy aS*$#6z"MWmoNI֓7Ӗg?j,Ҷy/R|SgP;@QGm!u|IL݂Rs$F%j a$ZVjQ]nFGQ|[M?"Tn;;_"£&sdT5u#c|A50ЪUE=l gRUN/7UoK1d Y?P~HT)˜?<=OX{9;'43u'#r(ӴBT)Bd1Ojcld֙7G}l}O`(i0SQq*֍e|Jc;4ڧxP?>[EZ쭐<-=~iPƳÆϧڍ@V|˴FTcN?4jo66?ei=ZY/,A coݕ=,nNv D઒6$ t#50K07F/ybeѴxjd c'?]"{Ja20~RGe eEft3jG "@N< TnG2çsuj/P*@.2{C+TWĞ}F$Vse!v ][jSP'm7m#ojO]Y1S&+&hR~\>5ZAooW5 o=OGn9K{. jn~֯,J*p4g-<FZ҅J25W' _tǧfJR뭁#<>1f۲]:D{875[T*)m=98ӝtdᝃriZ^I'3ɾ%K#GzIrAÞ&J6Q댂%WКΠ` 824Fҕ;PĶ@iv$l:{ږM{Z='Lq\K5KזNN0I9n9,/է9RyMX[-1Xm22컱g>ʟΗhn.5E"w_mw5*K/5{mRp9W4&~xba,q~泥4۞z1f<;cM5tIL*#.ܗ ':F:)_ )wE[cch2G4m%M79`{m$|cC _]dV94lvz`jH=w`3d;J4.Al9d@8c42\Q\܄pvfUF&Mʬ IV2mtAm]6$-006BOH!5t0:6j95|dr|4#wbi7D" Ff @<+W,f6 e݊h}Jw-=WgdK&QiԦi8Bѷc1ᴕ &|nr9&llpy]ͤXm6IGu;N'&4vM)m'v q9œ/nyɺQPu#m16Fi6\䌙tgJ7Fl×06A6J1nr g`s w2L+Tfj;rMeȣ\? }mz&{M.ڽ(]kΐm^1B4n!QC(l9C"ղ79@\=+e}'"]4X5(+:g"1T)| Ue Վɐ2 ,]t>#c7\=sɢSLRvѵ;$Y[$m=߻&,/ P 61lWMV4{ݍZ MC .O+Ԥos w zKlRetށGz(V`~"Qz@,}Ax}u(Bs71 SHg jt |: VeJI5vIqqFSQydcoo w|Mm4(7B[ckF+`Ã復yB,.ZIS/$Y?8n UaIr?)y'Tv9?S\Y\+hG 249MSF[LA&4oߎIoƗliO=Fwy4lKn#3}V P>Qydc4n/^c'*x`Aq9$J6p9,DaA\`?+l͓=@@e✚RuDq90(*&wI8)x-,V=NyɭJJG9 ?kreF2Fi4lUGeAP9 F鿻.k4hϖ?rѤ $jQ$sih\+2:f9N,/Ix+t&y/̂AZ Tu#ߦ5ޚjʧs!I$KUh}?cSl8,i=6/rR7Gݓd\tP~}4D.Զ Po1v:o$ȟ6iv Tc1v*9bv~4j\*ʧH;4-D>r9gKȣyr8\/?m'eVy zzJ2\2w"*#Q"F74l[ziTFiR st~2 @5>R:MPI8Hu&TUsP LhUwPt?B`RO&UcҰ9F+Į)۬-0S:h< i?o5 mvno2?"<99q0)^ۭ2LXfzZ|\aGx|֙ۜ[WD !HrqNx,inQH8w ,jr"ʚ gTxg&MpK%xugl*w1 M=iX[ = SW 1 Q5KMqvJJԚDE#WBc2j:ݝzFT(yVfѭ}TEewJWw9ݟHEj;jX#ɓQv4:SDpڠ.l+V-@/h+򑉮upYhj*gloԛgMCȹ/##vCoH8T:ՃnD6sg5 o/7+6+'w o<1oFnm}tl#biq cK+5-IJL*z`9.-LQx14TƧ[Z\@#;yɽ4CXw+=nk1[jϪ?gkL +s#ֆ֕}!S}۝iKkʐ*0Fu2ݲYnAMCu*VHljxlohoTlhfj0 Ѷ2,HG58Nj;Ft*A:J;q ]P0-zffvjbҵUP(j*Y_eܻ:Qr\7 g^Wtt|goBY}ɥqqSSu%Bis"Y/YSlw`}W阮,w&á<5riS3&Ai߲xFb3 w!R715z((w8>06_AӜ C'l2q! d3C1:\&úoh3I۹>NF4Rճc׊Ahpn("Dͮ-eGP6kB)bEE`3Ih0A;sY Mߔ YK #Ps@ىh G XJ "r M6_ sqM'|i24Ȥ6=yF6˴(@wY)R 8slEa=1TcV[$?KQ+7M5FlMGߐځF co]5Fs.ޓ*tN#tI-ray4k#MtFMj*x os\]5j3Fvj4n}i632FTb6#Klr B/v57mP\iu+bD֓h%~= A9t}DnԞ`|o+gTe#Dpq?|hj6]5J)dwIR鸧En ci6 Y=?6UDQ["F%2B#gmT㧇Wv8?g6.9jU96@\ˣiTvBZ5MƉwMX*R 6Y80BJiK8(쾣ofJ_R98{4uQX$X+iwOlI;=fb ؀z 3+N!t:G7Y* N}@MTeTmj߁05mk,Ј@GSM@A3TU~꧞|52b6E;^^1JvQ89Z]_&ujvVժ== i+⚙g,e4<==$},.Ԭµ::ٗn(-U%Ү7bvtpGp]{BW}[4Fӂ%m6֕jңx4:?z~9anm(]y%L⦬o/ב_"E)OQx[}x֚MT\rk˛j!'^û7/L,ghӉbNqz׽M fʺoZʢкЏGrGMɯxj*5 -5ݒ/iʦ2؍3=z8K=Tw~ԛN(gaU3>l˶tɧUF3.N.rN{NS=٧V㇧Ԭ]RbJTvDդq-r30zG2ջ5f1[˖(6EЦ\zWuo3k5%ƾul ֟嘹ȳ;Vn6W}I?bφw^+EKRDWmSh߆^%A[9ywkjՙ[(}έ?v^xxmEI&F pQ ޵4᳿r j\laU';/nZ{BR2>Y_jӂ cNj)jw.69VEkgcMuLmgMo~t IRUqkijW/f*r =gqx֍Rџ$`r4nr|1Mê#pS-}b*q^ƫ58uh욮]FTS̠f#ylk[j՝iӢ/gqxպMQIRsx=4E*f %qWKzWNmd>'rSlxR2%6e.Gצ9k[NU)zz ?<Í_~v5Jj W{Mib Z4*%@}uU3ZGMf-&6q-@9WͨfqWlZɂqj &KZ.Ї̮j>TAU~U׽@iQ>sZ\A')/ ѯ'hί*--V.7i{o( 1 #;]:t~pd&R}?h/4¬jl%\|u tU]r"(^in2[S.?&H젍qvG'g'ldQ8T59 x^ )5kevX訧3r1]NӂqmjI*d?I2Qܸpqp6(Tnd*?՘4@U M9'T#*IQMCҚvZ )A-Ϡ[*4`q;&L*ȹ{Q'Bо{eW5}Ew:J.Z|SmV˼΍H컰<Ƽ6֧P3**T\B%DGժQurʍ9D,j0'ٍ9ts#hOlF$6x~[I e±'3ye٦K.? m4ޝ2Q`}iåwLN3+:PN'qW+EtV#t3jiDkGЦkurrIsqhX(wM .GjYSqw~)9aJeo/we>\Dl;Zۭ:kRuC_迄܂i^ݡPf}yRv2 )Geǽ8o7RѨ=gzmE;nDŽp7 Q mܩ$mOf7(G:g1VJ?kkӺ mAVZZ?cmiY} w)"cEIN0mCQmy@m3UWT,8"[dlHG!@ɴRA#1L=Q@I;ֺF=6<1qec+9G%ӂYųp_G~Q8mDON>_6GEhۯyP2˜M'zIz2mt6;gaPg8#P?|EdQ8EPuPԀcIkS)TJUHsiv߲̈^j>_gҫ [6g;3I u+aپUl):Էݓk&ͻ`),J4WxiV t恢g بʘfWݗiU DZRk_.1PF@ھ%٤_UޣS{g7ѿ2mSRAӃ5}-jE^S4Jk}cLteUDd(٤_PMt/}1L TwP:ڗyPz;x9>e,&5*S5jP7Ntb4l#mt[&7,|$JO*iY6ӥ K@,KЦm,_Z<{olg뵺*t_Vr@5C_0լ@(vDl1YV:WQ5?Jq]u]F?1DhV \UԃbL?^ ]ai~v?w周MiQ&ɎA$ݭjD`Nl '-v\n?N$gq%rC^ĵv,%ʩړZͭ*ky >Q;Y״k7tގIIšjg?y5G*[Tu؝^GO7s;6 S??%<'NRxwt*0 qW{_xw1ЧWףN#u(}PRuCLg>CE~׵9^s>E:." }>7ԹE5[6'.?i?G"d*Y{KkXS;{,O ˦t8L~noaҕ=_53݋m;#týEUSV}y[ԄM`El~(*LZj\p0)L%J` -R5d_jWIJ4P+\}ss5 ;j&^ȮlUh{bWګ?S"jgMG)%):bSc5:Fn1%n nҥJȏG_SmW#WqxTV)RR6ʄT9% dUvYY5n;*G*72Z*1;srKc$d0³|f]T7D9$|doL\Vd;IQ3)vIp3Hj!'q ML3Zê~d%TaPzܲ١>9kC5`PcyņbF׏uZmqS wj+wViJuWMDZUF}uuS.15vz֑QcsĶJCMZ6VM(+um qf7 Ɓ]9vi5tm3(ڭ tzW)T)TpʅjdoiQWUơB:@2}:Z^TbZij›`H `WZL*,IR/H3+-cGJx}@e:[|(tڊ"lU|E76ĥ8u2iLxR s$6P"7B7_/sJ6v QF,wNTlYx h)cOBWaTi Ё?6M.22,ԹH K0+WZXDF17&-%WdUt^?G-% ǎp&ܫFl.>j'ftgVYQ]m| Dju|FeN-r9fEPzuGxfS-m9M鏪%A'guud\cjoNaX4%o6*k@(dɵ;tR7l^Ӧ5 D=#jqZu^q$ *{~XF? \]8U)*TQYklTLHT ~׉̢Zu Z TuI6 Y>PEeVBr3+c{6j& xWJTQW,M|T |S7PVIt6 Tت۟FM #T駤?>(٤}n_(g+Tϩ.Ml݆G d]5̛4(4mr8bO (ܕlȉ6c9ȅtG.025dg'{-r4=*.sAr|1nhj]Lj|1c@GsQY@!tda2>?⚝Gs vTwiL0=5էRgң ONRQ}ψ9D b2?QpQaҠgPDq95gꃮ~p961q&~#iݔۜpNm76aN'0yy6j[1@cp964H8-<CQ_dr>qcW-? 68+ɖnpNL sG1}Xf8&W>q969x Eoq95Џ~QQRL*r8?p97? 8GļNM{4}\A VhL}TIGD4> ?T>$٦>ckZ `٧0#i֛Mm4iqLULr4}WgNDl KGv#f8_LΰH=u>|Ѵb]. 57ڠ f;4\~:DR&&I2)aLFirOs+-?FcAaN|ˏ h 2*e 5G?ʰ/2`ajIr޻|PcGcC=os˳MEհM4loHRʖ#N ?砖ZFj)i=7ki]CLGc5tE:cJ&O"TLiZa~I VC9ЎjԑFmmKHZТRM^iJfuzt*>nfH]"c4̜Ƶ:љzw&2_&2ǯzX?Ivi ̴h<{g?/$QG#ڥ !FcT4Y 'ŔPc/#ʾ#"SH{vӷ3#iwo&mi~^)Х-\D2iv#nLUaZyʉC=%Xu2*ձӼFiOj]"*.%E 2O?⁏$G J@+ܡϮFMws%!??.4j(E8@ue#6e}hԸ.LxcfW16isɗm4-*LfF>f-Wr88RINz`GlP/Ds8冖POQʧpQT(K-ƕ-]Fņ.y1 9LrNu tn/RdkBد~fMM iPneѪXgd6r7e87ud>~FٸILj_ƍ8RM 3E74mմn>#ZfShT\lIFu? 6 rQdS>?  f2:._i,?ײ6| Y&68?iZ m"|$;& (0mf4ћe# Pܪ`XMj&Cf;IutHwɨnxzU1^168Z'o/TD:?+"W._ la:&7$dz{+>N(*RJ^ c6eUq6iM4C'9'p6iɳLQdYvi ١yF46+#SND2l3KQØF?r8W'#_$G# ê>v9X<"3G9Qeqn=d|d٦G p| r^-G/4|EÔlж ᄜ$6Dr8S#45`}q:>MD8#f-' c2^zdUk 67SQglV: 7WQ`0 NѴfm @AZcuu·הr8n6r~;FE0F5cF22BONGG#MOGN cippQ4V+"NF/gض$TOHrAfNG?WS?09Z }rGK4-#?#&AyvΙ}OVdFLY}.d3MmZp9XJěSAxM^@q^6Wc?V@D6PGՠ>h@}ZTcE>$6bQS@}I} gL}E}&0lGmtѸ3.MOnc5nPN( 9iN( ϬrS#4ǧ4ո}YwUy i"\O&w V5^IwLct?N@F<~8lQ?)+p{&4_U1"Ϝ4rO5? `4̣" 4s;*ml~1U䠟IiBFBZHDH-W̛$ڶ@DS h6cOF#f4Ώ1ݟQ"2(D=H3}*1ݏxHcE1$+>+Μ+hݏUc C³/ dS CǴ?8+h~r+cG={_x~p;2@v@yUOS#Ιc-?3٦΂BIm?6iPX٣SX٣B.,l:SϠM"=qntiA$Y6im̿]Q}?/$/~~q8MNGZTx~djt!([={,Ň iȯcYêy?y=9ӌlP9/"ߒ9ySTtSG*qLS“ŷ폘9SUiFnh2rgp*caab JTcfvi~ũgIG5E8KkeJ,O2rZռȟ9Shll( !<Мَtx=?9ӌmj97}o9?-ag헓"9ߣq>GT:̜:r8l-6koc4lm6yvi |m4w:~1߾9YkʜY{߾9S;~TSG*qAͳʜc:)|?j9T GG:c!)zrΚ^8Ou??*q~8莹TRUjq?u82l9SjWnDG*q}8Ƥ[ehVN1 Qy3q8mCRTy[зZ}dڼbظQ2mt}aN5>ʏ֍lQkƵ3O4՞꿜l]H9i T<vi=>cfOUc=٦!~Rlz> : 9@֨W?f<m4(Nq]gRG 63/fyF>6iQ6c4zvm^1@u!4ۼN`cU#Q`jߘiPÖ6U^H?1&ȩHr@?Yh?wa}?%lnQFu`hk9* Rԏz6ivFִZDrN,49AXM!cfv7[°~Т4ۼp1N8ϮIb6iM%i#XzɵкiF*> h٤b]@7St?I6y vh~6i_%٠[(ff6icfcfl$]m4wKf}Dlܯf=G]?x~qGwOlݧf=G4wi6hFGt]fП v4/6hО6i=Dl/mtwI$٣OQ.LwI4wI4vGvLwi4iOQ4ΔFLhOQ4΄GvGvgBz٣Bz٣OQz6i=G4wi?8٣Bz٣Bz٣J|#fо6hо6i 44'4(4ΔF4a=DlфFX4a}`ѥ=D4gJ٦4Q4h6hFQtQ>#4Q3z٣@Li_Q4èwlgpredict/pixmaps/maps/nasa-topo_800.png000066400000000000000000010460431427377236300203240ustar00rootroot00000000000000PNG  IHDR Gc pHYs  tIME% IDATxweGuVUtsOhMF9#@".}55׾ &@ Pь&3sv8="B;>}>{UkZ 7] y`q+&&&&&&&&X11111111VLLLLLLLL,bbbbbbbbb X`+&&&&&&&&&X11111111rM"Az%̅9iĵ#0 L;yc!|j50BP4>{_i @ȹ8 _1111 "nYrNi@ "0POh@}~:+ȞI7w!C $ 9)ȈLd\FiR)"MZ!@PWJɐ1Ɖ1f<$BDs"" 1EDCobbbbb8jM*")#"8GD@k)pid1 ƐsDc # G5h  #)R#ra1^PN&S ˧0m%Vk͛7EAUW_,2֖7ms~ni!xn1QNBkcebX\]-y~P.K ' Q!"0  _4"R @(E!`4 D$ HQZc TQZqI׭mܸL6N: &OXX\ZYZjz)yP DRjԩSȀi+M+eҐJgHh-9C-B@$DR924]H#@ @ $J)lCqI3d&Pg \|>800oӱX2?ܡnk0L:,K0z}=`ݏٵʫ}ܶma ,.V +>3 =R1 +,'6 ےVn@ʴJXD||QkRF>5yirr|VI̤3,aɴa:_Y.,8 C?{Y\d3_~ݻgO/r.* !C"E2ԑd<"p+̄i& C3Gu "EJJ iY%dR5Q!6b+&En=Bi(@k9to}-# :MAC/ \I~,&г"#V\f Z1&0T*d*HL&DTcSKR"d閖&'X"T3L!#u䤌 sSSsGY)T.|ѯ_pzH%W=,˿}1@F janM#JLOM8׾⋷7 ?mNk#zMXD!!?$vviFOk2"/./['?޽qwr8>3;=4mܸi߾= }ӛ_7=N95ڶyJ\ւswyϡCS=E+'4["lZӌrBhE a|eR3C'Ei #TJ!St/DwiNҹ|ju֣wD)! )yFZVJ)ds.4"2PH@Zk@k 0HVO#+ֆ!"""Ҿ_溫lH;zv܍Zd-[/0ړ A Aɜ:9Z(FQםaPm~QVkmo"Pw3s~ooήl6q0 lib5˲VVVK+ TZ]mlGUwC><1gޙ gP6f*܌{{@H)k(dҲ\ADO<4Lri996/5 4 Z?SZaaP,V{{;,ӰmKCĹMlPgܽg_z՗ e?8  ~=[w _}e&z{Z-3R:~H`_R1,CE|=`ӓA˵Gw>jzjؑ#oyzD qDGGymi0 cm5+XYYMQ$3DzyΝY:qrG>~|Lر#} Ư~u۳eg>}}?M5zm#s|['cJ5CE{{6\0p/V5 +a8vs\y6G)ր7D15(P:Ce).AcHIgѐG4|mڞJ8]_~ёɓ>z`#D2 (a' ڼ}K6+ܑJٓS:$Ϝ)|}z Cm Gsl>${2 ^/e{욞^)#֩T:uRQsnE/68ܙˤvٵ7y #8wt55BFe~%WJvuk_{KzzNrL0 h423DkKR0Wz[=ݟʹ Ll$kx.gT^~Ʌ7rm"ҩty`}}֍& & }L 7Bp֨QKRb?OjX\ ߘ<1CWu||$e#`D* aXAѰ,Z|_Su1RdSs?te6Fl !\ š>ΟX+y *Dt=vt*Dͱ3r݀he[4)֖=)$g 5%eZc4<Zw|龓'g|_ +A {{.ڱkG>rSӳRk3emٴ}=Gv}ko2+W}ss+_}NVRsCh-0 ~8$)> y!V.ubJ-MOrM ᆍێ:N?6i${hrvmo|_~}:a֤W.םT¯UkʺN׃~3wjk_n6cқ7t&"E~R+VM7^!))l6jR2^wD++)4+eW1?$xIhs fLj@ X`<`kS@DL&6^֖HF<;SvtβcrN-8Ggmy%˂hAI V$Lٵ2D%93"`LԚ"2kY~`M4n Lq.N)\<-PF*4+02D_1;t ʼh$ךqI ơ'?w;v`V-uIYR kk q a0dqX`)mv֖ (^{Á{Sʞ"r-^roL\r#"m f5+#2RfTg*MlLwfڌ/W7jwn58ilyib9ϰidK#ol}_p0VX-AdZGO7TjU;6+=Z*'!w n>q6Kvlq&6O&퓟,ּcCFOMm`bJTI8vfĞٻiftw.4J`Ș6 @qr\T`0j:ga<| ~zzSZkJ)@&U|r]|b=x W7S)O~-_wKiqX`<˧HfU82NW]uu_wc.&_7ޖdВϖK>GvYx.VZ!I)L&.V:;[^5a&YdlmM6Go[7S{9~fq廎YB5Tcێ!2-a9gԫ"e8ĪewE n]ٶv\:}ԑF0=57ay?ݠ\߭)#mɩDZ=𣁄O}? \# OЋnwqtpzwŀS +RsܒLiG;r?F-Ҟyu7Wz,~kGЊbaT*al.ika`rT:9&Gu3u _{mxiiίY<g9V< tX7⚤NjQ) IA2i]MAi15}<7ܚMԡ'O_u뫮:X?[sD`D;Csd*41ĊqJY# O.%}c<|+/1 )栐 7ox~o߰i|:3503`;[C{5[Ďhr4y.]=?/4()"_1D]tbpudZfr\GflZsG~MQkRJ)!"*(*{G3"P6Ό`>q)S/3NRbLH0~\;[ T `pL֏u\~ī^uͤɮ̟:~F IDATJU/vJ(Le,K++Hy]~k)bG(ZB0R(o:ɹ J*EH) g4Hȷ[RFLA;^+n)zL%enZ?%"d:G2I3_5a $MкX(DJb\>mQ}uegbTۖzܚoϗNLXg[ZS?(DsBƘp›z˦,u`/C+nضʵgTkpK4B@YSu+iA$|Y鎉joSITJFBU{eDӆ?}'6 J󋫍mwWXbZGeU`@ R_>yXVFf ֭0L;m$J={_c?"bV8 6qo01NVnsif?axP9ц`y8^kM{ 'u4YɓǧNhc]4|˳8ጘ!T |߯r+xߖEtMIdΚPR9p|'Ϙtܚ/FYG{ )L`LIIGat[][_|E;ssxowvۑID~R0 g"!0MH:2 ;T&9۞ˈ=̙­i߁'O3,Ò*d`h_9}tfjSSSgeI\uŵ @l_.TꤍL&S(&OnxtT2zvfk(-1"5iQkejIe \*d%!rޣf޹3_y[CLiofJrD=C~o+,0߾5lӲTwÇ3GO??O/`3y^ecͽ9wj_o~ӦFV(U#W.1$ZcfnyRa=cl,W};=::w}{E.ゥɩi0[VSǿˋAxe&~P")͒f2G;_[99n}ɵr"ҟ/ra`ogGk.ّɶXu<%R%T dI8Hliyoszy%m6]Lػ/|Ab#ad7(&K)% Ho3LڲV_mzyR_Z Ko~A66%+\Tgx}F)LA %X+3CHn h""bQiX8|dtphd5Dn>Ӹo% {|clpf+a؈<-̰BMuCئ@lmxfHyyALl[_,z{27&//aXV@aF:V{7DEp)5L^)s]c3ID` 9eYD _Fu 3 J0snqa|p6:Q yq\Ɓk.[A"= {ʵrgkg{Kω¡3ɩSABmI+E{Ci43~/qD5FHǿtw?ft7|?TN"-Z26O+;uCiy9vQ k^7zfvuazV@?#O? .ɤc2(~V/:2 U2 M̬ȧFMtw ΚyϹNȰ^ĵy6eG2;婓7I? arϘw9`&@ Qf?zfGb͈v@e QE ]t޼tl.5eP]:tljCsK 3Sgim80!\HA,3's0g"HZ ҈H*JFdrN[ 'j?\+95s02L%߹qсcǏj yzrze"K%e&agT4HYCgOz~e̩3z-ەC̆~+rK{Æp9$K, شwuj#33?W=o|_?n[T^ªEV Thp"dJ"#xg ֳ́Z+I>hNY'RRcXNUXgj0wm GM  Q-k* Wem t!)?X]L!Fq=C ݥ !D02:h;0X.$&. #/{ŋfb <@HJ{i1s@Ck2 Ri*7ض`-cpW @ aQ$-r00әLmz͕}<"RXFJM 9(a\XэFEPX9ǮFJJ'ee4/5#rMd2 8b,zR*hhVL0-s.ɨ!hؒ`@LEGBnp\XNoI&,>qk](Ss! MD΅wN1 S `Ώֳ9A{n2N@1f'0 r?LӲ R)Tf´`}aOݣ*^qU/}։ulbO}·9t"z9? NO׾뭯rQ9~djj:q'yŠY^_ƒvJ's"7M}۟ސ(҈0jë>z<&I.fOOR-#vBTi(J]K`%4`HqTnQOo2rߺ}Sk{wΣO>b\L)3xoJ/[L̸.Kuƛ.@* @jYxuBDDC#%}S$LG0&O"BTŽ  ڜFk0nq@ kl֚sn;IHI 4ޛZ]ak{z=Ql"٤&RDIeb#p ;lDe3 2 `Ö#Ɋ%&8DqE6f쪮w:{M #q%yxϷt*u]=lnn4mB8EQ11 =Ƙh4$֤VV*>!"N Wݵy堁*&I Fh$'y1C0 n  ~sE>α;n&w0`͔'>F'ߏZg4&@/ yɨMM?/n]/oHߴi54 ouΣzDd`EFr]8]λz?@Yں]>~go>Ȋ4ysNcmOo|gS  xecp#΃sfjp7?j@~'yٝܓpk,n;7v?qy=|s|쑳cm./b׋sث|Oc\߽{EeOw>OǍS')[K˃ݽk|­]?ģqcw}酋/^'DC0S^$96U~ʯX;8D{1$ݫo\qc΍m? _| mwk{˷DI\'G`F?A Ho{j;;gںw_+xnΫaH87j@ 47V6gVmj;wkTK0҉Sng'M&'AqG ™8i_xn>N|k6D1,D @@A.yv:":f$&u]")"bN`"fƖS}1:}+BfJ֮ 1xfy4G Jͦ[;z`iPd*47B;qRnu)&oųK)w]"Xb y)}@F@ QcpkR{[-;pq*)Lk#fB7 ~[ gD I2ed8VBڙKnehV;H9m ٵqWQ_e~-kcO߻߈D7sG˵r'~ں\|Ku|t;K&nne6ӿϟ?ws3 M豷=_4J&>pov\W?_G=ܼ=l(GNpn~^[Om;xg6gvgMʡc@$Xd~1fU9~ƭյՏ~;}ѯ4~4䙙$B vwwfMܾ7OKl<|&{^O}|vK>~3O.rՖ6'OY8u.+o^\rx6+ վr.3O?2h{]_9_Pݹsy*g_]1-ni1dҜ:ƝݻdOI_ IDATulf&s̅#bI)$,l)EJ jVs2($bf8k:CJ)&$]( ͉;rĮ͑x\Ę"8"뛾5,Հ ;&p>9%80Ia/KN<$=ǔόLJ*I47~2=̦ү3۵ӄ쿢; 2C,7,w}kJw2:e9v>oY[A{Wz::wS5?cA}VgϿ척hmͣp|Xɩ e3'Otpwx3G~듟ʅ 8;.?~n9ֻ/6y_GG6ڱGWWspbmylxptg[Z|\KO\^Z}9tH-Q1%D?eZ+WK_?g^xp^Ir⑧ o r/\?跾k챇;mWsJO.mqU(6~)Ս[SqCoAD|gK[_sxd=v[׮o|Õ%}q T0`ƘSz4T2!!)9S BL$eCsbEZ:qއEcԤQD:C91"!2ʴc8ݝ.+nW^sQҶ-[w ȶyTV;q}VeUOYRa6XrγD5'1@0P>%#(B(*D Y=0Gf9kYU:`aU(dI"B]wo2O]PZ_[)lbx8*u9!Qv;e3%zmhb/( WVOA$>+\|`VMjjhl~[,'M%FB/»C=?~|8^Z ׇ҅۶虜sA8ۘ\+4=:5eĢoh6N0+EDɰhF`ƈo*L  @# ߸eYͲO_naߧLŗljߠ,$0׵uF gUDŇ j䂉" !}4E/G hf3j3/åxg'@ؓ~\jliV]]`>y|E]q)gAY)#%: ؐBp{%ϦL|@3W ؂Em]^:Obg{3 ǟ.<1°iC=Sg=Xˍ0Oyi?~/g9y\nuYLǻfqowOx8K#,q㮯Z~'>/^ޙ1GMPDfff_}^A= .ti?w#<#X!o$z˚@Ν{o\|{۷?O~Gx~7.]| ϯw,pt=?˥Zٵ/H`yyԶMy THTOrӪ,\8&)ePC sD|_BQVV,9^R-^Ƈ{6]p`С)76Fg#4Z9Dq9Dp@ 9Y;[Z]:~,>. 81.y Ŕ2䜖!2sᙸErׯөssۙZ'` :B_V y1ш ZU5@#Ӝ HP>CfdJQrY "Hzsy*,ml۶S"*@DH9gD$F%UQ黾(|o֦>guhB-9&QK))hT\pX[]]G+%` Դnn:Q(ywoum-x۩٢^O'C Gĩ>xzM֗vX>Gd@$Q0B5;r2DIkZ镙P("֭]OVvHd٩Bq ,\GP#  +ٴ^wze>K m{vGZ>Z\Y11dZ;9{7;ctnAlo;lv9=ؐH9uzfg6@#-A֜=1 -uђ:@t4BJ2c%|hisU=JY{l& b0 T#v}WqTT,,ML}DDVVV{kwWLWS;ܙ(@Hג('kL1K ~#ǿrw}o:u "['ԙ }gY zgqp8ٙJ#(\&R=( R]}d S5(N\58)_e5W7loP?ӧ|ޗ^}Ѕ^\;O3 lzڕq;c1ovKo&_5bVzi1+woz+?H)ye_LUE; 6W.:vd|_~cRAڠ=~oR5;zq7FW"O۝ZҨgM3-ȑozyg|ptY:_Nj-r>QNx0bZ {'V>6X-%Y;Fwdn}jD"*3S%[ GO}3vRel=%tHT1)6M5N74jy2ͦ-m,C@D"`x˷%?|}IK0),`qE5MS1d,XP@hdM.gAQ`ePb5rV0$$Db߉ʢ#EE3{}Yۨ!A(Dj9cY #Xrދ20I2Y^ {21E$8VRT;֞=H7f7nD;Ќ)M]}TC6*3f51 r ~XMPLrʒhصFP84⧍'M~g2Trnu7G{ؗdwO>}9B_R HUUU!Bq**Y_wV3< D &FR!sUf Hhb kn* 3}fሽ"82@R C35#B~Q۸*`6 +dȐ0C(RXO8>П;.|'#Y&!wYGo(`ž!L1/ /8֢ EUs#;ߛW6f104UE4_GLL sAUHDJ\Օ_`=1đ.{`n<ɁQܺ;tws)`pAB{M_=㮀`v^L *i*b1*]V+C.m*,ݼ:Omΐ ?juxݵ_j9ǏIKEHL! !t9a2zPSZ@Sts,pu$ʠ_sO=rͣ;[[G>CNy0.,`U.[3,FQu kBCcg~'oDqO?xq~%$"䦕(av&nߊHBm+KOɏ.looiUz|MZBp6- Ghvrc4VX>}VDێlu{}ήq_ݼqqZ- 7W֏i5<W_|9vϼpW]ͨ2w}[>#˧7N> ^x3,Awwg#X{h]o\~'Ynnn~;cXwo}kzO} _/_|=CGkQAiF&dkG|ʱCJJ׆]{N@GO\|m}486(KW/Øc#밟b:~)Ъ5K=8"5Ȏfތ_Z4%bV9H?H>x:L0^1þITU M;O"Ayg$9zkKǜqLp`~_L<(PLLQ5sUY2hLxo:Nwú,ܧldhl ZώMx"#B*1j⁒<Ʋ(9!8ay"ܟM"9%Dbˡ rDn"XV,٤1H(C^، [EO@l ;ض<,<PST)lyyeynZ1q0,4dGM5}1LUspSԤ1Ʋ Q4KRU)Ą9>BW=f4 WL m`U9 0P3[LŬwˁ}ټťw*a^Dxxz6Mw<>j>G㱪Ş!< 2%# c0|E|@ q.oy6GcGN+1w3"7-srٜ LUDLT`|ajTQzjB&9S] pN $},ww;liՁy#U5@@V|}S5Ɋ{w/ˠ' N)Z9u)әfweOuG77oc\H*=Z#I BL)y0žSzִmԸWfAM˂є8KjPsYwXwo~yfqC4/ }wn_, nxNC7*P(ͳbU!Jק,;/qO`ee2:=罝 S8Sꆽyk%S(k;`w+o^~[S꒜ȣ@r6fW~`\.( ]?sܙn */)ʎͺ6'6e)ŤjF)FqJeՀ;m6 [0뫸 ;vo@y^sg@f< W&?.GDM8L`1Z4tdeL~h%]_e ̤r,h*{nPu7," :Α%,雃YAsVeT0+Pf.VUʃԌ6H͝ Ki,fl`*}ye9meUUqpaHIRteeyLKi㢶I"zP:b!H )'SE329+aDszX/T( L0k^)/ u]lD@a%ޓs읗6A; VWE= L@4M:Sj ,C`T(c.xf$9s))c)YJ}*/ FFPb}"&'`Dt$ js$Ue"EeI,gkǞHu d$Wm h޻i?_ǵ[Wdh?O Hrvd & a}m[??|>F A" P X)s+d @b6,ZT UXA ,%U)(~9919]jJHиޕG+*Z%Ci=XPepz~Ͼ|`[wھ?t#)άEE]sBGQ~2l?ߨIp k3X|`<7*i3'O/?3|URf}fBHv?NO2䔝VtrPچoJA͌&;QDT͵Ke;mE T>L>G N=-bH X62dvU(XO`6Q DŽ_4}%<ٛDC%@@ɍ˯VȴtX`rhUڦQRr&A@(\e=YijcD>5%ɒSb6n `՝:?@UyteIH%ݻսۄV>]gS3X^PU-48Sfo=)x2,C)i1g{p0bX,fUYHSתWb5KU彘ۦ( B-|}RtPdK!BJ)椌@D Q/Y)jVآ.FH ]&`Ǝ>i610$fl@Is4iebFrb$~4.ܸ}##)Ŝ-A UY@5YΑ9d9:`)e[W`ccD 3) !$4g1A`F1 "ŔbԬH@pJmS}LpTfO d&T’5`03q@Ynʥ"uġ x7ۧ4f>'`XP%vi{ozv:^s4:(ف'Q3OԙHTT<uE@⋞?0qaڭg7m{&~͞< [ꈻWy^6 ޤ_xoۨeW=XJmg-f|d-W.j8:e(Gk.pp)q{>tveDAZkGOo֝۾>D?V@1 ]Y5Z˧yoyQS.(UV}@1s̺c7v~ӛϾ[杛'O|ѳ'g]P}SGkoܺyK׮_џ"+| vA2hHGV1|:j%@11:'N"fsFNZ̑]!=hzY9yf$Dӹօ ZԗM:C"'GMY#_KV( ̄#o\^?u&e3erIG+xꄙIi2%\߷ ZCrbgQi`9d !;UYT {҅b<0a6D:Zݺ9<~4}j}po}_.uaPT""J?Dyf!2?@ SbĒCjž-kcˮ$BBI |7^oI!9GꈘLhjԔP@KRjd 6}EQB2f뺄JgO<<{w$ sd沨b\A QD9FP.<*ʢfsuUt"mq]tI$A΋EN-S9ռxJ5뺆rS4 H4eLfRfrΆĞrʡ* vP3:P8f$QxengoRdbeEcj2#KUYTG޻ږ]m1\SU]U]}s_l$$!L""R"!!EHKedZ6N8n]vwu]kyNWLwƒ쇭--4לPE5ſavy><#H2ca$H۳}[mtuj h~l0+9"D$l PTf! FB qeai+JD,NFȒb|2jG׻b(22•?꣓Iy~)_ϾJa.agg*_#?7_(ik(e>u1Ҁ-|tn2'X[}ҭؕqP|/=bG!;o?}!.K|巾e^$DDL]XL XjjY*[f0c{!ܟ}՝=e_}OH}k9: x[KL 6~V 9A*t`FsW,6k$!-߻e?{UN)8!pY~ӒF$E1ŵP(v9Uus/A큋;UAaL#z7)`ؐ@@fjU`(G/P>ȰU<%D0n?ɖp o-}3Pd#o;/<3"E"SNڐ%LٚŽ NH ,,tT\# 0p8 BΉP2S :t[aZR'r8 9IkxU8 E鲻 y۾[+n]skPmytmVUKv8a'Q mZfHAupbRdC]& ZTY_Y0\N ׻M|2/f?g~h)0ͩl}T]ԻoߗwUaC¢RF݈gNlmYj5@ߗ0n Ѝ0sUXgR wiܗ3sw]n92Gp[F!ADg`NzZR߾hw "8*P|Rp!jMI]f3IXtC#B$\/}?gټ律F씭UY/'rZ[yIxm^}!K/`R}>MH fڶ% |Xݬʃo'? ~["ڸDauz߽Gޯf,ɧ%X:y?o_=x?O^W~6؜NOtJ>pG^^qۭZB¤V3w:Ǵm֪" *1 .j,dt$ U*Be՟=oڜ̈́rNɭ6F M[$"P iJ"53WEEj @nK$3C$ӣwRcrsppLX.M@0D-U[<5=nKUypEΈW6ug=nѽw ?Zm1.Gҧ+x%W{0!1~Ds|  (H#ÔV .r<~ȄIw'U-(װ<$!Z;~$`HYHhQےn PAHj1yiN8"Uef5HU9LYcUI밈ppoG,[tNΰ퉻diYj؉0# (%iXziHp,0^8`1 2 PtZo,"-9M"bQ91s q2/sZE​;2Z]UMz~ga"`J(ӴB eBZP?pB#P1G rqx@I9˯9cnTc㥦ZVNԖt]o5u]ۏJR;J6fm%Oŭ.n~ko_)yE:*>s\6/2yv%ߟ~W߿爠wWUfq5J `/|,)9$@xKHa\FH9韞fVB": pO7oE5C?ꥯq/"4q0FD$ 0u " /Wo_ F4eNar3' j}CsbNn.fKyW k%豕:Y?R7,  6'I9ejUSbZED fu U%"a2s4LLf΂ȒДX%rt;G"cX$I͖ *gLJA%{9Fe@ =gc"8/K- )b(F7bum7}*mIDCr02Cp \@897EtMS+BmiȠDb $(0ZH!- !aADkH@$JY2GRǜSmr.DY!hSs3!"UڍGRI!/_1 & X!A[#$$ݪ>Kj?ߺ3{<|T_*.MҺ0!{-A[MV v9mX?,=~ bqZ$D b:* V- qqZ,I2]j"V#Y! 8zxTA]./I5=1FU&" b԰'GBQ bo|' Xű)ri-2~~oͯ[TVݷ|_~wiK7])O_[*%+W֬U{~]Ұ'0C-"^}7HxkI=AcM#LP%QhQuI@-HxD7SkO^Ǟ}|]݅nXmvtKDxV0%0uN>l"T{0y2ӹV[.}tr1M^s%@!D!Qݪ!&4euv<IxY+H2KZ/5`""hj5ea;$N4e@$:: ID<`'d.9!ļ4&\ R 1TN jb;SzB q'C9y,DESۍۛ3@긴ZǥY(Nʪ, !HqfHReLDM9$4e~شE!tQ2#1uÀV+B+xF! 'h#|x!=|wj9e~F`'va/(@'5ѣPX1#^?YQ600Q ?.Ȏ,L=!ŁN4kd=-u tv\Hy9zvsٜ]  Žtvq3@ \1H"p}f6<~݋gN#w#]jDnnI[Ӕ8cwu8L5LX@eٮJmsĔјRC$HUusruZV,٤o~{e^ۜ>o=W0X*P89 };>}r~~g';תbk0Eλݻw6N~|f,?u_pzz7 rpvO?>'d]_]o>2]-̆9EڽG'wW]//SDRNv{"Yꧏ~p?/~oxtrrO_#|[Wj il>om'&Z_i Zɜ' 9;9im&iާk:y:Ĉ  rE1)0H#!3B E`ljn@$%9h*/c/FzsHn=¤54^:֚xL̔` -"0CΙ#@7~K McD2MR$@.f +9ZA LЭ 3'DrB'}p|ٔ"% a!6in(a*,ZCsBMvu4C"B_4X)ISU?@rLii^ C "bLGYLX])v̜N,"B@:զ$d`JZ”A,<  !$ԓpS 07 R!7@YD9"&Nc]ɢH3bP<^]e6s՚2)E6 %N"`MAX :Qd (%"BAq8 [NRCk*9X@f.'6i,@hf IڸniI\[m bAw% ]/<{Y^b5ǿsٺ=DŏyZb3 šl6_^ŃpU;ϧI̒ee\:{keHUtgkr]Γϳ^۞СqH q5&yrGg#LEpsmtnOgfEIGbF`@`@BSuf q,dȹ+)=K) k91_ʷwo[՗瞇?'o;O̯}j}ڬjNKh}9^!rH+ݺ11ui 6+X3AɝDTs;@ ˲y C.wˍ\HV@0p@r0 Ncz9#Do4[!9 Q*abPp>q~v#+J1@ھ _xjiן{ zm|frg{7w~=]7O]9ŽʟŇٵؖ:v]Z甄NNON4]N,4!SKm唄 Ww),)'fJ 80%3c*n֒/|#P;:F&v:xbJ+fj 1z@Pp! sEhFWzbߗpǠͳGAW0`f4]\,]|Б)*zO~'wm!%ܹ//[5CF "P^ ?D/*e?~tyjCzwj]zmV҉{) ="[=If&"N%ͭcҀ]Hi 9+6y8ofa pseiOc5lf/~ޝm1Xk-jwa}]{>zhCߟ? ){K6e&T2bjz'Wֽ،!/%JzWv]Se\̗02%J&"a cSaKCߥÜi(Mn}'ܥVS:Ou>= g>/_?Fǒ3q΃zB(EDEZ6VW<b<;/ٓ;Np"QwHRgu.f˝olUWO>?T_K_{7~/iGF,|t~2DA2=XMCa=%?ܽYmu79Z9V[*b%(%E %K(qJ$Ky0@<$ A1X6%EHQ:RU޺iv֚#(EAxc?lYk~'EWwUMݴ jpĒ)-xpWoɭua\=ծGʂX ZwBQ>AkG]Wyu|3F5 2NSVQ#0s/҄̈́iUTl>7G37]PmʍR\n:6mHBL[ "12\\rg "+ }s$4dF@@dBmn iN,r,Oh@x@tJ>亘%pG1沷ћh1$JyZ0$A”AR>vi(f$PPt @QTJju^ј;#EHFl9qU߇6 L<7ۗcRkQUksde%7Pj\C k8rF$Nsa&"3XӘSåo$ͲZs\jv«~10kfWE`ejyo\v6\#mX_Cgܡ*8([kDBʀrYЎ۴֐g)ly!8R#606ϣ,TEᚋik0J,cl !8B淋±0n@D``]f`šiAbCZjA$Tsa\0M9ƸZ!uǝH(w0f% RVZ"SU'v>ttPKrV`ru7-{)-t-IDu\ڈ1E+Y!9Qmtg ˥G,Bl:U'"CCVK2lcUK TdRV+fQ"1p@k{E76կgagC홧p|||ԕ_xζ߀#esp1Y5ڇ`BiEvۮeЄy*}vEt"nԝېֿ^_oe{&">cZ[O\io{~g_~3y/fNѾƩ~啻߈I /,ֲ>Uxuj|~/}÷>=OO `@W6{#V$! = W=t\rrUM"#m \s]l'2@H]ǝl0fRLբT"Yښpw~;;Լ0/7?ܡX`DְL"AU9H`2U m r쨖6B4ծcIUks hfDg dHu05{D6D=><*Øk5pfr(6+ԨԖӞ#&`sc#`!ˌu$9"RqܸJ 3qa2m TɛFIf&1"jCoZ,&1uphWf`hLMcLT;YTeJ*#"uI5kܼLnZkTaA,1J Hͣ%.JH(iN}!B- akl\,nlSέ Af<@imb)Jk%DܭNCD̽c>X~ړPզd/HZHuua& 2##a1Q6DCjѐXKE(}X\ r5#0F :@Wu,́EHal8-R[Ou5s ՗OX- ,iv->t>'D<[k dbt[ W/Zr;D?WkNpڢS' 8$]JL:G1Z4 !xpeuL]D~?S;owӷ)0vݎcFav5dffaG֜Hi_kn5kk<3egT BOS+TASХ>Zf^jkj8fSoHΒd NIROWdcJ̋.۞*zy3li#`!zgݰ!nhA8`œa&s^Ա9Iq4O/╓$8-H0S7S-Uπ{u{5{/?] ;u_|'6^=;xW6!DDZ͐'9?Aą)݅޿? -T#YJ_Ëmz)fyrv0mXs)LJ IDAT~G'ߌ|ZC3w?ncۯ_T_d;ahGo>hF kg׶뫧i]@]UU&GtӦ :a-LIݪaE:VH֬5'av@,DF&lUnZruv~A"y4rrr6cn 7yli*hZuM㾨ZJQ[!r.fKpE'0!Q 1uTVfV fT5WpF !$Y V "x;9*SbjD,6W3{ks1(l$#(KBu3wC77!Bdtb] l߹m4A3 !, WG tW`*NFJkĨ`BGPZR R&F[3 S]µ5dT7 LEd^q1COٛ" 9VU_, qxP}ܰ ð! `m9X#J&Ibf[њ "P (] s{pQ#! $LVՆ[LPTȼ,0$7Ty#CFWo`)vg}Wr{w@rȡ`Yh-Ԏ;6AQ䀩)T57W cZZ}kןzƭ~g]\2L~3<o>䓷ʋݹƝoϐ!s3mi1!☳U&ZKץښ75LH7]#צE$BRt7I]f+!iU@gC5@{jYa_I:HL !j}V ͛37-)c%IgxFl^ZO`D曫ߠ'i#ZqJ]:T_. \IspǾ냅|ʫ*632s2,|OW~7UU[$kLFGp yex<6S}ҸR\Ka,B7_~6wwÞV֧>rߦۺ4of'\<؍e7_vDZP{o~/oZ_$d 4UPQd&̜SHL;`J(zUB\J!"aEyZ$ܚ2q2nhUn=_dmKDgA1d0C 3aA 6RT ҄duptlϵRjc#ƾ_:q'qЫk@ub@ŮO`KU9A}+ p>6㞂thMDc}q5cDU^4^!+@*$ FkՍY4M1£ dP[ A5$Aլ**X?M_,#Q`>N/~|og5[Hq:B&^srcw^cPrpӽ풢,8"Cw!nbRR3ϼ=; _gҶ{M)El5Vej- YH$&t/98ЬVJZfSpJLju[,RŬ$UZ' n޼sŭ[ORpOy"):eY*0+h B XHLLJ薸_R8jMEh#QbR NN,:9?w!63U1`ɂk)H1H]L[1AgZ._l˯Do-UKѷ+AV}w{afMM?[o|ѣH+BNу`}gڟDW0PBy%- R1N{S"]]\p륿~t-iZV@J1pj)FAE1GyVGVnY3Dv՚ą ֋ 4[!RK%\B'fӸ2Z(@a })Ԝb $!s"BGGɧ^yednݾMWOr"izp٦QX(Gr>ug֛#n۩< ÿ*ңwfv~W}7FOfM0Vo?]̧?G?s,QY<]%Ar6 Vb_.3"|˦xtWp<:OndI\[ ouŇ.Z6S[s"AD4=ڪ2-Pgk{N#  "U3Wm6BP"Γ%:aV9c~P]ڌ% d$520;#@JHD 0)!3:WV#/ki,Bdy6kMUԌf]\Zsn`]+^2Wq,=aQjM'553m܌r1MreDP`ugX%Ԑ=AG09[ nLK֚6Cd D#"嚙$XTE6m>۝#0]l/_WK_mw^A~#ԀH`p`G"r5'5>7GB'+ݠfu?R w;Wff6y)(LۥE-á]n2u/} $nt$F7n<я_fP"!sRuHVZQӦvxp^-M[ٍ31xGs>uiw?xxb{tvCɻnH\gL(tQ+ {mSk y@{vSXq 8 uig a6jn %d$ 0:nOjZUYxe'].ZsJD~ސmk郅6 vbT˼tE~ů@#瀁˟ z7_<޼>*h|6~|}SnX>}xZqqkJ,4W_/ؾW3{&o_{Vs͋d{k/;o;ޝRu,D4swPt_G<:%4`}0`q<y_oJ߸o?S9rn/^}b *vӘ*! s`jvY,he+BX= ݙKؼ!#N|Hj,-%!9;4vD¡smQո:ynb%;țVcT)A:!$ L1CmvCR9 ˆDڠHAVi|m~ۦm@ T w,"U/(R $QATV^=) 4V-/:N=w!z$Qm:7I]斛WjN.U% F]ݰYEcf6f  !43-ԁ;91]nnbi!Sզn1TF;@k)dfBTM3^hTA8h [Z@siCwwr.R+ϛ3!HckZ86aV] D 1p tbytq1;]`ud²E׋X%S$q*2 ֪A.S9$;xͣ>%f|p:l0>-j ĩ ਪL}S{z0xm4p\ ST#kdqɹTC0Csh$Bߜ_"t5! &=nAԀ6G@U߮~G"P8^dlAأ C@k&‚!>7֥hffJ g#'b nl׎Nu}?N9n1(Dn\Q26:>`QUejTãa0@5EGGn^h]-7$Sq/>qtoO!Qء[S/ cKK=8;D V6Xitcmba6{žh5y`-0e/3 /PBd=Zse FP+M)U/62Ǘ嫯:Z̔@pԈ˜vvTSE&Θ0^[&l./fyOpp<ꗋË)'دu;m[zԒZ%r?^wt0i*Ngaq`QW'?vc҆:lbEvp$CUUe g0 c۩J*k7=Od؁gP{V̱65@AǍl$.JIO dJ}y&Nܭ-3b`sA|]>ת͠6ߗ¶Z@{6bdqR4`] nF"!:(]>>SᝃwWw͗k)WPCEW7ޱX{D.vfy+{zg[y Fޕ^[]qŽ^~_|sKZk10n?LHTj]W!vI=sE*k> al pb GF*M"1!D\MTc"҃$_\[f;+Ɯ}HuVݲ5wZu5mh*"`"Cl}~١WuɹXer4WMf6R7@m$ܖGӇ=W)[Hj\!&!b#ws6^C1ކg`-!U'·qV15o=_N>OiܳO0V*H*?l^i$DǸ:]<:8znǖ NH:I1ahB1ڰ{yM˧كVw|-p|%qm3бiew,#aurzrk3h8QHysZxKvTo qMR%4aEIxdr]!#W' n:cPQqc AZ'q#0cC\4((hXU I+$mN\̄5v@Gp\A[s*L6$ 0WB5'D%G1# 99F" `;DV\u.uvwm B殗: jm0P[#f H*1[5wgjfح!鬇#if怠M5@Q˦D-1m@ȽU y``jhh/D[fc+!I39.ׂAR¸^ IDAThb aj3ScJ]Zې's#0v /w/D _i=zWó CquໟPۦYm"p"0!PSh=/~Idt nP%` :蕓"S?U8q+' KCy3Dz?)v:1!nypO??ѿ?C?_goͯ]z?w^Wn˔Mu՚׺/9D'R_k[|qf>Z0Zqjf^]p DUޝk$Ĺc]`]5õ_ZvlG"R"3KG$(0Näj.9^uŮw;Њ5p/>[.dXU& ABRvګGMÚ6&?A 3'anBCV*EFD̵>1c`Y!hcG&O>S˛'wpg_Vdݺ;zS?{gJշ?q1o½>YPuK UO|RuC _'Φ=*Ua~9u eou~J,Դaq?{o[yn}^ӔL63( `D*Հ)3 QR!!@ RQ*LNv6vfFd/k9{a岝]$G~~>k8[ #9cZt{fa ^ʕ3B<4w_F u6nmudNYN jeuC #!/8D[SH,YH6;o&$7pb$ ` $Bas%y^o`0TH1 :JUܪ rhGI(CD ՔsCl  OCviJ<Ѐ#&g7CN 4FFG) "'BFL1w@3#"CLMi& CZpbаj1:]V[T[Z`1%DTg7CFB`Z3S%OBBDfH#6֭fifRF0"" Pv͖yDbèQ9#b2DA H'S#6ᆄ)ds+Tk%B ]0VN|2:&~5 Q0;Ĕ5j 8 h:'5S3h!JkmMZPԪ^bխWD$0Nx|8N-w-3Mppwg[pviY]K@VIXT Q죏؎q|ֈxs?|ѵ#!F:W{z8-|巂n:0/_㏾f1$U ]mOn0ENG/+/?TeMUؖ0\Q'9 ."@A}ҋ{˝h{{Y>{:\a[Sjk v}Gol.?\_x}nkWۭl5|fa^y<RgmdǃSd񊙥DιE#@!SdU7C۽z@ @3YHU P` /ꆂN'TWl q>QbPlHȑyh5 d ^B*f ؐC (b hDL Aas#h(¬ձAbf`EȂD[Io ̌*0y#E`B3"wl3I# $`6֚:!"#Gf59Ng4Fbau^RDpsr !l1A|R|!13%d wd@Ww,L9E$s'pCC 3ܩc0#'ə))mZf7n!ۿt8(odhSMN-ηW)u~K^?\q]~(Y)G@O*j{4P8"Qx ?'kc1.mJDljMFjSkr0i77cNF_x1WG  Wݗ~{:0PYddXytRXbplc{O>;O_IY^=y/|_ן>{. -]_>{vΔpX=X 8L]B$1qj9sX=90܉ eډZl@)$4ATkL,D4za<;cPT3K&g\wNJ! SӮ l>y)%#34Mz뽻T+c6'te%{LH9b6q*Dg_/,>Ëj0#Q޻Ur@, ?<@[P-OxoN/2tw^^\a ) 7XvmcRqRRp'0u:KEEw[Gp(و4]OGw% AdYMg2_3#"fZ5rي3kiO@d55f$s<H1euTr!b$APBg=)1+Y=9!+¦ #l$PB.%MiXWCZ8!g$FU&HD3#`]77DdF 90!ak ^j b:[Pzr(gs07hHvwIffAuj撄 BÈ@\§^Q4iޤep™X`&GvfroShJ*np}$wOE\8+oNyq|‡4 ,xKWc-˓np<x9;Q!6F#VH> |_?vgDd *pƞ,?x7.?،ϵ'/}.!Kڏ}vs˿W'. +uRa:)-tgUHȉ-9 q1#j@Z Gݦ‡60SwǧqrخKZêҢKιycvST=@@1&gۓGD0 ?lŗ_۽ 1$N=m`DW9{酇zscM!g?/<wU)NmVY9lCB4s]p??'Pr_i${aLs`S{P`/GgvF);_^~Χiw_XD>|/OwMsNaO ;4@) 10_#rf~ %ʸA~/B sD,HHNL@!9\ֈ~] dUC-Z Z xx L)IfBG6$ ”'^dTsoF82jzDh jbjl^TsF66#`" BĆ`@ 0}T "@] gLyv{k)@"92pB"G.HĀ DCt B-),"!%]1Y:D[ӦH}_Jfw0 Ad0͚r9I8P@N1)ZP4 PhFk*S+Ϯ^됰8=!ͣSA1qbаBqNT.TJ"ˋ77ÓMLB 8a@="H&bH ja+?8|]GUu!/M#1<қq;܃ݍ;f^iޢ?4fܢ>[Ϲ-"F$( 7ˣ90$uƒ/R__=pOgرh5~{{yԒ<^^\JkD5f;])A$F>y/^î7>~B≯})g:;\j{nq+P@PINJ^D1%DXH98k5w|ry@?0qHʹMLu]!@E13vOrv?C o3z]yO}RA+kAh615\.]E\?7KET=(wV)u^]|paej{x?ϼqg@vG)mN^Xau]5=nmqd2#$`B["sUR ܼ̜Cw8ǫս8 `^>17sE`W0BV[4VI!0S*x[ySl~ZS3aZ BjFulĤ 823m8}"$*,n  ™6 )>y3F`'ho-F4/Ѧ3ūjUij~Ōfܣ6L"%I֬Nh‘R0Vkj]Wrf'm.D͊#bD^ʹ:զIh4HӤhL\1r LHamBE]jLsv8>=)5=BrӆRq1&@7Xd8|AdADECC+f0Hp/]ri `9Lc x;GsG  aNZDhΙ^E|?[x}_ۮ6䨫+ف2u$Wvwwt{Ͻ׿:-p>~;VUhDO'WV͛itGpmf?Xe "NL+ŮڤF< 1s eYHQFNpi܍u:"zj^`/OC;=Tӧy_<^wY Dm(?:9.Nw`DU\qsqhm0 ̫).W` !ÃS{vIV7`Ț;zLSIgvj09-|>D xehX#!%$fjl6,ܪ`N˄f "Q1i1Ry@Z1喍G!0dDdDB@`f6($LA& ;gg3Oh> ""EPUV R  D[Gh0aPDFxx5mSBF{H@8["mI9%բU6>psU$DD9&ՖX$%d&^,Ijr85UwהGErDU#0E# qf)!&J5}_V:`tfL)%8 mB #̣H9h7.NB[ 0C7¡n勯s&=xϮu@닟nt٧l O ,#r5:x:5WӇ{?vm1;MҽU3/^3ϿO{o= IDAT;P>-1@+Ϟݝ;Z~x=~_=1/|' /Ej1 {5uk1_\,#y>\m-#_BV/>|W/<{Y*Za9p"B: 4}W :ꀳ*$Q6u$,0왹M9Iq$ 5 !'J)Uq0 !:YX 4MS"Ek@wyqԅdv`Q~T'u$@tȥs9D敄9V5ӦȌfn> Y/2,L9L*IRfbnSⴠ\ɒ0 z 8R@ ra"i*LhmBU"L(Zit7ZYXC3j(8! ̥$΂!f[G@ 3)yԲ9y,!Zj]lj : yE(%"Ą4͊8 87@P nP9B,H$̼FR)'@6jx$@=Cd\8wq7Go%y<""}'οS;K?UYbO3sK@?xW_{zѳI]\aZ99Z3ēEonͦ7uSz9:]lK R4Ϝss7ivG\x̭B(퇃f"qŲMc]/s T~hʹ;E8D8'ċŢZӤn8 1;S^d*4-ِ;>wԶ!Iœ'oV֜'DsșsTSTfܴZU8j"`LMdTJP3LDTtq?b[Uc@*I@?6LunomKcw eӿwvώrwzR ;/<ʝI$4nWzt_XJ86'$¥;O?h PeNH`i}2E@\}>{dGo_έSm-IRy 1t<ՙEkuPubc$0RMjlZLPfw{`h~uZ$ˮ6p^teu?Re!La0ejujԉ`HzY.A,$,"$sy/b>۷Y$""`D 5e)At Ό"C'p䤛J/b\(-cCP#\xZMp8^fJiu2 p:M:G` f "RTIwb.x8DX'3n\n[9ZfX;'LJP"b86 $IQWG:* !BDPmrFG ArS(u][t='yߧ$-۶Ɔ蒙Ew6/Br#a!,2T1;bv'@ "p-LiHá =:4f5|,"FX !%Ĕ"B][5IHl[)il6k@a@@57|-!@臡_@'T"t]3~)ӸxA5ӂgfD@S{b!>^_?n{/'Wr3잼ts.;?] ]r"*̫l|c{‰H2{p.IHG s@ k5I`T1ŪLu W dlU 64_. ,6y ť[-W]Wtv|ĩdN^p[t t>Gw$Ǜu/=XPb`V"du D(4Gۈ{*ږ}5IЃ`t2l!$)g=BYL©xQ:ҡBO4ݬ8ͮ0K)j#X\0Y_gRLaWnV (BϞ= dqD,`4g;Fˏ]3p@ND@ڌQ~gYxS=8"l‰v"V%9#p, EZ[(ZUoH5Lƒ3a"93YiT&dAX2B8B'_mp7>~9oDnfuu[HgpX)z;LOǭ❟v87-KbZ 9VWU'Re[`0lғ,W 0dhd5޺fk?[͖hDѝȷ|8'^+"/~/ONuo< ,P"3ǿ{֯Z~çaN]T!On^_omW_|DI.Nw%U?/)Tf]цVtwW'i ~ü,N3Ѳe^D8v$:1[޵6]%ǴeCGי#:Xޚv5]֚r  m!dFmZ6ݭQp!]ȆY(?}= ?2zU1KD_e5X|xjcnZQse6xw”crkMY]u77fTVsoZwA$`S]|Za)5&bKY }ZUc, 1Bdw/T0dCVK<,DJW̹絬֫n貖=9n21L[ %"E5 .<7 UK 8}{Zkd#RdF&?R6,.]( ̇tƚ֮ε bRX7Bu潀d^@#`)k!!U꺎y628>7>\>h/̠Tp77밑WmR>ysd}:/_?yi+G/s_|/٫/q֫'r"tTvq2ލ7Ї1bהRo)4헧tØY1=oߦ޽C*!6D̉յwDD.(A%d\#xzO_VɈНȘamKӪpZk@c˛E i\MK@@ 7ht%"8®IFɏӧ|ڝͫ"m ]\q92Cl~yoxx/ó߿?:ojgᐃD({ HduilSȀY4nnU{o~اuSȂ"MZbļ @!OCLk)0ӊNrhmP9߇~>`[:Zċ(B!1ZC`dck[u]QK;h%CF 2%8 !: +3"c@'(10sA  fؤh)&蒲')'@C-71:n3]$(pX$Y޼bPUwB!'XX+Ƥ<BM#Jr ޺!Uzf?лr 1tQA$!FtAC0Dn&!wD@6sjLfR)!r\KCf6'1{Vͪ9#mnnbwQXtReG^ єAL:I=`%Z=l:^Qdbx8U}ST B@@rX8 ]"1}#lVr\bGf˧r`DFBzGTG,nHnGf=eCq밡)_t-yHmGi62+g,>,1t02pb:ڈQyw JHm: 4M[c#Y ˲:N72K(QHjLu(%ͫ<<81)G-0{8Bnr: myx=2=yxVIeǯfzwۥ_]lm Av0t rԪ|'#_W\wO^}͋ g5yx䃇ݭUƭHhU[ZjK0BD[]4 "eX DFк6@gfdv;NCo,bf10dwnf7H)%!3\_]ڲ o٪%L~GGyY/Za4ުJq1ikSf 9hh("DHd<0q(H( x30ɘԂH[]koz\ЫjWmz>,84 )R%(@.HHsf8uYʩi^<}6LjCȲM11E" kyab+vS"HɔiNӟ>M7/_#Nt:I FPJ.sbQx "v/ݵkfL=C'zfj֠.斤; IDATwל`M)%\@a+*MIaM[p[&Pɍs_.pHTrwfsfiBD ԼZ} HtYtJ|a Pp|s9oTiB C0a0sSC0ZbȀIzҺe2-qjFV(s6$3Mw7eIv| 63¿q1%$yqxfWIvoc|_=|:0ºrz;`e/(@y~q75k nrR;,qXOttݍ p=90lxԏ7㰅f7燃IUr&U<V-r"z}.gKef;YUb\%K!Ede)Zx>Zs)  rs358޻w[ofk0߽^xEY"!K#2px;(BpߎicQ R@Cb"$ŒjD@1& "*,˙A(P ![9!23Bjv>êݦ)4qJk9={CVL}]-K!ϥx[evԄEwOVu w7 gbZ^s,љ/> u0Fb"vHk _L8v-D!:XwG$<{1"zo3#B$Տ]]Y3 |q׏W"-ϾRon,QՀѺbv{k?gW7t'*f5%vb"9+ FFBdf36n7MLar'4|r;$6yl'}zFrBh)^5kX>Y+zwdHƘ1$ C ;H; .NTkmM-yvUUXp hmK~Yjs4Ӷ1ZiF13*즈jsीa!Bؘ5!1Sv{*LWzA-M!e{}q>F=_a3OԪrɪfVᫌ?zͱ{wiRNߏ"-k Dl=\q<)|IDgӆS€F`.!H ؚ'}篾z]KqLr:_Z)"h<0K Š!&nմWi䱯zw#f7))ZnonH޾ (*kNDIDŭ#QBe-64@WX# KU vŘ(2[`@{ό'u=r@("lF!ZjL̉X[Yt$ZcZn,@!"U͵he]Z+sciKi=#.Nm7Wi>78tB cZy|u͙iș dY[|xa5; Cx._3qA=;(Ye]g"! n) |^\5VZ+%"HḒղT cNFF&8x$[V:0aZ.B!ZZ'ia^yOn&p1#"K0߽^KvL!N+6m4 nֵA IđU;GAs5KL8Fp&rQ(}(œ p"*[>ra hݲARIYo]բp BL,8dpd77SEDOtqf7 F `n7WW2>՗ҫGʛa`J_C_Ӻn⦛խ@'o>}QDQ:CGo^>B/zu0;w/z R Ъ9>a9W}nH,m9<[RU!’~9 cT/ |pqV65u.!Z/v! _ )f#h][kD)! @ BewaFĮ-H[[SF|&A8SIL)>gb$bkVc`͵oOw`Ɲ2#25 7׮5Uxό"O{  4"-HlkϵY1 Y)@&!9GPoڵf31pm@Y1Hq`!aY[U/|6a ft@DpP3B" <a1AcW]18eHĄP]żR~I0ڛi!bN:yJr!9k8D5HQBa!s)+mK)iĂwlCdIB$,|83; Z԰Uj8ϥn PRhc IX )v%26ĩz>RUCaJHp:ת_oiKȧ1DA"^ܺ+0 Ѻ!u|tx'fZ*:\.BjͻiWwzGbFBmͽ;  fC yуW@KC Z$Ny"T0B]ϴ{Dz.Z rdԆyZ`v^c`!Z0Xgy]۫/mIHz).Z$B'Od؟x{<}.0￈IZ?t%TkkLFDN 6z$ѡ#vKx/{?SӐ]H$ JdRxx 3ײ>{Bi!!8⸑a )cލc31hh3$Pga2 C1śǷLHV2lZ(ފH"^nغҵpUD!B!"p@&d3:# =eis1!6٦хb#޻Vjd"ܬAjևc`a^w% j^B4Ĝݡ)+5Pv~CnC!Q])%B~'W#%AWwI5)^Z@p$O~ҖHN,B|{Ȼ{$$K`VzCDU=ntc n^[kMR v ̮дһ#nz0kLGqk}?Lm+2 ?/ߦ <OL,Sd EZA纔V[bADJ#9; efjfLf_(Lؚkeiͫ8w2bH&25<F?yY-28o]:9jO~ gf߲ CAدH~Q\$8%~G\ <_}qn/|yYZf,!9R{Ҟ=~"aTQ!} 0G?>ųëWo[]ZwtPs3C;lGl^_D˲R6~C7Z`AէSq?S л2Sq?W *e9 ׮];p)󬥟 0R7f{o 7\J1, Zf^ry]Ր@7R.0 s7X~{3:"[@ )]!Ēs; N5 AHl50q7m 6F c [iC$B` IbS2E(sΑ2H ,8cc\!X &⮍aH102P b%$D=\}8&7j IK+woNk馺z(QCa||){o͐;?\]M8>w/7oxΑK8 q3mZ_R΀)}qi[* u-W75m>Q~t֪ۗi]]KcT5a1~80B qr,] DߌZE98^D ru T !ornk8QJ]2u]Z,LӐQ|ZS}[J7!(۞@IzQ勿yD0;~ۻGHx%ZC PDcL)/j ZU +s(D e@u-i햹l7bwieƨAP ,{$԰ >˫a?_i^撞su)5-Są ;zz޾9USߵMjnwщ *RҬ湚K0"8_u0 @5kc}_ f2A&"RvԪ Z^9Fd 5+MDN%f3Y~\/N)~t\cvѡſ\98b퟼:<4Q`QE~2~iPЪMVL|nuRsH(C0vQ80t,&%BB5J}7/2ZA5tB `V"/$Y )8ͦX Բǵ@D]պ(PuL\k1N`}߽gZ#:D@߄@E(=}oWD ?w?y\oP鞾9f IDAT=w_y/ݟuwoq,Y +YtIbTr]Z^q2RxN8ZJs˲4ι\2ӔέW}Pr֗PZC⅐b >r}`ff4/mb^VRbR3"VDPPPC%"#$fFDb$&ЪA6M 8jum5+q8J6 d0 {qXXA )/5,K2ŢE<0"u_C1%Zf/y>'">=  ϙY (԰+.9i)~|uׯEcHHV 0ƌL8γnN!C^84\URE wM !wd_3 z'hd IjPהDY0 yTiBRc7 0ϛUƶ*8E}pu&ժMp]W00az" ]kB96 VmAATjPM\p r-V 4LSMsTLsj`YM*0Bpҵv}tP"6j++~7;8YV$:;WO.̪)2@.'R9'.M] t8A!|&F¢uuĨӒݼ~kE r<|x|o); TY.+(H Prlu4kcv]]}w?%,Ǘ1PRb`UKyIE9"o_]]u}x?\w;#Ȓaj^skp,ia&0`9W3S `^La<\~W ˵w@vf՗n}ǟ}y4.zͦy߼do޾4!j A. S`f ,Tuy^ yv0{Ui˲zfB-\kCE0#q"K)EՈH AHjiN%8`ZiI)6\ TcoA6yΐ:Lj۴Z㇍e@KÍ4LLsTK񂨦>Rݥk_V$eXZы y>wr8~YHU!v'")R12ZiG R9[ݬ7nKVjK)\J)0six3<#*:S*ŦqQs{x$(I ! K񈤊\W[\&O!8bd𹊠9DN T ##)4S*bZ]^4/5WC\+ 0J P._o׍ϥv,rze:#7zR]vD]u/ڴ,BVG$`gm%wObvBV#0MK&R#5g5\ um[seaBwުH)jRI"1;JƋ|Zo/t2 4XM&O]nxB]byۯnw-n?Ϸ]|rۭ2oWۗi~}ys}ڿx8l;B IRH\fku=wN8K ^X$n|[#R!űwXI>?J54c Uj)У@ONNjcʉwj& ;K.guo8s0 sTvYr2>1 hM#K® jul*BޑU R̆|h42E3נR0xԔ @-1uFZr%DfJ RUYsPWJjv/>^V].?>]~|wF׏Ә`-}LEHlZ@O҇o UMMC>ŧ{JZ%g@Ool zf?ݾUvtRt}U!k(} q~-ٴkŪ퇧gȅ0ǔ˦k؇qp4+do[u]pq8΂;5VP }l8A+˼nכt-#F׷!\nR1$ M`jjՐ9>DfD Dhn/P5su4/ 2\uWT)ׅػsދkIT8zOFG^M2tqyFKmZ2$:v z2a.yi,`f>e^\zu<)]ǯ~~~O1iYo3lHnoyHc}hs[5. ֭ĉ_52k\ʈEkBۆ@ ɇд~ӮV>\7AԚWm嘗0i:-~اժ͋&ve7R7'Z\kɅJ9ES5&ұZ͐`Y-VXNIA!e"CACaΕǗxsz{>PR"(4>]5)W; %3ȚX&VI|oQyQ 콙\S1E`![x~i{G?M&JO ~?NCblfLps2+.g<< B&>|ۭ[RqߴDj3L}ޮcc%L,.v&vu}Z֮iYﻚkciZy4D ΟY $$6dp )[1³p"3 GH8yx 9/:,9Nqjjݵ>ZK)!.%7mx6i&4:lݭD |1XK"$厱z뫛~\9)gf UbAU߄ !U߰HΪ!UEbF9(4MDbBU~_N?~cPq`K>NsJN bZ!>n6!i~fkxdT-žQΥ 0fXw}uIy)){`Zxj m*G~M]Nm8^VWo7[ny?ϧC:& D԰t}#`#]j.{vN$lZTQkPCbg4JEfU< ͧ JJ_=H RI7P9@ y)jBaELd|{J__>/3lvtRu^敧O?zuٮIQ.x È춛pyWwk'⁀r\ya^NjC++mתj*#N8P 0eN\Y<4]ՙ-TU.+nƲ%h2RF X5Ǖ8#*8/f`fXb@,jbSV99fjU T@43EZo$ @8rdPqXG;T]<ife^Qk2qOܲjH c\rz>McYNK*Pa!+$R!2ӡs]smBKR3MӺhd!4[7ua&03!`|TOf P M51gjaCSE TkZяDDͬ ۻ~|uy몖Ff2R ("rA\FBV/7&z?zՄp}q^qTSu:8.^):@dBUh!RB !ͦG``aH$rNk=:r[˟}W߽|YǗ.?뫋z|:_^̦|}{7߼|1|AV.?)|:kɇ$?<n@V__]/UDovkz{nZ]ߴjFݛW7۫@~}~ױӥ,ӜJ=s<sFS? wLUՁcw1+h U+ ZVKFb,f\9ֶ\i -@Ĉ C.jvqt\9$#U d^oiK@{ VN?P+M*WiNhDYe03O~x:bvnc iv0RAd̵fmZŮiT;)͹[@߮^nwj\־^]vn޴myL4#z9\%T9aYʔ|x)/2Z6Qr ; MX_mGa]žԢPjU̎[Z Tkq5]ψGDʲ8/%EM\HP1Dkj {^貿@HdQ@UU0@#%WP/e!/֭m>}OӈWW'`-?<35w= \t|_i]]}rwjNi\_ V@1ZbwwQcR+"[fAaԬ0Zښk 2qMd%7?~{y'M+ enqNҜ΅ y6D7L+F=T iwzy@V* DA_g02MVmlȖei&f:-sc."i\ʔ_76>ϧnCDcٴ-'.>Ek IDAT^ʜ $ y"/@VK!s (E"$jvnwֻ Hr8ՒS9SF\w&n!3%^n..񯿻g ;"Yx?/OO>N/0'_\^_Zt>|<Lvn4usuMݥ4'fVX1@0f͹ԒL9gӍk,~Wc;GGu%YpNey2k4,#V9o]˭qn^֯eZڮE—x?>^b 7M{"[6nit|??vm_Kaewպ:/wŚhuE|0ל#S AghͫUODY󱌣M i[/>`ծisMC#GaZ!B5PU ZM!8眴}9" Zd#qa 4+b0OcR DVĬ 2>+DGo] TLYӌV=Q /",~ 1\<goWj:<%dysjr@Y+:y bLԮcJoonw*ozr^uqHUMsPm笉]UEQDT0bElv-qRKgn~)WtQbVcZnWoWWo),l՜8$%2ac"̘2΁8A qXvwN;VjAbvdgi%Wo\k9+]ZJ|{og&BVDETH$f<\L0+h6""DT\ ^MJ^JN[X_˴,Ys, 39u0,c5&giU]5_~~vWݿ'oNwvMg %_?=Xn{>z{}s(+}z}뻋nޏ\m"6QD<ΧaYRɵtn/m _vo__.ڦnv6 # yѴLdZG[k(گuץԆ(Ď MuDeMm]6Uz}yCi^i/ye9iU[ݭM3mB }2夕0\ ֫ /.ZO̪gL =s1X Y}^6_^Nu2+Z+iB(AN-?G/ q-0E /W۸OtO_U)]^^LY/۵x{br}B%ϯS-F 0Ie0je$MSfs]p9b$H jZS/hX@PCХ:2ZU%iƫÂy^GC!K3P :D@R\3깥A<ͺ C"yʦ9OU_ޤi,O_6dal`xA8 !UrJRV*ʛy~ۿOw* Il'Tg^km'Ι1HVMzmtzpU6wO5UNJw>.l# ~~Xu$z1i*mh`HKE3΄c¼iQM}㟮޴8kLgXBG8HbdJi)1|pq"B}@ܬ{ge*"&{:`*AJ=rU\"Ro݂/WJ9v-8kn}o`:PaͥBnqB0HDF* t!!DdO]7o~|_vTmnb1)`fNk2ͥ Q5W%jXz40?hd|yy03LBKã.7yj7ϩ0_?*-?* qkdbv@" 9UYz\olί_<'\Pllzr@auq笍wm0r!Pq )r!ԳD"0vptĉq"JRwJ_bNVmw ;UbT4.b1YG@| rey^eU^3R)).X\*w{*wQfM&I/ѿ}ƝPow[ޣǯ |o{nqg^{c4orJ%`4{h4.T$I9㟶%Ju&sU(]|r;"m:zGjQץ.7-s /7,e7AR Y^|/b9tߙt:`S3]g؛ ,]ruJp#DctnQORAb.VPb*545]]fH5ΐ(uvzK `(i$d :P6%#4V1P1z}?EsY,&Mۣ1p(_:9%$^/z݈$ !`mP"Αq!`azWzS#eU(!/wmtʌ*R -sqVT LGK%(<qD.diNcAJtVsɑ#"9G͵8 <! j>>ggr[vz9~;k>-u!"#0zkB,Kwh@}}o$@@ VBdAktV;[ףz!Umef};^Vr< vP?S8Pd{tٴMƕ@rSmВmI9mg4R!Je]|#NZ@wy$:ywK@@!r6[w92a .U7u suW׮5}D".t%E)aQ9ym| DKƅ@ IGăG0ND^rSȥBy~AN0)h G{K{ގ^k^k<,\t1?Γo+oo9N7#hoTGC&xY?w>b>OrH$IR%Bp@p]mm`m*OٴL0n;c?KE}V R"o~ ۺϲ\"Ͽrִ׊1͵4;L~ 2퓧/g77<]+W7&nW[ m򢨛۰ԛM`6.`<!p"A LȔ$ӪR01K%Pet\R$c$iI)ۦ-xl1ϓr{̦i]Qx~pZd:5`<{t~^NfmQ1uwxgTZkMMI#YNw}_λ@`.z(#:? N_pum.0?t!E6d\FGsGAgGkqXԻ A}:y W7+=Kt(ٓ.*t&9:˵8JN1WoW޸԰,ȰW]Z2+G @|I!1D0Fb$ŘGz%E @$UmݍT'7 b\ "Jתӷ$||@YaD"0r 'o XDcL D)iYUiLô&cJiI\_V3%ׯ8259=s~[}G>^|^\_ڪc$4cD6RY$'jXeoΗƭ\cBNP7͎wA>}y8Q<@HTmLTUw-ҽހƣu7a5{d\{d M:֮w}QlhbRͲn^[Zk,Gvh`B!)TsXo 齃зw^=}m.&CTK9aӯw^ƼYn7AK!ۺ,։Tۺh]UYŦ_^j+^],Iu"A9<:8`vKboo:LF^nVw<Ehs]IHG hĤHTRLBxA՚d2;WJ ]oZHy8q|r}ZWbۯCp:+HըJ |k̈́=~)@۪Tc\B<պt8ڛ ;D|ywXc E"B pt>bD=  "@4sZ$mի1@8zfQZm 1Fl_"E@Qζo4; vMfYQu(2.Յ43&-ZÈ<KԒXtn`fj4g_}ծo 8udZ_m*;#C=Ԛ/ O!ޅE1CmzZJaQdTcxͦDD%4څewv,kzeM&duQ|bLFg&zׅ@]gǻ7HMӤ>ϐ DLLJ)PrP9Vv7\覌YDC% ҝ-}wR_ٶ]71!4y "pB0k-8Nvuua5䀀@QL$r x<8 GBvmw Oƴu;byScb`ۭ壇јk`ߛ<-A|pd/5'Z+s!x"`2+OF yc5;`Scx1P1fԭȬLuƶ#x1}$`8/4Чyb~77>}_\igiRe"!lφ#X8/4#hvJRǮٻz]nĤRE5{\x|4ǣ(jۄgQ ER)f#U]/n]]7;ƞoV/k|tT|ox|0Nd9>+7J<yf]oU&}_/G7\/Ax/*|j:{xQUUj0Y7+: 8L nnBTBvٹ۹Y"Buz&\Bls0}776J9,*6pP1@k܋bլEu4$ed:inmߚuojG1DqYO "!zˤp:ޓ齱02eBYgb"y{~q' C"ԩzkAj#GS[L2_9 IDATZ϶oD ٠6@ׇ1Zq@*-9D Rcϧi{&eu֜juի zco`z=T1fEJbER(EiQm)p %@Xo2rBC.`tc4\jEV$${Ô).h_ӛK rBUƮ ,@@Zq)r&TLuX]gD1=a ]O/ cy0)Eg0IR6;:Iu;>^O϶Gj]"KY"s7ֳLq!$s{:̆gO>>c IذxR>xԬ #nEJZ&y6&헎z_vn岹fmsy_͗պDQ{M_y뫏O^ZͯnZE,^{O^\iYm]\/RujXTZ2B[$Q HVfMGJnכ_lw> ĠExr6J<@FRhƊێ 2 ~uqm x8)u2T޴ڶޅm!H(嶮w!1r7m+>dE۴H)eh;FL*Mר=*P %%b<"y&'`B >/)(Ǯg=ZD,{Ϋ, v9ϒT./_16ugLy8xoqq:N7u`1|+Oiꢵm Z㌏C Dܝ ;DD E " Dd0ZQ\pb?&YiM{ޮA]i:0`ND񛚔VI9g,(D3U RA"iJYV}s)T1}~3?`|}EZ-2I휸 Y):Dʑ#m Τ l2~Td)tYŠa\*Rƻ2x:{lvo0䫵cJp'DaS]Tb3!@,ʲ޴9D1FF>dFc<%R.$Fg[@.p)4ӓ6%X ~BO K$-aQ-6[:"';o$ͶReEȀG5&~Dg[=zg\_ mׇ·ogG/o}ۛAx:*T0xck 0t#Pd0=8^xVi"Zșm@)Jr4U6ںQwXjSJƣdq*ͮWmtTE޵^h~,=|,ߛv;D,rZrȵ,b٬&KAYuU"_\"@qiLC]k1E1r\^ݮ}M'X|:u]닛W\jP&o5͊+o^oMo#`!"Q(Ԋ* .&|:[Ӻg g䄁R{O8]-ͥ{iԡ%g nb*٨ȊD^XjݛGE?0&aYٶ5oojX&]l]c95Ѽ۶C b3N|2ν3R@1Ħ<*T.Fڵ !l] &1c $Q OsB>J!uO^Br ETj:䶾w(/=J+b,W/y =y $2T {%eޫ>W3?k('d:Y5ȕt\ozC)2K1\tBkVfw)k 9!"IqnvC9EB\ZLkkǓg+)  1"C1Bst{9kBJi֚6zbs.(1-T?~t1 `,XwGI1c2 Mׇ^&:$ɲi F%Oh.ip;=<*#j3"c([S7l?e#1y24&ϒޘ;ǰZ6c l%^>kٺvIowmRz:uȵ=yօ'ؠ0$Jiw7c5 6 $p=MD&,IQY1F1~tpn[RjzcOt'ZkR]E'EԘ&mT|VJ!rgN Iwe^]g(z䰬D3ek\u{Xoz &D.֮n,K.n<nw&Ǔ"m Kƚ>{t 50Fd<]p0"H},~'/?bxQň"?^dT￾\^WYny1d[}Sv_L+\??kL[ f$`tdJ$E iMRÞ̢i;^5Xc+{ޘ|o6=8v?{Gӽdz^r+2R )3U,0TR({c p1 ')(2!"ܙ1 @y=DR`]U{^"D@3`*0ifƇrNr59` 10ΤdB߂Nԇ*I@$<28#R.Fhj֧E_o"2#2RE.ٯ~o/OOPrLFܻ'CS'// =cFcҼKH.dљ[zC oU_6]XBٺ6@w31:JS5xo<^&3#\d 0?O̗Pv1lYez$cG~נ~R?X? CDkLa}0/4Iu~om}ZA9/{th 8;MFZpWd~7x \`s7fk >"d" .mǘ $Md{c\u}$1@ )$Cԉ yQ C 1&tFBG-N9BrA'a{'WMw6z\'D)Gb$0(Yʹ|W ݑ Q2Bˑдp:`P(-iBңqyp(VATZ{v: bnC]h$bQJ::zl|qD@$1\|<ȏUiwMU ?[ H:Bxj_N|Y֙Ȣϲ\%ikqv2Wwi5y0G^66Hb@ѣ[{{7 Q{!ϊvv1Nb2B1J@1rktq-}"Gq:UƊ _7]UG_Y%ĄO!Rq?yb1 V/h0xtX귾|9 ]Mt]pctu[*S5-~!j17F'vy^jۺ!A[.XWhv'iԑ8rVhmw\!u}*H1/z'7@0)(B)UvXg3j&ӡYc_>XX.?xyrE/2y7 1vx_Ť!/?އ0Ged/i׿nЩ̌3du 7}yZ%QiXV1Q$12;\$NTR%8cn_LD "QT'I} Pq[- .i-F?Xh!Z~)'&┦z0iWw}oYei{8:8-Tz=y\^ӏ'y_ I%EdBxh<9-p12v@sDaϟh{zi&vnq-\amh vyz4aj4ba~4;Y2)+;w]7iw I/2].pP$UI`և8׎;ɪA77 `ط862~`˛۹sYC2 \6 n_mU:<땖\Bm>JO7YE'<ܬD뮒*ϏfgR;^t㣷O(%R]d\Ɠϟf8p6c1??Me8Ŧ^֋zzymoVmS3LqmݭvmW21>2ή;I5z(Ș"i9ƚj=&S(]Y)h"p0$> z+i8~d흎`xLG߅VށU|(q[e9׮>ku)W{okk O}}MƋYUN*% H Ĉb΄ 3$ ш].;3l"2雿bp32]6{ֿoާY"V`ZAl|TMݸOv RrdJU(Pت+'ȵ6BH0EYh#d@bx y1 #8x'/B!UKX沈,Bj9\HhD""8gXx|syP^,MhÐ9g3 ,qF~.:q1t&I\|YܺrEZpzVխ)cfɬ ]KlATD bDFXDׇoT6a=\xyQ9Bw5MO֓h|p[ԺaZ5:橜O&n'i, *ݯG~q]"*.ȣ[((ڈ@8@DgA;~cgni@F,a);d:ϣB&+i볍߼qsCIB-›?/&'j&b~Wu "lq9~΀Պ:O2041(Fyt{ Z-(VOk$3LvR(\s >MpwxLħ=K`sf=2^/d2Id~Vۏϓ$_ס4$E^uίo_TQ7ƈ|pg'VƳ19;V: /9m̻fkppMSjGrv2]@ x[TM8"zq%YtDV߽zs|5ȳ4k \=U#80)F%A%sD2'N<9)"!aX>m1T;TH, N7G$Sa2?jȀc IDAT=kㅂ/{n qHwY Ϭ[+W7 ,E~c.q4Nڭ[䉉J*Sg̺$<v53.%h4[hO2WvIY?zn1z~2jjiunyJbd-2I@BzJ a㈞YC叧¾B!#K'j9R"0&68G3o=yF .<9J,bB"׍eQFKsy`K7hog+b[ m\ny>_| j 6jjo9/$"J &6괫Z_ ZY^̵Vώr$Ag.rLf~R J<}QtKiWl8o^n7i .\WǼ< 簋~؋:[@oV܅G x>9fʸv8Kx=oggqYs>Yimc?1f<7}+?Y3&DB A0;zq2}}2ký4guc+{>g/O%%x:Hw+ [hc8 ޽?;~VqHkm 8"cP5ٽH/C2_{=5>~>ǽ`qF9҃ERًxyesƼsPb]Xt!invHl66l,'ۛ èF[tǶWn^{ Eo7ػ q|>/WI~M^G =rd 3!$B$ f-qs4orɭu1 x $@a1N[#ĘuVs.)2#iD PpOV7ntVs<.^z@ DSf4A IdN#JѝnhgupssX+~dZY&$p)M3wq'Bh@X-OSG5x#iЇ=;^[WFaYZYx9͛oP^5~{gSjra{ЖU͒h+E&~0zimZdX+Cz2-kݍeUW@ F($ʲ?^-9P_"% _Ͽ7݃wtGTLA92hb&Gf)8nb8Y[KhBιMYGl7[l GVWwr+Cg]#8,OuGN@s. G{@K6ްE=ejS%PESE4Bѓ\5#V+3[{k@;6 9S~˳q=KE\x4R{wH)ڦՍ@>N.1tb__OՊE^JmYw[Q;kDŽGY{(㫺YNwUo-sLj|z4Z]nsf|\Ϛz1MQo-gŕ݃rQ+ըzg˓diʐDȍ5z LP2`I.:"G="1{ːh{&uK`ž5FFk)DDd[( yy zuE$z#L|ٓ>ڈ1*21YI` 1Z?Cy7]I "82X,i5:6y9ˉ$F.lN^69UΑ3hƒi2' gJ9gxr&0 n}5}[i@ZGfbb vrz~*v£gp&w嶶d1q$qE`* w.Jcp0Hfp{y:6ʖVRKXqDa4i$s/,J[_8?;׍E`1&MG\?~sVuaGQP1K)I^*L |bC$p xheRfB"r-ҽAXh)C =>OWUT=D&Vaޡ~GDVjŧ4Se\a媮JgMI7 ~vĐ#[.y'Q/f|-8]T3//ngSX4[U8XWN ABM֑'`HfҵRFQ0De=x x1fCdI.X\"݅,! "`a['fs bVυWV18U{"!p/Bc# W8y 8;=xN/8}2Oպ1'on3_I ] F?R2L$ ! #@I0N]tB!J.Ѓd z lʯ)L{vfͅK2ƃ 䅸6i۫2NܔbvVuRZ6JlE1[.`L&>xC~|:F/mnAr~Bt_-tV-Uu2]բC.|ăPDO[i_DEp/} WvVM[d2v>8~2 G:ݯwԛYrdkUp8Z硐U1M0Α~h$v7/&[_̓a$X*hop9^{*j.Wxܶ:Y􋓳պuzu$۽1A2d9r!$gC7Yvv/|9ώTC,0䱋cydxeB5M(U8\Lժ8G@lY2ʏ82揞=ًŤ2/z]+.AZ ps'd YUGXUJRUON~k1Ns 2%㉚F Br7;{i(d]7Y͸d97x*,{rɝwa& M>g 枷ݰO${[-7X+?o,.lk:Zk˓T7~oY,ff@(zUHUQ?trcos;,iɢaOTQgk$qN88^uc0 BS+KDDpqeK[\av8p]eY.lVqoࣉA 'ej:B̘g\dLו|,qN}&?{.v(PU{pضwz?] nSB,g[b8M|P{:sEQc{Vͼ(tn'BzV7lY|2:7tu; OCbȢmb6S(UkJkڸ}pf#n=y8J~۝l1M- bI e|uF|?|}R"AVsǽnߢ-g(1T`]"Šsҍk< vpwgmomǘu)$yZUY)gadvgd6>?Xj;[~fy8˖U0 ʉt|l#EQLU"-F71s-if.>~Z/?CiYJN;o;mDZͧQ1sy5UוRœpY6e>jY P&OFgӓtv>xy6^cA\+r~v5`6U9].xY$I"4Jsm֦~=~%LPl] nUfQEw(Ӻh\E`zyVߐ PIg{R,cp $C*ݦ +*trDO.Zvq>E^0 e6IQ1kjz/˃4 wQރ{Z<9@BxBþ'2FHȡA=!䉳+V1Vumm[s.Ƙ( VyEQ&,)m#k,c=q΀Q BhRr@OD^H.c]6{r "q`_UyfiԜ<9`S {>=Ǔt Ug^;OY,^7Oڇ[[79/Tcg{O>yf!e4$yt8?wi1>_u,L= E3Wzz4GJNk6;{av贮|e6K$n=\~KoGOkd]z)ێ7|k/ & (˓6,0+ e8+Uʯ?-@О-TT".C`ș %g"𥶆G'|p' [z@Z;/U6L\Lr@f?<!^p 'bkG]d@AtfsIDtҗ7ʵXJ6:o_^w!,>a?Vm|v;k{K77_nw=+1~>v9 #zDx6.%FhY0Ɂe4!cV{H-]3tid5#3M*b[y0:[~xϝEN/q݊$qN^q8jm:lZRpmrUA\7-e5sQ?On%'Q.ퟞiX L8iN:8T,`HnNgWr}vo |c,^{N.:w‡<=?$M,̢'0U~sxz nԪ ỶqAZqbE'e}.?cgNBC1D 4Tɘ1V%s]RxZgy{<5>2Ɲ]X+;,+i/;-!eFasoj^ y$o[yk:.+o767(a L'ZҸ'鳗^[o벎xEaΡ!$5Z7Y#"`U7Z( ê6z(e G2$QRLJiÀ!ju\(k}yS+][Uj@D#0uλ0Xʐ[CZci"Ы[|1 #wUfAh%H")e۱;j?ǯ߽Ϧawkoƥ_m幫k݀7n|0ׯlYSy!؟Ԛ[bM 0u̥AJ{=y!GU˺4Q8'&|ƍp9cUF}>oJY~Cw6i|?pZ|PE%=r&R4ICiiȍn ×ӕTeM%g1&ςN76 Ewn~Wosmo{nyVQ5K,wxF]6A fy]d YyGȠ,N:>9uQ<Q*Ef%,muɠJl2>]\lhQv39C.(͒P54U70UQF٤9c֫oYQ'փUwptd2\jeӧq@cJO'Ly?;yFo ӒBW5FBY"@@2&K3Ι%;GQs93*UFuxsNMƷ[\pF .5ʠ. 0rdAHeow26Wd^OU轄vu"U/iPD7Um^2d2[OON}/^ @_:=]G_zVwn ZI&Kɼ7Y`Q, 1p"eGaԍB8rZ).DGY$<Ē4(#jE@_.WHފ0W` mUi `Bq"% 8yEa"ɖk[TW ,c4+; ~^nnO,+ n/?;ڮ?|tn1Hz~{g7IN?۾zEShssH˅unA\:?,OjΌ5 _ !cH^Yy'hy5K 8'Y H! K& տK%O_(p5({6c:XBej1`pUNϔJL-)hV2,j`|7.\H o1J%R%S\plZΑBC, BD(ѹt]3.C %b]Ux0"fB4K=pD!X@^(I0,M"Fcd1D2Wm yo<Q9 <>;# C`@>G+OdK3GOγϻL敝4Q2UW]GW Ȗ(vݺHɼ̲l !?{W=K;}ݾ:ky3&xB@@ d">ƉMFэ+zogOcD|ro{Wf%lPJ"aCst5݆` YftcY2 isIp8]ooo^;`娘ƛQ$[ߜΊb4 Q$f^7W/]=88ٸ=(yj0nȸP夘7&i4zQm'Bjeaw{`cMѽ.isN'/n%!` 46G(3'^+)5ئm{ݙ8nM0!p!Rգ~ mLFC_mͪ;NM]~IgD{t[{Q!4Bg=Uь"[{X_UNdV7.L %R5t]MrbZd.H B(by1$J; ݻ#S(2d"'_Gd{|= 0xuúEv> DWӋ+! IV٨v" L!S4->$U8.R`s?ЇpV5›w4&^}|b6Qd\/U<9V|rutvX{^Ns!4UJp%i"$a9ֹSȥIٸ Zc)֮m;P(DY d$hMK$ DdhD*k} Y)őgYYc1 Dhw6"H?Y ;?9z񲺺3M|:K"9$V)پ2e|FyC_|8G)7o\L7twDT1SlK-Zf̈p YZWd&/tbJ2W/%w`GPH8c| b9&ɤƢJxffd:mװ$!.|djt/{p צΧ7.bmdz_ڈd w޽ >-Gr~vvb)9<^5y筻o?X]\(񸪪n .^|+/zͪNTzgmQx2ݞӻe]6ǏHU5j&r4* RKR^ E0Mԩ{F Js!Ue|lkgW];X?8oek Nʒ1<p޸DdÇJɛ9ևb\EaVo`u5 <h 9"Lj1D!$G !CzQ^y@A?HjݹUdyyX/B>Bg 0og'Ǻzgm|0' KϫPRpIsΞw?XB0K .g?u3ӽ#c?_[]ˤHһ~`(25Sy?X5xkzѣϽ''CYdLlLY4I3+*(S8Or&U'& ! c"\%C3 ƺ}p*Iij!"x (㜙 L8qb+`1xIp;xd]w~OIyk_xO6nh?Ə}t%tTd*. 2Q.8SrIY-)ƽ R-'fU|d{Y*>n%ƅwOJ[帐XΰPA1kuhs3KsUN[L%L|#)y՜v2B~ŝ o2RbڒDHllFA`{ B 709r"H _}r/ #6\ l T Nw=.lfw"^{sWofeЕV\EQ Kvc:څW.CMwF^A6޸o=ɤp`yBCmv6LI}h QT7o]iˍq9(y>0ޙ9=DU<|ٗg Ǐޝͦ!IR蟿v9 }stLcgu9.RmMq@ hw~W2"]i[j7/gIdudʕ$Ɍ&9zfcDg k磵1eR7vSDpCHPȢEoJ&Em3@q"9p#֚LnFtbN\*i/rڰ9^\l8FBB?C _[@&dO&|~oqT矺0~j/۟}vk>LA."4 (M\VA7&WDh'viz)t 9 i.ssLd4DDD>(Rg8+LDk .5[gJG$QT˟ bǎOO!cD@)F"۲n3O|D|ccC;+Uuxv^}?X0#C:'5ƣ<1G;%CQlk3֭v>+;uU4 L!jk{CK۴1H)Pr{DNMƷ?f9-T':CAD*&RoN2.WG}O'3- [YÇu[Q0R4qz;kA˹`#Jcbd2+I՚NtQhBH#t.0c2q|ᥗCw~x|ō{}Vs!EX %Ǻj@Ó}O)c꽋^lly%Ni1ǣa])`7wBI&E!fZ՞w( U7Mi;hՃцW( wtp}ps{ އ@* L(w1Z.Y$yR, C R!M'|c^n@/x ,4QR"r(4O@TY"/wt3|c5"83 Gd>2lؽ@CY.D9b'_^Q S/"qYI-} w?IXϤ'G/<ˍl2zr%}W7yR4Ku_;ymsK 1)'Rt|T|\cH{d |Ց5YC$p79|""q4-mtR$c4}B ΄̇cD$Q)}$1/Oޚؖ"`7 2FO_0.cIB*M7}W+G),ɷfh<)Z{k^fm\<|tZS9b*b0!N< Giو +pg:0JՃ̏\s??mUJ{Y^Njc~;?'[_>}ů3a?&$oUb+fb1S02!JIAd_~Ӻݙmm v9Pt`RfON*H/URn=,&)'RY fscO&GZ. qwOMcHko?‹8ڥHn> hpio O9 WΆeNnnLt)}7n:mOOTlR)'e!ZD&rp YoAozeE? z]|`h'`Uղ cyOjh\L`ݷs;΄o6C*u?s IDATP|e΅Gɓ$Ib D3\'&2q^On\j<Ø()9Fm2R1B:vN/ ˽(A]eAynoEw|D^$2q+0.IY>)Oַf'r AdP,[QUnUgw_q曧dTv1+^ft]|4u3-F_w]S"*ծWLyI`ܐk㍳@~pzׁ"" ȘF#!Zw!P 'R2T ouQ$xB~H$97yE'><ɺ?aD @(6_}`4*8]ݾzӎa |E2^v]"1Y5ߙБ3`}A&!aAcp@ !C:.*LrrD60ږ#,no_y5KAB1)Ba{aW>^Om^*fkS%֋m]vDYwo#* 0 BA$4wL^yjcZOq}Η'/_4֬@Jʔ 1E%/;uxr6.X~6.bALDJc7 *k|ZQ.C`^ͪ_36&HR9Ɛa<3ҢF)-9C;y1Nvv%xB83޸Hޓֶ3A8)ݹS*!BY;0oDe \"@h=84@~" !x#@E92kFLX۟\Cd zc-jYUSmt_|<>_\zp^VQp||Tґwؿ11n$PGFI YL配MHX֙$Z֜ F 댱!jioj?k!GN׏UoI3˟FxV,w# A Hq$1CRPBށwy>R( \cb{׷$p)8tP߮?62"(؏@_Jv .uS~o|_yڥ^6Mo#cBS(bP%4J rOnpWut60, yY㑷&MsbRuKguT psk޽{>Wʵk7_}zz 6j 䣏GώO vegm d%)ƕMsy> ]5v.fv5%Vqv,}xz4/vC T}"UB@[cPΑ.Ri̳dIQ)DxoC G%cZU"WFg[/~n *Z'&Yd A(.GI&4EM[Ĉ_JP62yOooE zZ)}'OF?D jqw'Lm??7o~,yYU,7i& dh$م[] g`aVd4+r2>彩Ϫ m$q\`LZ.Fj8O+C,Ү!Jd C cg4/$ɕYdNm=D |`IE'7ޖvxg]sL7f^ M#׃dR{kQ((2"#H$)"#v oXp{Qp Pq?b&/׶X #c鰬U 6 c 8k:e Mv~敿S;?bQC\v.^W߻lُC-tՆ{c|4Ow ˝M;x;8b, $ P1DLFgn2!Fs}sZԍ8!E\vmb,F>-ojQ%*UB}(GeVւ]* fۛiimD0DQaL76>7lG2ggR2末:spw.\+I2VA%iBn^w޾ `hW@N$ͭ`+oGY"6Y&IE1\0 8)3zk\*d7kBgIl=6+gP|c^ E !@X+<\RI}|b,ޯ=OΎ_yүƑp]s~ƣE"B׍Juyn꾛Uw<*_ܝ')[skjkyZk"A?t jtA[0r)0/ !D.R91!eO\z0w^KyADmht{re*~s'g7z~di{c+I@ Tde1+5 ^2i{d? w$A0dpB0 2@)+G+LЃge"Ec< `12 0^Fx봃5 s# ĶM'tM,DOZUO_ dӔn"_Ѻ͊tx+$$˭]mXmVMumm!x\P{Wν;])z<=]꼮Mo#e` BkC̠slv 'Js ƍSuґ ̐fM娭L6J<3qї"Mg㣻1 !J;{Y}Aؑwvh[RN<q HPb,@N@HM2Lg'%HN1@FQ0@ 1,<=>")犴<D&8(&X]1*<:DF$My,twuM !Z8hw4fGU WiL)'zO_?較+6dѓWߍ³׋YM3)xYʪiQpI;_Ufwk;mwnd'_WN|ҳOn8|t$n-IQ!/;z Jsc@"%dtZ`<,8O1xg) GXGX`GXɤCoz>&"E!FX{n^],kk̀Cx28@62bĎA'ڷƽŀydu֑cg./O&[w?Ͼz!tXpB 遂 nnfUuݵkWMߕܣ?9? & Ҟ^Dz(btyVx eNKzѻ㳇YU1A&BêjPcwEΑ¤[F Ccf}4]Va&dx}+S12ǂDc(%L@e~S׍WeQN6f. %ɤL2c Q YDu};X 20#O5FpJ %kBX$#Y}X`gBqH˒\1^, .'<0"8E:h+S JH@<ȳ²ޔoG{~O@羝no4֫ahOSdʩb)"5[z@FH4X)Zqƛo;}N׿W_ ~idBC&*VӣOt~vv}O'E֍f|<;. W۳u\=8^ WI]vmnTe@7hiV˪F5B|=\ܾPֶ2 sRp S}(FY$M_e&|T^7- hZ(B \ E{:bp$G$- c% DƛA@ )T1FTDxuvXƅ`mt>B )ɸ2DL`uU_Y_o #RH7 `Q$x@F "J2cB@䜝/s(tywnwn$$٢_5#, 1)Z^JD42͝Byt8ϤH"I@MiؠB{_S^Ʊ .jDO\Y櫣4i#$x ?^DGp DF3LQNC1-ҌF }I[&4Jq(j{dGn(: ?`k]=d'c7y( ǹRJ(AbX,P2XU1- "t؈Yڀ!m]$REg"Cx3ȓі⣸`M\6T׈ C@ ;鹣zY5gd/5qFJEIcoo9#XUuy|V7Nް/^FܼuN,ڪm_p˯}ͮ잸ģ?qZe}쥭+.m^ք[1HA;A@ 8tRS$UE,c-ϭeY,?1V,0KEtA= n~>{tQ!4{{oY6Ph|WvbZTe׹7jt EY'jJ^7=PEA$P*)d)I @@`8IJKFAgXPb B֋E阄.p`%d֋c{{nǃ՛KEoгG`fn"XTpՅH8g/+XPp#r>y2+_gpxw{wۻ6 @+(:b) ֧qՍsfm}pQU][$LZeT04Yj|ᥧ/#4$8!Z}a[*9zZD~CK367LD99 vw*9ϳ鴬'CQ4lHR7?ޓn{Ŷgfs}~Z-n)pu#.m&~?JRY+H7@ ӄX抲E$ԡs$Y֝;;B۵B T:8i h758!P-XYX%<{G'G*I"UΒ\@ `.q@ XI0 HE1T!BAYR_~o%iG6F+g @Qd,TM'V{bDS#) !̝B#$tat#Oh<ε;_}vz*IԦIt}}ueu7o\zXms|z*7<|έ.?4o.Kt-ree-0eá0a8:5n+M+V~q_|HjrZ<3>D=ɦUp'*:k~/MzIl!+1;ରBPGY CĊhk^Y%Uc[ IDATo|K^[]Oe+FI,d:mkZ %$CcE!Ucdc-+WWPiyz0tm"2$* a0 $@ eF n05u/kxq-;{o~GWs)PdzR,MN89FtM ac2 uEKm( 0 y?~sE?+D'(xNe /ƹdrlgZ-\ ~dԻrư:*˥'Onܽ{۫{S$ż{gб-fV;ӣӣ8I8Ϊ&$6{kyo;q?Qk|腻/޸;2x(HZTO嗿vIdWE&}۴bu+=H"HT.[/f$4F X;"]/櫛0_ ʲxE *G Z?`A(Z<5,ܢd/e0N Y' ƕUW6;G=ҵ{{S" 1`ہuJU( *; s|4 b R W#;tU5Ygrky_'\Y)'ÑXX v^&چz-֊(cF& Hb/$x:}uꗗSp"%ֳ~ׄ?6:GNg޻d0,b)O5eu\o zX'MgŴih\ֵ:J6MϦeK❛/]u^# = NΦg%*ں{{*Yc'ZiHR(c(N" lk|geE?+Euқ(NWnu{ά"\ؾ~ +cCktV7,4ˮ^[@訵AY$Gcd!5 $``y" AX"˥A9)[U {, S =3O!څ2Z||=CEֽϬx'?>E  w <= {_'6W/nn$%y+í~5gAͲqkA幎i<ͽ1(0MzlQ,e5~4=t,潾DfYT|O |JO 5$ҽDMuZ.W~? $HNNJڿq K'v<%4i !bmCֵӦ[X {Jxzd!)H_iYRxF`I@,Ā qǨRT]Wmre0,fw 0 ΨքGOď@mcaЇwN uהeg%h,86} O߭]wk?񥽕Kqv;87.lJ]~|]Gs:^:qr<>RE]y9]x,6e(^o?yҕ$_.NTˢ-(LllYA%ڮ);;ü?$I7V |$("Iiˏ !1N0\kw/~>Oc-Փt~05d8`ٶmW􆴱9l6ԕi,u ٢80X%ca/NVaX(yv-Q(RHAd{0!@]Xb` B kϓyѴ/bM֙CiPjKzD,nQg7~ {'i@fDpb ?/U E(׏_ Negp?O!2䙾p~>W_D!wtpv,FQ/mX9z|HV ^i,NC2 üm6֒u4zt=ؓxK;]{Hzv,X"Zf.f?s?&$v,^zg#H OX*rQv1|EJb1& Q`Ė͢ᲂΖ0vyp|tpw{gUݣдPPwlB0B{{ ƹQ 'LK09D"˲ٜ}, twD @ A >(3 :`@8\he}Q5GwnnkC{!Q?{ӥ^ЬN."1[(Uw^NDP]yҏD S :æ&2xE1]{oO~h+ZFVO]=:;7]$۫S7Ƈ~kwwoo^; 7ݹ٫UUg% B(㏿ kZ֍ 8xK^Z01ItXvΆEU-umU$uYiQUM]Vu't Y6c2E8k(>>&]^*ӌ;\Z0-쀬&bgx2"%W7baB8Yt:?-7MIb!eQ:{qg@GR` IS2c4(:Bj10vΓ)yY2Rc:=r4XAvvt~v= r1 1z}@O_s{e"7 w$G?w=JퟖJY?{woՂeMA |>VH4Z]XOF[~.⥽c0&8OgP*.TRe$͸Bqէ W^Og_et ~K|τUQll{km]ڌQV֢UgbeB>ZzX H xr, <eg.-J(tyLg #-]Ǥ鲲4muS ҥgb297)|w`:!M-?|_Q'Q%;  K薘%fߵSAy G]:{qvRmm\ڳ8Ob.Dg^|&9h:?=+Ni}}dmsmHlL@ Bۑ$tOp Ah+b.Қ2>?G//ܸ28ٟ[8޽݋<„B]k(uYӾtwPAѠA+3{c;[ܜ5`nUu|o~/4hi3al;_ (Lt ID!C8S(Ӫ"!#$$)B @ee   cKp,.]MzOf@pvgʀՉs#*p9<^Yq5eUϛID_ȵQhD`Bn^t`Ok]cG i DpX xO\9%Zvre0S&laӕo<<\,[' /_sABe=Y]յ H#Bv(@/EnH#E}Dޯ9=_οo|5$H4"c;ݓo|'qpk˒[p…MFk$͓$IT^13gps_D2GNY[غ6AGvQ.$k*4̇YGqjm5 ;ڦ'HPcXJҦ5mYRElcYTB^6"y#o9ؿ(9l:傓4 H%*xe(*\βut]˝qműfg1Hycv  Js740}s0Y{ ZP̈#ZO#XoB@uaLC\KafS(`i+ͽ\f797Y(!7nI$@[lȶ/vu/j& (C 3`}-c bH p AbQuUǭf.A$Efk*_=lYo}$w&x Scc^HM($ȁWBc<";xVHr1 w ^(|ϻ_{[\XKq@ӆ%/~Wʏ>1ܩG> >g?/k-<ƍPTֺd/㶹vgoh٧BGw&P CtObhDkt0yO \.N0Gh2X˩mY}Џҡq>ЬЅ$InEgE:=,8ZnKS:>?XZkMBGl \.)Ov꺠PJH D< @RZ71mHb邐23uF:l /C@: iV'͎3:uV!~ca5f`=H#Cc+oPafW4ڹ[xmiFBb:Ko{ǐ͉0hfe=+f[=9óm976?'?{pª`}*?'JWk@IWG/?;аj~m6ON>.63X__} ҇ Hw^D3,66¥myN$2S aS!Ե\vECZ Hpj'z1APY=oaHiٮo?lmw\T 7Voݺ3;tӓz1-dE,xĐ׮f hȱJ/nNφJ< : h F(:&Pk0Fؼ%ZE"DpGbkM & z7CՋ2=w!dU,?<Q==zm<@v(ॎ"I%!W5c !_AmY*`Gx<ŵlTn~'i2incO?۴zC'/7QVmERITT4zrߣ/|UTMjmMiTJ&(L[uwoYlbxʱ],눗%,mǝ-7uz%ɶ]y1t^;'o}3dGY\,, ZP4`Z@i(냳e:B@ܧJcrEp]l 4m b0%kbZY{K vƒC[89 { 0gh2Y ' RGzDYFRhM=hnqF$- XւcI!gCH!ЀC聊t;;/<ɄdIOO}0(y^I3+' Ub{b:F1K/"r00`_C?]5 SF|Mo˗|?~e366Wʾ$ )4ʳ(K"jHic)ę'B~>Zd`ִFK,iW{\բ9 fY]ݺV3$֩(&IFZΖZ8adřʵd+వ3B]^7 6tJuvB&m6E$zYVe{P:`h1-wy/JJޡTŢ %HA˶vI#htDB5) H m礐p2H( :Cx%6n]dPB;;N$Bǩ"Cv$K9+M@8jWG~PW IDATw5ӧZ02vh:[籃Q70m3Ҍ4gV:EE"pxamա,?LRj|H r:]k|ng?Ё?oȰoo$:ISZ{wwBX.Ll[2=<@@L}ƓRBĩ+έÓ\AҎ'2IĠb '+: gX6B$р$3L҅LId3ͩw^uDX.AP%L+u/1{^d@ .,vqJdHӤ&Z V%),C%IJ4@ޡ! SqSg 0f'K G? Ӣ\W>~佷]<,hr8-+Uq>uL\8n߼qg(zzS\7@@3bcw{Ǖ??8ENҗ3gAD Q,`!Y=z{jA6! ebG+;WoydeY?< T޶2l0٬]…P;Y7qٙE r=EIԷD: ;e!qY5mѵeeg d0:w>`߶$A k ن=aU{E*gp(I u9$^"S(ȳCY*eܥA$Jd;ռ~WvaXeh=!05*PV"|]c݀itaQ7ldPS`.;h,(RcBCqVB/HZb@$9Eﱷ(tܸqp^JB)vz1-ts\ˊfuM0n٩m 2Ei/}mmkems,0ڃh޲<7)8[nvo`, =6@ -Ew+ |[7ڐ?=ٸX]zܗpwgo$ AB |)pe\skdme-͓REum؆^/ U08<nA!4b7! gνʼc~ck.=wu~{+<\ZƓ΁D37ĸ_3[r,0l| -XƳ 7AP5R2ba.NnZ򦄺2`uceumm>Zn2@*ληօ$bYV8Q&DY SQ/E >7^=PLS!7?쁻O߄f"ܸ_)͘,, 28ƖtYVvUrz#T8t /ݻ9F"@O 0?`~dᅚs|\l.mv7L։۹=v.lqڌG>󉧠r޹qlF?Uվ}5\/ZG ([;[Ʋu׹Ô-ٜxNΓb̳AdPI u kE=S~OKfJJ@tB"z&qYAPLV vKLBk~eޓ=d뢃4 E MS"i㸏Duvlx /l+oz|٩;qu~1 wnޘ*DH"TYw^Ծ3W/\\YǑR9˳a/5du{E!K=BBRn\CnZDB Ip+xʗY巅&I(C_c/X,fsP-f< eY~ۺǃX CXmHܲ"Y~e*oܼy{^mלNBv *γ7sdX (6+i˓吴Msmǚ' K]5"zpXUmRv ^:_,l ޛX%aqkfVfm]];rGa@ )Y2AXE۔ S"Àa[e"!EaQE!H 陞{r뿞55 =[,p!D&9'EI11`$*qdr)breLY-VNj;?5|^${)ЖW ݶ9y9Q ߹ KWzM}#KPOx eJBbE 0(BeLkŭ$3Rsu|*Sod*(   9t>s~Ck?|r3PG+x.u>^{ϜEVHf$i3 2gfescaF&:  ]ucJ? "nbU3z,gD%s4Z=&`o<:u_pZoFB1 >ab!% 33KF{|:-L$wg4kJ! +`Ib\&Y}#R2 m34v1ܿt"u' '8cPqӘ ry \o*P /kXzM^7ǛPzH*A 2ɿ׎Β{w?^#*g[$..NsM9 P 3yzǴ@DB)% !ԴBZ7 ahH4QYny~uz!ǿ=[$$?ǝ]̩K:aZ]d])zg}.g&W,ɔȥʺ?Vva%-UOM.\<F(Dۻ:/3^D bnBV8xq>D >TG;NM 2EƨQ6 IJYt .;YeH<7IĘRö(1D\LPe6@cciUE:LKmsWm^o1IFyny D$qur= `(%Qu:\Llln.ǘ|<|_~㓟"0XߡU5SyE8] ť "T*9r>#20aCSJ uMIk2J. ,@3v$11tLF-y*@U rlH Sb:܋/jqH6l|?Z jfxiڇE=P5|o/t/K wwEi=vmͨi Af ЄdjZ^0uhQ fh>"IT+[1·bkbPɬ"@2]#+Q'@!Bn"=Fټ$9(Jx(2BSTE;*^5=2omHN_HJ[t{~`y剰<2!`+VBڏ~ž(T5;U^^^j1)BIUd ̰T V/{^SO,DJm3?7 zQ]JcCs^O7#e BBbD& bS5gDžؙ+FO K9D 9qp $0" Fd6W&JPUڀh ` 5w/9Xtn?߬W镻Al1s0!n3m|b28%]K&Zǂ*5{\;ݽ 2%dxVH,ǞJ޾qS։BscJ"xgh tC8KFLN A{`%AKR DyA2>Zx)$B^x:gr+?s~o[)Tt)F15նtj9֪ҹʌ>ŋ1b}74`նogOm'O5]Ư~&GlխC{GNy<s1S=謘 _ ͍EYfHmǦLCH0  Efi7`4"!b;M |laUK4ss+Ogf(Z DcRktX @_oau> ) \j0F^8B[sQ`QHArDW-F!R@;ٷa@{Z΋Jŀ^wpw.t4}p}""SD7 ;,"D`68BpA# 7G ^6;G[2't_:|{!EDՏNJL} GX&vw]Sy^j  E~tzJ%Gâ2T!*m{29 VG\ԑrHD&ò$P$B $50@u68?ҙTGPIC^5E֫쏄tW?|!2Ե{]N?䧟{0Cnj?+/'&T 2 Ucpe#a3@9)AVBWT"%3Eٓek-,0/Y5ƫ`H滹IPҴE{'e ֧fɨ' S*Fʔn:6((@SG57;ҮFZ!3q!yCFċfvYOSsҰ&E)27 C`H>BHqlB+"3gةQWǪgHkQDԹe2 "~A[AdN^`~%J|%$$U} }k@㽤F eBE}J)i:3#gloSɲ]Z!u'QEvumo q8ܠ7x/tN1Xֆr{?čfН=^8޽r^M 20 1cv)ۼc)f}Sv-`0"n;;w|0(yJaqq4 ;0ݣ| yA! C >ziVtI,!<02@ɳ(r1HdH @j@RvhqnY\pzwӶ Rr$xu.P|3QBkP q2<!CRdpAP7k2FgeA W.*SC9_}o?luXg40*L6;KM*%0,#H: LDB@!R?pɜ e.gz:b??xZ)Mq$|UO ^~yxOnY!;)*mV* TnwP & UYiYqgRE&zEӴWP|>mMI$B{~2 0w|gykg!7XOBB>xfb} P2E} m QHPT6Y$qu\!^FqT3 / A>غbi (N?8*_Vl̯־Ђ:HH1w< tbYuU/2_ۥ #="3HR1۝g*Mzӭd.qKk7ȮՐ+Ta&I+m `s\5"d#ևl7?m ~[O'#SNv9:>[#JbhEF0:=H}gj1ϠqfP #D ymIK|[8GLP&]oay* /T˗̦;Y;FL;PŦq}Ǽ,0KLcb '(F2#0Tɻ%˯>,k!?[) J)37ݿOOxu.)bRCXalHY I3$!GZyRJmf,&H;] H?;y!PҶB"fRtE/Q IDATun/?\+@'DY-i1sA&/DRUV`#Cڮ1F <:=Aۡ!2ۡA"fdĔRi:RTsrhA$|BVv&XAƓ u3)kD@҃CƇw't_K "0W~<}& 6 ɅLvĭF#A63S=n|V1էcR!aw [.\; H̠ȑS#$.h =lEb4i27zFߍC\e]O&G>A!$T^||s]EfhqAq 5J &C 1a 8xr:Y)4hQM/$ :Ȋ;Yfķ:ˉ%M,? `FP )HRJ 1Ʈ0yT}bm+'wI Z՜-(WGͯ:f᫼H<,5.6i ]Qv 5y&(0 2(s,G1x)0k3w^dC?$.P̭ͩ +,N0d}u:۾GֽjYHHF_\DAFzw iR8I1?]nR "zJj:)A@QpRtCr:<'z o 0y0$@xM2 )!H)`LU?r{Wv4"!bHX@)U(3aJH'n R_(G`= 3m PZP|z-?{=BH1jC納BR׵lL:eF @fJcW7O=|wWxDAy F PĈ#FHyyF^x%hwĐ0wP7p aTpgTPޓ@F%X mzֱDQo&;1 b$mg@fW?t'%BDO_~$# lc\2Xj -9 :1`maՅfx$"I k!  O#o9}8V!hBӼdI1&bVu 8pʺ~`;sv,)#R d|\65t7i##"HD,3Qa;[quqgRbP:4=2))FM|wN_v։?'fsqT3~;`l7U]U)һ>x1@!6!}ZJ*1ݷy8}~ob=A,4YBT1`iBJ}@` ,p &h;@J@b\rpd$`Q D]a=!S9\<9䣪0ɭvͮ\ qRDHh$%$ ] Uzpm[7KH1`ti{ǼJ%h">,5| $J2}+Q fq(ͦQ%UC36XN(d60LF/]MFVzdDڀڡsE# BV㨒lEɀ-'?/>3ZeB% m2J(wb]2/8J(<)baH|:ŏlp7RpY*f4ʝCZL*}Td9som&1E%WeiLYujP A`d\zkH&Y9@soU"E!/[ _8P %"j}F5!e&`!P* ޖIj~Vf2__EX\zУL̞H#p4Lf^؊ |c o+ol>͂swTXp#nXfŨOWp~Y^ՙw~/4>X8m1z;@,׉s1H(8y{Ơ "7w=|\ yJzK>m6 ДR"P!ekCJDC1bb$D lLc```BK&-b4ʋ)!*@" zH2;*Ɯ n x>X4 ^ayH2ж@,^ `H]@b_?٬V i2 SC>-_|+ ;r͕+ ŠI(T,l{,z CTS=j$Fs R&{@ '^G4,3BH#˶k?Cg$1e&k G,:GG땏/_}~L$_2 y# pQVؙ.k;vi"+BH6:PFMm*3.3pkv.nm5D" "<5=+n=;YͤLH̳J]?U닏oT{@wU-G,_! `CE "ǯ@W4P̰ A0ͰWEwl82y 5 ;5xwSdo¶ˎ⢙ ˳&&}v ]?{}bQ#To$w= x'j@LVd@3c|>(x3U$OL $,Q]}c~LB = txB肳iM( A}dAP $I$4:YDLs; )l]E]ɥ]+Z@ 0 ArH @1uCi:o8өW2\w1RRf$C.s6\v~{-͛ǃ^_7_.HY?O_Gۿ3@ CJRIn>]Ů̕C!1$ @HX=H_ݟqs չ^B%8}8ΔVJbLzs Ӳ }M11S#>sMa; z"JH޹3GMXS(MZ`1u$,%BT ,N )D$"!p "hL{e&5CKB!"(L>,@.Aw~l;]gnu=] :WjC"Gp-ai6@NhDt06=x ϝ́&5&ve%Ly E :ZfjF(u9̯a B3 3`Zc"QTƭyYrrl$Q^),3H3  [,h Bz # x[wjo #9a_]4wI "T⫯z0?r~̈sv[/۸U &`11yYBTYb2V.> Qp.4l_wB@ Y_ڏl+Ew IQ>*Fd?XϔvS?x.I ÏWv&a*)Q8M53UJQ9M;4!:S"DIJU,ScOT 9,LzS'ƻY{j͕^(>`XoqXւ IA!E!ļ[.oΕ܌449նg9>rL3+d[F*k<R/!#WHD"  +2H"!eQpDIXb:rJHBEKl)%f*Qzhӛ !Z) .~l zdar$$. tٷ[GCVavBI"Jm}m Zre Yl|1y7W,{MJKK]geyqJ2!j,@PlTTW_>o_>X0cr++hZ R`=HPQp( ֓ʕ< mIA,v&q8y^x ,i,~y'OrG>;kN Uor6"O;Kqza)u}^"s3+y_WB];x)xx[; %2&,BݝQ>.*cTCp[MWJU+w΅о ? m&~sc2MC7-ƥ`z7ٙoۦh2j\~BG%a.d J9"DfZÛHt+9Y#Xߎ!ޯY%!DSxFG8W&iK!4ej2'gyyf=*ܴ'ʲ=Xwfb);!&BFH IL@9#[B!`!eȀ_+ f`2馍?AFtZk)um۪{S}_;zzKlx  wNhw:r#Qۖ6RɦFRlcHrn٬4~+B=S_ӓuӒrZ2BBB{ABŋU_b;2k@@ ,B/ !3!ngW?.{"1v!'Fd)#Ґn<r-G GD YG$Œ ɾ |QXl!U Dl1Ƌng{T?j499;r tr'J4EJ6[-OSEeltW)R,ZГ 5c`Hc?vmg/Dv`߆!͛f ڝ!I+HXR'D*ԓ˧?iIŇDv=,%!8AWo@,jCc,l/<] +׷O X^,8b,!EF!#Ƚ#v,O_}d$΍=Z&ގ]w-w_|::$ |2"Hhҙ 7~(ǪhlB2a+(ol(i$$Df "+e;|}F`f@9X!zk\!$ffmG<>Չnra2:Af:C-wuCΐ2i2;Xx:;<;6ַm=(z9٭<.z Kv1&ĮڮWZm08JkF`,S D P B`S53 PD %" 25u7BW^7uJH"1 7 |倐a@RIZB7А{D3;G ƒ[3(;]kr"r>ev9mnQ_xI)ԫz ~<<; d'dCZlVY~ݲor?VW7ztB ?MA9{^Uƥy֭d氫_zq'ٝ\Q}=A=2ٿ4vgo~w: xsxwRڔHX =˲{sYedAU)IY.kfv6 }p| st#h {AH; ^?ʙ+OM+w#rD,Tݹ6bܜLn;^oN&1l=<gm($H""u-u3v>-X^66JACI ((241y2sJ ;.pާ41ovQC)a#s{xoTkl956G4JHXMpg L[ql-n`gE>sMH J/N춏Z|:[ ҵRP^f$saGʫ97^ [Ȥ(8ukgOy2" `p"$(*DrE;!20HT:BFB7ʘ/g8-$bT wkOvjmݛ9( «Ͻ8dUIvuʋhl(_~o< `Ɣi\a}PrU 8X5utkˬ|jr/~'0'PYbӷu kS?kR\/Nqa$q!Fm8l%G~s) $sf=KD?:$omM}a"#͚Q@/sҜ_/wwnݮ`@[jڴ޵Y,˪Z5i3tlnt1Fo޼qvqݢmNg4+'D(4YqP(I9Nkߛ5إԭzZGd pBSWΣV4R'h[k 2{ظ%XFv )w/t{nXh # qWgz!qs.NXxq^-ݽv@`3Zg_*.KYfML#[N\mmǙ4NLlK7W?噥Q@ ʈ:n1J;m*C(ж*_5Uuۀ%xy0Bh EDJPLv@'Jp2޴ 4'*MFmL9} IDAT; A%܂̛ /S0FYu4 2LXSBR?.C (P?F XKC)u>?M|=ҵzٵ&yaG(T$jTHJ0 3|3-&R)ѳ9g>g-ѹ1& bӣ;B1eƊ!eݞ:=YOɭ1i^Ǧ ?;'Qa Et|p8C[yPZ3i竅&-, -D "I\sxw5|t  oơ0L!bnrc7yn3SoVخu?$q\b)cʢt 85b^?yttS_6eb^]˱p6V>Y˖ v9;n)nՐ|7 G{; ȴu;}rԳ|K{{e6y۟ONgeW_|׾Q=kmYVF3FUg3FQ4D?ey{uI)eo~qJIxgCL^Vb4VU3f%Mz'gk K("4kedD5PO\ݿu ޔW^6 6zzmX#Q0BBVw9;m]b+clI/ Q P6 D@R63EHc'VKLɳ'l@L FQ"L @#{,$??y}p%dJ'Cs<], rZڮ>!ϳhHYRYڜ4~eQ3_;*BJfmXU ʍZkP\LXn!*Eޟ7o}'g[ɘ&kQv\^]Uenu~Zwm9)/ǶʭQ ,P}|˂1a욶mHn֍s~tjTB"$}P*KQ9(|a"(gztyD^_]\] "ͪ5*q(]MnfU̴@۴ j^ҙ1 $bz9~pp"}ē*RBPi=t.4ԎVd>ןvɬݼtӢnOV0^iKm͡*r{k{G o[N)8k\IXYbnc}[,|Ҥ`ס4MMz7lEO^Nnz޽ݓV䵓ꉣcӝ'?]?k(29DM/f<#/ʝL[ژ!%(/ݹvAi!؟ ȚK)"!@':z"t.:g6ٙm2 4QY2n;" ` M|MܰD)wʶtksv}/=U U1JC?2wqaBQhBxO`kPj Q| R)yR,q}f޹ J>7vVH OͪV.!GLɠPG[;z@Ze~Y|"&%ʂ Eh竍16vTN`j)enj'B⠴1_{(K}2yV%ozyí@=t0NµS*[Yԯ·NnO`I6fRf\v'[Gŕj{߸3E۫:Nc J,<֚dz /uI;>0ӟB?o/~ݼ+)<0HPyptѼQo?Y`!l g9Hr $؎^?Ȏ/+S?3uBg>AfZ׭RHR@K"+"(>PIɂTY>^,^C^~8?*m>" OfeJJ >|`='%" D@F9y>ꛓneY$|5lEA@2+@(ѧ^!/5,Om;w6gL mnvw7ݚfmZv\̬scS7Mq9ɼ,f;jliY\yH-yu5_E)oyɩn1|Bkk6D:VV"߾fw4;x[fX߿H>1}o#(>l]@+!cb˵ȃmO)4iO̓@Ti.N81A "٣'[/v={xG{<*=%@Eκ J?`e1oHdrikc(2V6-! 18!a9`!Fյޅ-Sq-h]Zc kMosV98}eu:~UU;W9hn؄}{>?:F $Wwl&tfXlv,:4*S0)H1fNVhps߇^[7]?)YU<;Orj N'aaep,3H Z87|uQ[W7['p`b Ii*5`[~(.m;rpM_<___W Q 0"ifҠQ܅CjdˠMZSL?d%xGY[)v}޴ݽmW,j3l_1yj#2r;OL淖9P|ANT=ť -r_ν m<PQW^[Lfz9i6bwg̎8ъ? *lڝ<,wWJyԷ]_[_%1dr֚' .FO1YFF~޴eMQ]psCl:*)'Fe~5o}ֺPdoZN_<~eY$کrէg m]$(NuCwY_-T㖇ZBomSzmYj6ɸ[L ͓[æ(jS\.Vq΢A>.5x]9ͱ8|uZ$ږ/rnadV (<80-~>;(B+?\ݦm)ny53voW//gYϫQUd?GCf? Qm*^oEXF`G^w[m Tqu cV٦٫\#{TH]^c!'ud\j>hd|{:xq5ì,_( GH Ubt̢f@@BfY}a֣^,2~qd]-UꪛXrJڒ;s/7_Me_㽝#iJ2A(3䉅E\t8aI]kBGA؜*(ٱ87YL0 _S?z0PVY&AW01&<Og|3fy}R&ED© pNy:g0.($]95H !5m7aõ0rԜ(`s2[+AlWc߂D%|zOՙm/n/N|헯T?*҄PTeL f#XcQkczyXD/?|3a}!,'?/? ME)D|$)/U\6xOs8 gOT=łXQlXPiH}~ۉ`D TP4>WVN~qvԕ̮bu Iily[*Ka$.&B ʂ )TU4GVl?t͒W uvR/U!V7n\ߞTY24;mP6 a<9IѲNCd{^w]rvTD%/H"wiΩcsl7LFOø*-6'~ǃp ݡ3yҨ\q<߸Ěa2vU fȍ 5Beuۂxˣ_siI˪T?w_}+_J3\_=s`cOw5~`E_rupZ?/&b /CrS/}!>piOi`wW.(p11DAM}y,ea!RW dת!n[G1m$W#=X9]}m8Q& ߃ AR"yX.hQaӓK{˄(J,iեҀk*σAX*[)Ww$c$B$"J6xc;P|o=mnM sn$;g&d T'懏/Sg̾焏ߋxרRo[/ʙާEQh@TS0GƋ^$Mf˲`ARa`޹>b(CM(i9U Dٽ%dLL|yљѭ|5EAP僝CfK}XD$>Bj [C ɧ,6meA4 qhk|<k'MaÝӖOBL ERy"DD"` ˀ@$P@ĈeiubV#km[W;'?/ڟ3o|W>xcQ JOةo[|@JAi-1n;yq~` D $Ly]Uԑ! ,]MY1=bTTYi `izld>Mawn } Cd 1Mum( qCH&!6vQ3!Nؤ\,et`fAB"d)b6 B Zpbmj9jK6 I;OF5;ǿKy;3-nYиhf;[ 0LzY!Gm(zH] ̽8+fgjYI)zDbǮg Y4{w4Fi\Bi@5*& >{u+:/NE)Ϭ]ol[Ke8lT!n!a&$L?qC g_nMǐ'rtG]38H7fM٥lp4A Q$) PN#T&)o#SMti3m`*x;u#X aztޕz "LONW{Ȗҹ"1UiUb D+̳,g8v IDATbtIO(MEWx{kԇrYu1fi4LI0\o9QjY#u *-V A etL bY[Ѥ,[S1 a!2SpIDTǀu!9;D$kv /h"B4EΉ}1)TX"sHo:"Pi"B=OjGown&7βB̘mH D}O޷JQ$QI^;Yn({ꍙ{O| &DAt6҈u@bҊ9j>(B3 kZl dz@2]Rtk2J w Z 9NNbhxsCJp>hMOn9鬏(Ϝ6k>|."I ;f%*X|LJ/5{IhHJMFsL0Ff(,G'=Qtd^Uȷa_tezyKOy@{v<#Raܤv5lbD:yA0zR4}p Y+=8A+ )Ե} U1:#FSA[*)j7QsBX''HO)T,<XTqV}tEn%|lDm[;#5t[EβюUH?ea?T/$κ@Yx+;ܿ~;տuw#l,&;~AA,D~O0D}AbM7mT`x'"së.};p{v;{-fVY|3[(0<كOZiH]Gߚ @ Qw w!A$2ږ KJ@h%$d "0sJB" D,F۔Fb=X_`DIHEgʢ JC6]~~gܯ̊ғh+Fwgn5e,T[[+HIFڄ>8vGcQXRM>A[uڭ#$n+4>Y+ nh*4}R0!%ЌJ#"Q憈:\LI>ؑβjCYU(fYIf>CJF'!Q=P.jl/&9!,GHid S }Jžڔq8 ъ&*cȌ)i."N[7(M ƨ@J:90DxD”H$ޡ( D|Gye?Kyrg>{Ȳf:ʯV#j$An\ zXwmr`Pb0+;6~ɨ0H@WH;whQsѪ?U6 #\{*L&1vagV5(+xgb\;W WF9;ޅ;}Usއ)Lo'Lz RzԂ؊$ڗ/b\spsȘ~޷]I%$pXX$&CD %'y/N/p" ,J .>`=`8@ ŵ{yKY Uߎff녵(xu>6GG;.9cH܅E5,P+ٝrq5 }L^'NEf%\ !%ȉEйD,\ .Z2!$  S8Ơz@P$Q֥(eUFaTnQUEӤieYo}ë=ʵ)b* λ7fӬr厏wo!y'oU]dOJ)IIS!bOu7j*H:"(Ni$'bnWV 10))!B")qR0( T (,Z h@L6X hF"a.&ә/LYZ@P$.z6@v%Ŵ{=1i^Du0H1d [Yħ߼SO1k$4- Pj; \ 6Q@ nJfӯ2];"BJ5eR7mvy K~ӝAz mWϐzn;/N?^Bs'`lVp$="FRFH/ lƧ^7wh568x 0+2ʝ?w Ca40!#Qk|a @XE|u  9/m-uqgrJ\N61e}ItL)i[Ofz[LsDQ'8]oڋDL+cI. @,SB75Ghy E2!F!vsw+vg\c9FK-!pmƊ\$ imW탷v" fS瞻XܞOGpΦpsV𦪘QwM##!b 4RT=%r4b%ru0l?cSEjS.zMb1ffgb eǒ90o.C؛|=_ylvpfb j˛[{)yS`ď\W?aO>zAȥեݺ㇡Q6j5n."cMdef zd^ā0 6Ah iyrifhi>_\ɰZTFPz){=N~3@$jRqH1zU%u}<Ĩ6(%[ UĿ[_/W/qxF}'\uE t7}5i䒅*E.SDW'Rz;"2s c "@ 0s3T%3ET533,L:tuL)(RcolAc]?8ʆt2q̂N闋ar"6?1LkwO j3E)›xf&@^*e3^^ND?nzpqdV1KVuJ1Uu6ˣˑd4Kq^x8 ХF̠) !P$lιoT F cu}8*ݸ/,dP<ûoR[2V5ʹuLyuכZI+G_bo/."!@$Lj3RYmӟP Q9}?سQ!"sHU]jA3&9o];@$6sd62S NAadw1ps Q 0ԋ#"?pB8!33 ȭן8w8IkB)>R~#GUiliWcykRhh> ;A!>^lE(rzS%l6(,Ŧw+wN&{)UqGRvTw^ !;UBYooחhJO~^Q\Njp6Mz/J5?qRuC$ॄX-19p0MWCCiЫQQE,8lRj(ۮ (aALݼk vحxH(dgb=.R즊N"1t04걌FBvz\&SOa5_8s}~njX6Zh!Oݾ }o>j붩tun8' U>{m'Uy6P1Ƙ9ޜSXkBx) gq2Ճ9QT:!%ݻpF<>cʑbqw_>|mq.wŬ~_Չ#W3JRvm4fʁG3X^RуޤޮRC UW9#bM?^-7}uG Ё(qd>180/oS Pv(2dlMK I<^崾^oX9lM:߮%~C!0r4$)2@W13" " j)6m_ŋSyb/M՚vn֝8۔b%*0jL1V5F[A7u@P7sE\C$$bDfN(QS< 6T/{iz2ryXԺ6nm0:dTasr4ċaخgfSu$H '?/u9гq c"πg!`16K>z,s h M,ep@C:OA KlEFDܾC+YqfL'{PԳKA9uJSa2+i?]@CQ_=O}3|\rO?/Q`RU4t߷<Ю{vI 8Ș&;)jMQUŤ[ff3\T*!8H"XE70wS 9՛<:quNL82%Cc)c6 ߙX,3A1o!z'tD'?ﳳ!0pxnz/>BӇUJöb>馋m94jpwl[[GzFN ƒ tvn[]*TE- UM:P*ɜW8bݴiayI7CAL^\Gs{|ܮ6|YluDciWoo9mg `rP͏ Ϲwl2Ϧ, Lwm `1oC;r vCG!8g4]va5 @`]m][o%[67%1}5͏+ڿvHTǽgE"* X7TMgäaJsv^md#2/jrӏb΄1rKf8irDOd @Vͬ}zB2 IDAT 1Ġ""#:MNM~Ϥ;9l۵}C,sXuU'nʨcC FW(@DR;;/!6y2(YQE8pk&Mc<@6Zo|浽{n|wW|կ*8j.׋޴[7<|oqvVo몔.G{|5|DFC Zi*^=&YjMav1}6p8R2нO&LM\\ǐH7ia/yzTqdwVAh7Y8Z $)f!;4zΈL  W'UqSƖO}սkM'?]79ߟP; |o/`GkAG7^!'Np"D cB@;g8vֶ }դ_Ϛ}oot7GɨЁB3d20H4mM$V rw?ރ篏RK17d@f06ק َȎhB/njKfjL?vw@sHvh}Kk_JqkG~yt_&R Jb"fYLMTMc LHEe崪_;\CR T b @vU7CDZ ʯfdF|2u˒LQTYj.Rv;uR&14撳7y,*)}⪥T!(+)bB p@/-^4U-G/RdO!oWO֯=޾\k?xTGHNҲ9x7Yn̪Nd`@ ]y$q5]`wQ U D3%%d4T L -:(@jFO\j&;g'w;sLLjHr勺+L]\"Dc 14i bgR4U`א&6"~"Cp`3uޙZ:a TT5z7֟RO5^6TLk}NWjp5kr!ND|m ]*F( "oW~_fcK@Lq'3p7SQ4#BRur]-jo>MT-OSL/"8~gA}*ol>_^f=.6+C03N&U+"˜bΪlVڲP;!|*O,|ӊ880hr¹ ψ3xPQݦ2XY,2" g8G}d쮼ULVww1y% 8}6w7 @R肅kjL MH)y I<#3 fZ "b^]z`  UtGp!_94 W vvY*?@V=]{ؿ:pq2jqUDt^QͭdUс("P̊;D!3!FĮDQB f`PqWo"F&9]m/mN[=Ń?AO ^9 '~T5h-TYtvvUZmEU|{h־!q x2d94)b˨ڵ!zΘf fQtl-u=]nՃZtՃ s]>:9^Ӳ,of |A9s\=!0 x Xxc3򱫮vN'@D/mӳzek~}Ԭfn"S(;Qqs!QD #Cј8$EAaGQGtt1utVPGZB SɦI` Yp_?s9$"6xG) |\^\CE(m01nzw+C U\S:Ss~2J1!!2#!@tT@|!y3aKUfhtORD$;4^/W_qԀcF<`#isu`rM]Ljaomg\w";;c&8 a3T*PpC% luų%\G[n<<_N+{OKn \$lu82i;r~ޥ:3SÏ)uKՁ(!켳>}߿{w77o_rx\ũQMLv%RE 1pSdfWX= 9tbjN*fwC XĉԋED `T ۡLޫ0Hn?xpHc0~Ud5LUm׶9qM*Rp&bNELE(p03uEBpt "f{pUTECdQ ٜ'M9P+&<:uMXh+}7i֋7_7T,=r\pNOc~_pvA?gT 1*ߝ~ZA$+3Gv7tEw2uuSv7%XZծl&Ď&X` UщPTv3M @ɉS%ԵHH>ʃM)Vontt"!eOb@ƻj֝լmݒi9ppWu}2 8Z7QF%WoR0q0"`50PHkVE$"uuu8#R뫇q5hy`E_\?內r2 #Uoʫ/7|ޮeYx9{4hE̥|DW}p󲎛wj8ؿw QA㬶$חvKhV |r *RLK .*23kZ覒(Esu]`Vc=x20 RN6P P_G 4:2N;T "{-dFCA `y蠢y鎆LdX7;ӹw=k%2q(Dt_WVݯE#"rbK5R(b@ d! bHHDN( 1q031*2 *mmp8>-)TZHO|ml_CJ7H6n*WLEDBTwt0wrd3vu'3_ *B0swkp{8 ͓ *k!ߛNm7}yn7qaUtYݿ>(?z%X̀T3G PUCjI2muy[p.%uUkzU_[5y*,E-nuo۫Sfb""ڊN^x|T";썉j{m37뮞/V6ktm ѪU=o6TMfET,L:Q8 [O[DN!"Ő ],BPO:]5d#I)}7AJKA~0$Uo_ݖ?;K1CHMu'I j9;៬V9'ca"HDNr!s`f3 昇lݤv/fB0f2, J;#HAj574&#EĴ)!]!5 rc΅wnVNJ{𐢌C_^6T+n˫x\H. ZfLYn >~8C #DuU-V׷nr6ߛtsCZyUuvvu58YrP$ SNM@LnAF?8hۊ6U(6[wсo୻i\O)LJl}tjO.jk7Vz_:QM?"M1Z_jӏJ\*Fa!t]UHH6"0{dPe$5R pTu4ZV檺 Vjwa6-TuVsj槓e;BȪf̈㼽="y驿j#ɛ}gfjZ03yx d0:a|uiHXY̯FJ *܌C0ѐHr) cpZJ 9 Z2SU5ۉ%E@5rEQWv;&WMxQ@X-HbF3q*f&m%Vl3y=>f%]o6o߾ܿ+p[ qYXvN7nFHH\Jt?abSbrR:Ȩ̸5,u"(OSsre,&DrW{'s{'|vx{o{GYo.[L{nTt׿q+Mt*8#8?d~xyX,μR]*V  4%IQ/{媙b/RmѠ:o~DCvَeّ%fp"#"#G2YšBK(TI QЋ I?B z u[]H{psL#L&3Lfp8825Kj`0d 3Uw4]Ňs.`6 IUD#3BEitdC`)X@G9Objai"x@&Uf"M2k*]cj;OOOi:ۮ~[r5/`=oKs,4>O[؍]}C"dv]B|e`.ż'՘v[YwǧxgxG]wwtҠmh c,jljfeZ-/&g3&{"AÓ? EB=~k;۝i#]XMjsgQ!U \eUu*1tDK0lw߿MM oNu&1bVC$3BQB72C,YTU )znsQ]c53c&Qvdz+yj6lw}wnw _b%볃{!57Ԝg?Y^:;욾CJy6d5ͥHpGg8r47K_ֈ"õf7=Wt"&-ţyh/vH>7:?O[wں-VWG$#.HwE2 @P4o U'f{vûyg}?"sgMw@)8 h#Vr yF&H`) PzBP ~ >8b25Z `PP>$ j),79x -&K`YnLLdh^<.Q"dYԠd3njdHqUBW8@ffF$Nut?  T3"R'o2`א [gHֶob["*KQ}FnwΗ)WW/7njW:HeF-DxJ~y@fgbJqlѳ4!\TkzU@Q !a% v2oͼtMphdFLnBEN>7(^EGaBLtyu1Ig% o9Ž?#VO~Ix4΂kXzvBq!. C2 c1Bmd3nc=~xuV4|̅B/D$D4vM$ BmATw[;G~`E@*nLc&AL57 H*`dC@4Yۭ2F44U X?/K:MM7q DWjx٥3¹2*!3U%&CEL7{EDȌLHff*hHL`I{REtd{2#`BZ TJh "/`[, :d1BPFR(W; 181Rj'ޛXdߒkS]@fby{V|xG7G_D0&`"LEjq8lc2Sb:ߕE%`S >wh& ]:?N) Yَgw 0@6vcvDi‹6aSt]w9l] :io׫_Kw<AbϗUlf=2by{:_zaLdIkc Hfqxuݭ{7RH'!^,}EBCl\y VK[~wwrn|t稀1]F:e(Fo'l[wEu@Dz1R5Ѷ Pp8׎-_|x<U- _["鄗`M|?9̓Z6M2V"pJ-D*$%3\%S! *s`oűZ!DH;&?{B;C135T[QM Ȑ&mTLM`!ҔM ȑ0D0e(z?.4ɓ or{ۼ8ܽ*7bY_%Lti;m9b2&i1>&TPuM|pl1I'CwLδ;gOc7.BF@j imWJ4ק*ty4\Z зon)W0R}cwzUe+Ha_/DRP% bhA|^Tˮeٺ]Jr0gWŇ kX~A4MYvao>e#.re*Zbj㖑mi| `thjglۏm6OYFr&@pj^_41觟(x*X&{?8<"Fט SvNUcC*> b0 b΁($h𺓷U#DfrL{nEA*F$K(Α1QƪEX]@ Zs9OvkJ#dG~Yv3nBЙ ev=7^_!Lf\C-J0Rq "{Z*E&6̀),*xFOu>0rTJp #Ԣ%#J0#Ϟwwmc\̖)WfTBC89Xw|*͗U+8//_=yV Zo7 goYw]^"FX@Mu=#`%6 T@ 29 Ȣk5! e$ymSHӘJA3>\._n:ի+d쐊c#02rNY+jVfCNyԐ! A4o`OE?}1TX_}i;PVSd:lv>bEQQVBrLQQdPg}h@.TK]tt|kNepY/)̂w#M)l Ω~/h {olT-R']g;_6'f|vuê+iV N-_=;y0<&Gqc'[ƔF_޺m*`yY9#;]ھ!X4 FJ/~fo ]-Q qSt=@ bfߵ4u`v98@`47C{^y׿W )5'E+˖^˸fԔPE5"JWpkC(+&5yn~1&/-~C_ ˷e@暾$:n۟1Ù|&0U!wstk[/zqFUn/gf&۬АRĈ7U5A2琝S*`HYL #DdƈZ2n=xGZ*z3}c, #VX9K9;ky @i.*4z7nq 6T?j#\T'Fbm۴1BՖ :RUj† \(4VMZmRчt.(e8F?.yӵἿ7^j6Y᭜R\(V.a#@ TWSɈؘXȑZmUv:{n{qyvn:x֏;tOO6; `^ tO7ϟ5'/2]+3e#džF̎!󡎜rϞ.Mj/>츞4b9޹gYͬ\M@E7VRfuܚab;oL7CߨeMW]N5tK)?|p_ɻ?- yuP"H jXKE"s^6 _) IDAT `6kރ1Q=J& 51EFSDxB Mf2_m&8*VbgV+12]tr>l67!ͣ E?GK %auSɃѺ2di`kfpckn̻Ɨ,Q)D*pM՜CQ+R#;|FSMIR nYn]Hy=̝F&E%*<7+(pM'Nu6u. !VS1]-v[lJ{0~/! ,iƀIшEvF+:>x?'rzƀ" @?gώO.TU/̿>S'D,!@uXmgr4[30fj/~Rq^dWRO%BGɁ4BN ρDv fûR >SU ~ WL_pCUp5owtC .;o2AݢiJ;IEJaDQ@ T ɓz6"qf]@kkCdE졟1ze'm2UʞP|DcDdLdh\zOz`12 ojI]Y,cj J i2@__TI ]X.󓼦M٤i\o8m/KER.# -M ,ʈfֶZ MCpNj4dC""ULE1 B'!ZQ͚~xa?{6";#tv=[|zdվTϗȜ7fZz#iݝ~t388ޮW٬⯮ ƨZ8Y*x@P >glLe7TiH/A^=pv<^-ײ[J*1ڗS6Upף[R^8)@fzSU_X_&4V?~WW1RoKI2!;CMVA)4MH5Z((dm׎cRkI@0; V2nG44edjSj86mn05.&94wl L5gu9ZN>x2HV8%Ny=^9M $7xvo|0pפ)Z *V ѪɨQCkB0TU`ZƝ1HQt\]?LzfY-}9食/=*mə@UMKJw9g8nⲟrJÃ7)ʯ *BhqT$"<'l%ONvM[xHYŮZ`ocB7oU2g*K@]oV\!JUP?Xmͳ0ipw1OՅ [P_([fBqJVk9J+T4`Z3|#Us7"Ex=|_{ۧ4DwOl*UH L@%U"RT2 f5S#U$hZ5Xkj;6T of;v݄CTLDѬ#yψG Քcv(z 6\6p^yEh[mTS $i鲺w>_w2 (M_٭S΃0C?N*"1'ހc%#5C y5tteCs8qԤEM?|֎nj&&[Օy%eij<"cqHYQMRyEF_sxQ_Tv'E- Óǯ?~Ȟ>0AN=׃歿dz 52j Kn-m|rV}C"PaRB$PJb`[v^"Te`s)qHE>B@"`BO}!-/7xvzz֫wnujFfPp*2HJ1Do-{O_9PfYd1UGkӴkv;M*2񢻽8ܕ&!"όHXKnHFԪ3MÄj{r~޽4pC IYrZE$ȴ!gw1 Sk:8Y[mn111苖581Ex=Me_y jf{Z#44SSUf{@SB6qn,sy;n*ZL DM'cD$4JRҔSʄ.\UB獿<$g8"BpڮZ آi RMK[>>}( @K1wx^L2ՍN`GwZPo_ A2yDǦ qݕ*.^sxE S<]Ƭ` {QtԼD Գ.MeѴz7]0EsZk{մTUf @ID/Ry#BDFҹw?졊2TR5i_̗)Oc_U*28·t0^w~gKhW1 \^" ~Ȥ^^va=_[8 L @ 8ߙү@TU5E\>9O^>;ޤ]f~9綯U@P @IDӔEHbؒ#,gx_ G7Ł7 @)^6lP-*x7qܹrzӛ4'\2,Hᇑ  ׶_b}2{iSiy6T+g#$$$:ٯ wȣ,ESQ$P ʇJUM$FsEuj'v͘# Vc6UTfӦ1`Ϭ~\K=qo\()^;<8mc. Wj$;}m:UT/'NZ3w+ǔ@ױ˄BxQf3s,A pB9M( %-s)jE۪M)%!\־aStRƱOOJr*=uEyv\nvch`Ŵ*t{9MȀHelsXw^tɃP.z?:1q@2X"Ph7,I1:x3gWr'b Yي8w^;sy @bĶ+54mt*^4B>B!J ,@xg}QU f;%֭uo`!UJ)o ˬė2~dYn~>e;js?9]SCW?up|\mR/J2C&-yϒAH1 nm[*{MjqJՐnL9gf^q+ĂĄq]>oP{.(4=^rJ1?J ~m ^5JdPJy?w>i63e'i޲Dh;$bbT0]/G,7;xڏvjpU_|7ӒC%Pq &<PLsE`G? w7$vE*'p4&/Cb9e-B%*qc!PFBFsus*ߏC\i8t,OCprd` PK ǸqQ5 h@D4`*",H;{QsЛe0U!RraPWUXŁ1FSxWmZExpM_|q/լۻDosWAJV<j޻~&<ɿ^wiė#F'7M[∖@af{#J@Dr*^$E۪E6l!C.:`@ps u܎e؀t{G"{u'8z<7{2GQ3!#]$@@d0·1Z_]YKRiVuUKfxz5~.1lਕi!ZʬOs?GC+`f /!Ik/3 #/\-s;G( 2Y)I ʜɩtUˀ7yd{ǁɸkZ\O&l>%HOhi*SʱXљAA2cAj%ٜF,j"fJ…yno_{]|iٴŢ"BP0R3D@ !Zao˫G)민z/4<q=>h@RgOQJ.c`Ϊ%ҏs!1A1Ƞt_c*^!5Nr T:5I8byHٸ8'% H$<\/-0yb . <#\ @c)禪i*|UyI{BHH%k7M}b3㴙i·!{8EйdWWw?41^^=!)wg^;&#%{‹1+j f5U4Ǣ@= GG ڭ^_ٟ}d\=ZsLw6tXr-bfЦv.x "ha'YUP`) N8aލcL1Mig"Tٳj`nC$05-!:c\vch#ܫfAQ|+a&Yf;N;wΆA,Vk*W7 0!s¾nVqiU]Lgn輸Fn\9g岩B]mA@ u U51OSơBy(;/=竇V(#1$'gOLۡ X w6N~Z>CC3`6X>_P^Z.!N5l0F]6` XI$Xus6LDlߎuUfEX69Q*z$.Wgyʇ3{&h#X`crQDD\,g'MևW p2BFHAU{0 =2~Dt3ҟ#ޗ=w?7?Բy$N5ORԬ$41鮟Ţ5&c w1g3ZrJfsAkј7P W, o[K5[, 6i!)B _tM'f`1GV7S!S},!"oH} Ȳ" /LQKD|. f`3a0&ï_q~ӹds_a'սu Lu]ۿ޹ړ3fjyvh9'@9&d2$5Dȓb rJ5N)1ZX8#bcr"y7Lqe#^:Myl}Ѹ$g?6`3_Rw^9\Uׯ6UUu9YmZr.$U0͂쉔~;V"V `895]Z6}?xawakq9ki+7O1}&]X8xׯzixD@94*j+f!uݪ[l)۸=OQ|  UWG O{6'f"󌰬뒓xTm!`TN6C69TE[yNji +9Lj+tw`O"a,U /X@@?XMSCD+˭C/j$V+TU>XL_dv(XQ0@$B( 5"`v9%`?Re?ևTnyQ=wQ?x/|3W?[WU Jum[pu)뫃ގkZ\qtD2YIS*O3X[{YU{%q֍c|Yybb穫z^"8p2C3Jj)gټ˪TM_[ɹb/WםkJW:uUyv c*B~K)ƜQ%lH\c6"9϶kWH9wCp!M!.$"@2,̒R$0=_׾UIB?+T_vQJ6pж9f$W*"beC$%>fՂ fVOiv?a1v Uޕ,IfSjTM Wiɪyk7us"Wmyd͎cIOis>o_[zjA@)YB,0gw 4Jn+! "~&(J[H}캼w\a>$"01=6 /"̓H#.  .et1>@Y ܼ|{~~_Ǿo3x!3-A%cfBb0eӬP pJ97MQ!mW_W#dj[w:{h7 ]&YgoNqg眱 i]ۆ~cAS\۴)T!"]\Nc.cnCw9KS۴M]o6[BE_jDs*h]VƟ5y^0gfߔE]:,Pɉ{4Ƈx?ѴwN]:?M b$h>wgCJQՂ&"jfq\U);fSBź턖t[xWB]iA+FG{DRy>9}ƱJxOH޶ "J `-|d| ɻ)?Q,cѷ3|5}Cᅦ{c7o⛠қ/Ùb w}?O߹{oX|3\tn_ŝa煘 MYs%*sT92%qbdVnjoohXjv> Hz]U[60ňȜddU35>T®a*~{_N7BȗOf0?OTyk=7/61J4q*W]',0WMWh2R".Mq ]S%pRTU JLDLH׽$V[yY!;_R+]p|q]G2 XK)Xv:ܻ{%PZ\ k`}ǫPFjsh90!Xq2"ТjSׯAJ18xI䑃w@|("8az' o>b)}C@@OɮkOwY"]ߺu+/zm볾*/] $-PL@)P@vq=:fRc0Y=s@Jf'DԬ,ƀHVJrb!c)NgA[XoӰ[x'3捔__rviXH/K@ί]s`ݢ_R~>ӓ;ϸDCګ>X]USLY#Dvǔiu.zN{$HQs?A5#2!# ӄJLSJXeM?q4Q|x-7,Of#Etج~6 H,jP=}tjC`9'fX]9 PϽO~o;߮öw8'lvۦk`N-|N/ť .j}s) iNVPB}zzӤ]ZɞvQ@WM@%:9)RG-dȈ7644,,yUZt b&LsWhi~lv՝*}RW43ޱpobzߴ,ˤGďPh+W?e"lov PR!%'c)ToZOv?z^64r3o}8A%i.jI1XIUrɊ8R o4H.TQu* 9]N}b(΋Fh@gT_k!2-pWq?g8SBvDN“)G 4\biH(ym[5 Դ(<KmF=dC{w pNIR 87C_Cq7:,d>u"[Q)@<lQ}Òqǫ*;#o;Zӗ~Ok/߮Ws6{Ļ]U- jeӔڱAKI!s.A*Z%Af`\1NISQM8$P*fftΓP^polW*tq\o~LųM|KQ*uJ~F8tݜ뻇gz2<7l|Aӡ$` #[1s&Ӡ%ލ>7M>fo \y&EBxn! o'֯]@H¤1i^yg kwf'`hqkuƵӳy_w+i&t_unU ĮirT@%M99B(LBfPW<C])P{PNLS)'BH(γEIj`l/1G,!QïoO-[wySN ԴB۵bc?2rޅ:bJAj)-I 4I˔&&+0YWWO^F`ڽ9aaKfKbPsAI:[=ح9ʗǗ(=Oz￰#5MsێӼK ЖTz9 "{ U`C,I a'vD!TJ!HqIJ#¾ R ;LUҨ.kgT7 '`b(8B"`LDԱ9{gWN x哠psmgtlj?!6H ?p?6׷z= d ~=|xsDZ"ͧ~ηM9zWY6v򇇫im 89%`K5j I Rbn"vcY!|0]?)gNm>:c- X/MI>6T/~+mMux#'8O81kb֔JiT0_=En@;_g-cGHS1SQ5Trz8.>6 fb'^e{Jg3#{ t~L̜[\[bu~>1nlS|CN[n7JΩZ1iΖCL4boVW֛RpLoj6֛Yׄݔ㢡rL~m}UI7;s%̒R杻{ocyE~]r{g!9H\DђL="lC$ðsG ؀dِ ;N/[g川5Es49]5[@!7~'CVؿډ4>gs? [0\qos7 Y,@b*_OGg_n~坓ySfZON)Ý$ [Nw2{QcA)"7ScS.,~*"k@]$VVcRW5(= ^?:?_Η]7jå(۪ IDAT B\uU.dQbH%眖B9}Ѣ3ﯦNpVsήvP3 f}U`?d#o1wa^Yc\a]xpEIk(%ed$/1SNڨvՋMU^\^,򊙵6ƙpBIy~ŦZڄy0 MS+npRh| JGwGUxv;'-HWhEfmsUk6 DPQh#*)!U֩GH<0\5KIA? ^= X荶@ҵkVE\bHJ!5M]'|ޢT,].OQFң4zg%7uՏ]%h;^7GctLLI;4Z*D<* E+1$jo2˶^4[&¹\&ՏCfKN -(τX)r_\]9<>PB7csf1&)) rl^hSJXz} qRZH>I=" (fB ހ`'E.sI:pp[嵔xt[#tضvúAqI)\kТ]!n6vZSU# Y]A8ֶَcP bqʁYNiڂEl:`k9O3}͢6ؒN'S9"*ˋ6&8T*F2soݝs^u7sdM [r+ 'CsvQW3Wua,RZf)Oiz8"h!@&PW iʱ**!SZ3PcVj. $E7b[>x:{zo1N0QQk$ HH!ƘB !If.8M("Try!O4%(  S1ƯIRCTՏ `V˛$n܎Ķ,iC`n\…Q@r9o!b6֖r}n+#`ƪ`PN1So!NJY.cY=SFR>砧7ųcF?_=َ!*mmY 2s̜%l*C5NqM!KI gUUOV׆!U0咐Yx&.Rҕ25V`ҼqPbp"(UsNTe?xA"Z)׸BP,*@v.nb@j왲bO]BUϚ,wk^@ho4Um{plZ;?bać4B* !FBBVZI)X b#Қ26(T!c1KU|%nytR /ieǏ.aoPU={vq{p5MJ"4N9s(EJ4*; v"'ABTXUѴ\Ē]sthV%gkίϏ>Y[50~Κt@ҷw%Zm}ƭ@j^"U~8dr@f1 cT܇2c$o'rDj >KAsbNZ 0C5* )5(6JY@&GuaD'LaY3%fj'˅ Ef4um[|RY@zi&#ia|Y ;rI(SBwniGﯮV˽9<p6ɺjP5@3{PATq"b)k UҦYuR,PيP&<-ݍkF2a€R4ͪ Y]$) R.|\*gsLKmk 뛵6t!&(?-ކ x/>Z_]׿}n i7-eex<項2]E6J;e=0TWguQ;"’s3;ň%+C $ZtIZAbZ0e-ġ0YJRMSJRTi@^m>;EB,9'j f c4J $fٛ/j{nB'V: "ݰ^ro^,WKaYTd(!D8GƤؗI5S,֥@)j91"OUj:YҐL)b$Rb뫛CXUM< ~BUU>k' _7Dne23l]Ҭ'xl[`c\,!ڏkl-H(SJIXH)+9; z\  Aٟח7~d*l't%&?d[4R}G0/Zk,F`}/+&KN>Ч,LuoW)!vp9ksSm;)ۡBM2]bQ)g"-Rèc)d6J hV "S&4k6s^Uach󑜟_fMOUCe 1GqyTGd{ϟ"RIE;\CxpnάUy{D^^V݊3mI0/ٙm*HPx?ڹ;wַ]n3팮֏}Rj ! #ʥVZu6H.DK1֔LcƎSBY]#XbdDmC}(fƫ/-̛7_zkCc,!3fc*SS3U9+9m6)4pQ4Vk(,h>f @I9z+<A,UMXh7%eU=VӤ 3N[I%Ml!*ks)0fMyq]( [k(ĨR)(R$0R ͬU],P8Y89:|+Y`9=vd'j | FẮq"<rAmG?)"liR뇛'Or̳YHi03{yj%'I`+vBǾ:9_TBbjNϟ߻7߾'{'wN 0R2?䜸0#jN \]}¬5)f *Tr!圲#j6~p,R٣ns)M[wà:%יiY[|Z CLen)xHXc?6'g=_@ bQh]aDmn5 mgV,,F w`QJG XVU*;2oܘ̸ Pʞ 3FXA*%U¥$҆C@?FᨴN"ɽJ׋xӏ? nۭn [[cyЧLc`lzۍv$Sp{t-G?BVRm(DC~OJi"y]Hw/-=VvuCw?wqL8b۴)Dvu]5s!L6Zk)TFu[f2Z9le.bJ`p&%:uw[3|?ՇOyAJr}p:cl.+SR\\"g盕S֊ "'*Ԥj9g.SLe# b2}zibٳje+FrQzS*ҹdi"#΅ctFQ9FdQ!D6 9&1 %%C,FUd,eo8<9+;9oUŠ'g;TU7Q8p r 1mYwP9\;rmolrJ&c+A$WcJ' WRk_y>ŰGs6|st4su c߄)lHiHOC$fs-@bZ[:=%V bR;yegX&~\[VC?mg}SU@\f"fNvz6%4F2{Wդp1S\Okm681D?E;vPBBsХ'sI$!'-xX6cI1\JH)#wSSZkM Rm֐vH0&"hM4d!-1%,] V?94U;U{7XʚRS7PbbݫF+kc .OC c_M߭V,#-4!|WR'](]8i?XgG 6/q<Iѿg?ͷ_4tbsyz. naՏ\ ♺mW0MC1Z+\Vv4霓Y"ՖN~9Rڵ#ov Lf =|Gf{S[)LZ2䫪Qڤ(SfT׿)8mmq@/"RJHξS3}DͭU˲s'^HCJůfDpΟ{1GGhL>,%DκMSM[5ŢHAi$eGKcY2* Bq륈Ma<o/ZȮ˜ l_{U'Ihyxr9\R!gR!}EQ"V)\r.$m.|!,R^o1R'F5r;HaMׇ.@pJ"e H+*lQiN~]F~H}Ҙp&ȩ\cN, E2"S!% {GJ34&ﭑ&WGFyycs = J^C$MC \H,%0d,&PY\,lC|ĉ^Q;`_|~7u=G7{%?{ݔju"7+%MSUEZEhPN+`9P@t08]a 1RXmCN8!"!J)y}㺛拦g '$%6z9$orĨl޺_t~'XWgzg~?w7_ug^MWGRj1OGr)(RTXgS*͖S 1lW80.XS)ޜZ&Rv!SArї_zڴ!eZ\[LtKm+BcL 3./vrۘ{4|bK:cEwdH,dU4ԕG؅|V{gWmk#ڇfՍ(2Tc:G̐Ƀxn}4X c)J뺩#pfj᪣}ՐFgv~gghٯsRYUUa('J2D}8s89$"2raC%O.l2WϖF_U _k i2 EE՟"?Պ"K>X|=yڃO>?Wr=Х%?;Վ? !7bkd3uUEtY3KI8kf4k|kњj4jP.VXjcs֚, TRH)=wҔ8fYueaڬo8C=Ukv]׵+"M[g~6CF(PwۑN$zܮfw/מzgA՚$%-7r'/z{}rsr{pty{E4hn7|E$  R9523iSffEY>Lʗ;ՄeWA;j55VwާJծ"DDL!DTf~&aVYUW\8댮~]cmKS$37MTEP{vb9¯}y8 1,j$ + )%dȱژh.",e QkucceD?㣧Ͼᾭ.fM>\RZ4g*"R]jsǟcTJ}9yͣ/S@Ӌfۡ)fm;8z4vMUUFcΓc 'A8kC 9nc)V5$JiHfpfldH^շnW0?>l;B)tS WחzRq޺!ED0?}n~![ %2ul !F)7ܝgiǏb+ysua*%H! pN-fH)NQH@ 64SӶd5&BZ#CWϏ7-U.=Ƥ7~ѳU2\!Vvt]l)l I+1R4~?iM`]b_pɊ̎xE|bHX sq޹)-SQ,CZT`IRE6JDaY!gj*X@ի~~'{;sO.o 仮nGBJ즱Oy𓏡 %c.P"p_ُ5LӄJ6pqݍ,P^.wwv9Ƃs'qz`y>.6d.L<#hCF/!:gr*9 cK8bJRu=MSi6\JicǕ#S8/3٩:gL{ϯV<~z?) xvqU;h58[n^eH8Ћ[;v9,T LW_;L,GOX !g .V&C&F6R5PB0yzgWq<޻0E~7g݅LL(!g2C^:T$i"0j"aP I,0FRj>dz~h*:`Q Z] @wfY?vK#C*BR@mfoכd<[Ҭ x߀1›4bP>q5Pr&NRz<6U79~|{P */*+hZ7 *͇6zU!I1d%"DD@F$b?],GN2Xc֚@(S6ju]UbRԳ餇YW̼Զ:AikcMvhޗSj6C k)IaPP$(E R$ӫf;Ju&OO?^ oɭG9D5mGwS"gͣq? e4je׷6kwO'.8AA}lS1M:=3ٲ$T 饽moc?G |yV;v5X;^!7TPU[ۋo}핝KaVx]],K,EKI%sI"^@fsW\M:Ӻiv6F`&"~ v_=pvsͻze2"0h on ypYGb]駞o79vƧQtwP [ RT};~83H$=?st\/(c4`]ן<}!oMsbu}TZ^TBF5;@}xZςrKRu8?ʃZw |?#v)Ɛև J"KE Д3jn4uciCH$w_6_T _ݟ{zovm{jzQeYQlI.6B&cb5@4In_o.nd('0ϚM RJ4A}5کWG#AnY635O96ܽWݎ|bZ] KSRF?~ Yl;ȖK1(w|QRƄ8: "DGӟpۯoGf}6{k[NkEiF iݓé\lVe٢&%YF`]\][ϟ]߼cR:~&~|,0΀绣 _NC̉4jè°z`޺糆pN\T!ɜ3AU78ޮb5 `jQ_=Z $&E8t!E=hDD* ϩ=<8X= |o:{ F6,M5CVؐd:E+yf&nUK]촼>nh&X`F@I=ŦS7ϟ'mOzŞæ=l>\ulfЯۥ+/4/vl3 b1w .BԶ.yFZ %!PLKq!ȜBW Lӝ*PȪ&4'9 aV- IY.JScHi֦)yz>:Dhu̢P FaXu7{ӧFvHʼwSW*4NPW{%( @ yU;u*@#OGcUXI??P\?H)&w Ss馅_fT. Ӝ"dEj^]5 HJ%)M{>aۭN#1J) ߺ÷Ϗnϖ5>E fkWw?nϛ?og*A_W9ޚ/UŒUWl ch{f:` b:{&fn^-y-dɥvU~˽#%TȪȨ|rωRLBRU_+$qeQ&&J:_L ƣ{r3.>ӬEB,ۣR7O;2˰]|ܶ!^x  MA 3%nnēQu~)SY;vIiW6LE4yֺ A㍍rciuV[մl! +N28o+ +)ri%n1Wm4R$Ϊj2HUa'xc_NISH R,G|<)'%;;3_p˸/-P+OlU:I sbV.LfEnJf[Ed_IUO,Vfȋq pԆ=;fƓˏ D) +wu6!۱ +QR gp&]ox&/ɬ8mF|"Ō4Qyw4 s;GDc.ӈcKc EXT+bV@wBceVxXAR]sTL}RT$Z`{^J_Q2Ƕ'޸z֬ 몸ZY[<C{dM{,ԌtbSVuB!2=0x -C0.o-Q3Ƌw#ǎ>8SKFMmN,0ޱҘ""eTegLr2F"cteIAґz٥ %~7 -]k(ϧS$$+-KVF CgeagI *2wBPZ$ngIZtC 2Y\(´t[ԅi:˳bnm|]vk׸P?p$_?VVO4"DU*K즾Ci?pQ{z.V`{+g=٘%o}׽qޮL֍cW¥'0ֹ4M4ѩb0PG+4ERR&sa\ <ߖtk Z?Q7Lpk-=awmVo`VmCC"Fk3{&U^V]7ux2n-&z(wAna`{/getc΁M֙ƧO<>\_M#3.ц)MVJ=3cQF6ί|#?l5AJ)09 ;# jFAqJ9bm,#POa<&T8jWQvX4vn6S=lZ}lLG lo}%"qHZO<%je dA1JZY"D!{!M!My<Bƣf@AD@{H}I\Q(B?+TJD y@LfG6H WۇQ\bPkA8hcq<#s"aU56lÍs"#&18N4c$몢b`HqКZ{>51 %E6'ע+LoS r(Ǣ@*k;4 Jz=iH k-Um29v9 7>-7*;: 7j_q(F ;[UEY&uDi3uYƍiFN}hV]?Ihk'jr1Vqc\N~q̤zF$ K뙵6Jf=ڜ荮{)\D χ $|2MY]W武Ǒd:M( @#T7asy{fZSX357V`;/Xu̇,_2PD&Mb,y[^o&IEY& d;^38{ wG i!uV ԫXxur *rv続] ܷ{DRhϮ75NOV%M ۚ(/⁞yOHaY&LV{Y3SK;(AGXc_JPK-{OBefZمkoOjd .wCf0T T+fҋڱcGCOQ FWY.nmݥ3Z;//4*DA`%ۅ Dv(C<dܻa|{f~udQdG04&gBVmmsJ*w9W Px@ΦGj>EQg!v@/7L Ppўn{S9W2s.C9J?<`hZR:\6rXulQ`lme0՚&hǓG?{(mtˠ_EESŒ;'"=(3{{ߏnxjm6ꥵgD #G`@hQ>%{$P>Qv .2Қ~Rש*dQD-N Vh0.#YHm @ 8#bՂX tYM~Fk8b17iOѴ &Fy^ 4W%⑄Y(ku?#ǟ~GC:;-x:7ji%N^cfZ ͝@i, 0)Hљ]S닫O$Wfs _|U٨w| XJ gWF$A]L 韟HU E`Ž4D$C|Xi@z]k *fdG5;cfщ\L<Β4!Nȣ" Ş'|z U kA`'9{gMGOZ>^KZLݬz@(Sp4҄txQj#30X' fZrޑNԤ'y `Xxq/ׇ>XhMuU:xߜLVR4RMZ!IM'ߤ'KHBB`KC/Du73Mk͖(eC m7&ʱcq1N+ }3`gyjtۏ=__vU>$./yN3LEgK)+V s!+D a91SָpUN]4#DBϜ?ѬR|V`;Ϭ;޻?/|YcO9̐E` 8d:bcD QSnEV/N! l I)1^np? ^@dh5ke}1ZD+~)i`!+ە\`!|~Gk~3jZVq:efȏbAEW;DP:[]bCH\UHe/B սId "hz'v|Ll)_ҳ"Xv BĤ~z%&Б> IDAT}~Xgx <8K֢`K̚H +kxY=#lŴ.⥭A]*/ƗuEUm_ )0Yo7#7}v~W]J!M0N}U4D"ݪGJ/vP9sF$,a\A*w'. .'A%ි""^e&BUlE @KJ )vCtњ{;_h҉gN/51WEowYnkkEB*m+ sR @ lY.~p~0TvӖnx^s&x[NgaR\ک6F3K8qYɣ'*J! "yn,G P[W!Ev 2&o~[?rw>m\p}(.ed1MrCE}HV$"M` aX] "zdXP r!Ev8^tZ}~0nlv%SϮ!]7մT8_F4=CV)ҕG$Q|5M {&?_ 6`uq  +iOD.On:6\dT>͙|Ǟ>>ߛZ3O9?Q m̹`|@ p/"LJ$FP{bAWNz-'c̷߻nvKxŢ*+]Y=5oTZ4#ut ( % <@j,RHBApHBh1 \!uVi5J` ˃W~'~? ;duw4UKGg RG]!@**LK@t@/پ x^@%Bb(j2u +d("Cox–>!'iC[DRϝmB>wxnr8m8׾U٧oQ>ulP** (Rm~ yZdee%k׎ٽǖQa+G䣢jba?*}>H R.2;v7t;rdvuϜ6@h@\~Md]|ԅ +ݏRavԓѪ"n|aIڝQ22&vHcәl@}獈ףQݠڛ=z9 ):s z \nWq"\sA`R/N)o!ﹷj4۝}'+άPkҖjw)6@Qψ 2pG 3m4} p֖Y"ڹkp'R0RLn UwzGǟ^x > :~mw?8:ɭegsZ5#{~m~?Cd#"e& _/ ( <+( ==2| /"Xm1le% ڎ]?{L^Ӳ:z4^)uUئ U=#sV)z.+m.!j@NmI7DH+KfGZNɥ lcWnm}_TŮv-78p0:Qn% `q$AqZ 9 |{#/./-G{f1&r·uE (e*Qxۭ %m+ ##z{nzn:eǏ}xcx .8[:[fY m޳U\-޿gݙ?EQUU2ͻB`q,yQ+@ҺZ3ڽVq/e~ϻV?Lgv Ν\y%5 '$"Ui6RZk lm"X{FBr2!**)RC;6tFn(e#trPZ )"r$cKU\{$ui&DEU3BK  [gG@(U[dKXx$ڋPWH޺zam`P$\C PՌ}YDA@$*.9!\33D~OUY(' KM` "DD^w;࠰@ @ twb眰:@ +T6IN! 0R7 /I` qzݡCNH W%.-=ּ*([qMC ","\#yܣ> u0@ +xO?O Cv.Dw GcD*{f׈ 6@$@ +x@zigz]R{3:{3&}?,>@ +xff)YEr:gþ/^TN{όЋ@ @ " ;'({ٻ7Ǟ8. H #bY$J.7|q6R B) ^g" @^k(3FќN {O8Ai``"(.`b$* ^Ak^njO|xy+ ";$4 @U*YQY6w}1)?47י;wô@2 GvU\ Y+b[D"$Nx=?ykN?ԓjYطZ9HV J+PTw: MS* $K;·AIJG3e?6@s왢HD)B eo%/oO6'W" 7Gܹ=h2*dah` @R;[~6D% [:"@X   ;>Q"= #  T" n4 ŭnx"||RJמQa`Js+'9va>n1fq>Z {կ>3FQ=5E  D\e Y΍ 3+`3:tvba`_]_p +[zviA)#i7mD 殻lU}oaB;'Vh@y[HT &`'䊽eoH+* S;*_p0 =_ {d8p 3۹GOڨS5jcH) \`{!DǾBTb,Uii9`Z./*Vhs#n5 ɸ,Gl+R#wPA,ˬF$qν}AU׾vxĖE[[`uWg$$~(`/J˒,b:D] 0ZuRxM\y;޲Ξ˪ygDٺ"" ",YDPy؊pnm|!`k ,]UGٽkݭwJypù~'Bʄ`U`+*b"/-jȎYUw,[ou{c_W!"c"z*[XY_Zy͓O>[%ID0vGٍǣzARTV})S7 ޽{dtn{L'k'f<[d:eWB"5"$@@t®r3͇fv7ԮG9vgg=s:MS"R+L.OoKE𞅡6~7=nnB{&__iFڌC`Qa$w\ПW9;pN0]DTd!WS6V//wݿ7kuVWWF(Js?DO}q:ʕ"@HA.Z ,*"ބ{yuރۑ*TvOא#G`]Q:sQ6썇fV]JG Qnf`2Yn|0]ݷi ڈ2r1j2\X>왵ͲP>\ZngKO:w&zv,5{z-]ӧO6FU8T ^Y®bL=Оuk_w$<ɚoc&ZM-K1uS>vþqrӞ˶cA_}dcO~Uޢcy餜tW').#e[$ElFlk6ސ0ÕMVҘ~>?t>|ϫnaj7Mw0Z--"s~eUUv#_{F>mPe+{rw7 z>\7o'ٳk Ť4jiڬ O>ţb:"ER, DPs!+ųx?_~̉skkv홙mZR/uu#"E5'l1Q?rd߾J:7i>N펽7b|ӳoҦcbcNsޤϹYY-+)9D%0$k6]/W/?٪޼\]wis^8\sݲ"H1㌩iԱo葯?O;VLV%8gfծ鵇wmh**[5ʢz'Z{w ٳ->מNo|w} ݭ{[k5,٪։xgpR˛c~|geӏڍ~י'Oڽ_2:-wxxw#B{ϛoܽkg>x_DDIQudJi-+̂ ^by3ӿSr4NyՍ՛ozN&6:L27I8D(`"yk9_?gG{5/o=66gfgzy^rEy9=h]]u{ON2$;^MKD5)ųe8kf][8MIXSQ Ӕ<boݿPUղF㞝LKb%IlٻL6`y%e ֊2UImw;ZNT=}i=3\*ʊ7[8&UO9ȑZ⪉b9yLs^t9qcvIYF9xVk4OQD)J҆c.qJ-2hA@D \h8m#mU[բp7j/p 9{z2k^{ؙ$BXI6Z^ebLcvFQm/}lvGwf}^0;vj" 9unj x8ڿT3( G)A@ o]UTV[sLkukRF׮Ż0i5`Z&I\w:20H%,H!x$"M*TDD*Mf#ǃk-*D;TP NYob-iYU,lU1ZJ;.JP:!H#jj )nn$M$QQ?jg4+JCkm۱kWnec\L$,-fZ3I*zQk@]5כ*uJZwxv}3;+"i4iLQUN8 QqjT"^iU1IRo׿1;7~3_8&:HDA<3 "r"rQw];A`.a@ Byyىh"Y%шwɏmwz[ny[f[͚:¼,⑴Zhԓ̠h4◎}Ͼ& K8?} 8W:Aε0%‹'ByP޻k?[ngFo}|wv;wϜ=Po g3zjz޹aW89wڍFV*b$)aE=yn2)A !tBJ6d4yǞ,2L6{̬I[ XS!IZfYՒnTQ"ˢrJ)GB*ꍆB")UN2 #,+LiQ&R3)[HGf' Ӿ1B$Bh$IuʘHcՍnQ7u;{ ^@s{d֢;v=snez ΁1)MVU,]ıӛIi./D+ +EtfgGw2>茀r-"(C;?F--Ǐ(L47[[Z ewmu333QwGj}m9m6Md1)v6ʃ'4Q IDAT_uU hb:_I' m :Q ("Qb"` I)Ds1G@AA󅭬6Jj5*fX4 =ncT))X0 Ȣ={34t8Rw؛?n3-.}30:!`"TݯSV sH(t1[[,׍M<;7_3*Z_[m5[s`h&,Rw2YGZQYa}1xq^0KYN 1&J4)˼^U1M{iYM"plE1qy̙rzWX+b٘(Ja}vwL3Hgvvssy=Β4\JHBъia᭵e+"*U*f6&a["dԓK+}~牳_ѧ:בi̭//V")66[g]zy:9xG\5"E8MM7V3Rω<㶛xرޯ?P_}?FW={gۍV9[["BdRBʭvGͅv6/_+EJ]usd7-" Y&RiEuuk R€59g{C јxFTD[X4g7̌Wz|meML켉({Y0V1]' *W R%BEYK:Yx돾Y.9sx:9)?z_(,VqyQ5&BP wXd2/>{b(~-NӼp0J[m@b_8V9=lYSCMr8-&B0ƈHE&IdNaVtދm `:tYZH/5Y[,FO >һ펃x=o٧,GSd JF2z-K,IdTimYV9N9/UU]M7M7F0XI#le0!V!+l !fUe3x{8d  dƉsroo}4PVnX 4e #">@W1XPՠ, Ii4&*`59d;̬cxضq6Mx gQbMZvyG^U:nU,*X#.6)^s49ƚwԱT[tQJ4qea88N1J;8ǝn@""$@ ECUY(ʒJ 9aխzy=L9'QQ㣣"EXYZʆD9%5-B MlbvOx4_ޣ7/ݻ;NHXoG3;{?cEz6/:&;}) ׮w{K=|,ҙ˗6zj:O.\t:<) )&ƿ~s{}q[EJmO H,efsYTEle_~)%S3_-?я|ieqe!0_{c/+ OO=v79sxW?wz|/-.=́4<=-+eGxqe ZX] ON㽃8s~5ΚtW;E(|qt< 㰞I/v9cgzgáGp:m_ŕg {_y/?|_K?ί9(R1R$GAl A" @ U1ն) ؘ M4My 2Zfu;1* SJVUSzڦ.:}BQӗ^Q[W`05Uag egK>ej(W^yqczsOL3@&UYnn榪J@TDVU1M.M&A,fMfJ$ s`vTMq({nSj9s!#2ܒDʪ*ȜH,N&kׯN𾍱mSMǓN,"07$v4wЦSrHȈ,HTyB0#" 2,fNg{pRY{24@TCL|4{_+]]GL=?c;iDNZ?-C'Dx45Kso{lTnSx|wΝGÓk]{uxyuiuu,u:Up #aNN//'"bx+x_#B DjZl.v0pzGP^,Ĥjv}]<nf m]?HjTb㙏t<  8tnup$[whv`/7cSlVz%,|{eyҠr__pbL}ʥAo`~ƭdNf=?۫kutW6{ram^-r8zbb1NZo#`GGջv,>X'TfD(Y AR`5x_A,7ĎZ23 ~g,2;,w!():WB0smlcL)Qe]7É)ы|cGc_]:{3XLdM}zxt:׾}?_wtcS@"Pr63P09)!69 H&fljf@A1U3LLt:JUsw0Uf5WT!Tޅ:Θ ""19Ӝ3!XU"sl$cL0A X "cٸM-G}[xr\dYbU/Ԕ yf5ZQt8j8eh:ndapԃ4m*ew@+ c{̡BSS,h:ǪT| E"E(C{)fZOՀgm h>"1;r]s7^{F⅋o{k7oˆW}oZA%pZKӵm۔K2B yZߍ}3)~w_{[^|?⠌W"ck_{?dUwv+xD*9$m-+[η=-w$έlV䃣h̆V (POBJ(BA #@5&lژA=JcfH(E ̅묖 ooL+='U0mĘcŕd۷'phR[jpgV;7_e2 g3(bya*I[zՕ hxs.jSրG|loQ~#)Q(mD&و`DT: 30fP}0d5@ H9f;"Y"@t^OA%ń9sIsm"&%Q HIE{t|r{=X9O9GZbڿ-ȓ.we ,Kwf  rNYĶmnk)dYԲ|2Q{H٬T)r6@眡aU @ &ȁg2BGH6Nmz}3i("9N)A۶"ҩ:eULrk@c EQEs3 hXD;e(*@Zzd9r \ 96d Y36Ρ)PpiLLMz}533Q $&fv;y$ !h2֓$aqym8s囮;>9ؼĩM=iM3VʹO}Սw n,4Q*"BՁ4kd6ɘKw$64'$fCCt2fzrrRxITf0_Cǯ" +sijD 1h&*")"h@NQUBLq%Guɠ9clF"@R͒@s)Ƕm x4p=^^,{ySI &ᬙ. (9XV}v>Y#KILUU/ *`sJB-j63UfG!FȄ9x0#fCb PgILiES32IĮN`&س#õ1:G/eB;^X^DDu)$fh%Dٴ`4| PEUrS"QY̰(C4ny&PL97M뺝Zp)N۴sa6yAHJEF+XT-);y ޙD,Hbneqo~;_s/6zm660Ng&tݳ.w7z潓sD!;w?6po&M0+Wo4~(h6X|73:eyY}K/>8P!<## 3?_#P@@8h`ۿ홿?ݻ;_ȯo\xiyscis[ND6V:u;ݓW0*7.>t[9<:.,.-/|~7CŞ@^$͏'PfҦ +޷}~[ww_=ܕ3;=8:_v9Wr`6ܽw:^}g?"+:+AtGqES6U%*z+T݋Ocrrޭf왥`Kmoqկ~܅ݥ[x2u41N g&1zYxC1jk/]ko^xꉽ{g]^^[<Cqb6'CT̒ ]l_ go>{v8B$Q1{ Dc=ŔsӶ-6iβAcl[@IrNYrYU)%0-<1YNQĔ DO )"蜚j(6F#C" FrA`feY$[iTE0s1581\/,G^USLr5$l" E($n0 "izUtf)޽K/7n?ŷS4ՁZqΣ]8_z|OdTs_"So1zaao~?w|z.I p}cq2nff3ٟ[F$ .JdYеꘉI(~2"昮^ptR~Zӟ 2{Kxf]zk?gp8N' Kd4u61l`dG=.MN̓$'q[p.^zSW6֗N^;Lۇ_>~>pQ@$b h[V.NOF’oceLm=sEw|: _x5ꕵ,:dlP,EGNJj5l& z} `o;nc8庞&usoqxtt ^}>zm7fzOqb's??Z)>: 綾W^935A0D,`T4K7?zvc_,T܎d}L }Aj< ͌*9"1CD 2:hR7D!hx&IS('Krؼimb:֊w_yZn۷_]szvrxwmsGrrHbreQ127޸-FeU!IPyT)g(FsTTsJ`T`2 6UUl$vlflf*@ VH8'б"T9tlAHm O)x2Q ;UH"9$VđNU:V&(Dl1#D"p̢9$T 1E33Զ]NYM% 1ȼͬiU)'mbe&dEቋb(ڲ& ,Yj6kRNvKKqc]" ~Of35@TP4BD"D4&9@D 핝ʔh޻w40mʄΤ}sW~?wmImڽ$ʪ*p<\P-a IDATE&$OMLM{}şcB,mq?ȻsxՕTdܤژSͩͰ[#ou|yF#(|QNOOo+UwxptW@>c: Y:U_$R1!&dwx|t0BY=,wn͍sae-cX<{xxO~۟drr+?#Sl-y0 H"2ה0ժؗ ͙dP$Rb65"d3b{t4{S"MȐ}/v|M-ͥK}νY+?îtbwP<죱EIf6s<., ˎ]4**En&k׮Ms능.];^/F+G`)!79T45WדozC?=bCD3ziܸ D}n'J-.r;6d &4SrbHczkJ+I[ sL %,"jL`Hl5BjC,ʥy ǭr@mJTb3Ed\0YRd"I4SGl*1\jQTD tGfx B_^isNI&IW2~iTC-餿rT˃8xbrs %*01GT3L̡+4#bpbj "Ϧn;LA ubQ:"mi={޸1k,.5q<ԶXQX8CG&}狪zfy}}(SN9h2 nmձ>8;u[6J_j<w}ӪLrR+rVס(h6x&`jjfYmsZ,%#$$05,YyE|HDUˆ`<7QUQa y_/锈Y, Af";me A[np@수=eHhW0S{ |} B4 $+1No+d4GꈍJFTaf=͚DI1Pqu]6zsξ( ikL@)61Ŝ  cJK9z&*)'۶D$t@s#by<HE|0 t—쳏?z+_3~hc}իWn?n߻{_Ͼ wCǷֿ*?2Wy%DfYف)"1GO~K?ǿ/ގINOv._bR|̜7x:lBY .VD++T$09TUEHM(A1\0Q՜9MgO-_t $uk{e_Z[/,/ l,//-oR|y4}@l&xl`O>dJI͆_:u~'?;ktWW?+&l?sk?qSOrx_8zjtgu=8_^\,pΝGxڎ&{{n߾W?CGj!C&X3bP6%H~c^N|PTK\NG' 'ʅ5rrE쓂͏^Gdx%-6wl Бs0/DRmE-)Zn }(@rTu%ղg;::=guQuX @T5s"笠@Hs4ڜRq8K %]_!1:EØՈ،raJOeNEr:KhPPS4$B4TTdg0*)'j@".B%eEG[r^U Кˢ\7^?|51C1Yaaqi8:adBIrJ1O&{{{>ܼsC7~3qdow\hztVS4Uv/8_KΕ7nZ_[Bj̈;(I5,]yrLސCf T!qԀ`2GbiA.HdYff Impx'"fN)5QVd:nJwB0ǞSu]f&2e$"f"&mM h{\ͦ`|sI!!32;j h E}ȹU5#*}I_sW*Ao`ÃI;YX^&+: p4=8:w;NWX*Y LEET2%HD1OƳt@e_?ާ2Lu<<:<5^}f8:>?q핇/-o_8`Óhl~Νݻ~<7|W?OZC2̜ER13;|e๧#m]}ɳ^ױ˫kKk[KЗm-|%8Xxvzڵ7^v;kk^ׇjR4mJ)Ktt8X4#2Gz;{O~/XL~僃Ü7oO !<TD˲f68sfhx|Cpyi1x^ZYyzjۍ @:>m/.,py'gE [=ەBt5`s#\<~[_͆S"tKU*(&"hT׷2t W,"舜#BM"#:Q5uן‘ ,̆Ā ;ʆT3!;.֜Om-@4cfͧLxHUʲI4 uF * aXV3QH@E ,PL"Y焈 dĚ !d9kR hdS0ffgY"v#2/Pɩ esMH11v,ap`f`>Rhж 1Cj<;vhg@Bm+y6Hj,&pSSm'Ǣjfv'<9>=51NgmxO|776o޾PU^[[CZ2OYM䦖h&ᙵ-N{p&sq zN!қDCLa^5 ɃCE"9K f`Y 1%M6H*AjL*!yϞ0kr"eD: re+Wy,;6:E=!0hQD@Mؚ8!\0Fsz71En=7MbvEIMNe9dSLGDmέ$|nTAE 2DlA.$1= [U!ƶiqQo85O}k`[+|(ׯݼ^ξd$|`<31vl@2CB@h`jf@fDjTɲZ&r"Ц=g'gU(Ww- zIt4۫Om:l'fԭeNI5Ӝ3*F'eYJYUu3޹w~l&I9Cҗνd?Cݸ7^]c?2 ?|fJWVUuQR6ask.)㹵3%99 g77\n]Y3NONi}x:>88WzйN#?n *2[/m*xO|wp EF̢S3aжc$ Q2Z۸Tۦۯ=zʙّcoT23NBQn;)eYH*H6<FKE 4وGBʮjT419$53C3 F$t9&nfoz;9v:UM)UeӜjbUV̦`'UUDEyC );QPl`mIuYJw0!`CBmnT/w(0{rDH@ Lb2E<gIs}F)B#OT7MӦ~7g6eb$kUt*&yGcr;άmޮ6p$9sNf6EQMepYrz 9eӓo$uzV>}s|ﵹuw#vGƱ2L&`$ E` Qb9"׾6gծn5o<E  ٣ASU}4!><\W;P RcӴ"|PÃj0M U)HrZ=yKl,*(b05bȘsF@%r&@@.b R>z#:#=7D `޹3pdBw 2&ydIG] ФJ TRUDrJ% !\=8LZqݥ)!;s7ۮRu]lH,Oi#"2RTyR,AVJ-Pa(,+iѺ̾0HrC}+54W]Ni^/G>}q^_wB@`h׃OTl"p S@,RP~7RHU6kR֛1g'/?wK̏<\&Ldj~ >@U/ "5"T̴Vna7j6*U*)}ws}{txh1D[ŅfT]nsNO9\>t_JI >|fww{D qۛf^=["z9;wseV1zvg>x/pu;'x?_W5'P5aiyFaU眫%ԬK\xr TӧG'R7<κ6zNϞ=x퓇%׾_;tY^]8<:u1l{>|z~7^W~7>}~s9$"$2IHADZ"SU`e?֓DCQk̩ ]0HB &K?&L.1 :߄"ȌRK;,(UQ@6uV"YAUYԊ-Vl@ȬF(}iN8jU jf<,V͹$&0iؔAׇӘr{U977WM3㜦csN QQ%q5Taupw]ry\vkxz|BXtm{U<]jipaE4î6y]CfR^u-338qXtVZ  |AD,Հ$ψ(*h&f  VLk*C0>2U&ƃ3.8F@PM#ZkE+F>xRy&rEDDŽRyPeg:MyR`L% 04N1DsΫdjf@ ȞVq*eyvs}Df&FZD^D!30|J;g"1 IE #!)!:u93ZKl"BRrmC?zoƯ||:e[bK/$"J|)@9K7;2̿omJ~)?N6^~GΆ'߬__b 퐊>wRM{7zxxԴØiΩRs2ӓqN9·~^j.7監S#7gm۪4N[mnnhs'1{˫taL}G.rIJE&g sM.tƒKHwf֫VYE@9Qx3Ԯ8"@Eq\*1Zmwfpuy}\q"rS*Ԓh{{*pzw~v~~>ӳM\u]s~C=y賋Iw}:2Ju_կ|~0 ȇ9Ѐ/#?~+0Q}啗bcU??p(jƊ_\@"/.c~ _6LR.D&Ct2;Os`䂏 /nƉ=תRGXhB"j9ͦtfTD^k4y3Ddv$UDQcFSSS3M)ZblՒsAEҜ֮!HM5%c-yϩeTkǃ&F@@ZeYTGS04GŒk`Z1*Нphiu6]"ƍGSMUjNsEd<NU4g$8g(H-~%*Ȝ:Wҽg)g$B)K4]ϵc*]`!4fF744ON4974L? IDATz<w+"ãiJK!RӜiH͖ "`DQUJV!"i;"R5%ddV} oCt\zć[bwuhKТݙFkLf#r-O:S)Mr:)Ԝp TUsIm.5EfR̠iB*6CUjj4OjB4T0ΧexH 8s`\ ,U@rjb@T<>щTC(\ݬ׫׻}?Xo?.6ۭYo}Onu@w% %6rŦy׿wCPmpBl<xpӓc"<8Zk60o\n6|{y\x穔ݾ,.:qfJϾއ;=}|~v}y;D֢;abselyQ%61ovcۭ+F[D@ !9DﳙSMٌɱA5X"6M"9.|*18OkW}L輓4y”[y\03B4Z+8y$8L-&3q[s 2{s̮Xɕ"MJ*;ώk-h LH@U܏"&"rYPwZ3,>L}(!nC׶u ؈؝ʌ@`fB"ű#$P"V)Pj%enȪR0✧EXjsM&Pa?~RB6/^g1#2}1Zl9JXXdLdޑ6I\-9 _O̿nnv)Ώ^g|7<=?;></..^\<~'WC)ۭK9Vj'74 0T)tiv{!ۏ>5Lf (".} "zٓ_y56\JړI-\ų[/~~ĕiڦk-W7hR aiyԄDvEB1r욾 ѓ}LzRE(]Y C{RbӨ(f2}rYꨭZ!MnkZ<9?OOطM@"#"thBǨT`fJ4{&ZtRNJmFU<(t3O"n0 < պ{ :Z8y4E֒R5!sٕRʪ .x#af^妁K4jG0c8N]MK3ZuM98n+R;4BHdg@5kF0͙b+PȈntn.$\Cp ;/-F5/fnu;. ATSJ˦ieMlB14ðmwa?^]HYg&B>ﺮgr2:nm׋b%x5]H/󜆔}><:Zua.Oxin9vW*y>9;`.ه 9Xoon7aRJ}L*hLh?|r}ʏ|9 ~#xVkYk}B ɐ̼Jy6vfͥRs"uaBsĈF"̌IM?y[oL@D\qovo}k'7Ӽ/yRN'G!jv_)'%\feKJ!sDj7"1:牐R*"llҋ6@c;cF$|W$Պms~G.a˜n.sU7/W?ǢZ4auAź/x);g}uv༏MtDѻiN*UD-y>Z$4䜇1R;C4ѬZGk#@q)"m6ɴZR{RYK WQ$Liv]%*BErnL} q)O&戚IR@!8MSh~ Q55DFy/%眈jR3 1"""/VDQ2%yDrѺ! maH!2dbĢ=Nko'_߿?m" UŜsaI8%TCBty !5O7X k˓s$v~?)}~'ig/aMv~?kjeZ=~ ľ^woo﻾^lisKJegUgOL !̩bn co@hJD"TjuP]H)T4|{oO_\pϱ 1%Ls:8:Z _=5ϯtzvrjy<hWxǛպ R%@snha;QZ f9!4_]nK;r`MlNЬU&rb0"Hu`*;ʥtZjھzWXZ50pzvZr9q{uL]ZV?zǟÃwZr{Tϟ=bK0^<'5dfTU4x pYo6mNMՁ 0ffh7WǡT!9ُSJSwOԲnT|ăxuxx7E&J;&>=yXDs(D@]j>*f 41{^P&cGӔ̬m۔g=Lޗy,f>D9&3j ekʴ̴2 jf@TA" FT -'T}|0<#01SBе0PK6&f*]n)<{!ƻͷIEy,aw-BT3C,b㜘\):<:E^ag1 -F\>\FCYӜ 嚚误oWBιk$R\lC@ʜ}x+-&~ZR 2Y(@NԪZ΢$V$v&4MmZ%~55@M%;4ڶ}K4뛛fm&g}ms!9>O>[wW\KWUh'r_U1tc@㪨"%WP\8iK<Qq*μ0M *j~/?=Z\=sVepٜR DԺ3;i\&sVuiLٻF0:咊攝Rʓs?Ki}GU߯֠b]Ӭk6›q1 1|=KjX 2ADf˘L0zOO7>8/  9\2Eqo6'w͛?.}']^nKZf;O檠v>}ǿvsD;}NAe;Lڔ iZZRb|`$瘊HgS3`0hf8j [oz74M'bz0^5x?j84W_~5Rddq.>mӚ8%Ҝtկ...'/.bh|T+ꂯD)'[D*fr_9vf1Y@%W`iE*cSM`\ ޥkR%z$bK9k8'ժӓ }ٴU_O_Sˏ>|h@c?ݜnm[HS)s<~̳\_|7?~qu;`xr4=~q+~v;jPDT.˻S1Kk^>6k/|ᝓ&6ۛ/ַ޻ɣGo?~tiZ;ᄏP0cla40]]_yh{{sY}αy9˅a*hRf&J"\J;s{fWi`'BJiمGPw~TRo/\o֣>x9-߳Tê-hxjM?w Ϥi} QRn)嵪m]~zkdm1/C-f6bJ*@-wG#)B%OR6ע^==>xeuدz &:4U{E]1zK)MӎC2Ķ_}[_S_xW>{o6Nyq*79vqL IDAT9YjI*F4bZΡߐ!yρqL!s Hx)qpΒvep@uߗ< |۶7qNie)f.? 6~g"RS2[1|pz\S4Oz㇄8MSՠb MgeNU58vk9L KJ*yF#ڵ~WK "#:GZsX2? ]Il"hb LnoR$:"UD%_!>?Γc'*%,qr^Mð/*hαyPP[@5d4a?\[\~pGO>|N77/G]~> WWۗ0ڜ"Ǯ_}{f+xut"Σw ɤ2VZǛGoxf8vKJ?;R:(!2CnN7y}t?j%|{nO߽?n;@_Ҵtm7:"w}Hi!*5wàU.)R j/߼uI׏v9%rDfv}sͫ 99R櫫N.iތ[>|nZЅϞL.ʹr:G!2NhNts9f㨦'.*R 1 @޿9wYcnnAx)e@k.md @DBDbf&}ݓԇbK ~pn`MjVDLJRKB"*Tm2DZ]ZI1EDFg KӒMR#v] q57d8D`RsMcQK-MISʄJ6RT "C̪ꘛNJ.ru V3$vDu5i>v].Zk Lf5;3yWk!"*Rj"QraTͩ("1Q5e E$2ڴL3zP`"Z5Y`Yfvs82:'Qe^}s) ;B$m|N2t|n31F[3 X|>;ƾnvj:K_VARStK-uMx4;IRZ|˲t}<}?.켏!20 k|ޓ!NUB;dKOLV"^k4eA$k}szi_u^}ᇟ8R؍y]j.ޅ 0%[;b4R Ѽ,}gϘsAywG~g{S]@b3f{DZfr!f)C(l 0=f`- PĜWqiXWdTgova9/U0?G R$!yN)C]r>G||q>M2B4]g{/#==>1iMkxsSG6leOmw#BRs]lFC7׏xGgϟwWx{'Xc0e1a U] !ׯ a7K>vHSMkN+Ak^: Wb. q #)ִu}ŏ "!k႞ՈL2HYy@U16R J,{Bcr; DsEPu.69H{3u^U\ j"4g%BUEZR"LiU5"tOѣG!t|>`"\!(5%@aQq&i> {&tLw$dד !"TMK!Z-uYf bQ`T\q9u 9k.eAbBO9ye^(:_LbZ6 !󫗯vݺEa/>xKK)NkBdj7i>V$jXM#ȈkIrn!UXJu[VU1\;$dvTU|H\ s)VԪvU7W훯^ )uo(Y??ۺ_wOIӒjJ8;NP6^VZ @1 b5 ^ ؓw%j՜ӊv_}(1TY@I;y2p_?sTk{fݦ+@׿o7>`O?Nع<.k,M#sOi}_BGa[g5^m\OSZR9\8BNuf~>o802x8: ?OCjpSNwxxo\df&缫yyZQ١*j"RD"&v Lhڎ/}:T~ L-0mfy` ` !"SD*EED@ryAst }"̚Q"pY\HXm&ա#i=/QΙE=R! HEHU(.FPlL̘W?Z'|BYA)e3 N"Q @A:" ]\ 5F:LZN"54C*E Kfn*\sÔ336ߌsshZ _]wrBdkJ"ޅZ35n}`D {sDf"bB@DlȈȪ#pεr\b.I@ZT|b٣T󷧿_G4Mq)4ľv;@MWlCy2R5TTx<np1Rp>Ⱥ)DBuac {r>RL.zBH%EvQ 1fFV)_eEĒKk@ֺЪ|^.v3jn;se:'b,󤚉3;"n×3#)꼂cDĮ]*y6jLSu]bT2r]s xp]!vK Pv82~b9ͺ?0"4w@TRLuѳGМ2`)eYRE YJeYUp tAg!@m/ MԌUtb`'2D4%`:" 7ב]{ꡝ͇HDDjGUmeүu"G`jŖCio~B`Z3`CP(@?ID̘ѠuQ2q QxiQ3䂈*Jd0P5%m0sjl_<\Ȉ@^1k1AZ~0 X5ŤoαQ9rLN>O"컾۴{nSBhT^hŦZUH1kiq!W%WUҚ}`Zx2M]mx?< !,)֚+XqZQB8ݏGw1VٛysclQDfR|Zˊ1FD@$jyׇCB  %"Lַ_y82~3c!,y/{Đr#B!z^<-~cw>4N'Yz_]Wwwܒ. yQܬTs<*Ǝ9rqr-YD5J=O<'m|}Ι9N/Pq.ݾ}ieSQ=m0iyJǛ6z?Ϸ]uYҗonooo~dR'`cM-+atD= W0\sV>fG!7~c$yv=2~ǾpO!l1_zo0iZ0nrowJԻ~?v۾~==;}MӜrѿyvYu]x]z݌-zW^]?sw5ﵪc;A2*# 4If-r:HwmuAy-j =0d.oup5 CLZ.@hXBV{V`vQ1RZ 11qx?ӯ9HmjH3f6"Rզj2rpIc^,^h13ZZ _j*4@fqZ`bsd 1f]$*zS[VZ!GJD&7/4(464E:7Rz0zC!&^[qPCI:FU#@ (#GQqI-UbJYU1!v D{bjx9na\͕EJ-jDi؉H?tiM"BĀ@@ժ9Boު"*hJޟGO>\ՄЕ/iE/YC19P"蘗C=N'SD"_>Υd-1 } 9 cjۇLɳgoݡ/ݾ;n7c͇݊n;1#CA53`¦j+%k Pj+TA BZ5)0ϋ)\/9-L5an|w] `9d6:G#aۧ@rʈSsr>NKZrNϞ?C@@Q5 ƴ_ IDATP$Jh5j-5[0R!2b\\ Ibp޹YSV( PZ #RBׇЯ)Rch`<3Ryj]*yYgeLǣJUIÏ?~i9M$s)BL"4/#;Oӟy&b"DiXUkfօwDbv~| П[ \#ZMXkQĐKA\DZ >] q;:LW1'?㣩矿܌#Gw}7oGN~oo,.1}OO㼮1;NY|p*£G1f׳֮Ju"Y sy]8~TU]ٺN=YSĮ ?z]@ɢѓsTu~iTq5\]4U6Ukq}/ u*!\c_,4Sɓ?rƃMLI @M\ U3E$20PmMρjdMZh b#A:z5VDl,Dgr` s_=|2Z"⇿-2lF4mËtfiN4_e uKpeǿݪZ;5s> cb&0i>>&6h1M!rs]D]*ε?=3s;=".Jut1"wnPq)J\E1Zٹu]וϪiZ?}|:M5->F\<\$v<%t|>M\^5ËO R.K%'ط6TԪbhYM^S-SGFλ*RU5/8.O ɭu !.RȲ+9WKv!vo벤_Joo\=;?7>o7Z5@V_SGAUں aD.E@ DzJb@Vjz _ٱjtMzi Z=5>l"nH{A]-4;ՅsV0}ّ)*錄딖uy~E֚͠4=BuӺRՑ:0vl\jzQ-ZDn^FbJ̀h(4D9(a(R6@RJU0 TZKpNCƾ?OGv]ࣈ,B0̭#ؙ!2/)ג;%7O-L77pώsfmNOJ]Z890]0|ne6_gZY?{`BGqM=?4cj*1ra(_dt)N5@PfPߺiff6 "41!j4@.F"RT[ GǃWjDUmj3U̴:fF@Ht`MeMH9G;|d`\043C-rICiG)]Xdزp+Eun/+fV7!pL9';QtB p%n"EuHiA@m9. 3"!tC?kN\jvlߝS.k- 7W7/}-qesι99cND`f}{h31`4,*&V43!erRLҼL&Ԅ_umvi \r*1t>v|U ݚS݇/n\^'λc28CA*c#!\zrY+.2D~4-%&*HMf]L.炆7F.LMvAU(xךV 5*ڃR\5$""UUkp%vMS} 0G!EDj5ƸU 'j(`VkQ&vIZt+H着!1ֶ̌=2 ^UAԘ2 Qyk)RBƖ H[AY\p%X @J-R<w}b)5Y31cGti2k50mBZr5gc"J`elXq3zjPkS9L*BUwhإC첈wqgLi|C$biȔཕe:GӲuq~jΤq^,6MvSTffGR Ǥ"Ud{ǡ伬3A.iF0!8%/<#rNfYV TK1ȇz}7ibJ^E4v<}ߧzєZK)vYip W)Y/-}ɱRs.tѫg]=2PׅJR ,6W5S$5AQiVxaK|AJHD@5AQ-6N#"2Ȫ 6è`k_~Wiooo}s79W/B7o6]oto7Cws}Dt]6f7"}njR*9͸)5my:O<1sؔu=^֜)=zx;'Zʶ\ 97.y-;=;I x3 MUD@Ӽn._o~{G왦U?~ū?sɻq.HQ M\g6T#̥:b4jHSlfMlM6n \rڥKYZEAT$"W!5(!js,*!P <(bTxuXqSCkbۈ@dK.Y !{Xeg~콏6|F2]]Uj44I/'_ Qz"A(@PЈCp8tf۪._i""]svka-fdFsY[Φ!U 8Mлʥ5"UPFR@v,\gIָU/w/QqƌQ)fcMQ'KҰI*c 蠪3.T~P,M)aC)O3L{6Vs2唠4f(2Kt'@JQwr}JcYZ߮&iJty}yӯxxxC>{kʫV[>%1S+%!ZgSǗ_`53S]>ĘRu!]#XL ۮHN2޾h{|*W7n1ĔCfu ظf2!f3f+9!!!"D8W^?B`krP2Ppv2昳 eWZٚED5IV"3oas%FUUuaZ~,3gH!\J DDhG?ZRI 5@Y奇0r`&g]IDJCqLueNDb@XpRRS5Y0+,0O&2[Cs0C=]HNd !7M*;ـ C(dl\5&TN11d{N/dgRN.1Ɯ3&I)r˙viWH)!H붜 1YrL]LrΎyYiM #el2)HbchӧΚڑon׋|ZOyN/aU%6u%h!n"]S DB 圝+[rg+W٧hۏHdلjĠ(\Q9J]iwعC!jj>~O?_,iNr-SC}=z~`xjcx6c/}哳O>??hTG{H\LsJYZQNy9,rcL1v}c]OR>aHǧGeX\6C4XYӶj!c2̦ʲA]Z5[o\52G0i3#_X.[wo [cqd8E 2XdϞOgz.f5nY9co7f:]mI H[W*)&L-9|QP] K @A 22@Nvcw]fPrZd֘@fS@DĐ15PvDYT{'Γ;;4E`dFɺ[n"`v0^q`SRDdC$?ɷ~kW_Il&/6%Rj sn{FT(0V۵$M9U cc%[DZP*LFUL% d * 8b +$FfR,|YsU)8)hQ&0aر<3* A)w$%PJdN0D8"B z6RH]7^- CهX׍'SZm+cN9U]W8u"e{Z8BU///sNټ4۪>{;!bc1\m G6ݶX~۵ubޗv΂B)\uZBnqڊDaRtÌDGc#%Ͷ ]| ~Ïkx?kx/z91r e2foWϟn6ޑ&QИCi$`dZUNN9(1ީ@% ]YLl&B 1Hdmc 2H2:N;/jɽ 3y||i:iqUSL)& )D&fH.]ưs,r4ŀ8^%+cdls1UÆbHDY6㘒fCڦ%P.Cض8 u* ;ِHl8 ,uU8SU]!];g8pNk.tc ݈ۮGxJ!Rs K%`I11|xqQWUJRwl8DVRNf)8uUw]gIQS;}];S]U֙9'|2ĘTE$T)L"V&ldC@Oe)i f8L)UXDQiz]UHDp攘9KJQ˱>BL)1.2?&o6PUV.>;L][?|{ǍsU=y$Bzrr/[i_|:l{O]ӄ?{tc@IqN__H9nM6F}|jjk%'}EI̼^u96z|\l>dR:9X05fL^%׌vY> :9Uc&dgƾm[E4ͺA.0ox^uDrW?kN{Gާƶi()VD$$ߏNgBd뛋M7/U%%NfIDTr;샑&xsRŢ49eއߔ~WH{*D&PMƲʐ""0MY ;ty[- iK_;(KBȦq,*nQ\-b)2> c\n$Z b"6Z|Ij\Սggg>4@ȡT*̔/$ݺPe-;@YhyNvcDqT$ Q$310 "!c*L"b@EB P,1SR* 2L))hUUCcM9Ahb-f "e7no?}v懱m[WYt^DGifRբ7؟L IDAT?_\^ޮ7M]!iZSXn*bEb`J") c$"8"ͤm'm%C˽)Ŷm!C;iGP}dF nL , W)J#% l%qĐSݕ9Z2)`@чvV'ٳ0woO{/?ϟ=|~鈴{emc&-!v}zW׎&)%F*Ai1KId-ǐKA1k"uD"bb$E*R`v5:G%+"X眈0"Lc%@"qz 5։U &RCF1CJ1 U( mpԒ4:Wz|T0⒅]7*N91)rD\Eqm i~LN Gkb>%g8ֺ,hIуv #^Ud3jHƹP!a1o$ )bEGS.69$F/U1FB@2s0NGf*cZQ1RaQ.q,ZH"WiRM9sľjr}u5m>&kx>#b.9UrtCFRZ)MSfcR(q2Y6q圩*InƑǪCŦ/ /ֆx}`onni6k l%KUb0-X.Alsn*fM3-)f{ 1e?AE՜®CݹS1'@YqTպ#(fV#9"J9ƃyӤWWz?ɧ|~W^}ǾmMJӿscj;/it231&$EȄH5g rR $/5z5V1 ̴;)2"Y1f"9! nSwQU1aGo+9& 0ƄiE3USJLEHr˖ ;~v5h#kDlfcM\ʹ[gaڶ1eI u$ S1|l& v}L0?{t2kl:F_%>gVk?+Ů8 8 l M)ltZKV臁vsJm蝩bN3v[km9.##,)J*Ild $I[s)U Uer. a)@$ qS﷪4,+֪0CRBFDL"{fFsN"!quc1 SLY3n1\.0c)uU3ʓ]WM4 '$D>H1֓Y5-%U&Y~ܼؼz՛)w޴^^Mj7`!DT!u&C8^*%טB3t:>żX̶fxqt#p-~>;zO9@mU73\;u0Hb ,Ь)xIy $S^?\]\̗'㸝/ۮrHm. @mSlRHXW7Ue Hjȩ&0qXy~>=m_nq\Es8?;k\Tw=HE'P2F˟vj6&9cJYYr.Y@ !f.\0T1K@@au޵@,cN=KXU:[j)'FRIY X" +V#/16d*2;ʨoSYs qCDV1uV $-k՗W9  $!(@|PB,}/3+*;~a*j! 'bf;0ʫ rN9+Ia4'\#Ӟ [&cD̀"w%1fR.ں_ͽ)dDZaFl:M(Ξ-拦jVɔEmUD붓$b0@|qsUz6O'vG,c<= Ao'MSi%GńslAVyb!,L!vqNa)U-sH,XKrZ٠f&`Dh& ~QqGM7{ueMz-mgJU:w/'<8 q4=~7h6tZ}tN"Q561IYEc/A'&MWM}W^\VU{}usx|ncNbɲuhSX:*7 r!9++V $T|EAOҜ@*JbcR)2 Pᜂ*sVbȢ};[嘪 Pɪ"B!HU.X}pIć9b$1ѻƘMGSk+fj8XD RN5c0 R:hIegO>B>  3u{9>9&ϫ-/66TPat"1V )VUs6KR)k4dCKC$l9kt2&3t]OL Eug/.VzSYDƾ9qpJwATg\ RFSOqUS׈BjW3笈q̱mZlز9娚lu|}UO>[ߜ~_?;8E=kw&do}?`{}}G/^<1dn97Is M;N'9iHMh8"ن$*GPOzZ@զ4sn^5 ʵ}'a{")a,umv(~庩o]\__?| xS&,c,lvju{x|_MޢacBű[\27n׫ q>ϿދˋoonTsU z#AΩ\j #昁 3 J3.h Y%hY˿PݙE)W`RY2t7%&D%d `Ċl  #T%!(JƔ&Rfd LT39YH)c@a M%%r*K?wHwe.'ZQiwrR+ET.$$21CٸlDC@r% r0-Ng[{WG%r $F=/Cgd(uw"SąLU 1rJ* Szi|ɼISV 5B +gabfƄOelb^mM]mM;o]>{уպ|rL_f0u}oыc ~;n\]W(UUc *\K!%@ta֠' HY{@%fV" SHu[DU`k 0Ø^53av*rH#"H6!# ^_'lrvXrouz4ƸZx}s1\o|ϟݏѡoVN~w怒fZ=8^N}|:]o{!m0mzT'Oz;'?g}G~k5_|F?Up]ncXW58bBݸ].<6iYh"8*3+@NNsLln㯾]7 CæC1ְ!ĘrZ9SuaQ﷛M'"c?b."Ts Yle3@d%7mr cl'vw/VYcgj)|v#"kfoo_)w8.;[ILN pݷgmfۿW~ӟ<|h>v}Z0bG0 S]rUӔ0W]U1e$1Ij SME6uc4E #B57mXkbO&~e9$)qѰ >Jrn$_֛HYŋrIDM{<k_{d͖m9IJ6ᑱFrU]WWWՋWiKH|tmV5aI?z&߷֚aEtU)  7nf_E*@JAn7TYiW_ ̔8E[M1!cU7Hj6Ɣ20bo] "唉whg]V>X 8hߕ(0c)*eU>fb-J 0艈!)ƌ\$!4&BSYr֝>+;Y!8kLq_N]m@`L_%YYڛ[JlSTdfF"%֚.߻pڽ>[TEZp;`L%NV*n]#aށv?c8B$9ǘФѫv;ބ/fm;y_*k&M4mYm^}O^{.^\ߎ!?|p]mid2I5yrևRj]N\?m]s%t&K`V wmE*Kв@D ˛n16M5 Y$V)36LY ;(fɂ:صAzi9W%PU >jB"D1B])'"1.G窊|uj\;i* Ge{U1|8\]^DOz.Yj;fDVٿo_ۿPR')틛q^ ~އO?郋xw}`~5/'~մՓ{NY}{??kۛu7Y˳/Vn{ko<[΢ߦП퍡{(}i'3ͺ ,f` DhI7J!J28L糺ra̪{?M}NGBֹz]r:k++(i@95dr0d䫧gUU/ﺬl:mɐڽQUQF?1FJr2)jqUd]5no>}d ؘ *v4Ր"gk[E/CT՜R]]u@$[r0n\%91bL] r^9d臶ssC~h2nWMӄK6l 8LƊ ^]]gg|L>\^vSlQaS":T|!dƄqiq їluZkWF1)w8U%6D2"6z?}rr>:\1h,}?@|vqym(|;[Kb||`՘C>lַG<%Nf[h\)^X`9+!m!YVUUMm،!P; uvL*nBpFnh'JH9+C~4KnnnOa r4lޏj&MH%͏YDkgfl6?oUUHL.fm|}{RvãSJ?><>9w?ћo5×kbo/ɘ{'gO犺{3fy 1iʛ||{WWf*Y 5$!:%$KiWZX6Bݒ x~El/[*+AŻvAB.;2|٬)J1ZTϘsVB"H\ݣBZ6H$96nUYr吋_45"bB shsDkɶZc+WUc{I39ŔU3̆ Id}*(/Yw_%ZWإTEt,pyH5*}kS6\2gɻ$;όu$kxLL&WE`kE3icHl Rkm"cmLL@H1ylU2)Н 8Yj`P5*ZYw?%RDfMY@}vY xՔ8I95΅aov׫mxGd17̌xhS@&k&~~=\]W(4өkDdb fiNeDRbluUֵ|!("я)uUAg0d1ƸnbNr{r|\_\]]O!1&IO)V.؇ɪ_u0i[ccQnrX+"vR9W! IDATW6 g M?2 Qߍ>i"u3)Gf: I~v-֫nu /_^ !ʑӣƹM.zLu1z1IJqt+gV'Ds2LDDS*:ϊyAc_.cJo|6l:\a41%/fpNOFLj@^SʠrSdÄ< ޏκf3NKjjgroY6"NļZnWұ)>DW58,|{{YF_^5{!Fl|}sN&(Ԑ 0A]lrB̸g"a93{!&H@ASNǬRNl*RbNE`4eF/3`&c!PL9͒EE5z_80aEP7% Pk"&Cis@H1lgf}7̈0DT8PݛMv 9z_Վؚ|L R@)fb2d!1JupQQ`&;@nr$@+e*.qCt׆$9WeO7V@dT wK_dg/`% v߀qhYwI*/jHR%Ķ 0V !pkr.l{X$(tx E= a^R4lKSQ`*Nʢd!"@! 1 ĈDY*ń!)%$hcXDcK~? m~Nۚ  A{a}K'続y߿o7j?n{s^̧'{q"b?TỿO6s3ci68'Mm4Zb 1i1$fp$lpd>ӏY> =/,[|4ٟ7oPElc7{?L=/~ƱyʣWƘ}zsuۿN7po_,gamf1\\89w|0z:߿UdV7݇wxꦛNg'?Yw_8pk|oo7?Y|toVMc5b,bUBL)eE!3Cd#`9%!rlrg` OSEh&tz[ 33P!2lp&͵l褪ǿ"-߶ܼxqdַY0ؗ4Ir}{DfV3CgHQ2QFI#L?@.ҿQ]$AI6&E\f#02#ܿE#31d_ʌd\R~ˏyg{'~9uiK_~_Yn]vwo^|٧<~wO>l۝0@f&@&A*n& jݑͧ!!JϞBO߽feWk?o?~kOf9"aW˄fC.e*ϟ>sboy`ڐ벬D8MM.(1K"a.\E*`!!AʆV6m3R23H_paTDȆ %PXގtB@A2Ej=,THnv`,BcP3 1z/ 1pF@XRG8#̄@R(AU|5'.=o&Njv. rnsiw;ڍ#y[㓂$s >q}Fv` Lۑk#^zdCj =ܥVmi!4ÔH 1yDdj,#:K-z-^8 Jm!Qj 6_7vo6k#0fP{$[x( dtT uSovs\VMaNH4iOnѼG&p{{o^ի|Ϳ|}C}6 _a=eLYQfK,STne_ԲY-MIs_͏_|/FgONK?N ˿Ͼw?'{ú~pޗ_|7?9>xW_o}·՗58?կ~ɯOӿwO?W^=_HI+ۚWU#4YMy6Dy]2bEé-/ދƟ~ueѻMN*MV qqӮN4 ~uU5n]e]iu2FTn7r fQkO˲3vYDmiq{8~pspjm{;nvݲNSX%{?pnonvNe%wb]p-e[H5̺w'±w놿f1Iu={_yf$@$/!Ȭd'F'P* pRTtZ5׮yreY/um+q<-4fDtSsӮ4H#e 0P] Lo=֦y sr?OӼ 툰E:&RMo?{[x(@D:rZ?vU#Lpm Nu Д B$#R *٣j^ c77J 0 l|̃ҿA[S" kl35Oq <]ApdgRD4lW|5)09'RJq,n0|V1Ĭ#(o(Ih$A(W #!F'amQ=?o~ fȷ˂-vvEJ ]tq[ 8pnSu.ApqAisj&jk Dʁ4Ԉ 8"XlKgt/4TL GLv577rnZwVZ)]Ȳ5`Ē^btkC _TJq5drt5g5L ]{!\ue߯9^^ߟ(LJɋ'TfQd:_}TٳNˮбyy)8莮jfok7'ft|rxZx>R&7}:$t'R0./n/~I_},;×j~em*CQ;-|==ܵcXD ڢM] ]%%=-QdL$0q$]}߾^ʞqRKmʵ؟Og){oTѥ4uiL̓6]a?Si.o˝حaq9K{r_O+1 $[NKo},̀ti7Wuf# O;kkpYN(2Ka93"Y;spDpwn ,J, & u by}BT&S)-CĮv]5‚ wa$@lF%gv]-mG77" ba@s"nnu3a6TEy"bjC€L6,1;!BGp# s)j;)7w ##i4}0GF虲1Mg|5OJlE*  H]AA’ h/[@b8Ee=/ckK6Z 67>ӆ{Q%'`R3O6,&pG,+>2 Z++<14"h dmIt$ wOљD bDq"X۪HhB O'r%8>`Ds# S0D0R+Bx7fjzR&BA,-MBVUD@sEjT%"]UA#fb2LMD0"$\!QsA7?i 8lLjF3Cm߫i!Gp+!r>a 3Gw4ֆ4 ta.KnR~[=]~}wg͡|;==;:%5㪇℀AR[oj"ba}eTx<uΔN@tH_ ܫei9wNx@03 Qă}s57fPJB\tuBT6E b$*~ wL}3ծP¢-V] WA'"ZZ櫯"gOv @J;Zk˺6073;3ޖP`$r2OJ@Bi #{TrE#@,4!b@央rPtiu@}K Iֹ>K-Lᾮ벮fjܱ#:v11̍D Fnp?uJ|-x_nނƈԺ# wm0yQ@`37"(3ysHB#y@cDi3b@!`uY2?YqBw6/ 2"!AX 1YWk=‘2{`3䤬ږ%(i 7M.Xh4$,9[ 9 d~p"b`ba&!^jue0LJ/U"P #*3p1 檺} )HeN +(FxDnpDf)0c f_B: s͜3FN9| QdE,n~HDZlcbˆHL=v#[ff $SdD´,@@"-%1a>" .D.H@A|=sw n9!8Cѐ F' xxgs%?TQ0 p!8[ ¬'P603'pfrq2(LD8 ZdF sAػRεi ,!aiA,"Y`"Z©f"2ڻEOEu<]-ZD%9wՌEgas%*wL$S9gL(̳'!bR@滠je$`B0@DbpB7u"K2;q q{S3PFDWm}զQ+1[ˆp8R'sn' qYWc)Ni~Ya2Y_株jF@\Y>m{}XSsgF][u99HXD *IDATRFtr^aE1$ 2cWtF"xazƗ7$P.Օ|k$p g/uɫk8ms qB&GCc7K7%)2gq>LjN 鼔S@64@AfM-z@IJ , DBfP zѹ1\o 3IHzJsYƅ+:s*2 -`@ĂtE 9?3?1.:l.1xjǮnc}.xT }\@~y8(vFl'pC_n%`$Ĭ=ck\Fjtl%mclKF^e_m<*>U`p@|#dJG r!>҂ B  tDVMWܼOutMTcU# '&f& yz_W]% ̎˲eY[7Ѡ+\XDHZk-\Aą 8\ 0i HN"ݴjw~_y".\[_W̍ kSm]WGb  0հ8SgR2Qa@}$Gt8FeW$bF`AV+x=GH\{VrCcHľ`B!vph7 9NAa6INW}i\_-wLJv~;>y3Yd؆T FPFg©xF3F2{Mg=0Dh{(f#QBCFlcN zSU$w&cȄF'ֿOFx-MM\i#')wٴO\D8@ Xz{j-֚jF@Z3Zj An/Uh٩qeDj[Wk:Ic.RkצXK3;N:]08)f07ݣ;DXֆrt7`Ⳗt\"Ce<#>[ع6y)2no.td`R7y$@fy.s%Ky\^+ k96]Dj~‡'2ppY7`Y!;@oUGq}U g?faK얧W>Ey׷_\:y R8"kw>?԰72/C, 2009. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:57+0000\n" "Last-Translator: Alexandru Csete \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Kuvaly [LCT] https://launchpad.net/~kuvaly\n" " Zbyněk Schwarz https://launchpad.net/~tsbook\n" " pschonmann https://launchpad.net/~pschonmann" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Nelze otevřít %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Nalezen alespoň jeden soubor .qth." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Nelze zkopírovat sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: sample.qth zkopírován do %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Kontrola v pořádku." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Kontrola selhala. Vytváření %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Nelze vytvořit %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Vytvořeno %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Nelze zkopírovat Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: amateur.mod zkopírován do %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Nelze načíst data z %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Nalezeno %d satelitů v %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat již existuje. Přeskočeno." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Zapsán %d nový satelit do uživatelského nastavení" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Nelze otevřít %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Nelze zkopírovat %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Úspěšně zkopírováno %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Nelze načíst %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Chyba při čtení %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Informace Gpredict" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s voláno s color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s voláno s alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s voláno s rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s voláno s rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Nelze vytvořit data nastavení (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Nelze vytvořit data nastavení (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Chyba při zápisu dat nastavení (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Zapsáno pouze %d z %d znaků." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Nastavení uloženo pro %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Místní čas" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "Výš" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satelit" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Katčíslo" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "TUČNÉ" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Název satelitu" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Katalogové číslo" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimut" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Výška" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Nelze získat data pro #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satelit #%d odstraněn ze seznamu." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Nikdy" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: Spravte mě nejsem zaveden" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Nelze získat data pro %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "%s:%d: Není žádný výběr; přeskočit vyskakovací okno." #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Použijte tlačítka myši a kolečko ke změně hodnoty" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d Špatný směr polárního grafu." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "S" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "J" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "V" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "Z" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Nelze nalézt satelit (%d) v hash tabulce" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Nelze najít kliknutý objekt (%d) v hash tabulce" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Další: %s\n" "v %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Další: %s\n" "v %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Nelze najít satelit NEXT." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Další: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Další: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS v %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS v %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Vždy v rozsahu" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "%s:%s: Aktualizace průchodu satelitu SAT:%d Q:%d T:%d\n" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "%s: značka přidána do polárního zobrazení neukazující %d." #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "%s: přidán štítek do polárního zobrazení neukazující %d." #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Nelze přidělit paměť pro satelit %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d Nelze získat průchod satelitu." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "%s:%d V průchodu nejsou žádné body." #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d nelze získat objekt satelitu." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Požadovaný satelit (%d) není v rozsahu" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Nebeská dráha" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS za" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS za" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Sestupná trasa " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "Dopplerův jev podle rozsahu rychlosti a současně zvolené frekvence sestupné " "trasy" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Vzestupná trasa " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: Modul GtkSat nemá žádný cílový satelit." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Satelit %d má %d režimů transpondéru." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Nelze otevřít adresář hwconf (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Neplatný výběr satelitu: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: Zjištěna nesrovnalost mezi vnitřními daty transpondéru (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Zvoleno první zařízení: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Nelze přidělit paměť pro nastavení rádia" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Načteno nové nastavení rádia %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Nelze načíst nastavení rádia %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Vybráno druhé zařízení: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Nelze přidělit paměť pro nastavení rádia" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Ovladač nemá platné nastavení" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Vybrrte cílový objekt" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Sledovat" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Vyberte transpondér" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "N" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Naladit rádio na tento transpondér. Vzestupná a sestupná trasa bude " "nastavena na střed propustného pásma transpondéru. V případě majáků bude na " "jeho frekvenci naladěna pouze sestupná trasa." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "U" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Společně uzamknout vzestupnou a sestupnou trasu . Kdykoliv změníte sestupnou " "trasu (na ovladači, nebo na ciferníku. sestupná ji bude sledovat podle toho, " "zdali je transpondér invertován, nebo ne. Podobné je to v případě změny " "vzestupné trasy.\n" "\n" "Pokud při zapnutí této funkci nejsou trasy synchronizovány, bude současná " "frekvence sestupné trasy použita jako základ pro nastavení nové frekvence " "vzestupné trasy." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "Výš:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Rozsah:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Toto je současná vzdálenost mezi satelitem a pozorovatelem." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Rychlost:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "Rychlost změny vzdálenosti mezi satelitem a pozorovatelem." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Cíl" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Chyba čtení nastavení rádia %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. zařízení" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Vyberte první rádiové zařízení. Toto zařízení bude použito pro vzestupnou a " "sestupnou trasu, pokud nezvolíte druhé zařízení pro vzestupnou." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Zařízení" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Vyberte druhé radiové zařízení\n" "Toto zařízení bude použito pro sestupnou trasu" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Žádné" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Zapojit" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Zapojit zvolené radiové zařízení" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Cyklus:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "Tento parametr kontroluje zpoždění mezi příkazy odesílané soupravě." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msek" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Nastavení" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "%s:%s: odesílání %d bajtů do rigctld jako \"%s\"" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: Chyba velikosti %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: uzavřen port rigctld" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Obdrženo 0 bajtů od rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Přečteno %d bajtů z rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s zavoláno ale TX VFO je %d" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s nestihl termín" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: Nulové úložiště." #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: Získán zámek ovladače" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" "%s: Ovladač není zapojen; událost PTT ignorována (Nápověda: Povolte tlačítko " "Zapojit)" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT je VYPNUTÉ => Nastavte TX frekv a PTT=ON" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT je ON = Nastavte PTT=OFF" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "%s: Nelze získat zámek ovladače; událost PTT není obsloužena" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Zjištěna událost stisknutí MEZERNÍKU" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: Hodnota stisknutí klávesy %i není touto funkcí obsluhována" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Nelze vytvořit soket" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Soket sítě úspěšně vytvořen" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Nelze se připojit k %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Otevřeno spojení s %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "%s:%s: Odeslány 2 bajty ale odesláno %d." #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "%s: rotctld soket je nefunkční" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Obdrženo 0 bajtů od rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "%s:%d: rotctld navrátil chybu (%s)" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "%s:%d: rotctld vrátil špatnou odpověď (%s)" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "%s:%d: rotctld vrátil chybu %d az %f výš %f(%s)" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Čtení:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Čtení: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "CHYBA" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: Dosaženo maximálního počtu chyb (%d). Odpojování zařízení!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "%s:%d: Nelze přidělit paměť pro nastavení rotoru" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Načteno nové nastavení rotoru %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d Nelze načíst nastavení rotoru %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Sledovat satelit, když je v dosahu" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Zařízení:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Vyberte zařízení k otáčení antény" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Zapojit zvolené zařízení rotoru" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "Tento parametr kontroluje zpoždění příkazů odesílaných k rotoru." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolerance:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Tento parametr kontroluje toleranci mezi hodnotami cíle a rotoru pro rotor.\n" "Pokud je rozdíl mezi hodnotami cíle a rotoru menší než tolerance, nejsou " "posílány žádné nové příkazy" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "stup" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Chyba při čtení JMÉNO z %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Satelit %d nemá žádnou PŘEZDÍVKU" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "%s: Chyba při čtení 1. řádku TLE z %s (%s)" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "%s: Chyba při čtení 2. řádku TLE z %s (%s)" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: Data TLE pro %d se zdají být špatná" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Adr" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dek" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Rozsah" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Míra" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Další událost" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Další AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Další LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "ZŠíř" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "ZVýš" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Stop" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Výš" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Rychl" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Ztráta" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Zpž" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "SA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Fáze" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Oběžná dráha" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Vid" #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "Stav PPT" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Směr" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Rektascenze" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Deklinace" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Šikmá vzdálenost" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "Rozsah rychlosti" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Zeměpisná šířka" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Zeměpisná délka" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "Subsatelitní bod" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Stopa" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Výška" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Rychlost" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Dopplerův posun při 100Mhz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Ztráta signálu při 100MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Zpoždění signálu" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Střední anomálie" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Fáze oběžné dráhy" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Číslo oběžné dráhy" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Viditelnost" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Operační stav:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: Neplatný GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d Neplatný sloupec: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "%s: GtkSatList nemá podřazenou s indexem %d" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Další: %s ve %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Další: %s ve %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "%s: Nelze najít objekt kliknutí (%d) v hash tabulce" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Načítání souboru mapy %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Nalezen soubor mapy" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Nelze najít soubor mapy %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Používána výchozí mapa: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Chyba načítání souboru mapy (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "%s: Špatná data měřící vzdálenost k severnímu pólu %f %f." #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "%s: Špatná data měřící vzdálenost k jižnímu pólu %f %f." #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS za %d minut" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS za %d minut" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Vytváření pozemní dráhy pro %s" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Začátek oběžné dráhy: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: Konec oběžné dráhy: %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "%s: T0: %f (%d)" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "%s: MAYDAY: Nedostatečná paměť pro pozemní dráhu!" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "%s: Problém při výpočtu pozemní dráhy pro %s" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Aktualizace pozemní dráhy pro %s" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Smazání pozemní dráhy pro %s" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "%s: Nelze najít část %d pozemní dráhy" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Zvýraznit stopu" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Pozemní dráha" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Nastavit cíl" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "%s:%d: Neplatný typ podřazené (%d). Používání GtkSatList." #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: Rozvržení má %d sloupců a %d řádků." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Nelze získat seznam satelitů (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Chyba při čtení dat pro #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "%s: Čtení dat pro #%d" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Sat #%d již je v seznamu" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: Čtení %d z %d satelitů" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "%s: Aktualizace GtkSkyGlance pro %s" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "%s:%d: Neznámý typ podřazené" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "%s: Předchozí cyklus propásl termín." #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Nelze načíst data nastavení z %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Čtení nastavení z %s." #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" "%s: Nelze načíst výchozí soubor QTH %s; jsou použity zabudované výchozí" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "%s: Rozvržení modulu je neplatné: %s. Použito výchozí." #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "%s: SÍŤ(%d): %s" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "%s: Nelze přidělit paměť pro síť." #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Modul %s není platný" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Modul %s má problémy" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Volby / Zkratky modulu" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Zavřít tento modul" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "%s: Modul %s obdržel signál CLOSE." #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Modul %s je ve stavu DOCKED." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" "%s: Modul %s nebyl nalezen v mod-mgr (%d)\n" "Vnitřní stav je poškozen?" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "%s: Modul %s je ve stavu WINDOW." #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "%s: Modul %s je ve stavu FULLSCREEN." #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: Modul %s má neznámý stav: %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Modul %s uzavřen." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Modul %s obdržel signál CONFIG." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" "%s: Nelze zastavit časový limit zpětného volání\n" "%s: Zdrojové ID %d se zdá být neplatné." #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: Nastavení modulu z nějakého důvodu selhalo." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Znovu načítání satelitů pro modul %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "%s: Neznámý typ podřazené" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s zavoláno s nulovým parametrem!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Odpojit modul" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Připojit modul" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Ukončit režim celé obrazovky" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Celá obrazovka" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Vybrat satelit" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Nebe v kostce" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Ovladač času" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Ovladač rádia" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Ovladač antény" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Nastavení" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Kopírovat..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Smazat" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Zavřít" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "Modul nemůže být nastaven, když je ovladač rotoru nebo rádia aktivní.\n" "\n" "Prosím zavřete ovladače rádia a rotoru a zkuste to znovu." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Kopírovat modul" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Název nového modulu:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Zadejte krátký název tohoto modulu.\n" "Povolené znaky: : 0..9, a..z, A..Z, - a _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Otevřít modul, když je vytvořen" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "Pokud je zaškrtnuto, nový modul bude otevřen poté, co je vytvořen." #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Kopírování %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Nelze kopírovat %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Úspěšně zkopírováno %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Kopírování zrušeno uživatelem." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Kopírování přerušeno." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: Neznámý stav modulu: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "Nebe v kostce (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Nemáte žádné nastavení rádia!\n" "Prosím nejdříve ho nastavte." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict ovládání rádia: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Nemáte žádné nastavení rotoru!\n" "Prosím nejdříve ho nastavte." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict ovládání rotoru: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Tato operace trvale smaže\n" "%s\n" "z disku.\n" "Chcete pokračovat?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Nelze smazat %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s trvalo smazán." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Ovladač času pro %s je již aktivní" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Přehrávat dopředu" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Zastavit" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Přehrávat dozadu" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Resetovat" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Resetovat na současné datum a čas" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Opravdový čas" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Použijte toto ovládání pro nastavení hodiny" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Použijte toto ovládání pro nastavení minut" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Použijte toto ovládání pro nastavení sekund" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Použijte toto ovládání pro nastavení milisekund" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "Přiškrcení:" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "Přiškrcení času / faktor komprese" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Ovladač času pro %s spuštěn" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Ovladač času pro %s uzavřen. Čas resetován." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Simulace opravdového času" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Ruční ovládání" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Dostupné satelity" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Aktualizováno" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Nelze otevřít %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Chyba při čtení satelitu %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "%s:%s Přečteno %d satelitů z %s" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Nelze přečíst %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Všechny satelity" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "%s:%s: Nelze otevřít adresář dat satelitu %s." #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "%s:%s Přečteno %d satelitů ve skupině MAIN." #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "%s: CHyba při získávání %d. satelitu" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "Epocha" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Vybráno" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Rozbalit" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "Rozbalit všechny uzly ve stromě aby byly prohledatelné" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Sbalit" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Sbalit všechny uzly ve stromu" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Adresář je: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: V %s nenalezeny žádné soubory .tle." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "%s:%d: Přečteno %d satelitů z %s " #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Nelze otevřít %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satelit %d označen." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Satelit %d již označen; přeskakování..." #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Satelit %d odznačen." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: Neplatný GtkSatTree!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Satelit %d již označen; přeskakování..." #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: Nejsou označeny žádné satelity => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "Rektasc." #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "SSP 3íř." #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "SSP Výš." #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Loc." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Doppler@100M" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Ztr. sig." #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Zpož. sig." #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "Stř. anom." #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Číslo orbit." #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Azimut satelitu" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Nadm. výška satelitu" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Směr satelitu" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Rektascenze satelitu" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Sklon satelitu" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Rozsah mezi satelitem a pozorovatelem" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "Rozsah v kterém se mění šikmá vzdálenost" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Čas do příštího AOS nebo LOS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Čas do příštího AOS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Čas do příštího LOS" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Zem. šířka podsatelitního bodu" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Zem. délka podsatelitního bodu" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Podsatelitní bod jako čtverec mřížky Maidenhead" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Nadm. výška satelitu" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Tečná rychlost satelitu" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Ztráta signálu @ 100MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Viditelnost satelitu" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "%s:%d: Nelze aktualizovat neviditelné pole (I:%d F:%d)" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: Nelze aktualizovat neexistující sat" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/A" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "%s:%d: Neplatné číslo pole (%d)" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "%s: Nelze nalézt satelit s katalogovým číslem %d" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: Neplatné GtkSingleSat!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Možnosti satelitu / zkratky" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "%s::%s: Nelze získat objekt pass_t" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" "%s::%s: Zobrazování podrobností průchodu pro %s - tady mohlo dojít k úniku " "paměti" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Tlačítko %d nemá funkci..." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "ČAS" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "%s:%d: Index barvy mimo platný rozsah (%d)" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: %s má %d průchodů během %.4f dní\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Tento modul nemá žádné satelity!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Umístění" #: ../src/loc-tree.c:181 msgid "WX" msgstr "WX" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Vybrat umístění" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "%s: Vybráno %s" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: Nevybráno žádné umístění" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s neexistuje!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "%s: Přečteno %d měst." #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "%s: Nelze otevřít locfile (%s)" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "%s: Neplatý sloupec: %d" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "%snelze získt nadřazené %s." #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "%s: Výběr nenalezen!" #: ../src/main.c:60 msgid "just to have a pot" msgstr "jen prostě mít ten soubor" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict je program pro grafické sledování satelitů a předpovídání oběžné " "dráhy v reálném čase.\n" "Nepotřebuje žádné volby příkazového řádku pro nominální operace." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "Zpracování volby selhalo: %s\n" #: ../src/main.c:131 #, fuzzy, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" "%s: Kontrola uživatelského nastavení (kód %d). To je závažné.\n" "Možným řešením by bylo odstranění datového adresáře .config/Gpredict\n" "ve Vašem domovském adresáři" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "%s: Předán nenulový ukazatel, což by se nikdy nemělo stát.\n" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "%s: Časový práh byl překročen." #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "%s: Spouštění nového vlákna aktualizace." #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "%s: Nelze vytvořit vlákno aktualizace TLE (%s)" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "Vaše soubory TLE začínají být zastaralé.\n" "Můžete je aktualizovat výběrem\n" "Upravit -> Aktualizace TLE\n" "v liště nabídky." #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "%s: Nelze najít úkol sledování TLE (ID = %d)" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Čištění data TLE v %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Nelze smazat %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: Odstraněno %s" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "%s: Čištění dat transpondéru v %s" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "%s:%d_ Nelze stat %s" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Vyberte mapu" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Obrázkové soubory" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "%s: Spouštění konfigurátora nového modulu" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: Název nového modulu je %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" "Nelze otevřít %s. Pro podrobnosti si prosím prohlédněte zprávy záznamu." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: Nastavení nového modulu zrušeno." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s Hledání modulů v adresáři %s." #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "%s:%d: Nelze otevřít adresář modulu %s (%s)" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "Zatím nemáte nastaveny žádné moduly. Prosím použijte Soubor->Nový pro " "vytvoření modulu." #: ../src/menubar.c:335 msgid "Module" msgstr "Modul" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Vybrat modul" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: VYbraný modul je: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "%s:%s: Žádný výběr v seznamu modulů." #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "%s: Otevřít existující modul..." #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Otevřít modul %s." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Otevření modulu zrušeno." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Hotovo" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Aktualizace TLE" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Aktualizace souborů TLE ze sítě" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Aktualizováno satelitů:\t 0\n" "Přeskočeno satelitů:\t 0\n" "Chybějících satelitů:\t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Vyberte adresář" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Vyberte adresář TLE:" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Aktualizovat TLE ze souborů" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: Spouštění aktualizace TLE z %s" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Aktualizace souborů TLE ze souborů" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Přehledný uživatelský manuál v PDF a \n" "video výuku můžete najít na \n" "stránce Gpredict:" #: ../src/menubar.c:849 msgid "_New module" msgstr "Nový _modul" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Otevřít modul" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Prohlížeč záznamu" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Aktualizace souborů TLE ze sítě" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Aktualizovat TLE ze souborů" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Bez transpondérů" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Nastavení" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Licence" #: ../src/menubar.c:936 msgid "_News" msgstr "_Novinky" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_O Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Soubor" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Upravit" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Nápověda" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "%s: Již má modul %s. Požádejte uživatele o potvrzení..." #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "Již existuje modul s názvem %s.\n" "Chcete tento modul přepsat?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "%s:%s: Nelze získat záznam %d v seznamu satelitů" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "%s: Modul nemá žádné QTH; použít výchozí." #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** VÝCHOZÍ **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "%s:%d: Nelze otevřít adresář nastavení uživatele %s (%s)" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Vybrané satelity" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Vyberte pozemní stanici pro tento modul." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Přidat novou pozemní stanici" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satelity" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Použity změny do %s" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Chyba při ukládání dat modulu (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: Uživatel se pokusil vytvořit modul bez satelitů." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Vyberte prosím alespoň jeden satelit ze seznamu." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "%s: Pokus o uložení dat do prázdného názvu souboru." #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "%s: Pokus o uložení nulových dat." #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Nelze přečíst boolean (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "%s: Nelze přečíst celé číslo (%s)" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "%s: Nelze přečíst řetězec (%s)" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "%s: Nelze získat seznam celých čísel: %s" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: Nelze obnovit %s" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: Žádné moduly nebyly obnoveny." #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "%s: %s přidáno do správců modulů (stránka %d)." #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "%s: %s přidáno do správců modulů (NEUKOTVENO)." #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "%s: Modul %s se zdá být PRÁZDNÝ" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "%s: Nelze najít podřazenou v zápisníku. Tohle může bolet..." #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "%s: Odstraněna podřazená ze stránky sešitu %d." #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "%s: Pokus o uložení stavu ale mod-mgr je PRÁZDNÝ?" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "%s: Žádné moduly nepotřebují uložit stav." #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "%s: Uloženo %s" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "%s ložen stav pro %d modulů." #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "%s: Modul %s není nalezen v seznamu. Pokus o obnovení." #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "%s: Modul %s již je v sešitě!" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "%s: %s ukotveno do sešitu (stránka %d)" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "%s: Modul %s nevypadá, že je ukotven!" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "%s: Odstraněno %s ze stránky sešitu %d." #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "%s: Pokus o znovu načtení satelitl, ale mod-mgr je PRÁZDNÝ?" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "%s: Žádné moduly nepotřebují obnovit satelity." #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Zobrazit podrobnosti" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Polaární souřadnice" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "Az/Výš souřadnice" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Čas" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Az " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " Výš " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " Ra " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dec " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr " Rychl " #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Lat " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lon " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr " SSP " #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Alt " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Vel " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr " Dop " #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr " Loss " #: ../src/pass-to-txt.c:55 msgid " Del " msgstr " Del " #: ../src/pass-to-txt.c:56 msgid " MA " msgstr " MA " #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr " Pha " #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr " AOS" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TCA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " LOS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Trvání" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "Max Výš" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "AOS Az" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "Max Výš Az" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "LOS Az" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Místní" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Podrobnosti průchodu pro %s (orbita %d)\n" "Pozorovatel: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Nadcházející průchody pro %s\n" "Pozorovatel: %s, %s\n" "LAT:%.2f LON:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "%s: Nalezeno %d průchodů pro %s v časovém okně [%f;%f]" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "%s: Vrácení průchodu pro %s který začíná po zrychleném čase." #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "%s: Vrácení průchodu pro %s který začíná po nasazeném čase." #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Podrobnosti průchodu pro %s (orbita %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: Nelze načíst data z %s (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: data QTH: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "%s: QTH nemá žádné umístění (%s)." #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "%s: QTH nemá žádný popis." #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "%s: QTH nemá žádnou meteorologickou stanici." #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "%s: Chyba při čtení zěm. šířky QTH (%s)." #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "%s: Chyba při čtení zěm. délky QTH (%s)." #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "%s: Chyba při čtení výšky QTH (%s)." #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "%s: Chyba při čtení typu QTH (%s)." #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "%s: QTH nemá žádný serber GPSD." #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "%s: Nelze nastavit QSA pro %s na %f, %f." #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "%s: QTH data: %s, %.4f, %.4f, %d" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "%s Nelze otevřít gpsd na %s:%d" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "%s: Nepodporovaná api gpsd hlavní verze (%d)" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Chyba" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "%s: Data QTH mají nesprávnou lat %f" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "%s: Data QTH mají nesprávnou lon %f" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" "%s: Soubor obsahoval nesprávná data QTH. Opravování: %s, %.4f, %.4f, %d" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" "%s:%d: Načteno %s pro úpravy:\n" "LAT:%.2f LON:%.2f ALT:%d" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "%s:%s: %.2f %.2f => %s" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "%s:%d: Chyba při převodu lon/lat do lokátoru" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "%s:%s: %s => %.2f %.2f" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "%s:%d Neplatný lokátor: %s" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Název" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Zadejte krátký název pro tuto pozemní stanici, např. volací znamení\n" "Povolené znaky: 0..9, a..z, A..Z, - a _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Popis" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "Zadejte nepovinný popis teéto pozemní stanice." #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "Nepovinné umístění této pozemní stanice, např. Kodaň, Dánsko." #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Vyberte" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Vyberte zeměpisnou šířku pozemní stanice v desítkových stupních." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Sever" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Jih" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Vybrat zeměpisnou délku pozemní stanice v desítkových stupních." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Východ" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Západ" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Lokátor" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "Síť lokátora Maidenhead" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Meterologická stanice" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Čtyřmístný kód pro meterologickou stanici" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "Typ QTH" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" "Qth může být statické, tj. nemění se, nebo gpsd pro počítače s připojenými " "gps." #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "GPSD Server" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "GPSD Server." #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "GPSD Port" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "Nastavit port, který použijte GPSD. Pro gpsd je výchozí 2947." #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Upravit data pozemní stanice" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "Při ukládání dat pozemní do %s.qth\n" "stanice se se stala chyba!\n" "Prosím zkuste použít jiný název." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "%s: PRÁZDNÝ název nastavení!" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: Nelze načíst soubor %s\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "%s: Chyba při čtení nastavení rádia z %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "%s: Přečíst nastavení rádia %s" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "%s: Chyba při čtení nastavení rotoru z %s (%s)." #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Chyba při čtení souboru s nastavením (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "%s: Používány zabudované výhozí" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Vše je v pořádku." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Modul není zaveden\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "%s: Neznámý BOOL parametr indexu (%d)\n" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "%s: Neznámý DTRparametr indexu (%d)\n" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "%s: Neznámý INT parametr indexu (%d)\n" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Bez transpondérů" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Vzestupná trasa: %.4f MHz" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Sestupná trasa: %.4f MHz" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Invertování: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Režim: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Název satelitu:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Operační stav:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "V provozu" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Není v porvozu" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Částečné v provozu" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "Záloha(V pohotovosti" #: ../src/sat-info.c:319 msgid "Spare" msgstr "Náhradní" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "Rozšířená mise" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Neznámé" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Číslo katalogu:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "Mezinárodní označení:" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "Číslo sady prvku:" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "Čas epochy:" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "Číslo orbity v epoše:" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Sklon:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "RAAN:" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Výstřednost:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "Prům perigea:" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Střední anomálie:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "Střední pohyb:" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "1/6 d2/dt2 (střední pohyb):" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "B* drag term:" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Informace o orbitě" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transpondéry" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Informace o satelitu" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Čas" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Úroveň" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Zpráva" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "ŽÁDNÝ" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "VAROVÁNÍ" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "INFO" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "LADĚNÍ" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "Soubor záznamu je poškozen" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "%s:%d: Chyba při otevírání záznamu ladění (%s)" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Vybrat soubor záznamu" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "Prohlížeč záznamu: %s" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Prohlížeč záznamu" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Chyby" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Varování" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Info" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Ladění" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Celkem" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Souhrn " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr " VARO" #: ../src/sat-log.c:63 msgid " INFO" msgstr " INFO" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "CHYBA: Nelze vytvořit %s\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "CHYBA: Nelze vytvořit %s\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Sezení spuštěno" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Sezení ukončeno" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Získání signálu (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "Doba nejbližšího přiblížení (TCA)" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Ztráta signálu (LOS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Trvání průchodu" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Maximální výška" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Azimut v AOS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Az v max. výšce" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Azimut v LOS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Číslo orbity" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Viditelnost během průchodu" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Data" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polární" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Az/Výš" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Nadcházející průchodu %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "%s: PRINT není zaveden" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "Nastavení GPREDICT :: Obecné" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "Nastavení GPREDICT :: Moduly" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "Nastavení GPREDICT :: Rozhraní" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "Nastavení GPREDICT :: Předpověď" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Obecné" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Moduly" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Rozhraní" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Předpověď" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Nastavení Gpredict :: Obecné" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Resetovat nastavení na výchozí hodnoty" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Minimální výška" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Práh výšky pro průchody.\n" "Průchody s maximální výškou pod tímto limitem budou vynechány" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[stup]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Mnoho průchodů:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Počet průchodů k předpovídání" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Maximální počet průchodů k předpovídání" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "K průchodům by mělo dojít" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" "Budou zobrazeny pouze ty průchody, které jsou uvnitř zadaného počtu dnů." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[dní]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Podrobnosti průchodu:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Časové rozlišení" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" "Gprredict se bude snažit zobrazit podrobnosti průchodu se zadaným časovým " "rozlišením." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[sek]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Počet položek" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" "Gpredict se pokusí udržet počet řádků v podrobné předpovědí uvnitř tohoto " "limitu." #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Viditelnost satelitu:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Práh soumraku" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Vždy použít skutečný čas pro předpovědi průchodu" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Toto políčko zaškrtněte, pokud chcete, aby Gpredit vždy používal současný " "(skutečný) čas při předpovídání budoucích průchodů satelitů.\n" "\n" "Pokud nebude zaškrtnuto a ovladač času je aktivní, bude Gpredict používat " "čas z ovladače jako počátek pro předpovědi." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Úroveň ladění:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Úroveň 0: Žádné" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Úroveň 1: Chyby" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Úroveň 2: Varování" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Úroveň 3: Informace" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Úroveň 4: Ladění" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" "Zvolte úroveň ladění. Čím vyšší je úroveň, tím bude více zpráv zaznamenáno." #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Smazat soubory se záznamy starší než:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Vždy mazat" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 den" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 týden" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 měsíci" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Vyberte jak staré soubory áznmu by měl Gpredict smazat." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" "Zobrazit místní čas místo UTC. Poznámka: místní čas je čas vašeho operačního " "systému a ne umístění, které volíte jako odkaz pro sledování." #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Zadejte řetězec formátování pomocí následujících kódů:\n" "\n" "\t%Y\tRok se stoletím.\n" "\t%m\tMěsíc (01-12).\n" "\t%d\tDen v měsíci (01-31).\n" "\t%j\tDen v roce (001-366).\n" "\t%H\tHodina (00-23).\n" "\t%M\tMinuta (00-59).\n" "\t%S\tSekundy (00-59).\n" "\n" "Pro další kódy a příklady si prohlédněte uživatelskou příručku." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Zobrazit vzdálenosti pomocí imperiálních jednotek, například míle místo " "kilometrů." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Zobrazit místní čas místo UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Obnovit výchozí hodnotu" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Formát času:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Použít N/S/E/W pro zeměpisné souřadnice." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Použít imperiální jednotky místo metrických" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Formáty čísla" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Pozemní stanice" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Záznamy zpráv" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Rádia" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Rotory" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "Světová mapa, polární a jednotlivé sat" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Světová mapa" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Tabulka" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Světová mapa a tabulka" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Polární a jednotlivé sat" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Polární a nadcházející průchody" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "Všechna zobrazení (uzká)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Všechna zobrazení (široká)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Mapa, tabulka, polární a jednotlivé sat (široká)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Vlastní" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Vyberte rozvržení" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Kód rozvržení" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "Tato položka obsahuje kód rozvržení pro modul.\n" "Přečtěte si uživatelskou příručku o tom, jak vytvořit vlastní rozvržení " "pomocí kódů." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Umístění oken:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Obnovit umístění hlavního okna" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "Pokud zaškrtnete toto políčko, gpredict se pokusí umístit hlavní okno na " "pozici, které mělo v předchozí relaci.\n" "Nezapomeňte, že správci oken mohou tento požadavek ignorovat." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Obnovit umístění oken modulů" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "Pokud zaškrtnete toto políčko, gpredict se pokusí umístit okno modulu na " "pozici, které mělo posledně.\n" "Nezapomeňte, že správci oken mohou tento požadavek ignorovat." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "Obnovit stav modulů když jsou znovu otevřeny (upevněni nebo v okně)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "Při zaškrtnutí tohoto políčka gpredict obnoví stavy modulů od posledního " "použití." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Resetovat nastavení modulů na globální nastavení." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Dostupná pole:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Mapa pozadí:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Vyberte mapu" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "KLikněte pro výběr mapy" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Dodatečný obsah:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "Informace QTH" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Zobrazit informace o umístění na mapě" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Zobrazit který satelit je na řadě a kdy" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Umístění kurzoru" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Zoibrazit zěm. délku a šířku ukazatele myši" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Čáry mřížky" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Zobrazit vodorovné a příčně linky mřížky" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Barvy:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Pozemní stanice:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Mřížka:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "Zaškrtnout štítky:" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satelit:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Vybraný sat.:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Pozemní dráha" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Oblast pokrytí:" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "Text info v popředí:" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "Text info v pozadí:" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Stín:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "Zobrazit pozemní dráhu pro" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "orbity" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Vystředit mapu na zem. délce" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "Vybrat zem. délku. Západ je záporný." #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Rozvržení" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Obnovovací frekvence" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Zobrazení seznamu" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Zobrazení mapy" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Pólové zobrazení" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Zobrazení jednotlivého satelitu" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Viditelné sloupce:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "%s:%s: Neplatná orientace grafu %d (používá se N/E/S/W)" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientace:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "%f:%d: Neplatná orientace zobrazení pólů (%d)" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "Zobrazit informace o umístění na pólovém grafu" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Zobrazit které satelity jsou na řadě a kdy" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Zobrazit azimut a výšku ukazatele myši" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "Dodatečné zaškrtnutí AZ" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Pozadí:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Klikněte pro výběr pozadí" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "Osy/Kruhy:" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Klikněte pro výběr barvy osy" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "Klikněte pro výběr barvy štítku pro zaškrtnutí" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Klikněte pro výběr barvy satelitu" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Klikněte pro výběr barvy zvolených satelitů" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "Nebeská dráha:" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Klikněte pro výběr barvy dráhy" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Text info:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Ostatní:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "Autmaoticky zobrazovat nebeské dráhy" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" "Automaticky zobrazit nebeskou dráhu satelitu, když je v dosahu. Vždy můžete " "nebeskou dráhu pro jednotlivé objekty vypnout" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Podmínky průchodu" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Mnoho průchodů" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Jeden průchod" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "Nebe v kostce" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" "Alt\n" "(ft)" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" "Alt\n" "(m)" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Výchozí" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" "Server\n" "GPSD" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" "Port\n" "GPSD" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" "Typ\n" "QTH" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "%s:%d Přečíst data QTH z %s." #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "%s:%d Chyba při čtení %s (viz předchozí zpráva)" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "%s:%d: Nelze otevřít složku nastavení uživatele (%s)" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "%s:%d Nelze přidělit paměť!\n" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "%s:%d: Nelze převést (%.2f,%.2f) na QRA." #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "%s:%d: Lokátor QRA je %s" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "%s:%d: Toto se zdá být výchozím QTH." #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Přidat novou pozemní stanici do seznamu" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Upravit" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "Nelze smazat pozemní stanici\n" "\n" "Musíte mít nastavenu alespoň jednu\n" "jinak gpredict nemusí pracovat správně." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Prázdný seznam pozemních stanic!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" "%s:%d: Výchozí QTH nemůže být smazáno! Vyberte jiné QTH pro jeho změnu." #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "%s:%d: Nové výchozí QTH je %s.qth." #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "%s:%d: Čištění výchozího příznaku pro %s." #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "%s:%d: %s se zdá být výchozím QTH" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d nelze odstranit %s" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "%s:%d: %s odstraněno" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Výška (ft)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Výška (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" "%s:%d %s načteno pro úpravy:\n" "Zem. šíř.:%.4f dél.:%.4f Výška:%d" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d Žádná pozemní stanice nezvolena!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" "%s:%d: Jejda, gpredict narazil na vnitřní chybu (žádný výběr v seznamu qth)" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" "Vybrat výšku pozemní stanice v metrech nebo stopách v závislosti na Vašem " "nastavení" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Obnovit data každých" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[msek]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Obnovit seznam každých" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[cyklus]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Obnovit mapu každých" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "Obnovit pólové zobrazení každých" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "Obnovit zobrazení jednotlivého satelitu každých" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "%s:%d: Čtení %s" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "%s:%d: Nelze přečíst %s" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "Pouze RX" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "Pouze TX" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "RX + TX" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "FT817/857/897 (auto)" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "FT817/857/897 (ruč)" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "PTT" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "DCD" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "%s:%s: Tlačítko úprav by mělo být zakázané." #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" "Vyberte radiopřijímač, který chcete\n" "upravit a zkuste to znovu!" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Název nastavení" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Hostitel" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Port" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "Velký typ" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "Stav PPT" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "VFO nahoru" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "VFO dolů" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "LO dolů" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "LO nahoru" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "%s:%s: Tlačítko smazat by mělo být zakázané." #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" "Vyberte radiopřijímač, který chcete\n" "smazat a zkuste to znovu!" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "Přidat nový radiopřijímač do seznamu" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d nelze odstranit %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "%s: Nelze získat RIG %s" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Zadejte krátký název pro toto nastavení, např. IC910-1.\n" "Povolené znaky: 0..9, a..z, A..Z, - a _" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" "Zadejte hostitele, kde je spuštěn rigctld. Můžete použít název hostitele i " "IP adresu, např. 192.168.1.100\n" "\n" "Pokud gpredict i rigctld běží na stejném počítači, použijte localhost" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "Zadejte číslo portu, na kterém poslouchá rigctld" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "Typ radiopřijímače" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "Simplex TRX" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "Duplex TRX" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "FT817/857/897 (ručně)" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" "Pouze RX: Rádio bude používáno pouze jako přijímač. Pokud je " "zaškrtnuto sledovat stav PTT, pak je dopplerovské ladění pozastaveno, " "když je PTT zapnuto (ruční TX). Pokud ne, ovladač bude vždycky provádět " "dopplerovské ladění a stejné zařízení nemůžete použít pro vzestupnou trasu.\n" "\n" "Pouze TX: Rádio bude použito pouze pro vzestupnou trasu. Pokud je " "zaškrtnuto sledovat stav PTT, pak je dopplerovské ladění pozastaveno, " "když je PTT vypnuto (ruční RX).\n" "\n" "Simplex TRX: Rádio by mělo být použito jak pro sestupné tak i " "vzestupné trasy, ale pouze v režimu simplex. Tato volba vyžaduje, aby byl " "sledován stav PTT (jinak gpredict nemůže vědět, zda ladit RX nebo TX).\n" "\n" "Duplex: Rádio je plně duplexní, jako např. IC910H. Gpredict bude " "neustále ladit sestupné i vzestupné trasy současně a o nastavení PTT se " "nebude starat.\n" "\n" "FT817/857/897 (auto): Toto je zvláštní režim, který lze použít s " "rádii YAESU FT-817, 857 a 897. Tyto rádia neumožňují kontrolu počítačem, " "když jsou v režimu TX. Proto je uplatňována Dopplerova korekce když je rádio " "v režimu RX přepínáním mezi VFO A/B.\n" "\n" "FT817/857/897 (manual): Tento režim je podobný předchozímu, s tím " "rozdílem, že přepínání do TX se provádí pomocí klávesy MEZERNÍK na " "klávesnici. Gpredict pak zaktualizuje TX Doppler před vlastním přepnutím do " "TX." #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "Stav PTT" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "Čtení PTT" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "Čtení DCD" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" "Vyberte typ PTT.\n" "\n" "Žádný:\n" "Nečíst stav PTT z tohoto rádia.\n" "\n" "Číst PTT:\n" "Číst stav PTT pomocí příkazu get_ptt CAT. Musíte zkontrolovat, zdali toto " "podporuje vaše rádio a hamlib.\n" "\n" "Číst DCD:\n" "Číst stav PTT pomocí příkazu get_dcd. Toto se používá, pokud vaše rádio " "nepodporuje příkaz read_ptt CAT a máte zvláštní rozhraní, které dokáže číst " "stav squelch a posílat ho přes CTS." #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "VFO Nahoru/Dolu" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "Nelze použít" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" "Zadejte frekvenci místního oscilátoru převaděče snížení frekvence, pokud " "existuje." #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "MHz" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" "Zadejte frekvenci místního oscilátoru převaděče zvýšení frekvence, pokud " "existuje." #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "Upravit nastavení radiopřijímače" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" "Vyberte rotor, který chcete upravit\n" "a zkuste to znovu!" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" "Vyberte rotor, který chcete smazat\n" "a zkuste to znovu!" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Přidat nový" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Neznámé (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "Min Az" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "Max Az" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "Min Výš" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "Typ azimutu" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "%s: Nelze získat ROT %s" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "%s:%s: Neplatný typ rotoru AZ." #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" "Zadejte hostitele, kde je spuštěn rotctld. Můžete použít název hostitele i " "IP adresu, např. 192.168.1.100\n" "\n" "Pokud gpredict i rotctld běží na stejném počítači, použijte localhost" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "Zadejte číslo portu, na kterém poslouchá rotctld. Výchozí je 4533." #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "Typ az" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr " Min Az" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr " Max Az" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr " Min Výš," #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr " Max Výš." #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "Upravit nastavení rotoru" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Čas:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Najít a zobrazit průcohdy, které nastanou během" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" "Průběhy zobrazené v grafu Nebe v kostce\n" "budou mít počátek v tomto počtu hodin." #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "hodin" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Vyberte barvu 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Klikněte pro výběr barvy" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Vyberte barvu 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Vyberte barvu 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Vyberte barvu 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Vyberte barvu 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Vyberte barvu 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Vyberte barvu 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Vyberte barvu 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Vyberte barvu 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Vyberte barvu 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Auto aktualizace:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "Kontrolovat stáří dat TLE:" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Pokud jsou TLE zastaralá:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Oznámit mi to" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Provést automatickou aktualizaci v pozadí" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Aktualizovat z internetu:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Proxy server:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "Zadejte URL místního proxy sereru, např.\n" "http://moje.proxy.cz" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Přidat nové satelity do místní databáze" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Viditelný" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "Denní světlo" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "V zatmění" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Uložit podrobnosti průchodu" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Uložit do složky:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Vyberte složku" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Uložit pomocí názvu souboru:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "Obsah souboru:" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "Info+hlavička+data" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "Hlavička + data" #: ../src/save-pass.c:170 msgid "Data only" msgstr "Pouze data" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Uložit průchody" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Kompletní záznam" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Souhrn" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Neplatný název souboru: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Nelze vytvořit soubor %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Nelze vytvořit soubor %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "%s: Při ukládání dat do %s se objevila chyba (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "Při ukládání dat do %s se objevila chyba\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: Zapsáno %d znaků do %s" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "%s: NULOVÁ vstupní data!" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "%s: NULOVÉ výstupní úložiště!" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "%s: Proces aktualizace TLE je již spuštěn. Ukončování." #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Chyba při otevírání adresáře %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "CHYBA při otevírání adresáře %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Čtení dat z %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "%s: V %s nenalezena žádná platná data TLE" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "%s: Přečteno %d sat z %s do paměti" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Aktualizování dat..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Satelitů aktualizováno:\t %d\n" "Satelitů přeskočeno:\t %d\n" "Satelitu chybí:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Satelitů aktualizováno:\t %d\n" "Satelitů přeskočeno:\t %d\n" "Satelitu chybí:\t %d\n" "Nové satelity:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: Přidáno %d nových satelitů do místní databáze" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: Prvky TLE aktualizovány." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "%s: Žádné soubory ke stažení ze sítě." #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "Žádné soubory ke stažení ze sítě" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Stahování %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Chyba při stahování %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: %s úspěšně staženo" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Chyba při stahování %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "%s: Nelze otevřít %s, což zabraňuje aktualizaci" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: Staženo %d souborů ze sítě; aktualizování..." #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Chyba při otevírání %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "%s:%s: Kategorie v %s neexistuje" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "%s:%s: Neexistuje žádná kategorie s názvem %s" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "%s:%s: Nelze otevřít soubor .cat při čtení TLE z %s" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "%s:%s: Něco zapsalo linesneeded na neplatnou hodnotu %d" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "%s:%s: Zpracovávání třířádkového TLE" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "%s:%s: Zpracovávání prostého dvouřádkového TLE" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: Neplatná data pro %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Nelze otevřít %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "%s? Nenalezena žádná nová data pro %d. Satelity mohou být zastaralé." #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Chyba při načítání %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "%s: Současná data TLE pro %d se zdají být špatná" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "%s: Data pro %d aktualizovány názvy" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "%s: Data pro %d aktualizovány přezdívky." #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "%s: Data pro %d aktualizováno pro tle." #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "%s: Data pro %d aktualizováno pro operační stav." #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Měsíčně" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Týdně" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Denně" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Chyba při čtení %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s obsahuje 0 transpondérů" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Zbývající čas mezi další události AOS nebo LOS, v závislosti na tom, " #~ "která přijde první." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Neplatný typ rádia %d. Nastavování na typ RIG_TYPE_RX" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Neplatný argument VFO. Použito VFOA." #~ msgid "%s: %s rigctld returned error (%s)" #~ msgstr "%s: rigctld %s vrátil chybu (%s)" #~ msgid "Decay" #~ msgstr "Úbytek" #~ msgid "Row" #~ msgstr "Řádek" #~ msgid "Column Name" #~ msgstr "Název sloupce" #~ msgid " Hour:" #~ msgstr " Hodina:" #~ msgid " Min:" #~ msgstr " Min:" #~ msgid " Sec:" #~ msgstr " Sek:" #~ msgid " Msec:" #~ msgstr " Msek" #~ msgid "Group" #~ msgstr "Skupina" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Začněte psát do tohoto pole k vyhledání satelitu ve zvolené skupině." #~ msgid "Search" #~ msgstr "Hledat" #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "Vyberte skupinu satelitů nebo kategorie k zúžení Vašeho hledání." #~ msgid "Open an existing module" #~ msgstr "Otevřít existující modul" #~ msgid "Create a new module" #~ msgstr "Vytvořit nový modul" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Aktualizovat Keplerovské prvky z místních souborů" #~ msgid "Exit the program" #~ msgstr "Ukončit program" #~ msgid "From _network" #~ msgstr "_Ze sítě" #~ msgid "Open the message log browser" #~ msgstr "Otevřít prohlížeč zpráv záznamu" #~ msgid "E_xit" #~ msgstr "_Ukončit" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Aktualizovat Keplerovské prvky ze síťového serveru" #~ msgid "From l_ocal files" #~ msgstr "Z místních _souborů" #~ msgid "Edit user preferences" #~ msgstr "Upravit nastavení uživatele" #~ msgid "Show what's new in this release" #~ msgstr "Zobrazit co je nového v této verzi" #~ msgid "Show about dialog" #~ msgstr "Zobrazí dialogové okno o programu" #~ msgid "Online help" #~ msgstr "Nápověda online" #~ msgid "Show online user manual" #~ msgstr "Zobrazit uživatelskou příručku onlnie" #~ msgid "Show the Gpredict license" #~ msgstr "Zobrazit licenci Gpredict" #~ msgid "Failed to build menubar: %s" #~ msgstr "Nelze sestavit lištu nabídky: %s" #~ msgid "Ground Station" #~ msgstr "Pozemní stanici" #~ msgid "Create New Module" #~ msgstr "Vytvořit nový modul" #~ msgid "Edit Module" #~ msgstr "Upravit modul" #~ msgid "Module Name" #~ msgstr "Název modulu" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Přidat satelit do seznamu vybraných satelitů." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Odstranit satelit do seznamu vybraných satelitů." #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Nápověda: Dvakrát klikněte na každý\n" #~ "satelit pro přesunutí do dalšího rámečku." #~ msgid "Module Properties" #~ msgstr "Vlastnosti modulu" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (žádné)" #~ msgid "Select a predefined location from a list." #~ msgstr "Vyberte přednastavené umístění ze seznamu" #~ msgid "ft above sea level" #~ msgstr "nadmořská výška ve stp." #~ msgid "m above sea level" #~ msgstr "nadmořská výška v m" #~ msgid "Select a predefined weather station from a list." #~ msgstr "Vyberte přednastavenou meterologickou stanici ze seznamu." #~ msgid "Visible Columns" #~ msgstr "Viditelné sloupce" #~ msgid "" #~ "Enabling rules hint may make reading across many columns easier. By " #~ "default the satlist will be rendered with alternating colours, but the " #~ "exact behaviour is up to the theme engine." #~ msgstr "" #~ "Povolením náznaku pravidel může usnadnit čtení napříč sloupci. Standardně " #~ "bude seznam satelitů vykreslen se střídavými barvami, ale přesné chování " #~ "je na jádře vzhledu." #~ msgid "Enable rules hint in the list views" #~ msgstr "Povolit náznak pravidel v zobrazení seznamu" #~ msgid "Click to select the grid colour" #~ msgstr "Klikněte pro vývěr barvy mřížky" #~ msgid "Click to select ground track colour" #~ msgstr "Klikněte pro výběr barvy pozemní dráhy" #~ msgid "Click to select info text background colour" #~ msgstr "Klikněte pro výběr barvy textu v pozadí" #~ msgid "Strong" #~ msgstr "Výrazný" #~ msgid "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgstr "" #~ "Určuje jak výrazný má být stín pod značením satelitu. Stín zlepšuje " #~ "viditelnost satelitů, při světlé barvě pozadí, např. Jižní pól.\n" #~ "\n" #~ "Průhledný znamená bez stínu." #~ msgid "Colour for coverage Area (make it transparent)" #~ msgstr "Barva pro oblast pokrytí (bude průhledná)" #~ msgid "Click to select info text foreground colour" #~ msgstr "Klikněte pro výběr barvy textu v popředí" #~ msgid "Transparent" #~ msgstr "Průhledný" #~ msgid "Delete the selected ground station" #~ msgstr "Smazat nyní zvolenou pozemní stanici" #~ msgid "Edit the currently selected ground station" #~ msgstr "Upravit nyní zvolenou pozemní stanici" #~ msgid "Delete the selected radio" #~ msgstr "Smazat zvolené rádio" #~ msgid "Edit the currently selected radio" #~ msgstr "Upravit současně zvolený radiopřijímač" #~ msgid "Add a new rotator to the list" #~ msgstr "Přidat nový rotor do seznamu" #~ msgid "Edit the currently selected rotator" #~ msgstr "Upravit nyní zvolený rotor" #~ msgid "Delete the selected rotator" #~ msgstr "Smazat nyní zvolený rotor" #~ msgid "Colour for satellite 1: " #~ msgstr "Barva pro satelit 1: " #~ msgid "Colour for satellite 2: " #~ msgstr "Barva pro satelit 2: " #~ msgid "Colour for satellite 3: " #~ msgstr "Barva pro satelit 3: " #~ msgid "Colour for satellite 7: " #~ msgstr "Barva pro satelit 7: " #~ msgid "Colour for satellite 8: " #~ msgstr "Barva pro satelit 8: " #~ msgid "Colour for satellite 6: " #~ msgstr "Barva pro satelit 6: " #~ msgid "Colour for satellite 4: " #~ msgstr "Barva pro satelit 4: " #~ msgid "Colour for satellite 5: " #~ msgstr "Barva pro satelit 5: " #~ msgid "Colour for satellite 9: " #~ msgstr "Barva pro satelit 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Barva pro satelit 10: " gpredict/po/da.po000066400000000000000000003655621427377236300142600ustar00rootroot00000000000000# Danish translation for gpredict # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:54+0000\n" "Last-Translator: Alexandru Csete \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Alexandru Csete https://launchpad.net/~alexc" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Kunne ikke åbne %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Fandt mindst en .qth fil." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Kunne ikke kopiere sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: sample.qth kopieret til %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Check successfuld." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Check mislykkedes. Opretter %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Kunne ikke oprette %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Oprettede %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Kunne ikke kopiere Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: amateur.mod kipoeret til %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Kunne ikke indlæse data fra %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Fandt %d satellitter i %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat findes allerede." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Gemt %d nye satellitter under bruger konfiguration" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Kunne ikke åbne %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Kunne ikke kopiere %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Successfuld kopiering af %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Kunne ikke indlæse %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Fejl under indlæsning af %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Info" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s kaldt med color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s kaldt med alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s kaldt med rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %skaldt med rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Kunne ikke oprette konfigurationsdata (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Kunne ikke oprette konfigurationsfil (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: fejl under skrivning af konfigurationsdata (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Har kun skrevet %d ud af %d tegn." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Konfiguration gemt for %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Lokaltid" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satellit" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Catnum" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Satellitnavn" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimut" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevation" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Kunne ikke hente data for #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satellit #%d blev fjernet fra listen." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: FIXME Ikke implementeret" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Kunne ikke hente data for %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "%s:%d: Der er ingen valg; skip popup." #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Brug museknapper og hjul til at ændre værdien" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Ukorrektorientering af den polære graf." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "Ø" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "V" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Kunne ikke finde satellit (%d) in hashtabel" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Kan ikke finde det valgte objekt (%d) i hashtabel" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Næste: %s\n" "om %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Næste: %s\n" "om %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Kan ikke finde næste satellit." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Næste: FEJL" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Næste: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS om %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS om %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Altid indenfor rækkevidde" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Kan ikke allokere hukommelse til ny satellit %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Kunne ikke finde satellitpassage." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "%s:%d: Passagen hadve ingen punkter." #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Kunne ikke finde satellit." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Den efterspurgte satellit (%d) er udenfor rækkevidde." #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Sky track" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS om" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS om" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Downlink " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "Doppler skift i henhold til satellittens hastighed og den aktuelle dowlink " "frekvens" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule har ingen satelliter i sigte." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Satellitten %d har %d transponder modes." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Kunne ikke åbne hwconf folder (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Ugyldig satellit: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: Inkonsistens i den interne transponder data (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Primær enhed valgt: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Kunne ikke allokere hukommelse til radiokonfiguration" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Ny radio konfiguration indlæst %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Kunne ikke indlæse radio konfiguration %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Sekundær enhed valgt: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Kunne ikke allokere hukommelse til radio konfiguration" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Kontrolleren har ikke nogen gyldig konfiguration" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Vælg objekt" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Følg" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Vælg transponder" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Indstil radioen til denne transponder. Uplink of downlink vil blive sat til " "transponderens center. I tilfælde af beacons vil kun downlink frekvens blive " "indstillet til beaconfrekvensen." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Lås uplink og downlink til hinanden. Når du ændrer downlinkfrekvens (i " "kontrolleren eller på radioen), uplinkfrekvensen vil tracke den svarende til " "om transponderen er inverterende eller ej. Tilsvarende vil " "downlinkfrekvensen tracke uplinkfrekvensen når denne ændres.\n" "\n" "Hvis uplink og downlink er ude af sync når man aktiverer denne funktion vil " "algoritmen tage udgangspunkt i downlinkfrekvensen." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Afstand:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Den aktuelle afstand imellem satellit og observatør." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Hastighed:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "Hastighed hvormed afstanden imellem satellit og observatør ændres." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Destination" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Fejl under indlæsning af radio konfiguration %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Enhed:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Vælg den primære radio. Denne enhed vil blive brugt til både downlink og " "uplink med mindre du vælger en sekundær enhed til uplink." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Enhed:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Vælg den dekundære radio.\n" "Denne enhed vil blive brugt til uplink." #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Ingen" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Aktiver" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Aktiver forbindelse til den valgte radio enhed." #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Cyklus:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" "Denne parameter bestemmer forsinkelsen imellem kommandoer sendt til radioen." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msek" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Indstillinger" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "%s:%s: sender %d bytes til rigctld som \"%s\"" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: SIZE ERROR %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: rigctld port lukket" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Fik 0 bytes fra rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Fik %d bytes fra rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s blev kaldt men TX VFO er %d." #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s missede deadline" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: NULL lager." #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: Acquired controller lock" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT is OFF => Set TX freq and PTT=ON" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT is ON = Set PTT=OFF" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "%s: Kunne ikke få kontroller lås; PTT begivenhed ikke behandlet" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Detected SPACEBAR pressed event" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: Keypress value %i not managed by this function" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Kunne ikke oprette forbindelse" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Netværksforbindelse oprettet" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Kunne ikke opette forbindelse til %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Forbindelse til %s:%d er åbnet" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Fik 0 bytes fra rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "%s:%d: rotctld har returneret en fejl (%s)" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "%s:%d: rotctld har returneret en ugyldig respons (%s)" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "%s:%d: rotctld har returneret fejl %d med az %f el %f (%s)" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Læs:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Læs: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "FEJL" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: MAX_ERROR_COUNT (%d) er nået. Afbryder forbindelse!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "%s:%d: Kunne ikke allokere hukommelse til rotor konfiguration" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Ny rotor konfiguration %s indlæst" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Fejl under indlæsning af rotor konfiguration %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Track satellitten når den er indenfor rækkevidde" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Enhed:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Vælg antennerotor enhed" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Denne parameter bestemmer forsinkelsen imellem kommandoer der bliver sendt " "til rotoren" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolerance:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Denne parameter bestemmer tolerancen imellem den ønskede og den aktuelle " "rotorposition.\n" "Hvis forskellen er mindre end tolerancen vil controlelren ikke sende nye " "kommandoer ." #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "grader" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Fejl ved læsning af NAME fra %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "%s: Fejl ved indlæsning af TLE linje 1, fra %s (%s)" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "%s: Fejl ved indlæsning af TLE linje 2, fra %s (%s)" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: TLE data for %d ser ud til at være dårlig" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Dir" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dekl" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Afstand" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Rate" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Næste" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Næste AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Næste LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Lat" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Lon" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Footp" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Alt" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Vel" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Tab" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Fase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Omløb" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Retning" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Rektascension" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Deklination" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Breddegrad" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Længdegrad" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Fodspor" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Højde" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Hastighed" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Signalforsinkelse" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Omløbsfase" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Omløbsnummer" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Synlighed" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: Ugyldig GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Ugyldig søjle: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Næste: %s om %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Næste: %s om %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "%s: Kunne ikke finde valgte objekt (%d) i hashtabel" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Indlæser kort fil %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Kort fil ikke fundet" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Kunne ikke finde kort fil %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Andvender standard kort: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Fejl ved indlæsning af kort fil (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS om %d minutter" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS om %d minutter" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Start omløb: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: Slut omløb %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "%s: T0: %f (%d)" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Satellit #%d findes allerede i listen" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: Indlæst %d ud af %d satellitter" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "%s: Opdaterer GtkSkyGlance for %s" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Kunne ikke indlæse konfigurationsdata fra %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Indlæser konfiguration fra %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" "%s: Kan ikke indlæse standard QTH fil %s; anvender indbyggede standarder" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "%s: GRID(%d): %s" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Modul %s er ugyldig." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Modul %s har problemer." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Luk modul." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Modul %s har modtaget CONFIG signal." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" "%s: Kunne ikke standse timeout callback\n" "%s: Kilde ID %d ser ud til at være ugyldig." #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: Modulkonfiguration har fejlet af en eller anden årsag." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Genindlæser satellitter for modul %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s kaldt med NULL parameter!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Afslut fuld skærm" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Fuld skærm" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Vælg satellit" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Tidskontroller" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Radio Kontrol" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Antenne Kontrol" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Indstillinger" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Klon..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Slet" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Luk" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "Modulen kan ikke konfigureres mens radio eller rotor kontroller er aktiv.\n" "\n" "Luk radio og rotor kontroller og prøv igen." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Klon modul" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Navn til den nye modul:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Indtast et kort navn til denne modul.\n" "Tilladte tegn: 0..9, a..z, A..Z, - og _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Åbn modul når den er oprettet" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Kloner %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Kunne ikke klone %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Du har ingen radio konfiguration!\n" "Konfigurer en radio og prøv igen." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Radio Kontrol: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Du har ingen rotor konfiguration!\n" "Konfigurer en rotor og prøv igen." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict Rotor Kontrol: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Kunne ikke slette %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s slettet." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Tidskontroller for %s er allerede aktiv" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Fremad" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Tilbage" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Nulstil" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Nulstil til den nuværende dato og tid" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Realtid" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Brug denne til at styre timerne" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Brug denne til at styre minutterne" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Brug denne til at styre sekunderne" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Brug denne til at styre millisekunderne" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Tidsstyring for %s started" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Tidsstyring for %s lukket. Tid nulstillet." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Simuleret Realtid" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Manuel Kontrol" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Tilgengængelige satellitter" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Opdateret" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Kunne ikke åbne %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Fejl ved indlæsning af satellit %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "%s:%s: %d satellitter indlæst fra %s" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Kunne ikke læse %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Valgte" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Udvid" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Luk sammen" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Fejl ved åbning af %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satellit %d valgt." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: Ugyldig GtkSatTree!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: Ingen satellitter valgt => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Satelittens azimut" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Satellittens elevation" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Satellittens retning" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Satellittens deklination" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Afstand imellem satellit og observatør" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Tidspunkt for den næste AOS eller LOS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Tidspunkt for den næste AOS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Tidspunkt for den næste LOS" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Satellittens højde over jorden" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Signaltab ved 100 MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Satellittens synlighed" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/A" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: Ugyldig GtkSignleSat!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Knap %d har ingen funktion..." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "TID" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Vælg transponder" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: Kunne ikke oprette %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Synlig" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Fejl under indlæsning af %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "Tid til den næste AOS eller LOS afhængigt af hvad der kommer først." #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Ugyldig VFO parameter. Vælger VFOA." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Ugyldig radio type %d. Anvender RIG_TYPE_RX istedet" #~ msgid "%s: %s rigctld returned error (%s)" #~ msgstr "%s: %s rigctld returnerede en fejl (%s)" #~ msgid "Row" #~ msgstr "Række" #~ msgid "Column Name" #~ msgstr "Søjlenavn" #~ msgid " Hour:" #~ msgstr " Time:" #~ msgid " Sec:" #~ msgstr " Sekund:" #~ msgid " Min:" #~ msgstr " Minut:" #~ msgid " Msec:" #~ msgstr " Msek:" #~ msgid "Group" #~ msgstr "Gruppe" #~ msgid "Search" #~ msgstr "Søg:" gpredict/po/de.po000066400000000000000000005155431427377236300142600ustar00rootroot00000000000000# German translation for gpredict # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-28 23:43+0000\n" "Last-Translator: Jan Simon \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "Gpredict" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC und Mitwirkende." #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Daniel S https://launchpad.net/~dadosch\n" " Dennis Baudys https://launchpad.net/~thecondordb\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Jan Simon https://launchpad.net/~jan-simon\n" " Patrick Eigensatz https://launchpad.net/~p.eigensatz-deactivatedaccount\n" " Peter Hürlimann https://launchpad.net/~phnet-li\n" " Philipp Muggli https://launchpad.net/~pmpmlpml\n" " Tobias Bannert https://launchpad.net/~toba\n" " Tobias Bohrmann https://launchpad.net/~tobias-b\n" " mbenz https://launchpad.net/~mbenz\n" " tuxator https://launchpad.net/~steffen-trekki" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: %s konnte nicht geöffnet werden." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Mindestens eine .qth-Datei gefunden." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Kopieren von sample.qth fehlgeschlagen" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: sample.qth wurde nach %s/ kopiert" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Überprüfung erfolgreich." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Überprüfung fehlgeschlagen. Erzeuge %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Erzeugen von %s fehlgeschlagen" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: %s erzeugt." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Amateur.mod konnte nicht kopiert werden" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: amateur.mod wurde nach %s/ kopiert" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "Kopiere die Satellitendaten in die Benutzereinstellungen" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Laden der Daten aus Datei %s fehlgeschlagen (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: %d Satelliten gefunden in %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat existiert bereits. Übersprungen." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: %d neue Satelliten in die Benutzereinstellungen geschrieben" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "Kopiere die Satellitenkategorien in die Benutzereinstellungen" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: %s konnte nicht geöffnen werden (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Kopieren von %s fehlgeschlagen" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: %s erfolgreich kopiert" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Laden von %s fehlgeschlagen (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Fehler beim Lesen von %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Info" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s wird aufgerufen mit der Farbe = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s aufgerufen mit Alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s aufgerufen mit rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s aufgerufen mit rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Konfigurationsdaten konnten nicht erstellt werden (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Konfigurationsdatei konnte nicht erstellt werden (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Fehler beim Schreiben der Konfigurationsdaten (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Es wurden nur %d von %d Zeichen geschrieben." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Einstellungen gespeichert für %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "%s aufgerufen mit gdk_rgba = NULL" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Ortszeit" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az." #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El." #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satellit" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Katalognummer" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "Ereignis" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "AOS/LOS" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "Abgestürzt" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "FETT" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Satellitenname" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Katalognummer" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimut" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevation" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "Nächster Ereignistyp (A: AOS, L: LOS)" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "Countdown bis zum nächsten Ereignis." #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "%s: Ungültige GtkEventList!" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Abruf der Daten für #%d fehlgeschlagen." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satellit #%d wurde von der Liste entfernt." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Nie" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: FIXME Ich bin nicht implementiert" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d: Abruf der Daten für %d fehlgeschlagen." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "%s:%d: Keine Auswahl vorhanden; Popup wird übersprungen." #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "%s: GtkEventList hat kein Child mit dem Index %d" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Maustasten und -rad zum Ändern der Werte benutzen" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Falsche Polardiagramm-Orientierung." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "O" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "W" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Konnte den Satelliten (%d) in der Hash-Tabelle nicht finden" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" "%s:%d: Konnte das angeklickte Objekt (%d) in der Hash-Tabelle nicht finden." #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Nächster: %s\n" "in %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Nächster: %s\n" "in %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Kann den NÄCHSTEN Satelliten nicht finden." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Nächster: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Nächster: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS in %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS in %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Immer in Reichweite" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "%s:%s: Aktualisiere Satellitenüberflug SAT:%d Q:%d T:%d\n" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "%s: Hinzugefügte Markierung zur Polaransicht zeigt nicht %d." #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "%s: Hinzugefügte Beschriftung zur Polaransicht zeigt nicht %d." #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Kann keinen Speicher zuordnen für Satellit %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Satellitenüberflug nicht gefunden." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "%s:%d: Überflug enthielt keine Punkte." #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Fehler beim Holen des Satellitenobjekts." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Ausgewählter Satellit (%d) ist nicht in Reichweite" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "Satelliteninformation" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Laufbahn" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS in" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS in" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Downlink " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "Die Dopplerverschiebung entsprechend der Geschwindigkeit und der aktuell " "ausgewählten Downlink-Frequenz" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule hat keinen Zielsatelliten." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Satellit %d hat %d Transpondermodi." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "%s:%s: Lese Transponder '%s' für Satelliten %d" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Öffnen des hwconf-Verzeichnisses fehlgeschlagen (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Ungültige Satellitenauswahl: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: Unstimmigkeit in den internen Transponder-Daten gefunden. (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Primäres Gerät ausgewählt: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Speicherzuordnung für Funkgerätekonfiguration fehlgeschlagen" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Neue Funkgerätekonfiguration geladen %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Laden der Funkgerätekonfiguration fehlgeschlagen %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Zweites Gerät ausgewählt: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Speicherzuordnung für Funkgerätekonfiguration fehlgeschlagen" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Steuerung verfügt über keine gültige Konfiguration" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Zielobjekt auswählen" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Nachführen" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" "Frequenz des Funkgerätes dem Satellitentransponder nachführen.\n" "Durch Aktivierung des Knopfes wird die Dopplerkorrektur eingeschaltet." #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Einen Transponder auswählen" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Stimmt das Funkgerät auf den Transponder ab. Der Up- und Downlink wird auf " "die Mitte des Transponder-Passbandes gesetzt. Im Falle von Baken wird nur " "der Downlink auf die Bakenfrequenz gesetzt." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Synchronisiert den Up- und Downlink. Wann immer die Downlink-Frequenz " "verändert wird (über das TRX-Menü oder am TRX selbst), passt sich die " "Downlink-Frequenz automatisch an. Das Gleiche gilt auch wenn die Uplink-" "Frequenz verändert wird, dann wird die Downlink-Frequenz angepasst. Die gilt " "sowohl für invertierende, als auch für nicht-invertierende Lineartransponder " "der Satelliten.\n" "\n" "Wenn diese Funktion aktiviert wird und Uplink- Downlink-Frequenz nicht " "zusammen passen, wird die Uplink-Frequenz aus der aktuellen Downlink-" "Frequenz berechnet." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az.:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El.:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Bereich:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" "Dies ist die aktuelle Distanz zwischen dem Satellit und dem Beobachter." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Rate :" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" "Die Änderungsrate der Distanz zwischen dem Satelliten und dem Beobachter." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Ziel" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Fehler beim Lesen der Funkgerätekonfiguration %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Gerät:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Wählt das primäre Funkgerät. Das Gerät wird genutzt für Down- und Uplinks, " "außer es wurde ein zweites Gerät für den Uplink ausgewählt." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Gerät:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Zweites Funkgerät auswählen\n" "Dieses Gerät wird für den Uplink benutzt" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Kein" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Starten" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Startet die Steuerung des gewählten Geräts" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Takt:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" "Dieser Parameter steuert die Pausen zwischen den zur Anlage gesendeten " "Befehlen." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "ms" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Einstellungen" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "ΔT: 00:00:00" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "Die verbleibende Zeit bis zum nächsten AOS- oder LOS-Ereignis" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "%s:%s: sende %d Bytes an rigctld als \"%s\"" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: SIZE ERROR %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: rigctld-Port geschlossen" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: 0 Bytes von rigctld empfangen" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Lese %d Bytes von rigctld ein" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "%s:%s: %s rigctld gab Fehler (%s) zurück" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s aufgerufen, aber TX VFO ist %d." #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s hat die Frist verpasst" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: NULL-Speicher." #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: Steuerungs-Lock erhalten" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" "%s: Steuerung nicht gestartet; PTT-Ereignis ignoriert (Hinweis: Aktiviere " "den »Starten«-Knopf)" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT ist AUS => Setze TX-Fequenz und PTT=AN" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT ist AN = Setze PTT=AUS" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" "%s: Bekommen des Steuerung-Locks fehlgeschlagen; PTT-Ereignis nicht " "ausgeführt" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Erkenne SPACEBAR gedrückt Ereignis" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: Tastendruckwert %i wird von dieser Funktion nicht verwaltet" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Erstellen des Sockets fehlgeschlagen" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Netzwerk-Socket erfolgreich erstellt" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Verbindung zu %s:%d fehlgeschlagen" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Verbindung geöffnet zu %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "%s:%s: 2 Bytes gesendet, aber gesendet wurden %d." #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "%s:%s: FEHLER: KEINE GÜLTIGE ctrl-struct" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "%s:%s: Ungültiger Radiotyp %d. Setze Typ auf RIG_TYPE_RX" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s:%s: MAX_ERROR_COUNT (%d) erreicht. Schalte Gerät ab!" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "Erstellen des rotctl-Sockets gescheitert: %s" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "Namensauflösung für rotctld Server %s fehlgeschlagen." #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "Verbindung zum rotctld-Server auf %s:%d gescheitert: %s" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "%s: rotctld-Socket aus" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: 0 Bytes von rotctld empfangen" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "%s:%d: rotctld gab Fehler zurück (%s)" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "%s:%d: rotctld gab falsche Rückmeldung (%s)" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "%s:%d: rotctld gab Fehler %d mit Az. %f El. %f zurück (%s)" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Lesen:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Lesen: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "FEHLER" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: MAX_ERROR_COUNT (%d) erreicht. Gerät wird freigegeben!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" "%s:%d: Zuweisen des Speichers für die Rotorkonfiguration fehlgeschlagen" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Neue Rotorkonfiguration %s wurde geladen" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Laden der Rotorkonfiguration %s fehlgeschlagen" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "%s:%d: rotctld gab Fehler %d zurück mit stop-cmd (%s)" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Satellit verfolgen wenn er in Reichweite ist" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "ΔT:" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Gerät:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Antennenrotor-Modul auswählen" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Startet die Steuerung des gewählten Geräts" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "Überwachung" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" "Rotor überwachen. Dabei werden keine Positionierungskommandos gesendet." #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Dieser Parameter steuert die Pausen zwischen den Befehlen die an den Rotor " "gesendet werden." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Toleranz:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Dieser Parameter steuert die Toleranz zwischen den Ziel- und den Rotorwerten " "für den Rotor selbst.\n" "Wenn die Differenz zwischen den Ziel- und den Rotorwerten kleiner ist als " "die Toleranz, werden keine neuen Befehle gesendet" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "Grad" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Fehler beim Lesen von NAME von %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Satellit %d hat keinen NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "%s: Fehler beim Lesen von TLE-Zeile 1 von %s (%s)" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "%s: Fehler beim Lesen von TLE-Zeile 2 von %s (%s)" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: TLE-Daten für %d scheinen beschädigt zu sein" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Richtung" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "RA" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dek." #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "SE" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Änd." #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Nächstes Ereignis" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Nächstes AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Nächstes LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Breite" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Länge" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Ausleuchtung" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Höhe" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Geschw." #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Doppler" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Dämpfung" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Verz." #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Phase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbit" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Sicht." #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "PTT-Status" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Richtung" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Rektaszension" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Deklination" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Schrägentfernung" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "Distanzänderung" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Breitengrad" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Längengrad" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "Sub-Satelliten-Punkt" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Ausleuchtungszone" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Höhe" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Geschwindigkeit" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Dopplerverschiebung @ 100 MHz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Signaldämpfung @ 100 MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Signalverzögerung" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Mittlere Anomalie" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Orbitphase" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Orbitnummer" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Sichtbarkeit" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Betriebsstatus:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "---" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: Ungültige GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Ungültige Spalte: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "%s: GtkSatList hat kein Kind mit Index %d" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Nächster: %s in %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Nächster: %s in %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" "%s: Das angeklickt Objekt (%d) ist in der Hash-Tabelle nicht auffindbar" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Kartendatei %s wird geladen" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Kartendatei gefunden" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Kartendatei %s konnte nicht gefunden werden" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Standardkarte wird verwendet: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Fehler beim Laden der Kartendatei (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "%s: Falsche Daten beim Messen der Distanz zum Nordpol %f %f." #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "%s: Falsche Daten beim Messen der Distanz zum Südpol %f %f." #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS in %d Minuten" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS in %d Minuten" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Bodenspur für %s wird erstellt" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Startorbit: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: Endorbit: %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "%s: t0: %f (%d)" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "%s: ALARM: Ungenügender Speicher für die Bodenspur!" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "%s: Problem bei der Berechnung der Bodenspur für %s" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Bodenspur für %s wird aktualisiert" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Bodenspur für %s wird gelöscht" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "%s: Teil %d der Bodenspur konnte nicht gefunden werden" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Ausleuchtungszone hervorheben" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Bodenspur" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Setze Ziel" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "Autoverfolgen: Ändere Zielsatellit %d -> %d" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "%s:%d: Ungültiger Kindtyp (%d). Benutze GtkSatList." #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: Das Layout hat %d Spalten und %d Reihen." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Liste der Satelliten konnte nicht geladen werden (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Fehler beim Lesen der Daten für #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "%s: Lese Daten für #%d" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Satellit #%d ist bereits in der Liste" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: Lese %d aus %d Satelliten" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "%s: GtkSkyGlance wird aktualisiert für %s" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "%s:%d: Unbekannter Kindtyp" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "%s: Vorherige Schleife hat ihren Schluss verpasst." #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Konnte Konfigurationsdaten von %s nicht laden(%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Lese Konfiguration von: %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" "%s: Standard-QTH-Datei %s kann nicht geladen werden; vorhandene Standards " "werden benutzt." #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "%s: Modullayout ist ungültig: %s. Standard wird benutzt." #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "%s: GRID (%d): %s" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "%s: Speicherzuordnung für das Gitter nicht möglich." #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Modul %s ist nicht gültig." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Modul %s hat Probleme." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Moduloptionen / Tastenkürzel" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Schliesse dieses Modul." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "%s: Modul %s hat CLOSE-Signal empfangen." #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Modul %s ist im Status DOCKED." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" "%s: Modul %s wurde nicht gefunden in mod-mgr (%d)\n" "Ist das Modul beschädigt?" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "%s: Modul %s ist im WINDOW Status." #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "%s: Modul %s ist im FULLSCREEN Status." #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: Modul %s hat einen unbekannten Status. %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Modul %s geschlossen." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Modul %s hat CONFIG-Signal empfangen." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" "%s: Konnte den Timeoutrückruf nicht stoppen.\n" "%s: Quellen ID %d scheint ungültig zu sein." #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: Modulkonfiguration ist aus irgendeinem Grund fehlgeschlagen." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Lade Satelliten für das Modul %s neu" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "%s: Unbekannter Kindtyp" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s wurde aufgerufen mit NULL Parameter!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Modul trennen" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Modul hinzufügen" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Vollbildmodus beenden" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Vollbild" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "Autoverfolgen" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Satellit auswählen" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Himmel auf einen Blick" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Zeitsimulation" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Funkgerätesteuerung" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Antennensteuerung" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Konfigurieren" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Klonen …" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Löschen" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Schließen" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "Ein Modul kann nicht konfiguriert werden während die Funkgerät- oder " "Rotorsteuerung aktiv ist.\n" "\n" "Bitte schließen Sie Funkgerät- oder Rotorsteuerung und versuchen Sie es " "erneut." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Modul klonen" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Name des neuen Moduls:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Kurzamen für dieses Modul eingeben.\n" "Erlaubte Zeichen: 0..9, a..z, A..Z, - und _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Öffne das Modul sobald es erzeugt wurde" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" "Wenn dies angewählt ist, wird das neue Modul geöffnet, sobald es erzeugt " "wurde." #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Klone %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Fehler beim Klonen. %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Erfolgeich geklont. %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Das Klonen wurde abgebrochen vom Benutzer." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Klonen unterbrochen." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: Unbekannter Modulstatus: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "Der Himmel auf einen Blick (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Sie haben keine Funkgerätekonfiguration.\n" "Bitte konfigurieren Sie zuerst ein Funkgerät." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Funkgerätesteuerung: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Sie haben keine Rotorkonfiguration.\n" "Bitte konfigurieren Sie zuerst einen Antennenrotor." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict Rotorsteuerung: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Dieser Vorgang wird\n" "%s\n" "dauerhaft von der Festplatte löschen.\n" "Wollen Sie fortfahren?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Fehler beim Löschvorgang %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s wurde dauerhaft gelöscht." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Zeitsimulation für %s ist bereits aktiv." #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Vorwärts spulen" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Zurück spulen" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Zurücksetzen" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Setze das aktuelle Datum und die aktuelle Zeit zurück." #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Echtzeit" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "Stunde:" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Benutzen Sie dieses Feld um die Stunde zu setzen." #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "Min.:" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Benutzen Sie dieses Feld um die Minuten zu setzen." #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "Sek.:" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Benutzen Sie dieses Feld um die Sekunden zu setzen." #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "mSek.:" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Benutzen Sie dieses Feld um die Millisekunden zu setzen." #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "Zeitraffer:" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "Zeitraffer / Komprimierungsfaktor" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Zeitsimulation für %s gestartet" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Zeitsimulation für %s geschlossen. Zeit zurückgesetzt." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Simulierte Echtzeit" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Manuelle Steuerung" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "Derzeitigen Überflug anzeigen" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "Nächsten Überflug anzeigen" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "Zukünftige Überflüge" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" "Satellit %s hat keine Überflüge\n" "in den nächsten %d Tagen" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" "Satellit %s hat keine Überflüge\n" "für die derzeitige Bodenstation!\n" "\n" "Dies kann daran liegen, dass der\n" "Satellit geostationär, abgestürzt oder\n" "einfach niemals über den Horizont kommt" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" "Satellit %s hat keine Überflüge\n" "für die derzeitige Bodenstation!" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "Satellitengruppe/-kategorie" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "Suche nach einem Satelliten nach Name oder Katalognummer" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "Das Suchfeld löschen" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Verfügbare Satelliten" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Aktualisiert" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Konnte nicht öffnen %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Fehler beim Lesen von Satellit %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "%s:%s: %d Satelliten von %s werden gelesen" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Fehler beim Lesen %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Alle Satelliten" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "%s:%s: Das Öffnen des Satellitenverzeichnisses schlug fehl %s." #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "%s:%s: %d Satelliten der MAIN Gruppe werden gelesen" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "%s: Fehler beim Holen vom %dten Satellit." #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "Epoche" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Ausgewählt" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Erweitern" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "Erweitern SIe alle Knoten im Baum um ihn durchsuchbar zu machen" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Zuklappen" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Klappt alle Knoten im Baum zu" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Verzeichnis ist: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: Keine .tle Dateien gefunden in %s." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "%s:%d: Lese %d Satelliten von %s " #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Konnte %s nicht öffnen (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satellit %d ausgewählt." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Satellit %d bereits ausgewählt; überspringen …" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Satellit %d abgewählt." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: Ungültiger GtkSatTree!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Satellit %d bereits ausgewählt; überspringen …" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: Es sind keine Satelliten ausgewählt => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "RA" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "SSP Breite" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "SSP Länge" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Loc." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Doppler@100MHz" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Signaldämpfung" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Signalverz." #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "Mittl. Anom." #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Orbit Nr." #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Azimut des Satelliten" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Elevation des Satelliten" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Richtung des Satelliten" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Rektaszension des Satelliten" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Deklination des Satelliten" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Die Distanz zwischen Satellit und Beobachter" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "Die Rate, in der sich die Schrägentfernung ändert" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Zeitpunkt des nächsten AOS oder LOS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Zeitpunkt des nächsten AOS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Zeitpunkt des nächsten LOS" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Breitengrad des Subsatellitenpunktes" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Längengrad des Subsatellitenpunktes" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Subsatellitenpunkt als Maidenhead-Gitterfeld" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "Durchmesser der Satellitenausleuchtungszone" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Höhe des Satelliten" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Tangentiale Geschwindigkeit des Satelliten" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Signaldämpfung @ 100 MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Sichtbarkeit des Satelliten" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "%s:%d: Kann unsichtbares Feld nicht aktualisieren (I:%d F:%d)" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: Kann einen nicht existierenden Satelliten nicht aktualisieren" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/V" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "%s:%d: Ungültige Feldnummer (%d)" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "%s: Satellit mit Katalognummer %d konnte nicht gefunden werden" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: Fehlerhafte GtkSingleSat!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Satellitenoptionen / Tastenkürzel" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "%s::%s: pass_t object konnte nicht geholt werden" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" "%s::%s: Zeige Überflugdetails für %s - vermutlich gibt es ein Speicherleck" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Schaltfläche %d ist ohne Funktion …" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "ZEIT" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "%s:%d: Farbindex ist außerhalb des gültigen Bereichs (%d)" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: %s hat %d Überflüge in %.4f Tagen\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "%s:%s: Konnte keinen Speicher zuweisen." #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Für Details klicken" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Dieses Modul besitzt keine Satelliten!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Ort" #: ../src/loc-tree.c:181 msgid "WX" msgstr "WX" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Ort auswählen" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "%s: %s Gewählt" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: Kein Ort ausgewählt" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s existiert nicht!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "%s: Lese %d Städte." #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "%s: locfile konnte nicht geöffnet werden (%s)" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "%s: Ungültige Spalte: %d" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "%s: Fehler beim holen der Eltern für %s." #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "%s: Keine Auswahl gefunden!" #: ../src/main.c:60 msgid "just to have a pot" msgstr "nur um ein .pot zu haben" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict ist ein grafisches Echtzeit-Satellitenverfolgungs- und " "Umlaufbahnberechnungsprogramm.\n" "Gpredict benötigt keine Kommandozeilenoptionen für nominale Vorgänge." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "Optionen parsing fehlgeschlagen: %s\n" #: ../src/main.c:131 #, fuzzy, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" "%s: Benutzerkonfigurationstest fehlgeschlagen (Code %d). Fataler Fehler.\n" "Eine mögliche Lösung ist: Entfernen Sie das .config/Gpredict Verzeichnis\n" "in ihrem Homeverzeichnis." #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" "%s: Nicht-Null-Pointer wurde übergeben, was niemals passieren sollte.\n" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "%s: Zeitschwelle wurde überschritten." #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "%s: Beginne einen neuen Aktualisierungsvorgang." #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "gpredict_tle_update" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "%s: Erzeugen des TLE-Aktualisierungs-Threads fehlgeschlagen (%s)" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "Ihre TLE-Daten sind veraltet.\n" "Sie können sie aktualisieren, wenn sie im Menü\n" "Bearbeiten -> TLE-Daten aktualisieren\n" "auswählen." #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "%s: TLE-Überwachungs-Task konnte nicht gefunden werden (ID = %d)" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Lösche TLE-Daten in %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Fehler beim löschen von %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: %s entfernt" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "%s: Lösche Transponderdaten in %s" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "%s:%d: Konnte %s nicht auswerten" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Karte wählen" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Bilddateien" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "%s: Starte neuen Modulkonfigurierer …" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: Neuer Modulname ist %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" "%s konnte nicht geöffnet werden. Bitte die Log-Benachrichtigungen nach " "Details überprüfen." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: Neue Modulkonfiguration abgebrochen." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s: Scanne Verzeichnis %s nach Modulen." #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "%s:%d: Öffnen des Modulverzeichnisses %s fehlgeschlagen (%s)" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "Sie haben noch keine Module eingerichtet. Bitte benutzen sie Datei -> Neues " "Modul um eines zu erstellen." #: ../src/menubar.c:335 msgid "Module" msgstr "Modul" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Ein Modul wählen" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: Gewählte Modul ist: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "%s:%s: Keine Auswahl ist die Modulliste." #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "%s: Vorhandenes Modul öffnen …" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Modul %s öffnen." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Öffnen des Moduls abgebrochen." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "Transponder-Update" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "Aktualisiere Transponder-Dateien aus dem Internet" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "\n" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Abgeschlossen" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "TLE-Aktualisierung" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "TLE-Daten werden aus dem Internet aktualisiert" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Aktualisierte Satelliten:\t 0\n" "Übersprungene Satelliten: \t 0\n" "Fehlende Satelliten: \t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Verzeichnis wählen" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "TLE-Verzeichnis wählen:" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "TLE-Daten aus Dateien aktualisieren" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: TLE-Datenaktualisierung von %s läuft" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "TLE-Daten werden aus Dateien aktualisiert" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Ein umfangreiches PDF-Benutzerhandbuch und\n" "Videotutorials sind auf der Gpredict-Internetseite\n" "verfügbar:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Neues Modul" #: ../src/menubar.c:856 msgid "_Open module" msgstr "Modul _öffnen" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Log-Browser" #: ../src/menubar.c:876 msgid "_Quit" msgstr "_Beenden" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "TLE-Aktualisierung aus _Netz" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "TLE-Aktualisierung aus _Datei" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "_Transponder-Daten aktualisieren" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Einstellungen" #: ../src/menubar.c:922 msgid "_Online help" msgstr "_Online-Hilfe" #: ../src/menubar.c:931 msgid "_License" msgstr "_Lizenz" #: ../src/menubar.c:936 msgid "_News" msgstr "_Neuigkeiten" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_Über Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Datei" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Bearbeiten" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Hilfe" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "%s: Es gibt bereits ein Modul %s. Frage den Benutzer um Bestätigung …" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "Es gibt bereits ein Modul mit dem Namen %s.\n" "Wollen Sie das Modul überschreiben?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "%s:%s: Eintrag %d in der Satellitenliste konnte nicht geholt werden" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "%s: Modul hat kein QTH; Standard wird benutzt." #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** DEFAULT **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" "%s:%d: Öffnen des Benutzerkonfigurationsverzeichnisses fehlgeschlagen %s (%s)" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Ausgewählte Satelliten" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "Neues Modul erzeugen" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "Modul bearbeiten" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Bodenstation für dieses Modul wählen." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "Modulname" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "Bodenstation" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "Hinzufügen" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Neue Bodenstation hinzufügen" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satelliten" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "Satellit zur Liste hinzufügen" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "Satellit aus der Liste löschen" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "Doppelklicken, um einen Satellit in das andere Fenster zu verschieben" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Änderungen auf %s angewendet." #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "Moduleigenschaften" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Fehler beim Speichern der Moduldaten. (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: Benutzer hat versucht ein Modul ohne Satelliten zu erstellen." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Bitte mindestens einen Satelliten aus der Liste auswählen." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" "%s: Es wurde versucht, Daten unter einem leeren Dateinamen zu speichern." #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "%s: Es wurde versucht, NULL Daten zu schreiben." #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Boolesche lesen fehlgeschlagen (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "%s: Integerwert lesen fehlgeschlagen (%s)" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "%s: Stringwert lesen fehlgeschlagen (%s)" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "%s: Abrufen der Integer-Liste gescheitert: %s" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: %s wiederherstellen fehlgeschlagen" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: Keine Module müssen wiederhergestellt werden" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "%s: %s zur Modulverwaltung hinzugefügt (Seite %d)." #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "%s: %s zur Modulverwaltung hinzugefügt (NOT DOCKED)." #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "%s: Modul %s scheint NULL zu sein" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "%s: Kind konnte im Notebook nicht gefunden werden. Das kann weh tun …" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "%s: Kind von der Notebook-Seite %d entfernt." #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "%s: Status versucht zu sichern, aber mod-mgr ist NULL?" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "%s: Status von keinem Modul braucht gesichert zu werden." #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "%s: %s gespeichert" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "%s: Status von %d Modulen gesichert." #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "%s: Modul %s nicht in der Liste gefunden. Versuche Wiederherstellung." #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "%s: Modul %s ist bereits im Notebook!" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "%s: %s im Notebook angefügt (Seite %d)" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "%s: Modul %s scheint nicht angefügt zu sein!" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "%s: %s von der Notebook-Seite %d entfernt." #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "Gpredict: (kein)" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "Gpredict: %s" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "%s: Neu laden der Satelliten versucht, aber mod-mgr ist NULL?" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "%s: Kein Modul muss Satelliten neu laden." #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "Gpredict: " #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Details anzeigen" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Polardiagramm" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "Az./El. Diagramm" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Zeit" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Az. " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " El. " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " RA " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dek. " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr " Änd. " #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Br. " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lä. " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr " SSP " #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Höhe " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Gesch. " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr " Dop. " #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr " Dämpf. " #: ../src/pass-to-txt.c:55 msgid " Del " msgstr " Verz. " #: ../src/pass-to-txt.c:56 msgid " MA " msgstr " MA " #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr " Pha " #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr " AOS" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TCA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " LOS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Dauer" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "Max. El." #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "AOS Az." #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "Max. El. Az." #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "LOS Az." #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Lokal" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Überflugdetails für %s (Orbit-Nr %d)\n" "Beobachter: %s, %s\n" "Breite:%.2f Länge:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Kommende Überflüge für %s\n" "Beobachter: %s, %s\n" "Breite:%.2f Länge:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "%s: %d Überflüge gefunden für %s im Zeitfenster [%f;%f]" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "%s: Überflug für %s ausgegeben, der nach der gegeben Zeit beginnt." #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "%s: Überflug für %s ausgegeben, der vor der gegeben Zeit endet." #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Überflugdetails für %s (Orbit %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "%s: Nicht implementiert!" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: Daten aus %s konnten nicht geladen werden (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: QTH-Daten: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "%s: QTH hat keinen Standort (%s)." #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "%s: QTH hat keine Beschreibung." #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "%s: QTH hat keine Wetterstation." #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "%s: Fehler beim Lesen des QTH-Breitengrads (%s)." #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "%s: Fehler beim Lesen des QTH-Längengrads (%s)." #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "%s: Fehler beim Lesen der QTH-Höhe (%s)." #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "%s: Fehler beim Lesen des QTH-Typs (%s)." #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "%s: Fehler beim Lesen des GPSD-Ports (%s)." #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "%s: QTH hat keinen GPSD-Server." #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "%s: QRA konnte nicht gesetzt werden für %s bei %f, %f." #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "%s: QTH-Daten: %s, %.4f, %.4f, %d" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "%s: gpsd konnte nicht geöffnet werden bei %s:%d" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "%s: Nicht unterstützte gpsd-api-major-version (%d)" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Fehler" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "%s: QTH-Daten hatten ungültigen Breitengrad %f" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "%s: QTH-Daten hatten ungültigen Längengrad %f" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "%s: Datei enthielt falsche QTH-Daten. Korrigiere: %s, %.4f, %.4f, %d" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" "%s:%d: %s zum Bearbeiten geöffnet:\n" "Breite:%.2f Länge:%.2f Höhe:%d" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "%s:%s: %.2f %.2f => %s" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "%s:%d: Fehler beim Umrechnen von Breite/Länge in Locatorfeld" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "%s:%s: %s => %.2f %.2f" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "%s:%d: Ungültiger Locator:: %s" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Name" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Kurzbezeichnung für diese Bodenstation eingeben, z.B. Rufzeichen.\n" "Erlaubte Zeichen: 0..9, a..z, A..Z, - und _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Beschreibung" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "Eine optionale Beschreibung für diese Bodenstation eingeben." #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "Optionaler Ort der Bodenstation, z.B. Kopenhagen, Dänemark." #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Auswählen" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "Wählen Sie einen Standort aus der Liste" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "Breitengrad (°)" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Den Breitengrad der Bodenstation in Dezimalgrad auswählen." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Nord" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Süd" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "Längengrad (°)" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Den Längengrad der Bodenstation in Dezimalgrad auswählen." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Ost" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "West" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Locator" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "Maidenhead Locator-Gitter." #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "Wählen Sie die Höhe der Bodenstation" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "ft ü. NHN" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "m ü. NHN" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Wetterstation" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Vier-Buchstabencode von der Wetterstation" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "Wählen Sie eine Wetterstation" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "QTH-Typ" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "Statisch" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "GPSD" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" "Ein QTH kann statisch sein, d.h. es verändert sich nicht, oder gpsd-basiert " "für Rechner mit einem angeschlossenen GPS-Gerät." #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "GPSD-Server" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "GPSD-Server." #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "GPSD-Port" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "GPSD-Port setzen. Standard für gpsd ist 2947." #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Bodenstationsdaten bearbeiten" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "Ein Fehler ist aufgetreten beim Speichern\n" "von Bodenstationdaten nach %s.qth!\n" "Bitte versuchen Sie es erneut mit einem anderen Namen." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "%s: NULL Konfigurationsname!" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: Datei %s konnte nicht geladen werden\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "%s: Fehler beim Lesen der Funkgerätekonfiguration aus %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "%s: Funkgerätekonfiguration %s lesen" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "%s: Fehler beim Lesen der Rotorkonfiguration aus %s (%s)." #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "%s: Az-Typ ist nicht definiert für %s. Benutze 0..360°" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "%s: MinAz ist nicht definiert für %s. Benutze 0°." #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "%s: MaxAz ist nicht definiert für %s. Benutze 360°." #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "%s: MinEl ist nicht definiert für %s. Benutze 0°." #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "%s: MaxEl ist nicht definiert für %s. Benutze 90°." #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "%s: AzStopPos nicht definiert für %s. Nehme an bei minaz (%f°)." #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Fehler beim Lesen der Konfigurationsdatei (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "%s: Vorgabewerte werden benutzt" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Alles OK." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Modul nicht initialisiert\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "%s: Unbekannter BOOL Parameterindex (%d)\n" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "%s: Unbekannter STR Parameterindex (%d)\n" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "%s: Unbekannter INT Parameterindex (%d)\n" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Keine Transponder" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "Uplink: %.4f ‒ %.4f MHz" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Uplink: %.4f MHz" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "Downlink: %.4f ‒ %.4f MHz" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Downlink: %.4f MHz" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Invertierung: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Mode: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "Baudrate: %9.2f" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Satellitenname:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Betriebsstatus:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "In Betrieb" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Außer Betrieb" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Teilweise in Betrieb" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "Backup/Standby" #: ../src/sat-info.c:319 msgid "Spare" msgstr "Reserve" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "Erweiterte Mission" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Unbekannt" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Katalognummer:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "Internationale Bezeichnung:" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "Elementnummer:" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "Epochenzeit:" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "Orbitnummer @ Epoche:" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inklination:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "RAAN:" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Exzentrizität:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "Arg. des Perigäums:" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Mittlere Anomalie:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "Mittlere Bewegung:" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "½ d/dt (Mittlere Bewegung):" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "1/6 d2/dt2 (Mittlere Bewegung):" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "B* Widerstandskoeffizient:" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Orbitinformation" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transponder" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Satelliteninformation" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Zeit" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Level" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Nachricht" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "NONE" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "ACHTUNG" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "INFO" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "DEBUG" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "Logdatei ist beschädigt" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "%s:%d: Fehler beim Öffnen des Debug-Logs (%s)" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Logdatei auswählen" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "Log-Browser: %s" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Log-Browser" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Fehler" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Warnungen" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Info" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Debug" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Gesamt" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Zusammenfassung " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr " WARN" #: ../src/sat-log.c:63 msgid " INFO" msgstr " INFO" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "ERROR: %s konnte nicht erstellt werden\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "%s: Löschen der alten Logfiles %s fehlgeschlagen\n" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "ERROR: Erstellung von %s fehlgeschlagen\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Sitzung gestartet" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Sitzung beendet" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "%s: Umbenennen von %s in %s fehlgeschlagen\n" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Empfangsbeginn des Signals (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "Zeit der größten Annäherung (TCA)" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Verlust des Signals (LOS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Überflugsdauer" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Maximale Elevation" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Azimut bei AOS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Az. bei max. Elevation" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Azimut bei LOS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Orbitnummer" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Sichtbarkeit während Überflug" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Daten" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polar" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Az./El." #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Nächste Überflüge für %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "%s: PRINT nicht implementiert" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Einstellungen :: Allgemein" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "GPREDICT Einstellungen :: Module" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Einstellungen :: Schnittstellen" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Einstellungen :: Berechnung" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Allgemein" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Module" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Schnittstellen" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Berechnung" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Gpredict Einstellungen :: Allgemein" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Einstellungen auf Standardwerte setzen." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Minimale Elevation" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Elevations-Grenzwert für Überflüge.\n" "Überflüge mit maximaler Elevation unter dieser Grenze werden ausgelassen" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[Grad]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Mehrere Überflüge:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Anzahl der berechneten Überflüge" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Maximale Anzahl der berechneten Überflüge." #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Überflüge sollten stattfinden innerhalb von" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" "Nur Überflüge, die in der angegebenen Anzahl von Tagen stattfinden, werden " "angezeigt." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[Tage]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Überflugdetails:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Zeitauflösung" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" "Gpredict wird versuchen, die Überflugdetails in der angegeben Zeitauflösung " "anzuzeigen." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[Sek]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Anzahl der Einträge" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" "Gpredict wird versuchen, die Anzahl der Zeilen in der detaillierten " "Vorausberechnung innerhalb dieser Grenze zu halten." #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Satellitensichtbarkeit:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Schattengrenze" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" "Satelliten werden nur als sichtbar angenommen, wenn die Elevation der Sonne " "unter den angegebenen Werten ist.\n" " • Astronomisch: -18° to -12°\n" " • Nautisch: -12° to -6°\n" " • Bürgerlich: -6° to 0°" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Immer Echtzeit für die Überflugberechnungen benutzen" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Markieren Sie dieses Kästchen, wenn sie wollen, dass Gpredict immer die " "derzeitige (Echt-)Zeit als Startzeit zum Berechnen der kommenden " "Satellitenüberflüge benutzt.\n" "\n" "Wenn sie das Kästchen unmarkiert lassen und die Zeitsteuerung aktiv ist, " "wird Gpredict die Zeit der Zeitsimulation als Startzeit der Berechnung der " "Satellitenüberflüge benutzen." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Debug-Stufe:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Level 0: Keine" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Level 1: Fehler" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Level 2: Warnung" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Level 3: Info" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Level 4: Debug" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" "Wählen Sie die Debug-Stufe. Je höher die Stufe, desto mehr Mitteilungen " "werden geloggt." #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Log-Dateien löschen die älter sind als:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Immer löschen" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 Tag" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 Woche" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 Monat" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Auswahl, wie häufig Gpredict alte Log-Dateien löschen soll." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" "Gpredict speichert alle Mitteilungen während des Betriebs im %s%slogs%s\n" "Verzeichnis. Die aktuelle Log-Datei heißt gpredict.log und wird bis zum\n" "nächsten Programmstart behalten, damit Sie sie im Falle eines Fehlers\n" "auswerten können. Falls alte Log-Dateien behalten werden, werden sie\n" "gpredict-XYZ.log benannt, wobei XYZ ein unverwechselbarer Zeitstempel ist." #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" "Ortszeit anstatt UTC (Weltzeit) anzeigen. Anmerkung: Die Ortszeit ist die " "ihres Betriebssystems und nicht die Ortszeit am im Programm ausgewählten " "Standort." #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Zum Eingeben einer Formatierung bitte folgende Kodierungen benutzen:\n" "\n" "\t%Y\tJahr mit Jahrhundert.\n" "\t%m\tMonat (01-12).\n" "\t%d\tTag des Monats (01-31).\n" "\t%j\tTag des Jahres (001-366).\n" "\t%H\tStunde (00-23).\n" "\t%M\tMinuten (00-59).\n" "\t%S\tSekunden (00-59).\n" "\n" "Lesen Sie das Benutzerhandbuch für weitere Kodierungen und Beispiele." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" "Durch Aktivieren des Kästchens werden die geographischen Koordinaten " "zusammen mit einem Buchstaben anstatt eines Zeichens angezeigt (z.B. 23.43°W " "anstatt von -23.43°)." #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Distanzen werden in imperialen (amerikanischen) Einheiten angezeigt, zum " "Beispiel in Meilen anstatt von Kilometern." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Ortszeit anstatt UTC anzeigen" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Auf Standardwerte setzen" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Zeitformat:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "N/S/O/W für geographische Koordinaten benutzen." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Imperiale (amerikanische) Einheiten anstatt metrischer benutzen." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Zahlenformate" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Standorte" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Debug-Logs" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Funkgeräte" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Rotoren" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "Weltkarte, Polar- und Satelliteneinzelansicht" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Weltkarte" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Tabelle" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Weltkarte und Tabelle" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Polar- und Satelliteneinzelansicht" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Polar und kommende Überflüge" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "Alle Ansichten (schmal)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Alle Ansichten (breit)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Karte, Tabelle, Polar- und Satelliteneinzelansicht (breit)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Benutzerdefiniert" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Layout auswählen:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Layout-Code:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "Dieser Eintrag beinhaltet den Layout-Code für das Modul.\n" "Lesen Sie im Benutzerhandbuch, wie sie benutzerdefinierte Layouts mit Hilfe " "von Layout-Codes erstellen." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Fensteranordnungen:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Position des Hauptfensters wiederherstellen" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "Wenn Sie diesen Knopf betätigen, wird Gpredict versuchen, das Hauptfenster " "wieder an die Stelle, wie es bei der letzten Sitzung war, zu platzieren.\n" "Beachten Sie, dass der Fenstermanager dies ignorieren kann." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Position der Modulfenster wiederherstellen" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "Wenn Sie diesen Knopf betätigen, wird Gpredict versuchen , das Modulfenster " "wieder an die Stelle, wie es bei der letzten Sitzung war, zu platzieren.\n" "Beachten Sie, dass der Fenstermanager dies ignorieren kann." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" "Status der Module beim nächsten Öffnen wiederherstellen (angedockt oder als " "Fenster)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "Wenn Sie diesen Knopf betätigen, wird Gpredict den Status der Module wie bei " "der letzten Nutzung wiederherstellen." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Moduleinstellungen auf globale Werte zurücksetzen." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Anzuzeigende Felder:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Hintergrundkarte:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Karte wählen" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Zum Auswählen der Karte klicken" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Weitere Anzeigen:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH-Information" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Ortsinformation auf der Karte anzeigen" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Zeigt welcher Satellit wann als nächstes kommt" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Mauszeigerposition" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Den Breiten- und Längengrad des Mauszeigers anzeigen" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Gitterlinien" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Horizontale und vertikale Gitterlinien anzeigen" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Farben:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Bodenstation:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "Wählen Sie eine Farbe für die Bodenstation" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Gitter:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "Wählen Sie eine Farbe für das Gitter" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "Achsenbeschriftung:" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "Wählen Sie eine Farbe für die Achsenbeschriftung" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satellit:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "Wählen Sie eine Farbe für Satelliten" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Ausgewählter Sat.:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "Wählen Sie eine Farbe für ausgwählte Satelliten" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Bodenspur" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "Wählen Sie eine Farbe für die Bodenspur" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Ausleuchtungszone:" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" "Wählen Sie eine Farbe für die Ausleuchtungszone.\n" "Tipp: Machen Sie sie transparent" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "Info-Text VG:" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "Wählen Sie eine Farbe für den Vordergrund" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "Info-Text HG:" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "Wählen Sie eine Farbe für den Hintergrund" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "Tag-Nacht-Grenze:" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "Select solar terminator colour" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "Nachtseite:" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "Wählen Sie eine Farbe für die Tag-Nacht-Grenze" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Schatten:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "Transp." #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "Intransparent" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" "Schattentransparenz unter dem Satellitenmarker.\n" "\n" "Der Schatten verbessert die Sichtbarkeit der Satelliten, bei denen die " "Hintergrundfarbe hell ist, z.B. der Südpol. Vollständig transparent ist wie " "kein Schatten." #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "Bodenspur anzeigen für" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "Orbit(s)" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Karte zentrieren bei Längengrad" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "Längengrad auswählen. West ist negativ." #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "Einstellungen auf Standardwerte zurücksetzen" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "Modul auf globale Einstellungen zurücksetzen" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Layout" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Aktualisierungsrate" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Listenansicht" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Kartenansicht" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Polardiagramm" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Satelliteneinzelansicht" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Anzuzeigende Spalten:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "%s:%s: Ungültige Diagrammorientierung %d (benutze N/O/S/W)" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientierung:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "N/O/S/W" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" "\tN\n" "W\t\tO\n" "\tS" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "N/W/S/O" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" "\tN\n" "O\t\tW\n" "\tS" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "S/O/N/W" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" "\tS\n" "W\t\tO\n" "\tN" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "S/W/N/O" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" "\tS\n" "O\t\tW\n" "\tN" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "%f:%d: Ungültige Polardiagrammorientierung (%d)" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "Ortsinformation im Polardiagramm anzeigen" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Zeigt an, welcher Satellit wann als nächstes überfliegt" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Azimut und Elevation vom Mauszeiger anzeigen" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "Zus. Az. Markierungen" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "Alle 30° einen weiteren Skalenstrich anzeigen" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Hintergrund:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Zum Auswählen der Hintergrundfarbe klicken" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "Achsen/Kreise:" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Zum Auswählen der Achsenfarbe klicken" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "Zum Auswählen der Farbe der Achsenbeschriftung klicken" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Zum Auswählen der Satellitenfarbe klicken" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Zum Auswählen der Farbe für ausgewählte Satelliten klicken" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "Laufbahn:" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Zum Auswählen der Bahnfarbe klicken" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Informationstext:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Verschiedenes:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "Die Laufbahnen automatisch anzeigen" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" "Zeigt die Laufbahn des Satelliten automatisch an, wenn er in Reichweite " "kommt. Sie können für jedes einzelne Objekt die Bahn immer ausschalten." #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Überflugeigenschaften" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Mehrere Überflüge" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Einzelner Überflug" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "Himmel auf einen Blick" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" "Höhe\n" "(ft)" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" "Höhe\n" "(m)" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Standard" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" "GPSD\n" "Server" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" "GPSD\n" "Port" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" "QTH\n" "Typ" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "%s:%d: QTH-Daten aus %s lesen." #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "%s:%d: Fehler beim Lesen von %s (Siehe vorh. Mit.)" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "%s:%d: Öffnen des Benutzerverzeichnisses fehlgeschlagen (%s)" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "%s:%d: Speicherzuordnung fehlgeschlagen!\n" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "%s:%d: (%.2f,%.2f) konnte nicht zu QRA konvertiert werden." #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "%s:%d: QRA-Locator ist %s" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "%s:%d: Dies scheint das Standard-QTH zu sein." #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "Neue hinzufügen" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Eine neue Bodenstation zur Liste hinzufügen" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Bearbeiten" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "Ausgewähte Bodenstation bearbeiten" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "Ausgewählte Bodenstation löschen" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "Die Bodenstation kann nicht gelöscht werden!\n" "\n" "Sie müssen zumindest eine Bodenstation\n" "eingerichtet haben, ansonsten funktioniert\n" "Gpredict nicht richtig." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Leere Bodenstationsliste!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" "%s:%d: Standard-QTH kann nicht gelöscht werden! Anderes QTH wählen, um die " "Standardeinstellung zu ändern." #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "%s:%d: Neues Standard-QTH ist %s.qth." #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "%s:%d: Lösche Standardmarkierung für %s." #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "%s:%d: %s scheint das Standard-QTH zu sein" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d: Entfernen von %s fehlgeschlagen" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "%s:%d: %s entfernt" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Höhe (ft)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Höhe (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" "%s:%d: %s zum Bearbeiten geladen:\n" "Breite:%.4f Länge:%.4f Höhe:%d" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d: Keine Bodenstation ausgewählt!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" "%s:%d: Uuuups, Gpredict ist auf einen internen Fehler gestoßen (Keine " "Auswahl in QTH-Liste)" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "Optionaler Ort der Bodenstation, z.B. Copenhagen, Denmark." #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" "Höhe in Metern oder Feet (abhängig von den Ihren Einstellungen) der " "Bodenstation auswählen" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Daten aktualisieren alle" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[ms]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Listenansicht aktualisieren alle" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[Takte]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Kartenansicht aktualisieren alle" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "Polaransicht aktualisieren alle" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "Einzelne Satellitenansicht aktualisieren alle" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "%s:%d: %s gelesen" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "%s:%d: Lesen von %s fehlgeschlagen" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "Nur RX" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "Nur TX" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "RX + TX" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "FT817/857/897 (Automatisch)" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "FT817/857/897 (Manuell)" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "PTT" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "DCD" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "%s:%s: Der Bearbeiten-Knopf sollte ausgeschaltet sein." #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" "Das Funkgerät auswählen, dass Sie bearbeiten wollen\n" "und nochmals versuchen!" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Konfigurationsname" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Host" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Port" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "Gerätetyp" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "PTT-Status" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "VFO Up" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "VFO Down" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "LO Down" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "LO Up" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "Signal AOS" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "Signal LOS" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "%s:%s: Der Löschen-Knopf sollte ausgeschaltet sein." #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" "Das Funkgerät auswählen, dass Sie löschen wollen\n" "und nochmals versuchen!" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "Neues Funkgerät zur Liste hinzufügen" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "Ausgewähltes Funkgerät bearbeiten" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "Ausgewähltes Funkgerät löschen" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d: Entfernen von %s fehlgeschlagen" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "%s: Anlage %s konnte nicht geholt werden" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Einen Kurznamen für die Konfiguration eingeben, z.B. IC910-1.\n" "Erlaubte Zeichen: 0..9, a..z, A..Z, - und _" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" "Den Host eingeben, auf dem rigctld läuft. Sie können Host-Namen oder IP-" "Adresse, z.B. 192.168.1.100, benutzen\n" "\n" "Falls Gpredict und rigctld auf dem selben Rechner laufen, benutzen sie " "localhost" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "Port-Nummer eingeben, auf dem rigctld hört" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "Funkgerätetyp" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "Simplex TRX" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "Duplex TRX" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "FT817/857/897 (manuell)" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" "Nur RX: Das Funkgerät soll nur als Empfänger benutzt werden. Wenn " "PTT-Status überwachen angewählt ist wird die Dopplerkorrektur " "ausgesetzt, während PTT AN (manuelles TX) ist. Falls nicht, wird die " "Steuerung immer die Dopplerkorrektur durchführen, und Sie können das selbe " "Gerät nicht für Uplink benutzen.\n" "\n" "Nur TX: Das Funkgerät soll nur für den Uplink benutzt werden. Wenn " "PTT-Status überwachen angewählt ist, wird die Dopplerkorrektur " "ausgesetzt während PTT AUS ist (manuelles RX).\n" "\n" "Simplex TRX: Das Funkgerät soll für Up- und Downlink benutzt werden, " "allerdings nur im Simplex-Modus. Diese Option setzt voraus, dass der PTT-" "Status überwacht wird, andernfalls kann Gpredict nicht feststellen, ob es " "den RX oder TX nachziehen soll.\n" "\n" "Duplex: Das Funkgerät ist ein Full-Duplex-Gerät, wie zum Beispiel " "der IC910H. Gpredict wird ständig den Up- und Downlink nachziehen, " "unabhängig vom PTT-Status.\n" "\n" "FT817/857/897 (automatisch): Dies ist ein spezieller Modus, der mit " "YAESU FT-817, 857 und 897 Geräten benutzt werden kann. Diese Geräte erlauben " "im TX-Modus keine Rechnersteuerung. Deshalb wird die Dopplerkorrektur im RX-" "Modus durch Umschalten zwischen VFO A/B durchgeführt.\n" "\n" "FT817/857/897 (manuell): Dieser ist ähnlich wie der vorherige Modus, " "außer dass das Umschalten auf TX durch Drücken der Leertaste der Tastatur " "erfolgt. Gpredict wird dann die Dopplerkorrektur durchführen, bevor es auf " "TX umschaltet." #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "PTT-Status" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "PTT auslesen" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "DCD auslesen" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" "PTT-Typ auswählen.\n" "\n" "Kein:\n" "Den PTT-Status vom Funkgerät nicht auslesen.\n" "\n" "PTT auslesen:\n" "PTT-Status mit dem get_ptt CAT-Befehl auslesen. Sie müssen überprüfen, dass " "ihr Gerät und hamlib dies unterstützen.\n" "\n" "DCD auslesen:\n" "PTT-Status mit dem get_dcd CAT-Befehl auslesen. Dies kann genutzt werden für " "Geräte die den read_ptt CAT-Befehl nicht unterstützen und Sie ein spezielles " "Interface besitzen, das den Rauschsperrenstatus auslesen kann und per CTS " "überträgt." #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "VFO Up/Down" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "Nicht anwendbar" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "MAIN ↑ / SUB ↓" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "SUB ↑ / MAIN ↓" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "A ↑ / B ↓" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "B ↑ / A ↓" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" "Wählen Sie, welcher VFO für Uplink und Downlink benutzt wird. Diese " "Einstellung wird nur für Full-Duplex Geräte verwendet, wie zum Beispiel der " "IC-910H, FT-847 oder TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" "Frequenz des Lokaloszillators des Downconverters eingeben, falls vorhanden." #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "MHz" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" "Frequenz des Lokaloszillators des Upconverters eingeben, falls vorhanden." #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "Benachrichtigung" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "Aktiviert AOS-Benachrichtigung für dieses Funkgerät." #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "Aktiviert LOS-Benachrichtigung für dieses Funkgerät." #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "Funkgerätekonfiguration bearbeiten" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" "Rotor auswählen, den Sie bearbeiten wollen\n" "und nochmals versuchen!" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" "Rotor auswählen, den Sie löschen wollen\n" "und nochmals versuchen!" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Hinzufügen" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "Neuen Rotor hinzufügen" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "Ausgewählten Rotor bearbeiten" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "Ausgewählten Rotor löschen" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Unbekannt (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "Min. Az." #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "Max. Az." #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "Min. El." #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "Azimut-Typ" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "%s: ROT %s holen fehlgeschlagen" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "%s:%s: Ungültiger Az.-Rotortyp." #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Gib einen Kurznamen für diese Konfiguration ein, z.B. ROTOR-1.\n" "Erlaubte Zeichen: 0..9, a..z, A..Z, - und _" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" "Den Host eingeben, auf dem rotctld läuft. Sie können Host-Namen oder IP-" "Adresse, z.B. 192.168.1.100, benutzen.\n" "\n" "Falls Gpredict und rotctld auf dem selben Rechner laufen, benutzen Sie " "»localhost«." #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "Portnummer eingeben, auf dem rotctld hört. Standard ist 4533." #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "Az.-Typ" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" "Wählen Sie hier ihren Azimuth-Bereich. Beachten Sie, dass gpredict 0° im " "Norden annimmt, und die + Richtung für beide Arten im Uhrzeigersinn ist" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr " Min. Az." #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr " Max. Az." #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr " Min. El." #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr " Max. El." #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr " Azimuth-Endanschlagsposition" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" "Setze hier die Azimuth-Endanschlagsposition, wobei 0° Norden ist, -180° " "Süden, usw. Die Voreinstellung für einen 0° → 180° → 360° Rotor ist 0° und " "die Voreinstellung für einen -180° → 0° → +180° Rotor ist -180°." #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "Rotor-Konfiguration bearbeiten" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Zeit:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Überflüge finden und anzeigen, die stattfinden innerhalb von" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" "Die Überflüge, die auf dem »Himmel auf einen Blick«-Diagramm angezeigt " "werden,\n" "werden innerhalb dieser Anzahl von Stunden beginnen." #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "Stunden" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "Satellit 1: " #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Farbe 1 auswählen" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Zum Auswählen der Farbe klicken" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "Satellit 2: " #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Farbe 2 auswählen" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "Satellit 3: " #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Farbe 3 auswählen" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "Satellit 4: " #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Farbe 4 auswählen" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "Satellit 5: " #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Farbe 5 auswählen" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "Satellit 6: " #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Farbe 6 auswählen" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "Satellit 7: " #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Farbe 7 auswählen" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "Satellit 8: " #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Farbe 8 auswählen" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "Satellit 9: " #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Farbe 9 auswählen" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "Satellit 10: " #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Farbe 10 auswählen" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Automatisches Aktualisieren:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "Alter der TLE-Daten überprüfen:" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Falls die TLS-Daten zu alt sind:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Mich benachrichtigen" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Automatisches Update im Hintergrund ausführen" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" "Kann TLE-Quelle nicht löschen!\n" "\n" "Du solltest mindestens eine TLE-Quelle konfiguriert haben, ansonsten kann " "Gpredict nicht richtig funktionieren.\n" "\n" "Wenn du die TLE-Quelle bearbeiten willst, klicke doppelt auf den Eintrag." #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "TLE-Quelle hinzufügen" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "Eine neue TLE-Quelle zur Liste hinzufügen" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "TLE-Quelle löschen" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "Die ausgewählte TLE-Quelle löschen" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Aktualisierung aus dem Internet:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Proxy-Server:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "URL eingeben für den lokalen Proxy-Server. Z.B.\n" "http://mein.proxy.com" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "TLE-Quellen:" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" "Liste der Dateien mit TLE-Daten, die vom Internet abgerufen werden\n" "Klicke doppelt auf einen Eintrag, um diesen zu bearbeiten" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Neuen Satellit zur lokalen Datenbank hinzufügen" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" "Beachte, dass das Auswählen dieser Option ein erneutes Hinzufügen zuvor " "gelöschter Satelliten zur Datenbank verursachen kann." #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "%s:%s: Fehler beim Holen des Eintrages %d in der URL-Liste" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Sichtbar" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "Tageslicht" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "Verdunkelt" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Überflugdetails speichern" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Speichern in Verzeichnis:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Ordner auswählen" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Speichern unter Dateinamen:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "Dateiinhalt:" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "Information+Kopf+Daten" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "Kopf + Daten" #: ../src/save-pass.c:170 msgid "Data only" msgstr "Nur Daten" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Überflüge speichern" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Kompletter Report" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Zusammenfassung" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Ungültiges Dateiformat: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Datei %s konnte nicht erstellt werden (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Datei %s konnte nicht erstellt werden\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "%s: Ein Fehler ist beim Speichern der Daten nach %s aufgetreten (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "Ein Fehler ist beim Speichern der Daten nach %s aufgetreten\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: %d Zeichen nach %s geschrieben" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "%s: NULL Eingabedaten!" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "%s: NULL Ausgabedaten!" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "%s: Ein TLE-Aktualisierungsvorgang läuft bereits. Abbruch." #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Fehler beim Öffnen von Verzeichnis %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "FEHLER beim Öffnen von Verzeichnis %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Lese Daten aus %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "%s: Keine gültigen TLE-Daten in %s gefunden" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "%s: %d Satelliten aus %s in den Speicher geladen" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Daten werden aktualisiert…" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Aktualisierte Satelliten:\t %d\n" "Übersprungene Satelliten:\t %d\n" "Fehlende Satelliten:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Aktualisierte Satelliten:\t %d\n" "Übersprungene Satelliten:\t %d\n" "Fehlende Satelliten:\t %d\n" "Neue Satelliten:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: %d neue Satelliten zur lokalen Datenbank hinzugefügt" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: TLE-Daten aktualisiert." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "%s: TLE-Daten werden bereits aktualisiert. Abbruch." #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "%s: Keine Dateien aus dem Internet zu laden." #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "Keine Dateien aus dem Internet herunterzuladen" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Hole %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Fehler beim Holen von %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: Erfolgreich %s geholt" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Fehler beim Holen von %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "%s: Fehler beim öffnen von %s verhindert Aktualisierung" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: %d Dateien aus dem Internet geholt; aktualisiere …" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "%s Konnte TLE-Dateien nicht aus dem Internet abrufen. Abbruch." #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Fehler beim Öffnen von %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "%s:%s: Es gibt keine Kategorie in %s" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "%s:%s: Es gibt keine %s benannte Kategorie" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" "%s:%s: .cat-Datei konnte nicht erneut geöffnet werden währned des Lesens der " "TLE aus %s" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" "%s:%s: Etwas hat »linesneeded« auf den unzulässigen Wert %d geschrieben" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "%s:%s: Verarbeite ein Drei-Zeilen-TLE" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "%s:%s: Verarbeite ein Zwei-Zeilen-TLE" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: Ungültige Daten für %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "%s:%s: Zwei unterschiedliche Status für %d (%s) zur selben Zeit." #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: %s konnte nicht geöffnet werden" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" "%s: Keine neuen TLE-Daten für %d gefunden. Satellit kann veraltet sein." #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Fehler beim Laden von %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "%s: Derzeitige TLE-Daten für %d scheinen falsch zu sein" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "%s: Name in Daten für %d aktualisiert." #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "%s: Nickname in Daten für %d aktualisiert." #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "%s: TLE in Daten für %d aktualisiert." #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "%s: Betriebsstatus in Daten für %d aktualisiert." #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Monatlich" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Wöchentlich" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Täglich" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "%s: Konnte %s aus %s:'%s' nicht lesen. Benutze Standard." #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Fehler beim lesen von %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s enthält 0 Transponder" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "%s: Speicherzuordung für TRSP-Daten fehlgeschlagen" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "%s: Überspringe Transponder bei Index %d (kein Name)" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "%s: Fehler beim Schreiben der Transponder-Daten nach %s" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "%d Transponder nach %s geschrieben" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "MODUS %d %s" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "%s: Konnte TRSP-Datei nicht zum Schreiben öffnen" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "%s: Bereit um die Modi-Liste von %s abzurufen" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "%s: Datei, um %s zu öffnen " #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "%s: Konnte Frequenzdateien nicht aus dem Netzwerk abrufen" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "%s: Frequenzaktualisierung läuft bereits" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "%s: Bereit um die Transponderliste von %s abzurufen" #~ msgid "Update _frequencies" #~ msgstr "_Frequenzen aktualisieren" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Column Name" #~ msgstr "Spaltenname" #~ msgid "Row" #~ msgstr "Reihe" #~ msgid "Group" #~ msgstr "Gruppe" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Beginnen Sie in dieses Feld zu tippen um einen Satelliten für die " #~ "gewählte Gruppe zu suchen." #~ msgid "Search" #~ msgstr "Suche" #~ msgid "Open an existing module" #~ msgstr "Ein existierendes Modul öffnen" #~ msgid "Create a new module" #~ msgstr "Ein neues Modul erstellen" #~ msgid "E_xit" #~ msgstr "Be_enden" #~ msgid "Module Name" #~ msgstr "Modulname" #~ msgid "Create New Module" #~ msgstr "Neues Modul erstellen" #~ msgid "Ground Station" #~ msgstr "Bodenstation" #~ msgid "Module Properties" #~ msgstr "Moduleigenschaften" #~ msgid "From _network" #~ msgstr "Aus dem _Internet" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Satellit zur Liste der ausgewählten Satelliten hinzufügen." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Satellit von der Liste der ausgewählten Satelliten entfernen." #~ msgid "Update Keplerian elements from local files" #~ msgstr "Keplerelemente aus lokalen Dateien aktualisieren" #~ msgid "Select a predefined weather station from a list." #~ msgstr "Vorgegebene Wetterstation aus einer Liste auswählen." #~ msgid "Edit Module" #~ msgstr "Modul bearbeiten" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "ft above sea level" #~ msgstr "ft über Normalnull" #~ msgid "m above sea level" #~ msgstr "m über Normalnull" #~ msgid "Transparent" #~ msgstr "Transparent" #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Ungültiger Funkgerätetyp %d. Typ wird auf RIG_TYPE_RX gesetzt" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Ungültiges VFO-Argument. VFOA wird verwendet." #~ msgid "%s: %s rigctld returned error (%s)" #~ msgstr "%s: %s rigctld gibt Fehler zurück (%s)" #~ msgid " Hour:" #~ msgstr " Stunde:" #~ msgid " Min:" #~ msgstr " Min.:" #~ msgid " Sec:" #~ msgstr " Sek.:" #~ msgid " Msec:" #~ msgstr " mSek.:" #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "" #~ "Wählen Sie eine Satellitengruppe oder -kategorie um ihre Suche " #~ "einzuschränken." #~ msgid "Open the message log browser" #~ msgstr "Den Nachrichtenmitschnitt-Browser öffnen" #~ msgid "Exit the program" #~ msgstr "Das Program beenden" #~ msgid "Edit user preferences" #~ msgstr "Benutzereinstellungen bearbeiten" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Keplerelemente von einem Internetserver aktualisieren" #~ msgid "From l_ocal files" #~ msgstr "Aus l_okalen Dateien" #~ msgid "Show online user manual" #~ msgstr "Benutzerhandbuch online anzeigen" #~ msgid "Show what's new in this release" #~ msgstr "Neuerungen in dieser Version anzeigen" #~ msgid "Show about dialog" #~ msgstr "»Über«-Dialog anzeigen" #~ msgid "Show the Gpredict license" #~ msgstr "Gpredict Lizenz anzeigen" #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Hinweis: Auf einen Satelliten doppelklicken,\n" #~ "um ihn in den anderen Kasten zu bewegen." #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (kein)" #~ msgid "Select a predefined location from a list." #~ msgstr "Einen vordefinierte Ort aus der Liste wählen." #~ msgid "Enable rules hint in the list views" #~ msgstr "Lesehilfe in der Listenansicht aktivieren" #~ msgid "Click to select the grid colour" #~ msgstr "Zum Auswählen der Gitterfarbe klicken" #~ msgid "Click to select ground track colour" #~ msgstr "Zum Auswählen der Farbe der Bodenspur klicken" #~ msgid "Click to select info text background colour" #~ msgstr "Zum Auswählen der Informationstext-Hintergrundfarbe klicken" #~ msgid "Strong" #~ msgstr "Stark" #~ msgid "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgstr "" #~ "Bestimmt, wie stark der Schatten unter der Satellitenmarkierung sein " #~ "soll. Der Schatten verbessert die Sichtbarkeit der Satelliten an Stellen, " #~ "an denen der Hintergrund hell ist, wie z.B. der Südpol.\n" #~ "\n" #~ "Transparent bedeutet kein Schatten." #~ msgid "Click to select info text foreground colour" #~ msgstr "Zum Auswählen der Informationstext-Vordergrundfarbe klicken" #~ msgid "Delete the selected ground station" #~ msgstr "Die ausgewählte Bodenstation löschen" #~ msgid "Edit the currently selected ground station" #~ msgstr "Die derzeit ausgewählte Bodenstation bearbeiten" #~ msgid "Edit the currently selected radio" #~ msgstr "Derzeit ausgewähltes Funkgerät bearbeiten" #~ msgid "Delete the selected radio" #~ msgstr "Ausgewähltes Funkgerät löschen" #~ msgid "Add a new rotator to the list" #~ msgstr "Neuen Rotor zur Liste hinzufügen" #~ msgid "Edit the currently selected rotator" #~ msgstr "Derzeit ausgewählten Rotor bearbeiten" #~ msgid "Delete the selected rotator" #~ msgstr "Ausgewählten Rotor löschen" #~ msgid "Colour for satellite 1: " #~ msgstr "Farbe für Satellit 1: " #~ msgid "Colour for satellite 2: " #~ msgstr "Farbe für Satellit 2: " #~ msgid "Colour for satellite 7: " #~ msgstr "Farbe für Satellit 7: " #~ msgid "Colour for satellite 6: " #~ msgstr "Farbe für Satellit 6: " #~ msgid "Colour for satellite 3: " #~ msgstr "Farbe für Satellit 3: " #~ msgid "Colour for satellite 4: " #~ msgstr "Farbe für Satellit 4: " #~ msgid "Colour for satellite 5: " #~ msgstr "Farbe für Satellit 5: " #~ msgid "Colour for satellite 8: " #~ msgstr "Farbe für Satellit 8: " #~ msgid "Colour for satellite 9: " #~ msgstr "Farbe für Satellit 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Farbe für Satellit 10: " #~ msgid "Colour for coverage Area (make it transparent)" #~ msgstr "Farbe für Ausleuchtungszone (transparent machen)" #~ msgid "Failed to build menubar: %s" #~ msgstr "Erzeugen der Menüleiste gescheitert: %s" #~ msgid "Visible Columns" #~ msgstr "Anzuzeigende Spalten" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Die verbleibende Zeit bis zum nächsten AOS- oder LOS-Ereignis. Dies hängt " #~ "davon ab, welches zuerst eintritt." #~ msgid "Click to select Earth shadow colour" #~ msgstr "Zum Auswählen der Farbe der Nachtseite klicken" #~ msgid "Click to select terminator colour" #~ msgstr "Zum Auswählen der Farbe der Tag-Nacht-Grenze klicken" #~ msgid "Online help" #~ msgstr "Internethilfe" #~ msgid "" #~ "Enabling rules hint may make reading across many columns easier. By " #~ "default the satlist will be rendered with alternating colours, but the " #~ "exact behaviour is up to the theme engine." #~ msgstr "" #~ "Die Aktivierung der Lesehilfe kann das Lesen über mehrere Spalten " #~ "einfacher machen. Standardmäßig wird die Satellitenliste in abwechselnden " #~ "Farben angezeigt, das genaue Verhalten ist aber vom Desktop-Design " #~ "abhängig." #~ msgid "Decay" #~ msgstr "Decay" #~ msgid "Update transponders from a network server" #~ msgstr "Transponder von einem Netzwerkserver aktualisieren" #~ msgid "_Update TLE data" #~ msgstr "_TLE-Daten aktualisieren" #~ msgid "" #~ "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors.\n" #~ "Contact: oz9aec at gmail.com\n" #~ "\n" #~ "Gpredict is free software; you can redistribute it and modify it under " #~ "the terms of the GNU General Public License as published by the Free " #~ "Software Foundation; either version 2 of the License, or (at your option) " #~ "any later version.\n" #~ "\n" #~ "This program is distributed free of charge in the hope that it will be " #~ "useful, but WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library " #~ "General Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program (see Help->License). Otherwise you can find a copy on " #~ "the FSF website http://www.fsf.org/licensing/licenses/gpl.html or you can " #~ "write to the\n" #~ "\n" #~ "Free Software Foundation, Inc.\n" #~ "59 Temple Place - Suite 330\n" #~ "Boston\n" #~ "MA 02111-1307\n" #~ "USA.\n" #~ msgstr "" #~ "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC und Mitwirkende.\n" #~ "Kontakt: oz9aec at gmail.com\n" #~ "\n" #~ "Gpredict ist freie Software; du kannst sie weiterverteilen und sie unter " #~ "den Bedingungen der GNU General Public Lizenz Version 2 oder jeglicher " #~ "späteren Version, wie sie von der Free Software Foundation veröffentlicht " #~ "wurde, modifizieren.\n" #~ "\n" #~ "Dieses Programm wird entgeltfrei verteilt mit der Hoffnung, dass es " #~ "nützlich sein wird, JEDOCH OHNE JEGLICHE GARANTIE; sogar ohne die " #~ "implizierte Zusicherung allgemeiner Gebrauchstauglichkeit oder der " #~ "TAUGLICHKEIT FÜR EINE BESTIMMTE ABSICHT. Sieh dir die GNU Library General " #~ "Public Lizenz für weitere Details an.\n" #~ "\n" #~ "Zusammen mit diesem Programm (siehe Hilfe->Lizenz) solltest du eine Kopie " #~ "der GNU General Public Lizenz erhalten haben. Andernfalls kannst eine " #~ "Kopie auf der FSF Website http://www.fsf.org/licensing/licenses/gpl.html " #~ "finden oder du kannst der\n" #~ "\n" #~ "Free Software Foundation, Inc.\n" #~ "59 Temple Place - Suite 330\n" #~ "Boston\n" #~ "MA 02111-1307\n" #~ "USA.\n" #~ "\n" #~ "schreiben.\n" gpredict/po/el.po000066400000000000000000003626301427377236300142650ustar00rootroot00000000000000# Greek translation for gpredict # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-07 02:24+0000\n" "Last-Translator: Alexandru Csete \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Dimitrios Ntoulas https://launchpad.net/~ntoulasd" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "" #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "" #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "" #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "" #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "" #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "" #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Πληροφορίες" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Τοπική ώρα" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Δορυφόρος" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Αρ. καταλόγου" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Όνομα Δορυφόρου" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Αριθμός καταλόγου" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Αζιμούθιο" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Ανύψωση" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "Β" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "Ν" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "Α" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "Δ" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Επόμενος: %s\n" "σε %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Επόμενος: %s\n" "σε %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Επόμενος: ΣΦΑΛΜΑ" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "Μη ορατός σε %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "Μη ορατός σε %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "" #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "Ορατό σε" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "Μη ορατό σε" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Λήψη " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Εκπομπή " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Κλείδωμα" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" "Κλείδωμα στον μεταδότη του δορυφόρου.\n" "Ενεργοποιώντας αυτό το κουμπί θα ρυθμίζεται η απόκλιση συχνότητας (Doppler) " "στον δέκτη." #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Επέλεξε μεταδότη" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "Σ" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Συντονίζει την ραδιοσυσκευή στον μεταδότη. Η εκπομπή και η λήψη θα " "ρυθμιστούν στο κέντρο της συχνότητας του μεταδότη. Σε περίπτωση σήματος " "φάρου θα συντονιστεί μόνο η λήψη." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Απόσταση:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" "Αυτή είναι η τρέχουσα απόσταση μεταξύ του δορυφόρου και του παρατηρητή." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Ρυθμός:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" "Ο ρυθμός μεταβολής της απόστασης μεταξύ του δορυφόρου και του παρατηρητή." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Δορυφόρος" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Συσκευή:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Επιλέξτε την πρωτεύουσα ραδιοσυσκευή. Αυτή η συσκευή θα χρησιμοποιηθεί για " "εκπομπή και για λήψη εκτός και αν οριστεί δευτερεύουσα συσκευή για εκπομπή." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Συσκευή:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Δευτερεύουσα ραδιοσυσκευή\n" "Η συσκευή αυτή θα χρησιμοποιηθεί για εκπομπή" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Σύνδεση" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Σύνδεση στην επιλεγμένη ραδιοσυσκευή" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Σύνδεση:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" "Η παράμετρος αυτή ορίζει κάθε πότε θα στέλνονται δεδομένα στην ραδιοσυσκευή." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Ρυθμίσεις" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ΣΦΑΛΜΑ" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Συσκευή:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Επιλογή ρότορα κεραίας" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Ενεργοποίηση του επιλεγμένου ρότορα" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Ανοχή:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Κατεύθυνση" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Απόσταση" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Επόμενο Συμβάν" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Υψόμετρο" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Τροχιά" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "Κατάσταση PTT" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Κατεύθυνση" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Απόσταση" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Υψόμετρο" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Ταχύτητα" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Αριθμός τροχιάς" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Κατάσταση Λειτουργίας:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Ίχνος Τροχιάς" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Έξοδος από πλήρη οθόνη" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Πλήρης οθόνη" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Επιλογή δορυφόρου" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Έλεγχος Χρόνου" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Έλεγχος ασυρμάτου" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Έλεγχος κεραίας" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Ρυθμίσεις" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Διαγραφή" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Δεν έχεις ρυθμίσει κάποιον ασύρματο!\n" "Παρακαλώ ρύθμισε έναν ασύρματο πρώτα." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Έλεγχος Ασυρμάτου: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Δεν έχεις ρυθμίσει κάποιον ρότορα!\n" "Παρακαλώ ρύθμισε έναν ρότορα πρώτα." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Επαναφορά" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Επαναφορά στην τρέχουσα ημερομηνία και ώρα" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Διαθέσιμοι Δορυφόροι" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Ενημερωμένο" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Όλοι οι δορυφόροι" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Περιοχή" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Αριθμός τροχιάς" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Αζιμούθιο του δορυφόρου" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Ανύψωση του δορυφόρου" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Κατεύθυνση του δορυφόρου" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Υψόμετρο του δορυφόρου" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Εφαπτομενική ταχύτητα του δορυφόρου" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "ΧΡΟΝΟΣ" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Τοποθεσία" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Επιλογή Τοποθεσίας" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Αρχεία εικόνων" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "Ενημέρωση Αναμεταδοτών" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Ολοκληρώθηκε" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Ενημέρωση Δορυφόρων" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Ενημερώνω τα αρχεία TLE από το διαδίκτυο" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Επιλογή καταλόγου" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Ενημέρωση των TLE από αρχεία" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Ενημερώνω τα αρχεία TLE από αρχεία" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Καταγραφή" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Ενημερώνω τα αρχεία TLE από το διαδίκτυο" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Ενημέρωση των TLE από αρχεία" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Ενημέρωση δεδομένων _Αναμεταδοτών" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Ρυθμίσεις" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Άδεια χρήσης" #: ../src/menubar.c:936 msgid "_News" msgstr "_Νέα" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_Περί του Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Αρχείο" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Επεξεργασία" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Βοήθεια" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Επιλεγμένοι Δορυφόροι" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Δορυφόροι" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Χρόνος" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Υψόμετρο " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Όνομα" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Χωρίς αναμεταδότες" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "Εκπομπή: %.4f ‒ %.4f MHz" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Εκπομπή: %.4f MHz" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "Λήψη: %.4f ‒ %.4f MHz" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Λήψη: %.4f MHz" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Διαμόρφωση: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Όνομα δορυφόρου:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Κατάσταση Λειτουργίας:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Λειτουργικός" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Μη-λειτουργικός" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Μερικός λειτουργικός" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Άγνωστη" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Αριθμός καταλόγου:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Κλίση:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Πληροφορίες τροχιάς" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Αναμεταδότες" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Πληροφορίες Δορυφόρου" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Χρόνος" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "ΠΛΗΡΟΦΟΡΙΕΣ" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Επιλογή Αρχείου Καταγραφής" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Πληροφορίες" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr " ΠΛΗΡΟΦΟΡΙΕΣ" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Διάρκεια διέλευσης" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Μέγιστη ανύψωση" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Ορατότητα κατά την διέλευση" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Γενικά" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Αρθρώματα" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Διασυνδέσεις" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Πρόβλεψη" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Επαναφορά στις προκαθορισμένες τιμές." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Ελάχιστη ανύψωση" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Πολλαπλές διελεύσεις:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Πληροφορίες Διέλευσης:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Ορατότητα Δορυφόρου:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Επαναφορά στην προκαθορισμένη τιμή" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Μορφή ώρας:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Μορφή Αριθμών" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Σταθμοί Εδάφους" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Ασύρματοι" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Ρότορες" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Επιλογή διάταξης:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Επαναφορά αρθρώματος στις γενικές τιμές." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "Πληροφορίες QTH" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Γραμμές Πλέγματος" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Σταθμός Εδάφους:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Πλέγμα:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Δορυφόρος:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Ίχνος Τροχιάς:" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Σκιά:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Διάταξη" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Ανανέωση τιμών" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Προβολή Λίστας" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Προβολή Χάρτη" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Πολική Προβολή" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Προβολή Δορυφόρου" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Φόντο:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Συνθήκες Διέλευσης" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Πολλαπλές Διελεύσεις" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Μοναδική Διέλευση" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Προεπιλεγμένο" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Επεξεργασία" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Ανανέωση δεδομένων" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Όνομα" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Υπολογιστής" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Θύρα" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "Τύπος Ασυρμάτου" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "Κατάσταση PTT" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, c-format msgid "%s: Failed to remove %s" msgstr "" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "Κατάσταση PTT" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "Ανάγνωση PTT" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Προσθήκη Νέου" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Αυτόματη ενημέρωση στο παρασκήνιο" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Ενημέρωση από το διαδίκτυο:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Αποθήκευση Πληροφοριών Διέλευσης" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Αποθήκευση Διέλευσης" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, c-format msgid "%s: Error fetching %s (%x)" msgstr "" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "ΔΙΑΜΟΡΦΩΣΗ %d %s" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Exit the program" #~ msgstr "Έξοδος από το πρόγραμμα" #~ msgid "Edit user preferences" #~ msgstr "Επεξεργασία προτιμήσεων χρήστη" #~ msgid "Online help" #~ msgstr "Βοήθεια στο ίντερνετ" #~ msgid "_Update TLE data" #~ msgstr "Ενημέρωση δεδομένων _Δορυφόρων" #~ msgid "From _network" #~ msgstr "Από το _δίκτυο" #~ msgid "From l_ocal files" #~ msgstr "Από τοπικό _αρχείο" #~ msgid "Ground Station" #~ msgstr "Σταθμός Εδάφους" #~ msgid "E_xit" #~ msgstr "Έ_ξοδος" #~ msgid "Module Name" #~ msgstr "Όνομα Αρθρώματος" #~ msgid "Column Name" #~ msgstr "Όνομα Στήλης" #~ msgid "Search" #~ msgstr "Αναζήτηση" #~ msgid "Group" #~ msgstr "Ομάδα" #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Πληροφορία: Με διπλό κλικ σε κάθε δορυφόρο\n" #~ "μετακινείται στην άλλη λίστα." gpredict/po/en_GB.po000066400000000000000000004537061427377236300146440ustar00rootroot00000000000000# British English Translation for gpredict. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the gpredict package. # Michael Stephenson , 2009. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:49+0000\n" "Last-Translator: Michael Stephenson \n" "Language-Team: British English\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Michael Stephenson\n" "\n" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Andy Finch https://launchpad.net/~fincha\n" " Michael Stephenson https://launchpad.net/~mickstephenson\n" " ascenseur https://launchpad.net/~joseph-odell" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Could not open %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Found at least one .qth file." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Failed to copy sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Copied sample.qth to %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Check successful." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Check failed. Creating %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Failed to create %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Created %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Failed to copy Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Copied amateur.mod to %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Failed to load data from %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Found %d satellites in %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat already exists. Skipped." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Written %d new satellite to user config" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Could not open %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Failed to copy %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Successfully copied %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Failed to load %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Error reading %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Info" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s called with color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s called with alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s called with rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s called with rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Could not create config data (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Could not create config file (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Error writing config data (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Wrote only %d out of %d chars." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Configuration saved for %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Local Time" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satellite" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Catnum" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "BOLD" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Satellite Name" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Catalogue Number" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimuth" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevation" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Failed to get data for #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satellite #%d removed from list." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Never" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: FIXME I am not implemented" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Failed to get data for %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "%s:%d: There is no selection; skip popup." #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Use mouse buttons and wheel to change value" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Incorrect polar plot orientation." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "E" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "W" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Could not find satellite (%d) in hash table" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Can not find clicked object (%d) in hash table" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Next: %s\n" "in %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Next: %s\n" "in %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Can not find NEXT satellite." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Next: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Next: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS in %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS in %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Always in range" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "%s: marker added to polarview not showing %d." #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "%s: label added to polarview not showing %d." #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Cannot allocate memory for satellite %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Failed to get satellite pass." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "%s:%d: Pass had no points in it." #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Failed to get satellite object." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Requested satellite (%d) is not within range" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Sky track" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS in" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS in" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Downlink " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule has no target satellite." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Satellite %d has %d transponder modes." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Failed to open hwconf dir (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Invalid satellite selection: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: Inconsistency detected in internal transponder data (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Primary device selected: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Failed to allocate memory for radio config" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Loaded new radio configuration %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Failed to load radio configuration %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Secondary device selected: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Failed to allocate memory for radio config" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Controller does not have a valid configuration" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Select target object" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Track" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Select a transponder" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Range:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "This is the current distance between the satellite and the observer." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Rate:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" "The rate of change for the distance between the satellite and the observer." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Target" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Error reading radio configuration %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Device:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Device:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Select secondary radio device\n" "This device will be used for uplink" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "None" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Engage" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Engage the selected radio device" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Cycle:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "This parameter controls the delay between commands sent to the rig." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msec" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Settings" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "%s:%s: sending %d bytes to rigctld as \"%s\"" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: SIZE ERROR %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: rigctld port closed" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Got 0 bytes from rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Read %d bytes from rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s called but TX VFO is %d." #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s missed the deadline" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: NULL storage." #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: Acquired controller lock" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT is OFF => Set TX freq and PTT=ON" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT is ON = Set PTT=OFF" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "%s: Failed to acquire controller lock; PTT event not handled" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Detected SPACEBAR pressed event" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: Keypress value %i not managed by this function" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Failed to create socket" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Network socket created successfully" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Failed to connect to %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Connection opened to %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "%s:%s: Sent 2 bytes but sent %d." #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "%s: rotctld Socket Down" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Got 0 bytes from rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "%s:%d: rotctld returned error (%s)" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "%s:%d: rotctld returned bad response (%s)" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "%s:%d: rotctld returned error %d with az %f el %f(%s)" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Read:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Read: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ERROR" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "%s:%d: Failed to allocate memory for rotator config" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Loaded new rotator configuration %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Failed to load rotator configuration %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Track the satellite when it is within range" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Device:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Select antenna rotator device" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Engage the selected rotor device" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "This parameter controls the delay between commands sent to the rotator." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolerance:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "deg" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Error reading NAME from %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Satellite %d has no NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "%s: Error reading TLE line 1 from %s (%s)" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "%s: Error reading TLE line 2 from %s (%s)" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: TLE data for %d appears to be bad" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Dir" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dec" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Range" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Rate" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Next Event" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Next AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Next LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Lat" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Lon" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Footp" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Alt" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Vel" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Loss" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Del" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Phase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbit" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Vis" #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "PTT Status" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Direction" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Right Ascension" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Declination" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Slant Range" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "Range Rate" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Latitude" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Longitude" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "Sub-Satellite Point" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Footprint" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Altitude" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Velocity" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Doppler Shift @ 100MHz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Signal Loss @ 100MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Signal Delay" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Mean Anomaly" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Orbit Phase" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Orbit Number" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Visibility" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Operational Status:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: Invalid GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Invalid column: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "%s: GtkSatList has not child with index %d" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Next: %s in %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Next: %s in %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "%s: Can not find clicked object (%d) in hash table" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Loading map file %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Map file found" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Could not find map file %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Using default map: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Error loading map file (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "%s: Bad data measuring distance to North Pole %f %f." #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "%s: Bad data measuring distance to South Pole %f %f." #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS in %d minutes" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS in %d minutes" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Creating ground track for %s" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Start orbit: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: End orbit %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "%s: T0: %f (%d)" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "%s: MAYDAY: Insufficient memory for ground track!" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "%s: Problem computing ground track for %s" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Updating ground track for %s" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Deleting ground track for %s" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "%s: Could not find part %d of ground track" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Highlight footprint" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Ground Track" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Set Target" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "%s:%d: Invalid child type (%d). Using GtkSatList." #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: Layout has %d columns and %d rows." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Failed to get list of satellites (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Error reading data for #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "%s: Read data for #%d" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Sat #%d already in list" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: Read %d out of %d satellites" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "%s: Updating GtkSkyGlance for %s" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "%s:%d: Unknown child type" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "%s: Previous cycle missed it's deadline." #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Could not load config data from %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Reading configuration from %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "%s: Can not load default QTH file %s; using built-in defaults" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "%s: Module layout is invalid: %s. Using default." #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "%s: GRID(%d): %s" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "%s: Unable to allocate memory for grid." #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Module %s is not valid." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Module %s has problems." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Module options / shortcuts" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Close this module." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "%s: Module %s received CLOSE signal." #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Module %s is in DOCKED state." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "%s: Module %s is in WINDOW state." #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "%s: Module %s is in FULLSCREEN state." #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: Module %s has unknown state: %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Module %s closed." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Module %s received CONFIG signal." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: Module configuration failed for some reason." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Reloading satellites for module %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "%s: Unknown child type" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s called with NULL parameter!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Detach module" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Attach module" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Exit full screen" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Full screen" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Select satellite" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Sky at a glance" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Time Controller" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Radio Control" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Antenna Control" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Configure" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Clone..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Delete" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Close" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Clone Module" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Name of new module:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Open module when created" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "If checked, the new module will be opened after it has been created" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Cloning %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Failed to clone %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Successfully cloned %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Cloning cancelled by user." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Cloning interrupted." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: Unknown module state: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "The sky at a glance (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "You have no radio configuration!\n" "Please configure a radio first." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Radio Control: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict Rotator Control: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Failed to delete %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s deleted permanently." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Time Controller for %s is already active" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Play forward" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Play backwards" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Reset" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Reset to current date and time" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Real-Time" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Use this control to set the hour" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Use this control to set the minutes" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Use this control to set the seconds" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Use this control to set the milliseconds" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "Throttle:" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "Time throttle / compression factor" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Time Controller for %s launched" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Time Controller for %s closed. Time reset." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Simulated Real-Time" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Manual Control" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Available Satellites" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Updated" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Failed to open %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Error reading satellite %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "%s:%s: Read %d satellites from %s" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Failed to read %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "All satellites" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "%s:%s: Failed to open satdata directory %s." #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "%s:%s: Read %d satellites into MAIN group." #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "%s: Error getting %dth satellite" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "Epoch" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Selected" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Expand" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "Expand all nodes in the tree to make it searchable" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Collapse" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Collapse all nodes in the tree" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Directory is: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: No .tle files found in %s." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "%s:%d: Read %d sats from %s " #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Failed to open %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satellite %d selected." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Satellite %d already selected; skip..." #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Satellite %d de-selected." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: Invalid GtkSatTree!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Satellite %d already selected; skip..." #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: There are no satellites selected => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "Right Asc." #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "SSP Lat." #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "SSP Lon." #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Loc." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Doppler@100M" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Sig. Loss" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Sig. Delay" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "Mean Anom." #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Orbit Num." #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Azimuth of the satellite" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Elevation of the satellite" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Direction of the satellite" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Right Ascension of the satellite" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Declination of the satellite" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "The range between satellite and observer" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "The rate at which the Slant Range changes" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "The time of next AOS or LOS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "The time of next AOS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "The time of next LOS" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Latitude of the sub-satellite point" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Longitude of the sub-satellite point" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Sub-Satellite Point as Maidenhead grid square" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Altitude of the satellite" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Tangential velocity of the satellite" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Signal loss @ 100MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Visibility of the satellite" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "%s:%d: Can not update invisible field (I:%d F:%d)" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: Can not update non-existing sat" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/A" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "%s:%d: Invalid field number (%d)" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "%s: Could not find satellite with catalogue number %d" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: Invalid GtkSingleSat!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Satellite options / shortcuts" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "%s::%s: Could not retrieve pass_t object" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "%s::%s: Showing pass details for %s - we may have a memory leak here" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Button %d has no function..." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "TIME" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "%s:%d: Colour index out of valid range (%d)" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: %s has %d passes within %.4f days\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "This module has no satellites!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Location" #: ../src/loc-tree.c:181 msgid "WX" msgstr "WX" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Select Location" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "%s: Selected %s" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: No location selected" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s does not exist!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "%s: Read %d cities." #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "%s: Failed to open locfile (%s)" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "%s: Invalid column: %d" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "%s: Failed to get parent for %s." #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "%s: No selection found!" #: ../src/main.c:60 msgid "just to have a pot" msgstr "just to have a pot" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "Option parsing failed: %s\n" #: ../src/main.c:131 #, fuzzy, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" "%s: User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir\n" "in your home directory" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "%s: Passed a non-null pointer which should never happen.\n" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "%s: Time threshold has been passed." #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "%s: Starting new update thread." #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "%s: Failed to create TLE update thread (%s)" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "%s: Could not find TLE monitoring task (ID = %d)" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Cleaning TLE data in %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Failed to delete %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: Removed %s" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "%s: Cleaning transponder data in %s" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "%s:%d: Could not stat %s" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Select Map" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Image files" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "%s: Starting new module configurator..." #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: New module name is %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "Could not open %s. Please examine the log messages for details." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: New module config cancelled." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s: Scanning directory %s for modules." #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "%s:%d: Failed to open module dir %s (%s)" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." #: ../src/menubar.c:335 msgid "Module" msgstr "Module" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Select a module" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: Selected module is: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "%s:%s: No selection is list of modules." #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "%s: Open existing module..." #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Open module %s." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Open module cancelled." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Finished" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "TLE Update" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Updating TLE files from network" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Select directory" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Select TLE directory:" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Update TLE from files" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: Running TLE update from %s" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Updating TLE files from files" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_New module" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Open module" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Log browser" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Updating TLE files from network" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Update TLE from files" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "No transponders" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Preferences" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_License" #: ../src/menubar.c:936 msgid "_News" msgstr "_News" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_About Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_File" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Edit" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Help" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "%s: Already have module %s. Ask user to confirm..." #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "There is already a module called %s.\n" "Do you want to overwrite this module?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "%s:%s: Could not fetch entry %d in satellite list" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "%s: Module has no QTH; use default." #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** DEFAULT **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "%s:%d: Failed to open user cfg dir %s (%s)" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Selected Satellites" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Select a ground station for this module." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Add a new ground station" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satellites" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Applied changes to %s." #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Error while saving module data (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: User tried to create module with no sats." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Please select at least one satellite from the list." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "%s: Attempt to save data to empty file name." #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "%s: Attempt to save NULL data." #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Failed to read boolean (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "%s: Failed to read integer (%s)" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "%s: Failed to read string (%s)" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "%s: Failed to get integer list: %s" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: Failed to restore %s" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: No modules have to be restored." #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "%s: Added %s to module manager (page %d)." #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "%s: Added %s to module manager (NOT DOCKED)." #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "%s: Module %s seems to be NULL" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "%s: Could not find child in notebook. This may hurt..." #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "%s: Removed child from notebook page %d." #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "%s: Attempt to save state but mod-mgr is NULL?" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "%s: No modules need to save state." #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "%s: Stored %s" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "%s: Saved states for %d modules." #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "%s: Module %s not found in list. Trying to recover." #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "%s: Module %s already in notebook!" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "%s: Docked %s into notebook (page %d)" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "%s: Module %s does not seem to be docked!" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "%s: Removed %s from notebook page %d." #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "%s: Attempt to reload sats but mod-mgr is NULL?" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "%s: No modules need to reload sats." #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Show details" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Polar plot" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "Az/El plot" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Time" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Az " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " El " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " Ra " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dec " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr " Rate " #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Lat " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lon " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr " SSP " #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Alt " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Vel " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr " Dop " #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr " Loss " #: ../src/pass-to-txt.c:55 msgid " Del " msgstr " Del " #: ../src/pass-to-txt.c:56 msgid " MA " msgstr " MA " #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr " Pha " #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr " AOS" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TCA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " LOS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Duration" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "Max El" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "AOS Az" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "Max El Az" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "LOS Az" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Local" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "%s: Found %d passes for %s in time window [%f;%f]" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "%s: Returning a pass for %s that starts after the seeded time." #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "%s: Returning a pass for %s that ends before the seeded time." #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Pass details for %s (orbit %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: Could not load data from %s (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: QTH data: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "%s: QTH has no location (%s)." #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "%s: QTH has no description." #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "%s: QTH has no weather station." #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "%s: Error reading QTH latitude (%s)." #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "%s: Error reading QTH longitude (%s)." #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "%s: Error reading QTH altitude (%s)." #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "%s: Error reading QTH type (%s)." #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "%s: QTH has no GPSD Server." #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "%s: Could not set QRA for %s at %f, %f." #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "%s: QTH data: %s, %.4f, %.4f, %d" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "%s: Could not open gpsd at %s:%d" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "%s: Unsupported gpsd api major version (%d)" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Error" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "%s: QTH data had bogus lat %f" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "%s: QTH data had bogus lon %f" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "%s:%s: %.2f %.2f => %s" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "%s:%d: Error converting lon/lat to locator" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "%s:%s: %s => %.2f %.2f" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "%s:%d: Invalid locator: %s" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Name" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Description" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "Enter an optional description for this ground station." #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "Optional location of the ground station, fx. Copenhagen, Denmark." #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Select" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Select the latitude of the ground station in decimal degrees." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "North" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "South" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Select the longitude of the ground station in decimal degrees." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "East" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "West" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Locator" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "Maidenhead locator grid." #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Weather St" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Four letter code for weather station" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "QTH Type" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "GPSD Server" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "GPSD Server." #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "GPSD Port" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "Set the port for GPSD to use. Default for gpsd is 2947." #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Edit ground station data" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "%s: NULL configuration name!" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: Could not load file %s\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "%s: Error reading radio conf from %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "%s: Read radio configuration %s" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "%s: Error reading rotor conf from %s (%s)." #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Error reading config file (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "%s: Using built-in defaults" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Everything OK." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Module not initialised\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "%s: Unknown BOOL param index (%d)\n" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "%s: Unknown STR param index (%d)\n" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "%s: Unknown INT param index (%d)\n" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "No transponders" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Uplink: %.4f MHz" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Downlink: %.4f MHz" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Inverting: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Mode: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Satellite name:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Operational Status:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Operational" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Non-operational" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Partially operational" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "Backup/Standby" #: ../src/sat-info.c:319 msgid "Spare" msgstr "Spare" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "Extended Mission" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Unknown" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Catalogue number:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "International designator:" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "Element set number:" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "Epoch time:" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "Orbit number @ epoch:" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inclination:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "RAAN:" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Eccentricity:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "Arg. of perigee:" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Mean anomaly:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "Mean motion:" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "1/6 d2/dt2 (mean motion):" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "B* drag term:" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Orbit Info" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transponders" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Satellite Info" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Time" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Level" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Message" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "NONE" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "WARNING" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "INFO" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "DEBUG" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "Log file is corrupt" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "%s:%d: Error open debug log (%s)" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Select Log File" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "Log Browser: %s" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Log Browser" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Errors" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Warnings" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Info" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Debug" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Total" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Summary " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr " WARN" #: ../src/sat-log.c:63 msgid " INFO" msgstr " INFO" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "ERROR: Could not create %s\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Session started" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Session ended" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Acquisition of signal (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "Time of Closest Approach (TCA)" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Loss of signal (LOS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Duration of pass" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Maximum elevation" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Azimuth at AOS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Az at max. elevation" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Azimuth at LOS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Orbit number" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Visibility during pass" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Data" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polar" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Az/El" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Upcoming passes for %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "%s: PRINT not implemented" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Preferences :: General" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "GPREDICT Preferences :: Modules" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Preferences :: Interfaces" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Preferences :: Predict" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "General" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Modules" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Interfaces" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Predict" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Gpredict Preferences :: General" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Reset settings to the default values." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Minimum elevation" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[deg]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Multiple Passes:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Number of passes to predict" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "The maximum number of passes to predict." #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Passes should occur within" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" "Only passes that occur within the specified number of days will be shown." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[days]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Pass Details:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Time resolution" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" "Gpredict will try to show the pass details with the specified time " "resolution." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[sec]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Number of entries" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Satellite Visibility:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Twilight threshold" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Always use real time for pass predictions" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Debug level:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Level 0: None" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Level 1: Error" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Level 2: Warning" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Level 3: Info" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Level 4: Debug" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" "Select the debug level. The higher the level, the more messages will be " "logged." #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Delete log files older than:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Always delete" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 day" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 week" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 month" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Select how often gpredict should delete old log files." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Display distances using Imperial units, for example miles instead of " "kilometres." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Show local time instead of UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Reset to default value" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Time format:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Use N/S/E/W for geographical coordinates." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Use Imperial units instead of Metric." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Number Formats" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Ground Stations" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Message Logs" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Radios" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Rotators" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "World map, polar and single sat" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "World map" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Table" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "World map and table" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Polar and single sat" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Polar and upcoming passes" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "All views (narrow)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "All views (wide)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Map, table, polar and single sat (wide)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Custom" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Select layout:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Layout code:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Window Placements:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Restore position of main window" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Restore position of module windows" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "Restore the state of modules when reopened (docked or window)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Reset module settings to the global values." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Visible Fields:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Background Map:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Select map" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Click to select a map" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Extra Contents:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH Info" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Show location information on the map" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Show which satellite comes up next and at what time" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Cursor Position" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Show the latitude and longitude of the mouse pointer" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Grid Lines" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Show horizontal and vertical grid lines" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "colours:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Ground Station:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Grid:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "Tick Labels:" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satellite:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Selected Sat.:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Ground Track:" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Area Coverage:" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "Info Text FG:" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "Info Text BG:" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Shadow:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "Display ground track for" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "orbit(s)" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Center map at longitude" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "Select longitude. West is negative." #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Layout" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Refresh Rates" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "List View" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Map View" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Polar View" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Single Sat View" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Visible Columns:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "%s:%s: Invalid chart orientation %d (using N/E/S/W)" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientation:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "%f:%d: Invalid PolarView orientation (%d)" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "Show location information on the polar plot" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Show which satellites comes up next and at what time" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Show the azimuth and elevation of the mouse pointer" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "Extra Az Ticks" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Background:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Click to select background colour" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "Axes/Circles:" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Click to select the axis colour" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "Click to select the colour for tick labels" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Click to select satellite colour" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Click to select colour for selected satellites" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "Sky Track:" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Click to select track colour" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Info Text:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Miscellaneous:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "Show the sky tracks automatically" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Pass Conditions" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Multiple Passes" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Single Pass" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "Sky at a Glance" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" "Alt\n" "(ft)" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" "Alt\n" "(m)" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Default" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" "GPSD\n" "Server" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" "GPSD\n" "Port" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" "QTH\n" "Type" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "%s:%d: Read QTH data from %s." #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "%s:%d: Error reading %s (see prev msg)" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "%s:%d: Failed to open user cfg dir (%s)" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "%s:%d: Failed to allocate memory!\n" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "%s:%d: Could not convert (%.2f,%.2f) to QRA." #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "%s:%d: QRA locator is %s" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "%s:%d: This appears to be the default QTH." #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Add a new ground station to the list" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Edit" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Empty ground station list!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "%s:%d: New default QTH is %s.qth." #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "%s:%d: Clearing default flag for %s." #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "%s:%d: %s appears to be default QTH" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d: Failed to remove %s" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "%s:%d: Removed %s" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Alt (ft)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Alt (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d: No ground station selected!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" "Select the altitude of the ground station in meters or feet depending on " "your settings" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Refresh data every" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[msec]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Refresh list view every" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[cycle]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Refresh map view every" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "Refresh polar view every" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "Refresh single-sat view every" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "%s:%d: Read %s" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "%s:%d: Failed to read %s" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "RX only" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "TX only" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "RX + TX" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "FT817/857/897 (auto)" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "FT817/857/897 (man)" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "PTT" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "DCD" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "%s:%s: Edit button should have been disabled." #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" "Select the radio you want to edit\n" "and try again!" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Config Name" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Host" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Port" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "Rig Type" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "PTT Status" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "VFO Up" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "VFO Down" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "LO Down" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "LO Up" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "%s:%s: Delete button should have been disabled." #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" "Select the radio you want to delete\n" "and try again!" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "Add a new radio to the list" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d: Failed to remove %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "%s: Failed to get RIG %s" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "Enter the port number where rigctld is listening" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "Radio type" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "Simplex TRX" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "Duplex TRX" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "FT817/857/897 (manual)" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "PTT status" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "Read PTT" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "Read DCD" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "VFO Up/Down" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "Not applicable" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" "Enter the frequency of the local oscillator of the downconverter, if any." #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "MHz" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" "Enter the frequency of the local oscillator of the upconverter, if any." #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "Edit radio configuration" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" "Select the rotator you want to edit\n" "and try again!" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" "Select the rotator you want to delete\n" "and try again!" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Add New" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Unknown (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "Min Az" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "Max Az" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "Min El" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "Azimuth Type" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "%s: Failed to get ROT %s" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "%s:%s: Invalid AZ rotator type." #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "Enter the port number where rotctld is listening. Default is 4533." #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "Az type" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr " Min Az" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr " Max Az" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr " Min El" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr " Max El" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "Edit rotator configuration" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Time:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Find and show passes that occur within" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "hours" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Select colour 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Click to select a colour" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Select colour 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Select colour 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Select colour 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Select colour 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Select colour 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Select colour 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Select colour 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Select colour 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Select colour 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Auto-Update:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "Check the age of TLE data:" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "If TLEs are too old:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Notify me" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Perform automatic update in the background" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Update from the Internet:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Proxy server:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Add new satellites to local database" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Visible" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "Daylight" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "Eclipsed" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Save Pass Details" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Save in folder:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Select a folder" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Save using file name:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "File contents:" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "Info+header+data" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "Header + data" #: ../src/save-pass.c:170 msgid "Data only" msgstr "Data only" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Save Passes" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Complete report" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Summary" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Invalid file format: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Could not create file %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Could not create file %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "%s: An error occurred while saving data to %s (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "An error occurred while saving data to %s\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: Written %d characters to %s" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "%s: NULL input data!" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "%s: NULL output storage!" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "%s: A TLE update process is already running. Aborting." #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Error opening directory %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "ERROR opening directory %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Reading data from %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "%s: No valid TLE data found in %s" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "%s: Read %d sats from %s into memory" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Updating data..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: Added %d new satellites to local database" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: TLE elements updated." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "%s: No files to fetch from network." #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "No files to fetch from network" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Fetching %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Error fetching %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: Successfully fetched %s" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Error fetching %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "%s: Failed to open %s preventing update" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: Fetched %d files from network; updating..." #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Error opening %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "%s:%s: There is no category in %s" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "%s:%s: There is no category called %s" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "%s:%s: Could not reopen .cat file while reading TLE from %s" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "%s:%s: Something wrote linesneeded to an illegal value %d" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "%s:%s: Processing a three line TLE" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "%s:%s: Processing a bare two line TLE" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: Invalid data for %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Failed to open %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "%s: No new TLE data found for %d. Satellite might be obsolete." #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Error loading %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "%s: Current TLE data for %d appears to be bad" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "%s: Data for %d updated for name." #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "%s: Data for %d updated for nickname." #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "%s: Data for %d updated for tle." #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "%s: Data for %d updated for operational status." #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Monthly" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Weekly" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Daily" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Error reading %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s contains 0 transponders" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Invalid VFO argument. Using VFOA." #~ msgid "Column Name" #~ msgstr "Column Name" #~ msgid "Row" #~ msgstr "Row" #~ msgid " Hour:" #~ msgstr " Hour:" #~ msgid " Min:" #~ msgstr " Min:" #~ msgid " Sec:" #~ msgstr " Sec:" #~ msgid " Msec:" #~ msgstr " Msec:" #~ msgid "Create a new module" #~ msgstr "Create a new module" #~ msgid "Open an existing module" #~ msgstr "Open an existing module" #~ msgid "Open the message log browser" #~ msgstr "Open the message log browser" #~ msgid "E_xit" #~ msgstr "E_xit" #~ msgid "Exit the program" #~ msgstr "Exit the program" #~ msgid "From _network" #~ msgstr "From _network" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Update Keplerian elements from a network server" #~ msgid "From l_ocal files" #~ msgstr "From l_ocal files" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Update Keplerian elements from local files" #~ msgid "Edit user preferences" #~ msgstr "Edit user preferences" #~ msgid "Show online user manual" #~ msgstr "Show online user manual" #~ msgid "Show the Gpredict license" #~ msgstr "Show the Gpredict license" #~ msgid "Show what's new in this release" #~ msgstr "Show what's new in this release" #~ msgid "Show about dialog" #~ msgstr "Show about dialog" #~ msgid "Failed to build menubar: %s" #~ msgstr "Failed to build menubar: %s" #~ msgid "Create New Module" #~ msgstr "Create New Module" #~ msgid "Edit Module" #~ msgstr "Edit Module" #~ msgid "Module Name" #~ msgstr "Module Name" #~ msgid "Ground Station" #~ msgstr "Ground Station" #~ msgid "Module Properties" #~ msgstr "Module Properties" #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (none)" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "Select a predefined location from a list." #~ msgstr "Select a predefined location from a list." #~ msgid "Select a predefined weather station from a list." #~ msgstr "Select a predefined weather station from a list." #~ msgid "Visible Columns" #~ msgstr "Visible Columns" #~ msgid "Enable rules hint in the list views" #~ msgstr "Enable rules hint in the list views" #~ msgid "" #~ "Enabling rules hint may make reading across many columns easier. By " #~ "default the satlist will be rendered with alternating colours, but the " #~ "exact behaviour is up to the theme engine." #~ msgstr "" #~ "Enabling rules hint may make reading across many columns easier. By " #~ "default the satlist will be rendered with alternating colours, but the " #~ "exact behaviour is up to the theme engine." #~ msgid "Click to select the grid colour" #~ msgstr "Click to select the grid colour" #~ msgid "Click to select ground track colour" #~ msgstr "Click to select ground track colour" #~ msgid "Colour for coverage Area (make it transparent)" #~ msgstr "colour for coverage Area (make it transparent)" #~ msgid "Click to select info text foreground colour" #~ msgstr "Click to select info text foreground colour" #~ msgid "Click to select info text background colour" #~ msgstr "Click to select info text background colour" #~ msgid "Edit the currently selected ground station" #~ msgstr "Edit the currently selected ground station" #~ msgid "Delete the selected ground station" #~ msgstr "Delete the selected ground station" #~ msgid "Edit the currently selected radio" #~ msgstr "Edit the currently selected radio" #~ msgid "Delete the selected radio" #~ msgstr "Delete the selected radio" #~ msgid "Add a new rotator to the list" #~ msgstr "Add a new rotator to the list" #~ msgid "Edit the currently selected rotator" #~ msgstr "Edit the currently selected rotator" #~ msgid "Delete the selected rotator" #~ msgstr "Delete the selected rotator" #~ msgid "Colour for satellite 1: " #~ msgstr "colour for satellite 1: " #~ msgid "Colour for satellite 2: " #~ msgstr "colour for satellite 2: " #~ msgid "Colour for satellite 3: " #~ msgstr "Colour for satellite 3: " #~ msgid "Colour for satellite 4: " #~ msgstr "Colour for satellite 4: " #~ msgid "Colour for satellite 5: " #~ msgstr "Colour for satellite 5: " #~ msgid "Colour for satellite 6: " #~ msgstr "Colour for satellite 6: " #~ msgid "Colour for satellite 7: " #~ msgstr "Colour for satellite 7: " #~ msgid "Colour for satellite 8: " #~ msgstr "Colour for satellite 8: " #~ msgid "Colour for satellite 9: " #~ msgstr "Colour for satellite 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Colour for satellite 10: " #~ msgid "Group" #~ msgstr "Group" #~ msgid "Search" #~ msgstr "Search" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Add satellite to list of selected satellites." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Remove satellite from the list of selected satellites." #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "Select a satellite group or category to narrow your search." #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgid "Online help" #~ msgstr "Online help" #~ msgid "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgstr "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgid "Strong" #~ msgstr "Strong" #~ msgid "Transparent" #~ msgstr "Transparent" #~ msgid "%s: %s rigctld returned error (%s)" #~ msgstr "%s: %s rigctld returned error (%s)" #~ msgid "Decay" #~ msgstr "Decay" #~ msgid "ft above sea level" #~ msgstr "ft above sea level" #~ msgid "m above sea level" #~ msgstr "m above sea level" gpredict/po/en_US.po000066400000000000000000003431561427377236300147000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2018-01-04 21:21+0000\n" "Last-Translator: Launchpad Translations Administrators \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "" #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "" #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "" #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "" #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "" #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "" #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "" #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr "" #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr "" #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr "" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 msgid "Update transponder data" msgstr "" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, c-format msgid "%s: Failed to remove %s" msgstr "" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, c-format msgid "%s: Error fetching %s (%x)" msgstr "" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" gpredict/po/es.po000066400000000000000000004466561427377236300143070ustar00rootroot00000000000000# Spanish translation for gpredict # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:53+0000\n" "Last-Translator: Monkey \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" "X-Poedit-Country: CUBA\n" "X-Poedit-Language: Spanish\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Adolfo Jayme https://launchpad.net/~fitojb\n" " Alexis Martínez https://launchpad.net/~alexismartinezfer\n" " DiegoJ https://launchpad.net/~diegojromerolopez\n" " Eduardo Alberto Calvo https://launchpad.net/~edu5800\n" " Fido https://launchpad.net/~fedevera\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Ing. Pavel Milanes Costa https://launchpad.net/~pavelmc\n" " Monkey https://launchpad.net/~monkey-libre\n" " Sergio Romero Aldana https://launchpad.net/~sangtrinkulo" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: No se pudo abrir %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Encontrado al menos un archivo .qth." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Fallo al copiar sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Se ha copiado sample.qth a %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Comprobación exitosa." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Falló la comprobación. Creando %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Falló al crear %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: %s Creado." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Falló al copiar Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: amateur.mod copiado a %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Error al cargar datos de %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: encontró %d satélites en %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat ya existe. Omitido." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Escrito el nuevo satélite %d a la configuración del usuario" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Imposible abrir %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Error al copiar %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Copiado satisfactoriamente %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Error al cargar %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Error de lectura %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Información de Gpredict" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s llamada con color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s:%s llamada con alfa = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s llamada con rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s llamada con rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: No puedo crear los datos de configuración (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: No puedo crear el fichero de configuración (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Error escribiendo los datos de configuración (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Escritos solamente %d de %d caracteres." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Configuración guardada para %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Hora local:" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satélite" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "NumCatag" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Nombre del satélite" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Número de catálogo" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimuth" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevación" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Fallo al obtener datos para #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satélite #%d eliminado de la lista." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "PDS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "ADS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Nunca" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: FIXME No estoy implementado" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Fallo al obtener datos para %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "%s:%d: No hay nada seleccionado; saltando el aviso." #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Use los botones y la rueda del ratón para cambiar el valor" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Incorrecta orientación del diagrama polar." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "E" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "O" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: No se encontró el satélite (%d) en la tabla hash" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" "%s:%d: No se puede encontrar el objeto al que se hizo click (%d) en la tabla " "de hash" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Siguiente: %s\n" "en %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Siguiente: %s\n" "en %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: No se pudo encontrar el SIGUIENTE satélite." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Siguiente: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Siguiente: N/D" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Siempre en rango" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Fallo al obtener el pase del satélite." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: error al obtener el objeto satélite." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Rastreo en el cielo" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "ADS en" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "PSD en" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Enlace de descarga " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "El corrimiento Doppler de acuerdo a la tasa de acercamiento y la frecuencia " "de bajada seleccionada actualmente" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "OL" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Subida " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule no tiene un satélite asignado." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: El satélite %d tiene %d modos de transpondedor." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: error al abrir la carpeta hwconf (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Selección de satélite inválida: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" "%s: Se ha detectado inconsistencias en los datos internos de transpondedor " "(%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Dispositivo primario seleccionado: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Error al asignar memoria para la configuración de la radio" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Cargada la configuración nueva de la radio %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Falló la carga de la configuración del radio %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Dispositivo secundario seleccionado: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Error al asignar memoria para la configuración de la radio" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: El controlador no tiene una configuración válida" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Seleccione el elemento objetivo" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Pista" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Seleccione un transpondedor" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Sintonice el radio a este transpondedor. La subida y la bajada serán puestas " "al centro del ancho de banda del transpondedor. En el caso de los " "radiofaros, solo la bajada será sintonizada a la frecuencia del radiofaro." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Casar la subida con la bajada. Cuando cambies la bajada (en el controlador o " "en el dial del radio) la subida se calculará en la frecuencia correcta para " "transmitir, respetando si el transpondedor es invertido o no. De manera " "similar si cambias la subida, la bajada la seguirá para estar en al " "frecuencia correcta.\n" "\n" "Si la subida y la bajada están inicialmente fuera de sincronía cuando " "habilites esta función, la frecuencia actual de la bajada será usada para " "calcular la subida de forma automática." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Ac:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Rango:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Esta es la distancia actual entre el satélite y el observador." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Rango:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "La tasa de cambio para la distancia entre el observador y el satélite." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Objetivo" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Error leyendo la configuración del radio %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Dispositivo:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Selecciona el dispositivo de radio principal. Este dispositivo será usado " "para la bajada y la subida a menos que selecciones un dispositivo secundario " "para la subida." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Dispositivo:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Seleccione el dispositivo secundario de radio\n" "Este dispositivo será usado para la subuda" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Ninguno" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Enlazado" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Enlazado el dispositivo de radio seleccionado" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Ciclo:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" "Este parámetro controla el retraso entre los comandos enviados al radio." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msec" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Preferencias" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: SIZE ERROR %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Obtenidos 0 bytes de rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Leidos %d bytes de rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s perdida la linea final" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: Almacenamiento NULO" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: Logrado el bloqueo del controlador" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" "%s: Controlador no enlazado; evento PTT ignorado (Consejo: Habilita el botón " "de enlace)" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT está OFF => Pon la frecuencia de TX y PTT=ON" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT está ON = Pon PTT=OFF" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" "%s: Fallo al adquirir el bloqueo del controlador; eventos de PTT no manejados" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Detectado el evento de presionado de SPACEBAR" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: El valor de la tecla presionada %i no se maneja en esta función" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Fallo el crear el socket" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Socket de red creado satisfactoriamente" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Fallo al conectarse a %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Conexión abierta a %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Obtenidos 0 bytes desde rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Leer:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Leer: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ERROR" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: Alcanzado MAX_ERROR_COUNT (%d). Desenlazando el dispositivo!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" "]][[[o7uhtddsw %s:%d: Fallo al asignar espacio de memoria para la " "configuración del rotor" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Cargada nueva configuración del rotor %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Fallo al cargar la configuración del rotor %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Rastrear el satélite cuando está en rango" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Dispositivo:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Selecciona el dispositivo rotor de antena" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Enlaza el dispositivo de rotor seleccionado" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Este parámetro controla el retraso entre los comandos enviados al rotor" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolerancia:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Este parámetro controla la tolerancia entre el valor objetivo y el valor " "real del rotor.\n" "Si la diferencia entre el valor objetivo y el valor real del rotoren menor " "que esta tolerancia, no se envían más comandos al rotor" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "grad" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Error leyendo NAME desde %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Satélite %d no tiene NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: Los datos de keplerianos para %d parecen estar corruptos" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Dir" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dec" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Rango" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Rango" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Próximo Evento" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Próxima ADS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Próxima PDS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Lat" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Lon" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Pisada" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Alt" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Vel" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Pérdidas" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Del" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Fase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbita" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Vis" #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "Estado del PTT" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Dirección" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Ascención Recta" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Declinación" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Rango de inclinación" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "Intervalo de frecuencia" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Latitud" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Longitud" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Pisada" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Altitud" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Velocidad" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Corrimiento Doppler a 100Mhz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Pérdida de señal a 100Mhz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Retraso de la Señal" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Fase Orbital" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Número de Órbita" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Visibilidad" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Estado operacional:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: GtkSatList no válida!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Columna no válida: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Siguiente: %s en %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Siguiente: %s en %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Cargando el fichero de mapa %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Fichero de mapa encontrado" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: No se ha encontrado el fichero de mapa %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Usando el mapa por defecto: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Error cargando el fichero de mapa (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "PDS en %d minutos" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "ADS en %d minutos" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Creando la pista de tierra para %s" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Comenzada órbita: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: Fin de órbita: %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "%s: T0: %f (%d)" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "%s: MAYDAY: Insuficiente memoria para la pista sobre tierra!" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Actualizando la pista sobre tierra para %s" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Borrando la pista de tierra para %s" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "%s: No se puede encontrar la parte %d de la pista sobre tierra" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Resaltar la pisada" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Pista sobre tierra" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Establecer objetivo" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "%s:%d: Tipo de hijo no válido (%d). Usando GtkSatList." #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: El diseño tiene %d columnas y %d filas." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Fallo al obtener la lista de satélites (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Error leyendo datos para #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "%s: Leer datos para #%d" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Satélite #%d ya está en la lista" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: Leídos %d de %d satélites" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: No se puede cargar los datos de configuración desde %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Leyendo configuración desde %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" "%s: No puedo cargar el fichero de QTH por defecto %s; usando los datos " "preestablecidos" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "%s: El diseño del módulono es válido: %s. Usando el predefinido." #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "%s: GRID(%d): %s" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Modulo %s no es válido." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Modulo %s tiene problemas." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Opciones de Módulo / atajos" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Cerrar este módulo." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Módulo %s está en estado DOCKED." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" "%s: El módulo %s no fue encontrado en mod-mgr (%d)\n" "El estado interno es corrupto?" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "%s: El módulo %s está en estado WINDOW." #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "%s: El módulo %s está en estado FULLSCREEN." #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: El módulo %s tiene un estado desconocido: %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: El módulo %s se ha cerrado." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" "%s: No puedo parar la llamada de timeout\n" "%s: El ID %d parece no válido." #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: La configuración del módulo falló por alguna razón." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Recargando satélites para el módulo %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s llamado con parámetro NULO!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Desacoplar módulo" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Acoplar módulo" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Salir de pantalla completa" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Pantalla completa" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Seleccionar satélite" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "El Cielo a Simple Vista" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Controlador de tiempo" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Control del radio" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Control de la antena" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Configurar" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Clonar..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Eliminar" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Cerrar" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "El módulo no puede ser configurado cuando el controlador del radio o del " "rotor está activo.\n" "\n" "Por favor cierre el controlador del radio y del rotor e intentelo nuevamente." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Clonar módulo" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Nombre del nuevo módulo:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Entre un mombre corto para este módulo.\n" "Caracteres permitidos: 0..9, a..z, A..Z, - y _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Abrir el módulo tras crearlo" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" "Si se marca, el nuevo módulo será abierto después de que halla sido creado" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Clonando %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Fallo al clonar %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Clonado satisfactoriamente %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Clonación cancelada por el usuario." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Clonación interrumpida." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: Estado desconocido del módulo: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "El cielo a simple vista (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "No tiene un radio configurado!\n" "Por favor configura un radio primero." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Control del Radio: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "No tiene un rotor configurado!\n" "Por favor configura primero un rotor de antena." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict Control del Rotor: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Esta operación borrará permanentemente\n" "%s\n" "Aún quieres proceder?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Fallo al eliminar %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s eliminado permanentemente." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: El controlador de tiempo para %s está todavía activo" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Hacia adelante" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Detener" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Hacia detrás" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Reiniciar" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Restablecer a la fecha y hora actual" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Tiempo Real" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Use este control para poner la hora" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Use este control para poner los minutos" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Use este control para poner los segundos" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Use este control para poner los milisegundos" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "Marchando:" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "Factor de Marcha / Compresión de tiempo" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Controlador de tiempo para %s lanzado" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Controlador de tiempo para %s cerrado. Tiempo restablecido." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Tiempo Real Simulado" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Control Manual" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Satélites disponibles" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Actualizado" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Falló al abrir %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Error leyendo el satélite %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "%s:%s: Leídos %d satélites desde %s" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Fallo al leer %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Todos los satélites" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "%s:%s: Fallo al abrir el directorio satdata %s." #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "%s:%s: Leidos %d satélites en el grupo MAIN." #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "%s: Error obteniendo el %d satélite" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Seleccionado" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Expandir" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "Expande todos los nodos en el árbol para hacerlo buscable" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Colapsar" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Colapsar todos los nodos en el árbol" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Directorio es: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: No se encontraron ficheros .tle es %s." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "%s:%d: Leídos %d satélites desde %s " #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Fallo al abrir %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satélite %d seleccionado." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Satélite %d seleccionado de antemano; saltando..." #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Satélite %d de-seleccionado." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: GtkSatTree no válido!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Satélite %d ya está seleccionado; saltándolo..." #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: No hay satélites seleccionados => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "Ascensión Recta" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "PSS Lat." #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "PSS Lon." #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "PSS Loc." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Doppler@100M" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Pérdidas de señal" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Atraso de la señal" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "Anomalía media" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Número de Órbita" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Acimut del satélite" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Elevación del satélite" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Dirección del satélite" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Ascensión recta del satélite" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Declinación del satélite" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "La distancia entre el satélite y el observador" # slan range =? distancia de inclinación?, rango de inclinación? #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "La tasa a la cual el rango del inclinación cambia" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Fecha del próximo ADS o PDS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Fecha de la próxima ADS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Fecha de la próxima PDS" # Que es el punto de sub-satélite? #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Latitud del punto de sub-satélite" # Que es el punto de sub-satélite? #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Longitud del punto de sub-satélite" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Punto de sub-satélite como 'grid locator' principal" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" # Altitud o altura? #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Altitud del satélite" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Velocidad tangencial del satélite" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Pérdida de señal a 100Mhz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Visibilidad del satélite" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "%s:%d: No puedo actualizar el campo invisible (I:%d F:%d)" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: No puedo actualizar un satélite inexistente" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/D" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "%s:%d: Número de campo inválido (%d)" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: GtkSingleSat no válido!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Opciones o atajos del satélite" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "%s::%s: No puedo recuperar el objeti pass_t" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: El botón %d no tiene función asignada.." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "TIME" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "%s:%d: Índice de color fuera del rango válido (%d)" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: %s tiene %d pases en los pŕoximos %.4f días\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Este módulo no tien satélites!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Ubicación" #: ../src/loc-tree.c:181 msgid "WX" msgstr "WX" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Seleccionar Ubicación" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "%s: Seleccionado %s" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: No hay una locación seleccionada" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s no existe!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "%s: Leídas %d ciudades." #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "%s: Columna no válida: %d" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "%s: Fallo al obtener el padre para %s." #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "%s: No se ha encontrado la selección!" #: ../src/main.c:60 msgid "just to have a pot" msgstr "solo para tener un diagrama" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict es un programa gráfico de rastreo de satélites y predicciones de " "órbitas en tiempo real.\n" "Gpredict no requiere ninguna opción en al línea de comandos para la " "operación normal." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "Procesamiento de la opción fallida: %s\n" #: ../src/main.c:131 #, fuzzy, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" "%s: Chequeo de las configuraciones del usuario fallida (código %d). Esto es " "fatal.\n" "Una posible solución puede ser remover el directorio de datos ./config/" "Gpredict\n" "de tu directorio personal (home)" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "%s: El límite de tiempo ha sido alcanzado." #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "%s: Iniciando un nuevo hilo de actualización." #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "%s: Fallo al crear el hilo de actualización de los TLE (%s)" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "Tus datos TLE están caducando.\n" "Puedes actualizarlos seleccionando\n" "Editar -> Actualizar TLE\n" "En al barra de menú" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "%s: No pude encontrar la tarea de monitoreo de los TLE (ID = %d)" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Limpiando los datos de los TLE en %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Fallo al eliminar %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: Eliminado %s" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "%s: Limpiando datos del transpondedor en %s" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Selecciona el mapa" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Archivos de imagen" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "%s: Iniciando el configurador de un módulo nuevo..." #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: El nombre del nuevo módulo es %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" "No puedo abrir %s. Por favor examina los mensajes de log para más detalles." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: Configuración del nuevo módulo cancelada." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s: Buscando módulos en el directorio %s" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "%s:%d: Fallo al abrir el direcotrio de módulos %s (%s)" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "No tienes ningun módulo para configurar todavía. Por favor usa Ficheros-" ">Nuevo para crear un módulo." #: ../src/menubar.c:335 msgid "Module" msgstr "Módulo" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Seleccionar un módulo" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: El módulo seleccionado es: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "%s:%s: Ninguna selección es un listado de módulos" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "%s: Módulo existente abierto..." #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Abrir módulo %s." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Cancelada la apertura del módulo." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Finalizado" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Actualizar los TLE" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Actualizando los ficheros TLE desde la red (internet)" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Satélites actualizados:\t 0\n" "Satélites ignorados:\t 0\n" "Satélites perdidos:\t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Seleccionar directorio" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Seleccione el directorio de los TLE:" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Actualice los TLE desde ficheros locales" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: Ejecutando la actualización de los TLE desde %s" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Actualizando los ficheros TLE desde ficheros locales" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Un manual de usuario y video tutoriales\n" "están disponibles el el sitio web de \n" "Gpredict:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Nuevo módulo" #: ../src/menubar.c:856 msgid "_Open module" msgstr "Abrir Módulo" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Actualizando los ficheros TLE desde la red (internet)" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Actualice los TLE desde ficheros locales" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Sin traspondedores" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Preferencias" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Licencia" #: ../src/menubar.c:936 msgid "_News" msgstr "_Noticias" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_Acerca de Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "Archivo" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Editar" #: ../src/menubar.c:975 msgid "_Help" msgstr "Ayuda" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "%s: Ya tengo el módulo %s. Pedir la confirmación al usuario..." #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "Ya existe un módulo llamado %s.\n" "Quieres sobre escribir este módulo?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "%s:%s: No se puede obtenet la entrada %d en la lista de satélites" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "%s: El módulo no tiene QTH; usando el predeterminado." #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** PREDETERMINADO **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" "%s:%d: Falo al abrir del directorio de configuración del usuario %s (%s)" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Satélites seleccionados" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Seleccione una estación terrestre para este módulo." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Adicionar una nueva estación terrestre" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satélites" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Cambios aplicados a %s." #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Error al salvar los datos del módulo (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: El usuario trató de crear un módulos sin satélites." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Por favor selecciones al menos un satélite de la lista." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "%s: Intento de salvar datos a un fichero sin nombre." #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "%s: Intento de salvar datos NULOS." #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Fallo al leer el boleano (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "%s: Fallo al leer el entero (%s)" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "%s: Fallo al leer la cadena (%s)" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: Fallo al restablecer %s" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: Ningún módulo tiene que ser restablecido." #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "%s: Módulo %s parece ser NULO" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "%s: No puedo encontrar el hijo en las anotaciones. Esto puede doler..." #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "%s: Eliminado del hijo de las anotaciones, página %d." #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "%s: Intentado salvar el estado pero mod-mgr es NULO?" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "%s: Ningun módulo necesita salvar el estado." #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "%s: Almacenado %s" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "%s: Salvando estados de los modulos %d." #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "%s: Módulo %s no se encuentra en la lista. Tratando de recuperar." #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "%s: Módulo %s ya se encuentra anotado." #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "%s: Acoplado %s a las anotaciones (página %d)" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "%s: Módulo %s no parece estar acoplado." #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "%s: Eliminando %s de la anotaciones, página %d." #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "%s: mod-mgr devolvió NULL tratando de recargar los satélites?" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "%s: Ningún módulo necesita recargar los satélites." #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Mostrar detalles" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Diagrama polar" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "Diagrama Ac/El" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Tiempo" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Ac " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " El " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " Ra " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dec " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr " Tasa " #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Lat " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lon " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr " PSS " #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Alt " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Vel " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr " Dop " #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr " Pérd " #: ../src/pass-to-txt.c:55 msgid " Del " msgstr " Ret " #: ../src/pass-to-txt.c:56 msgid " MA " msgstr " AM " #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr " Fase " #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr " ADS" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TMA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " PDS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Duración" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "Elev Máx" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "ADS Ac" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "Elev Máx Az" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "PDS Az" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Local" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Detalles del pase para %s (órbita %d)\n" "Observador: %s, %s\n" "LAT:%.2f LON:%.2f\n" "ADS: %s %s\n" "PDS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Pases venideros para %s\n" "Observador: %s, %s\n" "LAT:%.2f LON:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "%s: Encontrados %d pases para %s en la ventana de tiempo [%f;%f]" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Detalles del pase para %s (órbita %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: No puedo cargar datos desde %s (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: Datos del QTH: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "%s: El QTH no tiene descripción." #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "%s: El QTH no tiene estación meteorológica." #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "%s: Error leyendo la latitud del QTH (%s)." #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "%s: Error leyendo la longitud del QTH (%s)." #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "%s: Error leyendo la altitud del QTH (%s)." #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "%s: Datos del QTH: %s, %.4f, %.4f, %d" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Error" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" "%s:%d: Cargados %s para editar:\n" "LAT:%.2f LON:%.2f ALT:%d" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "%s:%s: %.2f %.2f => %s" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "%s:%d: Error convirtiendo long/lat a grid locator" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "%s:%s: %s => %.2f %.2f" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "%s:%d: Grid Locator no válido: %s" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Nombre" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Entre un nombre corto para esta estación de tierra,\n" "por ejemplo un indicativo. Caracteres permitidos: 0..9,\n" "a..z, A..Z, - y _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Descripción" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "Entre una descripción opcional para esta estación de tierra." #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" "Locación opcional de la estación de tierra, por ejemplo, Camagüey, Cuba." #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Seleccionar" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Selecciona la latitud de la estación de tierra en grados decimales." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Norte" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Sur" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Selecciona la longitud de la estación de tierra en grados decimales." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Este" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Oeste" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Grid Locator" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "Grid locator principal" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Estación Meteorológica" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Código de cuatro letras para la Estación Meteorológica" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Editar lso datos de la estación de tierra" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "Ha ocurrido un error al intentar\n" "salvar los datos de la estación\n" "de tierra %s.qth!\n" "Por favor intentelo con otro nombre." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "%s: Nombre de configuración no válido!" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: No puedo cargar el fichero %s\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "%s: Error leyendo la configuración del radio desde %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "%s: Leer configuración del radio %s" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "%s: Error leyendo la configuración del rotor desde %s (%s)." #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Error leyendo el fichero de configuración (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "%s: Usando valores por defecto" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Todo está OK." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Módulo no inicializado\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Sin traspondedores" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Subida: %.4f MHz" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Bajada: %.4f MHz" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Invirtiendo: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Modo: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Nombre del satélite:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Estado operacional:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Operacional" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "No-operacional" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Parcialmente operacional" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Desconocido" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Número de catálogo:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inclinación:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Excentricidad:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Anomalía media:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "Movimiento medio:" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Información de la órbita" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Traspondedores" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Información del satélite" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Tiempo" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Nivel" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Mensaje" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "NADA" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "WARNING" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "INFO" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "DEBUG" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "El archivo de reportes está corrupto" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "%s:%d: Error abriendo log de debug (%s)" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Seleccione el fichero de log" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Visor de Logs" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Errores" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Avisos" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Info" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Depuración" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Total" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Resumen " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr " INFO" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "ERROR: No puedo crear %s\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "ERROR: Fallo al crear %s\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Sesión iniciada" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Sesión finalizada" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TMA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "Tiempo de máximo acercamiento (TMA)" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Pérdida de la señal (PDS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Duración del pase" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Elevación máxima" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Acimut en ADS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Ac. a la máxima elevación" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Acimut en PDS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Número de órbita" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Visibilidad durante el pase" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Datos" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polar" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Ac/Elev" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Pases venideros para %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "%s: PRINT no implementado" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Preferencias :: General" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "GPREDICT Preferencias :: Módulos" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Preferencias :: Interfaces" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Preferencias :: Predecir" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "General" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Módulos" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Interfaces" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Predecir" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Gpredict Preferencias :: General" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Restablecer las preferencias a sus valores por defecto" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Elevación mínima" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Límite de elevación para los pases\n" "Pases con máxima elevación por debajo de este valor se omitiran" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[grad]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Pases múltiples:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Número de pases a pronosticar" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "El número máximo de pases a ponosticar" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Los pases deben ocurrir entre" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "Se mostrarán solo los pases que ocurran en los días espacificados." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[días]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Detalles del pase" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Resolución en el tiempo" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" "Gpredict intentará mostrar los detalles del pase con la resolución " "especificada" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[seg]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Número de entradas" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" "Gpredict intentará mantener el número de filas en sobre este número para los " "pronósticos detallados" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Visibilidad del satélite:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Límite crepuscular" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Siempre usar el tiempo real para los pronósticos" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Marca esta casilla si quieres que Gpredict use siempre el tiempo real actual " "para pronosticar los pases futuros.\n" "Si no la marcas y el controlador de tiempo está activo, Gpredict usará el " "tiempo del controlador (que puede no ser el real) para pronosticar los pases." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Nivel de depuración:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Nivel 0: Ninguno" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Nivel 1: Error" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Nivel 2: Advertencia" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Nivel 3:Info" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Nivel 4: Depurar" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" "Seleccione el nivel de depuración. En el nivel más alto, más mensajes seran " "reportados." #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Borrar ficheros de logs mas viejos que:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Borrar siempre" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 día" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 semana" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 mes" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Selecciona cuan seguido Gpredict debe borrar los logs." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" "Mostrar la hora local en ves de UTC. Nota: la hora local es la que usa tu " "sistema operativo base y no la que usas localmente en tu uso horario (GNU/" "Linux usa el reloj interno en UTC)" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Entre una cadena de formato usando los códigos siguientes:\n" "\n" "\t%Y\tAño con siglo (como 2010).\n" "\t%m\tMes (01-12).\n" "\t%d\tDía del mes(01-31).\n" "\t%j\tDía del año(001-366).\n" "\t%H\tHora (00-23).\n" "\t%M\tMinutos (00-59).\n" "\t%S\tSegundos (00-59).\n" "\n" "Busca en el manual para más códigos y ejemplos." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Mostrar unidades de distancia en unidades, o sea en millas en ves de " "kilometros." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Mostrar hora local en ves de UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Restablecer al valor por defecto" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Formato de hora:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Usar N/S/E/W para las coordenadas geogáficas." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Usar unidades imperiales en ves de métricas." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Formatos de número" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Estaciones Terrestres" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Log de Mensajes" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Radios" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Rotores" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "Mapa Mundial, polar y satélite simple" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Mapa mundial" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Tabla" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Mapa mundial y tabla" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Polar y satélite simple" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Polar y pases venideros" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "Todas las vistas (estrecho)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Todas las vistas (ancho)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Mapa, tabla, polar y satélite simple (ancho)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Personalizado" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Selecciones disposición:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Código de la disposición:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "Esta entrada mantiene el código de disposición para el módulo.\n" "Consulta el manual para ver como crear disposiciones personalizadas usando " "códigos." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Posición de las ventanas:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Restaurar la posición de la ventana principal" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "Si marcas aquí, Gpredict tratará de mantener las ventanas en la posición de " "la ultima sesión.\n" "Ten en cuenta que los administradores de ventanas pueden ignorar este pedido." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Restablecer la posición de las ventanas de módulos" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "Si marcas este botón Gpredict intentará posicionar la ventana del módulo " "donde estaba la última vez.\n" "Ten en cuenta que los administradores de ventana pueden ignorar esta orden." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" "Restablecer el estado de los módulos cuando de recerguen (acoplados o como " "ventana)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "Si marcas este botón Gpredict intentará restablecer el estado de los módulos " "al último utilizado." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Restablecer las configuraciones del módulo a los valores globales." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Campos Visibles:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Mapa de Fondo:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Selecciona un mapa" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Click para seleccionar un mapa" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Contenidos Extra:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH Info" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Mostrar información de la locación en el mapa" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Mostrar que satélite viene a continuación y a que hora" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Posición del Cursor" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Mostrar la latitud y longitud del puntero del ratón" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Líneas Guía" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Mostrar líneas guía verticales y horizontales" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Colores:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Estación Terrestre:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Cuadrícula:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "Etiquetas de Marcas:" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satélite:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Satélite Seleccionado:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Pista Terrestre:" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Área de Cobertura:" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "Téxto de Información (Frente):" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "Téxto de Información (Fondo:)" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Sombra:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "Mostrar la pista terrestre para" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "órbita(s)" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Centrar mapa en longitud" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Disposición" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Tasas de actualización" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Ver en lista" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Vista de Mapa" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Vista Polar" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Vista de Satélite Simple" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Columnas Visibles:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "%s:%s: Orientación inválida de la cartilla %d (usando N/E/S/W)" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientación:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "%f:%d: Orientación no válida de la Vista Polar (%d)" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "Mostrar información de la localización en el diagrama polar" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Mostrar que satélites vienen a continuación y a que hora" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Mostrar el acimut y elevación del puntero del ratón" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "Marcas extra en Acimut" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Fondo:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Click para seleccionar el color del fondo" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "Ejes/Circulos:" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Click para seleccionar el color de los ejes" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "Click para seleccionar el color de la etiquetas de las marcas" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Click para seleccionar el color del satélite" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Click para seleccionar el color de los satélites seleccionados." #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Click para seleccionar el color de la pista" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Texto de Información:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Miscelaneo:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "Mostrar la pista en el cielo automáticamente" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" "Mostrar automáticamente la pista en el cielo del satélite cuando está al " "alcance. Siempre puedes apagar la muestra para cada objeto individual" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Condiciones del Pase" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Pases Múltiples" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Pase Simple" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "El cielo a simple vista" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Predefinido" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "%s:%d: Leer datos del QTH desde %s." #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "%s:%d: Error leyendo %s (ver mensaje previo)" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "%s:%d: Fallo al abrir el directorio de configuración del usuario (%s)" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "%s:%d: Fllo al !\n" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "%s:%d: No puedo convertir (%.2f,%.2f) a QRA." #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "%s:%d: Locator del QRA es %s" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "%s:%d: Este parece ser el QTH por defecto." #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Añadir una nueva estación terrestre a la lista" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Editar" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "No puedo eliminar la estación terrestre!\n" "\n" "Necesitas tener almenos una estación\n" "terrestre configurada, o gpredict podría\n" "o funcionar correctamente." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Lista de estaciones terrestres vacía!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" "%s:%d: El QTH por defecto no puede ser eliminado! Seleccione otro QTH y " "ponlo por defecto antes de eliminar este." #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "%s:%d: El nuevo QTH por defecto es %s.qth." #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "%s:%d: Limpiando la bandera por defecto para %s." #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "%s:%d: %s parece ser el QTH por defecto" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Alt (pies)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Alt (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" "Selecciona la altitud de la estación terrestre en metros o pies dependiendo " "de tu configuración." #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Refrescar datos cada" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[msec]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Refrescar vista de lista cada" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[ciclo]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Refrescar vista de mapa cada" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "Refrescar vista polar cada" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "Refrescar vista de un solo satélite cada" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "Solo RX" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "Solo TX" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "RX + TX" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "FT817/857/897 (auto)" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "FT817/857/897 (man)" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "PTT" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "DCD" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "%s:%s: El botón de editar debió ser deshabilitado" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Nombre de Config" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Host" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Puerto" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "Tipo de Radio" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "Estado del PTT" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "VFO Arriba" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "VFO Abajo" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "LO Abajo" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "LO Arriba" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "Añadir un nuevo radio a la lista" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: Fallo al restablecer %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "%s: Fallo al obtener RIG %s" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Introduce un nombre corto para esta configuración, ejemp. IC910-1.\n" "Caracteres permitidos: 0..9, a..z, A..Z, - y _" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" "Entra el host donde está corriendo rigctld. Puedes usar un nombre o un IP\n" "\n" "Si gpredict y rigctld corren en la misma PC use: localhost" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "Entra el número del puerto donde escucha rigctld" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "Tipo de radio" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "Simplex TRX" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "Duplex TRX" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "FT817/857/897 (manual)" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "Estado del PTT" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "Leer PTT" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "Leer DCD" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "VFO Arriba/Abajo" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "Editar configuración del radio" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Añadir Nuevo" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" "Los pases mostrados en el diagrama El cielo a Simple Vista\n" "se mostrarán para este intervalo de horas." #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "horas" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Seleccione el color 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Click para seleccionar un color" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Seleccione el color 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Seleccione el color 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Seleccione el color 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Seleccione el color 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Seleccione el color 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Seleccione el color 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Seleccione el color 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Seleccione el color 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Seleccione el color 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Auto-Actualizar:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Sí los TLEs son muy viejos:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Notificarme" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Actualizar automáticamente en segundo plano" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Actualizar desde internet:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Servidor proxy:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Agregar nuevos satélites a la base de datos local" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Visible" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Guardar detalles de la pasada" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Guardar en carpeta:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Seleccione una carpeta" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Guardar usando este nombre de archivo:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "Contenido del archivo:" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Guardas Pasadas" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Informe completo" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Resumen" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Formato de archivo inválido: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: No se pudo crear el archivo %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "No se pudo crear el archivo %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "%s: Ha ocurrido un error mientras se guardaban los datos en %s (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "Ha ocurrido un error mientras se guardaban los datos en %s\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: Se escribieron %d caracteres en %s" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Error abriendo el directorio %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "ERROR Abriendo el directorio %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Leyendo datos desde %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Actualizando datos..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: Se agregaron %d nuevos satélites a la base de datos local" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Error de lectura %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "%s:%s: No hay categoría en %s" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "%s:%s: No hay categoría llamada %s" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: dato no válido para %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: fallo al abrir %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Error al cargar %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Mensualmente" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Semanalmente" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Diariamente" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Error leyendo %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s contiene 0 transpondedores" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Column Name" #~ msgstr "Nombre de columna" #~ msgid "Row" #~ msgstr "Fila" #~ msgid " Hour:" #~ msgstr " Hora:" #~ msgid " Min:" #~ msgstr " Min:" #~ msgid " Sec:" #~ msgstr " Seg:" #~ msgid " Msec:" #~ msgstr " Mseg:" #~ msgid "Search" #~ msgstr "Buscar" #~ msgid "Group" #~ msgstr "Grupo" #~ msgid "Create a new module" #~ msgstr "Crear un nuevo módulo" #~ msgid "Open an existing module" #~ msgstr "Abrir un módulo existente" #~ msgid "E_xit" #~ msgstr "Salir" #~ msgid "Exit the program" #~ msgstr "Salir del programa" #~ msgid "Show online user manual" #~ msgstr "Mostrar el manual de usuario en línea" #~ msgid "Create New Module" #~ msgstr "Crear un nuevo módulo" #~ msgid "Edit Module" #~ msgstr "Editar módulo" #~ msgid "Module Name" #~ msgstr "Nombre del módulo" #~ msgid "Ground Station" #~ msgstr "Estación Terrena" #~ msgid "Module Properties" #~ msgstr "Propiedades del módulo" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "Colour for satellite 1: " #~ msgstr "Color del satélite 1: " #~ msgid "Colour for satellite 2: " #~ msgstr "Color del satélite 2: " #~ msgid "Colour for satellite 3: " #~ msgstr "Color del satélite 3: " #~ msgid "Colour for satellite 4: " #~ msgstr "Color del satélite 4: " #~ msgid "Colour for satellite 5: " #~ msgstr "Color del satélite 5: " #~ msgid "Colour for satellite 6: " #~ msgstr "Color del satélite 6: " #~ msgid "Colour for satellite 7: " #~ msgstr "Color del satélite 7: " #~ msgid "Colour for satellite 8: " #~ msgstr "Color del satélite 8: " #~ msgid "Colour for satellite 9: " #~ msgstr "Color del satélite 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Color del satélite 10: " #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "El tiempo restante hasta el siguiente evento de ADS o PDS, dependiendo de " #~ "cual ocurra primero." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Tipo inválido de radio %d. Poniendo el tipo a RIG_TYPE_RX" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Argunento inválido de VFO. Usando VFOA." #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "" #~ "Selecciona un grupo de satélites o categoría para estrechar tu búsqueda" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Escribe en este campo para buscar un satélite en el grupo seleccionado." #~ msgid "Open the message log browser" #~ msgstr "Abrir la ventana de mensajes de logs" # Que significa el _ antes de la palabra #~ msgid "From _network" #~ msgstr "Desde la red (internet)" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "" #~ "Actualizar los elementos keplerianos (TLE) desde un servidor en la red " #~ "(internet)" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Actualiza los elementos keplerianos (TLE) desde ficheros locales" #~ msgid "Edit user preferences" #~ msgstr "Editar las preferencias del usuario" #~ msgid "Online help" #~ msgstr "Ayuda en linea" #~ msgid "Show the Gpredict license" #~ msgstr "Mostrar la licencia de Gpredict" #~ msgid "Show what's new in this release" #~ msgstr "Muestra que hay de nuevo en este lanzamiento" #~ msgid "Show about dialog" #~ msgstr "Muestra el acerca de" #~ msgid "Failed to build menubar: %s" #~ msgstr "Fallo al crear la barra: %s" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Añadir el satélite a la lista de satélites seleccionados." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Eliminar el satélite de la lista de satélites seleccionados." #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Truco: Has dobleclick en cualquier satélite\n" #~ "para moverlo a la otra casilla." #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (none)" #~ msgid "Select a predefined location from a list." #~ msgstr "Selecciona una locación predefinida de la lista." #~ msgid "Select a predefined weather station from a list." #~ msgstr "Selecciona una Estación Meteorológica de la lista" #~ msgid "Visible Columns" #~ msgstr "Columnas Visibles" #~ msgid "Click to select the grid colour" #~ msgstr "Click para seleccionar el color de las cuadrículas." #~ msgid "Click to select ground track colour" #~ msgstr "Click para seleccionar el color de la pista terrestre." #~ msgid "Colour for coverage Area (make it transparent)" #~ msgstr "Color del área de cobertura (recomendada: transparente)" #~ msgid "Click to select info text foreground colour" #~ msgstr "Click para seleccionar el color de frente del texto de información" #~ msgid "Click to select info text background colour" #~ msgstr "Click para seleccionar el color de fondo del texto de información" #~ msgid "Transparent" #~ msgstr "Transparente" #~ msgid "Strong" #~ msgstr "Fuerte" #~ msgid "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgstr "" #~ "Especificar cuan fuerte debe ser la sombra debajo del satélite. La sombra " #~ "mejora la visibilidad del satélite donde el color del satélite es claro, " #~ "por ejemplo en el Polo Sur.\n" #~ "\n" #~ "El color transparente significa sin sombra." #~ msgid "Edit the currently selected ground station" #~ msgstr "Editar la estación terrestre seleccionada" #~ msgid "Delete the selected ground station" #~ msgstr "Borrar la estación terrestre seleccionada" #~ msgid "Edit the currently selected radio" #~ msgstr "Editar el radio seleccionado" #~ msgid "Delete the selected radio" #~ msgstr "Eliminar el radio seleccionado" #~ msgid "Decay" #~ msgstr "Decremento" #~ msgid "From l_ocal files" #~ msgstr "Desde archivos l_ocales" gpredict/po/fi.po000066400000000000000000003564741427377236300142740ustar00rootroot00000000000000# Finnish translation for gpredict # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:50+0000\n" "Last-Translator: AA1VS \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Ville Filpus https://launchpad.net/~oh6fse" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Ei voi avata %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Etsi ainakin yksi .qth tiedosto." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: sample.qth kopiointi epäonnistui" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Kopioitu sample.qth %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Tarkastus onnistui." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Tarkastus epäonnistui. Luodaan %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s Luominen epäonnistui %s:" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Luotu %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Tiedoston Amateur.mod kopiointi epäonnistui" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Kopioitu amateur.mod %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Tiedon lataaminen epäonnistui %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Löytyi %d Satelliitteja %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.Satelliitti on jo olemassa. Ohitetaan" #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Kirjoitettu %d uusi satelliitti käyttäjän konfiguraatioon" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "" #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Kopiointi epäonnistui %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Kopiointi suoritettu onnistuneesti %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Epäonnistui ladata %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Virhe luettaessa %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Info" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s called with color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s called with alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s called with rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s called with rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Paikallinen aika" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satelliitti" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Catnum" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Satelliitin nimi" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Katalogi numero" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Atsimuutti" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevation" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Tietojen saanti epäonnistui #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satelliitti #%d poistettiin listasta." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Incorrect polar plot orientation." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "P" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "E" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "I" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "L" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Ei voitu löytää satelliittia (%d) Kohteessa hash table" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Can not find clicked object (%d) in hash table" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Ei voitu löytää SEURAAVAA satelliittia" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Seuraava: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Seuraava: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Aina etäisyydellä" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Failed to get satellite object." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Arvaruusseuranta" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS in" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS in" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Downlink " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule ei ole valittua satelliittia." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Satellite %d has %d transponder modes." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: hwconf dir Avaaminen epäonnistui (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Virheellinen satelliitin valinta: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: epäjohdonmukaisuutta havaittu sisäisen transponderi tiedot(%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Ensisijainen laite valittu: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Failed to allocate memory for radio config" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Ladattu uuden radion asetukset %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Toissijainen laite valittu: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "valitse kohde-objekti" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Rata" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Select a transponder" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Viritä radion mikrosiru. Uplink ja downlink on asetettu keskelle " "transponderin passband.Tässä tapauksessa majakoille, vain downlink on " "viritetty majakan taajuudelle." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Matka" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Tämä on nykyinen matka satelliittiin ja tarkkailijaan" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Rate:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" "The rate of change for the distance between the satellite and the observer." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Kohde" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Virhe luettaessa radion asetuksia %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Laite:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Valitse Ensisijainen radio laite.Tätä laitetta tullaan käyttämään " "downlinkiin ja uplinkiin vaikka valitsisit toissijaisen laitteen uplinkkiin." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Laite:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Valitse toissijainen radiolaite\n" "Tätä tullaan käyttämään uplinkkiin" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Ei mitään" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Engage" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Engage valittu radiolaite" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Cycle:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "Tämä parametri lähettää komennot viiveettä rigille." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msec" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Asetukset" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: SIZE ERROR %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: rigctld portti suljettu" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Saatu 0 tavua from rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Lue %d tavuja rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s myöhästynyt määräajasta" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "%s:%d: NULL storage." #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "%s: PTT on OFF => Aseta TX Taajuus ja PTT=ON" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT is ON = aseta PTT=OFF" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: socket Luonti epäonnistui" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Yhdistäminen epäonnistui %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Yhteys avattu %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Saatu 0 tavua rotctld :tä" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Luku:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Read: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "VIRHE" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "%s:%d: Failed to allocate memory for rotator config" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Ladattu uudet rotaattorin asetukset %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Rotaattorin asetusten lataaminen epäonnistui %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Seuraa satelliittia silloin kun se on etäisyydellä" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Laite:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Valitse antennin kääntäjä" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Sido valittu rotaattori" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Tämä parametri ohjaa viiveettä komentja jotka lähetetään rotaattorille." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Raja-arvo:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Tämä parametri ohjaa raja-arvoa kohteen ja rotaattorin välillä.\n" "Jos erot kohteen ja rotaattorin välillä ovat pienemmät kuin raja-arvo, uusia " "komentoja ei lähetetä" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "deg" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "%s: Virhe luettaessa NAME %s (%s)" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Satelliitilla %d ei ole NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: TLE data for %d appears to be bad" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Hakemisto" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Dec" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Etäisyys" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Nopeus" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Seuraava tapahtuma" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Seuraava AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Seuraava LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Leveysaste" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Pituusaste" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "Footp" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Korkeus" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Vel" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Loss" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Del" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Phase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbit" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Vis" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Suunta" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Right Ascension" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Deklinaatio" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Leveysaste" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Pituusaste" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Jalanjälki" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Korkeus" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Nopeus" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Doppler Siirtymä @ 100MHz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Signaali Häviö @ 100MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Signaalin Viive" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Kiertoradan Vaihe" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Kiertoradan Numero" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Näkyvyys" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: Viallinen GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Viallinen column: %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Ladataan karttaa %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Kartta löytyi" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Kartaa ei löytynyt %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Käytetään oletus karttaa: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Virhe ladattaessa karttaa (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS in %d minuuteissa" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS in %d minuuteissa" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Aloita orbit: %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Näytä peittävyys" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Näytä jalanjälki" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Aseta Kohde" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Satelliitien listan saanti epäonnistui (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Reading configuration from %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "%s: Moduulin ulkoasu on virheellinen: %s. Käytetään oletusta." #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Moduulin asetukset / pikavalinnat" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Sulje tämä moduuli." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Moduuli %s suljettu." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Select a transponder" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Virhe" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s Luominen epäonnistui %s:" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Näkyvä" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Virhe luettaessa %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Aikaa jäljellä seuraavaan AOS tai LOS event, depending on which one comes " #~ "first." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Virheellinen radion tyyppi %d. Asetetaan tyypiksi RIG_TYPE_RX" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Virheellinen VFO argumentti. Käytetään VFOA." #~ msgid "Row" #~ msgstr "Rivi" #~ msgid "Column Name" #~ msgstr "Sarakkeen nimi" gpredict/po/fr.po000066400000000000000000004241761427377236300143000ustar00rootroot00000000000000# translation of fr.po to French # Copyright (C) 2001-2008 Alexandru Csete OZ9AEC # This file is distributed under the same license as the Gpredict package. # Stéphane Fillod , 2009. msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-07 02:24+0000\n" "Last-Translator: Alexandru Csete \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Stéphane Fillod\n" "\n" "Launchpad Contributions:\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " JMrO https://launchpad.net/~jmro\n" " Jean-Marc https://launchpad.net/~m-balthazar\n" " Omega13 https://launchpad.net/~omega13\n" " Stéphane Fillod https://launchpad.net/~fillods\n" " William HAREL https://launchpad.net/~williamharel\n" " computerhelp https://launchpad.net/~comp-conf\n" " louis1806 https://launchpad.net/~louis1806" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s : impossible d'ouvrir %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s : au moins un fichier .qth trouvé." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s : échec de la copie de sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s : sample.qth copié vers %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Vérification avec succès." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s : échec de la vérification. Création de %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s : échec de la création de %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s : %s créé." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s : échec de la copie de Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s : amateur.mod copié vers %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s : échec du chargement des données depuis %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s : %d satellites trouvés dans %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s : %s.sat existe déjà. Annulé." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" "%s : écriture de %d nouveaux satellites dans la configuration utilisateur." #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s : ouverture impossible de %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s : échec de la copie %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s : copie de %s effectuée avec succès" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s : échec du chargement de %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s : erreur lors de la lecture de %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Infos Gpredict" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s :%s : %s appelé avec couleur = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s appelé avec alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s appelé avec rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s appelé avec rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s : impossible de créer des données de configuration (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Impossible de créer le fichier de configuration (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Erreur lors de l'écriture des données de configuration (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Seulement %d sur %d caractères écrit." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Configuration sauvegardée pour %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Heure Locale" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satellite" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "Numéro" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Nom Satellite" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimut" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elévation" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Impossible d'obtenir des données pour #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Satellite #%d supprimé de la liste." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Jamais" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: RÉPAREZ-MOI je ne suis pas implémenté" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Impossible d'obtenir des données pour %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Utilisez les boutons de la souris et la molette pour changer la valeur" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Mauvaise orientation du tracé polaire." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "E" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "W" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Ne peut trouver le satellite (%d) dans la table de hachage" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Ne peut trouver l'objet cliqué (%d) dans la table de hachage" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Prochain: %s\n" "dans %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Prochain: %s\n" "dans %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Ne peut pas trouver le satellite suivant." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Prochain: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Prochain: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS dans %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS dans %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Toujours dans la plage" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Impossible d'allouer de la mémoire pour le satellite %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Impossible d'obtenir un passage de satellite." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Impossible d'obtenir l'objet satellite." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Le satellite demandé (%d) n'est pas dans la plage" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Suivi dans le ciel" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS dans" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS dans" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Lien descendant " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler :" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Lien ascendant " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule n'a aucun satellite cible." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Le satellite %d a %d modes de transpondeur." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Impossible d'ouvrir le répertoire hwconf (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Sélection satellite invalide : %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" "%s: Incohérence détectée dans les données internes de transpondeur (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Périphérique primaire sélectionné: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Échec de l'allocation mémoire pour la configuration radio" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Nouvelle configuration radio chargée %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Échec du chargement de la configuration radio %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Périphérique secondaire sélectionné: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Impossible d'allouer de la mémoire pour la configuration radio" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Le contrôleur n'a pas une configuration valide" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Sélection de l'objet ciblé" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Suivi" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Sélectionne un transpondeurs" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Synchronisez la radio à ce transpondeur. La liaison montante et descendante " "sera mise au centre de la bande passante du transpondeur. En cas de balises, " "seule la liaison descendante sera accordée à la fréquence balise." #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Portée:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "C'est la distance actuelle entre le satellite et l'observateur" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr " Taux:" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "La vitesse relative entre le satellite et l'observateur." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Cible" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Erreur de lecture de configuration radio %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Appareil:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Sélection de la radio principale. Cette radio sera utilisée pour le lien " "descendant et ascendant sauf si vous avez sélectionné une radio secondaire " "pour le lien ascendant." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Appareil:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Sélection de la radio secondaire\n" "Sera utilisée pour le lien ascendant" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Aucun" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Engage" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Engage la radio sélectionnée" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Cycle:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" "Ce paramètre contrôle le délai entre les commandes envoyées à la plate-forme." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msec" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Réglages" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "ΔT: 00:00:00" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: ERREUR DE TAILLE %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: port rigctld fermé" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: 0 obtenus de rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: %d octets lus de rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s appelé mais TX VFO est %d." #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s a manqué la date limite" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "%s: PTT est ALLUMÉ = Régler PTT=ÉTEINT" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Enfoncement de la BARRE D'ESPACE détécté" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Impossible de créer la socket" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Socket réseau créée avec succès" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Impossible de se connecter à %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Connexion ouverte à %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: 0 bytes obtenus depuis rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "Lecture:" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "Lecture: " #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ERREUR" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" "%s:%d: Impossible d'allouer de la mémoire pour la configuration du rotateur" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Impossible de charger la configuration du rotateur %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Suivre le satellite quand il est dans la plage" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "ΔT :" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Appareil:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Sélectionner un rotateur d'antenne" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Ce paramètre contrôle le délai entre les commandes envoyées à l'appareil de " "rotation" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolérance:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "deg" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Le satellite %d n'a aucun NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "%s: Erreur lors de la lecture de la ligne TLE 2 depuis %s (%s)" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: Les données TLE pour %d semblent être mauvaises" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Dir" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "Ra" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "Déc" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "Portée" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "Taux" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Prochain événement" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Prochain AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Prochain LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Lat" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Lon" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "SSP" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Alt" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Vel" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "Dop" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "Perte" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "Suppr." #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "MA" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Phase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbite" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "Vis" #: ../src/gtk-sat-list.c:76 #, fuzzy msgid "Status" msgstr "Status PTT" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Direction" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Ascension droite" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Déclinaison" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Latitude" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Longitude" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "Empreinte terrestre" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Altitude" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Vélocité" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Décalage Doppler @ 100MHz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Perte du Signal @ 100MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Délai du Signal" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Anomalie moyenne" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Phase Orbite" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Num Orbite" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Visibilité" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Statut opérationnel:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: GtkSatList invalide!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "%s:%d: Colonne invalide : %d" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Prochain: %s dans %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Prochain: %s dans %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Chargement du fichier de carte %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Fichier de carte trouvé" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Impossible de trouver le fichier de carte %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Utilisation de la carte par défaut: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Erreur lors du chargement de la carte (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS dans %d minutes" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS dans %d minutes" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Création de l'empreinte terrestre pour %s" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "%s: Orbite de départ : %d" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "%s: Orbite de fin : %d" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" "%s: MAYDAY: Mémoire insuffisante pour le calcul de l'empreinte terrestre !" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Mise à jour de l'empreinte terrestre pour %s" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Suppression de l'empreinte terrestre pour %s" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Empreinte terrestre" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Régler la cible" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Impossible d'obtenir la liste des satellites (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Erreur lors de la lecture des données pour #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "%s: Lecture des données pour #%d" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Le satellite #%d est déjà dans liste" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "%s: %d satellite(s) sur %d lu(s)" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "%s: Mise à jour de GtkSkyGlance pour %s" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Impossible de charger les données de configuration depuis %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: La lecture de configuration depuis %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "%s: Impossible d'allouer de la mémoire pour la grille." #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Le module %s n'est pas valide." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Le module %s a des problèmes." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Options du module / raccourcis" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Fermer ce module." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "%s: Le module %s a reçu le signal FERMER." #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Le module %s est à quai." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: Le module %s a un statut inconnu: %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Module %s fermé." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Le module %s a reçu le signal CONFIG." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "%s: La configuration du module a échoué pour une raison quelconque." #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Rechargement des satellites pour le module %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "%s:%d: %s appelé avec un paramètre NULL!" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Détache module" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Attache module" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Quitter le mode plein écran" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Plein écran" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Sélectionnez un satellite" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Ciel d'un coup d'œil" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Contrôleur de Temps" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Contrôle Radio" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Contrôle Antenne" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Configuration" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Clonage..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Suppression" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Fermeture" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Cloner le module" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Nom du nouveau module:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Ouvrir le module lors de sa création" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "Si sélectionné, le nouveau module sera ouvert après qu'il ait été créé" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Clonage %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Impossible de cloner %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Cloné avec succès %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Clonage annulé par l'utilisateur." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Clonage interrompu." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: État du module inconnu:: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "Le ciel d'un coup d'œil (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Vous n'avez pas de configuratin radio!\n" "Veuillez en premier configurer une radio." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Cette opération va supprimer définitivement\n" "%s\n" "du disque.\n" "Voulez-vous procéder?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Impossible de supprimer %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "%s:%d: %s supprimé définitivement." #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Le contrôleur de temps pour %s est déjà activé." #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Lecture avant" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Lecture arrière" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Réinitialiser" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Remise à l'heure et au jour actuels" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Temps-Réel" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Utilisez ce contrôle pour régler l'heure" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Utilisez ce contrôle pour régler les minutes" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Utilisez ce contrôle pour régler les secondes" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Utilisez ce contrôle pour régler les millisecondes" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Contrôleur de temps pour %s lancé" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Contrôleur de temps pour %s fermé. Temps réinitialisé." #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Temps-Réel Simulé" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Contrôle Manuel" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Satellites disponibles" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Mis à jour" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Impossible d'ouvrir %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Erreur lors de la lecture du satellite %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Impossible de lire %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Tous les satellites" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "Epoque" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Sélectionné" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Développer" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Regrouper" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Le répertoire est: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: Aucun fichier .tle trouvé dans %s." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "%s:%d: %d satellite(s) lu(s) depuis %s " #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Impossible d'ouvrir %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Satellite %d sélectionné." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Satellite %d déjà sélectionné; saut..." #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Satellite %d désélectionné." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "%s: GtkSatTree invalide!" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Satellite %d déjà sélectionné; saut..." #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: Il n'y a aucun satellite sélectionné => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "Asc. droite" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "SSP Lat." #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "SSP Lon." #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Loc." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Sig. perdu" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Délai Sig." #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Num. Orbite" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Azimut du satellite" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Élévation du satellite" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Direction du satellite" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Ascension droite du satellite" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Déclinaison du satellite" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "La plage entre le satellite et l'observateur" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Altitude du satellite" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Vitesse tangentielle du satellite" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Perte de signal @ 100MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Visibilité du satellite" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: Impossible de mettre à jour un satellite qui n'existe pas" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/A" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "%s: GtkSingleSat invalide!" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Options du satellite / raccourcis" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Le bouton %d n'a aucune fonction..." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "TEMPS" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Ce module n'a aucun satllite!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Position" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Sélectionner la position" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: Aucun emplacement sélectionné" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s n'existe pas!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "%s: Colonne invalide: %d" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "%s: Aucune sélection trouvée!" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "L'option analyse a échoué: %s\n" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Nettoyage des données TLE dans %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Impossible de supprimer %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: %s supprimé" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Sélectionnez la carte" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Fichiers images" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: Le nouveau nom du module est %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" "Impossible d'ouvrir %s. Veuillez examiner les logs pour plus de détails." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: Configuration du nouveau module annulée." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s: Scan du dossier %s à la recherche de modules." #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "Module" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Sélectionnez un module" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: Le module sélectionné est: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Ouverture du module %s." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Ouverture du module annulée." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Terminé" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Mise à jour TLE" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Mise à jour des fichiers TLE depuis le réseau" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Satellites mis à jour:\t\n" "Satellites sautés: \t\n" "Satellites manquants:\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Sélectionne répertoire" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Sélection répertoire TLE" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Mise à jour TLE à partir de fichiers" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: Mise à jour TLE depuis %s" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Mise à jour de fichiers TLE depuis à partir de fichiers" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Un manuel d'utilisation simple et \n" "des tutoriels vidéos sont disponibles \n" "de puis le site de Gpredict:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Nouveau module" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Ouvrir module" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Navigateur de logs" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Mise à jour des fichiers TLE depuis le réseau" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Mise à jour TLE à partir de fichiers" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Pas de transpondeurs" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Préférences" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Licence" #: ../src/menubar.c:936 msgid "_News" msgstr "_Nouvelles" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_À propos de Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Fichier" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Édition" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Aide" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** PAR DÉFAUT **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Satellites sélectionnés" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Sélectionnez une station au sol pour ce module." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Ajouter une nouvelle station au sol" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satellites" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Changements appliqués à %s." #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Erreur lors de l'enregistrement des données du module (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: L'utilisateur a essayé de créer un module sans satellites." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Veuillez sélectionner au moins un satellite dans la liste." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Impossible de lire le booléen (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: Impossible de restaurer %s" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: Aucun module n'a besoin d'être restauré." #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "%s: %s a été ajouté au gestionnaire de module (page %d)." #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "%s: Aucun module n'a besoin de sauvegarder son statut." #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "%s: %s stocké" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "%s: Statut sauvegardé pour le(s) module(s) %d." #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Afficher les détails" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Tracé polaire" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "Tracé Az/El" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Temps" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Az " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " El " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " Ra " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dec " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Lat " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lon " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Alt " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TCA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " LOS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Durée" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "El Max" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "EL Az Max" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Local" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Détails de passages pour %s (orbite %d)\n" "Observateur: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Prochains passages pour %s\n" "Observateur: %s, %s\n" "LAT:%.2f LON:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Détails du passage pour %s (orbite %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: Impossible de charger les données depuis %s (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: Données QTH: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "%s: QTH n'a aucune description." #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "%s : le QTH n'a pas de station météo." #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "%s: Erreur lors de la lecture de la latitude QTH (%s)." #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "%s : erreur lors de la lecture de la longitude du QTH (%s)." #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "%s: QTH n'a aucun serveur GPSD." #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "%s: Données QTH: %s, %.4f, %.4f, %d" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Erreur" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" "%s:%d: %s chargé pour modification:\n" "LAT:%.2f LON:%.2f ALT:%d" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Nom" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Description" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Sélectionner" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "Latitude (°)" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Nord" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Sud" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "Longitude (°)" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Est" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Ouest" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Locator" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "St. Météo" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "Type de QTH" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "Serveur GPSD" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "Serveur GPSD." #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "Port GPSD" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" "Régler le port à utiliser pour GPSD. Le port par défaut de gpsd est 2947." #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Éditer les données de la station au sol" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: Impossible de charger le fichier %s\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" "%s: Erreur lors de la lecture de la configuration radio depuis %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "%s: Lecture de la configuration radio %s" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Erreur lors de la lecture du fichier de configuration (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Tout est OK." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Module non initialisé\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Pas de transpondeurs" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Inversement: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Mode: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Nom du satellite:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Statut opérationnel:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Opérationel" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Non-opérationel" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Partiellement opérationel" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "Mission prolongée" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Inconnu" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Numéro catalogue:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inclinaison:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Excentricité:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Anomalie moyenne:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Info Orbite" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transpondeurs" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Info Satellite" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Date" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Niveau" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Message" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "AUCUN" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "ATTENTION" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "INFO" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "DÉBOGAGE" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "Fichier de log corrompu" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Sélectionner un fichier du Journal" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "Navigateur de logs: %s" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Navigateur de logs" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Erreurs" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Avertissements" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Informations" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Debug" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Total" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Résumé " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr " INFORMATIONS" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "ERREUR: Impossible de créer %s\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "ERREUR: Impossible de créer %s\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Session lancée" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Session terminée" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Acquisition du signal (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Durée du passage" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Élévation maximum" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Numéro Orbite" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Visibilité durant le passage" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Données" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polaire" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Az/El" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Prochains passages pour %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Préférences :: Général" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "PREDICT Préférences :: Modules" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Préférences :: Interfaces" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Préférences :: Prédiction" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Général" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Modules" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Interfaces" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Prédiction" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Gpredict Préférences :: Général" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Remettre les paramètres par défaut." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Élévation minimum" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[deg]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Passages multiples:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Nombre de passages à prédire" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Nombre maximum de passages à prédire." #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[jours]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Détails de passage:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[sec]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Visibilité du satellite:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Toujours utiliser le temps réel pour les prédictions de passages" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Niveau de déboguage:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Niveau 0: Aucun" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Niveau 1: Erreur" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Niveau 2: Attention" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Niveau 3: Info" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Niveau 4: Debug" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Supprimer les fichiers de logs plus vieux que:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Toujours supprimer" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 jour" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 semaine" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 mois" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Sélectionnez combien de fois Gpredict doit supprimer les vieux logs" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Afficher l'heure locale au lieu de l'UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Réinitialiser aux valeurs par défaut" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Format du temps:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Utiliser N/S/E/O pour les coordonnées géographiques." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Utiliser les unités Impériales au lieu de Métriques." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Format Nombres" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Stations au sol" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Archives de messages" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Radios" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Rotors" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Carte du monde" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Tableau" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Carte du monde et tableau" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Toutes les vues (large)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Personnalisation" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Sélectionner la mise en page:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Placements de la fenêtre:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Réinitialiser les paramètres du module." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Champs visibles:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Carte de fond:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Sélectionner une carte" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Cliquez pour sélectionner une carte" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Afficher les informations de localisation sur la carte" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Afficher quel satellite passe à proximité et à quelle heure" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Position du curseur" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Afficher la latitude et la longitude du pointeur de la souris" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Lignes de la grille" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Afficher les lignes de quadrillage horizontales et verticales" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Couleurs:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Station au sol:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Grille :" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satellite :" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Sat. sélectionnés:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Ombre :" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "orbite(s)" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Centrer la carte à la longitude" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Mise en page" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Taux de rafraîchissement" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Vue en liste" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Vue Carte" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Vue Polaire" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Colonnes visibles:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientation:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "N/E/S/O" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" "\tN\n" "O\t\tE\n" "\tS" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "N/O/S/E" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" "\tN\n" "E\t\tO\n" "\tS" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "S/E/N/O" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" "\tS\n" "O\t\tE\n" "\tN" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "S/O/N/E" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" "\tS\n" "E\t\tO\n" "\tN" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Afficher quel satellite passe à proximité et à quelle heure" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Afficher l'azimut et l'élévation du pointeur de la souris" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Arrière-plan :" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Cliquez pour sélectionner la couleur de fond" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Cliquez pour sélectionner la couleur de l'axe" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Cliquez poour sélectionner la couleur du satellite" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Cliquez poour sélectionner la couleur des satellites sélectionnés" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Cliquez pour sélectionner couleur de la piste" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Texte d'info:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Divers:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Passages multiples" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Un seul passage" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" "Alt\n" "(pi)" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" "Alt\n" "(m)" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Par défaut" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" "QTH\n" "Type" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Ajouter une nouvelle station au sol à la liste" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Édition" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d: Impossible de supprimer %s" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "%s:%d: %s supprimé" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Alt (pi)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Alt (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d: Aucune station au sol sélectionnée!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" "%s:%d: Oooops, gpredict a rencontré une erreur interne (aucune sélection " "dans la liste qth)" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Rafraîchir les données tous les" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[msec]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Rafraîchir la liste tous les" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[cycle]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Rafraîchir la carte tous les" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "%s:%d: Lecture de %s" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "%s:%d: Impossible de lire %s" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "RX seulement" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "TX seulement" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "RX + TX" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "FT817/857/897 (auto)" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "FT817/857/897 (man)" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "PTT" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "DCD" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "Nom Config" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Hôte" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Port" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "Status PTT" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" "Sélectionnez la radio que vous voulez supprimer\n" "et réessayez!" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "Ajouter une nouvelle radio à la liste" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d: Impossible de supprimer %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "Entrez le numéro de port où rigctld écoute" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "Type Radio" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "FT817/857/897 (manuel)" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "Status PTT" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "Lecture PTT" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "Lecture DCD" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "Non applicable" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "A ↑ / B ↓" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "B ↑ / A ↓" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "MHZ" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "Édition configuration radio" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" "Sélectionnez le rotateur que vous voulez éditer\n" "et réessayez!" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" "Sélectionnez le rotateur que vous voulez supprimer\n" "et réessayez!" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Ajout" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Inconnu (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "Min Az" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "Max Az" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "Min El" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "Type d'azimut" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "Type Az" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr " Az Min" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr " Az Max" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr " El Min" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr " El Max" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "Édition configuration rotor" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Temps:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Chercher et afficher les passes qui se produisent dans" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "heures" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Sélectionnez la couleur 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Cliquez pour sélectionner une couleur" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Sélectionnez la couleur 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Sélectionnez la couleur 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Sélectionnez la couleur 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Sélectionnez la couleur 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Sélectionnez la couleur 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Sélectionnez la couleur 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Sélectionnez la couleur 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Sélectionnez la couleur 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Sélectionnez la couleur 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Mise à jour Auto:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "Vérification de l'âge des données TLE:" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Si les TLEs sont trop vieux:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "M'avertir" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Effectuer automatiquement la mise à jour en arrière-plan" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Mise à jour depuis internet:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Serveur proxy :" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "Entrez une URL pour le serveur proxy local. ex:\n" "http://my.proxy.com" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Ajouter de nouveaux sattelites à la base de données locale" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Visible" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "Lumière du jour" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "Éclipsé" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Sauvegarder dans le dossier:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Sélectionner un répertoire" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Sauvegarder en utilisant le nom de fichier:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "Info+en-tête+données" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "En-tête + données" #: ../src/save-pass.c:170 msgid "Data only" msgstr "Données seules" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Sauvegarder les passages" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Rapport complet" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Résumé" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Format de fichier invalide: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Impossible de créer le fichier %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Impossible de créer le fichier %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" "%s: Une erreur est survenue lors de la sauvegarde des données dans %s (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "Une erreur est survenue lors de la sauvegarde des données dans %s\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: %d caractères écris à %s" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" "%s: Un processus de mise à jour TLE est déjà en cours d'éxecution. " "Annulation." #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Erreur lors de l'ouverture du répertoire %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "ERREUR lors de l'ouverture du répertoire %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Lecture de données depuis %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "%s: Aucune donnée TLE valide trouvée dans %s" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Mise à jour des données..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Satellites mis-à-jour:\t %d\n" "Satellites sautés: \t %d\n" "Satellites manquants: \t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Satellites mis à jour:\t %d\n" "Satellites sautés: \t\t %d\n" "Satellites manquants: \t %d\n" "Nouveaux satellites: \t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: %d nouveaux satellites ajoutés à la base de donnée locale" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: Éléments TLE mis à jour." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "%s: Aucun fichier à récupérer depuis le réseau." #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "Aucun fichier à récupérer depuis le réseau." #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Récupération de %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Erreur lors de la récupération de %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: Succès récupération %s" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Erreur lors de la récupération de %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: %d fichiers récupérés depuis le réseau ; mise à jour..." #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Erreur lors de l'ouverture de %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "%s:%s: Il n'y a aucune catégorie dans %s" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "%s:%s: Il n'y a aucune catégorie appelée %s" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: Données invalides pour %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Impossible d'ouvrir %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" "%s: Aucune donnée TLE trouvée pour %d. Le satellite peut être obsolète." #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Erreur lors du chargement de %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "%s: Les données TLE actuelles pour %d semblent être mauvaises" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Mensuel" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Hebdomadaire" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Journalier" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Erreur lors de la lecture de %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s contient 0 transpondeurs" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Row" #~ msgstr "Ligne" #~ msgid " Hour:" #~ msgstr " Heure:" #~ msgid " Min:" #~ msgstr " Min:" #~ msgid " Sec:" #~ msgstr " Sec:" #~ msgid " Msec:" #~ msgstr " Msec:" #~ msgid "Create a new module" #~ msgstr "Créer un nouveau module" #~ msgid "Open an existing module" #~ msgstr "Ouvre un module existant" #~ msgid "E_xit" #~ msgstr "_Quitter" #~ msgid "Exit the program" #~ msgstr "Quitter le programme" #~ msgid "From _network" #~ msgstr "Depuis le _réseau" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Mets à jour les éléments Képlériens depuis un serveur réseau" #~ msgid "From l_ocal files" #~ msgstr "Depuis des fichiers _locaux" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Mets à jour les éléments Képlériens depuis des fichiers locaux" #~ msgid "Edit user preferences" #~ msgstr "Edite les préférences utilisateur" #~ msgid "Module Name" #~ msgstr "Nom du Module" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "Column Name" #~ msgstr "Nom de la colonne" #~ msgid "Group" #~ msgstr "Groupe" #~ msgid "Search" #~ msgstr "Rechercher" #~ msgid "Module Properties" #~ msgstr "Propriétés du module" #~ msgid "Visible Columns" #~ msgstr "Colonnes visibles" #~ msgid "Decay" #~ msgstr "Écart" #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "" #~ "Sélectionnez un groupe ou une catégorie de satellites pour limiter votre " #~ "recherche." #~ msgid "Failed to build menubar: %s" #~ msgstr "Impossible de créer la barre de menus: %s" #~ msgid "Online help" #~ msgstr "Aide en ligne" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Commencez à taper dans ce champ pour rechercher un satellite dans le " #~ "groupe sélectionné." #~ msgid "Ground Station" #~ msgstr "Station au sol" #~ msgid "Create New Module" #~ msgstr "Créer un nouveau module" #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Enlever un satellite de la liste des satellites sélectionnés." #~ msgid "Colour for satellite 7: " #~ msgstr "Couleur pour le satellite 7: " #~ msgid "Colour for satellite 8: " #~ msgstr "Couleur pour le satellite 8: " #~ msgid "Colour for satellite 9: " #~ msgstr "Couleur pour le satellite 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Couleur pour le satellite 10: " #~ msgid "Colour for satellite 6: " #~ msgstr "Couleur pour le satellite 6: " #~ msgid "Colour for satellite 5: " #~ msgstr "Couleur pour le satellite 5: " #~ msgid "Colour for satellite 1: " #~ msgstr "Couleur pour le satellite 1: " #~ msgid "Colour for satellite 3: " #~ msgstr "Couleur pour le satellite 3: " #~ msgid "Colour for satellite 2: " #~ msgstr "Couleur pour le satellite 2: " #~ msgid "Colour for satellite 4: " #~ msgstr "Couleur pour le satellite 4: " #~ msgid "Edit Module" #~ msgstr "Édit Module" #~ msgid "Add a new rotator to the list" #~ msgstr "Ajouter un nouveau rotateur à la liste" #~ msgid "Edit the currently selected rotator" #~ msgstr "Éditer le rotateur actuellement sélectionné" #~ msgid "Delete the selected rotator" #~ msgstr "Supprimer le rotateur sélectionné" #~ msgid "Delete the selected radio" #~ msgstr "Supprimer la radio sélectionnée" #~ msgid "Edit the currently selected radio" #~ msgstr "Éditer la radio actuellement sélectionnée" #~ msgid "Delete the selected ground station" #~ msgstr "Supprimer la station au sol sélectionnée" #~ msgid "Edit the currently selected ground station" #~ msgstr "Éditer la station actuellement sélectionnée" #~ msgid "Strong" #~ msgstr "Gras" #~ msgid "Transparent" #~ msgstr "Transparent" #~ msgid "Click to select the grid colour" #~ msgstr "Cliquez pour sélectionner la couleur de la grille" #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Astuce: Double-cliquez sur un satellite\n" #~ "pour le déplacer." #~ msgid "Open the message log browser" #~ msgstr "Ouvrir le navigateur de messages logs" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Ajouter un satellite à la liste des satellites sélectionnés." #~ msgid "Show what's new in this release" #~ msgstr "Afficher ce qu'il y a de neuf dans cette version" #~ msgid "Show about dialog" #~ msgstr "Afficher la boite de dialogue « À propos »" #~ msgid "Show online user manual" #~ msgstr "Afficher le manuel d'utilisateur en ligne" #~ msgid "Show the Gpredict license" #~ msgstr "Afficher la licence Gpredict" #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT : (aucun)" #~ msgid "ft above sea level" #~ msgstr "pieds au-dessus du niveau de la mer" #~ msgid "m above sea level" #~ msgstr "mètres au-dessus du niveau de la mer" #~ msgid "Select a predefined weather station from a list." #~ msgstr "Sélectionnez une station météo prédéfinie dans une liste." gpredict/po/id.po000066400000000000000000003502111427377236300142510ustar00rootroot00000000000000# Indonesian translation for gpredict # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:49+0000\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Andika Triwidada https://launchpad.net/~andika" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Tak bisa membuka %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Menemukan paling tidak satu berkas .qth." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Gagal menyalin sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Menyalin sample.qth ke %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Pemeriksaan sukses." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Pemeriksaan gagal. Membuat %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Gagal membuat %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Membuat %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Gagal menyalin Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Menyalin amateur.mod ke %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Gagal memuat data dari %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Menemukan %d satelit dalam %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat telah ada. Dilewati." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Menulis %d satelit baru ke konfig pengguna" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Tak bisa membuka %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Gagal menyalin %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Sukses menyalin %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Gagal memuat %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Galat membaca %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Info Gpredict" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s dipanggil dengan color = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s dipanggil dengan alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s dipanggil dengan rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s dipanggil dengan rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Tak bisa membuat data konfig (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Tak bisa membuat berkas konfig (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Galat menulis data konfig (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "%s: Menulis hanya %d dari %d karakter." #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Konfigurasi disimpan bagi %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Waktu Lokal" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Gunakan tombol dan roda tetikus untuk mengubah nilai" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Orientasi plot polar tak benar." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "U" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "T" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "B" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Tak bisa temukan satelit (%d) dalam tabel hash" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Tak bisa temukan objek yang diklik (%d) dalam tabel hash" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Selanjutnya: %s\n" "dalam %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Selanjutnya: %s\n" "dalam %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Tak bisa temukan satelit SELANJUTNYA" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Selanjutnya: GALAT" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Selanjutnya: T/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "LOS dalam %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "LOS dalam %02d:%02d" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Selalu dalam jangkauan" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Tak bisa mengalokasikan memori bagi satelit %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Gagal mendapat objek satelit." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "%s Satelit (%d) yang diminta tidak dalam jangkauan" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr "" #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Pemilihan satelit tak valid: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: Inkonsistensi terdeteksi dalam data transponder internal (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Perangkat primer dipilih: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Gagal mengalokasikan memori bagi konfig radio" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Memuat konfigurasi radio baru %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Gagal memuat konfigurasi radio %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Perangkat sekunder dipilih: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Gagal mengalokasikan memori bagi konfig radio" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Trek" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "T" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "L" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr "" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Target" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "mdet" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Pengaturan" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "%s dipanggil tapi TX VFO %d." #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 msgid "Update transponder data" msgstr "" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: Gagal membuat %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Galat membaca %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Waktu tersisa sampai AOS atau LOS berikutnya, tergantung mana yang lebih " #~ "dulu." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Jenis radio %d tak valid. Menata jenis ke RIG_TYPE_RX" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Argumen VFO tak valid. Memakai VFOA." gpredict/po/it.po000066400000000000000000003677331427377236300143120ustar00rootroot00000000000000# Italian translation for gpredict # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2018-01-04 21:11+0000\n" "Last-Translator: Filippo Magni \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Filippo Magni https://launchpad.net/~fil0\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Milo Casagrande https://launchpad.net/~milo\n" " simone.sandri https://launchpad.net/~lexluxsox" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Impossibile aprire %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Trovato almeno un file .qth" #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Errore nella copia di sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Copiato sample.qth in %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Controllo eseguito correttamentel." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Controllo fallito. Si veda %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Creazione fallita %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Creato %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Errore nella copia di Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Amateur.mod copiato in %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Impossibile caricare i dati da %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Trovati %d satelliti in %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat esiste già. Ignorato." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Impossibile aprire %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Impossibile copiare %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Copia eseguita correttamente %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Impossibile caricare %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Errore nella lettura %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Informazioni" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Ora Locale" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Az" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "El" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Satellite" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Nome del Satellite" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimut" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevazione" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Mai" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "N" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "S" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "E" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "O" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Impossibile trovare il satellite sucessivo." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Successivo: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Successivo: N/D" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "" #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Downlink " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Doppler:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Seleziona un obiettivo" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Traccia" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Seleziona un transponder" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Az:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "El:" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr "" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Questa è l'attuale distanza fra il satellite e l'osservatore." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Obiettivo" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Dispositivo:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Seleziona il dispositivo radio primario. Questo dispositivo verrà usato sia " "per il downlink sia per l'uplink a meno che non venga selezionato anche un " "dispositivo secondario per l'uplink" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Dispositivo:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Seleziona un dispositivo radio secondario\n" "Questo dispositivo verrà utilizzato per l'uplink" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Ciclo:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "msec" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Impostazioni" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ERRORE" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Dispositivo:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolleranza:" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "gradi" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "%s: Il satellite %d non ha un NICKNAME" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "Dir" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "Prossimo Evento" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Lat" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Lon" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Alt" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Fase" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Orbita" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "Direzione" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Ascensione retta" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Declinazione" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Latitudine" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Longitudine" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Altitudine" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Velocità" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Ritardo del Segnale" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Anomalia media" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Fase orbitale" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Orbita n°" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Visibilità" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Stato operativo:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS tra %d minuti" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS tra %d minuti" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Traccia a Terra" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "Imposta Obiettivo" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: Layout ha %d colonne e %d righe." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Module %snon valido." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Chiudi questo modulo." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Attacca modulo" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Esci dalla modalità schermo intero" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Schermo intero" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Gestore del Tempo" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Configura" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Clona..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Elimina" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Chiudi" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Nome del nuovo modulo:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Inserisci un breve nome per questo modulo.\n" "Sono permessi i caratteri; 0..9, a..z, A..Z, - e _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Apri il modulo quando creato" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Non esiste una configurazione radio!\n" "Configurare la radio prima di procedere." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Avanti" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Indietro" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Reset" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "%s: %d/%d/%d %d:%d:%d.%d" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Satelliti Disponibili" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Aggiornato" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Tutti i satelliti" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "Epoca" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Selezionato" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Espandi" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Collassa" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Doppler@100M" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Perdita del segnale" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Ritardo del segnale" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "Orbita n°" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Azimut del satellite" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Elevazione del satellite" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Direzione del satellite" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Ascensione retta del satellite" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Declinazione del satellite" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Distanza fra il satellite e l'osservatore" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Altitudine del satellite" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Velocità tangenziale del satellite" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Visibilità del satellite" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "N/D" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "Orario" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Questo modulo non ha satelliti!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Posizione" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "X" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Seleziona la posizione" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "I TLE rischiano di essere obsoleti.\n" "Puoi aggiornarli selezionando\n" "Modifica -> Aggiorna TLE\n" "nella barra dei menu." #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Seleziona una mappa" #: ../src/map-selector.c:259 msgid "Image files" msgstr "File immagine" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "Modulo" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Selezioan un modulo" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Completato" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Aggiornamento TLE" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Aggiornamento TLE dalla rete" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Seleziona cartella" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Seleziona una cartella con i TLE" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Aggiorna i TLE da file" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Aggiornamento dei TLE da file" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Una guida completa in PDF e \n" "un video tutorial sono disponibili sul \n" "sito di Gpredict:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Nuovo modulo" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Apri modulo" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Aggiornamento TLE dalla rete" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Aggiorna i TLE da file" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "No transponders" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "Preferen_ze" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Licenza" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_Informazioni Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_File" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Modifica" #: ../src/menubar.c:975 msgid "_Help" msgstr "A_iuto" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Satelliti Selezionati" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Satelliti" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Seleziona almeno un satellite dalla lista." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Visualizza dettagli" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Orario" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr " Az " #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr " El " #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr " Ra " #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr " Dec " #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Lat " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Lon " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Alt " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Vel " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Durata" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "Max El" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "AOS Az" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "Max El Az" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "LOS Az" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Locale" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Errore" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Nome" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Descrizione" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Seleziona" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "Latitudine (°)" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Nord" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Sud" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "Longitudine (°)" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Est" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Ovest" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Stazione Meteorologica" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Codice a quattro lettere per identificare la stazione meteorologica" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Tutto OK." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "No transponders" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Nome del satellite:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "%s" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Stato operativo:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Operativo" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Non operativo" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Parzialmente operativo" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "Backup/Standby" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "Missione Estesa" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Sconosciuto" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inclinazione:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "RAAN:" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Eccentricità:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "Arg. del perigeo:" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Anomalia media:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Informazioni Orbita" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transponders" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Informazioni Satellite" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Orario" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Livello" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Messaggio" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "ATTENZIONE" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "DEBUG" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Seleziona il file di registro" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Errori" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Avvertimenti" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Debug" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Totale" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Sommario " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Acquisizione del segnale (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Perdita del segnale (LOS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Durata del passaggio" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Elevazione massima" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Azimut all'AOS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Az alla max. elevazione" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Azimut al LOS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Orbita numero" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Visibilità durante il passaggio" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polare" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Az/El" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Preferenze :: Generale" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "GPREDICT Preferenze:: Moduli" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Preferenze :: Interfaccia" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Preferenze :: Previsioni" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Generale" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Moduli" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Interfaccia" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Suggerimento" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Gpredict Preferenze :: Generale" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Ripristina le impostazioni ai valori predefiniti." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Elevazione minima" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[gradi]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Passaggi Multipli:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Numero di passaggi da calcolare" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Il numero massimo di passaggi da calcolare." #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Il passaggio deve avvenire entro" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" "Verranno mostrati solo i passaggi che avverranno entro il numero di giorni " "specificati." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[giorni]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Dettagli Passaggio:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Precisione Orario" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "Gpredict proverà a calcolare i passaggi con la precisione specificata." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[sec]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Visibilità del Satellite:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" "I satelliti sono considerati visbili solo se l'elevazione del Sole è al di " "sotto della soglia specificata.\n" " • Crepuscolo astronomico: da -18° a -12°\n" " • Crepuscolo nautico: da -12° a -6°\n" " • Crepuscolo civile: da -6° a 0°" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Livello di debug:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Elimina i file log più vecchi di:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Elimina sempre" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 giorno" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 settimana" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 mese" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Seleziona quando gpredict deve eliminare i vecchi file log." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Mostra l'orario locale invece che in UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Ritorna al valore predefinito" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Formato dell'ora:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Usa N/S/E/W come cordinate geografiche" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Usa unità di misura Imperiali invece delle unità metriche." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Formato numerico" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Log dei messaggi" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Radio" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Planisfero" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Personalizzato" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Seleziona layout:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Codice layout:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Posizione Finestra:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Ripristina la posizione della finestra principale." #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Campi Visbili:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Mappa di Sfondo:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Seleziona mappa" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Clicca per selezionare una mappa" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Contenuti Extra:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH Info" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Posizione cursore" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Visulizza la latitudine e la longitudione del puntatore" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Linee della griglia" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Colori:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Griglia:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Satellite:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Satellite Selezezionato:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Ombra:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "orbita/e" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Centra la mappa alla longitudine" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "Imposta la longitudine. Ovest è negativa." #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Layout" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Colonne Visibili:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Orientazione:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "N/E/S/O" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" "\tN\n" "O\t\tE\n" "\tS" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "N/O/S/E" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" "\tN\n" "E\t\tO\n" "\tS" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "S/E/N/O" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" "\tS\n" "O\t\tE\n" "\tN" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "S/O/N/E" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" "\tS\n" "E\t\tO\n" "\tN" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Sfondo:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Click per selezionare un colore di sfondo:" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Varie:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "Condizioni di Transito" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "Transiti Multipli" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "Transito Singolo" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "Vista del Cielo" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "QRA" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "Predefinito" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Modifica" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "Impossibile eliminare la ground station!\n" "\n" "È necessario impostare almeno una ground\n" "station, altrimenti gpredict potrebbe\n" "non funzionare correttamente." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Lista delle ground station vuota!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d: Impossibile rimuovere %s" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "%s:%d: Rimosso %s" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "Alt (ft)" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "Alt (m)" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d: Nessuna ground station selezionata!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "Località opzionale della ground station, e.s. Copenaghen, Danimarca." #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[msec]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Aggiorna la vista della mappa ogni" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Duplex" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Host" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d: Impossibile rimuovere %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "Non applicabile" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "MHz" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Aggiungi Nuovo" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Sconosciuto (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "Max Az" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "Min El" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr " Min Az" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr " Max Az" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr " Min El" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr " Max El" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Orario:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Calcola e visulizza passaggi che avvengono entro" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "ore" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Seleziona colore 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Click per selezionare un colore" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Seleziona colore 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Seleziona colore 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Seleziona colore 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Seleziona colore 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Seleziona colore 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Seleziona colore 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Seleziona colore 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Seleziona colore 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Seleziona colore 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "Auto-Aggiornamento:" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Se i TLE sono troppo vecchi:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Notifica" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Aggiorna automaticamente in background" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Aggiorna da Internet:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Server proxy:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "Inserisci l'URL del server proxy locale.\n" "http://my.proxy.com" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Visibile" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "Luce diurna" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "Eclissato" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Salva i dettagli del transito" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Salva nella cartella:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Seleziona una cartella" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Salva il file con il nome::" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Salva Transiti" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Report completo" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Riepilogo" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Formato file non valido: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Impossibile creare il file %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Impossibile creare il file %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Aggiornamento..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Satelliti aggiornati:\t %d\n" "Satelliti tralasciati:\t %d\n" "Satelliti mancanti:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Satelliti aggiornati:\t %d\n" "Satelliti tralasciati:\t %d\n" "Satelliti mancanti:\t %d\n" "Nuovi satelliti:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: Aggiunti %d nuovi satelliti al database locale" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: TLE aggiornati." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Errore nella lettura %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Impossibile aprire %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Ogni mese" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Ogni settimana" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Ogni giorno" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s contiene 0 transponder" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "Row" #~ msgstr "Riga" #~ msgid " Hour:" #~ msgstr " Ora:" #~ msgid " Min:" #~ msgstr " Minuti:" #~ msgid " Sec:" #~ msgstr " Secondi:" #~ msgid " Msec:" #~ msgstr " Millisecondi:" #~ msgid "Group" #~ msgstr "Gruppo" #~ msgid "Search" #~ msgstr "Cerca" #~ msgid "E_xit" #~ msgstr "E_sci" #~ msgid "Create a new module" #~ msgstr "Crea un nuovo modulo" #~ msgid "Open an existing module" #~ msgstr "Apri un modulo esistente" #~ msgid "Exit the program" #~ msgstr "Esci dal programma" #~ msgid "From _network" #~ msgstr "Dalla _rete" #~ msgid "Edit user preferences" #~ msgstr "Modifica le preferenze utente" #~ msgid "Online help" #~ msgstr "Guida online" #~ msgid "Show what's new in this release" #~ msgstr "Visualizza le novità di questa release" #~ msgid "Show about dialog" #~ msgstr "Mostra la finestra d'informazione" #~ msgid "Show online user manual" #~ msgstr "Visualizza la guida in linea" #~ msgid "Show the Gpredict license" #~ msgstr "Visualizza la licenza di Gpredict" #~ msgid "Create New Module" #~ msgstr "Crea un nuovo modulo" #~ msgid "Edit Module" #~ msgstr "Modifica Modulo" #~ msgid "Module Name" #~ msgstr "Nome Modulo" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Aggiungi un satellite alla lista dei satelliti selezionata" #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Rimuovi un satellite dalla lista dei satelliti selezionata" #~ msgid "Module Properties" #~ msgstr "Proprietà del Modulo" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (nesuno)" #~ msgid "Select a predefined location from a list." #~ msgstr "Seleziona una posizione predefinita da una lista." #~ msgid "Select a predefined weather station from a list." #~ msgstr "Seleziona uan stazione meteorologica predefinita da una lista." #~ msgid "Visible Columns" #~ msgstr "Colonne Visibili" #~ msgid "Click to select the grid colour" #~ msgstr "Click per selezionare un colore per la griglia" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Column Name" #~ msgstr "Nome colonna" #~ msgid "Delete the selected ground station" #~ msgstr "Elimina la ground station selezionata" #~ msgid "Edit the currently selected ground station" #~ msgstr "Modifica la ground station selezionata" gpredict/po/lt.po000066400000000000000000004024101427377236300142730ustar00rootroot00000000000000# Lithuanian translation for gpredict # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-04 01:56+0000\n" "Last-Translator: AA1VS \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " LY2SS https://launchpad.net/~zilvinas-atkociunas" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Nepavyko atverti %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Rasta mažiausiai viena .qth byla." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Nepavyko nukopijuoti sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Nukopijuotas sample.qth į %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Patikrinimas sėkmingas." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Patikrinimas nepavyko. Sukuriama %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Nepavyko sukurti %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Sukurtas %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Nepavyko nukopijuoti Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: amateur.mod nukopijuotas į %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Nepavyko nuskaityti duomenų iš %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Surasta %d palydovų faile %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat jau egzistuoja. Praleidžiamas." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Įrašomas %d naujas palydovas į user config" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Nepavyko atverti %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Nepavyko nukopijuoti %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Sėkmingai nukopijuotas %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Nepavyko nuskaityti %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Klaida skaitant %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Gpredict Info" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s iššauktas su spalva = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s iššauktas su alpha = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s iššauktas su rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s iššauktas su rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Vietinis laikas" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Azimutas" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "Elevacija" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Palydovas" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Azimutas" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Elevacija" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Nepavyko gauti duomenų #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Palydovas #%d pašalintas iš sąrašo." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Niekada" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "%s: FIXME Aš dar nerealizuotas" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "Š" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "P" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "R" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "V" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Sekantis palydovas neegzistuoja." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Kitas: ERR" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Kitas: N/A" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Always in range" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Nepavyko gauti palydovo orbitos." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Nepavyko gauti palydovo objekto." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Trajektorija" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "AOS po" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "LOS po" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr " Priėmimo dažnis " #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "Dopleris:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" "Doplerio poslinkis sutinkamai su atstumo pokyčiu ir pasirinktu priemimo " "dažniu" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "LO:" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr " Uplink " #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "%s:%s: GtkSatModule nenurodytas palydovas." #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Palydovas %d turi %d transponderių režimus." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Nepavyko atverti hwconf katalogo (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Pasirinktas neteisingas palydovas: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "%s: rastas neatitikimas transponderio duomenyse (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "%s:%s: Pasirinktas pirminis įrenginys: %d" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "%s:%d: Nepavyko paskirti atminties radijo įrangos nustatymams" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Įkrauti naujos įrangos nustatymai %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Nepavyko įkrauto įrangos nustatymų %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "%s:%s: Pasirinktas antrinis radijo įrenginys: %d" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "%s:%s: Nepavyko paskirti atminties radijo įrangos nustatymams" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "%s: Kontroleris neturi teisingų nustatymų" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Pasirinkite objektą" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Sekti" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Pasirinkite transponderį" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "S" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" "Suderinti radijo įrangą pasirinktam transponderiui. Siuntimo ir priėmimo " "dažnis bus nustatytas centriniam transponderio juostos dažniui" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" "Susieti priemimą su siuntimu. Pakeitus priėmimo dažnį irangoje ar " "valdiklyje, siuntimo dažnis bus sekamas atsižvelgiant ar transponderis yra " "invertuojantis ar ne. Atitinkamai, pakeitus siuntimo dažnį, bus sekamas ir " "priėmimo dažnis.\n" "\n" "Jei šios funkcijos įjungimo metu dažniai buvo nesusiję, einamasis priemimo " "dažnis bus panaudotas siuntimo dažnio nustatymui." #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "Azimutas:" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "Elevacija" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr "" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Atstumas tarp palydovo ir stebėtojo." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "Atstumo tarp palydovo ir stebėtojo kitimo greitis." #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Taikinys" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Klaida nuskaitant radijo įrangos nustatymus %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Įrenginys:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" "Pasirinkite pirminį radijo įrenginį. Šis įrenginys bus naudojamas ir " "priėmimui ir siuntimui jei neturite pasirinkę antrinio įrenginio siuntimui." #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Įrenginys:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" "Pasirinkite antrinį radijo įrenginį\n" "Šis įrenginys bus naudojamas siuntimui" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Nėra" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Susijungti" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Susijungti su pasirinktu radijo įrenginiu" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Ciklas:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "Vėlinimas tarp siunčiamų įrenginiui komandų." #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "milisek" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Nustatymai" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "%s:%s: Gauta 0 baitų iš rigctld" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "%s:%s: Gauta %d baitų iš rigctld" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "%s praleistas terminas" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "%s: valdiklio lock pavyko" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" "%s: nesusirišta su valdikliu; PTT įvykis ignoruojamas (Bandykite spausti " "susijungimo su įranga mygtuką)" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "%s: Aptiktas SPACEBAR klavišo paspaudimo įvykis" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "%s:%s: Klavišo reikšmė %i neaptarnaujama šios funkcijos" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Nepavyko sukurti socket" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Network socket sukurtas sėkmingai" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Nepavyko prisijungti prie %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Pavyko prisijungti prie: %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "KLAIDA" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "%s: MAX_ERROR_COUNT (%d) pasiektas. Atsijungiama nuo įrenginio!" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Užkrauti naujo sukimo įrenginio nustatymai %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "Sekti palydovą kai jis matomas" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Įrenginys:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "Pasirinkite antenos sukimo įrenginį" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "Susijungti su pasirinktu sukimo įrenginiu" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "Vėlinimas tarp komandų siunčiamų sukimo įrenginiui." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "Tolerancija" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" "Tolerancija tarp taikinio ir sukimo įrenginio reikšmių. Jei skirtumas tarp " "šių reikšmių mažesnis už toleranciją, komandos nebus siunčiamos." #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "%s: TLE duomenys %d neteisingi" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "Kitas AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "Kitas LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Platuma" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Ilguma" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Deklinacija" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Platuma" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Ilguma" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Aukštis" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Greitis" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Doplerio poslinkis prie 100MHz" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "Signalo nuostoliai esant 100MHz" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Signalo Vėlinimas" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Orbitos Numeris" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Matomumas" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Būsena:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "%s: neteisingas GtkSatList!" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr " Sekantis: %s po %s%d:%s%d%s%d " #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr " Kitas: %s po %s%d%s%d " #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Įkraunamas žemėlapis %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Žemėlapis rastas" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Nerasta žemėlapio byla %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Naudojamas žemėlapis pagal nutylėjimą: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Klaida skaitant žemėlapio bylą (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "LOS po %d min." #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "AOS po %d min." #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "Rodyti padengimą" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Pėdsakas" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Modulio nustatymai / shortcuts" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Užverti modulį." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "Atskirti modulį" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "Prijungti modulį" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Nepilnas ekranas" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Vaizdas visame ekrane" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Sky at a glance" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Laiko valdiklis" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Radijo valdiklis" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Antenos valdiklis" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Nustatymai" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Klonuoti..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Šalinti" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Uždaryti" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "Modulis negali buti derinamas kol radijo ar antenos valdiklis yra aktyvus.\n" "\n" "Please close the radio and rotator controllers and try again.\n" "Užverkite radijo ir antenos valdiklius ir bandykite vėl." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Klonuoti modulį" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Naujo modulio pavadinimas:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Įveskite trumpą modulio pavadinimą\n" "Leidžiami simboliai: 0..9, a..z, A..Z, - ir _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Atverti modulį po sukūrimo" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "Jei pažymėta, atverti modulį iškarto po jo sukūrimo" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Nerasti radijo įrenginio nustatymai!\n" "Būtina pradžiai sukurti ir suderinti įrangą." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "Gpredict Radijo Valdymas: %s" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Nėra antenų sukimo įrenginio nustatymų.\n" "Sukurkite ir suderinkite įrenginį." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "Gpredict rotatorių valdymas: %s" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Šis veiksmas galutinai ištrins\n" "%s.\n" "Ar tikrai norite tęsti?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "Pirmyn" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Stop" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "Atgal" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Atstatyti į esamą datą ir laiką" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Realus-Laikas" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Nustatykite valandą" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Nustatykite minutes" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Nustatykite sekundes" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Nustatykite milisekundes" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Rankinis valdymas" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Visi palydovai" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "Atnaujinta" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Visi palydovai" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "Pasirinkti" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Išplėsti" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Suskleisti" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Suskleisti visas šakas medyje" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "SSP Lok." #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "Dopleris 100MHz" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "Slopinimas" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "Vėlinimas" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "Vidut. Anom." #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Palydovo azimutas" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Palydovo elevacija" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "Palydovo kryptis" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Palydovo deklinacija" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Atstumas tarp palydovo ir stebėtojo" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Sekančio AOS arba LOS įvykio laikas" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Sekančio AOS laikas" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Sekančio LOS laikas" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Taško po palydovu platuma" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Taško po palydovu ilguma" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Taško po palydovu kvadratas" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Palydovo aukštis" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Tangentinis palydovo greitis" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "Signalo slopinimas prie 100 MHz" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Palydovo matomumas" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "LAIKAS" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: %s praskries %d kartų %.4f dienų laikotarpyje\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Vietovė" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Pasirinkite vietovę" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict yra grafinė palydovų sekimo realiame laike ir orbitų paskaičiavimo " "programa.\n" "Kasdieniam darbui Gpredict nereikalauja jokių komandinės eilutės nuostatų." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Žemėlapis" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Paveikslėlių bylos" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "Nėra nustatyta jokių modulių. Meniu punkto Byla -> Naujas pagalba sukurkite " "modulį." #: ../src/menubar.c:335 msgid "Module" msgstr "Modulis" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Pasirinkite modulį" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Baigta" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "TLE atnaujinimas" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Atnaujinamos TLE bylos iš tinklo" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Atnaujinta palydovų:\t 0\n" "Praleista palydovų:\t 0\n" "Trūksta palydovų:\t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Pasirinkti katalogą" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Pasirinkti TLE katalogą" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Atnaujinti TLE iš bylų" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Atnaujinami TLE iš bylų" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Išsamų PDF vartotojo vadovą ir \n" "ir video pamokas rasite \n" "Gpredict svetainėje:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Naujas modulis" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Atidaryti modulį" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Atnaujinamos TLE bylos iš tinklo" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Atnaujinti TLE iš bylų" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Nėra transponderių" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Nustatymai" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Licencija" #: ../src/menubar.c:936 msgid "_News" msgstr "_Naujienos" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_Apie Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Byla" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Keisti" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Pagalba" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "Modulis %s jau egzistuoja.\n" "Ar norite ji perrašyti?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** NUMATYTOJI **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Pasirinkti palydovai" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Pasirinkite antžeminę stotį šiam moduliui." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Sukurti naują antžeminę stotį" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Palydovai" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Pasirinkite bent vieną palydovą iš sąrašo." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Rodyti išsamiau" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Laikas" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "Trukmė" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "Vietinis" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Klaida" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Suteikite šiai antžeminėi stočiai trumpą vardą, pvz. šaukinys.\n" "Leidžiami simboliai: 0..9, a..z, A..Z, - ir _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Rinktis" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Nustatykite antžeminės stoties platumą dešimtainiais laipsniais." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Šiaurės" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Pietų" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Nustatykite antžeminės stoties ilgumą dešimtainiais laipsniais." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Rytų" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Vakarų" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "Lokatorius" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Oro stotelė" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Keturraidis oro stotelės kodas" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Antžeminės stoties duomenys" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "Įrašant duomenis į %s.qth bylą\n" "įvyko klaida!\n" "Pabandykite išsaugoti kitu vardu." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Nėra transponderių" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Invertuojantis: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Moda: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Palydovo pavadinimas:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Būsena:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "Veikiantis" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "Neveikiantis" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "Dalinai veikiantis" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "Rezervinis/budintis" #: ../src/sat-info.c:319 msgid "Spare" msgstr "Atsarginis" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Nežinoma" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Katalogo numeris:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "Elementų rinkinio numeris:" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Inklinacija:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Ekscentricitetas:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Orbitos duomenys" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Transponderiai" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Palydovo duomenys" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Laikas" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Lygis" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Pranešimas" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Didžiausia elevacija" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Az esant maks. elevacijai" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Orbitos numeris" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Polinis" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "GPREDICT Nustatymai :: Bendri" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "GPREDICT Nustatymai :: Moduliai" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "GPREDICT Nustatymai :: Prievadai" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "GPREDICT Preferences :: Paskaičiavimai" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Bendri" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Moduliai" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Sąsajos" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Gražinti nustatymams numatytasias reikšmes." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Minimali elevacija" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Elevacijos slenkstis praskriejimams\n" "Praskriejimai kurių maks. elevacija mažesnė už šią ribą, nebus rodomi." #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[laipsniai]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Keli Praskriejimai:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Praskriejimų skaičius" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Maksimalus praskriejimų skaičius" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Praskriejimai laikotarpyje" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "Bus rodomi praskriejimai nurodytame laikotarpyje." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[dienų]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Praskriejimo Detalės:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Laikas kas" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "Gpredict rodys praskriejimo detales nurodytais laiko tarpais." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[sek]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Įrašų skaičius" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "Gpredict rodys nurodytą eilučių skaičių." #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Palydovo matomumas:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Prieblandos riba" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Visada naudoti realų laiką praskriejimų paskaičiavimams" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Pažymėkite jei norite, kad Gpredict visada naudotų dabartinį (realų) laiką " "kaip pradinį laiką ateities praskriejimų paskaičiavimams.\n" "Jei nepažymėta ir Laiko Valdiklis aktyvus, jo laikas bus naudojamas kaip " "pradinis." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Įveskite laiko formato eilutę, naudodami šiuos kodus:\n" "\n" "\t%Y\tMetai.\n" "\t%m\tMėnuo (01-12).\n" "\t%d\tMėnesio diena (01-31).\n" "\t%j\tDiena metuose (001-366).\n" "\t%H\tValanda (00-23).\n" "\t%M\tMinutė (00-59).\n" "\t%S\tSekundė (00-59).\n" "\n" "Vartotojo gide galite rasti daugiau kodų ir pavyzdžių." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Rodyti atstumus naudojant Imperinę matų sistemą, pvz.: mylios vietoje " "kilometrų." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Rodyti vietos laiką (ne UTC)." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Gražinti numatytą reikšmę." #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Laiko formatas:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "Naudoti Š/P/R/W geografinėms koordinatėms." #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Naudoti Imperinę matų sistemą vietoje Metrinės." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Skaičių formatai" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Antžeminės Stotys" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Pranešimų Žurnalai" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "Radijo įranga" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "Pasukimo įranga" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "Pasaulio žemėlapis, polinis ir vienas palydovas" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Pasaulio žemėlapis" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Lentelė" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Pasaulio žemėlapis ir lentelė" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Polinis ir vienas palydovas" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Polinis ir artimiausi praskriejimai" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "Visi vaizdai (siaurai)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Visi vaizdai (plačiai)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Žemėlapis, lentelė, radaras ir vienas palydovas (platus)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Vartotojo" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Pasirinkite išdėstymą:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Išdėstymo kodas:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "Čia aprašomas modulio išdėstymo kodas.\n" "Išsamesnę informaciją kaip sukurti nuosavą išdėstymą rasite vartoto vadove." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Langų išdėstymai:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Atstatyti pagrindinio lango poziciją" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "Pažymėjus, gpredict atstatys langą į paskutinės sesijos poziciją.\n" "Langų valdikliai (window managers) gali ignoruoti šią nuostatą." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Atstatyti modulių langų pozicijas." #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "Pažymėjus, gpredict atstatys modulių langus į ankstesnę poziciją.\n" "Langų valdikliai (window managers) gali ignoruoti šią nuostatą." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "Atstatyti modulių būseną atidarant (docked or window)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "Pažymėjus, gpredict atstatys modulių būsenas į naudotas paskutinį kartą." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "Gražinti moduliams globalias numatytas reikšmes." #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Matomi stulpeliai:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Fono Žemėlapis:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Pasirinkite žemėlapį" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Pasirinkite žemėlapį" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Papildomi Duomenys:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH Informacija" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Rodyti vietovės informaciją žemėlapyje" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Rodyti koks ir kada atskries sekantis palydovas" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Koordinatės ties žymekliu" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Rodyti žymeklio koordinates" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Tinklelio linijos" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Rodyti horizontalias ir vertikalias tinklelio linijas." #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Spalvos:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Antžeminė Stotis:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Tinklelis:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Palydovas:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Pažymėt. palyd." #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Pėdsakas:" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Vietovės Padengimas" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Palydovo spalva" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Pažymėto palydovo spalva" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "Antžeminės stoties aukštis virš jūros lygio." #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: Nepavyko sukurti %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Spauskite norėdami pasirinkti spalvą" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "Matomas" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Atnaujinami duomenys..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Atnaujinta palydovų:\t %d\n" "Praleista palydovų:\t %d\n" "Trūksta palydovų:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Atnaujinta palydovų:\t %d\n" "Praleista palydovų:\t %d\n" "Trūksta palydovų:\t %d\n" "Nauji palydovai:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: TLE duomenys atnaujinti." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "Nėra naujų failų" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Siunčiama %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Klaida siunčiant %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: Sėkmingai parsiusta %s" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Klaida siunčiant %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: Parsiusta %d bylų; atnaujinama..." #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Klaida atidarant %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "%s:%s: Neteisingi duomenys %d" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Nepavyko atverti %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "%s: Nėra naujų TLE duomenų %d. Palydovas gali būti pasenęs." #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Klaida nuskaitant %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "%s: %d palydovo TLE duomenys neteisingi" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Kas mėnesį" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Kas savaitę" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Kasdien" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Laikas iki sekančio AOS ar LOS įvykio, priklausomai nuo to kuris bus " #~ "anksčiau." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Neteisingas radijo įrenginio tipas %d. Nustatoma į RIG_TYPE_RX" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "%s: Invalid VFO argument. Using VFOA." #~ msgstr "%s: Neteisingas VFO argumentas. Bus naudojamas VFOA." #~ msgid " Hour:" #~ msgstr " Val:" #~ msgid " Min:" #~ msgstr " Min:" #~ msgid " Sec:" #~ msgstr " Sek:" #~ msgid " Msec:" #~ msgstr " msek:" #~ msgid "Group" #~ msgstr "Grupė" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "Pradėkite rinkti palydovo pavadinima paieškai pasirinktoje grupėje." #~ msgid "Search" #~ msgstr "Paieška" #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "Pasirinkite palydovų grupę arba kategoriją paieškos susiaurinimui" #~ msgid "Create a new module" #~ msgstr "Sukurti naują modulį" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Atnaujinti Keplerio elementus iš vietinių bylų" #~ msgid "Exit the program" #~ msgstr "Išeiti iš programos" #~ msgid "From _network" #~ msgstr "Iš _tinklo" #~ msgid "Open the message log browser" #~ msgstr "Atidaryti pranešimų žurnalo naršyklę" #~ msgid "E_xit" #~ msgstr "Iš_eiti" #~ msgid "Open an existing module" #~ msgstr "Atidaryti modulį" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Atnaujinti Keplerio elementus iš serverio tinkle" #~ msgid "From l_ocal files" #~ msgstr "Iš _bylų" #~ msgid "Edit user preferences" #~ msgstr "Keisti vartotojo nustatymus" #~ msgid "Show about dialog" #~ msgstr "Rodyti langą apie programą" #~ msgid "Show online user manual" #~ msgstr "Rodyti vartotojo instrukciją" #~ msgid "Show what's new in this release" #~ msgstr "Rodyti kas nauja šiame leidime" #~ msgid "Online help" #~ msgstr "Pagalba" #~ msgid "Show the Gpredict license" #~ msgstr "Rodyti Gpredict licenciją" #~ msgid "Create New Module" #~ msgstr "Sukurti naują modulį" #~ msgid "Edit Module" #~ msgstr "Redaguoti modulį" #~ msgid "Ground Station" #~ msgstr "Antžeminė stotis" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Įtraukti palydovą į pasirinktų palydovų sąrašą." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Ištrinti palydovą iš pasirinktų palydovų sąrašo." #~ msgid "Module Name" #~ msgstr "Modulio pavadinimas" #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Hint: Dvigubas paspaudimas ant bet kurio\n" #~ "palydovo perkels jį į kitą langą." #~ msgid "Module Properties" #~ msgstr "Modulio nustatymai" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "GPREDICT: (none)" #~ msgstr "GPREDICT: (nieko)" #~ msgid "Row" #~ msgstr "Eilė" #~ msgid "Column Name" #~ msgstr "Stulpelio vardas" #~ msgid "Select a predefined location from a list." #~ msgstr "Rinktis vietovę iš sąrašo." #~ msgid "Select a predefined weather station from a list." #~ msgstr "Pasirinkite oro stotelę iš sąrašo." #~ msgid "Visible Columns" #~ msgstr "Matomi stulpeliai" #~ msgid "Click to select the grid colour" #~ msgstr "Tinklelio spalva" #~ msgid "Click to select ground track colour" #~ msgstr "Pėdsako spalva" gpredict/po/ru.po000066400000000000000000004664361427377236300143240ustar00rootroot00000000000000# Russian translation for gpredict # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2017-12-07 02:24+0000\n" "Last-Translator: Alexandru Csete \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Aleksey Kabanov https://launchpad.net/~ak099\n" " Alexander 'FONTER' Zinin https://launchpad.net/~spore-09\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Eugene Marshal https://launchpad.net/~lowrider\n" " Горобец Виктор (VikTHOR) https://launchpad.net/~victhor" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Невозможно открыть %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "%s: Найден как минимум один файл .qth." #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "%s: Ошибка копирования sample.qth" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "%s: Скопировано sample.qth в %s/" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Успешная проверка." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Ошибка проверки. Создание %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Невозможно создать %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Создан %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Ошибка копирования Amateur.mod" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Скопировано amateur.mod в %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: Ошибка загрузки данных из %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Найдено %d спутников за %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.sat уже существует. Будет пропущено." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "%s: Записан %d новый спутник в конфигурацию пользователя" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: Невозможно открыть %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: Ошибка копирования %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: Успешно скопирован %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "%s: Ошибка загрузки %s (%s)" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "%s: Ошибка чтения %s (%s)" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "Сведения Gpredict" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "%s:%s: %s вызвано с цветом = NULL" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "%s:%s: %s вызвано с альфой = NULL" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "%s:%s: %s вызвано с rgb = NULL" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "%s:%s: %s вызвано с rgba = NULL" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "%s: Не удалось создать конфигурационные данные (%s)." #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "%s: Не удалось создать конфигурационный файл (%s)." #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "%s: Ошибка записи конфигурационных данных (%s)." #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "%s: Конфигурация сохранена для %s." #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "Местное время" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "Азимут" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "Спутник" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "№ кат." #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "Название спутника" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "Номер в каталоге" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "Азимут" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "Возвышение" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "%s: Не удалось получить данные для #%d." #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "%s: Спутник #%d удалён из списка." #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "LOS" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "AOS" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "Никогда" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "%s:%d Не удалось получить данные для %d." #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "Используйте кнопки и колёсико мыши для изменения значения" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "%s:%d: Неправильное направление графика в полярных координатах." #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "С" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "Ю" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "В" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "З" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "%s:%d: Невозможно найти спутник (%d) в хэш таблице" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "%s:%d: Невозможно найти нажатый объект (%d) в хэш таблице" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" "Следующий: %s\n" "через %02d:%02d:%02d" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" "Следующий: %s\n" "через %02d:%02d" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "%s: Невозможно найти СЛЕДУЮЩИЙ спутник." #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "Следующий: ОШИБКА" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "Следующий: Н/Д" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" "%s\n" "Всегда в диапазоне" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "%s: Не удалось выделить память для спутника %d." #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "%s:%d: Не удалось получить проход спутника." #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "%s:%d: Проход не содержит точек." #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "%s:%d: Ошибка получения объекта спутника." #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "Небесная траектория" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr "" #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr "" #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "%s:%s: Спутник %d имеет %d режимов транспондера." #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "%s:%d: Ошибка открытия каталога hwconf (%s)" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "%s:%s: Неправильный выбор спутника: %d" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" "%s: Обнаружено несоответствие во внутренних данных транспондера (%d,%d)" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "%s:%s: Загружена новая конфигурация радио %s" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f МГц" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "%s:%s: Не удалось загрузить конфигурацию радио %s" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "Выберите конечный объект" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "Путь" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "Выберите ретранслятор" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " Диапазон:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "Это текущая дистанция между спутником и обсерваторией." #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "Объект" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "%s:%d: Ошибка при чтении конфигурации радио %s" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. Устройство:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "2. Устройство:" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "Нет" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "Задействовать" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "Задействовать выбранное радио устройство" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "Цикл:" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "Этот параметр управляет задержкой между отправками команд устройству" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "мс" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "Настройки" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "%s: ОШИБКА РАЗМЕРА %d / %d" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "%s: порт rigctld закрыт" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "%s: Не удалось создать сокет" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "%s: Сетевой сокет создан успешно" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "%s: Не удалось соединиться с %s:%d" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "%s: Открыто соединение с %s:%d" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "%s:%s: Получено 0 байтов от rotctld" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "%s:%d: rotctld вернул ошибку (%s)" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "%s:%d: rotctld вернул неверный отклик (%s)" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "ОШИБКА" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "Загружена новая конфигурация поворотного устройства %s" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "%s:%d: Не удалось загрузить конфигурацию поворотного устройства %s" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "Устройство:" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" "Этот параметр управляет задержкой между командами, отправляемыми на " "поворотное устройство." #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "След. событие" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "След. AOS" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "След. LOS" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "Шир." #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "Долг." #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "Выс." #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "Скор." #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "Фаза" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "Орбита" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "Прямое восхождение" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "Склонение" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "Наклонная дальность" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "Радиальная скорость" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "Широта" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "Долгота" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "Подспутниковая точка" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "Высота" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "Скорость" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "Доппл. сдвиг @ 100МГц" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "Задержка сигнала" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "Средняя аномалия" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "Фаза орбиты" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "Номер орбиты" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "Видимость" #: ../src/gtk-sat-list.c:109 #, fuzzy msgid "Operational Status" msgstr "Рабочее состояние:" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "%s:%d: Загрузка файла карты %s" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "%s:%d: Карта не найдена" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "%s:%d: Не удалось найти файл карты %s" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "%s:%d: Использование карты по умолчанию: %s" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "%s:%d: Ошибка при загрузке файла карты (%s)" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "%s: Создание наземной траектории для %s" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "%s: ОШИБКА: Недостаточно памяти для наземной траектории!" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "%s: Проблема при вычислении наземной траектории для %s" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "%s: Обновление наземной траектории для %s" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "%s: Удаление наземной траектории для %s" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "%s: Не удалось найти часть %d наземной траектории" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "Наземная траектория" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "%s: В компоновке %d столбцов и %d строк." #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "%s: Не удалось получить список спутников (%s)" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "%s: Ошибка чтения данных для #%d" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "%s: Спутник #%d уже в списке" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "%s: Не удалось загрузить конфигурационные данные из %s (%s)." #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "%s: Чтение конфигурации из %s" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "%s: Некорректный модуль %s." #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "%s: Проблемы с модулем %s." #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "Параметры модуля и действия с ним" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "Закрыть этот модуль." #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "%s: Модуль %s получил сигнал CLOSE." #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "%s: Модуль %s в состоянии DOCKED." #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "%s: Модуль %s в состоянии WINDOW." #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "%s: Модуль %s в состоянии FULLSCREEN." #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "%s: Модуль %s имеет неизвестное состояние: %d" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "%s: Модуль %s закрыт." #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "%s: Модуль %s получил сигнал CONFIG." #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "%s: Перезагрузка спутников для модуля %s" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "Обычный режим" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "Полноэкранный режим" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "Выбрать спутник" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "Обзор неба" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "Контроллер времени" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "Управление радио" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "Управление антенной" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "Настроить" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "Клонировать..." #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "Удалить" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "Закрыть" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" "Невозможно настроить модуль при активном контроллере радио или поворотного " "устройства.\n" "\n" "Закройте контроллеры радио и поворотного устройства и попробуйте снова." #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "Клонировать модуль" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "Имя нового модуля:" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Введите краткое название для этого модуля.\n" "Допустимые символы: 0..9, a..z, A..Z, - и _" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "Открыть модуль после создания" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "Если включено, новый модуль будет открыт после того, как будет создан" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "%s:%d: Клонирование %s => %s" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "%s:%d: Не удалось клонировать %s." #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "%s:%d: Успешно клонирован %s." #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "GPREDICT: " #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "%s:%d: Клонирование отменено пользователем." #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "%s:%d: Клонирование прервано." #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "%s:%d: Неизвестное состояние модуля: %d" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "Обзор неба (%s)" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" "Отсутствует конфигурация радио!\n" "Сначала настройте радио." #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" "Отсутствует конфигурация поворотного устройства!\n" "Сначала настройте устройство поворота антенны." #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" "Это действие необратимо удалит\n" "%s\n" "с диска.\n" "Действительно продолжить?" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "%s:%d: Не удалось удалить %s." #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "%s: Контроллер времени для %s уже активен" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "Остановить" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "Сбросить" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "Сброс к текущей дате и времени" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "Реальное время" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "Используйте эти стрелки для настройки часов" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "Используйте эти стрелки для настройки минут" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "Используйте эти стрелки для настройки минут" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "Используйте эти стрелки для настройки миллисекунд" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "%s: Контроллер времени для %s запущен" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "%s: Контроллер времени для %s закрыт. Время сброшено" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "Симуляция реального времени" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "Управление вручную" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "Доступные спутники" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "%s:%s: Не удалось открыть %s: %s" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "%s:%s: Ошибка при чтении спутника %d." #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "%s:%s: Не удалось прочитать %s" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "Все спутники" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "%s:%s: Не удалось открыть каталог satdata %s." #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "Развернуть" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "Развернуть все ветви дерева для обеспечения поиска" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "Свернуть" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "Свернуть все ветви дерева" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "%s:%d: Каталог: %s" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "%s:%d: Не найдено файлов .tle в %s." #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "%s:%d: Не удалось открыть %s (%s)" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "%s:%d: Спутник %d выбран." #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "%s:%d: Спутник %d уже выбран; пропускаю..." #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "%s:%d: Выбор спутника %d отменён." #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "%s: Спутник %d уже выбран; пропускаю..." #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "%s: Нет выбранных спутников => NULL." #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "№ орбиты" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "Азимут спутника" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "Возвышение спутника" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "Прямое восхождение спутника" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "Склонение спутника" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "Расстояние между спутником и наблюдателем" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "Время следующего AOS или LOS" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "Время следующего AOS" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "Время следующего LOS" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "Широта подспутниковой точки" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "Долгота подспутниковой точки" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "Координаты подспутниковой точки в Maidenhead Locator System" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "Диаметр покрываемой спутником зоны" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "Высота спутника" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "Тангенциальная скорость спутника" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "Видимость спутника" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "%s:%d: Невозможно обновить несуществующий спутник" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "Н/Д" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "%s:%d: Неверный номер поля (%d)" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "%s: Не удалось найти спутник с номером в каталоге %d" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "Параметры спутника / действия" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "%s::%s: Кнопка %d не имеет функции..." #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "%s:%d: Цветовой индекс вне допустимого диапазона (%d)" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "%s:%d: у %s %d проходов в течение %.4f дней\n" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "Этот модуль не содержит спутников!" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "Местоположение" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "Выберите местоположение" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "%s: Выбрано %s" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "%s: Не выбрано местоположение" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "%s: %s не существует!" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" "Gpredict — графическая программа для отслеживания спутников в реальном " "времени и предсказания орбит.\n" "Gpredict не требует никаких параметров командной строки для обычной работы." #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "Не удалось разобрать параметр: %s\n" #: ../src/main.c:131 #, fuzzy, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" "%s: Ошибка при проверке пользовательской конфигурации (код %d). Это " "фатальная ошибка.\n" "Возможное решение: удалить каталог данных .config/Gpredict\n" "в вашем каталоге пользователя" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" "Ваши TLE-файлы устарели.\n" "Их можно обновить, выбрав\n" "Правка -> Обновить TLE\n" "в строке меню." #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "%s: Очистка данных TLE в %s" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "%s: Не удалось удалить %s" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "%s: Удалено %s" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "Выбрать карту" #: ../src/map-selector.c:259 msgid "Image files" msgstr "Изображения" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "%s: Запускается конфигуратор нового модуля..." #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "%s: Имя нового модуля %s." #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "Не удалось открыть %s. Подробности смотрите в журнале сообщений." #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "%s: Отменено конфигурирование нового модуля." #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "%s:%s: Сканирование модулей в каталоге %s." #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "%s:%d: Не удалось открыть каталог модулей %s (%s)" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" "Не установлено ни одного модуля. Используйте Файл->Создать для создания " "модуля." #: ../src/menubar.c:335 msgid "Module" msgstr "Модуль" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "Выбрите модуль" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "%s:%s: Выбран модуль: %s" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "%s:%s: Ничего не выбрано в списке модулей." #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "%s: Открыть существующий модуль..." #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "%s: Открыть модуль %s." #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "%s: Открытие модуля отменено." #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "Завершено" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "Обновление TLE" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "Обновление файлов TLE из сети" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" "Обновлено спутников:\t 0\n" "Пропущено спутников:\t 0\n" "Отсутствует спутников:\t 0\n" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "Выберите каталог" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "Выберите каталог TLE:" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "Обновление TLE из файлов" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "%s: Запуск обновления TLE из %s" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "Обновление файлов TLE из файлов" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" "Полное руководство пользователя в\n" "формате PDF и видеоуроки доступны на \n" "веб-сайте Gpredict:" #: ../src/menubar.c:849 msgid "_New module" msgstr "_Создать модуль" #: ../src/menubar.c:856 msgid "_Open module" msgstr "_Открыть модуль" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "_Просмотр журнала" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 #, fuzzy msgid "Update TLE data from _network" msgstr "Обновление файлов TLE из сети" #: ../src/menubar.c:896 #, fuzzy msgid "Update TLE data from local _files" msgstr "Обновление TLE из файлов" #: ../src/menubar.c:901 #, fuzzy msgid "Update transponder data" msgstr "Нет транспондеров" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "_Параметры" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "_Лицензия" #: ../src/menubar.c:936 msgid "_News" msgstr "_Новости" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "_О Gpredict" #: ../src/menubar.c:963 msgid "_File" msgstr "_Файл" #: ../src/menubar.c:969 msgid "_Edit" msgstr "_Правка" #: ../src/menubar.c:975 msgid "_Help" msgstr "_Справка" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "%s: Уже есть модуль %s. Прошу пользователя подтвердить..." #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" "Уже имеется модуль с именем %s.\n" "Вы хотите заменить его?" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "%s:%s: Не удалось получить элемент %d списка спутников" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "** ПО УМОЛЧАНИЮ **" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" "%s:%d: Не удалось открыть конфигурационный каталог пользователя %s (%s)" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "Выбранные спутники" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "Выберите наземную станцию для этого модуля." #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "Добавить новую наземную станцию" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "Спутники" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "%s: Изменения применены к %s." #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "%s: Ошибка при сохранении данных модуля (%d)." #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "%s: Пользователь пытается создать модуль без спутников." #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "Выберите хотя бы один спутник из списка." #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "%s: Попытка сохранения данных с пустым именем файла." #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "%s: Не удалось прочитать логическое значение (%s)" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "%s: Не удалось прочитать целочисленное значение (%s)" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "%s: Не удалось прочитать строку (%s)" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "%s: Не удалось получить целочисленный список: %s" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "%s: Не удалось восстановить %s" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "%s: Нет модулей для восстановления." #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "%s: Модуль %s не найден в списке. Пытаюсь восстановить." #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "Показать подробности" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "Полярный вид" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr " Время" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr " Шир. " #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr " Долг. " #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr " Выс. " #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr " Скор. " #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr " AOS" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr " TCA" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr " LOS" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" "Детали прохода для %s (орбита %d)\n" "Наблюдатель: %s, %s\n" "ШИР:%.2f ДОЛГ:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" "Предстоящие проходы для %s\n" "Наблюдатель: %s, %s\n" "ШИР:%.2f ДОЛГ:%.2f\n" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "%s: Найдено %d проходов для %s в окне времени [%f;%f]" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "Детали прохода для %s (орбита %d)" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "%s: Не удалось загрузить данные из %s (%s)" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "%s: данные QTH: %s" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "%s: Не удалось открыть gpsd на %s:%d" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "Ошибка" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "%s:%d: Ошибка преобразования шир./долг. в QTH-локатор" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "%s:%d: неверный QTH-локатор: %s" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "Имя" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Введите краткое имя для этой наземной станции, например, callsign.\n" "Допустимые символы: 0..9, a..z, A..Z, - и _" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "Описание" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "Введите необязательное описание этой наземной станции." #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" "Необязательное местонахождение наземной станции, например: Копенгаген, Дания." #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "Выбрать" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "Выберите широту наземной станции в градусах." #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "Северная" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "Южная" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "Выберите долготу наземной станции в градусах." #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "Восточная" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "Западная" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "QTH-локатор" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "Код местоположения в системе Maidenhead Locator System" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "Метеост." #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "Четырёхбуквенный код для метеостанции" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "Тип QTH" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "Сервер GPSD" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "Сервер GPSD." #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "Порт GPSD" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "Укажите порт GPSD. По умолчанию для gpsd используется 2947." #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "Редактирование данных наземной станции" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" "Ошибка при попытке сохранения\n" "данных наземной станции в %s.qth!\n" "Попробуйте снова с другим именем." #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "%s: Не удалось загрузить файл %s\n" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "%s: Ошибка чтения конфигурации радио из %s (%s)." #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "%s: Ошибка чтения конфигурации поворотного устройства из %s (%s)." #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "%s: Ошибка чтения конфигурационного файла (%s)" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "%s: Использование встроенных умолчаний" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "%s: Всё в порядке." #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "%s: Модуль не инициализирован\n" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "Нет транспондеров" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "Приём: %.4f МГц" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "Передача: %.4f МГц" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "Инверсия: %s" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "Режим: %s" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "Имя спутника:" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "Рабочее состояние:" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "Неизвестно" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "Номер в каталоге:" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "Международное обозначение:" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "Наклонение:" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "Эксцентриситет:" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "Арг. перицентра:" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "Средняя аномалия:" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "Орбита" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "Транспондеры" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "Информация о спутнике" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "Время" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "Уровень" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "Сообщение" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "НЕТ" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "ПРЕДУПРЕЖДЕНИЕ" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "ИНФОРМАЦИЯ" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "ОТЛАДКА" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "Файл журнала повреждён" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "%s:%d: Ошибка при открытии журнала отладки (%s)" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "Выберите файл журнала" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "Обозреватель журнала: %s" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "Обозреватель журнала" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "Ошибки" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "Предупр." #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "Информация" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "Отладка" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "Всего" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr " Резюме " #: ../src/sat-log.c:60 msgid " --- " msgstr " --- " #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "ОШИБКА: Не удалось создать %s\n" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" "\n" "\n" "ОШИБКА: Не удалось создать %s\n" "%s\n" "\n" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "%s: Сеанс начат" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "%s: Сеанс закончен" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "TCA" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "Получение сигнала (AOS)" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "Время макс. приближения (TCA)" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "Потеря сигнала (LOS)" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "Длительность прохода" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "Макс. возвышение" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "Азимут при AOS" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "Аз. при макс. возвышении" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "Азимут при LOS" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "Номер орбиты" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "Видимость при проходе" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "Данные" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "Полярный" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "Аз./Возв." #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "Предстоящие проходы %s" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "%s: ПЕЧАТЬ не реализована" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "Настройки GPREDICT :: Общие" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "Настройки GPREDICT :: Модули" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "Настройки GPREDICT :: Интерфейсы" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "Настройки GPREDICT :: Прогноз" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "Общие" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "Модули" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "Интерфейсы" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "Прогноз" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "Настройки Gpredict :: Общие" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "Сбросить настройки к значениям по умолчанию." #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "Мин. возвышение" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" "Порог возвышения для проходов.\n" "Проходы с макс. возвышением ниже этого порога не будут включены" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "[°]" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "Множественные проходы:" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "Число проходов для прогноза" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "Максимальное количество прогнозируемых проходов." #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "Проходы в течение" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" "Будут показаны только проходы, которые произойдут в течение указанного " "количества дней." #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "[дней]" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "Детали прохода:" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "Временное разрешение" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" "Gpredict постарается показывать детали прохода с указанным разрешением по " "времени." #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "[сек.]" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "Число записей" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" "Gpredict постарается уложиться в указанный лимит количества строк в " "детальном прогнозе." #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "Видимость спутника:" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "Сумеречный порог" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "Всегда использовать реальное время для прогноза прохода" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" "Установите этот флажок, если хотите, чтобы Gpredict всегда использовал " "текущее (реальное) время в качестве начального времени при предсказании " "предстоящих проходов спутников.\n" "\n" "Если флажок не установлен и контроллер времени активен, то Gpredict будет " "использовать для прогноза время из контроллера времени." #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "Уровень отладки:" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "Уровень 0: нет" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "Уровень 1: ошибки" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "Уровень 2: предупреждения" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "Уровень 3: Информация" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "Уровень 4: отладка" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" "Выберите уровень отладочных сообщений. Чем выше уровень, тем больше " "сообщений будет записываться в журнал." #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "Удалить журналы старше, чем:" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "Всегда удалять" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "1 день" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "1 неделя" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "1 месяц" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "Выберите, как часто gpredict должен удалять старые файлы журналов." #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" "Введите строку формата, используя следующие коды:\n" "\n" "\t%Y\tГод.\n" "\t%m\tМесяц (01-12).\n" "\t%d\tДень месяца (01-31).\n" "\t%j\tДень года (001-366).\n" "\t%H\tЧасы (00-23).\n" "\t%M\tМинуты (00-59).\n" "\t%S\tСекунды (00-59).\n" "\n" "See the user manual for more codes and examples." #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" "Отображать расстояния в английских единицах, например, в милях вместо " "километров." #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "Показывать местное время вместо UTC." #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "Сброс к значению по умолчанию" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "Формат времени:" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "Использовать английские единицы вместо метрических." #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "Числовые форматы" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "Наземные станции" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "Журналы сообщений" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "Карта, полярный вид и отдельный спутник" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "Карта" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "Таблица" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "Карта и таблица" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "Полярный вид и отдельный спутник" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "Полярный вид и предстоящие проходы" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "Все виды (узкая)" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "Все виды (широкая)" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "Карта, таблица, полярный вид и отд. спутник (широкая)" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "Пользовательская" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "Выберите компоновку:" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "Код компоновки:" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" "Это поле содержит код компоновки для модуля.\n" "О создании пользовательских компоновок по кодам читайте в руководстве " "пользователя." #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "Положение окна:" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "Восстановить позицию главного окна" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" "Если включено, gpredict попытается поместить главное окно в позицию, " "занимаемую им в прошлом сеансе работы.\n" "Заметьте, что оконные менеджеры могут проигнорировать этот запрос." #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "Восстановить позицию окон модулей" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" "Если включено, gpredict разместить окна модулей так, как они размещались в " "последний раз.\n" "Заметьте, что оконные менеджеры могут проигнорировать этот запрос." #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "Восстановить состояние модулей (прикреплённые или в отдельных окнах)" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" "Если включено, gpredict восстановит те состояния модулей, которые были при " "последнем их использовании." #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "Видимые поля:" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "Фоновая карта:" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "Выбрать карту" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "Щёлкните для выбора карты" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "Дополнительное содержимое:" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "QTH-информация" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "Показывать информацию о местоположении на карте" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "Показывать, какие спутники появятся следующими, и в какое время" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "Положение указателя" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "Показывать широту и долготу указателя мыши" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "Линии сетки" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "Показывать горизонтальные и вертикальные линии сетки" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "Цвета:" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "Наземная станция:" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "Сетка:" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "Спутник:" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "Выдел. спутник:" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "Наземн. траект.:" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "Зона покрытия:" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "Инф. текст:" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "Фон текста:" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "Солн. терминатор:" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "Тень:" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "Показывать наземную траекторию для" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "орбит(ы)" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "Центрировать карту по долготе" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "Выберите долготу. Западная — отрицательная." #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "Компоновка" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "Частота обновления" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "Список" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "Карта" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "Полярный вид" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "Отдельный спутник" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "Видимые столбцы:" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "Ориентация:" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "С/В/Ю/З" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" "\tС\n" "З\t\tВ\n" "\tЮ" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "С/З/Ю/В" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" "\tС\n" "В\t\tЗ\n" "\tЮ" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "Ю/В/С/З" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" "\tЮ\n" "З\t\tВ\n" "\tС" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "Ю/З/С/В" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" "\tЮ\n" "В\t\tЗ\n" "\tС" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "%f:%d: неверная ориентация полярного вида (%d)" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "Показывать информацию о местоположении на полярном виде" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "Показывать, какие спутники появятся следующими, и в какое время" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "Показывать азимут и возвышение указателя мыши" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "Доп. деления азимута" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "Фон:" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "Щёлкните, чтобы выбрать цвет фона" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "Оси и круги:" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "Щёлкните, чтобы выбрать цвет осей" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "Щёлкните, чтобы выбрать цвет спутника" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "Щёлкните, чтобы выбрать цвет выделенных спутников" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "Небесн. траект.:" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "Щёлкните, чтобы выбрать цвет небесной траектории" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "Инф. текст:" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "Прочее:" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "Автоматически отображать небесные траектории" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" "Автоматически отображать небесную траекторию спутника, когда он войдёт в " "зону видимости. Вы всегда можете отключить показ траектории для каждого " "отдельного объекта" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" "Сервер\n" "GPSD" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" "Порт\n" "GPSD" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "%s:%d: Не удалось открыть конфигурационный каталог пользователя (%s)" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "%s:%d: Не удалось выделить память!\n" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "Добавить новую наземную станцию в список" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "Изменить" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" "Не удалось удалить наземную станцию!\n" "\n" "В списке должна остаться хотя бы одна\n" "наземная станция, иначе gpredict\n" "может работать неправильно." #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "%s:%d: Пустой список наземных станций!" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "%s:%d: Не удалось удалить %s" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "%s:%d: Не выбрана наземная станция!" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" "Укажите высоту наземной станции в метрах или футах, в зависимости от ваших " "настроек" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "Обновлять данные каждые" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "[мс]" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "Обновлять список каждые" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "[циклов]" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "Обновлять карту каждые" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "Обновлять полярный вид каждые" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "Обновлять односпутниковый вид каждые" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "%s:%d: Не удалось прочитать %s" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "Дуплекс" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "Хост" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "Порт" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s:%d: Не удалось удалить %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" "Введите краткое имя для этой конфигурации, например, IC910-1.\n" "Допустимые символы: 0..9, a..z, A..Z, - и _" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "МГц" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" "Выберите поворотное устройство, которое хотите изменить\n" "и попробуйте снова!" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" "Выберите поворотное устройство, которое хотите удалить\n" "и попробуйте снова!" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "Добавить" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "Неизвестно (%d)" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "Тип азимута" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" "Введите имя хоста, где запущен rotctld. Можно указать имя хоста или IP-" "адрес, например, 192.168.1.100\n" "\n" "Если gpredict и rotctld работают на одном компьютере, используйте localhost" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" "Введите номер порта, на котором ожидает соединения rotctld. По умолчанию " "4533." #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "Изменить параметры поворотного устройства" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "Время:" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "Найти и показать проходы, которые произойдут в течение" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "часов" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "Выберите цвет 1" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "Щёлкните для выбора цвета" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "Выберите цвет 2" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "Выберите цвет 3" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "Выберите цвет 4" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "Выберите цвет 5" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "Выберите цвет 6" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "Выберите цвет 7" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "Выберите цвет 8" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "Выберите цвет 9" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "Выберите цвет 10" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "Проверить возраст TLE-данных:" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "Если TLE устарели:" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "Уведомить меня" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "Выполнить автоматическое фоновое обновление" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "Обновление через Интернет:" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "Прокси-сервер:" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" "Введите URL локального прокси-сервера, например\n" "http://my.proxy.com" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "Добавить новые спутники в локальную базу данных" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "Сохранить детали прохода" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "Сохранить в папке:" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "Выберите папку" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "Имя файла:" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "Содержимое:" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "Инфо+заголовок+данные" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "Заголовок + данные" #: ../src/save-pass.c:170 msgid "Data only" msgstr "Только данные" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "Сохранить проходы" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "Полный отчёт" #: ../src/save-pass.c:314 msgid "Summary" msgstr "Сводка" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "%s: Недопустимый формат файла: %d" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "%s: Не удалось создать файл %s (%s)" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" "Не удалось создать файл %s\n" "\n" "%s" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "%s: Ошибка при сохранении данных в %s (%s)" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" "Ошибка при сохранении данных в %s\n" "\n" "%s" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "%s: Записано %d символов в %s" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "%s: Процесс обновления TLE уже запущен. Прерывание." #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "%s: Ошибка при открытии каталога %s (%s)" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" "ОШИБКА при открытии каталога %s\n" "%s" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "Чтение данных из %s" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "Обновление данных..." #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" "Спутников обновлено:\t %d\n" "Спутников пропущено:\t %d\n" "Отсутствует спутников:\t %d\n" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" "Спутников обновлено:\t %d\n" "Спутников пропущено:\t %d\n" "Отсутствует спутников:\t %d\n" "Новые спутники:\t\t %d" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "%s: Добавлено %d новых спутников в локальную базу данных" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "%s: Элементы TLE обновлены." #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "%s: Нет файлов для получения из сети." #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "Нет файлов для получения из сети" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "Получение %s" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, fuzzy, c-format msgid "%s: Error fetching %s (%x)" msgstr "%s: Ошибка получения %s (%s)" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "%s: Получено успешно %s" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "%s: Ошибка получения %s (%s)" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "%s: Получено %d файлов из сети; обновление..." #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "%s: Ошибка при открытии %s (%s)" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "%s:%s: Не удалось переоткрыть файл .cat при чтении TLE из %s" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "%s:%s: Два разных статуса для %d (%s) одновременно." #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "%s:%s: Не удалось открыть %s" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "%s: Ошибка при загрузке %s (%s)" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "Ежемесячно" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "Еженедельно" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "Ежедневно" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "%s: Ошибка чтения %s: %s" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "%s: %s содержит 0 транспондеров" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" #~ msgid "Create a new module" #~ msgstr "Создать новый модуль" #~ msgid "Open an existing module" #~ msgstr "Открыть существующий модуль" #~ msgid "%s: %s rigctld returned error (%s)" #~ msgstr "%s: %s rigctld вернул ошибку (%s)" #~ msgid " Hour:" #~ msgstr " Часы:" #~ msgid " Min:" #~ msgstr " Мин.:" #~ msgid " Sec:" #~ msgstr " Сек.:" #~ msgid " Msec:" #~ msgstr " мс:" #~ msgid "Select a satellite group or category to narrow your search." #~ msgstr "Выберите группу спутников или категорию для сужения поиска." #~ msgid "Group" #~ msgstr "Группа" #~ msgid "" #~ "Start typing in this field to search for a satellite in the selected " #~ "group." #~ msgstr "" #~ "Начните набирать в этом поле, чтобы найти спутник в выбранной группе." #~ msgid "Search" #~ msgstr "Поиск" #~ msgid "Exit the program" #~ msgstr "Выйти из программы" #~ msgid "From _network" #~ msgstr "Из _сети" #~ msgid "Open the message log browser" #~ msgstr "Открыть обозреватель журнала сообщений" #~ msgid "E_xit" #~ msgstr "В_ыйти" #~ msgid "From l_ocal files" #~ msgstr "Из _локальных файлов" #~ msgid "Edit user preferences" #~ msgstr "Редактировать настройки пользователя" #~ msgid "Show what's new in this release" #~ msgstr "Показать, что нового в этом выпуске" #~ msgid "Online help" #~ msgstr "Справка в Интернете" #~ msgid "Show online user manual" #~ msgstr "Показать онлайн-справку" #~ msgid "Show the Gpredict license" #~ msgstr "Показать лицензию Gpredict" #~ msgid "Failed to build menubar: %s" #~ msgstr "Не удалось создать строку меню: %s" #~ msgid "Show about dialog" #~ msgstr "Показать информацию об этом приложении" #~ msgid "Ground Station" #~ msgstr "Наземная станция" #~ msgid "Create New Module" #~ msgstr "Создать новый модуль" #~ msgid "Module Name" #~ msgstr "Имя модуля" #~ msgid "Add satellite to list of selected satellites." #~ msgstr "Добавить спутник в список выбранных спутников." #~ msgid "Remove satellite from the list of selected satellites." #~ msgstr "Удалить спутник из списка выбранных спутников." #~ msgid "" #~ "Hint: Double click on any satellite\n" #~ "to move it to the other box." #~ msgstr "" #~ "Подсказка: Двойной щелчок на спутнике\n" #~ "переместит его в соседний список." #~ msgid "Module Properties" #~ msgstr "Свойства модуля" #~ msgid "GPREDICT: %s" #~ msgstr "GPREDICT: %s" #~ msgid "Colour for satellite 7: " #~ msgstr "Цвет для спутника 7: " #~ msgid "Colour for satellite 8: " #~ msgstr "Цвет для спутника 8: " #~ msgid "Colour for satellite 9: " #~ msgstr "Цвет для спутника 9: " #~ msgid "Colour for satellite 10: " #~ msgstr "Цвет для спутника 10: " #~ msgid "Colour for satellite 6: " #~ msgstr "Цвет для спутника 6: " #~ msgid "Colour for satellite 2: " #~ msgstr "Цвет для спутника 2: " #~ msgid "Colour for satellite 3: " #~ msgstr "Цвет для спутника 3: " #~ msgid "Colour for satellite 4: " #~ msgstr "Цвет для спутника 4: " #~ msgid "Colour for satellite 5: " #~ msgstr "Цвет для спутника 5: " #~ msgid "Colour for satellite 1: " #~ msgstr "Цвет для спутника 1: " #~ msgid "Add a new rotator to the list" #~ msgstr "Добавить новое поворотное устройство в список" #~ msgid "Edit the currently selected rotator" #~ msgstr "Изменить текущее поворотное устройство" #~ msgid "Delete the selected rotator" #~ msgstr "Удалить выбранное поворотное устройство" #~ msgid "Delete the selected ground station" #~ msgstr "Удалить выделенную наземную станцию" #~ msgid "Edit the currently selected ground station" #~ msgstr "Редактировать выделенную наземную станцию" #~ msgid "Update Keplerian elements from local files" #~ msgstr "Обновить Кеплеровы элементы орбит из локальных файлов" #~ msgid "Update Keplerian elements from a network server" #~ msgstr "Обновить Кеплеровы элементы орбит с сетевого сервера" #~ msgid "Edit Module" #~ msgstr "Редактировать модуль" #~ msgid "Select a predefined location from a list." #~ msgstr "Выбрать готовое местоположение из списка." #~ msgid "m above sea level" #~ msgstr "м над уровнем моря" #~ msgid "ft above sea level" #~ msgstr "футов над уровнем моря" #~ msgid "Select a predefined weather station from a list." #~ msgstr "Выбрать метеостанцию из списка." #~ msgid "" #~ "The time remaining until the next AOS or LOS event, depending on which " #~ "one comes first." #~ msgstr "" #~ "Время, остающееся до следующего AOS или LOS, в зависимости от того, какое " #~ "из событий произойдёт первым." #~ msgid "%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" #~ msgstr "%s: Неверный тип радио %d. Будет назначен тип RIG_TYPE_RX" #~ msgid "Column Name" #~ msgstr "Имя столбца" #~ msgid "Visible Columns" #~ msgstr "Видимые столбцы" #~ msgid "Click to select the grid colour" #~ msgstr "Щёлкните, чтобы выбрать цвет сетки" #~ msgid "Click to select ground track colour" #~ msgstr "Щёлкните, чтобы выбрать цвет наземной траектории" #~ msgid "Colour for coverage Area (make it transparent)" #~ msgstr "Цвет зоны покрытия спутника (сделайте её прозрачной)" #~ msgid "Click to select info text background colour" #~ msgstr "Щёлкните, чтобы выбрать цвет фона информационного текста" #~ msgid "Click to select terminator colour" #~ msgstr "Щёлкните, чтобы выбрать цвет солнечного терминатора" #~ msgid "Click to select info text foreground colour" #~ msgstr "Щёлкните, чтобы выбрать цвет информационного текста" #~ msgid "Transparent" #~ msgstr "Прозрачная" #~ msgid "Strong" #~ msgstr "Сплошная" #~ msgid "" #~ "Specifies how strong the shadow under the satellite marker should be. The " #~ "shadow improves the visibility of the satellites where the colour of the " #~ "background is light, e.g. the South Pole.\n" #~ "\n" #~ "Transparent corresponds to no shadow." #~ msgstr "" #~ "Определяет прозрачность тени под маркером спутника. Тень улучшает " #~ "видимость спутников на участках светлого фона, например, на южном " #~ "полюсе.\n" #~ "\n" #~ "Максимальная прозрачность соответствует отсутствию тени." gpredict/po/th.po000066400000000000000000003455071427377236300143040ustar00rootroot00000000000000# Thai translation for gpredict # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2013-08-18 14:17+0000\n" "Last-Translator: Alexandru Csete \n" "Language-Team: Thai \n" "Language: th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Alexandru Csete https://launchpad.net/~alexc\n" " Gpredict Team https://launchpad.net/~gpredict-team\n" " Krit Marukawisutthigul https://launchpad.net/~kritmaru\n" " Worachate Boonplod https://launchpad.net/~worachateb" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: ไม่สามารถเปิด %s." #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "" #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: ตรวจเช็คเรียบร้อย." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: ตรวจเช็คล้มเหลว. กำลังสร้าง %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: ล้มเหลวต่อการสร้าง %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: สร้างแล้ว %s." #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "%s: ล้มเหลวในการโหลดข้อมูลจาก %s (%s)" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: พบดาวเทียม %d ดวง ใน %s ดวง" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "" #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "%s: ไม่สามารถเปิด %s (%s)." #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "%s: ล้มเหลวในการสำเนา %s" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "%s: สำเนาเรียบร้อยแล้ว %s" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "เวลาท้องถิ่น" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "UTC" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "มุมทิศ" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "เหนือ" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "ใต้" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "ตะวันออก" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "ตะวันตก" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "" #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr "" #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "ดอปเพลอร์:" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr "" #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "%.0f MHz" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr " ระยะห่าง:" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "เป้าหมาย" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "1. อุปกรณ์:" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "มิลลิวินาที" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 msgid "Update transponder data" msgstr "" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: ล้มเหลวต่อการสร้าง %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, c-format msgid "%s: Error fetching %s (%x)" msgstr "" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" gpredict/po/uk.po000066400000000000000000003444631427377236300143100ustar00rootroot00000000000000# Ukrainian translation for gpredict # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the gpredict package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: gpredict\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-18 17:02+0200\n" "PO-Revision-Date: 2012-04-12 19:29+0000\n" "Last-Translator: Горобец Виктор (VikTHOR) \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" "X-Launchpad-Export-Date: 2018-01-05 22:12+0000\n" "X-Generator: Launchpad (build 18521)\n" #. create window title and file name for window icon #: ../src/about.c:94 ../src/main.c:223 msgid "Gpredict" msgstr "" #: ../src/about.c:97 msgid "Copyright (C) 2001-2017 Alexandru Csete OZ9AEC and contributors" msgstr "" #: ../src/about.c:110 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " AA1VS https://launchpad.net/~hamaa1vs\n" " Горобец Виктор (VikTHOR) https://launchpad.net/~victhor" #: ../src/first-time.c:179 #, c-format msgid "%s: Could not open %s." msgstr "%s: Неможливо відкрити %s" #: ../src/first-time.c:202 #, c-format msgid "%s: Found at least one .qth file." msgstr "" #: ../src/first-time.c:253 #, c-format msgid "%s: Failed to copy sample.qth" msgstr "" #: ../src/first-time.c:260 #, c-format msgid "%s: Copied sample.qth to %s/" msgstr "" #: ../src/first-time.c:297 ../src/first-time.c:404 ../src/first-time.c:675 #: ../src/first-time.c:723 ../src/first-time.c:797 #, c-format msgid "%s: Check successful." msgstr "%s: Перевірка пройшла успішно." #: ../src/first-time.c:303 ../src/first-time.c:410 ../src/first-time.c:681 #: ../src/first-time.c:729 ../src/first-time.c:803 #, c-format msgid "%s: Check failed. Creating %s" msgstr "%s: Перевірка провалена. Створення %s" #: ../src/first-time.c:313 ../src/first-time.c:419 ../src/first-time.c:690 #: ../src/first-time.c:738 ../src/first-time.c:811 #, c-format msgid "%s: Failed to create %s" msgstr "%s: Провалено створення %s" #: ../src/first-time.c:318 ../src/first-time.c:425 ../src/first-time.c:696 #: ../src/first-time.c:743 ../src/first-time.c:817 #, c-format msgid "%s: Created %s." msgstr "%s: Створено %s" #: ../src/first-time.c:369 #, c-format msgid "%s: Failed to copy Amateur.mod" msgstr "%s: Копіювання файлу Amateur.mod провалено" #: ../src/first-time.c:376 #, c-format msgid "%s: Copied amateur.mod to %s/" msgstr "%s: Копіювання amateur.mod до %s/" #: ../src/first-time.c:445 msgid "Copying satellite data to user config" msgstr "" #: ../src/first-time.c:458 ../src/gtk-sat-data.c:74 #, c-format msgid "%s: Failed to load data from %s (%s)" msgstr "" #: ../src/first-time.c:468 #, c-format msgid "%s: Found %d satellites in %s" msgstr "%s: Знайдено %d супутників в %s" #: ../src/first-time.c:478 #, c-format msgid "%s: %s.sat already exists. Skipped." msgstr "%s: %s.супутник вже існує. Пропущено." #: ../src/first-time.c:539 #, c-format msgid "%s: Written %d new satellite to user config" msgstr "" #: ../src/first-time.c:557 msgid "Copying satellite categories to user config" msgstr "" #: ../src/first-time.c:568 #, c-format msgid "%s: Could not open %s (%s)." msgstr "" #: ../src/first-time.c:599 #, c-format msgid "%s: Failed to copy %s" msgstr "" #: ../src/first-time.c:605 #, c-format msgid "%s: Successfully copied %s" msgstr "" #: ../src/gpredict-help.c:74 #, c-format msgid "%s: Failed to load %s (%s)" msgstr "" #: ../src/gpredict-help.c:86 #, c-format msgid "%s: Error reading %s (%s)" msgstr "" #. create and show dialogue with textbuffer #: ../src/gpredict-help.c:122 msgid "Gpredict Info" msgstr "" #: ../src/gpredict-utils.c:245 ../src/gpredict-utils.c:284 #: ../src/gpredict-utils.c:332 ../src/gpredict-utils.c:375 #, c-format msgid "%s:%s: %s called with color = NULL" msgstr "" #: ../src/gpredict-utils.c:291 #, c-format msgid "%s:%s: %s called with alpha = NULL" msgstr "" #: ../src/gpredict-utils.c:339 #, c-format msgid "%s:%s: %s called with rgb = NULL" msgstr "" #: ../src/gpredict-utils.c:382 #, c-format msgid "%s:%s: %s called with rgba = NULL" msgstr "" #: ../src/gpredict-utils.c:508 #, c-format msgid "%s: Could not create config data (%s)." msgstr "" #: ../src/gpredict-utils.c:522 #, c-format msgid "%s: Could not create config file (%s)." msgstr "" #: ../src/gpredict-utils.c:540 #, c-format msgid "%s: Error writing config data (%s)." msgstr "" #: ../src/gpredict-utils.c:550 #, c-format msgid "%s: Wrote only %d out of %d chars." msgstr "" #: ../src/gpredict-utils.c:558 #, c-format msgid "%s: Configuration saved for %s." msgstr "" #: ../src/gpredict-utils.c:592 ../src/gpredict-utils.c:610 #: ../src/gpredict-utils.c:628 ../src/gpredict-utils.c:646 #, c-format msgid "%s called with gdk_rgba = NULL" msgstr "" #: ../src/gtk-azel-plot.c:545 msgid "Local Time" msgstr "" #: ../src/gtk-azel-plot.c:555 ../src/gtk-sky-glance.c:521 #: ../src/pass-to-txt.c:155 msgid "UTC" msgstr "" #. Az legend #: ../src/gtk-azel-plot.c:573 ../src/gtk-event-list.c:52 #: ../src/gtk-sat-list.c:52 ../src/sat-pass-dialogs.c:99 msgid "Az" msgstr "" #. El legend #: ../src/gtk-azel-plot.c:582 ../src/gtk-event-list.c:53 #: ../src/gtk-sat-list.c:53 ../src/sat-pass-dialogs.c:100 msgid "El" msgstr "" #: ../src/gtk-event-list.c:50 ../src/gtk-sat-list.c:50 #: ../src/gtk-sat-tree.c:177 msgid "Satellite" msgstr "" #: ../src/gtk-event-list.c:51 ../src/gtk-sat-list.c:51 #: ../src/gtk-sat-selector.c:466 ../src/gtk-sat-tree.c:187 ../src/mod-cfg.c:522 msgid "Catnum" msgstr "" #: ../src/gtk-event-list.c:54 msgid "Event" msgstr "" #: ../src/gtk-event-list.c:55 msgid "AOS/LOS" msgstr "" #: ../src/gtk-event-list.c:56 ../src/gtk-sat-list.c:75 #: ../src/gtk-sat-list.c:108 msgid "Decayed" msgstr "" #. should never be seen #: ../src/gtk-event-list.c:57 ../src/gtk-sat-list.c:77 msgid "BOLD" msgstr "" #: ../src/gtk-event-list.c:62 ../src/gtk-sat-list.c:83 msgid "Satellite Name" msgstr "" #: ../src/gtk-event-list.c:63 ../src/gtk-sat-list.c:84 msgid "Catalogue Number" msgstr "" #: ../src/gtk-event-list.c:64 ../src/gtk-rot-ctrl.c:646 #: ../src/gtk-sat-list.c:85 ../src/gtk-single-sat.c:45 #: ../src/sat-pass-dialogs.c:122 msgid "Azimuth" msgstr "" #: ../src/gtk-event-list.c:65 ../src/gtk-rot-ctrl.c:681 #: ../src/gtk-sat-list.c:86 ../src/gtk-single-sat.c:46 #: ../src/sat-pass-dialogs.c:123 msgid "Elevation" msgstr "" #: ../src/gtk-event-list.c:66 msgid "Next event type (A: AOS, L: LOS)" msgstr "" #: ../src/gtk-event-list.c:67 msgid "Countdown until next event" msgstr "" #: ../src/gtk-event-list.c:374 #, c-format msgid "%s: Invalid GtkEventList!" msgstr "" #: ../src/gtk-event-list.c:440 ../src/gtk-sat-list.c:588 #, c-format msgid "%s: Failed to get data for #%d." msgstr "" #: ../src/gtk-event-list.c:445 ../src/gtk-sat-list.c:593 #, c-format msgid "%s: Satellite #%d removed from list." msgstr "" #: ../src/gtk-event-list.c:555 ../src/sat-pass-dialogs.c:59 #: ../src/sat-pref-rig-editor.c:434 msgid "LOS" msgstr "" #: ../src/gtk-event-list.c:559 ../src/sat-pass-dialogs.c:57 #: ../src/sat-pref-rig-editor.c:429 msgid "AOS" msgstr "" #: ../src/gtk-event-list.c:587 ../src/tle-update.c:1361 #: ../src/trsp-update.c:721 msgid "Never" msgstr "" #: ../src/gtk-event-list.c:693 ../src/gtk-sat-list.c:1208 #, c-format msgid "%s: FIXME I am not implemented" msgstr "" #: ../src/gtk-event-list.c:782 ../src/gtk-event-list.c:816 #: ../src/gtk-sat-list.c:1303 ../src/gtk-sat-list.c:1336 #, c-format msgid "%s:%d Failed to get data for %d." msgstr "" #: ../src/gtk-event-list.c:828 ../src/gtk-sat-list.c:1349 #: ../src/sat-pass-dialogs.c:1313 ../src/sat-pass-dialogs.c:1363 #, c-format msgid "%s:%d: There is no selection; skip popup." msgstr "" #: ../src/gtk-event-list.c:872 #, c-format msgid "%s: GtkEventList has not child with index %d" msgstr "" #: ../src/gtk-freq-knob.c:338 ../src/gtk-rot-knob.c:515 msgid "Use mouse buttons and wheel to change value" msgstr "" #: ../src/gtk-polar-plot.c:392 #, c-format msgid "%s:%d: Incorrect polar plot orientation." msgstr "" #: ../src/gtk-polar-plot.c:462 ../src/gtk-polar-view.c:661 msgid "N" msgstr "" #: ../src/gtk-polar-plot.c:472 ../src/gtk-polar-view.c:671 msgid "S" msgstr "" #: ../src/gtk-polar-plot.c:482 ../src/gtk-polar-view.c:681 msgid "E" msgstr "" #: ../src/gtk-polar-plot.c:492 ../src/gtk-polar-view.c:691 msgid "W" msgstr "" #: ../src/gtk-polar-view.c:235 #, c-format msgid "%s:%d: Could not find satellite (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:307 ../src/gtk-sat-map.c:841 #, c-format msgid "%s:%d: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-polar-view.c:1001 #, c-format msgid "" "Next: %s\n" "in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1004 #, c-format msgid "" "Next: %s\n" "in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1015 ../src/gtk-sat-map.c:649 #, c-format msgid "%s: Can not find NEXT satellite." msgstr "" #: ../src/gtk-polar-view.c:1017 ../src/gtk-sat-map.c:651 msgid "Next: ERR" msgstr "" #: ../src/gtk-polar-view.c:1022 ../src/gtk-sat-map.c:656 msgid "Next: N/A" msgstr "" #: ../src/gtk-polar-view.c:1055 #, c-format msgid "LOS in %02d:%02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1059 #, c-format msgid "LOS in %02d:%02d" msgstr "" #: ../src/gtk-polar-view.c:1167 #, c-format msgid "" "%s\n" "Always in range" msgstr "" #: ../src/gtk-polar-view.c:1214 #, c-format msgid "%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n" msgstr "" #: ../src/gtk-polar-view.c:1320 #, c-format msgid "%s: marker added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1328 #, c-format msgid "%s: label added to polarview not showing %d." msgstr "" #: ../src/gtk-polar-view.c:1350 ../src/gtk-sat-map.c:1701 #, c-format msgid "%s: Cannot allocate memory for satellite %d." msgstr "" #: ../src/gtk-polar-view.c:1376 ../src/gtk-polar-view.c:1514 #, c-format msgid "%s:%d: Failed to get satellite pass." msgstr "" #: ../src/gtk-polar-view.c:1386 ../src/gtk-polar-view.c:1528 #, c-format msgid "%s:%d: Pass had no points in it." msgstr "" #: ../src/gtk-polar-view.c:1506 ../src/gtk-polar-view-popup.c:156 #: ../src/gtk-polar-view-popup.c:209 ../src/gtk-sat-map-popup.c:170 #: ../src/gtk-sat-map-popup.c:234 ../src/gtk-sat-map-popup.c:281 #, c-format msgid "%s:%d: Failed to get satellite object." msgstr "" #: ../src/gtk-polar-view.c:1639 #, c-format msgid "%s Requested satellite (%d) is not within range" msgstr "" #: ../src/gtk-polar-view-popup.c:73 ../src/gtk-sat-list-popup.c:61 #: ../src/gtk-sat-map-popup.c:75 msgid "Satellite info" msgstr "" #. show track #: ../src/gtk-polar-view-popup.c:101 msgid "Sky track" msgstr "" #: ../src/gtk-rig-ctrl.c:217 #, c-format msgid "AOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:222 #, c-format msgid "LOS in" msgstr "" #: ../src/gtk-rig-ctrl.c:446 msgid " Downlink " msgstr "" #. Downlink doppler #. Uplink doppler #: ../src/gtk-rig-ctrl.c:463 ../src/gtk-rig-ctrl.c:530 msgid "Doppler:" msgstr "" #: ../src/gtk-rig-ctrl.c:465 ../src/gtk-rig-ctrl.c:532 msgid "" "The Doppler shift according to the range rate and the currently selected " "downlink frequency" msgstr "" #: ../src/gtk-rig-ctrl.c:478 ../src/gtk-rig-ctrl.c:545 msgid "LO:" msgstr "" #: ../src/gtk-rig-ctrl.c:513 msgid " Uplink " msgstr "" #: ../src/gtk-rig-ctrl.c:585 #, c-format msgid "%s:%s: GtkSatModule has no target satellite." msgstr "" #: ../src/gtk-rig-ctrl.c:594 #, c-format msgid "%s:%s: Satellite %d has %d transponder modes." msgstr "" #: ../src/gtk-rig-ctrl.c:607 #, c-format msgid "%s:%s: Read transponder '%s' for satellite %d" msgstr "" #: ../src/gtk-rig-ctrl.c:639 ../src/gtk-rig-ctrl.c:1244 #: ../src/gtk-rig-ctrl.c:1294 ../src/gtk-rot-ctrl.c:1381 #: ../src/gtk-rot-ctrl.c:1516 ../src/sat-pref-rig.c:128 #: ../src/sat-pref-rot.c:321 #, c-format msgid "%s:%d: Failed to open hwconf dir (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:674 ../src/gtk-rot-ctrl.c:1228 #, c-format msgid "%s:%s: Invalid satellite selection: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:757 #, c-format msgid "%s: Inconsistency detected in internal transponder data (%d,%d)" msgstr "" #: ../src/gtk-rig-ctrl.c:812 #, c-format msgid "%s:%s: Primary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:826 ../src/gtk-rig-ctrl.c:1139 #, c-format msgid "%s:%d: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:836 ../src/gtk-rig-ctrl.c:938 #, c-format msgid "%s:%s: Loaded new radio configuration %s" msgstr "" #. update LO widgets #: ../src/gtk-rig-ctrl.c:839 ../src/gtk-rig-ctrl.c:845 #: ../src/gtk-rig-ctrl.c:890 ../src/gtk-rig-ctrl.c:910 #: ../src/gtk-rig-ctrl.c:941 #, c-format msgid "%.0f MHz" msgstr "" #: ../src/gtk-rig-ctrl.c:853 ../src/gtk-rig-ctrl.c:948 #, c-format msgid "%s:%s: Failed to load radio configuration %s" msgstr "" #: ../src/gtk-rig-ctrl.c:872 #, c-format msgid "%s:%s: Secondary device selected: %d" msgstr "" #: ../src/gtk-rig-ctrl.c:927 #, c-format msgid "%s:%s: Failed to allocate memory for radio config" msgstr "" #: ../src/gtk-rig-ctrl.c:967 ../src/gtk-rig-ctrl.c:1526 #: ../src/gtk-rot-ctrl.c:1182 #, c-format msgid "%s: Controller does not have a valid configuration" msgstr "" #: ../src/gtk-rig-ctrl.c:1023 ../src/gtk-rot-ctrl.c:1272 msgid "Select target object" msgstr "" #. tracking button #: ../src/gtk-rig-ctrl.c:1029 ../src/gtk-rot-ctrl.c:1278 msgid "Track" msgstr "" #: ../src/gtk-rig-ctrl.c:1031 msgid "" "Track the satellite transponder.\n" "Enabling this button will apply Doppler correction to the frequency of the " "radio." msgstr "" #: ../src/gtk-rig-ctrl.c:1039 msgid "Select a transponder" msgstr "" #. buttons #: ../src/gtk-rig-ctrl.c:1046 msgid "T" msgstr "" #: ../src/gtk-rig-ctrl.c:1048 msgid "" "Tune the radio to this transponder. The uplink and downlink will be set to " "the center of the transponder passband. In case of beacons, only the " "downlink will be tuned to the beacon frequency." msgstr "" #: ../src/gtk-rig-ctrl.c:1055 msgid "L" msgstr "" #: ../src/gtk-rig-ctrl.c:1057 msgid "" "Lock the uplink and the downlink to each other. Whenever you change the " "downlink (in the controller or on the dial, the uplink will track it " "according to whether the transponder is inverting or not. Similarly, if you " "change the uplink the downlink will track it automatically.\n" "\n" "If the downlink and uplink are initially out of sync when you enable this " "function, the current downlink frequency will be used as baseline for " "setting the new uplink frequency." msgstr "" #. Azimuth #: ../src/gtk-rig-ctrl.c:1078 ../src/gtk-rot-ctrl.c:1287 msgid "Az:" msgstr "" #. Elevation #: ../src/gtk-rig-ctrl.c:1086 ../src/gtk-rot-ctrl.c:1296 msgid "El:" msgstr "" #. Range #: ../src/gtk-rig-ctrl.c:1094 msgid " Range:" msgstr "" #: ../src/gtk-rig-ctrl.c:1102 ../src/gtk-rig-ctrl.c:1105 msgid "This is the current distance between the satellite and the observer." msgstr "" #. Range rate #: ../src/gtk-rig-ctrl.c:1109 msgid " Rate:" msgstr "" #: ../src/gtk-rig-ctrl.c:1117 ../src/gtk-rig-ctrl.c:1120 msgid "" "The rate of change for the distance between the satellite and the observer." msgstr "" #: ../src/gtk-rig-ctrl.c:1123 ../src/gtk-rot-ctrl.c:1312 msgid "Target" msgstr "" #: ../src/gtk-rig-ctrl.c:1153 #, c-format msgid "%s:%d: Error reading radio configuration %s" msgstr "" #. Primary device #: ../src/gtk-rig-ctrl.c:1196 msgid "1. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1202 msgid "" "Select primary radio device.This device will be used for downlink and uplink " "unless you select a secondary device for uplink" msgstr "" #. config will be force-loaded after LO spin is created #. Secondary device #: ../src/gtk-rig-ctrl.c:1258 msgid "2. Device:" msgstr "" #: ../src/gtk-rig-ctrl.c:1264 msgid "" "Select secondary radio device\n" "This device will be used for uplink" msgstr "" #: ../src/gtk-rig-ctrl.c:1269 ../src/sat-pref-rig.c:254 #: ../src/sat-pref-rig.c:263 ../src/sat-pref-rig-editor.c:345 msgid "None" msgstr "" #. Engage button #: ../src/gtk-rig-ctrl.c:1307 ../src/gtk-rot-ctrl.c:1395 msgid "Engage" msgstr "" #: ../src/gtk-rig-ctrl.c:1309 msgid "Engage the selected radio device" msgstr "" #. Timeout #: ../src/gtk-rig-ctrl.c:1318 ../src/gtk-rot-ctrl.c:1412 msgid "Cycle:" msgstr "" #: ../src/gtk-rig-ctrl.c:1325 msgid "This parameter controls the delay between commands sent to the rig." msgstr "" #: ../src/gtk-rig-ctrl.c:1332 ../src/gtk-rot-ctrl.c:1426 msgid "msec" msgstr "" #: ../src/gtk-rig-ctrl.c:1336 ../src/gtk-rot-ctrl.c:1456 msgid "Settings" msgstr "" #: ../src/gtk-rig-ctrl.c:1351 msgid "ΔT: 00:00:00" msgstr "" #: ../src/gtk-rig-ctrl.c:1354 msgid "The time remaining until the next AOS or LOS event" msgstr "" #: ../src/gtk-rig-ctrl.c:1388 #, c-format msgid "%s:%s: sending %d bytes to rigctld as \"%s\"" msgstr "" #: ../src/gtk-rig-ctrl.c:1395 ../src/gtk-rot-ctrl.c:169 #, c-format msgid "%s: SIZE ERROR %d / %d" msgstr "" #: ../src/gtk-rig-ctrl.c:1400 ../src/gtk-rig-ctrl.c:1408 #, c-format msgid "%s: rigctld port closed" msgstr "" #: ../src/gtk-rig-ctrl.c:1416 #, c-format msgid "%s:%s: Got 0 bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1421 #, c-format msgid "%s:%s: Read %d bytes from rigctld" msgstr "" #: ../src/gtk-rig-ctrl.c:1453 ../src/gtk-rig-ctrl.c:1471 #, c-format msgid "%s:%s: %s rigctld returned error (%s)" msgstr "" #: ../src/gtk-rig-ctrl.c:1508 #, c-format msgid "%s called but TX VFO is %d." msgstr "" #: ../src/gtk-rig-ctrl.c:1533 #, c-format msgid "%s missed the deadline" msgstr "" #: ../src/gtk-rig-ctrl.c:2468 ../src/gtk-rot-ctrl.c:305 #, c-format msgid "%s:%d: NULL storage." msgstr "" #: ../src/gtk-rig-ctrl.c:2533 #, c-format msgid "%s: Acquired controller lock" msgstr "" #: ../src/gtk-rig-ctrl.c:2538 #, c-format msgid "" "%s: Controller not engaged; PTT event ignored (Hint: Enable the Engage " "button)" msgstr "" #: ../src/gtk-rig-ctrl.c:2549 #, c-format msgid "%s: PTT is OFF => Set TX freq and PTT=ON" msgstr "" #: ../src/gtk-rig-ctrl.c:2559 #, c-format msgid "%s: PTT is ON = Set PTT=OFF" msgstr "" #: ../src/gtk-rig-ctrl.c:2570 #, c-format msgid "%s: Failed to acquire controller lock; PTT event not handled" msgstr "" #: ../src/gtk-rig-ctrl.c:2596 #, c-format msgid "%s: Detected SPACEBAR pressed event" msgstr "" #: ../src/gtk-rig-ctrl.c:2609 #, c-format msgid "%s:%s: Keypress value %i not managed by this function" msgstr "" #: ../src/gtk-rig-ctrl.c:2628 #, c-format msgid "%s: Failed to create socket" msgstr "" #: ../src/gtk-rig-ctrl.c:2635 ../src/gtk-rot-ctrl.c:83 #, c-format msgid "%s: Network socket created successfully" msgstr "" #: ../src/gtk-rig-ctrl.c:2649 #, c-format msgid "%s: Failed to connect to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2657 ../src/gtk-rot-ctrl.c:119 #, c-format msgid "%s: Connection opened to %s:%d" msgstr "" #: ../src/gtk-rig-ctrl.c:2672 ../src/gtk-rot-ctrl.c:135 #, c-format msgid "%s:%s: Sent 2 bytes but sent %d." msgstr "" #: ../src/gtk-rig-ctrl.c:2783 #, c-format msgid "%s:%s: ERROR: NO VALID ctrl-struct" msgstr "" #: ../src/gtk-rig-ctrl.c:2847 #, c-format msgid "%s:%s: Invalid radio type %d. Setting type to RIG_TYPE_RX" msgstr "" #: ../src/gtk-rig-ctrl.c:2864 #, c-format msgid "%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:78 #, c-format msgid "Failed to create rotctl socket: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:91 #, c-format msgid "Name resolution of rotctld server %s failed." msgstr "" #: ../src/gtk-rot-ctrl.c:108 #, c-format msgid "Connection to rotctld server at %s:%d failed: %s" msgstr "" #: ../src/gtk-rot-ctrl.c:174 ../src/gtk-rot-ctrl.c:184 #, c-format msgid "%s: rotctld Socket Down" msgstr "" #: ../src/gtk-rot-ctrl.c:192 #, c-format msgid "%s:%s: Got 0 bytes from rotctld" msgstr "" #: ../src/gtk-rot-ctrl.c:320 #, c-format msgid "%s:%d: rotctld returned error (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:336 #, c-format msgid "%s:%d: rotctld returned bad response (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:383 #, c-format msgid "%s:%d: rotctld returned error %d with az %f el %f(%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:658 msgid "Read:" msgstr "" #: ../src/gtk-rot-ctrl.c:693 msgid "Read: " msgstr "" #: ../src/gtk-rot-ctrl.c:817 ../src/gtk-rot-ctrl.c:818 #: ../src/gtk-sat-module-popup.c:900 ../src/gtk-sat-module-popup.c:980 #: ../src/sat-log-browser.c:55 ../src/sat-log.c:61 ../src/sat-pref-rig.c:222 msgid "ERROR" msgstr "" #: ../src/gtk-rot-ctrl.c:961 #, c-format msgid "%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!" msgstr "" #: ../src/gtk-rot-ctrl.c:1074 #, c-format msgid "%s:%d: Failed to allocate memory for rotator config" msgstr "" #: ../src/gtk-rot-ctrl.c:1085 #, c-format msgid "Loaded new rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1100 #, c-format msgid "%s:%d: Failed to load rotator configuration %s" msgstr "" #: ../src/gtk-rot-ctrl.c:1167 #, c-format msgid "%s:%d: rotctld returned error %d with stop-cmd (%s)" msgstr "" #: ../src/gtk-rot-ctrl.c:1281 msgid "Track the satellite when it is within range" msgstr "" #. count down #: ../src/gtk-rot-ctrl.c:1305 msgid "ΔT:" msgstr "" #: ../src/gtk-rot-ctrl.c:1335 msgid "Device:" msgstr "" #: ../src/gtk-rot-ctrl.c:1341 msgid "Select antenna rotator device" msgstr "" #: ../src/gtk-rot-ctrl.c:1397 msgid "Engage the selected rotor device" msgstr "" #. Monitor checkbox #: ../src/gtk-rot-ctrl.c:1403 msgid "Monitor" msgstr "" #: ../src/gtk-rot-ctrl.c:1405 msgid "Monitor rotator but do not send any position commands" msgstr "" #: ../src/gtk-rot-ctrl.c:1419 msgid "This parameter controls the delay between commands sent to the rotator." msgstr "" #. Tolerance #: ../src/gtk-rot-ctrl.c:1431 msgid "Tolerance:" msgstr "" #: ../src/gtk-rot-ctrl.c:1438 msgid "" "This parameter controls the tolerance between the target and rotator values " "for the rotator.\n" "If the difference between the target and rotator values is smaller than the " "tolerance, no new commands are sent" msgstr "" #: ../src/gtk-rot-ctrl.c:1449 msgid "deg" msgstr "" #: ../src/gtk-sat-data.c:88 #, c-format msgid "%s: Error reading NAME from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:98 #, c-format msgid "%s: Satellite %d has no NICKNAME" msgstr "" #: ../src/gtk-sat-data.c:111 #, c-format msgid "%s: Error reading TLE line 1 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:119 ../src/tle-update.c:1214 ../src/tle-update.c:1223 #, c-format msgid "%s: Error reading TLE line 2 from %s (%s)" msgstr "" #: ../src/gtk-sat-data.c:129 #, c-format msgid "%s: TLE data for %d appears to be bad" msgstr "" #: ../src/gtk-sat-list.c:54 msgid "Dir" msgstr "" #: ../src/gtk-sat-list.c:55 ../src/sat-pass-dialogs.c:101 msgid "Ra" msgstr "" #: ../src/gtk-sat-list.c:56 ../src/sat-pass-dialogs.c:102 msgid "Dec" msgstr "" #: ../src/gtk-sat-list.c:57 ../src/pass-to-txt.c:45 #: ../src/sat-pass-dialogs.c:103 msgid "Range" msgstr "" #: ../src/gtk-sat-list.c:58 ../src/sat-pass-dialogs.c:104 msgid "Rate" msgstr "" #. Next Event #: ../src/gtk-sat-list.c:59 ../src/gtk-sat-list.c:92 ../src/gtk-single-sat.c:52 #: ../src/sat-pref-map-view.c:806 ../src/sat-pref-polar-view.c:424 msgid "Next Event" msgstr "" #: ../src/gtk-sat-list.c:60 ../src/gtk-sat-list.c:93 ../src/gtk-single-sat.c:53 msgid "Next AOS" msgstr "" #: ../src/gtk-sat-list.c:61 ../src/gtk-sat-list.c:94 ../src/gtk-single-sat.c:54 msgid "Next LOS" msgstr "" #: ../src/gtk-sat-list.c:62 ../src/loc-tree.c:127 ../src/sat-pass-dialogs.c:105 #: ../src/sat-pref-qth.c:173 msgid "Lat" msgstr "" #: ../src/gtk-sat-list.c:63 ../src/loc-tree.c:145 ../src/sat-pass-dialogs.c:106 #: ../src/sat-pref-qth.c:186 msgid "Lon" msgstr "" #: ../src/gtk-sat-list.c:64 ../src/sat-pass-dialogs.c:107 msgid "SSP" msgstr "" #: ../src/gtk-sat-list.c:65 ../src/pass-to-txt.c:50 #: ../src/sat-pass-dialogs.c:108 msgid "Footp" msgstr "" #: ../src/gtk-sat-list.c:66 ../src/loc-tree.c:163 ../src/sat-pass-dialogs.c:109 msgid "Alt" msgstr "" #: ../src/gtk-sat-list.c:67 ../src/sat-pass-dialogs.c:110 msgid "Vel" msgstr "" #: ../src/gtk-sat-list.c:68 ../src/sat-pass-dialogs.c:111 msgid "Dop" msgstr "" #: ../src/gtk-sat-list.c:69 ../src/sat-pass-dialogs.c:112 msgid "Loss" msgstr "" #: ../src/gtk-sat-list.c:70 ../src/sat-pass-dialogs.c:113 msgid "Del" msgstr "" #: ../src/gtk-sat-list.c:71 ../src/sat-pass-dialogs.c:114 msgid "MA" msgstr "" #: ../src/gtk-sat-list.c:72 ../src/sat-pass-dialogs.c:115 msgid "Phase" msgstr "" #: ../src/gtk-sat-list.c:73 ../src/pass-to-txt.c:94 #: ../src/sat-pass-dialogs.c:65 msgid "Orbit" msgstr "" #: ../src/gtk-sat-list.c:74 ../src/pass-to-txt.c:58 ../src/pass-to-txt.c:95 #: ../src/sat-pass-dialogs.c:66 ../src/sat-pass-dialogs.c:116 msgid "Vis" msgstr "" #: ../src/gtk-sat-list.c:76 msgid "Status" msgstr "" #: ../src/gtk-sat-list.c:87 ../src/gtk-single-sat.c:47 msgid "Direction" msgstr "" #: ../src/gtk-sat-list.c:88 ../src/sat-pass-dialogs.c:124 msgid "Right Ascension" msgstr "" #: ../src/gtk-sat-list.c:89 ../src/gtk-single-sat.c:49 #: ../src/sat-pass-dialogs.c:125 msgid "Declination" msgstr "" #: ../src/gtk-sat-list.c:90 ../src/gtk-single-sat.c:50 #: ../src/sat-pass-dialogs.c:126 msgid "Slant Range" msgstr "" #: ../src/gtk-sat-list.c:91 ../src/gtk-single-sat.c:51 #: ../src/sat-pass-dialogs.c:127 msgid "Range Rate" msgstr "" #: ../src/gtk-sat-list.c:95 ../src/sat-pass-dialogs.c:128 msgid "Latitude" msgstr "" #: ../src/gtk-sat-list.c:96 ../src/sat-pass-dialogs.c:129 msgid "Longitude" msgstr "" #: ../src/gtk-sat-list.c:97 ../src/sat-pass-dialogs.c:130 msgid "Sub-Satellite Point" msgstr "" #: ../src/gtk-sat-list.c:98 ../src/gtk-single-sat.c:58 #: ../src/sat-pass-dialogs.c:131 msgid "Footprint" msgstr "" #. altitude #: ../src/gtk-sat-list.c:99 ../src/gtk-single-sat.c:59 ../src/qth-editor.c:591 #: ../src/sat-pass-dialogs.c:132 ../src/sat-pref-qth-editor.c:704 msgid "Altitude" msgstr "" #: ../src/gtk-sat-list.c:100 ../src/gtk-single-sat.c:60 #: ../src/sat-pass-dialogs.c:133 msgid "Velocity" msgstr "" #: ../src/gtk-sat-list.c:101 ../src/gtk-single-sat.c:88 #: ../src/sat-pass-dialogs.c:134 msgid "Doppler Shift @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:102 ../src/sat-pass-dialogs.c:135 msgid "Signal Loss @ 100MHz" msgstr "" #: ../src/gtk-sat-list.c:103 ../src/gtk-single-sat.c:90 #: ../src/sat-pass-dialogs.c:136 msgid "Signal Delay" msgstr "" #: ../src/gtk-sat-list.c:104 ../src/gtk-single-sat.c:91 #: ../src/sat-pass-dialogs.c:137 msgid "Mean Anomaly" msgstr "" #: ../src/gtk-sat-list.c:105 ../src/gtk-single-sat.c:65 #: ../src/gtk-single-sat.c:92 ../src/sat-pass-dialogs.c:138 msgid "Orbit Phase" msgstr "" #: ../src/gtk-sat-list.c:106 ../src/gtk-single-sat.c:93 msgid "Orbit Number" msgstr "" #: ../src/gtk-sat-list.c:107 ../src/gtk-single-sat.c:67 #: ../src/sat-pass-dialogs.c:139 msgid "Visibility" msgstr "" #: ../src/gtk-sat-list.c:109 msgid "Operational Status" msgstr "" #: ../src/gtk-sat-list.c:110 msgid "---" msgstr "" #: ../src/gtk-sat-list.c:515 #, c-format msgid "%s: Invalid GtkSatList!" msgstr "" #: ../src/gtk-sat-list.c:992 ../src/sat-pass-dialogs.c:687 #: ../src/sat-pref-qth.c:799 #, c-format msgid "%s:%d: Invalid column: %d" msgstr "" #: ../src/gtk-sat-list.c:1441 #, c-format msgid "%s: GtkSatList has not child with index %d" msgstr "" #: ../src/gtk-sat-map.c:625 #, c-format msgid " Next: %s in %s%d:%s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:633 #, c-format msgid " Next: %s in %s%d%s%d " msgstr "" #: ../src/gtk-sat-map.c:929 #, c-format msgid "%s: Can not find clicked object (%d) in hash table" msgstr "" #: ../src/gtk-sat-map.c:1015 #, c-format msgid "%s:%d: Loading map file %s" msgstr "" #: ../src/gtk-sat-map.c:1021 #, c-format msgid "%s:%d: Map file found" msgstr "" #: ../src/gtk-sat-map.c:1026 #, c-format msgid "%s:%d: Could not find map file %s" msgstr "" #: ../src/gtk-sat-map.c:1034 #, c-format msgid "%s:%d: Using default map: %s" msgstr "" #: ../src/gtk-sat-map.c:1044 #, c-format msgid "%s:%d: Error loading map file (%s)" msgstr "" #: ../src/gtk-sat-map.c:1104 #, c-format msgid "%s: Bad data measuring distance to North Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:1124 #, c-format msgid "%s: Bad data measuring distance to South Pole %f %f." msgstr "" #: ../src/gtk-sat-map.c:2642 #, c-format msgid "LOS in %d minutes" msgstr "" #: ../src/gtk-sat-map.c:2644 #, c-format msgid "AOS in %d minutes" msgstr "" #: ../src/gtk-sat-map-ground-track.c:78 #, c-format msgid "%s: Creating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:92 #, c-format msgid "%s: Start orbit: %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:94 #, c-format msgid "%s: End orbit %d" msgstr "" #: ../src/gtk-sat-map-ground-track.c:115 #, c-format msgid "%s: T0: %f (%d)" msgstr "" #: ../src/gtk-sat-map-ground-track.c:138 #, c-format msgid "%s: MAYDAY: Insufficient memory for ground track!" msgstr "" #: ../src/gtk-sat-map-ground-track.c:153 #, c-format msgid "%s: Problem computing ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:196 #, c-format msgid "%s: Updating ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:237 #, c-format msgid "%s: Deleting ground track for %s" msgstr "" #: ../src/gtk-sat-map-ground-track.c:259 #, c-format msgid "%s: Could not find part %d of ground track" msgstr "" #. highlight cov. area #: ../src/gtk-sat-map-popup.c:103 msgid "Highlight footprint" msgstr "" #. show track #: ../src/gtk-sat-map-popup.c:114 msgid "Ground Track" msgstr "" #. target #: ../src/gtk-sat-map-popup.c:127 msgid "Set Target" msgstr "" #: ../src/gtk-sat-module.c:127 #, c-format msgid "Autotrack: Changing target satellite %d -> %d" msgstr "" #: ../src/gtk-sat-module.c:316 #, c-format msgid "%s:%d: Invalid child type (%d). Using GtkSatList." msgstr "" #: ../src/gtk-sat-module.c:368 #, c-format msgid "%s: Layout has %d columns and %d rows." msgstr "" #: ../src/gtk-sat-module.c:419 ../src/mod-cfg.c:573 #, c-format msgid "%s: Failed to get list of satellites (%s)" msgstr "" #: ../src/gtk-sat-module.c:442 #, c-format msgid "%s: Error reading data for #%d" msgstr "" #: ../src/gtk-sat-module.c:461 #, c-format msgid "%s: Read data for #%d" msgstr "" #: ../src/gtk-sat-module.c:466 #, c-format msgid "%s: Sat #%d already in list" msgstr "" #: ../src/gtk-sat-module.c:477 #, c-format msgid "%s: Read %d out of %d satellites" msgstr "" #: ../src/gtk-sat-module.c:511 #, c-format msgid "%s: Updating GtkSkyGlance for %s" msgstr "" #: ../src/gtk-sat-module.c:597 ../src/gtk-sat-module.c:1415 #, c-format msgid "%s:%d: Unknown child type" msgstr "" #: ../src/gtk-sat-module.c:727 #, c-format msgid "%s: Previous cycle missed it's deadline." msgstr "" #: ../src/gtk-sat-module.c:859 #, c-format msgid "%s: Could not load config data from %s (%s)." msgstr "" #: ../src/gtk-sat-module.c:869 #, c-format msgid "%s: Reading configuration from %s" msgstr "" #: ../src/gtk-sat-module.c:909 #, c-format msgid "%s: Can not load default QTH file %s; using built-in defaults" msgstr "" #: ../src/gtk-sat-module.c:939 #, c-format msgid "%s: Module layout is invalid: %s. Using default." msgstr "" #: ../src/gtk-sat-module.c:951 #, c-format msgid "%s: GRID(%d): %s" msgstr "" #: ../src/gtk-sat-module.c:972 #, c-format msgid "%s: Unable to allocate memory for grid." msgstr "" #: ../src/gtk-sat-module.c:998 #, c-format msgid "%s: Module %s is not valid." msgstr "" #: ../src/gtk-sat-module.c:1014 #, c-format msgid "%s: Module %s has problems." msgstr "" #: ../src/gtk-sat-module.c:1047 msgid "Module options / shortcuts" msgstr "" #: ../src/gtk-sat-module.c:1052 msgid "Close this module." msgstr "" #: ../src/gtk-sat-module.c:1122 #, c-format msgid "%s: Module %s received CLOSE signal." msgstr "" #: ../src/gtk-sat-module.c:1131 #, c-format msgid "%s: Module %s is in DOCKED state." msgstr "" #: ../src/gtk-sat-module.c:1137 ../src/gtk-sat-module.c:1153 #: ../src/gtk-sat-module.c:1182 #, c-format msgid "" "%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?" msgstr "" #: ../src/gtk-sat-module.c:1146 #, c-format msgid "%s: Module %s is in WINDOW state." msgstr "" #: ../src/gtk-sat-module.c:1174 #, c-format msgid "%s: Module %s is in FULLSCREEN state." msgstr "" #: ../src/gtk-sat-module.c:1204 ../src/gtk-sat-module.c:1360 #, c-format msgid "%s: Module %s has unknown state: %d" msgstr "" #: ../src/gtk-sat-module.c:1212 #, c-format msgid "%s: Module %s closed." msgstr "" #: ../src/gtk-sat-module.c:1251 #, c-format msgid "%s: Module %s received CONFIG signal." msgstr "" #: ../src/gtk-sat-module.c:1260 #, c-format msgid "" "%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid." msgstr "" #: ../src/gtk-sat-module.c:1277 #, c-format msgid "%s: Module configuration failed for some reason." msgstr "" #: ../src/gtk-sat-module.c:1445 #, c-format msgid "%s: Reloading satellites for module %s" msgstr "" #: ../src/gtk-sat-module.c:1505 #, c-format msgid "%s: Unknown child type" msgstr "" #: ../src/gtk-sat-module-popup.c:90 #, c-format msgid "%s:%d: %s called with NULL parameter!" msgstr "" #: ../src/gtk-sat-module-popup.c:99 msgid "Detach module" msgstr "" #: ../src/gtk-sat-module-popup.c:106 msgid "Attach module" msgstr "" #: ../src/gtk-sat-module-popup.c:114 msgid "Exit full screen" msgstr "" #: ../src/gtk-sat-module-popup.c:121 msgid "Full screen" msgstr "" #. autotrack #: ../src/gtk-sat-module-popup.c:132 msgid "Autotrack" msgstr "" #. select satellite submenu #: ../src/gtk-sat-module-popup.c:139 msgid "Select satellite" msgstr "" #. sky at a glance #: ../src/gtk-sat-module-popup.c:165 msgid "Sky at a glance" msgstr "" #. time manager #: ../src/gtk-sat-module-popup.c:171 ../src/gtk-sat-module-tmg.c:266 msgid "Time Controller" msgstr "" #. Radio Control #: ../src/gtk-sat-module-popup.c:180 msgid "Radio Control" msgstr "" #. Antenna Control #: ../src/gtk-sat-module-popup.c:185 msgid "Antenna Control" msgstr "" #. configure #: ../src/gtk-sat-module-popup.c:194 msgid "Configure" msgstr "" #. clone #: ../src/gtk-sat-module-popup.c:199 msgid "Clone..." msgstr "" #. delete module #. delete button; don't forget to delete file.... #: ../src/gtk-sat-module-popup.c:208 ../src/sat-pref-qth.c:510 #: ../src/sat-pref-rig.c:748 ../src/sat-pref-rot.c:352 msgid "Delete" msgstr "" #. close #: ../src/gtk-sat-module-popup.c:213 msgid "Close" msgstr "" #: ../src/gtk-sat-module-popup.c:244 msgid "" "A module can not be configured while the radio or rotator controller is " "active.\n" "\n" "Please close the radio and rotator controllers and try again." msgstr "" #: ../src/gtk-sat-module-popup.c:285 msgid "Clone Module" msgstr "" #. label #: ../src/gtk-sat-module-popup.c:296 msgid "Name of new module:" msgstr "" #: ../src/gtk-sat-module-popup.c:305 ../src/mod-cfg.c:654 msgid "" "Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. check button #: ../src/gtk-sat-module-popup.c:324 msgid "Open module when created" msgstr "" #: ../src/gtk-sat-module-popup.c:327 msgid "If checked, the new module will be opened after it has been created" msgstr "" #: ../src/gtk-sat-module-popup.c:342 #, c-format msgid "%s:%d: Cloning %s => %s" msgstr "" #: ../src/gtk-sat-module-popup.c:360 #, c-format msgid "%s:%d: Failed to clone %s." msgstr "" #: ../src/gtk-sat-module-popup.c:366 #, c-format msgid "%s:%d: Successfully cloned %s." msgstr "" #: ../src/gtk-sat-module-popup.c:392 ../src/gtk-sat-module-popup.c:513 #: ../src/gtk-sat-module-popup.c:655 ../src/menubar.c:146 msgid "GPREDICT: " msgstr "" #: ../src/gtk-sat-module-popup.c:435 #, c-format msgid "%s:%d: Cloning cancelled by user." msgstr "" #: ../src/gtk-sat-module-popup.c:441 #, c-format msgid "%s:%d: Cloning interrupted." msgstr "" #: ../src/gtk-sat-module-popup.c:622 ../src/gtk-sat-module-popup.c:765 #, c-format msgid "%s:%d: Unknown module state: %d" msgstr "" #: ../src/gtk-sat-module-popup.c:820 #, c-format msgid "The sky at a glance (%s)" msgstr "" #: ../src/gtk-sat-module-popup.c:896 msgid "" "You have no radio configuration!\n" "Please configure a radio first." msgstr "" #: ../src/gtk-sat-module-popup.c:908 #, c-format msgid "Gpredict Radio Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:976 msgid "" "You have no rotator configuration!\n" "Please configure an antenna rotator first." msgstr "" #: ../src/gtk-sat-module-popup.c:988 #, c-format msgid "Gpredict Rotator Control: %s" msgstr "" #: ../src/gtk-sat-module-popup.c:1098 #, c-format msgid "" "This operation will permanently delete\n" "%s\n" "from the disk.\n" "Do you you want to proceed?" msgstr "" #: ../src/gtk-sat-module-popup.c:1108 #, c-format msgid "%s:%d: Failed to delete %s." msgstr "" #: ../src/gtk-sat-module-popup.c:1114 #, c-format msgid "%s:%d: %s deleted permanently." msgstr "" #: ../src/gtk-sat-module-tmg.c:62 #, c-format msgid "%s: Time Controller for %s is already active" msgstr "" #: ../src/gtk-sat-module-tmg.c:90 msgid "Play forward" msgstr "" #: ../src/gtk-sat-module-tmg.c:106 msgid "Stop" msgstr "" #: ../src/gtk-sat-module-tmg.c:122 msgid "Play backwards" msgstr "" #. reset time #. reset button #: ../src/gtk-sat-module-tmg.c:127 ../src/sat-pref-conditions.c:133 #: ../src/sat-pref-debug.c:241 ../src/sat-pref-formats.c:98 #: ../src/sat-pref-layout.c:449 ../src/sat-pref-list-view.c:131 #: ../src/sat-pref-map-view.c:1307 ../src/sat-pref-multi-pass.c:102 #: ../src/sat-pref-polar-view.c:744 ../src/sat-pref-refresh.c:211 #: ../src/sat-pref-single-pass.c:105 ../src/sat-pref-single-sat.c:134 #: ../src/sat-pref-sky-at-glance.c:226 ../src/sat-pref-tle.c:407 msgid "Reset" msgstr "" #: ../src/gtk-sat-module-tmg.c:129 msgid "Reset to current date and time" msgstr "" #: ../src/gtk-sat-module-tmg.c:136 ../src/gtk-sat-module-tmg.c:735 msgid "Real-Time" msgstr "" #. Time controllers. #. * Note that the controllers for hours, minutes, and seconds have ranges; #. * however, they can wrap around their limits in order to ensure a smooth #. * and continuous control of the time #. #. hour #: ../src/gtk-sat-module-tmg.c:159 msgid "Hour:" msgstr "" #: ../src/gtk-sat-module-tmg.c:169 msgid "Use this control to set the hour" msgstr "" #. minutes #: ../src/gtk-sat-module-tmg.c:176 msgid "Min:" msgstr "" #: ../src/gtk-sat-module-tmg.c:186 msgid "Use this control to set the minutes" msgstr "" #. seconds #: ../src/gtk-sat-module-tmg.c:193 msgid "Sec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:203 msgid "Use this control to set the seconds" msgstr "" #. milliseconds #: ../src/gtk-sat-module-tmg.c:210 msgid "Msec:" msgstr "" #: ../src/gtk-sat-module-tmg.c:220 msgid "Use this control to set the milliseconds" msgstr "" #. time throttle #: ../src/gtk-sat-module-tmg.c:227 msgid "Throttle:" msgstr "" #: ../src/gtk-sat-module-tmg.c:237 msgid "Time throttle / compression factor" msgstr "" #: ../src/gtk-sat-module-tmg.c:288 #, c-format msgid "%s: Time Controller for %s launched" msgstr "" #: ../src/gtk-sat-module-tmg.c:319 #, c-format msgid "%s: Time Controller for %s closed. Time reset." msgstr "" #: ../src/gtk-sat-module-tmg.c:730 msgid "Simulated Real-Time" msgstr "" #: ../src/gtk-sat-module-tmg.c:733 msgid "Manual Control" msgstr "" #: ../src/gtk-sat-module-tmg.c:790 #, c-format msgid "%s: %d/%d/%d %d:%d:%d.%d" msgstr "" #: ../src/gtk-sat-popup-common.c:38 msgid "Show current pass" msgstr "" #. the next pass menu item #: ../src/gtk-sat-popup-common.c:48 msgid "Show next pass" msgstr "" #. finally the future pass menu item #: ../src/gtk-sat-popup-common.c:57 msgid "Future passes" msgstr "" #: ../src/gtk-sat-popup-common.c:149 ../src/gtk-sat-popup-common.c:220 #, c-format msgid "" "Satellite %s has no passes\n" "within the next %d days" msgstr "" #: ../src/gtk-sat-popup-common.c:167 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!\n" "\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon" msgstr "" #: ../src/gtk-sat-popup-common.c:241 #, c-format msgid "" "Satellite %s has no passes for\n" "the current ground station!" msgstr "" #: ../src/gtk-sat-selector.c:392 msgid "Satellite group / category" msgstr "" #: ../src/gtk-sat-selector.c:400 msgid "Search for a satellite by name or catalog number" msgstr "" #: ../src/gtk-sat-selector.c:414 msgid "Clear the search field" msgstr "" #: ../src/gtk-sat-selector.c:456 msgid "Available Satellites" msgstr "" #: ../src/gtk-sat-selector.c:476 msgid "Updated" msgstr "" #: ../src/gtk-sat-selector.c:548 ../src/gtk-sat-selector.c:652 #, c-format msgid "%s:%s: Failed to open %s: %s" msgstr "" #: ../src/gtk-sat-selector.c:588 ../src/mod-cfg.c:135 #, c-format msgid "%s:%s: Error reading satellite %d." msgstr "" #: ../src/gtk-sat-selector.c:610 #, c-format msgid "%s:%s: Read %d satellites from %s" msgstr "" #: ../src/gtk-sat-selector.c:616 #, c-format msgid "%s:%s: Failed to read %s" msgstr "" #: ../src/gtk-sat-selector.c:730 msgid "All satellites" msgstr "" #: ../src/gtk-sat-selector.c:738 #, c-format msgid "%s:%s: Failed to open satdata directory %s." msgstr "" #: ../src/gtk-sat-selector.c:781 #, c-format msgid "%s:%s: Read %d satellites into MAIN group." msgstr "" #: ../src/gtk-sat-selector.c:898 #, c-format msgid "%s: Error getting %dth satellite" msgstr "" #: ../src/gtk-sat-tree.c:199 ../src/mod-cfg.c:531 msgid "Epoch" msgstr "" #: ../src/gtk-sat-tree.c:215 msgid "Selected" msgstr "" #. expand and collabse buttons #: ../src/gtk-sat-tree.c:241 msgid "Expand" msgstr "" #: ../src/gtk-sat-tree.c:244 msgid "Expand all nodes in the tree to make it searchable" msgstr "" #: ../src/gtk-sat-tree.c:247 msgid "Collapse" msgstr "" #: ../src/gtk-sat-tree.c:248 msgid "Collapse all nodes in the tree" msgstr "" #: ../src/gtk-sat-tree.c:294 #, c-format msgid "%s:%d: Directory is: %s" msgstr "" #: ../src/gtk-sat-tree.c:302 #, c-format msgid "%s:%d: No .tle files found in %s." msgstr "" #: ../src/gtk-sat-tree.c:340 #, c-format msgid "%s:%d: Read %d sats from %s " msgstr "" #: ../src/gtk-sat-tree.c:380 #, c-format msgid "%s:%d: Failed to open %s (%s)" msgstr "" #: ../src/gtk-sat-tree.c:478 ../src/gtk-sat-tree.c:611 #, c-format msgid "%s:%d: Satellite %d selected." msgstr "" #: ../src/gtk-sat-tree.c:496 ../src/gtk-sat-tree.c:617 #, c-format msgid "%s:%d: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:505 #, c-format msgid "%s:%d: Satellite %d de-selected." msgstr "" #: ../src/gtk-sat-tree.c:539 ../src/gtk-sat-tree.c:688 #, c-format msgid "%s: Invalid GtkSatTree!" msgstr "" #: ../src/gtk-sat-tree.c:563 #, c-format msgid "%s: Satellite %d already selected; skip..." msgstr "" #: ../src/gtk-sat-tree.c:699 #, c-format msgid "%s: There are no satellites selected => NULL." msgstr "" #: ../src/gtk-single-sat.c:48 msgid "Right Asc." msgstr "" #: ../src/gtk-single-sat.c:55 msgid "SSP Lat." msgstr "" #: ../src/gtk-single-sat.c:56 msgid "SSP Lon." msgstr "" #: ../src/gtk-single-sat.c:57 msgid "SSP Loc." msgstr "" #: ../src/gtk-single-sat.c:61 msgid "Doppler@100M" msgstr "" #: ../src/gtk-single-sat.c:62 msgid "Sig. Loss" msgstr "" #: ../src/gtk-single-sat.c:63 msgid "Sig. Delay" msgstr "" #: ../src/gtk-single-sat.c:64 msgid "Mean Anom." msgstr "" #: ../src/gtk-single-sat.c:66 msgid "Orbit Num." msgstr "" #: ../src/gtk-single-sat.c:72 msgid "Azimuth of the satellite" msgstr "" #: ../src/gtk-single-sat.c:73 msgid "Elevation of the satellite" msgstr "" #: ../src/gtk-single-sat.c:74 msgid "Direction of the satellite" msgstr "" #: ../src/gtk-single-sat.c:75 msgid "Right Ascension of the satellite" msgstr "" #: ../src/gtk-single-sat.c:76 msgid "Declination of the satellite" msgstr "" #: ../src/gtk-single-sat.c:77 msgid "The range between satellite and observer" msgstr "" #: ../src/gtk-single-sat.c:78 msgid "The rate at which the Slant Range changes" msgstr "" #: ../src/gtk-single-sat.c:79 msgid "The time of next AOS or LOS" msgstr "" #: ../src/gtk-single-sat.c:80 msgid "The time of next AOS" msgstr "" #: ../src/gtk-single-sat.c:81 msgid "The time of next LOS" msgstr "" #: ../src/gtk-single-sat.c:82 msgid "Latitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:83 msgid "Longitude of the sub-satellite point" msgstr "" #: ../src/gtk-single-sat.c:84 msgid "Sub-Satellite Point as Maidenhead grid square" msgstr "" #: ../src/gtk-single-sat.c:85 msgid "Diameter of the satellite footprint" msgstr "" #: ../src/gtk-single-sat.c:86 msgid "Altitude of the satellite" msgstr "" #: ../src/gtk-single-sat.c:87 msgid "Tangential velocity of the satellite" msgstr "" #: ../src/gtk-single-sat.c:89 msgid "Signal loss @ 100MHz" msgstr "" #: ../src/gtk-single-sat.c:94 msgid "Visibility of the satellite" msgstr "" #: ../src/gtk-single-sat.c:143 #, c-format msgid "%s:%d: Can not update invisible field (I:%d F:%d)" msgstr "" #: ../src/gtk-single-sat.c:153 #, c-format msgid "%s:%d: Can not update non-existing sat" msgstr "" #: ../src/gtk-single-sat.c:236 ../src/gtk-single-sat.c:251 #: ../src/gtk-single-sat.c:264 msgid "N/A" msgstr "" #: ../src/gtk-single-sat.c:363 #, c-format msgid "%s:%d: Invalid field number (%d)" msgstr "" #: ../src/gtk-single-sat.c:619 #, c-format msgid "%s: Could not find satellite with catalog number %d" msgstr "" #: ../src/gtk-single-sat.c:639 #, c-format msgid "%s: Invalid GtkSingleSat!" msgstr "" #: ../src/gtk-single-sat.c:755 msgid "Satellite options / shortcuts" msgstr "" #: ../src/gtk-sky-glance.c:436 #, c-format msgid "%s::%s: Could not retrieve pass_t object" msgstr "" #: ../src/gtk-sky-glance.c:448 #, c-format msgid "%s::%s: Showing pass details for %s - we may have a memory leak here" msgstr "" #: ../src/gtk-sky-glance.c:458 #, c-format msgid "%s::%s: Button %d has no function..." msgstr "" #: ../src/gtk-sky-glance.c:514 msgid "TIME" msgstr "" #: ../src/gtk-sky-glance.c:634 #, c-format msgid "%s:%d: Colour index out of valid range (%d)" msgstr "" #: ../src/gtk-sky-glance.c:688 #, c-format msgid "%s:%d: %s has %d passes within %.4f days\n" msgstr "" #: ../src/gtk-sky-glance.c:701 #, c-format msgid "%s:%s: Could not allocate memory." msgstr "" #. box tooltip will contain pass summary #: ../src/gtk-sky-glance.c:722 #, c-format msgid "" "%s\n" "AOS: %s Az:%.0f°\n" "TCA: %s Az:%.0f° El:%.1f°\n" "LOS: %s Az:%.0f°\n" "Click for details" msgstr "" #. no satellites #: ../src/gtk-sky-glance.c:781 msgid "This module has no satellites!" msgstr "" #. location #: ../src/loc-tree.c:115 ../src/qth-editor.c:509 ../src/sat-pref-qth.c:165 #: ../src/sat-pref-qth-editor.c:621 msgid "Location" msgstr "" #: ../src/loc-tree.c:181 msgid "WX" msgstr "" #: ../src/loc-tree.c:196 msgid "X" msgstr "" #. dialog window #: ../src/loc-tree.c:228 msgid "Select Location" msgstr "" #: ../src/loc-tree.c:257 #, c-format msgid "%s: Selected %s" msgstr "" #: ../src/loc-tree.c:262 #, c-format msgid "%s: No location selected" msgstr "" #: ../src/loc-tree.c:301 #, c-format msgid "%s: %s does not exist!" msgstr "" #: ../src/loc-tree.c:390 #, c-format msgid "%s: Read %d cities." msgstr "" #: ../src/loc-tree.c:408 #, c-format msgid "%s: Failed to open locfile (%s)" msgstr "" #: ../src/loc-tree.c:471 #, c-format msgid "%s: Invalid column: %d" msgstr "" #: ../src/loc-tree.c:594 #, c-format msgid "%s: Failed to get parent for %s." msgstr "" #: ../src/loc-tree.c:606 #, c-format msgid "%s: No selection found!" msgstr "" #: ../src/main.c:60 msgid "just to have a pot" msgstr "" #: ../src/main.c:108 msgid "" "Gpredict is a graphical real-time satellite tracking and orbit prediction " "program.\n" "Gpredict does not require any command line options for nominal operation." msgstr "" #: ../src/main.c:114 #, c-format msgid "Option parsing failed: %s\n" msgstr "" #: ../src/main.c:131 #, c-format msgid "" "User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the .config/Gpredict data dir in your " "home directory" msgstr "" #: ../src/main.c:418 #, c-format msgid "%s: Passed a non-null pointer which should never happen.\n" msgstr "" #: ../src/main.c:461 #, c-format msgid "%s: Time threshold has been passed." msgstr "" #: ../src/main.c:470 #, c-format msgid "%s: Starting new update thread." msgstr "" #. * FIXME: store thread and destroy on exit? * #: ../src/main.c:473 msgid "gpredict_tle_update" msgstr "" #: ../src/main.c:478 #, c-format msgid "%s: Failed to create TLE update thread (%s)" msgstr "" #: ../src/main.c:490 msgid "" "Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar." msgstr "" #: ../src/main.c:519 #, c-format msgid "%s: Could not find TLE monitoring task (ID = %d)" msgstr "" #: ../src/main.c:561 #, c-format msgid "%s: Cleaning TLE data in %s" msgstr "" #: ../src/main.c:573 ../src/main.c:617 #, c-format msgid "%s: Failed to delete %s" msgstr "" #: ../src/main.c:578 ../src/main.c:622 #, c-format msgid "%s: Removed %s" msgstr "" #: ../src/main.c:604 #, c-format msgid "%s: Cleaning transponder data in %s" msgstr "" #: ../src/map-selector.c:108 ../src/map-selector.c:165 #, c-format msgid "%s:%d: Could not stat %s" msgstr "" #. create a new file chooser dialogue in "open file" mode #: ../src/map-selector.c:243 msgid "Select Map" msgstr "" #: ../src/map-selector.c:259 msgid "Image files" msgstr "" #: ../src/menubar.c:58 #, c-format msgid "%s: Starting new module configurator..." msgstr "" #: ../src/menubar.c:64 #, c-format msgid "%s: New module name is %s." msgstr "" #: ../src/menubar.c:84 ../src/menubar.c:430 #, c-format msgid "Could not open %s. Please examine the log messages for details." msgstr "" #: ../src/menubar.c:101 #, c-format msgid "%s: New module config cancelled." msgstr "" #: ../src/menubar.c:270 #, c-format msgid "%s:%s: Scanning directory %s for modules." msgstr "" #: ../src/menubar.c:292 #, c-format msgid "%s:%d: Failed to open module dir %s (%s)" msgstr "" #: ../src/menubar.c:308 msgid "" "You do not have any modules set up yet. Please use File->New in order to " "create a module." msgstr "" #: ../src/menubar.c:335 msgid "Module" msgstr "" #. create dialog #: ../src/menubar.c:341 msgid "Select a module" msgstr "" #: ../src/menubar.c:369 #, c-format msgid "%s:%s: Selected module is: %s" msgstr "" #: ../src/menubar.c:375 #, c-format msgid "%s:%s: No selection is list of modules." msgstr "" #: ../src/menubar.c:402 #, c-format msgid "%s: Open existing module..." msgstr "" #: ../src/menubar.c:409 #, c-format msgid "%s: Open module %s." msgstr "" #: ../src/menubar.c:459 #, c-format msgid "%s: Open module cancelled." msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:502 msgid "Transponder Update" msgstr "" #: ../src/menubar.c:518 msgid "Updating transponder files from network" msgstr "" #. statistics #: ../src/menubar.c:531 msgid "\n" msgstr "" #: ../src/menubar.c:554 ../src/menubar.c:632 ../src/menubar.c:773 msgid "Finished" msgstr "" #. create new dialog with progress indicator #: ../src/menubar.c:577 ../src/menubar.c:716 ../src/sat-pref-general.c:58 msgid "TLE Update" msgstr "" #: ../src/menubar.c:594 msgid "Updating TLE files from network" msgstr "" #. statistics #: ../src/menubar.c:607 ../src/menubar.c:747 msgid "" "Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n" msgstr "" #. create file chooser #: ../src/menubar.c:668 msgid "Select directory" msgstr "" #. create label #: ../src/menubar.c:674 msgid "Select TLE directory:" msgstr "" #. create the dalog #: ../src/menubar.c:684 msgid "Update TLE from files" msgstr "" #: ../src/menubar.c:709 #, c-format msgid "%s: Running TLE update from %s" msgstr "" #: ../src/menubar.c:734 msgid "Updating TLE files from files" msgstr "" #: ../src/menubar.c:800 msgid "" "A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:" msgstr "" #: ../src/menubar.c:849 msgid "_New module" msgstr "" #: ../src/menubar.c:856 msgid "_Open module" msgstr "" #: ../src/menubar.c:866 msgid "_Log browser" msgstr "" #: ../src/menubar.c:876 msgid "_Quit" msgstr "" #: ../src/menubar.c:891 msgid "Update TLE data from _network" msgstr "" #: ../src/menubar.c:896 msgid "Update TLE data from local _files" msgstr "" #: ../src/menubar.c:901 msgid "Update transponder data" msgstr "" #: ../src/menubar.c:909 msgid "_Preferences" msgstr "" #: ../src/menubar.c:922 msgid "_Online help" msgstr "" #: ../src/menubar.c:931 msgid "_License" msgstr "" #: ../src/menubar.c:936 msgid "_News" msgstr "" #: ../src/menubar.c:943 msgid "_About Gpredict" msgstr "" #: ../src/menubar.c:963 msgid "_File" msgstr "" #: ../src/menubar.c:969 msgid "_Edit" msgstr "" #: ../src/menubar.c:975 msgid "_Help" msgstr "" #: ../src/mod-cfg.c:62 #, c-format msgid "%s: Already have module %s. Ask user to confirm..." msgstr "" #: ../src/mod-cfg.c:69 #, c-format msgid "" "There is already a module called %s.\n" "Do you want to overwrite this module?" msgstr "" #: ../src/mod-cfg.c:119 ../src/mod-cfg.c:817 #, c-format msgid "%s:%s: Could not fetch entry %d in satellite list" msgstr "" #: ../src/mod-cfg.c:327 #, c-format msgid "%s: Module has no QTH; use default." msgstr "" #. is buff == "** DEFAULT **" clear the configuration key #. otherwise store the filename #. #: ../src/mod-cfg.c:329 ../src/mod-cfg.c:389 ../src/mod-cfg.c:774 msgid "** DEFAULT **" msgstr "" #: ../src/mod-cfg.c:379 #, c-format msgid "%s:%d: Failed to open user cfg dir %s (%s)" msgstr "" #: ../src/mod-cfg.c:513 msgid "Selected Satellites" msgstr "" #: ../src/mod-cfg.c:620 msgid "Create new module" msgstr "" #: ../src/mod-cfg.c:622 msgid "Edit module" msgstr "" #: ../src/mod-cfg.c:674 msgid "Select a ground station for this module." msgstr "" #: ../src/mod-cfg.c:681 msgid "Module name" msgstr "" #: ../src/mod-cfg.c:686 msgid "Ground station" msgstr "" #. add button #: ../src/mod-cfg.c:692 msgid "Add" msgstr "" #: ../src/mod-cfg.c:693 msgid "Add a new ground station" msgstr "" #: ../src/mod-cfg.c:704 msgid "Satellites" msgstr "" #: ../src/mod-cfg.c:724 msgid "Add satellite to list" msgstr "" #: ../src/mod-cfg.c:729 msgid "Delete satellite from list" msgstr "" #. quick sat selector tutorial label #: ../src/mod-cfg.c:734 msgid "Double click on a satellite to move it to the other box." msgstr "" #: ../src/mod-cfg.c:827 #, c-format msgid "%s: Applied changes to %s." msgstr "" #. window icon file name #: ../src/mod-cfg.c:847 msgid "Module properties" msgstr "" #: ../src/mod-cfg.c:943 #, c-format msgid "%s: Error while saving module data (%d)." msgstr "" #: ../src/mod-cfg.c:953 ../src/mod-cfg.c:1044 #, c-format msgid "%s: User tried to create module with no sats." msgstr "" #: ../src/mod-cfg.c:966 ../src/mod-cfg.c:1056 msgid "Please select at least one satellite from the list." msgstr "" #: ../src/mod-cfg.c:1092 #, c-format msgid "%s: Attempt to save data to empty file name." msgstr "" #: ../src/mod-cfg.c:1100 #, c-format msgid "%s: Attempt to save NULL data." msgstr "" #: ../src/mod-cfg-get-param.c:76 #, c-format msgid "%s: Failed to read boolean (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:108 #, c-format msgid "%s: Failed to read integer (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:141 #, c-format msgid "%s: Failed to read string (%s)" msgstr "" #: ../src/mod-cfg-get-param.c:180 #, c-format msgid "%s: Failed to get integer list: %s" msgstr "" #: ../src/mod-mgr.c:137 #, c-format msgid "%s: Failed to restore %s" msgstr "" #: ../src/mod-mgr.c:167 #, c-format msgid "%s: No modules have to be restored." msgstr "" #: ../src/mod-mgr.c:205 #, c-format msgid "%s: Added %s to module manager (page %d)." msgstr "" #: ../src/mod-mgr.c:212 #, c-format msgid "%s: Added %s to module manager (NOT DOCKED)." msgstr "" #: ../src/mod-mgr.c:220 #, c-format msgid "%s: Module %s seems to be NULL" msgstr "" #: ../src/mod-mgr.c:256 #, c-format msgid "%s: Could not find child in notebook. This may hurt..." msgstr "" #: ../src/mod-mgr.c:266 #, c-format msgid "%s: Removed child from notebook page %d." msgstr "" #: ../src/mod-mgr.c:316 #, c-format msgid "%s: Attempt to save state but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:325 #, c-format msgid "%s: No modules need to save state." msgstr "" #: ../src/mod-mgr.c:352 #, c-format msgid "%s: Stored %s" msgstr "" #: ../src/mod-mgr.c:359 #, c-format msgid "%s: Saved states for %d modules." msgstr "" #: ../src/mod-mgr.c:417 ../src/mod-mgr.c:486 #, c-format msgid "%s: Module %s not found in list. Trying to recover." msgstr "" #: ../src/mod-mgr.c:426 #, c-format msgid "%s: Module %s already in notebook!" msgstr "" #: ../src/mod-mgr.c:439 #, c-format msgid "%s: Docked %s into notebook (page %d)" msgstr "" #: ../src/mod-mgr.c:495 #, c-format msgid "%s: Module %s does not seem to be docked!" msgstr "" #: ../src/mod-mgr.c:505 #, c-format msgid "%s: Removed %s from notebook page %d." msgstr "" #: ../src/mod-mgr.c:538 msgid "Gpredict: (none)" msgstr "" #: ../src/mod-mgr.c:544 ../src/mod-mgr.c:563 #, c-format msgid "Gpredict: %s" msgstr "" #: ../src/mod-mgr.c:579 #, c-format msgid "%s: Attempt to reload sats but mod-mgr is NULL?" msgstr "" #: ../src/mod-mgr.c:588 #, c-format msgid "%s: No modules need to reload sats." msgstr "" #: ../src/mod-mgr.c:644 msgid "Gpredict: " msgstr "" #. pass details #: ../src/pass-popup-menu.c:84 msgid "Show details" msgstr "" #. Polar plot pass #: ../src/pass-popup-menu.c:96 msgid "Polar plot" msgstr "" #. Az/El plot pass #: ../src/pass-popup-menu.c:105 msgid "Az/El plot" msgstr "" #: ../src/pass-to-txt.c:40 msgid " Time" msgstr "" #: ../src/pass-to-txt.c:41 msgid " Az " msgstr "" #. 6 #: ../src/pass-to-txt.c:42 msgid " El " msgstr "" #: ../src/pass-to-txt.c:43 msgid " Ra " msgstr "" #: ../src/pass-to-txt.c:44 msgid " Dec " msgstr "" #: ../src/pass-to-txt.c:46 msgid " Rate " msgstr "" #: ../src/pass-to-txt.c:47 msgid " Lat " msgstr "" #: ../src/pass-to-txt.c:48 msgid " Lon " msgstr "" #: ../src/pass-to-txt.c:49 msgid " SSP " msgstr "" #: ../src/pass-to-txt.c:51 msgid " Alt " msgstr "" #: ../src/pass-to-txt.c:52 msgid " Vel " msgstr "" #: ../src/pass-to-txt.c:53 msgid " Dop " msgstr "" #: ../src/pass-to-txt.c:54 msgid " Loss " msgstr "" #: ../src/pass-to-txt.c:55 msgid " Del " msgstr "" #: ../src/pass-to-txt.c:56 msgid " MA " msgstr "" #: ../src/pass-to-txt.c:57 msgid " Pha " msgstr "" #: ../src/pass-to-txt.c:86 msgid " AOS" msgstr "" #: ../src/pass-to-txt.c:87 msgid " TCA" msgstr "" #. 6 #: ../src/pass-to-txt.c:88 msgid " LOS" msgstr "" #: ../src/pass-to-txt.c:89 ../src/sat-pass-dialogs.c:60 msgid "Duration" msgstr "" #: ../src/pass-to-txt.c:90 ../src/sat-pass-dialogs.c:61 #: ../src/sat-pref-rot.c:502 msgid "Max El" msgstr "" #: ../src/pass-to-txt.c:91 ../src/sat-pass-dialogs.c:62 msgid "AOS Az" msgstr "" #: ../src/pass-to-txt.c:92 ../src/sat-pass-dialogs.c:63 msgid "Max El Az" msgstr "" #: ../src/pass-to-txt.c:93 ../src/sat-pass-dialogs.c:64 msgid "LOS Az" msgstr "" #: ../src/pass-to-txt.c:136 msgid "Local" msgstr "" #: ../src/pass-to-txt.c:170 #, c-format msgid "" "Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n" msgstr "" #: ../src/pass-to-txt.c:471 #, c-format msgid "" "Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" msgstr "" #: ../src/predict-tools.c:707 #, c-format msgid "%s: Found %d passes for %s in time window [%f;%f]" msgstr "" #: ../src/predict-tools.c:927 #, c-format msgid "%s: Returning a pass for %s that starts after the seeded time." msgstr "" #: ../src/predict-tools.c:933 #, c-format msgid "%s: Returning a pass for %s that ends before the seeded time." msgstr "" #. FIXME #. page header #. create dialog #: ../src/print-pass.c:123 ../src/sat-pass-dialogs.c:477 #, c-format msgid "Pass details for %s (orbit %d)" msgstr "" #. avoid unused parameter compiler warning #: ../src/print-pass.c:180 #, c-format msgid "%s: Not implemented!" msgstr "" #: ../src/qth-data.c:71 #, c-format msgid "%s: Could not load data from %s (%s)" msgstr "" #. send a debug message, then read data #: ../src/qth-data.c:78 #, c-format msgid "%s: QTH data: %s" msgstr "" #: ../src/qth-data.c:96 #, c-format msgid "%s: QTH has no location (%s)." msgstr "" #: ../src/qth-data.c:108 #, c-format msgid "%s: QTH has no description." msgstr "" #: ../src/qth-data.c:120 #, c-format msgid "%s: QTH has no weather station." msgstr "" #: ../src/qth-data.c:133 #, c-format msgid "%s: Error reading QTH latitude (%s)." msgstr "" #: ../src/qth-data.c:155 #, c-format msgid "%s: Error reading QTH longitude (%s)." msgstr "" #: ../src/qth-data.c:177 #, c-format msgid "%s: Error reading QTH altitude (%s)." msgstr "" #: ../src/qth-data.c:194 #, c-format msgid "%s: Error reading QTH type (%s)." msgstr "" #: ../src/qth-data.c:209 #, c-format msgid "%s: Error reading GPSD port (%s)." msgstr "" #: ../src/qth-data.c:222 #, c-format msgid "%s: QTH has no GPSD Server." msgstr "" #: ../src/qth-data.c:234 ../src/qth-data.c:528 #, c-format msgid "%s: Could not set QRA for %s at %f, %f." msgstr "" #: ../src/qth-data.c:242 #, c-format msgid "%s: QTH data: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-data.c:571 ../src/qth-data.c:594 #, c-format msgid "%s: Could not open gpsd at %s:%d" msgstr "" #: ../src/qth-data.c:608 #, c-format msgid "%s: Unsupported gpsd api major version (%d)" msgstr "" #: ../src/qth-data.c:687 ../src/qth-data.c:688 msgid "Error" msgstr "" #: ../src/qth-data.c:724 #, c-format msgid "%s: QTH data had bogus lat %f" msgstr "" #: ../src/qth-data.c:731 #, c-format msgid "%s: QTH data had bogus lon %f" msgstr "" #: ../src/qth-data.c:741 #, c-format msgid "%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d" msgstr "" #: ../src/qth-editor.c:95 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d" msgstr "" #: ../src/qth-editor.c:376 ../src/sat-pref-qth-editor.c:479 #, c-format msgid "%s:%s: %.2f %.2f => %s" msgstr "" #: ../src/qth-editor.c:391 ../src/sat-pref-qth-editor.c:494 #, c-format msgid "%s:%d: Error converting lon/lat to locator" msgstr "" #. debug message #: ../src/qth-editor.c:421 ../src/sat-pref-qth-editor.c:527 #, c-format msgid "%s:%s: %s => %.2f %.2f" msgstr "" #: ../src/qth-editor.c:462 ../src/sat-pref-qth-editor.c:569 #, c-format msgid "%s:%d: Invalid locator: %s" msgstr "" #. QTH name #. Config name #: ../src/qth-editor.c:483 ../src/sat-pref-qth.c:157 #: ../src/sat-pref-qth-editor.c:590 ../src/sat-pref-rig-editor.c:241 #: ../src/sat-pref-rot-editor.c:171 msgid "Name" msgstr "" #: ../src/qth-editor.c:492 ../src/sat-pref-qth-editor.c:598 msgid "" "Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #. QTH description #: ../src/qth-editor.c:497 ../src/sat-pref-qth-editor.c:609 msgid "Description" msgstr "" #: ../src/qth-editor.c:505 ../src/sat-pref-qth-editor.c:616 msgid "Enter an optional description for this ground station." msgstr "" #: ../src/qth-editor.c:517 msgid "Optional location of the ground station, fx. Copenhagen, Denmark." msgstr "" #: ../src/qth-editor.c:520 ../src/qth-editor.c:621 #: ../src/sat-pref-qth-editor.c:632 ../src/sat-pref-qth-editor.c:735 msgid "Select" msgstr "" #: ../src/qth-editor.c:521 ../src/sat-pref-qth-editor.c:633 msgid "Select a location from a list" msgstr "" #. latitude #: ../src/qth-editor.c:527 ../src/sat-pref-qth-editor.c:640 msgid "Latitude (°)" msgstr "" #: ../src/qth-editor.c:537 ../src/sat-pref-qth-editor.c:649 msgid "Select the latitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:541 ../src/sat-pref-qth-editor.c:654 msgid "North" msgstr "" #: ../src/qth-editor.c:542 ../src/sat-pref-qth-editor.c:655 msgid "South" msgstr "" #. longitude #: ../src/qth-editor.c:547 ../src/sat-pref-qth-editor.c:660 msgid "Longitude (°)" msgstr "" #: ../src/qth-editor.c:557 ../src/sat-pref-qth-editor.c:669 msgid "Select the longitude of the ground station in decimal degrees." msgstr "" #: ../src/qth-editor.c:561 ../src/sat-pref-qth-editor.c:674 msgid "East" msgstr "" #: ../src/qth-editor.c:562 ../src/sat-pref-qth-editor.c:675 msgid "West" msgstr "" #. QRA locator #: ../src/qth-editor.c:580 ../src/sat-pref-qth-editor.c:693 msgid "Locator" msgstr "" #: ../src/qth-editor.c:586 ../src/sat-pref-qth-editor.c:699 msgid "Maidenhead locator grid." msgstr "" #: ../src/qth-editor.c:600 msgid "Select the altitude of the ground station" msgstr "" #: ../src/qth-editor.c:604 ../src/sat-pref-qth-editor.c:718 msgid "ft ASL" msgstr "" #: ../src/qth-editor.c:606 ../src/sat-pref-qth-editor.c:720 msgid "m ASL" msgstr "" #. weather station #: ../src/qth-editor.c:612 ../src/sat-pref-qth-editor.c:726 msgid "Weather St" msgstr "" #: ../src/qth-editor.c:618 ../src/sat-pref-qth-editor.c:732 msgid "Four letter code for weather station" msgstr "" #: ../src/qth-editor.c:622 ../src/sat-pref-qth-editor.c:736 msgid "Select a weather station" msgstr "" #. GPSD enabled #: ../src/qth-editor.c:629 ../src/sat-pref-qth-editor.c:743 msgid "QTH Type" msgstr "" #: ../src/qth-editor.c:634 ../src/sat-pref-qth-editor.c:748 msgid "Static" msgstr "" #: ../src/qth-editor.c:635 ../src/sat-pref-qth-editor.c:749 msgid "GPSD" msgstr "" #: ../src/qth-editor.c:639 ../src/sat-pref-qth-editor.c:752 msgid "" "A qth can be static, ie. it does not change, or gpsd based for computers " "with gps attached." msgstr "" #. GPSD Server #: ../src/qth-editor.c:643 ../src/sat-pref-qth-editor.c:758 msgid "GPSD Server" msgstr "" #: ../src/qth-editor.c:649 ../src/sat-pref-qth-editor.c:764 msgid "GPSD Server." msgstr "" #. GPSD Port #: ../src/qth-editor.c:653 ../src/sat-pref-qth-editor.c:768 msgid "GPSD Port" msgstr "" #: ../src/qth-editor.c:662 ../src/sat-pref-qth-editor.c:776 msgid "Set the port for GPSD to use. Default for gpsd is 2947." msgstr "" #. crate dialog and add contents #: ../src/qth-editor.c:699 ../src/sat-pref-qth-editor.c:801 msgid "Edit ground station data" msgstr "" #: ../src/qth-editor.c:740 #, c-format msgid "" "An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name." msgstr "" #: ../src/radio-conf.c:70 ../src/radio-conf.c:240 ../src/rotor-conf.c:67 #, c-format msgid "%s: NULL configuration name!" msgstr "" #: ../src/radio-conf.c:85 ../src/rotor-conf.c:82 #, c-format msgid "%s: Could not load file %s\n" msgstr "" #: ../src/radio-conf.c:98 ../src/radio-conf.c:109 ../src/radio-conf.c:123 #: ../src/radio-conf.c:142 ../src/radio-conf.c:159 ../src/radio-conf.c:171 #: ../src/radio-conf.c:189 ../src/radio-conf.c:204 #, c-format msgid "%s: Error reading radio conf from %s (%s)." msgstr "" #: ../src/radio-conf.c:218 #, c-format msgid "%s: Read radio configuration %s" msgstr "" #: ../src/rotor-conf.c:95 ../src/rotor-conf.c:106 #, c-format msgid "%s: Error reading rotor conf from %s (%s)." msgstr "" #: ../src/rotor-conf.c:117 #, c-format msgid "%s: Az type not defined for %s. Assuming 0..360°" msgstr "" #: ../src/rotor-conf.c:128 #, c-format msgid "%s: MinAz not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:138 #, c-format msgid "%s: MaxAz not defined for %s. Assuming 360°." msgstr "" #: ../src/rotor-conf.c:148 #, c-format msgid "%s: MinEl not defined for %s. Assuming 0°." msgstr "" #: ../src/rotor-conf.c:158 #, c-format msgid "%s: MaxEl not defined for %s. Assuming 90°." msgstr "" #: ../src/rotor-conf.c:168 #, c-format msgid "%s: AzStopPos not defined for %s. Assuming at minaz (%f°)." msgstr "" #: ../src/sat-cfg.c:281 #, c-format msgid "%s: Error reading config file (%s)" msgstr "" #: ../src/sat-cfg.c:284 #, c-format msgid "%s: Using built-in defaults" msgstr "" #: ../src/sat-cfg.c:290 #, c-format msgid "%s: Everything OK." msgstr "" #: ../src/sat-cfg.c:398 ../src/sat-cfg.c:460 ../src/sat-cfg.c:483 #: ../src/sat-cfg.c:515 ../src/sat-cfg.c:576 ../src/sat-cfg.c:610 #: ../src/sat-cfg.c:637 ../src/sat-cfg.c:690 ../src/sat-cfg.c:714 #, c-format msgid "%s: Module not initialised\n" msgstr "" #: ../src/sat-cfg.c:421 ../src/sat-cfg.c:439 ../src/sat-cfg.c:472 #: ../src/sat-cfg.c:496 #, c-format msgid "%s: Unknown BOOL param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:536 ../src/sat-cfg.c:560 ../src/sat-cfg.c:598 #: ../src/sat-cfg.c:623 #, c-format msgid "%s: Unknown STR param index (%d)\n" msgstr "" #: ../src/sat-cfg.c:660 ../src/sat-cfg.c:677 ../src/sat-cfg.c:703 #: ../src/sat-cfg.c:727 #, c-format msgid "%s: Unknown INT param index (%d)\n" msgstr "" #: ../src/sat-info.c:64 msgid "No transponders" msgstr "" #: ../src/sat-info.c:100 #, c-format msgid "Uplink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:107 #, c-format msgid "Uplink: %.4f MHz" msgstr "" #: ../src/sat-info.c:124 #, c-format msgid "Downlink: %.4f ‒ %.4f MHz" msgstr "" #: ../src/sat-info.c:131 #, c-format msgid "Downlink: %.4f MHz" msgstr "" #: ../src/sat-info.c:145 #, c-format msgid "Inverting: %s" msgstr "" #: ../src/sat-info.c:156 #, c-format msgid "Mode: %s" msgstr "" #: ../src/sat-info.c:164 #, c-format msgid "Baudrate: %9.2f" msgstr "" #: ../src/sat-info.c:283 msgid "Satellite name:" msgstr "" #: ../src/sat-info.c:288 #, c-format msgid "%s" msgstr "" #. operational status #: ../src/sat-info.c:295 msgid "Operational Status:" msgstr "" #: ../src/sat-info.c:303 msgid "Operational" msgstr "" #: ../src/sat-info.c:307 msgid "Non-operational" msgstr "" #: ../src/sat-info.c:311 msgid "Partially operational" msgstr "" #: ../src/sat-info.c:315 msgid "Backup/Standby" msgstr "" #: ../src/sat-info.c:319 msgid "Spare" msgstr "" #: ../src/sat-info.c:323 msgid "Extended Mission" msgstr "" #: ../src/sat-info.c:327 ../src/sat-vis.c:40 msgid "Unknown" msgstr "" #. Catnum #: ../src/sat-info.c:336 msgid "Catalogue number:" msgstr "" #. international designator #: ../src/sat-info.c:347 msgid "International designator:" msgstr "" #. elset number #: ../src/sat-info.c:356 msgid "Element set number:" msgstr "" #. elset epoch #: ../src/sat-info.c:367 msgid "Epoch time:" msgstr "" #. Revolution Number @ Epoch #: ../src/sat-info.c:378 msgid "Orbit number @ epoch:" msgstr "" #. Orbit inclination #: ../src/sat-info.c:396 msgid "Inclination:" msgstr "" #. RAAN #: ../src/sat-info.c:407 msgid "RAAN:" msgstr "" #. Eccentricity #: ../src/sat-info.c:418 msgid "Eccentricity:" msgstr "" #. Argument of perigee #: ../src/sat-info.c:429 msgid "Arg. of perigee:" msgstr "" #. Mean Anomaly #: ../src/sat-info.c:440 msgid "Mean anomaly:" msgstr "" #. Mean Motion #: ../src/sat-info.c:451 msgid "Mean motion:" msgstr "" #. one half of the first time derivative of mean motion #: ../src/sat-info.c:462 msgid "½ d/dt (mean motion):" msgstr "" #: ../src/sat-info.c:477 msgid "1/6 d2/dt2 (mean motion):" msgstr "" #. B* drag term #: ../src/sat-info.c:490 msgid "B* drag term:" msgstr "" #: ../src/sat-info.c:510 msgid "Orbit Info" msgstr "" #: ../src/sat-info.c:513 msgid "Transponders" msgstr "" #. create dialog window with NULL parent #: ../src/sat-info.c:516 msgid "Satellite Info" msgstr "" #: ../src/sat-log-browser.c:44 ../src/sat-pass-dialogs.c:98 #: ../src/sat-pass-dialogs.c:121 msgid "Time" msgstr "" #: ../src/sat-log-browser.c:45 msgid "Level" msgstr "" #: ../src/sat-log-browser.c:46 msgid "Message" msgstr "" #: ../src/sat-log-browser.c:54 msgid "NONE" msgstr "" #: ../src/sat-log-browser.c:56 msgid "WARNING" msgstr "" #: ../src/sat-log-browser.c:57 msgid "INFO" msgstr "" #: ../src/sat-log-browser.c:58 ../src/sat-log.c:64 msgid "DEBUG" msgstr "" #: ../src/sat-log-browser.c:179 msgid "Log file is corrupt" msgstr "" #: ../src/sat-log-browser.c:202 #, c-format msgid "%s:%d: Error open debug log (%s)" msgstr "" #. create file chooser dialog #: ../src/sat-log-browser.c:235 msgid "Select Log File" msgstr "" #. Update title with filename #. update window title if file read cleanly #: ../src/sat-log-browser.c:259 ../src/sat-log-browser.c:514 #, c-format msgid "Log Browser: %s" msgstr "" #. clear filename from title if unable to read file #. create dialog window; we use "fake" stock responses to catch user #. button clicks (save_as and pause) #. #. Remove filename if file not read #: ../src/sat-log-browser.c:266 ../src/sat-log-browser.c:478 #: ../src/sat-log-browser.c:522 msgid "Log Browser" msgstr "" #: ../src/sat-log-browser.c:330 msgid "Errors" msgstr "" #: ../src/sat-log-browser.c:334 msgid "Warnings" msgstr "" #: ../src/sat-log-browser.c:338 msgid "Info" msgstr "" #: ../src/sat-log-browser.c:342 msgid "Debug" msgstr "" #: ../src/sat-log-browser.c:352 msgid "Total" msgstr "" #. frame around the table #: ../src/sat-log-browser.c:362 msgid " Summary " msgstr "" #: ../src/sat-log.c:60 msgid " --- " msgstr "" #: ../src/sat-log.c:62 msgid " WARN" msgstr "" #: ../src/sat-log.c:63 msgid " INFO" msgstr "" #. print an error message #: ../src/sat-log.c:99 #, c-format msgid "ERROR: Could not create %s\n" msgstr "" #: ../src/sat-log.c:115 ../src/sat-log.c:330 #, c-format msgid "%s: Failed to delete old log file %s\n" msgstr "" #: ../src/sat-log.c:123 #, c-format msgid "" "\n" "\n" "ERROR: Failed to create %s\n" "%s\n" "\n" msgstr "" #: ../src/sat-log.c:136 #, c-format msgid "%s: Session started" msgstr "" #: ../src/sat-log.c:145 #, c-format msgid "%s: Session ended" msgstr "" #: ../src/sat-log.c:279 #, c-format msgid "%s: Failed to rename %s to %s\n" msgstr "" #: ../src/sat-pass-dialogs.c:58 msgid "TCA" msgstr "" #: ../src/sat-pass-dialogs.c:71 msgid "Acquisition of signal (AOS)" msgstr "" #: ../src/sat-pass-dialogs.c:72 msgid "Time of Closest Approach (TCA)" msgstr "" #: ../src/sat-pass-dialogs.c:73 msgid "Loss of signal (LOS)" msgstr "" #: ../src/sat-pass-dialogs.c:74 msgid "Duration of pass" msgstr "" #: ../src/sat-pass-dialogs.c:75 msgid "Maximum elevation" msgstr "" #: ../src/sat-pass-dialogs.c:76 msgid "Azimuth at AOS" msgstr "" #: ../src/sat-pass-dialogs.c:77 msgid "Az at max. elevation" msgstr "" #: ../src/sat-pass-dialogs.c:78 msgid "Azimuth at LOS" msgstr "" #: ../src/sat-pass-dialogs.c:79 msgid "Orbit number" msgstr "" #: ../src/sat-pass-dialogs.c:80 msgid "Visibility during pass" msgstr "" #: ../src/sat-pass-dialogs.c:447 msgid "Data" msgstr "" #: ../src/sat-pass-dialogs.c:459 msgid "Polar" msgstr "" #: ../src/sat-pass-dialogs.c:471 msgid "Az/El" msgstr "" #. create dialog #: ../src/sat-pass-dialogs.c:1035 #, c-format msgid "Upcoming passes for %s" msgstr "" #: ../src/sat-pass-dialogs.c:1095 #, c-format msgid "%s: PRINT not implemented" msgstr "" #: ../src/sat-pref.c:44 msgid "GPREDICT Preferences :: General" msgstr "" #: ../src/sat-pref.c:45 msgid "GPREDICT Preferences :: Modules" msgstr "" #: ../src/sat-pref.c:46 msgid "GPREDICT Preferences :: Interfaces" msgstr "" #: ../src/sat-pref.c:47 msgid "GPREDICT Preferences :: Predict" msgstr "" #: ../src/sat-pref.c:84 ../src/sat-pref.c:100 msgid "General" msgstr "" #: ../src/sat-pref.c:87 ../src/sat-pref.c:108 msgid "Modules" msgstr "" #: ../src/sat-pref.c:90 ../src/sat-pref.c:116 msgid "Interfaces" msgstr "" #: ../src/sat-pref.c:93 ../src/sat-pref.c:124 msgid "Predict" msgstr "" #. create and display preferences window #: ../src/sat-pref.c:148 msgid "Gpredict Preferences :: General" msgstr "" #: ../src/sat-pref-conditions.c:136 ../src/sat-pref-debug.c:243 #: ../src/sat-pref-layout.c:456 ../src/sat-pref-list-view.c:138 #: ../src/sat-pref-multi-pass.c:106 ../src/sat-pref-polar-view.c:751 #: ../src/sat-pref-refresh.c:218 ../src/sat-pref-single-pass.c:109 #: ../src/sat-pref-single-sat.c:141 ../src/sat-pref-sky-at-glance.c:230 #: ../src/sat-pref-tle.c:411 msgid "Reset settings to the default values." msgstr "" #. minimum elevation #: ../src/sat-pref-conditions.c:161 msgid "Minimum elevation" msgstr "" #: ../src/sat-pref-conditions.c:166 msgid "" "Elevation threshold for passes.\n" "Passes with maximum elevation below this limit will be omitted" msgstr "" #: ../src/sat-pref-conditions.c:177 ../src/sat-pref-conditions.c:305 #: ../src/sat-pref-map-view.c:1290 msgid "[deg]" msgstr "" #: ../src/sat-pref-conditions.c:186 msgid "Multiple Passes:" msgstr "" #. number of passes #: ../src/sat-pref-conditions.c:191 msgid "Number of passes to predict" msgstr "" #: ../src/sat-pref-conditions.c:196 msgid "The maximum number of passes to predict." msgstr "" #. lookahead #: ../src/sat-pref-conditions.c:207 msgid "Passes should occur within" msgstr "" #: ../src/sat-pref-conditions.c:212 msgid "" "Only passes that occur within the specified number of days will be shown." msgstr "" #: ../src/sat-pref-conditions.c:224 msgid "[days]" msgstr "" #: ../src/sat-pref-conditions.c:233 msgid "Pass Details:" msgstr "" #. time resolution #: ../src/sat-pref-conditions.c:238 msgid "Time resolution" msgstr "" #: ../src/sat-pref-conditions.c:243 msgid "" "Gpredict will try to show the pass details with the specified time " "resolution." msgstr "" #: ../src/sat-pref-conditions.c:253 msgid "[sec]" msgstr "" #. number of entries #: ../src/sat-pref-conditions.c:258 msgid "Number of entries" msgstr "" #: ../src/sat-pref-conditions.c:263 msgid "" "Gpredict will try to keep the number of rows in the detailed prediction " "within this limit." msgstr "" #: ../src/sat-pref-conditions.c:281 msgid "Satellite Visibility:" msgstr "" #. twilight threshold #: ../src/sat-pref-conditions.c:286 msgid "Twilight threshold" msgstr "" #: ../src/sat-pref-conditions.c:291 msgid "" "Satellites are only considered visible if the elevation of the Sun is below " "the specified threshold.\n" " • Astronomical: -18° to -12°\n" " • Nautical: -12° to -6°\n" " • Civil: -6° to 0°" msgstr "" #. T0 for predictions #: ../src/sat-pref-conditions.c:314 msgid "Always use real time for pass predictions" msgstr "" #: ../src/sat-pref-conditions.c:317 msgid "" "Check this box if you want Gpredict to always use the current (real) time as " "starting time when predicting future satellite passes.\n" "\n" "If you leave the box unchecked and the time controller is active, Gpredict " "will use the time from the time controller as starting time for predicting " "satellite passes." msgstr "" #: ../src/sat-pref-debug.c:171 msgid "Debug level:" msgstr "" #: ../src/sat-pref-debug.c:176 msgid "Level 0: None" msgstr "" #: ../src/sat-pref-debug.c:178 msgid "Level 1: Error" msgstr "" #: ../src/sat-pref-debug.c:180 msgid "Level 2: Warning" msgstr "" #: ../src/sat-pref-debug.c:182 msgid "Level 3: Info" msgstr "" #: ../src/sat-pref-debug.c:184 msgid "Level 4: Debug" msgstr "" #: ../src/sat-pref-debug.c:189 msgid "" "Select the debug level. The higher the level, the more messages will be " "logged." msgstr "" #: ../src/sat-pref-debug.c:201 msgid "Delete log files older than:" msgstr "" #: ../src/sat-pref-debug.c:206 msgid "Always delete" msgstr "" #: ../src/sat-pref-debug.c:207 msgid "1 day" msgstr "" #: ../src/sat-pref-debug.c:208 msgid "1 week" msgstr "" #: ../src/sat-pref-debug.c:209 msgid "1 month" msgstr "" #: ../src/sat-pref-debug.c:213 msgid "Select how often gpredict should delete old log files." msgstr "" #: ../src/sat-pref-debug.c:229 #, c-format msgid "" "Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp." msgstr "" #: ../src/sat-pref-formats.c:32 msgid "" "Display local time instead of UTC. Note: The local time is that of your " "operating system and not the local time at the location, which you select as " "tracking reference." msgstr "" #: ../src/sat-pref-formats.c:37 msgid "" "Enter a format string using the following codes:\n" "\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n" "\n" "See the user manual for more codes and examples." msgstr "" #: ../src/sat-pref-formats.c:45 msgid "" "Checking this box will cause geographical coordinates to be displayed using " "a suffix instead of sign (eg. 23.43°W instead of -23.43°)." msgstr "" #: ../src/sat-pref-formats.c:51 msgid "" "Display distances using Imperial units, for example miles instead of " "kilometres." msgstr "" #: ../src/sat-pref-formats.c:77 msgid "Show local time instead of UTC." msgstr "" #: ../src/sat-pref-formats.c:100 msgid "Reset to default value" msgstr "" #: ../src/sat-pref-formats.c:104 msgid "Time format:" msgstr "" #: ../src/sat-pref-formats.c:113 msgid "Use N/S/E/W for geographical coordinates." msgstr "" #: ../src/sat-pref-formats.c:122 msgid "Use Imperial units instead of Metric." msgstr "" #: ../src/sat-pref-general.c:52 msgid "Number Formats" msgstr "" #: ../src/sat-pref-general.c:55 msgid "Ground Stations" msgstr "" #: ../src/sat-pref-general.c:61 msgid "Message Logs" msgstr "" #: ../src/sat-pref-interfaces.c:53 msgid "Radios" msgstr "" #: ../src/sat-pref-interfaces.c:56 msgid "Rotators" msgstr "" #: ../src/sat-pref-layout.c:55 msgid "World map, polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:57 msgid "World map" msgstr "" #: ../src/sat-pref-layout.c:58 msgid "Table" msgstr "" #: ../src/sat-pref-layout.c:59 msgid "World map and table" msgstr "" #: ../src/sat-pref-layout.c:61 msgid "Polar and single sat" msgstr "" #: ../src/sat-pref-layout.c:63 msgid "Polar and upcoming passes" msgstr "" #: ../src/sat-pref-layout.c:66 msgid "All views (narrow)" msgstr "" #: ../src/sat-pref-layout.c:68 msgid "All views (wide)" msgstr "" #: ../src/sat-pref-layout.c:70 msgid "Map, table, polar and single sat (wide)" msgstr "" #: ../src/sat-pref-layout.c:71 msgid "Custom" msgstr "" #. create header #: ../src/sat-pref-layout.c:259 msgid "Select layout:" msgstr "" #. layout string #: ../src/sat-pref-layout.c:291 msgid "Layout code:" msgstr "" #: ../src/sat-pref-layout.c:299 msgid "" "This entry holds the layout code for the module.\n" "Consult the user manual for how to create custom layouts using layout codes." msgstr "" #: ../src/sat-pref-layout.c:334 msgid "Window Placements:" msgstr "" #: ../src/sat-pref-layout.c:339 msgid "Restore position of main window" msgstr "" #: ../src/sat-pref-layout.c:344 msgid "" "If you check this button, gpredict will try to place the main window at the " "position it was during the last session.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:354 msgid "Restore position of module windows" msgstr "" #: ../src/sat-pref-layout.c:359 msgid "" "If you check this button, gpredict will try to place the module windows at " "the position they were the last time.\n" "Note that window managers can ignore this request." msgstr "" #: ../src/sat-pref-layout.c:370 msgid "Restore the state of modules when reopened (docked or window)" msgstr "" #: ../src/sat-pref-layout.c:374 msgid "" "If you check this button, gpredict will restore the states of the modules " "from the last time they were used." msgstr "" #: ../src/sat-pref-layout.c:462 ../src/sat-pref-list-view.c:144 #: ../src/sat-pref-polar-view.c:758 ../src/sat-pref-refresh.c:224 #: ../src/sat-pref-single-sat.c:147 msgid "Reset module settings to the global values." msgstr "" #: ../src/sat-pref-list-view.c:180 ../src/sat-pref-single-sat.c:171 msgid "Visible Fields:" msgstr "" #: ../src/sat-pref-map-view.c:695 msgid "Background Map:" msgstr "" #. select button #: ../src/sat-pref-map-view.c:751 msgid "Select map" msgstr "" #: ../src/sat-pref-map-view.c:752 msgid "Click to select a map" msgstr "" #: ../src/sat-pref-map-view.c:776 ../src/sat-pref-polar-view.c:393 msgid "Extra Contents:" msgstr "" #. QTH info #: ../src/sat-pref-map-view.c:785 ../src/sat-pref-polar-view.c:402 msgid "QTH Info" msgstr "" #: ../src/sat-pref-map-view.c:787 msgid "Show location information on the map" msgstr "" #: ../src/sat-pref-map-view.c:808 msgid "Show which satellite comes up next and at what time" msgstr "" #. Cursor position #: ../src/sat-pref-map-view.c:828 ../src/sat-pref-polar-view.c:446 msgid "Cursor Position" msgstr "" #: ../src/sat-pref-map-view.c:830 msgid "Show the latitude and longitude of the mouse pointer" msgstr "" #. Grid #: ../src/sat-pref-map-view.c:851 msgid "Grid Lines" msgstr "" #: ../src/sat-pref-map-view.c:853 msgid "Show horizontal and vertical grid lines" msgstr "" #: ../src/sat-pref-map-view.c:891 ../src/sat-pref-polar-view.c:509 #: ../src/sat-pref-sky-at-glance.c:297 msgid "Colours:" msgstr "" #. background #: ../src/sat-pref-map-view.c:903 msgid "Ground Station:" msgstr "" #: ../src/sat-pref-map-view.c:909 msgid "Select the ground station colour" msgstr "" #. Grid in case it is enabled #: ../src/sat-pref-map-view.c:925 msgid "Grid:" msgstr "" #: ../src/sat-pref-map-view.c:931 msgid "Select the grid colour" msgstr "" #. tick labels #: ../src/sat-pref-map-view.c:947 ../src/sat-pref-polar-view.c:566 msgid "Tick Labels:" msgstr "" #: ../src/sat-pref-map-view.c:953 msgid "Select a colour for tick labels" msgstr "" #. satellite #: ../src/sat-pref-map-view.c:969 ../src/sat-pref-polar-view.c:591 msgid "Satellite:" msgstr "" #: ../src/sat-pref-map-view.c:975 msgid "Select the satellite colour" msgstr "" #. selected satellite #: ../src/sat-pref-map-view.c:991 ../src/sat-pref-polar-view.c:614 msgid "Selected Sat.:" msgstr "" #: ../src/sat-pref-map-view.c:998 msgid "Select colour for selected satellites" msgstr "" #. tack #: ../src/sat-pref-map-view.c:1015 msgid "Ground Track:" msgstr "" #: ../src/sat-pref-map-view.c:1021 msgid "Select ground track colour" msgstr "" #. coverage #: ../src/sat-pref-map-view.c:1038 msgid "Area Coverage:" msgstr "" #: ../src/sat-pref-map-view.c:1045 msgid "" "Select colour for coverage area.\n" "Hint: Make it transparent" msgstr "" #. Info foreground #: ../src/sat-pref-map-view.c:1063 msgid "Info Text FG:" msgstr "" #: ../src/sat-pref-map-view.c:1070 msgid "Select info text foreground colour" msgstr "" #. Info background #: ../src/sat-pref-map-view.c:1087 msgid "Info Text BG:" msgstr "" #: ../src/sat-pref-map-view.c:1094 msgid "Select info text background colour" msgstr "" #. Solar terminator #: ../src/sat-pref-map-view.c:1111 msgid "Solar terminator:" msgstr "" #: ../src/sat-pref-map-view.c:1118 msgid "Select solar terminator colour" msgstr "" #. Earth shadow #: ../src/sat-pref-map-view.c:1136 msgid "Global shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1142 msgid "Select Earth shadow colour" msgstr "" #. Shadow #: ../src/sat-pref-map-view.c:1160 msgid "Shadow:" msgstr "" #: ../src/sat-pref-map-view.c:1164 msgid "Transp." msgstr "" #: ../src/sat-pref-map-view.c:1168 msgid "Opaque" msgstr "" #: ../src/sat-pref-map-view.c:1186 msgid "" "Shadow transparency under the satellite marker.\n" "\n" "The shadow improves the visibility of the satellites where the colour of the " "background is light, e.g. the South Pole. Fully transparent is the same as " "no shadow." msgstr "" #: ../src/sat-pref-map-view.c:1217 msgid "Display ground track for" msgstr "" #: ../src/sat-pref-map-view.c:1241 msgid "orbit(s)" msgstr "" #: ../src/sat-pref-map-view.c:1265 msgid "Center map at longitude" msgstr "" #: ../src/sat-pref-map-view.c:1270 msgid "Select longitude. West is negative." msgstr "" #: ../src/sat-pref-map-view.c:1313 msgid "Reset settings to default values" msgstr "" #: ../src/sat-pref-map-view.c:1318 msgid "Reset module to global settings" msgstr "" #: ../src/sat-pref-modules.c:65 msgid "Layout" msgstr "" #: ../src/sat-pref-modules.c:68 msgid "Refresh Rates" msgstr "" #: ../src/sat-pref-modules.c:71 msgid "List View" msgstr "" #: ../src/sat-pref-modules.c:74 msgid "Map View" msgstr "" #: ../src/sat-pref-modules.c:77 msgid "Polar View" msgstr "" #: ../src/sat-pref-modules.c:80 msgid "Single Sat View" msgstr "" #: ../src/sat-pref-multi-pass.c:130 ../src/sat-pref-single-pass.c:134 msgid "Visible Columns:" msgstr "" #: ../src/sat-pref-polar-view.c:257 #, c-format msgid "%s:%s: Invalid chart orientation %d (using N/E/S/W)" msgstr "" #: ../src/sat-pref-polar-view.c:287 msgid "Orientation:" msgstr "" #. N/E/S/W #: ../src/sat-pref-polar-view.c:296 msgid "N/E/S/W" msgstr "" #: ../src/sat-pref-polar-view.c:298 msgid "" "\tN\n" "W\t\tE\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:303 msgid "N/W/S/E" msgstr "" #: ../src/sat-pref-polar-view.c:305 msgid "" "\tN\n" "E\t\tW\n" "\tS" msgstr "" #: ../src/sat-pref-polar-view.c:309 msgid "S/E/N/W" msgstr "" #: ../src/sat-pref-polar-view.c:311 msgid "" "\tS\n" "W\t\tE\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:316 msgid "S/W/N/E" msgstr "" #: ../src/sat-pref-polar-view.c:318 msgid "" "\tS\n" "E\t\tW\n" "\tN" msgstr "" #: ../src/sat-pref-polar-view.c:354 #, c-format msgid "%f:%d: Invalid PolarView orientation (%d)" msgstr "" #: ../src/sat-pref-polar-view.c:405 msgid "Show location information on the polar plot" msgstr "" #: ../src/sat-pref-polar-view.c:427 msgid "Show which satellites comes up next and at what time" msgstr "" #: ../src/sat-pref-polar-view.c:449 msgid "Show the azimuth and elevation of the mouse pointer" msgstr "" #. Extra tick marks #: ../src/sat-pref-polar-view.c:468 msgid "Extra Az Ticks" msgstr "" #: ../src/sat-pref-polar-view.c:471 msgid "Show extra tick marks for every 30°" msgstr "" #. background #: ../src/sat-pref-polar-view.c:520 msgid "Background:" msgstr "" #: ../src/sat-pref-polar-view.c:526 ../src/sat-pref-polar-view.c:668 msgid "Click to select background colour" msgstr "" #. Axis #: ../src/sat-pref-polar-view.c:543 msgid "Axes/Circles:" msgstr "" #: ../src/sat-pref-polar-view.c:549 msgid "Click to select the axis colour" msgstr "" #: ../src/sat-pref-polar-view.c:574 msgid "Click to select the colour for tick labels" msgstr "" #: ../src/sat-pref-polar-view.c:597 msgid "Click to select satellite colour" msgstr "" #: ../src/sat-pref-polar-view.c:622 msgid "Click to select colour for selected satellites" msgstr "" #. track #: ../src/sat-pref-polar-view.c:639 msgid "Sky Track:" msgstr "" #: ../src/sat-pref-polar-view.c:645 msgid "Click to select track colour" msgstr "" #. Info #: ../src/sat-pref-polar-view.c:662 msgid "Info Text:" msgstr "" #: ../src/sat-pref-polar-view.c:699 msgid "Miscellaneous:" msgstr "" #. show sky tracks #: ../src/sat-pref-polar-view.c:708 msgid "Show the sky tracks automatically" msgstr "" #: ../src/sat-pref-polar-view.c:711 msgid "" "Automatically show the sky track of a satellite when it comes in range. You " "can always turn the sky track OFF for each individual object" msgstr "" #: ../src/sat-pref-predict.c:56 msgid "Pass Conditions" msgstr "" #: ../src/sat-pref-predict.c:59 msgid "Multiple Passes" msgstr "" #: ../src/sat-pref-predict.c:62 msgid "Single Pass" msgstr "" #: ../src/sat-pref-predict.c:65 msgid "Sky at a Glance" msgstr "" #: ../src/sat-pref-qth.c:201 msgid "" "Alt\n" "(ft)" msgstr "" #: ../src/sat-pref-qth.c:210 msgid "" "Alt\n" "(m)" msgstr "" #: ../src/sat-pref-qth.c:219 msgid "QRA" msgstr "" #: ../src/sat-pref-qth.c:238 msgid "Default" msgstr "" #: ../src/sat-pref-qth.c:252 msgid "" "GPSD\n" "Server" msgstr "" #: ../src/sat-pref-qth.c:261 msgid "" "GPSD\n" "Port" msgstr "" #: ../src/sat-pref-qth.c:269 msgid "" "QTH\n" "Type" msgstr "" #: ../src/sat-pref-qth.c:334 #, c-format msgid "%s:%d: Read QTH data from %s." msgstr "" #: ../src/sat-pref-qth.c:341 #, c-format msgid "%s:%d: Error reading %s (see prev msg)" msgstr "" #: ../src/sat-pref-qth.c:351 ../src/sat-pref-qth.c:922 #, c-format msgid "%s:%d: Failed to open user cfg dir (%s)" msgstr "" #: ../src/sat-pref-qth.c:392 #, c-format msgid "%s:%d: Failed to allocate memory!\n" msgstr "" #: ../src/sat-pref-qth.c:414 #, c-format msgid "%s:%d: Could not convert (%.2f,%.2f) to QRA." msgstr "" #: ../src/sat-pref-qth.c:422 #, c-format msgid "%s:%d: QRA locator is %s" msgstr "" #: ../src/sat-pref-qth.c:434 #, c-format msgid "%s:%d: This appears to be the default QTH." msgstr "" #. add button #: ../src/sat-pref-qth.c:498 ../src/sat-pref-rig.c:738 msgid "Add new" msgstr "" #: ../src/sat-pref-qth.c:500 msgid "Add a new ground station to the list" msgstr "" #. edit button #: ../src/sat-pref-qth.c:504 ../src/sat-pref-rig.c:743 #: ../src/sat-pref-rot.c:348 msgid "Edit" msgstr "" #: ../src/sat-pref-qth.c:506 msgid "Edit the selected ground station" msgstr "" #: ../src/sat-pref-qth.c:512 msgid "Delete selected ground station" msgstr "" #: ../src/sat-pref-qth.c:591 msgid "" "Can not delete ground station!\n" "\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly." msgstr "" #: ../src/sat-pref-qth.c:636 #, c-format msgid "%s:%d: Empty ground station list!" msgstr "" #: ../src/sat-pref-qth.c:677 #, c-format msgid "" "%s:%d: Default QTH can not be cleared! Select another QTH to change default." msgstr "" #: ../src/sat-pref-qth.c:691 #, c-format msgid "%s:%d: New default QTH is %s.qth." msgstr "" #: ../src/sat-pref-qth.c:735 #, c-format msgid "%s:%d: Clearing default flag for %s." msgstr "" #: ../src/sat-pref-qth.c:855 #, c-format msgid "%s:%d: %s appears to be default QTH" msgstr "" #: ../src/sat-pref-qth.c:905 #, c-format msgid "%s:%d: Failed to remove %s" msgstr "" #: ../src/sat-pref-qth.c:911 #, c-format msgid "%s:%d: Removed %s" msgstr "" #: ../src/sat-pref-qth.c:973 msgid "Alt (ft)" msgstr "" #: ../src/sat-pref-qth.c:979 msgid "Alt (m)" msgstr "" #: ../src/sat-pref-qth-editor.c:164 #, c-format msgid "" "%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d" msgstr "" #: ../src/sat-pref-qth-editor.c:176 #, c-format msgid "%s:%d: No ground station selected!" msgstr "" #: ../src/sat-pref-qth-editor.c:274 #, c-format msgid "" "%s:%d: Oooops, gpredict encountered an internal error (no selection in qth " "list)" msgstr "" #: ../src/sat-pref-qth-editor.c:628 msgid "Optional location of the ground station, e.g. Copenhagen, Denmark." msgstr "" #: ../src/sat-pref-qth-editor.c:712 msgid "" "Select the altitude of the ground station in meters or feet depending on " "your settings" msgstr "" #. data refresh #: ../src/sat-pref-refresh.c:250 msgid "Refresh data every" msgstr "" #: ../src/sat-pref-refresh.c:274 msgid "[msec]" msgstr "" #. List View #: ../src/sat-pref-refresh.c:282 msgid "Refresh list view every" msgstr "" #: ../src/sat-pref-refresh.c:306 ../src/sat-pref-refresh.c:335 #: ../src/sat-pref-refresh.c:365 ../src/sat-pref-refresh.c:395 msgid "[cycle]" msgstr "" #. Map View #: ../src/sat-pref-refresh.c:311 msgid "Refresh map view every" msgstr "" #. Polar View #: ../src/sat-pref-refresh.c:340 msgid "Refresh polar view every" msgstr "" #. Single-Sat View #: ../src/sat-pref-refresh.c:370 msgid "Refresh single-sat view every" msgstr "" #: ../src/sat-pref-rig.c:104 ../src/sat-pref-rot.c:297 #, c-format msgid "%s:%d: Read %s" msgstr "" #: ../src/sat-pref-rig.c:117 ../src/sat-pref-rot.c:310 #, c-format msgid "%s:%d: Failed to read %s" msgstr "" #: ../src/sat-pref-rig.c:198 ../src/sat-pref-rig-editor.c:291 msgid "RX only" msgstr "" #: ../src/sat-pref-rig.c:202 ../src/sat-pref-rig-editor.c:292 msgid "TX only" msgstr "" #: ../src/sat-pref-rig.c:206 msgid "RX + TX" msgstr "" #: ../src/sat-pref-rig.c:210 msgid "Duplex" msgstr "" #: ../src/sat-pref-rig.c:214 ../src/sat-pref-rig-editor.c:296 msgid "FT817/857/897 (auto)" msgstr "" #: ../src/sat-pref-rig.c:218 msgid "FT817/857/897 (man)" msgstr "" #: ../src/sat-pref-rig.c:257 msgid "PTT" msgstr "" #: ../src/sat-pref-rig.c:260 msgid "DCD" msgstr "" #: ../src/sat-pref-rig.c:405 ../src/sat-pref-rot.c:118 #, c-format msgid "%s:%s: Edit button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:440 msgid "" "Select the radio you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:504 ../src/sat-pref-rot.c:451 msgid "Config Name" msgstr "" #. Host #: ../src/sat-pref-rig.c:514 ../src/sat-pref-rig-editor.c:256 #: ../src/sat-pref-rot.c:458 ../src/sat-pref-rot-editor.c:189 msgid "Host" msgstr "" #. port #: ../src/sat-pref-rig.c:521 ../src/sat-pref-rig-editor.c:272 #: ../src/sat-pref-rot.c:465 ../src/sat-pref-rot-editor.c:205 msgid "Port" msgstr "" #: ../src/sat-pref-rig.c:528 msgid "Rig Type" msgstr "" #: ../src/sat-pref-rig.c:539 msgid "PTT Status" msgstr "" #: ../src/sat-pref-rig.c:549 msgid "VFO Up" msgstr "" #: ../src/sat-pref-rig.c:560 msgid "VFO Down" msgstr "" #. Downconverter LO frequency #: ../src/sat-pref-rig.c:571 ../src/sat-pref-rig-editor.c:389 msgid "LO Down" msgstr "" #. Upconverter LO frequency #: ../src/sat-pref-rig.c:582 ../src/sat-pref-rig-editor.c:407 msgid "LO Up" msgstr "" #: ../src/sat-pref-rig.c:593 msgid "Signal AOS" msgstr "" #: ../src/sat-pref-rig.c:604 msgid "Signal LOS" msgstr "" #: ../src/sat-pref-rig.c:635 ../src/sat-pref-rot.c:200 #, c-format msgid "%s:%s: Delete button should have been disabled." msgstr "" #: ../src/sat-pref-rig.c:657 msgid "" "Select the radio you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rig.c:739 msgid "Add a new radio to the list" msgstr "" #: ../src/sat-pref-rig.c:744 msgid "Edit selected radio" msgstr "" #: ../src/sat-pref-rig.c:749 msgid "Delete selected radio" msgstr "" #: ../src/sat-pref-rig.c:833 ../src/sat-pref-rot.c:596 ../src/tle-update.c:701 #: ../src/trsp-update.c:337 #, fuzzy, c-format msgid "%s: Failed to remove %s" msgstr "%s: Провалено створення %s" #: ../src/sat-pref-rig.c:875 #, c-format msgid "%s: Failed to get RIG %s" msgstr "" #: ../src/sat-pref-rig-editor.c:249 msgid "" "Enter a short name for this configuration, e.g. IC910-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rig-editor.c:264 msgid "" "Enter the host where rigctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rigctld are running on the same computer use localhost" msgstr "" #: ../src/sat-pref-rig-editor.c:280 msgid "Enter the port number where rigctld is listening" msgstr "" #. radio type #: ../src/sat-pref-rig-editor.c:285 msgid "Radio type" msgstr "" #: ../src/sat-pref-rig-editor.c:293 msgid "Simplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:294 msgid "Duplex TRX" msgstr "" #: ../src/sat-pref-rig-editor.c:298 msgid "FT817/857/897 (manual)" msgstr "" #: ../src/sat-pref-rig-editor.c:302 msgid "" "RX only: The radio shall only be used as receiver. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is ON " "(manual TX). If not, the controller will always perform doppler tuning and " "you cannot use the same RIG for uplink.\n" "\n" "TX only: The radio shall only be used for uplink. If Monitor PTT " "status is checked the doppler tuning will be suspended while PTT is OFF " "(manual RX).\n" "\n" "Simplex TRX: The radio should be used for both up- and downlink but " "in simplex mode only. This option requires that the PTT status is monitored " "(otherwise gpredict cannot know whether to tune the RX or the TX).\n" "\n" "Duplex: The radio is a full duplex radio, such as the IC910H. " "Gpredict will be continuously tuning both uplink and downlink simultaneously " "and not care about PTT setting.\n" "\n" "FT817/857/897 (auto): This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios do not allow computer control " "while in TX mode. Therefore, TX Doppler correction is applied while the " "radio is in RX mode by toggling between VFO A/B.\n" "\n" "FT817/857/897 (manual): This is similar to the previous mode except " "that switching to TX is done by pressing the SPACE key on the keyboard. " "Gpredict will then update the TX Doppler before actually switching to TX." msgstr "" #. ptt #: ../src/sat-pref-rig-editor.c:340 msgid "PTT status" msgstr "" #: ../src/sat-pref-rig-editor.c:346 msgid "Read PTT" msgstr "" #: ../src/sat-pref-rig-editor.c:347 msgid "Read DCD" msgstr "" #: ../src/sat-pref-rig-editor.c:351 msgid "" "Select PTT type.\n" "\n" "None:\n" "Don't read PTT status from this radio.\n" "\n" "Read PTT:\n" "Read PTT status using get_ptt CAT command. You have to check that your radio " "and hamlib supports this.\n" "\n" "Read DCD:\n" "Read PTT status using get_dcd command. This can be used if your radio does " "not support the read_ptt CAT command and you have a special interface that " "can read squelch status and send it via CTS." msgstr "" #. VFO Up/Down #: ../src/sat-pref-rig-editor.c:362 msgid "VFO Up/Down" msgstr "" #: ../src/sat-pref-rig-editor.c:367 msgid "Not applicable" msgstr "" #: ../src/sat-pref-rig-editor.c:369 msgid "MAIN ↑ / SUB ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:371 msgid "SUB ↑ / MAIN ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:373 msgid "A ↑ / B ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:375 msgid "B ↑ / A ↓" msgstr "" #: ../src/sat-pref-rig-editor.c:380 msgid "" "Select which VFO to use for uplink and downlink. This setting is used for " "full-duplex radios only, such as the IC-910H, FT-847 and the TS-2000.\n" "\n" "IC-910H: MAIN↑ / SUB↓\n" "FT-847: SUB↑ / MAIN↓\n" "TS-2000: B↑ / A↓" msgstr "" #: ../src/sat-pref-rig-editor.c:398 msgid "" "Enter the frequency of the local oscillator of the downconverter, if any." msgstr "" #: ../src/sat-pref-rig-editor.c:402 ../src/sat-pref-rig-editor.c:420 msgid "MHz" msgstr "" #: ../src/sat-pref-rig-editor.c:416 msgid "Enter the frequency of the local oscillator of the upconverter, if any." msgstr "" #. AOS / LOS signalling #: ../src/sat-pref-rig-editor.c:425 msgid "Signalling" msgstr "" #: ../src/sat-pref-rig-editor.c:432 msgid "Enable AOS signalling for this radio." msgstr "" #: ../src/sat-pref-rig-editor.c:437 msgid "Enable LOS signalling for this radio." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rig-editor.c:524 msgid "Edit radio configuration" msgstr "" #: ../src/sat-pref-rot.c:152 msgid "" "Select the rotator you want to edit\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:223 msgid "" "Select the rotator you want to delete\n" "and try again!" msgstr "" #: ../src/sat-pref-rot.c:344 msgid "Add New" msgstr "" #: ../src/sat-pref-rot.c:345 msgid "Add a new rotator" msgstr "" #: ../src/sat-pref-rot.c:349 msgid "Edit selected rotator" msgstr "" #: ../src/sat-pref-rot.c:353 msgid "Delete selected rotator" msgstr "" #: ../src/sat-pref-rot.c:428 #, c-format msgid "Unknown (%d)" msgstr "" #: ../src/sat-pref-rot.c:472 msgid "Min Az" msgstr "" #: ../src/sat-pref-rot.c:482 msgid "Max Az" msgstr "" #: ../src/sat-pref-rot.c:492 msgid "Min El" msgstr "" #: ../src/sat-pref-rot.c:514 msgid "Azimuth Type" msgstr "" #: ../src/sat-pref-rot.c:638 #, c-format msgid "%s: Failed to get ROT %s" msgstr "" #: ../src/sat-pref-rot-editor.c:155 #, c-format msgid "%s:%s: Invalid AZ rotator type." msgstr "" #: ../src/sat-pref-rot-editor.c:178 msgid "" "Enter a short name for this configuration, e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _" msgstr "" #: ../src/sat-pref-rot-editor.c:197 msgid "" "Enter the host where rotctld is running. You can use both host name and IP " "address, e.g. 192.168.1.100\n" "\n" "If gpredict and rotctld are running on the same computer, use localhost" msgstr "" #: ../src/sat-pref-rot-editor.c:213 msgid "Enter the port number where rotctld is listening. Default is 4533." msgstr "" #. Az-type #: ../src/sat-pref-rot-editor.c:222 msgid "Az type" msgstr "" #: ../src/sat-pref-rot-editor.c:233 msgid "" "Select your azimuth range here. Note that gpredict assumes that 0° is at " "North and + direction is clockwise for both types" msgstr "" #. Az and El limits #: ../src/sat-pref-rot-editor.c:241 msgid " Min Az" msgstr "" #: ../src/sat-pref-rot-editor.c:250 msgid " Max Az" msgstr "" #: ../src/sat-pref-rot-editor.c:259 msgid " Min El" msgstr "" #: ../src/sat-pref-rot-editor.c:268 msgid " Max El" msgstr "" #: ../src/sat-pref-rot-editor.c:277 msgid " Azimuth end stop position" msgstr "" #: ../src/sat-pref-rot-editor.c:285 msgid "" "Set the position of the azimuth end stop here, where 0° is at North, -180° " "is south, etc. The default for a 0° → 180° → 360° rotor is 0°, and the " "default for a -180° → 0° → +180° rotor is -180°." msgstr "" #. crate dialog and add contents #: ../src/sat-pref-rot-editor.c:349 msgid "Edit rotator configuration" msgstr "" #: ../src/sat-pref-sky-at-glance.c:265 msgid "Time:" msgstr "" #. number of hours #: ../src/sat-pref-sky-at-glance.c:270 msgid "Find and show passes that occur within" msgstr "" #: ../src/sat-pref-sky-at-glance.c:276 msgid "" "The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours." msgstr "" #: ../src/sat-pref-sky-at-glance.c:286 msgid "hours" msgstr "" #. colour 1 #: ../src/sat-pref-sky-at-glance.c:302 msgid "Satellite 1: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:307 msgid "Select colour 1" msgstr "" #: ../src/sat-pref-sky-at-glance.c:309 ../src/sat-pref-sky-at-glance.c:323 #: ../src/sat-pref-sky-at-glance.c:337 ../src/sat-pref-sky-at-glance.c:351 #: ../src/sat-pref-sky-at-glance.c:365 ../src/sat-pref-sky-at-glance.c:379 #: ../src/sat-pref-sky-at-glance.c:393 ../src/sat-pref-sky-at-glance.c:407 #: ../src/sat-pref-sky-at-glance.c:421 ../src/sat-pref-sky-at-glance.c:435 msgid "Click to select a colour" msgstr "" #. colour 2 #: ../src/sat-pref-sky-at-glance.c:316 msgid "Satellite 2: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:321 msgid "Select colour 2" msgstr "" #. colour 3 #: ../src/sat-pref-sky-at-glance.c:330 msgid "Satellite 3: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:335 msgid "Select colour 3" msgstr "" #. colour 4 #: ../src/sat-pref-sky-at-glance.c:344 msgid "Satellite 4: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:349 msgid "Select colour 4" msgstr "" #. colour 5 #: ../src/sat-pref-sky-at-glance.c:358 msgid "Satellite 5: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:363 msgid "Select colour 5" msgstr "" #. colour 6 #: ../src/sat-pref-sky-at-glance.c:372 msgid "Satellite 6: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:377 msgid "Select colour 6" msgstr "" #. colour 7 #: ../src/sat-pref-sky-at-glance.c:386 msgid "Satellite 7: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:391 msgid "Select colour 7" msgstr "" #. colour 8 #: ../src/sat-pref-sky-at-glance.c:400 msgid "Satellite 8: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:405 msgid "Select colour 8" msgstr "" #. colour 9 #: ../src/sat-pref-sky-at-glance.c:414 msgid "Satellite 9: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:419 msgid "Select colour 9" msgstr "" #. colour 10 #: ../src/sat-pref-sky-at-glance.c:428 msgid "Satellite 10: " msgstr "" #: ../src/sat-pref-sky-at-glance.c:433 msgid "Select colour 10" msgstr "" #: ../src/sat-pref-tle.c:73 msgid "Auto-Update:" msgstr "" #: ../src/sat-pref-tle.c:88 msgid "Check the age of TLE data:" msgstr "" #. radio buttons selecting action #: ../src/sat-pref-tle.c:98 msgid "If TLEs are too old:" msgstr "" #: ../src/sat-pref-tle.c:101 msgid "Notify me" msgstr "" #: ../src/sat-pref-tle.c:105 msgid "Perform automatic update in the background" msgstr "" #: ../src/sat-pref-tle.c:179 msgid "" "Can not delete TLE source!\n" "\n" "You should have at least one TLE source configured, otherwise Gpredict may " "not work correctly.\n" "\n" "If you want to modify the TLE source, click twice on the row to edit it." msgstr "" #: ../src/sat-pref-tle.c:204 msgid "Add TLE source" msgstr "" #: ../src/sat-pref-tle.c:206 msgid "Add a new TLE source to the list" msgstr "" #: ../src/sat-pref-tle.c:209 msgid "Delete TLE source" msgstr "" #: ../src/sat-pref-tle.c:210 msgid "Delete the selected TLE source" msgstr "" #: ../src/sat-pref-tle.c:261 msgid "Update from the Internet:" msgstr "" #: ../src/sat-pref-tle.c:271 msgid "Proxy server:" msgstr "" #: ../src/sat-pref-tle.c:280 msgid "" "Enter URL for local proxy server. e.g.\n" "http://my.proxy.com" msgstr "" #. URLs #: ../src/sat-pref-tle.c:286 msgid "TLE sources:" msgstr "" #: ../src/sat-pref-tle.c:296 msgid "" "List of files with TLE data to retrieve from the Internet\n" "Click twice on a row to edit" msgstr "" #: ../src/sat-pref-tle.c:328 msgid "Add new satellites to local database" msgstr "" #: ../src/sat-pref-tle.c:329 msgid "" "Note that selecting this option may cause previously deleted satellites to " "be re-added to the database." msgstr "" #: ../src/sat-pref-tle.c:483 #, c-format msgid "%s:%s: Error fetching entry %d in URL list" msgstr "" #: ../src/sat-vis.c:41 msgid "Visible" msgstr "" #: ../src/sat-vis.c:42 msgid "Daylight" msgstr "" #: ../src/sat-vis.c:43 msgid "Eclipsed" msgstr "" #: ../src/save-pass.c:104 msgid "Save Pass Details" msgstr "" #. directory chooser #: ../src/save-pass.c:118 ../src/save-pass.c:265 msgid "Save in folder:" msgstr "" #: ../src/save-pass.c:123 ../src/save-pass.c:270 msgid "Select a folder" msgstr "" #. file name #: ../src/save-pass.c:140 ../src/save-pass.c:287 msgid "Save using file name:" msgstr "" #. file contents #: ../src/save-pass.c:159 ../src/save-pass.c:306 msgid "File contents:" msgstr "" #: ../src/save-pass.c:166 msgid "Info+header+data" msgstr "" #: ../src/save-pass.c:168 msgid "Header + data" msgstr "" #: ../src/save-pass.c:170 msgid "Data only" msgstr "" #. create the dialog #: ../src/save-pass.c:251 msgid "Save Passes" msgstr "" #: ../src/save-pass.c:313 msgid "Complete report" msgstr "" #: ../src/save-pass.c:314 msgid "Summary" msgstr "" #: ../src/save-pass.c:491 ../src/save-pass.c:594 #, c-format msgid "%s: Invalid file format: %d" msgstr "" #: ../src/save-pass.c:612 #, c-format msgid "%s: Could not create file %s (%s)" msgstr "" #: ../src/save-pass.c:621 #, c-format msgid "" "Could not create file %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:637 #, c-format msgid "%s: An error occurred while saving data to %s (%s)" msgstr "" #: ../src/save-pass.c:646 #, c-format msgid "" "An error occurred while saving data to %s\n" "\n" "%s" msgstr "" #: ../src/save-pass.c:655 #, c-format msgid "%s: Written %d characters to %s" msgstr "" #: ../src/tle-tools.c:73 #, c-format msgid "%s: NULL input data!" msgstr "" #: ../src/tle-tools.c:78 #, c-format msgid "%s: NULL output storage!" msgstr "" #: ../src/tle-update.c:128 #, c-format msgid "%s: A TLE update process is already running. Aborting." msgstr "" #: ../src/tle-update.c:144 ../src/tle-update.c:222 #, c-format msgid "%s: Error opening directory %s (%s)" msgstr "" #: ../src/tle-update.c:150 ../src/tle-update.c:229 #, c-format msgid "" "ERROR opening directory %s\n" "%s" msgstr "" #: ../src/tle-update.c:171 #, c-format msgid "Reading data from %s" msgstr "" #: ../src/tle-update.c:196 #, c-format msgid "%s: No valid TLE data found in %s" msgstr "" #: ../src/tle-update.c:202 #, c-format msgid "%s: Read %d sats from %s into memory" msgstr "" #: ../src/tle-update.c:293 msgid "Updating data..." msgstr "" #: ../src/tle-update.c:300 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" msgstr "" #: ../src/tle-update.c:382 #, c-format msgid "" "Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d" msgstr "" #: ../src/tle-update.c:392 #, c-format msgid "%s: Added %d new satellites to local database" msgstr "" #: ../src/tle-update.c:408 #, c-format msgid "%s: TLE elements updated." msgstr "" #: ../src/tle-update.c:502 #, c-format msgid "%s: TLE update is already running. Aborting." msgstr "" #: ../src/tle-update.c:526 #, c-format msgid "%s: No files to fetch from network." msgstr "" #: ../src/tle-update.c:532 msgid "No files to fetch from network" msgstr "" #: ../src/tle-update.c:564 ../src/trsp-update.c:589 #, c-format msgid "Fetching %s" msgstr "" #: ../src/tle-update.c:588 ../src/trsp-update.c:446 ../src/trsp-update.c:615 #, c-format msgid "%s: Error fetching %s (%x)" msgstr "" #: ../src/tle-update.c:594 ../src/tle-update.c:614 ../src/trsp-update.c:451 #: ../src/trsp-update.c:469 ../src/trsp-update.c:620 ../src/trsp-update.c:638 #, c-format msgid "%s: Successfully fetched %s" msgstr "" #: ../src/tle-update.c:608 ../src/trsp-update.c:464 ../src/trsp-update.c:633 #, c-format msgid "%s: Error fetching %s (%s)" msgstr "" #: ../src/tle-update.c:624 ../src/trsp-update.c:480 ../src/trsp-update.c:649 #, c-format msgid "%s: Failed to open %s preventing update" msgstr "" #: ../src/tle-update.c:656 ../src/trsp-update.c:498 ../src/trsp-update.c:682 #, c-format msgid "%s: Fetched %d files from network; updating..." msgstr "" #: ../src/tle-update.c:668 #, c-format msgid "%s: Could not fetch TLE files from network. Aborting." msgstr "" #: ../src/tle-update.c:688 #, c-format msgid "%s: Error opening %s (%s)" msgstr "" #: ../src/tle-update.c:830 #, c-format msgid "%s:%s: There is no category in %s" msgstr "" #: ../src/tle-update.c:840 #, c-format msgid "%s:%s: There is no category called %s" msgstr "" #: ../src/tle-update.c:857 #, c-format msgid "%s:%s: Could not reopen .cat file while reading TLE from %s" msgstr "" #: ../src/tle-update.c:915 #, c-format msgid "%s:%s: Something wrote linesneeded to an illegal value %d" msgstr "" #: ../src/tle-update.c:942 #, c-format msgid "%s:%s: Processing a three line TLE" msgstr "" #: ../src/tle-update.c:960 #, c-format msgid "%s:%s: Processing a bare two line TLE" msgstr "" #: ../src/tle-update.c:1013 #, c-format msgid "%s:%s: Invalid data for %d" msgstr "" #: ../src/tle-update.c:1064 #, c-format msgid "%s:%s: Two different statuses for %d (%s) at the same time." msgstr "" #: ../src/tle-update.c:1118 #, c-format msgid "%s:%s: Failed to open %s" msgstr "" #: ../src/tle-update.c:1185 #, c-format msgid "%s: No new TLE data found for %d. Satellite might be obsolete." msgstr "" #: ../src/tle-update.c:1197 #, c-format msgid "%s: Error loading %s (%s)" msgstr "" #: ../src/tle-update.c:1251 #, c-format msgid "%s: Current TLE data for %d appears to be bad" msgstr "" #: ../src/tle-update.c:1276 #, c-format msgid "%s: Data for %d updated for name." msgstr "" #: ../src/tle-update.c:1291 #, c-format msgid "%s: Data for %d updated for nickname." msgstr "" #: ../src/tle-update.c:1308 #, c-format msgid "%s: Data for %d updated for tle." msgstr "" #: ../src/tle-update.c:1326 #, c-format msgid "%s: Data for %d updated for operational status." msgstr "" #: ../src/tle-update.c:1362 ../src/trsp-update.c:722 msgid "Monthly" msgstr "" #: ../src/tle-update.c:1363 ../src/trsp-update.c:723 msgid "Weekly" msgstr "" #: ../src/tle-update.c:1364 ../src/trsp-update.c:724 msgid "Daily" msgstr "" #: ../src/trsp-conf.c:83 #, c-format msgid "%s: Could not read %s from %s:'%s'. Using default." msgstr "" #: ../src/trsp-conf.c:93 #, c-format msgid "%s: Error reading %s: %s" msgstr "" #: ../src/trsp-conf.c:108 #, c-format msgid "%s: %s contains 0 transponders" msgstr "" #: ../src/trsp-conf.c:120 #, c-format msgid "%s: Failed to allocate memory for trsp data" msgstr "" #: ../src/trsp-conf.c:234 #, c-format msgid "%s: Skipping transponder at index %d (no name)" msgstr "" #: ../src/trsp-conf.c:262 #, c-format msgid "%s: Error writing transponder data to %s" msgstr "" #: ../src/trsp-conf.c:268 #, c-format msgid "Wrote %d transmponders to %s" msgstr "" #: ../src/trsp-update.c:227 #, c-format msgid "MODE %d %s" msgstr "" #: ../src/trsp-update.c:375 #, c-format msgid "%s: Could not open trsp file for write" msgstr "" #: ../src/trsp-update.c:428 #, c-format msgid "%s: Ready to fetch modes list from %s" msgstr "" #: ../src/trsp-update.c:436 ../src/trsp-update.c:605 #, c-format msgid "%s: File to open %s " msgstr "" #: ../src/trsp-update.c:507 ../src/trsp-update.c:692 #, c-format msgid "%s: Could not fetch frequency files from network" msgstr "" #: ../src/trsp-update.c:551 #, c-format msgid "%s: A frequency update process is already running" msgstr "" #: ../src/trsp-update.c:581 #, c-format msgid "%s: Ready to fetch transponder list from %s" msgstr "" #~ msgid "GPREDICT" #~ msgstr "GPREDICT" gpredict/snap/000077500000000000000000000000001427377236300136365ustar00rootroot00000000000000gpredict/snap/snapcraft.yaml000066400000000000000000000014451427377236300165070ustar00rootroot00000000000000name: gpredict version: 2.3.54 summary: Gpredict - satellite tracking description: Gpredict is a real time satellite tracking and orbit prediction program for the Linux desktop. It uses the SGP4/SDP4 propagation algorithms together with NORAD two-line element sets (TLE). confinement: strict grade: stable environment: GPREDICT_DATA_DIR: $SNAP/share/gpredict/ apps: gpredict: command: desktop-launch gpredict plugs: [network, opengl, home, desktop, gsettings, unity7] parts: gpredict: plugin: autotools source: ../ after: [desktop-gtk3] build-packages: - libgtk-3-dev - libcurl4-openssl-dev - libglib2.0-dev - libgoocanvas-2.0-dev stage-packages: - libcanberra-gtk3-module gpredict/src/000077500000000000000000000000001427377236300134645ustar00rootroot00000000000000gpredict/src/.gitignore000066400000000000000000000001101427377236300154440ustar00rootroot00000000000000Makefile Makefile.in *.o gpredict sgpsdp/test-001 sgpsdp/test-002 .deps gpredict/src/Makefile.am000066400000000000000000000102451427377236300155220ustar00rootroot00000000000000## Process this file with automake to produce Makefile.in SUBDIRS = sgpsdp AM_CPPFLAGS = \ @PACKAGE_CFLAGS@ -I.. \ -DPACKAGE_DATA_DIR=\""$(datadir)/gpredict"\" \ -DPACKAGE_PIXMAPS_DIR=\""$(datadir)/pixmaps/gpredict"\" \ -DPACKAGE_LOCALE_DIR=\""$(prefix)/share/locale"\" \ -DGTK_DISABLE_SINGLE_INCLUDES \ -DG_DISABLE_DEPRECATED \ -DGDK_DISABLE_DEPRECATED \ -DGSEAL_ENABLE ## -DGTK_DISABLE_DEPRECATED \ ## Added while preparing for Gtk+ 3 migration: ## -DGTK_DISABLE_SINGLE_INCLUDES ## -DG_DISABLE_DEPRECATED ## -DGDK_DISABLE_DEPRECATED ## -DGTK_DISABLE_DEPRECATED ## -DGSEAL_ENABLE bin_PROGRAMS = gpredict gpredict_SOURCES = \ nxjson/nxjson.c nxjson/nxjson.h \ sgpsdp/sgp4sdp4.c \ sgpsdp/sgp4sdp4.h \ sgpsdp/sgp_in.c \ sgpsdp/sgp_math.c \ sgpsdp/sgp_obs.c \ sgpsdp/sgp_time.c \ sgpsdp/solar.c \ about.c about.h \ compat.c compat.h config-keys.h \ first-time.c first-time.h \ gpredict-help.c gpredict-help.h \ gpredict-utils.c gpredict-utils.h \ gtk-azel-plot.c gtk-azel-plot.h \ gtk-event-list.c gtk-event-list.h \ gtk-event-list-popup.c gtk-event-list-popup.h \ gtk-freq-knob.c gtk-freq-knob.h \ gtk-polar-plot.c gtk-polar-plot.h \ gtk-polar-view.c gtk-polar-view.h \ gtk-polar-view-popup.c gtk-polar-view-popup.h \ gtk-rig-ctrl.c gtk-rig-ctrl.h \ gtk-rot-ctrl.c gtk-rot-ctrl.h \ gtk-rot-knob.c gtk-rot-knob.h \ gtk-sat-data.c gtk-sat-data.h \ gtk-sat-list.c gtk-sat-list.h \ gtk-sat-list-popup.c gtk-sat-list-popup.h \ gtk-sat-map.c gtk-sat-map.h \ gtk-sat-map-popup.c gtk-sat-map-popup.h \ gtk-sat-map-ground-track.c gtk-sat-map-ground-track.h \ gtk-sat-module.c gtk-sat-module.h \ gtk-sat-module-popup.c gtk-sat-module-popup.h \ gtk-sat-module-tmg.c gtk-sat-module-tmg.h \ gtk-sat-popup-common.c gtk-sat-popup-common.h \ gtk-sat-selector.c gtk-sat-selector.h \ gtk-single-sat.c gtk-single-sat.h \ gtk-sky-glance.c gtk-sky-glance.h \ gui.c gui.h \ loc-tree.c loc-tree.h \ locator.c locator.h \ main.c \ map-selector.c map-selector.h \ map-tools.c map-tools.h \ menubar.c menubar.h \ mod-cfg.c mod-cfg.h \ mod-cfg-get-param.c mod-cfg-get-param.h \ mod-mgr.c mod-mgr.h \ orbit-tools.c orbit-tools.h \ pass-popup-menu.c pass-popup-menu.h \ pass-to-txt.c pass-to-txt.h \ predict-tools.c predict-tools.h \ print-pass.c print-pass.h \ qth-data.c qth-data.h \ qth-editor.c qth-editor.h \ radio-conf.c radio-conf.h \ rotor-conf.c rotor-conf.h \ trsp-conf.c trsp-conf.h \ trsp-update.c trsp-update.h \ sat-cfg.c sat-cfg.h \ sat-info.c sat-info.h \ sat-log.c sat-log.h \ sat-log-browser.c sat-log-browser.h \ sat-monitor.c sat-monitor.h \ sat-pass-dialogs.c sat-pass-dialogs.h \ sat-pref.c sat-pref.h \ sat-pref-general.c sat-pref-general.h \ sat-pref-formats.c sat-pref-formats.h \ sat-pref-qth.c sat-pref-qth.h sat-pref-qth-data.h \ sat-pref-qth-editor.c sat-pref-qth-editor.h \ sat-pref-tle.c sat-pref-tle.h \ sat-pref-debug.c sat-pref-debug.h \ sat-pref-modules.c sat-pref-modules.h \ sat-pref-layout.c sat-pref-layout.h \ sat-pref-refresh.c sat-pref-refresh.h \ sat-pref-map-view.c sat-pref-map-view.h \ sat-pref-list-view.c sat-pref-list-view.h \ sat-pref-polar-view.c sat-pref-polar-view.h \ sat-pref-single-sat.c sat-pref-single-sat.h \ sat-pref-interfaces.c sat-pref-interfaces.h \ sat-pref-rig.c sat-pref-rig.h sat-pref-rig-data.h \ sat-pref-rig-editor.c sat-pref-rig-editor.h \ sat-pref-rot.c sat-pref-rot.h sat-pref-rot-data.h \ sat-pref-rot-editor.c sat-pref-rot-editor.h \ sat-pref-predict.c sat-pref-predict.h \ sat-pref-conditions.c sat-pref-conditions.h \ sat-pref-multi-pass.c sat-pref-multi-pass.h \ sat-pref-single-pass.c sat-pref-single-pass.h \ sat-pref-sky-at-glance.c sat-pref-sky-at-glance.h \ sat-vis.c sat-vis.h \ save-pass.c save-pass.h \ time-tools.c time-tools.h \ tle-tools.c tle-tools.h \ tle-update.c tle-update.h \ strnatcmp.c strnatcmp.h ##gpredict_LDADD = ./sgpsdp/libsgp4sdp4.a @PACKAGE_LIBS@ gpredict_LDADD = @PACKAGE_LIBS@ ## $(INTLLIBS) gpredict/src/about.c000066400000000000000000000073321427377236300147470ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2019 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "about.h" #include "compat.h" const gchar *authors[] = { "Alexandru Csete, OZ9AEC, with contributions from:", "", "A. Maitland Bottoms, AA4HS", "Alan Moffet, KE7IJZ", "Baris Dinc, TA7W", "Charles Suprin, AA1VS", "Dale Mellor", "Daniel Estevez, EA4GPZ", "Dave Hines", "David Cureton", "David VK5DG", "Fabian P. Schmidt", "Gisle Vanem", "Henry Hallam", "Ilias Daradimos", "Jan Simon, DL2ZXA", "Jason Uher", "Joachim Euchner", "John Magliacane, KD2BD", "Libre Space Foundation", "Lloyd Brown", "LongnoseRob, JI1MNC", "Marcel Cimander", "Mario Haustein", "Martin Pool", "Matthew Alberti, KM4EXS", "Michael Tatarinov", "Mirko Caserta", "Nate Bargmann, N0NB", "Neoklis Kyriazis, 5B4AZ", "Patrick Dohmen, DL4PD", "Patrick Strasser, OE6PSE", "Paul Schulz, VK5FPAW", "Phil Ashby, 2E0IPX", "S. R. Sampson", "Stefan Lobas", "Stephane Fillod", "Tom Jones", "T.S. Kelso", "Valentin Yakovenkov", "William J Beksi, KC2EXL", "Xavier Crehueras, EB3CZS", "Yaroslav Stavnichiy", "Yasushi SHOJI", "", "Imagery:", "Most of the maps originate from NASA Visible Earth", "see website http://visibleearth.nasa.gov/", NULL }; extern GtkWidget *app; void about_dialog_create() { GtkWidget *dialog; GdkPixbuf *icon; gchar *iconfile; dialog = gtk_about_dialog_new(); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(app)); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(dialog), _("Gpredict")); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), VERSION); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), _("Copyright (C) 2001-2019 Alexandru Csete OZ9AEC and contributors")); gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog), "http://gpredict.oz9aec.net/"); gtk_about_dialog_set_license_type(GTK_ABOUT_DIALOG(dialog), GTK_LICENSE_GPL_2_0); iconfile = logo_file_name("gpredict_icon_color.svg"); icon = gdk_pixbuf_new_from_file_at_size(iconfile, 128, 128, NULL); gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(dialog), icon); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), iconfile, NULL); g_free(iconfile); g_object_unref(icon); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors); gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(dialog), _("translator-credits")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } gpredict/src/about.h000066400000000000000000000001131427377236300147420ustar00rootroot00000000000000#ifndef ABOUT_H #define ABOUT_H 1 void about_dialog_create(void); #endif gpredict/src/compat.c000066400000000000000000000237161427377236300151240ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" /** * Get data directory. * * On linux it corresponds to the PACKAGE_DATA_DIR macro defined in build-config.h * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_data_dir() { gchar *dir = NULL; #ifdef G_OS_UNIX char* data_dir = getenv("GPREDICT_DATA_DIR"); dir = g_strconcat(data_dir ? data_dir : PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S, "data", NULL); #else #ifdef G_OS_WIN32 gchar *buff = g_win32_get_package_installation_directory_of_module(NULL); dir = g_strconcat(buff, G_DIR_SEPARATOR_S, "share", G_DIR_SEPARATOR_S, "gpredict", G_DIR_SEPARATOR_S, "data", NULL); g_free(buff); #endif #endif return dir; } /** * Get absolute file name of a data file. * * This function returns the absolute file name of a data file. It is intended to * be a one-line filename constructor. * The returned gchar * should be freed when no longer needed. */ gchar *data_file_name(const gchar * data) { gchar *filename = NULL; gchar *buff; buff = get_data_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, data, NULL); g_free(buff); return filename; } /** * Get maps directory. * * On linux it corresponds to the PACKAGE_DATA_DIR/pixmaps/maps * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_maps_dir() { gchar *dir = NULL; #ifdef G_OS_UNIX dir = g_strconcat(PACKAGE_PIXMAPS_DIR, G_DIR_SEPARATOR_S, "maps", NULL); #else #ifdef G_OS_WIN32 gchar *buff = g_win32_get_package_installation_directory_of_module(NULL); dir = g_strconcat(buff, G_DIR_SEPARATOR_S, "share", G_DIR_SEPARATOR_S, /* FIXME */ "gpredict", G_DIR_SEPARATOR_S, "pixmaps", G_DIR_SEPARATOR_S, "maps", NULL); g_free(buff); #endif #endif return dir; } /** * Get absolute file name of a map file. * * This function returns the absolute file name of a map file. It is intended to * be a one-line filename constructor. * The returned gchar * should be freed when no longer needed. */ gchar *map_file_name(const gchar * map) { gchar *filename = NULL; gchar *buff; buff = get_maps_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, map, NULL); g_free(buff); return filename; } /** * Get logo directory. * * On linux it corresponds to the PACKAGE_DATA_DIR/pixmaps/logos * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_logo_dir() { gchar *dir = NULL; #ifdef G_OS_UNIX dir = g_strconcat(PACKAGE_PIXMAPS_DIR, G_DIR_SEPARATOR_S, "logos", NULL); #else #ifdef G_OS_WIN32 gchar *buff = g_win32_get_package_installation_directory_of_module(NULL); dir = g_strconcat(buff, G_DIR_SEPARATOR_S, "share", G_DIR_SEPARATOR_S, "gpredict", G_DIR_SEPARATOR_S, "pixmaps", G_DIR_SEPARATOR_S, "logos", NULL); g_free(buff); #endif #endif return dir; } /** * Get icon directory. * * On linux it corresponds to the PACKAGE_DATA_DIR/pixmaps/icons * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_icon_dir() { gchar *dir = NULL; #ifdef G_OS_UNIX dir = g_strconcat(PACKAGE_PIXMAPS_DIR, G_DIR_SEPARATOR_S, "icons", NULL); #else #ifdef G_OS_WIN32 gchar *buff = g_win32_get_package_installation_directory_of_module(NULL); dir = g_strconcat(buff, G_DIR_SEPARATOR_S, "share", G_DIR_SEPARATOR_S, "gpredict", G_DIR_SEPARATOR_S, "pixmaps", G_DIR_SEPARATOR_S, "icons", NULL); g_free(buff); #endif #endif return dir; } /** * Get absolute file name of a logo file. * * This function returns the absolute file name of a logo file. It is intended * to be a one-line filename constructor. * The returned gchar * should be freed when no longer needed. */ gchar *logo_file_name(const gchar * logo) { gchar *filename = NULL; gchar *buff; buff = get_logo_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, logo, NULL); g_free(buff); return filename; } /** * Get absolute file name of an icon file. * * This function returns the absolute file name of an icon file. It is intended to * be a one-line filename constructor. * The returned gchar * should be freed when no longer needed. */ gchar *icon_file_name(const gchar * icon) { gchar *filename = NULL; gchar *buff; buff = get_icon_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, icon, NULL); g_free(buff); return filename; } /** * Get the old user configuration directory. * * On linux it corresponds to $HOME/.gpredict2 * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_old_conf_dir(void) { gchar *dir; dir = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, ".gpredict2", NULL); return dir; } /** * Get user configuration directory. * * Linux: $HOME/.config/Gpredict * Windows: C:\Users\username\Gpredict * Mac OS X: /home/username/Library/Application Support/Gpredict * * The function returns a newly allocated gchar * which must be free when * it is no longer needed. */ gchar *get_user_conf_dir(void) { gchar *dir = NULL; #ifdef G_OS_UNIX dir = g_strconcat(g_get_user_config_dir(), G_DIR_SEPARATOR_S, "Gpredict", NULL); #endif #ifdef G_OS_WIN32 // FIXME: does this work? dir = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, "Gpredict", NULL); #endif /* see gtk-osx.sourceforge.net -> Integration */ #ifdef MAC_INTEGRATION dir = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, "Library", G_DIR_SEPARATOR_S, "Application Support", G_DIR_SEPARATOR_S, "Gpredict", NULL); #endif return dir; } /** Get USER_CONF_DIR/modules */ gchar *get_modules_dir(void) { gchar *confdir; gchar *dir; confdir = get_user_conf_dir(); dir = g_strconcat(confdir, G_DIR_SEPARATOR_S, "modules", NULL); g_free(confdir); return dir; } /** Get USER_CONF_DIR/satdata */ gchar *get_satdata_dir(void) { gchar *confdir; gchar *dir; confdir = get_user_conf_dir(); dir = g_strconcat(confdir, G_DIR_SEPARATOR_S, "satdata", NULL); g_free(confdir); return dir; } /** Get USER_CONF_DIR/trsp */ gchar *get_trsp_dir(void) { gchar *confdir; gchar *dir; confdir = get_user_conf_dir(); dir = g_strconcat(confdir, G_DIR_SEPARATOR_S, "trsp", NULL); g_free(confdir); return dir; } /** Get USER_CONF_DIR/hwconf */ gchar *get_hwconf_dir(void) { gchar *confdir; gchar *dir; confdir = get_user_conf_dir(); dir = g_strconcat(confdir, G_DIR_SEPARATOR_S, "hwconf", NULL); g_free(confdir); return dir; } /** Get full path of a .sat or .cat file */ gchar *sat_file_name(const gchar * satfile) { gchar *filename = NULL; gchar *buff; buff = get_satdata_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, satfile, NULL); g_free(buff); return filename; } /** Build satellite file path from catnum (integer) */ gchar *sat_file_name_from_catnum(guint catnum) { gchar *filename; gchar *buff; gchar *dir; buff = g_strdup_printf("%d.sat", catnum); dir = get_satdata_dir(); filename = g_strconcat(dir, G_DIR_SEPARATOR_S, buff, NULL); g_free(buff); g_free(dir); return filename; } /** Build satellite file path from catnum (string) */ gchar *sat_file_name_from_catnum_s(gchar * catnum) { gchar *filename; gchar *buff; gchar *dir; buff = g_strdup_printf("%s.sat", catnum); dir = get_satdata_dir(); filename = g_strconcat(dir, G_DIR_SEPARATOR_S, buff, NULL); g_free(buff); g_free(dir); return filename; } /** Get full path of a .trsp file */ gchar *trsp_file_name(const gchar * trspfile) { gchar *filename = NULL; gchar *buff; buff = get_trsp_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, trspfile, NULL); g_free(buff); return filename; } /** Get full path of a .rig or .rot file */ gchar *hw_file_name(const gchar * hwfile) { gchar *filename = NULL; gchar *buff; buff = get_hwconf_dir(); filename = g_strconcat(buff, G_DIR_SEPARATOR_S, hwfile, NULL); g_free(buff); return filename; } gpredict/src/compat.h000066400000000000000000000017201427377236300151200ustar00rootroot00000000000000/* Utilities to ensure compatibility across multiple platforms. */ #ifndef COMPAT_H #define COMPAT_H 1 gchar *get_data_dir(void); gchar *get_maps_dir(void); gchar *get_logo_dir(void); gchar *get_icon_dir(void); gchar *get_user_conf_dir(void); gchar *get_modules_dir(void); gchar *get_satdata_dir(void); gchar *get_trsp_dir(void); gchar *get_hwconf_dir(void); gchar *get_old_conf_dir(void); gchar *map_file_name(const gchar * map); gchar *logo_file_name(const gchar * logo); gchar *icon_file_name(const gchar * icon); gchar *data_file_name(const gchar * data); gchar *sat_file_name(const gchar * satfile); gchar *trsp_file_name(const gchar * trspfile); gchar *hw_file_name(const gchar * hwfile); gchar *sat_file_name_from_catnum(guint catnum); gchar *sat_file_name_from_catnum_s(gchar * catnum); #endif gpredict/src/config-keys.h000066400000000000000000000137501427377236300160610ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2013 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Charles Suprin Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* This file contains section and key definitions in config files * * NOTE: System wide config is in the sat-cfg component, including * key definitions. This file contains only key definitions * for .qth .mod .rig and .rot files. */ #ifndef CONFIG_KEYS_H #define CONFIG_KEYS_H 1 /* Main configuration file (gpredict.cfg) */ /* global section*/ #define SAT_CFG_GLOBAL_SECTION "GLOBAL" #define SAT_CFG_LOCAL_TIME_KEY "LOCALTIME" #define SAT_CFG_TIME_FORMAT_KEY "TIMEFORMAT" #define SAT_CFG_SHOW_NSEW_KEY "NSEW" #define SAT_CFG_IMPERIAL_KEY "IMPERIAL" /* QTH files (.qth) */ #define QTH_CFG_MAIN_SECTION "QTH" #define QTH_CFG_NAME_KEY "NAME" #define QTH_CFG_LOC_KEY "LOCATION" #define QTH_CFG_DESC_KEY "DESCRIPTION" #define QTH_CFG_WX_KEY "WX" #define QTH_CFG_LAT_KEY "LAT" #define QTH_CFG_LON_KEY "LON" #define QTH_CFG_ALT_KEY "ALT" #define QTH_CFG_GPSD_SERVER_KEY "GPSDSERVER" #define QTH_CFG_GPSD_PORT_KEY "GPSDPORT" #define QTH_CFG_TYPE_KEY "QTH_TYPE" /* Module files (.mod) */ /* global */ #define MOD_CFG_GLOBAL_SECTION "GLOBAL" #define MOD_CFG_QTH_FILE_KEY "QTHFILE" #define MOD_CFG_SATS_KEY "SATELLITES" #define MOD_CFG_TIMEOUT_KEY "TIMEOUT" #define MOD_CFG_WARP_KEY "WARP" #define MOD_CFG_LAYOUT "LAYOUT" /* Old layout before v1.2 */ #define MOD_CFG_VIEW_1 "VIEW_1" /* Old layout before v1.2 */ #define MOD_CFG_VIEW_2 "VIEW_2" /* Old layout before v1.2 */ #define MOD_CFG_VIEW_3 "VIEW_3" /* Old layout before v1.2 */ #define MOD_CFG_GRID "GRID" /* New grid layout since v1.2 */ #define MOD_CFG_STATE "STATE" #define MOD_CFG_WIN_POS_X "WIN_POS_X" #define MOD_CFG_WIN_POS_Y "WIN_POS_Y" #define MOD_CFG_WIN_WIDTH "WIN_WIDTH" #define MOD_CFG_WIN_HEIGHT "WIN_HEIGHT" /* list specific */ #define MOD_CFG_LIST_SECTION "LIST" #define MOD_CFG_LIST_COLUMNS "COLUMNS" #define MOD_CFG_LIST_REFRESH "REFRESH" #define MOD_CFG_LIST_SORT_COLUMN "SORT_COLUMN" #define MOD_CFG_LIST_SORT_ORDER "SORT_ORDER" /* map specific */ #define MOD_CFG_MAP_SECTION "MAP" #define MOD_CFG_MAP_CENTER "CENTER" /*!< Center longitude. */ #define MOD_CFG_MAP_REFRESH "REFRESH" #define MOD_CFG_MAP_FILE "MAP_FILE" /* abs. path = home dir */ #define MOD_CFG_MAP_FONT "TEXT_FONT" #define MOD_CFG_MAP_SHOW_QTH_INFO "QTH_INFO" #define MOD_CFG_MAP_SHOW_NEXT_EVENT "NEXT_EVENT" #define MOD_CFG_MAP_SHOW_CURS_TRACK "CURSOR_TRACK" #define MOD_CFG_MAP_SHOW_GRID "SHOW_GRID" #define MOD_CFG_MAP_SHOW_TERMINATOR "SHOW_TERMINATOR" #define MOD_CFG_MAP_SAT_COL "SAT_COLOUR" #define MOD_CFG_MAP_SAT_SEL_COL "SAT_SEL_COLOUR" #define MOD_CFG_MAP_SAT_COV_COL "COV_AREA_COLOUR" #define MOD_CFG_MAP_QTH_COL "QTH_COLOUR" #define MOD_CFG_MAP_INFO_COL "INFO_COLOUR" #define MOD_CFG_MAP_INFO_BGD_COL "INFO_BGD_COLOUR" #define MOD_CFG_MAP_GRID_COL "GRIG_COLOUR" #define MOD_CFG_MAP_TERMINATOR_COL "TERMINATOR_COLOUR" #define MOD_CFG_MAP_GLOBAL_SHADOW_COL "GLOBAL_SHADOW_COLOUR" #define MOD_CFG_MAP_TICK_COL "TICK_COLOUR" #define MOD_CFG_MAP_TRACK_COL "TRACK_COLOUR" #define MOD_CFG_MAP_TRACK_NUM "TRACK_NUMBER" #define MOD_CFG_MAP_KEEP_RATIO "KEEP_RATIO" #define MOD_CFG_MAP_SHADOW_ALPHA "SHADOW_ALPHA" #define MOD_CFG_MAP_SHOWTRACKS "SHOWTRACKS" #define MOD_CFG_MAP_HIDECOVS "HIDECOVS" /* polar view specific */ #define MOD_CFG_POLAR_SECTION "POLAR" #define MOD_CFG_POLAR_REFRESH "REFRESH" #define MOD_CFG_POLAR_ORIENTATION "ORIENTATION" #define MOD_CFG_POLAR_SHOW_QTH_INFO "QTH_INFO" #define MOD_CFG_POLAR_SHOW_NEXT_EVENT "NEXT_EVENT" #define MOD_CFG_POLAR_SHOW_CURS_TRACK "CURSOR_TRACK" #define MOD_CFG_POLAR_SHOW_EXTRA_AZ_TICKS "EXTRA_AZ_TICKS" #define MOD_CFG_POLAR_SHOW_TRACK_AUTO "SHOW_TRACK" #define MOD_CFG_POLAR_BGD_COL "BGD_COLOUR" #define MOD_CFG_POLAR_AXIS_COL "AXIS_COLOUR" #define MOD_CFG_POLAR_TICK_COL "TICK_COLOUR" #define MOD_CFG_POLAR_SAT_COL "SAT_COLOUR" #define MOD_CFG_POLAR_SAT_SEL_COL "SAT_SEL_COLOUR" #define MOD_CFG_POLAR_TRACK_COL "TRACK_COLOUR" #define MOD_CFG_POLAR_INFO_COL "INFO_COLOUR" #define MOD_CFG_POLAR_FONT "TEXT_FONT" #define MOD_CFG_POLAR_SHOWTRACKS "SHOWTRACKS" #define MOD_CFG_POLAR_HIDETRACKS "HIDETRACKS" /* single sat */ #define MOD_CFG_SINGLE_SAT_SECTION "SINGLE_SAT" #define MOD_CFG_SINGLE_SAT_REFRESH "REFRESH" #define MOD_CFG_SINGLE_SAT_FIELDS "FIELDS" #define MOD_CFG_SINGLE_SAT_SELECT "SELECTED" /* event list */ #define MOD_CFG_EVENT_LIST_SECTION "EVENT_LIST" #define MOD_CFG_EVENT_LIST_REFRESH "REFRESH" #define MOD_CFG_EVENT_LIST_SORT_COLUMN "SORT_COLUMN" #define MOD_CFG_EVENT_LIST_SORT_ORDER "SORT_ORDER" #endif gpredict/src/first-time.c000066400000000000000000000644641427377236300157310ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include #ifdef HAVE_CONFIG_H #include #endif #include "compat.h" #include "sat-log.h" #include "sat-cfg.h" #include "gpredict-utils.h" #include "first-time.h" /* private function prototypes */ static void first_time_check_step_01(guint * error); static void first_time_check_step_02(guint * error); static void first_time_check_step_03(guint * error); static void first_time_check_step_04(guint * error); static void first_time_check_step_05(guint * error); static void first_time_check_step_06(guint * error); static void first_time_check_step_07(guint * error); static void first_time_check_step_08(guint * error); /** * Perform first time checks. * * This function is called by the main function very early during program * startup. It's purpose is to check the user configuration to see whether * this is the first time gpredict is executed. If it is, a new default * configuration is set up so that the user has some sort of setup to get * started with. * * Check logic: * * 0. USER_CONF_DIR already exists because sat_log_init() initializes it. * * 1. Check for USER_CONF_DIR/gpredict.cfg - if not found, check if there is a * gpredict.cfg in the old configuration directory and copy it to the new location. * 2. Check for the existence of at least one .qth file in USER_CONF_DIR * If no such file found, check if there are any in the pre-1.1 configuration. * If still none, copy PACKAGE_DATA_DIR/data/sample.qth to this * directory. * 3. Check for the existence of USER_CONF_DIR/modules directory and create * it if it does not exist. Moreover, if this is a new installation, check * for .mod files in pre-1.1 directory (use get_old_conf_dir()). If no .mod * files are available copy PACKAGE_DATA_DIR/data/Amateur.mod to * USER_CONF_DIR/modules/ * 4. Check for the existence of USER_CONF_DIR/satdata directory and create it if * it does not exist. * 5. Check if there are any .sat files in USER_CONF_DIR/satdata/ - if not extract * PACKAGE_DATA_DIR/data/satdata/satellites.dat to .sat files. * Do the same with .cat files. * 6. Check for the existence of USER_CONF_DIR/satdata/cache directory. This * directory is used to store temporary TLE files when updating from * network. * 7. Check for the existence of USER_CONF_DIR/hwconf directory. This * directory contains radio and rotator configurations (.rig and .rot files). * If the directory is newly created, check if we have any existing configuration * in the pre-1.1 configuration directory (use get_old_conf_dir()). * 8. Check for the existence of USER_CONF_DIR/trsp directory. This * directory contains transponder data for satellites. * * Send both error, warning and verbose debug messages to sat-log during this * process. * * The function returns 0 if everything seems to be ready or 1 if an error occurred * during on of the steps above. In case of error, the only safe thing is to exit * immediately. * * FIXME: Should only have one parameterized function for checking directories. */ guint first_time_check_run() { guint error = 0; first_time_check_step_01(&error); first_time_check_step_02(&error); first_time_check_step_03(&error); first_time_check_step_04(&error); first_time_check_step_05(&error); first_time_check_step_06(&error); first_time_check_step_07(&error); first_time_check_step_08(&error); return error; } /** * Execute step 1 of the first time checks. * * 1. Check for USER_CONF_DIR/gpredict.cfg - if not found, check if there is a * gpredict.cfg in the old configuration directory and copy it to the new location. * */ static void first_time_check_step_01(guint * error) { gchar *newdir, *olddir; gchar *source, *target; /* FIXME */ (void)error; /* avoid unused parameter compiler warning */ newdir = get_user_conf_dir(); target = g_strconcat(newdir, G_DIR_SEPARATOR_S, "gpredict.cfg", NULL); g_free(newdir); if (g_file_test(target, G_FILE_TEST_EXISTS)) { /* already have config file => return */ g_free(target); return; } /* check if we have old configuration */ olddir = get_old_conf_dir(); source = g_strconcat(olddir, G_DIR_SEPARATOR_S, "gpredict.cfg", NULL); g_free(olddir); if (g_file_test(source, G_FILE_TEST_EXISTS)) { /* copy old config file to new location */ gpredict_file_copy(source, target); } g_free(source); g_free(target); } /** * Execute step 2 of the first time checks. * * 2. Check for the existence of at least one .qth file in USER_CONF_DIR * If no such file found, check if there are any in the pre-1.1 configuration. * If still none, copy PACKAGE_DATA_DIR/data/sample.qth to this * directory. * */ static void first_time_check_step_02(guint * error) { GDir *dir; gchar *dirname; gchar *filename; const gchar *datafile; gchar *target; gboolean foundqth = FALSE; dirname = get_user_conf_dir(); dir = g_dir_open(dirname, 0, NULL); /* directory does not exist, something went wrong in step 1 */ if (!dir) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not open %s."), __func__, dirname); /* no reason to continue */ *error |= FTC_ERROR_STEP_02; } else { /* read files, if any; count number of .qth files */ while ((datafile = g_dir_read_name(dir))) { /* note: filename is not a newly allocated gchar *, so we must not free it */ if (g_str_has_suffix(datafile, ".qth")) foundqth = TRUE; } g_dir_close(dir); if (foundqth) sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Found at least one .qth file."), __func__); else { /* try to see if there are any .qth file in pre-1.1 configuration */ gchar *olddir = get_old_conf_dir(); dir = g_dir_open(olddir, 0, NULL); if (dir) { /* read files, if any; count number of .qth files */ while ((datafile = g_dir_read_name(dir))) { /* note: filename is not a newly allocated gchar *, so we must not free it */ if (g_str_has_suffix(datafile, ".qth")) { gchar *source = g_strconcat(olddir, G_DIR_SEPARATOR_S, datafile, NULL); /* copy .qth file to USER_CONF_DIR */ target = g_strconcat(dirname, G_DIR_SEPARATOR_S, datafile, NULL); if (!gpredict_file_copy(source, target)) { /* success */ foundqth = TRUE; } g_free(target); g_free(source); } } g_dir_close(dir); } else if (!foundqth) { /* try to copy sample.qth */ filename = data_file_name("sample.qth"); target = g_strconcat(dirname, G_DIR_SEPARATOR_S, "sample.qth", NULL); if (gpredict_file_copy(filename, target)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to copy sample.qth"), __func__); *error |= FTC_ERROR_STEP_02; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Copied sample.qth to %s/"), __func__, dirname); } g_free(target); g_free(filename); } g_free(olddir); } } g_free(dirname); } /** * Execute step 3 of the first time checks. * * 3. Check for the existence of USER_CONF_DIR/modules directory and create * it if it does not exist. Moreover, if this is a new installation, check * for .mod files in pre-1.1 directory (use get_old_conf_dir()). If no .mod * files are available copy PACKAGE_DATA_DIR/data/Amateur.mod to * USER_CONF_DIR/modules/ * */ static void first_time_check_step_03(guint * error) { GDir *dir; gchar *confdir, *olddir, *buff; int status; gchar *target; gchar *filename; const gchar *datafile; gboolean foundmod = FALSE; confdir = get_modules_dir(); if (g_file_test(confdir, G_FILE_TEST_IS_DIR)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check successful."), __func__); } else { /* try to create directory */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check failed. Creating %s"), __func__, confdir); status = g_mkdir_with_parents(confdir, 0755); if (status) { /* set error flag */ *error |= FTC_ERROR_STEP_03; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), __func__, confdir); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Created %s."), __func__, confdir); /* try to see if there are any .mod file in pre-1.1 configuration */ buff = get_old_conf_dir(); olddir = g_strconcat(buff, G_DIR_SEPARATOR_S, "modules", NULL); dir = g_dir_open(olddir, 0, NULL); g_free(buff); if (dir) { /* read files, if any; count number of .qth files */ while ((datafile = g_dir_read_name(dir))) { /* note: filename is not a newly allocated gchar *, so we must not free it */ if (g_str_has_suffix(datafile, ".mod")) { gchar *source = g_strconcat(olddir, G_DIR_SEPARATOR_S, datafile, NULL); /* copy .qth file to USER_CONF_DIR */ target = g_strconcat(confdir, G_DIR_SEPARATOR_S, datafile, NULL); if (!gpredict_file_copy(source, target)) { /* success */ foundmod = TRUE; } g_free(target); g_free(source); } } g_dir_close(dir); } else if (!foundmod) { /* copy Amateur.mod to this directory */ filename = data_file_name("Amateur.mod"); target = g_strconcat(confdir, G_DIR_SEPARATOR_S, "Amateur.mod", NULL); if (gpredict_file_copy(filename, target)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to copy Amateur.mod"), __func__); *error |= FTC_ERROR_STEP_02; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Copied amateur.mod to %s/"), __func__, dir); } g_free(target); g_free(filename); } g_free(olddir); } } g_free(confdir); } /** * Execute step 4 of the first time checks. * * 4. Check for the existence of USER_CONF_DIR/satdata directory and create it if * it does not exist. * */ static void first_time_check_step_04(guint * error) { gchar *dir; int status; dir = get_satdata_dir(); if (g_file_test(dir, G_FILE_TEST_IS_DIR)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check successful."), __func__); } else { /* try to create directory */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check failed. Creating %s"), __func__, dir); status = g_mkdir_with_parents(dir, 0755); if (status) { /* set error flag */ *error |= FTC_ERROR_STEP_04; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), __func__, dir); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Created %s."), __func__, dir); } } g_free(dir); } /* create .sat files from a satellites.dat file */ static void create_sat_files(guint * error) { gchar *satfilename, *targetfilename; gchar *datadir; gchar **satellites; GKeyFile *satfile, *target; gsize num; GError *err = NULL; guint i; guint newsats = 0; gchar *name, *nickname, *website, *tle1, *tle2, *cfgver; sat_log_log(SAT_LOG_LEVEL_INFO, _("Copying satellite data to user config")); /* open datellites.dat and load into memory */ datadir = get_data_dir(); satfilename = g_strconcat(datadir, G_DIR_SEPARATOR_S, "satdata", G_DIR_SEPARATOR_S, "satellites.dat", NULL); satfile = g_key_file_new(); if (!g_key_file_load_from_file (satfile, satfilename, G_KEY_FILE_KEEP_COMMENTS, &err)) { /* an error occurred */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to load data from %s (%s)"), __func__, satfilename, err->message); g_clear_error(&err); *error |= FTC_ERROR_STEP_05; } else { satellites = g_key_file_get_groups(satfile, &num); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Found %d satellites in %s"), __func__, num, satfilename); for (i = 0; i < num; i++) { /* first, check if this satellite already has a .sat file */ targetfilename = sat_file_name_from_catnum_s(satellites[i]); if (g_file_test(targetfilename, G_FILE_TEST_EXISTS)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: %s.sat already exists. Skipped."), __func__, satellites[i]); } else { /* read data for this satellite */ cfgver = g_key_file_get_string(satfile, satellites[i], "VERSION", NULL); name = g_key_file_get_string(satfile, satellites[i], "NAME", NULL); nickname = g_key_file_get_string(satfile, satellites[i], "NICKNAME", NULL); website = g_key_file_get_string(satfile, satellites[i], "WEBSITE", NULL); tle1 = g_key_file_get_string(satfile, satellites[i], "TLE1", NULL); tle2 = g_key_file_get_string(satfile, satellites[i], "TLE2", NULL); /* create output .sat file */ target = g_key_file_new(); g_key_file_set_string(target, "Satellite", "VERSION", cfgver); g_key_file_set_string(target, "Satellite", "NAME", name); g_key_file_set_string(target, "Satellite", "NICKNAME", nickname); if (website != NULL) { g_key_file_set_string(target, "Satellite", "WEBSITE", website); g_free(website); } g_key_file_set_string(target, "Satellite", "TLE1", tle1); g_key_file_set_string(target, "Satellite", "TLE2", tle2); if (gpredict_save_key_file(target, targetfilename)) { *error |= FTC_ERROR_STEP_05; } else { newsats++; } g_key_file_free(target); g_free(cfgver); g_free(name); g_free(nickname); g_free(tle1); g_free(tle2); } g_free(targetfilename); } g_strfreev(satellites); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Written %d new satellite to user config"), __func__, newsats); } g_key_file_free(satfile); g_free(satfilename); g_free(datadir); } /* create .cat files in user conf directory */ static void create_cat_files(guint * error) { gchar *datadir; GError *err = NULL; GDir *srcdir; gchar *srcdirname; const gchar *filename; sat_log_log(SAT_LOG_LEVEL_INFO, _("Copying satellite categories to user config")); /* .cat files: if .cat file does not exist, copy it, otherwise skip */ datadir = get_data_dir(); srcdirname = g_strconcat(datadir, G_DIR_SEPARATOR_S, "satdata", NULL); srcdir = g_dir_open(srcdirname, 0, &err); /* directory does not exist, something went wrong in step 4 */ if (!srcdir) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not open %s (%s)."), __func__, srcdirname, err->message); /* no reason to continue */ g_clear_error(&err); *error |= FTC_ERROR_STEP_05; } else { /* get each .cat file and check if they already exist in user conf */ /* read files one by one, if any; count number of .tle files */ while ((filename = g_dir_read_name(srcdir))) { /* note: filename is not a newly allocated gchar *, so we must not free it */ if (g_str_has_suffix(filename, ".cat")) { /* check whether .cat file exists in user conf */ gchar *catfilename = sat_file_name(filename); if (!g_file_test(catfilename, G_FILE_TEST_EXISTS)) { /* copy file to target dir */ gchar *source = g_strconcat(srcdirname, G_DIR_SEPARATOR_S, filename, NULL); if (gpredict_file_copy(source, catfilename)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to copy %s"), __func__, filename); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Successfully copied %s"), __func__, filename); } g_free(source); } g_free(catfilename); } } g_dir_close(srcdir); } g_free(srcdirname); g_free(datadir); } /** * Execute step 5 of the first time checks. * * 5. Check if there are any .sat files in USER_CONF_DIR/satdata/ - if not extract * PACKAGE_DATA_DIR/data/satdata/satellites.dat to .sat files. * Do the same with .cat files. * */ static void first_time_check_step_05(guint * error) { gchar *datadir_str; GDir *datadir; const gchar *filename; gboolean have_sat = FALSE; gboolean have_cat = FALSE; /* check if there already is a .sat and .cat in ~/.config/... */ datadir_str = get_satdata_dir(); datadir = g_dir_open(datadir_str, 0, NULL); while ((filename = g_dir_read_name(datadir))) { /* note: filename is not newly allocated */ if (g_str_has_suffix(filename, ".sat")) have_sat = TRUE; if (g_str_has_suffix(filename, ".cat")) have_cat = TRUE; } g_free(datadir_str); g_dir_close(datadir); if (!have_sat) create_sat_files(error); if (!have_cat) create_cat_files(error); } /** * Execute step 6 of the first time checks. * * 6. Check for the existence of USER_CONF_DIR/satdata/cache directory. This * directory is used to store temporary TLE files when updating from * network. * */ static void first_time_check_step_06(guint * error) { gchar *buff, *dir; int status; buff = get_satdata_dir(); dir = g_strconcat(buff, G_DIR_SEPARATOR_S, "cache", NULL); g_free(buff); if (g_file_test(dir, G_FILE_TEST_IS_DIR)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check successful."), __func__); } else { /* try to create directory */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check failed. Creating %s"), __func__, dir); status = g_mkdir_with_parents(dir, 0755); if (status) { /* set error flag */ *error |= FTC_ERROR_STEP_06; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), __func__, dir); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Created %s."), __func__, dir); } } g_free(dir); } /** * Execute step 7 of the first time checks. * * 7. Check for the existence of USER_CONF_DIR/hwconf directory. This * directory contains radio and rotator configurations (.rig and .rot files). * If the directory is newly created, check if we have any existing configuration * in the pre-1.1 configuration directory (use get_old_conf_dir()). * */ static void first_time_check_step_07(guint * error) { GDir *dir; gchar *confdir, *olddir, *buff; int status; gchar *target; const gchar *datafile; confdir = get_hwconf_dir(); if (g_file_test(confdir, G_FILE_TEST_IS_DIR)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check successful."), __func__); } else { /* try to create directory */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check failed. Creating %s"), __func__, confdir); status = g_mkdir_with_parents(confdir, 0755); if (status) { /* set error flag */ *error |= FTC_ERROR_STEP_03; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), __func__, confdir); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Created %s."), __func__, confdir); /* try to see if there are any .rig or .rot file in pre-1.1 configuration */ buff = get_old_conf_dir(); olddir = g_strconcat(buff, G_DIR_SEPARATOR_S, "hwconf", NULL); dir = g_dir_open(olddir, 0, NULL); g_free(buff); if (dir) { /* read files, if any; count number of .qth files */ while ((datafile = g_dir_read_name(dir))) { gchar *source = g_strconcat(olddir, G_DIR_SEPARATOR_S, datafile, NULL); /* note: filename is not a newly allocated gchar *, so we must not free it */ /* copy file to USER_CONF_DIR */ target = g_strconcat(confdir, G_DIR_SEPARATOR_S, datafile, NULL); gpredict_file_copy(source, target); g_free(target); g_free(source); } g_dir_close(dir); } g_free(olddir); } } g_free(confdir); } /** * Execute step 8 of the first time checks. * * 8. Check for the existence of USER_CONF_DIR/trsp directory. This * directory contains transponder data for satellites. * */ static void first_time_check_step_08(guint * error) { gchar *dir; int status; dir = get_trsp_dir(); if (g_file_test(dir, G_FILE_TEST_IS_DIR)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check successful."), __func__); } else { /* try to create directory */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Check failed. Creating %s"), __func__, dir); status = g_mkdir_with_parents(dir, 0755); if (status) { /* set error flag */ *error |= FTC_ERROR_STEP_08; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), __func__, dir); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Created %s."), __func__, dir); } } g_free(dir); } gpredict/src/first-time.h000066400000000000000000000030221427377236300157150ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef FIRST_TIME_H #define FIRST_TIME_H 1 /** \brief Bit fields in the returned error code */ enum { FTC_ERROR_STEP_01 = 1 << 1, FTC_ERROR_STEP_02 = 1 << 2, FTC_ERROR_STEP_03 = 1 << 3, FTC_ERROR_STEP_04 = 1 << 4, FTC_ERROR_STEP_05 = 1 << 5, FTC_ERROR_STEP_06 = 1 << 6, FTC_ERROR_STEP_07 = 1 << 7, FTC_ERROR_STEP_08 = 1 << 8, FTC_ERROR_STEP_09 = 1 << 9 }; guint first_time_check_run (void); #endif gpredict/src/gpredict-help.c000066400000000000000000000107561427377236300163700ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #ifdef HAVE_CONFIG_H #include #endif #include "compat.h" #include "gpredict-help.h" #include "sat-cfg.h" #include "sat-log.h" extern GtkWidget *app; /** * Show a text file in the gpredict system directory * @param filename The basic file name * * This function is intended to display files like NEWS, COPYING, etc. * Note that on windows these files have .txt suffix, while on Unix they * do not. */ void gpredict_help_show_txt(const gchar * filename) { GtkWidget *dialog; GtkWidget *swin; GtkWidget *view; GtkTextBuffer *txtbuf; GIOChannel *chan; GError *error = NULL; gchar *fname; gchar *buff; gsize length; /* get system data directory */ #ifdef G_OS_UNIX fname = g_strconcat(PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S, filename, NULL); #endif #ifdef G_OS_WIN32 buff = g_win32_get_package_installation_directory_of_module(NULL); fname = g_strconcat(buff, G_DIR_SEPARATOR_S, "doc", G_DIR_SEPARATOR_S, filename, ".txt", NULL); g_free(buff); #endif /* load file into buffer */ chan = g_io_channel_new_file(fname, "r", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to load %s (%s)"), __func__, fname, error->message); g_free(fname); g_clear_error(&error); return; } g_io_channel_read_to_end(chan, &buff, &length, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading %s (%s)"), __func__, fname, error->message); g_free(buff); g_clear_error(&error); g_io_channel_shutdown(chan, TRUE, NULL); g_io_channel_unref(chan); return; } g_free(fname); /* create text view and text buffer widgets */ view = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(view), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(view), FALSE); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view), 15); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view), 15); if (GTK_MINOR_VERSION >= 16) gtk_text_view_set_monospace(GTK_TEXT_VIEW(view), FALSE); txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); gtk_text_buffer_set_text(txtbuf, buff, -1); g_free(buff); /* scrolled window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(swin), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), view); /* create and show dialogue with textbuffer */ dialog = gtk_dialog_new_with_buttons(_("Gpredict Info"), GTK_WINDOW(app), 0, "_Close", GTK_RESPONSE_ACCEPT, NULL); gtk_widget_set_size_request(dialog, -1, 450); buff = icon_file_name("gpredict-icon.png"); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), buff, NULL); g_free(buff); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), swin, TRUE, TRUE, 0); gtk_widget_show_all(dialog); } gpredict/src/gpredict-help.h000066400000000000000000000001731427377236300163650ustar00rootroot00000000000000#ifndef GPREDICT_HELP_H #define GPREDICT_HELP_H 1 void gpredict_help_show_txt(const gchar * filename); #endif gpredict/src/gpredict-utils.c000066400000000000000000000364011427377236300165730ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2019 Alexandru Csete, OZ9AEC This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "sat-log.h" #include "strnatcmp.h" /** * Create a horizontal pixmap button. * * The text will be placed to the right of the image. * file is only the icon name, not the full path. */ GtkWidget *gpredict_hpixmap_button(const gchar * file, const gchar * text, const gchar * tooltip) { GtkWidget *button; GtkWidget *image; GtkWidget *box; gchar *path; path = icon_file_name(file); image = gtk_image_new_from_file(path); g_free(path); box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_box_pack_start(GTK_BOX(box), image, TRUE, TRUE, 0); if (text != NULL) gtk_box_pack_start(GTK_BOX(box), gtk_label_new(text), TRUE, TRUE, 0); button = gtk_button_new(); gtk_widget_set_tooltip_text(button, tooltip); gtk_container_add(GTK_CONTAINER(button), box); return button; } /** * Create a vertical pixmap button. * * The text will be placed under the image. * file is only the icon name, not the full path. */ GtkWidget *gpredict_vpixmap_button(const gchar * file, const gchar * text, const gchar * tooltip) { GtkWidget *button; GtkWidget *image; GtkWidget *box; gchar *path; path = icon_file_name(file); image = gtk_image_new_from_file(path); g_free(path); box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_box_pack_start(GTK_BOX(box), image, TRUE, TRUE, 0); if (text != NULL) gtk_box_pack_start(GTK_BOX(box), gtk_label_new(text), TRUE, TRUE, 0); button = gtk_button_new(); gtk_widget_set_tooltip_text(button, tooltip); gtk_container_add(GTK_CONTAINER(button), box); return button; } /** * Create a horizontal pixmap button using stock pixmap. * * The text will be placed to the right of the image. * The icon size will be GTK_ICON_SIZE_BUTTON. */ GtkWidget *gpredict_hstock_button(const gchar * stock_id, const gchar * text, const gchar * tooltip) { GtkWidget *button; GtkWidget *image; GtkWidget *box; image = gtk_image_new_from_icon_name(stock_id, GTK_ICON_SIZE_BUTTON); box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_box_pack_start(GTK_BOX(box), image, TRUE, TRUE, 0); if (text != NULL) gtk_box_pack_start(GTK_BOX(box), gtk_label_new(text), TRUE, TRUE, 0); button = gtk_button_new(); gtk_widget_set_tooltip_text(button, tooltip); gtk_container_add(GTK_CONTAINER(button), box); return button; } /** * Create and set tooltips for GtkComboBox. * * @param text Pointer to the desired tooltip text. * * This function creates and sets the tooltips for the specified widget. * This function is called by the \a grig_set_combo_tooltips function which * is must be used as callback for the "realize" signal of the GtkComboBox. */ static void set_combo_tooltip(GtkWidget * combo, gpointer text) { /* if current child is a button we have BINGO! */ if (GTK_IS_BUTTON(combo)) gtk_widget_set_tooltip_text(combo, text); } /** * Create and set tooltips for GtkComboBox. * * @param combo The GtkComboBox widget. * @param text Pointer to the desired tooltip text. * * This function creates and sets the tooltips for the specified widget. * The interface is implemented such that this function can be connected * directly to the @a realized signal of the GtkComboBox. * * Actually, this function only loops over all the children of the GtkComboBox * and calls the set_combo_tooltip internal function. * * @note This works only if the function is actually used as callback for the * @a realize signal og the GtkComboBox. * * @note This great trick has been pointed out by Matthias Clasen, he has done the * the same for the filter combo in the new GtkFileChooser * ref: gtkfilechooserdefault.c:3151 in Gtk+ 2.5.5 */ void gpredict_set_combo_tooltips(GtkWidget * combo, gpointer text) { /* for each child in the container call the internal function which actually creates the tooltips. */ gtk_container_forall(GTK_CONTAINER(combo), set_combo_tooltip, text); } gint gpredict_file_copy(const gchar * in, const gchar * out) { gchar *contents; gboolean status = 0; GError *err = NULL; gsize ulen; gssize slen; g_return_val_if_fail(in != NULL, 1); g_return_val_if_fail(out != NULL, 1); /* read source file */ if (!g_file_get_contents(in, &contents, &ulen, &err)) { sat_log_log(SAT_LOG_LEVEL_ERROR, "%s: %s", __func__, err->message); g_clear_error(&err); status = 1; } else { /* write contents to new file */ slen = (gssize) ulen; if (!g_file_set_contents(out, contents, slen, &err)) { sat_log_log(SAT_LOG_LEVEL_ERROR, "%s: %s", __func__, err->message); g_clear_error(&err); status = 1; } g_free(contents); } return status; } /** * Create a miniature pixmap button with no relief. * * Pixmapfile is only the icon name, not the full path. */ GtkWidget *gpredict_mini_mod_button(const gchar * pixmapfile, const gchar * tooltip) { GtkWidget *button; GtkWidget *image; gchar *path; path = icon_file_name(pixmapfile); image = gtk_image_new_from_file(path); g_free(path); button = gtk_button_new(); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); gtk_widget_set_tooltip_text(button, tooltip); gtk_container_add(GTK_CONTAINER(button), image); return button; } /** * Convert a BCD colour to a GdkColor structure. * * @param rgb The source colour in 0xRRGGBB form. * @param color Pointer to an existing GdkColor structure. */ void rgb2gdk(guint rgb, GdkColor * color) { guint16 r, g, b; guint tmp; /* sanity checks */ if (color == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with color = NULL"), __FILE__, __LINE__, __func__); return; } /* red */ tmp = rgb & 0xFF0000; r = (guint16) (tmp >> 16); /* green */ tmp = rgb & 0x00FF00; g = (guint16) (tmp >> 8); /* blue */ tmp = rgb & 0x0000FF; b = (guint16) tmp; /* store colours */ color->red = 257 * r; color->green = 257 * g; color->blue = 257 * b; } /** * Convert a BCD colour to a GdkColor structure. * * @param rgba The source colour in 0xRRGGBBAA form. * @param color Pointer to an existing GdkColor structure. * @param alpha Pointer to where the alpha channel value should be stored */ void rgba2gdk(guint rgba, GdkColor * color, guint16 * alpha) { guint16 r, g, b; guint tmp; /* sanity checks */ if (color == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with color = NULL"), __FILE__, __LINE__, __func__); return; } if (alpha == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with alpha = NULL"), __FILE__, __LINE__, __func__); return; } /* red */ tmp = rgba & 0xFF000000; r = (guint16) (tmp >> 24); /* green */ tmp = rgba & 0x00FF0000; g = (guint16) (tmp >> 16); /* blue */ tmp = rgba & 0x0000FF00; b = (guint16) (tmp >> 8); /* alpha channel */ *alpha = (guint16) (257 * (rgba & 0x000000FF)); /* store colours */ color->red = 257 * r; color->green = 257 * g; color->blue = 257 * b; } /** * Convert GdkColor to BCD colour. * * @param color The GdkColor structure. * @param rgb Pointer to where the 0xRRGGBB encoded colour should be stored. */ void gdk2rgb(const GdkColor * color, guint * rgb) { guint r, g, b; guint16 tmp; /* sanity checks */ if (color == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with color = NULL"), __FILE__, __LINE__, __func__); return; } if (rgb == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with rgb = NULL"), __FILE__, __LINE__, __func__); return; } /* red */ tmp = color->red / 257; r = (guint) (tmp << 16); /* green */ tmp = color->green / 257; g = (guint) (tmp << 8); /* blue */ tmp = color->blue / 257; b = (guint) tmp; *rgb = (r | g | b); } /** * Convert GdkColor and alpha channel to BCD colour. * * @param color The GdkColor structure. * @param alpha The value of the alpha channel. * @param rgb Pointer to where the 0xRRGGBBAA encoded colour should be stored. */ void gdk2rgba(const GdkColor * color, guint16 alpha, guint * rgba) { guint r, g, b, a; guint16 tmp; /* sanity checks */ if (color == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with color = NULL"), __FILE__, __LINE__, __func__); return; } if (rgba == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s called with rgba = NULL"), __FILE__, __LINE__, __func__); return; } /* red */ tmp = color->red / 257; r = (guint) (tmp << 24); /* green */ tmp = color->green / 257; g = (guint) (tmp << 16); /* blue */ tmp = color->blue / 257; b = (guint) (tmp << 8); /* alpha */ tmp = alpha / 257; a = (guint) tmp; *rgba = (r | g | b | a); } /** * Convert GdkColor to RRGGBB hex format (for Pango Markup). * * @param color The GdkColor structure. * @return A newly allocated character string. */ gchar *rgba2html(guint rgba) { gchar *col; guint8 r, g, b; guint tmp; tmp = rgba & 0xFF000000; r = (guint8) (tmp >> 24); /* green */ tmp = rgba & 0x00FF0000; g = (guint8) (tmp >> 16); /* blue */ tmp = rgba & 0x0000FF00; b = (guint8) (tmp >> 8); col = g_strdup_printf("%X%X%X", r, g, b); return col; } /** * String comparison function * @param s1 first string * @param s2 second string */ int gpredict_strcmp(const char *s1, const char *s2) { #if 0 gchar *a, *b; int retval; a = g_ascii_strup(s1, -1); b = g_ascii_strup(s2, -1); retval = strverscmp(a, b); g_free(a); g_free(b); return retval; #else return strnatcasecmp(s1, s2); #endif } /** * Substring finding function * * @param s1 the larger string * @param s2 the substring that we are searching for. * @return pointer to the substring location * * this is a substitute for strcasestr which is a gnu c extension and not available everywhere. */ char *gpredict_strcasestr(const char *s1, const char *s2) { size_t s1_len = strlen(s1); size_t s2_len = strlen(s2); while (s1_len >= s2_len) { if (strncasecmp(s1, s2, s2_len) == 0) return (char *)s1; s1++; s1_len--; } return NULL; } /** * Save a GKeyFile structure to a file * * @param cfgdata is a pointer to the GKeyFile. * @param filename is a pointer the filename string. * @return 1 on error and zero on success. * */ gboolean gpredict_save_key_file(GKeyFile * cfgdata, const char *filename) { GError *error = NULL; if (!g_key_file_save_to_file(cfgdata, filename, &error)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error writing config data (%s)."), __func__, error != NULL ? error->message : "unknown error"); g_clear_error(&error); return 1; } return 0; } /** * Check if \c ch is an alpha-num; in range \c "[0-9a-zA-F]". * Or \c "ch == '-'" or \c "ch == '_'". * * @param ch the character code to check. * @return TRUE if okay. */ gboolean gpredict_legal_char(int ch) { if (g_ascii_isalnum(ch) || ch == '-' || ch == '_') return (TRUE); return (FALSE); } /* Convert a 0xRRGGBBAA encoded config integer to a GdkRGBA structure */ void rgba_from_cfg(guint cfg_rgba, GdkRGBA * gdk_rgba) { if (gdk_rgba == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s called with gdk_rgba = NULL"), __func__); return; } gdk_rgba->red = ((cfg_rgba >> 24) & 0xFF) / 255.0; gdk_rgba->green = ((cfg_rgba >> 16) & 0xFF) / 255.0; gdk_rgba->blue = ((cfg_rgba >> 8) & 0xFF) / 255.0; gdk_rgba->alpha = (cfg_rgba & 0xFF) / 255.0; } /* convert GdkRGBA struct to 0xRRGGBBAA formatted config integer */ guint rgba_to_cfg(const GdkRGBA * gdk_rgba) { guint cfg_int = 0; if (gdk_rgba == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s called with gdk_rgba = NULL"), __func__); return 0; } cfg_int = ((guint) (gdk_rgba->red * 255.0)) << 24; cfg_int += ((guint) (gdk_rgba->green * 255.0)) << 16; cfg_int += ((guint) (gdk_rgba->blue * 255.0)) << 8; cfg_int += (guint) (gdk_rgba->alpha * 255.0); return cfg_int; } /* Convert a 0xRRGGBB encoded config integer to a GdkRGBA structure (no alpha channel) */ void rgb_from_cfg(guint cfg_rgb, GdkRGBA * gdk_rgba) { if (gdk_rgba == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s called with gdk_rgba = NULL"), __func__); return; } gdk_rgba->red = ((cfg_rgb >> 16) & 0xFF) / 255.0; gdk_rgba->green = ((cfg_rgb >> 8) & 0xFF) / 255.0; gdk_rgba->blue = (cfg_rgb & 0xFF) / 255.0; gdk_rgba->alpha = 1.0; } /* convert GdkRGBA struct to 0xRRGGBB formatted config integer, ignoring the alpha channel */ guint rgb_to_cfg(const GdkRGBA * gdk_rgba) { guint cfg_int = 0; if (gdk_rgba == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s called with gdk_rgba = NULL"), __func__); return 0; } cfg_int = ((guint) (gdk_rgba->red * 255.0)) << 16; cfg_int += ((guint) (gdk_rgba->green * 255.0)) << 8; cfg_int += (guint) (gdk_rgba->blue * 255.0); return cfg_int; } gpredict/src/gpredict-utils.h000066400000000000000000000036661427377236300166070ustar00rootroot00000000000000#ifndef GPREDICT_UTILS_H #define GPREDICT_UTILS_H 1 #include #define M_TO_FT(x) (3.2808399*x) #define FT_TO_M(x) (x/3.2808399) #define KM_TO_MI(x) (x/1.609344) #define MI_TO_KM(x) (1.609344*x) #ifndef M_PI #define M_PI 3.14159265358979323846264338327 #endif GtkWidget *gpredict_hpixmap_button(const gchar * file, const gchar * text, const gchar * tooltip); GtkWidget *gpredict_vpixmap_button(const gchar * file, const gchar * text, const gchar * tooltip); GtkWidget *gpredict_hstock_button(const gchar * stock_id, const gchar * text, const gchar * tooltip); GtkWidget *gpredict_mini_mod_button(const gchar * pixmapfile, const gchar * tooltip); void gpredict_set_combo_tooltips(GtkWidget * combo, gpointer text); gint gpredict_file_copy(const gchar * in, const gchar * out); void rgba_from_cfg(guint cfg_rgba, GdkRGBA * gdk_rgba); guint rgba_to_cfg(const GdkRGBA * gdk_rgba); void rgb_from_cfg(guint cfg_rgb, GdkRGBA * gdk_rgba); guint rgb_to_cfg(const GdkRGBA * gdk_rgba); void rgb2gdk(guint rgb, GdkColor * color); void rgba2gdk(guint rgba, GdkColor * color, guint16 * alpha); void gdk2rgb(const GdkColor * color, guint * rgb); void gdk2rgba(const GdkColor * color, guint16 alpha, guint * rgba); gchar *rgba2html(guint rgba); int gpredict_strcmp(const char *s1, const char *s2); char *gpredict_strcasestr(const char *s1, const char *s2); gboolean gpredict_save_key_file(GKeyFile * cfgdata, const char *filename); gboolean gpredict_legal_char(int ch); #endif gpredict/src/gtk-azel-plot.c000066400000000000000000000560241427377236300163310ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-azel-plot.h" #include "gtk-sat-data.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define AZEL_DEFAULT_SIZE 300 #define AZEL_X_MARGIN 40 #define AZEL_Y_MARGIN 40 /* extra size for line outside 0 deg circle (inside margin) */ #define AZEL_LINE_EXTRA 5 #define MARKER_SIZE 5 static GtkBoxClass *parent_class = NULL; static void gtk_azel_plot_destroy(GtkWidget * widget) { (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_azel_plot_class_init(GtkAzelPlotClass * class, gpointer class_data) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(class); (void)class_data; widget_class->destroy = gtk_azel_plot_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_azel_plot_init(GtkAzelPlot * azel, gpointer g_class) { (void)g_class; azel->qth = NULL; azel->width = 0; azel->height = 0; azel->x0 = 0; azel->y0 = 0; azel->xmax = 0; azel->ymax = 0; azel->maxaz = 0.0; azel->qthinfo = FALSE; azel->cursinfo = FALSE; azel->extratick = FALSE; } GType gtk_azel_plot_get_type() { static GType gtk_azel_plot_type = 0; if (!gtk_azel_plot_type) { static const GTypeInfo gtk_azel_plot_info = { sizeof(GtkAzelPlotClass), NULL, /* base init */ NULL, /* base finalise */ (GClassInitFunc) gtk_azel_plot_class_init, NULL, /* class finalise */ NULL, /* class data */ sizeof(GtkAzelPlot), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_azel_plot_init, NULL }; gtk_azel_plot_type = g_type_register_static(GTK_TYPE_BOX, "GtkAzelPlot", >k_azel_plot_info, 0); } return gtk_azel_plot_type; } static void az_to_xy(GtkAzelPlot * p, gdouble t, gdouble az, gdouble * x, gdouble * y) { gdouble tpp; /* time per pixel */ gdouble dpp; /* degrees per pixel */ /* time */ tpp = (p->pass->los - p->pass->aos) / (p->xmax - p->x0); *x = p->x0 + (t - p->pass->aos) / tpp; /* Az */ dpp = (gdouble) (p->maxaz / (p->y0 - p->ymax)); *y = (gdouble) (p->y0 - az / dpp); } static void el_to_xy(GtkAzelPlot * p, gdouble t, gdouble el, gdouble * x, gdouble * y) { gdouble tpp; /* time per pixel */ gdouble dpp; /* degrees per pixel */ /* time */ tpp = (p->pass->los - p->pass->aos) / (p->xmax - p->x0); *x = p->x0 + (t - p->pass->aos) / tpp; /* Az */ dpp = (gdouble) (90.0 / (p->y0 - p->ymax)); *y = (gdouble) (p->y0 - el / dpp); } /** * Manage new size allocation. * * This function is called when the canvas receives a new size allocation, * e.g. when the container is re-sized. The function re-calculates the graph * dimensions based on the new canvas size. */ static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data) { GtkAzelPlot *azel; GooCanvasPoints *pts; gdouble dx, dy; gdouble xstep, ystep; guint i, n; pass_detail_t *detail; if (gtk_widget_get_realized(widget)) { /* get graph dimensions */ azel = GTK_AZEL_PLOT(data); azel->width = allocation->width; azel->height = allocation->height; goo_canvas_set_bounds(GOO_CANVAS(GTK_AZEL_PLOT(azel)->canvas), 0, 0, azel->width, azel->height); /* update coordinate system */ azel->x0 = AZEL_X_MARGIN; azel->xmax = azel->width - AZEL_X_MARGIN; azel->y0 = azel->height - AZEL_Y_MARGIN; azel->ymax = AZEL_Y_MARGIN; /* background item */ g_object_set(azel->bgd, "width", (gdouble) azel->width, "height", (gdouble) azel->height, NULL); /* frame */ g_object_set(azel->frame, "x", (gdouble) azel->x0, "y", (gdouble) azel->ymax, "width", (gdouble) (azel->xmax - azel->x0), "height", (gdouble) (azel->y0 - AZEL_Y_MARGIN), NULL); xstep = (azel->xmax - azel->x0) / (AZEL_PLOT_NUM_TICKS + 1); ystep = (azel->y0 - azel->ymax) / (AZEL_PLOT_NUM_TICKS + 1); /* tick marks */ for (i = 0; i < AZEL_PLOT_NUM_TICKS; i++) { pts = goo_canvas_points_new(2); /* bottom x tick marks */ pts->coords[0] = (gdouble) (azel->x0 + (i + 1) * xstep); pts->coords[1] = (gdouble) azel->y0; pts->coords[2] = (gdouble) (azel->x0 + (i + 1) * xstep); pts->coords[3] = (gdouble) (azel->y0 - MARKER_SIZE); g_object_set(azel->xticksb[i], "points", pts, NULL); /* top x tick marks */ pts->coords[0] = (gdouble) (azel->x0 + (i + 1) * xstep); pts->coords[1] = (gdouble) azel->ymax; pts->coords[2] = (gdouble) (azel->x0 + (i + 1) * xstep); pts->coords[3] = (gdouble) (azel->ymax + MARKER_SIZE); g_object_set(azel->xtickst[i], "points", pts, NULL); /* x tick labels */ g_object_set(azel->xlab[i], "x", (gfloat) (azel->x0 + (i + 1) * xstep), "y", (gfloat) (azel->y0 + 5.0), NULL); /* left y tick marks */ pts->coords[0] = (gdouble) (gdouble) azel->x0; pts->coords[1] = (gdouble) (gdouble) (azel->y0 - (i + 1) * ystep); pts->coords[2] = (gdouble) (gdouble) (azel->x0 + MARKER_SIZE); pts->coords[3] = (gdouble) (gdouble) (azel->y0 - (i + 1) * ystep); g_object_set(azel->yticksl[i], "points", pts, NULL); /* right y tick marks */ pts->coords[0] = (gdouble) azel->xmax; pts->coords[1] = (gdouble) (azel->y0 - (i + 1) * ystep); pts->coords[2] = (gdouble) (azel->xmax - MARKER_SIZE); pts->coords[3] = (gdouble) (azel->y0 - (i + 1) * ystep); g_object_set(azel->yticksr[i], "points", pts, NULL); goo_canvas_points_unref(pts); /* Az tick labels */ g_object_set(azel->azlab[i], "x", (gfloat) (azel->x0 - 5), "y", (gfloat) (azel->y0 - (i + 1) * ystep), NULL); /* El tick labels */ g_object_set(azel->ellab[i], "x", (gfloat) (azel->xmax + 5), "y", (gfloat) (azel->y0 - (i + 1) * ystep), NULL); } /* Az legend */ g_object_set(azel->azleg, "x", (gfloat) (azel->x0 - 7), "y", (gfloat) (azel->ymax), NULL); /* El legend */ g_object_set(azel->elleg, "x", (gfloat) (azel->xmax + 7), "y", (gfloat) (azel->ymax), NULL); /* x legend */ g_object_set(azel->xleg, "x", (gfloat) (azel->x0 + (azel->xmax - azel->x0) / 2), "y", (gfloat) (azel->height - 5), NULL); /* Az graph */ n = g_slist_length(azel->pass->details); pts = goo_canvas_points_new(n); for (i = 0; i < n; i++) { detail = PASS_DETAIL(g_slist_nth_data(azel->pass->details, i)); az_to_xy(azel, detail->time, detail->az, &dx, &dy); pts->coords[2 * i] = dx; pts->coords[2 * i + 1] = dy; } pts->coords[0] = azel->x0; pts->coords[2 * n - 2] = azel->xmax; g_object_set(azel->azg, "points", pts, NULL); goo_canvas_points_unref(pts); /* El graph */ n = g_slist_length(azel->pass->details); pts = goo_canvas_points_new(n); for (i = 0; i < n; i++) { detail = PASS_DETAIL(g_slist_nth_data(azel->pass->details, i)); el_to_xy(azel, detail->time, detail->el, &dx, &dy); pts->coords[2 * i] = dx; pts->coords[2 * i + 1] = dy; } pts->coords[1] = azel->y0; pts->coords[2 * n - 1] = azel->y0; g_object_set(azel->elg, "points", pts, NULL); goo_canvas_points_unref(pts); /* cursor track */ g_object_set(azel->curs, "x", (gfloat) (azel->x0 + (azel->xmax - azel->x0) / 2), "y", (gfloat) 5.0, NULL); } } /** Convert canvas based coordinates to Az/El. */ static void xy_to_graph(GtkAzelPlot * p, gfloat x, gfloat y, gdouble * t, gdouble * az, gdouble * el) { gdouble tpp; /* time per pixel */ gdouble dpp; /* degrees per pixel */ /* time */ tpp = (p->pass->los - p->pass->aos) / (p->xmax - p->x0); *t = p->pass->aos + tpp * (x - p->x0); /* az */ dpp = p->maxaz / (p->y0 - p->ymax); *az = dpp * (p->y0 - y); /* el */ dpp = 90.0 / (p->y0 - p->ymax); *el = dpp * (p->y0 - y); } /** Manage mouse motion events. */ static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data) { GtkAzelPlot *azel = GTK_AZEL_PLOT(data); gdouble t, az, el; gfloat x, y; gchar *text; gchar buff[10]; (void)item; /* avoid unused warning compiler warning. */ (void)target; /* avoid unused warning compiler warning. */ if (azel->cursinfo) { /* get (x,y) */ x = event->x; y = event->y; /* get (t,az,el) */ /* show vertical line at that time */ /* print (t,az,el) */ if ((x > azel->x0) && (x < azel->xmax) && (y > azel->ymax) && (y < azel->y0)) { xy_to_graph(azel, x, y, &t, &az, &el); daynum_to_str(buff, 10, "%H:%M:%S", t); /* cursor track */ text = g_strdup_printf("T: %s, AZ: %.0f\302\260, EL: %.0f\302\260", buff, az, el); g_object_set(azel->curs, "text", text, NULL); g_free(text); } else { g_object_set(azel->curs, "text", "", NULL); } } return TRUE; } /** * Finish canvas item setup. * @param canvas * @param item * @param model * @param data Pointer to the GtkAzelPlot object. * * This function is called when a canvas item is created. Its purpose is to connect * the corresponding signals to the created items. */ static void on_item_created(GooCanvas * canvas, GooCanvasItem * item, GooCanvasItemModel * model, gpointer data) { (void)canvas; if (!goo_canvas_item_model_get_parent(model)) { /* root item / canvas */ g_signal_connect(item, "motion_notify_event", G_CALLBACK(on_motion_notify), data); } } /** * Manage canvas realise signals. * * This function is used to re-initialise the graph dimensions when * the graph is realized, i.e. displayed for the first time. This is * necessary in order to compensate for missing "re-allocate" signals for * graphs that have not yet been realised, e.g. when opening several module */ static void on_canvas_realized(GtkWidget * canvas, gpointer data) { GtkAllocation aloc; gtk_widget_get_allocation(canvas, &aloc); size_allocate_cb(canvas, &aloc, data); } static GooCanvasItemModel *create_canvas_model(GtkAzelPlot * azel) { GooCanvasItemModel *root; guint32 col; guint i; gdouble xstep, ystep; gdouble t, az, el; gchar buff[7]; gchar *txt; root = goo_canvas_group_model_new(NULL, NULL); /* graph dimensions */ azel->width = AZEL_DEFAULT_SIZE; azel->height = AZEL_DEFAULT_SIZE; /* update coordinate system */ azel->x0 = AZEL_X_MARGIN; azel->xmax = azel->width - AZEL_X_MARGIN; azel->y0 = azel->height - AZEL_Y_MARGIN; azel->ymax = AZEL_Y_MARGIN; /* background item */ azel->bgd = goo_canvas_rect_model_new(root, 0.0, 0.0, azel->width, azel->height, "fill-color-rgba", 0xFFFFFFFF, "stroke-color-rgba", 0xFFFFFFFF, NULL); col = sat_cfg_get_int(SAT_CFG_INT_POLAR_AXIS_COL); /* frame */ azel->frame = goo_canvas_rect_model_new(root, (gdouble) azel->x0, (gdouble) azel->ymax, (gdouble) (azel->xmax - azel->x0), (gdouble) (azel->y0 - AZEL_Y_MARGIN), "stroke-color-rgba", 0x000000FF, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); xstep = (azel->xmax - azel->x0) / (AZEL_PLOT_NUM_TICKS + 1); ystep = (azel->y0 - azel->ymax) / (AZEL_PLOT_NUM_TICKS + 1); // We use these defines to shorten the function names (indent) #define MKLINE goo_canvas_polyline_model_new_line #define MKTEXT goo_canvas_text_model_new /* tick marks */ for (i = 0; i < AZEL_PLOT_NUM_TICKS; i++) { /* bottom x tick marks */ azel->xticksb[i] = MKLINE(root, (gdouble) (azel->x0 + (i + 1) * xstep), (gdouble) azel->y0, (gdouble) (azel->x0 + (i + 1) * xstep), (gdouble) (azel->y0 - MARKER_SIZE), "fill-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); /* top x tick marks */ azel->xtickst[i] = MKLINE(root, (gdouble) (azel->x0 + (i + 1) * xstep), (gdouble) azel->ymax, (gdouble) (azel->x0 + (i + 1) * xstep), (gdouble) (azel->ymax + MARKER_SIZE), "fill-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); /* x tick labels */ /* get time */ xy_to_graph(azel, azel->x0 + (i + 1) * xstep, 0.0, &t, &az, &el); daynum_to_str(buff, 7, "%H:%M", t); azel->xlab[i] = MKTEXT(root, buff, (gfloat) (azel->x0 + (i + 1) * xstep), (gfloat) (azel->y0 + 5), -1, GOO_CANVAS_ANCHOR_N, "font", "Sans 8", "fill-color-rgba", 0x000000FF, NULL); /* left y tick marks */ azel->yticksl[i] = MKLINE(root, (gdouble) azel->x0, (gdouble) (azel->y0 - (i + 1) * ystep), (gdouble) (azel->x0 + MARKER_SIZE), (gdouble) (azel->y0 - (i + 1) * ystep), "fill-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); /* right y tick marks */ azel->yticksr[i] = MKLINE(root, (gdouble) azel->xmax, (gdouble) (azel->y0 - (i + 1) * ystep), (gdouble) (azel->xmax - MARKER_SIZE), (gdouble) (azel->y0 - (i + 1) * ystep), "fill-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); /* Az tick labels */ txt = g_strdup_printf("%.0f\302\260", azel->maxaz / (AZEL_PLOT_NUM_TICKS + 1) * (i + 1)); azel->azlab[i] = MKTEXT(root, txt, (gfloat) (azel->x0 - 5), (gfloat) (azel->y0 - (i + 1) * ystep), -1, GOO_CANVAS_ANCHOR_E, "font", "Sans 8", "fill-color-rgba", 0x0000BFFF, NULL); g_free(txt); /* El tick labels */ txt = g_strdup_printf("%.0f\302\260", 90.0 / (AZEL_PLOT_NUM_TICKS + 1) * (i + 1)); azel->ellab[i] = MKTEXT(root, txt, (gfloat) (azel->xmax + 5), (gfloat) (azel->y0 - (i + 1) * ystep), -1, GOO_CANVAS_ANCHOR_W, "font", "Sans 8", "fill-color-rgba", 0xBF0000FF, NULL); g_free(txt); } /* x legend */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME)) { azel->xleg = MKTEXT(root, _("Local Time"), (gfloat) (azel->x0 + (azel->xmax - azel->x0) / 2), (gfloat) (azel->height - 5), -1, GOO_CANVAS_ANCHOR_S, "font", "Sans 9", "fill-color-rgba", 0x000000FF, NULL); } else { azel->xleg = MKTEXT(root, _("UTC"), (gfloat) (azel->x0 + (azel->xmax - azel->x0) / 2), (gfloat) (azel->height - 5), -1, GOO_CANVAS_ANCHOR_S, "font", "Sans 9", "fill-color-rgba", 0x000000FF, NULL); } /* cursor text in upper right corner */ azel->curs = MKTEXT(root, "", (gfloat) (azel->x0 + (azel->xmax - azel->x0) / 2), 5.0, -1, GOO_CANVAS_ANCHOR_N, "font", "Sans 8", "fill-color-rgba", 0x000000FF, NULL); /* Az legend */ azel->azleg = MKTEXT(root, _("Az"), (gfloat) (azel->x0 - 7), (gfloat) azel->ymax, -1, GOO_CANVAS_ANCHOR_NE, "font", "Sans 9", "fill-color-rgba", 0x0000BFFF, NULL); /* El legend */ azel->elleg = MKTEXT(root, _("El"), (gfloat) (azel->xmax + 7), (gfloat) azel->ymax, -1, GOO_CANVAS_ANCHOR_NW, "font", "Sans 9", "fill-color-rgba", 0xBF0000FF, NULL); /* Az graph */ azel->azg = MKLINE(root, 0, 0, 10, 10, "stroke-color-rgba", 0x0000BFFF, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); /* El graph */ azel->elg = MKLINE(root, 30, 30, 40, 40, "stroke-color-rgba", 0xBF0000FF, "fill-color-rgba", 0xBF00001A, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 1.0, NULL); return root; } /** * Create a new GtkAzelPlot widget. * @param cfgdata The configuration data of the parent module. * @param sats Pointer to the hash table containing the associated satellites. * @param qth Pointer to the ground station data. */ GtkWidget *gtk_azel_plot_new(qth_t * qth, pass_t * pass) { GtkAzelPlot *azel; GooCanvasItemModel *root; guint i, n; pass_detail_t *detail; azel = GTK_AZEL_PLOT(g_object_new(GTK_TYPE_AZEL_PLOT, NULL)); azel->qth = qth; azel->pass = pass; /* get settings */ azel->qthinfo = sat_cfg_get_bool(SAT_CFG_BOOL_POL_SHOW_QTH_INFO); azel->extratick = sat_cfg_get_bool(SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS); azel->cursinfo = TRUE; /* check maximum Az */ n = g_slist_length(pass->details); for (i = 0; i < n; i++) { detail = PASS_DETAIL(g_slist_nth_data(pass->details, i)); if (detail->az > azel->maxaz) { azel->maxaz = detail->az; } } if (azel->maxaz > 180.0) azel->maxaz = 360.0; else azel->maxaz = 180.0; /* create the canvas */ azel->canvas = goo_canvas_new(); gtk_widget_set_size_request(azel->canvas, AZEL_DEFAULT_SIZE, AZEL_DEFAULT_SIZE); goo_canvas_set_bounds(GOO_CANVAS(azel->canvas), 0, 0, AZEL_DEFAULT_SIZE, AZEL_DEFAULT_SIZE); /* connect size-request signal */ g_signal_connect(azel->canvas, "size-allocate", G_CALLBACK(size_allocate_cb), azel); g_signal_connect(azel->canvas, "item_created", G_CALLBACK(on_item_created), azel); g_signal_connect_after(azel->canvas, "realize", G_CALLBACK(on_canvas_realized), azel); gtk_widget_show(azel->canvas); /* Create the canvas model */ root = create_canvas_model(azel); goo_canvas_set_root_item_model(GOO_CANVAS(azel->canvas), root); g_object_unref(root); gtk_box_pack_start(GTK_BOX(azel), azel->canvas, TRUE, TRUE, 0); return GTK_WIDGET(azel); } gpredict/src/gtk-azel-plot.h000066400000000000000000000076431427377236300163410ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_AZEL_PLOT_H__ #define __GTK_AZEL_PLOT_H__ 1 #include #include #include #include #include "gtk-sat-data.h" #include "predict-tools.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ /* number of ticks excluding end points */ #define AZEL_PLOT_NUM_TICKS 5 #define GTK_AZEL_PLOT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_azel_plot_get_type (), GtkAzelPlot) #define GTK_AZEL_PLOT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_azel_plot_get_type (), GtkAzelPlotClass) #define GTK_IS_AZEL_PLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_azel_plot_get_type ()) #define GTK_TYPE_AZEL_PLOT (gtk_azel_plot_get_type ()) #define IS_GTK_AZEL_PLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_azel_plot_get_type ()) typedef struct _GtkAzelPlot GtkAzelPlot; typedef struct _GtkAzelPlotClass GtkAzelPlotClass; struct _GtkAzelPlot { GtkBox box; GtkWidget *canvas; /*!< The canvas widget */ GooCanvasItemModel *bgd; /*!< Rectangle used to paint background */ GooCanvasItemModel *curs; /*!< cusor info */ GooCanvasItemModel *frame; /*!< frame */ GooCanvasItemModel *azg; /*!< Az graph */ GooCanvasItemModel *elg; /*!< El graph */ GooCanvasItemModel *xticksb[AZEL_PLOT_NUM_TICKS]; /*!< x tick marks bottom */ GooCanvasItemModel *xtickst[AZEL_PLOT_NUM_TICKS]; /*!< x tick marks top */ GooCanvasItemModel *xlabels[AZEL_PLOT_NUM_TICKS]; /*!< x tick labels */ GooCanvasItemModel *yticksl[AZEL_PLOT_NUM_TICKS]; /*!< x tick marks left */ GooCanvasItemModel *yticksr[AZEL_PLOT_NUM_TICKS]; /*!< x tick marks right */ GooCanvasItemModel *ylabelsl[AZEL_PLOT_NUM_TICKS]; /*!< left y tick labels */ GooCanvasItemModel *ylabelsr[AZEL_PLOT_NUM_TICKS]; /*!< right y tick labels */ GooCanvasItemModel *xlab[AZEL_PLOT_NUM_TICKS]; /*!< x tick labels */ GooCanvasItemModel *azlab[AZEL_PLOT_NUM_TICKS]; /*!< Az tick labels */ GooCanvasItemModel *ellab[AZEL_PLOT_NUM_TICKS]; /*!< El tick labels */ GooCanvasItemModel *azleg, *elleg, *xleg; /*!< Az and El legend */ qth_t *qth; /*!< Pointer to current location. */ pass_t *pass; guint width; /*!< width of the box */ guint height; /*!< height of the box */ guint x0, y0, xmax, ymax; gdouble maxaz; /*!< max Az 360 or 180 */ gboolean qthinfo; /*!< Show the QTH info. */ gboolean cursinfo; /*!< Track the mouse cursor. */ gboolean extratick; /*!< Show extra ticks */ }; struct _GtkAzelPlotClass { GtkBoxClass parent_class; }; GType gtk_azel_plot_get_type(void); GtkWidget *gtk_azel_plot_new(qth_t * qth, pass_t * pass); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_AZEL_PLOT_H__ */ gpredict/src/gtk-event-list-popup.c000066400000000000000000000070741427377236300176560ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #ifdef HAVE_CONFIG_H #include #endif #include "config-keys.h" #include "gtk-event-list-popup.h" #include "gtk-sat-popup-common.h" #include "sat-cfg.h" #include "sat-log.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-info.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" /** * Show satellite popup menu. * @param sat Pointer to the satellite data. * @param qth The current location. * @param event The mouse-click related event info. * @param toplevel The top level window. */ void gtk_event_list_popup_exec(sat_t * sat, qth_t * qth, GdkEventButton * event, GtkEventList * list) { GtkWidget *menu; GtkWidget *menuitem; GtkWidget *label; gchar *buff; menu = gtk_menu_new(); /* first menu item is the satellite name, centered */ menuitem = gtk_menu_item_new(); label = gtk_label_new(NULL); /** FIXME **/ g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER, NULL); //gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); /* only available since 3.16, so no Trusty support gtk_label_set_xalign(GTK_LABEL(label), 0.5); gtk_label_set_yalign(GTK_LABEL(label), 0.5); */ buff = g_markup_printf_escaped("%s", sat->nickname); gtk_label_set_markup(GTK_LABEL(label), buff); g_free(buff); gtk_container_add(GTK_CONTAINER(menuitem), label); /* attach data to menuitem and connect callback */ g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_sat_info_menu_cb), gtk_widget_get_toplevel(GTK_WIDGET(list))); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* add the menu items for current,next, and future passes. */ add_pass_menu_items(menu, sat, qth, &list->tstamp, GTK_WIDGET(list)); gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); #else (void) event; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } gpredict/src/gtk-event-list-popup.h000066400000000000000000000026071427377236300176600ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef GTK_EVENT_LIST_POPUP_H #define GTK_EVENT_LIST_POPUP_H 1 #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" #include "gtk-event-list.h" void gtk_event_list_popup_exec(sat_t * sat, qth_t * qth, GdkEventButton * event, GtkEventList * list); #endif gpredict/src/gtk-event-list.c000066400000000000000000000721571427377236300165210ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-event-list.h" #include "gtk-event-list-popup.h" #include "gtk-sat-data.h" #include "mod-cfg-get-param.h" #include "locator.h" #include "orbit-tools.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-vis.h" #include "sat-info.h" #include "sgpsdp/sgp4sdp4.h" #define EVENT_LIST_COL_DEF (EVENT_LIST_FLAG_NAME | EVENT_LIST_FLAG_AZ | EVENT_LIST_FLAG_EL | EVENT_LIST_FLAG_TIME) /** Column titles indexed with column symb. refs. */ const gchar *EVENT_LIST_COL_TITLE[EVENT_LIST_COL_NUMBER] = { N_("Satellite"), N_("Catnum"), N_("Az"), N_("El"), N_("Event"), N_("AOS/LOS"), N_("Decayed"), /*should never be seen */ N_("BOLD") /*should never be seen */ }; /** Column title hints indexed with column symb. refs. */ const gchar *EVENT_LIST_COL_HINT[EVENT_LIST_COL_NUMBER] = { N_("Satellite Name"), N_("Catalogue Number"), N_("Azimuth"), N_("Elevation"), N_("Next event type (A: AOS, L: LOS)"), N_("Countdown until next event") }; /* field alignments */ const gfloat EVENT_LIST_COL_XALIGN[EVENT_LIST_COL_NUMBER] = { 0.0, // name 0.5, // catnum 1.0, // az 1.0, // el 0.5, // event type 1.0, // time }; /* column head alignments */ const gfloat EVENT_LIST_HEAD_XALIGN[EVENT_LIST_COL_NUMBER] = { 0.0, // name 0.5, // catnum 0.5, // az 0.5, // el 0.5, // event type 1.0, // time }; static void gtk_event_list_class_init(GtkEventListClass * class, gpointer class_data); static void gtk_event_list_init(GtkEventList * list, gpointer g_class); static void gtk_event_list_destroy(GtkWidget * widget); static GtkTreeModel *create_and_fill_model(GHashTable * sats); static void event_list_add_satellites(gpointer key, gpointer value, gpointer user_data); static gboolean event_list_update_sats(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); /* cell rendering related functions */ static void check_and_set_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i); static void evtype_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void time_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static gint event_cell_compare_function(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data); static gboolean popup_menu_cb(GtkWidget * treeview, gpointer list); static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer list); static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer list); static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer list); static GtkBoxClass *parent_class = NULL; GType gtk_event_list_get_type() { static GType gtk_event_list_type = 0; if (!gtk_event_list_type) { static const GTypeInfo gtk_event_list_info = { sizeof(GtkEventListClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_event_list_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkEventList), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_event_list_init, NULL }; gtk_event_list_type = g_type_register_static(GTK_TYPE_BOX, "GtkEventList", >k_event_list_info, 0); } return gtk_event_list_type; } static void gtk_event_list_class_init(GtkEventListClass * class, gpointer class_data) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(class); (void)class_data; widget_class->destroy = gtk_event_list_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_event_list_init(GtkEventList * list, gpointer g_class) { (void)list; (void)g_class; } static void gtk_event_list_destroy(GtkWidget * widget) { GtkEventList *evlist = GTK_EVENT_LIST(widget); g_key_file_set_integer(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_COLUMN, evlist->sort_column); g_key_file_set_integer(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_ORDER, evlist->sort_order); (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } /** * Create a new GtkEventList widget. * @param cfgdata Pointer to the module configuration data. * @param sats Hash table containing the satellites tracked by the parent module. * @param qth Pointer to the QTH used by this module. * @param columns Visible columns (currently not in use). */ GtkWidget *gtk_event_list_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 columns) { GtkWidget *widget; GtkEventList *evlist; GtkTreeModel *model, *filter, *sortable; guint i; GtkCellRenderer *renderer; GtkTreeViewColumn *column; (void)columns; widget = g_object_new(GTK_TYPE_EVENT_LIST, NULL); evlist = GTK_EVENT_LIST(widget); evlist->update = gtk_event_list_update; evlist->cfgdata = cfgdata; evlist->sort_column = EVENT_LIST_COL_TIME; evlist->sort_order = GTK_SORT_ASCENDING; if (g_key_file_has_key(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_COLUMN, NULL)) { evlist->sort_column = g_key_file_get_integer(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_COLUMN, NULL); if ((evlist->sort_column > EVENT_LIST_COL_NUMBER) || (evlist->sort_column < 0)) { evlist->sort_column = EVENT_LIST_COL_TIME; } } if (g_key_file_has_key(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_ORDER, NULL)) { evlist->sort_order = g_key_file_get_integer(evlist->cfgdata, MOD_CFG_EVENT_LIST_SECTION, MOD_CFG_EVENT_LIST_SORT_ORDER, NULL); if ((evlist->sort_order > 1) || (evlist->sort_order < 0)) { evlist->sort_order = GTK_SORT_ASCENDING; } } evlist->satellites = sats; evlist->qth = qth; evlist->flags = EVENT_LIST_COL_DEF; evlist->treeview = gtk_tree_view_new(); gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(evlist->treeview), GTK_TREE_VIEW_GRID_LINES_NONE); /* create treeview columns */ for (i = 0; i < EVENT_LIST_COL_NUMBER; i++) { renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "xalign", EVENT_LIST_COL_XALIGN[i], NULL); column = gtk_tree_view_column_new_with_attributes(_ (EVENT_LIST_COL_TITLE[i]), renderer, "text", i, "weight", EVENT_LIST_COL_BOLD, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(evlist->treeview), column, -1); gtk_tree_view_column_set_alignment(column, EVENT_LIST_HEAD_XALIGN[i]); gtk_tree_view_column_set_sort_column_id(column, i); check_and_set_cell_renderer(column, renderer, i); /* hide columns that have not been specified */ if (!(evlist->flags & (1 << i))) { gtk_tree_view_column_set_visible(column, FALSE); } } /* create model and finalise treeview */ model = create_and_fill_model(evlist->satellites); filter = gtk_tree_model_filter_new(model, NULL); sortable = gtk_tree_model_sort_new_with_model(filter); evlist->sortable = sortable; gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(filter), EVENT_LIST_COL_DECAY); gtk_tree_view_set_model(GTK_TREE_VIEW(evlist->treeview), sortable); /* The time sort function needs to be special */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(sortable), EVENT_LIST_COL_TIME, event_cell_compare_function, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(sortable), evlist->sort_column, evlist->sort_order); g_object_unref(model); g_object_unref(filter); g_object_unref(sortable); g_signal_connect(evlist->treeview, "button-press-event", G_CALLBACK(button_press_cb), widget); g_signal_connect(evlist->treeview, "popup-menu", G_CALLBACK(popup_menu_cb), widget); g_signal_connect(evlist->treeview, "row-activated", G_CALLBACK(row_activated_cb), widget); evlist->swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(evlist->swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(evlist->swin), evlist->treeview); gtk_box_pack_start(GTK_BOX(widget), evlist->swin, TRUE, TRUE, 0); gtk_widget_show_all(widget); return widget; } /** Create and file the tree model for the even list. */ static GtkTreeModel *create_and_fill_model(GHashTable * sats) { GtkListStore *liststore; liststore = gtk_list_store_new(EVENT_LIST_COL_NUMBER, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_DOUBLE, // az G_TYPE_DOUBLE, // el G_TYPE_BOOLEAN, // TRUE if AOS, FALSE if LOS G_TYPE_DOUBLE, // time G_TYPE_BOOLEAN, // decayed G_TYPE_INT); // bold for storing weight g_hash_table_foreach(sats, event_list_add_satellites, liststore); return GTK_TREE_MODEL(liststore); } /** * Add satellites. This function is a g_hash_table_foreach() callback. * @param key The key of the satellite in the hash table. * @param value Pointer to the satellite (sat_t structure) that should be added. * @param user_data Pointer to the GtkListStore where the satellite should be added * * This function is called by by the create_and_fill_models() function for adding * the satellites to the internal liststore. */ static void event_list_add_satellites(gpointer key, gpointer value, gpointer user_data) { GtkListStore *store = GTK_LIST_STORE(user_data); GtkTreeIter item; sat_t *sat = SAT(value); (void)key; gtk_list_store_append(store, &item); gtk_list_store_set(store, &item, EVENT_LIST_COL_NAME, sat->nickname, EVENT_LIST_COL_CATNUM, sat->tle.catnr, EVENT_LIST_COL_AZ, sat->az, EVENT_LIST_COL_EL, sat->el, EVENT_LIST_COL_EVT, (sat->el >= 0) ? TRUE : FALSE, EVENT_LIST_COL_TIME, 0.0, EVENT_LIST_COL_DECAY, !decayed(sat), -1); } /** Update satellites */ void gtk_event_list_update(GtkWidget * widget) { GtkTreeModel *model; GtkEventList *evlist = GTK_EVENT_LIST(widget); /* first, do some sanity checks */ if ((evlist == NULL) || !IS_GTK_EVENT_LIST(evlist)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid GtkEventList!"), __func__); return; } /* get and tranverse the model */ model = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER (gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (GTK_TREE_VIEW (evlist->treeview)))))); /* save the sort information */ gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(evlist->sortable), &(evlist->sort_column), &(evlist->sort_order)); /* update */ gtk_tree_model_foreach(model, event_list_update_sats, evlist); #if 0 /* check refresh rate */ if (evlist->counter < evlist->refresh) { evlist->counter++; } else { evlist->counter = 1; /* get and tranverse the model */ model = gtk_tree_model_filter_get_model(gtk_tree_view_get_model (GTK_TREE_VIEW(evlist->treeview))); /* update */ gtk_tree_model_foreach(model, event_list_update_sats, evlist); } #endif } /** Update data in each column in a given row */ static gboolean event_list_update_sats(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { GtkEventList *evlist = GTK_EVENT_LIST(data); guint *catnum; sat_t *sat; gdouble number, now; (void)path; /* get the catalogue number for this row then look it up in the hash table */ catnum = g_new0(guint, 1); gtk_tree_model_get(model, iter, EVENT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(evlist->satellites, catnum)); if (sat == NULL) { /* satellite not tracked anymore => remove */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to get data for #%d."), __func__, *catnum); gtk_list_store_remove(GTK_LIST_STORE(model), iter); sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Satellite #%d removed from list."), __func__, *catnum); } else { /* update data */ now = evlist->tstamp; if (sat->el > 0.0) { if (sat->los > 0.0) { number = sat->los - now; } else { number = -1.0; /* Sat is staionary or no event */ } } else { if (sat->aos > 0.0) { number = sat->aos - now; } else { number = -1.0; /* Sat is staionary or no event */ } } /* store new data */ gtk_list_store_set(GTK_LIST_STORE(model), iter, EVENT_LIST_COL_AZ, sat->az, EVENT_LIST_COL_EL, sat->el, EVENT_LIST_COL_EVT, (sat->el >= 0) ? TRUE : FALSE, EVENT_LIST_COL_TIME, number, EVENT_LIST_COL_DECAY, !decayed(sat), EVENT_LIST_COL_BOLD, (sat->el > 0.0) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, -1); } g_free(catnum); /* Return value not documented what to return, but it seems that FALSE continues to next row while TRUE breaks */ return FALSE; } /** Set cell renderer function. */ static void check_and_set_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i) { switch (i) { /* Event type */ case EVENT_LIST_COL_AZ: case EVENT_LIST_COL_EL: gtk_tree_view_column_set_cell_data_func(column, renderer, degree_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* Event type */ case EVENT_LIST_COL_EVT: gtk_tree_view_column_set_cell_data_func(column, renderer, evtype_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* time countdown */ case EVENT_LIST_COL_TIME: gtk_tree_view_column_set_cell_data_func(column, renderer, time_cell_data_function, GUINT_TO_POINTER(i), NULL); break; default: break; } } /** * Render column containing event type. * * Event type can be AOS or LOS depending on whether the satellite is within * range or not. AOS will rendern an "A", LOS will render an "L". */ static void evtype_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { (void)col; gboolean value; gchar *buff; guint coli = GPOINTER_TO_UINT(column); /* get field value from cell */ gtk_tree_model_get(model, iter, coli, &value, -1); if (value == TRUE) { buff = g_strdup(_("LOS")); } else { buff = g_strdup(_("AOS")); } /* render the cell */ g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* AOS/LOS; convert julian date to string */ static void time_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { (void)col; gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); guint h, m, s; /* get cell data */ gtk_tree_model_get(model, iter, coli, &number, -1); /* format the time code */ if (number < 0.0) { buff = g_strdup(_("Never")); } else { /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (h > 0) { buff = g_strdup_printf("%02d:%02d:%02d", h, m, s); } else { buff = g_strdup_printf("%02d:%02d", m, s); } } /* render the cell */ g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* general floats with 2 digits + degree char. Used for Az and El */ static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { (void)col; gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); /* get the value */ gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.2f\302\260", number); /* render column */ g_object_set(renderer, "text", buff, NULL); g_free(buff); } /** * Function to compare to Event cells. * @param model Pointer to the GtkTreeModel. * @param a Pointer to the first element. * @param b Pointer to the second element. * @param user_data Always NULL (TBC). * @return See detailed description. * * This function is used by the SatList sort function to determine whether * AOS/LOS cell a is greater than b or not. The cells a and b contain the * time of the event in Julian days, thus the result can be computed by a * simple comparison between the two numbers contained in the cells. * * The function returns -1 if a < b; +1 if a > b; 0 otherwise. */ static gint event_cell_compare_function(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data) { gint result; gdouble ta, tb; gint sort_col = EVENT_LIST_COL_TIME; /* hard coded as it is the only option */ /* extracting from models was not working */ /* with filter and sorting */ (void)user_data; /* get a and b */ gtk_tree_model_get(model, a, sort_col, &ta, -1); gtk_tree_model_get(model, b, sort_col, &tb, -1); if (ta < tb) { result = -1; } else if (ta > tb) { result = 1; } else { result = 0; } return result; } /** Reload configuration */ void gtk_event_list_reconf(GtkWidget * widget, GKeyFile * cfgdat) { (void)cfgdat; (void)widget; sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: FIXME I am not implemented")); } /** * Manage "popup-menu" events. * @param treeview The tree view in the GtkSatList widget * @param list Pointer to the GtkSatList widget. * */ static gboolean popup_menu_cb(GtkWidget * treeview, gpointer list) { /* if there is no selection, select the first row */ view_popup_menu(treeview, NULL, list); return TRUE; /* we handled this */ } /** * Manage button press events. * @param treeview The tree view in the GtkSatList widget. * @param event The event received. * @param list Pointer to the GtkSatList widget. */ static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer list) { /* single click with the right mouse button? */ if (event->type == GDK_BUTTON_PRESS && event->button == 3) { /* optional: select row if no row is selected or only * one other row is selected (will only do something * if you set a tree selection mode as described later * in the tutorial) */ if (1) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); /* Note: gtk_tree_selection_count_selected_rows() does not * exist in gtk+-2.0, only in gtk+ >= v2.2 ! */ if (gtk_tree_selection_count_selected_rows(selection) <= 1) { GtkTreePath *path; /* Get tree path for row that was clicked */ if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), (gint) event->x, (gint) event->y, &path, NULL, NULL, NULL)) { gtk_tree_selection_unselect_all(selection); gtk_tree_selection_select_path(selection, path); gtk_tree_path_free(path); } } } /* end of optional bit */ view_popup_menu(treeview, event, list); return TRUE; /* we handled this */ } return FALSE; /* we did not handle this */ } static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer list) { GtkTreeModel *model; GtkTreeIter iter; guint *catnum; sat_t *sat; (void)column; catnum = g_new0(guint, 1); model = gtk_tree_view_get_model(tree_view); gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, EVENT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(GTK_EVENT_LIST(list)->satellites, catnum)); if (sat == NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d Failed to get data for %d."), __FILE__, __LINE__, *catnum); } else { show_sat_info(sat, gtk_widget_get_toplevel(GTK_WIDGET(list))); } g_free(catnum); } static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer list) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; guint *catnum; sat_t *sat; catnum = g_new0(guint, 1); /* get selected satellite */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, EVENT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(GTK_EVENT_LIST(list)->satellites, catnum)); if (sat == NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d Failed to get data for %d."), __FILE__, __LINE__, *catnum); } else { gtk_event_list_popup_exec(sat, GTK_EVENT_LIST(list)->qth, event, GTK_EVENT_LIST(list)); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: There is no selection; skip popup."), __FILE__, __LINE__); } g_free(catnum); } /** Reload reference to satellites (e.g. after TLE update). */ void gtk_event_list_reload_sats(GtkWidget * evlist, GHashTable * sats) { GTK_EVENT_LIST(evlist)->satellites = sats; } /** Select satellite. */ void gtk_event_list_select_sat(GtkWidget * widget, gint catnum) { GtkEventList *list; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gint i, n; gint sat; list = GTK_EVENT_LIST(widget); model = gtk_tree_view_get_model(GTK_TREE_VIEW(list->treeview)); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list->treeview)); /* iterate over the satellite list until a amtch is found */ n = g_hash_table_size(list->satellites); for (i = 0; i < n; i++) { if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { gtk_tree_model_get(model, &iter, EVENT_LIST_COL_CATNUM, &sat, -1); if (sat == catnum) { gtk_tree_selection_select_iter(selection, &iter); i = n; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: GtkEventList has not child with index %d"), __func__, i); } } } gpredict/src/gtk-event-list.h000066400000000000000000000066101427377236300165150ustar00rootroot00000000000000#ifndef __GTK_EVENT_LIST_H__ #define __GTK_EVENT_LIST_H__ 1 #include #include #include #include #include "gtk-sat-data.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* *INDENT-ON* */ #define GTK_TYPE_EVENT_LIST (gtk_event_list_get_type ()) #define GTK_EVENT_LIST(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_event_list_get_type (),\ GtkEventList) #define GTK_EVENT_LIST_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_event_list_get_type (),\ GtkEventListClass) #define IS_GTK_EVENT_LIST(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_event_list_get_type ()) typedef struct _gtk_event_list GtkEventList; typedef struct _GtkEventListClass GtkEventListClass; struct _gtk_event_list { GtkBox box; GtkWidget *treeview; /*!< the tree view itself */ GtkWidget *swin; /*!< scrolled window */ GHashTable *satellites; /*!< Satellites. */ qth_t *qth; /*!< Pointer to current location. */ guint32 flags; /*!< Flags indicating which columns are visible */ gdouble tstamp; /*!< time stamp of calculations; set by GtkSatModule */ GKeyFile *cfgdata; gint sort_column; GtkSortType sort_order; GtkTreeModel *sortable; void (*update) (GtkWidget * widget); /*!< update function */ }; struct _GtkEventListClass { GtkBoxClass parent_class; }; /** Symbolic references to columns */ typedef enum { EVENT_LIST_COL_NAME = 0, /*!< Satellite name. */ EVENT_LIST_COL_CATNUM, /*!< Catalogue number. */ EVENT_LIST_COL_AZ, /*!< Satellite Azimuth. */ EVENT_LIST_COL_EL, /*!< Satellite Elevation. */ EVENT_LIST_COL_EVT, /*!< Next event (AOS or LOS). */ EVENT_LIST_COL_TIME, /*!< Time countdown. */ EVENT_LIST_COL_DECAY, /*!< Whether satellite is decayed or not. */ EVENT_LIST_COL_BOLD, /*!< Stores weight for rendering text. */ EVENT_LIST_COL_NUMBER } event_list_col_t; /** Column Flags */ typedef enum { EVENT_LIST_FLAG_NAME = 1 << EVENT_LIST_COL_NAME, /*!< Satellite name. */ EVENT_LIST_FLAG_CATNUM = 1 << EVENT_LIST_COL_CATNUM, EVENT_LIST_FLAG_AZ = 1 << EVENT_LIST_COL_AZ, EVENT_LIST_FLAG_EL = 1 << EVENT_LIST_COL_EL, EVENT_LIST_FLAG_EVT = 1 << EVENT_LIST_COL_EVT, /*!< Next event (AOS or LOS) */ EVENT_LIST_FLAG_TIME = 1 << EVENT_LIST_COL_TIME, /*!< Time countdown */ } event_list_flag_t; GType gtk_event_list_get_type(void); GtkWidget *gtk_event_list_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 columns); void gtk_event_list_update(GtkWidget * widget); void gtk_event_list_reconf(GtkWidget * widget, GKeyFile * cfgdat); void gtk_event_list_reload_sats(GtkWidget * satlist, GHashTable * sats); void gtk_event_list_select_sat(GtkWidget * widget, gint catnum); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* __cplusplus */ /* *INDENT-ON* */ #endif /* __GTK_SAT_MODULE_H__ */ gpredict/src/gtk-freq-knob.c000066400000000000000000000303401427377236300162770ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC Copyright (C) 2017 Patrick Dohmen, DL4PD This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "gtk-freq-knob.h" G_LOCK_DEFINE_STATIC(updatelock); static GtkHBoxClass *parent_class = NULL; #define FMTSTR "%c" /* x-index in table for buttons and labels */ static const guint idx[] = { 0, 2, 3, 4, 6, 7, 8, 10, 11, 12 }; static guint freq_changed_signal = 0; static void gtk_freq_knob_destroy(GtkWidget * widget) { (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_freq_knob_class_init(GtkFreqKnobClass * class, gpointer class_init) { GtkWidgetClass *widget_class; (void)class_init; widget_class = (GtkWidgetClass *) class; parent_class = g_type_class_peek_parent(class); widget_class->destroy = gtk_freq_knob_destroy; /* create freq changed signal */ freq_changed_signal = g_signal_new("freq-changed", G_TYPE_FROM_CLASS(class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void gtk_freq_knob_init(GtkFreqKnob * knob, gpointer g_class) { (void)g_class; knob->min = 0.0; knob->max = 9999999999.0; } static gboolean gtk_freq_knob_update(GtkFreqKnob * knob) { gchar b[11]; gchar *buff; guint i; G_LOCK(updatelock); g_ascii_formatd(b, 11, "%10.0f", fabs(knob->value)); /* set label markups */ for (i = 0; i < 10; i++) { buff = g_strdup_printf(FMTSTR, b[i]); gtk_label_set_markup(GTK_LABEL(knob->digits[i]), buff); g_free(buff); } G_UNLOCK(updatelock); return FALSE; } static void button_clicked_cb(GtkWidget * button, gpointer data) { GtkFreqKnob *knob = GTK_FREQ_KNOB(data); gdouble delta = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "delta")); if ((delta > 0.0) && ((knob->value + delta) <= knob->max)) { knob->value += delta; } else if ((delta < 0.0) && ((knob->value + delta) >= knob->min)) { knob->value += delta; } g_idle_add((GSourceFunc) gtk_freq_knob_update, knob); /* emit "freq_changed" signal */ g_signal_emit(G_OBJECT(data), freq_changed_signal, 0); } /* * Manage button press events * * @param digit Pointer to the event box that received the event * @param event Pointer to the GdkEventButton that contains details for te event * @param data Pointer to the GtkFreqKnob widget (we need it to update the value) * * Always returns TRUE to prevent further propagation of the event * * This function is called when a mouse button is pressed on a digit. This is used * to increment or decrement the value: * - Left button: up * - Right button: down * - Middle button: set digit to 0 (TBC) * * Wheel up/down are managed in a separate callback since these are treated as * scroll events rather than button press events (they used to be button press * events though) * * The digit labels are stored in an array. To get the amount of change corresponding * to the clicked label we can convert the index (attached to the evtbox): * delta = 10^(9-index) * * Whether the delta is positive or negative depends on which mouse button triggered * the event. */ static gboolean on_button_press(GtkWidget * evtbox, GdkEventButton * event, gpointer data) { GtkFreqKnob *knob = GTK_FREQ_KNOB(data); guint idx = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(evtbox), "index")); gdouble delta = pow(10, 9 - idx); gdouble value; if (delta < 1.0) // no change return TRUE; if (event->type != GDK_BUTTON_PRESS) return TRUE; switch (event->button) { /* left button */ case 1: value = gtk_freq_knob_get_value(knob) + delta; gtk_freq_knob_set_value(knob, value); g_signal_emit(G_OBJECT(data), freq_changed_signal, 0); break; /* middle button */ case 2: break; /* right button */ case 3: value = gtk_freq_knob_get_value(knob) - delta; gtk_freq_knob_set_value(knob, value); g_signal_emit(G_OBJECT(data), freq_changed_signal, 0); break; default: break; } return TRUE; } /* * Manage scroll wheel events * * @param digit Pointer to the event box that received the event * @param event Pointer to the GdkEventScroll that contains details for te event * @param data Pointer to the GtkFreqKnob widget (we need it to update the value) * * Always returns TRUE to prevent further propagation of the event * * This function is called when the mouse wheel is moved up or down. This is used * to increment or decrement the value. * * Button presses are managed in a separate callback since these are treated as * different events. * * The digit labels are stored in an array. To get the amount of change corresponding * to the clicked label we can convert the index (attached to the evtbox): * delta = 10^(9-index) * * Whether the delta is positive or negative depends on the scroll direction. */ static gboolean on_button_scroll(GtkWidget * evtbox, GdkEventScroll * event, gpointer data) { GtkFreqKnob *knob = GTK_FREQ_KNOB(data); guint idx = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(evtbox), "index")); gdouble delta = pow(10, 9 - idx); gdouble value; if (delta < 0.01) { /* no change, user clicked on sign or decimal separator */ return TRUE; } if (event->type != GDK_SCROLL) { /* wrong event (not possible?) */ return TRUE; } switch (event->direction) { /* decrease value by delta */ case GDK_SCROLL_DOWN: case GDK_SCROLL_LEFT: value = gtk_freq_knob_get_value(knob) - delta; gtk_freq_knob_set_value(knob, value); g_signal_emit(G_OBJECT(data), freq_changed_signal, 0); break; /* increase value by delta */ case GDK_SCROLL_UP: case GDK_SCROLL_RIGHT: value = gtk_freq_knob_get_value(knob) + delta; gtk_freq_knob_set_value(knob, value); g_signal_emit(G_OBJECT(data), freq_changed_signal, 0); break; default: break; } return TRUE; } void gtk_freq_knob_set_value(GtkFreqKnob * knob, gdouble val) { if ((val >= knob->min) && (val <= knob->max)) { knob->value = val; g_idle_add((GSourceFunc) gtk_freq_knob_update, knob); } } gdouble gtk_freq_knob_get_value(GtkFreqKnob * knob) { return knob->value; } GType gtk_freq_knob_get_type() { static GType gtk_freq_knob_type = 0; if (!gtk_freq_knob_type) { static const GTypeInfo gtk_freq_knob_info = { sizeof(GtkFreqKnobClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_freq_knob_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkFreqKnob), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_freq_knob_init, NULL, }; gtk_freq_knob_type = g_type_register_static(GTK_TYPE_BOX, "GtkFreqKnob", >k_freq_knob_info, 0); } return gtk_freq_knob_type; } GtkWidget *gtk_freq_knob_new(gdouble val, gboolean buttons) { GtkFreqKnob *knob; GtkWidget *widget; GtkWidget *table; GtkWidget *label; guint i; gint delta; widget = g_object_new(GTK_TYPE_FREQ_KNOB, NULL); knob = GTK_FREQ_KNOB(widget); knob->value = val; table = gtk_grid_new(); /* create buttons and labels */ for (i = 0; i < 10; i++) { /* labels */ knob->digits[i] = gtk_label_new(NULL); if (!buttons) { /* passive display widget without event boxes or buttons */ gtk_grid_attach(GTK_GRID(table), knob->digits[i], idx[i], 1, 1, 1); } else { /* active widget that allows changing the value */ gtk_widget_set_tooltip_text(knob->digits[i], _ ("Use mouse buttons and wheel to change value")); /* Event boxes for catching mouse evetns */ knob->evtbox[i] = gtk_event_box_new(); g_object_set_data(G_OBJECT(knob->evtbox[i]), "index", GUINT_TO_POINTER(i)); gtk_container_add(GTK_CONTAINER(knob->evtbox[i]), knob->digits[i]); gtk_grid_attach(GTK_GRID(table), knob->evtbox[i], idx[i], 1, 1, 1); g_signal_connect(knob->evtbox[i], "button_press_event", (GCallback) on_button_press, widget); g_signal_connect(knob->evtbox[i], "scroll_event", (GCallback) on_button_scroll, widget); /* UP buttons */ knob->buttons[i] = gtk_button_new(); label = gtk_label_new("\342\226\264"); gtk_container_add(GTK_CONTAINER(knob->buttons[i]), label); gtk_button_set_relief(GTK_BUTTON(knob->buttons[i]), GTK_RELIEF_NONE); delta = (gint) pow(10, 9 - i); g_object_set_data(G_OBJECT(knob->buttons[i]), "delta", GINT_TO_POINTER(delta)); gtk_grid_attach(GTK_GRID(table), knob->buttons[i], idx[i], 0, 1, 1); g_signal_connect(knob->buttons[i], "clicked", G_CALLBACK(button_clicked_cb), widget); /* DOWN buttons */ knob->buttons[i + 10] = gtk_button_new(); label = gtk_label_new("\342\226\276"); gtk_container_add(GTK_CONTAINER(knob->buttons[i + 10]), label); gtk_button_set_relief(GTK_BUTTON(knob->buttons[i + 10]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[i + 10]), "delta", GINT_TO_POINTER(-delta)); gtk_grid_attach(GTK_GRID(table), knob->buttons[i + 10], idx[i], 2, 1, 1); g_signal_connect(knob->buttons[i + 10], "clicked", G_CALLBACK(button_clicked_cb), widget); } } /* Add misc labels */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "."); gtk_grid_attach(GTK_GRID(table), label, 5, 1, 1, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "."); gtk_grid_attach(GTK_GRID(table), label, 9, 1, 1, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), " Hz"); gtk_grid_attach(GTK_GRID(table), label, 13, 1, 1, 1); g_idle_add((GSourceFunc) gtk_freq_knob_update, knob); gtk_container_add(GTK_CONTAINER(widget), table); gtk_widget_show_all(widget); return widget; } gpredict/src/gtk-freq-knob.h000066400000000000000000000031511427377236300163040ustar00rootroot00000000000000#ifndef __GTK_FREQ_KNOB_H__ #define __GTK_FREQ_KNOB_H__ 1 #include #include #include /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* *INDENT-ON* */ #define GTK_TYPE_FREQ_KNOB (gtk_freq_knob_get_type ()) #define GTK_FREQ_KNOB(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_freq_knob_get_type (),\ GtkFreqKnob) #define GTK_FREQ_KNOB_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_freq_knob_get_type (),\ GtkFreqKnobClass) #define IS_GTK_FREQ_KNOB(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_freq_knob_get_type ()) typedef struct _gtk_freq_knob GtkFreqKnob; typedef struct _GtkFreqKnobClass GtkFreqKnobClass; struct _gtk_freq_knob { GtkBox box; GtkWidget *digits[10]; /*!< Labels for the digits */ GtkWidget *evtbox[10]; /*!< Event boxes to catch mouse events over the digits */ GtkWidget *buttons[20]; /*!< Buttons; 0..9 up; 10..19 down */ gdouble min; gdouble max; gdouble value; }; struct _GtkFreqKnobClass { GtkVBoxClass parent_class; }; GType gtk_freq_knob_get_type(void); GtkWidget *gtk_freq_knob_new(gdouble val, gboolean buttons); void gtk_freq_knob_set_value(GtkFreqKnob * knob, gdouble val); gdouble gtk_freq_knob_get_value(GtkFreqKnob * knob); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* __cplusplus */ /* *INDENT-ON* */ #endif /* __GTK_FREQ_KNOB_H__ */ gpredict/src/gtk-polar-plot.c000066400000000000000000001122541427377236300165110ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * Polar Plot Widget. * @ingroup widgets * * GtkPolarPlot is a graphical widget that can display a satellite pass * in an Az/El polar plot. The widget was originally created to display * a single satellite pass in the detailed pass prediction dialog. * * Later, a few utility functions were added in order to make the GtkPolarPlot * more dynamic and useful in other contexts too. In addition to a satellite * pass, GtkPolarPlot can show a target object (small square), a target * position marker (thread), and a current position marker (small circle). * These three objects are very useful in the rotator control window. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-polar-plot.h" #include "gtk-sat-data.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define POLV_DEFAULT_SIZE 200 #define POLV_DEFAULT_MARGIN 20 /* extra size for line outside 0 deg circle (inside margin) */ #define POLV_LINE_EXTRA 5 #define MARKER_SIZE_HALF 2 static GtkVBoxClass *parent_class = NULL; static void gtk_polar_plot_init(GtkPolarPlot * polview, gpointer g_class) { (void)g_class; polview->qth = NULL; polview->pass = NULL; polview->size = 0; polview->r = 0; polview->cx = 0; polview->cy = 0; polview->swap = 0; polview->qthinfo = FALSE; polview->cursinfo = FALSE; polview->extratick = FALSE; polview->target = NULL; } static void gtk_polar_plot_destroy(GtkWidget * widget) { if (GTK_POLAR_PLOT(widget)->pass != NULL) { free_pass(GTK_POLAR_PLOT(widget)->pass); GTK_POLAR_PLOT(widget)->pass = NULL; } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_polar_plot_class_init(GtkPolarPlotClass * class, gpointer class_data) { GtkWidgetClass *widget_class = (GtkWidgetClass *) class; (void)class_data; parent_class = g_type_class_peek_parent(class); widget_class->destroy = gtk_polar_plot_destroy; } GType gtk_polar_plot_get_type() { static GType gtk_polar_plot_type = 0; if (!gtk_polar_plot_type) { static const GTypeInfo gtk_polar_plot_info = { sizeof(GtkPolarPlotClass), NULL, /* base init */ NULL, /* base finalise */ (GClassInitFunc) gtk_polar_plot_class_init, NULL, /* class finalise */ NULL, /* class data */ sizeof(GtkPolarPlot), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_polar_plot_init, NULL }; gtk_polar_plot_type = g_type_register_static(GTK_TYPE_BOX, "GtkPolarPlot", >k_polar_plot_info, 0); } return gtk_polar_plot_type; } static GooCanvasItemModel *create_time_tick(GtkPolarPlot * pv, gdouble time, gfloat x, gfloat y) { GooCanvasItemModel *item; GooCanvasAnchorType anchor; GooCanvasItemModel *root; guint32 col; gchar buff[6]; root = goo_canvas_get_root_item_model(GOO_CANVAS(pv->canvas)); col = sat_cfg_get_int(SAT_CFG_INT_POLAR_TRACK_COL); daynum_to_str(buff, 6, "%H:%M", time); if (x > pv->cx) { anchor = GOO_CANVAS_ANCHOR_EAST; x -= 5; } else { anchor = GOO_CANVAS_ANCHOR_WEST; x += 5; } item = goo_canvas_text_model_new(root, buff, (gdouble) x, (gdouble) y, -1, anchor, "font", "Sans 7", "fill-color-rgba", col, NULL); return item; } /** Convert Az/El to canvas based XY coordinates. */ static void azel_to_xy(GtkPolarPlot * p, gdouble az, gdouble el, gfloat * x, gfloat * y) { gdouble rel; if (el < 0.0) { /* FIXME: generate bug report */ *x = 0.0; *y = 0.0; return; } /* convert angles to radians */ az = de2ra * az; el = de2ra * el; /* radius @ el */ rel = p->r - (2 * p->r * el) / M_PI; switch (p->swap) { case POLAR_PLOT_NWSE: az = 2 * M_PI - az; break; case POLAR_PLOT_SENW: az = M_PI - az; break; case POLAR_PLOT_SWNE: az = M_PI + az; break; default: break; } *x = (gfloat) (p->cx + rel * sin(az)); *y = (gfloat) (p->cy - rel * cos(az)); } /** Convert canvas based coordinates to Az/El. */ static void xy_to_azel(GtkPolarPlot * p, gfloat x, gfloat y, gfloat * az, gfloat * el) { gfloat rel; /* distance from center to cursor */ rel = p->r - sqrt((x - p->cx) * (x - p->cx) + (y - p->cy) * (y - p->cy)); /* scale according to p->r = 90 deg */ *el = 90.0 * rel / p->r; if (x >= p->cx) { /* 1. and 2. quadrant */ *az = atan2(x - p->cx, p->cy - y) / de2ra; } else { /* 3 and 4. quadrant */ *az = 360 + atan2(x - p->cx, p->cy - y) / de2ra; } /* correct for orientation */ switch (p->swap) { case POLAR_PLOT_NWSE: *az = 360.0 - *az; break; case POLAR_PLOT_SENW: if (*az <= 180) *az = 180.0 - *az; else *az = 540.0 - *az; break; case POLAR_PLOT_SWNE: if (*az >= 180.0) *az = *az - 180.0; else *az = 180.0 + *az; break; default: break; } } static void create_track(GtkPolarPlot * pv) { guint i; GooCanvasItemModel *root; pass_detail_t *detail; guint num; GooCanvasPoints *points; gfloat x, y; guint32 col; guint tres, ttidx; root = goo_canvas_get_root_item_model(GOO_CANVAS(pv->canvas)); /* create points */ num = g_slist_length(pv->pass->details); /* time resolution for time ticks; we need 3 additional points to AOS and LOS ticks. */ tres = (num - 2) / (TRACK_TICK_NUM - 1); points = goo_canvas_points_new(num); /* first point should be (aos_az,0.0) */ azel_to_xy(pv, pv->pass->aos_az, 0.0, &x, &y); points->coords[0] = (double)x; points->coords[1] = (double)y; pv->trtick[0] = create_time_tick(pv, pv->pass->aos, x, y); ttidx = 1; for (i = 1; i < num - 1; i++) { detail = PASS_DETAIL(g_slist_nth_data(pv->pass->details, i)); if (detail->el >= 0.0) azel_to_xy(pv, detail->az, detail->el, &x, &y); points->coords[2 * i] = (double)x; points->coords[2 * i + 1] = (double)y; if (!(i % tres)) { if (ttidx < TRACK_TICK_NUM) /* create a time tick */ pv->trtick[ttidx] = create_time_tick(pv, detail->time, x, y); ttidx++; } } /* last point should be (los_az, 0.0) */ azel_to_xy(pv, pv->pass->los_az, 0.0, &x, &y); points->coords[2 * (num - 1)] = (double)x; points->coords[2 * (num - 1) + 1] = (double)y; /* create poly-line */ col = sat_cfg_get_int(SAT_CFG_INT_POLAR_TRACK_COL); pv->track = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points, "line-width", 1.0, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); goo_canvas_points_unref(points); } /** * Transform pole coordinates. * * This function transforms the pols coordinates (x,y) taking into account * the orientation of the polar plot. */ static void correct_pole_coor(GtkPolarPlot * polv, polar_plot_pole_t pole, gfloat * x, gfloat * y, GooCanvasAnchorType * anch) { switch (pole) { case POLAR_PLOT_POLE_N: if ((polv->swap == POLAR_PLOT_SENW) || (polv->swap == POLAR_PLOT_SWNE)) { /* North and South are swapped */ *y = *y + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_NORTH; } else { *y = *y - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_SOUTH; } break; case POLAR_PLOT_POLE_E: if ((polv->swap == POLAR_PLOT_NWSE) || (polv->swap == POLAR_PLOT_SWNE)) { /* East and West are swapped */ *x = *x - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_EAST; } else { *x = *x + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_WEST; } break; case POLAR_PLOT_POLE_S: if ((polv->swap == POLAR_PLOT_SENW) || (polv->swap == POLAR_PLOT_SWNE)) { /* North and South are swapped */ *y = *y - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_SOUTH; } else { *y = *y + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_NORTH; } break; case POLAR_PLOT_POLE_W: if ((polv->swap == POLAR_PLOT_NWSE) || (polv->swap == POLAR_PLOT_SWNE)) { /* East and West are swapped */ *x = *x + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_WEST; } else { *x = *x - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_EAST; } break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Incorrect polar plot orientation."), __FILE__, __LINE__); break; } } static GooCanvasItemModel *create_canvas_model(GtkPolarPlot * polv) { GooCanvasItemModel *root; gfloat x, y; guint32 col; GooCanvasAnchorType anch = GOO_CANVAS_ANCHOR_CENTER; root = goo_canvas_group_model_new(NULL, NULL); polv->bgd = goo_canvas_rect_model_new(root, 0.0, 0.0, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE, "fill-color-rgba", 0xFFFFFFFF, "stroke-color-rgba", 0xFFFFFFFF, NULL); /* graph dimensions */ polv->size = POLV_DEFAULT_SIZE; polv->r = (polv->size / 2) - POLV_DEFAULT_MARGIN; polv->cx = POLV_DEFAULT_SIZE / 2; polv->cy = POLV_DEFAULT_SIZE / 2; col = sat_cfg_get_int(SAT_CFG_INT_POLAR_AXIS_COL); /* Add elevation circles at 0, 30 and 60 deg */ polv->C00 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, polv->r, polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); polv->C30 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, 0.6667 * polv->r, 0.6667 * polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); polv->C60 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, 0.333 * polv->r, 0.3333 * polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); /* add horixontal and vertical guidance lines */ polv->hl = goo_canvas_polyline_model_new_line(root, polv->cx - polv->r - POLV_LINE_EXTRA, polv->cy, polv->cx + polv->r + POLV_LINE_EXTRA, polv->cy, "stroke-color-rgba", col, "line-width", 1.0, NULL); polv->vl = goo_canvas_polyline_model_new_line(root, polv->cx, polv->cy - polv->r - POLV_LINE_EXTRA, polv->cx, polv->cy + polv->r + POLV_LINE_EXTRA, "stroke-color-rgba", col, "line-width", 1.0, NULL); /* N, S, E and W labels. */ col = sat_cfg_get_int(SAT_CFG_INT_POLAR_TICK_COL); azel_to_xy(polv, 0.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_N, &x, &y, &anch); polv->N = goo_canvas_text_model_new(root, _("N"), x, y, -1, anch, "font", "Sans 8", "fill-color-rgba", col, NULL); azel_to_xy(polv, 180.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_S, &x, &y, &anch); polv->S = goo_canvas_text_model_new(root, _("S"), x, y, -1, anch, "font", "Sans 8", "fill-color-rgba", col, NULL); azel_to_xy(polv, 90.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_E, &x, &y, &anch); polv->E = goo_canvas_text_model_new(root, _("E"), x, y, -1, anch, "font", "Sans 8", "fill-color-rgba", col, NULL); azel_to_xy(polv, 270.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_W, &x, &y, &anch); polv->W = goo_canvas_text_model_new(root, _("W"), x, y, -1, anch, "font", "Sans 8", "fill-color-rgba", col, NULL); /* cursor text */ col = sat_cfg_get_int(SAT_CFG_INT_POLAR_INFO_COL); polv->curs = goo_canvas_text_model_new(root, "", polv->cx - polv->r - 2 * POLV_LINE_EXTRA, polv->cy + polv->r + POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_W, "font", "Sans 8", "fill-color-rgba", col, NULL); /* location info */ polv->locnam = goo_canvas_text_model_new(root, polv->qth->name, polv->cx - polv->r - 2 * POLV_LINE_EXTRA, polv->cy - polv->r - POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_SW, "font", "Sans 8", "fill-color-rgba", col, NULL); return root; } /** Update sky track drawing after size allocate. */ static void update_track(GtkPolarPlot * pv) { guint num, i; GooCanvasPoints *points; gfloat x, y; pass_detail_t *detail; guint tres, ttidx; /* create points */ num = g_slist_length(pv->pass->details); points = goo_canvas_points_new(num); /* first point should be (aos_az,0.0) */ azel_to_xy(pv, pv->pass->aos_az, 0.0, &x, &y); points->coords[0] = (double)x; points->coords[1] = (double)y; /* time tick 0 */ g_object_set(pv->trtick[0], "x", (gdouble) x, "y", (gdouble) y, NULL); /* time resolution for time ticks; we need 3 additional points to AOS and LOS ticks. */ tres = (num - 2) / (TRACK_TICK_NUM - 1); ttidx = 1; for (i = 1; i < num - 1; i++) { detail = PASS_DETAIL(g_slist_nth_data(pv->pass->details, i)); if (detail->el >= 0.0) azel_to_xy(pv, detail->az, detail->el, &x, &y); points->coords[2 * i] = (double)x; points->coords[2 * i + 1] = (double)y; if (!(i % tres)) { /* make room between text and track */ if (x > pv->cx) x -= 5; else x += 5; /* update time tick */ if (ttidx < TRACK_TICK_NUM) { g_object_set(pv->trtick[ttidx], "x", (gdouble) x, "y", (gdouble) y, NULL); } ttidx++; } } /* last point should be (los_az, 0.0) */ azel_to_xy(pv, pv->pass->los_az, 0.0, &x, &y); points->coords[2 * (num - 1)] = (double)x; points->coords[2 * (num - 1) + 1] = (double)y; g_object_set(pv->track, "points", points, NULL); goo_canvas_points_unref(points); } /** * Manage new size allocation. * * This function is called when the canvas receives a new size allocation, * e.g. when the container is re-sized. The function re-calculates the graph * dimensions based on the new canvas size. */ static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data) { GtkPolarPlot *polv; GooCanvasPoints *prec; gfloat x, y; GooCanvasAnchorType anch = GOO_CANVAS_ANCHOR_CENTER; if (gtk_widget_get_realized(widget)) { /* get graph dimensions */ polv = GTK_POLAR_PLOT(data); polv->size = MIN(allocation->width, allocation->height); polv->r = (polv->size / 2) - POLV_DEFAULT_MARGIN; polv->cx = allocation->width / 2; polv->cy = allocation->height / 2; goo_canvas_set_bounds(GOO_CANVAS(GTK_POLAR_PLOT(polv)->canvas), 0, 0, allocation->width, allocation->height); /* background item */ g_object_set(polv->bgd, "width", (gdouble) allocation->width, "height", (gdouble) allocation->height, NULL); /* update coordinate system */ g_object_set(polv->C00, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) polv->r, "radius-y", (gdouble) polv->r, NULL); g_object_set(polv->C30, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) 0.6667 * polv->r, "radius-y", (gdouble) 0.6667 * polv->r, NULL); g_object_set(polv->C60, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) 0.333 * polv->r, "radius-y", (gdouble) 0.333 * polv->r, NULL); /* horizontal line */ prec = goo_canvas_points_new(2); prec->coords[0] = polv->cx - polv->r - POLV_LINE_EXTRA; prec->coords[1] = polv->cy; prec->coords[2] = polv->cx + polv->r + POLV_LINE_EXTRA; prec->coords[3] = polv->cy; g_object_set(polv->hl, "points", prec, NULL); /* vertical line */ prec->coords[0] = polv->cx; prec->coords[1] = polv->cy - polv->r - POLV_LINE_EXTRA; prec->coords[2] = polv->cx; prec->coords[3] = polv->cy + polv->r + POLV_LINE_EXTRA; g_object_set(polv->vl, "points", prec, NULL); /* free memory */ goo_canvas_points_unref(prec); /* N/E/S/W */ azel_to_xy(polv, 0.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_N, &x, &y, &anch); g_object_set(polv->N, "x", x, "y", y, NULL); azel_to_xy(polv, 90.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_E, &x, &y, &anch); g_object_set(polv->E, "x", x, "y", y, NULL); azel_to_xy(polv, 180.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_S, &x, &y, &anch); g_object_set(polv->S, "x", x, "y", y, NULL); azel_to_xy(polv, 270.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_PLOT_POLE_W, &x, &y, &anch); g_object_set(polv->W, "x", x, "y", y, NULL); /* cursor track */ g_object_set(polv->curs, "x", (gfloat) (polv->cx - polv->r - 2 * POLV_LINE_EXTRA), "y", (gfloat) (polv->cy + polv->r + POLV_LINE_EXTRA), NULL); /* location name */ g_object_set(polv->locnam, "x", (gfloat) (polv->cx - polv->r - 2 * POLV_LINE_EXTRA), "y", (gfloat) (polv->cy - polv->r - POLV_LINE_EXTRA), NULL); /* sky track */ if (polv->pass != NULL) update_track(polv); } } /** * Manage canvas realise signals. * * This function is used to re-initialise the graph dimensions when * the graph is realized, i.e. displayed for the first time. This is * necessary in order to compensate for missing "re-allocate" signals for * graphs that have not yet been realised, e.g. when opening several module */ static void on_canvas_realized(GtkWidget * canvas, gpointer data) { GtkAllocation aloc; gtk_widget_get_allocation(canvas, &aloc); size_allocate_cb(canvas, &aloc, data); } /** Manage mouse motion events. */ static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data) { GtkPolarPlot *polv = GTK_POLAR_PLOT(data); gfloat az, el; gchar *text; (void)item; (void)target; if (polv->cursinfo) { xy_to_azel(polv, event->x, event->y, &az, &el); if (el > 0.0) { /* cursor track */ text = g_strdup_printf("AZ %.0f\302\260\nEL %.0f\302\260", az, el); g_object_set(polv->curs, "text", text, NULL); g_free(text); } else { g_object_set(polv->curs, "text", "", NULL); } } return TRUE; } /** * Finish canvas item setup. * * This function is called when a canvas item is created. Its purpose is to connect * the corresponding signals to the created items. */ static void on_item_created(GooCanvas * canvas, GooCanvasItem * item, GooCanvasItemModel * model, gpointer data) { (void)canvas; if (!goo_canvas_item_model_get_parent(model)) { /* root item / canvas */ g_signal_connect(item, "motion_notify_event", (GCallback) on_motion_notify, data); } } /** * Create a new GtkPolarPlot widget. * * @param qth Pointer to the QTH. * @param pass Pointer to the satellite pass to display. If NULL no * pass will be displayed. * */ GtkWidget *gtk_polar_plot_new(qth_t * qth, pass_t * pass) { GtkPolarPlot *polv; GooCanvasItemModel *root; polv = GTK_POLAR_PLOT(g_object_new(GTK_TYPE_POLAR_PLOT, NULL)); polv->qth = qth; if (pass != NULL) polv->pass = copy_pass(pass); /* get settings */ polv->swap = sat_cfg_get_int(SAT_CFG_INT_POLAR_ORIENTATION); polv->qthinfo = sat_cfg_get_bool(SAT_CFG_BOOL_POL_SHOW_QTH_INFO); polv->extratick = sat_cfg_get_bool(SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS); polv->cursinfo = TRUE; /* create the canvas */ polv->canvas = goo_canvas_new(); gtk_widget_set_size_request(polv->canvas, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE); goo_canvas_set_bounds(GOO_CANVAS(polv->canvas), 0, 0, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE); /* connect size-request signal */ g_signal_connect(polv->canvas, "size-allocate", G_CALLBACK(size_allocate_cb), polv); g_signal_connect(polv->canvas, "item_created", (GCallback) on_item_created, polv); g_signal_connect_after(polv->canvas, "realize", (GCallback) on_canvas_realized, polv); gtk_widget_show(polv->canvas); /* Create the canvas model */ root = create_canvas_model(polv); goo_canvas_set_root_item_model(GOO_CANVAS(polv->canvas), root); g_object_unref(root); if (polv->pass != NULL) create_track(polv); gtk_box_pack_start(GTK_BOX(polv), polv->canvas, TRUE, TRUE, 0); return GTK_WIDGET(polv); } /** * Set new pass * * @param plot Pointer to the GtkPolarPlot widget. * @param pass Pointer to the new pass data. Use NULL to disable * display of pass. */ void gtk_polar_plot_set_pass(GtkPolarPlot * plot, pass_t * pass) { GooCanvasItemModel *root; gint idx, i; /* remove sky track, time ticks and the pass itself */ if (plot->pass != NULL) { /* remove sat from canvas */ root = goo_canvas_get_root_item_model(GOO_CANVAS(plot->canvas)); idx = goo_canvas_item_model_find_child(root, plot->track); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); for (i = 0; i < TRACK_TICK_NUM; i++) { idx = goo_canvas_item_model_find_child(root, plot->trtick[i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); } free_pass(plot->pass); plot->pass = NULL; } if (pass != NULL) { plot->pass = copy_pass(pass); create_track(plot); } } /** * Set target object position * * @param plot Pointer to the GtkPolarPlot widget * @param az Azimuth of the target object * @param el Elevation of the target object * * If either az or el are negative the target object will be hidden */ void gtk_polar_plot_set_target_pos(GtkPolarPlot * plot, gdouble az, gdouble el) { GooCanvasItemModel *root; gint idx; gfloat x, y; guint32 col; if (plot == NULL) return; root = goo_canvas_get_root_item_model(GOO_CANVAS(plot->canvas)); if ((az < 0.0) || (el < 0.0)) { if (plot->target != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->target); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->target = NULL; } /* else the target object is not visible; nothing to do */ } else { /* we need to either update or create the object */ azel_to_xy(plot, az, el, &x, &y); if (plot->target != NULL) { /* the target object already exists; move it */ g_object_set(plot->target, "x", x - MARKER_SIZE_HALF, "y", y - MARKER_SIZE_HALF, NULL); } else { /* the target object does not exist; create it */ col = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); plot->target = goo_canvas_rect_model_new(root, x - MARKER_SIZE_HALF, y - MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); } } } /** * Set controller object position * * @param plot Pointer to the GtkPolarPlot widget * @param az Azimuth of the controller object * @param el Elevation of the controller object * * If either az or el are negative the controller object will be hidden */ void gtk_polar_plot_set_ctrl_pos(GtkPolarPlot * plot, gdouble az, gdouble el) { GooCanvasItemModel *root; gint idx; gfloat x, y; guint32 col; if (plot == NULL) return; root = goo_canvas_get_root_item_model(GOO_CANVAS(plot->canvas)); if ((az < 0.0) || (el < 0.0)) { if (plot->ctrl != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->ctrl); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->ctrl = NULL; } /* else the target object is not visible; nothing to do */ } else { /* we need to either update or create the object */ azel_to_xy(plot, az, el, &x, &y); if (plot->ctrl != NULL) { /* the target object already exists; move it */ g_object_set(plot->ctrl, "center_x", x, "center_y", y, NULL); } else { /* the target object does not exist; create it */ col = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); plot->ctrl = goo_canvas_ellipse_model_new(root, x, y, 7, 7, "fill-color-rgba", 0xFF00000F, "stroke-color-rgba", col, "line-width", 0.8, NULL); } } } /** * Set rotator object position * * @param plot Pointer to the GtkPolarPlot widget * @param az Azimuth of the rotator object * @param el Elevation of the rotator object * * If either az or el are negative the controller object will be hidden */ void gtk_polar_plot_set_rotor_pos(GtkPolarPlot * plot, gdouble az, gdouble el) { GooCanvasItemModel *root; GooCanvasPoints *prec; gint idx; gfloat x, y; guint32 col; if (plot == NULL) return; root = goo_canvas_get_root_item_model(GOO_CANVAS(plot->canvas)); if ((az < 0.0) || (el < 0.0)) { if (plot->rot1 != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->rot1); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->rot1 = NULL; } if (plot->rot2 != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->rot2); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->rot2 = NULL; } if (plot->rot3 != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->rot3); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->rot3 = NULL; } if (plot->rot4 != NULL) { /* the target object is visible; delete it */ idx = goo_canvas_item_model_find_child(root, plot->rot4); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); plot->rot4 = NULL; } } else { /* we need to either update or create the object */ azel_to_xy(plot, az, el, &x, &y); col = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); if (plot->rot1 != NULL) { /* the target object already exists; move it */ prec = goo_canvas_points_new(2); prec->coords[0] = x; prec->coords[1] = y - 4; prec->coords[2] = x; prec->coords[3] = y - 14; g_object_set(plot->rot1, "points", prec, NULL); goo_canvas_points_unref(prec); } else { /* the target object does not exist; create it */ plot->rot1 = goo_canvas_polyline_model_new_line(root, x, y - 4, x, y - 14, "fill-color-rgba", col, "stroke-color-rgba", col, "line-width", 1.0, NULL); } if (plot->rot2 != NULL) { /* the target object already exists; move it */ prec = goo_canvas_points_new(2); prec->coords[0] = x + 4; prec->coords[1] = y; prec->coords[2] = x + 14; prec->coords[3] = y; g_object_set(plot->rot2, "points", prec, NULL); goo_canvas_points_unref(prec); } else { /* the target object does not exist; create it */ plot->rot2 = goo_canvas_polyline_model_new_line(root, x + 4, y, x + 14, y, "fill-color-rgba", col, "stroke-color-rgba", col, "line-width", 1.0, NULL); } if (plot->rot3 != NULL) { /* the target object already exists; move it */ prec = goo_canvas_points_new(2); prec->coords[0] = x; prec->coords[1] = y + 4; prec->coords[2] = x; prec->coords[3] = y + 14; g_object_set(plot->rot3, "points", prec, NULL); goo_canvas_points_unref(prec); } else { /* the target object does not exist; create it */ plot->rot3 = goo_canvas_polyline_model_new_line(root, x, y + 4, x, y + 14, "fill-color-rgba", col, "stroke-color-rgba", col, "line-width", 1.0, NULL); } if (plot->rot4 != NULL) { /* the target object already exists; move it */ prec = goo_canvas_points_new(2); prec->coords[0] = x - 4; prec->coords[1] = y; prec->coords[2] = x - 14; prec->coords[3] = y; g_object_set(plot->rot4, "points", prec, NULL); goo_canvas_points_unref(prec); } else { /* the target object does not exist; create it */ plot->rot4 = goo_canvas_polyline_model_new_line(root, x - 4, y, x - 14, y, "fill-color-rgba", col, "stroke-color-rgba", col, "line-width", 1.0, NULL); } } } /** * Show/hide time tick * * @param plot Pointer to the GtkPolarPlot widget * @param show TRUE => show tick. FALSE => don't show * */ void gtk_polar_plot_show_time_ticks(GtkPolarPlot * plot, gboolean show) { (void)plot; (void)show; g_print("NOT IMPLEMENTED %s\n", __func__); } gpredict/src/gtk-polar-plot.h000066400000000000000000000111071427377236300165110ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_POLAR_PLOT_H__ #define __GTK_POLAR_PLOT_H__ 1 #include #include #include #include #include #include "gtk-sat-data.h" #include "predict-tools.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* *INDENT-ON* */ /** \brief Number of time ticks. */ #define TRACK_TICK_NUM 5 #define GTK_POLAR_PLOT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_polar_plot_get_type (), GtkPolarPlot) #define GTK_POLAR_PLOT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_polar_plot_get_type (), GtkPolarPlotClass) #define GTK_IS_POLAR_PLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_polar_plot_get_type ()) #define GTK_TYPE_POLAR_PLOT (gtk_polar_plot_get_type ()) #define IS_GTK_POLAR_PLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_polar_plot_get_type ()) typedef struct _GtkPolarPlot GtkPolarPlot; typedef struct _GtkPolarPlotClass GtkPolarPlotClass; /* graph orientation; start at 12 o'clock and go clockwise */ typedef enum { POLAR_PLOT_NESW = 0, /*!< Normal / usual */ POLAR_PLOT_NWSE = 1, POLAR_PLOT_SENW = 2, POLAR_PLOT_SWNE = 3 } polar_plot_swap_t; /* pole identifier */ typedef enum { POLAR_PLOT_POLE_N = 0, POLAR_PLOT_POLE_E = 1, POLAR_PLOT_POLE_S = 2, POLAR_PLOT_POLE_W = 3 } polar_plot_pole_t; struct _GtkPolarPlot { GtkBox box; GtkWidget *canvas; /*!< The canvas widget */ GooCanvasItemModel *C00, *C30, *C60; /*!< 0, 30 and 60 deg elevation circles */ GooCanvasItemModel *hl, *vl; /*!< horizontal and vertical lines */ GooCanvasItemModel *N, *S, *E, *W; /*!< North, South, East and West labels */ GooCanvasItemModel *locnam; /*!< Location name */ GooCanvasItemModel *curs; /*!< cursor tracking text */ pass_t *pass; GooCanvasItemModel *bgd; /*!< Background */ GooCanvasItemModel *track; /*!< Sky track. */ GooCanvasItemModel *target; /*!< Target object marker */ GooCanvasItemModel *ctrl; /*!< Position marker for the controller */ GooCanvasItemModel *rot1, *rot2, *rot3, *rot4; /*!< Position marker for the rotor */ GooCanvasItemModel *trtick[TRACK_TICK_NUM]; /*!< Time ticks along the sky track */ qth_t *qth; /*!< Pointer to current location. */ guint cx; /*!< center X */ guint cy; /*!< center Y */ guint r; /*!< radius */ guint size; /*!< Size of the box = min(h,w) */ polar_plot_swap_t swap; gboolean qthinfo; /*!< Show the QTH info. */ gboolean cursinfo; /*!< Track the mouse cursor. */ gboolean extratick; /*!< Show extra ticks */ }; struct _GtkPolarPlotClass { GtkBoxClass parent_class; }; GType gtk_polar_plot_get_type(void); GtkWidget *gtk_polar_plot_new(qth_t * qth, pass_t * pass); void gtk_polar_plot_set_pass(GtkPolarPlot * plot, pass_t * pass); void gtk_polar_plot_set_target_pos(GtkPolarPlot * plot, gdouble az, gdouble el); void gtk_polar_plot_set_ctrl_pos(GtkPolarPlot * plot, gdouble az, gdouble el); void gtk_polar_plot_set_rotor_pos(GtkPolarPlot * plot, gdouble az, gdouble el); void gtk_polar_plot_show_time_ticks(GtkPolarPlot * plot, gboolean show); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* __cplusplus */ /* *INDENT-ON* */ #endif /* __GTK_POLAR_PLOT_H__ */ gpredict/src/gtk-polar-view-popup.c000066400000000000000000000160241427377236300176440ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "config-keys.h" #include "gtk-polar-view.h" #include "gtk-polar-view-popup.h" #include "gtk-sat-popup-common.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" static void track_toggled(GtkCheckMenuItem * item, gpointer data); /* static void target_toggled (GtkCheckMenuItem *item, gpointer data); */ /** * Show satellite popup menu. * * @param sat Pointer to the satellite data. * @param qth The current location. * @param pview The GtkPolarView widget. * @param event The mouse-click related event info * @param toplevel The toplevel window or NULL. */ void gtk_polar_view_popup_exec(sat_t * sat, qth_t * qth, GtkPolarView * pview, GdkEventButton * event, GtkWidget * toplevel) { GtkWidget *menu; GtkWidget *menuitem; sat_obj_t *obj = NULL; gint *catnum; menu = gtk_menu_new(); /* first menu item is the satellite name, centered */ menuitem = gtk_menu_item_new(); gtk_menu_item_set_label(GTK_MENU_ITEM(menuitem), _("Satellite info")); /* attach data to menuitem and connect callback */ g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_sat_info_menu_cb), toplevel); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* add the menu items for current,next, and future passes. */ add_pass_menu_items(menu, sat, qth, &pview->tstamp, GTK_WIDGET(pview)); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* get sat obj since we'll need it for the remaining items */ catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; obj = SAT_OBJ(g_hash_table_lookup(pview->obj, catnum)); g_free(catnum); /* show track */ menuitem = gtk_check_menu_item_new_with_label(_("Sky track")); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "obj", obj); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->showtrack); g_signal_connect(menuitem, "activate", G_CALLBACK(track_toggled), pview); /* disable menu item if satellite is geostationary */ if (sat->otype == ORBIT_TYPE_GEO) gtk_widget_set_sensitive(menuitem, FALSE); /* target */ /* menuitem = gtk_check_menu_item_new_with_label (_("Set as target")); */ /* g_object_set_data (G_OBJECT (menuitem), "sat", sat); */ /* g_object_set_data (G_OBJECT (menuitem), "qth", qth); */ /* g_object_set_data (G_OBJECT (menuitem), "obj", obj); */ /* gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem); */ /* gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), obj->istarget); */ /* g_signal_connect (menuitem, "activate", G_CALLBACK (target_toggled), pview); */ gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); #else (void) event; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } /** * Manage toggling of Ground Track. * * @param item The menu item that was toggled. * @param data Pointer to the GtkPolarView structure. * */ static void track_toggled(GtkCheckMenuItem * item, gpointer data) { GtkPolarView *pv = GTK_POLAR_VIEW(data); sat_obj_t *obj = NULL; sat_t *sat; /* qth_t *qth; Unused */ gint *catnum; /* get satellite object */ obj = SAT_OBJ(g_object_get_data(G_OBJECT(item), "obj")); sat = SAT(g_object_get_data(G_OBJECT(item), "sat")); /*qth = (qth_t *)(g_object_get_data (G_OBJECT (item), "qth")); */ if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } /* toggle flag */ obj->showtrack = !obj->showtrack; gtk_check_menu_item_set_active(item, obj->showtrack); catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; if (obj->showtrack) { /* add sky track */ /* add it to the storage structure */ g_hash_table_insert(pv->showtracks_on, catnum, NULL); /* remove it from the don't show */ g_hash_table_remove(pv->showtracks_off, catnum); gtk_polar_view_create_track(pv, obj, sat); } else { /* add it to the hide */ g_hash_table_insert(pv->showtracks_off, catnum, NULL); /* remove it from the show */ g_hash_table_remove(pv->showtracks_on, catnum); /* delete sky track */ gtk_polar_view_delete_track(pv, obj, sat); } } #if 0 /** * Manage toggling of Set Target. * * @param item The menu item that was toggled. * @param data Pointer to the GtkPolarView structure. * */ static void target_toggled(GtkCheckMenuItem * item, gpointer data) { sat_obj_t *obj = NULL; /* get satellite object */ obj = SAT_OBJ(g_object_get_data(G_OBJECT(item), "obj")); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } /* toggle flag */ obj->istarget = !obj->istarget; gtk_check_menu_item_set_active(item, obj->istarget); } #endif gpredict/src/gtk-polar-view-popup.h000066400000000000000000000026261427377236300176540ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef GTK_POLAR_VIEW_POPUP_H #define GTK_POLAR_VIEW_POPUP_H 1 #include #include "gtk-sat-data.h" #include "gtk-polar-view.h" #include "sgpsdp/sgp4sdp4.h" void gtk_polar_view_popup_exec(sat_t * sat, qth_t * qth, GtkPolarView * polv, GdkEventButton * event, GtkWidget * toplevel); #endif gpredict/src/gtk-polar-view.c000066400000000000000000001544771427377236300165220ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC Copyright (C) 2011 Charles Suprin, AA1 VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include #ifdef HAVE_CONFIG_H #include #endif #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-polar-view.h" #include "gtk-polar-view-popup.h" #include "gtk-sat-data.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define POLV_DEFAULT_SIZE 100 #define POLV_DEFAULT_MARGIN 25 #define MARKER_SIZE_HALF 2 /* extra size for line outside 0 deg circle (inside margin) */ #define POLV_LINE_EXTRA 5 static void update_sat(gpointer key, gpointer value, gpointer data); static void update_track(gpointer key, gpointer value, gpointer data); static GtkVBoxClass *parent_class = NULL; static void gtk_polar_view_store_showtracks(GtkPolarView * pv) { mod_cfg_set_integer_list_boolean(pv->cfgdata, pv->showtracks_on, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOWTRACKS); mod_cfg_set_integer_list_boolean(pv->cfgdata, pv->showtracks_off, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_HIDETRACKS); } /** Load the satellites that we should not highlight coverage */ static void gtk_polar_view_load_showtracks(GtkPolarView * pv) { mod_cfg_get_integer_list_boolean(pv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_HIDETRACKS, pv->showtracks_off); mod_cfg_get_integer_list_boolean(pv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOWTRACKS, pv->showtracks_on); } static void gtk_polar_view_destroy(GtkWidget * widget) { gtk_polar_view_store_showtracks(GTK_POLAR_VIEW(widget)); (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_polar_view_class_init(GtkPolarViewClass * class, gpointer class_data) { GtkWidgetClass *widget_class = (GtkWidgetClass *) class; (void)class_data; widget_class->destroy = gtk_polar_view_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_polar_view_init(GtkPolarView * polview, gpointer g_class) { (void)g_class; polview->sats = NULL; polview->qth = NULL; polview->obj = NULL; polview->naos = 0.0; polview->ncat = 0; polview->size = 0; polview->r = 0; polview->cx = 0; polview->cy = 0; polview->refresh = 0; polview->counter = 0; polview->swap = 0; polview->qthinfo = FALSE; polview->eventinfo = FALSE; polview->cursinfo = FALSE; polview->extratick = FALSE; polview->resize = FALSE; } GType gtk_polar_view_get_type() { static GType gtk_polar_view_type = 0; if (!gtk_polar_view_type) { static const GTypeInfo gtk_polar_view_info = { sizeof(GtkPolarViewClass), NULL, /* base init */ NULL, /* base finalise */ (GClassInitFunc) gtk_polar_view_class_init, NULL, /* class finalise */ NULL, /* class data */ sizeof(GtkPolarView), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_polar_view_init, NULL }; gtk_polar_view_type = g_type_register_static(GTK_TYPE_BOX, "GtkPolarView", >k_polar_view_info, 0); } return gtk_polar_view_type; } /** * Manage new size allocation. * * This function is called when the canvas receives a new size allocation, * e.g. when the container is re-sized. The function re-calculates the graph * dimensions based on the new canvas size. */ static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data) { (void)widget; (void)allocation; (void)data; GTK_POLAR_VIEW(data)->resize = TRUE; } /** * Manage canvas realise signals. * * This function is used to re-initialise the graph dimensions when * the graph is realized, i.e. displayed for the first time. This is * necessary in order to compensate for missing "re-allocate" signals for * graphs that have not yet been realised, e.g. when opening several module */ static void on_canvas_realized(GtkWidget * canvas, gpointer data) { GtkAllocation aloc; gtk_widget_get_allocation(canvas, &aloc); size_allocate_cb(canvas, &aloc, data); } /** * Manage button press events * * This function is called when a mouse button is pressed on a satellite object. * If the pressed button is #3 (right button) the satellite popup menu will be * created and executed. */ static gboolean on_button_press(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data) { GooCanvasItemModel *model = goo_canvas_item_get_model(item); GtkPolarView *polv = GTK_POLAR_VIEW(data); gint catnum = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(model), "catnum")); gint *catpoint = NULL; sat_t *sat = NULL; (void)target; switch (event->button) { /* double-left-click */ case 1: if (event->type == GDK_2BUTTON_PRESS) { catpoint = g_try_new0(gint, 1); *catpoint = catnum; sat = SAT(g_hash_table_lookup(polv->sats, catpoint)); if (sat != NULL) { show_sat_info(sat, gtk_widget_get_toplevel(GTK_WIDGET(data))); } else { /* double-clicked on map */ } } g_free(catpoint); break; /* pop-up menu */ case 3: catpoint = g_try_new0(gint, 1); *catpoint = catnum; sat = SAT(g_hash_table_lookup(polv->sats, catpoint)); if (sat != NULL) { gtk_polar_view_popup_exec(sat, polv->qth, polv, event, gtk_widget_get_toplevel(GTK_WIDGET (polv))); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%d: Could not find satellite (%d) in hash table"), __FILE__, __LINE__, catnum); } g_free(catpoint); break; default: break; } return TRUE; } /** * Clear selection. * * This function is used to clear the old selection when a new satellite * is selected. */ static void clear_selection(gpointer key, gpointer val, gpointer data) { gint *old = key; gint *new = data; sat_obj_t *obj = SAT_OBJ(val); guint32 col; if ((*old != *new) && (obj->selected)) { obj->selected = FALSE; col = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); g_object_set(obj->marker, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->label, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); } } /** * Manage button release events. * * This function is called when the mouse button is released above * a satellite object. It will act as a button click and if the released * button is the left one, the click will correspond to selecting or * deselecting a satellite */ static gboolean on_button_release(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data) { GooCanvasItemModel *model = goo_canvas_item_get_model(item); GtkPolarView *polv = GTK_POLAR_VIEW(data); gint catnum = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(model), "catnum")); gint *catpoint = NULL; sat_obj_t *obj = NULL; guint32 color; (void)target; catpoint = g_try_new0(gint, 1); *catpoint = catnum; switch (event->button) { /* Select / de-select satellite */ case 1: obj = SAT_OBJ(g_hash_table_lookup(polv->obj, catpoint)); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%d: Can not find clicked object (%d) in hash table"), __FILE__, __LINE__, catnum); } else { obj->selected = !obj->selected; if (obj->selected) { color = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_SEL_COL, SAT_CFG_INT_POLAR_SAT_SEL_COL); } else { color = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_COL, SAT_CFG_INT_POLAR_SAT_COL); *catpoint = 0; g_object_set(polv->sel, "text", "", NULL); } g_object_set(obj->marker, "fill-color-rgba", color, "stroke-color-rgba", color, NULL); g_object_set(obj->label, "fill-color-rgba", color, "stroke-color-rgba", color, NULL); /* clear other selections */ g_hash_table_foreach(polv->obj, clear_selection, catpoint); } break; default: break; } g_free(catpoint); return TRUE; } /** Convert Az/El to canvas based XY coordinates. */ static void azel_to_xy(GtkPolarView * p, gdouble az, gdouble el, gfloat * x, gfloat * y) { gdouble rel; if (el < 0.0) { /* FIXME: generate bug report */ *x = 0.0; *y = 0.0; return; } /* convert angles to radians */ az = de2ra * az; el = de2ra * el; /* radius @ el */ rel = p->r - (2 * p->r * el) / M_PI; switch (p->swap) { case POLAR_VIEW_NWSE: az = 2 * M_PI - az; break; case POLAR_VIEW_SENW: az = M_PI - az; break; case POLAR_VIEW_SWNE: az = M_PI + az; break; default: break; } *x = (gfloat) (p->cx + rel * sin(az)); *y = (gfloat) (p->cy - rel * cos(az)); } /** Convert canvas based coordinates to Az/El. */ static void xy_to_azel(GtkPolarView * p, gfloat x, gfloat y, gfloat * az, gfloat * el) { gfloat rel; /* distance from center to cursor */ rel = p->r - sqrt((x - p->cx) * (x - p->cx) + (y - p->cy) * (y - p->cy)); /* scale according to p->r = 90 deg */ *el = 90.0 * rel / p->r; if (x >= p->cx) { /* 1. and 2. quadrant */ *az = atan2(x - p->cx, p->cy - y) / de2ra; } else { /* 3 and 4. quadrant */ *az = 360 + atan2(x - p->cx, p->cy - y) / de2ra; } /* correct for orientation */ switch (p->swap) { case POLAR_VIEW_NWSE: *az = 360.0 - *az; break; case POLAR_VIEW_SENW: if (*az <= 180) *az = 180.0 - *az; else *az = 540.0 - *az; break; case POLAR_VIEW_SWNE: if (*az >= 180.0) *az = *az - 180.0; else *az = 180.0 + *az; break; default: break; } } /** Manage mouse motion events. */ static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data) { GtkPolarView *polv = GTK_POLAR_VIEW(data); gfloat az, el; gchar *text; (void)item; (void)target; if (polv->cursinfo) { xy_to_azel(polv, event->x, event->y, &az, &el); if (el > 0.0) { /* cursor track */ text = g_strdup_printf("AZ %.0f\302\260\nEL %.0f\302\260", az, el); g_object_set(polv->curs, "text", text, NULL); g_free(text); } else { g_object_set(polv->curs, "text", "", NULL); } } return TRUE; } /** * Finish canvas item setup. * * @param canvas * @param item * @param model * @param data Pointer to the GtkPolarView object. * * This function is called when a canvas item is created. Its purpose is to connect * the corresponding signals to the created items. */ static void on_item_created(GooCanvas * canvas, GooCanvasItem * item, GooCanvasItemModel * model, gpointer data) { (void)canvas; if (!goo_canvas_item_model_get_parent(model)) { /* root item / canvas */ g_signal_connect(item, "motion_notify_event", (GCallback) on_motion_notify, data); } else if (!g_object_get_data(G_OBJECT(item), "skip-signal-connection")) { g_signal_connect(item, "button_press_event", (GCallback) on_button_press, data); g_signal_connect(item, "button_release_event", (GCallback) on_button_release, data); } } /** * Transform pole coordinates. * * This function transforms the pols coordinates (x,y) taking into account * the orientation of the polar plot. */ static void correct_pole_coor(GtkPolarView * polv, polar_view_pole_t pole, gfloat * x, gfloat * y, GooCanvasAnchorType * anch) { switch (pole) { case POLAR_VIEW_POLE_N: if ((polv->swap == POLAR_VIEW_SENW) || (polv->swap == POLAR_VIEW_SWNE)) { /* North and South are swapped */ *y = *y + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_NORTH; } else { *y = *y - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_SOUTH; } break; case POLAR_VIEW_POLE_E: if ((polv->swap == POLAR_VIEW_NWSE) || (polv->swap == POLAR_VIEW_SWNE)) { /* East and West are swapped */ *x = *x - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_EAST; } else { *x = *x + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_WEST; } break; case POLAR_VIEW_POLE_S: if ((polv->swap == POLAR_VIEW_SENW) || (polv->swap == POLAR_VIEW_SWNE)) { /* North and South are swapped */ *y = *y - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_SOUTH; } else { *y = *y + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_NORTH; } break; case POLAR_VIEW_POLE_W: if ((polv->swap == POLAR_VIEW_NWSE) || (polv->swap == POLAR_VIEW_SWNE)) { /* East and West are swapped */ *x = *x + POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_WEST; } else { *x = *x - POLV_LINE_EXTRA; *anch = GOO_CANVAS_ANCHOR_EAST; } break; default: /* FIXME: bug */ break; } } static GooCanvasItemModel *create_canvas_model(GtkPolarView * polv) { GooCanvasItemModel *root; gfloat x, y; guint32 col; GooCanvasAnchorType anch = GOO_CANVAS_ANCHOR_CENTER; root = goo_canvas_group_model_new(NULL, NULL); /* graph dimensions */ polv->size = POLV_DEFAULT_SIZE; polv->r = (polv->size / 2) - POLV_DEFAULT_MARGIN; polv->cx = POLV_DEFAULT_SIZE / 2; polv->cy = POLV_DEFAULT_SIZE / 2; col = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_BGD_COL, SAT_CFG_INT_POLAR_BGD_COL); polv->bgd = goo_canvas_rect_model_new(root, 0.0, 0.0, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE, "fill-color-rgba", col, "stroke-color-rgba", 0xFFFFFFFF, NULL); col = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_AXIS_COL, SAT_CFG_INT_POLAR_AXIS_COL); /* Add elevation circles at 0, 30 and 60 deg */ polv->C00 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, polv->r, polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); polv->C30 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, 0.6667 * polv->r, 0.6667 * polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); polv->C60 = goo_canvas_ellipse_model_new(root, polv->cx, polv->cy, 0.333 * polv->r, 0.3333 * polv->r, "line-width", 1.0, "stroke-color-rgba", col, NULL); /* add horixontal and vertical guidance lines */ polv->hl = goo_canvas_polyline_model_new_line(root, polv->cx - polv->r - POLV_LINE_EXTRA, polv->cy, polv->cx + polv->r + POLV_LINE_EXTRA, polv->cy, "stroke-color-rgba", col, "line-width", 1.0, NULL); polv->vl = goo_canvas_polyline_model_new_line(root, polv->cx, polv->cy - polv->r - POLV_LINE_EXTRA, polv->cx, polv->cy + polv->r + POLV_LINE_EXTRA, "stroke-color-rgba", col, "line-width", 1.0, NULL); /* N, S, E and W labels. */ col = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TICK_COL, SAT_CFG_INT_POLAR_TICK_COL); azel_to_xy(polv, 0.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_N, &x, &y, &anch); polv->N = goo_canvas_text_model_new(root, _("N"), x, y, -1, anch, "font", "Sans 10", "fill-color-rgba", col, NULL); azel_to_xy(polv, 180.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_S, &x, &y, &anch); polv->S = goo_canvas_text_model_new(root, _("S"), x, y, -1, anch, "font", "Sans 10", "fill-color-rgba", col, NULL); azel_to_xy(polv, 90.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_E, &x, &y, &anch); polv->E = goo_canvas_text_model_new(root, _("E"), x, y, -1, anch, "font", "Sans 10", "fill-color-rgba", col, NULL); azel_to_xy(polv, 270.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_W, &x, &y, &anch); polv->W = goo_canvas_text_model_new(root, _("W"), x, y, -1, anch, "font", "Sans 10", "fill-color-rgba", col, NULL); /* cursor text */ col = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_INFO_COL, SAT_CFG_INT_POLAR_INFO_COL); polv->curs = goo_canvas_text_model_new(root, "", polv->cx - polv->r - 2 * POLV_LINE_EXTRA, polv->cy + polv->r + POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_W, "font", "Sans 8", "fill-color-rgba", col, NULL); /* location info */ polv->locnam = goo_canvas_text_model_new(root, polv->qth->name, polv->cx - polv->r - 2 * POLV_LINE_EXTRA, polv->cy - polv->r - POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_SW, "font", "Sans 8", "fill-color-rgba", col, NULL); /* next event */ polv->next = goo_canvas_text_model_new(root, "", polv->cx + polv->r + 2 * POLV_LINE_EXTRA, polv->cy - polv->r - POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_E, "font", "Sans 8", "fill-color-rgba", col, "alignment", PANGO_ALIGN_RIGHT, NULL); /* selected satellite text */ polv->sel = goo_canvas_text_model_new(root, "", polv->cx + polv->r + 2 * POLV_LINE_EXTRA, polv->cy + polv->r + POLV_LINE_EXTRA, -1, GOO_CANVAS_ANCHOR_E, "font", "Sans 8", "fill-color-rgba", col, "alignment", PANGO_ALIGN_RIGHT, NULL); return root; } /** * Create a new GtkPolarView widget. * * @param cfgdata The configuration data of the parent module. * @param sats Pointer to the hash table containing the associated satellites. * @param qth Pointer to the ground station data. */ GtkWidget *gtk_polar_view_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth) { GtkPolarView *polv; GooCanvasItemModel *root; polv = GTK_POLAR_VIEW(g_object_new(GTK_TYPE_POLAR_VIEW, NULL)); polv->cfgdata = cfgdata; polv->sats = sats; polv->qth = qth; polv->obj = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, NULL); polv->showtracks_on = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, NULL); polv->showtracks_off = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, NULL); /* get settings */ polv->refresh = mod_cfg_get_int(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_REFRESH, SAT_CFG_INT_POLAR_REFRESH); polv->showtrack = mod_cfg_get_bool(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_TRACK_AUTO, SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO); polv->counter = 1; polv->swap = mod_cfg_get_int(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_ORIENTATION, SAT_CFG_INT_POLAR_ORIENTATION); polv->qthinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_QTH_INFO, SAT_CFG_BOOL_POL_SHOW_QTH_INFO); polv->eventinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_NEXT_EVENT, SAT_CFG_BOOL_POL_SHOW_NEXT_EV); polv->cursinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_CURS_TRACK, SAT_CFG_BOOL_POL_SHOW_CURS_TRACK); polv->extratick = mod_cfg_get_bool(cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_EXTRA_AZ_TICKS, SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS); gtk_polar_view_load_showtracks(polv); /* create the canvas */ polv->canvas = goo_canvas_new(); g_object_set(G_OBJECT(polv->canvas), "has-tooltip", TRUE, NULL); gtk_widget_set_size_request(polv->canvas, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE); goo_canvas_set_bounds(GOO_CANVAS(polv->canvas), 0, 0, POLV_DEFAULT_SIZE, POLV_DEFAULT_SIZE); /* connect size-request signal */ g_signal_connect(polv->canvas, "size-allocate", G_CALLBACK(size_allocate_cb), polv); g_signal_connect(polv->canvas, "item_created", (GCallback) on_item_created, polv); g_signal_connect_after(polv->canvas, "realize", (GCallback) on_canvas_realized, polv); gtk_widget_show(polv->canvas); /* Create the canvas model */ root = create_canvas_model(polv); goo_canvas_set_root_item_model(GOO_CANVAS(polv->canvas), root); g_object_unref(root); //gtk_box_pack_start (GTK_BOX (polv), GTK_POLAR_VIEW (polv)->swin, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(polv), polv->canvas, TRUE, TRUE, 0); return GTK_WIDGET(polv); } static void update_polv_size(GtkPolarView * polv) { GtkAllocation allocation; GooCanvasPoints *prec; gfloat x, y; GooCanvasAnchorType anch = GOO_CANVAS_ANCHOR_CENTER; if (gtk_widget_get_realized(GTK_WIDGET(polv))) { /* get graph dimensions */ gtk_widget_get_allocation(GTK_WIDGET(polv), &allocation); polv->size = MIN(allocation.width, allocation.height); polv->r = (polv->size / 2) - POLV_DEFAULT_MARGIN; polv->cx = allocation.width / 2; polv->cy = allocation.height / 2; /* update canvas bounds to match new size */ goo_canvas_set_bounds(GOO_CANVAS(GTK_POLAR_VIEW(polv)->canvas), 0, 0, allocation.width, allocation.height); /* background item */ g_object_set(polv->bgd, "width", (gdouble) allocation.width, "height", (gdouble) allocation.height, NULL); /* update coordinate system */ g_object_set(polv->C00, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) polv->r, "radius-y", (gdouble) polv->r, NULL); g_object_set(polv->C30, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) 0.6667 * polv->r, "radius-y", (gdouble) 0.6667 * polv->r, NULL); g_object_set(polv->C60, "center-x", (gdouble) polv->cx, "center-y", (gdouble) polv->cy, "radius-x", (gdouble) 0.333 * polv->r, "radius-y", (gdouble) 0.333 * polv->r, NULL); /* horizontal line */ prec = goo_canvas_points_new(2); prec->coords[0] = polv->cx - polv->r - POLV_LINE_EXTRA; prec->coords[1] = polv->cy; prec->coords[2] = polv->cx + polv->r + POLV_LINE_EXTRA; prec->coords[3] = polv->cy; g_object_set(polv->hl, "points", prec, NULL); /* vertical line */ prec->coords[0] = polv->cx; prec->coords[1] = polv->cy - polv->r - POLV_LINE_EXTRA; prec->coords[2] = polv->cx; prec->coords[3] = polv->cy + polv->r + POLV_LINE_EXTRA; g_object_set(polv->vl, "points", prec, NULL); /* free memory */ goo_canvas_points_unref(prec); /* N/E/S/W */ azel_to_xy(polv, 0.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_N, &x, &y, &anch); g_object_set(polv->N, "x", x, "y", y, NULL); azel_to_xy(polv, 90.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_E, &x, &y, &anch); g_object_set(polv->E, "x", x, "y", y, NULL); azel_to_xy(polv, 180.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_S, &x, &y, &anch); g_object_set(polv->S, "x", x, "y", y, NULL); azel_to_xy(polv, 270.0, 0.0, &x, &y); correct_pole_coor(polv, POLAR_VIEW_POLE_W, &x, &y, &anch); g_object_set(polv->W, "x", x, "y", y, NULL); /* cursor track */ g_object_set(polv->curs, "x", (gfloat) (polv->cx - polv->r - 2 * POLV_LINE_EXTRA), "y", (gfloat) (polv->cy + polv->r + POLV_LINE_EXTRA), NULL); /* location name */ g_object_set(polv->locnam, "x", (gfloat) (polv->cx - polv->r - 2 * POLV_LINE_EXTRA), "y", (gfloat) (polv->cy - polv->r - POLV_LINE_EXTRA), NULL); /* next event */ g_object_set(polv->next, "x", (gfloat) (polv->cx + polv->r + 2 * POLV_LINE_EXTRA), "y", (gfloat) (polv->cy - polv->r - POLV_LINE_EXTRA), NULL); /* selection info */ g_object_set(polv->sel, "x", (gfloat) polv->cx + polv->r + 2 * POLV_LINE_EXTRA, "y", (gfloat) polv->cy + polv->r + POLV_LINE_EXTRA, NULL); g_hash_table_foreach(polv->sats, update_sat, polv); /* sky tracks */ g_hash_table_foreach(polv->obj, update_track, polv); } } void gtk_polar_view_update(GtkWidget * widget) { GtkPolarView *polv = GTK_POLAR_VIEW(widget); gdouble number, now; gchar *buff; guint h, m, s; sat_t *sat = NULL; gint *catnr; if (polv->resize) { update_polv_size(polv); polv->resize = FALSE; } /* check refresh rate and refresh sats if time */ /* FIXME need to add location based update */ if (polv->counter < polv->refresh) { polv->counter++; } else { /* reset data */ polv->counter = 1; polv->naos = 0.0; polv->ncat = 0; /* update sats */ g_hash_table_foreach(polv->sats, update_sat, polv); /* update countdown to NEXT AOS label */ if (polv->eventinfo) { if (polv->ncat > 0) { catnr = g_try_new0(gint, 1); *catnr = polv->ncat; sat = SAT(g_hash_table_lookup(polv->sats, catnr)); g_free(catnr); /* last desperate sanity check */ if (sat != NULL) { now = polv->tstamp; //get_current_daynum (); number = polv->naos - now; /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (h > 0) buff = g_strdup_printf(_("Next: %s\nin %02d:%02d:%02d"), sat->nickname, h, m, s); else buff = g_strdup_printf(_("Next: %s\nin %02d:%02d"), sat->nickname, m, s); g_object_set(polv->next, "text", buff, NULL); g_free(buff); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Can not find NEXT satellite."), __func__); g_object_set(polv->next, "text", _("Next: ERR"), NULL); } } else { g_object_set(polv->next, "text", _("Next: N/A"), NULL); } } else { g_object_set(polv->next, "text", "", NULL); } } } /** Convert LOS timestamp to human readable countdown string */ static gchar *los_time_to_str(GtkPolarView * polv, sat_t * sat) { guint h, m, s; gdouble number, now; gchar *text = NULL; now = polv->tstamp; //get_current_daynum (); number = sat->los - now; /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (h > 0) { text = g_strdup_printf(_("LOS in %02d:%02d:%02d"), h, m, s); } else { text = g_strdup_printf(_("LOS in %02d:%02d"), m, s); } return text; } static void update_sat(gpointer key, gpointer value, gpointer data) { gint *catnum; sat_t *sat = SAT(value); GtkPolarView *polv = GTK_POLAR_VIEW(data); sat_obj_t *obj = NULL; gfloat x, y; GooCanvasItemModel *root; gint idx, i; gdouble now; // = get_current_daynum (); gchar *text; gchar *losstr; gchar *tooltip; guint32 colour; (void)key; /* avoid unused parameter compiler warning */ catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; now = polv->tstamp; /* update next AOS */ if (sat->aos > now) { if ((sat->aos < polv->naos) || (polv->naos == 0.0)) { polv->naos = sat->aos; polv->ncat = sat->tle.catnr; } } /* if sat is out of range */ if ((sat->el < 0.00) || decayed(sat)) { obj = SAT_OBJ(g_hash_table_lookup(polv->obj, catnum)); /* if sat is on canvas */ if (obj != NULL) { /* remove sat from canvas */ root = goo_canvas_get_root_item_model(GOO_CANVAS(polv->canvas)); idx = goo_canvas_item_model_find_child(root, obj->marker); if (idx != -1) { goo_canvas_item_model_remove_child(root, idx); } idx = goo_canvas_item_model_find_child(root, obj->label); if (idx != -1) { goo_canvas_item_model_remove_child(root, idx); } /* remove sky track */ if (obj->showtrack) { gtk_polar_view_delete_track(polv, obj, sat); } /* free pass info */ free_pass(obj->pass); obj->pass = NULL; /* if this was the selected satellite we need to clear the info text */ if (obj->selected) { g_object_set(polv->sel, "text", "", NULL); } g_free(obj); /* remove sat object from hash table */ g_hash_table_remove(polv->obj, catnum); /* FIXME: remove track from chart */ } g_free(catnum); } /* sat is within range */ else { obj = SAT_OBJ(g_hash_table_lookup(polv->obj, catnum)); azel_to_xy(polv, sat->az, sat->el, &x, &y); /* if sat is already on canvas */ if (obj != NULL) { /* update LOS count down */ if (sat->los > 0.0) { losstr = los_time_to_str(polv, sat); } else { losstr = g_strdup_printf(_("%s\nAlways in range"), sat->nickname); } /* update label */ g_object_set(obj->label, "text", sat->nickname, NULL); /* update tooltip */ tooltip = g_markup_printf_escaped("%s\n" "Az: %5.1f\302\260\n" "El: %5.1f\302\260\n" "%s", sat->nickname, sat->az, sat->el, losstr); g_object_set(obj->marker, "x", x - MARKER_SIZE_HALF, "y", y - MARKER_SIZE_HALF, "tooltip", tooltip, NULL); g_object_set(obj->label, "x", x, "y", y + 2, "tooltip", tooltip, NULL); g_free(tooltip); /* update selection info if satellite is selected */ if (obj->selected) { text = g_strdup_printf("%s\n%s", sat->nickname, losstr); g_object_set(polv->sel, "text", text, NULL); g_free(text); } /* Current pass and sky track needs update if they were calculated at * a different location or time (time controller) */ if (obj->pass) { /** FIXME: threshold */ gboolean qth_upd = qth_small_dist(polv->qth, (obj->pass->qth_comp)) > 1.0; gboolean time_upd = !((obj->pass->aos <= now) && (obj->pass->los >= now)); if (qth_upd || time_upd) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _ ("%s:%s: Updating satellite pass SAT:%d Q:%d T:%d\n"), __FILE__, __func__, *catnum, qth_upd, time_upd); root = goo_canvas_get_root_item_model(GOO_CANVAS (polv->canvas)); /* remove sky track */ if (obj->showtrack) { idx = goo_canvas_item_model_find_child(root, obj->track); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); for (i = 0; i < TRACK_TICK_NUM; i++) { idx = goo_canvas_item_model_find_child(root, obj->trtick [i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); } } /* free pass info */ free_pass(obj->pass); obj->pass = NULL; /*compute new pass */ obj->pass = get_current_pass(sat, polv->qth, now); /* Finally, create the sky track if necessary */ if (obj->showtrack) gtk_polar_view_create_track(polv, obj, sat); } } g_free(losstr); g_free(catnum); // FIXME: why free here, what about else? } else { /* add sat to canvas */ obj = g_try_new(sat_obj_t, 1); if (obj != NULL) { /* space was allocated now use it */ obj->selected = FALSE; if (g_hash_table_lookup_extended (polv->showtracks_on, catnum, NULL, NULL)) { obj->showtrack = TRUE; } else if (g_hash_table_lookup_extended (polv->showtracks_off, catnum, NULL, NULL)) { obj->showtrack = FALSE; } else { obj->showtrack = polv->showtrack; } obj->istarget = FALSE; root = goo_canvas_get_root_item_model(GOO_CANVAS(polv->canvas)); colour = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_COL, SAT_CFG_INT_POLAR_SAT_COL); /* create tooltip */ tooltip = g_markup_printf_escaped("%s\n" "Az: %5.1f\302\260\n" "El: %5.1f\302\260\n", sat->nickname, sat->az, sat->el); obj->marker = goo_canvas_rect_model_new(root, x - MARKER_SIZE_HALF, y - MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, "fill-color-rgba", colour, "stroke-color-rgba", colour, "tooltip", tooltip, NULL); obj->label = goo_canvas_text_model_new(root, sat->nickname, x, y + 2, -1, GOO_CANVAS_ANCHOR_NORTH, "font", "Sans 8", "fill-color-rgba", colour, "tooltip", tooltip, NULL); g_free(tooltip); if (goo_canvas_item_model_find_child(root, obj->marker) != -1) goo_canvas_item_model_raise(obj->marker, NULL); else sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: marker added to polarview not showing %d."), __func__, *catnum); if (goo_canvas_item_model_find_child(root, obj->label) != -1) goo_canvas_item_model_raise(obj->label, NULL); else sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: label added to polarview not showing %d."), __func__, *catnum); g_object_set_data(G_OBJECT(obj->marker), "catnum", GINT_TO_POINTER(*catnum)); g_object_set_data(G_OBJECT(obj->label), "catnum", GINT_TO_POINTER(*catnum)); /* get info about the current pass */ obj->pass = get_current_pass(sat, polv->qth, now); /* add sat to hash table */ g_hash_table_insert(polv->obj, catnum, obj); /* Finally, create the sky track if necessary */ if (obj->showtrack) gtk_polar_view_create_track(polv, obj, sat); } else { /* obj == NULL */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Cannot allocate memory for satellite %d."), __func__, sat->tle.catnr); return; } } } } /** Update sky track drawing after size allocate. */ static void update_track(gpointer key, gpointer value, gpointer data) { sat_obj_t *obj = SAT_OBJ(value);; GtkPolarView *pv = GTK_POLAR_VIEW(data); guint num, i; GooCanvasPoints *points; gfloat x, y; pass_detail_t *detail; guint tres, ttidx; (void)key; if (obj->showtrack) { if (obj->pass == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite pass."), __FILE__, __LINE__); return; } /* create points */ num = g_slist_length(obj->pass->details); if (num == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Pass had no points in it."), __FILE__, __LINE__); return; } points = goo_canvas_points_new(num); /* first point should be (aos_az,0.0) */ azel_to_xy(pv, obj->pass->aos_az, 0.0, &x, &y); points->coords[0] = (double)x; points->coords[1] = (double)y; /* time tick 0 */ g_object_set(obj->trtick[0], "x", (gdouble) x, "y", (gdouble) y, NULL); /* time resolution for time ticks; we need 3 additional points to AOS and LOS ticks. */ tres = (num - 2) / (TRACK_TICK_NUM - 1); ttidx = 1; for (i = 1; i < num - 1; i++) { detail = PASS_DETAIL(g_slist_nth_data(obj->pass->details, i)); if (detail->el >= 0) azel_to_xy(pv, detail->az, detail->el, &x, &y); points->coords[2 * i] = (double)x; points->coords[2 * i + 1] = (double)y; if (!(i % tres)) { /* update time tick */ if (ttidx < TRACK_TICK_NUM) g_object_set(obj->trtick[ttidx], "x", (gdouble) x, "y", (gdouble) y, NULL); ttidx++; } } /* last point should be (los_az, 0.0) */ azel_to_xy(pv, obj->pass->los_az, 0.0, &x, &y); points->coords[2 * (num - 1)] = (double)x; points->coords[2 * (num - 1) + 1] = (double)y; g_object_set(obj->track, "points", points, NULL); goo_canvas_points_unref(points); } } static GooCanvasItemModel *create_time_tick(GtkPolarView * pv, gdouble time, gfloat x, gfloat y) { GooCanvasItemModel *item; gchar buff[6]; GooCanvasAnchorType anchor; GooCanvasItemModel *root; guint32 col; root = goo_canvas_get_root_item_model(GOO_CANVAS(pv->canvas)); col = mod_cfg_get_int(pv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TRACK_COL, SAT_CFG_INT_POLAR_TRACK_COL); daynum_to_str(buff, 6, "%H:%M", time); if (x > pv->cx) { anchor = GOO_CANVAS_ANCHOR_EAST; x -= 5; } else { anchor = GOO_CANVAS_ANCHOR_WEST; x += 5; } item = goo_canvas_text_model_new(root, buff, (gdouble) x, (gdouble) y, -1, anchor, "font", "Sans 7", "fill-color-rgba", col, NULL); return item; } /** * Create a sky track for a satellite. * * @param pv Pointer to the GtkPolarView object. * @param obj Pointer to the sat_obj_t object. * @param sat Pointer to the sat_t object. * * Note: This function is only used when the the satellite comes within range * and the ALWAYS_SHOW_SKY_TRACK option is TRUE. */ void gtk_polar_view_create_track(GtkPolarView * pv, sat_obj_t * obj, sat_t * sat) { guint i; GooCanvasItemModel *root; pass_detail_t *detail; guint num; GooCanvasPoints *points; gfloat x, y; guint32 col; guint tres, ttidx; (void)sat; /* get satellite object */ /*obj = SAT_OBJ(g_object_get_data (G_OBJECT (item), "obj")); sat = SAT(g_object_get_data (G_OBJECT (item), "sat")); qth = (qth_t *)(g_object_get_data (G_OBJECT (item), "qth")); */ if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } if (obj->pass == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite pass."), __FILE__, __LINE__); return; } root = goo_canvas_get_root_item_model(GOO_CANVAS(pv->canvas)); /* add sky track */ /* create points */ num = g_slist_length(obj->pass->details); if (num == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Pass had no points in it."), __FILE__, __LINE__); return; } /* time resolution for time ticks; we need 3 additional points to AOS and LOS ticks. */ tres = (num - 2) / (TRACK_TICK_NUM - 1); points = goo_canvas_points_new(num); /* first point should be (aos_az,0.0) */ azel_to_xy(pv, obj->pass->aos_az, 0.0, &x, &y); points->coords[0] = (double)x; points->coords[1] = (double)y; obj->trtick[0] = create_time_tick(pv, obj->pass->aos, x, y); ttidx = 1; for (i = 1; i < num - 1; i++) { detail = PASS_DETAIL(g_slist_nth_data(obj->pass->details, i)); if (detail->el >= 0.0) azel_to_xy(pv, detail->az, detail->el, &x, &y); points->coords[2 * i] = (double)x; points->coords[2 * i + 1] = (double)y; if (tres != 0 && !(i % tres)) { /* create a time tick */ if (ttidx < TRACK_TICK_NUM) obj->trtick[ttidx] = create_time_tick(pv, detail->time, x, y); ttidx++; } } /* last point should be (los_az, 0.0) */ azel_to_xy(pv, obj->pass->los_az, 0.0, &x, &y); points->coords[2 * (num - 1)] = (double)x; points->coords[2 * (num - 1) + 1] = (double)y; /* create poly-line */ col = mod_cfg_get_int(pv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TRACK_COL, SAT_CFG_INT_POLAR_TRACK_COL); obj->track = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points, "line-width", 1.0, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); goo_canvas_points_unref(points); } void gtk_polar_view_delete_track(GtkPolarView * pv, sat_obj_t * obj, sat_t * sat) { gint idx, i; GooCanvasItemModel *root; (void)sat; root = goo_canvas_get_root_item_model(GOO_CANVAS(pv->canvas)); idx = goo_canvas_item_model_find_child(root, obj->track); if (idx != -1) { goo_canvas_item_model_remove_child(root, idx); } for (i = 0; i < TRACK_TICK_NUM; i++) { idx = goo_canvas_item_model_find_child(root, obj->trtick[i]); if (idx != -1) { goo_canvas_item_model_remove_child(root, idx); } } } /** Reload reference to satellites (e.g. after TLE update). */ void gtk_polar_view_reload_sats(GtkWidget * polv, GHashTable * sats) { GTK_POLAR_VIEW(polv)->sats = sats; GTK_POLAR_VIEW(polv)->naos = 0.0; GTK_POLAR_VIEW(polv)->ncat = 0; } /** Select a satellite */ void gtk_polar_view_select_sat(GtkWidget * widget, gint catnum) { GtkPolarView *polv = GTK_POLAR_VIEW(widget); gint *catpoint = NULL; sat_obj_t *obj = NULL; guint32 color; catpoint = g_try_new0(gint, 1); *catpoint = catnum; obj = SAT_OBJ(g_hash_table_lookup(polv->obj, catpoint)); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s Requested satellite (%d) is not within range"), __func__, catnum); } else { obj->selected = TRUE; color = mod_cfg_get_int(polv->cfgdata, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_SEL_COL, SAT_CFG_INT_POLAR_SAT_SEL_COL); g_object_set(obj->marker, "fill-color-rgba", color, "stroke-color-rgba", color, NULL); g_object_set(obj->label, "fill-color-rgba", color, "stroke-color-rgba", color, NULL); } /* clear previous selection, if any */ g_hash_table_foreach(polv->obj, clear_selection, catpoint); g_free(catpoint); } gpredict/src/gtk-polar-view.h000066400000000000000000000115531427377236300165120ustar00rootroot00000000000000#ifndef __GTK_POLAR_VIEW_H__ #define __GTK_POLAR_VIEW_H__ 1 #include #include #include #include #include #include "gtk-sat-data.h" #include "predict-tools.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* *INDENT-ON* */ /** \brief Number of time ticks. */ #define TRACK_TICK_NUM 4 #define GTK_POLAR_VIEW(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_polar_view_get_type (), GtkPolarView) #define GTK_POLAR_VIEW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_polar_view_get_type (), GtkPolarViewClass) #define GTK_IS_POLAR_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_polar_view_get_type ()) #define GTK_TYPE_POLAR_VIEW (gtk_polar_view_get_type ()) #define IS_GTK_POLAR_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_polar_view_get_type ()) typedef struct _GtkPolarView GtkPolarView; typedef struct _GtkPolarViewClass GtkPolarViewClass; /** Satellite object on graph. */ typedef struct { gboolean selected; /*!< Satellite is selected. */ gboolean showtrack; /*!< Show ground track. */ gboolean istarget; /*!< Is this object the target. */ pass_t *pass; /*!< Details of the current pass. */ GooCanvasItemModel *marker; /*!< Item showing position of satellite. */ GooCanvasItemModel *label; /*!< Item showing the satellite name. */ GooCanvasItemModel *track; /*!< Sky track. */ GooCanvasItemModel *trtick[TRACK_TICK_NUM]; /*!< Time ticks along the sky track */ } sat_obj_t; #define SAT_OBJ(obj) ((sat_obj_t *)obj) /* graph orientation; start at 12 o'clock and go clockwise */ typedef enum { POLAR_VIEW_NESW = 0, /*!< Normal / usual */ POLAR_VIEW_NWSE = 1, POLAR_VIEW_SENW = 2, POLAR_VIEW_SWNE = 3 } polar_view_swap_t; /* pole identifier */ typedef enum { POLAR_VIEW_POLE_N = 0, POLAR_VIEW_POLE_E = 1, POLAR_VIEW_POLE_S = 2, POLAR_VIEW_POLE_W = 3 } polar_view_pole_t; struct _GtkPolarView { GtkBox vbox; GtkWidget *canvas; /*!< The canvas widget */ GooCanvasItemModel *bgd; GooCanvasItemModel *C00, *C30, *C60; /*!< 0, 30 and 60 deg elevation circles */ GooCanvasItemModel *hl, *vl; /*!< horizontal and vertical lines */ GooCanvasItemModel *N, *S, *E, *W; /*!< North, South, East and West labels */ GooCanvasItemModel *locnam; /*!< Location name */ GooCanvasItemModel *curs; /*!< cursor tracking text */ GooCanvasItemModel *next; /*!< next event text */ GooCanvasItemModel *sel; /*!< Text showing info about selected satellite. */ GHashTable *showtracks_on; GHashTable *showtracks_off; gdouble naos; /*!< Next event time */ gint ncat; /*!< Next event catnum */ gdouble tstamp; /*!< Time stamp for calculations; set by GtkSatModule */ GKeyFile *cfgdata; /*!< module configuration data */ GHashTable *sats; /*!< Satellites. */ qth_t *qth; /*!< Pointer to current location. */ GHashTable *obj; /*!< Canvas items representing each visible satellite */ guint cx; /*!< center X */ guint cy; /*!< center Y */ guint r; /*!< radius */ guint size; /*!< Size of the box = min(h,w) */ guint refresh; /*!< Refresh rate. */ guint counter; /*!< cycle counter. */ polar_view_swap_t swap; gboolean qthinfo; /*!< Show the QTH info. */ gboolean eventinfo; /*!< Show info about the next event. */ gboolean cursinfo; /*!< Track the mouse cursor. */ gboolean extratick; /*!< Show extra ticks */ gboolean showtrack; /*!< Automatically show sky tracks. */ gboolean resize; /*!< Flag indicating that the view has been resized. */ }; struct _GtkPolarViewClass { GtkBoxClass parent_class; }; GType gtk_polar_view_get_type(void); GtkWidget *gtk_polar_view_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth); void gtk_polar_view_update(GtkWidget * widget); void gtk_polar_view_reconf(GtkWidget * widget, GKeyFile * cfgdat); void gtk_polar_view_reload_sats(GtkWidget * polv, GHashTable * sats); void gtk_polar_view_select_sat(GtkWidget * widget, gint catnum); void gtk_polar_view_create_track(GtkPolarView * pv, sat_obj_t * obj, sat_t * sat); void gtk_polar_view_delete_track(GtkPolarView * pv, sat_obj_t * obj, sat_t * sat); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* __cplusplus */ /* *INDENT-ON* */ #endif /* __GTK_POLAR_VIEW_H__ */ gpredict/src/gtk-rig-ctrl.c000066400000000000000000002647501427377236300161540ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2019 Alexandru Csete, OZ9AEC Copyright (C) 2017 Patrick Dohmen, DL4PD Copyright (C) 2018 Mario Haustein, DM5AHA This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* * RIG control window. * * The master radio control UI is implemented as a Gtk+ Widget in order * to allow multiple instances. The widget is created from the module * popup menu and each module can have several radio control windows * attached to it. Note, however, that current implementation only * allows one control window per module. * * TODO Duplex TRX * TODO Transponder passband display somewhere, below Sat freq? * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include /* NETWORK */ #ifndef WIN32 #include /* htons() */ #include /* gethostbyname() */ #include /* struct sockaddr_in */ #include /* socket(), connect(), send() */ #else #include #endif #include "compat.h" #include "gpredict-utils.h" #include "gtk-freq-knob.h" #include "gtk-rig-ctrl.h" #include "predict-tools.h" #include "radio-conf.h" #include "sat-log.h" #include "sat-cfg.h" #include "trsp-conf.h" #define AZEL_FMTSTR "%7.2f\302\260" #define MAX_ERROR_COUNT 5 #define WR_DEL 5000 /* delay in usec to wait between write and read commands */ /* radio control functions */ static void exec_rx_cycle(GtkRigCtrl * ctrl); static void exec_tx_cycle(GtkRigCtrl * ctrl); static void exec_trx_cycle(GtkRigCtrl * ctrl); static void exec_toggle_cycle(GtkRigCtrl * ctrl); static void exec_toggle_tx_cycle(GtkRigCtrl * ctrl); static void exec_duplex_cycle(GtkRigCtrl * ctrl); static void exec_duplex_tx_cycle(GtkRigCtrl * ctrl); static void exec_dual_rig_cycle(GtkRigCtrl * ctrl); static gboolean check_aos_los(GtkRigCtrl * ctrl); static gboolean set_freq_simplex(GtkRigCtrl * ctrl, gint sock, gdouble freq); static gboolean get_freq_simplex(GtkRigCtrl * ctrl, gint sock, gdouble * freq); static gboolean set_freq_toggle(GtkRigCtrl * ctrl, gint sock, gdouble freq); static gboolean set_toggle(GtkRigCtrl * ctrl, gint sock); static gboolean unset_toggle(GtkRigCtrl * ctrl, gint sock); static gboolean get_freq_toggle(GtkRigCtrl * ctrl, gint sock, gdouble * freq); static gboolean get_ptt(GtkRigCtrl * ctrl, gint sock); static gboolean set_ptt(GtkRigCtrl * ctrl, gint sock, gboolean ptt); /* add thread for hamlib communication */ gpointer rigctl_run(gpointer data); static void rigctrl_open(GtkRigCtrl * data); static void rigctrl_close(GtkRigCtrl * data); static void setconfig(gpointer data); static void remove_timer(GtkRigCtrl * data); static void start_timer(GtkRigCtrl * data); static GtkBoxClass *parent_class = NULL; static void gtk_rig_ctrl_destroy(GtkWidget * widget) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(widget); if (ctrl->rigctl_thread != NULL) { g_mutex_lock(&ctrl->widgetsync); ctrl->engaged = 0; setconfig(ctrl); /* synchronization */ g_cond_wait(&ctrl->widgetready, &ctrl->widgetsync); g_mutex_unlock(&ctrl->widgetsync); ctrl->rigctl_thread = NULL; } if (ctrl->conf != NULL) { radio_conf_save(ctrl->conf); g_free(ctrl->conf->name); g_free(ctrl->conf->host); g_free(ctrl->conf); ctrl->conf = NULL; } if (ctrl->conf2 != NULL) { g_free(ctrl->conf2->name); g_free(ctrl->conf2->host); g_free(ctrl->conf2); ctrl->conf2 = NULL; } if (ctrl->trsplist != NULL) { free_transponders(ctrl->trsplist); ctrl->trsplist = NULL; } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_rig_ctrl_class_init(GtkRigCtrlClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; parent_class = g_type_class_peek_parent(class); widget_class->destroy = gtk_rig_ctrl_destroy; } static void gtk_rig_ctrl_init(GtkRigCtrl * ctrl, gpointer g_class) { (void)g_class; ctrl->sats = NULL; ctrl->target = NULL; ctrl->pass = NULL; ctrl->qth = NULL; ctrl->conf = NULL; ctrl->conf2 = NULL; ctrl->trsp = NULL; ctrl->trsplist = NULL; ctrl->trsplock = FALSE; ctrl->tracking = FALSE; ctrl->prev_ele = 0.0; ctrl->sock = 0; ctrl->sock2 = 0; g_mutex_init(&(ctrl->busy)); ctrl->engaged = FALSE; ctrl->delay = 1000; ctrl->timerid = 0; ctrl->errcnt = 0; ctrl->lastrxptt = FALSE; ctrl->lasttxptt = TRUE; ctrl->lastrxf = 0.0; ctrl->lasttxf = 0.0; ctrl->last_toggle_tx = -1; } GType gtk_rig_ctrl_get_type() { static GType gtk_rig_ctrl_type = 0; if (!gtk_rig_ctrl_type) { static const GTypeInfo gtk_rig_ctrl_info = { sizeof(GtkRigCtrlClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_rig_ctrl_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkRigCtrl), 2, /* n_preallocs */ (GInstanceInitFunc) gtk_rig_ctrl_init, NULL }; gtk_rig_ctrl_type = g_type_register_static(GTK_TYPE_BOX, "GtkRigCtrl", >k_rig_ctrl_info, 0); } return gtk_rig_ctrl_type; } static void update_count_down(GtkRigCtrl * ctrl, gdouble t) { gdouble targettime; gdouble delta; gchar *buff; guint h, m, s; gchar *aoslos; /* select AOS or LOS time depending on target elevation */ if (ctrl->target->el < 0.0) { targettime = ctrl->target->aos; aoslos = g_strdup_printf(_("AOS in")); } else { targettime = ctrl->target->los; aoslos = g_strdup_printf(_("LOS in")); } delta = targettime - t; /* convert julian date to seconds */ s = (guint) (delta * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (h > 0) buff = g_strdup_printf ("%s %02d:%02d:%02d", aoslos, h, m, s); else buff = g_strdup_printf("%s %02d:%02d", aoslos, m, s); gtk_label_set_markup(GTK_LABEL(ctrl->SatCnt), buff); g_free(buff); g_free(aoslos); } /* * Update rig control state. * * This function is called by the parent, i.e. GtkSatModule, indicating that * the satellite data has been updated. The function updates the internal state * of the controller and the rigator. */ void gtk_rig_ctrl_update(GtkRigCtrl * ctrl, gdouble t) { gdouble satfreq; gchar *buff; g_mutex_lock(&ctrl->rig_ctrl_updatelock); if (ctrl->target) { buff = g_strdup_printf(AZEL_FMTSTR, ctrl->target->az); gtk_label_set_text(GTK_LABEL(ctrl->SatAz), buff); g_free(buff); buff = g_strdup_printf(AZEL_FMTSTR, ctrl->target->el); gtk_label_set_text(GTK_LABEL(ctrl->SatEl), buff); g_free(buff); update_count_down(ctrl, t); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { buff = g_strdup_printf("%.0f mi", KM_TO_MI(ctrl->target->range)); } else { buff = g_strdup_printf("%.0f km", ctrl->target->range); } gtk_label_set_text(GTK_LABEL(ctrl->SatRng), buff); g_free(buff); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { buff = g_strdup_printf("%.3f mi/s", KM_TO_MI(ctrl->target->range_rate)); } else { buff = g_strdup_printf("%.3f km/s", ctrl->target->range_rate); } gtk_label_set_text(GTK_LABEL(ctrl->SatRngRate), buff); g_free(buff); /* Doppler shift down */ satfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); ctrl->dd = -satfreq * (ctrl->target->range_rate / 299792.4580); // Hz buff = g_strdup_printf("%.0f Hz", ctrl->dd); gtk_label_set_text(GTK_LABEL(ctrl->SatDopDown), buff); g_free(buff); /* Doppler shift up */ satfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); ctrl->du = satfreq * (ctrl->target->range_rate / 299792.4580); // Hz buff = g_strdup_printf("%.0f Hz", ctrl->du); gtk_label_set_text(GTK_LABEL(ctrl->SatDopUp), buff); g_free(buff); /* update next pass if necessary */ if (ctrl->pass != NULL) { if (ctrl->target->aos > ctrl->pass->aos) { free_pass(ctrl->pass); ctrl->pass = get_next_pass(ctrl->target, ctrl->qth, 3.0); } } else { /* we don't have any current pass; store the current one */ ctrl->pass = get_next_pass(ctrl->target, ctrl->qth, 3.0); } } g_mutex_unlock(&ctrl->rig_ctrl_updatelock); } /* * Track the downlink frequency by setting the uplink frequency * according to the lower limit of the downlink passband. */ static void track_downlink(GtkRigCtrl * ctrl) { gdouble delta, down, up; if (ctrl->trsp == NULL) return; /* ensure that we have a usable transponder config */ if ((ctrl->trsp->downlow > 0) && (ctrl->trsp->uplow > 0)) { down = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); delta = down - ctrl->trsp->downlow; if (ctrl->trsp->invert) up = ctrl->trsp->uphigh - delta; else up = ctrl->trsp->uplow + delta; gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqUp), up); } } /* * Track the uplink frequency by setting the downlink frequency * according to the offset from the lower limit on the uplink passband. */ static void track_uplink(GtkRigCtrl * ctrl) { gdouble delta, down, up; if (ctrl->trsp == NULL) return; /* ensure that we have a usable transponder config */ if ((ctrl->trsp->downlow > 0) && (ctrl->trsp->uplow > 0)) { up = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); delta = up - ctrl->trsp->uplow; if (ctrl->trsp->invert) down = ctrl->trsp->downhigh - delta; else down = ctrl->trsp->downlow + delta; gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqDown), down); } } void gtk_rig_ctrl_select_sat(GtkRigCtrl * ctrl, gint catnum) { sat_t *sat; int i, n; /* find index in satellite list */ n = g_slist_length(ctrl->sats); for (i = 0; i < n; i++) { sat = SAT(g_slist_nth_data(ctrl->sats, i)); if (sat) { if (sat->tle.catnr == catnum) { /* assume the index is the same in sat selector */ gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->SatSel), i); break; } } } } static void downlink_changed_cb(GtkFreqKnob * knob, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); (void)knob; if (ctrl->trsplock) track_downlink(ctrl); } static void uplink_changed_cb(GtkFreqKnob * knob, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); (void)knob; if (ctrl->trsplock) track_uplink(ctrl); } /* * Create freq control widgets for downlink. * * This function creates and initialises the widgets for controlling the * downlink frequency. It consists of a controller widget showing the * satellite frequency with the radio frequency below it. * */ static GtkWidget *create_downlink_widgets(GtkRigCtrl * ctrl) { GtkWidget *frame; GtkWidget *vbox; GtkWidget *hbox1, *hbox2; GtkWidget *label; label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _(" Downlink ")); frame = gtk_frame_new(NULL); gtk_frame_set_label_align(GTK_FRAME(frame), 0.5, 0.5); gtk_frame_set_label_widget(GTK_FRAME(frame), label); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); /* satellite downlink frequency */ ctrl->SatFreqDown = gtk_freq_knob_new(145890000.0, TRUE); g_signal_connect(ctrl->SatFreqDown, "freq-changed", G_CALLBACK(downlink_changed_cb), ctrl); gtk_box_pack_start(GTK_BOX(vbox), ctrl->SatFreqDown, TRUE, TRUE, 0); /* Downlink doppler */ label = gtk_label_new(_("Doppler:")); gtk_widget_set_tooltip_text(label, _("The Doppler shift according to the range " "rate and the currently selected downlink " "frequency")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 0); ctrl->SatDopDown = gtk_label_new("---- Hz"); g_object_set(ctrl->SatDopDown, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(hbox1), ctrl->SatDopDown, FALSE, TRUE, 0); /* Downconverter LO */ ctrl->LoDown = gtk_label_new("0 MHz"); g_object_set(ctrl->LoDown, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_end(GTK_BOX(hbox1), ctrl->LoDown, FALSE, FALSE, 2); label = gtk_label_new(_("LO:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_end(GTK_BOX(hbox1), label, FALSE, FALSE, 0); /* Radio downlink frequency */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "Radio:"); g_object_set(label, "xalign", 0.5f, "yalign", 1.0f, NULL); gtk_box_pack_start(GTK_BOX(hbox2), label, TRUE, TRUE, 0); ctrl->RigFreqDown = gtk_freq_knob_new(145890000.0, FALSE); gtk_box_pack_start(GTK_BOX(hbox2), ctrl->RigFreqDown, TRUE, TRUE, 0); /* finish packing ... */ gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, TRUE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); return frame; } /* * Create uplink frequency display widgets. * * This function creates and initialises the widgets for displaying the * uplink frequency of the satellite and the radio. */ static GtkWidget *create_uplink_widgets(GtkRigCtrl * ctrl) { GtkWidget *frame; GtkWidget *vbox; GtkWidget *hbox1, *hbox2; GtkWidget *label; label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _(" Uplink ")); frame = gtk_frame_new(NULL); gtk_frame_set_label_align(GTK_FRAME(frame), 0.5, 0.5); gtk_frame_set_label_widget(GTK_FRAME(frame), label); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); /* satellite uplink frequency */ ctrl->SatFreqUp = gtk_freq_knob_new(145890000.0, TRUE); g_signal_connect(ctrl->SatFreqUp, "freq-changed", G_CALLBACK(uplink_changed_cb), ctrl); gtk_box_pack_start(GTK_BOX(vbox), ctrl->SatFreqUp, TRUE, TRUE, 0); /* Uplink doppler */ label = gtk_label_new(_("Doppler:")); gtk_widget_set_tooltip_text(label, _("The Doppler shift according to the range " "rate and the currently selected downlink " "frequency")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 0); ctrl->SatDopUp = gtk_label_new("---- Hz"); g_object_set(ctrl->SatDopUp, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(hbox1), ctrl->SatDopUp, FALSE, TRUE, 0); /* Upconverter LO */ ctrl->LoUp = gtk_label_new("0 MHz"); g_object_set(ctrl->LoUp, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_end(GTK_BOX(hbox1), ctrl->LoUp, FALSE, FALSE, 2); label = gtk_label_new(_("LO:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_box_pack_end(GTK_BOX(hbox1), label, FALSE, FALSE, 0); /* Radio uplink frequency */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "Radio:"); g_object_set(label, "xalign", 0.5f, "yalign", 1.0f, NULL); gtk_box_pack_start(GTK_BOX(hbox2), label, TRUE, TRUE, 0); ctrl->RigFreqUp = gtk_freq_knob_new(145890000.0, FALSE); gtk_box_pack_start(GTK_BOX(hbox2), ctrl->RigFreqUp, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, TRUE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); return frame; } static void load_trsp_list(GtkRigCtrl * ctrl) { trsp_t *trsp = NULL; guint i, n; if (ctrl->trsplist != NULL) { n = g_slist_length(ctrl->trsplist); for (i = 0; i < n; i++) gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(ctrl->TrspSel), 0); free_transponders(ctrl->trsplist); ctrl->trsp = NULL; } /* check if there is a target satellite */ if (ctrl->target == NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: GtkSatModule has no target satellite."), __FILE__, __func__); return; } /* read transponders for new target */ ctrl->trsplist = read_transponders(ctrl->target->tle.catnr); n = g_slist_length(ctrl->trsplist); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Satellite %d has %d transponder modes."), __FILE__, __func__, ctrl->target->tle.catnr, n); if (n == 0) return; for (i = 0; i < n; i++) { trsp = (trsp_t *) g_slist_nth_data(ctrl->trsplist, i); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ctrl->TrspSel), trsp->name); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Read transponder '%s' for satellite %d"), __FILE__, __func__, trsp->name, ctrl->target->tle.catnr); } ctrl->trsp = (trsp_t *) g_slist_nth_data(ctrl->trsplist, 0); gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->TrspSel), 0); } static gboolean have_conf() { GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ const gchar *filename; /* file name */ gint i = 0; dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rig")) { i++; break; } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); return (i > 0) ? TRUE : FALSE; } /* Called when the user selects a new satellite. */ static void sat_selected_cb(GtkComboBox * satsel, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); gint i; i = gtk_combo_box_get_active(satsel); if (i >= 0) { ctrl->target = SAT(g_slist_nth_data(ctrl->sats, i)); ctrl->prev_ele = ctrl->target->el; /* update next pass */ if (ctrl->pass != NULL) free_pass(ctrl->pass); ctrl->pass = get_next_pass(ctrl->target, ctrl->qth, 3.0); /* read transponders for new target */ load_trsp_list(ctrl); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid satellite selection: %d"), __FILE__, __func__, i); /* clear pass just in case... */ if (ctrl->pass != NULL) { free_pass(ctrl->pass); ctrl->pass = NULL; } } } /* * Manage "Tune" events * * @param button Pointer to the GtkButton that received the signal. * @param data Pointer to the GtkRigCtrl structure. * * This function is called when the user clicks on the Tune button next to the * transponder selector. When clicked, the radio controller will set the RX and TX * frequencies to the middle of the transponder uplink/downlink bands. * * To avoid conflicts with manual frequency changes on the radio, the sync between * RIG and GPREDICT is invalidated after the tuning operation is performed. */ static void trsp_tune_cb(GtkButton * button, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); gdouble freq; (void)button; if (ctrl->trsp == NULL) return; /* tune downlink */ if ((ctrl->trsp->downlow > 0) && (ctrl->trsp->downhigh > 0)) { freq = ctrl->trsp->downlow + abs(ctrl->trsp->downhigh - ctrl->trsp->downlow) / 2; gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqDown), freq); /* invalidate RIG<->GPREDICT sync */ ctrl->lastrxf = 0.0; } /* tune uplink */ if ((ctrl->trsp->uplow > 0) && (ctrl->trsp->uphigh > 0)) { freq = ctrl->trsp->uplow + abs(ctrl->trsp->uphigh - ctrl->trsp->uplow) / 2; gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqUp), freq); /* invalidate RIG<->GPREDICT sync */ ctrl->lasttxf = 0.0; } } /* * Called when a new transponder is selected. * It updates ctrl->trsp with the new selection and issues a "tune" event. */ static void trsp_selected_cb(GtkComboBox * box, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); gint i, n; i = gtk_combo_box_get_active(box); n = g_slist_length(ctrl->trsplist); if (i == -1) { /* clear transponder data */ ctrl->trsp = NULL; } else if (i < n) { ctrl->trsp = (trsp_t *) g_slist_nth_data(ctrl->trsplist, i); trsp_tune_cb(NULL, data); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Inconsistency detected in internal transponder " "data (%d,%d)"), __func__, i, n); } } /* * Manage lock transponder signals. * * @param button Pointer to the GtkToggleButton that received the signal. * @param data Pointer to the GtkRigCtrl structure. * * This function is called when the user toggles the "Lock Transponder" button. * When ON, the uplink and downlink are locked according to the current transponder * data, i.e. when user changes the downlink, the uplink will follow automatically * taking into account whether the transponder is inverting or not. */ static void trsp_lock_cb(GtkToggleButton * button, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); ctrl->trsplock = gtk_toggle_button_get_active(button); /* set uplink according to downlink */ if (ctrl->trsplock) track_downlink(ctrl); } static void track_toggle_cb(GtkToggleButton * button, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); ctrl->tracking = gtk_toggle_button_get_active(button); /* invalidate sync with radio */ ctrl->lastrxf = 0.0; ctrl->lasttxf = 0.0; } /* Called when the user changes the value of the cycle delay */ static void delay_changed_cb(GtkSpinButton * spin, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); ctrl->delay = (guint) gtk_spin_button_get_value(spin); if (ctrl->conf) ctrl->conf->cycle = ctrl->delay; if (ctrl->engaged) start_timer(ctrl); } static void primary_rig_selected_cb(GtkComboBox * box, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); gchar *buff; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Primary device selected: %d"), __FILE__, __func__, gtk_combo_box_get_active(box)); if (ctrl->conf != NULL) { g_free(ctrl->conf->name); g_free(ctrl->conf->host); g_free(ctrl->conf); } ctrl->conf = g_try_new(radio_conf_t, 1); if (ctrl->conf == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to allocate memory for radio config"), __FILE__, __LINE__); return; } ctrl->conf->name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(box)); if (radio_conf_read(ctrl->conf)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: Loaded new radio configuration %s"), __FILE__, __func__, ctrl->conf->name); gtk_spin_button_set_value(GTK_SPIN_BUTTON(ctrl->cycle_spin), ctrl->conf->cycle); /* update LO widgets */ buff = g_strdup_printf(_("%.0f MHz"), ctrl->conf->lo / 1.0e6); gtk_label_set_text(GTK_LABEL(ctrl->LoDown), buff); g_free(buff); /* uplink LO only if single device */ if (ctrl->conf2 == NULL) { buff = g_strdup_printf(_("%.0f MHz"), ctrl->conf->loup / 1.0e6); gtk_label_set_text(GTK_LABEL(ctrl->LoUp), buff); g_free(buff); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to load radio configuration %s"), __FILE__, __func__, ctrl->conf->name); g_free(ctrl->conf->name); if (ctrl->conf->host) g_free(ctrl->conf->host); g_free(ctrl->conf); ctrl->conf = NULL; } } static void secondary_rig_selected_cb(GtkComboBox * box, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); gchar *buff; gchar *name1, *name2; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Secondary device selected: %d"), __FILE__, __func__, gtk_combo_box_get_active(box)); if (ctrl->conf2 != NULL) { g_free(ctrl->conf2->name); g_free(ctrl->conf2->host); g_free(ctrl->conf2); ctrl->conf2 = NULL; } if (gtk_combo_box_get_active(box) == 0) { /* first entry is "None" */ /* reset uplink LO to what's in ctrl->conf */ if (ctrl->conf != NULL) { buff = g_strdup_printf(_("%.0f MHz"), ctrl->conf->loup / 1.0e6); gtk_label_set_text(GTK_LABEL(ctrl->LoUp), buff); g_free(buff); } return; } /* ensure that selected secondary rig is not the same as the primary */ name1 = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(ctrl->DevSel)); name2 = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(ctrl->DevSel2)); if (!g_strcmp0(name1, name2)) { /* selected conf is the same as the primary one */ g_free(name1); g_free(name2); if (ctrl->conf != NULL) { buff = g_strdup_printf(_("%.0f MHz"), ctrl->conf->loup / 1.0e6); gtk_label_set_text(GTK_LABEL(ctrl->LoUp), buff); g_free(buff); } gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->DevSel2), 0); return; } g_free(name1); g_free(name2); /* else load new device */ ctrl->conf2 = g_try_new(radio_conf_t, 1); if (ctrl->conf2 == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to allocate memory for radio config"), __FILE__, __func__); return; } /* load new configuration */ ctrl->conf2->name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(box)); if (radio_conf_read(ctrl->conf2)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: Loaded new radio configuration %s"), __FILE__, __func__, ctrl->conf2->name); buff = g_strdup_printf(_("%.0f MHz"), ctrl->conf2->loup / 1.0e6); gtk_label_set_text(GTK_LABEL(ctrl->LoUp), buff); g_free(buff); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to load radio configuration %s"), __FILE__, __func__, ctrl->conf->name); g_free(ctrl->conf2->name); if (ctrl->conf2->host) g_free(ctrl->conf2->host); g_free(ctrl->conf2); ctrl->conf2 = NULL; } } static void rig_engaged_cb(GtkToggleButton * button, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); if (ctrl->conf == NULL) { /* we don't have a working configuration */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Controller does not have a valid configuration"), __func__); return; } if (!gtk_toggle_button_get_active(button)) { /* close socket */ gtk_widget_set_sensitive(ctrl->DevSel, TRUE); gtk_widget_set_sensitive(ctrl->DevSel2, TRUE); ctrl->engaged = FALSE; /* stop worker thread... */ setconfig(ctrl); ctrl->rigctl_thread = NULL; } else { gtk_widget_set_sensitive(ctrl->DevSel, FALSE); gtk_widget_set_sensitive(ctrl->DevSel2, FALSE); ctrl->engaged = TRUE; /* start worker thread... */ ctrl->rigctlq = g_async_queue_new(); ctrl->rigctl_thread = g_thread_new("rigctl_run", rigctl_run, ctrl); setconfig(ctrl); } } static GtkWidget *create_target_widgets(GtkRigCtrl * ctrl) { GtkWidget *frame, *table, *label, *track; GtkWidget *tune, *trsplock, *hbox; gchar *buff; guint i, n; sat_t *sat = NULL; buff = g_strdup_printf(AZEL_FMTSTR, 0.0); table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); /* sat selector */ ctrl->SatSel = gtk_combo_box_text_new(); n = g_slist_length(ctrl->sats); for (i = 0; i < n; i++) { sat = SAT(g_slist_nth_data(ctrl->sats, i)); if (sat) gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ctrl->SatSel), sat->nickname); } gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->SatSel), 0); gtk_widget_set_tooltip_text(ctrl->SatSel, _("Select target object")); g_signal_connect(ctrl->SatSel, "changed", G_CALLBACK(sat_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->SatSel, 0, 0, 3, 1); /* tracking button */ track = gtk_toggle_button_new_with_label(_("Track")); gtk_widget_set_tooltip_text(track, _("Track the satellite transponder.\n" "Enabling this button will apply Doppler " "correction to the frequency of the radio.")); gtk_grid_attach(GTK_GRID(table), track, 3, 0, 1, 1); g_signal_connect(track, "toggled", G_CALLBACK(track_toggle_cb), ctrl); /* Transponder selector, tune, and trsplock buttons */ ctrl->TrspSel = gtk_combo_box_text_new(); gtk_widget_set_tooltip_text(ctrl->TrspSel, _("Select a transponder")); load_trsp_list(ctrl); g_signal_connect(ctrl->TrspSel, "changed", G_CALLBACK(trsp_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->TrspSel, 0, 1, 3, 1); /* buttons */ tune = gtk_button_new_with_label(_("T")); gtk_widget_set_tooltip_text(tune, _("Tune the radio to this transponder. " "The uplink and downlink will be set to the " "center of the transponder passband. In case " "of beacons, only the downlink will be tuned " "to the beacon frequency.")); g_signal_connect(tune, "clicked", G_CALLBACK(trsp_tune_cb), ctrl); trsplock = gtk_toggle_button_new_with_label(_("L")); gtk_widget_set_tooltip_text(trsplock, _("Lock the uplink and the downlink to each " "other. Whenever you change the downlink " "(in the controller or on the dial, the " "uplink will track it according to whether " "the transponder is inverting or not. " "Similarly, if you change the uplink the " "downlink will track it automatically.\n\n" "If the downlink and uplink are initially " "out of sync when you enable this function, " "the current downlink frequency will be used " "as baseline for setting the new uplink " "frequency.")); g_signal_connect(trsplock, "toggled", G_CALLBACK(trsp_lock_cb), ctrl); /* box for packing buttons */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_start(GTK_BOX(hbox), tune, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), trsplock, TRUE, TRUE, 0); gtk_grid_attach(GTK_GRID(table), hbox, 3, 1, 1, 1); /* Azimuth */ label = gtk_label_new(_("Az:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); ctrl->SatAz = gtk_label_new(buff); g_object_set(ctrl->SatAz, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->SatAz, 1, 2, 1, 1); /* Elevation */ label = gtk_label_new(_("El:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); ctrl->SatEl = gtk_label_new(buff); g_object_set(ctrl->SatEl, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->SatEl, 1, 3, 1, 1); /* Range */ label = gtk_label_new(_(" Range:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 2, 1, 1); ctrl->SatRng = gtk_label_new("0 km"); g_object_set(ctrl->SatRng, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->SatRng, 3, 2, 1, 1); gtk_widget_set_tooltip_text(label, _("This is the current distance between the " "satellite and the observer.")); gtk_widget_set_tooltip_text(ctrl->SatRng, _("This is the current distance between the " "satellite and the observer.")); /* Range rate */ label = gtk_label_new(_(" Rate:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); ctrl->SatRngRate = gtk_label_new("0.0 km/s"); g_object_set(ctrl->SatRngRate, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->SatRngRate, 3, 3, 1, 1); gtk_widget_set_tooltip_text(label, _("The rate of change for the distance between" " the satellite and the observer.")); gtk_widget_set_tooltip_text(ctrl->SatRngRate, _("The rate of change for the distance between" " the satellite and the observer.")); frame = gtk_frame_new(_("Target")); gtk_container_add(GTK_CONTAINER(frame), table); g_free(buff); return frame; } static gboolean is_rig_tx_capable(const gchar * confname) { radio_conf_t *conf = NULL; gboolean cantx = FALSE; conf = g_try_new(radio_conf_t, 1); if (conf == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to allocate memory for radio config"), __FILE__, __LINE__); return FALSE; } /* load new configuration */ conf->name = g_strdup(confname); if (radio_conf_read(conf)) { cantx = (conf->type == RIG_TYPE_RX) ? FALSE : TRUE; } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error reading radio configuration %s"), __FILE__, __LINE__, confname); cantx = FALSE; } g_free(conf->name); if (conf->host) g_free(conf->host); g_free(conf); return cantx; } /* Sort the list of satellites in the combo box. */ static gint sat_name_compare(sat_t * a, sat_t * b) { return (gpredict_strcmp(a->nickname, b->nickname)); } /* Sort the list of rigs in the combo box */ static gint rig_name_compare(const gchar * a, const gchar * b) { return (gpredict_strcmp(a, b)); } static GtkWidget *create_conf_widgets(GtkRigCtrl * ctrl) { GtkWidget *frame, *table, *label; GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ gchar **vbuff; const gchar *filename; /* file name */ gchar *rigname; table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); /* Primary device */ label = gtk_label_new(_("1. Device:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); ctrl->DevSel = gtk_combo_box_text_new(); gtk_widget_set_tooltip_text(ctrl->DevSel, _("Select primary radio device." "This device will be used for downlink and " "uplink unless you select a secondary device" " for uplink")); /* open configuration directory */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rig file */ GSList *rigs = NULL; gint i; gint n; while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rig")) { vbuff = g_strsplit(filename, ".rig", 0); rigs = g_slist_insert_sorted(rigs, g_strdup(vbuff[0]), (GCompareFunc) rig_name_compare); g_strfreev(vbuff); } } n = g_slist_length(rigs); for (i = 0; i < n; i++) { rigname = g_slist_nth_data(rigs, i); if (rigname) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (ctrl->DevSel), rigname); g_free(rigname); } } g_slist_free(rigs); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_dir_close(dir); gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->DevSel), 0); g_signal_connect(ctrl->DevSel, "changed", G_CALLBACK(primary_rig_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->DevSel, 1, 0, 1, 1); /* Secondary device */ label = gtk_label_new(_("2. Device:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); ctrl->DevSel2 = gtk_combo_box_text_new(); gtk_widget_set_tooltip_text(ctrl->DevSel2, _("Select secondary radio device\n" "This device will be used for uplink")); /* load config */ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ctrl->DevSel2), _("None")); gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->DevSel2), 0); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rig file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rig")) { /* only add TX capable rigs */ vbuff = g_strsplit(filename, ".rig", 0); if (is_rig_tx_capable(vbuff[0])) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (ctrl->DevSel2), vbuff[0]); } g_strfreev(vbuff); } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); g_signal_connect(ctrl->DevSel2, "changed", G_CALLBACK(secondary_rig_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->DevSel2, 1, 1, 1, 1); /* Engage button */ ctrl->LockBut = gtk_toggle_button_new_with_label(_("Engage")); gtk_widget_set_tooltip_text(ctrl->LockBut, _("Engage the selected radio device")); g_signal_connect(ctrl->LockBut, "toggled", G_CALLBACK(rig_engaged_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->LockBut, 2, 0, 1, 1); /* cycle period */ label = gtk_label_new(_("Cycle:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); ctrl->cycle_spin = gtk_spin_button_new_with_range(10, 10000, 10); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(ctrl->cycle_spin), 0); gtk_widget_set_tooltip_text(ctrl->cycle_spin, _("This parameter controls the delay between " "commands sent to the rig.")); g_signal_connect(ctrl->cycle_spin, "value-changed", G_CALLBACK(delay_changed_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->cycle_spin, 1, 3, 1, 1); label = gtk_label_new(_("msec")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); frame = gtk_frame_new(_("Settings")); gtk_container_add(GTK_CONTAINER(frame), table); /* load primary config */ primary_rig_selected_cb(GTK_COMBO_BOX(ctrl->DevSel), ctrl); return frame; } /* Create count down widget */ static GtkWidget *create_count_down_widgets(GtkRigCtrl * ctrl) { GtkWidget *frame; /* create delta-t label */ ctrl->SatCnt = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(ctrl->SatCnt), _("\316\224T: " "00:00:00")); gtk_widget_set_tooltip_text(ctrl->SatCnt, _("The time remaining until the next AOS or " "LOS event")); g_object_set(ctrl->SatCnt, "xalign", 0.5f, "yalign", 0.5f, NULL); gtk_widget_set_margin_top(ctrl->SatCnt, 3); gtk_widget_set_margin_bottom(ctrl->SatCnt, 3); frame = gtk_frame_new(NULL); gtk_container_add(GTK_CONTAINER(frame), ctrl->SatCnt); return frame; } /* Copy satellite from hash table to singly linked list. */ static void store_sats(gpointer key, gpointer value, gpointer user_data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(user_data); sat_t *sat = SAT(value); (void)key; ctrl->sats = g_slist_insert_sorted(ctrl->sats, sat, (GCompareFunc) sat_name_compare); } static gboolean _send_rigctld_command(GtkRigCtrl * ctrl, gint sock, gchar * buff, gchar * buffout, gint sizeout) { gint written; gint size; size = strlen(buff); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: sending %d bytes to rigctld as \"%s\""), __FILE__, __func__, size, buff); /* send command */ written = send(sock, buff, strlen(buff), 0); if (written != size) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: SIZE ERROR %d / %d"), __func__, written, size); } if (written == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: rigctld port closed"), __func__); return FALSE; } /* try to read answer */ size = recv(sock, buffout, sizeout - 1, 0); if (size == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: rigctld port closed"), __func__); return FALSE; } buffout[size] = '\0'; if (size == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Got 0 bytes from rigctld"), __FILE__, __func__); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Read %d bytes from rigctld"), __FILE__, __func__, size); } ctrl->wrops++; return TRUE; } static gboolean send_rigctld_command(GtkRigCtrl * ctrl, gint sock, gchar * buff, gchar * buffout, gint sizeout) { gboolean retval; /* Enter critical section! */ g_mutex_lock(&ctrl->writelock); retval = _send_rigctld_command(ctrl, sock, buff, buffout, sizeout); /* Leave critical section! */ g_mutex_unlock(&ctrl->writelock); return (retval); } static inline gboolean check_set_response(gchar * buffback, gboolean retcode, const gchar * function) { if (retcode == TRUE) { if (strncmp(buffback, "RPRT 0", 6) != 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s rigctld returned error (%s)"), __FILE__, __func__, function, buffback); retcode = FALSE; } } return retcode; } static inline gboolean check_get_response(gchar * buffback, gboolean retcode, const gchar * function) { if (retcode == TRUE) { if (strncmp(buffback, "RPRT", 4) == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: %s rigctld returned error (%s)"), __FILE__, __func__, function, buffback); retcode = FALSE; } } return retcode; } /* Setup VFOs for split operation (simplex or duplex) */ static gboolean setup_split(GtkRigCtrl * ctrl) { gchar *buff; gchar buffback[256]; gboolean retcode; switch (ctrl->conf->vfoUp) { case VFO_A: buff = g_strdup("S 1 VFOA\x0a"); break; case VFO_B: buff = g_strdup("S 1 VFOB\x0a"); break; case VFO_MAIN: buff = g_strdup("S 1 Main\x0a"); break; case VFO_SUB: buff = g_strdup("S 1 Sub\x0a"); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s called but TX VFO is %d."), __func__, ctrl->conf->vfoUp); return FALSE; } retcode = send_rigctld_command(ctrl, ctrl->sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } static gboolean rig_ctrl_timeout_cb(gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); if (ctrl->conf == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Controller does not have a valid configuration"), __func__); return FALSE; } if (g_mutex_trylock(&(ctrl->busy)) == FALSE) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s missed the deadline"), __func__); return TRUE; } setconfig(ctrl); g_mutex_unlock(&(ctrl->busy)); return TRUE; } static void exec_rx_cycle(GtkRigCtrl * ctrl) { gdouble readfreq = 0.0, tmpfreq, satfreqd, satfrequ; gboolean ptt = FALSE; /* get PTT status */ if (ctrl->engaged && ctrl->conf->ptt) ptt = get_ptt(ctrl, ctrl->sock); /* Dial feedback: If radio device is engaged read frequency from radio and compare it to the last set frequency. If different, it means that user has changed frequency on the radio dial => update transponder knob Note: If ctrl->lastrxf = 0.0 the sync has been invalidated (e.g. user pressed "tune") and no need to execute the dial feedback. */ if ((ctrl->engaged) && (ctrl->lastrxf > 0.0) && (ptt == FALSE)) { if (!get_freq_simplex(ctrl, ctrl->sock, &readfreq)) { /* error => use a passive value */ ctrl->errcnt++; } else if (fabs(readfreq - ctrl->lastrxf) >= 1.0) { /* user might have altered radio frequency => update transponder knob */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), readfreq); ctrl->lastrxf = readfreq; /* doppler shift; only if we are tracking */ if (ctrl->tracking) { satfreqd = (readfreq - ctrl->dd + ctrl->conf->lo); } else { satfreqd = readfreq + ctrl->conf->lo; } gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqDown), satfreqd); /* Update uplink if locked to downlink */ if (ctrl->trsplock) { track_downlink(ctrl); } /* no need to forward track */ return; } } /* now, forward tracking */ /* If we are tracking, calculate the radio freq by applying both dopper shift and tranverter LO frequency. If we are not tracking, apply only LO frequency. */ satfreqd = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); satfrequ = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); if (ctrl->tracking) { /* downlink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd + ctrl->dd - ctrl->conf->lo); /* uplink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ + ctrl->du - ctrl->conf->loup); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd - ctrl->conf->lo); gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ - ctrl->conf->loup); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqDown)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (ptt == FALSE) && (fabs(ctrl->lastrxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency might be different from what we have set because the tuning step is larger than what we work with (e.g. FT-817 has a smallest tuning step of 10 Hz). Therefore we read back the actual frequency from the rig. */ get_freq_simplex(ctrl, ctrl->sock, &tmpfreq); ctrl->lastrxf = tmpfreq; /* This is only effective in RIG_TYPE_TRX mode. Invalidate ctrl->lasttxf for two reasons. 1. Prevent dial feedback from changing the uplink frequency. In the first TX cycle get_freq_simplex() returns the downlink frequency instead of uplink. The mismatch would thus trigger an uplink update as long as the VFO has not been updated. 2. Force updating the VFO in the first TX cycle. */ if (ctrl->lastrxptt != ptt) ctrl->lasttxf = 0.0; } else { ctrl->errcnt++; } } /* Remember PTT state, to avoid misinterpreting VFO changes as dial feedback during TX to RX transitions. */ ctrl->lastrxptt = ptt; } static void exec_tx_cycle(GtkRigCtrl * ctrl) { gdouble readfreq = 0.0, tmpfreq, satfreqd, satfrequ; gboolean ptt = TRUE; /* get PTT status */ if (ctrl->engaged && ctrl->conf->ptt) { ptt = get_ptt(ctrl, ctrl->sock); } /* Dial feedback: If radio device is engaged read frequency from radio and compare it to the last set frequency. If different, it means that user has changed frequency on the radio dial => update transponder knob Note: If ctrl->lasttxf = 0.0 the sync has been invalidated (e.g. user pressed "tune") and no need to execute the dial feedback. */ if ((ctrl->engaged) && (ctrl->lasttxf > 0.0) && (ptt == TRUE)) { if (!get_freq_simplex(ctrl, ctrl->sock, &readfreq)) { /* error => use a passive value */ ctrl->errcnt++; } else if (fabs(readfreq - ctrl->lasttxf) >= 1.0) { /* user might have altered radio frequency => update transponder knob */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), readfreq); ctrl->lasttxf = readfreq; /* doppler shift; only if we are tracking */ if (ctrl->tracking) { satfrequ = readfreq - ctrl->du + ctrl->conf->loup; } else { satfrequ = readfreq + ctrl->conf->loup; } gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqUp), satfrequ); /* Follow with downlink if transponder is locked */ if (ctrl->trsplock) { track_uplink(ctrl); } /* no need to forward track */ return; } } /* now, forward tracking */ /* If we are tracking, calculate the radio freq by applying both dopper shift and tranverter LO frequency. If we are not tracking, apply only LO frequency. */ satfreqd = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); satfrequ = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); if (ctrl->tracking) { /* downlink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd + ctrl->dd - ctrl->conf->lo); /* uplink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ + ctrl->du - ctrl->conf->loup); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd - ctrl->conf->lo); gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ - ctrl->conf->loup); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (ptt == TRUE) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency migh be different from what we have set because the tuning step is larger than what we work with (e.g. FT-817 has a smallest tuning step of 10 Hz). Therefore we read back the actual frequency from the rig. */ get_freq_simplex(ctrl, ctrl->sock, &tmpfreq); ctrl->lasttxf = tmpfreq; /* This is only effective in RIG_TYPE_TRX mode. Invalidate ctrl->lastrxf for two reasons. 1. Prevent dial feedback from changing the downlink frequency. In the first RX cycle get_freq_simplex() returns the uplink frequency instead of downlink. The mismatch would thus trigger a downlink update as long as the VFO has not been updated. 2. Force updating the VFO in the first RX cycle. */ if (ctrl->lasttxptt != ptt) ctrl->lastrxf = 0.0; } else { ctrl->errcnt++; } } /* Remember PTT state, to avoid misinterpreting VFO changes as dial feedback during RX to TX transitions. */ ctrl->lasttxptt = ptt; } static void exec_trx_cycle(GtkRigCtrl * ctrl) { exec_rx_cycle(ctrl); exec_tx_cycle(ctrl); } static void exec_toggle_cycle(GtkRigCtrl * ctrl) { exec_rx_cycle(ctrl); /* TX cycle is executed only if user selected RIG_TYPE_TOGGLE_AUTO * In manual mode the TX freq update is performed only when TX is activated. * Even in auto mode, the toggling is performed only once every 10 seconds. */ if (ctrl->conf->type == RIG_TYPE_TOGGLE_AUTO) { gint64 current_time; /* get the current time */ current_time = g_get_real_time() / G_USEC_PER_SEC; if ((ctrl->last_toggle_tx == -1) || ((current_time - ctrl->last_toggle_tx) >= 10)) { /* it's time to update TX freq */ exec_toggle_tx_cycle(ctrl); /* store current time */ ctrl->last_toggle_tx = current_time; } } } /* * Execute TX mode cycle. * * This function executes a transmit cycle when the primary device is of * RIG_TYPE_TOGGLE_AUTO. This applies to radios that support split operation * (e.g. TX on VHF, RX on UHF) where the frequency can not be set via CAT while * PTT is active. * * If PTT=TRUE we are in TX mode and hence there is nothing to do since the * frequency is kept constant. * * If PTT=FALSE we are in RX mode and we should update the TX frequency by * using set_freq_toggle() * * For these kind of radios there is no dial-feedback for the TX frequency. */ static void exec_toggle_tx_cycle(GtkRigCtrl * ctrl) { gdouble tmpfreq; gboolean ptt = TRUE; if (ctrl->engaged && ctrl->conf->ptt) { ptt = get_ptt(ctrl, ctrl->sock); } /* if we are in TX mode do nothing */ if (ptt == TRUE) { return; } /* Get the desired uplink frequency from controller */ tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 10.0)) { if (set_freq_toggle(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; } else { ctrl->errcnt++; } /* store the last sent frequency even if an error occurred */ ctrl->lasttxf = tmpfreq; } } static void exec_duplex_tx_cycle(GtkRigCtrl * ctrl) { gdouble readfreq = 0.0, tmpfreq, satfreqd, satfrequ; gboolean dialchanged = FALSE; /* Dial feedback: If radio device is engaged read frequency from radio and compare it to the last set frequency. If different, it means that user has changed frequency on the radio dial => update transponder knob Note: If ctrl->lasttxf = 0.0 the sync has been invalidated (e.g. user pressed "tune") and no need to execute the dial feedback. */ if ((ctrl->engaged) && (ctrl->lasttxf > 0.0)) { if (!get_freq_toggle(ctrl, ctrl->sock, &readfreq)) { /* error => use a passive value */ readfreq = ctrl->lasttxf; ctrl->errcnt++; } if (fabs(readfreq - ctrl->lasttxf) >= 1.0) { dialchanged = TRUE; /* user might have altered radio frequency => update transponder knob */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), readfreq); ctrl->lasttxf = readfreq; /* doppler shift; only if we are tracking */ if (ctrl->tracking) { satfrequ = readfreq - ctrl->du + ctrl->conf->loup; } else { satfrequ = readfreq + ctrl->conf->loup; } gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqUp), satfrequ); /* Follow with downlink if transponder is locked */ if (ctrl->trsplock) { track_uplink(ctrl); } } } /* now, forward tracking */ if (dialchanged) { /* no need to forward track */ return; } /* If we are tracking, calculate the radio freq by applying both dopper shift and tranverter LO frequency. If we are not tracking, apply only LO frequency. */ satfreqd = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); satfrequ = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); if (ctrl->tracking) { /* downlink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd + ctrl->dd - ctrl->conf->lo); /* uplink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ + ctrl->du - ctrl->conf->loup); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd - ctrl->conf->lo); gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ - ctrl->conf->loup); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { if (set_freq_toggle(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency migh be different from what we have set because the tuning step is larger than what we work with (e.g. FT-817 has a smallest tuning step of 10 Hz). Therefore we read back the actual frequency from the rig. */ get_freq_toggle(ctrl, ctrl->sock, &tmpfreq); ctrl->lasttxf = tmpfreq; } else { ctrl->errcnt++; } } } static void exec_duplex_cycle(GtkRigCtrl * ctrl) { exec_rx_cycle(ctrl); exec_duplex_tx_cycle(ctrl); } static void exec_dual_rig_cycle(GtkRigCtrl * ctrl) { gdouble tmpfreq, readfreq, satfreqd, satfrequ; gboolean dialchanged = FALSE; /* Execute downlink cycle using ctrl->conf */ if (ctrl->engaged && (ctrl->lastrxf > 0.0)) { /* get frequency from receiver */ if (!get_freq_simplex(ctrl, ctrl->sock, &readfreq)) { /* error => use a passive value */ readfreq = ctrl->lastrxf; ctrl->errcnt++; } if (fabs(readfreq - ctrl->lastrxf) >= 1.0) { dialchanged = TRUE; /* user might have altered radio frequency => update transponder knob */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), readfreq); ctrl->lastrxf = readfreq; /* doppler shift; only if we are tracking */ if (ctrl->tracking) { satfreqd = readfreq - ctrl->dd + ctrl->conf->lo; } else { satfreqd = readfreq + ctrl->conf->lo; } gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqDown), satfreqd); /* Update uplink if locked to downlink */ if (ctrl->trsplock) { track_downlink(ctrl); } } } if (dialchanged) { /* update uplink */ satfrequ = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); if (ctrl->tracking) { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ + ctrl->du - ctrl->conf2->loup); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ - ctrl->conf2->loup); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock2, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency migh be different from what we have set */ get_freq_simplex(ctrl, ctrl->sock2, &tmpfreq); ctrl->lasttxf = tmpfreq; } else { ctrl->errcnt++; } } } /* dialchanged on downlink */ else { /* if no dial change on downlink perform forward tracking on downlink and execute uplink controller too */ satfreqd = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); if (ctrl->tracking) { /* downlink */ gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd + ctrl->dd - ctrl->conf->lo); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd - ctrl->conf->lo); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqDown)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lastrxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency migh be different from what we have set */ get_freq_simplex(ctrl, ctrl->sock, &tmpfreq); ctrl->lastrxf = tmpfreq; } else { ctrl->errcnt++; } } /* Now execute uplink controller */ /* check if uplink dial has changed */ if ((ctrl->engaged) && (ctrl->lasttxf > 0.0)) { if (!get_freq_simplex(ctrl, ctrl->sock2, &readfreq)) { /* error => use a passive value */ readfreq = ctrl->lasttxf; ctrl->errcnt++; } if (fabs(readfreq - ctrl->lasttxf) >= 1.0) { dialchanged = TRUE; gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), readfreq); ctrl->lasttxf = readfreq; /* doppler shift; only if we are tracking */ if (ctrl->tracking) { satfrequ = readfreq - ctrl->du + ctrl->conf2->loup; } else { satfrequ = readfreq + ctrl->conf2->loup; } gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->SatFreqUp), satfrequ); /* Follow with downlink if transponder is locked */ if (ctrl->trsplock) { track_uplink(ctrl); } } } if (dialchanged) { /* on uplink */ /* update downlink */ satfreqd = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqDown)); if (ctrl->tracking) { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd + ctrl->dd - ctrl->conf->lo); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqDown), satfreqd - ctrl->conf->lo); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqDown)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lastrxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency migh be different from what we have set */ get_freq_simplex(ctrl, ctrl->sock, &tmpfreq); ctrl->lastrxf = tmpfreq; } else { ctrl->errcnt++; } } } /* dialchanged on uplink */ else { /* perform forward tracking on uplink */ satfrequ = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->SatFreqUp)); if (ctrl->tracking) { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ + ctrl->du - ctrl->conf2->loup); } else { gtk_freq_knob_set_value(GTK_FREQ_KNOB(ctrl->RigFreqUp), satfrequ - ctrl->conf2->loup); } tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); /* if device is engaged, send freq command to radio */ if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { if (set_freq_simplex(ctrl, ctrl->sock2, tmpfreq)) { /* reset error counter */ ctrl->errcnt = 0; /* give radio a chance to set frequency */ g_usleep(WR_DEL); /* The actual frequency might be different from what we have set. */ get_freq_simplex(ctrl, ctrl->sock2, &tmpfreq); ctrl->lasttxf = tmpfreq; } else { ctrl->errcnt++; } } } /* else dialchange on uplink */ } /* else dialchange on downlink */ } static gboolean get_ptt(GtkRigCtrl * ctrl, gint sock) { gchar *buff, **vbuff; gchar buffback[128]; gboolean retcode; guint64 pttstat = 0; if (ctrl->conf->ptt == PTT_TYPE_CAT) { /* send command get_ptt (t) */ buff = g_strdup_printf("t\x0a"); } else { /* send command \get_dcd */ buff = g_strdup_printf("%c\x0a", 0x8b); } retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); if (retcode) { vbuff = g_strsplit(buffback, "\n", 3); if (vbuff[0]) pttstat = g_ascii_strtoull(vbuff[0], NULL, 0); //FIXME base = 0 ok? g_strfreev(vbuff); } g_free(buff); return (pttstat == 1) ? TRUE : FALSE; } static gboolean set_ptt(GtkRigCtrl * ctrl, gint sock, gboolean ptt) { gchar *buff; gchar buffback[128]; gboolean retcode; /* send command */ if (ptt == TRUE) buff = g_strdup_printf("T 1\x0aq\x0a"); else buff = g_strdup_printf("T 0\x0aq\x0a"); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } /* * Check for AOS and LOS and send signal if enabled for rig. * * @param ctrl Pointer to the GtkRigCtrl handle. * @return TRUE if the operation was successful, FALSE if a connection error * occurred. * * This function checks whether AOS or LOS just happened and sends the * appropriate signal to the RIG if this signalling is enabled. */ static gboolean check_aos_los(GtkRigCtrl * ctrl) { gboolean retcode = TRUE; gchar retbuf[10]; if (ctrl->engaged && ctrl->tracking) { if (ctrl->prev_ele < 0.0 && ctrl->target->el >= 0.0) { /* AOS has occurred */ if (ctrl->conf->signal_aos) { retcode &= send_rigctld_command(ctrl, ctrl->sock, "AOS\n", retbuf, 10); } if (ctrl->conf2 != NULL) { if (ctrl->conf2->signal_aos) { retcode &= send_rigctld_command(ctrl, ctrl->sock2, "AOS\n", retbuf, 10); } } } else if (ctrl->prev_ele >= 0.0 && ctrl->target->el < 0.0) { /* LOS has occurred */ if (ctrl->conf->signal_los) { retcode &= send_rigctld_command(ctrl, ctrl->sock, "LOS\n", retbuf, 10); } if (ctrl->conf2 != NULL) { if (ctrl->conf2->signal_los) { retcode &= send_rigctld_command(ctrl, ctrl->sock2, "LOS\n", retbuf, 10); } } } } ctrl->prev_ele = ctrl->target->el; return retcode; } /* * Set frequency in simplex mode * * Returns TRUE if the operation was successful, FALSE otherwise */ static gboolean set_freq_simplex(GtkRigCtrl * ctrl, gint sock, gdouble freq) { gchar *buff; gchar buffback[128]; gboolean retcode; buff = g_strdup_printf("F %10.0f\x0a", freq); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } /* * Set frequency in toggle mode * * Returns TRUE if the operation was successful, FALSE otherwise */ static gboolean set_freq_toggle(GtkRigCtrl * ctrl, gint sock, gdouble freq) { gchar *buff; gchar buffback[128]; gboolean retcode; /* send command */ buff = g_strdup_printf("I %10.0f\x0a", freq); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } /* * Turn on the radios toggle mode * * Returns TRUE if the operation was successful */ static gboolean set_toggle(GtkRigCtrl * ctrl, gint sock) { gchar *buff; gchar buffback[128]; gboolean retcode; buff = g_strdup_printf("S 1 %d\x0a", ctrl->conf->vfoDown); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } /* * Turn off the radios toggle mode * * Returns TRUE if the operation was successful */ static gboolean unset_toggle(GtkRigCtrl * ctrl, gint sock) { gchar *buff; gchar buffback[128]; gboolean retcode; /* send command */ buff = g_strdup_printf("S 0 %d\x0a", ctrl->conf->vfoDown); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); g_free(buff); return (check_set_response(buffback, retcode, __func__)); } /* * Get frequency * * Returns TRUE if the operation was successful, FALSE otherwise */ static gboolean get_freq_simplex(GtkRigCtrl * ctrl, gint sock, gdouble * freq) { gchar *buff, **vbuff; gchar buffback[128]; gboolean retcode; gboolean retval = TRUE; buff = g_strdup_printf("f\x0a"); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); retcode = check_get_response(buffback, retcode, __func__); if (retcode) { vbuff = g_strsplit(buffback, "\n", 3); if (vbuff[0]) *freq = g_ascii_strtod(vbuff[0], NULL); else retval = FALSE; g_strfreev(vbuff); } else { retval = FALSE; } g_free(buff); return retval; } /* * Get frequency when the radio is working toggle * * Returns TRUE if the operation was successful, FALSE otherwise */ static gboolean get_freq_toggle(GtkRigCtrl * ctrl, gint sock, gdouble * freq) { gchar *buff, **vbuff; gchar buffback[128]; gboolean retcode; gboolean retval = TRUE; if (freq == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: NULL storage."), __FILE__, __LINE__); return FALSE; } /* send command */ buff = g_strdup_printf("i\x0a"); retcode = send_rigctld_command(ctrl, sock, buff, buffback, 128); retcode = check_get_response(buffback, retcode, __func__); if (retcode) { vbuff = g_strsplit(buffback, "\n", 3); if (vbuff[0]) *freq = g_ascii_strtod(vbuff[0], NULL); else retval = FALSE; g_strfreev(vbuff); } else { retval = FALSE; } g_free(buff); return retval; } /* * This function is used to manage PTT events, e.g. the user presses * the spacebar. It is only useful for RIG_TYPE_TOGGLE_MAN and possibly for * RIG_TYPE_TOGGLE_AUTO. * * First, the function will try to lock the controller. If the lock is * acquired the function checks the current PTT status. * If PTT status is FALSE (off), it will set the TX frequency and set PTT to * TRUE (on). If PTT status is TRUE (on) it will simply set the PTT to FALSE * (off). * * This function assumes that the radio support set/get PTT, otherwise it makes * no sense to use it! */ static void manage_ptt_event(GtkRigCtrl * ctrl) { guint timeout = 1; gboolean ptt = FALSE; /* wait for controller to be idle or until the timeout triggers */ while (timeout < 5) { if (g_mutex_trylock(&(ctrl->busy)) == TRUE) { timeout = 17; /* use an arbitrary value that is large enough */ } else { /* wait for 100 msec */ g_usleep(100000); timeout++; } } if (timeout == 17) { /* timeout did not expire, we've got the controller lock */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Acquired controller lock"), __func__); if (ctrl->engaged == FALSE) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Controller not engaged; PTT event ignored " "(Hint: Enable the Engage button)"), __func__); } else { ptt = get_ptt(ctrl, ctrl->sock); if (ptt == FALSE) { /* PTT is OFF => set TX freq then set PTT to ON */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: PTT is OFF => Set TX freq and PTT=ON"), __func__); exec_toggle_tx_cycle(ctrl); set_ptt(ctrl, ctrl->sock, TRUE); } else { /* PTT is ON => set to OFF */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: PTT is ON = Set PTT=OFF"), __func__); set_ptt(ctrl, ctrl->sock, FALSE); } } g_mutex_unlock(&(ctrl->busy)); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to acquire controller lock; PTT event " "not handled"), __func__); } } /* * Catch events when the user presses the SPACE key on the keyboard. * This is used to toggle betweer RX/TX when using FT817/857/897 in manual mode. */ static gboolean key_press_cb(GtkWidget * widget, GdkEventKey * pKey, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(widget); gboolean event_managed = FALSE; (void)data; if (pKey->type == GDK_KEY_PRESS) { switch (pKey->keyval) { /* keyvals not in API docs. See for a complete list */ case GDK_KEY_space: sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Detected SPACEBAR pressed event"), __func__); /* manage PTT event but only if rig is of type TOGGLE_MAN */ if (ctrl->conf->type == RIG_TYPE_TOGGLE_MAN) { manage_ptt_event(ctrl); event_managed = TRUE; } break; default: sat_log_log(SAT_LOG_LEVEL_DEBUG, _ ("%s:%s: Keypress value %i not managed by this function"), __FILE__, __func__, pKey->keyval); break; } } return event_managed; } static gboolean open_rigctld_socket(radio_conf_t * conf, gint * sock) { struct sockaddr_in ServAddr; struct hostent *h; gint status; *sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (*sock < 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create socket"), __func__); *sock = 0; return FALSE; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Network socket created successfully"), __func__); } memset(&ServAddr, 0, sizeof(ServAddr)); /* Zero out structure */ ServAddr.sin_family = AF_INET; /* Internet address family */ h = gethostbyname(conf->host); memcpy((char *)&ServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); ServAddr.sin_port = htons(conf->port); /* Server port */ /* establish connection */ status = connect(*sock, (struct sockaddr *)&ServAddr, sizeof(ServAddr)); if (status < 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to connect to %s:%d"), __func__, conf->host, conf->port); *sock = 0; return FALSE; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Connection opened to %s:%d"), __func__, conf->host, conf->port); } return TRUE; } static gboolean close_rigctld_socket(gint * sock) { gint written; written = send(*sock, "q\x0a", 2, 0); if (written != 2) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Sent 2 bytes but sent %d."), __FILE__, __func__, written); } #ifndef WIN32 shutdown(*sock, SHUT_RDWR); close(*sock); #else shutdown(*sock, SD_BOTH); closesocket(*sock); #endif *sock = 0; return TRUE; } static void rigctrl_close(GtkRigCtrl * data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); ctrl->lastrxptt = FALSE; ctrl->lasttxptt = TRUE; ctrl->lasttxf = 0.0; ctrl->lastrxf = 0.0; remove_timer(ctrl); if ((ctrl->conf->type == RIG_TYPE_TOGGLE_AUTO) || (ctrl->conf->type == RIG_TYPE_TOGGLE_MAN)) { unset_toggle(ctrl, ctrl->sock); } if (ctrl->conf2 != NULL) { close_rigctld_socket(&(ctrl->sock2)); } close_rigctld_socket(&(ctrl->sock)); } static void rigctrl_open(GtkRigCtrl * data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); ctrl->wrops = 0; start_timer(ctrl); open_rigctld_socket(ctrl->conf, &(ctrl->sock)); /* set initial frequency */ if (ctrl->conf2 != NULL) { open_rigctld_socket(ctrl->conf2, &(ctrl->sock2)); /* set initial dual mode */ exec_dual_rig_cycle(ctrl); } else { switch (ctrl->conf->type) { case RIG_TYPE_RX: exec_rx_cycle(ctrl); break; case RIG_TYPE_TX: exec_tx_cycle(ctrl); break; case RIG_TYPE_TRX: exec_trx_cycle(ctrl); break; case RIG_TYPE_DUPLEX: /* set rig into SAT mode (hamlib needs it even if rig already in SAT) */ setup_split(ctrl); exec_duplex_cycle(ctrl); break; case RIG_TYPE_TOGGLE_AUTO: case RIG_TYPE_TOGGLE_MAN: set_toggle(ctrl, ctrl->sock); ctrl->last_toggle_tx = -1; exec_toggle_cycle(ctrl); break; default: /* this is an error! */ ctrl->conf->type = RIG_TYPE_RX; exec_rx_cycle(ctrl); break; } } } /* Communication thread for hamlib rigctld */ gpointer rigctl_run(gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); GtkRigCtrl *t_ctrl = GTK_RIG_CTRL(data); while (1) { t_ctrl = GTK_RIG_CTRL(g_async_queue_pop(ctrl->rigctlq)); ctrl = t_ctrl; while (g_main_context_iteration(NULL, FALSE)); if (t_ctrl == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: ERROR: NO VALID ctrl-struct"), __FILE__, __func__); continue; } if (t_ctrl->engaged) { if (!t_ctrl->sock) rigctrl_open(t_ctrl); if (!t_ctrl->timerid) start_timer(t_ctrl); } else { g_mutex_lock(&t_ctrl->widgetsync); if (t_ctrl->sock > 0) rigctrl_close(t_ctrl); if (t_ctrl->timerid) remove_timer(t_ctrl); g_cond_signal(&t_ctrl->widgetready); g_mutex_unlock(&t_ctrl->widgetsync); break; } check_aos_los(t_ctrl); if (t_ctrl->conf2 != NULL) { exec_dual_rig_cycle(t_ctrl); } else { /* Execute controller cycle depending on primary radio type */ switch (t_ctrl->conf->type) { case RIG_TYPE_RX: exec_rx_cycle(t_ctrl); break; case RIG_TYPE_TX: exec_tx_cycle(t_ctrl); break; case RIG_TYPE_TRX: exec_trx_cycle(t_ctrl); break; case RIG_TYPE_DUPLEX: exec_duplex_cycle(t_ctrl); break; case RIG_TYPE_TOGGLE_AUTO: case RIG_TYPE_TOGGLE_MAN: exec_toggle_cycle(t_ctrl); break; default: /* invalid mode */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid radio type %d. Setting type to " "RIG_TYPE_RX"), __FILE__, __func__, t_ctrl->conf->type); t_ctrl->conf->type = RIG_TYPE_RX; } } /* perform error count checking */ if (t_ctrl->errcnt >= MAX_ERROR_COUNT) { /* disengage device */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(t_ctrl->LockBut), FALSE); t_ctrl->engaged = FALSE; t_ctrl->errcnt = 0; sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!"), __FILE__, __func__, MAX_ERROR_COUNT); //g_print ("ERROR. WROPS = %d\n", ctrl->wrops); } //g_print (" WROPS = %d\n", ctrl->wrops); } if (t_ctrl->sock > 0) rigctrl_close(t_ctrl); if (t_ctrl->timerid) remove_timer(t_ctrl); return NULL; } void start_timer(GtkRigCtrl * data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); /* start timeout timer here ("Cycle")! */ if (ctrl->timerid > 0) g_source_remove(ctrl->timerid); ctrl->timerid = gdk_threads_add_timeout(ctrl->delay, rig_ctrl_timeout_cb, ctrl); } void remove_timer(GtkRigCtrl * data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); /* stop timer */ if (ctrl->timerid > 0) g_source_remove(ctrl->timerid); ctrl->timerid = 0; } void setconfig(gpointer data) { /* something has changed... */ GtkRigCtrl *ctrl = GTK_RIG_CTRL(data); if (ctrl != NULL) { g_async_queue_push(ctrl->rigctlq, ctrl); } } GtkWidget *gtk_rig_ctrl_new(GtkSatModule * module) { GtkRigCtrl *rigctrl; GtkWidget *widget; GtkWidget *table; if (!have_conf()) return NULL; widget = g_object_new(GTK_TYPE_RIG_CTRL, NULL); rigctrl = GTK_RIG_CTRL(widget); g_signal_connect(widget, "key-press-event", G_CALLBACK(key_press_cb), NULL); g_hash_table_foreach(module->satellites, store_sats, widget); GTK_RIG_CTRL(widget)->target = SAT(g_slist_nth_data(rigctrl->sats, 0)); rigctrl->qth = module->qth; if (rigctrl->target != NULL) { /* get next pass for target satellite */ GTK_RIG_CTRL(widget)->pass = get_next_pass(rigctrl->target, rigctrl->qth, 3.0); } /* create contents */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 10); gtk_grid_attach(GTK_GRID(table), create_downlink_widgets(rigctrl), 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), create_uplink_widgets(rigctrl), 1, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), create_target_widgets(rigctrl), 0, 1, 1, 1); gtk_grid_attach(GTK_GRID(table), create_conf_widgets(rigctrl), 1, 1, 1, 1); gtk_grid_attach(GTK_GRID(table), create_count_down_widgets(rigctrl), 0, 2, 2, 1); gtk_container_add(GTK_CONTAINER(rigctrl), table); if (module->target > 0) gtk_rig_ctrl_select_sat(rigctrl, module->target); return widget; } gpredict/src/gtk-rig-ctrl.h000066400000000000000000000107751427377236300161550ustar00rootroot00000000000000#ifndef __GTK_RIG_CTRL_H__ #define __GTK_RIG_CTRL_H__ 1 #include #include #include #include "gtk-sat-module.h" #include "predict-tools.h" #include "radio-conf.h" #include "sgpsdp/sgp4sdp4.h" #include "trsp-conf.h" #define GTK_TYPE_RIG_CTRL (gtk_rig_ctrl_get_type ()) #define GTK_RIG_CTRL(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_rig_ctrl_get_type (),\ GtkRigCtrl) #define GTK_RIG_CTRL_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_rig_ctrl_get_type (),\ GtkRigCtrlClass) #define IS_GTK_RIG_CTRL(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_rig_ctrl_get_type ()) typedef struct _gtk_rig_ctrl GtkRigCtrl; typedef struct _GtkRigCtrlClass GtkRigCtrlClass; struct _gtk_rig_ctrl { GtkBox box; GtkWidget *SatFreqDown; GtkWidget *RigFreqDown; GtkWidget *SatFreqUp; GtkWidget *RigFreqUp; GtkWidget *SatDopDown; /*!< Doppler shift down */ GtkWidget *SatDopUp; /*!< Doppler shift up */ GtkWidget *LoDown; /*!< LO of downconverter */ GtkWidget *LoUp; /*!z LO of upconverter */ /* target status labels */ GtkWidget *SatAz, *SatEl, *SatCnt; GtkWidget *SatRng, *SatRngRate, *SatDop; /* other widgets */ GtkWidget *SatSel; /*!< Satellite selector */ GtkWidget *TrspSel; /*!< Transponder selector */ GtkWidget *DevSel; /*!< Device selector */ GtkWidget *DevSel2; /*!< Second device selector */ GtkWidget *LockBut; GtkWidget *cycle_spin; /*!< Update timer cycle */ radio_conf_t *conf; /*!< Radio configuration */ radio_conf_t *conf2; /*!< Secondary radio configuration */ GSList *trsplist; /*!< List of available transponders */ trsp_t *trsp; /*!< Pointer to the current transponder configuration */ gboolean trsplock; /*!< Flag indicating whether uplink and downlink are lockled */ GSList *sats; /*!< List of sats in parent module */ sat_t *target; /*!< Target satellite */ pass_t *pass; /*!< Next pass of target satellite */ qth_t *qth; /*!< The QTH for this module */ double prev_ele; /*!< Previous elevation (used for AOS/LOS signalling) */ guint delay; /*!< Timeout delay. */ guint timerid; /*!< Timer ID */ gboolean tracking; /*!< Flag set when we are tracking a target. */ GMutex busy; /*!< Flag set when control algorithm is busy. */ gboolean engaged; /*!< Flag indicating that rig device is engaged. */ gint errcnt; /*!< Error counter. */ gboolean lastrxptt; /*!< PTT state of last rx cycle. */ gboolean lasttxptt; /*!< PTT state of last tx cycle. */ gdouble lastrxf; /*!< Last frequency sent to receiver. */ gdouble lasttxf; /*!< Last frequency sent to tranmitter. */ gdouble du, dd; /*!< Last computed up/down Doppler shift; computed in update() */ gint64 last_toggle_tx; /*!< Last time when exec_toggle_tx_cycle() was executed (seconds) -1 indicates that an update should be performed ASAP */ gint sock, sock2; /*!< Sockets for controlling the radio(s). */ /* debug related */ guint wrops; guint rdops; /* DL4PD */ /* threads related stuff */ /* add mutexes etc, to make threads reentrant! */ GMutex writelock; /*!< Mutex for blocking write operation */ GMutex rig_ctrl_updatelock; /*!< Mutex while updating widgets etc */ GMutex widgetsync; /*!< Mutex used while leaving (sync stuff) */ GCond widgetready; /*!< Condition when work is done (sync stuff) */ GAsyncQueue *rigctlq; /*!< Message queue to indicate something has changed */ GThread *rigctl_thread; /*!< Pointer to current rigctl-thread */ }; struct _GtkRigCtrlClass { GtkVBoxClass parent_class; }; GType gtk_rig_ctrl_get_type(void); GtkWidget *gtk_rig_ctrl_new(GtkSatModule * module); void gtk_rig_ctrl_update(GtkRigCtrl * ctrl, gdouble t); void gtk_rig_ctrl_select_sat(GtkRigCtrl * ctrl, gint catnum); #endif /* __GTK_RIG_CTRL_H__ */ gpredict/src/gtk-rot-ctrl.c000066400000000000000000001511611427377236300161660ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC Copyright (C) 2011 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* * Antenna rotator control window. * * The master rotator control UI is implemented as a Gtk+ Widget in order * to allow multiple instances. The widget is created from the module * popup menu and each module can have several rotator control windows * attached to it. Note, however, that current implementation only * allows one rotor control window per module. * */ #ifdef HAVE_CONFIG_H #include #endif /* NETWORK */ #ifndef WIN32 #include /* htons() */ #include /* gethostbyname() */ #include /* struct sockaddr_in */ #include /* socket(), connect(), send() */ #else #include #endif #include #include #include #include #include #include /* strerror() */ #include "compat.h" #include "gpredict-utils.h" #include "gtk-polar-plot.h" #include "gtk-rot-knob.h" #include "gtk-rot-ctrl.h" #include "predict-tools.h" #include "sat-log.h" #define FMTSTR "%7.2f\302\260" #define MAX_ERROR_COUNT 5 static GtkVBoxClass *parent_class = NULL; /* Open the rotcld socket. Returns file descriptor or -1 if an error occurs */ static gint rotctld_socket_open(const gchar * host, gint port) { struct sockaddr_in ServAddr; struct hostent *h; gint sock; gint status; sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("Failed to create rotctl socket: %s"), strerror(errno)); return sock; } sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Network socket created successfully"), __func__); memset(&ServAddr, 0, sizeof(ServAddr)); ServAddr.sin_family = AF_INET; /* Internet address family */ h = gethostbyname(host); if (h == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("Name resolution of rotctld server %s failed."), host); #ifdef WIN32 closesocket(sock); #else close(sock); #endif return -1; } memcpy((char *)&ServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); ServAddr.sin_port = htons(port); /* Server port */ /* establish connection */ status = connect(sock, (struct sockaddr *)&ServAddr, sizeof(ServAddr)); if (status == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("Connection to rotctld server at %s:%d failed: %s"), host, port, strerror(errno)); #ifdef WIN32 closesocket(sock); #else close(sock); #endif return -1; } sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Connection opened to %s:%d"), __func__, host, port); return sock; } /* Close a rotcld socket. First send a q command to cleanly shut down rotctld */ static void rotctld_socket_close(gint * sock) { gint written; /*shutdown the rotctld connect */ written = send(*sock, "q\x0a", 2, 0); if (written != 2) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Sent 2 bytes but sent %d."), __FILE__, __func__, written); } #ifndef WIN32 shutdown(*sock, SHUT_RDWR); close(*sock); #else shutdown(*sock, SD_BOTH); closesocket(*sock); #endif *sock = -1; } /* * Send a command to rotctld and read the response. * * Inputs are the socket, a string command, and a buffer and length for * returning the output from rotctld. */ static gboolean rotctld_socket_rw(gint sock, gchar * buff, gchar * buffout, gint sizeout) { gint written; gint size; size = strlen(buff); /* send command */ written = send(sock, buff, size, 0); if (written != size) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: SIZE ERROR %d / %d"), __func__, written, size); } if (written == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: rotctld Socket Down"), __func__); return FALSE; } /* try to read answer */ size = recv(sock, buffout, sizeout, 0); if (size == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: rotctld Socket Down"), __func__); return FALSE; } buffout[size] = '\0'; if (size == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Got 0 bytes from rotctld"), __FILE__, __func__); } return TRUE; } static gint sat_name_compare(sat_t * a, sat_t * b) { return (gpredict_strcmp(a->nickname, b->nickname)); } static gint rot_name_compare(const gchar * a, const gchar * b) { return (gpredict_strcmp(a, b)); } static gboolean is_flipped_pass(pass_t * pass, rot_az_type_t type, gdouble azstoppos) { gdouble max_az = 0, min_az = 0, offset = 0; gdouble caz, last_az = pass->aos_az; guint num, i; pass_detail_t *detail; gboolean retval = FALSE; num = g_slist_length(pass->details); if (type == ROT_AZ_TYPE_360) { min_az = 0; max_az = 360; } else if (type == ROT_AZ_TYPE_180) { min_az = -180; max_az = 180; } /* Offset by (azstoppos-min_az) to handle * rotators with non-default positions. * Note that the default positions of the rotator stops * (eg. -180 for ROT_AZ_TYPE_180, and 0 for * ROT_AZ_TYPE_360) will create an offset of 0, which * seems like a pretty sane default. */ offset = azstoppos - min_az; min_az += offset; max_az += offset; /* Assume that min_az and max_az are atleat 360 degrees apart get the azimuth that is in a settable range */ while (last_az > max_az) last_az -= 360; while (last_az < min_az) last_az += 360; if (num > 1) { for (i = 1; i < num - 1; i++) { detail = PASS_DETAIL(g_slist_nth_data(pass->details, i)); caz = detail->az; while (caz > max_az) caz -= 360; while (caz < min_az) caz += 360; if (fabs(caz - last_az) > 180) retval = TRUE; last_az = caz; } } caz = pass->los_az; while (caz > max_az) caz -= 360; while (caz < min_az) caz += 360; if (fabs(caz - last_az) > 180) retval = TRUE; return retval; } static inline void set_flipped_pass(GtkRotCtrl * ctrl) { if (ctrl->conf && ctrl->pass) ctrl->flipped = is_flipped_pass(ctrl->pass, ctrl->conf->aztype, ctrl->conf->azstoppos); } /** * Read rotator position from device. * * \param ctrl Pointer to the GtkRotCtrl widget. * \param az The current Az as read from the device * \param el The current El as read from the device * \return TRUE if the position was successfully retrieved, FALSE if an * error occurred. */ static gboolean get_pos(GtkRotCtrl * ctrl, gdouble * az, gdouble * el) { gchar *buff, **vbuff; gchar buffback[128]; gboolean retcode; if ((az == NULL) || (el == NULL)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: NULL storage."), __FILE__, __LINE__); return FALSE; } /* send command */ buff = g_strdup_printf("p\x0a"); retcode = rotctld_socket_rw(ctrl->client.socket, buff, buffback, 128); /* try to parse answer */ if (retcode) { if (strncmp(buffback, "RPRT", 4) == 0) { g_strstrip(buffback); sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: rotctld returned error (%s)"), __FILE__, __LINE__, buffback); retcode = FALSE; } else { vbuff = g_strsplit(buffback, "\n", 3); if ((vbuff[0] != NULL) && (vbuff[1] != NULL)) { *az = g_strtod(vbuff[0], NULL); *el = g_strtod(vbuff[1], NULL); } else { g_strstrip(buffback); sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: rotctld returned bad response (%s)"), __FILE__, __LINE__, buffback); retcode = FALSE; } g_strfreev(vbuff); } } g_free(buff); return retcode; } /** * Send new position to rotator device * * \param ctrl Pointer to the GtkRotCtrl widget * \param az The new Azimuth * \param el The new Elevation * \return TRUE if the new position has been sent successfully * FALSE if an error occurred * * \note The function does not perform any range check since the GtkRotKnob * should always keep its value within range. */ static gboolean set_pos(GtkRotCtrl * ctrl, gdouble az, gdouble el) { gchar *buff; gchar buffback[128]; gboolean retcode; gint retval; /* send command */ buff = g_strdup_printf("P %.2f %.2f\x0a", az, el); retcode = rotctld_socket_rw(ctrl->client.socket, buff, buffback, 128); g_free(buff); if (retcode == TRUE) { /* treat errors as soft errors */ retval = (gint) g_strtod(buffback + 4, NULL); if (retval != 0) { g_strstrip(buffback); sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%d: rotctld returned error %d with az %f el %f(%s)"), __FILE__, __LINE__, retval, az, el, buffback); retcode = FALSE; } } return (retcode); } /* Rotctl client thread */ static gpointer rotctld_client_thread(gpointer data) { gdouble elapsed_time; gdouble azi = 0.0; gdouble ele = 0.0; gboolean new_trg = FALSE; gboolean io_error = FALSE; GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); g_print("Starting rotctld client thread\n"); ctrl->client.socket = rotctld_socket_open(ctrl->conf->host, ctrl->conf->port); if (ctrl->client.socket == -1) return GINT_TO_POINTER(-1); ctrl->client.timer = g_timer_new(); ctrl->client.new_trg = FALSE; ctrl->client.running = TRUE; while (ctrl->client.running) { g_timer_start(ctrl->client.timer); io_error = FALSE; g_mutex_lock(&ctrl->client.mutex); if (ctrl->client.new_trg) { azi = ctrl->client.azi_out; ele = ctrl->client.ele_out; new_trg = ctrl->client.new_trg; } g_mutex_unlock(&ctrl->client.mutex); if (new_trg && !ctrl->monitor) { if (set_pos(ctrl, azi, ele)) new_trg = FALSE; else io_error = TRUE; } /* wait 100 ms before sending new command */ g_usleep(100000); if (!get_pos(ctrl, &azi, &ele)) io_error = TRUE; g_mutex_lock(&ctrl->client.mutex); ctrl->client.azi_in = azi; ctrl->client.ele_in = ele; ctrl->client.new_trg = new_trg; ctrl->client.io_error = io_error; g_mutex_unlock(&ctrl->client.mutex); /* ensure rotctl duty cycle stays below 50%, but wait at least 700 ms (TBC) */ elapsed_time = MAX(g_timer_elapsed(ctrl->client.timer, NULL), 0.7); g_usleep(elapsed_time * 1e6); } g_print("Stopping rotctld client thread\n"); g_timer_destroy(ctrl->client.timer); rotctld_socket_close(&ctrl->client.socket); return GINT_TO_POINTER(0); } /** * Update count down label. * * \param ctrl Pointer to the RotCtrl widget. * \param t The current time. * * This function calculates the new time to AOS/LOS of the currently * selected target and updates the ctrl->SatCnt label widget. */ static void update_count_down(GtkRotCtrl * ctrl, gdouble t) { gdouble targettime; gdouble delta; gchar *buff; guint h, m, s; /* select AOS or LOS time depending on target elevation */ if (ctrl->target->el < 0.0) targettime = ctrl->target->aos; else targettime = ctrl->target->los; delta = targettime - t; /* convert julian date to seconds */ s = (guint) (delta * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (h > 0) buff = g_strdup_printf("%02d:%02d:%02d", h, m, s); else buff = g_strdup_printf("%02d:%02d", m, s); gtk_label_set_text(GTK_LABEL(ctrl->SatCnt), buff); g_free(buff); } /* * Update rotator control state. * * This function is called by the parent, i.e. GtkSatModule, indicating that * the satellite data has been updated. The function updates the internal state * of the controller and the rotator. */ void gtk_rot_ctrl_update(GtkRotCtrl * ctrl, gdouble t) { gchar *buff; ctrl->t = t; if (ctrl->target) { /* update target displays */ buff = g_strdup_printf(FMTSTR, ctrl->target->az); gtk_label_set_text(GTK_LABEL(ctrl->AzSat), buff); g_free(buff); buff = g_strdup_printf(FMTSTR, ctrl->target->el); gtk_label_set_text(GTK_LABEL(ctrl->ElSat), buff); g_free(buff); update_count_down(ctrl, t); /*if the current pass is too far away */ if ((ctrl->pass != NULL)) if (qth_small_dist(ctrl->qth, ctrl->pass->qth_comp) > 1.0) { free_pass(ctrl->pass); ctrl->pass = NULL; ctrl->pass = get_pass(ctrl->target, ctrl->qth, t, 3.0); if (ctrl->pass) { set_flipped_pass(ctrl); /* update polar plot */ gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } } /* update next pass if necessary */ if (ctrl->pass != NULL) { /* if we are not in the current pass */ if ((ctrl->pass->aos > t) || (ctrl->pass->los < t)) { /* the pass may not have met the minimum elevation, calculate the pass and plot it */ if (ctrl->target->el >= 0.0) { /* inside an unexpected/unpredicted pass */ free_pass(ctrl->pass); ctrl->pass = NULL; ctrl->pass = get_current_pass(ctrl->target, ctrl->qth, t); set_flipped_pass(ctrl); gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } else if ((ctrl->target->aos - ctrl->pass->aos) > (ctrl->delay / secday / 1000 / 4.0)) { /* the target is expected to appear in a new pass sufficiently later after the current pass says */ /* converted milliseconds to gpredict time and took a fraction of it as a threshold for deciding a new pass */ /* if the next pass is not the one for the target */ free_pass(ctrl->pass); ctrl->pass = NULL; ctrl->pass = get_pass(ctrl->target, ctrl->qth, t, 3.0); set_flipped_pass(ctrl); /* update polar plot */ gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } } else { /* inside a pass and target dropped below the horizon so look for a new pass */ if (ctrl->target->el < 0.0) { free_pass(ctrl->pass); ctrl->pass = NULL; ctrl->pass = get_pass(ctrl->target, ctrl->qth, t, 3.0); set_flipped_pass(ctrl); /* update polar plot */ gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } } } else { /* we don't have any current pass; store the current one */ if (ctrl->target->el > 0.0) ctrl->pass = get_current_pass(ctrl->target, ctrl->qth, t); else ctrl->pass = get_pass(ctrl->target, ctrl->qth, t, 3.0); set_flipped_pass(ctrl); /* update polar plot */ gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } } } /* Select a satellite. */ void gtk_rot_ctrl_select_sat(GtkRotCtrl * ctrl, gint catnum) { sat_t *sat; int i, n; /* find index in satellite list */ n = g_slist_length(ctrl->sats); for (i = 0; i < n; i++) { sat = SAT(g_slist_nth_data(ctrl->sats, i)); if (sat && sat->tle.catnr == catnum) { /* assume the index is the same in sat selector */ gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->SatSel), i); break; } } } /* * Create azimuth control widgets. * * This function creates and initialises the widgets for controlling the * azimuth of the the rotator. */ static GtkWidget *create_az_widgets(GtkRotCtrl * ctrl) { GtkWidget *frame; GtkWidget *table; GtkWidget *label; frame = gtk_frame_new(_("Azimuth")); table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_container_add(GTK_CONTAINER(frame), table); ctrl->AzSet = gtk_rot_knob_new(0.0, 360.0, 180.0); gtk_grid_attach(GTK_GRID(table), ctrl->AzSet, 0, 0, 3, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Read:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); ctrl->AzRead = gtk_label_new(" --- "); g_object_set(ctrl->AzRead, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->AzRead, 1, 1, 1, 1); return frame; } /* * Create elevation control widgets. * * This function creates and initialises the widgets for controlling the * elevation of the the rotator. */ static GtkWidget *create_el_widgets(GtkRotCtrl * ctrl) { GtkWidget *frame; GtkWidget *table; GtkWidget *label; frame = gtk_frame_new(_("Elevation")); table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_container_add(GTK_CONTAINER(frame), table); ctrl->ElSet = gtk_rot_knob_new(0.0, 90.0, 45.0); gtk_grid_attach(GTK_GRID(table), ctrl->ElSet, 0, 0, 3, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Read: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); ctrl->ElRead = gtk_label_new(" --- "); g_object_set(ctrl->ElRead, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->ElRead, 1, 1, 1, 1); return frame; } /** * Manage toggle signals (tracking) * * \param button Pointer to the GtkToggle button. * \param data Pointer to the GtkRotCtrl widget. */ static void track_toggle_cb(GtkToggleButton * button, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); gboolean locked; locked = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ctrl->LockBut)); ctrl->tracking = gtk_toggle_button_get_active(button); gtk_widget_set_sensitive(ctrl->MonitorCheckBox, !(ctrl->tracking || locked)); gtk_widget_set_sensitive(ctrl->AzSet, !ctrl->tracking); gtk_widget_set_sensitive(ctrl->ElSet, !ctrl->tracking); } /** * Rotator controller timeout function * * \param data Pointer to the GtkRotCtrl widget. * \return Always TRUE to let the timer continue. */ static gboolean rot_ctrl_timeout_cb(gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); gdouble rotaz = 0.0, rotel = 0.0; gdouble setaz = 0.0, setel = 45.0; gchar *text; gboolean error = FALSE; sat_t sat_working, *sat; /* parameters for path predictions */ gdouble time_delta; gdouble step_size; #define SAFE_AZI(azi) CLAMP(azi, ctrl->conf->minaz, ctrl->conf->maxaz) #define SAFE_ELE(ele) CLAMP(ele, ctrl->conf->minel, ctrl->conf->maxel) /* If we are tracking and the target satellite is within range, set the rotor position controller knob values to the target values. If the target satellite is out of range set the rotor controller to 0 deg El and to the Az where the target sat is expected to come up or where it last went down */ if (ctrl->tracking && ctrl->target) { if (ctrl->target->el < 0.0) { if (ctrl->pass != NULL) { if (ctrl->t < ctrl->pass->aos) { setaz = SAFE_AZI(ctrl->pass->aos_az); setel = SAFE_ELE(0.0); } else if (ctrl->t > ctrl->pass->los) { setaz = SAFE_AZI(ctrl->pass->los_az); setel = SAFE_ELE(0.0); } } } else { setaz = SAFE_AZI(ctrl->target->az); setel = SAFE_ELE(ctrl->target->el); } /* if this is a flipped pass and the rotor supports it */ if ((ctrl->flipped) && (ctrl->conf->maxel >= 180.0)) { setel = 180 - setel; if (setaz > 180) setaz -= 180; else setaz += 180; while (setaz > ctrl->conf->maxaz) setaz -= 360; while (setaz < ctrl->conf->minaz) setaz += 360; } if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz > 180.0)) setaz = setaz - 360.0; if (!(ctrl->engaged)) { gtk_rot_knob_set_value(GTK_ROT_KNOB(ctrl->AzSet), setaz); gtk_rot_knob_set_value(GTK_ROT_KNOB(ctrl->ElSet), setel); } } else { /* the control ranges have already been limited by conf */ setaz = gtk_rot_knob_get_value(GTK_ROT_KNOB(ctrl->AzSet)); setel = gtk_rot_knob_get_value(GTK_ROT_KNOB(ctrl->ElSet)); } if ((ctrl->engaged) && (ctrl->conf != NULL)) { if (g_mutex_trylock(&ctrl->client.mutex)) { error = ctrl->client.io_error; rotaz = ctrl->client.azi_in; rotel = ctrl->client.ele_in; g_mutex_unlock(&ctrl->client.mutex); /* ensure Azimuth angle is 0-360 degrees */ while (rotaz < 0.0) rotaz += 360.0; while (rotaz > 360.0) rotaz -= 360.0; if (error) { gtk_label_set_text(GTK_LABEL(ctrl->AzRead), _("ERROR")); gtk_label_set_text(GTK_LABEL(ctrl->ElRead), _("ERROR")); gtk_polar_plot_set_rotor_pos(GTK_POLAR_PLOT(ctrl->plot), -10.0, -10.0); } else { /* update display widgets */ text = g_strdup_printf("%.2f\302\260", rotaz); gtk_label_set_text(GTK_LABEL(ctrl->AzRead), text); g_free(text); text = g_strdup_printf("%.2f\302\260", rotel); gtk_label_set_text(GTK_LABEL(ctrl->ElRead), text); g_free(text); if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (rotaz < 0.0)) { gtk_polar_plot_set_rotor_pos(GTK_POLAR_PLOT(ctrl->plot), rotaz + 360.0, rotel); } else { gtk_polar_plot_set_rotor_pos(GTK_POLAR_PLOT(ctrl->plot), rotaz, rotel); } } } /* if tolerance exceeded */ if ((fabs(setaz - rotaz) > ctrl->threshold) || (fabs(setel - rotel) > ctrl->threshold)) { if (ctrl->tracking) { /* if we are in a pass try to lead the satellite some so we are not always chasing it */ if (ctrl->target && ctrl->target->el > 0.0) { /* starting the rotator moving while we do some computation * can lead to errors later */ /* compute a time in the future when the position is within tolerance so and send the rotor there. */ /* use a working copy so data does not get corrupted */ sat = memcpy(&(sat_working), ctrl->target, sizeof(sat_t)); /* compute az/el in the future that is past end of pass or exceeds tolerance */ if (ctrl->pass) { /* the next point is before the end of the pass if there is one. */ time_delta = ctrl->pass->los - ctrl->t; } else { /* otherwise look 20 minutes into the future */ time_delta = 1.0 / 72.0; } /* have a minimum time delta */ step_size = time_delta / 2.0; if (step_size < ctrl->delay / 1000.0 / (secday)) { step_size = ctrl->delay / 1000.0 / (secday); } /* find a time when satellite is above horizon and at the edge of tolerance. the final step size needs to be smaller than delay. otherwise the az/el could be further away than tolerance the next time we enter the loop and we end up pushing ourselves away from the satellite. */ while (step_size > (ctrl->delay / 1000.0 / 4.0 / (secday))) { predict_calc(sat, ctrl->qth, ctrl->t + time_delta); /*update sat->az and sat->el to account for flips and az range */ if ((ctrl->flipped) && (ctrl->conf->maxel >= 180.0)) { sat->el = 180.0 - sat->el; if (sat->az > 180.0) sat->az -= 180.0; else sat->az += 180.0; } if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (sat->az > 180.0)) { sat->az = sat->az - 360.0; } if ((sat->el < 0.0) || (sat->el > 180.0) || (fabs(setaz - sat->az) > (ctrl->threshold)) || (fabs(setel - sat->el) > (ctrl->threshold))) { time_delta -= step_size; } else { time_delta += step_size; } step_size /= 2.0; } setel = SAFE_ELE(sat->el); setaz = SAFE_AZI(sat->az); } } /* send controller values to rotator device */ /* this is the newly computed value which should be ahead of the current position */ gtk_rot_knob_set_value(GTK_ROT_KNOB(ctrl->AzSet), setaz); gtk_rot_knob_set_value(GTK_ROT_KNOB(ctrl->ElSet), setel); if (g_mutex_trylock(&ctrl->client.mutex)) { ctrl->client.azi_out = setaz; ctrl->client.ele_out = setel; ctrl->client.new_trg = TRUE; g_mutex_unlock(&ctrl->client.mutex); } } /* check error status */ if (!error) { /* reset error counter */ ctrl->errcnt = 0; } else { if (ctrl->errcnt >= MAX_ERROR_COUNT) { /* disengage device */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ctrl->LockBut), FALSE); ctrl->engaged = FALSE; sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!"), __func__, MAX_ERROR_COUNT); ctrl->errcnt = 0; //g_print ("ERROR. WROPS: %d RDOPS: %d\n", ctrl->wrops, ctrl->rdops); } else { /* increment error counter */ ctrl->errcnt++; } } } else { /* ensure rotor pos is not visible on plot */ gtk_polar_plot_set_rotor_pos(GTK_POLAR_PLOT(ctrl->plot), -10.0, -10.0); } /* update target object on polar plot */ if (ctrl->target != NULL) { gtk_polar_plot_set_target_pos(GTK_POLAR_PLOT(ctrl->plot), ctrl->target->az, ctrl->target->el); } /* update controller circle on polar plot */ if (ctrl->conf != NULL) { if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz < 0.0)) { gtk_polar_plot_set_ctrl_pos(GTK_POLAR_PLOT(ctrl->plot), gtk_rot_knob_get_value(GTK_ROT_KNOB (ctrl->AzSet)) + 360.0, gtk_rot_knob_get_value(GTK_ROT_KNOB (ctrl->ElSet))); } else { gtk_polar_plot_set_ctrl_pos(GTK_POLAR_PLOT(ctrl->plot), gtk_rot_knob_get_value(GTK_ROT_KNOB (ctrl->AzSet)), gtk_rot_knob_get_value(GTK_ROT_KNOB (ctrl->ElSet))); } gtk_widget_queue_draw(ctrl->plot); } return TRUE; } /** * Manage cycle delay changes. * * \param spin Pointer to the spin button. * \param data Pointer to the GtkRotCtrl widget. * * This function is called when the user changes the value of the * cycle delay. */ static void delay_changed_cb(GtkSpinButton * spin, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); ctrl->delay = (guint) gtk_spin_button_get_value(spin); if (ctrl->conf) ctrl->conf->cycle = ctrl->delay; if (ctrl->timerid > 0) g_source_remove(ctrl->timerid); ctrl->timerid = g_timeout_add(ctrl->delay, rot_ctrl_timeout_cb, ctrl); } /** * Manage threshold changes * * \param spin Pointer to the spin button. * \param data Pointer to the GtkRotCtrl widget. * * This function is called when the user changes the value of the * tolerance. */ static void threshold_changed_cb(GtkSpinButton * spin, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); ctrl->threshold = gtk_spin_button_get_value(spin); if (ctrl->conf) ctrl->conf->threshold = ctrl->threshold; } /** * New rotor device selected. * * \param box Pointer to the rotor selector combo box. * \param data Pointer to the GtkRotCtrl widget. * * This function is called when the user selects a new rotor controller * device. */ static void rot_selected_cb(GtkComboBox * box, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); /* free previous configuration */ if (ctrl->conf != NULL) { g_free(ctrl->conf->name); g_free(ctrl->conf->host); g_free(ctrl->conf); } ctrl->conf = g_try_new(rotor_conf_t, 1); if (ctrl->conf == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to allocate memory for rotator config"), __FILE__, __LINE__); return; } /* load new configuration */ ctrl->conf->name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(box)); if (rotor_conf_read(ctrl->conf)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("Loaded new rotator configuration %s"), ctrl->conf->name); gtk_spin_button_set_value(GTK_SPIN_BUTTON(ctrl->cycle_spin), ctrl->conf->cycle); gtk_spin_button_set_value(GTK_SPIN_BUTTON(ctrl->thld_spin), ctrl->conf->threshold); /* update new ranges of the Az and El controller widgets */ gtk_rot_knob_set_range(GTK_ROT_KNOB(ctrl->AzSet), ctrl->conf->minaz, ctrl->conf->maxaz); gtk_rot_knob_set_range(GTK_ROT_KNOB(ctrl->ElSet), ctrl->conf->minel, ctrl->conf->maxel); /* Update flipped when changing rotor if there is a plot */ set_flipped_pass(ctrl); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to load rotator configuration %s"), __FILE__, __LINE__, ctrl->conf->name); g_free(ctrl->conf->name); if (ctrl->conf->host) g_free(ctrl->conf->host); g_free(ctrl->conf); ctrl->conf = NULL; } } /** * Monitor mode * * Inhibits command transmission */ static void rot_monitor_cb(GtkCheckButton * button, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); ctrl->monitor = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); gtk_widget_set_sensitive(ctrl->AzSet, !ctrl->monitor); gtk_widget_set_sensitive(ctrl->ElSet, !ctrl->monitor); gtk_widget_set_sensitive(ctrl->track, !ctrl->monitor); } /** * Rotor locked. * * \param button Pointer to the "Engage" button. * \param data Pointer to the GtkRotCtrl widget. * * This function is called when the user toggles the "Engage" button. */ static void rot_locked_cb(GtkToggleButton * button, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); gchar *buff; gchar buffback[128]; gboolean retcode; gint retval; if (!gtk_toggle_button_get_active(button)) { ctrl->engaged = FALSE; gtk_widget_set_sensitive(ctrl->DevSel, TRUE); gtk_label_set_text(GTK_LABEL(ctrl->AzRead), "---"); gtk_label_set_text(GTK_LABEL(ctrl->ElRead), "---"); if (!ctrl->client.running) /* client thread is not running; nothing to do */ return; /* stop moving rotor */ /** FIXME: should use high level func */ buff = g_strdup_printf("S\x0a"); retcode = rotctld_socket_rw(ctrl->client.socket, buff, buffback, 128); g_free(buff); if (retcode == TRUE) { /* treat errors as soft errors */ retval = (gint) g_strtod(buffback + 4, NULL); if (retval != 0) { g_strstrip(buffback); sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%d: rotctld returned error %d with stop-cmd (%s)"), __FILE__, __LINE__, retval, buffback); } } ctrl->client.running = FALSE; g_thread_join(ctrl->client.thread); } else { if (ctrl->conf == NULL) { /* we don't have a working configuration */ sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Controller does not have a valid configuration"), __func__); return; } ctrl->client.thread = g_thread_new("gpredict_rotctl", rotctld_client_thread, ctrl); gtk_widget_set_sensitive(ctrl->DevSel, FALSE); ctrl->engaged = TRUE; } } /** * Manage satellite selections * * \param satsel Pointer to the GtkComboBox. * \param data Pointer to the GtkRotCtrl widget. * * This function is called when the user selects a new satellite. */ static void sat_selected_cb(GtkComboBox * satsel, gpointer data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(data); gint i; i = gtk_combo_box_get_active(satsel); if (i >= 0) { ctrl->target = SAT(g_slist_nth_data(ctrl->sats, i)); /* update next pass */ if (ctrl->pass != NULL) free_pass(ctrl->pass); if (ctrl->target->el > 0.0) ctrl->pass = get_current_pass(ctrl->target, ctrl->qth, ctrl->t); else ctrl->pass = get_pass(ctrl->target, ctrl->qth, ctrl->t, 3.0); set_flipped_pass(ctrl); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid satellite selection: %d"), __FILE__, __func__, i); /* clear pass just in case... */ if (ctrl->pass != NULL) { free_pass(ctrl->pass); ctrl->pass = NULL; } } /* in either case, we set the new pass (even if NULL) on the polar plot */ if (ctrl->plot != NULL) gtk_polar_plot_set_pass(GTK_POLAR_PLOT(ctrl->plot), ctrl->pass); } /* Create target widgets */ static GtkWidget *create_target_widgets(GtkRotCtrl * ctrl) { GtkWidget *frame, *table, *label; gchar *buff; guint i, n; sat_t *sat = NULL; buff = g_strdup_printf(FMTSTR, 0.0); table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); /* sat selector */ ctrl->SatSel = gtk_combo_box_text_new(); n = g_slist_length(ctrl->sats); for (i = 0; i < n; i++) { sat = SAT(g_slist_nth_data(ctrl->sats, i)); if (sat) gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ctrl->SatSel), sat->nickname); } gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->SatSel), 0); gtk_widget_set_tooltip_text(ctrl->SatSel, _("Select target object")); g_signal_connect(ctrl->SatSel, "changed", G_CALLBACK(sat_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->SatSel, 0, 0, 2, 1); /* tracking button */ ctrl->track = gtk_toggle_button_new_with_label(_("Track")); gtk_widget_set_tooltip_text(ctrl->track, _ ("Track the satellite when it is within range")); gtk_grid_attach(GTK_GRID(table), ctrl->track, 2, 0, 1, 1); g_signal_connect(ctrl->track, "toggled", G_CALLBACK(track_toggle_cb), ctrl); /* Azimuth */ label = gtk_label_new(_("Az:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); ctrl->AzSat = gtk_label_new(buff); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->AzSat, 1, 1, 1, 1); /* Elevation */ label = gtk_label_new(_("El:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); ctrl->ElSat = gtk_label_new(buff); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->ElSat, 1, 2, 1, 1); /* count down */ label = gtk_label_new(_("\316\224T:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); ctrl->SatCnt = gtk_label_new("00:00:00"); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), ctrl->SatCnt, 1, 3, 1, 1); frame = gtk_frame_new(_("Target")); gtk_container_add(GTK_CONTAINER(frame), table); g_free(buff); return frame; } static GtkWidget *create_conf_widgets(GtkRotCtrl * ctrl) { GtkWidget *frame, *table, *label; GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ gchar **vbuff; const gchar *filename; /* file name */ gchar *rotname; table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); label = gtk_label_new(_("Device:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); ctrl->DevSel = gtk_combo_box_text_new(); gtk_widget_set_tooltip_text(ctrl->DevSel, _("Select antenna rotator device")); /* open configuration directory */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rot file */ GSList *rots = NULL; gint i; gint n; while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rot")) { vbuff = g_strsplit(filename, ".rot", 0); rots = g_slist_insert_sorted(rots, g_strdup(vbuff[0]), (GCompareFunc) rot_name_compare); g_strfreev(vbuff); } } n = g_slist_length(rots); for (i = 0; i < n; i++) { rotname = g_slist_nth_data(rots, i); if (rotname) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (ctrl->DevSel), rotname); g_free(rotname); } } g_slist_free(rots); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); gtk_combo_box_set_active(GTK_COMBO_BOX(ctrl->DevSel), 0); g_signal_connect(ctrl->DevSel, "changed", G_CALLBACK(rot_selected_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->DevSel, 1, 0, 1, 1); /* Engage button */ ctrl->LockBut = gtk_toggle_button_new_with_label(_("Engage")); gtk_widget_set_tooltip_text(ctrl->LockBut, _("Engage the selected rotor device")); g_signal_connect(ctrl->LockBut, "toggled", G_CALLBACK(rot_locked_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->LockBut, 2, 0, 1, 1); /* Monitor checkbox */ ctrl->MonitorCheckBox = gtk_check_button_new_with_label(_("Monitor")); gtk_widget_set_tooltip_text(ctrl->MonitorCheckBox, _("Monitor rotator but do not send any " "position commands")); g_signal_connect(ctrl->MonitorCheckBox, "toggled", G_CALLBACK(rot_monitor_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->MonitorCheckBox, 1, 1, 1, 1); /* cycle period */ label = gtk_label_new(_("Cycle:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); ctrl->cycle_spin = gtk_spin_button_new_with_range(10, 10000, 10); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(ctrl->cycle_spin), 0); gtk_widget_set_tooltip_text(ctrl->cycle_spin, _("This parameter controls the delay between " "commands sent to the rotator.")); g_signal_connect(ctrl->cycle_spin, "value-changed", G_CALLBACK(delay_changed_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->cycle_spin, 1, 2, 1, 1); label = gtk_label_new(_("msec")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 2, 1, 1); /* Tolerance */ label = gtk_label_new(_("Threshold:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); ctrl->thld_spin = gtk_spin_button_new_with_range(0.01, 50.0, 0.01); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(ctrl->thld_spin), 2); gtk_widget_set_tooltip_text(ctrl->thld_spin, _("This parameter sets the threshold that triggers " "new motion command to the rotator.\n" "If the difference between the target and " "rotator values is smaller than the " "threshold, no new commands are sent")); g_signal_connect(ctrl->thld_spin, "value-changed", G_CALLBACK(threshold_changed_cb), ctrl); gtk_grid_attach(GTK_GRID(table), ctrl->thld_spin, 1, 3, 1, 1); label = gtk_label_new(_("deg")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); /* load initial rotator configuration */ rot_selected_cb(GTK_COMBO_BOX(ctrl->DevSel), ctrl); frame = gtk_frame_new(_("Settings")); gtk_container_add(GTK_CONTAINER(frame), table); return frame; } /* Create target widgets */ static GtkWidget *create_plot_widget(GtkRotCtrl * ctrl) { GtkWidget *frame; ctrl->plot = gtk_polar_plot_new(ctrl->qth, ctrl->pass); frame = gtk_frame_new(NULL); gtk_container_add(GTK_CONTAINER(frame), ctrl->plot); return frame; } /** Copy satellite from hash table to singly linked list. */ static void store_sats(gpointer key, gpointer value, gpointer user_data) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(user_data); sat_t *sat = SAT(value); (void)key; /* avoid unused variable warning */ ctrl->sats = g_slist_insert_sorted(ctrl->sats, sat, (GCompareFunc) sat_name_compare); } /** Check that we have at least one .rot file */ static gboolean have_conf() { GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ const gchar *filename; /* file name */ gint i = 0; /* open configuration directory */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rot file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rot")) { i++; /*once we have one we need nothing else */ break; } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); return (i > 0) ? TRUE : FALSE; } static void gtk_rot_ctrl_init(GtkRotCtrl * ctrl, gpointer g_class) { (void)g_class; ctrl->sats = NULL; ctrl->target = NULL; ctrl->pass = NULL; ctrl->qth = NULL; ctrl->plot = NULL; ctrl->tracking = FALSE; ctrl->engaged = FALSE; ctrl->delay = 1000; ctrl->timerid = 0; ctrl->threshold = 5.0; ctrl->errcnt = 0; g_mutex_init(&ctrl->client.mutex); ctrl->client.thread = NULL; ctrl->client.socket = -1; ctrl->client.running = FALSE; } static void gtk_rot_ctrl_destroy(GtkWidget * widget) { GtkRotCtrl *ctrl = GTK_ROT_CTRL(widget); /* stop timer */ if (ctrl->timerid > 0) g_source_remove(ctrl->timerid); /* free configuration */ if (ctrl->conf != NULL) { rotor_conf_save(ctrl->conf); g_free(ctrl->conf->name); g_free(ctrl->conf->host); g_free(ctrl->conf); ctrl->conf = NULL; } /* stop client thread */ if (ctrl->client.running) { ctrl->client.running = FALSE; g_thread_join(ctrl->client.thread); } g_mutex_clear(&ctrl->client.mutex); (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_rot_ctrl_class_init(GtkRotCtrlClass * class, gpointer class_data) { GtkWidgetClass *widget_class = (GtkWidgetClass *) class; (void)class_data; widget_class->destroy = gtk_rot_ctrl_destroy; parent_class = g_type_class_peek_parent(class); } GType gtk_rot_ctrl_get_type() { static GType gtk_rot_ctrl_type = 0; if (!gtk_rot_ctrl_type) { static const GTypeInfo gtk_rot_ctrl_info = { sizeof(GtkRotCtrlClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_rot_ctrl_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkRotCtrl), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_rot_ctrl_init, NULL }; gtk_rot_ctrl_type = g_type_register_static(GTK_TYPE_BOX, "GtkRotCtrl", >k_rot_ctrl_info, 0); } return gtk_rot_ctrl_type; } GtkWidget *gtk_rot_ctrl_new(GtkSatModule * module) { GtkRotCtrl *rot_ctrl; GtkWidget *table; /* check that we have rot conf */ if (!have_conf()) return NULL; rot_ctrl = GTK_ROT_CTRL(g_object_new(GTK_TYPE_ROT_CTRL, NULL)); /* store satellites */ g_hash_table_foreach(module->satellites, store_sats, rot_ctrl); rot_ctrl->target = SAT(g_slist_nth_data(rot_ctrl->sats, 0)); /* store current time (don't know if real or simulated) */ rot_ctrl->t = module->tmgCdnum; /* store QTH */ rot_ctrl->qth = module->qth; /* get next pass for target satellite */ if (rot_ctrl->target) { if (rot_ctrl->target->el > 0.0) { rot_ctrl->pass = get_current_pass(rot_ctrl->target, rot_ctrl->qth, 0.0); } else { rot_ctrl->pass = get_next_pass(rot_ctrl->target, rot_ctrl->qth, 3.0); } } /* create contents */ table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 0); gtk_grid_attach(GTK_GRID(table), create_az_widgets(rot_ctrl), 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), create_el_widgets(rot_ctrl), 1, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), create_target_widgets(rot_ctrl), 0, 1, 1, 1); gtk_grid_attach(GTK_GRID(table), create_conf_widgets(rot_ctrl), 1, 1, 1, 1); gtk_box_pack_start(GTK_BOX(rot_ctrl), create_plot_widget(rot_ctrl), TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(rot_ctrl), table, FALSE, FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(rot_ctrl), 5); rot_ctrl->timerid = g_timeout_add(rot_ctrl->delay, rot_ctrl_timeout_cb, rot_ctrl); if (module->target > 0) gtk_rot_ctrl_select_sat(rot_ctrl, module->target); return GTK_WIDGET(rot_ctrl); } gpredict/src/gtk-rot-ctrl.h000066400000000000000000000065151427377236300161750ustar00rootroot00000000000000#ifndef __GTK_ROT_CTRL_H__ #define __GTK_ROT_CTRL_H__ 1 #include #include #include #include "gtk-sat-module.h" #include "predict-tools.h" #include "rotor-conf.h" #include "sgpsdp/sgp4sdp4.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define GTK_TYPE_ROT_CTRL (gtk_rot_ctrl_get_type ()) #define GTK_ROT_CTRL(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_rot_ctrl_get_type (),\ GtkRotCtrl) #define GTK_ROT_CTRL_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_rot_ctrl_get_type (),\ GtkRotCtrlClass) #define IS_GTK_ROT_CTRL(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_rot_ctrl_get_type ()) typedef struct _gtk_rot_ctrl GtkRotCtrl; typedef struct _GtkRotCtrlClass GtkRotCtrlClass; struct _gtk_rot_ctrl { GtkBox box; /* Azimuth widgets */ GtkWidget *AzSat, *AzSet, *AzRead, *AzDevSel; /* Elevation widgets */ GtkWidget *ElSat, *ElSet, *ElRead, *ElDevSel, *ElDev; /* other widgets */ GtkWidget *SatSel; GtkWidget *SatCnt; GtkWidget *DevSel; GtkWidget *plot; /*!< Polar plot widget */ GtkWidget *LockBut; GtkWidget *MonitorCheckBox; GtkWidget *track; GtkWidget *cycle_spin; /*!< Update timer cycle */ GtkWidget *thld_spin; /*!< Threshold spin */ rotor_conf_t *conf; gdouble t; /*!< Time when sat data last has been updated. */ /* satellites */ GSList *sats; /*!< List of sats in parent module */ sat_t *target; /*!< Target satellite */ pass_t *pass; /*!< Next pass of target satellite */ qth_t *qth; /*!< The QTH for this module */ gboolean flipped; /*!< Whether the current pass loaded is a flip pass or not */ guint delay; /*!< Timeout delay. */ guint timerid; /*!< Timer ID */ gdouble threshold; /*!< Motion threshold */ gboolean tracking; /*!< Flag set when we are tracking a target. */ gboolean monitor; /*!< Flag indicating that rig is in monitor mode. */ gboolean engaged; /*!< Flag indicating that rotor device is engaged. */ gint errcnt; /*!< Error counter. */ /* TCP client to rotctld */ struct { GThread *thread; GTimer *timer; GMutex mutex; gint socket; /* network socket to rotctld */ gfloat azi_in; /* last AZI angle read from rotctld */ gfloat ele_in; /* last ELE angle read from rotctld */ gfloat azi_out; /* AZI target */ gfloat ele_out; /* ELE target */ gboolean new_trg; /* new target position set */ gboolean running; gboolean io_error; } client; }; struct _GtkRotCtrlClass { GtkBoxClass parent_class; }; GType gtk_rot_ctrl_get_type(void); GtkWidget *gtk_rot_ctrl_new(GtkSatModule * module); void gtk_rot_ctrl_update(GtkRotCtrl * ctrl, gdouble t); void gtk_rot_ctrl_select_sat(GtkRotCtrl * ctrl, gint catnum); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GTK_ROT_CTRL_H__ */ gpredict/src/gtk-rot-knob.c000066400000000000000000000411471427377236300161550ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include #ifdef HAVE_CONFIG_H #include #endif #include "gtk-rot-knob.h" #define FMTSTR "%c" static GtkHBoxClass *parent_class = NULL; /* Convert digit index (in the digit array) to amount of change. */ const gdouble INDEX_TO_DELTA[] = { 0.0, 100.0, 10.0, 1.0, 0.0, 0.1, 0.01 }; static void gtk_rot_knob_destroy(GtkWidget * widget) { (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_rot_knob_class_init(GtkRotKnobClass * class, gpointer class_data) { GtkWidgetClass *widget_class = (GtkWidgetClass *) class; (void)class_data; widget_class->destroy = gtk_rot_knob_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_rot_knob_init(GtkRotKnob * knob, gpointer g_class) { (void)knob; (void)g_class; } /* * Update rotor display widget. * * @param knob The rotor control widget. * */ static void gtk_rot_knob_update(GtkRotKnob * knob) { gchar b[7]; gchar *buff; guint i; g_ascii_formatd(b, 8, "%6.2f", fabs(knob->value)); /* set label markups */ for (i = 0; i < 6; i++) { buff = g_strdup_printf(FMTSTR, b[i]); gtk_label_set_markup(GTK_LABEL(knob->digits[i + 1]), buff); g_free(buff); } if (knob->value < 0) buff = g_strdup_printf(FMTSTR, '-'); else buff = g_strdup_printf(FMTSTR, ' '); gtk_label_set_markup(GTK_LABEL(knob->digits[0]), buff); g_free(buff); } /* * Button clicked event. * * @param button The button that was clicked. * @param data Pointer to the GtkRotKnob widget. * */ static void button_clicked_cb(GtkWidget * button, gpointer data) { GtkRotKnob *knob = GTK_ROT_KNOB(data); gdouble delta = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "delta")) / 100.0; if ((delta > 0.0) && ((knob->value + delta) <= knob->max + .005)) { knob->value += delta; if (knob->value > knob->max) { knob->value = knob->max; } } else if ((delta < 0.0) && ((knob->value + delta) >= knob->min - .005)) { knob->value += delta; if (knob->value < knob->min) { knob->value = knob->min; } } gtk_rot_knob_update(knob); } /* * Manage button press events * * @param digit Pointer to the event box that received the event * @param event Pointer to the GdkEventButton that contains details for te event * @param data Pointer to the GtkRotKnob widget (we need it to update the value) * @return Always TRUE to prevent further propagation of the event * * This function is called when a mouse button is pressed on a digit. This is used * to increment or decrement the value: * - Left button: up * - Right button: down * - Middle button: set digit to 0 (TBC) * * Wheel up/down are managed in a separate callback since these are treated as scroll events * rather than button press events (they used to be button press events though) * * The digit labels are stored in an array that also contains the sign and the * decimal separator. To get the amount of change corresponding to the clicked label we * can use the INDEX_TO_DELTA[] array. The index to this table is attached to the evtbox. * Whether the delta is positive or negative depends on which mouse button triggered the event. */ static gboolean on_button_press(GtkWidget * evtbox, GdkEventButton * event, gpointer data) { GtkRotKnob *knob = GTK_ROT_KNOB(data); guint idx = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(evtbox), "index")); gdouble delta = INDEX_TO_DELTA[idx]; gdouble value; if (delta < 0.01) { /* no change, user clicked on sign or decimal separator */ return TRUE; } if (event->type != GDK_BUTTON_PRESS) { /* wrong event (not possible?) */ return TRUE; } switch (event->button) { /* left button */ case 1: value = gtk_rot_knob_get_value(knob) + delta; gtk_rot_knob_set_value(knob, value); break; /* middle button */ case 2: break; /* right button */ case 3: value = gtk_rot_knob_get_value(knob) - delta; gtk_rot_knob_set_value(knob, value); break; default: break; } return TRUE; } /* * Manage scroll wheel events * * @param digit Pointer to the event box that received the event * @param event Pointer to the GdkEventScroll that contains details for te event * @param data Pointer to the GtkRotKnob widget (we need it to update the value) * @return Always TRUE to prevent further propagation of the event * * This function is called when the mouse wheel is moved up or down. This is used to increment * or decrement the value. * * Button presses are managed in a separate callback since these are treated as different * events. * * The digit labels are stored in an array that also contains the sign and the * decimal separator. To get the amount of change corresponding to the clicked label we * can use the INDEX_TO_DELTA[] array. The index is attached to the evtbox. * Whether the delta is positive or negative depends on the scroll direction. */ static gboolean on_button_scroll(GtkWidget * evtbox, GdkEventScroll * event, gpointer data) { GtkRotKnob *knob = GTK_ROT_KNOB(data); guint idx = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(evtbox), "index")); gdouble delta = INDEX_TO_DELTA[idx]; gdouble value; if (delta < 0.01) { /* no change, user clicked on sign or decimal separator */ return TRUE; } if (event->type != GDK_SCROLL) { /* wrong event (not possible?) */ return TRUE; } switch (event->direction) { /* decrease value by delta */ case GDK_SCROLL_DOWN: case GDK_SCROLL_LEFT: value = gtk_rot_knob_get_value(knob) - delta; gtk_rot_knob_set_value(knob, value); break; /* increase value by delta */ case GDK_SCROLL_UP: case GDK_SCROLL_RIGHT: value = gtk_rot_knob_get_value(knob) + delta; gtk_rot_knob_set_value(knob, value); break; default: break; } return TRUE; } GType gtk_rot_knob_get_type() { static GType gtk_rot_knob_type = 0; if (!gtk_rot_knob_type) { static const GTypeInfo gtk_rot_knob_info = { sizeof(GtkRotKnobClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_rot_knob_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkRotKnob), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_rot_knob_init, NULL }; gtk_rot_knob_type = g_type_register_static(GTK_TYPE_BOX, "GtkRotKnob", >k_rot_knob_info, 0); } return gtk_rot_knob_type; } /* * Set the range of the control widget * * @param knob The rotor control widget. * @param min The new lower limit of the control widget. * @param max The new upper limit of the control widget. */ void gtk_rot_knob_set_range(GtkRotKnob * knob, gdouble min, gdouble max) { gtk_rot_knob_set_min(knob, min); gtk_rot_knob_set_max(knob, max); } /* * Set the value of the rotor control widget. * * @param knob The rotor control widget. * @param val The new value. * */ void gtk_rot_knob_set_value(GtkRotKnob * knob, gdouble val) { /* set the new value */ if (val <= knob->min) knob->value = knob->min; else if (val >= knob->max) knob->value = knob->max; else knob->value = val; /* update the display */ gtk_rot_knob_update(knob); } /* * Get the current value of the rotor control widget. * * @param knob The rotor control widget. * @return The current value. * * Hint: For reading the value you can also access knob->value. * */ gdouble gtk_rot_knob_get_value(GtkRotKnob * knob) { return knob->value; } /* * Get the upper limit of the control widget * * @param knob The rotor control widget. * @return The upper limit of the control widget. */ gdouble gtk_rot_knob_get_max(GtkRotKnob * knob) { return knob->max; } /* * Get the lower limit of the control widget * * @param knob The rotor control widget. * @return The lower limit of the control widget. */ gdouble gtk_rot_knob_get_min(GtkRotKnob * knob) { return knob->min; } /* * Set the lower limit of the control widget * * @param knob The rotor control widget. * @param min The new lower limit of the control widget. */ void gtk_rot_knob_set_min(GtkRotKnob * knob, gdouble min) { /* just some sanity check we have only 3 digits */ if (min < 1000) { knob->min = min; /* ensure that current value is within range */ if (knob->value < knob->min) { knob->value = knob->min; gtk_rot_knob_update(knob); } } } /* * Set the upper limit of the control widget * * @param knob The rotor control widget. * @param min The new upper limit of the control widget. */ void gtk_rot_knob_set_max(GtkRotKnob * knob, gdouble max) { /* just some sanity check we have only 3 digits */ if (max < 1000) { knob->max = max; /* ensure that current value is within range */ if (knob->value > knob->max) { knob->value = knob->max; gtk_rot_knob_update(knob); } } } /* * Create a new rotor control widget. * * @param min The lower limit in decimal degrees. * @param max The upper limit in decimal degrees. * @param val The initial value of the control. * @return A new rotor control widget. * */ GtkWidget *gtk_rot_knob_new(gdouble min, gdouble max, gdouble val) { GtkRotKnob *knob; GtkWidget *widget; GtkWidget *table; GtkWidget *label; guint i; widget = g_object_new(GTK_TYPE_ROT_KNOB, NULL); knob = GTK_ROT_KNOB(widget); knob->min = min; knob->max = max; knob->value = val; table = gtk_grid_new(); /* +100 deg */ knob->buttons[0] = gtk_button_new_with_label("\342\226\264"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[0]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[0]), "delta", GINT_TO_POINTER(10000)); gtk_grid_attach(GTK_GRID(table), knob->buttons[0], 1, 0, 1, 1); g_signal_connect(knob->buttons[0], "clicked", G_CALLBACK(button_clicked_cb), widget); /* +10 deg */ knob->buttons[1] = gtk_button_new_with_label("\342\226\264"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[1]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[1]), "delta", GINT_TO_POINTER(1000)); gtk_grid_attach(GTK_GRID(table), knob->buttons[1], 2, 0, 1, 1); g_signal_connect(knob->buttons[1], "clicked", G_CALLBACK(button_clicked_cb), widget); /* +1 deg */ knob->buttons[2] = gtk_button_new_with_label("\342\226\264"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[2]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[2]), "delta", GINT_TO_POINTER(100)); gtk_grid_attach(GTK_GRID(table), knob->buttons[2], 3, 0, 1, 1); g_signal_connect(knob->buttons[2], "clicked", G_CALLBACK(button_clicked_cb), widget); /* +0.1 deg */ knob->buttons[3] = gtk_button_new_with_label("\342\226\264"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[3]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[3]), "delta", GINT_TO_POINTER(10)); gtk_grid_attach(GTK_GRID(table), knob->buttons[3], 5, 0, 1, 1); g_signal_connect(knob->buttons[3], "clicked", G_CALLBACK(button_clicked_cb), widget); /* +0.01 deg */ knob->buttons[4] = gtk_button_new_with_label("\342\226\264"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[4]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[4]), "delta", GINT_TO_POINTER(1)); gtk_grid_attach(GTK_GRID(table), knob->buttons[4], 6, 0, 1, 1); g_signal_connect(knob->buttons[4], "clicked", G_CALLBACK(button_clicked_cb), widget); /* -100 deg */ knob->buttons[5] = gtk_button_new_with_label("\342\226\276"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[5]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[5]), "delta", GINT_TO_POINTER(-10000)); gtk_grid_attach(GTK_GRID(table), knob->buttons[5], 1, 2, 1, 1); g_signal_connect(knob->buttons[5], "clicked", G_CALLBACK(button_clicked_cb), widget); /* -10 deg */ knob->buttons[6] = gtk_button_new_with_label("\342\226\276"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[6]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[6]), "delta", GINT_TO_POINTER(-1000)); gtk_grid_attach(GTK_GRID(table), knob->buttons[6], 2, 2, 1, 1); g_signal_connect(knob->buttons[6], "clicked", G_CALLBACK(button_clicked_cb), widget); /* -1 deg */ knob->buttons[7] = gtk_button_new_with_label("\342\226\276"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[7]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[7]), "delta", GINT_TO_POINTER(-100)); gtk_grid_attach(GTK_GRID(table), knob->buttons[7], 3, 2, 1, 1); g_signal_connect(knob->buttons[7], "clicked", G_CALLBACK(button_clicked_cb), widget); /* -0.1 deg */ knob->buttons[8] = gtk_button_new_with_label("\342\226\276"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[8]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[8]), "delta", GINT_TO_POINTER(-10)); gtk_grid_attach(GTK_GRID(table), knob->buttons[8], 5, 2, 1, 1); g_signal_connect(knob->buttons[8], "clicked", G_CALLBACK(button_clicked_cb), widget); /* -0.01 deg */ knob->buttons[9] = gtk_button_new_with_label("\342\226\276"); gtk_button_set_relief(GTK_BUTTON(knob->buttons[9]), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(knob->buttons[9]), "delta", GINT_TO_POINTER(-1)); gtk_grid_attach(GTK_GRID(table), knob->buttons[9], 6, 2, 1, 1); g_signal_connect(knob->buttons[9], "clicked", G_CALLBACK(button_clicked_cb), widget); /* create labels */ for (i = 0; i < 7; i++) { /* labels showing the digits */ knob->digits[i] = gtk_label_new(NULL); gtk_widget_set_tooltip_text(knob->digits[i], _ ("Use mouse buttons and wheel to change value")); /* Event boxes for catching mouse evetns */ knob->evtbox[i] = gtk_event_box_new(); g_object_set_data(G_OBJECT(knob->evtbox[i]), "index", GUINT_TO_POINTER(i)); gtk_container_add(GTK_CONTAINER(knob->evtbox[i]), knob->digits[i]); gtk_grid_attach(GTK_GRID(table), knob->evtbox[i], i, 1, 1, 1); g_signal_connect(knob->evtbox[i], "button_press_event", (GCallback) on_button_press, widget); g_signal_connect(knob->evtbox[i], "scroll_event", (GCallback) on_button_scroll, widget); } /* degree sign */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "\302\260"); gtk_grid_attach(GTK_GRID(table), label, 7, 1, 1, 1); gtk_rot_knob_update(knob); gtk_container_add(GTK_CONTAINER(widget), table); gtk_widget_show_all(widget); return widget; } gpredict/src/gtk-rot-knob.h000066400000000000000000000037671427377236300161700ustar00rootroot00000000000000#ifndef __GTK_ROT_KNOB_H__ #define __GTK_ROT_KNOB_H__ 1 #include #include #include /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ #define GTK_TYPE_ROT_KNOB (gtk_rot_knob_get_type ()) #define GTK_ROT_KNOB(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_rot_knob_get_type (),\ GtkRotKnob) #define GTK_ROT_KNOB_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_rot_knob_get_type (),\ GtkRotKnobClass) #define IS_GTK_ROT_KNOB(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_rot_knob_get_type ()) typedef struct _gtk_rot_knob GtkRotKnob; typedef struct _GtkRotKnobClass GtkRotKnobClass; struct _gtk_rot_knob { GtkBox box; GtkWidget *digits[7]; /*!< Labels for the digits */ GtkWidget *evtbox[7]; /*!< Event boxes to catch mouse events over the digits */ GtkWidget *buttons[10]; /*!< Buttons; 0..4 up; 5..9 down */ gdouble min; gdouble max; gdouble value; }; struct _GtkRotKnobClass { GtkVBoxClass parent_class; }; GType gtk_rot_knob_get_type(void); GtkWidget *gtk_rot_knob_new(gdouble min, gdouble max, gdouble val); void gtk_rot_knob_set_value(GtkRotKnob * knob, gdouble val); gdouble gtk_rot_knob_get_value(GtkRotKnob * knob); void gtk_rot_knob_set_max(GtkRotKnob * knob, gdouble max); gdouble gtk_rot_knob_get_max(GtkRotKnob * knob); gdouble gtk_rot_knob_get_min(GtkRotKnob * knob); void gtk_rot_knob_set_min(GtkRotKnob * knob, gdouble min); void gtk_rot_knob_set_max(GtkRotKnob * knob, gdouble max); void gtk_rot_knob_set_range(GtkRotKnob * knob, gdouble min, gdouble max); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_ROT_knob_H__ */ gpredict/src/gtk-sat-data.c000066400000000000000000000247761427377236300161310ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Daniel Estevez Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" #include "sat-log.h" #ifdef HAVE_CONFIG_H #include #endif #include "orbit-tools.h" #include "time-tools.h" #include "compat.h" /** * Read TLE data for a given satellite into memory. * * @param catnum The catalog number of the satellite. * @param sat Pointer to a valid sat_t structure. * @return 0 if successful, 1 if an I/O error occurred, * 2 if the TLE data appears to be bad. * */ gint gtk_sat_data_read_sat(gint catnum, sat_t * sat) { guint errorcode = 0; GError *error = NULL; GKeyFile *data; gchar *filename = NULL, *path = NULL; gchar *tlestr1, *tlestr2, *rawtle; /* ensure that sat != NULL */ g_return_val_if_fail(sat != NULL, 1); /* .sat file names */ filename = g_strdup_printf("%d.sat", catnum); path = sat_file_name_from_catnum(catnum); /* open .sat file */ data = g_key_file_new(); if (!g_key_file_load_from_file (data, path, G_KEY_FILE_KEEP_COMMENTS, &error)) { /* an error occurred */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to load data from %s (%s)"), __func__, path, error->message); g_clear_error(&error); errorcode = 1; } else { /* read name, nickname, and website */ sat->name = g_key_file_get_string(data, "Satellite", "NAME", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading NAME from %s (%s)"), __func__, path, error->message); g_clear_error(&error); sat->name = g_strdup("Error"); } sat->nickname = g_key_file_get_string(data, "Satellite", "NICKNAME", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Satellite %d has no NICKNAME"), __func__, catnum); g_clear_error(&error); sat->nickname = g_strdup(sat->name); } sat->website = g_key_file_get_string(data, "Satellite", "WEBSITE", NULL); /* website may be NULL */ /* get TLE data */ tlestr1 = g_key_file_get_string(data, "Satellite", "TLE1", NULL); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading TLE line 1 from %s (%s)"), __func__, path, error->message); g_clear_error(&error); } tlestr2 = g_key_file_get_string(data, "Satellite", "TLE2", NULL); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading TLE line 2 from %s (%s)"), __func__, path, error->message); g_clear_error(&error); } rawtle = g_strconcat(tlestr1, tlestr2, NULL); if (!Good_Elements(rawtle)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: TLE data for %d appears to be bad"), __func__, catnum); errorcode = 2; } else { Convert_Satellite_Data(rawtle, &sat->tle); } if (g_key_file_has_key(data, "Satellite", "STATUS", NULL)) sat->tle.status = g_key_file_get_integer(data, "Satellite", "STATUS", NULL); g_free(tlestr1); g_free(tlestr2); g_free(rawtle); /* VERY, VERY important! If not done, some sats will not get initialised, the first time SGP4/SDP4 is called. Consequently, the resulting data will be NAN, INF or similar nonsense. For some reason, not even using g_new0 seems to be enough. */ sat->flags = 0; select_ephemeris(sat); /* initialise variable fields */ sat->jul_utc = 0.0; sat->tsince = 0.0; sat->az = 0.0; sat->el = 0.0; sat->range = 0.0; sat->range_rate = 0.0; sat->ra = 0.0; sat->dec = 0.0; sat->ssplat = 0.0; sat->ssplon = 0.0; sat->alt = 0.0; sat->velo = 0.0; sat->ma = 0.0; sat->footprint = 0.0; sat->phase = 0.0; sat->aos = 0.0; sat->los = 0.0; /* calculate satellite data at epoch */ gtk_sat_data_init_sat(sat, NULL); } g_free(filename); g_free(path); g_key_file_free(data); return errorcode; } /** * Initialise satellite data. * * @param sat The satellite to initialise. * @param qth Optional QTH info, use (0,0) if NULL. * * This function calculates the satellite data at t = 0, ie. epoch time * The function is called automatically by gtk_sat_data_read_sat. */ void gtk_sat_data_init_sat(sat_t * sat, qth_t * qth) { geodetic_t obs_geodetic; obs_set_t obs_set; geodetic_t sat_geodetic; double jul_utc, age; g_return_if_fail(sat != NULL); jul_utc = Julian_Date_of_Epoch(sat->tle.epoch); // => tsince = 0.0 sat->jul_epoch = jul_utc; /* initialise observer location */ if (qth != NULL) { obs_geodetic.lon = qth->lon * de2ra; obs_geodetic.lat = qth->lat * de2ra; obs_geodetic.alt = qth->alt / 1000.0; obs_geodetic.theta = 0; } else { obs_geodetic.lon = 0.0; obs_geodetic.lat = 0.0; obs_geodetic.alt = 0.0; obs_geodetic.theta = 0; } /* execute computations */ if (sat->flags & DEEP_SPACE_EPHEM_FLAG) SDP4(sat, 0.0); else SGP4(sat, 0.0); /* scale position and velocity to km and km/sec */ Convert_Sat_State(&sat->pos, &sat->vel); /* get the velocity of the satellite */ Magnitude(&sat->vel); sat->velo = sat->vel.w; Calculate_Obs(jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set); Calculate_LatLonAlt(jul_utc, &sat->pos, &sat_geodetic); while (sat_geodetic.lon < -pi) sat_geodetic.lon += twopi; while (sat_geodetic.lon > (pi)) sat_geodetic.lon -= twopi; sat->az = Degrees(obs_set.az); sat->el = Degrees(obs_set.el); sat->range = obs_set.range; sat->range_rate = obs_set.range_rate; sat->ssplat = Degrees(sat_geodetic.lat); sat->ssplon = Degrees(sat_geodetic.lon); sat->alt = sat_geodetic.alt; sat->ma = Degrees(sat->phase); sat->ma *= 256.0 / 360.0; sat->footprint = 2.0 * xkmper * acos(xkmper / sat->pos.w); age = 0.0; sat->orbit = (long)floor((sat->tle.xno * xmnpda / twopi + age * sat->tle.bstar * ae) * age - (sat->tle.xmo + sat->tle.omegao) / twopi) + sat->tle.revnum; /* orbit type */ sat->otype = get_orbit_type(sat); } /** * Copy satellite data. * * @param source Pointer to the source satellite to copy data from. * @param dest Pointer to the destination satellite to copy data into. * @param qth Pointer to the observer data (needed to initialize sat) * * This function copies the satellite data from a source sat_t structure into * the destination. The function copies the tle_t data and calls gtk_sat_data_inti_sat() * function for initializing the other fields. * */ void gtk_sat_data_copy_sat(const sat_t * source, sat_t * dest, qth_t * qth) { guint i; g_return_if_fail((source != NULL) && (dest != NULL)); dest->tle.epoch = source->tle.epoch; dest->tle.epoch_year = source->tle.epoch_year; dest->tle.epoch_day = source->tle.epoch_day; dest->tle.epoch_fod = source->tle.epoch_fod; dest->tle.xndt2o = source->tle.xndt2o; dest->tle.xndd6o = source->tle.xndd6o; dest->tle.bstar = source->tle.bstar; dest->tle.xincl = source->tle.xincl; dest->tle.xnodeo = source->tle.xnodeo; dest->tle.eo = source->tle.eo; dest->tle.omegao = source->tle.omegao; dest->tle.xmo = source->tle.xmo; dest->tle.xno = source->tle.xno; dest->tle.catnr = source->tle.catnr; dest->tle.elset = source->tle.elset; dest->tle.revnum = source->tle.revnum; dest->name = g_strdup(source->name); dest->nickname = g_strdup(source->nickname); for (i = 0; i < 9; i++) dest->tle.idesg[i] = source->tle.idesg[i]; dest->tle.status = source->tle.status; dest->tle.xincl1 = source->tle.xincl1; dest->tle.omegao1 = source->tle.omegao1; dest->otype = source->otype; /* very important */ dest->flags = 0; select_ephemeris(dest); /* initialise variable fields */ dest->jul_utc = 0.0; dest->tsince = 0.0; dest->az = 0.0; dest->el = 0.0; dest->range = 0.0; dest->range_rate = 0.0; dest->ra = 0.0; dest->dec = 0.0; dest->ssplat = 0.0; dest->ssplon = 0.0; dest->alt = 0.0; dest->velo = 0.0; dest->ma = 0.0; dest->footprint = 0.0; dest->phase = 0.0; dest->aos = 0.0; dest->los = 0.0; gtk_sat_data_init_sat(dest, qth); } /** * Free satellite data * * @param sat Pointer to the satellite data to free * * This function frees the memory that has been dyunamically allocated * when creating a new satellite object. */ void gtk_sat_data_free_sat(sat_t * sat) { if (!sat) return; if (sat->name) { g_free(sat->name); sat->name = NULL; } if (sat->nickname) { g_free(sat->nickname); sat->nickname = NULL; } if (sat->website) { g_free(sat->website); sat->website = NULL; } g_free(sat); } gpredict/src/gtk-sat-data.h000066400000000000000000000026301427377236300161170ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_SAT_DATA_H__ #define __GTK_SAT_DATA_H__ 1 #include #include "sgpsdp/sgp4sdp4.h" #include "qth-data.h" gint gtk_sat_data_read_sat(gint catnum, sat_t * sat); void gtk_sat_data_init_sat(sat_t * sat, qth_t * qth); void gtk_sat_data_copy_sat(const sat_t * source, sat_t * dest, qth_t * qth); void gtk_sat_data_free_sat(sat_t * sat); #endif gpredict/src/gtk-sat-list-popup.c000066400000000000000000000057051427377236300173230ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gtk-sat-list-popup.h" #include "gtk-sat-popup-common.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" /** * Show satellite popup menu. * * @param sat Pointer to the satellite data. * @param qth The current location. * @param event The mouse-click related event info. * @param toplevel The top level window. */ void gtk_sat_list_popup_exec(sat_t * sat, qth_t * qth, GdkEventButton * event, GtkSatList * list) { GtkWidget *menu; GtkWidget *menuitem; menu = gtk_menu_new(); /* first menu item is the satellite name, centered */ menuitem = gtk_menu_item_new(); gtk_menu_item_set_label(GTK_MENU_ITEM(menuitem), _("Satellite info")); /* attach data to menuitem and connect callback */ g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_sat_info_menu_cb), gtk_widget_get_toplevel(GTK_WIDGET(list))); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* add the menu items for current,next, and future passes. */ add_pass_menu_items(menu, sat, qth, &list->tstamp, GTK_WIDGET(list)); gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); #else (void) event; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } gpredict/src/gtk-sat-list-popup.h000066400000000000000000000025071427377236300173250ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef GTK_SAT_LIST_POPUP_H #define GTK_SAT_LIST_POPUP_H 1 #include #include "gtk-sat-data.h" #include "gtk-sat-list.h" #include "sgpsdp/sgp4sdp4.h" void gtk_sat_list_popup_exec(sat_t * sat, qth_t * qth, GdkEventButton * event, GtkSatList * list); #endif gpredict/src/gtk-sat-list.c000066400000000000000000001412501427377236300161560ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "gtk-sat-list.h" #include "gtk-sat-list-popup.h" #include "locator.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sat-vis.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" /** Column titles indexed with column symb. refs. */ const gchar *SAT_LIST_COL_TITLE[SAT_LIST_COL_NUMBER] = { N_("Satellite"), N_("Catnum"), N_("Az"), N_("El"), N_("Dir"), N_("Ra"), N_("Dec"), N_("Range"), N_("Rate"), N_("Next Event"), N_("Next AOS"), N_("Next LOS"), N_("Lat"), N_("Lon"), N_("SSP"), N_("Footp"), N_("Alt"), N_("Vel"), N_("Dop"), N_("Loss"), N_("Del"), N_("MA"), N_("Phase"), N_("Orbit"), N_("Vis"), N_("Decayed"), N_("Status"), N_("BOLD") /* should never be seen */ }; /** Column title hints indexed with column symb. refs. */ const gchar *SAT_LIST_COL_HINT[SAT_LIST_COL_NUMBER] = { N_("Satellite Name"), N_("Catalogue Number"), N_("Azimuth"), N_("Elevation"), N_("Direction"), N_("Right Ascension"), N_("Declination"), N_("Slant Range"), N_("Range Rate"), N_("Next Event"), N_("Next AOS"), N_("Next LOS"), N_("Latitude"), N_("Longitude"), N_("Sub-Satellite Point"), N_("Footprint"), N_("Altitude"), N_("Velocity"), N_("Doppler Shift @ 100MHz"), N_("Signal Loss @ 100MHz"), N_("Signal Delay"), N_("Mean Anomaly"), N_("Orbit Phase"), N_("Orbit Number"), N_("Visibility"), N_("Decayed"), N_("Operational Status"), N_("---") }; const gfloat SAT_LIST_COL_XALIGN[SAT_LIST_COL_NUMBER] = { 0.0, // name 0.5, // catnum 1.0, // az 1.0, // el 0.5, // direction 0.0, // RA 0.0, // dec 1.0, // range 1.0, // range rate 0.5, // next event 0.5, // AOS 0.5, // LOS 1.0, // lat 1.0, // lon 0.5, // SSP 0.5, // footprint 1.0, // alt 0.0, // vel 0.0, // doppler 0.0, // loss 0.0, // delay 0.0, // MA 0.0, // phase 1.0, // orbit 0.5, // visibility 0.0, // Operational Status }; static void gtk_sat_list_class_init(GtkSatListClass * class, gpointer class_data); static void gtk_sat_list_init(GtkSatList * list, gpointer g_class); static void gtk_sat_list_destroy(GtkWidget * widget); static GtkTreeModel *create_and_fill_model(GHashTable * sats); static void sat_list_add_satellites(gpointer key, gpointer value, gpointer user_data); static gboolean sat_list_update_sats(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); /* cell rendering related functions */ static void check_and_set_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i); static void latlon_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void distance_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void range_rate_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void float_to_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void two_dec_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void operational_status_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void event_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static gint event_cell_compare_function(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data); static gboolean popup_menu_cb(GtkWidget * treeview, gpointer list); static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer list); static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer list); static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer list); static void Calculate_RADec(sat_t * sat, qth_t * qth, obs_astro_t * obs_set); static GtkVBoxClass *parent_class = NULL; GType gtk_sat_list_get_type() { static GType gtk_sat_list_type = 0; if (!gtk_sat_list_type) { static const GTypeInfo gtk_sat_list_info = { sizeof(GtkSatListClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_sat_list_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkSatList), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_sat_list_init, NULL }; gtk_sat_list_type = g_type_register_static(GTK_TYPE_BOX, "GtkSatList", >k_sat_list_info, 0); } return gtk_sat_list_type; } static void gtk_sat_list_class_init(GtkSatListClass * class, gpointer class_data) { GtkWidgetClass *widget_class = (GtkWidgetClass *) class; (void)class_data; widget_class->destroy = gtk_sat_list_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_sat_list_init(GtkSatList * list, gpointer g_class) { (void)list; (void)g_class; } static void gtk_sat_list_destroy(GtkWidget * widget) { GtkSatList *list = GTK_SAT_LIST(widget); g_key_file_set_integer(list->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_COLUMN, list->sort_column); g_key_file_set_integer(list->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_ORDER, list->sort_order); (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } GtkWidget *gtk_sat_list_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 columns) { // GtkWidget *widget; GtkSatList *satlist; GtkTreeModel *model, *filter, *sortable; guint i; GtkCellRenderer *renderer; GtkTreeViewColumn *column; // widget = g_object_new(GTK_TYPE_SAT_LIST, NULL); satlist = GTK_SAT_LIST(g_object_new(GTK_TYPE_SAT_LIST, NULL)); satlist->update = gtk_sat_list_update; /* Read configuration data. */ /* ... */ satlist->cfgdata = cfgdata; /* read initial sorting criteria */ satlist->sort_column = SAT_LIST_COL_NAME; satlist->sort_order = GTK_SORT_ASCENDING; if (g_key_file_has_key(satlist->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_COLUMN, NULL)) { satlist->sort_column = g_key_file_get_integer(satlist->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_COLUMN, NULL); if ((satlist->sort_column > SAT_LIST_COL_NUMBER) || (satlist->sort_column < 0)) { satlist->sort_column = SAT_LIST_COL_NAME; } } if (g_key_file_has_key(satlist->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_ORDER, NULL)) { satlist->sort_order = g_key_file_get_integer(satlist->cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_SORT_ORDER, NULL); if ((satlist->sort_order > 1) || (satlist->sort_order < 0)) satlist->sort_order = GTK_SORT_ASCENDING; } satlist->satellites = sats; satlist->qth = qth; /* initialise column flags */ if (columns > 0) satlist->flags = columns; else satlist->flags = mod_cfg_get_int(cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_COLUMNS, SAT_CFG_INT_LIST_COLUMNS); /* get refresh rate and cycle counter */ satlist->refresh = mod_cfg_get_int(cfgdata, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_REFRESH, SAT_CFG_INT_LIST_REFRESH); satlist->counter = 1; /* create the tree view and add columns */ satlist->treeview = gtk_tree_view_new(); /* create treeview columns */ for (i = 0; i < SAT_LIST_COL_NUMBER; i++) { renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "xalign", SAT_LIST_COL_XALIGN[i], NULL); /* in win32 use special font for direction column because default font does not have arrow symbols. */ #ifdef G_OS_WIN32 if (i == SAT_LIST_COL_DIR) g_object_set(G_OBJECT(renderer), "font", "courier 12", NULL); #endif column = gtk_tree_view_column_new_with_attributes(_(SAT_LIST_COL_TITLE[i]), renderer, "text", i, "weight", SAT_LIST_COL_BOLD, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(satlist->treeview), column, -1); /* only aligns the headers */ gtk_tree_view_column_set_alignment(column, 0.5); /* set sort id */ gtk_tree_view_column_set_sort_column_id(column, i); /* set cell data function; allows to format data before rendering */ check_and_set_cell_renderer(column, renderer, i); /* hide columns that have not been specified */ if (!(satlist->flags & (1 << i))) gtk_tree_view_column_set_visible(column, FALSE); } /* create model and finalise treeview */ model = create_and_fill_model(satlist->satellites); filter = gtk_tree_model_filter_new(model, NULL); sortable = gtk_tree_model_sort_new_with_model(filter); satlist->sortable = sortable; gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(filter), SAT_LIST_COL_DECAY); gtk_tree_view_set_model(GTK_TREE_VIEW(satlist->treeview), sortable); /* We need a special sort function for AOS/LOS events that works with all date and time formats (see bug #1861323) */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(model), SAT_LIST_COL_AOS, event_cell_compare_function, GTK_WIDGET(satlist), NULL); gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(model), SAT_LIST_COL_LOS, event_cell_compare_function, GTK_WIDGET(satlist), NULL); /* satellite name should be initial sorting criteria */ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(sortable), satlist->sort_column, satlist->sort_order); g_object_unref(model); g_object_unref(filter); g_object_unref(sortable); g_signal_connect(satlist->treeview, "button-press-event", G_CALLBACK(button_press_cb), satlist); g_signal_connect(satlist->treeview, "popup-menu", G_CALLBACK(popup_menu_cb), satlist); g_signal_connect(satlist->treeview, "row-activated", G_CALLBACK(row_activated_cb), satlist); satlist->swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(satlist->swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(satlist->swin), satlist->treeview); gtk_box_pack_start(GTK_BOX(satlist), satlist->swin, TRUE, TRUE, 0); gtk_widget_show_all(GTK_WIDGET(satlist)); return GTK_WIDGET(satlist); } static GtkTreeModel *create_and_fill_model(GHashTable * sats) { GtkListStore *liststore; liststore = gtk_list_store_new(SAT_LIST_COL_NUMBER, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_DOUBLE, // az G_TYPE_DOUBLE, // el G_TYPE_STRING, // direction G_TYPE_DOUBLE, // RA G_TYPE_DOUBLE, // Dec G_TYPE_DOUBLE, // range G_TYPE_DOUBLE, // range rate G_TYPE_STRING, // next event G_TYPE_DOUBLE, // next AOS G_TYPE_DOUBLE, // next LOS G_TYPE_DOUBLE, // ssp lat G_TYPE_DOUBLE, // ssp lon G_TYPE_STRING, // ssp qra G_TYPE_DOUBLE, // footprint G_TYPE_DOUBLE, // alt G_TYPE_DOUBLE, // vel G_TYPE_DOUBLE, // doppler G_TYPE_DOUBLE, // path loss G_TYPE_DOUBLE, // delay G_TYPE_DOUBLE, // mean anomaly G_TYPE_DOUBLE, // phase G_TYPE_LONG, // orbit G_TYPE_STRING, // visibility G_TYPE_BOOLEAN, // decay G_TYPE_INT, // Operational Status G_TYPE_INT // weight/bold ); g_hash_table_foreach(sats, sat_list_add_satellites, liststore); return GTK_TREE_MODEL(liststore); } static void sat_list_add_satellites(gpointer key, gpointer value, gpointer user_data) { GtkListStore *store = GTK_LIST_STORE(user_data); GtkTreeIter item; sat_t *sat = SAT(value); (void)key; gtk_list_store_append(store, &item); gtk_list_store_set(store, &item, SAT_LIST_COL_NAME, sat->nickname, SAT_LIST_COL_CATNUM, sat->tle.catnr, SAT_LIST_COL_AZ, sat->az, SAT_LIST_COL_EL, sat->el, SAT_LIST_COL_VISIBILITY, "-", SAT_LIST_COL_RA, sat->ra, SAT_LIST_COL_DEC, sat->dec, SAT_LIST_COL_RANGE, sat->range, SAT_LIST_COL_RANGE_RATE, sat->range_rate, SAT_LIST_COL_DIR, "-", SAT_LIST_COL_NEXT_EVENT, "--- N/A ---", SAT_LIST_COL_AOS, sat->aos, SAT_LIST_COL_LOS, sat->los, SAT_LIST_COL_LAT, sat->ssplat, SAT_LIST_COL_LON, sat->ssplon, SAT_LIST_COL_SSP, "", SAT_LIST_COL_FOOTPRINT, sat->footprint, SAT_LIST_COL_ALT, sat->alt, SAT_LIST_COL_VEL, sat->velo, SAT_LIST_COL_DOPPLER, 0.0, SAT_LIST_COL_LOSS, 0.0, SAT_LIST_COL_DELAY, 0.0, SAT_LIST_COL_MA, sat->ma, SAT_LIST_COL_PHASE, sat->phase, SAT_LIST_COL_ORBIT, sat->orbit, SAT_LIST_COL_STAT_OPERATIONAL, (char *) sat->tle.status, SAT_LIST_COL_DECAY, !decayed(sat), -1); } /** Update satellites */ void gtk_sat_list_update(GtkWidget * widget) { GtkTreeModel *model; GtkSatList *satlist = GTK_SAT_LIST(widget); /* first, do some sanity checks */ if ((satlist == NULL) || !IS_GTK_SAT_LIST(satlist)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid GtkSatList!"), __func__); return; } /* check refresh rate */ if (satlist->counter < satlist->refresh) { satlist->counter++; } else { satlist->counter = 1; /* get and tranverse the model */ model = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER (gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (GTK_TREE_VIEW (satlist->treeview)))))); /*save the sort information */ gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE (satlist->sortable), &(satlist->sort_column), &(satlist->sort_order)); /* optimisation: detach model from view while updating */ /* No, we do not do it, because it makes selections and scrolling impossible */ /* g_object_ref (model); */ /* gtk_tree_view_set_model (GTK_TREE_VIEW (satlist->treeview), NULL); */ /* update */ gtk_tree_model_foreach(model, sat_list_update_sats, satlist); /* re-attach model to view */ /* gtk_tree_view_set_model (GTK_TREE_VIEW (satlist->treeview), model); */ /* g_object_unref (model); */ } } /** Update data in each column in a given row */ static gboolean sat_list_update_sats(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { GtkSatList *satlist = GTK_SAT_LIST(data); guint *catnum; sat_t *sat; gchar *buff; gdouble doppler; gdouble delay; gdouble loss; gdouble oldrate; gint retcode; (void)path; /* get the catalogue number for this row then look it up in the hash table */ catnum = g_new0(guint, 1); gtk_tree_model_get(model, iter, SAT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(satlist->satellites, catnum)); if (sat == NULL) { /* satellite not tracked anymore => remove */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to get data for #%d."), __func__, *catnum); gtk_list_store_remove(GTK_LIST_STORE(model), iter); sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Satellite #%d removed from list."), __func__, *catnum); } else { /* store new data */ gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_AZ, sat->az, SAT_LIST_COL_EL, sat->el, SAT_LIST_COL_RANGE, sat->range, SAT_LIST_COL_RANGE_RATE, sat->range_rate, SAT_LIST_COL_LAT, sat->ssplat, SAT_LIST_COL_LON, sat->ssplon, SAT_LIST_COL_FOOTPRINT, sat->footprint, SAT_LIST_COL_ALT, sat->alt, SAT_LIST_COL_VEL, sat->velo, SAT_LIST_COL_MA, sat->ma, SAT_LIST_COL_PHASE, sat->phase, SAT_LIST_COL_ORBIT, sat->orbit, SAT_LIST_COL_DECAY, !decayed(sat), SAT_LIST_COL_BOLD, (sat->el > 0.0) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, -1); /* doppler shift @ 100 MHz */ if (satlist->flags & SAT_LIST_FLAG_DOPPLER) { doppler = -100.0e06 * (sat->range_rate / 299792.4580); // Hz gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_DOPPLER, doppler, -1); } /* delay */ if (satlist->flags & SAT_LIST_FLAG_DELAY) { delay = sat->range / 299.7924580; // msec gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_DELAY, delay, -1); } /* path loss */ if (satlist->flags & SAT_LIST_FLAG_LOSS) { loss = 72.4 + 20.0 * log10(sat->range); // dB gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_LOSS, loss, -1); } /* calculate direction */ if (satlist->flags & SAT_LIST_FLAG_DIR) { if (sat->otype == ORBIT_TYPE_GEO) { buff = g_strdup("G"); } else if (decayed(sat)) { buff = g_strdup("D"); } else if (sat->range_rate > 0.001) { /* going down */ buff = g_strdup("\342\206\223"); } else if ((sat->range_rate <= 0.001) && (sat->range_rate >= -0.001)) { gtk_tree_model_get(model, iter, SAT_LIST_COL_RANGE_RATE, &oldrate, -1); /* turning around; don't know which way ? */ if (sat->range_rate < oldrate) { /* starting to approach */ buff = g_strdup("\342\206\272"); } else { /* to receed */ buff = g_strdup("\342\206\267"); } } else if (sat->range_rate < -0.001) { /* coming up */ buff = g_strdup("\342\206\221"); } else { buff = g_strdup("-"); } gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_DIR, buff, -1); /* free memory */ g_free(buff); } /* SSP locator */ if (satlist->flags & SAT_LIST_FLAG_SSP) { buff = g_try_malloc(7); retcode = longlat2locator(sat->ssplon, sat->ssplat, buff, 3); if (retcode == RIG_OK) { buff[6] = '\0'; gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_SSP, buff, -1); } g_free(buff); } /* Ra and Dec */ if (satlist->flags & (SAT_LIST_FLAG_RA | SAT_LIST_FLAG_DEC)) { obs_astro_t astro; Calculate_RADec(sat, satlist->qth, &astro); sat->ra = Degrees(astro.ra); sat->dec = Degrees(astro.dec); gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_RA, sat->ra, SAT_LIST_COL_DEC, sat->dec, -1); } /* upcoming events */ /*** FIXME: not necessary to update every time */ if (satlist->flags & SAT_LIST_FLAG_AOS) { gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_AOS, sat->aos, -1); } if (satlist->flags & SAT_LIST_FLAG_LOS) { gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_LOS, sat->los, -1); } if (satlist->flags & SAT_LIST_FLAG_NEXT_EVENT) { gdouble number; gchar buff[TIME_FORMAT_MAX_LENGTH]; gchar *tfstr; gchar *fmtstr; gchar *alstr; if (sat->aos > sat->los) { /* next event is LOS */ number = sat->los; alstr = g_strdup(" (LOS)"); } else { /* next event is AOS */ number = sat->aos; alstr = g_strdup(" (AOS)"); } if (number == 0.0) { gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_NEXT_EVENT, "--- N/A ---", -1); } else { /* format the number */ tfstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); fmtstr = g_strconcat(tfstr, alstr, NULL); g_free(tfstr); daynum_to_str(buff, TIME_FORMAT_MAX_LENGTH, fmtstr, number); gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_NEXT_EVENT, buff, -1); g_free(fmtstr); } g_free(alstr); } if (satlist->flags & SAT_LIST_FLAG_VISIBILITY) { sat_vis_t vis; vis = get_sat_vis(sat, satlist->qth, sat->jul_utc); buff = g_strdup_printf("%c", vis_to_chr(vis)); gtk_list_store_set(GTK_LIST_STORE(model), iter, SAT_LIST_COL_VISIBILITY, buff, -1); g_free(buff); } } g_free(catnum); /* Return value not documented what to return, but it seems that FALSE continues to next row while TRUE breaks */ return FALSE; } /** Set cell renderer function. */ static void check_and_set_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i) { switch (i) { /* general float with 2 dec. precision no extra format besides a degree char */ case SAT_LIST_COL_AZ: case SAT_LIST_COL_EL: case SAT_LIST_COL_RA: case SAT_LIST_COL_DEC: case SAT_LIST_COL_MA: case SAT_LIST_COL_PHASE: gtk_tree_view_column_set_cell_data_func(column, renderer, degree_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* LAT/LON format */ case SAT_LIST_COL_LAT: case SAT_LIST_COL_LON: gtk_tree_view_column_set_cell_data_func(column, renderer, latlon_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* distances and velocities */ case SAT_LIST_COL_RANGE: case SAT_LIST_COL_ALT: case SAT_LIST_COL_FOOTPRINT: gtk_tree_view_column_set_cell_data_func(column, renderer, distance_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SAT_LIST_COL_VEL: case SAT_LIST_COL_RANGE_RATE: gtk_tree_view_column_set_cell_data_func(column, renderer, range_rate_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SAT_LIST_COL_DOPPLER: gtk_tree_view_column_set_cell_data_func(column, renderer, float_to_int_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SAT_LIST_COL_DELAY: case SAT_LIST_COL_LOSS: gtk_tree_view_column_set_cell_data_func(column, renderer, two_dec_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SAT_LIST_COL_AOS: case SAT_LIST_COL_LOS: gtk_tree_view_column_set_cell_data_func(column, renderer, event_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SAT_LIST_COL_STAT_OPERATIONAL: gtk_tree_view_column_set_cell_data_func(column, renderer, operational_status_cell_data_function, GUINT_TO_POINTER(i), NULL); break; default: break; } } /* Render column containing the operational status */ static void operational_status_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gint number; guint coli = GPOINTER_TO_UINT(column); (void)col; /* avoid unusued parameter compiler warning */ gtk_tree_model_get(model, iter, coli, &number, -1); switch (number) { case OP_STAT_OPERATIONAL: g_object_set(renderer, "text", "Operational", NULL); break; case OP_STAT_NONOP: g_object_set(renderer, "text", "Non-operational", NULL); break; case OP_STAT_PARTIAL: g_object_set(renderer, "text", "Partially operational", NULL); break; case OP_STAT_STDBY: g_object_set(renderer, "text", "Backup/Standby", NULL); break; case OP_STAT_SPARE: g_object_set(renderer, "text", "Spare", NULL); break; case OP_STAT_EXTENDED: g_object_set(renderer, "text", "Extended Mission", NULL); break; default: g_object_set(renderer, "text", "Unknown", NULL); break; } } /* Render column containing lat/lon by using this instead of the default data function, we can control the number of decimals and display the coordinates in a fancy way, including degree sign and NWSE suffixes. Please note that this function only affects how the numbers are displayed (rendered), the tree_store will still contain the original floating point numbers. Very cool! */ static void latlon_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number = 0.0; gchar *buff; guint coli = GPOINTER_TO_UINT(column); gchar hmf = ' '; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* check whether configuration requests the use of N, S, E and W instead of signs */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (coli == SAT_LIST_COL_LAT) { if (number < 0.00) { number = -number; hmf = 'S'; } else { hmf = 'N'; } } else if (coli == SAT_LIST_COL_LON) { if (number < 0.00) { number = -number; hmf = 'W'; } else { hmf = 'E'; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid column: %d"), __FILE__, __LINE__, coli); hmf = '?'; } } /* format the number */ buff = g_strdup_printf("%.2f\302\260%c", number, hmf); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* general floats with 2 digits + degree char */ static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; /* avoid unusued parameter compiler warning */ gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.2f\302\260", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* distance and velocity, 0 decimal digits */ static void distance_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* convert distance to miles? */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { number = KM_TO_MI(number); } /* format the number */ buff = g_strdup_printf("%.0f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* range rate is special, because we may need to convert to miles and want 2-3 decimal digits. */ static void range_rate_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* convert distance to miles? */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { number = KM_TO_MI(number); } /* format the number */ buff = g_strdup_printf("%.3f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* 0 decimal digits */ static void float_to_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; /* avoid unusued parameter compiler warning */ gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.0f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* 2 decimal digits */ static void two_dec_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.2f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* AOS/LOS; convert julian date to string */ static void event_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar buff[TIME_FORMAT_MAX_LENGTH]; gchar *fmtstr; guint coli = GPOINTER_TO_UINT(column); (void)col; /* avoid unusued parameter compiler warning */ gtk_tree_model_get(model, iter, coli, &number, -1); if (number == 0.0) { g_object_set(renderer, "text", "--- N/A ---", NULL); } else { /* format the number */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(buff, TIME_FORMAT_MAX_LENGTH, fmtstr, number); g_object_set(renderer, "text", buff, NULL); g_free(fmtstr); } } /** * Function to compare to Event cells. * * @param model Pointer to the GtkTreeModel. * @param a Pointer to the first element. * @param b Pointer to the second element. * @param user_data Always NULL (TBC). * 2return See detailed description. * * This function is used by the SatList sort function to determine whether * AOS/LOS cell a is greater than b or not. The cells a and b contain the * time of the event in Julian days, thus the result can be computed by a * simple comparison between the two numbers contained in the cells. * * The function returns -1 if a < b; +1 if a > b; 0 otherwise. */ static gint event_cell_compare_function(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data) { gint result; gdouble ta, tb; gint sort_col; GtkSortType sort_type; GtkSatList *satlist = GTK_SAT_LIST(user_data); /* Since this function is used for both AOS and LOS columns, we need to get the sort column */ gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(satlist->sortable), &sort_col, &sort_type); /* get a and b */ gtk_tree_model_get(model, a, sort_col, &ta, -1); gtk_tree_model_get(model, b, sort_col, &tb, -1); if (ta < tb) { result = -1; } else if (ta > tb) { result = 1; } else { result = 0; } return result; } /** Reload configuration */ void gtk_sat_list_reconf(GtkWidget * widget, GKeyFile * cfgdat) { (void)widget; (void)cfgdat; sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: FIXME I am not implemented")); } /** * Manage "popup-menu" events. * * @param treeview The tree view in the GtkSatList widget * @param list Pointer to the GtkSatList widget. * * This function is called when the "popup-menu" signal is emitted. This * usually happens if the user presses SHJIFT-F10? It is used as a wrapper * for the function that actually creates the popup menu. */ static gboolean popup_menu_cb(GtkWidget * treeview, gpointer list) { /* if there is no selection, select the first row */ view_popup_menu(treeview, NULL, list); return TRUE; /* we handled this */ } /** * Manage button press events. * * @param treeview The tree view in the GtkSatList widget. * @param event The event received. * @param list Pointer to the GtkSatList widget. * */ static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer list) { /* single click with the right mouse button? */ if (event->type == GDK_BUTTON_PRESS && event->button == 3) { /* optional: select row if no row is selected or only * one other row is selected (will only do something * if you set a tree selection mode as described later * in the tutorial) */ if (1) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); /* Note: gtk_tree_selection_count_selected_rows() does not * exist in gtk+-2.0, only in gtk+ >= v2.2 ! */ if (gtk_tree_selection_count_selected_rows(selection) <= 1) { GtkTreePath *path; /* Get tree path for row that was clicked */ if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), (gint) event->x, (gint) event->y, &path, NULL, NULL, NULL)) { gtk_tree_selection_unselect_all(selection); gtk_tree_selection_select_path(selection, path); gtk_tree_path_free(path); } } } /* end of optional bit */ view_popup_menu(treeview, event, list); return TRUE; /* we handled this */ } return FALSE; /* we did not handle this */ } /** Manage row activated (double click) events. */ static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer list) { GtkTreeModel *model; GtkTreeIter iter; guint *catnum; sat_t *sat; (void)column; catnum = g_new0(guint, 1); model = gtk_tree_view_get_model(tree_view); gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, SAT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(GTK_SAT_LIST(list)->satellites, catnum)); if (sat == NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d Failed to get data for %d."), __FILE__, __LINE__, *catnum); } else { show_sat_info(sat, gtk_widget_get_toplevel(GTK_WIDGET(list))); } g_free(catnum); } static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer list) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; guint *catnum; sat_t *sat; catnum = g_new0(guint, 1); /* get selected satellite */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, SAT_LIST_COL_CATNUM, catnum, -1); sat = SAT(g_hash_table_lookup(GTK_SAT_LIST(list)->satellites, catnum)); if (sat == NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d Failed to get data for %d."), __FILE__, __LINE__, *catnum); } else { gtk_sat_list_popup_exec(sat, GTK_SAT_LIST(list)->qth, event, GTK_SAT_LIST(list)); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: There is no selection; skip popup."), __FILE__, __LINE__); } g_free(catnum); } /*** FIXME: formalise with other copies, only need az,el and jul_utc */ static void Calculate_RADec(sat_t * sat, qth_t * qth, obs_astro_t * obs_set) { /* Reference: Methods of Orbit Determination by */ /* Pedro Ramon Escobal, pp. 401-402 */ double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, Lz, cos_delta, sin_alpha, cos_alpha; geodetic_t geodetic; geodetic.lon = qth->lon * de2ra; geodetic.lat = qth->lat * de2ra; geodetic.alt = qth->alt / 1000.0; geodetic.theta = 0; az = sat->az * de2ra; el = sat->el * de2ra; phi = geodetic.lat; theta = FMod2p(ThetaG_JD(sat->jul_utc) + geodetic.lon); sin_theta = sin(theta); cos_theta = cos(theta); sin_phi = sin(phi); cos_phi = cos(phi); Lxh = -cos(az) * cos(el); Lyh = sin(az) * cos(el); Lzh = sin(el); Sx = sin_phi * cos_theta; Ex = -sin_theta; Zx = cos_theta * cos_phi; Sy = sin_phi * sin_theta; Ey = cos_theta; Zy = sin_theta * cos_phi; Sz = -cos_phi; Ez = 0; Zz = sin_phi; Lx = Sx * Lxh + Ex * Lyh + Zx * Lzh; Ly = Sy * Lxh + Ey * Lyh + Zy * Lzh; Lz = Sz * Lxh + Ez * Lyh + Zz * Lzh; obs_set->dec = ArcSin(Lz); /* Declination (radians) */ cos_delta = sqrt(1 - Sqr(Lz)); sin_alpha = Ly / cos_delta; cos_alpha = Lx / cos_delta; obs_set->ra = AcTan(sin_alpha, cos_alpha); /* Right Ascension (radians) */ obs_set->ra = FMod2p(obs_set->ra); } /** Reload reference to satellites (e.g. after TLE update). */ void gtk_sat_list_reload_sats(GtkWidget * satlist, GHashTable * sats) { GTK_SAT_LIST(satlist)->satellites = sats; } /** Select a satellite */ void gtk_sat_list_select_sat(GtkWidget * satlist, gint catnum) { GtkSatList *slist; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gint i, n; gint sat; slist = GTK_SAT_LIST(satlist); model = gtk_tree_view_get_model(GTK_TREE_VIEW(slist->treeview)); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(slist->treeview)); /* iterate over the satellite list until a amtch is found */ n = g_hash_table_size(slist->satellites); for (i = 0; i < n; i++) { if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { gtk_tree_model_get(model, &iter, SAT_LIST_COL_CATNUM, &sat, -1); if (sat == catnum) { gtk_tree_selection_select_iter(selection, &iter); i = n; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: GtkSatList has not child with index %d"), __func__, i); } } } gpredict/src/gtk-sat-list.h000066400000000000000000000160211427377236300161600ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_SAT_LIST_H__ #define __GTK_SAT_LIST_H__ 1 #include #include #include #include "gtk-sat-data.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ #define GTK_TYPE_SAT_LIST (gtk_sat_list_get_type ()) #define GTK_SAT_LIST(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_sat_list_get_type (),\ GtkSatList) #define GTK_SAT_LIST_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_sat_list_get_type (),\ GtkSatListClass) #define IS_GTK_SAT_LIST(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_list_get_type ()) typedef struct _gtk_sat_list GtkSatList; typedef struct _GtkSatListClass GtkSatListClass; struct _gtk_sat_list { GtkBox vbox; GtkWidget *treeview; /*!< the tree view itself */ GtkWidget *swin; /*!< scrolled window */ GHashTable *satellites; /*!< Satellites. */ qth_t *qth; /*!< Pointer to current location. */ guint32 flags; /*!< Flags indicating which columns are visible */ guint refresh; /*!< Refresh rate, ie. how many cycles should pass between updates */ guint counter; /*!< cycle counter */ gdouble tstamp; /*!< time stamp of calculations; set by GtkSatModule */ GKeyFile *cfgdata; gint sort_column; GtkSortType sort_order; GtkTreeModel *sortable; /*!< a sortable version of the tree model for filtering */ void (*update) (GtkWidget * widget); /*!< update function */ }; struct _GtkSatListClass { GtkBoxClass parent_class; }; /** Symbolic references to columns */ typedef enum { SAT_LIST_COL_NAME = 0, /*!< Satellite name. */ SAT_LIST_COL_CATNUM, /*!< Catalogue number. */ SAT_LIST_COL_AZ, /*!< Azimuth. */ SAT_LIST_COL_EL, /*!< Elvation. */ SAT_LIST_COL_DIR, /*!< Direction, satellite on its way up or down. */ SAT_LIST_COL_RA, /*!< Right Ascension. */ SAT_LIST_COL_DEC, /*!< Declination. */ SAT_LIST_COL_RANGE, /*!< Range. */ SAT_LIST_COL_RANGE_RATE, /*!< Range rate. */ SAT_LIST_COL_NEXT_EVENT, /*!< Next event AOS or LOS depending on El. */ SAT_LIST_COL_AOS, /*!< Next AOS regardless of El. */ SAT_LIST_COL_LOS, /*!< Next LOS regardless of El. */ SAT_LIST_COL_LAT, /*!< Latitude. */ SAT_LIST_COL_LON, /*!< Longitude. */ SAT_LIST_COL_SSP, /*!< Sub satellite point grid square */ SAT_LIST_COL_FOOTPRINT, /*!< Footprint. */ SAT_LIST_COL_ALT, /*!< Altitude. */ SAT_LIST_COL_VEL, /*!< Velocity. */ SAT_LIST_COL_DOPPLER, /*!< Doppler shift at 100 MHz. */ SAT_LIST_COL_LOSS, /*!< Path Loss at 100 MHz. */ SAT_LIST_COL_DELAY, /*!< Signal delay */ SAT_LIST_COL_MA, /*!< Mean Anomaly. */ SAT_LIST_COL_PHASE, /*!< Phase. */ SAT_LIST_COL_ORBIT, /*!< Orbit Number. */ SAT_LIST_COL_VISIBILITY, /*!< Visibility. */ SAT_LIST_COL_DECAY, /*!< Whether the satellite is decayed or not. */ SAT_LIST_COL_STAT_OPERATIONAL, /*!< Operational Status . */ SAT_LIST_COL_BOLD, /*!< Used to render the satellites above the horizon bold. */ SAT_LIST_COL_NUMBER } sat_list_col_t; /** Column Flags */ typedef enum { SAT_LIST_FLAG_NAME = 1 << SAT_LIST_COL_NAME, /*!< Satellite name. */ SAT_LIST_FLAG_CATNUM = 1 << SAT_LIST_COL_CATNUM, SAT_LIST_FLAG_AZ = 1 << SAT_LIST_COL_AZ, /*!< Azimuth. */ SAT_LIST_FLAG_EL = 1 << SAT_LIST_COL_EL, /*!< Elvation. */ SAT_LIST_FLAG_DIR = 1 << SAT_LIST_COL_DIR, /*!< Direction */ SAT_LIST_FLAG_RA = 1 << SAT_LIST_COL_RA, /*!< Right Ascension. */ SAT_LIST_FLAG_DEC = 1 << SAT_LIST_COL_DEC, /*!< Declination. */ SAT_LIST_FLAG_RANGE = 1 << SAT_LIST_COL_RANGE, /*!< Range. */ SAT_LIST_FLAG_RANGE_RATE = 1 << SAT_LIST_COL_RANGE_RATE, /*!< Range rate. */ SAT_LIST_FLAG_NEXT_EVENT = 1 << SAT_LIST_COL_NEXT_EVENT, /*!< Next event. */ SAT_LIST_FLAG_AOS = 1 << SAT_LIST_COL_AOS, /*!< Next AOS. */ SAT_LIST_FLAG_LOS = 1 << SAT_LIST_COL_LOS, /*!< Next LOS. */ SAT_LIST_FLAG_LAT = 1 << SAT_LIST_COL_LAT, /*!< Latitude. */ SAT_LIST_FLAG_LON = 1 << SAT_LIST_COL_LON, /*!< Longitude. */ SAT_LIST_FLAG_SSP = 1 << SAT_LIST_COL_SSP, /*!< SSP grid square */ SAT_LIST_FLAG_FOOTPRINT = 1 << SAT_LIST_COL_FOOTPRINT, /*!< Footprint. */ SAT_LIST_FLAG_ALT = 1 << SAT_LIST_COL_ALT, /*!< Altitude. */ SAT_LIST_FLAG_VEL = 1 << SAT_LIST_COL_VEL, /*!< Velocity. */ SAT_LIST_FLAG_DOPPLER = 1 << SAT_LIST_COL_DOPPLER, /*!< Doppler shift. */ SAT_LIST_FLAG_LOSS = 1 << SAT_LIST_COL_LOSS, /*!< Path Loss. */ SAT_LIST_FLAG_DELAY = 1 << SAT_LIST_COL_DELAY, /*!< Delay */ SAT_LIST_FLAG_MA = 1 << SAT_LIST_COL_MA, /*!< Mean Anomaly. */ SAT_LIST_FLAG_PHASE = 1 << SAT_LIST_COL_PHASE, /*!< Phase. */ SAT_LIST_FLAG_ORBIT = 1 << SAT_LIST_COL_ORBIT, /*!< Orbit Number. */ SAT_LIST_FLAG_VISIBILITY = 1 << SAT_LIST_COL_VISIBILITY, /*!< Visibility. */ SAT_LIST_FLAG_STAT_OPERATIONAL = 1 << SAT_LIST_COL_STAT_OPERATIONAL, /*!< Operational Status . */ SAT_LIST_FLAG_DECAY = 1 << SAT_LIST_COL_DECAY /*!< Decayed. */ } sat_list_flag_t; GType gtk_sat_list_get_type(void); GtkWidget *gtk_sat_list_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 columns); void gtk_sat_list_update(GtkWidget * widget); void gtk_sat_list_reconf(GtkWidget * widget, GKeyFile * cfgdat); void gtk_sat_list_reload_sats(GtkWidget * satlist, GHashTable * sats); void gtk_sat_list_select_sat(GtkWidget * satlist, gint catnum); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_SAT_MODULE_H__ */ gpredict/src/gtk-sat-map-ground-track.c000066400000000000000000000367111427377236300203630ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * Implementation of the satellite ground tracks. * * @note The ground track functions should only be called from gtk-sat-map.c * and gtk-sat-map-popup.c. * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gtk-sat-map.h" #include "gtk-sat-map-ground-track.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" static void create_polylines(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj); static gboolean ssp_wrap_detected(GtkSatMap * satmap, gdouble x1, gdouble x2); static void free_ssp(gpointer ssp, gpointer data); /** * Create and show ground track for a satellite. * * @param satmap The satellite map widget. * @param sat Pointer to the satellite object. * @param qth Pointer to the QTH data. * @param obj the satellite object. * * Gpredict allows the user to require the ground track for any number of orbits * ahead. Therefore, the resulting ground track may cross the map boundaries many * times, and using one single polyline for the whole ground track would look very * silly. To avoid this, the points will be split into several polylines. */ void ground_track_create(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj) { long this_orbit; /* current orbit number */ long max_orbit; /* target orbit number, ie. this + num - 1 */ double t0; /* time when this_orbit starts */ double t; ssp_t *this_ssp; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Creating ground track for %s"), __func__, sat->nickname); /* just to be safe... if empty GSList is not NULL => segfault */ obj->track_data.latlon = NULL; /* get configuration parameters */ this_orbit = sat->orbit; max_orbit = sat->orbit - 1 + mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_NUM, SAT_CFG_INT_MAP_TRACK_NUM); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Start orbit: %d"), __func__, this_orbit); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: End orbit %d"), __func__, max_orbit); /* find the time when the current orbit started */ /* Iterate backwards in time until we reach sat->orbit < this_orbit. Use predict_calc from predict-tools.c as SGP/SDP driver. As a built-in safety, we stop iteration if the orbit crossing is more than 24 hours back in time. */ t0 = satmap->tstamp; //get_current_daynum (); /* use == instead of >= as it is more robust */ for (t = t0; (sat->orbit == this_orbit) && ((t + 1.0) > t0); t -= 0.0007) predict_calc(sat, qth, t); /* set it so that we are in the same orbit as this_orbit and not a different one */ t += 2 * 0.0007; t0 = t; predict_calc(sat, qth, t0); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: T0: %f (%d)"), __func__, t0, sat->orbit); /* calculate (lat,lon) for the required orbits */ while ((sat->orbit <= max_orbit) && (sat->orbit >= this_orbit) && (!decayed(sat))) { /* We use 30 sec time steps. If resolution is too fine, the line drawing routine will filter out unnecessary points */ t += 0.00035; predict_calc(sat, qth, t); /* store this SSP */ /* Note: g_slist_append() has to traverse the entire list to find the end, which is inefficient when adding multiple elements. Therefore, we use g_slist_prepend() and reverse the entire list when we are done. */ this_ssp = g_try_new(ssp_t, 1); if (this_ssp == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: MAYDAY: Insufficient memory for ground track!"), __func__); return; } this_ssp->lat = sat->ssplat; this_ssp->lon = sat->ssplon; obj->track_data.latlon = g_slist_prepend(obj->track_data.latlon, this_ssp); } /* log if there is a problem with the orbit calculation */ if (sat->orbit != (max_orbit + 1)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Problem computing ground track for %s"), __func__, sat->nickname); return; } /* Reset satellite structure to eliminate glitches in single sat view and other places when new ground track is laid out */ predict_calc(sat, qth, satmap->tstamp); /* reverse GSList */ obj->track_data.latlon = g_slist_reverse(obj->track_data.latlon); /* split points into polylines */ create_polylines(satmap, sat, qth, obj); /* misc book-keeping */ obj->track_orbit = this_orbit; } /** * Update the ground track for a satellite. * * @param satmap The satellite map widget. * @param sat Pointer to the satellite object. * @param qth Pointer to the QTH data. * @param obj the satellite object. * @param recalc Flag indicating whether ground track should be recalculated. * * If (recalc=TRUE) * call ground_track_delete (clear_ssp=TRUE) * call ground_track_create * Else * call ground_track_delete (clear_ssp=FALSE) * call create_polylines * * * The purpose with the recalc flag is to allow updates of ground track look without having * to recalculate the whole ground track (recalc=FALSE). */ void ground_track_update(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj, gboolean recalc) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Updating ground track for %s"), __func__, sat->nickname); if (decayed(sat)) { ground_track_delete(satmap, sat, qth, obj, TRUE); return; } if (recalc == TRUE) { ground_track_delete(satmap, sat, qth, obj, TRUE); ground_track_create(satmap, sat, qth, obj); } else { ground_track_delete(satmap, sat, qth, obj, FALSE); create_polylines(satmap, sat, qth, obj); } } /** * Delete the ground track for a satellite. * * @param satmap The satellite map widget. * @param sat Pointer to the satellite object. * @param qth Pointer to the QTH data. * @param obj the satellite object. * @param clear_ssp Flag indicating whether SSP data should be cleared as well (TRUE=yes); */ void ground_track_delete(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj, gboolean clear_ssp) { guint i, n; gint j; GooCanvasItemModel *line; GooCanvasItemModel *root; (void)qth; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Deleting ground track for %s"), __func__, sat->nickname); root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); /* remove plylines */ if (obj->track_data.lines != NULL) { n = g_slist_length(obj->track_data.lines); for (i = 0; i < n; i++) { /* get line */ line = GOO_CANVAS_ITEM_MODEL(g_slist_nth_data (obj->track_data.lines, i)); /* find its ID and remove it */ j = goo_canvas_item_model_find_child(root, line); if (j == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not find part %d of ground track"), __func__, j); } else { goo_canvas_item_model_remove_child(root, j); } } g_slist_free(obj->track_data.lines); obj->track_data.lines = NULL; } /* clear SSP too? */ if (clear_ssp == TRUE) { if (obj->track_data.latlon != NULL) { /* free allocated ssp_t */ g_slist_foreach(obj->track_data.latlon, free_ssp, NULL); /* free the SList itself */ g_slist_free(obj->track_data.latlon); obj->track_data.latlon = NULL; } obj->track_orbit = 0; } } /** * Free an ssp_t structure. * * The ssp_t items in the obj->track_data.latlon GSList are dunamically allocated * hence they need to be freed when the cround track is deleted. This function * is intended to be called from a g_slist_foreach() iterator. */ static void free_ssp(gpointer ssp, gpointer data) { (void)data; g_free(ssp); } /** Create polylines. */ static void create_polylines(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj) { ssp_t *ssp, *buff; /* map coordinates */ double lastx, lasty; GSList *points = NULL; GooCanvasItemModel *root; GooCanvasItemModel *line; GooCanvasPoints *gpoints; guint start; guint i, j, n, num_points; guint32 col; (void)sat; (void)qth; /* initialise parameters */ lastx = -50.0; lasty = -50.0; start = 0; num_points = 0; n = g_slist_length(obj->track_data.latlon); col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_COL, SAT_CFG_INT_MAP_TRACK_COL); /* loop over each SSP */ for (i = 0; i < n; i++) { buff = (ssp_t *) g_slist_nth_data(obj->track_data.latlon, i); ssp = g_try_new(ssp_t, 1); gtk_sat_map_lonlat_to_xy(satmap, buff->lon, buff->lat, &ssp->lon, &ssp->lat); /* if this is the first point, just add it to the list */ if (i == start) { points = g_slist_prepend(points, ssp); lastx = ssp->lon; lasty = ssp->lat; } else { /* if SSP is on the other side of the map */ if (ssp_wrap_detected(satmap, lastx, ssp->lon)) { points = g_slist_reverse(points); num_points = g_slist_length(points); /* we need at least 2 points to draw a line */ if (num_points > 1) { /* convert SSPs to GooCanvasPoints */ gpoints = goo_canvas_points_new(num_points); for (j = 0; j < num_points; j++) { buff = (ssp_t *) g_slist_nth_data(points, j); gpoints->coords[2 * j] = buff->lon; gpoints->coords[2 * j + 1] = buff->lat; } /* create a new polyline using the current set of points */ root = goo_canvas_get_root_item_model(GOO_CANVAS (satmap->canvas)); line = goo_canvas_polyline_model_new(root, FALSE, 0, "points", gpoints, "line-width", 1.0, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); goo_canvas_points_unref(gpoints); goo_canvas_item_model_lower(line, obj->marker); /* store line in sat object */ obj->track_data.lines = g_slist_append(obj->track_data.lines, line); } /* reset parameters and continue with a new set */ g_slist_foreach(points, free_ssp, NULL); g_slist_free(points); points = NULL; start = i; lastx = ssp->lon; lasty = ssp->lat; num_points = 0; /* Add current SSP to the new list */ points = g_slist_prepend(points, ssp); lastx = ssp->lon; lasty = ssp->lat; } /* else if this SSP is separable from the previous */ else if ((fabs(lastx - ssp->lon) > 1.0) || (fabs(lasty - ssp->lat) > 1.0)) { /* add SSP to list */ points = g_slist_prepend(points, ssp); lastx = ssp->lon; lasty = ssp->lon; } /* else do nothing */ else g_free(ssp); } } /* create (last) line if we have at least two points */ points = g_slist_reverse(points); num_points = g_slist_length(points); if (num_points > 1) { /* convert SSPs to GooCanvasPoints */ gpoints = goo_canvas_points_new(num_points); for (j = 0; j < num_points; j++) { buff = (ssp_t *) g_slist_nth_data(points, j); gpoints->coords[2 * j] = buff->lon; gpoints->coords[2 * j + 1] = buff->lat; } /* create a new polyline using the current set of points */ root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); line = goo_canvas_polyline_model_new(root, FALSE, 0, "points", gpoints, "line-width", 1.0, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); goo_canvas_points_unref(gpoints); goo_canvas_item_model_lower(line, obj->marker); /* store line in sat object */ obj->track_data.lines = g_slist_append(obj->track_data.lines, line); /* reset parameters and continue with a new set */ g_slist_foreach(points, free_ssp, NULL); g_slist_free(points); } } /** Check whether ground track wraps around map borders */ static gboolean ssp_wrap_detected(GtkSatMap * satmap, gdouble x1, gdouble x2) { gboolean retval = FALSE; if (fabs(x1 - x2) > satmap->width / 2.0) retval = TRUE; return retval; } gpredict/src/gtk-sat-map-ground-track.h000066400000000000000000000032711427377236300203630ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_SAT_MAP_GROUND_TRACK_H__ #define __GTK_SAT_MAP_GROUND_TRACK_H__ 1 #include #include #include #include #include "gtk-sat-map.h" void ground_track_create(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj); void ground_track_update(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj, gboolean recalc); void ground_track_delete(GtkSatMap * satmap, sat_t * sat, qth_t * qth, sat_map_obj_t * obj, gboolean clear_ssp); #endif gpredict/src/gtk-sat-map-popup.c000066400000000000000000000221501427377236300171160ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "sat-cfg.h" #include "sat-log.h" #include "gtk-sat-data.h" #include "gtk-sat-map.h" #include "gtk-sat-map-popup.h" #include "gtk-sat-map-ground-track.h" #include "gtk-sat-popup-common.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-info.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" static void coverage_toggled(GtkCheckMenuItem * item, gpointer data); static void track_toggled(GtkCheckMenuItem * item, gpointer data); /* static void target_toggled (GtkCheckMenuItem *item, gpointer data); */ /** * Show satellite popup menu. * * @param sat Pointer to the satellite data. * @param qth The current location. * @param event The mouse-click related event info * @param toplevel Pointer to toplevel window. * */ void gtk_sat_map_popup_exec(sat_t * sat, qth_t * qth, GtkSatMap * satmap, GdkEventButton * event, GtkWidget * toplevel) { GtkWidget *menu; GtkWidget *menuitem; sat_map_obj_t *obj = NULL; gint *catnum; menu = gtk_menu_new(); /* first menu item is the satellite name, centered */ menuitem = gtk_menu_item_new(); gtk_menu_item_set_label(GTK_MENU_ITEM(menuitem), _("Satellite info")); /* attach data to menuitem and connect callback */ g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_sat_info_menu_cb), toplevel); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* add the menu items for current,next, and future passes. */ add_pass_menu_items(menu, sat, qth, &satmap->tstamp, GTK_WIDGET(satmap)); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* get sat obj since we'll need it for the remaining items */ catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; obj = SAT_MAP_OBJ(g_hash_table_lookup(satmap->obj, catnum)); g_free(catnum); /* highlight cov. area */ menuitem = gtk_check_menu_item_new_with_label(_("Highlight footprint")); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "obj", obj); g_object_set_data(G_OBJECT(menuitem), "qth", qth); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->showcov); g_signal_connect(menuitem, "activate", G_CALLBACK(coverage_toggled), satmap); /* show track */ menuitem = gtk_check_menu_item_new_with_label(_("Ground Track")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->showtrack); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "obj", obj); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->showtrack); g_signal_connect(menuitem, "activate", G_CALLBACK(track_toggled), satmap); #if 0 /* target */ menuitem = gtk_check_menu_item_new_with_label(_("Set Target")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->istarget); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "obj", obj); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), obj->istarget); g_signal_connect(menuitem, "activate", G_CALLBACK(target_toggled), satmap); gtk_widget_set_sensitive(menuitem, FALSE); #endif gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); #else (void) event; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } /** * Manage toggling of Area Coverage. * * @param item The menu item that was toggled. * @param data Pointer to the GtkSatMap structure. * */ static void coverage_toggled(GtkCheckMenuItem * item, gpointer data) { sat_map_obj_t *obj = NULL; sat_t *sat; GtkSatMap *satmap = GTK_SAT_MAP(data); guint32 covcol; /* get satellite object */ obj = SAT_MAP_OBJ(g_object_get_data(G_OBJECT(item), "obj")); sat = SAT(g_object_get_data(G_OBJECT(item), "sat")); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } /* toggle flag */ obj->showcov = !obj->showcov; gtk_check_menu_item_set_active(item, obj->showcov); if (obj->showcov) { /* remove it from the storage structure */ g_hash_table_remove(satmap->hidecovs, &(sat->tle.catnr)); } else { g_hash_table_insert(satmap->hidecovs, &(sat->tle.catnr), (gpointer) 0x1); } /* set or clear coverage colour */ if (obj->showcov) { covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); } else { covcol = 0x00000000; } g_object_set(obj->range1, "fill-color-rgba", covcol, NULL); if (obj->newrcnum == 2) { g_object_set(obj->range2, "fill-color-rgba", covcol, NULL); } } /** * Manage toggling of Ground Track. * * @param item The menu item that was toggled. * @param data Pointer to the GtkSatMap structure. * */ static void track_toggled(GtkCheckMenuItem * item, gpointer data) { sat_map_obj_t *obj = NULL; sat_t *sat = NULL; qth_t *qth = NULL; GtkSatMap *satmap = GTK_SAT_MAP(data); /* get satellite object */ obj = SAT_MAP_OBJ(g_object_get_data(G_OBJECT(item), "obj")); sat = SAT(g_object_get_data(G_OBJECT(item), "sat")); qth = (qth_t *) (g_object_get_data(G_OBJECT(item), "qth")); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } /* toggle flag */ obj->showtrack = !obj->showtrack; gtk_check_menu_item_set_active(item, obj->showtrack); if (obj->showtrack) { /* create ground track */ ground_track_create(satmap, sat, qth, obj); /* add it to the storage structure */ g_hash_table_insert(satmap->showtracks, &(sat->tle.catnr), (gpointer) 0x1); } else { /* delete ground track with clear_ssp = TRUE */ ground_track_delete(satmap, sat, qth, obj, TRUE); /* remove it from the storage structure */ g_hash_table_remove(satmap->showtracks, &(sat->tle.catnr)); } } #if 0 /** * Manage toggling of Set Target. * * @param item The menu item that was toggled. * @param data Pointer to the GtkSatMap structure. * */ static void target_toggled(GtkCheckMenuItem * item, gpointer data) { sat_map_obj_t *obj = NULL; /* get satellite object */ obj = SAT_MAP_OBJ(g_object_get_data(G_OBJECT(item), "obj")); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to get satellite object."), __FILE__, __LINE__); return; } /* toggle flag */ obj->istarget = !obj->istarget; gtk_check_menu_item_set_active(item, obj->istarget); } #endif gpredict/src/gtk-sat-map-popup.h000066400000000000000000000026001427377236300171210ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef GTK_SAT_MAP_POPUP_H #define GTK_SAT_MAP_POPUP_H 1 #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" #include "gtk-sat-map.h" void gtk_sat_map_popup_exec(sat_t * sat, qth_t * qth, GtkSatMap * satmap, GdkEventButton * event, GtkWidget * toplevel); #endif gpredict/src/gtk-sat-map.c000066400000000000000000002773601427377236300157740ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Copyright (C) 2006-2007 William J Beksi, KC2EXL. Copyright (C) 2013 Charles Suprin, AA1VS. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "gtk-sat-map-popup.h" #include "gtk-sat-map-ground-track.h" #include "gtk-sat-map.h" #include "locator.h" #include "map-tools.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define MARKER_SIZE_HALF 1 /* Update terminator every 30 seconds */ #define TERMINATOR_UPDATE_INTERVAL (15.0/86400.0) static void gtk_sat_map_class_init(GtkSatMapClass * class, gpointer class_data); static void gtk_sat_map_init(GtkSatMap * polview, gpointer g_class); static void gtk_sat_map_destroy(GtkWidget * widget); static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data); static void update_map_size(GtkSatMap * satmap); static void update_sat(gpointer key, gpointer value, gpointer data); static void plot_sat(gpointer key, gpointer value, gpointer data); static void free_sat_obj(gpointer key, gpointer value, gpointer data); static void lonlat_to_xy(GtkSatMap * m, gdouble lon, gdouble lat, gfloat * x, gfloat * y); static void xy_to_lonlat(GtkSatMap * m, gfloat x, gfloat y, gfloat * lon, gfloat * lat); static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data); static void on_item_created(GooCanvas * canvas, GooCanvasItem * item, GooCanvasItemModel * model, gpointer data); static void on_canvas_realized(GtkWidget * canvas, gpointer data); static gboolean on_button_press(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data); static gboolean on_button_release(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data); static void clear_selection(gpointer key, gpointer val, gpointer data); static void load_map_file(GtkSatMap * satmap, float clon); static GooCanvasItemModel *create_canvas_model(GtkSatMap * satmap); static gdouble arccos(gdouble, gdouble); static gboolean pole_is_covered(sat_t * sat); static gboolean north_pole_is_covered(sat_t * sat); static gboolean south_pole_is_covered(sat_t * sat); static gboolean mirror_lon(sat_t * sat, gdouble rangelon, gdouble * mlon, gdouble mapbreak); static guint calculate_footprint(GtkSatMap * satmap, sat_t * sat); static void split_points(GtkSatMap * satmap, sat_t * sat, gdouble sspx); static void sort_points_x(GtkSatMap * satmap, sat_t * sat, GooCanvasPoints * points, gint num); static void sort_points_y(GtkSatMap * satmap, sat_t * sat, GooCanvasPoints * points, gint num); static gint compare_coordinates_x(gconstpointer a, gconstpointer b, gpointer data); static gint compare_coordinates_y(gconstpointer a, gconstpointer b, gpointer data); static void update_selected(GtkSatMap * satmap, sat_t * sat); static void draw_grid_lines(GtkSatMap * satmap, GooCanvasItemModel * root); static void redraw_grid_lines(GtkSatMap * satmap); static void draw_terminator(GtkSatMap * satmap, GooCanvasItemModel * root); static void redraw_terminator(GtkSatMap * satmap); static gchar *aoslos_time_to_str(GtkSatMap * satmap, sat_t * sat); static void gtk_sat_map_load_showtracks(GtkSatMap * map); static void gtk_sat_map_store_showtracks(GtkSatMap * satmap); static void gtk_sat_map_load_hide_coverages(GtkSatMap * map); static void gtk_sat_map_store_hidecovs(GtkSatMap * satmap); static void reset_ground_track(gpointer key, gpointer value, gpointer user_data); static GtkVBoxClass *parent_class = NULL; static GooCanvasPoints *points1; static GooCanvasPoints *points2; GType gtk_sat_map_get_type() { static GType gtk_sat_map_type = 0; if (!gtk_sat_map_type) { static const GTypeInfo gtk_sat_map_info = { sizeof(GtkSatMapClass), NULL, /* base init */ NULL, /* base finalize */ (GClassInitFunc) gtk_sat_map_class_init, NULL, /* class finalize */ NULL, /* class data */ sizeof(GtkSatMap), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_sat_map_init, NULL }; gtk_sat_map_type = g_type_register_static(GTK_TYPE_BOX, "GtkSatMap", >k_sat_map_info, 0); } return gtk_sat_map_type; } static void gtk_sat_map_class_init(GtkSatMapClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; widget_class->destroy = gtk_sat_map_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_sat_map_init(GtkSatMap * satmap, gpointer g_class) { (void)g_class; satmap->sats = NULL; satmap->qth = NULL; satmap->obj = NULL; satmap->showtracks = g_hash_table_new_full(g_int_hash, g_int_equal, NULL, NULL); satmap->hidecovs = g_hash_table_new_full(g_int_hash, g_int_equal, NULL, NULL); satmap->naos = 0.0; satmap->ncat = 0; satmap->tstamp = 2458849.5; satmap->x0 = 0; satmap->y0 = 0; satmap->width = 0; satmap->height = 0; satmap->refresh = 0; satmap->counter = 0; satmap->show_terminator = FALSE; satmap->qthinfo = FALSE; satmap->eventinfo = FALSE; satmap->cursinfo = FALSE; satmap->showgrid = FALSE; satmap->keepratio = FALSE; satmap->resize = FALSE; } static void gtk_sat_map_destroy(GtkWidget * widget) { GtkSatMap *satmap = GTK_SAT_MAP(widget); GooCanvasItemModel *root; gint idx; guint i; /* check widget isn't already destroyed */ if (satmap->obj) { /* save config */ gtk_sat_map_store_showtracks(GTK_SAT_MAP(widget)); gtk_sat_map_store_hidecovs(GTK_SAT_MAP(widget)); /* sat objects need a reference to the widget to free all alocations */ g_hash_table_foreach(satmap->obj, free_sat_obj, satmap); g_hash_table_destroy(satmap->obj); satmap->obj = NULL; /* these objects destruct themselves cleanly */ g_object_unref(satmap->origmap); satmap->origmap = NULL; g_hash_table_destroy(satmap->showtracks); satmap->showtracks = NULL; g_hash_table_destroy(satmap->hidecovs); satmap->hidecovs = NULL; root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); idx = goo_canvas_item_model_find_child(root, satmap->qthmark); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->qthmark = NULL; idx = goo_canvas_item_model_find_child(root, satmap->qthlabel); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->qthlabel = NULL; idx = goo_canvas_item_model_find_child(root, satmap->locnam); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->locnam = NULL; idx = goo_canvas_item_model_find_child(root, satmap->curs); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->curs = NULL; idx = goo_canvas_item_model_find_child(root, satmap->next); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->next = NULL; idx = goo_canvas_item_model_find_child(root, satmap->sel); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->sel = NULL; idx = goo_canvas_item_model_find_child(root, satmap->terminator); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->terminator = NULL; for (i = 0; i < 5; i++) { idx = goo_canvas_item_model_find_child(root, satmap->gridh[i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->gridh[i] = NULL; idx = goo_canvas_item_model_find_child(root, satmap->gridhlab[i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->gridhlab[i] = NULL; } for (i = 0; i < 11; i++) { idx = goo_canvas_item_model_find_child(root, satmap->gridv[i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->gridv[i] = NULL; idx = goo_canvas_item_model_find_child(root, satmap->gridvlab[i]); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->gridvlab[i] = NULL; } idx = goo_canvas_item_model_find_child(root, satmap->map); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); satmap->map = NULL; } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } GtkWidget *gtk_sat_map_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth) { GtkSatMap *satmap; GooCanvasItemModel *root; guint32 col; satmap = g_object_new(GTK_TYPE_SAT_MAP, NULL); satmap->cfgdata = cfgdata; satmap->sats = sats; satmap->qth = qth; satmap->obj = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free); satmap->refresh = mod_cfg_get_int(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_REFRESH, SAT_CFG_INT_MAP_REFRESH); satmap->counter = 1; satmap->qthinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_QTH_INFO, SAT_CFG_BOOL_MAP_SHOW_QTH_INFO); satmap->eventinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_NEXT_EVENT, SAT_CFG_BOOL_MAP_SHOW_NEXT_EV); satmap->cursinfo = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_CURS_TRACK, SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK); satmap->showgrid = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_GRID, SAT_CFG_BOOL_MAP_SHOW_GRID); satmap->show_terminator = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_TERMINATOR, SAT_CFG_BOOL_MAP_SHOW_TERMINATOR); satmap->keepratio = mod_cfg_get_bool(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_KEEP_RATIO, SAT_CFG_BOOL_MAP_KEEP_RATIO); col = mod_cfg_get_int(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_BGD_COL, SAT_CFG_INT_MAP_INFO_BGD_COL); satmap->infobgd = rgba2html(col); satmap->canvas = goo_canvas_new(); g_object_set(G_OBJECT(satmap->canvas), "has-tooltip", TRUE, NULL); float clon = (float)mod_cfg_get_int(cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_CENTER, SAT_CFG_INT_MAP_CENTER); load_map_file(satmap, clon); /* Initial size request should be based on map size but if we do this we can not shrink the canvas below this size even though the map shrinks => better to set default size of main container window. */ /* gtk_widget_set_size_request (satmap->canvas, */ /* gdk_pixbuf_get_width (satmap->origmap), */ /* gdk_pixbuf_get_height (satmap->origmap)); */ goo_canvas_set_bounds(GOO_CANVAS(satmap->canvas), 0, 0, gdk_pixbuf_get_width(satmap->origmap), gdk_pixbuf_get_height(satmap->origmap)); g_signal_connect(satmap->canvas, "size-allocate", G_CALLBACK(size_allocate_cb), satmap); g_signal_connect(satmap->canvas, "item_created", (GCallback) on_item_created, satmap); g_signal_connect_after(satmap->canvas, "realize", (GCallback) on_canvas_realized, satmap); gtk_widget_show(satmap->canvas); root = create_canvas_model(satmap); goo_canvas_set_root_item_model(GOO_CANVAS(satmap->canvas), root); g_object_unref(root); gtk_sat_map_load_showtracks(satmap); gtk_sat_map_load_hide_coverages(satmap); g_hash_table_foreach(satmap->sats, plot_sat, satmap); gtk_box_pack_start(GTK_BOX(satmap), satmap->canvas, TRUE, TRUE, 0); return GTK_WIDGET(satmap); } static GooCanvasItemModel *create_canvas_model(GtkSatMap * satmap) { GooCanvasItemModel *root; gchar *buff; gfloat x, y; guint32 col; satmap->terminator = NULL; root = goo_canvas_group_model_new(NULL, NULL); /* map dimensions */ satmap->width = 200; // was: gdk_pixbuf_get_width (satmap->origmap); satmap->height = 100; // was: gdk_pixbuf_get_height (satmap->origmap); satmap->x0 = 0; satmap->y0 = 0; /* background map */ satmap->map = goo_canvas_image_model_new(root, satmap->origmap, satmap->x0, satmap->y0, NULL); goo_canvas_item_model_lower(satmap->map, NULL); draw_grid_lines(satmap, root); if (satmap->show_terminator) draw_terminator(satmap, root); /* QTH mark */ col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_QTH_COL, SAT_CFG_INT_MAP_QTH_COL); lonlat_to_xy(satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); satmap->qthmark = goo_canvas_rect_model_new(root, x - MARKER_SIZE_HALF, y - MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); satmap->qthlabel = goo_canvas_text_model_new(root, satmap->qth->name, x, y + 2, -1, GOO_CANVAS_ANCHOR_NORTH, "font", "Sans 8", "fill-color-rgba", col, NULL); /* QTH info */ col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_COL, SAT_CFG_INT_MAP_INFO_COL); satmap->locnam = goo_canvas_text_model_new(root, "", satmap->x0 + 2, satmap->y0 + 1, -1, GOO_CANVAS_ANCHOR_NORTH_WEST, "font", "Sans 8", "fill-color-rgba", col, "use-markup", TRUE, NULL); /* set text only if QTH info is enabled */ if (satmap->qthinfo) { /* For now only QTH name and location. It would be nice with coordinates (remember NWSE setting) and Maidenhead locator, when using hamlib. Note: I used pango markup to set the background color, I didn't find any other obvious ways to get the text height in pixels to draw rectangle. */ buff = g_strdup_printf(" %s \302\267 %s ", satmap->infobgd, satmap->qth->name, satmap->qth->loc); g_object_set(satmap->locnam, "text", buff, NULL); g_free(buff); } /* next event */ satmap->next = goo_canvas_text_model_new(root, "", satmap->x0 + satmap->width - 2, satmap->y0 + 1, -1, GOO_CANVAS_ANCHOR_NORTH_EAST, "font", "Sans 8", "fill-color-rgba", col, "use-markup", TRUE, NULL); /* set text only if QTH info is enabled */ if (satmap->eventinfo) { buff = g_strdup_printf(" ... ", satmap->infobgd); g_object_set(satmap->next, "text", buff, NULL); g_free(buff); } /* cursor track */ satmap->curs = goo_canvas_text_model_new(root, "", satmap->x0 + 2, satmap->y0 + satmap->height - 1, -1, GOO_CANVAS_ANCHOR_SOUTH_WEST, "font", "Sans 8", "fill-color-rgba", col, "use-markup", TRUE, NULL); /* info about a selected satellite */ satmap->sel = goo_canvas_text_model_new(root, "", satmap->x0 + satmap->width - 2, satmap->y0 + satmap->height - 1, -1, GOO_CANVAS_ANCHOR_SOUTH_EAST, "font", "Sans 8", "fill-color-rgba", col, "use-markup", TRUE, NULL); return root; } static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data) { (void)widget; (void)allocation; GTK_SAT_MAP(data)->resize = TRUE; } static void update_map_size(GtkSatMap * satmap) { GtkAllocation allocation; GdkPixbuf *pbuf; gfloat x, y; gfloat ratio; /* ratio between map width and height */ gfloat size; /* size = min (alloc.w, ratio*alloc.h) */ if (gtk_widget_get_realized(GTK_WIDGET(satmap))) { /* get graph dimensions */ gtk_widget_get_allocation(GTK_WIDGET(satmap), &allocation); if (satmap->keepratio) { /* Use allocation->width and allocation->height to calculate * new X0 Y0 width and height. Map proportions must be kept. */ ratio = gdk_pixbuf_get_width(satmap->origmap) / gdk_pixbuf_get_height(satmap->origmap); size = MIN(allocation.width, ratio * allocation.height); satmap->width = (guint) size; satmap->height = (guint) (size / ratio); satmap->x0 = (allocation.width - satmap->width) / 2; satmap->y0 = (allocation.height - satmap->height) / 2; /* rescale pixbuf */ pbuf = gdk_pixbuf_scale_simple(satmap->origmap, satmap->width, satmap->height, GDK_INTERP_BILINEAR); } else { satmap->x0 = 0; satmap->y0 = 0; satmap->width = allocation.width; satmap->height = allocation.height; /* rescale pixbuf */ pbuf = gdk_pixbuf_scale_simple(satmap->origmap, satmap->width, satmap->height, GDK_INTERP_BILINEAR); } /* set canvas bounds to match new size */ goo_canvas_set_bounds(GOO_CANVAS(GTK_SAT_MAP(satmap)->canvas), 0, 0, satmap->width, satmap->height); /* redraw static elements */ g_object_set(satmap->map, "pixbuf", pbuf, "x", (gdouble) satmap->x0, "y", (gdouble) satmap->y0, NULL); g_object_unref(pbuf); redraw_grid_lines(satmap); if (satmap->show_terminator) redraw_terminator(satmap); lonlat_to_xy(satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); g_object_set(satmap->qthmark, "x", x - MARKER_SIZE_HALF, "y", y - MARKER_SIZE_HALF, NULL); g_object_set(satmap->qthlabel, "x", x, "y", y + 2, NULL); g_object_set(satmap->locnam, "x", (gdouble) satmap->x0 + 2, "y", (gdouble) satmap->y0 + 1, NULL); g_object_set(satmap->next, "x", (gdouble) satmap->x0 + satmap->width - 2, "y", (gdouble) satmap->y0 + 1, NULL); g_object_set(satmap->curs, "x", (gdouble) satmap->x0 + 2, "y", (gdouble) satmap->y0 + satmap->height - 1, NULL); g_object_set(satmap->sel, "x", (gdouble) satmap->x0 + satmap->width - 2, "y", (gdouble) satmap->y0 + satmap->height - 1, NULL); g_hash_table_foreach(satmap->sats, update_sat, satmap); satmap->resize = FALSE; } } static void on_canvas_realized(GtkWidget * canvas, gpointer data) { GtkSatMap *satmap = GTK_SAT_MAP(data); (void)canvas; goo_canvas_item_model_raise(satmap->sel, NULL); goo_canvas_item_model_raise(satmap->locnam, NULL); goo_canvas_item_model_raise(satmap->next, NULL); goo_canvas_item_model_raise(satmap->curs, NULL); } /* Update the GtkSatMap widget. Called periodically from GtkSatModule. */ void gtk_sat_map_update(GtkWidget * widget) { GtkSatMap *satmap = GTK_SAT_MAP(widget); sat_t *sat = NULL; gdouble number, now; gchar *buff; gint *catnr; guint h, m, s; gchar *ch, *cm, *cs; gfloat x, y; gdouble oldx, oldy; /* check whether there are any pending resize requests */ if (satmap->resize) update_map_size(satmap); /* check if qth has moved significantly, if so move it */ lonlat_to_xy(satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); g_object_get(satmap->qthmark, "x", &oldx, "y", &oldy, NULL); if ((fabs(oldx - x) >= 2 * MARKER_SIZE_HALF) || (fabs(oldy - y) >= 2 * MARKER_SIZE_HALF)) { g_object_set(satmap->qthmark, "x", x - MARKER_SIZE_HALF, "y", y - MARKER_SIZE_HALF, NULL); g_object_set(satmap->qthlabel, "x", x, "y", y + 2, NULL); g_object_set(satmap->locnam, "x", (gdouble) satmap->x0 + 2, "y", (gdouble) satmap->y0 + 1, NULL); satmap->counter = satmap->refresh; } /* check refresh rate and refresh sats/qth if time */ /* FIXME add location check */ if (satmap->counter < satmap->refresh) { satmap->counter++; } else { /* reset data */ satmap->counter = 1; satmap->naos = 0.0; satmap->ncat = 0; lonlat_to_xy(satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); g_object_set(satmap->qthmark, "x", x - MARKER_SIZE_HALF, "y", y - MARKER_SIZE_HALF, NULL); g_object_set(satmap->qthlabel, "x", x, "y", y + 2, NULL); g_object_set(satmap->locnam, "x", (gdouble) satmap->x0 + 2, "y", (gdouble) satmap->y0 + 1, NULL); g_hash_table_foreach(satmap->sats, update_sat, satmap); /* Update the Solar Terminator if necessary */ if (satmap->show_terminator && fabs(satmap->tstamp - satmap->terminator_last_tstamp) > TERMINATOR_UPDATE_INTERVAL) { satmap->terminator_last_tstamp = satmap->tstamp; redraw_terminator(satmap); } if (satmap->eventinfo) { if (satmap->ncat > 0) { catnr = g_try_new0(gint, 1); *catnr = satmap->ncat; sat = SAT(g_hash_table_lookup(satmap->sats, catnr)); g_free(catnr); /* last desperate sanity check */ if (sat != NULL) { now = satmap->tstamp; //get_current_daynum (); number = satmap->naos - now; /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* leading zero */ if ((h > 0) && (h < 10)) ch = g_strdup("0"); else ch = g_strdup(""); /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; /* leading zero */ if (m < 10) cm = g_strdup("0"); else cm = g_strdup(""); /* leading zero */ if (s < 10) cs = g_strdup(":0"); else cs = g_strdup(":"); if (h > 0) buff = g_markup_printf_escaped(_ (" " "Next: %s in %s%d:%s%d%s%d "), satmap->infobgd, sat->nickname, ch, h, cm, m, cs, s); else buff = g_markup_printf_escaped(_ (" " "Next: %s in %s%d%s%d "), satmap->infobgd, sat->nickname, cm, m, cs, s); g_object_set(satmap->next, "text", buff, NULL); g_free(buff); g_free(ch); g_free(cm); g_free(cs); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Can not find NEXT satellite."), __func__); g_object_set(satmap->next, "text", _("Next: ERR"), NULL); } } else { g_object_set(satmap->next, "text", _("Next: N/A"), NULL); } } else { g_object_set(satmap->next, "text", "", NULL); } } } /* Assumes that -180 <= lon <= 180 and -90 <= lat <= 90 */ static void lonlat_to_xy(GtkSatMap * p, gdouble lon, gdouble lat, gfloat * x, gfloat * y) { *x = p->x0 + (lon - p->left_side_lon) * p->width / 360.0; *y = p->y0 + (90.0 - lat) * p->height / 180.0; while (*x < 0) { *x += p->width; } while (*x > p->width) { *x -= p->width; } } static void xy_to_lonlat(GtkSatMap * p, gfloat x, gfloat y, gfloat * lon, gfloat * lat) { *lat = 90.0 - (180.0 / p->height) * (y - p->y0); *lon = (360.0 / p->width) * (x - p->x0) + p->left_side_lon; while (*lon > 180) { *lon -= 360; } while (*lon < -180) { *lon += 360; } } static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data) { GtkSatMap *satmap = GTK_SAT_MAP(data); gfloat lat, lon; gchar *text; (void)target; (void)item; /* set text only if QTH info is enabled */ if (satmap->cursinfo) { xy_to_lonlat(satmap, event->x, event->y, &lon, &lat); /* cursor track */ text = g_strdup_printf(" " "LON:%.0f\302\260 LAT:%.0f\302\260 ", satmap->infobgd, lon, lat); g_object_set(satmap->curs, "text", text, NULL); g_free(text); } return TRUE; } /* * Finish canvas item setup. * * This function is called when a canvas item is created. Its purpose is to connect * the corresponding signals to the created items. * * The root item, ie the background is connected to motion notify event, while other * items (sats) are connected to mouse click events. * * @bug Should filter out QTH or do we want to click on the QTH? */ static void on_item_created(GooCanvas * canvas, GooCanvasItem * item, GooCanvasItemModel * model, gpointer data) { (void)canvas; if (!goo_canvas_item_model_get_parent(model)) { /* root item / canvas */ g_signal_connect(item, "motion_notify_event", (GCallback) on_motion_notify, data); } else if (!g_object_get_data(G_OBJECT(item), "skip-signal-connection")) { g_signal_connect(item, "button_press_event", (GCallback) on_button_press, data); g_signal_connect(item, "button_release_event", (GCallback) on_button_release, data); } } static gboolean on_button_press(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data) { GooCanvasItemModel *model = goo_canvas_item_get_model(item); GtkSatMap *satmap = GTK_SAT_MAP(data); gint catnum = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(model), "catnum")); gint *catpoint = NULL; sat_t *sat = NULL; (void)target; switch (event->button) { /* double-left-click */ case 1: if (event->type == GDK_2BUTTON_PRESS) { catpoint = g_try_new0(gint, 1); *catpoint = catnum; sat = SAT(g_hash_table_lookup(satmap->sats, catpoint)); if (sat != NULL) { show_sat_info(sat, gtk_widget_get_toplevel(GTK_WIDGET(data))); } else { /* double-clicked on map */ } } g_free(catpoint); break; /* pop-up menu */ case 3: catpoint = g_try_new0(gint, 1); *catpoint = catnum; sat = SAT(g_hash_table_lookup(satmap->sats, catpoint)); if (sat != NULL) { gtk_sat_map_popup_exec(sat, satmap->qth, satmap, event, gtk_widget_get_toplevel(GTK_WIDGET (satmap))); } else { /* clicked on map -> map pop-up in the future */ } g_free(catpoint); break; default: break; } return TRUE; } static gboolean on_button_release(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data) { GooCanvasItemModel *model = goo_canvas_item_get_model(item); GtkSatMap *satmap = GTK_SAT_MAP(data); gint catnum = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(model), "catnum")); gint *catpoint = NULL; sat_map_obj_t *obj = NULL; guint32 col; (void)target; catpoint = g_try_new0(gint, 1); *catpoint = catnum; switch (event->button) { /* Select / de-select satellite */ case 1: obj = SAT_MAP_OBJ(g_hash_table_lookup(satmap->obj, catpoint)); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%d: Can not find clicked object (%d) in hash table"), __FILE__, __LINE__, catnum); } else { obj->selected = !obj->selected; if (obj->selected) { col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, SAT_CFG_INT_MAP_SAT_SEL_COL); } else { col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, SAT_CFG_INT_MAP_SAT_COL); *catpoint = 0; g_object_set(satmap->sel, "text", "", NULL); } g_object_set(obj->marker, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->label, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->range1, "stroke-color-rgba", col, NULL); if (obj->oldrcnum == 2) g_object_set(obj->range2, "stroke-color-rgba", col, NULL); /* clear other selections */ g_hash_table_foreach(satmap->obj, clear_selection, catpoint); } break; default: break; } g_free(catpoint); return TRUE; } static void clear_selection(gpointer key, gpointer val, gpointer data) { gint *old = key; gint *new = data; sat_map_obj_t *obj = SAT_MAP_OBJ(val); guint32 col; if ((*old != *new) && (obj->selected)) { obj->selected = FALSE; /** FIXME: this is only global default; need the satmap here! */ col = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COL); g_object_set(obj->marker, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->label, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->range1, "stroke-color-rgba", col, NULL); if (obj->oldrcnum == 2) g_object_set(obj->range2, "stroke-color-rgba", col, NULL); } } void gtk_sat_map_select_sat(GtkWidget * satmap, gint catnum) { GtkSatMap *smap = GTK_SAT_MAP(satmap); gint *catpoint = NULL; sat_map_obj_t *obj = NULL; guint32 col; catpoint = g_try_new0(gint, 1); *catpoint = catnum; obj = SAT_MAP_OBJ(g_hash_table_lookup(smap->obj, catpoint)); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Can not find clicked object (%d) in hash table"), __func__, catnum); } else { obj->selected = TRUE; col = mod_cfg_get_int(smap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, SAT_CFG_INT_MAP_SAT_SEL_COL); g_object_set(obj->marker, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->label, "fill-color-rgba", col, "stroke-color-rgba", col, NULL); g_object_set(obj->range1, "stroke-color-rgba", col, NULL); if (obj->oldrcnum == 2) g_object_set(obj->range2, "stroke-color-rgba", col, NULL); /* clear other selections */ g_hash_table_foreach(smap->obj, clear_selection, catpoint); } g_free(catpoint); } /* * Reconfigure map. * * This function should eventually reload all configuration for the GtkSatMap. * Currently this function is not implemented for any of the views. Reconfiguration * is done by recreating the whole module. */ void gtk_sat_map_reconf(GtkWidget * widget, GKeyFile * cfgdat) { (void)widget; (void)cfgdat; } /* * Safely load a map file. * * @param satmap The GtkSatMap widget * @param clon The longitude that should be the center of the map * * This function is called shortly after the canvas has been created. Its purpose * is to load a mapfile into satmap->origmap. * * The function ensures that satmap->origmap will contain a valid GdkPixpuf, by * using the following logic: * * - Get either module specific or global map file using mod_cfg_get_str * - If the returned file does not exist try sat_cfg_get_str_def * - If loading of default map does not succeed, create a dummy GdkPixbuf * (and raise all possible alarms) * * @note satmap->cfgdata should contain a valid GKeyFile. * */ static void load_map_file(GtkSatMap * satmap, float clon) { gchar *buff; gchar *mapfile; GError *error = NULL; GdkPixbuf *tmpbuf; /* get local, global or default map file */ buff = mod_cfg_get_str(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_FILE, SAT_CFG_STR_MAP_FILE); if (g_path_is_absolute(buff)) { /* map is user specific, ie. in $HOME/.gpredict2/maps/ */ mapfile = g_strdup(buff); } else { /* build complete path */ mapfile = map_file_name(buff); } g_free(buff); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Loading map file %s"), __FILE__, __LINE__, mapfile); /* check that file exists, if not get the default */ if (g_file_test(mapfile, G_FILE_TEST_EXISTS)) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Map file found"), __FILE__, __LINE__); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Could not find map file %s"), __FILE__, __LINE__, mapfile); /* get default map file */ g_free(mapfile); mapfile = sat_cfg_get_str_def(SAT_CFG_STR_MAP_FILE); sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Using default map: %s"), __FILE__, __LINE__, mapfile); } /* try to load the map file */ tmpbuf = gdk_pixbuf_new_from_file(mapfile, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error loading map file (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); /* create a dummy GdkPixbuf to avoid crash */ tmpbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 400, 200); gdk_pixbuf_fill(tmpbuf, 0x0F0F0F0F); } /* create a blank map with same parameters as tmpbuf */ satmap->origmap = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, gdk_pixbuf_get_bits_per_sample(tmpbuf), gdk_pixbuf_get_width(tmpbuf), gdk_pixbuf_get_height(tmpbuf)); map_tools_shift_center(tmpbuf, satmap->origmap, clon); g_object_unref(tmpbuf); g_free(mapfile); /* Calculate longitude at the left side (-180 deg if center is at 0 deg longitude) */ satmap->left_side_lon = -180.0; if (clon > 0.0) satmap->left_side_lon += clon; else if (clon < 0.0) satmap->left_side_lon = 180.0 + clon; } static gdouble arccos(gdouble x, gdouble y) { if (x && y) { if (y > 0.0) return acos(x / y); else if (y < 0.0) return pi + acos(x / y); } return 0.0; } /* Check whether the footprint covers the North or South pole. */ static gboolean pole_is_covered(sat_t * sat) { if (north_pole_is_covered(sat) || south_pole_is_covered(sat)) return TRUE; else return FALSE; } /* Check whether the footprint covers the North pole. */ static gboolean north_pole_is_covered(sat_t * sat) { int ret1; gdouble qrb1, az1; ret1 = qrb(sat->ssplon, sat->ssplat, 0.0, 90.0, &qrb1, &az1); if (ret1 != RIG_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Bad data measuring distance to North Pole %f %f."), __func__, sat->ssplon, sat->ssplat); } if (qrb1 <= 0.5 * sat->footprint) { return TRUE; } return FALSE; } /* Check whether the footprint covers the South pole. */ static gboolean south_pole_is_covered(sat_t * sat) { int ret1; gdouble qrb1, az1; ret1 = qrb(sat->ssplon, sat->ssplat, 0.0, -90.0, &qrb1, &az1); if (ret1 != RIG_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Bad data measuring distance to South Pole %f %f."), __func__, sat->ssplon, sat->ssplat); } if (qrb1 <= 0.5 * sat->footprint) { return TRUE; } return FALSE; } /* Mirror the footprint longitude. */ static gboolean mirror_lon(sat_t * sat, gdouble rangelon, gdouble * mlon, gdouble mapbreak) { gdouble diff; gboolean warped = FALSE; /* make it so rangelon is on left of ssplon */ diff = (sat->ssplon - rangelon); while (diff < 0) diff += 360; while (diff > 360) diff -= 360; *mlon = sat->ssplon + fabs(diff); while (*mlon > 180) *mlon -= 360; while (*mlon < -180) *mlon += 360; //printf("Something %s %f %f %f\n",sat->nickname, sat->ssplon, rangelon,mapbreak); if (((sat->ssplon >= mapbreak) && (sat->ssplon < mapbreak + 180)) || ((sat->ssplon < mapbreak - 180) && (sat->ssplon >= mapbreak - 360))) { if (((rangelon >= mapbreak) && (rangelon < mapbreak + 180)) || ((rangelon < mapbreak - 180) && (rangelon >= mapbreak - 360))) { } else { warped = TRUE; //printf ("sat %s warped for first \n",sat->nickname); } } else { if (((*mlon >= mapbreak) && (*mlon < mapbreak + 180)) || ((*mlon < mapbreak - 180) && (*mlon >= mapbreak - 360))) { warped = TRUE; //printf ("sat %s warped for second \n",sat->nickname); } } return warped; } /** * Calculate satellite footprint and coverage area. * * @param satmap TheGtkSatMap widget. * @param sat The satellite. * @param points1 Initialised GooCanvasPoints structure with 360 points. * @param points2 Initialised GooCanvasPoints structure with 360 points. * @return The number of range circle parts. * * This function calculates the "left" side of the range circle and mirrors * the points in longitude to create the "right side of the range circle, too. * In order to be able to use the footprint points to create a set of subsequent * lines connected to each other (poly-lines) the function may have to perform * one of the following three actions: * * 1. If the footprint covers the North or South pole, we need to sort the points * and add two extra points: One to begin the range circle (e.g. -180,90) and * one to end the range circle (e.g. 180,90). This is necessary to create a * complete and consistent set of points suitable for a polyline. The addition * of the extra points is done by the sort_points function. * * 2. Else if parts of the range circle is on one side of the map, while parts of * it is on the right side of the map, i.e. the range circle runs off the border * of the map, it calls the split_points function to split the points into two * complete and consistent sets of points that are suitable to create two * poly-lines. * * 3. Else nothing needs to be done since the points are already suitable for * a polyline. * * The function will re-initialise points1 and points2 according to its needs. The * total number of points will always be 360, even with the addition of the two * extra points. */ static guint calculate_footprint(GtkSatMap * satmap, sat_t * sat) { guint azi; gfloat sx, sy, msx, msy, ssx, ssy; gdouble ssplat, ssplon, beta, azimuth, num, dem; gdouble rangelon, rangelat, mlon; gboolean warped = FALSE; guint numrc = 1; /* Range circle calculations. * Borrowed from gsat 0.9.0 by Xavier Crehueras, EB3CZS * who borrowed from John Magliacane, KD2BD. * Optimized by Alexandru Csete and William J Beksi. */ ssplat = sat->ssplat * de2ra; ssplon = sat->ssplon * de2ra; beta = (0.5 * sat->footprint) / xkmper; for (azi = 0; azi < 180; azi++) { azimuth = de2ra * (double)azi; rangelat = asin(sin(ssplat) * cos(beta) + cos(azimuth) * sin(beta) * cos(ssplat)); num = cos(beta) - (sin(ssplat) * sin(rangelat)); dem = cos(ssplat) * cos(rangelat); if (azi == 0 && north_pole_is_covered(sat)) rangelon = ssplon + pi; else if (fabs(num / dem) > 1.0) rangelon = ssplon; else { if ((180.0 - azi) >= 0) rangelon = ssplon - arccos(num, dem); else rangelon = ssplon + arccos(num, dem); } while (rangelon < -pi) rangelon += twopi; while (rangelon > (pi)) rangelon -= twopi; rangelat = rangelat / de2ra; rangelon = rangelon / de2ra; /* mirror longitude */ if (mirror_lon(sat, rangelon, &mlon, satmap->left_side_lon)) warped = TRUE; lonlat_to_xy(satmap, rangelon, rangelat, &sx, &sy); lonlat_to_xy(satmap, mlon, rangelat, &msx, &msy); points1->coords[2 * azi] = sx; points1->coords[2 * azi + 1] = sy; /* Add mirrored point */ points1->coords[718 - 2 * azi] = msx; points1->coords[719 - 2 * azi] = msy; } /* points1 now contains 360 pairs of map-based XY coordinates. Check whether actions 1, 2 or 3 have to be performed. */ /* pole is covered => sort points1 and add additional points */ if (pole_is_covered(sat)) { sort_points_x(satmap, sat, points1, 360); numrc = 1; } /* pole not covered but range circle has been warped => split points */ else if (warped == TRUE) { lonlat_to_xy(satmap, sat->ssplon, sat->ssplat, &ssx, &ssy); split_points(satmap, sat, ssx); numrc = 2; } else { /* the nominal condition => points1 is adequate */ numrc = 1; } return numrc; } /** * Split and sort polyline points. * * @param satmap The GtkSatMap structure. * @param points1 GooCanvasPoints containing the footprint points. * @param points2 A GooCanvasPoints structure containing the second set of points. * @param sspx Canvas based x-coordinate of SSP. * @bug We should ensure that the endpoints in points1 have x=x0, while in * the endpoints in points2 should have x=x0+width (TBC). * * @note This function works on canvas-based coordinates rather than lat/lon * @note DO NOT USE this function when the footprint covers one of the poles * (the end result may freeze the X-server requiring a hard-reset!) */ static void split_points(GtkSatMap * satmap, sat_t * sat, gdouble sspx) { GooCanvasPoints *tps1, *tps2; gint n, n1, n2, ns, i, j, k; /* initialize parameters */ n = points1->num_points; n1 = 0; n2 = 0; i = 0; j = 0; k = 0; ns = 0; tps1 = goo_canvas_points_new(n); tps2 = goo_canvas_points_new(n); //if ((sspx >= (satmap->x0 + satmap->width - 0.6)) || // (sspx >= (satmap->x0 - 0.6))) { //if ((sspx == (satmap->x0 + satmap->width)) || // (sspx == (satmap->x0))) { if ((sat->ssplon >= 179.4) || (sat->ssplon <= -179.4)) { /* sslon = +/-180 deg. - copy points with (x > satmap->x0+satmap->width/2) to tps1 - copy points with (x < satmap->x0+satmap->width/2) to tps2 - sort tps1 and tps2 */ for (i = 0; i < n; i++) { if (points1->coords[2 * i] > (satmap->x0 + satmap->width / 2)) { tps1->coords[2 * n1] = points1->coords[2 * i]; tps1->coords[2 * n1 + 1] = points1->coords[2 * i + 1]; n1++; } else { tps2->coords[2 * n2] = points1->coords[2 * i]; tps2->coords[2 * n2 + 1] = points1->coords[2 * i + 1]; n2++; } } sort_points_y(satmap, sat, tps1, n1); sort_points_y(satmap, sat, tps2, n2); } else if (sspx < (satmap->x0 + satmap->width / 2)) { /* We are on the left side of the map. Scan through points1 until we get to x > sspx (i=ns): - copy the points forwards until x < (x0+w/2) => tps2 - continue to copy until the end => tps1 - copy the points from i=0 to i=ns => tps1. Copy tps1 => points1 and tps2 => points2 */ while (points1->coords[2 * i] <= sspx) { i++; } ns = i - 1; while (points1->coords[2 * i] > (satmap->x0 + satmap->width / 2)) { tps2->coords[2 * j] = points1->coords[2 * i]; tps2->coords[2 * j + 1] = points1->coords[2 * i + 1]; i++; j++; n2++; } while (i < n) { tps1->coords[2 * k] = points1->coords[2 * i]; tps1->coords[2 * k + 1] = points1->coords[2 * i + 1]; i++; k++; n1++; } for (i = 0; i <= ns; i++) { tps1->coords[2 * k] = points1->coords[2 * i]; tps1->coords[2 * k + 1] = points1->coords[2 * i + 1]; k++; n1++; } } else { /* We are on the right side of the map. Scan backwards through points1 until x < sspx (i=ns): - copy the points i=ns,i-- until x >= x0+w/2 => tps2 - copy the points until we reach i=0 => tps1 - copy the points from i=n to i=ns => tps1 */ i = n - 1; while (points1->coords[2 * i] >= sspx) { i--; } ns = i + 1; while (points1->coords[2 * i] < (satmap->x0 + satmap->width / 2)) { tps2->coords[2 * j] = points1->coords[2 * i]; tps2->coords[2 * j + 1] = points1->coords[2 * i + 1]; i--; j++; n2++; } while (i >= 0) { tps1->coords[2 * k] = points1->coords[2 * i]; tps1->coords[2 * k + 1] = points1->coords[2 * i + 1]; i--; k++; n1++; } for (i = n - 1; i >= ns; i--) { tps1->coords[2 * k] = points1->coords[2 * i]; tps1->coords[2 * k + 1] = points1->coords[2 * i + 1]; k++; n1++; } } //g_print ("NS:%d N1:%d N2:%d\n", ns, n1, n2); /* free points and copy new contents */ goo_canvas_points_unref(points1); goo_canvas_points_unref(points2); points1 = goo_canvas_points_new(n1); for (i = 0; i < n1; i++) { points1->coords[2 * i] = tps1->coords[2 * i]; points1->coords[2 * i + 1] = tps1->coords[2 * i + 1]; } goo_canvas_points_unref(tps1); points2 = goo_canvas_points_new(n2); for (i = 0; i < n2; i++) { points2->coords[2 * i] = tps2->coords[2 * i]; points2->coords[2 * i + 1] = tps2->coords[2 * i + 1]; } goo_canvas_points_unref(tps2); /* stretch end points to map borders */ if (points1->coords[0] > (satmap->x0 + satmap->width / 2)) { points1->coords[0] = satmap->x0 + satmap->width; points1->coords[2 * (n1 - 1)] = satmap->x0 + satmap->width; points2->coords[0] = satmap->x0; points2->coords[2 * (n2 - 1)] = satmap->x0; } else { points2->coords[0] = satmap->x0 + satmap->width; points2->coords[2 * (n2 - 1)] = satmap->x0 + satmap->width; points1->coords[0] = satmap->x0; points1->coords[2 * (n1 - 1)] = satmap->x0; } } /** * Sort points according to X coordinates. * * @param satmap The GtkSatMap structure. * @param sat The satellite data structure. * @param points The points to sort. * @param num The number of points. By specifying it as parameter we can * sort incomplete arrays. * * This function sorts the points in ascending order with respect * to their x value. After sorting the function adds two extra points * to the array using the following algorithms: * * move point at position 0 to position 1 * move point at position N to position N-1 * if (ssplat > 0) * insert (x0,y0) into position 0 * insert (x0+width,y0) into position N * else * insert (x0,y0+height) into position 0 * insert (x0+width,y0+height) into position N * * This way we loose the points at position 1 and N-1, but that does not * make any big difference anyway, since we have 360 points in total. * */ static void sort_points_x(GtkSatMap * satmap, sat_t * sat, GooCanvasPoints * points, gint num) { gsize size = 2 * sizeof(double); /* call g_qsort_with_data, which warps the qsort function from stdlib */ g_qsort_with_data(points->coords, num, size, compare_coordinates_x, NULL); /* move point at position 0 to position 1 */ points->coords[2] = satmap->x0; points->coords[3] = points->coords[1]; /* move point at position N to position N-1 */ points->coords[716] = satmap->x0 + satmap->width; //points->coords[718]; points->coords[717] = points->coords[719]; if (sat->ssplat > 0.0) { /* insert (x0-1,y0) into position 0 */ points->coords[0] = satmap->x0; points->coords[1] = satmap->y0; /* insert (x0+width,y0) into position N */ points->coords[718] = satmap->x0 + satmap->width; points->coords[719] = satmap->y0; } else { /* insert (x0,y0+height) into position 0 */ points->coords[0] = satmap->x0; points->coords[1] = satmap->y0 + satmap->height; /* insert (x0+width,y0+height) into position N */ points->coords[718] = satmap->x0 + satmap->width; points->coords[719] = satmap->y0 + satmap->height; } } /** * Sort points according to Y coordinates. * * @param satmap The GtkSatMap structure. * @param sat The satellite data structure. * @param points The points to sort. * @param num The number of points. By specifying it as parameter we can * sort incomplete arrays. * * This function sorts the points in ascending order with respect * to their y value. */ static void sort_points_y(GtkSatMap * satmap, sat_t * sat, GooCanvasPoints * points, gint num) { gsize size; (void)satmap; (void)sat; size = 2 * sizeof(double); /* call g_qsort_with_data, which warps the qsort function from stdlib */ g_qsort_with_data(points->coords, num, size, compare_coordinates_y, NULL); } /** * Compare two X coordinates. * * @param a Pointer to one coordinate (x,y) both double. * @param b Pointer to the second coordinate (x,y) both double. * @param data User data; always NULL. * @return Negative value if a < b; zero if a = b; positive value if a > b. * * This function is used by the g_qsort_with_data function to compare two * elements in the coordinate array of the GooCanvasPoints structure. We have * to remember that GooCanvasPoints->coords is an array of XY values, i.e. * [X0,Y0,X1,Y1,...,Xn,Yn], but we only want to sort according to the X * coordinate. Therefore, we let the g_qsort_with_data believe that the whole * pair is one element (which is OK even according to the API docs) but we * cast the pointers to an array with two elements and compare only the first * one (x). * */ static gint compare_coordinates_x(gconstpointer a, gconstpointer b, gpointer data) { double *ea = (double *)a; double *eb = (double *)b; (void)data; if (ea[0] < eb[0]) { return -1; } else if (ea[0] > eb[0]) { return 1; } return 0; } /** * Compare two Y coordinates. * * @param a Pointer to one coordinate (x,y) both double. * @param b Pointer to the second coordinate (x,y) both double. * @param data User data; always NULL. * @return Negative value if a < b; zero if a = b; positive value if a > b. * * This function is used by the g_qsort_with_data function to compare two * elements in the coordinate array of the GooCanvasPoints structure. We have * to remember that GooCanvasPoints->coords is an array of XY values, i.e. * [X0,Y0,X1,Y1,...,Xn,Yn], but we only want to sort according to the Y * coordinate. Therefore, we let the g_qsort_with_data believe that the whole * pair is one element (which is OK even according to the API docs) but we * cast the pointers to an array with two elements and compare only the second * one (y). * */ static gint compare_coordinates_y(gconstpointer a, gconstpointer b, gpointer data) { double *ea = (double *)a; double *eb = (double *)b; (void)data; if (ea[1] < eb[1]) { return -1; } else if (ea[1] > eb[1]) { return 1; } return 0; } /** * Plot a satellite. * * @param key The hash table key. * @param value Pointer to the satellite. * @param data Pointer to the GtkSatMap widget. * * This function creates and initializes the canvas objects (rectangle, label, * footprint) for a satellite. The function is called as a g_hash_table_foreach * callback. */ static void plot_sat(gpointer key, gpointer value, gpointer data) { GtkSatMap *satmap = GTK_SAT_MAP(data); sat_map_obj_t *obj = NULL; sat_t *sat = SAT(value); GooCanvasItemModel *root; gint *catnum; guint32 col, covcol, shadowcol; gfloat x, y; gchar *tooltip; (void)key; if (decayed(sat)) { return; } /* get satellite and SSP */ catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; lonlat_to_xy(satmap, sat->ssplon, sat->ssplat, &x, &y); /* create and initialize a sat object */ obj = g_try_new(sat_map_obj_t, 1); if (obj == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Cannot allocate memory for satellite %d."), __func__, sat->tle.catnr); return; } obj->selected = FALSE; if (!g_hash_table_lookup_extended(satmap->showtracks, catnum, NULL, NULL)) { obj->showtrack = FALSE; } else { obj->showtrack = TRUE; } if (!g_hash_table_lookup_extended(satmap->hidecovs, catnum, NULL, NULL)) { obj->showcov = TRUE; } else { obj->showcov = FALSE; } obj->istarget = FALSE; obj->oldrcnum = 0; obj->newrcnum = 0; obj->range2 = NULL; obj->catnum = sat->tle.catnr; obj->track_data.latlon = NULL; obj->track_data.lines = NULL; obj->track_orbit = 0; root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); /* satellite color */ col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, SAT_CFG_INT_MAP_SAT_COL); /* area coverage colour */ covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); /* coverage color */ if (obj->showcov) { covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); } else { covcol = 0x00000000; } /* shadow colour (only alpha channel) */ shadowcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHADOW_ALPHA, SAT_CFG_INT_MAP_SHADOW_ALPHA); /* create tooltip */ tooltip = g_markup_printf_escaped("%s\n" "Lon: %5.1f\302\260\n" "Lat: %5.1f\302\260\n" " Az: %5.1f\302\260\n" " El: %5.1f\302\260", sat->nickname, sat->ssplon, sat->ssplat, sat->az, sat->el); /* create satellite marker and label + shadows. We create shadows first */ obj->shadowm = goo_canvas_rect_model_new(root, x - MARKER_SIZE_HALF + 1, y - MARKER_SIZE_HALF + 1, 2 * MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, "fill-color-rgba", 0x00, "stroke-color-rgba", shadowcol, NULL); obj->marker = goo_canvas_rect_model_new(root, x - MARKER_SIZE_HALF, y - MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, 2 * MARKER_SIZE_HALF, "fill-color-rgba", col, "stroke-color-rgba", col, "tooltip", tooltip, NULL); obj->shadowl = goo_canvas_text_model_new(root, sat->nickname, x + 1, y + 3, -1, GOO_CANVAS_ANCHOR_NORTH, "font", "Sans 8", "fill-color-rgba", shadowcol, NULL); obj->label = goo_canvas_text_model_new(root, sat->nickname, x, y + 2, -1, GOO_CANVAS_ANCHOR_NORTH, "font", "Sans 8", "fill-color-rgba", col, "tooltip", tooltip, NULL); g_free(tooltip); g_object_set_data(G_OBJECT(obj->marker), "catnum", GINT_TO_POINTER(*catnum)); g_object_set_data(G_OBJECT(obj->label), "catnum", GINT_TO_POINTER(*catnum)); /* initialize points for footprint */ points1 = goo_canvas_points_new(360); points2 = goo_canvas_points_new(360); /* calculate footprint */ obj->newrcnum = calculate_footprint(satmap, sat); obj->oldrcnum = obj->newrcnum; /* invisible footprint for decayed sats (STS fix) */ /* if (sat->otype == ORBIT_TYPE_DECAYED) { */ /* col = 0x00000000; */ /* } */ /* always create first part of range circle */ obj->range1 = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points1, "line-width", 1.0, "fill-color-rgba", covcol, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); g_object_set_data(G_OBJECT(obj->range1), "catnum", GINT_TO_POINTER(*catnum)); /* create second part if available */ if (obj->newrcnum == 2) { //g_print ("N1:%d N2:%d\n", points1->num_points, points2->num_points); obj->range2 = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points2, "line-width", 1.0, "fill-color-rgba", covcol, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); g_object_set_data(G_OBJECT(obj->range2), "catnum", GINT_TO_POINTER(*catnum)); } goo_canvas_points_unref(points1); goo_canvas_points_unref(points2); /* add sat to hash table */ g_hash_table_insert(satmap->obj, catnum, obj); } /** * Free a satellite object. * * @param key The hash table key. * @param value Pointer to the satellite. * @param data Pointer to the GtkSatMap widget. * * This function removes the canvas objects allocated by `plot_sat`. It needs * access the the GtkSatMap widget to remove the elements from the canvas and * to pass on to `ground_track_delete`. The function must be called as a * g_hash_table_foreach callback in order to pass in the GtkSatMap. */ static void free_sat_obj(gpointer key, gpointer value, gpointer data) { sat_map_obj_t *obj = SAT_MAP_OBJ(value); sat_t *sat = NULL; GtkSatMap *satmap = GTK_SAT_MAP(data); GooCanvasItemModel *root; gint idx; (void)key; root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); idx = goo_canvas_item_model_find_child(root, obj->marker); if (idx != -1) goo_canvas_item_model_remove_child(root, idx);; obj->marker = NULL; idx = goo_canvas_item_model_find_child(root, obj->shadowm); if (idx != -1) goo_canvas_item_model_remove_child(root, idx);; obj->shadowm = NULL; idx = goo_canvas_item_model_find_child(root, obj->label); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); obj->label = NULL; idx = goo_canvas_item_model_find_child(root, obj->shadowl); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); obj->shadowl = NULL; idx = goo_canvas_item_model_find_child(root, obj->range1); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); obj->range1 = NULL; idx = goo_canvas_item_model_find_child(root, obj->range2); if (idx != -1) goo_canvas_item_model_remove_child(root, idx); obj->range2 = NULL; if (obj->showtrack) { sat = SAT(g_hash_table_lookup(satmap->sats, &obj->catnum)); ground_track_delete(satmap, sat, satmap->qth, obj, TRUE); } } /** Update a given satellite. */ static void update_sat(gpointer key, gpointer value, gpointer data) { gint *catnum; GtkSatMap *satmap = GTK_SAT_MAP(data); sat_map_obj_t *obj = NULL; sat_t *sat = SAT(value); gfloat x, y; gdouble oldx, oldy; gdouble now; // = get_current_daynum (); GooCanvasItemModel *root; gint idx; guint32 col, covcol; gchar *tooltip; gchar *aosstr; //gdouble sspla,ssplo; root = goo_canvas_get_root_item_model(GOO_CANVAS(satmap->canvas)); catnum = g_new0(gint, 1); *catnum = sat->tle.catnr; now = satmap->tstamp; /* update next AOS */ if (sat->aos > now) { if ((sat->aos < satmap->naos) || (satmap->naos == 0.0)) { satmap->naos = sat->aos; satmap->ncat = sat->tle.catnr; } } obj = SAT_MAP_OBJ(g_hash_table_lookup(satmap->obj, catnum)); /* get rid of a decayed satellite */ if (decayed(sat) && obj != NULL) { free_sat_obj(NULL, obj, satmap); g_hash_table_remove(satmap->obj, catnum); return; } if (obj == NULL) { if (decayed(sat)) { return; } else { /* satellite was decayed now is visible time controller backed up time */ plot_sat(key, value, data); return; } } if (obj->selected) { /* update satmap->sel */ update_selected(satmap, sat); } g_object_set(obj->label, "text", sat->nickname, NULL); g_object_set(obj->shadowl, "text", sat->nickname, NULL); aosstr = aoslos_time_to_str(satmap, sat); tooltip = g_markup_printf_escaped("%s\n" "Lon: %5.1f\302\260\n" "Lat: %5.1f\302\260\n" " Az: %5.1f\302\260\n" " El: %5.1f\302\260\n" "%s", sat->nickname, sat->ssplon, sat->ssplat, sat->az, sat->el, aosstr); g_object_set(obj->marker, "tooltip", tooltip, NULL); g_object_set(obj->label, "tooltip", tooltip, NULL); g_free(tooltip); g_free(aosstr); lonlat_to_xy(satmap, sat->ssplon, sat->ssplat, &x, &y); /* update only if satellite has moved at least 2 * MARKER_SIZE_HALF (no need to drain CPU all the time) */ g_object_get(obj->marker, "x", &oldx, "y", &oldy, NULL); if ((fabs(oldx - x) >= 2 * MARKER_SIZE_HALF) || (fabs(oldy - y) >= 2 * MARKER_SIZE_HALF)) { g_object_set(obj->marker, "x", (gdouble) (x - MARKER_SIZE_HALF), "y", (gdouble) (y - MARKER_SIZE_HALF), NULL); g_object_set(obj->shadowm, "x", (gdouble) (x - MARKER_SIZE_HALF + 1), "y", (gdouble) (y - MARKER_SIZE_HALF + 1), NULL); if (x < 50) { g_object_set(obj->label, "x", (gdouble) (x + 3), "y", (gdouble) (y), "anchor", GOO_CANVAS_ANCHOR_WEST, NULL); g_object_set(obj->shadowl, "x", (gdouble) (x + 3 + 1), "y", (gdouble) (y + 1), "anchor", GOO_CANVAS_ANCHOR_WEST, NULL); } else if ((satmap->width - x) < 50) { g_object_set(obj->label, "x", (gdouble) (x - 3), "y", (gdouble) (y), "anchor", GOO_CANVAS_ANCHOR_EAST, NULL); g_object_set(obj->shadowl, "x", (gdouble) (x - 3 + 1), "y", (gdouble) (y + 1), "anchor", GOO_CANVAS_ANCHOR_EAST, NULL); } else if ((satmap->height - y) < 25) { g_object_set(obj->label, "x", (gdouble) (x), "y", (gdouble) (y - 2), "anchor", GOO_CANVAS_ANCHOR_SOUTH, NULL); g_object_set(obj->shadowl, "x", (gdouble) (x + 1), "y", (gdouble) (y - 2 + 1), "anchor", GOO_CANVAS_ANCHOR_SOUTH, NULL); } else { g_object_set(obj->label, "x", (gdouble) (x), "y", (gdouble) (y + 2), "anchor", GOO_CANVAS_ANCHOR_NORTH, NULL); g_object_set(obj->shadowl, "x", (gdouble) (x + 1), "y", (gdouble) (y + 2 + 1), "anchor", GOO_CANVAS_ANCHOR_NORTH, NULL); } /* initialize points for footprint */ points1 = goo_canvas_points_new(360); points2 = goo_canvas_points_new(360); /* calculate footprint */ obj->newrcnum = calculate_footprint(satmap, sat); /* always update first part */ g_object_set(obj->range1, "points", points1, NULL); if (obj->newrcnum == 2) { if (obj->oldrcnum == 1) { /* we need to create the second part */ if (obj->selected) { col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, SAT_CFG_INT_MAP_SAT_SEL_COL); } else { col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, SAT_CFG_INT_MAP_SAT_COL); } /* coverage color */ if (obj->showcov) { covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); } else { covcol = 0x00000000; } obj->range2 = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points2, "line-width", 1.0, "fill-color-rgba", covcol, "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); g_object_set_data(G_OBJECT(obj->range2), "catnum", GINT_TO_POINTER(*catnum)); } else { /* just update the second part */ g_object_set(obj->range2, "points", points2, NULL); } } else { if (obj->oldrcnum == 2) { /* remove second part */ idx = goo_canvas_item_model_find_child(root, obj->range2); if (idx != -1) { goo_canvas_item_model_remove_child(root, idx); } } } /* update rc-number */ obj->oldrcnum = obj->newrcnum; goo_canvas_points_unref(points1); goo_canvas_points_unref(points2); } /* if ground track is visible check whether we have passed into a new orbit, in which case we need to recalculate the ground track */ if (obj->showtrack) { if (obj->track_orbit != sat->orbit) { ground_track_update(satmap, sat, satmap->qth, obj, TRUE); } /* otherwise we may be in a map rescale process */ else if (satmap->resize) { ground_track_update(satmap, sat, satmap->qth, obj, FALSE); } } g_free(catnum); } /** * Update information about the selected satellite. * * @param satmap Pointer to the GtkSatMap widget. * @param sat Pointer to the selected satellite */ static void update_selected(GtkSatMap * satmap, sat_t * sat) { guint h, m, s; gchar *ch, *cm, *cs; gchar *alsstr, *text; gdouble number, now; gboolean isgeo = FALSE; /* set to TRUE if satellite appears to be GEO */ now = satmap->tstamp; //get_current_daynum (); if (sat->el > 0.0) { if (sat->los > 0.0) { number = sat->los - now; alsstr = g_strdup("LOS"); } else { isgeo = TRUE; } } else { if (sat->aos > 0.0) { number = sat->aos - now; alsstr = g_strdup("AOS"); } else { isgeo = TRUE; } } /* if satellite appears to be GEO don't attempt to show AOS/LOS */ if (isgeo) { if (sat->el > 0.0) { text = g_markup_printf_escaped (" %s: Always in range ", satmap->infobgd, sat->nickname); } else { text = g_markup_printf_escaped (" %s: Always out of range ", satmap->infobgd, sat->nickname); } } else { /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* leading zero */ if ((h > 0) && (h < 10)) ch = g_strdup("0"); else ch = g_strdup(""); /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; /* leading zero */ if (m < 10) cm = g_strdup("0"); else cm = g_strdup(""); /* leading zero */ if (s < 10) cs = g_strdup(":0"); else cs = g_strdup(":"); if (h > 0) { text = g_markup_printf_escaped(" " "%s %s in %s%d:%s%d%s%d ", satmap->infobgd, sat->nickname, alsstr, ch, h, cm, m, cs, s); } else { text = g_markup_printf_escaped(" " "%s %s in %s%d%s%d ", satmap->infobgd, sat->nickname, alsstr, cm, m, cs, s); } g_free(ch); g_free(cm); g_free(cs); g_free(alsstr); } /* update info text */ g_object_set(satmap->sel, "text", text, NULL); g_free(text); } static void draw_grid_lines(GtkSatMap * satmap, GooCanvasItemModel * root) { gdouble xstep, ystep; gfloat lon, lat; guint32 col; guint i; gchar *buf, hmf = ' '; /* initialize algo parameters */ col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GRID_COL, SAT_CFG_INT_MAP_GRID_COL); xstep = (gdouble) (30.0 * satmap->width / 360.0); ystep = (gdouble) (30.0 * satmap->height / 180.0); #define MKLINE goo_canvas_polyline_model_new_line /* horizontal grid */ for (i = 0; i < 5; i++) { /* line */ satmap->gridh[i] = MKLINE(root, (gdouble) satmap->x0, (gdouble) (satmap->y0 + (i + 1) * ystep), (gdouble) (satmap->x0 + satmap->width), (gdouble) (satmap->y0 + (i + 1) * ystep), "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 0.5, NULL); /* FIXME: Use dotted line pattern? */ /* label */ xy_to_lonlat(satmap, satmap->x0, satmap->y0 + (i + 1) * ystep, &lon, &lat); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (lat < 0.00) { lat = -lat; hmf = 'S'; } else { hmf = 'N'; } } buf = g_strdup_printf("%.0f\302\260%c", lat, hmf); satmap->gridhlab[i] = goo_canvas_text_model_new(root, buf, (gdouble) (satmap->x0 + 15), (gdouble) (satmap->y0 + (i + 1) * ystep), -1, GOO_CANVAS_ANCHOR_NORTH, "font", "Sans 8", "fill-color-rgba", col, NULL); g_free(buf); /* lower items to be just above the background map or below it if lines are invisible */ if (satmap->showgrid) { goo_canvas_item_model_raise(satmap->gridh[i], satmap->map); goo_canvas_item_model_raise(satmap->gridhlab[i], satmap->map); } else { goo_canvas_item_model_lower(satmap->gridh[i], satmap->map); goo_canvas_item_model_lower(satmap->gridhlab[i], satmap->map); } } /* vertical grid */ for (i = 0; i < 11; i++) { /* line */ satmap->gridv[i] = MKLINE(root, (gdouble) (satmap->x0 + (i + 1) * xstep), (gdouble) satmap->y0, (gdouble) (satmap->x0 + (i + 1) * xstep), (gdouble) (satmap->y0 + satmap->height), "stroke-color-rgba", col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, "line-width", 0.5, NULL); /* label */ xy_to_lonlat(satmap, satmap->x0 + (i + 1) * xstep, satmap->y0, &lon, &lat); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (lon < 0.00) { lon = -lon; hmf = 'W'; } else { hmf = 'E'; } } buf = g_strdup_printf("%.0f\302\260%c", lon, hmf); satmap->gridvlab[i] = goo_canvas_text_model_new(root, buf, (gdouble) (satmap->x0 + (i + 1) * xstep), (gdouble) (satmap->y0 + satmap->height - 5), -1, GOO_CANVAS_ANCHOR_EAST, "font", "Sans 8", "fill-color-rgba", col, NULL); g_free(buf); /* lower items to be just above the background map or below it if lines are invisible */ if (satmap->showgrid) { goo_canvas_item_model_raise(satmap->gridv[i], satmap->map); goo_canvas_item_model_raise(satmap->gridvlab[i], satmap->map); } else { goo_canvas_item_model_lower(satmap->gridv[i], satmap->map); goo_canvas_item_model_lower(satmap->gridvlab[i], satmap->map); } } } static void draw_terminator(GtkSatMap * satmap, GooCanvasItemModel * root) { guint32 terminator_col; guint32 globe_shadow_col; /* initialize algo parameters */ terminator_col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TERMINATOR_COL, SAT_CFG_INT_MAP_TERMINATOR_COL); globe_shadow_col = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GLOBAL_SHADOW_COL, SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); /* We do not set any polygon vertices here, but trust that the redraw_terminator will be called in due course to do the job. */ satmap->terminator = goo_canvas_polyline_model_new(root, FALSE, 0, "line-width", 1.0, "fill-color-rgba", globe_shadow_col, "stroke-color-rgba", terminator_col, "line-cap", CAIRO_LINE_CAP_SQUARE, "line-join", CAIRO_LINE_JOIN_MITER, NULL); goo_canvas_item_model_raise(satmap->terminator, satmap->map); satmap->terminator_last_tstamp = satmap->tstamp; } static void redraw_grid_lines(GtkSatMap * satmap) { GooCanvasPoints *line; gdouble xstep, ystep; guint i; xstep = (gdouble) 30.0 *((gdouble) satmap->width) / 360.0; ystep = (gdouble) 30.0 *((gdouble) satmap->height) / 180.0; /* horizontal grid */ for (i = 0; i < 5; i++) { /* update line */ line = goo_canvas_points_new(2); line->coords[0] = (gdouble) satmap->x0; line->coords[1] = (gdouble) (satmap->y0 + (i + 1) * ystep); line->coords[2] = (gdouble) (satmap->x0 + satmap->width); line->coords[3] = (gdouble) (satmap->y0 + (i + 1) * ystep); g_object_set(satmap->gridh[i], "points", line, NULL); goo_canvas_points_unref(line); /* update label */ g_object_set(satmap->gridhlab[i], "x", (gdouble) (satmap->x0 + 15), "y", (gdouble) (satmap->y0 + (i + 1) * ystep), NULL); /* lower items to be just above the background map or below it if lines are invisible */ if (satmap->showgrid) { goo_canvas_item_model_raise(satmap->gridh[i], satmap->map); goo_canvas_item_model_raise(satmap->gridhlab[i], satmap->map); } else goo_canvas_item_model_lower(satmap->gridh[i], satmap->map); } /* vertical grid */ for (i = 0; i < 11; i++) { /* update line */ line = goo_canvas_points_new(2); line->coords[0] = (gdouble) (satmap->x0 + (i + 1) * xstep); line->coords[1] = (gdouble) satmap->y0; line->coords[2] = (gdouble) (satmap->x0 + (i + 1) * xstep); line->coords[3] = (gdouble) (satmap->y0 + satmap->height); g_object_set(satmap->gridv[i], "points", line, NULL); goo_canvas_points_unref(line); /* update label */ g_object_set(satmap->gridvlab[i], "x", (gdouble) (satmap->x0 + (i + 1) * xstep), "y", (gdouble) (satmap->y0 + satmap->height - 5), NULL); /* lower items to be just above the background map or below it if lines are invisible */ if (satmap->showgrid) { goo_canvas_item_model_raise(satmap->gridv[i], satmap->map); goo_canvas_item_model_raise(satmap->gridvlab[i], satmap->map); } else { goo_canvas_item_model_lower(satmap->gridv[i], satmap->map); goo_canvas_item_model_lower(satmap->gridvlab[i], satmap->map); } } } static inline gdouble sgn(gdouble const t) { return t < 0.0 ? -1.0 : 1.0; } static void redraw_terminator(GtkSatMap * satmap) { /* Set of (x, y) points along the terminator, one on each line of longitude in increments of longitudinal degrees. */ GooCanvasPoints *line; /* A variable which iterates over the longitudes. */ int longitude; /* Working variables in the computation of the terminator coordinates. */ gfloat x, y; /* Vector normal to plane containing a line of longitude (z component is always zero). */ /* Note: our coordinates have z along the Earth's axis, x pointing through the intersection of the Greenwich Meridian and the Equator, and y right-handedly perpendicular to both. */ gdouble lx, ly; /* The position of the sun as latitude, longitude. */ geodetic_t geodetic; /* Vector which points from the centre of the Earth to the Sun in inertial coordinates. */ vector_t sun_; /* The same vector in geodesic coordinates. */ gdouble sx, sy, sz; /* Vector cross-product of (lx,ly,lz) and sun vector. */ gdouble rx, ry, rz; line = goo_canvas_points_new(363); Calculate_Solar_Position(satmap->tstamp, &sun_); Calculate_LatLonAlt(satmap->tstamp, &sun_, &geodetic); sx = cos(geodetic.lat) * cos(geodetic.lon); sy = cos(geodetic.lat) * sin(-geodetic.lon); sz = sin(geodetic.lat); for (longitude = -180; longitude <= 180; ++longitude) { int centered_longitude = longitude + (satmap->left_side_lon - 180.0); lx = cos(de2ra * (centered_longitude + sgn(sz) * 90)); ly = sin(de2ra * (centered_longitude + sgn(sz) * 90)); /* lz = 0.0; */ rx = ly * sz /* -lz*sy */ ; ry = /* lz*sx */ -lx * sz; rz = -lx * sy - ly * sx; gdouble length = sqrt(rx * rx + ry * ry + rz * rz); lonlat_to_xy(satmap, centered_longitude, asin(rz / length) * (1.0 / de2ra), &x, &y); if( 180 == longitude ) { // make sure the last point is on the right side x = satmap->x0 + satmap->width; } line->coords[2 * (longitude + 181)] = x; line->coords[2 * (longitude + 181) + 1] = y; } line->coords[0] = satmap->x0; line->coords[1] = sz < 0.0 ? satmap->y0 : ( satmap->y0 + satmap->height ); line->coords[724] = satmap->x0 + satmap->width; line->coords[725] = sz < 0.0 ? satmap->y0 : ( satmap->y0 + satmap->height ); g_object_set(satmap->terminator, "points", line, NULL); goo_canvas_points_unref(line); } void gtk_sat_map_lonlat_to_xy(GtkSatMap * m, gdouble lon, gdouble lat, gdouble * x, gdouble * y) { gfloat fx, fy; fx = (gfloat) * x; fy = (gfloat) * y; lonlat_to_xy(m, lon, lat, &fx, &fy); *x = (gdouble) fx; *y = (gdouble) fy; } void gtk_sat_map_reload_sats(GtkWidget * satmap, GHashTable * sats) { GTK_SAT_MAP(satmap)->sats = sats; GTK_SAT_MAP(satmap)->naos = 0.0; GTK_SAT_MAP(satmap)->ncat = 0; /* reset ground track orbit to force repaint */ g_hash_table_foreach(GTK_SAT_MAP(satmap)->obj, reset_ground_track, NULL); } static void reset_ground_track(gpointer key, gpointer value, gpointer user_data) { sat_map_obj_t *obj = (sat_map_obj_t *) value; (void) key; (void) user_data; obj->track_orbit = 0; } static gchar *aoslos_time_to_str(GtkSatMap * satmap, sat_t * sat) { guint h, m, s; gdouble number, now; gchar *text = NULL; now = satmap->tstamp; //get_current_daynum (); if (sat->el > 0.0) { number = sat->los - now; } else { number = sat->aos - now; } /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; if (sat->el > 0.0) text = g_strdup_printf(_("LOS in %d minutes"), m + 60 * h); else text = g_strdup_printf(_("AOS in %d minutes"), m + 60 * h); return text; } /** Load the satellites that we should show tracks for */ static void gtk_sat_map_load_showtracks(GtkSatMap * satmap) { mod_cfg_get_integer_list_boolean(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOWTRACKS, satmap->showtracks); } /** Save the satellites that we should not show ground tracks */ static void gtk_sat_map_store_showtracks(GtkSatMap * satmap) { mod_cfg_set_integer_list_boolean(satmap->cfgdata, satmap->showtracks, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOWTRACKS); } /** Save the satellites that we should not highlight coverage */ static void gtk_sat_map_store_hidecovs(GtkSatMap * satmap) { mod_cfg_set_integer_list_boolean(satmap->cfgdata, satmap->hidecovs, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_HIDECOVS); } /** Load the satellites that we should not highlight coverage */ static void gtk_sat_map_load_hide_coverages(GtkSatMap * satmap) { mod_cfg_get_integer_list_boolean(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_HIDECOVS, satmap->hidecovs); } gpredict/src/gtk-sat-map.h000066400000000000000000000150111427377236300157600ustar00rootroot00000000000000#ifndef __GTK_SAT_MAP_H__ #define __GTK_SAT_MAP_H__ 1 #include #include #include #include #include #include "gtk-sat-data.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ #define SAT_MAP_RANGE_CIRCLE_POINTS 180 /*!< Number of points used to plot a satellite range half circle. */ #define GTK_SAT_MAP(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_sat_map_get_type (), GtkSatMap) #define GTK_SAT_MAP_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_sat_map_get_type (), GtkSatMapClass) #define GTK_IS_SAT_MAP(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_map_get_type ()) #define GTK_TYPE_SAT_MAP (gtk_sat_map_get_type ()) #define IS_GTK_SAT_MAP(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_map_get_type ()) typedef struct _GtkSatMapClass GtkSatMapClass; /** Structure that define a sub-satellite point. */ typedef struct { double lat; /*!< Latitude in decimal degrees North. */ double lon; /*!< Longitude in decimal degrees West. */ } ssp_t; /** Data storage for ground tracks */ typedef struct { GSList *latlon; /*!< List of ssp_t */ GSList *lines; /*!< List of GooCanvasPolyLine */ } ground_track_t; /** * Satellite object. * * This data structure represents a satellite object on the map. It consists of a * small square representing the position, a label showinf the satellite name, and * the range circle. The range circle can have one or two parts, depending on * whether it is split or not. The oldrcnum and newrcnum fields are used for * keeping track of whether the range circle has one or two parts. * */ typedef struct { /* flags */ gboolean selected; /*!< Is satellite selected? */ gboolean showtrack; /*!< Show ground track */ gboolean showcov; /*!< Show coverage area. */ gboolean istarget; /*!< is this object the target */ /* graphical elements */ GooCanvasItemModel *marker; /*!< A small rectangle showing sat pos. */ GooCanvasItemModel *shadowm; /*!< Shadow under satellite marker. */ GooCanvasItemModel *label; /*!< Satellite name. */ GooCanvasItemModel *shadowl; /*!< Shadow under satellite name */ GooCanvasItemModel *range1; /*!< First part of the range circle. */ GooCanvasItemModel *range2; /*!< Second part of the range circle. */ /* book keeping */ guint oldrcnum; /*!< Number of RC parts in prev. cycle. */ guint newrcnum; /*!< Number of RC parts in this cycle. */ gint catnum; /*!< Catalogue number of satellite. */ ground_track_t track_data; /*!< Ground track data. */ long track_orbit; /*!< Orbit when the ground track has been updated. */ } sat_map_obj_t; #define SAT_MAP_OBJ(obj) ((sat_map_obj_t *)obj) /** The satellite map data structure. */ typedef struct { GtkBox vbox; GtkWidget *canvas; /*!< The canvas widget. */ GooCanvasItemModel *map; /*!< The canvas map item. */ gdouble left_side_lon; /*!< Left-most longitude (used when center is not 0 lon). */ GooCanvasItemModel *qthmark; /*!< QTH marker, e.g. small rectangle. */ GooCanvasItemModel *qthlabel; /*!< Label showing the QTH name. */ GooCanvasItemModel *locnam; /*!< Location name. */ GooCanvasItemModel *curs; /*!< Cursor tracking text. */ GooCanvasItemModel *next; /*!< Next event text. */ GooCanvasItemModel *sel; /*!< Text showing info about the selected satellite. */ GooCanvasItemModel *gridv[11]; /*!< Vertical grid lines, 30 deg resolution. */ GooCanvasItemModel *gridvlab[11]; /*!< Vertical grid labels. */ GooCanvasItemModel *gridh[5]; /*!< Horizontal grid lines, 30 deg resolution. */ GooCanvasItemModel *gridhlab[5]; /*!< Horizontal grid labels. */ GooCanvasItemModel *terminator; /*!< Outline of sun shadow on Earth. */ gdouble terminator_last_tstamp; /*!< Timestamp of the last terminator drawn. Used to prevent redrawing the terminator too often. */ gdouble naos; /*!< Next event time. */ gint ncat; /*!< Next event catnum. */ gdouble tstamp; /*!< Time stamp for calculations; set by GtkSatModule */ GKeyFile *cfgdata; /*!< Module configuration data. */ GHashTable *sats; /*!< Pointer to satellites (owned by parent GtkSatModule). */ qth_t *qth; /*!< Pointer to current location. */ GHashTable *obj; /*!< Canvas items representing each satellite. */ GHashTable *showtracks; /*!< A hash of satellites to show tracks for. */ GHashTable *hidecovs; /*!< A hash of satellites to hide coverage for. */ guint x0; /*!< X0 of the canvas map. */ guint y0; /*!< Y0 of the canvas map. */ guint width; /*!< Map width. */ guint height; /*!< Map height. */ guint refresh; /*!< Refresh rate. */ guint counter; /*!< Cycle counter. */ gboolean show_terminator; // show solar terminator gboolean qthinfo; /*!< Show the QTH info. */ gboolean eventinfo; /*!< Show info about the next event. */ gboolean cursinfo; /*!< Track the mouse cursor. */ gboolean showgrid; /*!< Show grid on map. */ gboolean keepratio; /*!< Keep map aspect ratio. */ gboolean resize; /*!< Flag indicating that the map has been resized. */ gchar *infobgd; /*!< Background color of info text. */ GdkPixbuf *origmap; /*!< Original map kept here for high quality scaling. */ } GtkSatMap; struct _GtkSatMapClass { GtkBoxClass parent_class; }; GType gtk_sat_map_get_type(void); GtkWidget *gtk_sat_map_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth); void gtk_sat_map_update(GtkWidget * widget); void gtk_sat_map_reconf(GtkWidget * widget, GKeyFile * cfgdat); void gtk_sat_map_lonlat_to_xy(GtkSatMap * m, gdouble lon, gdouble lat, gdouble * x, gdouble * y); void gtk_sat_map_reload_sats(GtkWidget * satmap, GHashTable * sats); void gtk_sat_map_select_sat(GtkWidget * satmap, gint catnum); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif gpredict/src/gtk-sat-module-popup.c000066400000000000000000001255701427377236300176400ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include // strerror #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-rig-ctrl.h" #include "gtk-rot-ctrl.h" #include "gtk-sat-module.h" #include "gtk-sat-module-popup.h" #include "gtk-sat-module-tmg.h" #include "gtk-sky-glance.h" #include "mod-mgr.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" extern GtkWidget *app; /* in main.c */ /** * Configure module. * * This function is called when the user selects the configure * menu item in the GtkSatModule popup menu. It is a simple * wrapper for gtk_sat_module_config_cb * */ static void config_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); if (module->rigctrlwin || module->rotctrlwin) { GtkWidget *dialog; /* FIXME: should offer option to close controllers */ dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("A module can not be configured while the " "radio or rotator controller is active.\n\n" "Please close the radio and rotator controllers " "and try again.")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { gtk_sat_module_config_cb(menuitem, data); } } /** * Manage name changes. * * This function is called when the contents of the name entry changes. * The primary purpose of this function is to check whether the char length * of the name is greater than zero, if yes enable the OK button of the dialog. */ static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; GtkWidget *dialog = GTK_WIDGET(data); /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } /** * Clone module. * * This function is called when the user selects the clone * menu item in the GtkSatModule popup menu. the function creates * a dialog in which the user is asked for a new module name. * When a valid module name is available and the user clicks on OK, * an exact copy of the currwent module is created. * By default, the nes module will be opened but the user has the * possibility to override this in the dialog window. */ static void clone_cb(GtkWidget * menuitem, gpointer data) { GtkWidget *dialog; GtkWidget *entry; GtkWidget *label; GtkWidget *toggle; GtkWidget *vbox; GtkAllocation aloc; guint response; GtkSatModule *module = GTK_SAT_MODULE(data); GtkSatModule *newmod; gchar *source, *target; gchar *icon; /* icon file name */ gchar *title; /* window title */ (void)menuitem; dialog = gtk_dialog_new_with_buttons(_("Clone Module"), GTK_WINDOW(gtk_widget_get_toplevel (GTK_WIDGET(module))), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_CANCEL, "_OK", GTK_RESPONSE_OK, NULL); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); /* label */ label = gtk_label_new(_("Name of new module:")); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); /* name entry */ entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(entry), 25); gtk_entry_set_text(GTK_ENTRY(entry), module->name); gtk_widget_set_tooltip_text(entry, _("Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _")); /*not sure what to do with the old private tip the new api does not like them _("The name will be used to identify the module " \ "and it is also used a file name for saving the data."\ "Max length is 25 characters.")); */ /* attach changed signal so that we can enable OK button when a proper name has been entered oh, btw. disable OK button to begin with.... */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); g_signal_connect(entry, "changed", G_CALLBACK(name_changed), dialog); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); /* check button */ toggle = gtk_check_button_new_with_label(_("Open module when created")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); gtk_widget_set_tooltip_text(toggle, _("If checked, the new module will be opened " "after it has been created")); gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 20); gtk_widget_show_all(vbox); /* run dialog */ response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { case GTK_RESPONSE_OK: sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Cloning %s => %s"), __FILE__, __LINE__, module->name, gtk_entry_get_text(GTK_ENTRY(entry))); /* build full file names */ gchar *moddir = get_modules_dir(); source = g_strconcat(moddir, G_DIR_SEPARATOR_S, module->name, ".mod", NULL); target = g_strconcat(moddir, G_DIR_SEPARATOR_S, gtk_entry_get_text(GTK_ENTRY(entry)), ".mod", NULL); g_free(moddir); /* copy file */ if (gpredict_file_copy(source, target)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to clone %s."), __FILE__, __LINE__, module->name); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Successfully cloned %s."), __FILE__, __LINE__, module->name); /* open module if requested */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle))) { newmod = GTK_SAT_MODULE(gtk_sat_module_new(target)); newmod->state = module->state; if (newmod->state == GTK_SAT_MOD_STATE_DOCKED) { /* add to module manager */ mod_mgr_add_module(GTK_WIDGET(newmod), TRUE); } else { /* add to module manager */ mod_mgr_add_module(GTK_WIDGET(newmod), FALSE); /* create window */ newmod->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(newmod->win), newmod->name); title = g_strconcat(_("GPREDICT: "), newmod->name, " (", newmod->qth->name, ")", NULL); gtk_window_set_title(GTK_WINDOW(newmod->win), title); g_free(title); /* use size of source module */ gtk_widget_get_allocation(GTK_WIDGET(module), &aloc); gtk_window_set_default_size(GTK_WINDOW(newmod->win), aloc.width, aloc.height); g_signal_connect(G_OBJECT(newmod->win), "configure_event", G_CALLBACK(module_window_config_cb), newmod); /* add module to window */ gtk_container_add(GTK_CONTAINER(newmod->win), GTK_WIDGET(newmod)); /* window icon */ icon = icon_file_name("gpredict-icon.png"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) { gtk_window_set_icon_from_file(GTK_WINDOW(newmod->win), icon, NULL); } g_free(icon); /* show window */ gtk_widget_show_all(newmod->win); } } } /* clean up */ g_free(source); g_free(target); break; case GTK_RESPONSE_CANCEL: sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Cloning cancelled by user."), __FILE__, __LINE__); break; default: sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Cloning interrupted."), __FILE__, __LINE__); break; } gtk_widget_destroy(dialog); } /** * Toggle dockig state. * * This function is called when the user selects the (Un)Dock menu * item in the GtkSatModule popup menu. If the current module state * is DOCKED, the module will be undocked and moved into it's own, * GtkWindow. If the current module state is WINDOW or FULLSCREEN, * the module will be docked. * * The text of the menu item will be changed corresponding to the * action that has been performed. */ static void docking_state_cb(GtkWidget * menuitem, gpointer data) { GtkWidget *module = GTK_WIDGET(data); GtkAllocation aloc; gint w, h; gchar *icon; /* icon file name */ gchar *title; /* window title */ (void)menuitem; gtk_widget_get_allocation(module, &aloc); switch (GTK_SAT_MODULE(module)->state) { case GTK_SAT_MOD_STATE_DOCKED: /* get stored size; use size from main window if size not explicitly stoed */ if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL)) { w = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL); } else { w = aloc.width; } if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL)) { h = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL); } else { h = aloc.height; } /* increase reference count of module */ g_object_ref(module); /* we don't need the positions */ //GTK_SAT_MODULE (module)->vpanedpos = -1; //GTK_SAT_MODULE (module)->hpanedpos = -1; /* undock from mod-mgr */ mod_mgr_undock_module(module); /* create window */ GTK_SAT_MODULE(module)->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); title = g_strconcat(_("GPREDICT: "), GTK_SAT_MODULE(module)->name, " (", GTK_SAT_MODULE(module)->qth->name, ")", NULL); gtk_window_set_title(GTK_WINDOW(GTK_SAT_MODULE(module)->win), title); g_free(title); gtk_window_set_default_size(GTK_WINDOW(GTK_SAT_MODULE(module)->win), w, h); g_signal_connect(G_OBJECT(GTK_SAT_MODULE(module)->win), "configure_event", G_CALLBACK(module_window_config_cb), module); /* window icon */ icon = icon_file_name("gpredict-icon.png"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) { gtk_window_set_icon_from_file(GTK_WINDOW (GTK_SAT_MODULE(module)->win), icon, NULL); } g_free(icon); /* move window to stored position if requested by configuration */ if (sat_cfg_get_bool(SAT_CFG_BOOL_MOD_WIN_POS) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)) { gtk_window_move(GTK_WINDOW(GTK_SAT_MODULE(module)->win), g_key_file_get_integer(GTK_SAT_MODULE (module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL), g_key_file_get_integer(GTK_SAT_MODULE (module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)); } /* add module to window */ gtk_container_add(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), module); /* change internal state */ GTK_SAT_MODULE(module)->state = GTK_SAT_MOD_STATE_WINDOW; /* store new state in configuration */ g_key_file_set_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_STATE, GTK_SAT_MOD_STATE_WINDOW); /* decrease reference count of module */ g_object_unref(module); /* show window */ gtk_widget_show_all(GTK_SAT_MODULE(module)->win); /* reparent time manager window if visible */ if (GTK_SAT_MODULE(module)->tmgActive) { gtk_window_set_transient_for(GTK_WINDOW (GTK_SAT_MODULE(module)->tmgWin), GTK_WINDOW(GTK_SAT_MODULE (module)->win)); } break; case GTK_SAT_MOD_STATE_WINDOW: case GTK_SAT_MOD_STATE_FULLSCREEN: /* increase reference count */ g_object_ref(module); /* reparent time manager window if visible */ if (GTK_SAT_MODULE(module)->tmgActive) { gtk_window_set_transient_for(GTK_WINDOW (GTK_SAT_MODULE(module)->tmgWin), GTK_WINDOW(app)); } /* remove module from window, destroy window */ gtk_container_remove(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), module); gtk_widget_destroy(GTK_SAT_MODULE(module)->win); GTK_SAT_MODULE(module)->win = NULL; /* dock into mod-mgr */ mod_mgr_dock_module(module); /* change internal state */ GTK_SAT_MODULE(module)->state = GTK_SAT_MOD_STATE_DOCKED; /* store new state in configuration */ g_key_file_set_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_STATE, GTK_SAT_MOD_STATE_DOCKED); /* decrease reference count of module */ g_object_unref(module); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Unknown module state: %d"), __FILE__, __LINE__, GTK_SAT_MODULE(module)->state); break; } } /** * Toggle screen state. * * This function is intended to toggle between FULLSCREEN * and WINDOW state. */ static void screen_state_cb(GtkWidget * menuitem, gpointer data) { GtkWidget *module = GTK_WIDGET(data); gint w, h; gchar *icon; /* icon file name */ gchar *title; /* window title */ (void)menuitem; switch (GTK_SAT_MODULE(module)->state) { case GTK_SAT_MOD_STATE_DOCKED: /* increase reference count of module */ g_object_ref(module); /* undock from mod-mgr */ mod_mgr_undock_module(module); /* create window */ GTK_SAT_MODULE(module)->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); title = g_strconcat(_("GPREDICT: "), GTK_SAT_MODULE(module)->name, " (", GTK_SAT_MODULE(module)->qth->name, ")", NULL); gtk_window_set_title(GTK_WINDOW(GTK_SAT_MODULE(module)->win), title); g_free(title); /* window icon */ icon = icon_file_name("gpredict-icon.png"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) { gtk_window_set_icon_from_file(GTK_WINDOW (GTK_SAT_MODULE(module)->win), icon, NULL); } g_free(icon); /* add module to window */ gtk_container_add(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), module); /* change internal state */ GTK_SAT_MODULE(module)->state = GTK_SAT_MOD_STATE_FULLSCREEN; /* decrease reference count of module */ g_object_unref(module); gtk_window_fullscreen(GTK_WINDOW(GTK_SAT_MODULE(module)->win)); /* show window */ gtk_widget_show_all(GTK_SAT_MODULE(module)->win); /* reparent time manager window if visible */ if (GTK_SAT_MODULE(module)->tmgActive) { gtk_window_set_transient_for(GTK_WINDOW (GTK_SAT_MODULE(module)->tmgWin), GTK_WINDOW(GTK_SAT_MODULE (module)->win)); } break; case GTK_SAT_MOD_STATE_WINDOW: /* change internal state */ GTK_SAT_MODULE(module)->state = GTK_SAT_MOD_STATE_FULLSCREEN; gtk_window_fullscreen(GTK_WINDOW(GTK_SAT_MODULE(module)->win)); gtk_window_set_default_size(GTK_WINDOW(GTK_SAT_MODULE(module)->win), 800, 600); break; case GTK_SAT_MOD_STATE_FULLSCREEN: /* change internal state */ GTK_SAT_MODULE(module)->state = GTK_SAT_MOD_STATE_WINDOW; gtk_window_unfullscreen(GTK_WINDOW(GTK_SAT_MODULE(module)->win)); /* get stored size; use some standard size if not explicitly specified */ if (g_key_file_has_key (GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL)) { w = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL); } else { w = 800; } if (g_key_file_has_key (GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL)) { h = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL); } else { h = 600; } gtk_window_set_default_size(GTK_WINDOW(GTK_SAT_MODULE(module)->win), w, h); /* move window to stored position if requested by configuration */ if (sat_cfg_get_bool(SAT_CFG_BOOL_MOD_WIN_POS) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)) { gtk_window_move(GTK_WINDOW(GTK_SAT_MODULE(module)->win), g_key_file_get_integer(GTK_SAT_MODULE (module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL), g_key_file_get_integer(GTK_SAT_MODULE (module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)); } /* store new state in configuration */ g_key_file_set_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_STATE, GTK_SAT_MOD_STATE_WINDOW); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Unknown module state: %d"), __FILE__, __LINE__, GTK_SAT_MODULE(module)->state); break; } } /** * New satellite selected. * * @param data Pointer to the GtkSatModule widget * * This menu item is activated when a new satellite is selected in the * "Select satellite" submenu of the module pop-up. This will trigger a call * to the select_sat() fuinction of the module, which in turn will call the * select_sat() function of each child view. * * The catalog number of the selected satellite is attached to the menu item */ static void sat_selected_cb(GtkWidget * menuitem, gpointer data) { gint catnum; GtkSatModule *module; catnum = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), "catnum")); module = GTK_SAT_MODULE(data); gtk_sat_module_select_sat(module, catnum); } /** Ensure that deleted top-level windows are destroyed */ static gint window_delete(GtkWidget * widget, GdkEvent * event, gpointer data) { (void)widget; (void)event; (void)data; return FALSE; } /** * Destroy sky at glance window. * * @param window Pointer to the sky at glance window. * @param data Pointer to the GtkSatModule to which this widget is attached. * * This function is called automatically when the window is destroyed. */ static void destroy_skg(GtkWidget * window, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); (void)window; module->skgwin = NULL; module->skg = NULL; } /** * Invoke Sky-at-glance. * * This function is a shortcut to the sky at glance function * in that it will make the predictions with the satellites * tracked in the current module. */ static void sky_at_glance_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); gchar *buff; (void)menuitem; /* if module is busy wait until done then go on */ g_mutex_lock(&module->busy); if (module->skgwin != NULL) { /* there is already a sky at glance for this module */ gtk_window_present(GTK_WINDOW(module->skgwin)); g_mutex_unlock(&module->busy); return; } /* create window */ module->skgwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); buff = g_strdup_printf(_("The sky at a glance (%s)"), module->name); gtk_window_set_title(GTK_WINDOW(module->skgwin), buff); g_free(buff); g_signal_connect(G_OBJECT(module->skgwin), "delete_event", G_CALLBACK(window_delete), NULL); g_signal_connect(G_OBJECT(module->skgwin), "destroy", G_CALLBACK(destroy_skg), module); /* window icon */ buff = icon_file_name("gpredict-planner.png"); gtk_window_set_icon_from_file(GTK_WINDOW(module->skgwin), buff, NULL); g_free(buff); /* create sky at a glance widget */ if (sat_cfg_get_bool(SAT_CFG_BOOL_PRED_USE_REAL_T0)) { module->skg = gtk_sky_glance_new(module->satellites, module->qth, 0.0); } else { module->skg = gtk_sky_glance_new(module->satellites, module->qth, module->tmgCdnum); } /* store time at which GtkSkyGlance has been created */ module->lastSkgUpd = module->tmgCdnum; gtk_container_set_border_width(GTK_CONTAINER(module->skgwin), 4); gtk_container_add(GTK_CONTAINER(module->skgwin), module->skg); gtk_widget_show_all(module->skgwin); g_mutex_unlock(&module->busy); } /** Open time manager. */ static void tmgr_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); (void)menuitem; tmg_create(module); } /** * Destroy radio control window. * * @param window Pointer to the radio control window. * @param data Pointer to the GtkSatModule to which this controller is attached. * * This function is called automatically when the window is destroyed. */ static void destroy_rigctrl(GtkWidget * window, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); (void)window; /* avoid unused parameter compiler warning */ module->rigctrlwin = NULL; module->rigctrl = NULL; } /** * Open Radio control window. * * @param menuitem The menuitem that was selected. * @param data Pointer the GtkSatModule. */ static void rigctrl_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); gchar *buff; (void)menuitem; if (module->rigctrlwin != NULL) { /* there is already a radio controller for this module */ gtk_window_present(GTK_WINDOW(module->rigctrlwin)); return; } module->rigctrl = gtk_rig_ctrl_new(module); if (module->rigctrl == NULL) { /* gtk_rig_ctrl_new returned NULL because no radios are configured */ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("You have no radio configuration!\n" "Please configure a radio first.")); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_window_set_title(GTK_WINDOW(dialog), _("ERROR")); gtk_widget_show_all(dialog); return; } /* create a window */ module->rigctrlwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); buff = g_strdup_printf(_("Gpredict Radio Control: %s"), module->name); gtk_window_set_title(GTK_WINDOW(module->rigctrlwin), buff); g_free(buff); g_signal_connect(G_OBJECT(module->rigctrlwin), "delete_event", G_CALLBACK(window_delete), NULL); g_signal_connect(G_OBJECT(module->rigctrlwin), "destroy", G_CALLBACK(destroy_rigctrl), module); /* window icon */ buff = icon_file_name("gpredict-oscilloscope.png"); gtk_window_set_icon_from_file(GTK_WINDOW(module->rigctrlwin), buff, NULL); g_free(buff); gtk_container_add(GTK_CONTAINER(module->rigctrlwin), module->rigctrl); gtk_widget_show_all(module->rigctrlwin); } /** * Destroy rotator control window. * * @param window Pointer to the rotator control window. * @param data Pointer to the GtkSatModule to which this controller is attached. * * This function is called automatically when the window is destroyed. */ static void destroy_rotctrl(GtkWidget * window, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); (void)window; module->rotctrlwin = NULL; module->rotctrl = NULL; } /** * Open antenna rotator control window. * * @param menuitem The menuitem that was selected. * @param data Pointer the GtkSatModule. */ static void rotctrl_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); gchar *buff; (void)menuitem; if (module->rotctrlwin != NULL) { /* there is already a roto controller for this module */ gtk_window_present(GTK_WINDOW(module->rotctrlwin)); return; } module->rotctrl = gtk_rot_ctrl_new(module); if (module->rotctrl == NULL) { /* gtk_rot_ctrl_new returned NULL because no rotators are configured */ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("You have no rotator configuration!\n" "Please configure an antenna rotator first.")); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_window_set_title(GTK_WINDOW(dialog), _("ERROR")); gtk_widget_show_all(dialog); return; } /* create a window */ module->rotctrlwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); buff = g_strdup_printf(_("Gpredict Rotator Control: %s"), module->name); gtk_window_set_title(GTK_WINDOW(module->rotctrlwin), buff); g_free(buff); g_signal_connect(G_OBJECT(module->rotctrlwin), "delete_event", G_CALLBACK(window_delete), module); g_signal_connect(G_OBJECT(module->rotctrlwin), "destroy", G_CALLBACK(destroy_rotctrl), module); /* window icon */ buff = icon_file_name("gpredict-antenna.png"); gtk_window_set_icon_from_file(GTK_WINDOW(module->rotctrlwin), buff, NULL); g_free(buff); gtk_container_add(GTK_CONTAINER(module->rotctrlwin), module->rotctrl); gtk_widget_show_all(module->rotctrlwin); } /** Autotrack activated */ static void autotrack_cb(GtkCheckMenuItem * menuitem, gpointer data) { GTK_SAT_MODULE(data)->autotrack = gtk_check_menu_item_get_active(menuitem); } /** * Close module. * * This function is called when the user selects the close menu * item in the GtkSatModule popup menu. It is simply a wrapper * for gtk_sat_module_close_cb, which will close the current module. */ static void close_cb(GtkWidget * menuitem, gpointer data) { gtk_sat_module_close_cb(menuitem, data); } /** * Close and permanently delete module. * * This function is called when the user selects the delete menu * item in the GtkSatModule popup menu. */ static void delete_cb(GtkWidget * menuitem, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); GtkWidget *toplevel; GtkWidget *dialog; int result = 0; gint response; gchar *file; gchar *moddir; toplevel = gtk_widget_get_toplevel(GTK_WIDGET(data)); moddir = get_modules_dir(); file = g_strconcat(moddir, G_DIR_SEPARATOR_S, module->name, ".mod", NULL); g_free(moddir); /* ask user to confirm removal */ dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("This operation will permanently delete %s "\ "from the disk.\nDo you you want to proceed?"), module->name); response = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); switch (response) { case GTK_RESPONSE_YES: gtk_sat_module_close_cb(menuitem, data); result = g_remove(file); if (result) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("Failed to delete %s: %s"), file, strerror(errno)); dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("An error occurred deleting %s:\n%s"), module->name, strerror(errno)); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s deleted"), file); } break; default: break; } g_free(file); } /** * Snoop window position and size when main window receives configure event. * * @param widget Pointer to the module window. * @param event Pointer to the event structure. * @param data Pointer to user data, in this case the module. * * This function is used to trap configure events in order to store the current * position and size of the module window. * * @note unfortunately GdkEventConfigure ignores the window gravity, while * the only way we have of setting the position doesn't. We have to * call get_position because it does pay attention to the gravity. * * @note The logic in the code has been borrowed from gaim/pidgin http://pidgin.im/ * */ gboolean module_window_config_cb(GtkWidget * widget, GdkEventConfigure * event, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); gint x, y, w, h; /* data is only useful when window is visible */ if (gtk_widget_get_visible(widget)) gtk_window_get_position(GTK_WINDOW(widget), &x, &y); else return FALSE; /* carry on normally */ #ifdef G_OS_WIN32 /* Workaround for GTK+ bug # 169811 - "configure_event" is fired when the window is being maximized */ if (gdk_window_get_state(gtk_widget_get_window(widget)) & GDK_WINDOW_STATE_MAXIMIZED) { return FALSE; } #endif /* don't save off-screen positioning */ /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 w = gdk_screen_width(); h = gdk_screen_height(); #else GdkRectangle work_area; gdk_monitor_get_workarea(gdk_display_get_primary_monitor(gdk_display_get_default()), &work_area); w = work_area.width; h = work_area.height; #endif if (x < 0 || y < 0 || x + event->width > w || y + event->height > h) { return FALSE; } /* store the position and size */ g_key_file_set_integer(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, x); g_key_file_set_integer(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, y); g_key_file_set_integer(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, event->width); g_key_file_set_integer(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, event->height); /* continue to handle event normally */ return FALSE; } static gint sat_nickname_compare(const sat_t * a, const sat_t * b) { return gpredict_strcmp(a->nickname, b->nickname); } /** * Create and run GtkSatModule popup menu. * * @param module The module that should have the popup menu attached to it. * * This function ctreates and executes a popup menu that is related to a * GtkSatModule widget. The module must be a valid GtkSatModule, since it makes * no sense whatsoever to have this kind of popup menu without a GtkSatModule * parent. * */ void gtk_sat_module_popup(GtkSatModule * module) { GtkWidget *menu; /* The pop-up menu */ GtkWidget *satsubmenu; /* Satellite selection submenu */ GtkWidget *menuitem; /* Widget used to create the menu items */ GList *sats; sat_t *sat; guint i, n; if ((module == NULL) || !IS_GTK_SAT_MODULE(module)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: %s called with NULL parameter!"), __FILE__, __LINE__, __func__); return; } menu = gtk_menu_new(); if (module->state == GTK_SAT_MOD_STATE_DOCKED) { menuitem = gtk_menu_item_new_with_label(_("Detach module")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(docking_state_cb), module); } else { menuitem = gtk_menu_item_new_with_label(_("Attach module")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(docking_state_cb), module); } if (module->state == GTK_SAT_MOD_STATE_FULLSCREEN) { menuitem = gtk_menu_item_new_with_label(_("Exit full screen")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(screen_state_cb), module); } else { menuitem = gtk_menu_item_new_with_label(_("Full screen")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(screen_state_cb), module); } /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* autotrack */ menuitem = gtk_check_menu_item_new_with_label(_("Autotrack")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), module->autotrack); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(autotrack_cb), module); /* select satellite submenu */ menuitem = gtk_menu_item_new_with_label(_("Select satellite")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); satsubmenu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), satsubmenu); sats = g_hash_table_get_values(module->satellites); sats = g_list_sort(sats, (GCompareFunc) sat_nickname_compare); n = g_list_length(sats); for (i = 0; i < n; i++) { sat = SAT(g_list_nth_data(sats, i)); menuitem = gtk_menu_item_new_with_label(sat->nickname); g_object_set_data(G_OBJECT(menuitem), "catnum", GINT_TO_POINTER(sat->tle.catnr)); g_signal_connect(menuitem, "activate", G_CALLBACK(sat_selected_cb), module); gtk_menu_shell_append(GTK_MENU_SHELL(satsubmenu), menuitem); } /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* sky at a glance */ menuitem = gtk_menu_item_new_with_label(_("Sky at a glance")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(sky_at_glance_cb), module); /* time manager */ menuitem = gtk_menu_item_new_with_label(_("Time Controller")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(tmgr_cb), module); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* Radio Control */ menuitem = gtk_menu_item_new_with_label(_("Radio Control")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(rigctrl_cb), module); /* Antenna Control */ menuitem = gtk_menu_item_new_with_label(_("Antenna Control")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(rotctrl_cb), module); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* configure */ menuitem = gtk_menu_item_new_with_label(_("Configure")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(config_cb), module); /* clone */ menuitem = gtk_menu_item_new_with_label(_("Clone...")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(clone_cb), module); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* delete module */ menuitem = gtk_menu_item_new_with_label(_("Delete")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(delete_cb), module); /* close */ menuitem = gtk_menu_item_new_with_label(_("Close")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(menuitem, "activate", G_CALLBACK(close_cb), module); gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gdk_event_get_time(NULL)); #else gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } gpredict/src/gtk-sat-module-popup.h000066400000000000000000000004131427377236300176310ustar00rootroot00000000000000#ifndef __GTK_SAT_MODULE_POPUP_H__ #define __GTK_SAT_MODULE_POPUP_H__ 1 void gtk_sat_module_popup(GtkSatModule * module); gboolean module_window_config_cb(GtkWidget *, GdkEventConfigure *, gpointer); #endif gpredict/src/gtk-sat-module-tmg.c000066400000000000000000000666241427377236300172700ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include #include "compat.h" #include "gtk-sat-module.h" #include "gtk-sat-module-tmg.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" static gint tmg_delete(GtkWidget *, GdkEvent *, gpointer); static void tmg_destroy(GtkWidget *, gpointer); static void tmg_stop(GtkWidget * widget, gpointer data); static void tmg_fwd(GtkWidget * widget, gpointer data); static void tmg_bwd(GtkWidget * widget, gpointer data); static void tmg_reset(GtkWidget * widget, gpointer data); static void tmg_throttle(GtkWidget * widget, gpointer data); static void tmg_time_set(GtkWidget * widget, gpointer data); static void slider_moved(GtkWidget * widget, gpointer data); static void tmg_hour_wrap(GtkWidget * widget, gpointer data); static void tmg_min_wrap(GtkWidget * widget, gpointer data); static void tmg_sec_wrap(GtkWidget * widget, gpointer data); static void tmg_msec_wrap(GtkWidget * widget, gpointer data); static void tmg_cal_add_one_day(GtkSatModule * mod); static void tmg_cal_sub_one_day(GtkSatModule * mod); static gdouble calculate_time(GtkSatModule * mod); void tmg_create(GtkSatModule * mod) { GtkWidget *vbox, *hbox, *table; GtkWidget *image; GtkWidget *label; gchar *title; gchar *buff; /* make sure controller is not already active */ if (mod->tmgActive) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Time Controller for %s is already active"), __func__, mod->name); /* try to make window visible in case it is covered by something else */ gtk_window_present(GTK_WINDOW(mod->tmgWin)); return; } /* create hbox containing the controls the controls are implemented as radiobuttons in order to inherit the mutual exclusion behaviour */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); /* FWD */ mod->tmgFwd = gtk_radio_button_new(NULL); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(mod->tmgFwd), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mod->tmgFwd), TRUE); #ifdef G_OS_WIN32 image = gtk_image_new_from_icon_name("media-seek-forward-symbolic", GTK_ICON_SIZE_BUTTON); #else image = gtk_image_new_from_icon_name("media-seek-forward", GTK_ICON_SIZE_BUTTON); #endif gtk_container_add(GTK_CONTAINER(mod->tmgFwd), image); gtk_widget_set_tooltip_text(mod->tmgFwd, _("Play forward")); g_signal_connect(mod->tmgFwd, "toggled", G_CALLBACK(tmg_fwd), mod); gtk_box_pack_end(GTK_BOX(hbox), mod->tmgFwd, FALSE, FALSE, 0); /* STOP */ mod->tmgStop = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(mod->tmgFwd)); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(mod->tmgStop), FALSE); #ifdef G_OS_WIN32 image = gtk_image_new_from_icon_name("media-playback-pause-symbolic", GTK_ICON_SIZE_BUTTON); #else image = gtk_image_new_from_icon_name("media-playback-pause", GTK_ICON_SIZE_BUTTON); #endif gtk_container_add(GTK_CONTAINER(mod->tmgStop), image); gtk_widget_set_tooltip_text(mod->tmgStop, _("Stop")); g_signal_connect(mod->tmgStop, "toggled", G_CALLBACK(tmg_stop), mod); gtk_box_pack_end(GTK_BOX(hbox), mod->tmgStop, FALSE, FALSE, 0); /* BWD */ mod->tmgBwd = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(mod->tmgFwd)); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(mod->tmgBwd), FALSE); #ifdef G_OS_WIN32 image = gtk_image_new_from_icon_name("media-seek-backward-symbolic", GTK_ICON_SIZE_BUTTON); #else image = gtk_image_new_from_icon_name("media-seek-backward", GTK_ICON_SIZE_BUTTON); #endif gtk_container_add(GTK_CONTAINER(mod->tmgBwd), image); gtk_widget_set_tooltip_text(mod->tmgBwd, _("Play backwards")); g_signal_connect(mod->tmgBwd, "toggled", G_CALLBACK(tmg_bwd), mod); gtk_box_pack_end(GTK_BOX(hbox), mod->tmgBwd, FALSE, FALSE, 0); /* reset time */ mod->tmgReset = gtk_button_new_with_label(_("Reset")); gtk_widget_set_tooltip_text(mod->tmgReset, _("Reset to current date and time")); g_signal_connect(mod->tmgReset, "clicked", G_CALLBACK(tmg_reset), mod); gtk_box_pack_end(GTK_BOX(hbox), mod->tmgReset, FALSE, FALSE, 10); /* status label */ mod->tmgState = gtk_label_new(NULL); g_object_set(mod->tmgState, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(mod->tmgState), _("Real-Time")); gtk_box_pack_start(GTK_BOX(hbox), mod->tmgState, TRUE, TRUE, 10); /* create table containing the date and time widgets */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 0); gtk_grid_set_column_spacing(GTK_GRID(table), 5); mod->tmgCal = gtk_calendar_new(); gtk_calendar_set_display_options(GTK_CALENDAR(mod->tmgCal), GTK_CALENDAR_SHOW_HEADING | GTK_CALENDAR_SHOW_DAY_NAMES); g_signal_connect(mod->tmgCal, "day-selected", G_CALLBACK(tmg_time_set), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgCal, 0, 0, 1, 5); /* Time controllers. * Note that the controllers for hours, minutes, and seconds have ranges; * however, they can wrap around their limits in order to ensure a smooth * and continuous control of the time */ /* hour */ label = gtk_label_new(_("Hour:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 0, 1, 1); mod->tmgHour = gtk_spin_button_new_with_range(0, 23, 1); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mod->tmgHour), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mod->tmgHour), GTK_UPDATE_IF_VALID); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(mod->tmgHour), 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(mod->tmgHour), TRUE); gtk_widget_set_tooltip_text(mod->tmgHour, _("Use this control to set the hour")); g_signal_connect(mod->tmgHour, "value-changed", G_CALLBACK(tmg_time_set), mod); g_signal_connect(mod->tmgHour, "wrapped", G_CALLBACK(tmg_hour_wrap), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgHour, 2, 0, 1, 1); /* minutes */ label = gtk_label_new(_("Min:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 1, 1, 1); mod->tmgMin = gtk_spin_button_new_with_range(0, 59, 1); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mod->tmgMin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mod->tmgMin), GTK_UPDATE_IF_VALID); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(mod->tmgMin), 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(mod->tmgMin), TRUE); gtk_widget_set_tooltip_text(mod->tmgMin, _("Use this control to set the minutes")); g_signal_connect(mod->tmgMin, "value-changed", G_CALLBACK(tmg_time_set), mod); g_signal_connect(mod->tmgMin, "wrapped", G_CALLBACK(tmg_min_wrap), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgMin, 2, 1, 1, 1); /* seconds */ label = gtk_label_new(_("Sec:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 2, 1, 1); mod->tmgSec = gtk_spin_button_new_with_range(0, 59, 1); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mod->tmgSec), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mod->tmgSec), GTK_UPDATE_IF_VALID); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(mod->tmgSec), 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(mod->tmgSec), TRUE); gtk_widget_set_tooltip_text(mod->tmgSec, _("Use this control to set the seconds")); g_signal_connect(mod->tmgSec, "value-changed", G_CALLBACK(tmg_time_set), mod); g_signal_connect(mod->tmgSec, "wrapped", G_CALLBACK(tmg_sec_wrap), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgSec, 2, 2, 1, 1); /* milliseconds */ label = gtk_label_new(_("Msec:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 3, 1, 1); mod->tmgMsec = gtk_spin_button_new_with_range(0, 999, 1); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mod->tmgMsec), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mod->tmgMsec), GTK_UPDATE_IF_VALID); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(mod->tmgMsec), 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(mod->tmgMsec), TRUE); gtk_widget_set_tooltip_text(mod->tmgMsec, _("Use this control to set the milliseconds")); g_signal_connect(mod->tmgMsec, "value-changed", G_CALLBACK(tmg_time_set), mod); g_signal_connect(mod->tmgMsec, "wrapped", G_CALLBACK(tmg_msec_wrap), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgMsec, 2, 3, 1, 1); /* time throttle */ label = gtk_label_new(_("Throttle:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 4, 1, 1); mod->tmgFactor = gtk_spin_button_new_with_range(1, 100, 1); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mod->tmgFactor), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mod->tmgFactor), GTK_UPDATE_IF_VALID); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(mod->tmgFactor), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgFactor), 1); gtk_widget_set_tooltip_text(mod->tmgFactor, _("Time throttle / compression factor")); g_signal_connect(mod->tmgFactor, "value-changed", G_CALLBACK(tmg_throttle), mod); gtk_grid_attach(GTK_GRID(table), mod->tmgFactor, 2, 4, 1, 1); /* add slider */ mod->tmgSlider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, -0.1, +0.1, 0.0001); /*gtk_widget_set_tooltip_text (mod->tmgSlider, _("Drag the slider to change the time up to +/- 2.5 hours.\n"\ "Resolution is ~ 8 seconds.")); */ gtk_scale_set_draw_value(GTK_SCALE(mod->tmgSlider), FALSE); gtk_range_set_value(GTK_RANGE(mod->tmgSlider), 0.0); g_signal_connect(mod->tmgSlider, "value-changed", G_CALLBACK(slider_moved), mod); /* create the vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), mod->tmgSlider, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* create main window */ mod->tmgWin = gtk_window_new(GTK_WINDOW_TOPLEVEL); title = g_strconcat(_("Time Controller"), " / ", mod->name, NULL); gtk_window_set_title(GTK_WINDOW(mod->tmgWin), title); g_free(title); gtk_window_set_transient_for(GTK_WINDOW(mod->tmgWin), GTK_WINDOW(gtk_widget_get_toplevel (GTK_WIDGET(mod)))); g_signal_connect(G_OBJECT(mod->tmgWin), "delete_event", G_CALLBACK(tmg_delete), mod); g_signal_connect(G_OBJECT(mod->tmgWin), "destroy", G_CALLBACK(tmg_destroy), mod); /* window icon */ buff = icon_file_name("gpredict-clock.png"); gtk_window_set_icon_from_file(GTK_WINDOW(mod->tmgWin), buff, NULL); g_free(buff); gtk_container_add(GTK_CONTAINER(mod->tmgWin), vbox); gtk_widget_show_all(mod->tmgWin); mod->tmgActive = TRUE; sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Time Controller for %s launched"), __func__, mod->name); } /* * Manage tmg window delete events * * Returns FALSE to indicate that window should be destroyed. */ static gint tmg_delete(GtkWidget * tmg, GdkEvent * event, gpointer data) { (void)tmg; (void)event; (void)data; return FALSE; } static void tmg_destroy(GtkWidget * tmg, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); (void)tmg; /* reset time keeping variables */ mod->throttle = 1; mod->tmgActive = FALSE; /* reset time */ tmg_reset(NULL, data); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Time Controller for %s closed. Time reset."), __func__, mod->name); } /* * Manage STOP signals. * * @param widget The GtkButton that received the signal. * @param data Pointer to the GtkSatModule widget. * * This function is called when the user clicks on the STOP button. * If the button state is active (pressed in) the function sets the * throttle parameter of the module to 0. */ static void tmg_stop(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { sat_log_log(SAT_LOG_LEVEL_DEBUG, __func__); mod->throttle = 0; } } /* * Manage FWD signals. * * @param widget The GtkButton that received the signal. * @param data Pointer to the GtkSatModule widget. * * This function is called when the user clicks on the FWD button. * If the button state is active (pressed in) the function sets the * throttle parameter of the module to 1. */ static void tmg_fwd(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { sat_log_log(SAT_LOG_LEVEL_DEBUG, __func__); mod->throttle = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgFactor)); } } /* * Manage back signals. * * @param widget The GtkButton that received the signal. * @param data Pointer to the GtkSatModule widget. * * This function is called when the user clicks on the BWD button. * If the button state is active (pressed in) the function sets the * throttle parameter of the module to -1. */ static void tmg_bwd(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { sat_log_log(SAT_LOG_LEVEL_DEBUG, __func__); /* set throttle to -1 */ mod->throttle = -gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgFactor)); } } /** * Manage Reset button clicks. * * @param widget The button that received the "clicked" signal. * @param data Pointer to the GtkSatModule structure. * * This function is called when the user clicks on the Reset button. * It resets the current time by setting * * mod->tmgPdnum = mod->rtPrev; * mod->tmgCdnum = mod->rtNow; * */ static void tmg_reset(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); (void)widget; /* set reset flag in order to block widget signals */ mod->reset = TRUE; mod->tmgPdnum = mod->rtPrev; mod->tmgCdnum = mod->rtNow; /* RESET slider */ gtk_range_set_value(GTK_RANGE(mod->tmgSlider), 0.0); /* update widgets; widget signals will have no effect since the tmgReset flag is TRUE */ tmg_update_widgets(mod); /* clear reset flag */ mod->reset = FALSE; } static void tmg_throttle(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); /* FFWD mode */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mod->tmgFwd))) { mod->throttle = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mod->tmgBwd))) { mod->throttle = -gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); } } /** * Set new date and time callback. * * @param widget The widget that was modified. * @param data Pointer to the GtkSatModule structure. * * This function is called when the user changes the date or time in the time * controller. If we are in manual time control mode, the function reads the * date and time set in the control widget and calculates the new time for * the module. The function does nothing in real time and simulated real * time modes. */ static void tmg_time_set(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); gdouble slider; gdouble jd; (void)widget; /* update time only if we are in manual time control */ if (!mod->throttle && !mod->reset) { jd = calculate_time(mod); /* get slider offset */ slider = gtk_range_get_value(GTK_RANGE(mod->tmgSlider)); mod->tmgCdnum = jd + slider; } } /** * Signal handler for slider "value-changed" signals * * @param widget The widget that was modified. * @param data Pointer to the GtkSatModule structure. * * This function is called when the user moves the slider. * If we are in manual control mode, the function simply calls * tmg_time_set(). In the other modes, the function switches over * to amnual mode first. */ static void slider_moved(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); if (mod->throttle) { /* "press" the stop button to trigger a transition into manual mode */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mod->tmgStop), TRUE); } tmg_time_set(widget, data); } /** * Hour controller wrap * * @param widget Pointer to the hour controller widget * @param data Pointer to the GtkSatModule structure. * * This function is called when the hour controller wraps around its * limits. The current day is incremented or decremented according to * the wrap direction, then the current time is updated. */ static void tmg_hour_wrap(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); gint hour; (void)widget; hour = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgHour)); if (hour == 0) { /* 23 -> 0 wrap: increment date */ tmg_cal_add_one_day(mod); } else { /* 0 -> 23 wrap: decrement data */ tmg_cal_sub_one_day(mod); } } /** * Minute controller wrap * * @param widget Pointer to the minute controller widget * @param data Pointer to the GtkSatModule structure. * * This function is called when the minute controller wraps around its * limits. The current hour is incremented or decremented according to * the wrap direction, then the current time is updated. */ static void tmg_min_wrap(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); gint hr, min; (void)widget; hr = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgHour)); min = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgMin)); if (min == 0) { /* 59 -> 0 wrap: increment hour */ if (hr == 23) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgHour), 0); tmg_hour_wrap(mod->tmgHour, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgHour), hr + 1); } } else { /* 0 -> 59 wrap: decrement hour */ if (hr == 0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgHour), 23); tmg_hour_wrap(mod->tmgHour, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgHour), hr - 1); } } /* Note that the time will be updated automatically since the _set_value(hour) will trigger the "value-changed" signal */ } /** * Seconds controller wrap * * @param widget Pointer to the seconds controller widget * @param data Pointer to the GtkSatModule structure. * * This function is called when the seconds controller wraps around its * limits. The current minute is incremented or decremented according to * the wrap direction, then the current time is updated. */ static void tmg_sec_wrap(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); gint min, sec; (void)widget; sec = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgSec)); min = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgMin)); if (sec == 0) { /* 59 -> 0 wrap: increment minute */ if (min == 59) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMin), 0); tmg_min_wrap(mod->tmgMin, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMin), min + 1); } } else { /* 0 -> 59 wrap: decrement minute */ if (min == 0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMin), 59); tmg_min_wrap(mod->tmgMin, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMin), min - 1); } } /* Note that the time will be updated automatically since the _set_value(minute) will trigger the "value-changed" signal */ } /** * Millisecond controller wrap * * @param widget Pointer to the millisecond controller widget * @param data Pointer to the GtkSatmodule structure. * * This function is called when the muillisecond controller wraps around its * limits. The current second is incremented or decremented according to * the wrap direction, then the current time is updated. */ static void tmg_msec_wrap(GtkWidget * widget, gpointer data) { GtkSatModule *mod = GTK_SAT_MODULE(data); gint msec, sec; (void)widget; sec = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgSec)); msec = gtk_spin_button_get_value(GTK_SPIN_BUTTON(mod->tmgMsec)); if (msec == 0) { /* 999 -> 0 wrap: increment seconds */ if (sec == 59) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgSec), 0); tmg_sec_wrap(mod->tmgSec, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgSec), sec + 1); } } else { /* 0 -> 999 wrap: decrement seconds */ if (sec == 0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgSec), 59); tmg_sec_wrap(mod->tmgSec, data); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgSec), sec - 1); } } /* Note that the time will be updated automatically since the _set_value(sec) will trigger the "value-changed" signal */ } /** * Update Time controller widgets * * @param mod Pointer to the GtkSatModule widget */ void tmg_update_widgets(GtkSatModule * mod) { struct tm tim; time_t t; /* update time widgets */ t = (mod->tmgCdnum - 2440587.5) * 86400.; if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME)) tim = *localtime(&t); else tim = *gmtime(&t); /* hour, min, sec, msec */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgHour), tim.tm_hour); gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMin), tim.tm_min); gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgSec), tim.tm_sec); /* msec: always 0 in RT and SRT modes */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(mod->tmgMsec), 0); /* calendar */ gtk_calendar_select_month(GTK_CALENDAR(mod->tmgCal), tim.tm_mon, tim.tm_year + 1900); gtk_calendar_select_day(GTK_CALENDAR(mod->tmgCal), tim.tm_mday); } /** * Update state label. * * @param mod Pointer to the GtkSatModule widget * * This function is used to update the state label showing * whether the time control is in RT, SRT, or MAN mode. * */ void tmg_update_state(GtkSatModule * mod) { if (mod->rtPrev != mod->tmgPdnum) if (mod->throttle) gtk_label_set_markup(GTK_LABEL(mod->tmgState), _("Simulated Real-Time")); else gtk_label_set_markup(GTK_LABEL(mod->tmgState), _("Manual Control")); else gtk_label_set_markup(GTK_LABEL(mod->tmgState), _("Real-Time")); } /** Add one day to the calendar */ static void tmg_cal_add_one_day(GtkSatModule * mod) { gdouble jd; jd = calculate_time(mod); jd += 1; mod->tmgCdnum = jd; tmg_update_widgets(mod); } /** Subtract one day from the calendar */ static void tmg_cal_sub_one_day(GtkSatModule * mod) { gdouble jd; jd = calculate_time(mod); jd -= 1; mod->tmgCdnum = jd; tmg_update_widgets(mod); } /** * Calculate the time as Julian day (and fraction) from the TMG widgets. * * @param mod Pointer to the GtkSatModule this time manager belongs to. * @returns The current date and time in Julian days and fraction of days. */ static gdouble calculate_time(GtkSatModule * mod) { guint year, month, day; gint hr, min, sec, msec; struct tm tim, utim; gdouble jd = 0.0; /* get date and time from widgets */ gtk_calendar_get_date(GTK_CALENDAR(mod->tmgCal), &year, &month, &day); hr = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgHour)); min = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgMin)); sec = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgSec)); msec = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mod->tmgMsec)); /* build struct_tm */ tim.tm_year = (int)(year); tim.tm_mon = (int)(month + 1); tim.tm_mday = (int)day; tim.tm_hour = (int)hr; tim.tm_min = (int)min; tim.tm_sec = (int)sec; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: %d/%d/%d %d:%d:%d.%d"), __func__, tim.tm_year, tim.tm_mon, tim.tm_mday, tim.tm_hour, tim.tm_min, tim.tm_sec, msec); /* convert UTC time to Julian Date */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME)) { /* convert local time to UTC */ /* tm_mon -1 / +1 is a temporary workaround for * https://github.com/csete/gpredict/issues/90 * Also see * https://github.com/csete/gpredict/issues/106 */ tim.tm_mon -= 1; Time_to_UTC(&tim, &utim); utim.tm_mon += 1; /* Convert to JD */ jd = Julian_Date(&utim); } else { /* Already UTC, just convert to JD */ jd = Julian_Date(&tim); } jd = jd + (gdouble) msec / 8.64e+7; return jd; } gpredict/src/gtk-sat-module-tmg.h000066400000000000000000000011551427377236300172610ustar00rootroot00000000000000/* * NOTE: This file is an internal part of gtk-sat-module and should not * be used by other files than gtk-sat-module.c and gtk-sat-module-popup.c */ #ifndef __GTK_SAT_MODULE_TMG_H__ #define __GTK_SAT_MODULE_TMG_H__ 1 #include #include #include /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ void tmg_create(GtkSatModule * mod); void tmg_update_widgets(GtkSatModule * mod); void tmg_update_state(GtkSatModule * mod); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_SAT_MODULE_H__ */ gpredict/src/gtk-sat-module.c000066400000000000000000001335651427377236300165020ustar00rootroot00000000000000/* * Gpredict: Real-time satellite tracking and orbit prediction program * * Copyright (C) 2001-2019 Alexandru Csete, OZ9AEC * Charles Suprin, AA1VS * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, visit http://www.fsf.org/ */ /** * Main module container. * * The GtkSatModule widget is the top level container that contains the * individual views. These views are of type GtkSatList, GtkSatMap, GtkSingleSat, * GtkPolarView and GtkEventList (as of version 1.2). * * The views are organized in a grid (GtkTable) where each view can occupy one * or more squares, see the create_module_layout() function. * * A module can have a GtkRigCtrl, a GtkRotCtrl and a GtkSkyGlance widget * associated to it. These associations exist because theu share QTH and * satellite data. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-event-list.h" #include "gtk-polar-view.h" #include "gtk-rig-ctrl.h" #include "gtk-rot-ctrl.h" #include "gtk-sat-list.h" #include "gtk-sat-map.h" #include "gtk-sat-module.h" #include "gtk-sat-module-popup.h" #include "gtk-sat-module-tmg.h" #include "gtk-single-sat.h" #include "gtk-sky-glance.h" #include "mod-cfg.h" #include "mod-cfg-get-param.h" #include "mod-mgr.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" static GtkVBoxClass *parent_class = NULL; static void gtk_sat_module_free_sat(gpointer sat) { gtk_sat_data_free_sat(SAT(sat)); } static void update_autotrack(GtkSatModule * module) { GList *satlist = NULL; GList *iter; sat_t *sat = NULL; guint i, n; double next_aos; gint next_sat; int min_ele = sat_cfg_get_int(SAT_CFG_INT_PRED_MIN_EL); if (module->target > 0) sat = g_hash_table_lookup(module->satellites, &module->target); /* do nothing if current target is still above horizon */ if (sat != NULL && sat->el > min_ele) return; /* set target to satellite with next AOS */ satlist = g_hash_table_get_values(module->satellites); iter = satlist; n = g_list_length(satlist); if (n == 0) return; next_aos = module->tmgCdnum + 10.f; /* hope there is AOS within 10 days */ next_sat = module->target; i = 0; while (i++ < n) { sat = (sat_t *) iter->data; /* if sat is above horizon, select it and we are done */ if (sat->el > min_ele) { next_sat = sat->tle.catnr; break; } /* we have a candidate if AOS is in the future */ if (sat->aos > module->tmgCdnum && sat->aos < next_aos) { next_aos = sat->aos; next_sat = sat->tle.catnr; } iter = iter->next; } if (next_sat != module->target) { sat_log_log(SAT_LOG_LEVEL_INFO, _("Autotrack: Changing target satellite %d -> %d"), module->target, next_sat); gtk_sat_module_select_sat(module, next_sat); } g_list_free(satlist); } static void gtk_sat_module_destroy(GtkWidget * widget) { GtkSatModule *module = GTK_SAT_MODULE(widget); GtkWidget *view; guint i; /*save the configuration */ mod_cfg_save(module->name, module->cfgdata); /* stop timeout */ if (module->timerid > 0) { g_source_remove(module->timerid); module->timerid = 0; } /* destroy time controller */ if (module->tmgActive) { gtk_widget_destroy(module->tmgWin); module->tmgActive = FALSE; } /* destroy radio and rotator controllers */ if (module->rigctrlwin) { gtk_widget_destroy(module->rigctrlwin); } if (module->rotctrlwin) { gtk_widget_destroy(module->rotctrlwin); } /* destroy sky at a glance window */ if (module->skgwin) { gtk_widget_destroy(module->skgwin); } /* destroy views */ for (i = 0; i < module->nviews; i++) { view = GTK_WIDGET(g_slist_nth_data(module->views, i)); gtk_widget_destroy(view); } module->nviews = 0; /* clean up QTH */ if (module->qth) { qth_data_free(module->qth); module->qth = NULL; } /* clean up satellites */ if (module->satellites) { g_hash_table_destroy(module->satellites); module->satellites = NULL; } if (module->grid) { g_free(module->grid); module->grid = NULL; } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_sat_module_class_init(GtkSatModuleClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; widget_class->destroy = gtk_sat_module_destroy; parent_class = g_type_class_peek_parent(class); } /** Initialise GtkSatModule widget */ static void gtk_sat_module_init(GtkSatModule * module, gpointer g_class) { (void)g_class; /* initialise data structures */ module->win = NULL; module->qth = g_try_new0(qth_t, 1); qth_init(module->qth); module->satellites = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, gtk_sat_module_free_sat); module->rotctrlwin = NULL; module->rotctrl = NULL; module->rigctrlwin = NULL; module->rigctrl = NULL; module->skgwin = NULL; module->skg = NULL; module->lastSkgUpd = 0.0; module->state = GTK_SAT_MOD_STATE_DOCKED; g_mutex_init(&module->busy); /* open the gpsd device */ module->gps_data = NULL; module->grid = NULL; module->views = NULL; module->nviews = 0; module->timerid = 0; module->throttle = 1; module->rtNow = 0.0; module->rtPrev = 0.0; module->tmgActive = FALSE; module->tmgPdnum = 0.0; module->tmgCdnum = 0.0; module->tmgReset = FALSE; module->target = -1; module->autotrack = FALSE; } GType gtk_sat_module_get_type() { static GType gtk_sat_module_type = 0; if (!gtk_sat_module_type) { static const GTypeInfo gtk_sat_module_info = { sizeof(GtkSatModuleClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_sat_module_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkSatModule), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_sat_module_init, NULL }; gtk_sat_module_type = g_type_register_static(GTK_TYPE_BOX, "GtkSatModule", >k_sat_module_info, 0); } return gtk_sat_module_type; } /** * Create a new view. * * @param module Pointer to the parent GtkSatModule widget * @param num The number ID of the view to create, see gtk_sat_mod_view_t * @return Pointer to a new GtkWidget of type corresponding to num. If num * is invalid, a GtkSatList is returned. */ static GtkWidget *create_view(GtkSatModule * module, guint num) { GtkWidget *view; switch (num) { case GTK_SAT_MOD_VIEW_LIST: view = gtk_sat_list_new(module->cfgdata, module->satellites, module->qth, 0); break; case GTK_SAT_MOD_VIEW_MAP: view = gtk_sat_map_new(module->cfgdata, module->satellites, module->qth); break; case GTK_SAT_MOD_VIEW_POLAR: view = gtk_polar_view_new(module->cfgdata, module->satellites, module->qth); break; case GTK_SAT_MOD_VIEW_SINGLE: view = gtk_single_sat_new(module->cfgdata, module->satellites, module->qth, 0); break; case GTK_SAT_MOD_VIEW_EVENT: view = gtk_event_list_new(module->cfgdata, module->satellites, module->qth, 0); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid child type (%d). Using GtkSatList."), __FILE__, __LINE__, num); view = gtk_sat_list_new(module->cfgdata, module->satellites, module->qth, 0); break; } return view; } /** * Calculate the layout grid size. * * @param module Pointer to the GtkSatModule widget. * @param rows Return value for number of rows * @param cols Return value for number of columns * * It is assumed that module->grid and module->nviews have chierent values. */ static void get_grid_size(GtkSatModule * module, guint * rows, guint * cols) { guint i; guint xmax = 0; guint ymax = 0; for (i = 0; i < module->nviews; i++) { xmax = MAX(xmax, module->grid[5 * i + 2]); ymax = MAX(ymax, module->grid[5 * i + 4]); } *cols = xmax; *rows = ymax; } /** * Create module layout and add views. * * It is assumed that module->grid and module->nviews have * coherent values. */ static void create_module_layout(GtkSatModule * module) { GtkWidget *table; GtkWidget *view; guint rows, cols; guint i; /* calculate the number of rows and columns necessary */ get_grid_size(module, &rows, &cols); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Layout has %d columns and %d rows."), __func__, cols, rows); table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE); for (i = 0; i < module->nviews; i++) { /* create the view */ view = create_view(module, module->grid[5 * i]); /* store a pointer to the view */ module->views = g_slist_append(module->views, view); /* add view to the grid */ gtk_grid_attach(GTK_GRID(table), view, module->grid[5 * i + 1], // left module->grid[5 * i + 3], // top module->grid[5 * i + 2] - module->grid[5 * i + 1], // width module->grid[5 * i + 4] - module->grid[5 * i + 3]); // height } gtk_box_pack_start(GTK_BOX(module), table, TRUE, TRUE, 0); } /** * Read satellites into memory. * * This function reads the list of satellites from the configfile and * and then adds each satellite to the hash table. */ static void gtk_sat_module_load_sats(GtkSatModule * module) { gint *sats = NULL; gsize length; GError *error = NULL; guint i; sat_t *sat; guint *key = NULL; guint succ = 0; /* get list of satellites from config file; abort in case of error */ sats = g_key_file_get_integer_list(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_SATS_KEY, &length, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to get list of satellites (%s)"), __func__, error->message); g_clear_error(&error); /* GLib API says nothing about the contents in case of error */ if (sats) { g_free(sats); } return; } /* read each satellite into hash table */ for (i = 0; i < length; i++) { sat = g_new(sat_t, 1); if (gtk_sat_data_read_sat(sats[i], sat)) { /* the satellite could not be read */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading data for #%d"), __func__, sats[i]); g_free(sat); } else { /* check whether satellite is already in list in order to avoid duplicates */ key = g_new0(guint, 1); *key = sats[i]; if (g_hash_table_lookup(module->satellites, key) == NULL) { gtk_sat_data_init_sat(sat, module->qth); g_hash_table_insert(module->satellites, key, sat); succ++; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Read data for #%d"), __func__, sats[i]); } else { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Sat #%d already in list"), __func__, sats[i]); /* it is not needed in this case */ g_free(sat); } } } sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Read %d out of %d satellites"), __func__, succ, length); g_free(sats); } /** * Update GtkSkyGlance view * * @param module Pointer to the GtkSatModule widget * * This function checks to see if the sky-at-a-glance display needs to be * updated due to time or qth moving. It checks how long ago the GtkSkyGlance * widget was updated and performs an update if necessary. The current timeout * is set to 60 sec. It also checks how far away the qth is from where the * GtkSkyGlance widget was last updated and triggers an update if necessary. * The current distance is set to 1km. * * This is a cheap/lazy implementation of automatic update. Instead of * performing a real update by "moving" the objects on the GtkSkyGlance canvas, * we simply replace the current GtkSkyGlance object with a new one. * Ugly but safe. * * To ensure smooth performance while running in simulated real time with high * throttle value or manual time mode, the caller is responsible for only calling * this function at an appropriate frequency (e.g. every 10 cycle). */ static void update_skg(GtkSatModule * module) { /* update SKG if ~60 seconds have passed or we have moved 1 km */ if (G_UNLIKELY(fabs(module->tmgCdnum - module->lastSkgUpd) > 7.0e-4) || G_UNLIKELY(qth_small_dist(module->qth, module->lastSkgUpdqth) > 1.0)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Updating GtkSkyGlance for %s"), __func__, module->name); gtk_container_remove(GTK_CONTAINER(module->skgwin), module->skg); module->skg = gtk_sky_glance_new(module->satellites, module->qth, module->tmgCdnum); gtk_container_add(GTK_CONTAINER(module->skgwin), module->skg); gtk_widget_show_all(module->skg); module->lastSkgUpd = module->tmgCdnum; qth_small_save(module->qth, &(module->lastSkgUpdqth)); } } static void update_header(GtkSatModule * module) { gchar *fmtstr; gchar buff[TIME_FORMAT_MAX_LENGTH + 1]; gchar *buff2; fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(buff, TIME_FORMAT_MAX_LENGTH, fmtstr, module->tmgCdnum); if (module->qth->type == QTH_GPSD_TYPE) { buff2 = g_strdup_printf("%s GPS %0.3f seconds old", buff, fabs(module->tmgCdnum - module->qth->gpsd_update) * (24 * 3600)); gtk_label_set_text(GTK_LABEL(module->header), buff2); g_free(buff2); } else gtk_label_set_text(GTK_LABEL(module->header), buff); g_free(fmtstr); if (module->tmgActive) tmg_update_state(module); } /** * Update a child widget. * * @param child Pointer to the child widget (views) * @param tstamp The current timestamp * * This function is called by the main loop of the GtkSatModule widget for * each view in the layout grid. */ static void update_child(GtkWidget * child, gdouble tstamp) { if (IS_GTK_SAT_LIST(child)) { GTK_SAT_LIST(child)->tstamp = tstamp; gtk_sat_list_update(child); } else if (IS_GTK_SAT_MAP(child)) { GTK_SAT_MAP(child)->tstamp = tstamp; gtk_sat_map_update(child); } else if (IS_GTK_POLAR_VIEW(child)) { GTK_POLAR_VIEW(child)->tstamp = tstamp; gtk_polar_view_update(child); } else if (IS_GTK_SINGLE_SAT(child)) { GTK_SINGLE_SAT(child)->tstamp = tstamp; gtk_single_sat_update(child); } else if (IS_GTK_EVENT_LIST(child)) { GTK_EVENT_LIST(child)->tstamp = tstamp; gtk_event_list_update(child); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Unknown child type"), __FILE__, __LINE__); } } /** * Update a given satellite. * * @param key The hash table key (catnum) * @param val The hash table value (sat_t structure) * @param data User data (the GtkSatModule widget). * * This function updates the tracking data for a given satellite. It is called by * the timeout handler for each element in the hash table. */ static void gtk_sat_module_update_sat(gpointer key, gpointer val, gpointer data) { sat_t *sat; GtkSatModule *module; gdouble daynum; gdouble maxdt; (void)key; g_return_if_fail((val != NULL) && (data != NULL)); sat = SAT(val); module = GTK_SAT_MODULE(data); maxdt = (gdouble) sat_cfg_get_int(SAT_CFG_INT_PRED_LOOK_AHEAD); /* get current time (real or simulated */ daynum = module->tmgCdnum; /* update events if the event counter has been reset and the other requirements are fulfilled */ if ((GTK_SAT_MODULE(module)->event_count == 0) && has_aos(sat, module->qth)) { /* Note that has_aos may return TRUE for geostationary sats whose orbit deviate from a true-geostat orbit, however, find_aos and find_los will not go beyond the time limit we specify (in those cases they return 0.0 for AOS/LOS times. We use SAT_CFG_INT_PRED_LOOK_AHEAD for upper time limit */ sat->aos = find_aos(sat, module->qth, daynum, maxdt); sat->los = find_los(sat, module->qth, daynum, maxdt); } /* Update AOS and LOS for this satellite if it was known and is before the current time. daynum is the current time in the module. The conditional aos < daynum is merely saying that aos occurred in the past. Therefore it cannot be the next event or aos/los for that satellite. The conditional aos > 0.0 is a short hand for saying that the aos was successfully computed before. find_aos returns 0.0 when it cannot find an AOS. This code should not execute find_aos(los) if the conditional before is triggered as the newly computed aos(los) should either be in the future (aos > daynum) or (aos == 0 ). Single sat/list/event/map views all use these values and they should be up to date. The above code is still required for dealing with circumstances where the qth moves from someplace where the qth can have an AOS and where qth does not and for satellites in parking orbits where the AOS may be further than maxdt out results in aos==0.0 until the next aos is closer than maxdt. It also prevents the aos from being computed every pass through the module for the parking orbits. To be completely correct, when time can move forward and backwards as it can with the time controller, the time the aos/los was computed should be stored and associated with aos/los. That way if daynum aos > 0 && sat->aos < daynum) sat->aos = find_aos(sat, module->qth, daynum, maxdt); if (sat->los > 0 && sat->los < daynum) sat->los = find_los(sat, module->qth, daynum, maxdt); predict_calc(sat, module->qth, daynum); } /** Module timeout callback. */ static gboolean gtk_sat_module_timeout_cb(gpointer module) { GtkSatModule *mod = GTK_SAT_MODULE(module); GtkWidget *child; gboolean needupdate = FALSE; GdkWindowState state; gdouble delta; guint i; /*update the qth position */ qth_data_update(mod->qth, mod->tmgCdnum); /* in docked state, update only if tab is visible */ switch (mod->state) { case GTK_SAT_MOD_STATE_DOCKED: if (mod_mgr_mod_is_visible(GTK_WIDGET(module))) needupdate = TRUE; break; default: state = gdk_window_get_state(GDK_WINDOW (gtk_widget_get_window (GTK_WIDGET(module)))); if (state & GDK_WINDOW_STATE_ICONIFIED) needupdate = FALSE; else needupdate = TRUE; break; } if (needupdate) { if (g_mutex_trylock(&mod->busy) == FALSE) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Previous cycle missed it's deadline."), __func__); return TRUE; } mod->rtNow = get_current_daynum(); /* Update time if throttle != 0 */ if (mod->throttle) { delta = mod->throttle * (mod->rtNow - mod->rtPrev); mod->tmgCdnum = mod->tmgPdnum + delta; } /* else nothing to do since tmg_time_set updates mod->tmgCdnum every time */ /* time to update header? */ mod->head_count++; if (mod->head_count >= mod->head_timeout) { /* reset counter */ mod->head_count = 0; update_header(mod); } /* reset event update counter if is has expired or if we have moved significantly */ if (mod->event_count == mod->event_timeout || qth_small_dist(mod->qth, mod->qth_event) > 1.0) { mod->event_count = 0; // will trigger find_aos() and find_los() } /* if the events are going to be recalculated store the position */ if (mod->event_count == 0) { qth_small_save(mod->qth, &(mod->qth_event)); } /* update satellite data */ if (mod->satellites != NULL) g_hash_table_foreach(mod->satellites, gtk_sat_module_update_sat, module); /* update children */ for (i = 0; i < mod->nviews; i++) { child = GTK_WIDGET(g_slist_nth_data(mod->views, i)); update_child(child, mod->tmgCdnum); } /* update satellite data (it may have got out of sync during child updates) */ if (mod->satellites != NULL) g_hash_table_foreach(mod->satellites, gtk_sat_module_update_sat, module); /* update target if autotracking is enabled */ if (mod->autotrack) update_autotrack(mod); /* send notice to radio and rotator controller */ if (mod->rigctrl) gtk_rig_ctrl_update(GTK_RIG_CTRL(mod->rigctrl), mod->tmgCdnum); if (mod->rotctrl) gtk_rot_ctrl_update(GTK_ROT_CTRL(mod->rotctrl), mod->tmgCdnum); /* check and update Sky at glance */ /* FIXME: We should have some timeout counter to ensure that we don't update GtkSkyGlance too often when running with high throttle values; however, the update does not seem to add any significant load even when running at max throttle */ if (mod->skg) update_skg(mod); mod->event_count++; /* store time keeping variables */ mod->rtPrev = mod->rtNow; mod->tmgPdnum = mod->tmgCdnum; if (mod->tmgActive) { /* update time control spin buttons when we are in RT or SRT mode */ if (mod->throttle) tmg_update_widgets(mod); } g_mutex_unlock(&mod->busy); } return TRUE; } /** * Module options. * * Invoke module-wide popup menu */ static void gtk_sat_module_popup_cb(GtkWidget * button, gpointer data) { (void)button; gtk_sat_module_popup(GTK_SAT_MODULE(data)); } /** * Read moule configuration data. * * @param module The GtkSatModule to which the configuration will be applied. * @param cfgfile The configuration file. */ static void gtk_sat_module_read_cfg_data(GtkSatModule * module, const gchar * cfgfile) { gchar *buffer = NULL; gchar *qthfile; gchar *confdir; gchar **buffv; guint length, i; GError *error = NULL; module->cfgdata = g_key_file_new(); g_key_file_set_list_separator(module->cfgdata, ';'); /* Bail out with error message if data can not be read */ if (!g_key_file_load_from_file(module->cfgdata, cfgfile, G_KEY_FILE_KEEP_COMMENTS, &error)) { g_key_file_free(module->cfgdata); module->cfgdata = NULL; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not load config data from %s (%s)."), __func__, cfgfile, error->message); g_clear_error(&error); return; } /* debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Reading configuration from %s"), __func__, cfgfile); /* set module name */ buffer = g_path_get_basename(cfgfile); buffv = g_strsplit(buffer, ".mod", 0); module->name = g_strdup(buffv[0]); g_free(buffer); g_strfreev(buffv); /* get qth file */ buffer = mod_cfg_get_str(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, SAT_CFG_STR_DEF_QTH); confdir = get_user_conf_dir(); qthfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, buffer, NULL); /* load QTH data */ if (!qth_data_read(qthfile, module->qth)) { /* QTH file was not found for some reason */ g_free(buffer); g_free(qthfile); /* remove cfg key */ g_key_file_remove_key(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, NULL); /* save modified cfg data to file */ mod_cfg_save(module->name, module->cfgdata); /* try SAT_CFG_STR_DEF_QTH */ buffer = sat_cfg_get_str(SAT_CFG_STR_DEF_QTH); qthfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, buffer, NULL); if (!qth_data_read(qthfile, module->qth)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Can not load default QTH file %s; using built-in defaults"), __func__, buffer); /* settings are really screwed up; we need some safe values here */ qth_safe(module->qth); } } g_free(buffer); g_free(confdir); g_free(qthfile); /* get timeout value */ module->timeout = mod_cfg_get_int(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_TIMEOUT_KEY, SAT_CFG_INT_MODULE_TIMEOUT); /* get grid layout configuration (introduced in 1.2) */ buffer = mod_cfg_get_str(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_GRID, SAT_CFG_STR_MODULE_GRID); /* convert to an integer list */ buffv = g_strsplit(buffer, ";", 0); length = g_strv_length(buffv); if ((length == 0) || (length % 5 != 0)) { /* the grid configuration is bogus; override with global default */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module layout is invalid: %s. Using default."), __func__, buffer); g_free(buffer); g_strfreev(buffv); buffer = sat_cfg_get_str_def(SAT_CFG_STR_MODULE_GRID); buffv = g_strsplit(buffer, ";", 0); length = g_strv_length(buffv); } /* make a debug log entry */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: GRID(%d): %s"), __func__, length, buffer); g_free(buffer); /* number of views: we have five numbers per view (type,left,right,top,bottom) */ module->nviews = length / 5; module->grid = g_try_new0(guint, length); /* if we cannot allocate memory for the grid zero the views out and log */ if (module->grid != NULL) { /* convert chars to integers */ for (i = 0; i < length; i++) { module->grid[i] = (gint) g_ascii_strtoll(buffv[i], NULL, 0); //g_print ("%d: %s => %d\n", i, buffv[i], module->grid[i]); } } else { module->nviews = 0; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unable to allocate memory for grid."), __func__); } g_strfreev(buffv); } /** * Create a new GtkSatModule widget. * * @param cfgfile The name of the configuration file (.mod) * * @bug Program goes into infinite loop when there is something * wrong with cfg file. */ GtkWidget *gtk_sat_module_new(const gchar * cfgfile) { GtkSatModule *module; GtkWidget *butbox; /* Read configuration data. * If cfgfile is not existing or is NULL, start the wizard * in order to create a new configuration. */ if ((cfgfile == NULL) || !g_file_test(cfgfile, G_FILE_TEST_EXISTS)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s is not valid."), __func__, cfgfile); return NULL; } module = GTK_SAT_MODULE(g_object_new(GTK_TYPE_SAT_MODULE, NULL)); g_object_set(module, "orientation", GTK_ORIENTATION_VERTICAL, NULL); gtk_sat_module_read_cfg_data(module, cfgfile); if (module->cfgdata == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s has problems."), __func__, cfgfile); return NULL; } /*initialize the qth engine and get position */ qth_data_update_init(module->qth); /* module state */ if ((g_key_file_has_key(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_STATE, NULL)) && sat_cfg_get_bool(SAT_CFG_BOOL_MOD_STATE)) { module->state = g_key_file_get_integer(module->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_STATE, NULL); } else { module->state = GTK_SAT_MOD_STATE_DOCKED; } /* time keeping */ module->rtNow = get_current_daynum(); module->rtPrev = get_current_daynum(); module->tmgPdnum = get_current_daynum(); module->tmgCdnum = get_current_daynum(); gtk_sat_module_load_sats(module); /* menu */ GtkWidget * image = gtk_image_new_from_icon_name("open-menu-symbolic", GTK_ICON_SIZE_BUTTON); module->popup_button = gtk_button_new(); gtk_button_set_relief(GTK_BUTTON(module->popup_button), GTK_RELIEF_NONE); gtk_widget_set_tooltip_text(module->popup_button, _("Module menu")); gtk_container_add(GTK_CONTAINER(module->popup_button), image); g_signal_connect(module->popup_button, "clicked", G_CALLBACK(gtk_sat_module_popup_cb), module); /* create header; header should not be updated more than once pr. second */ module->header = gtk_label_new(NULL); module->head_count = 0; module->head_timeout = module->timeout > 1000 ? 1 : (guint) floor(1000 / module->timeout); /* Event timeout updates every minute */ module->event_timeout = module->timeout > 60000 ? 1 : (guint) floor(60000 / module->timeout); /* force update the first time */ module->event_count = module->event_timeout; butbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(butbox), module->header, FALSE, FALSE, 10); gtk_box_pack_end(GTK_BOX(butbox), module->popup_button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(module), butbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(module), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); create_module_layout(module); gtk_widget_show_all(GTK_WIDGET(module)); /* start timeout */ module->timerid = g_timeout_add(module->timeout, gtk_sat_module_timeout_cb, module); return GTK_WIDGET(module); } /** * Close module. * * @param button The button widget that received the signal. * @param data Pointer the GtkSatModule widget, which should be destroyed. * * This function is called when the user clicks on the "close" minibutton. * The functions checks the state of the module. If the module is docked * it is removed from the mod-mgr notebook whereafter it is destroyed. * if the module is either in undocked or fullscreen state, the parent * window is destroyed, which will automatically destroy the module as * well. * * NOTE: Don't use button, since we don't know what kind of widget it is * (it may be button or menu item). */ void gtk_sat_module_close_cb(GtkWidget * button, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); gchar *name; gint retcode; (void)button; name = g_strdup(module->name); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Module %s received CLOSE signal."), __func__, name); /* save configuration to ensure that dynamic data like state is stored */ mod_cfg_save(module->name, module->cfgdata); switch (module->state) { case GTK_SAT_MOD_STATE_DOCKED: sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Module %s is in DOCKED state."), __func__, name); retcode = mod_mgr_remove_module(GTK_WIDGET(module)); if (retcode) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?"), __func__, name, retcode); } break; case GTK_SAT_MOD_STATE_WINDOW: sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Module %s is in WINDOW state."), __func__, name); retcode = mod_mgr_remove_module(GTK_WIDGET(module)); if (retcode) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?"), __func__, name, retcode); } /* increase reference count */ g_object_ref(module); /* remove module from window, destroy window */ gtk_container_remove(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), GTK_WIDGET(module)); gtk_widget_destroy(GTK_SAT_MODULE(module)->win); GTK_SAT_MODULE(module)->win = NULL; /* release module */ g_object_unref(module); break; case GTK_SAT_MOD_STATE_FULLSCREEN: sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Module %s is in FULLSCREEN state."), __func__, name); retcode = mod_mgr_remove_module(GTK_WIDGET(module)); if (retcode) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s was not found in mod-mgr (%d)\n" "Internal state is corrupt?"), __func__, name, retcode); } /* increase reference count */ g_object_ref(module); /* remove module from window, destroy window */ gtk_container_remove(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), GTK_WIDGET(module)); gtk_widget_destroy(GTK_SAT_MODULE(module)->win); GTK_SAT_MODULE(module)->win = NULL; /* release module */ g_object_unref(module); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s has unknown state: %d"), __func__, name, module->state); break; } /* apparently, module will be destroyed when removed from notebook */ /* gtk_widget_destroy (GTK_WIDGET (module)); */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Module %s closed."), __func__, name); g_free(name); } /** * Configure module. * * @param button The button widget that received the signal. * @param data Pointer the GtkSatModule widget, which should be reconfigured * * This function is called when the user clicks on the "configure" minibutton. * The function incokes the mod_cfg_edit function, which has the same look and feel * as the dialog used to create a new module. * * NOTE: Don't use button, since we don't know what kind of widget it is * (it may be button or menu item). */ void gtk_sat_module_config_cb(GtkWidget * button, gpointer data) { GtkSatModule *module = GTK_SAT_MODULE(data); GtkAllocation alloc; GtkWidget *toplevel; gchar *name; gchar *cfgfile; mod_cfg_status_t retcode; gtk_sat_mod_state_t laststate; gint w, h; (void)button; if (module->win != NULL) toplevel = module->win; else toplevel = gtk_widget_get_toplevel(GTK_WIDGET(data)); name = g_strdup(module->name); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Module %s received CONFIG signal."), __func__, name); /* stop timeout */ if (!g_source_remove(module->timerid)) { /* internal error, since the timerid appears to be invalid. */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not stop timeout callback\n" "%s: Source ID %d seems invalid."), __func__, __func__, module->timerid); } else { module->timerid = 0; retcode = mod_cfg_edit(name, module->cfgdata, toplevel); if (retcode == MOD_CFG_OK) { /* save changes */ retcode = mod_cfg_save(name, module->cfgdata); if (retcode != MOD_CFG_OK) { /**** FIXME: dialog */ sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Module configuration failed for some reason."), __func__); /* don't try to reload config since it may be invalid; keep original */ } else { /* store state and size */ laststate = module->state; gtk_widget_get_allocation(GTK_WIDGET(module), &alloc); w = alloc.width; h = alloc.height; gtk_sat_module_close_cb(NULL, module); gchar *confdir = get_modules_dir(); cfgfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, name, ".mod", NULL); g_free(confdir); module = GTK_SAT_MODULE(gtk_sat_module_new(cfgfile)); module->state = laststate; switch (laststate) { case GTK_SAT_MOD_STATE_DOCKED: /* re-open module by adding it to the mod-mgr */ mod_mgr_add_module(GTK_WIDGET(module), TRUE); break; case GTK_SAT_MOD_STATE_WINDOW: /* add to module manager */ mod_mgr_add_module(GTK_WIDGET(module), FALSE); /* create window */ module->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(module->win), module->name); gtk_window_set_default_size(GTK_WINDOW(module->win), w, h); /** FIXME: window icon and such */ /* add module to window */ gtk_container_add(GTK_CONTAINER(module->win), GTK_WIDGET(module)); /* show window */ gtk_widget_show_all(module->win); break; case GTK_SAT_MOD_STATE_FULLSCREEN: /* add to module manager */ mod_mgr_add_module(GTK_WIDGET(module), FALSE); /* create window */ module->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(module->win), module->name); gtk_window_set_default_size(GTK_WINDOW(module->win), w, h); /** FIXME: window icon and such */ /* add module to window */ gtk_container_add(GTK_CONTAINER(module->win), GTK_WIDGET(module)); /* show window */ gtk_widget_show_all(module->win); gtk_window_fullscreen(GTK_WINDOW(module->win)); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s has unknown state: %d"), __func__, name, module->state); break; } g_free(cfgfile); } } else { /* user cancelled => just re-start timer */ module->timerid = g_timeout_add(module->timeout, gtk_sat_module_timeout_cb, data); } } g_free(name); } /** Reload satellites in view */ static void reload_sats_in_child(GtkWidget * widget, GtkSatModule * module) { if (IS_GTK_SINGLE_SAT(G_OBJECT(widget))) { gtk_single_sat_reload_sats(widget, module->satellites); } else if (IS_GTK_POLAR_VIEW(widget)) { gtk_polar_view_reload_sats(widget, module->satellites); } else if (IS_GTK_SAT_MAP(widget)) { gtk_sat_map_reload_sats(widget, module->satellites); } else if (IS_GTK_SAT_LIST(widget)) { /* NOP */ } else if (IS_GTK_EVENT_LIST(widget)) { /* NOP */ } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Unknown child type"), __FILE__, __LINE__); } } /** * Reload satellites. * * @param module Pointer to a GtkSatModule widget. * * This function is used to reload the satellites in a module. This is can be * useful when: * * 1. The TLE files have been updated. * 2. The module configuration has changed (i.e. which satellites to track). * * The function assumes that module->cfgdata has already been updated, and so * all it has to do is to free module->satellites and re-execute the satellite * loading sequence. */ void gtk_sat_module_reload_sats(GtkSatModule * module) { GtkWidget *child; guint i; g_return_if_fail(IS_GTK_SAT_MODULE(module)); /* lock module */ g_mutex_lock(&module->busy); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Reloading satellites for module %s"), __func__, module->name); /* remove each element from the hash table, but keep the hash table */ g_hash_table_remove_all(module->satellites); /* reset event counter so that next AOS/LOS gets re-calculated */ module->event_count = 0; /* load satellites */ gtk_sat_module_load_sats(module); /* update children */ for (i = 0; i < module->nviews; i++) { child = GTK_WIDGET(g_slist_nth_data(module->views, i)); reload_sats_in_child(child, module); } /* FIXME: radio and rotator controller */ /* unlock module */ g_mutex_unlock(&module->busy); } /** Select a new satellite */ void gtk_sat_module_select_sat(GtkSatModule * module, gint catnum) { GtkWidget *child; guint i; module->target = catnum; /* select satellite in each view */ for (i = 0; i < module->nviews; i++) { child = GTK_WIDGET(g_slist_nth_data(module->views, i)); if (IS_GTK_SINGLE_SAT(G_OBJECT(child))) { gtk_single_sat_select_sat(child, catnum); } else if (IS_GTK_SAT_MAP(child)) { gtk_sat_map_select_sat(child, catnum); } else if (IS_GTK_SAT_LIST(child)) { gtk_sat_list_select_sat(child, catnum); } else if (IS_GTK_EVENT_LIST(child)) { gtk_event_list_select_sat(child, catnum); } else if (IS_GTK_POLAR_VIEW(child)) { gtk_polar_view_select_sat(child, catnum); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown child type"), __func__); } } /* select sat in radio and rotator controllers */ if (module->rigctrl != NULL) gtk_rig_ctrl_select_sat(GTK_RIG_CTRL(module->rigctrl), catnum); if (module->rotctrl != NULL) gtk_rot_ctrl_select_sat(GTK_ROT_CTRL(module->rotctrl), catnum); } /** * Re-configure module. * * @param module The module. * @param local Flag indicating whether reconfiguration is requested from * local configuration dialog. * */ void gtk_sat_module_reconf(GtkSatModule * module, gboolean local) { (void)module; (void)local; } gpredict/src/gtk-sat-module.h000066400000000000000000000134451427377236300165010ustar00rootroot00000000000000#ifndef __GTK_SAT_MODULE_H__ #define __GTK_SAT_MODULE_H__ 1 #include #include #include #include "qth-data.h" #include "gtk-sat-data.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ /** The state of a module */ typedef enum { GTK_SAT_MOD_STATE_DOCKED = 0, /*!< The module is docked into the notebook. */ GTK_SAT_MOD_STATE_WINDOW, /*!< The module is in it's own window. */ GTK_SAT_MOD_STATE_FULLSCREEN /*!< The module is in FULLSCREEN mode :-) */ } gtk_sat_mod_state_t; /** View types */ typedef enum { GTK_SAT_MOD_VIEW_LIST = 0, /*!< GtkSatList */ GTK_SAT_MOD_VIEW_MAP, /*!< GtkSatMap */ GTK_SAT_MOD_VIEW_POLAR, /*!< GtkPolarView */ GTK_SAT_MOD_VIEW_SINGLE, /*!< GtkSingleSat */ GTK_SAT_MOD_VIEW_EVENT, /*!< GtkEventList */ GTK_SAT_MOD_VIEW_NUM, /*!< Number of modules */ } gtk_sat_mod_view_t; #define GTK_TYPE_SAT_MODULE (gtk_sat_module_get_type ()) #define GTK_SAT_MODULE(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_sat_module_get_type (), \ GtkSatModule) #define GTK_SAT_MODULE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_sat_module_get_type (),\ GtkSatModuleClass) #define IS_GTK_SAT_MODULE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_module_get_type ()) typedef struct _gtk_sat_module GtkSatModule; typedef struct _GtkSatModuleClass GtkSatModuleClass; struct _gtk_sat_module { GtkBox vbox; gchar *name; /*!< The module name */ GtkWidget *popup_button; /*!< popup menu button. */ GtkWidget *close_button; /*!< The close button */ GtkWidget *win; /*!< Window when module is not docked */ GtkWidget *rotctrlwin; /*!< Rotator controller window */ GtkWidget *rotctrl; /*!< Rotator controller widget */ GtkWidget *rigctrlwin; /*!< Radio controller window */ GtkWidget *rigctrl; /*!< Radio controller widget */ GtkWidget *skgwin; /*!< Sky at glance window */ GtkWidget *skg; /*!< Sky at glance widget */ gdouble lastSkgUpd; /*!< Daynum of last GtkSkyGlance update */ qth_small_t lastSkgUpdqth; /*!< QTH information for last GtkSkyGlance update. */ GtkWidget *header; guint head_count; guint head_timeout; guint event_count; guint event_timeout; /* layout and children */ guint *grid; /*!< The grid layout array [(type,left,right,top,bottom),...] */ guint nviews; /*!< The number of views */ GSList *views; /*!< Pointers to the views */ GKeyFile *cfgdata; /*!< Configuration data. */ qth_t *qth; /*!< QTH information. */ qth_small_t qth_event; /*!< QTH information for last AOS/LOS update. */ GHashTable *satellites; /*!< Satellites. */ guint32 timeout; /*!< Timeout value [msec] */ gtk_sat_mod_state_t state; /*!< The state of the module. */ guint timerid; /*!< The timeout ID (FIXME: REMOVE) */ GMutex busy; /*!< Flag indicating whether timeout has finished or not. Also used for blocking the module during TLE update. */ /* time keeping */ gdouble rtNow; /*!< Real-time in this cycle */ gdouble rtPrev; /*!< Real-time in previous cycle */ gint throttle; /*!< Time throttle. */ gdouble tmgPdnum; /*!< Daynum at previous update. */ gdouble tmgCdnum; /*!< Daynum at current update. */ gboolean tmgActive; /*!< Flag indicating whether time mgr is active */ GtkWidget *tmgFactor; /*!< Spin button for throttle value selection 2..10 */ GtkWidget *tmgCal; /*!< Calendar widget for selecting date */ GtkWidget *tmgHour; /*!< Spin button for setting the hour */ GtkWidget *tmgMin; /*!< Spin button for setting the minutes */ GtkWidget *tmgSec; /*!< Spin button for setting the seconds */ GtkWidget *tmgMsec; /*!< Spin button for setting the milliseconds */ GtkWidget *tmgSlider; /*!< Slider for manual time "dragging" */ GtkWidget *tmgStop; /*!< Stop button; throttle = 0 */ GtkWidget *tmgFwd; /*!< Forward */ GtkWidget *tmgBwd; /*!< Backward */ GtkWidget *tmgReset; /*!< Reset button */ GtkWidget *tmgWin; /*!< Window containing the widgets. */ GtkWidget *tmgState; /*!< Status label indicating RT/SRT/MAN */ gboolean reset; /*!< Flag indicating whether time reset is in progress */ /* auto-tracking */ gint target; /*!< Target satellite */ gboolean autotrack; /*!< Whether automatic tracking is enabled */ /* location structure */ struct gps_data_t *gps_data; /*!< GPSD data structure */ }; struct _GtkSatModuleClass { GtkBoxClass parent_class; }; GType gtk_sat_module_get_type(void); GtkWidget *gtk_sat_module_new(const gchar * cfgfile); void gtk_sat_module_close_cb(GtkWidget * button, gpointer data); void gtk_sat_module_config_cb(GtkWidget * button, gpointer data); void gtk_sat_module_reload_sats(GtkSatModule * module); void gtk_sat_module_reconf(GtkSatModule * module, gboolean local); void gtk_sat_module_select_sat(GtkSatModule * module, gint catnum); void gtk_sat_module_fix_size(GtkWidget * module); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_SAT_MODULE_H__ */ gpredict/src/gtk-sat-popup-common.c000066400000000000000000000221411427377236300176310ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. 2011 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include "gtk-sat-popup-common.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-pass-dialogs.h" void add_pass_menu_items(GtkWidget * menu, sat_t * sat, qth_t * qth, gdouble * tstamp, GtkWidget * widget) { GtkWidget *menuitem; /* next pass and predict passes */ if (sat->el > 0.0) { menuitem = gtk_menu_item_new_with_label(_("Show current pass")); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "tstamp", tstamp); g_signal_connect(menuitem, "activate", G_CALLBACK(show_current_pass_cb), widget); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } /* the next pass menu item */ menuitem = gtk_menu_item_new_with_label(_("Show next pass")); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "tstamp", tstamp); g_signal_connect(menuitem, "activate", G_CALLBACK(show_next_pass_cb), widget); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* finally the future pass menu item */ menuitem = gtk_menu_item_new_with_label(_("Future passes")); g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_object_set_data(G_OBJECT(menuitem), "tstamp", tstamp); g_signal_connect(menuitem, "activate", G_CALLBACK(show_future_passes_cb), widget); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } void show_current_pass_cb(GtkWidget * menuitem, gpointer data) { sat_t *sat; qth_t *qth; gdouble *tstamp; GtkWindow *toplevel = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(data))); sat = SAT(g_object_get_data(G_OBJECT(menuitem), "sat")); qth = (qth_t *) (g_object_get_data(G_OBJECT(menuitem), "qth")); tstamp = (gdouble *) (g_object_get_data(G_OBJECT(menuitem), "tstamp")); if (sat->el > 0.0) show_next_pass_dialog(sat, qth, *tstamp, toplevel); } void show_next_pass_cb(GtkWidget * menuitem, gpointer data) { sat_t *sat; qth_t *qth; gdouble *tstamp; GtkWindow *toplevel = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(data))); sat = SAT(g_object_get_data(G_OBJECT(menuitem), "sat")); qth = (qth_t *) (g_object_get_data(G_OBJECT(menuitem), "qth")); tstamp = (gdouble *) (g_object_get_data(G_OBJECT(menuitem), "tstamp")); if (sat->el < 0) show_next_pass_dialog(sat, qth, *tstamp, toplevel); else /*if the satellite is currently visible go to end of pass and then add 10 minutes */ show_next_pass_dialog(sat, qth, sat->los + 0.007, toplevel); } void show_future_passes_cb(GtkWidget * menuitem, gpointer data) { sat_t *sat; qth_t *qth; gdouble *tstamp; GtkWindow *toplevel = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(data))); sat = SAT(g_object_get_data(G_OBJECT(menuitem), "sat")); qth = (qth_t *) (g_object_get_data(G_OBJECT(menuitem), "qth")); tstamp = (gdouble *) (g_object_get_data(G_OBJECT(menuitem), "tstamp")); show_future_passes_dialog(sat, qth, *tstamp, toplevel); } void show_next_pass_dialog(sat_t * sat, qth_t * qth, gdouble tstamp, GtkWindow * toplevel) { GtkWidget *dialog; pass_t *pass; /* check whether sat actually has AOS */ if (has_aos(sat, qth)) { if (sat_cfg_get_bool(SAT_CFG_BOOL_PRED_USE_REAL_T0)) { pass = get_next_pass(sat, qth, sat_cfg_get_int(SAT_CFG_INT_PRED_LOOK_AHEAD)); } else { pass = get_pass(sat, qth, tstamp, sat_cfg_get_int(SAT_CFG_INT_PRED_LOOK_AHEAD)); } if (pass != NULL) { show_pass(sat->nickname, qth, pass, GTK_WIDGET(toplevel)); } else { /* show dialog that there are no passes within time frame */ dialog = gtk_message_dialog_new(toplevel, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("Satellite %s has no passes\n" "within the next %d days"), sat->nickname, sat_cfg_get_int (SAT_CFG_INT_PRED_LOOK_AHEAD)); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } else { /* show dialog telling that this sat never reaches AOS */ dialog = gtk_message_dialog_new(toplevel, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Satellite %s has no passes for\n" "the current ground station!\n\n" "This can be because the satellite\n" "is geostationary, decayed or simply\n" "never comes above the horizon"), sat->nickname); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } void show_future_passes_dialog(sat_t * sat, qth_t * qth, gdouble tstamp, GtkWindow * toplevel) { GSList *passes = NULL; GtkWidget *dialog; /* check wheather sat actially has AOS */ if (has_aos(sat, qth)) { if (sat_cfg_get_bool(SAT_CFG_BOOL_PRED_USE_REAL_T0)) { passes = get_next_passes(sat, qth, sat_cfg_get_int (SAT_CFG_INT_PRED_LOOK_AHEAD), sat_cfg_get_int (SAT_CFG_INT_PRED_NUM_PASS)); } else { passes = get_passes(sat, qth, tstamp, sat_cfg_get_int(SAT_CFG_INT_PRED_LOOK_AHEAD), sat_cfg_get_int(SAT_CFG_INT_PRED_NUM_PASS)); } if (passes != NULL) { show_passes(sat->nickname, qth, passes, GTK_WIDGET(toplevel)); } else { /* show dialog that there are no passes within time frame */ dialog = gtk_message_dialog_new(toplevel, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("Satellite %s has no passes\n" "within the next %d days"), sat->nickname, sat_cfg_get_int (SAT_CFG_INT_PRED_LOOK_AHEAD)); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } else { /* show dialog */ GtkWidget *dialog; dialog = gtk_message_dialog_new(toplevel, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Satellite %s has no passes for\n" "the current ground station!"), sat->nickname); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } gpredict/src/gtk-sat-popup-common.h000066400000000000000000000015571427377236300176460ustar00rootroot00000000000000#ifndef __GTK_SAT_POPUP_COMMON_H__ #define __GTK_SAT_POPUP_COMMON_H__ 1 #include "qth-data.h" #include "sgpsdp/sgp4sdp4.h" void add_pass_menu_items(GtkWidget * menu, sat_t * sat, qth_t * qth, gdouble * tstamp, GtkWidget * widget); void show_current_pass_cb(GtkWidget * menuitem, gpointer data); void show_next_pass_cb(GtkWidget * menuitem, gpointer data); void show_future_passes_cb(GtkWidget * menuitem, gpointer data); void show_next_pass_dialog(sat_t * sat, qth_t * qth, gdouble tstamp, GtkWindow * toplevel); void show_future_passes_dialog(sat_t * sat, qth_t * qth, gdouble tstamp, GtkWindow * toplevel); #endif gpredict/src/gtk-sat-selector.c000066400000000000000000001037541427377236300170320ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC 2011 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* need _gnu_source to have strcasestr defined */ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "gtk-sat-selector.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" static GtkVBoxClass *parent_class = NULL; /** GtkSatSelector signal IDs */ enum { SAT_ACTIVATED_SIGNAL, /*!< "sat-activated" signal */ LAST_SIGNAL }; /** GtkSatSelector specific signals. */ static guint gtksatsel_signals[LAST_SIGNAL] = { 0 }; static void create_and_fill_models(GtkSatSelector * selector); /** Clean up memory before destroying satellite selector widget */ static void gtk_sat_selector_destroy(GtkWidget * widget) { GtkSatSelector *selector = GTK_SAT_SELECTOR(widget); /* clear list of selected satellites */ /* crashes on 2. instance: g_slist_free (sat_tree->selection); */ guint n, i; gpointer data; n = g_slist_length(selector->models); for (i = 0; i < n; i++) { /* get the first element and delete it */ data = g_slist_nth_data(selector->models, 0); selector->models = g_slist_remove(selector->models, data); } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_sat_selector_class_init(GtkSatSelectorClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; widget_class->destroy = gtk_sat_selector_destroy; parent_class = g_type_class_peek_parent(class); gtksatsel_signals[SAT_ACTIVATED_SIGNAL] = g_signal_new("sat-activated", G_TYPE_FROM_CLASS(class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(GtkSatSelectorClass, gtksatselector), NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, // return type 1, G_TYPE_INT); // catnum } /** Initialise satellite selector widget */ static void gtk_sat_selector_init(GtkSatSelector * selector, gpointer g_class) { (void)g_class; selector->models = NULL; } GType gtk_sat_selector_get_type() { static GType gtk_sat_selector_type = 0; if (!gtk_sat_selector_type) { static const GTypeInfo gtk_sat_selector_info = { sizeof(GtkSatSelectorClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_sat_selector_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkSatSelector), 1, /* n_preallocs */ (GInstanceInitFunc) gtk_sat_selector_init, NULL }; gtk_sat_selector_type = g_type_register_static(GTK_TYPE_BOX, "GtkSatSelector", >k_sat_selector_info, 0); } return gtk_sat_selector_type; } /* user clicked on "clear icon" in search field */ static void search_icon_clicked(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data) { (void) event; (void) user_data; if (icon_pos == GTK_ENTRY_ICON_SECONDARY) { GtkEntryBuffer *buffer = gtk_entry_get_buffer(entry); gtk_entry_buffer_delete_text(buffer, 0, -1); } } /** * Signal handler for managing satellite selection. * * @param view Pointer to the GtkTreeView object. * @param path The path of the row that was activated. * @param column The column where the activation occurred. * @param data Pointer to the GtkSatselector widget. * * This function is called when the user double clicks on a satellite in the * satellite selector. It is used to trigger the "sat-activated" signal of * the GtkSatSelector widget. */ static void row_activated_cb(GtkTreeView * view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer data) { GtkSatSelector *selector = GTK_SAT_SELECTOR(data); GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; gboolean haveselection = FALSE; /* this flag is set to TRUE if there is a selection */ gint catnum; /* catalog number of the selected satellite */ (void)view; (void)path; (void)column; /* get the selected row in the treeview */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selector->tree)); haveselection = gtk_tree_selection_get_selected(selection, &model, &iter); if (haveselection) { /* get the name and catalog number of the selected saetllite */ gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnum, -1); /* emit the "sat-activated" signal for the GtkSatSelector */ g_signal_emit(G_OBJECT(selector), gtksatsel_signals[SAT_ACTIVATED_SIGNAL], 0, catnum); } } /** * Compare two rows of the GtkSatSelector. * * @param model The tree model of the GtkSatSelector. * @param a The first row. * @param b The second row. * @param userdata Not used. * * This function is used by the sorting algorithm to compare two rows of the * GtkSatSelector widget. The unctions works by comparing the character strings * in the name column. */ static gint row_compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata) { gchar *sat1, *sat2; gint catnr1, catnr2; gint ret = 0; (void)userdata; gtk_tree_model_get(model, a, GTK_SAT_SELECTOR_COL_NAME, &sat1, -1); gtk_tree_model_get(model, b, GTK_SAT_SELECTOR_COL_NAME, &sat2, -1); ret = gpredict_strcmp(sat1, sat2); if (ret == 0) { gtk_tree_model_get(model, a, GTK_SAT_SELECTOR_COL_CATNUM, &catnr1, -1); gtk_tree_model_get(model, b, GTK_SAT_SELECTOR_COL_CATNUM, &catnr2, -1); if (catnr1 < catnr2) ret = -1; else if (catnr1 > catnr2) ret = 1; else /* never supposed to happen */ ret = 0; } g_free(sat1); g_free(sat2); return ret; } /** Selects unselected satellites whose name contains the substring in entry. */ static gboolean sat_filter_func(GtkTreeModel * model, GtkTreeIter * iter, GtkEntry * entry) { const gchar *searchstring; gchar *satname; gint catnr; gchar *catnrstr; gboolean selected; gboolean retval = FALSE; gtk_tree_model_get(model, iter, GTK_SAT_SELECTOR_COL_NAME, &satname, -1); gtk_tree_model_get(model, iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnr, -1); gtk_tree_model_get(model, iter, GTK_SAT_SELECTOR_COL_SELECTED, &selected, -1); searchstring = gtk_entry_get_text(entry); catnrstr = g_strdup_printf("%d", catnr); /* if it is already selected then remove it from the available list */ if (selected) retval = FALSE; else if (gpredict_strcasestr(satname, searchstring) != (char *)NULL) retval = TRUE; else if (gpredict_strcasestr(catnrstr, searchstring) != (char *)NULL) retval = TRUE; g_free(catnrstr); return (retval); } /** Make the tree refilter after something entered in the search box */ static gboolean entry_changed_cb(GtkEditable * entry, GtkTreeView * treeview) { GtkTreeModelFilter *filter; (void)entry; filter = GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(treeview)); gtk_tree_model_filter_refilter(filter); return (FALSE); } /** Cell renderer function for the Epoch field. */ static void epoch_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar buff[TIME_FORMAT_MAX_LENGTH]; gchar *fmtstr; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); if (number == 0.0) { g_object_set(renderer, "text", "--- N/A ---", NULL); } else { /* format the number */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(buff, TIME_FORMAT_MAX_LENGTH, fmtstr, number); g_object_set(renderer, "text", buff, NULL); g_free(fmtstr); } } /** * Signal handler for managing satellite group selections. * * @param combobox The GtkcomboBox widget. * @param data Pointer to the GtkSatSelector widget. * * This function is called when the user selects a new satellite group in the * filter. The function is responsible for reloading the conctents of the satellite * list according to the new selection. This task is very simple because the * proper liststore has already been constructed and stored in selector->models[i] * where i corresponds to the index of the newly selected group in the combo box. */ static void group_selected_cb(GtkComboBox * combobox, gpointer data) { GtkSatSelector *selector = GTK_SAT_SELECTOR(data); GtkTreeModel *newmodel; GtkTreeModel *oldmodel; GtkTreeModel *filter; gint sel; sel = gtk_combo_box_get_active(combobox); /* Frst, we need to reference the existing model, otherwise its refcount will drop to 0 when we replace it */ oldmodel = gtk_tree_view_get_model(GTK_TREE_VIEW(selector->tree)); if (oldmodel != NULL) g_object_ref(oldmodel); /* now replace oldmodel with newmodel */ newmodel = GTK_TREE_MODEL(g_slist_nth_data(selector->models, sel)); /* We changed the GtkTreeModel so we need to reset the sort column ID */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(newmodel), GTK_SAT_SELECTOR_COL_NAME, row_compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(newmodel), GTK_SAT_SELECTOR_COL_NAME, GTK_SORT_ASCENDING); /*build a filter around the new model */ filter = gtk_tree_model_filter_new(newmodel, NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(filter), (GtkTreeModelFilterVisibleFunc) sat_filter_func, GTK_SAT_SELECTOR(selector)->search, NULL); /*install the filter tree and hookup callbacks */ gtk_tree_view_set_model(GTK_TREE_VIEW(selector->tree), filter); g_signal_connect(G_OBJECT(GTK_SAT_SELECTOR(selector)->search), "changed", G_CALLBACK(entry_changed_cb), GTK_TREE_VIEW(selector->tree)); g_object_unref(newmodel); g_object_unref(filter); } /** * Create a new GtkSatSelector widget * * @param flags Flags indicating which columns should be visible * (see gtk_sat_selector_flag_t) * @return A GtkSatSelector widget. */ GtkWidget *gtk_sat_selector_new(guint flags) { GtkWidget *widget; GtkSatSelector *selector; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkWidget *vbox; GtkWidget *frame; GtkTreeModel *filter; if (!flags) flags = GTK_SAT_SELECTOR_DEFAULT_FLAGS; widget = g_object_new(GTK_TYPE_SAT_SELECTOR, NULL); selector = GTK_SAT_SELECTOR(widget); selector->flags = flags; /* create group selector combo box (needed by create_and_fill_models()) */ GTK_SAT_SELECTOR(widget)->groups = gtk_combo_box_text_new(); gtk_widget_set_tooltip_text(GTK_SAT_SELECTOR(widget)->groups, _("Satellite group / category")); /* combo box signal handler will be connected at the end after it has been populated to avoid false triggering */ /* create search widget early so it can be used for callback */ GTK_SAT_SELECTOR(widget)->search = gtk_entry_new(); gtk_widget_set_tooltip_text(GTK_SAT_SELECTOR(widget)->search, _("Search for a satellite by name or catalog number")); #ifdef G_OS_WIN32 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_PRIMARY, "edit-find-symbolic"); gtk_entry_set_icon_from_icon_name(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_SECONDARY, "edit-clear-symbolic"); #else gtk_entry_set_icon_from_icon_name(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_PRIMARY, "edit-find"); gtk_entry_set_icon_from_icon_name(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_SECONDARY, "edit-clear"); #endif gtk_entry_set_icon_tooltip_text(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_SECONDARY, _("Clear the search field")); gtk_entry_set_icon_activatable(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_PRIMARY, FALSE); gtk_entry_set_icon_activatable(GTK_ENTRY(GTK_SAT_SELECTOR(widget)->search), GTK_ENTRY_ICON_SECONDARY, TRUE); g_signal_connect(G_OBJECT(GTK_SAT_SELECTOR(widget)->search), "icon-release", G_CALLBACK(search_icon_clicked), NULL); /* create list and model */ create_and_fill_models(selector); model = GTK_TREE_MODEL(g_slist_nth_data(selector->models, 0)); /* sort the tree by name */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(model), GTK_SAT_SELECTOR_COL_NAME, row_compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), GTK_SAT_SELECTOR_COL_NAME, GTK_SORT_ASCENDING); /*create a filtering tree */ filter = gtk_tree_model_filter_new(model, NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(filter), (GtkTreeModelFilterVisibleFunc) sat_filter_func, GTK_SAT_SELECTOR(widget)->search, NULL); selector->tree = gtk_tree_view_new_with_model(filter); g_signal_connect(G_OBJECT(GTK_SAT_SELECTOR(widget)->search), "changed", G_CALLBACK(entry_changed_cb), GTK_TREE_VIEW(selector->tree)); g_object_unref(model); /* we can now connect combobox signal handler */ g_signal_connect(GTK_SAT_SELECTOR(widget)->groups, "changed", G_CALLBACK(group_selected_cb), widget); /* create tree view columns */ /* label column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Available Satellites"), renderer, "text", GTK_SAT_SELECTOR_COL_NAME, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(selector->tree), column, -1); if (!(flags & GTK_SAT_SELECTOR_FLAG_NAME)) gtk_tree_view_column_set_visible(column, FALSE); /* catalogue number */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Catnum"), renderer, "text", GTK_SAT_SELECTOR_COL_CATNUM, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(selector->tree), column, -1); if (!(flags & GTK_SAT_SELECTOR_FLAG_CATNUM)) gtk_tree_view_column_set_visible(column, FALSE); /* epoch */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Updated"), renderer, "text", GTK_SAT_SELECTOR_COL_EPOCH, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, epoch_cell_data_function, GUINT_TO_POINTER (GTK_SAT_SELECTOR_COL_EPOCH), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(selector->tree), column, -1); if (!(flags & GTK_SAT_SELECTOR_FLAG_EPOCH)) gtk_tree_view_column_set_visible(column, FALSE); /* "row-activated" signal is used to catch double click events, which means a satellite has been selected. */ g_signal_connect(selector->tree, "row-activated", G_CALLBACK(row_activated_cb), selector); /* scrolled window */ GTK_SAT_SELECTOR(widget)->swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (GTK_SAT_SELECTOR(widget)->swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(GTK_SAT_SELECTOR(widget)->swin), GTK_SAT_SELECTOR(widget)->tree); /* frame around the scrolled window */ frame = gtk_frame_new(NULL); gtk_container_add(GTK_CONTAINER(frame), GTK_SAT_SELECTOR(widget)->swin); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_box_pack_start(GTK_BOX(vbox), GTK_SAT_SELECTOR(widget)->search, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_SAT_SELECTOR(widget)->groups, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widget), vbox, TRUE, TRUE, 0); gtk_widget_show_all(widget); return widget; } /** * Load satellites from a .cat file * * @param selector Pointer to the GtkSatSelector * @param fname The name of the .cat file (name only, no path) * * This function is used to encapsulate reading the clear text name and the contents * of a .cat file. It is used for building the satellite tree store models */ static void load_cat_file(GtkSatSelector * selector, const gchar * fname) { GIOChannel *catfile; GError *error = NULL; GtkListStore *store; /* the list store data structure */ GtkTreeIter node; /* new top level node added to the tree store */ gchar *path; gchar *buff; sat_t sat; gint catnum; guint num = 0; /* .cat files contains clear text category name in the first line then one satellite catalog number per line */ path = sat_file_name(fname); catfile = g_io_channel_new_file(path, "r", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to open %s: %s"), __FILE__, __func__, fname, error->message); g_clear_error(&error); } else { /* read first line => category name */ if (g_io_channel_read_line(catfile, &buff, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) { g_strstrip(buff); /* removes trailing newline */ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (selector->groups), buff); g_free(buff); /* we can safely create the liststore for this category */ store = gtk_list_store_new(GTK_SAT_SELECTOR_COL_NUM, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_DOUBLE, // epoch G_TYPE_BOOLEAN // selected ); selector->models = g_slist_append(selector->models, store); /* Remaining lines are catalog numbers for satellites. Read line by line until the first error, which hopefully is G_IO_STATUS_EOF */ while (g_io_channel_read_line(catfile, &buff, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) { /* stip trailing EOL */ g_strstrip(buff); /* catalog number to integer */ catnum = (gint) g_ascii_strtoll(buff, NULL, 0); /* try to read satellite data */ if (gtk_sat_data_read_sat(catnum, &sat)) { /* error */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Error reading satellite %d (%s)"), __FILE__, __func__, catnum, fname); } else { /* insert satellite into liststore */ gtk_list_store_append(store, &node); gtk_list_store_set(store, &node, GTK_SAT_SELECTOR_COL_NAME, sat.nickname, GTK_SAT_SELECTOR_COL_CATNUM, catnum, GTK_SAT_SELECTOR_COL_EPOCH, sat.jul_epoch, GTK_SAT_SELECTOR_COL_SELECTED, FALSE, -1); g_free(sat.name); g_free(sat.nickname); num++; } g_free(buff); } sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: Read %d satellites from %s"), __FILE__, __func__, num, fname); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to read %s"), __FILE__, __func__, fname); } } g_free(path); g_io_channel_shutdown(catfile, TRUE, NULL); } /** * Load category name from a .cat file * * @param fname The name of the .cat file (name only, no path) * * This function is a stripped down version of load_cat_file. It * is needed to load the category name to created a sorted list * of category names. With the existing user base already having * .cat files in their directories, use of the file name directly * for sorting will have problems. */ static gchar *load_cat_file_cat(const gchar * fname) { GIOChannel *catfile; GError *error = NULL; gchar *path = NULL; gchar *buff = NULL; /* .cat files contains clear text category name in the first line then one satellite catalog number per line */ path = sat_file_name(fname); catfile = g_io_channel_new_file(path, "r", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to open %s: %s"), __FILE__, __func__, fname, error->message); g_clear_error(&error); } else { /* read first line => category name */ if (g_io_channel_read_line(catfile, &buff, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) { g_strstrip(buff); /* removes trailing newline */ } } g_free(path); g_io_channel_shutdown(catfile, TRUE, NULL); return buff; } /* this is a quick function that loads the category name from two cat files and compares them. */ static gint cat_file_compare(const gchar * a, const gchar * b) { gchar *cat_a, *cat_b; gint temp; cat_a = load_cat_file_cat(a); cat_b = load_cat_file_cat(b); temp = gpredict_strcmp(cat_a, cat_b); g_free(cat_a); g_free(cat_b); return (temp); } /** * Create and fill data store models. * * @param selector Pointer to the GtkSatSelector widget * * this fuinction scan for satellite data and stores them in tree models * that can be displayed in a tree view. The scan is performed in two iterations: * * (1) First, all .sat files are scanned, read and added to a pseudo-group called * "all" satellites. * (2) After the first scane, the function scans and reads .cat files and creates * the groups accordingly. * * For each group (including the "all" group) and entry is added to the * selector->groups GtkComboBox, where the index of the entry corresponds to * the index of the group model in selector->models. */ static void create_and_fill_models(GtkSatSelector * selector) { GtkListStore *store; /* the list store data structure */ GtkTreeIter node; /* new top level node added to the tree store */ GDir *dir; gchar *dirname; sat_t sat; gint catnum; gchar **buffv; const gchar *fname; gchar *nfname; guint num = 0; gint i, n; GSList *cats = NULL; /* load all satellites into selector->models[0] */ store = gtk_list_store_new(GTK_SAT_SELECTOR_COL_NUM, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_DOUBLE, // epoch G_TYPE_BOOLEAN // selected ); selector->models = g_slist_append(selector->models, store); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(selector->groups), _("All satellites")); gtk_combo_box_set_active(GTK_COMBO_BOX(selector->groups), 0); dirname = get_satdata_dir(); dir = g_dir_open(dirname, 0, NULL); if (!dir) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to open satdata directory %s."), __FILE__, __func__, dirname); g_free(dirname); return; } /* Scan data directory for .sat files. For each file scan through the file and add entry to the tree. */ while ((fname = g_dir_read_name(dir))) { if (g_str_has_suffix(fname, ".sat")) { buffv = g_strsplit(fname, ".", 0); catnum = (gint) g_ascii_strtoll(buffv[0], NULL, 0); if (gtk_sat_data_read_sat(catnum, &sat)) { /* error */ } else { /* read satellite */ gtk_list_store_append(store, &node); gtk_list_store_set(store, &node, GTK_SAT_SELECTOR_COL_NAME, sat.nickname, GTK_SAT_SELECTOR_COL_CATNUM, catnum, GTK_SAT_SELECTOR_COL_EPOCH, sat.jul_epoch, GTK_SAT_SELECTOR_COL_SELECTED, FALSE, -1); g_free(sat.name); g_free(sat.nickname); num++; } g_strfreev(buffv); } } sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: Read %d satellites into MAIN group."), __FILE__, __func__, num); /* load satellites from each .cat file into selector->models[i] */ g_dir_rewind(dir); while ((fname = g_dir_read_name(dir))) { if (g_str_has_suffix(fname, ".cat")) { cats = g_slist_insert_sorted(cats, g_strdup(fname), (GCompareFunc) cat_file_compare); } } /*now load them into the combo box */ n = g_slist_length(cats); for (i = 0; i < n; i++) { nfname = g_slist_nth_data(cats, i); if (nfname) { load_cat_file(selector, nfname); } g_free(nfname); } g_slist_free(cats); g_dir_close(dir); g_free(dirname); } /** * Get information about the selected satellite. * * @param selector Pointer to the GtkSatSelector widget. * @param catnum Location where catnum will be stored (may be NULL). * @param satname Location where the satellite name will be stored. May NOT be NULL. Must be g_freed after use. * @param epoch Location where the satellite Epoch will be stored (may be NULL); * * This function can be used to retrieve information about the currently selected satellite * a GtkSatSelector widget, e.g. after the "sat-activated" signal has been emitted. */ void gtk_sat_selector_get_selected(GtkSatSelector * selector, gint * catnum, gchar ** satname, gdouble * epoch) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; gboolean haveselection = FALSE; /* this flag is set to TRUE if there is a selection */ gchar *l_satname; /* nickname of the selected satellite */ gint l_catnum; /* catalog number of the selected satellite */ gdouble l_epoch; /* TLE epoch of the selected satellite */ /* selector can not be NULL */ g_return_if_fail((selector != NULL) && (satname != NULL)); /* get the selected row in the treeview */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selector->tree)); haveselection = gtk_tree_selection_get_selected(selection, &model, &iter); if (haveselection) { /* get the name and catalog number of the selected saetllite */ gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_NAME, &l_satname, GTK_SAT_SELECTOR_COL_CATNUM, &l_catnum, GTK_SAT_SELECTOR_COL_EPOCH, &l_epoch, -1); if (catnum != NULL) *catnum = l_catnum; *satname = g_strdup(l_satname); if (epoch != NULL) *epoch = l_epoch; g_free(l_satname); } } /** * Get the latest EPOCH of the satellites that are loaded into the GtkSatSelector. * * @param selector Pointer to the GtkSatSelector widget. * @return The latest EPOCH or 0.0 in case an error occurs. */ gdouble gtk_sat_selector_get_latest_epoch(GtkSatSelector * selector) { GtkTreeModel *model; GtkTreeIter iter; gdouble epoch = 0.0; gdouble thisepoch; gint i, n; g_return_val_if_fail(selector != 0 && IS_GTK_SAT_SELECTOR(selector), 0.0); /* get the tree model that contains all satellites */ model = GTK_TREE_MODEL(g_slist_nth_data(selector->models, 0)); n = gtk_tree_model_iter_n_children(model, NULL); /* loop over each satellite in the model and store the newest EPOCH */ for (i = 0; i < n; i++) { if G_LIKELY (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_EPOCH, &thisepoch, -1); if (thisepoch > epoch) epoch = thisepoch; } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error getting %dth satellite"), __func__, i); } } return epoch; } /** * Search through all the models for the given satellite and set its selected value. * * @param *selector is the selector that contains the models * @param catnr is the catalog number of satellite. * @param val is true or false depending on whether that satellite is selected or not. */ static void gtk_sat_selector_mark_engine(GtkSatSelector * selector, gint catnr, gboolean val) { gint n, k; gint nummodels, numiters; gint catnumscratch; GtkTreeModel *model; GtkTreeIter iter; nummodels = g_slist_length(selector->models); for (n = 0; n < nummodels; n++) { model = GTK_TREE_MODEL(g_slist_nth_data(selector->models, n)); numiters = gtk_tree_model_iter_n_children(model, NULL); for (k = 0; k < numiters; k++) { if (G_LIKELY(gtk_tree_model_iter_nth_child(model, &iter, NULL, k))) { gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnumscratch, -1); if (catnumscratch == catnr) { gtk_list_store_set(GTK_LIST_STORE(model), &iter, GTK_SAT_SELECTOR_COL_SELECTED, val, -1); } } } } } /** * Search the models for the satellite and set SELECTED to TRUE. * * @param *selector is the selector that contains the models * @param catnr is the catalog number of satellite. */ void gtk_sat_selector_mark_selected(GtkSatSelector * selector, gint catnr) { gtk_sat_selector_mark_engine(selector, catnr, TRUE); } /** * Searches the models for the satellite and sets SELECTED to FALSE. * * @param *selector is the selector that contains the models * @param catnr is the catalog number of satellite. * */ void gtk_sat_selector_mark_unselected(GtkSatSelector * selector, gint catnr) { gtk_sat_selector_mark_engine(selector, catnr, FALSE); } gpredict/src/gtk-sat-selector.h000066400000000000000000000064251427377236300170340ustar00rootroot00000000000000#ifndef __GTK_SAT_SELECTOR_H__ #define __GTK_SAT_SELECTOR_H__ 1 #include /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ /** Column definitions in the tree. */ typedef enum { GTK_SAT_SELECTOR_COL_NAME = 0, /*!< Satellite name. */ GTK_SAT_SELECTOR_COL_CATNUM, /*!< Catalogue Number. */ GTK_SAT_SELECTOR_COL_EPOCH, /*!< Element set epoch. */ GTK_SAT_SELECTOR_COL_SELECTED, /*!< Track whether element is selected. */ GTK_SAT_SELECTOR_COL_NUM /*!< The number of columns. */ } gtk_sat_selector_col_t; /** Flags used to indicate which columns should be visible. */ typedef enum { GTK_SAT_SELECTOR_FLAG_NAME = 1 << GTK_SAT_SELECTOR_COL_NAME, /*!< Satellite name. */ GTK_SAT_SELECTOR_FLAG_CATNUM = 1 << GTK_SAT_SELECTOR_COL_CATNUM, /*!< Catalogue Number. */ GTK_SAT_SELECTOR_FLAG_EPOCH = 1 << GTK_SAT_SELECTOR_COL_EPOCH, /*!< Element set epoch. */ GTK_SAT_SELECTOR_FLAG_SELECTED = 1 << GTK_SAT_SELECTOR_COL_SELECTED, /*!< Item selected or not. */ } gtk_sat_selector_flag_t; #define GTK_SAT_SELECTOR_DEFAULT_FLAGS (GTK_SAT_SELECTOR_FLAG_NAME | GTK_SAT_SELECTOR_FLAG_CATNUM) #define GTK_TYPE_SAT_SELECTOR (gtk_sat_selector_get_type ()) #define GTK_SAT_SELECTOR(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_sat_selector_get_type (),\ GtkSatSelector) #define GTK_SAT_SELECTOR_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_sat_selector_get_type (),\ GtkSatSelectorClass) #define IS_GTK_SAT_SELECTOR(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_selector_get_type ()) /** The GtkSatSelector structure */ typedef struct _gtk_sat_selector GtkSatSelector; typedef struct _GtkSatSelectorClass GtkSatSelectorClass; /** The GtkSatSelector Structure definition */ struct _gtk_sat_selector { GtkBox box; GtkWidget *tree; /*!< The tree. */ GtkWidget *swin; /*!< Scrolled window. */ guint flags; /*!< Column visibility flags. */ GtkWidget *groups; /*!< Combo box for selecting satellite group. */ GtkWidget *search; /*!< Text entry for searching. */ GSList *models; /*!< List of models with index corresponding to groups. */ }; struct _GtkSatSelectorClass { GtkVBoxClass parent_class; void (*gtksatselector) (GtkSatSelector * sel); }; GType gtk_sat_selector_get_type(void); GtkWidget *gtk_sat_selector_new(guint flags); guint32 gtk_sat_selector_get_flags(GtkSatSelector * selector); void gtk_sat_selector_get_selected(GtkSatSelector * selector, gint * catnum, gchar ** satname, gdouble * epoch); gdouble gtk_sat_selector_get_latest_epoch(GtkSatSelector * selector); void gtk_sat_selector_mark_selected(GtkSatSelector * selector, gint catnum); void gtk_sat_selector_mark_unselected(GtkSatSelector * selector, gint catnum); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif gpredict/src/gtk-sat-tree.c000066400000000000000000000630121427377236300161410ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2010 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "gtk-sat-tree.h" #include "sat-log.h" static void gtk_sat_tree_class_init(GtkSatTreeClass * class); static void gtk_sat_tree_init(GtkSatTree * sat_tree); static void gtk_sat_tree_destroy(GtkObject * object); static GtkTreeModel *create_and_fill_model(guint flags); static void column_toggled(GtkCellRendererToggle * cell, gchar * path_str, gpointer data); static gint scan_tle_file(const gchar * path, GtkTreeStore * store, GtkTreeIter * node); static gboolean check_and_select_sat(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); static gboolean uncheck_sat(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); static gint compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata); static void expand_cb(GtkWidget * button, gpointer tree); static void collapse_cb(GtkWidget * button, gpointer tree); static GtkVBoxClass *parent_class = NULL; GType gtk_sat_tree_get_type() { static GType gtk_sat_tree_type = 0; if (!gtk_sat_tree_type) { static const GTypeInfo gtk_sat_tree_info = { sizeof(GtkSatTreeClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_sat_tree_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkSatTree), 1, /* n_preallocs */ (GInstanceInitFunc) gtk_sat_tree_init, NULL }; gtk_sat_tree_type = g_type_register_static(GTK_TYPE_VBOX, "GtkSatTree", >k_sat_tree_info, 0); } return gtk_sat_tree_type; } static void gtk_sat_tree_class_init(GtkSatTreeClass * class) { GObjectClass *gobject_class; GtkObjectClass *object_class; GtkWidgetClass *widget_class; GtkContainerClass *container_class; gobject_class = G_OBJECT_CLASS(class); object_class = (GtkObjectClass *) class; widget_class = (GtkWidgetClass *) class; container_class = (GtkContainerClass *) class; parent_class = g_type_class_peek_parent(class); object_class->destroy = gtk_sat_tree_destroy; } static void gtk_sat_tree_init(GtkSatTree * sat_tree) { (void)sat_tree; } static void gtk_sat_tree_destroy(GtkObject * object) { GtkSatTree *sat_tree = GTK_SAT_TREE(object); /* clear list of selected satellites */ /* crashes on 2. instance: g_slist_free (sat_tree->selection); */ guint n, i; gpointer data; n = g_slist_length(sat_tree->selection); for (i = 0; i < n; i++) { /* get the first element and delete it */ data = g_slist_nth_data(sat_tree->selection, 0); sat_tree->selection = g_slist_remove(sat_tree->selection, data); } (*GTK_OBJECT_CLASS(parent_class)->destroy) (object); } /** * Create a new GtkSatTree widget * * @param flags Flags indicating which columns should be visible * (see gtk_sat_tree_flag_t) * @return A GtkSatTree widget. */ GtkWidget *gtk_sat_tree_new(guint flags) { GtkWidget *widget; GtkSatTree *sat_tree; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkWidget *hbox; GtkWidget *expbut; GtkWidget *colbut; if (!flags) flags = GTK_SAT_TREE_DEFAULT_FLAGS; widget = g_object_new(GTK_TYPE_SAT_TREE, NULL); sat_tree = GTK_SAT_TREE(widget); sat_tree->flags = flags; /* create list and model */ sat_tree->tree = gtk_tree_view_new(); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(sat_tree->tree), TRUE); model = create_and_fill_model(flags); gtk_tree_view_set_model(GTK_TREE_VIEW(sat_tree->tree), model); g_object_unref(model); /* sort the tree by name */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(model), GTK_SAT_TREE_COL_NAME, compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), GTK_SAT_TREE_COL_NAME, GTK_SORT_ASCENDING); /* create tree view columns */ /* label column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Satellite"), renderer, "text", GTK_SAT_TREE_COL_NAME, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(sat_tree->tree), column, -1); if (!(flags & GTK_SAT_TREE_FLAG_NAME)) gtk_tree_view_column_set_visible(column, FALSE); /* catalogue number */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Catnum"), renderer, "text", GTK_SAT_TREE_COL_CATNUM, "visible", GTK_SAT_TREE_COL_VIS, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(sat_tree->tree), column, -1); if (!(flags & GTK_SAT_TREE_FLAG_CATNUM)) gtk_tree_view_column_set_visible(column, FALSE); /* epoch */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Epoch"), renderer, "text", GTK_SAT_TREE_COL_EPOCH, "visible", GTK_SAT_TREE_COL_VIS, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(sat_tree->tree), column, -1); if (!(flags & GTK_SAT_TREE_FLAG_EPOCH)) gtk_tree_view_column_set_visible(column, FALSE); /* checkbox column */ renderer = gtk_cell_renderer_toggle_new(); sat_tree->handler_id = g_signal_connect(renderer, "toggled", G_CALLBACK(column_toggled), widget); column = gtk_tree_view_column_new_with_attributes(_("Selected"), renderer, "active", GTK_SAT_TREE_COL_SEL, "visible", GTK_SAT_TREE_COL_VIS, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(sat_tree->tree), column); gtk_tree_view_column_set_alignment(column, 0.5); if (!(flags & GTK_SAT_TREE_FLAG_SEL)) gtk_tree_view_column_set_visible(column, FALSE); /* scrolled window */ GTK_SAT_TREE(widget)->swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (GTK_SAT_TREE(widget)->swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(GTK_SAT_TREE(widget)->swin), GTK_SAT_TREE(widget)->tree); //gtk_container_add (GTK_CONTAINER (widget), GTK_SAT_TREE (widget)->swin); gtk_box_pack_start(GTK_BOX(widget), GTK_SAT_TREE(widget)->swin, TRUE, TRUE, 0); /* expand and collabse buttons */ expbut = gtk_button_new_with_label(_("Expand")); gtk_widget_set_tooltip_text(expbut, _ ("Expand all nodes in the tree to make it searchable")); g_signal_connect(expbut, "clicked", G_CALLBACK(expand_cb), sat_tree); colbut = gtk_button_new_with_label(_("Collapse")); gtk_widget_set_tooltip_text(colbut, _("Collapse all nodes in the tree")); g_signal_connect(colbut, "clicked", G_CALLBACK(collapse_cb), sat_tree); hbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_START); gtk_box_pack_start(GTK_BOX(hbox), expbut, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), colbut, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widget), hbox, FALSE, FALSE, 5); gtk_widget_show_all(widget); /* initialise selection */ GTK_SAT_TREE(widget)->selection = NULL; return widget; } /** FIXME: flags not needed here */ static GtkTreeModel *create_and_fill_model(guint flags) { GtkTreeStore *store; /* the list store data structure */ GtkTreeIter node; /* new top level node added to the tree store */ GDir *dir; gchar *dirname; gchar *path; gchar *nodename; gchar **buffv; const gchar *fname; guint num = 0; (void)flags; /* create a new tree store */ store = gtk_tree_store_new(GTK_SAT_TREE_COL_NUM, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_STRING, // epoch G_TYPE_BOOLEAN, // selected G_TYPE_BOOLEAN // visible ); dirname = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, ".gpredict2", G_DIR_SEPARATOR_S, "tle", NULL); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Directory is: %s"), __FILE__, __LINE__, dirname); dir = g_dir_open(dirname, 0, NULL); /* no tle files */ if (!dir) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: No .tle files found in %s."), __FILE__, __LINE__, dirname); g_free(dirname); return GTK_TREE_MODEL(store);; } /* Scan data directory for .tle files. For each file scan through the file and add entry to the tree. */ while ((fname = g_dir_read_name(dir))) { if (g_str_has_suffix(fname, ".tle")) { buffv = g_strsplit(fname, ".tle", 0); nodename = g_strdup(buffv[0]); nodename[0] = g_ascii_toupper(nodename[0]); /* create a new top level node in the tree */ gtk_tree_store_append(store, &node, NULL); gtk_tree_store_set(store, &node, GTK_SAT_TREE_COL_NAME, nodename, GTK_SAT_TREE_COL_VIS, FALSE, -1); /* build full path til file and sweep it for sats */ path = g_strconcat(dirname, G_DIR_SEPARATOR_S, fname, NULL); num = scan_tle_file(path, store, &node); g_free(path); g_free(nodename); g_strfreev(buffv); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Read %d sats from %s "), __FILE__, __LINE__, num, fname); } } g_dir_close(dir); g_free(dirname); return GTK_TREE_MODEL(store); } /** * Scan .tle file and add satellites to GtkTreeStore. * * @param path Full path of the tle file. * @param store The GtkTreeStore to store the satellites into. * @param node The parent node for the satellites * @return The number of satellites that have been read into the tree. */ static gint scan_tle_file(const gchar * path, GtkTreeStore * store, GtkTreeIter * node) { guint i = 0; guint j; GIOChannel *tlefile; GError *error = NULL; GtkTreeIter sat_iter; gchar *line; gsize length; gchar catstr[6]; gchar *satnam; guint catnum; /* open IO channel and read 3 lines at a time */ tlefile = g_io_channel_new_file(path, "r", &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open %s (%s)"), __FILE__, __LINE__, path, error->message); g_clear_error(&error); } else if (tlefile) { /*** FIXME: More error handling please */ while (g_io_channel_read_line(tlefile, &line, &length, NULL, NULL) != G_IO_STATUS_EOF) { /* satellite name can be found in the first line */ satnam = g_strdup(line); g_strchomp(satnam); /* free allocated line */ g_free(line); /* extract catnum from second line; index 2..6 */ g_io_channel_read_line(tlefile, &line, &length, NULL, NULL); for (j = 2; j < 7; j++) { catstr[j - 2] = line[j]; } catstr[5] = '\0'; catnum = (guint) g_ascii_strtod(catstr, NULL); /* insert satnam and catnum */ gtk_tree_store_append(store, &sat_iter, node); gtk_tree_store_set(store, &sat_iter, GTK_SAT_TREE_COL_NAME, satnam, GTK_SAT_TREE_COL_CATNUM, catnum, GTK_SAT_TREE_COL_SEL, FALSE, GTK_SAT_TREE_COL_VIS, TRUE, -1); g_free(satnam); g_free(line); /* read the third line */ g_io_channel_read_line(tlefile, &line, &length, NULL, NULL); g_free(line); i++; } /* close IO channel; don't care about status */ g_io_channel_shutdown(tlefile, TRUE, NULL); g_io_channel_unref(tlefile); } return i; } /** * Manage toggle signals. * * @param cell cell. * @param path_str Path string. * @param data Pointer to the GtkSatTree widget. * * This function is called when the user toggles the visibility for a column. * It will add or remove the toggled satellite from the list of selected sats. */ static void column_toggled(GtkCellRendererToggle * cell, gchar * path_str, gpointer data) { GtkSatTree *sat_tree = GTK_SAT_TREE(data); GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(sat_tree->tree)); GtkTreePath *path = gtk_tree_path_new_from_string(path_str); GtkTreeIter iter; gboolean toggle_item; guint catnum; (void)cell; /* get toggled iter */ gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, GTK_SAT_TREE_COL_CATNUM, &catnum, GTK_SAT_TREE_COL_SEL, &toggle_item, -1); /* do something with the value */ toggle_item ^= 1; if (toggle_item) { /* only append if sat not already in list */ if (!g_slist_find(sat_tree->selection, GUINT_TO_POINTER(catnum))) { sat_tree->selection = g_slist_append(sat_tree->selection, GUINT_TO_POINTER(catnum)); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Satellite %d selected."), __FILE__, __LINE__, catnum); /* Scan the tree for other instances of this sat. For example is CUTE-1.7 present in both AMATEUR and CUBESAT. We will need access to both the sat_tree and the catnum in the foreach callback, so we attach catnum as data to the sat_tree */ g_object_set_data(G_OBJECT(sat_tree), "tmp", GUINT_TO_POINTER(catnum)); /* find the satellite in the tree */ gtk_tree_model_foreach(model, check_and_select_sat, sat_tree); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Satellite %d already selected; skip..."), __FILE__, __LINE__, catnum); } } else { sat_tree->selection = g_slist_remove(sat_tree->selection, GUINT_TO_POINTER(catnum)); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Satellite %d de-selected."), __FILE__, __LINE__, catnum); /* Scan the tree for other instances of this sat. For example is CUTE-1.7 present in both AMATEUR and CUBESAT. We will need access to both the sat_tree and the catnum in the foreach callback, so we attach catnum as data to the sat_tree */ g_object_set_data(G_OBJECT(sat_tree), "tmp", GUINT_TO_POINTER(catnum)); /* find the satellite in the tree */ gtk_tree_model_foreach(model, uncheck_sat, sat_tree); } /* set new value */ gtk_tree_store_set(GTK_TREE_STORE(model), &iter, GTK_SAT_TREE_COL_SEL, toggle_item, -1); gtk_tree_path_free(path); } /** * Select a satellite in the GtkSatTree. * * @param sat_tree The GtkSatTree widget. * @param catnum Catalogue number of satellite to be selected. */ void gtk_sat_tree_select(GtkSatTree * sat_tree, guint catnum) { /* sanity check */ if ((sat_tree == NULL) || !IS_GTK_SAT_TREE(sat_tree)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid GtkSatTree!"), __func__); return; } if (!g_slist_find(sat_tree->selection, GUINT_TO_POINTER(catnum))) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(sat_tree->tree)); /* we will need access to both the sat_tree and the catnum in the foreach callback, so we attach catnum as data to the sat_tree */ g_object_set_data(G_OBJECT(sat_tree), "tmp", GUINT_TO_POINTER(catnum)); /* find the satellite in the tree */ gtk_tree_model_foreach(model, check_and_select_sat, sat_tree); } else { /* else do nothing since the sat is already selected */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Satellite %d already selected; skip..."), __func__, catnum); } } /** * Foreach callback for checking and selecting a satellite. * * @param model The GtkTreeModel. * @param path The GtkTreePath of the current item. * @param iter The GtkTreeIter of the current item. * @param data Pointer to the GtkSatTree structure. * @return Always FALSE to let the for-each run to till end. * * This function is used as foreach-callback in the gtk_sat_tree_select function. * The purpoise of the function is to set the check box to chacked state and add * the satellite in question to the selection list. The catalogue number of the * satellite to be selected is attached as data to the GtkSatTree (key = tmp). * * The function is also used in the column_toggled callback function with the * purpose of locating and selecting other instances of the satellite than the * one, on which the user clicked on (meaning: some sats can be found in several * TLE file and we want to chak them all, not just the clicked instance). */ static gboolean check_and_select_sat(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { GtkSatTree *sat_tree = GTK_SAT_TREE(data); guint cat1, cat2; (void)path; cat1 = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(data), "tmp")); gtk_tree_model_get(model, iter, GTK_SAT_TREE_COL_CATNUM, &cat2, -1); if (cat1 == cat2) { /* we have a match */ gtk_tree_store_set(GTK_TREE_STORE(model), iter, GTK_SAT_TREE_COL_SEL, TRUE, -1); /* only append if sat not already in list */ if (!g_slist_find(sat_tree->selection, GUINT_TO_POINTER(cat1))) { sat_tree->selection = g_slist_append(sat_tree->selection, GUINT_TO_POINTER(cat1)); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Satellite %d selected."), __FILE__, __LINE__, cat1); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Satellite %d already selected; skip..."), __FILE__, __LINE__, cat1); } /* If we return TRUE here, the foreach would terminate. We let it run to allow GtkSatTree to mark all instances of sat the satellite (some sats may be present in two or more .tle files. */ //return TRUE; } /* continue in order to catch ALL instances of sat */ return FALSE; } /** * Foreach callback for unchecking a satellite. * * @param model The GtkTreeModel. * @param path The GtkTreePath of the current item. * @param iter The GtkTreeIter of the current item. * @param data Pointer to the GtkSatTree structure. * @return Always FALSE to let the for-each run to till end. * * This function is very similar to the check_and_select callback except that it * is used only to uncheck a deselected satellite. */ static gboolean uncheck_sat(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { guint cat1, cat2; (void)path; cat1 = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(data), "tmp")); gtk_tree_model_get(model, iter, GTK_SAT_TREE_COL_CATNUM, &cat2, -1); if (cat1 == cat2) { /* we have a match */ gtk_tree_store_set(GTK_TREE_STORE(model), iter, GTK_SAT_TREE_COL_SEL, FALSE, -1); } /* continue in order to catch ALL instances of sat */ return FALSE; } /** * Get list of selected satellites. * * @param sat_tree The GtkSatTree * @param size Return location for number of selected sats. * @return A newly allocated array containing the selected satellites or * NULL if no satellites are selected. * * The returned array should be g_freed when no longer needed. */ guint *gtk_sat_tree_get_selected(GtkSatTree * sat_tree, gsize * size) { guint i; gsize s; guint *ret; /* sanity check */ if ((sat_tree == NULL) || !IS_GTK_SAT_TREE(sat_tree)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid GtkSatTree!"), __func__); return NULL; } /* parameter are ok */ s = g_slist_length(sat_tree->selection); if (s < 1) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: There are no satellites selected => NULL."), __func__); *size = 0; return NULL; } ret = (guint *) g_try_malloc(s * sizeof(guint)); for (i = 0; i < s; i++) { ret[i] = GPOINTER_TO_UINT(g_slist_nth_data(sat_tree->selection, i)); } if (size != NULL) *size = s; return ret; } /** * Compare two rows of the GtkSatTree. * * @param model The tree model of the GtkSatTree. * @param a The first row. * @param b The second row. * @param userdata Not used. * * This function is used by the sorting algorithm to compare two rows of the * GtkSatTree widget. The unctions works by comparing the character strings * in the name column. */ static gint compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata) { gchar *sat1, *sat2; gint ret = 0; (void)userdata; gtk_tree_model_get(model, a, GTK_SAT_TREE_COL_NAME, &sat1, -1); gtk_tree_model_get(model, b, GTK_SAT_TREE_COL_NAME, &sat2, -1); ret = g_ascii_strcasecmp(sat1, sat2); g_free(sat1); g_free(sat2); return ret; } /** * Expand all nodes in the GtkSatTree. * * @param button The GtkButton that received the signal. * @param tree Pointer to the GtkSatTree widget. * * This function expands all rows in the tree view in order to make it * searchable. */ static void expand_cb(GtkWidget * button, gpointer tree) { (void)button; gtk_tree_view_expand_all(GTK_TREE_VIEW(GTK_SAT_TREE(tree)->tree)); } /** * Collapse all nodes in the GtkSatTree. * * @param button The GtkButton that received the signal. * @param tree Pointer to the GtkSatTree widget. * * This function collapses all rows in the tree view. */ static void collapse_cb(GtkWidget * button, gpointer tree) { (void)button; gtk_tree_view_collapse_all(GTK_TREE_VIEW(GTK_SAT_TREE(tree)->tree)); } gpredict/src/gtk-sat-tree.h000066400000000000000000000071671427377236300161570ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_SAT_TREE_H__ #define __GTK_SAT_TREE_H__ 1 #include #include "gtk-sat-list.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ /** Column definitions in the tree. */ typedef enum { GTK_SAT_TREE_COL_NAME = 0, /*!< Satellite name. */ GTK_SAT_TREE_COL_CATNUM, /*!< Catalogue Number. */ GTK_SAT_TREE_COL_EPOCH, /*!< Element set epoch. */ GTK_SAT_TREE_COL_SEL, /*!< Checkbox column, ie select satellite. */ GTK_SAT_TREE_COL_VIS, /*!< Hidden column used to node visibility */ GTK_SAT_TREE_COL_NUM /*!< The number of columns. */ } gtk_sat_tree_col_t; /** Flags used to indicate which columns should be visible. */ typedef enum { GTK_SAT_TREE_FLAG_NAME = 1 << GTK_SAT_TREE_COL_NAME, /*!< Satellite name. */ GTK_SAT_TREE_FLAG_CATNUM = 1 << GTK_SAT_TREE_COL_CATNUM, /*!< Catalogue Number. */ GTK_SAT_TREE_FLAG_EPOCH = 1 << GTK_SAT_TREE_COL_EPOCH, /*!< Element set epoch. */ GTK_SAT_TREE_FLAG_SEL = 1 << GTK_SAT_TREE_COL_SEL /*!< Checkbox column. */ } gtk_sat_tree_flag_t; #define GTK_SAT_TREE_DEFAULT_FLAGS (GTK_SAT_TREE_FLAG_NAME | GTK_SAT_TREE_FLAG_SEL) #define GTK_TYPE_SAT_TREE (gtk_sat_tree_get_type ()) #define GTK_SAT_TREE(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_sat_tree_get_type (),\ GtkSatTree) #define GTK_SAT_TREE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_sat_tree_get_type (),\ GtkSatTreeClass) #define IS_GTK_SAT_TREE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sat_tree_get_type ()) /** The GtkSatTree structure */ typedef struct _gtk_sat_tree GtkSatTree; typedef struct _GtkSatTreeClass GtkSatTreeClass; /** The GtkSatTree Structure definition */ struct _gtk_sat_tree { GtkVBox vbox; GtkWidget *tree; /*!< The tree. */ GtkWidget *swin; /*!< Scrolled window. */ guint flags; /*!< Column visibility flags. */ GSList *selection; /*!< List of selected satellites. */ gulong handler_id; /*!< Toggle signale handler ID (FIXME): remove. */ }; struct _GtkSatTreeClass { GtkVBoxClass parent_class; }; GType gtk_sat_tree_get_type(void); GtkWidget *gtk_sat_tree_new(guint flags); guint32 gtk_sat_tree_get_flags(GtkSatTree * tree); void gtk_sat_tree_select(GtkSatTree * sat_tree, guint catnum); guint *gtk_sat_tree_get_selected(GtkSatTree * sat_tree, gsize * size); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif gpredict/src/gtk-single-sat.c000066400000000000000000000634371427377236300164760ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC 2011 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "gtk-sat-popup-common.h" #include "gtk-single-sat.h" #include "locator.h" #include "mod-cfg-get-param.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sat-vis.h" #include "sgpsdp/sgp4sdp4.h" #include "sat-pass-dialogs.h" #include "time-tools.h" /* Column titles indexed with column symb. refs. */ const gchar *SINGLE_SAT_FIELD_TITLE[SINGLE_SAT_FIELD_NUMBER] = { N_("Azimuth"), N_("Elevation"), N_("Direction"), N_("Right Asc."), N_("Declination"), N_("Slant Range"), N_("Range Rate"), N_("Next Event"), N_("Next AOS"), N_("Next LOS"), N_("SSP Lat."), N_("SSP Lon."), N_("SSP Loc."), N_("Footprint"), N_("Altitude"), N_("Velocity"), N_("Doppler@100M"), N_("Sig. Loss"), N_("Sig. Delay"), N_("Mean Anom."), N_("Orbit Phase"), N_("Orbit Num."), N_("Visibility") }; /* Column title hints indexed with column symb. refs. */ const gchar *SINGLE_SAT_FIELD_HINT[SINGLE_SAT_FIELD_NUMBER] = { N_("Azimuth of the satellite"), N_("Elevation of the satellite"), N_("Direction of the satellite"), N_("Right Ascension of the satellite"), N_("Declination of the satellite"), N_("The range between satellite and observer"), N_("The rate at which the Slant Range changes"), N_("The time of next AOS or LOS"), N_("The time of next AOS"), N_("The time of next LOS"), N_("Latitude of the sub-satellite point"), N_("Longitude of the sub-satellite point"), N_("Sub-Satellite Point as Maidenhead grid square"), N_("Diameter of the satellite footprint"), N_("Altitude of the satellite"), N_("Tangential velocity of the satellite"), N_("Doppler Shift @ 100MHz"), N_("Signal loss @ 100MHz"), N_("Signal Delay"), N_("Mean Anomaly"), N_("Orbit Phase"), N_("Orbit Number"), N_("Visibility of the satellite") }; static GtkBoxClass *parent_class = NULL; static void gtk_single_sat_destroy(GtkWidget * widget) { GtkSingleSat *ssat = GTK_SINGLE_SAT(widget); sat_t *sat = SAT(g_slist_nth_data(ssat->sats, ssat->selected)); if (sat != NULL) g_key_file_set_integer(ssat->cfgdata, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_SELECT, sat->tle.catnr); (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_single_sat_class_init(GtkSingleSatClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; widget_class->destroy = gtk_single_sat_destroy; parent_class = g_type_class_peek_parent(class); } static void gtk_single_sat_init(GtkSingleSat * list, gpointer g_class) { (void)list; (void)g_class; } /* Update a field in the GtkSingleSat view. */ static void update_field(GtkSingleSat * ssat, guint i) { sat_t *sat; gchar *buff = NULL; gchar tbuf[TIME_FORMAT_MAX_LENGTH]; gchar hmf = ' '; gdouble number; gint retcode; gchar *fmtstr; gchar *alstr; sat_vis_t vis; /* make some sanity checks */ if (ssat->labels[i] == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Can not update invisible field (I:%d F:%d)"), __FILE__, __LINE__, i, ssat->flags); return; } /* get selected satellite */ sat = SAT(g_slist_nth_data(ssat->sats, ssat->selected)); if (!sat) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Can not update non-existing sat"), __FILE__, __LINE__); return; } /* update requested field */ switch (i) { case SINGLE_SAT_FIELD_AZ: buff = g_strdup_printf("%6.2f\302\260", sat->az); break; case SINGLE_SAT_FIELD_EL: buff = g_strdup_printf("%6.2f\302\260", sat->el); break; case SINGLE_SAT_FIELD_DIR: if (sat->otype == ORBIT_TYPE_GEO) { buff = g_strdup("Geostationary"); } else if (decayed(sat)) { buff = g_strdup("Decayed"); } else if (sat->range_rate > 0.0) { /* Receding */ buff = g_strdup("Receding"); } else if (sat->range_rate < 0.0) { /* Approaching */ buff = g_strdup("Approaching"); } else { buff = g_strdup("N/A"); } break; case SINGLE_SAT_FIELD_RA: buff = g_strdup_printf("%6.2f\302\260", sat->ra); break; case SINGLE_SAT_FIELD_DEC: buff = g_strdup_printf("%6.2f\302\260", sat->dec); break; case SINGLE_SAT_FIELD_RANGE: if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) buff = g_strdup_printf("%.0f mi", KM_TO_MI(sat->range)); else buff = g_strdup_printf("%.0f km", sat->range); break; case SINGLE_SAT_FIELD_RANGE_RATE: if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) buff = g_strdup_printf("%.3f mi/sec", KM_TO_MI(sat->range_rate)); else buff = g_strdup_printf("%.3f km/sec", sat->range_rate); break; case SINGLE_SAT_FIELD_NEXT_EVENT: if (sat->aos > sat->los) { /* next event is LOS */ number = sat->los; alstr = g_strdup("LOS: "); } else { /* next event is AOS */ number = sat->aos; alstr = g_strdup("AOS: "); } if (number > 0.0) { /* format the number */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(tbuf, TIME_FORMAT_MAX_LENGTH, fmtstr, number); g_free(fmtstr); buff = g_strconcat(alstr, tbuf, NULL); } else { buff = g_strdup(_("N/A")); } g_free(alstr); break; case SINGLE_SAT_FIELD_AOS: if (sat->aos > 0.0) { /* format the number */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(tbuf, TIME_FORMAT_MAX_LENGTH, fmtstr, sat->aos); g_free(fmtstr); buff = g_strdup(tbuf); } else { buff = g_strdup(_("N/A")); } break; case SINGLE_SAT_FIELD_LOS: if (sat->los > 0.0) { fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(tbuf, TIME_FORMAT_MAX_LENGTH, fmtstr, sat->los); g_free(fmtstr); buff = g_strdup(tbuf); } else { buff = g_strdup(_("N/A")); } break; case SINGLE_SAT_FIELD_LAT: number = sat->ssplat; if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (number < 0.00) { number = -number; hmf = 'S'; } else { hmf = 'N'; } } buff = g_strdup_printf("%.2f\302\260%c", number, hmf); break; case SINGLE_SAT_FIELD_LON: number = sat->ssplon; if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (number < 0.00) { number = -number; hmf = 'W'; } else { hmf = 'E'; } } buff = g_strdup_printf("%.2f\302\260%c", number, hmf); break; case SINGLE_SAT_FIELD_SSP: /* SSP locator */ buff = g_try_malloc(7); retcode = longlat2locator(sat->ssplon, sat->ssplat, buff, 3); if (retcode == RIG_OK) { buff[6] = '\0'; } else { g_free(buff); buff = NULL; } break; case SINGLE_SAT_FIELD_FOOTPRINT: if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { buff = g_strdup_printf("%.0f mi", KM_TO_MI(sat->footprint)); } else { buff = g_strdup_printf("%.0f km", sat->footprint); } break; case SINGLE_SAT_FIELD_ALT: if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) buff = g_strdup_printf("%.0f mi", KM_TO_MI(sat->alt)); else buff = g_strdup_printf("%.0f km", sat->alt); break; case SINGLE_SAT_FIELD_VEL: if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) buff = g_strdup_printf("%.3f mi/sec", KM_TO_MI(sat->velo)); else buff = g_strdup_printf("%.3f km/sec", sat->velo); break; case SINGLE_SAT_FIELD_DOPPLER: number = -100.0e06 * (sat->range_rate / 299792.4580); // Hz buff = g_strdup_printf("%.0f Hz", number); break; case SINGLE_SAT_FIELD_LOSS: number = 72.4 + 20.0 * log10(sat->range); // dB buff = g_strdup_printf("%.2f dB", number); break; case SINGLE_SAT_FIELD_DELAY: number = sat->range / 299.7924580; // msec buff = g_strdup_printf("%.2f msec", number); break; case SINGLE_SAT_FIELD_MA: buff = g_strdup_printf("%.2f\302\260", sat->ma); break; case SINGLE_SAT_FIELD_PHASE: buff = g_strdup_printf("%.2f\302\260", sat->phase); break; case SINGLE_SAT_FIELD_ORBIT: buff = g_strdup_printf("%ld", sat->orbit); break; case SINGLE_SAT_FIELD_VISIBILITY: vis = get_sat_vis(sat, ssat->qth, sat->jul_utc); buff = vis_to_str(vis); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid field number (%d)"), __FILE__, __LINE__, i); break; } if (buff != NULL) { gtk_label_set_text(GTK_LABEL(ssat->labels[i]), buff); g_free(buff); } } static gint sat_name_compare(sat_t * a, sat_t * b) { return gpredict_strcmp(a->nickname, b->nickname); } /* Copy satellite from hash table to singly linked list. */ static void store_sats(gpointer key, gpointer value, gpointer user_data) { GtkSingleSat *single_sat = GTK_SINGLE_SAT(user_data); sat_t *sat = SAT(value); (void)key; single_sat->sats = g_slist_insert_sorted(single_sat->sats, sat, (GCompareFunc) sat_name_compare); } static void Calculate_RADec(sat_t * sat, qth_t * qth, obs_astro_t * obs_set) { /* Reference: Methods of Orbit Determination by */ /* Pedro Ramon Escobal, pp. 401-402 */ double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, Lz, cos_delta, sin_alpha, cos_alpha; geodetic_t geodetic; geodetic.lon = qth->lon * de2ra; geodetic.lat = qth->lat * de2ra; geodetic.alt = qth->alt / 1000.0; geodetic.theta = 0; az = sat->az * de2ra; el = sat->el * de2ra; phi = geodetic.lat; theta = FMod2p(ThetaG_JD(sat->jul_utc) + geodetic.lon); sin_theta = sin(theta); cos_theta = cos(theta); sin_phi = sin(phi); cos_phi = cos(phi); Lxh = -cos(az) * cos(el); Lyh = sin(az) * cos(el); Lzh = sin(el); Sx = sin_phi * cos_theta; Ex = -sin_theta; Zx = cos_theta * cos_phi; Sy = sin_phi * sin_theta; Ey = cos_theta; Zy = sin_theta * cos_phi; Sz = -cos_phi; Ez = 0; Zz = sin_phi; Lx = Sx * Lxh + Ex * Lyh + Zx * Lzh; Ly = Sy * Lxh + Ey * Lyh + Zy * Lzh; Lz = Sz * Lxh + Ez * Lyh + Zz * Lzh; obs_set->dec = ArcSin(Lz); /* Declination (radians) */ cos_delta = sqrt(1 - Sqr(Lz)); sin_alpha = Ly / cos_delta; cos_alpha = Lx / cos_delta; obs_set->ra = AcTan(sin_alpha, cos_alpha); /* Right Ascension (radians) */ obs_set->ra = FMod2p(obs_set->ra); } static void select_satellite(GtkWidget * menuitem, gpointer data) { GtkSingleSat *ssat = GTK_SINGLE_SAT(data); guint i = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(menuitem), "index")); gchar *title; sat_t *sat; /* there are many "ghost"-trigging of this signal, but we only need to make a new selection when the received menuitem is selected */ if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { ssat->selected = i; sat = SAT(g_slist_nth_data(ssat->sats, i)); title = g_markup_printf_escaped("%s", sat->nickname); gtk_label_set_markup(GTK_LABEL(ssat->header), title); g_free(title); } } /* Single sat options menu */ static void gtk_single_sat_popup_cb(GtkWidget * button, gpointer data) { GtkSingleSat *single_sat = GTK_SINGLE_SAT(data); GtkWidget *menu; GtkWidget *menuitem; GtkWidget *label; GSList *group = NULL; gchar *buff; sat_t *sat; sat_t *sati; /* used to create list of satellites */ guint i, n; sat = SAT(g_slist_nth_data(single_sat->sats, single_sat->selected)); if (sat == NULL) return; n = g_slist_length(single_sat->sats); menu = gtk_menu_new(); /* satellite name/info */ menuitem = gtk_menu_item_new(); label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); buff = g_markup_printf_escaped("%s", sat->nickname); gtk_label_set_markup(GTK_LABEL(label), buff); g_free(buff); gtk_container_add(GTK_CONTAINER(menuitem), label); /* attach data to menuitem and connect callback */ g_object_set_data(G_OBJECT(menuitem), "sat", sat); g_object_set_data(G_OBJECT(menuitem), "qth", single_sat->qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_sat_info_menu_cb), gtk_widget_get_toplevel(button)); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* add the menu items for current,next, and future passes. */ add_pass_menu_items(menu, sat, single_sat->qth, &single_sat->tstamp, data); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* select sat */ for (i = 0; i < n; i++) { sati = SAT(g_slist_nth_data(single_sat->sats, i)); menuitem = gtk_radio_menu_item_new_with_label(group, sati->nickname); group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); if (i == single_sat->selected) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE); /* store item index so that it is available in the callback */ g_object_set_data(G_OBJECT(menuitem), "index", GUINT_TO_POINTER(i)); g_signal_connect_after(menuitem, "activate", G_CALLBACK(select_satellite), single_sat); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gdk_event_get_time((GdkEvent *) NULL)); #else gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } /* Refresh internal references to the satellites. */ void gtk_single_sat_reload_sats(GtkWidget * single_sat, GHashTable * sats) { /* free GSlists */ g_slist_free(GTK_SINGLE_SAT(single_sat)->sats); GTK_SINGLE_SAT(single_sat)->sats = NULL; /* reload satellites */ g_hash_table_foreach(sats, store_sats, single_sat); } /* * Reload configuration. * * @param widget The GtkSingleSat widget. * @param newcfg The new configuration data for the module * @param sats The satellites. * @param local Flag indicating whether reconfiguration is requested from * local configuration dialog. */ void gtk_single_sat_reconf(GtkWidget * widget, GKeyFile * newcfg, GHashTable * sats, qth_t * qth, gboolean local) { guint32 fields; /* store pointer to new cfg data */ GTK_SINGLE_SAT(widget)->cfgdata = newcfg; /* get visible fields from new configuration */ fields = mod_cfg_get_int(newcfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_FIELDS, SAT_CFG_INT_SINGLE_SAT_FIELDS); if (fields != GTK_SINGLE_SAT(widget)->flags) GTK_SINGLE_SAT(widget)->flags = fields; /* if this is a local reconfiguration sats may have changed */ if (local) gtk_single_sat_reload_sats(widget, sats); /* QTH may have changed too since we have a default QTH */ GTK_SINGLE_SAT(widget)->qth = qth; /* get refresh rate and cycle counter */ GTK_SINGLE_SAT(widget)->refresh = mod_cfg_get_int(newcfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, SAT_CFG_INT_SINGLE_SAT_REFRESH); GTK_SINGLE_SAT(widget)->counter = 1; } /* Select new satellite */ void gtk_single_sat_select_sat(GtkWidget * single_sat, gint catnum) { GtkSingleSat *ssat = GTK_SINGLE_SAT(single_sat); sat_t *sat = NULL; gchar *title; gboolean foundsat = FALSE; gint i, n; /* find satellite with catnum */ n = g_slist_length(ssat->sats); for (i = 0; i < n; i++) { sat = SAT(g_slist_nth_data(ssat->sats, i)); if (sat->tle.catnr == catnum) { /* found satellite */ ssat->selected = i; foundsat = TRUE; /* exit loop */ i = n; } } if (!foundsat) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not find satellite with catalog number %d"), __func__, catnum); return; } title = g_markup_printf_escaped("%s", sat->nickname); gtk_label_set_markup(GTK_LABEL(ssat->header), title); g_free(title); } /* Update satellites */ void gtk_single_sat_update(GtkWidget * widget) { GtkSingleSat *ssat = GTK_SINGLE_SAT(widget); guint i; /* first, do some sanity checks */ if ((ssat == NULL) || !IS_GTK_SINGLE_SAT(ssat)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid GtkSingleSat!"), __func__); return; } /* check refresh rate */ if (ssat->counter < ssat->refresh) { ssat->counter++; } else { /* we calculate here to avoid double calc */ if ((ssat->flags & SINGLE_SAT_FLAG_RA) || (ssat->flags & SINGLE_SAT_FLAG_DEC)) { obs_astro_t astro; sat_t *sat = SAT(g_slist_nth_data(ssat->sats, ssat->selected)); Calculate_RADec(sat, ssat->qth, &astro); sat->ra = Degrees(astro.ra); sat->dec = Degrees(astro.dec); } /* update visible fields one by one */ for (i = 0; i < SINGLE_SAT_FIELD_NUMBER; i++) { if (ssat->flags & (1 << i)) update_field(ssat, i); } ssat->counter = 1; } } GType gtk_single_sat_get_type() { static GType gtk_single_sat_type = 0; if (!gtk_single_sat_type) { static const GTypeInfo gtk_single_sat_info = { sizeof(GtkSingleSatClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) gtk_single_sat_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GtkSingleSat), 5, /* n_preallocs */ (GInstanceInitFunc) gtk_single_sat_init, NULL }; gtk_single_sat_type = g_type_register_static(GTK_TYPE_BOX, "GtkSingleSat", >k_single_sat_info, 0); } return gtk_single_sat_type; } GtkWidget *gtk_single_sat_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 fields) { GtkWidget *widget; GtkSingleSat *single_sat; GtkWidget *hbox; /* horizontal box for header */ GtkWidget *label1; GtkWidget *label2; sat_t *sat; gchar *title; guint i; gint selectedcatnum; widget = g_object_new(GTK_TYPE_SINGLE_SAT, NULL); gtk_orientable_set_orientation(GTK_ORIENTABLE(widget), GTK_ORIENTATION_VERTICAL); single_sat = GTK_SINGLE_SAT(widget); single_sat->update = gtk_single_sat_update; /* Read configuration data. */ /* ... */ g_hash_table_foreach(sats, store_sats, widget); single_sat->selected = 0; single_sat->qth = qth; single_sat->cfgdata = cfgdata; /* initialise column flags */ if (fields > 0) single_sat->flags = fields; else single_sat->flags = mod_cfg_get_int(cfgdata, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_FIELDS, SAT_CFG_INT_SINGLE_SAT_FIELDS); /* get refresh rate and cycle counter */ single_sat->refresh = mod_cfg_get_int(cfgdata, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, SAT_CFG_INT_SINGLE_SAT_REFRESH); single_sat->counter = 1; /* get selected catnum if available */ selectedcatnum = mod_cfg_get_int(cfgdata, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_SELECT, SAT_CFG_INT_SINGLE_SAT_SELECT); /* popup button */ single_sat->popup_button = gpredict_mini_mod_button("gpredict-mod-popup.png", _("Satellite options / shortcuts")); g_signal_connect(single_sat->popup_button, "clicked", G_CALLBACK(gtk_single_sat_popup_cb), widget); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), single_sat->popup_button, FALSE, FALSE, 0); /* create header */ sat = SAT(g_slist_nth_data(single_sat->sats, 0)); title = g_markup_printf_escaped("%s", sat ? sat->nickname : "noname"); single_sat->header = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(single_sat->header), title); g_free(title); g_object_set(single_sat->header, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(hbox), single_sat->header, TRUE, TRUE, 10); gtk_box_pack_start(GTK_BOX(widget), hbox, FALSE, FALSE, 0); /* create and initialise table */ // single_sat->table = gtk_table_new(SINGLE_SAT_FIELD_NUMBER, 3, FALSE); single_sat->table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(single_sat->table), 5); gtk_grid_set_row_spacing(GTK_GRID(single_sat->table), 0); gtk_grid_set_column_spacing(GTK_GRID(single_sat->table), 5); /* create and add label widgets */ for (i = 0; i < SINGLE_SAT_FIELD_NUMBER; i++) { if (single_sat->flags & (1 << i)) { label1 = gtk_label_new(_(SINGLE_SAT_FIELD_TITLE[i])); g_object_set(label1, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(single_sat->table), label1, 0, i, 1, 1); label2 = gtk_label_new("-"); g_object_set(label2, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(single_sat->table), label2, 2, i, 1, 1); single_sat->labels[i] = label2; /* add tooltips */ gtk_widget_set_tooltip_text(label1, _(SINGLE_SAT_FIELD_HINT[i])); gtk_widget_set_tooltip_text(label2, _(SINGLE_SAT_FIELD_HINT[i])); label1 = gtk_label_new(":"); gtk_grid_attach(GTK_GRID(single_sat->table), label1, 1, i, 1, 1); } else { single_sat->labels[i] = NULL; } } /* create and initialise scrolled window */ single_sat->swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(single_sat->swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(single_sat->swin), single_sat->table); gtk_box_pack_end(GTK_BOX(widget), single_sat->swin, TRUE, TRUE, 0); gtk_widget_show_all(widget); if (selectedcatnum) gtk_single_sat_select_sat(widget, selectedcatnum); return widget; } gpredict/src/gtk-single-sat.h000066400000000000000000000140141427377236300164660ustar00rootroot00000000000000#ifndef __GTK_SINGLE_SAT_H__ #define __GTK_SINGLE_SAT_H__ 1 #include #include #include #include "gtk-sat-data.h" #include "gtk-sat-module.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ /** Symbolic references to columns */ typedef enum { SINGLE_SAT_FIELD_AZ = 0, /*!< Azimuth. */ SINGLE_SAT_FIELD_EL, /*!< Elvation. */ SINGLE_SAT_FIELD_DIR, /*!< Direction, satellite on its way up or down. */ SINGLE_SAT_FIELD_RA, /*!< Right Ascension. */ SINGLE_SAT_FIELD_DEC, /*!< Declination. */ SINGLE_SAT_FIELD_RANGE, /*!< Range. */ SINGLE_SAT_FIELD_RANGE_RATE, /*!< Range rate. */ SINGLE_SAT_FIELD_NEXT_EVENT, /*!< Next event AOS or LOS depending on El. */ SINGLE_SAT_FIELD_AOS, /*!< Next AOS regardless of El. */ SINGLE_SAT_FIELD_LOS, /*!< Next LOS regardless of El. */ SINGLE_SAT_FIELD_LAT, /*!< Latitude. */ SINGLE_SAT_FIELD_LON, /*!< Longitude. */ SINGLE_SAT_FIELD_SSP, /*!< Sub satellite point grid square */ SINGLE_SAT_FIELD_FOOTPRINT, /*!< Footprint. */ SINGLE_SAT_FIELD_ALT, /*!< Altitude. */ SINGLE_SAT_FIELD_VEL, /*!< Velocity. */ SINGLE_SAT_FIELD_DOPPLER, /*!< Doppler shift at 100 MHz. */ SINGLE_SAT_FIELD_LOSS, /*!< Path Loss at 100 MHz. */ SINGLE_SAT_FIELD_DELAY, /*!< Signal delay */ SINGLE_SAT_FIELD_MA, /*!< Mean Anomaly. */ SINGLE_SAT_FIELD_PHASE, /*!< Phase. */ SINGLE_SAT_FIELD_ORBIT, /*!< Orbit Number. */ SINGLE_SAT_FIELD_VISIBILITY, /*!< Visibility. */ SINGLE_SAT_FIELD_NUMBER } single_sat_field_t; /** Fieldnum Flags */ typedef enum { SINGLE_SAT_FLAG_AZ = 1 << SINGLE_SAT_FIELD_AZ, /*!< Azimuth. */ SINGLE_SAT_FLAG_EL = 1 << SINGLE_SAT_FIELD_EL, /*!< Elvation. */ SINGLE_SAT_FLAG_DIR = 1 << SINGLE_SAT_FIELD_DIR, /*!< Direction */ SINGLE_SAT_FLAG_RA = 1 << SINGLE_SAT_FIELD_RA, /*!< Right Ascension. */ SINGLE_SAT_FLAG_DEC = 1 << SINGLE_SAT_FIELD_DEC, /*!< Declination. */ SINGLE_SAT_FLAG_RANGE = 1 << SINGLE_SAT_FIELD_RANGE, /*!< Range. */ SINGLE_SAT_FLAG_RANGE_RATE = 1 << SINGLE_SAT_FIELD_RANGE_RATE, /*!< Range rate. */ SINGLE_SAT_FLAG_NEXT_EVENT = 1 << SINGLE_SAT_FIELD_NEXT_EVENT, /*!< Next event. */ SINGLE_SAT_FLAG_AOS = 1 << SINGLE_SAT_FIELD_AOS, /*!< Next AOS. */ SINGLE_SAT_FLAG_LOS = 1 << SINGLE_SAT_FIELD_LOS, /*!< Next LOS. */ SINGLE_SAT_FLAG_LAT = 1 << SINGLE_SAT_FIELD_LAT, /*!< Latitude. */ SINGLE_SAT_FLAG_LON = 1 << SINGLE_SAT_FIELD_LON, /*!< Longitude. */ SINGLE_SAT_FLAG_SSP = 1 << SINGLE_SAT_FIELD_SSP, /*!< SSP grid square */ SINGLE_SAT_FLAG_FOOTPRINT = 1 << SINGLE_SAT_FIELD_FOOTPRINT, /*!< Footprint. */ SINGLE_SAT_FLAG_ALT = 1 << SINGLE_SAT_FIELD_ALT, /*!< Altitude. */ SINGLE_SAT_FLAG_VEL = 1 << SINGLE_SAT_FIELD_VEL, /*!< Velocity. */ SINGLE_SAT_FLAG_DOPPLER = 1 << SINGLE_SAT_FIELD_DOPPLER, /*!< Doppler shift. */ SINGLE_SAT_FLAG_LOSS = 1 << SINGLE_SAT_FIELD_LOSS, /*!< Path Loss. */ SINGLE_SAT_FLAG_DELAY = 1 << SINGLE_SAT_FIELD_DELAY, /*!< Delay */ SINGLE_SAT_FLAG_MA = 1 << SINGLE_SAT_FIELD_MA, /*!< Mean Anomaly. */ SINGLE_SAT_FLAG_PHASE = 1 << SINGLE_SAT_FIELD_PHASE, /*!< Phase. */ SINGLE_SAT_FLAG_ORBIT = 1 << SINGLE_SAT_FIELD_ORBIT, /*!< Orbit Number. */ SINGLE_SAT_FLAG_VISIBILITY = 1 << SINGLE_SAT_FIELD_VISIBILITY /*!< Visibility. */ } single_sat_flag_t; #define GTK_TYPE_SINGLE_SAT (gtk_single_sat_get_type ()) #define GTK_SINGLE_SAT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,\ gtk_single_sat_get_type (),\ GtkSingleSat) #define GTK_SINGLE_SAT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,\ gtk_single_sat_get_type (),\ GtkSingleSatClass) #define IS_GTK_SINGLE_SAT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_single_sat_get_type ()) typedef struct _gtk_single_sat GtkSingleSat; typedef struct _GtkSingleSatClass GtkSingleSatClass; struct _gtk_single_sat { GtkBox vbox; GtkWidget *header; /*!< Header label, ie. satellite name. */ GtkWidget *labels[SINGLE_SAT_FIELD_NUMBER]; /*!< GtkLabels displaying the data. */ GtkWidget *swin; /*!< scrolled window. */ GtkWidget *table; /*!< table. */ GtkWidget *popup_button; /*!< Popup button. */ GKeyFile *cfgdata; /*!< Configuration data. */ GSList *sats; /*!< Satellites. */ qth_t *qth; /*!< Pointer to current location. */ guint32 flags; /*!< Flags indicating which columns are visible. */ guint refresh; /*!< Refresh rate. */ guint counter; /*!< cycle counter. */ guint selected; /*!< index of selected sat. */ gdouble tstamp; /*!< time stamp of calculations; update by GtkSatModule */ void (*update) (GtkWidget * widget); /*!< update function */ }; struct _GtkSingleSatClass { GtkBoxClass parent_class; }; GType gtk_single_sat_get_type(void); GtkWidget *gtk_single_sat_new(GKeyFile * cfgdata, GHashTable * sats, qth_t * qth, guint32 fields); void gtk_single_sat_update(GtkWidget * widget); void gtk_single_sat_reconf(GtkWidget * widget, GKeyFile * newcfg, GHashTable * sats, qth_t * qth, gboolean local); void gtk_single_sat_reload_sats(GtkWidget * single_sat, GHashTable * sats); void gtk_single_sat_select_sat(GtkWidget * single_sat, gint catnum); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_SINGLE_SAT_H__ */ gpredict/src/gtk-sky-glance.c000066400000000000000000000645271427377236300164660ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * Sky at a glance Widget. * * The sky at a glance widget provides a convenient overview of the upcoming * satellite passes in a timeline format. The widget is tied to a specific * module and uses the QTH and satellite data from the module. * * Note about the sizing policy: * Initially we require 10 pixels per sat + 5 pix margin between the sats. * * When we get additional space due to resizing, the space will be allocated * to make the rectangles taller. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "gtk-sky-glance.h" #include "mod-cfg-get-param.h" #include "predict-tools.h" #include "sat-pass-dialogs.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define SKG_DEFAULT_WIDTH 600 #define SKG_DEFAULT_HEIGHT 300 #define SKG_PIX_PER_SAT 10 #define SKG_MARGIN 15 #define SKG_FOOTER 50 #define SKG_CURSOR_WIDTH 0.5 static GtkVBoxClass *parent_class = NULL; static void gtk_sky_glance_init(GtkSkyGlance * skg, gpointer g_class) { (void)g_class; skg->sats = NULL; skg->qth = NULL; skg->passes = NULL; skg->satlab = NULL; skg->x0 = 0; skg->y0 = 0; skg->w = 0; skg->h = 0; skg->pps = 0; skg->numsat = 0; skg->satcnt = 0; skg->ts = 0.0; skg->te = 0.0; } /** * Destroy the GtkSkyGlance widget * * @param object Pointer to the GtkSkyGlance widget * * This function is called when the GtkSkyGlance widget is destroyed. It frees * the memory that has been allocated when the widget was created. * * @bug For some reason, this function is called twice when parent is destroyed. */ static void gtk_sky_glance_destroy(GtkWidget * widget) { sky_pass_t *skypass; guint i, n; /* free passes */ /* FIXME: TBC whether this is enough */ if (GTK_SKY_GLANCE(widget)->passes != NULL) { n = g_slist_length(GTK_SKY_GLANCE(widget)->passes); for (i = 0; i < n; i++) { skypass = (sky_pass_t *) g_slist_nth_data(GTK_SKY_GLANCE(widget)->passes, i); free_pass(skypass->pass); g_free(skypass); } g_slist_free(GTK_SKY_GLANCE(widget)->passes); GTK_SKY_GLANCE(widget)->passes = NULL; } /* for the rest we only need to free the GSList because the canvas items will be freed when removed from canvas. */ if (GTK_SKY_GLANCE(widget)->satlab != NULL) { g_slist_free(GTK_SKY_GLANCE(widget)->satlab); GTK_SKY_GLANCE(widget)->satlab = NULL; } if (GTK_SKY_GLANCE(widget)->majors != NULL) { g_slist_free(GTK_SKY_GLANCE(widget)->majors); GTK_SKY_GLANCE(widget)->majors = NULL; } if (GTK_SKY_GLANCE(widget)->minors != NULL) { g_slist_free(GTK_SKY_GLANCE(widget)->minors); GTK_SKY_GLANCE(widget)->minors = NULL; } if (GTK_SKY_GLANCE(widget)->labels != NULL) { g_slist_free(GTK_SKY_GLANCE(widget)->labels); GTK_SKY_GLANCE(widget)->labels = NULL; } (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget); } static void gtk_sky_glance_class_init(GtkSkyGlanceClass * class, gpointer class_data) { GtkWidgetClass *widget_class; (void)class_data; widget_class = (GtkWidgetClass *) class; widget_class->destroy = gtk_sky_glance_destroy; parent_class = g_type_class_peek_parent(class); } GType gtk_sky_glance_get_type() { static GType gtk_sky_glance_type = 0; if (!gtk_sky_glance_type) { static const GTypeInfo gtk_sky_glance_info = { sizeof(GtkSkyGlanceClass), NULL, /* base init */ NULL, /* base finalise */ (GClassInitFunc) gtk_sky_glance_class_init, NULL, /* class finalise */ NULL, /* class data */ sizeof(GtkSkyGlance), 1, /* n_preallocs */ (GInstanceInitFunc) gtk_sky_glance_init, NULL }; gtk_sky_glance_type = g_type_register_static(GTK_TYPE_BOX, "GtkSkyGlance", >k_sky_glance_info, 0); } return gtk_sky_glance_type; } /** * Convert time value to x position. * * @param skg The GtkSkyGlance widget. * @param t Julian date user is presented with brief info about the * satellite pass and a suggestion to click on the box for more info. * @return X coordinate. * * No error checking is made to ensure that we are within visible range. */ static gdouble t2x(GtkSkyGlance * skg, gdouble t) { gdouble frac; frac = (t - skg->ts) / (skg->te - skg->ts); return (skg->x0 + frac * skg->w); } /** * Convert x coordinate to Julian date. * * @param skg The GtkSkyGlance widget. * @param x The X coordinate. * @return The Julian date corresponding to X. * * No error checking is made to ensure that we are within visible range. */ static gdouble x2t(GtkSkyGlance * skg, gdouble x) { gdouble frac; frac = (x - skg->x0) / skg->w; return (skg->ts + frac * (skg->te - skg->ts)); } /** * Manage new size allocation. * * This function is called when the canvas receives a new size allocation, * e.g. when the container is re-sized. The function re-calculates the graph * dimensions based on the new canvas size. */ static void size_allocate_cb(GtkWidget * widget, GtkAllocation * allocation, gpointer data) { GtkSkyGlance *skg; GooCanvasPoints *pts; GooCanvasItem *obj; gint i, j, n; guint curcat; gdouble th, tm; gdouble xh, xm; sky_pass_t *skp; gdouble x, y, w, h; if (gtk_widget_get_realized(widget)) { /* get graph dimensions */ skg = GTK_SKY_GLANCE(data); skg->w = allocation->width; skg->h = allocation->height - SKG_FOOTER; skg->x0 = 0; skg->y0 = 0; skg->pps = (skg->h - SKG_MARGIN) / skg->numsat - SKG_MARGIN; goo_canvas_set_bounds(GOO_CANVAS(GTK_SKY_GLANCE(skg)->canvas), 0, 0, allocation->width, allocation->height); /* background */ g_object_set(skg->bgd, "x", (gdouble) skg->x0, "y", (gdouble) skg->y0, "width", (gdouble) skg->w, "height", (gdouble) skg->h, NULL); /* update cursor tracking line */ g_object_set(skg->cursor, "x", (gdouble) skg->x0, "y", (gdouble) skg->y0, "width", SKG_CURSOR_WIDTH, "height", (gdouble) skg->h, NULL); /* time label */ g_object_set(skg->timel, "x", (gdouble) skg->x0 + 5, NULL); /* update footer */ g_object_set(skg->footer, "x", (gdouble) skg->x0, "y", (gdouble) skg->h, "width", (gdouble) skg->w, "height", (gdouble) SKG_FOOTER, NULL); g_object_set(skg->axisl, "x", (gdouble) (skg->w / 2), "y", (gdouble) (skg->h + SKG_FOOTER - 5), NULL); /* get the first hour and first 30 min slot */ th = ceil(skg->ts * 24.0) / 24.0; /* workaround for bug 1839140 (first hour incorrexct) */ th += 0.00069; if ((th - skg->ts) > 0.0208333) { tm = th - 0.0208333; } else { tm = th + 0.0208333; } /* the number of steps equals the number of hours */ n = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_TIME); for (i = 0; i < n; i++) { xh = t2x(skg, th); pts = goo_canvas_points_new(2); pts->coords[0] = xh; pts->coords[1] = skg->h; pts->coords[2] = xh; pts->coords[3] = skg->h + 10; obj = g_slist_nth_data(skg->majors, i); g_object_set(obj, "points", pts, NULL); goo_canvas_points_unref(pts); obj = g_slist_nth_data(skg->labels, i); g_object_set(obj, "x", (gdouble) xh, "y", (gdouble) (skg->h + 12), NULL); /* 30 min tick */ xm = t2x(skg, tm); pts = goo_canvas_points_new(2); pts->coords[0] = xm; pts->coords[1] = skg->h; pts->coords[2] = xm; pts->coords[3] = skg->h + 5; obj = g_slist_nth_data(skg->minors, i); g_object_set(obj, "points", pts, NULL); goo_canvas_points_unref(pts); th += 0.04167; tm += 0.04167; } /* update pass items */ n = g_slist_length(skg->passes); j = -1; curcat = 0; y = 10.0; h = 10.0; for (i = 0; i < n; i++) { /* get pass */ skp = (sky_pass_t *) g_slist_nth_data(skg->passes, i); x = t2x(skg, skp->pass->aos); w = t2x(skg, skp->pass->los) - x; /* new satellite? */ if (skp->catnum != curcat) { j++; curcat = skp->catnum; y = j * (skg->pps + SKG_MARGIN) + SKG_MARGIN; h = skg->pps; /* update label */ obj = g_slist_nth_data(skg->satlab, j); if (x > (skg->x0 + 100)) g_object_set(obj, "x", x - 5, "y", y + h / 2.0, "anchor", GOO_CANVAS_ANCHOR_E, NULL); else g_object_set(obj, "x", x + w + 5, "y", y + h / 2.0, "anchor", GOO_CANVAS_ANCHOR_W, NULL); } g_object_set(skp->box, "x", x, "y", y, "width", w, "height", h, NULL); /* need to raise item, otherwise it will not receive new events */ goo_canvas_item_raise(skp->box, NULL); } } } /** * Manage canvas realise signals. * * This function is used to re-initialise the graph dimensions when * the graph is realized, i.e. displayed for the first time. This is * necessary in order to compensate for missing "re-allocate" signals for * graphs that have not yet been realised, e.g. when opening several module */ static void on_canvas_realized(GtkWidget * canvas, gpointer data) { GtkAllocation aloc; gtk_widget_get_allocation(canvas, &aloc); size_allocate_cb(canvas, &aloc, data); } /** Manage mouse motion events. */ static gboolean on_motion_notify(GooCanvasItem * item, GooCanvasItem * target, GdkEventMotion * event, gpointer data) { GtkSkyGlance *skg = GTK_SKY_GLANCE(data); gdouble t; gchar buff[6]; (void)item; (void)target; /* update cursor tracking line and time label */ g_object_set(skg->cursor, "x", (gdouble) event->x, "y", (gdouble) skg->y0, "width", SKG_CURSOR_WIDTH, "height", (gdouble) skg->h, NULL); /* get time corresponding to x */ t = x2t(skg, event->x); daynum_to_str(buff, 6, "%H:%M", t); g_object_set(skg->timel, "text", buff, NULL); return TRUE; } /** * Manage button release events. * * @param item The GooCanvasItem object that received the button press event. * @param target The target of the event (what?). * @param event Event data, such as X and Y coordinates. * @param data User data; points to the GtkSkyAtGlance object. * @return Always TRUE to prevent further propagation of the event. * * This function is called when the mouse button is released above * a satellite pass object. */ static gboolean on_button_release(GooCanvasItem * item, GooCanvasItem * target, GdkEventButton * event, gpointer data) { GtkSkyGlance *skg = GTK_SKY_GLANCE(data); pass_t *pass; pass_t *new_pass; (void)target; /* get pointer to pass_t structure */ pass = (pass_t *) g_object_get_data(G_OBJECT(item), "pass"); if (G_UNLIKELY(pass == NULL)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s::%s: Could not retrieve pass_t object"), __FILE__, __func__); return TRUE; } switch (event->button) { /* LEFT button released */ case 1: new_pass = copy_pass(pass); sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s::%s: Showing pass details for %s - we may have a memory leak here"), __FILE__, __func__, pass->satname); /* show the pass details */ show_pass(pass->satname, skg->qth, new_pass, NULL); break; default: sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s::%s: Button %d has no function..."), __FILE__, __func__, event->button); break; } return TRUE; } /** * Create the model for the GtkSkyGlance canvas * * @param skg Pointer to the GtkSkyGlance widget */ static void create_canvas_items(GtkSkyGlance * skg) { GooCanvasItem *root; GooCanvasItem *hrt, *hrl, *hrm; guint i, n; gdouble th, tm; gdouble xh, xm; gchar buff[3]; root = goo_canvas_get_root_item(GOO_CANVAS(skg->canvas)); g_signal_connect(root, "motion_notify_event", (GCallback) on_motion_notify, skg); /* background */ skg->bgd = goo_canvas_rect_new(root, skg->x0, skg->y0, skg->w, skg->h, "fill-color-rgba", 0xFFFFFFFF, "stroke-color-rgba", 0xFFFFFFFF, NULL); /* cursor tracking line */ skg->cursor = goo_canvas_polyline_new_line(root, skg->x0, skg->y0, skg->x0, skg->h, "stroke-color-rgba", 0x000000AF, "line-width", SKG_CURSOR_WIDTH, NULL); /* time label */ skg->timel = goo_canvas_text_new(root, "--:--", skg->x0 + 5, skg->y0, -1, GOO_CANVAS_ANCHOR_NW, "font", "Sans 8", "fill-color-rgba", 0x000000AF, NULL); /* footer */ skg->footer = goo_canvas_rect_new(root, skg->x0, skg->h, skg->w, SKG_FOOTER, "fill-color-rgba", 0x00003FFF, "stroke-color-rgba", 0xFFFFFFFF, NULL); /* time ticks and labels */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME)) skg->axisl = goo_canvas_text_new(root, _("TIME"), skg->w / 2, skg->h + SKG_FOOTER - 5, -1, GOO_CANVAS_ANCHOR_S, "font", "Sans 9", "fill-color-rgba", 0xFFFFFFFF, NULL); else skg->axisl = goo_canvas_text_new(root, _("UTC"), skg->w / 2, skg->h + SKG_FOOTER - 5, -1, GOO_CANVAS_ANCHOR_S, "font", "Sans 9", "fill-color-rgba", 0xFFFFFFFF, NULL); /* get the first hour and first 30 min slot */ th = ceil(skg->ts * 24.0) / 24.0; /* workaround for bug 1839140 (first hour incorrexct) */ th += 0.00069; /* the first 30 min tick can be either before or after the first hour tick */ if ((th - skg->ts) > 0.0208333) { tm = th - 0.0208333; } else { tm = th + 0.0208333; } /* the number of steps equals the number of hours */ n = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_TIME); for (i = 0; i < n; i++) { /* hour tick */ xh = t2x(skg, th); hrt = goo_canvas_polyline_new_line(root, xh, skg->h, xh, skg->h + 10, "stroke-color-rgba", 0xFFFFFFFF, NULL); /* hour tick label */ daynum_to_str(buff, 3, "%H", th); hrl = goo_canvas_text_new(root, buff, xh, skg->h + 12, -1, GOO_CANVAS_ANCHOR_N, "font", "Sans 8", "fill-color-rgba", 0xFFFFFFFF, NULL); /* 30 min tick */ xm = t2x(skg, tm); hrm = goo_canvas_polyline_new_line(root, xm, skg->h, xm, skg->h + 5, "stroke-color-rgba", 0xFFFFFFFF, NULL); /* store canvas items */ skg->majors = g_slist_append(skg->majors, hrt); skg->labels = g_slist_append(skg->labels, hrl); skg->minors = g_slist_append(skg->minors, hrm); th += 0.0416667; tm += 0.0416667; } } /** Fetch the basic colour and add alpha channel */ static void get_colors(guint i, guint * bcol, guint * fcol) { guint tmp; /* ensure that we are within 1..10 */ i = i % 10; switch (i) { case 0: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_01); break; case 1: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_02); break; case 2: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_03); break; case 3: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_04); break; case 4: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_05); break; case 5: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_06); break; case 6: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_07); break; case 7: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_08); break; case 8: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_09); break; case 9: tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_10); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Colour index out of valid range (%d)"), __FILE__, __LINE__, i); tmp = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_01); break; } /* border colour is solid with no tranparency */ *bcol = (tmp * 0x100) | 0xFF; /* fill colour is slightly transparent */ *fcol = (tmp * 0x100) | 0xA0; } /** * Create canvas items for a satellite * * @param key Pointer to the hash key (catnum of sat) * @param value Pointer to the current satellite. * @param data Pointer to the GtkSkyGlance object. * * This function is called by g_hash_table_foreach with each satellite in * the satellite hash table. It gets the passes for the current satellite * and creates the corresponding canvas items. */ static void create_sat(gpointer key, gpointer value, gpointer data) { sat_t *sat = SAT(value); GtkSkyGlance *skg = GTK_SKY_GLANCE(data); GSList *passes = NULL; gdouble maxdt; guint i, n; pass_t *tmppass = NULL; sky_pass_t *skypass; guint bcol, fcol; /* colors */ GooCanvasItem *root; GooCanvasItem *label; (void)key; /* tooltips vars */ gchar *tooltip; /* the complete tooltips string */ gchar aosstr[100]; /* AOS time string */ gchar losstr[100]; /* LOS time string */ gchar tcastr[100]; /* TCA time string */ /* get canvas root */ root = goo_canvas_get_root_item(GOO_CANVAS(skg->canvas)); get_colors(skg->satcnt++, &bcol, &fcol); maxdt = skg->te - skg->ts; /* get passes for satellite */ passes = get_passes(sat, skg->qth, skg->ts, maxdt, 10); n = g_slist_length(passes); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: %s has %d passes within %.4f days\n"), __FILE__, __LINE__, sat->nickname, n, maxdt); /* add sky_pass_t items to skg->passes */ if (passes != NULL) { /* add pass items */ for (i = 0; i < n; i++) { skypass = g_try_new(sky_pass_t, 1); if (skypass == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Could not allocate memory."), __FILE__, __func__); continue; } /* create pass structure items */ skypass->catnum = sat->tle.catnr; tmppass = (pass_t *) g_slist_nth_data(passes, i); skypass->pass = copy_pass(tmppass); daynum_to_str(aosstr, TIME_FORMAT_MAX_LENGTH, sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT), skypass->pass->aos); daynum_to_str(losstr, TIME_FORMAT_MAX_LENGTH, sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT), skypass->pass->los); daynum_to_str(tcastr, TIME_FORMAT_MAX_LENGTH, sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT), skypass->pass->tca); /* box tooltip will contain pass summary */ tooltip = g_strdup_printf(_("%s\n" "AOS: %s Az:%.0f\302\260\n" "TCA: %s Az:%.0f\302\260 El:%.1f\302\260\n" "LOS: %s Az:%.0f\302\260\n" "Click for details"), skypass->pass->satname, aosstr, skypass->pass->aos_az, tcastr, skypass->pass->maxel_az, skypass->pass->max_el, losstr, skypass->pass->los_az); skypass->box = goo_canvas_rect_new(root, 10, 10, 20, 20, "stroke-color-rgba", bcol, "fill-color-rgba", fcol, "line-width", 1.0, "antialias", CAIRO_ANTIALIAS_NONE, "tooltip", tooltip, "can-focus", TRUE, NULL); g_free(tooltip); /* store this pass in list */ skg->passes = g_slist_append(skg->passes, skypass); /* store a pointer to the pass data in the GooCanvasItem so that we can access it later during various events, e.g mouse click */ g_object_set_data(G_OBJECT(skypass->box), "pass", skypass->pass); g_signal_connect(skypass->box, "button_release_event", (GCallback) on_button_release, skg); } free_passes(passes); /* add satellite label */ label = goo_canvas_text_new(root, sat->nickname, 5, 0, -1, GOO_CANVAS_ANCHOR_W, "font", "Sans 8", "fill-color-rgba", bcol, NULL); skg->satlab = g_slist_append(skg->satlab, label); } } /** * Create a new GtkSkyGlance widget. * * @param sats Pointer to the hash table containing the associated satellites. * @param qth Pointer to the ground station data. * @param ts The t0 for the timeline or 0 to use the current date and time. */ GtkWidget *gtk_sky_glance_new(GHashTable * sats, qth_t * qth, gdouble ts) { GtkSkyGlance *skg; guint number; /* check that we have at least one satellite */ number = g_hash_table_size(sats); if (number == 0) /* no satellites */ return gtk_label_new(_("This module has no satellites!")); skg = GTK_SKY_GLANCE(g_object_new(GTK_TYPE_SKY_GLANCE, NULL)); /* FIXME? */ skg->sats = sats; skg->qth = qth; /* get settings */ skg->numsat = g_hash_table_size(sats); /* if ts = 0 use current time */ skg->ts = ts > 0.0 ? ts : get_current_daynum(); skg->te = skg->ts + sat_cfg_get_int(SAT_CFG_INT_SKYATGL_TIME) * (1.0 / 24.0); /* calculate preferred sizes */ skg->w = SKG_DEFAULT_WIDTH; skg->h = skg->numsat * SKG_PIX_PER_SAT + (skg->numsat + 1) * SKG_MARGIN; skg->pps = SKG_PIX_PER_SAT; /* create the canvas */ skg->canvas = goo_canvas_new(); g_object_set(G_OBJECT(skg->canvas), "has-tooltip", TRUE, NULL); gtk_widget_set_size_request(skg->canvas, skg->w, skg->h + SKG_FOOTER); goo_canvas_set_bounds(GOO_CANVAS(skg->canvas), 0, 0, skg->w, skg->h + SKG_FOOTER); /* connect size-request signal */ g_signal_connect(skg->canvas, "size-allocate", (GCallback) size_allocate_cb, skg); g_signal_connect_after(skg->canvas, "realize", (GCallback) on_canvas_realized, skg); gtk_widget_show(skg->canvas); /* Create the canvas items */ create_canvas_items(skg); g_hash_table_foreach(skg->sats, create_sat, skg); gtk_box_pack_start(GTK_BOX(skg), skg->canvas, TRUE, TRUE, 0); return GTK_WIDGET(skg); } gpredict/src/gtk-sky-glance.h000066400000000000000000000104061427377236300164560ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef __GTK_SKY_GLANCE_H__ #define __GTK_SKY_GLANCE_H__ 1 #include #include #include #include #include #include "gtk-sat-data.h" #include "predict-tools.h" /* *INDENT-OFF* */ #ifdef __cplusplus extern "C" { #endif /* *INDENT-ON* */ #define GTK_SKY_GLANCE(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_sky_glance_get_type (), GtkSkyGlance) #define GTK_SKY_GLANCE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_sky_glance_get_type (), GtkSkyGlanceClass) #define GTK_IS_SKY_GLANCE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sky_glance_get_type ()) #define GTK_TYPE_SKY_GLANCE (gtk_sky_glance_get_type ()) #define IS_GTK_SKY_GLANCE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_sky_glance_get_type ()) typedef struct _GtkSkyGlance GtkSkyGlance; typedef struct _GtkSkyGlanceClass GtkSkyGlanceClass; /** Satellite object on graph. */ typedef struct { guint catnum; /* Catalog number of satellite */ pass_t *pass; /* Details of the corresponding pass. */ GooCanvasItem *box; /* Canvas item showing the pass */ } sky_pass_t; #define SKY_PASS_T(obj) ((sky_pass_t *)obj) /** GtkSkyGlance widget */ struct _GtkSkyGlance { GtkBox vbox; GtkWidget *canvas; GHashTable *sats; /* Local copy of satellites. */ qth_t *qth; /* Pointer to current location. */ GSList *passes; /* Canvas items representing each pass. * Each element in the list is of type sky_pass_t. */ GSList *satlab; /* Canvas items showing satellite names. */ guint x0; guint y0; guint w; /* width of the plot */ guint h; /* height of the plot */ guint pps; /* pixels per satellite */ guint numsat; /* Number of satellites */ guint satcnt; /* Counter to keep track of how many satellites we have plotted so far when creating the boxes. This is needed to ensure that we do not plot more than 10 satellites and to know which colour to fetch from sat-cfg. */ gdouble ts, te; /* Start and end times (Julian date) */ GSList *majors; /* Major ticks for every hour */ GSList *minors; /* Minor ticks for every 30 min */ GSList *labels; /* Tick labels for every hour */ GooCanvasItem *bgd; /* Canvas background */ GooCanvasItem *footer; /* Footer area with time ticks and labels */ GooCanvasItem *axisl; /* Axis label */ GooCanvasItem *cursor; /* Vertical line tracking the cursor */ GooCanvasItem *timel; /* Label showing time under cursor */ }; struct _GtkSkyGlanceClass { GtkBoxClass parent_class; }; GType gtk_sky_glance_get_type(void); GtkWidget *gtk_sky_glance_new(GHashTable * sats, qth_t * qth, gdouble ts); /* *INDENT-OFF* */ #ifdef __cplusplus } #endif /* *INDENT-ON* */ #endif /* __GTK_SKY_GLANCE_H__ */ gpredict/src/gui.c000066400000000000000000000026711427377236300144220ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "compat.h" #include "gui.h" #include "menubar.h" #include "mod-mgr.h" GtkWidget *gui_create(GtkWidget *window) { GtkWidget *vbox; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(vbox), menubar_create(window), FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(vbox), mod_mgr_create(), TRUE, TRUE, 0); return vbox; } gpredict/src/gui.h000066400000000000000000000001471427377236300144230ustar00rootroot00000000000000#ifndef GUI_H #define GUI_H 1 #include GtkWidget *gui_create(GtkWidget *window); #endif gpredict/src/loc-tree.c000066400000000000000000000537571427377236300153630ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** Tree widget containing locations info */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "compat.h" #include "loc-tree.h" #include "sat-cfg.h" #include "sat-log.h" /* long story... */ #define LTMN 123456.7 #define LTMNI 123456 #define LTEPS 1.0 static GtkTreeModel *loc_tree_create_and_fill_model(const gchar * fname); static void loc_tree_float_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void loc_tree_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static gboolean loc_tree_check_selection_cb(GtkTreeSelection * selection, GtkTreeModel * model, GtkTreePath * path, gboolean selpath, gpointer dialog); static void loc_tree_get_selection(GtkWidget * view, gchar ** loc, gfloat * lat, gfloat * lon, guint * alt, gchar ** wx); /** * Create and initialise location selector. * * @param fname The name of the file, which contains locations data. Can be NULL. * @param flags Bitise or of flags indicating which columns to display. * @param location Newly allocated string containing location (city, country) * @param lat Pointer to where the latitude should be stored. * @param lon Pointer to where the longitude should be stored. * @param alt Pointer to where the altitude should be stored. * @param wx Newly allocated string containing the four letter weather station name. * @return TRUE if a location has been selected and the returned data is valid, * FALSE otherwise, fx. if the user has clicked on the Cancel button. * * @note All data fields will be populated (and both strings allocated) no matter which * flags have been passed by the user. The flags influence only how the tree view * is displayed. */ gboolean loc_tree_create(const gchar * fname, guint flags, gchar ** loc, gfloat * lat, gfloat * lon, guint * alt, gchar ** wx) { GtkCellRenderer *renderer; /* tree view cell renderer */ GtkTreeViewColumn *column; /* tree view column used to add columns */ GtkTreeModel *model; /* tree model */ GtkWidget *view; /* tree view widget */ GtkTreeSelection *selection; /* used to set selection checking func */ GtkWidget *swin; /* scrolled window widget */ GtkWidget *dialog; /* the dialog widget */ gint response; /* response ID returned by gtk_dialog_run */ gchar *ffname; gboolean retval; if (!fname) ffname = data_file_name("locations.dat"); else ffname = g_strdup(fname); view = gtk_tree_view_new(); /* Create columns. Note that there are several ways to create and add the individual columns, especially there are tree_view_insert_col functions, which do not require explicit creation of columns. I have chosen to explicitly create the columns in order to be able to hide them according to the flags parameter. */ /* --- Column #1 --- */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Location"), renderer, "text", TREE_COL_NAM, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); if (!(flags & TREE_COL_FLAG_NAME)) { gtk_tree_view_column_set_visible(column, FALSE); } /* --- Column #2 --- */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Lat"), renderer, "text", TREE_COL_LAT, NULL); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_cell_data_func(column, renderer, loc_tree_float_cell_data_function, GUINT_TO_POINTER(TREE_COL_LAT), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); if (!(flags & TREE_COL_FLAG_LAT)) { gtk_tree_view_column_set_visible(column, FALSE); } /* --- Column #3 --- */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Lon"), renderer, "text", TREE_COL_LON, NULL); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_cell_data_func(column, renderer, loc_tree_float_cell_data_function, GUINT_TO_POINTER(TREE_COL_LON), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); if (!(flags & TREE_COL_FLAG_LON)) { gtk_tree_view_column_set_visible(column, FALSE); } /* --- Column #4 --- */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Alt"), renderer, "text", TREE_COL_ALT, NULL); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_cell_data_func(column, renderer, loc_tree_int_cell_data_function, GUINT_TO_POINTER(TREE_COL_ALT), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); if (!(flags & TREE_COL_FLAG_ALT)) { gtk_tree_view_column_set_visible(column, FALSE); } /* --- Column #5 --- */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("WX"), renderer, "text", TREE_COL_WX, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); if (!(flags & TREE_COL_FLAG_WX)) { gtk_tree_view_column_set_visible(column, FALSE); } /* Invisible column holding 0 or 1 indicating whether a row can be selected or not. We use this to prevent the user from selecting regions or countries, since they are not valid locations. */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("X"), renderer, "text", TREE_COL_SELECT, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, -1); gtk_tree_view_column_set_visible(column, FALSE); /* create model and finalise treeview */ model = loc_tree_create_and_fill_model(ffname); /* we are done with it */ g_free(ffname); gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); /* The tree view has acquired its own reference to the * model, so we can drop ours. That way the model will * be freed automatically when the tree view is destroyed */ g_object_unref(model); /* make sure rows are checked when they are selected */ /* ... but first create the dialog window .... */ /* scrolled window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), view); gtk_widget_show_all(swin); /* dialog window */ dialog = gtk_dialog_new_with_buttons(_("Select Location"), NULL, GTK_DIALOG_MODAL, "_Cancel", GTK_RESPONSE_REJECT, "_OK", GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_default_size(GTK_WINDOW(dialog), 450, 400); /* OK button disabled by default until a valid selection is made */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), swin, TRUE, TRUE, 0); /* connect selection checker for the tree-view; we have waited so far, because we want to pass the dialog as parameter */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); gtk_tree_selection_set_select_function(selection, loc_tree_check_selection_cb, dialog, NULL); response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_ACCEPT) { loc_tree_get_selection(view, loc, lat, lon, alt, wx); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Selected %s"), __func__, *loc); retval = TRUE; } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: No location selected"), __func__); retval = FALSE; } gtk_widget_destroy(dialog); return retval; } static GtkTreeModel *loc_tree_create_and_fill_model(const gchar * fname) { GtkTreeStore *treestore; /* tree store, which is loaded and returned */ GtkTreeIter toplevel; /* highest level rows, continent or region */ GtkTreeIter midlevel; /* mid level rows, country or state in the US */ GtkTreeIter child; /* lowest level rows, cities */ GIOChannel *locfile; /* file we read locations from */ gchar *line; /* line read from file */ gchar **buff; /* temporary buffer to store line pieces */ gsize length; /* line length */ guint i = 0; /* number of lines read */ gchar *continent = g_strdup("DUMMY"); /* current continent */ gchar *country = g_strdup("DUMMY"); /* current country */ GError *error = NULL; /* error data when reading file */ treestore = gtk_tree_store_new(TREE_COL_NUM, G_TYPE_STRING, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_UINT); /* if the supplied file does not exist simply return the empty model FIXME: should we fall back to PACKAGE_DATA_DIR/locations.dat ? */ if (!g_file_test(fname, G_FILE_TEST_EXISTS)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: %s does not exist!"), __func__, fname); g_free(continent); g_free(country); return GTK_TREE_MODEL(treestore); } /* open file and read it line by line */ locfile = g_io_channel_new_file(fname, "r", &error); if (locfile) { while (g_io_channel_read_line(locfile, &line, &length, NULL, NULL) != G_IO_STATUS_EOF) { /* trim line and split it */ line = g_strdelimit(line, "\n", '\0'); buff = g_strsplit(line, ";", 7); /* buff[0] = continent / region buff[1] = country or state in US buff[2] = city buff[3] = weather station buff[4] = latitude (dec. deg. north) buff[5] = longitude (dec. deg. east) buff[6] = altitude */ /* new region? */ if (g_ascii_strcasecmp(buff[0], continent)) { g_free(continent); continent = g_strdup(buff[0]); gtk_tree_store_append(treestore, &toplevel, NULL); gtk_tree_store_set(treestore, &toplevel, TREE_COL_NAM, continent, TREE_COL_LAT, LTMN, TREE_COL_LON, LTMN, TREE_COL_ALT, LTMNI, TREE_COL_SELECT, 0, -1); } /* new country? */ if (g_ascii_strcasecmp(buff[1], country)) { g_free(country); country = g_strdup(buff[1]); gtk_tree_store_append(treestore, &midlevel, &toplevel); gtk_tree_store_set(treestore, &midlevel, TREE_COL_NAM, country, TREE_COL_LAT, LTMN, TREE_COL_LON, LTMN, TREE_COL_ALT, LTMNI, TREE_COL_SELECT, 0, -1); } /* add city */ gtk_tree_store_append(treestore, &child, &midlevel); gtk_tree_store_set(treestore, &child, TREE_COL_NAM, buff[2], TREE_COL_WX, buff[3], TREE_COL_LAT, g_ascii_strtod(buff[4], NULL), TREE_COL_LON, g_ascii_strtod(buff[5], NULL), /* Crashes here if type is not correctly cast */ TREE_COL_ALT, (guint) g_ascii_strtod(buff[6], NULL), TREE_COL_SELECT, 1, -1); /* finish and clean up */ i++; /* free allocated memory */ g_free(line); g_strfreev(buff); } sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Read %d cities."), __func__, i); if (continent) g_free(continent); if (country) g_free(country); /* Close IO channel; don't care about status. Shutdown will flush the stream and close the channel as soon as the reference count is dropped. Order matters! */ g_io_channel_shutdown(locfile, TRUE, NULL); g_io_channel_unref(locfile); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to open locfile (%s)"), __func__, error->message); g_clear_error(&error); } return GTK_TREE_MODEL(treestore); } /* render column containing float by using this instead of the default data function, we can disable lat,lon and alt for the continent and country rows. Please note that this function only affects how the numbers are displayed (rendered), the tree_store will still contain the original floating point numbers. Very cool! */ static void loc_tree_float_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gfloat number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); gchar hmf = ' '; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* check whether configuration requests the use of N, S, E and W instead of signs */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (coli == TREE_COL_LAT) { if (number < 0.0) { number *= -1.0; hmf = 'S'; } else { hmf = 'N'; } } else if (coli == TREE_COL_LON) { if (number < 0.0) { number *= -1.0; hmf = 'W'; } else { hmf = 'E'; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid column: %d"), __func__, coli); hmf = '?'; } } if (fabs(LTMN - number) > LTEPS) buff = g_strdup_printf("%.4f\302\260%c", number, hmf); else buff = g_strdup(""); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /** Render column containing integer */ static void loc_tree_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gint number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, GPOINTER_TO_UINT(column), &number, -1); if (coli == TREE_COL_ALT) { if (number != LTMNI) buff = g_strdup_printf("%d", number); else buff = g_strdup(""); } else { buff = g_strdup_printf("%d", number); } g_object_set(renderer, "text", buff, NULL); g_free(buff); } /** * Check current selection. * * This function is used to check the currently selected row. This is to avoid * selection of region and countries. The function is called as a callback function * every time a row is selected. * The decision is based on the integer value stored in the invisible column * TREE_COL_SELECT. A value of 0 means row may not be selected, while a value of 1 * means that the row can be selected. */ static gboolean loc_tree_check_selection_cb(GtkTreeSelection * selection, GtkTreeModel * model, GtkTreePath * path, gboolean sel_path, gpointer dialog) { GtkTreeIter iter; (void)selection; (void)sel_path; if (gtk_tree_model_get_iter(model, &iter, path)) { guint value; gtk_tree_model_get(model, &iter, TREE_COL_SELECT, &value, -1); if (value) { gtk_dialog_set_response_sensitive(GTK_DIALOG(GTK_WIDGET(dialog)), GTK_RESPONSE_ACCEPT, TRUE); return TRUE; } } return FALSE; } /** get data fom selected row. */ static void loc_tree_get_selection(GtkWidget * view, gchar ** loc, gfloat * lat, gfloat * lon, guint * alt, gchar ** wx) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; GtkTreeIter parent; gchar *city; gchar *country; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { /* get values */ gtk_tree_model_get(model, &iter, TREE_COL_NAM, &city, TREE_COL_LAT, lat, TREE_COL_LON, lon, TREE_COL_ALT, alt, TREE_COL_WX, wx, -1); /* Location string shall be composed of "City, Country". Currently we have City in _loc1 and so we need to obtain the parent. */ if (gtk_tree_model_iter_parent(model, &parent, &iter)) { gtk_tree_model_get(model, &parent, TREE_COL_NAM, &country, -1); *loc = g_strconcat(city, ", ", country, NULL); g_free(city); g_free(country); } else { /* well no luck; send a warning message and return city only (actually, this is a bug, if it happens). */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to get parent for %s."), __func__, city); *loc = g_strdup(city); g_free(city); } } else { /* nothing selected; this function should not have been called => BUG! */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: No selection found!"), __func__); } } gpredict/src/loc-tree.h000066400000000000000000000024521427377236300153520ustar00rootroot00000000000000#ifndef LOC_TREE_H #define LOC_TREE_H 1 /** Tree column definitions */ typedef enum { TREE_COL_NAM = 0, /*!< Location name column. */ TREE_COL_LAT, /*!< Location latitude column. */ TREE_COL_LON, /*!< Location longitude column. */ TREE_COL_ALT, /*!< Location altitude column. */ TREE_COL_WX, /*!< Weather station column. */ TREE_COL_SELECT, /*!< Invisible colindicating whether row may be selected */ TREE_COL_NUM /*!< The total number of columns. */ } loc_tree_col_t; /** Column flags */ typedef enum { TREE_COL_FLAG_NAME = 1 << TREE_COL_NAM, /*!< Location name column. */ TREE_COL_FLAG_LAT = 1 << TREE_COL_LAT, /*!< Location latitude column. */ TREE_COL_FLAG_LON = 1 << TREE_COL_LON, /*!< Location longitude column. */ TREE_COL_FLAG_ALT = 1 << TREE_COL_ALT, /*!< Location altitude column. */ TREE_COL_FLAG_WX = 1 << TREE_COL_WX /*!< Weather station column. */ } loc_tree_col_flag_t; gboolean loc_tree_create(const gchar * fname, guint flags, gchar ** loc, gfloat * lat, gfloat * lon, guint * alt, gchar ** wx); #endif gpredict/src/locator.c000066400000000000000000000444551427377236300153070ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /** * \file src/locator.c * \ingroup hamlib * \brief locator and bearing conversion interface * \author Stephane Fillod and the Hamlib Group * \date 2000-2006 * * Hamlib Interface - locator, bearing, and conversion calls */ /* * Hamlib Interface - locator and bearing conversion calls * Copyright (c) 2001-2009 by Stephane Fillod * Copyright (c) 2003 by Nate Bargmann * Copyright (c) 2003 by Dave Hines * * Code to determine bearing and range was taken from the Great Circle, * by S. R. Sampson, N5OWK. * Ref: "Air Navigation", Air Force Manual 51-40, 1 February 1987 * Ref: "ARRL Satellite Experimenters Handbook", August 1990 * * Code to calculate distance and azimuth between two Maidenhead locators, * taken from wwl, by IK0ZSN Mirko Caserta. * * New bearing code added by N0NB was found at: * http://williams.best.vwh.net/avform.htm#Crs * * * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /*! \page hamlib Hamlib general purpose API * * Here are grouped some often used functions, like locator conversion * routines. */ #ifdef HAVE_CONFIG_H #include "build-config.h" #endif #include #include #include #include #include #include "gpredict-utils.h" #include "locator.h" #ifndef DOC_HIDDEN #define RADIAN (180.0 / M_PI) /* arc length for 1 degree, 60 Nautical Miles */ #define ARC_IN_KM 111.2 /* The following is contributed by Dave Hines M1CXW * * begin dph */ /* * These are the constants used when converting between Maidenhead grid * locators and longitude/latitude values. MAX_LOCATOR_PAIRS is the maximum * number of locator character pairs to convert. This number MUST NOT exceed * the number of pairs of values in loc_char_range[]. * Setting MAX_LOCATOR_PAIRS to 3 will convert the currently defined 6 * character locators. A value of 4 will convert the extended 8 character * locators described in section 3L of "The IARU region 1 VHF managers * handbook". Values of 5 and 6 will extent the format even more, to the * longest definition I have seen for locators, see * http://www.btinternet.com/~g8yoa/geog/non-ra.html * Beware that there seems to be no universally accepted standard for 10 & 12 * character locators. * * The ranges of characters which will be accepted by locator2longlat, and * generated by longlat2locator, are specified by the loc_char_range[] array. * This array may be changed without requiring any other code changes. * * For the fifth pair to range from aa to xx use: * const static int loc_char_range[] = { 18, 10, 24, 10, 24, 10 }; * * For the fifth pair to range from aa to yy use: * const static int loc_char_range[] = { 18, 10, 24, 10, 25, 10 }; * * MAX_LOCATOR_PAIRS now sets the limit locator2longlat() will convert and * sets the maximum length longlat2locator() will generate. Each function * properly handles any value from 1 to 6 so MAX_LOCATOR_PAIRS should be * left at 6. MIN_LOCATOR_PAIRS sets a floor on the shortest locator that * should be handled. -N0NB */ static const int loc_char_range[] = { 18, 10, 24, 10, 24, 10 }; #define MAX_LOCATOR_PAIRS 6 #define MIN_LOCATOR_PAIRS 1 /* end dph */ #endif /* !DOC_HIDDEN */ /** * \brief Convert DMS to decimal degrees * \param degrees Degrees, whole degrees * \param minutes Minutes, whole minutes * \param seconds Seconds, decimal seconds * \param sw South or West * * Convert degree/minute/second angle to decimal degrees angle. * \a degrees >360, \a minutes > 60, and \a seconds > 60.0 are allowed, * but resulting angle won't be normalized. * * When the variable sw is passed a value of 1, the returned decimal * degrees value will be negative (south or west). When passed a * value of 0 the returned decimal degrees value will be positive * (north or east). * * \return The angle in decimal degrees. * * \sa dec2dms() */ double dms2dec (int degrees, int minutes, double seconds, int sw) { double st; if (degrees < 0) degrees = abs(degrees); if (minutes < 0) minutes = abs(minutes); if (seconds < 0) seconds = fabs(seconds); st = (double)degrees + (double)minutes / 60. + seconds / 3600.; if (sw == 1) return -st; else return st; } /** * \brief Convert D M.MMM notation to decimal degrees * \param degrees Degrees, whole degrees * \param minutes Minutes, decimal minutes * \param sw South or West * * Convert a degrees, decimal minutes notation common on * many GPS units to its decimal degrees value. * * \a degrees > 360, \a minutes > 60.0 are allowed, but * resulting angle won't be normalized. * * When the variable sw is passed a value of 1, the returned decimal * degrees value will be negative (south or west). When passed a * value of 0 the returned decimal degrees value will be positive * (north or east). * * \return The angle in decimal degrees. * * \sa dec2dmmm() */ double dmmm2dec (int degrees, double minutes, int sw) { double st; if (degrees < 0) degrees = abs(degrees); if (minutes < 0) minutes = fabs(minutes); st = (double)degrees + minutes / 60.; if (sw == 1) return -st; else return st; } /** * \brief Convert decimal degrees angle into DMS notation * \param dec Decimal degrees * \param degrees Pointer for the calculated whole Degrees * \param minutes Pointer for the calculated whole Minutes * \param seconds Pointer for the calculated decimal Seconds * \param sw Pointer for the calculated SW flag * * Convert decimal degrees angle into its degree/minute/second * notation. * * When \a dec < -180 or \a dec > 180, the angle will be normalized * within these limits and the sign set appropriately. * * Upon return dec2dms guarantees 0 >= \a degrees <= 180, * 0 >= \a minutes < 60, and 0.0 >= \a seconds < 60.0. * * When \a dec is < 0.0 \a sw will be set to 1. When \a dec is * >= 0.0 \a sw will be set to 0. This flag allows the application * to determine whether the DMS angle should be treated as negative * (south or west). * * \retval -RIG_EINVAL if any of the pointers are NULL. * \retval RIG_OK if conversion went OK. * * \sa dms2dec() */ int dec2dms (double dec, int *degrees, int *minutes, double *seconds, int *sw) { int deg, min; double st; /* bail if NULL pointers passed */ if (!degrees || !minutes || !seconds || !sw) return -RIG_EINVAL; /* reverse the sign if dec has a magnitude greater * than 180 and factor out multiples of 360. * e.g. when passed 270 st will be set to -90 * and when passed -270 st will be set to 90. If * passed 361 st will be set to 1, etc. If passed * a value > -180 || < 180, value will be unchanged. */ if (dec >= 0.0) st = fmod(dec + 180, 360) - 180; else st = fmod(dec - 180, 360) + 180; /* if after all of that st is negative, we want deg * to be negative as well except for 180 which we want * to be positive. */ if (st < 0.0 && st != -180) *sw = 1; else *sw = 0; /* work on st as a positive value to remove a * bug introduced by the effect of floor() when * passed a negative value. e.g. when passed * -96.8333 floor() returns -95! Also avoids * a rounding error introduced on negative values. */ st = fabs(st); deg = (int)floor(st); st = 60. * (st - (double)deg); min = (int)floor(st); st = 60. * (st - (double)min); *degrees = deg; *minutes = min; *seconds = st; return RIG_OK; } /** * \brief Convert a decimal angle into D M.MMM notation * \param dec Decimal degrees * \param degrees Pointer for the calculated whole Degrees * \param minutes Pointer for the calculated decimal Minutes * \param sw Pointer for the calculated SW flag * * Convert a decimal angle into its degree, decimal minute * notation common on many GPS units. * * When passed a value < -180 or > 180, the value will be normalized * within these limits and the sign set appropriately. * * Upon return dec2dmmm guarantees 0 >= \a degrees <= 180, * 0.0 >= \a minutes < 60.0. * * When \a dec is < 0.0 \a sw will be set to 1. When \a dec is * >= 0.0 \a sw will be set to 0. This flag allows the application * to determine whether the D M.MMM angle should be treated as negative * (south or west). * * \retval -RIG_EINVAL if any of the pointers are NULL. * \retval RIG_OK if conversion went OK. * * \sa dmmm2dec() */ int dec2dmmm (double dec, int *degrees, double *minutes, int *sw) { int r, min; double sec; /* bail if NULL pointers passed */ if (!degrees || !minutes || !sw) return -RIG_EINVAL; r = dec2dms(dec, degrees, &min, &sec, sw); if (r != RIG_OK) return r; *minutes = (double)min + sec / 60; return RIG_OK; } /** * \brief Convert Maidenhead grid locator to Longitude/Latitude * \param longitude Pointer for the calculated Longitude * \param latitude Pointer for the calculated Latitude * \param locator The Maidenhead grid locator--2 through 12 char + nul string * * Convert Maidenhead grid locator to Longitude/Latitude (decimal degrees). * The locator should be in 2 through 12 chars long format. * \a locator2longlat is case insensitive, however it checks for * locator validity. * * Decimal long/lat is computed to center of grid square, i.e. given * EM19 will return coordinates equivalent to the southwest corner * of EM19mm. * * \retval -RIG_EINVAL if locator exceeds RR99xx99xx99 or exceeds length * limit--currently 1 to 6 lon/lat pairs. * \retval RIG_OK if conversion went OK. * * \bug The fifth pair ranges from aa to xx, there is another convention * that ranges from aa to yy. At some point both conventions should be * supported. * * \sa longlat2locator() */ /* begin dph */ int locator2longlat (double *longitude, double *latitude, const char *locator) { int x_or_y, paircount; int locvalue, pair; int divisions; double xy[2], ordinate; /* bail if NULL pointers passed */ if (!longitude || !latitude) return -RIG_EINVAL; paircount = strlen(locator) / 2; /* verify paircount is within limits */ if (paircount > MAX_LOCATOR_PAIRS) paircount = MAX_LOCATOR_PAIRS; else if (paircount < MIN_LOCATOR_PAIRS) return -RIG_EINVAL; /* For x(=longitude) and y(=latitude) */ for (x_or_y = 0; x_or_y < 2; ++x_or_y) { ordinate = -90.0; divisions = 1; for (pair = 0; pair < paircount; ++pair) { locvalue = locator[pair*2 + x_or_y]; /* Value of digit or letter */ locvalue -= (loc_char_range[pair] == 10) ? '0' : (isupper(locvalue)) ? 'A' : 'a'; /* Check range for non-letter/digit or out of range */ if ((locvalue < 0) || (locvalue >= loc_char_range[pair])) return -RIG_EINVAL; divisions *= loc_char_range[pair]; ordinate += locvalue * 180.0 / divisions; } /* Center ordinate in the Maidenhead "square" or "subsquare" */ ordinate += 90.0 / divisions; xy[x_or_y] = ordinate; } *longitude = xy[0] * 2.0; *latitude = xy[1]; return RIG_OK; } /* end dph */ /** * \brief Convert longitude/latitude to Maidenhead grid locator * \param longitude Longitude, decimal degrees * \param latitude Latitude, decimal degrees * \param locator Pointer for the Maidenhead Locator * \param pair_count Precision expressed as lon/lat pairs in the locator * * Convert longitude/latitude (decimal degrees) to Maidenhead grid locator. * \a locator must point to an array at least \a pair_count * 2 char + '\\0'. * * \retval -RIG_EINVAL if \a locator is NULL or \a pair_count exceeds * length limit. Currently 1 to 6 lon/lat pairs. * \retval RIG_OK if conversion went OK. * * \bug \a locator is not tested for overflow. * \bug The fifth pair ranges from aa to yy, there is another convention * that ranges from aa to xx. At some point both conventions should be * supported. * * \sa locator2longlat() */ /* begin dph */ int longlat2locator(double longitude, double latitude, char *locator, int pair_count) { int x_or_y, pair, locvalue, divisions; double square_size, ordinate; if (!locator) return -RIG_EINVAL; if (pair_count < MIN_LOCATOR_PAIRS || pair_count > MAX_LOCATOR_PAIRS) return -RIG_EINVAL; for (x_or_y = 0; x_or_y < 2; ++x_or_y) { ordinate = (x_or_y == 0) ? longitude / 2.0 : latitude; divisions = 1; /* The 1e-6 here guards against floating point rounding errors */ ordinate = fmod(ordinate + 270.000001, 180.0); for (pair = 0; pair < pair_count; ++pair) { divisions *= loc_char_range[pair]; square_size = 180.0 / divisions; locvalue = (int) (ordinate / square_size); ordinate -= square_size * locvalue; locvalue += (loc_char_range[pair] == 10) ? '0':'A'; locator[pair * 2 + x_or_y] = locvalue; } } locator[pair_count * 2] = '\0'; return RIG_OK; } /* end dph */ /** * \brief Calculate the distance and bearing between two points. * \param lon1 The local Longitude, decimal degrees * \param lat1 The local Latitude, decimal degrees * \param lon2 The remote Longitude, decimal degrees * \param lat2 The remote Latitude, decimal degrees * \param distance Pointer for the distance, km * \param azimuth Pointer for the bearing, decimal degrees * * Calculate the QRB between \a lon1, \a lat1 and \a lon2, \a lat2. * * This version will calculate the QRB to a precision sufficient * for 12 character locators. Antipodal points, which are easily * calculated, are considered equidistant and the bearing is * simply resolved to be true north (0.0). * * \retval -RIG_EINVAL if NULL pointer passed or lat and lon values * exceed -90 to 90 or -180 to 180. * \retval RIG_OK if calculations are successful. * * \return The distance in kilometers and azimuth in decimal degrees * for the short path are stored in \a distance and \a azimuth. * * \sa distance_long_path(), azimuth_long_path() */ int qrb (double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth) { double delta_long, tmp, arc, az; /* bail if NULL pointers passed */ if (!distance || !azimuth) return -RIG_EINVAL; if ((lat1 > 90.0 || lat1 < -90.0) || (lat2 > 90.0 || lat2 < -90.0)) return -RIG_EINVAL; if ((lon1 > 180.0 || lon1 < -180.0) || (lon2 > 180.0 || lon2 < -180.0)) return -RIG_EINVAL; /* Prevent ACOS() Domain Error */ if (lat1 == 90.0) lat1 = 89.999999999; else if (lat1 == -90.0) lat1 = -89.999999999; if (lat2 == 90.0) lat2 = 89.999999999; else if (lat2 == -90.0) lat2 = -89.999999999; /* Convert variables to Radians */ lat1 /= RADIAN; lon1 /= RADIAN; lat2 /= RADIAN; lon2 /= RADIAN; delta_long = lon2 - lon1; tmp = sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(delta_long); if (tmp > .999999999999999) { /* Station points coincide, use an Omni! */ *distance = 0.0; *azimuth = 0.0; return RIG_OK; } if (tmp < -.999999) { /* * points are antipodal, it's straight down. * Station is equal distance in all Azimuths. * So take 180 Degrees of arc times 60 nm, * and you get 10800 nm, or whatever units... */ *distance = 180.0 * ARC_IN_KM; *azimuth = 0.0; return RIG_OK; } arc = acos(tmp); /* * One degree of arc is 60 Nautical miles * at the surface of the earth, 111.2 km, or 69.1 sm * This method is easier than the one in the handbook */ /* Short Path */ *distance = ARC_IN_KM * RADIAN * arc; /* This formula seems to work with very small distances * * I found it on the Web at: * http://williams.best.vwh.net/avform.htm#Crs * * Strangely, all the computed values were negative thus the * sign reversal below. * - N0NB */ az = RADIAN * fmod(atan2(sin(lon1 - lon2) * cos(lat2), cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon1 - lon2)), 2 * M_PI); if (lon1 > lon2) { az -= 360.; *azimuth = -az; } else { if (az >= 0.0) *azimuth = az; else *azimuth = -az; } return RIG_OK; } /** * \brief Calculate the long path distance between two points. * \param distance The shortpath distance * * Calculate the long path (respective of the short path) * of a given distance. * * \return the distance in kilometers for the opposite path. * * \sa qrb() */ double distance_long_path (double distance) { return (ARC_IN_KM * 360.0) - distance; } /** * \brief Calculate the long path bearing between two points. * \param azimuth The shortpath bearing * * Calculate the long path (respective of the short path) * of a given bearing. * * \return the azimuth in decimal degrees for the opposite path. * * \sa qrb() */ double azimuth_long_path (double azimuth) { return 360.0 - azimuth; } gpredict/src/locator.h000066400000000000000000000037511427377236300153060ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef LOCATOR_H #define LOCATOR_H 1 #define RIG_OK 0 #define RIG_EINVAL 1 int qrb (double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth); double distance_long_path (double distance); double azimuth_long_path (double azimuth); int longlat2locator (double longitude, double latitude, char *locator, int pair_count); int locator2longlat (double *longitude, double *latitude, const char *locator); double dms2dec (int degrees, int minutes, double seconds, int sw); int dec2dms (double dec, int *degrees, int *minutes, double *seconds, int *sw); int dec2dmmm (double dec, int *degrees, double *minutes, int *sw); double dmmm2dec (int degrees, double minutes, int sw); #endif gpredict/src/main.c000066400000000000000000000455531427377236300145700ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #ifdef WIN32 #include #endif #include "compat.h" #include "gtk-sat-selector.h" #include "gui.h" #include "first-time.h" #include "tle-update.h" #include "mod-mgr.h" #include "sat-cfg.h" #include "sat-log.h" /* Main application widget. */ GtkWidget *app; /* Command line flag for cleaning TLE data. */ static gboolean cleantle = FALSE; /* Command line flag for cleaning TRSP data */ static gboolean cleantrsp = FALSE; /* Command line options. */ static GOptionEntry entries[] = { {"clean-tle", 0, 0, G_OPTION_ARG_NONE, &cleantle, "Clean the TLE data in user's configuration directory", NULL}, {"clean-trsp", 0, 0, G_OPTION_ARG_NONE, &cleantrsp, "Clean the transponder data in user's configuration directory", NULL}, {NULL} }; const gchar *dummy = N_("just to have a pot"); /* ID of TLE monitoring task */ static guint tle_mon_id = 0; /* flag indicating whether TLE update is running */ static gboolean tle_upd_running = FALSE; /* flag indicating whether user has been notified of TLE update */ static gboolean tle_upd_note_sent = FALSE; /* private function prototypes */ static void gpredict_app_create(void); static gint gpredict_app_delete(GtkWidget *, GdkEvent *, gpointer); static void gpredict_app_destroy(GtkWidget *, gpointer); static gboolean gpredict_app_config(GtkWidget *, GdkEventConfigure *, gpointer); static void gpredict_sig_handler(int sig); static gboolean tle_mon_task(gpointer data); static void tle_mon_stop(void); static gpointer update_tle_thread(gpointer data); static void clean_tle(void); static void clean_trsp(void); #ifdef G_OS_WIN32 static void InitWinSock2(void); static void CloseWinSock2(void); #endif int main(int argc, char *argv[]) { GError *err = NULL; GOptionContext *context; guint error = 0; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); textdomain(PACKAGE); #endif gtk_init(&argc, &argv); context = g_option_context_new(""); g_option_context_add_main_entries(context, entries, GETTEXT_PACKAGE); g_option_context_set_summary(context, _("Gpredict is a graphical real-time satellite " "tracking and orbit prediction program.\n" "Gpredict does not require any command line " "options for nominal operation.")); g_option_context_add_group(context, gtk_get_option_group(TRUE)); if (!g_option_context_parse(context, &argc, &argv, &err)) g_print(_("Option parsing failed: %s\n"), err->message); sat_log_init(); sat_cfg_load(); sat_log_set_level(sat_cfg_get_int(SAT_CFG_INT_LOG_LEVEL)); if (cleantle) clean_tle(); if (cleantrsp) clean_trsp(); /* check that user settings are ok */ error = first_time_check_run(); if (error) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("User config check failed (code %d). This is fatal.\n" "A possible solution would be to remove the " ".config/Gpredict data dir in your home directory"), error); return 1; } /* create application */ gpredict_app_create(); gtk_widget_show_all(app); //sat_debugger_run (); /* launch TLE monitoring task; 10 min interval */ tle_mon_id = g_timeout_add(600000, tle_mon_task, NULL); #ifdef WIN32 // Initializing Windozze Sockets InitWinSock2(); #endif gtk_main(); g_option_context_free(context); sat_cfg_save(); sat_log_close(); sat_cfg_close(); #ifdef WIN32 CloseWinSock2(); #endif return 0; } #ifdef WIN32 /* This code was given from MSDN */ static void InitWinSock2(void) { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ return; } /* Confirm that the WinSock DLL supports 2.2. */ /* Note that if the DLL supports versions later */ /* than 2.2 in addition to 2.2, it will still return */ /* 2.2 in wVersion since that is the version we */ /* requested. */ if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ WSACleanup(); return; } } static void CloseWinSock2(void) { WSACleanup(); } #endif /** * Create main application window. * * @return A new top level window as as GtkWidget. * * This function creates and initialises the main application window. * This function does not create any contents; that part is done in the * gpredict_gui package. * */ static void gpredict_app_create() { gchar *title; gchar *icon; /* create window title and file name for window icon */ title = g_strdup(_("Gpredict")); icon = logo_file_name("gpredict_icon_color.svg"); /* create window, add title and icon, restore size and position */ app = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(app), title); /* restore window position and size if requested by config */ /* trunk/gtk/gtkblist.c */ /* size is always restored */ gtk_window_set_default_size(GTK_WINDOW(app), sat_cfg_get_int(SAT_CFG_INT_WINDOW_WIDTH), sat_cfg_get_int(SAT_CFG_INT_WINDOW_HEIGHT)); /* position restored only if requested in config */ if (sat_cfg_get_bool(SAT_CFG_BOOL_MAIN_WIN_POS)) { gtk_window_move(GTK_WINDOW(app), sat_cfg_get_int(SAT_CFG_INT_WINDOW_POS_X), sat_cfg_get_int(SAT_CFG_INT_WINDOW_POS_Y)); } gtk_container_add(GTK_CONTAINER(app), gui_create(app)); if (g_file_test(icon, G_FILE_TEST_EXISTS)) gtk_window_set_icon_from_file(GTK_WINDOW(app), icon, NULL); g_free(title); g_free(icon); /* connect delete and destroy signals */ g_signal_connect(G_OBJECT(app), "delete_event", G_CALLBACK(gpredict_app_delete), NULL); g_signal_connect(G_OBJECT(app), "configure_event", G_CALLBACK(gpredict_app_config), NULL); g_signal_connect(G_OBJECT(app), "destroy", G_CALLBACK(gpredict_app_destroy), NULL); signal(SIGTERM, gpredict_sig_handler); signal(SIGINT, gpredict_sig_handler); signal(SIGABRT, gpredict_sig_handler); } /** * Handle terminate signals. * * @param sig The signal that has been received. * * This function is used to handle termination signals received by the program. * The currently caught signals are SIGTERM, SIGINT and SIGABRT. When one of these * signals is received, the function sends an error message to logger and tries * to make a clean exit. */ static void gpredict_sig_handler(int sig) { g_print("Received signal: %d\n", sig); gtk_widget_destroy(app); } /** * Handle delete events. * * @param widget The widget which received the delete event signal. * @param event Data structure describing the event. * @param data User data (NULL). * @param return Always FALSE to indicate that the app should be destroyed. * * This function handles the delete event received by the main application * window (eg. when the window is closed by the WM). This function simply * returns FALSE indicating that the main application window should be * destroyed by emitting the destroy signal. * */ static gint gpredict_app_delete(GtkWidget * widget, GdkEvent * event, gpointer data) { (void)widget; (void)event; (void)data; return FALSE; } /** * Handle destroy signals. * * @param widget The widget which received the signal. * @param data User data (NULL). * * This function is called when the main application window receives the * destroy signal, ie. it is destroyed. This function signals all daemons * and other threads to stop and exits the Gtk+ main loop. */ static void gpredict_app_destroy(GtkWidget * widget, gpointer data) { (void)widget; (void)data; /* stop TLE monitoring task */ tle_mon_stop(); /* GUI timers are stopped automatically */ mod_mgr_save_state(); /* not good, have to use configure event instead (see API doc) */ /* gtk_window_get_size (GTK_WINDOW (app), &w, &h); sat_cfg_set_int (SAT_CFG_INT_WINDOW_WIDTH, w); sat_cfg_set_int (SAT_CFG_INT_WINDOW_HEIGHT, h); */ gtk_main_quit(); } /** * Snoop window position and size when main window receives configure event. * * @param widget Pointer to the gpredict main window. * @param event Pointer to the even structure. * @param data Pointer to user data (always NULL). * * This function is used to trap configure events in order to store the current * position and size of the main window. * * @note unfortunately GdkEventConfigure ignores the window gravity, while * the only way we have of setting the position doesn't. We have to * call get_position because it does pay attention to the gravity. * * @note The logic in the code has been borrowed from gaim/pidgin http://pidgin.im/ * */ static gboolean gpredict_app_config(GtkWidget * widget, GdkEventConfigure * event, gpointer data) { gint x, y, w, h; (void)data; /* data is only useful when window is visible */ if (gtk_widget_get_visible(widget)) gtk_window_get_position(GTK_WINDOW(widget), &x, &y); else return FALSE; #ifdef G_OS_WIN32 /* Workaround for GTK+ bug # 169811 - "configure_event" is fired when the window is being maximized */ if (gdk_window_get_state(gtk_widget_get_window(widget)) & GDK_WINDOW_STATE_MAXIMIZED) { return FALSE; } #endif /* don't save off-screen positioning */ /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 w = gdk_screen_width(); h = gdk_screen_height(); #else GdkWindow *window; GdkDisplay *display; GdkMonitor *monitor; GdkRectangle work_area; /* https://gitlab.gnome.org/GNOME/gtk/-/issues/1028 */ window = gtk_widget_get_window(widget); display = gtk_widget_get_display(widget); monitor = gdk_display_get_monitor_at_window(display, window); gdk_monitor_get_workarea(monitor, &work_area); w = work_area.width; h = work_area.height; #endif if (x < 0 || y < 0 || x + event->width > w || y + event->height > h) { return FALSE; } /* store the position and size */ sat_cfg_set_int(SAT_CFG_INT_WINDOW_POS_X, x); sat_cfg_set_int(SAT_CFG_INT_WINDOW_POS_Y, y); sat_cfg_set_int(SAT_CFG_INT_WINDOW_WIDTH, event->width); sat_cfg_set_int(SAT_CFG_INT_WINDOW_HEIGHT, event->height); /* continue to handle event normally */ return FALSE; } /** * Monitor TLE age. * * This function is called periodically in order to check * whether it is time to update the TLE elements. * * If the time to update the TLE has come, it will either notify * the user, or fork a separate task which will update the TLE data * in the background (depending on user settings). * * In case of notification, the task will be removed in order to * avoid a new notification the next time the taks would be run. */ static gboolean tle_mon_task(gpointer data) { /*GtkWidget *selector; */ glong last, thrld; gint64 now; GtkWidget *dialog; GError *err = NULL; if (data != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Passed a non-null pointer which should never happen.\n"), __func__); } /* get time of last update */ last = sat_cfg_get_int(SAT_CFG_INT_TLE_LAST_UPDATE); /* get current time */ now = g_get_real_time() / G_USEC_PER_SEC; /* threshold */ switch (sat_cfg_get_int(SAT_CFG_INT_TLE_AUTO_UPD_FREQ)) { case TLE_AUTO_UPDATE_MONTHLY: thrld = 2592000; break; case TLE_AUTO_UPDATE_WEEKLY: thrld = 604800; break; case TLE_AUTO_UPDATE_DAILY: thrld = 86400; break; /* set default to "infinite" */ default: thrld = G_MAXLONG; break; } if ((now - last) < thrld) { /* too early */ /* sat_log_log (SAT_LOG_LEVEL_DEBUG, */ /* _("%s: Threshold has not been passed yet."), */ /* __func__, last, now, thrld); */ } else { /* time to update */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Time threshold has been passed."), __func__); /* find out what to do */ if (sat_cfg_get_int(SAT_CFG_INT_TLE_AUTO_UPD_ACTION) == TLE_AUTO_UPDATE_GOAHEAD) { /* start update process in separate thread */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Starting new update thread."), __func__); /** FIXME: store thread and destroy on exit? **/ g_thread_try_new(_("gpredict_tle_update"), update_tle_thread, NULL, &err); if (err != NULL) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to create TLE update thread (%s)"), __func__, err->message); } else if (!tle_upd_note_sent) { /* notify user */ dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(app), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _ ("Your TLE files are getting out of date.\n" "You can update them by selecting\n" "Edit -> Update TLE\n" "in the menubar.")); /* Destroy the dialog when the user responds to it (e.g. clicks a button) */ g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_widget_show_all(dialog); tle_upd_note_sent = TRUE; } } return TRUE; } /* Stop TLE monitoring and any pending updates. */ static void tle_mon_stop() { gboolean retcode; if (tle_mon_id) { retcode = g_source_remove(tle_mon_id); if (!retcode) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not find TLE monitoring task (ID = %d)"), __func__, tle_mon_id); } /* if TLE update is running wait until it is finished */ while (tle_upd_running) { g_usleep(1000); } } /* Thread function which invokes TLE update */ static gpointer update_tle_thread(gpointer data) { (void)data; tle_upd_running = TRUE; tle_update_from_network(TRUE, NULL, NULL, NULL); tle_upd_running = FALSE; return NULL; } /* * Clean TLE data. * * This function removes all .sat files from the user's configuration directory. * The function is called when gpreidict is executed with the --clean-tle * command line option. */ static void clean_tle(void) { GDir *targetdir; gchar *targetdirname, *path; const gchar *filename; /* Get trsp directory */ targetdirname = get_satdata_dir(); targetdir = g_dir_open(targetdirname, 0, NULL); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Cleaning TLE data in %s"), __func__, targetdirname); while ((filename = g_dir_read_name(targetdir))) { if (g_str_has_suffix(filename, ".sat")) { /* remove .sat file */ path = sat_file_name(filename); if G_UNLIKELY (g_unlink(path)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to delete %s"), __func__, filename); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Removed %s"), __func__, filename); } g_free(path); } } g_free(targetdirname); } /* * Clean transponder data. * * This function removes all .trsp files from the user's configuration directory. * The function is called when gpredict is executed with the --clean-trsp * command line option. */ static void clean_trsp(void) { GDir *targetdir; gchar *targetdirname, *path; const gchar *filename; /* Get trsp directory */ targetdirname = get_trsp_dir(); targetdir = g_dir_open(targetdirname, 0, NULL); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Cleaning transponder data in %s"), __func__, targetdirname); while ((filename = g_dir_read_name(targetdir))) { if (g_str_has_suffix(filename, ".trsp")) { /* remove .trsp file */ path = trsp_file_name(filename); if G_UNLIKELY (g_unlink(path)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to delete %s"), __func__, filename); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Removed %s"), __func__, filename); } g_free(path); } } g_free(targetdirname); } gpredict/src/map-selector.c000066400000000000000000000225611427377236300162310ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "compat.h" #include "map-selector.h" #include "sat-log.h" /** * Convert map filesize into a human readable format * * @param size Size in bytes. * @param buffer Destination buffer or NULL to dynamically allocate a buffer. * @param buflen Length of @buffer in bytes. * @return A string containing a human readable description of size. * * The caller is responsible to free the returned string using g_free() * if you pass NULL for buffer. Else the returned string will be a * pointer to buffer. * * Credits: Thunar (XFCE file manager). * **/ static gchar *get_map_humanize_size(gint64 size, gchar * buffer, gsize buflen) { /* allocate buffer if necessary */ if (buffer == NULL) { buffer = g_new(gchar, 32); buflen = 32; } if (size > 1024l * 1024l * 1024l) g_snprintf(buffer, buflen, "%0.1f GB", size / (1024.f * 1024.f * 1024.f)); else if (size > 1024l * 1024l) g_snprintf(buffer, buflen, "%0.1f MB", size / (1024.f * 1024.f)); else if (size > 1024) g_snprintf(buffer, buflen, "%0.1f kB", size / 1024.f); else g_snprintf(buffer, buflen, "%lu B", (gulong) size); return buffer; } static GtkWidget *create_preview_widget(const gchar * selection) { GtkWidget *vbox; GtkWidget *img; GtkWidget *label; GdkPixbuf *obuf, *sbuf; gchar *buff; gint w, h; gint64 size; struct stat sb; gchar *bf = NULL; label = gtk_label_new(NULL); img = gtk_image_new(); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); g_object_set_data(G_OBJECT(vbox), "image", img); g_object_set_data(G_OBJECT(vbox), "label", label); gtk_box_pack_start(GTK_BOX(vbox), img, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); gtk_widget_show_all(vbox); /* load current map into preview widget */ obuf = gdk_pixbuf_new_from_file(selection, NULL); if (G_LIKELY(obuf != NULL)) { /* store data */ w = gdk_pixbuf_get_width(obuf); h = gdk_pixbuf_get_height(obuf); /* try to stat the file */ if (G_UNLIKELY(g_stat(selection, &sb) < 0)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Could not stat %s"), __FILE__, __LINE__, selection); size = 0; } else { size = sb.st_size; } bf = get_map_humanize_size(size, bf, 0); buff = g_strdup_printf("%dx%d pixels\n%s", w, h, bf); gtk_label_set_text(GTK_LABEL(label), buff); g_free(buff); g_free(bf); /* scale the pixbuf */ sbuf = gdk_pixbuf_scale_simple(obuf, 160, 80, GDK_INTERP_HYPER); g_object_unref(obuf); /* update the GtkImage from the pixbuf */ gtk_image_set_from_pixbuf(GTK_IMAGE(img), sbuf); g_object_unref(sbuf); } else { gtk_image_set_from_icon_name(GTK_IMAGE(img), "image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR); } return vbox; } static void update_preview_widget(GtkFileChooser * chooser, gpointer data) { GtkWidget *box = GTK_WIDGET(data); GtkImage *img = GTK_IMAGE(g_object_get_data(G_OBJECT(box), "image")); GtkLabel *lab = GTK_LABEL(g_object_get_data(G_OBJECT(box), "label")); gchar *sel = NULL; GdkPixbuf *obuf, *sbuf; gint w, h; gint64 size; struct stat sb; gchar *buff = NULL; sel = gtk_file_chooser_get_preview_filename(chooser); if (sel != NULL) { obuf = gdk_pixbuf_new_from_file(sel, NULL); /* try to stat the file */ if (g_stat(sel, &sb) < 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Could not stat %s"), __FILE__, __LINE__, sel); size = 0; } else { size = sb.st_size; } g_free(sel); if (obuf != NULL) { /* store data */ w = gdk_pixbuf_get_width(obuf); h = gdk_pixbuf_get_height(obuf); buff = get_map_humanize_size(size, buff, 0); sel = g_strdup_printf("%dx%d pixels\n%s", w, h, buff); gtk_label_set_text(lab, sel); g_free(sel); g_free(buff); /* scale the pixbuf */ sbuf = gdk_pixbuf_scale_simple(obuf, 160, 80, GDK_INTERP_HYPER); g_object_unref(obuf); /* update the GtkImage from the pixbuf */ gtk_image_clear(img); gtk_image_set_from_pixbuf(img, sbuf); g_object_unref(sbuf); /* report success */ gtk_file_chooser_set_preview_widget_active(chooser, TRUE); } else { gtk_image_clear(img); gtk_image_set_from_icon_name(GTK_IMAGE(img), "image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR); /* report failure */ gtk_file_chooser_set_preview_widget_active(chooser, FALSE); } } } /** * Run map selector. * * @param curmap The name of the current map. * @return A newly allocated string with filename of the selected map * or NULL if action was cancelled. * * This function creates and executes a file chooser dialog * and selects the currently selected map curmap. The file chooser dialogue * has a custom map preview widget showing the scaled down copty of * the selected map as well as the size of the map. */ gchar *select_map(const gchar * curmap) { GtkWidget *chooser; GtkFileFilter *filter; gchar *selection; gchar *mapsdir; gchar *ret = NULL; GtkWidget *preview; /* we are going to need this as a shortcut folder and to find out whether selected map is stock or user specific */ mapsdir = get_maps_dir(); /* create a new file chooser dialogue in "open file" mode */ chooser = gtk_file_chooser_dialog_new(_("Select Map"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, "_Cancel", GTK_RESPONSE_CANCEL, "_Open", GTK_RESPONSE_ACCEPT, NULL); /* single selection only */ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), FALSE); /* add shortcut */ gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(chooser), mapsdir, NULL); /* create filter */ filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Image files")); gtk_file_filter_add_pixbuf_formats(filter); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); /* select current map file */ if (g_path_is_absolute(curmap)) { /* map is user specific, ie. in USER_CONF_DIR/maps/ */ selection = g_strdup(curmap); } else { /* build complete path */ selection = map_file_name(curmap); } gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(chooser), selection); /* preview widget */ preview = create_preview_widget(selection); gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(chooser), preview); gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(chooser), TRUE); /* sig connect */ g_signal_connect(G_OBJECT(chooser), "update-preview", G_CALLBACK(update_preview_widget), preview); /* we don't need this anymore */ g_free(selection); /* run the dialogue */ if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); /* find out whether selected file is a stock map or user map */ if (g_str_has_prefix(filename, mapsdir)) { /* selected map is a stock map */ /* get file name without dir component */ ret = g_path_get_basename(filename); } else { ret = g_strdup(filename); } /* clean up */ g_free(filename); } gtk_widget_destroy(chooser); g_free(mapsdir); return ret; } gpredict/src/map-selector.h000066400000000000000000000001531427377236300162270ustar00rootroot00000000000000#ifndef MAP_SELECTOR_H #define MAP_SELECTOR_H 1 gchar *select_map(const gchar * curmap); #endif gpredict/src/map-tools.c000066400000000000000000000076151427377236300155540ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2013 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #ifdef HAVE_CONFIG_H # include #endif /*! \brief Rotate map to be centered around a specific longitude. * \param in Input map centered around 0 degrees longitude. * \param out Output map that will be centered around clon. Must have the same * dimension and color space as the input map. * \param clon The longitude that should be at center between -180 and 180 degrees (East positive). * * This function will rotate the input map to be centered around the specified longitude. * The output map must be pre-allocated and have the sae width, height and colorspace as the input * map. The longitude parameter must be between -180 and 180 degrees with negative values meaning * West of Greenwich,positive values meaning East of Greenwich. */ void map_tools_shift_center(GdkPixbuf *in, GdkPixbuf *out, float clon) { if (clon > 180.0) clon = 180.0; else if (clon < -180.0) clon = -180.0; int lon_x = round((clon+180.0) * gdk_pixbuf_get_width(in)/360.0); int img_w = gdk_pixbuf_get_width(in); int img_h = gdk_pixbuf_get_height(in); if (clon < 0.0) { /* copy left side to right */ gdk_pixbuf_copy_area(in, 0, 0, lon_x + img_w/2, img_h, out, img_w - (lon_x + img_w/2), 0); /* copy right side to left */ gdk_pixbuf_copy_area(in, lon_x + img_w/2, 0, img_w - (lon_x + img_w/2), img_h, out, 0, 0); } else if (clon > 0.0) { /* copy left side to right */ gdk_pixbuf_copy_area(in, 0, 0, lon_x - img_w/2, img_h, out, img_w - (lon_x - img_w/2), 0); /* copy right side to left */ gdk_pixbuf_copy_area(in, lon_x - img_w/2, 0, img_w - (lon_x - img_w/2), img_h, out, 0, 0); } else { /* no shifting of center */ gdk_pixbuf_copy_area(in, 0, 0, img_w, img_h, out, 0, 0); } } gpredict/src/map-tools.h000066400000000000000000000023201427377236300155450ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2013 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #ifdef HAVE_CONFIG_H # include #endif void map_tools_shift_center(GdkPixbuf *in, GdkPixbuf *out, float clon); gpredict/src/menubar.c000066400000000000000000001026261427377236300152700ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "about.h" #include "compat.h" #include "config-keys.h" #include "gpredict-help.h" #include "gpredict-utils.h" #include "gtk-sat-module.h" #include "gtk-sat-module-popup.h" #include "menubar.h" #include "mod-cfg.h" #include "mod-mgr.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-log-browser.h" #include "sat-pref.h" #include "tle-update.h" #include "trsp-update.h" extern GtkWidget *app; /* Create new module */ static void menubar_new_mod_cb(GtkWidget * widget, gpointer data) { gchar *modnam = NULL; gchar *modfile; gchar *confdir; GtkWidget *module = NULL; (void)widget; (void)data; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Starting new module configurator..."), __func__); modnam = mod_cfg_new(); if (modnam) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: New module name is %s."), __func__, modnam); confdir = get_modules_dir(); modfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, modnam, ".mod", NULL); g_free(confdir); /* create new module */ module = gtk_sat_module_new(modfile); if (module == NULL) { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not open %s. " "Please examine the log messages " "for details."), modnam); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { mod_mgr_add_module(module, TRUE); } g_free(modnam); g_free(modfile); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: New module config cancelled."), __func__); } } /* * Create a module window. * * This function is used to create a module window when opening modules * that should not be packed into the notebook. */ static void create_module_window(GtkWidget * module) { gint w, h; gchar *icon; /* icon file name */ gchar *title; /* window title */ GtkAllocation aloc; gtk_widget_get_allocation(module, &aloc); /* get stored size; use size from main window if size not explicitly stoed */ if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL)) { w = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL); } else { w = aloc.width; } if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL)) { h = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL); } else { h = aloc.height; } /* create window */ GTK_SAT_MODULE(module)->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); title = g_strconcat(_("GPREDICT: "), GTK_SAT_MODULE(module)->name, " (", GTK_SAT_MODULE(module)->qth->name, ")", NULL); gtk_window_set_title(GTK_WINDOW(GTK_SAT_MODULE(module)->win), title); g_free(title); gtk_window_set_default_size(GTK_WINDOW(GTK_SAT_MODULE(module)->win), w, h); g_signal_connect(G_OBJECT(GTK_SAT_MODULE(module)->win), "configure_event", G_CALLBACK(module_window_config_cb), module); /* window icon */ icon = icon_file_name("gpredict-icon.png"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) { gtk_window_set_icon_from_file(GTK_WINDOW(GTK_SAT_MODULE(module)->win), icon, NULL); } g_free(icon); /* move window to stored position if requested by configuration */ if (sat_cfg_get_bool(SAT_CFG_BOOL_MOD_WIN_POS) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)) { gtk_window_move(GTK_WINDOW(GTK_SAT_MODULE(module)->win), g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL), g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)); } /* add module to window */ gtk_container_add(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), module); /* show window */ gtk_widget_show_all(GTK_SAT_MODULE(module)->win); /* reparent time manager window if visible */ if (GTK_SAT_MODULE(module)->tmgActive) { gtk_window_set_transient_for(GTK_WINDOW (GTK_SAT_MODULE(module)->tmgWin), GTK_WINDOW(GTK_SAT_MODULE(module)->win)); } } /* * Manage row activated (double click) event in the module selector window. * * This event handler is triggered when the user double clicks on a row in the * "Open module" dialog window. This function will simply emit GTK_RESPONSE_OK * which will be interpreted as if th euser clicked on the OK button. */ static void select_module_row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer data) { GtkDialog *dialog = GTK_DIALOG(data); (void)tree_view; (void)path; (void)column; gtk_dialog_response(dialog, GTK_RESPONSE_OK); } static gint compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata) { gchar *sat1, *sat2; gint ret = 0; (void)userdata; /* avoid unused parameter compiler warning */ gtk_tree_model_get(model, a, 0, &sat1, -1); gtk_tree_model_get(model, b, 0, &sat2, -1); ret = gpredict_strcmp(sat1, sat2); g_free(sat1); g_free(sat2); return ret; } static gchar *select_module() { GtkWidget *dialog; /* the dialog window */ GtkWidget *modlist; /* the treeview widget */ GtkListStore *liststore; /* the list store data structure */ GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeIter item; /* new item added to the list store */ GtkTreeSelection *selection; GtkTreeModel *selmod; GtkTreeModel *listtreemodel; GtkWidget *swin; GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ const gchar *filename; /* file name */ gchar **buffv; guint count = 0; /* create and fill data model */ liststore = gtk_list_store_new(1, G_TYPE_STRING); /* scan for .mod files in the user config directory and add the contents of each .mod file to the list store */ dirname = get_modules_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Scanning directory %s for modules."), __FILE__, __func__, dirname); while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".mod")) { /* strip extension and add to list */ buffv = g_strsplit(filename, ".mod", 0); gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, 0, buffv[0], -1); g_strfreev(buffv); count++; } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open module dir %s (%s)"), __FILE__, __LINE__, dirname, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); if (count < 1) { /* tell user that there are no modules, try "New" instead */ dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("You do not have any modules " "set up yet. Please use File->New " "in order to create a module.")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); return NULL; } /* create tree view */ modlist = gtk_tree_view_new(); listtreemodel = GTK_TREE_MODEL(liststore); gtk_tree_view_set_model(GTK_TREE_VIEW(modlist), listtreemodel); g_object_unref(liststore); /* connecting row activated signal postponed so that we can attach dialog window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); /* sort the tree by name */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(listtreemodel), 0, compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(listtreemodel), 0, GTK_SORT_ASCENDING); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Module"), renderer, "text", 0, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(modlist), column, -1); gtk_widget_show(modlist); /* create dialog */ dialog = gtk_dialog_new_with_buttons(_("Select a module"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_CANCEL, "_OK", GTK_RESPONSE_OK, NULL); gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 200); gtk_container_add(GTK_CONTAINER(swin), modlist); gtk_widget_show(swin); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), swin, TRUE, TRUE, 0); /* double clicking in list will open clicked module */ g_signal_connect(modlist, "row-activated", G_CALLBACK(select_module_row_activated_cb), dialog); switch (gtk_dialog_run(GTK_DIALOG(dialog))) { /* user pressed OK */ case GTK_RESPONSE_OK: selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(modlist)); if (gtk_tree_selection_get_selected(selection, &selmod, &item)) { gtk_tree_model_get(selmod, &item, 0, &dirname, -1); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Selected module is: %s"), __FILE__, __func__, dirname); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: No selection is list of modules."), __FILE__, __func__); dirname = NULL; } break; /* everything else is regarded as CANCEL */ default: dirname = NULL; break; } gtk_widget_destroy(dialog); return dirname; } static void menubar_open_mod_cb(GtkWidget * widget, gpointer data) { gchar *modnam = NULL; gchar *modfile; gchar *confdir; GtkWidget *module = NULL; (void)widget; (void)data; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Open existing module..."), __func__); modnam = select_module(); if (modnam) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Open module %s."), __func__, modnam); confdir = get_modules_dir(); modfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, modnam, ".mod", NULL); g_free(confdir); /* create new module */ module = gtk_sat_module_new(modfile); if (module == NULL) { /* mod manager could not create the module */ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not open %s. " "Please examine the log " "messages for details."), modnam); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { /* if module state was window or user does not want to restore the state of the modules, pack the module into the notebook */ if ((GTK_SAT_MODULE(module)->state == GTK_SAT_MOD_STATE_DOCKED) || !sat_cfg_get_bool(SAT_CFG_BOOL_MOD_STATE)) { mod_mgr_add_module(module, TRUE); } else { mod_mgr_add_module(module, FALSE); create_module_window(module); } } g_free(modnam); g_free(modfile); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Open module cancelled."), __func__); } } static void menubar_message_log(GtkWidget * widget, gpointer data) { (void)widget; (void)data; sat_log_browser_open(); } static void menubar_app_exit_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; gtk_widget_destroy(app); } static void menubar_pref_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; sat_pref_run(); } /* Update Frequency information from Network */ static void menubar_trsp_net_cb(GtkWidget * widget, gpointer data) { GtkWidget *dialog; GtkWidget *label; GtkWidget *progress; GtkWidget *label1, *label2; GtkWidget *box; (void)widget; (void)data; /* create new dialog with progress indicator */ dialog = gtk_dialog_new_with_buttons(_("Transponder Update"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Close", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); /* create a vbox */ box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_container_set_border_width(GTK_CONTAINER(box), 20); /* add static label */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.5, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Updating transponder files from network")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); /* activity label */ label1 = gtk_label_new("..."); g_object_set(label1, "xalign", 0.5, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(box), label1, FALSE, FALSE, 0); /* add progress bar */ progress = gtk_progress_bar_new(); gtk_box_pack_start(GTK_BOX(box), progress, FALSE, FALSE, 10); /* statistics */ label2 = gtk_label_new(_("\n")); gtk_box_pack_start(GTK_BOX(box), label2, TRUE, TRUE, 0); /* finalise dialog */ gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), box); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_widget_show_all(dialog); /* Force the drawing queue to be processed otherwise the dialog may not appear before we enter the TRSP updating func - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); /* update TRSP */ trsp_update_from_network(FALSE, progress, label1, label2); /* set progress bar to 100% */ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 1.0); gtk_label_set_text(GTK_LABEL(label1), _("Finished")); /* enable close button */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, TRUE); /* reload satellites */ mod_mgr_reload_sats(); } /* Update TLE from network */ static void menubar_tle_net_cb(GtkWidget * widget, gpointer data) { GtkWidget *dialog; GtkWidget *label; GtkWidget *progress; GtkWidget *label1, *label2; GtkWidget *box; (void)widget; (void)data; /* create new dialog with progress indicator */ dialog = gtk_dialog_new_with_buttons(_("TLE Update"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Close", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); /* create a vbox */ box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_container_set_border_width(GTK_CONTAINER(box), 20); /* add static label */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.5, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Updating TLE files from network")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); /* activity label */ label1 = gtk_label_new("..."); g_object_set(label1, "xalign", 0.5, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(box), label1, FALSE, FALSE, 0); /* add progress bar */ progress = gtk_progress_bar_new(); gtk_box_pack_start(GTK_BOX(box), progress, FALSE, FALSE, 10); /* statistics */ label2 = gtk_label_new(_("Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n")); gtk_box_pack_start(GTK_BOX(box), label2, TRUE, TRUE, 0); /* finalise dialog */ gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), box); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_widget_show_all(dialog); /* Force the drawing queue to be processed otherwise the dialog may not appear before we enter the TLE updating func - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); /* update TLE */ tle_update_from_network(FALSE, progress, label1, label2); /* set progress bar to 100% */ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 1.0); gtk_label_set_text(GTK_LABEL(label1), _("Finished")); /* enable close button */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, TRUE); /* reload satellites */ mod_mgr_reload_sats(); } /* Update TLE from local files */ static void menubar_tle_local_cb(GtkWidget * widget, gpointer data) { gchar *dir; /* selected directory */ GtkWidget *dir_chooser; /* directory chooser button */ GtkWidget *dialog; /* dialog window */ GtkWidget *label; /* misc labels */ GtkWidget *progress; /* progress indicator */ GtkWidget *label1, *label2; /* activitity and stats labels */ GtkWidget *box; gint response; /* dialog response */ gboolean doupdate = FALSE; (void)widget; (void)data; /* get last used directory */ dir = sat_cfg_get_str(SAT_CFG_STR_TLE_FILE_DIR); /* if there is no last used dir fall back to $HOME */ if (dir == NULL) { dir = g_strdup(g_get_home_dir()); } /* create file chooser */ dir_chooser = gtk_file_chooser_button_new(_("Select directory"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dir_chooser), dir); g_free(dir); /* create label */ label = gtk_label_new(_("Select TLE directory:")); /* pack label and chooser into a hbox */ box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(box), dir_chooser, TRUE, TRUE, 5); gtk_widget_show_all(box); /* create the dalog */ dialog = gtk_dialog_new_with_buttons(_("Update TLE from files"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_OK", GTK_RESPONSE_ACCEPT, NULL); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), box, TRUE, TRUE, 30); response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_ACCEPT) doupdate = TRUE; else doupdate = FALSE; /* get directory before we destroy the dialog */ dir = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dir_chooser)); /* nuke the dialog */ gtk_widget_destroy(dialog); if (doupdate) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Running TLE update from %s"), __func__, dir); /* store last used TLE dir */ sat_cfg_set_str(SAT_CFG_STR_TLE_FILE_DIR, dir); /* create new dialog with progress indicator */ dialog = gtk_dialog_new_with_buttons(_("TLE Update"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Close", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); /* create a vbox */ box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_container_set_border_width(GTK_CONTAINER(box), 20); /* add static label */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.5, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Updating TLE files from files")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); /* activity label */ label1 = gtk_label_new("..."); g_object_set(label1, "xalign", 0.5, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(box), label1, FALSE, FALSE, 0); /* add progress bar */ progress = gtk_progress_bar_new(); gtk_box_pack_start(GTK_BOX(box), progress, FALSE, FALSE, 10); /* statistics */ label2 = gtk_label_new(_("Satellites updated:\t 0\n" "Satellites skipped:\t 0\n" "Missing Satellites:\t 0\n")); gtk_box_pack_start(GTK_BOX(box), label2, TRUE, TRUE, 0); /* finalise dialog */ gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), box); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_widget_show_all(dialog); /* Force the drawing queue to be processed otherwise the dialog may not appear before we enter the TLE updating func - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); /* update TLE */ tle_update_from_files(dir, NULL, FALSE, progress, label1, label2); /* set progress bar to 100% */ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 1.0); gtk_label_set_text(GTK_LABEL(label1), _("Finished")); /* enable close button */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, TRUE); } if (dir) g_free(dir); /* reload satellites */ mod_mgr_reload_sats(); } static void menubar_help_cb(GtkWidget * widget, gpointer data) { GtkWidget *dialog; GtkWidget *button; (void)widget; (void)data; dialog = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("A comprehensive PDF user manual and \n" "video tutorials are available from the \n" "Gpredict website:")); button = gtk_link_button_new("http://gpredict.oz9aec.net/documents.php"); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), button, FALSE, FALSE, 0); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } static void menubar_license_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; gpredict_help_show_txt("COPYING"); } static void menubar_news_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; gpredict_help_show_txt("NEWS"); } static void menubar_about_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; about_dialog_create(); } #define ACCEL_PATH_QUIT g_intern_static_string("/File/Quit") static void create_file_menu_items(GtkMenuShell * menu, GtkAccelGroup * accel_group) { GtkWidget *menu_item; if (menu == NULL) return; menu_item = gtk_menu_item_new_with_mnemonic(_("_New module")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_new_mod_cb), NULL); gtk_widget_add_accelerator(menu_item, "activate", accel_group, GDK_KEY_n, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_Open module")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_open_mod_cb), NULL); gtk_widget_add_accelerator(menu_item, "activate", accel_group, GDK_KEY_o, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_separator_menu_item_new(); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_Log browser")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_message_log), NULL); gtk_widget_add_accelerator(menu_item, "activate", accel_group, GDK_KEY_l, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_separator_menu_item_new(); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_Quit")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_app_exit_cb), NULL); gtk_widget_add_accelerator(menu_item, "activate", accel_group, GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_menu_shell_append(menu, menu_item); } static void create_edit_menu_items(GtkMenuShell * menu) { GtkWidget *menu_item; if (menu == NULL) return; menu_item = gtk_menu_item_new_with_mnemonic(_("Update TLE data from _network")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_tle_net_cb), NULL); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("Update TLE data from local _files")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_tle_local_cb), NULL); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("Update transponder data")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_trsp_net_cb), NULL); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_separator_menu_item_new(); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_Preferences")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_pref_cb), NULL); gtk_menu_shell_append(menu, menu_item); } static void create_help_menu_items(GtkMenuShell * menu, GtkAccelGroup * accel_group) { GtkWidget *menu_item; if (menu == NULL) return; menu_item = gtk_menu_item_new_with_mnemonic(_("_Online help")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_help_cb), NULL); gtk_widget_add_accelerator(menu_item, "activate", accel_group, GDK_KEY_F1, 0, GTK_ACCEL_VISIBLE); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_separator_menu_item_new(); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_License")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_license_cb), NULL); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_News")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_news_cb), NULL); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_separator_menu_item_new(); gtk_menu_shell_append(menu, menu_item); menu_item = gtk_menu_item_new_with_mnemonic(_("_About Gpredict")); g_signal_connect(menu_item, "activate", G_CALLBACK(menubar_about_cb), NULL); gtk_menu_shell_append(menu, menu_item); } GtkWidget *menubar_create(GtkWidget * window) { GtkWidget *menubar; GtkWidget *submenu; GtkWidget *submenu_item; GtkAccelGroup *accel_group; (void)window; menubar = gtk_menu_bar_new(); accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); submenu = gtk_menu_new(); submenu_item = gtk_menu_item_new_with_mnemonic(_("_File")); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), submenu_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenu_item), submenu); create_file_menu_items(GTK_MENU_SHELL(submenu), accel_group); submenu = gtk_menu_new(); submenu_item = gtk_menu_item_new_with_mnemonic(_("_Edit")); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), submenu_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenu_item), submenu); create_edit_menu_items(GTK_MENU_SHELL(submenu)); submenu = gtk_menu_new(); submenu_item = gtk_menu_item_new_with_mnemonic(_("_Help")); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), submenu_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenu_item), submenu); create_help_menu_items(GTK_MENU_SHELL(submenu), accel_group); return menubar; } gpredict/src/menubar.h000066400000000000000000000001431427377236300152640ustar00rootroot00000000000000#ifndef MENUBAR_H #define MENUBAR_H 1 GtkWidget *menubar_create(GtkWidget * window); #endif gpredict/src/mod-cfg-get-param.c000066400000000000000000000156221427377236300170250ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * \brief Utilities to read module configuration parameters. * * This file contains utility functions that can can be used by modules * to read configuration parameters from the GKeyFile of the module. If * a parameter does not exist in the GKeyFile the corrersponding value * from sat-cfg will be returned. * * The intended use of these functions is to read parameters when creating * new modules. A module may have it's own configuration for most settings * while for some settings the global/default values may be needed. To avoid * too much repetitive coding in the module implementations, the functions * warp this code into one convenient function call. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "sat-cfg.h" #include "sat-log.h" /** * \brief Get boolean parameter. * \param f The configuration data for the module. * \param sec Configuration section in the cfg data (see config-keys.h). * \param key Configuration key in the cfg data (see config-keys.h). * \param p SatCfg index to use as fallback. */ gboolean mod_cfg_get_bool(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_bool_e p) { GError *error = NULL; gboolean param; /* check whether parameter is present in GKeyFile, otherwise use sat-cfg */ if (g_key_file_has_key(f, sec, key, NULL)) { param = g_key_file_get_boolean(f, sec, key, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to read boolean (%s)"), __func__, error->message); g_clear_error(&error); /* get a timeout from global config */ param = sat_cfg_get_bool(p); } } else { param = sat_cfg_get_bool(p); } return param; } gint mod_cfg_get_int(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_int_e p) { GError *error = NULL; gint param; /* check whether parameter is present in GKeyFile */ if (g_key_file_has_key(f, sec, key, NULL)) { param = g_key_file_get_integer(f, sec, key, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Failed to read integer (%s)"), __func__, error->message); g_clear_error(&error); /* get a timeout from global config */ param = sat_cfg_get_int(p); } } /* get value from sat-cfg */ else { param = sat_cfg_get_int(p); } return param; } gchar *mod_cfg_get_str(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_str_e p) { GError *error = NULL; gchar *param; /* check whether parameter is present in GKeyFile, otherwise use sat-cfg */ if (g_key_file_has_key(f, sec, key, NULL)) { param = g_key_file_get_string(f, sec, key, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Failed to read string (%s)"), __func__, error->message); g_clear_error(&error); /* get a timeout from global config */ param = sat_cfg_get_str(p); } } else { param = sat_cfg_get_str(p); } return param; } /** * \brief Load an integer list into a hash table that uses the * existinence of datain the hash as a boolean. * It loads NULL's into the hash table. */ void mod_cfg_get_integer_list_boolean(GKeyFile * cfgdata, const gchar * section, const gchar * key, GHashTable * dest) { gint *sats = NULL; gsize length; GError *error = NULL; guint i; guint *tkey; if (!g_key_file_has_key(cfgdata, section, key, NULL)) return; sats = g_key_file_get_integer_list(cfgdata, section, key, &length, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Failed to get integer list: %s"), __func__, error->message); g_clear_error(&error); /* GLib API says nothing about the contents in case of error */ if (sats) { g_free(sats); } return; } /* read each satellite into hash table */ for (i = 0; i < length; i++) { tkey = g_new0(guint, 1); *tkey = sats[i]; //printf("loading sat %d\n",sats[i]); if (!(g_hash_table_lookup_extended(dest, tkey, NULL, NULL))) { /* just add a one to the value so there is presence indicator */ g_hash_table_insert(dest, tkey, NULL); } } g_free(sats); } /** * \brief Convert the "boolean" hash back into an integer list and * save it to the cfgdata. */ void mod_cfg_set_integer_list_boolean(GKeyFile * cfgdata, GHashTable * hash, const gchar * cfgsection, const gchar * cfgkey) { gint *showtrack; gint *something; gint i, length; GList *keys = g_hash_table_get_keys(hash); length = g_list_length(keys); if (g_list_length(keys) > 0) { showtrack = g_try_new0(gint, g_list_length(keys)); for (i = 0; i < length; i++) { something = g_list_nth_data(keys, i); showtrack[i] = *something; } g_key_file_set_integer_list(cfgdata, cfgsection, cfgkey, showtrack, g_list_length(keys)); } else { g_key_file_remove_key(cfgdata, cfgsection, cfgkey, NULL); } g_list_free(keys); } gpredict/src/mod-cfg-get-param.h000066400000000000000000000040551427377236300170300ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef MOD_CFG_GET_PARAM_H #define MOD_CFG_GET_PARAM_H 1 #include "sat-cfg.h" gboolean mod_cfg_get_bool(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_bool_e p); gint mod_cfg_get_int(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_int_e p); gchar *mod_cfg_get_str(GKeyFile * f, const gchar * sec, const gchar * key, sat_cfg_str_e p); void mod_cfg_get_integer_list_boolean(GKeyFile * cfgdata, const gchar * section, const gchar * key, GHashTable * dest); void mod_cfg_set_integer_list_boolean(GKeyFile * cfgdata, GHashTable * hash, const gchar * cfgsection, const gchar * cfgkey); #endif gpredict/src/mod-cfg.c000066400000000000000000001102111427377236300151400ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-selector.h" #include "mod-cfg.h" #include "qth-editor.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-modules.h" extern GtkWidget *app; /* private widgets */ static GtkWidget *namew; /* GtkEntry widget for module name */ static GtkWidget *locw; /* GtkComboBox for location selection */ static GtkWidget *satlist; /* list of selected satellites */ static gint qth_name_compare(const gchar * a, const gchar * b) { return (gpredict_strcmp(a, b)); } /* warn if module is about to be overwritten; returns TRUE if users says OK */ static gboolean overwrite_existing_module(void) { gboolean overwrite; GtkWidget *warn; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Already have module %s. Ask user to confirm..."), __func__, gtk_entry_get_text(GTK_ENTRY(namew))); warn = gtk_message_dialog_new(GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("There is already a module called %s.\n" "Do you want to overwrite this module?"), gtk_entry_get_text(GTK_ENTRY(namew))); switch (gtk_dialog_run(GTK_DIALOG(warn))) { case GTK_RESPONSE_YES: overwrite = TRUE; break; default: overwrite = FALSE; break; } gtk_widget_destroy(warn); return overwrite; } /* Add a satellite to the list of selected satellites */ static void add_selected_sat(GtkListStore * store, gint catnum) { gint i, sats = 0; GtkTreeIter iter; GtkTreeIter node; /* new top level node added to the tree store */ gint catnr; gboolean found = FALSE; sat_t sat; /* check if the satellite is already in the list */ /* get number of satellites already in list */ sats = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL); /* loop over list entries and check their catnums */ for (i = 0; i < sats; i++) { if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL(store), &iter, NULL, i)) { gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnr, -1); if (catnum == catnr) { found = TRUE; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Could not fetch entry %d in satellite list"), __FILE__, __func__, i); } } if (found) return; /* if we have made it so far, satellite is not in list */ /* Get satellite data */ if (gtk_sat_data_read_sat(catnum, &sat)) { /* error */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Error reading satellite %d."), __FILE__, __func__, catnum); } else { /* insert satellite into liststore */ gtk_list_store_append(store, &node); gtk_list_store_set(store, &node, GTK_SAT_SELECTOR_COL_NAME, sat.nickname, GTK_SAT_SELECTOR_COL_CATNUM, catnum, GTK_SAT_SELECTOR_COL_EPOCH, sat.jul_epoch, -1); g_free(sat.name); g_free(sat.nickname); } } /* Signal handler for "->" button signals */ static void addbut_clicked_cb(GtkButton * button, GtkSatSelector * selector) { GtkListStore *store; gint catnum = 0; gchar *name; gdouble epoch; (void)button; /* get the selected row in the treeview */ gtk_sat_selector_get_selected(selector, &catnum, &name, &epoch); if (catnum) { /* Add satellite to selected list */ store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(satlist))); add_selected_sat(store, catnum); /*tell the sat_selector to hide that satellite */ gtk_sat_selector_mark_selected(selector, catnum); } } /* Signal handler for "<-" button signals */ static void delbut_clicked_cb(GtkButton * button, GtkSatSelector * selector) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; gboolean haveselection = FALSE; /* this flag is set to TRUE if there is a selection */ gint catnr; (void)button; /* get the selected row in the treeview */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(satlist)); haveselection = gtk_tree_selection_get_selected(selection, &model, &iter); if (haveselection) { gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnr, -1); /*tell the sat_selector it can show that satellite again */ gtk_sat_selector_mark_unselected(selector, catnr); gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } } static void sat_activated_cb(GtkSatSelector * selector, gint catnr, gpointer data) { GtkListStore *store; (void)data; /* Add satellite to selected list */ store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(satlist))); add_selected_sat(store, catnr); /*tell the sat_selector it can hide that satellite */ gtk_sat_selector_mark_selected(selector, catnr); } static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; GtkWidget *dialog = GTK_WIDGET(data); /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } static void add_qth_cb(GtkWidget * button, gpointer data) { GtkWindow *parent = GTK_WINDOW(data); GtkResponseType response; qth_t qth; (void)button; /* avoid unused parameter compiler warning */ qth.name = NULL; qth.loc = NULL; qth.desc = NULL; qth.wx = NULL; qth.qra = NULL; qth.data = NULL; response = qth_editor_run(&qth, parent); if (response == GTK_RESPONSE_OK) { gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(locw), qth.name); gtk_combo_box_set_active(GTK_COMBO_BOX(locw), 0); /* clean up */ g_free(qth.name); if (qth.loc != NULL) g_free(qth.loc); if (qth.desc != NULL) g_free(qth.desc); if (qth.wx != NULL) g_free(qth.wx); if (qth.qra != NULL) g_free(qth.qra); } } static GtkWidget *create_loc_selector(GKeyFile * cfgdata) { GtkWidget *combo; GDir *dir = NULL; GError *error = NULL; gchar *dirname; const gchar *filename; gchar *defqth = NULL; gchar *defqthshort = NULL; gchar **buffv; gint idx = -1; gint count = 0; GSList *qths = NULL; gchar *qthname; gint i, n; combo = gtk_combo_box_text_new(); /* get qth file name from cfgdata; if cfg data has no QTH set defqth = "** DEFAULT **" */ if (g_key_file_has_key (cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, NULL)) { defqth = g_key_file_get_string(cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, &error); buffv = g_strsplit(defqth, ".qth", 0); defqthshort = g_strdup(buffv[0]); g_strfreev(buffv); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Module has no QTH; use default."), __func__); defqth = g_strdup(_("** DEFAULT **")); defqthshort = g_strdup(defqth); } /* scan for .qth files in the user config directory and add the contents of each .qth file to the list store */ dirname = get_user_conf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { while ((filename = g_dir_read_name(dir))) { /*create a sorted list then use it to load the combo box */ if (g_str_has_suffix(filename, ".qth")) { buffv = g_strsplit(filename, ".qth", 0); qths = g_slist_insert_sorted(qths, g_strdup(buffv[0]), (GCompareFunc) qth_name_compare); g_strfreev(buffv); } } n = g_slist_length(qths); for (i = 0; i < n; i++) { qthname = g_slist_nth_data(qths, i); if (qthname) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), qthname); /* is this the QTH for this module? */ /* comparison uses short name full filename */ if (!g_ascii_strcasecmp(defqthshort, qthname)) { idx = count; } g_free(qthname); count++; } } g_slist_free(qths); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open user cfg dir %s (%s)"), __FILE__, __LINE__, dirname, error->message); g_clear_error(&error); } /* finally, add "** DEFAULT **" string; secting this will clear the MOD_CFG_QTH_FILE_KEY module configuration key ensuring that the module will use the default QTH */ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("** DEFAULT **")); /* select the qth of this module; if idx == -1 we should select the "** DEFAULT **" string corresponding to index = count */ if (idx == -1) { gtk_combo_box_set_active(GTK_COMBO_BOX(combo), count); } else { gtk_combo_box_set_active(GTK_COMBO_BOX(combo), idx); } g_free(defqth); g_free(defqthshort); g_free(dirname); g_dir_close(dir); return combo; } /** * Compare two rows of the GtkSatSelector. * * @param model The tree model of the GtkSatSelector. * @param a The first row. * @param b The second row. * @param userdata Not used. * * This function is used by the sorting algorithm to compare two rows of the * GtkSatSelector widget. The unctions works by comparing the character strings * in the name column. */ static gint compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata) { gchar *sat1, *sat2; gint catnr1, catnr2; gint ret = 0; (void)userdata; gtk_tree_model_get(model, a, GTK_SAT_SELECTOR_COL_NAME, &sat1, -1); gtk_tree_model_get(model, b, GTK_SAT_SELECTOR_COL_NAME, &sat2, -1); ret = gpredict_strcmp(sat1, sat2); if (ret == 0) { gtk_tree_model_get(model, a, GTK_SAT_SELECTOR_COL_CATNUM, &catnr1, -1); gtk_tree_model_get(model, b, GTK_SAT_SELECTOR_COL_CATNUM, &catnr2, -1); if (catnr1 < catnr2) ret = -1; else if (catnr1 > catnr2) ret = 1; else /* never supposed to happen */ ret = 0; } g_free(sat1); g_free(sat2); return ret; } /** * Signal handler for managing satellite selection. * * @param view Pointer to the GtkTreeView object. * @param path The path of the row that was activated. * @param column The column where the activation occurred. * @param data Pointer to the GtkSatselector widget. * * This function is called when the user double clicks on a satellite in the * list of satellites. The double clicked satellite is removed from the list. */ static void row_activated_cb(GtkTreeView * view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer data) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; gboolean haveselection = FALSE; /* this flag is set to TRUE if there is a selection */ gint catnr; GtkSatSelector *selector = GTK_SAT_SELECTOR(data); (void)path; (void)column; /* get the selected row in the treeview */ selection = gtk_tree_view_get_selection(view); haveselection = gtk_tree_selection_get_selected(selection, &model, &iter); if (haveselection) { gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnr, -1); /*tell the sat_selector it can show that satellite again */ gtk_sat_selector_mark_unselected(selector, catnr); gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } } /** * Create the list containing the selected satellites. * * @param new Flag indicating whether the module config window is for a new module. * @returns A newly created GtkTreeView widget. * */ static GtkWidget *create_selected_sats_list(GKeyFile * cfgdata, gboolean new, GtkSatSelector * selector) { GtkWidget *satlist; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkListStore *store; satlist = gtk_tree_view_new(); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Selected Satellites"), renderer, "text", GTK_SAT_SELECTOR_COL_NAME, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(satlist), column, -1); gtk_tree_view_column_set_visible(column, TRUE); /* catalogue number */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Catnum"), renderer, "text", GTK_SAT_SELECTOR_COL_CATNUM, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(satlist), column, -1); gtk_tree_view_column_set_visible(column, TRUE); /* epoch */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Epoch"), renderer, "text", GTK_SAT_SELECTOR_COL_EPOCH, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(satlist), column, -1); gtk_tree_view_column_set_visible(column, FALSE); /* "row-activated" signal is used to catch double click events, which means a satellite has been selected. This will cause the satellite to be deleted */ g_signal_connect(GTK_TREE_VIEW(satlist), "row-activated", G_CALLBACK(row_activated_cb), selector); /* create the model */ store = gtk_list_store_new(GTK_SAT_SELECTOR_COL_NUM, G_TYPE_STRING, // name G_TYPE_INT, // catnum G_TYPE_DOUBLE, // epoch G_TYPE_BOOLEAN // selected ); /* sort the list by name */ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store), GTK_SAT_SELECTOR_COL_NAME, compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_SAT_SELECTOR_COL_NAME, GTK_SORT_ASCENDING); /* If we are editing an existing module, load the satellites into the list */ if (!new) { gint *sats = NULL; gsize length; GError *error = NULL; guint i; sats = g_key_file_get_integer_list(cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_SATS_KEY, &length, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to get list of satellites (%s)"), __func__, error->message); g_clear_error(&error); /* GLib API says nothing about the contents in case of error */ if (sats) { g_free(sats); } } else { for (i = 0; i < length; i++) { add_selected_sat(store, sats[i]); gtk_sat_selector_mark_selected(selector, sats[i]); } g_free(sats); } } gtk_tree_view_set_model(GTK_TREE_VIEW(satlist), GTK_TREE_MODEL(store)); g_object_unref(store); return satlist; } static GtkWidget *mod_cfg_editor_create(const gchar * modname, GKeyFile * cfgdata, GtkWidget * toplevel) { GtkWidget *dialog; GtkWidget *add; GtkWidget *grid; GtkWidget *label; GtkWidget *swin; GtkWidget *addbut, *delbut; GtkWidget *vbox; gchar *strbuf; GtkWidget *frame; gboolean new = (modname != NULL) ? FALSE : TRUE; if (new) strbuf = g_strdup(_("Create new module")); else strbuf = g_strdup(_("Edit module")); dialog = gtk_dialog_new_with_buttons(strbuf, GTK_WINDOW(toplevel), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Properties", GTK_RESPONSE_HELP, "_Cancel", GTK_RESPONSE_CANCEL, "_OK", GTK_RESPONSE_OK, NULL); g_free(strbuf); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); /* window icon */ strbuf = icon_file_name("gpredict-sat-pref.png"); if (g_file_test(strbuf, G_FILE_TEST_EXISTS)) gtk_window_set_icon_from_file(GTK_WINDOW(dialog), strbuf, NULL); g_free(strbuf); /* module name */ namew = gtk_entry_new(); if (!new) { /* set module name and make entry insensitive */ gtk_entry_set_text(GTK_ENTRY(namew), modname); gtk_widget_set_sensitive(namew, FALSE); } else { /* connect changed signal to text-checker */ gtk_entry_set_max_length(GTK_ENTRY(namew), 25); gtk_widget_set_tooltip_text(namew, _("Enter a short name for this module.\n" "Allowed characters: 0..9, a..z, A..Z, - and _")); /*new tooltip api does not allow for private _("The name will be used to identify the module " \ "and it is also used a file name for saving the data." \ "Max length is 25 characters.")); */ /* attach changed signal so that we can enable OK button when a proper name has been entered oh, btw. disable OK button to begin with.... */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); g_signal_connect(namew, "changed", G_CALLBACK(name_changed), dialog); } /* ground station selector */ locw = create_loc_selector(cfgdata); gtk_widget_set_tooltip_text(locw, _("Select a ground station for this module.")); grid = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(grid), 5); gtk_grid_set_column_spacing(GTK_GRID(grid), 5); gtk_grid_set_column_homogeneous(GTK_GRID(grid), FALSE); label = gtk_label_new(_("Module name")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 2, 1); gtk_grid_attach(GTK_GRID(grid), namew, 2, 0, 4, 1); label = gtk_label_new(_("Ground station")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 2, 1); gtk_grid_attach(GTK_GRID(grid), locw, 2, 1, 2, 1); /* add button */ add = gtk_button_new_with_label(_("Add")); gtk_widget_set_tooltip_text(add, _("Add a new ground station")); g_signal_connect(add, "clicked", G_CALLBACK(add_qth_cb), dialog); gtk_grid_attach(GTK_GRID(grid), add, 4, 1, 1, 1); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(vbox), grid, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 10); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Satellites")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); /* satellite selector */ GtkWidget *selector = gtk_sat_selector_new(0); g_signal_connect(selector, "sat-activated", G_CALLBACK(sat_activated_cb), NULL); /* list of selected satellites */ satlist = create_selected_sats_list(cfgdata, new, GTK_SAT_SELECTOR(selector)); swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), satlist); /* Add and Delete buttons */ addbut = gtk_button_new_with_label(" --> "); gtk_widget_set_tooltip_text(addbut, _("Add satellite to list")); g_signal_connect(addbut, "clicked", G_CALLBACK(addbut_clicked_cb), selector); delbut = gtk_button_new_with_label(" <-- "); gtk_widget_set_tooltip_text(delbut, _("Delete satellite from list")); g_signal_connect(delbut, "clicked", G_CALLBACK(delbut_clicked_cb), selector); /* quick sat selector tutorial label */ label = gtk_label_new(_("Double click on a satellite " "to move it to the other box.")); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); g_object_set(label, "xalign", 0.0f, "yalign", 1.0f, NULL); frame = gtk_frame_new(NULL); gtk_container_add(GTK_CONTAINER(frame), swin); grid = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(grid), 10); gtk_grid_set_column_spacing(GTK_GRID(grid), 10); gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE); gtk_grid_attach(GTK_GRID(grid), selector, 0, 0, 4, 8); gtk_grid_attach(GTK_GRID(grid), addbut, 4, 4, 1, 1); gtk_grid_attach(GTK_GRID(grid), delbut, 4, 5, 1, 1); gtk_grid_attach(GTK_GRID(grid), label, 5, 0, 3, 2); gtk_grid_attach(GTK_GRID(grid), frame, 5, 2, 4, 6); gtk_box_pack_start(GTK_BOX(vbox), grid, TRUE, TRUE, 10); gtk_widget_show_all(vbox); return dialog; } static void mod_cfg_apply(GKeyFile * cfgdata) { gsize num; guint i; guint catnum; gchar *satstr = NULL; gchar *buff; GtkTreeModel *model; GtkTreeIter iter; /* store location */ buff = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(locw)); /* is buff == "** DEFAULT **" clear the configuration key otherwise store the filename */ if (!g_ascii_strcasecmp(buff, _("** DEFAULT **"))) { g_key_file_remove_key(cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, NULL); } else { satstr = g_strconcat(buff, ".qth", NULL); g_key_file_set_string(cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_QTH_FILE_KEY, satstr); g_free(satstr); } g_free(buff); /* get number of satellites already in list */ model = gtk_tree_view_get_model(GTK_TREE_VIEW(satlist)); num = gtk_tree_model_iter_n_children(model, NULL); /* loop over list entries and check their catnums */ for (i = 0; i < num; i++) { if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { gtk_tree_model_get(model, &iter, GTK_SAT_SELECTOR_COL_CATNUM, &catnum, -1); if (i) { buff = g_strdup_printf("%s;%d", satstr, catnum); g_free(satstr); } else { buff = g_strdup_printf("%d", catnum); } satstr = g_strdup(buff); g_free(buff); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Could not fetch entry %d in satellite list"), __FILE__, __func__, i); } } g_key_file_set_string(cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_SATS_KEY, satstr); g_free(satstr); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Applied changes to %s."), __func__, gtk_entry_get_text(GTK_ENTRY(namew))); } /** * Edit advanced settings. * * @param parent The parent mod-cfg dialog. * @param cfgdata The GKeyFile structure containing module config. * * This function creates a dialog window containing a notebook with the * relevant sat-pref config modules, i.e. those which are relevant for * configuring GtkSatModules. */ static void edit_advanced_settings(GtkDialog * parent, GKeyFile * cfgdata) { GtkWidget *dialog; GtkWidget *contents; gchar *icon; /* window icon file name */ dialog = gtk_dialog_new_with_buttons(_("Module properties"), GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_OK", GTK_RESPONSE_ACCEPT, NULL); /* window icon */ icon = icon_file_name("gpredict-sat-pref.png"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) gtk_window_set_icon_from_file(GTK_WINDOW(dialog), icon, NULL); contents = sat_pref_modules_create(cfgdata); gtk_widget_show_all(contents); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), contents, TRUE, TRUE, 0); /* execute dialog */ switch (gtk_dialog_run(GTK_DIALOG(dialog))) { case GTK_RESPONSE_ACCEPT: sat_pref_modules_ok(cfgdata); break; default: sat_pref_modules_cancel(cfgdata); break; } gtk_widget_destroy(dialog); } /** * Create a new module. * * This function creates a new module. The name of the module is * returned and it should be freed when no longer needed. */ gchar *mod_cfg_new() { GtkWidget *dialog; GKeyFile *cfgdata; gchar *name = NULL; gint response; mod_cfg_status_t status; gboolean finished = FALSE; gsize num = 0; /* create cfg data */ cfgdata = g_key_file_new(); dialog = mod_cfg_editor_create(NULL, cfgdata, app); gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 400); while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* user pressed OK */ case GTK_RESPONSE_OK: num = gtk_tree_model_iter_n_children(gtk_tree_view_get_model (GTK_TREE_VIEW(satlist)), NULL); if (num > 0) { /* we have at least one sat selected */ gchar *filename, *confdir; gboolean save = TRUE; /* check if there is already a module with this name */ confdir = get_modules_dir(); filename = g_strconcat(confdir, G_DIR_SEPARATOR_S, gtk_entry_get_text(GTK_ENTRY(namew)), ".mod", NULL); if (g_file_test(filename, G_FILE_TEST_EXISTS)) save = overwrite_existing_module(); g_free(confdir); g_free(filename); if (save) { name = g_strdup(gtk_entry_get_text(GTK_ENTRY(namew))); mod_cfg_apply(cfgdata); status = mod_cfg_save(name, cfgdata); if (status != MOD_CFG_OK) { /* send an error message */ sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Error while saving module data (%d)."), __func__, status); } finished = TRUE; } } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: User tried to create module with no sats."), __func__); /* tell user to behave nicely */ GtkWidget *errdialog; errdialog = gtk_message_dialog_new(NULL, //GTK_WINDOW (app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("Please select at least one satellite " "from the list.")); gtk_dialog_run(GTK_DIALOG(errdialog)); gtk_widget_destroy(errdialog); } break; /* bring up properties editor */ case GTK_RESPONSE_HELP: edit_advanced_settings(GTK_DIALOG(dialog), cfgdata); finished = FALSE; break; /* everything else is regarded CANCEL */ default: finished = TRUE; break; } } /* clean up */ g_key_file_free(cfgdata); gtk_widget_destroy(dialog); return name; } /** * Edit configuration for an existing module. * * @param modname The name of the module to edit. * @param cfgdata Configuration data for the module. * @param toplevel Pointer to the toplevel window. * * This function allows the user to edit the configuration * of the module specified by modname. The changes are stored * in the cfgdata configuration structure but are not saved * to disc; that has to be done separately using the * mod_cfg_save function. * */ mod_cfg_status_t mod_cfg_edit(gchar * modname, GKeyFile * cfgdata, GtkWidget * toplevel) { GtkWidget *dialog; gint response; gboolean finished = FALSE; gsize num = 0; mod_cfg_status_t status = MOD_CFG_CANCEL; dialog = mod_cfg_editor_create(modname, cfgdata, toplevel); gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 400); while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* user pressed OK */ case GTK_RESPONSE_OK: /* check that user has selected at least one satellite */ num = gtk_tree_model_iter_n_children(gtk_tree_view_get_model (GTK_TREE_VIEW(satlist)), NULL); if (num > 0) { /* we have at least one sat selected */ mod_cfg_apply(cfgdata); finished = TRUE; status = MOD_CFG_OK; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: User tried to create module with no sats."), __func__); /* tell user not to do that */ GtkWidget *errdialog; errdialog = gtk_message_dialog_new(GTK_WINDOW(toplevel), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("Please select at least one satellite " "from the list.")); gtk_dialog_run(GTK_DIALOG(errdialog)); gtk_widget_destroy(errdialog); } break; /* bring up properties editor */ case GTK_RESPONSE_HELP: edit_advanced_settings(GTK_DIALOG(dialog), cfgdata); finished = FALSE; break; /* everything else is regarded CANCEL */ default: finished = TRUE; break; } } /* clean up */ gtk_widget_destroy(dialog); return status; } mod_cfg_status_t mod_cfg_save(gchar * modname, GKeyFile * cfgdata) { gchar *filename; /* file name */ gchar *confdir; gboolean err; if (!modname) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Attempt to save data to empty file name."), __func__); return MOD_CFG_ERROR; } if (!cfgdata) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Attempt to save NULL data."), __func__); return MOD_CFG_ERROR; } /* create file and write data stream */ confdir = get_modules_dir(); filename = g_strconcat(confdir, G_DIR_SEPARATOR_S, modname, ".mod", NULL); g_free(confdir); err = gpredict_save_key_file(cfgdata, filename); g_free(filename); if (err) return MOD_CFG_ERROR; return MOD_CFG_OK; } mod_cfg_status_t mod_cfg_delete(gchar * modname, gboolean needcfm) { (void)modname; (void)needcfm; return MOD_CFG_CANCEL; } gpredict/src/mod-cfg.h000066400000000000000000000007031427377236300151510ustar00rootroot00000000000000#ifndef MOD_CFG_H #define MOD_CFG_H 1 #include typedef enum { MOD_CFG_OK = 0, MOD_CFG_CANCEL, MOD_CFG_ERROR } mod_cfg_status_t; gchar *mod_cfg_new(void); mod_cfg_status_t mod_cfg_edit(gchar * modname, GKeyFile * cfgdata, GtkWidget * toplevel); mod_cfg_status_t mod_cfg_save(gchar * modname, GKeyFile * cfgdata); mod_cfg_status_t mod_cfg_delete(gchar * modname, gboolean needcfm); #endif gpredict/src/mod-mgr.c000066400000000000000000000515161427377236300152020ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2013 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Charles Suprin Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* * Module manager. * * The module manager is responsible for the management of opened modules. * It consist of a GtkNoteBook container where the modules are placed initially. * * The module manager is initialised with the mod_mgr_create function, which will * create the notebook widget and re-open the modules that have been open when * gpredict has been quit last time. * * To add additional modules the mod_mgr_add_module function should be used. This * function takes a fully initialised GtkSatModule (FIXME: cast to GtkWidget) and * a boolean flag indicating whether the module should be docked into the notebook * or not. Please note, that if a module is added with dock=FALSE, the caller will * have the responsibility of creating a proper container window for the module. * * Finally, when gpredict is about to exit, the state of the module manager can be * saved by calling the mod_mgr_save_state. This will save a list of open modules * so that they can be restored next time gpredict is re-opened. * * The mod-mgr maintains an internal GSList with references to the opened modules. * This allows the mod-mgr to know about both docked and undocked modules. * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "compat.h" #include "gtk-sat-module.h" #include "gtk-sat-module-popup.h" #include "mod-cfg.h" #include "mod-mgr.h" #include "sat-cfg.h" #include "sat-log.h" extern GtkWidget *app; /* List of modules, docked and undocked */ static GSList *modules = NULL; /* The notebook widget for docked modules */ static GtkWidget *nbook = NULL; static void update_window_title(void); static void switch_page_cb(GtkNotebook * notebook, gpointer * page, guint page_num, gpointer user_data); static void create_module_window(GtkWidget * module); GtkWidget *mod_mgr_create(void) { gchar *openmods = NULL; gchar **mods; gint count, i; GtkWidget *module; gchar *modfile; gchar *confdir; gint page; nbook = gtk_notebook_new(); gtk_notebook_set_scrollable(GTK_NOTEBOOK(nbook), TRUE); gtk_notebook_popup_enable(GTK_NOTEBOOK(nbook)); g_signal_connect(G_OBJECT(nbook), "switch-page", G_CALLBACK(switch_page_cb), NULL); openmods = sat_cfg_get_str(SAT_CFG_STR_OPEN_MODULES); page = sat_cfg_get_int(SAT_CFG_INT_MODULE_CURRENT_PAGE); if (openmods) { mods = g_strsplit(openmods, ";", 0); count = g_strv_length(mods); for (i = 0; i < count; i++) { confdir = get_modules_dir(); modfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, mods[i], ".mod", NULL); g_free(confdir); module = gtk_sat_module_new(modfile); if (IS_GTK_SAT_MODULE(module)) { /* if module state was window or user does not want to restore the state of the modules, pack the module into the notebook */ if ((GTK_SAT_MODULE(module)->state == GTK_SAT_MOD_STATE_DOCKED) || !sat_cfg_get_bool(SAT_CFG_BOOL_MOD_STATE)) { mod_mgr_add_module(module, TRUE); } else { mod_mgr_add_module(module, FALSE); create_module_window(module); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to restore %s"), __func__, mods[i]); /* try to smartly handle disappearing modules */ page--; } g_free(modfile); } /* set to the page open when gpredict was closed */ if (page >= 0) gtk_notebook_set_current_page(GTK_NOTEBOOK(nbook), page); g_strfreev(mods); g_free(openmods); /* disable tabs if only one page in notebook */ if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook))) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), TRUE); } } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: No modules have to be restored."), __func__); } return nbook; } /* Register a new module in the mod-mgr. If the dock flag is true the module is * added to the mod-mgr notebook, otherwise it will be up to the caller to * create a proper container. */ gint mod_mgr_add_module(GtkWidget * module, gboolean dock) { gint retcode = 0; gint page; if (module) { /* add module to internal list */ modules = g_slist_append(modules, module); if (dock) { /* add module to notebook if state = DOCKED */ page = gtk_notebook_append_page(GTK_NOTEBOOK(nbook), module, gtk_label_new(GTK_SAT_MODULE (module)->name)); /* allow nmodule to be dragged to different position */ gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(nbook), module, TRUE); gtk_notebook_set_current_page(GTK_NOTEBOOK(nbook), page); /* send message to logger */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Added %s to module manager (page %d)."), __func__, GTK_SAT_MODULE(module)->name, page); } else { /* send message to logger */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Added %s to module manager (NOT DOCKED)."), __func__, GTK_SAT_MODULE(module)->name); } retcode = 0; } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s seems to be NULL"), __func__, GTK_SAT_MODULE(module)->name); retcode = 1; } /* disable tabs if only one page in notebook */ if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook))) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), TRUE); } update_window_title(); return retcode; } gint mod_mgr_remove_module(GtkWidget * module) { gint page; gint retcode = 0; /* remove from notebook */ if (GTK_SAT_MODULE(module)->state == GTK_SAT_MOD_STATE_DOCKED) { /* get page number for this module */ page = gtk_notebook_page_num(GTK_NOTEBOOK(nbook), module); if (page == -1) { /* this is some kind of bug (inconsistency between internal states) */ sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Could not find child in notebook. This may hurt..."), __func__); retcode = 1; } else { gtk_notebook_remove_page(GTK_NOTEBOOK(nbook), page); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Removed child from notebook page %d."), __func__, page); retcode = 0; } } modules = g_slist_remove(modules, module); /* undocked modules will have to destroy themselves because of their parent window */ /* disable tabs if only one page in notebook */ if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook))) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), TRUE); } /* update window title */ update_window_title(); return retcode; } /* * Save state of module manager. * * This function saves the state of the module manager. Currently, this consists * of saving the list of open modules. If no modules are open, the function saves * a NULL-list, indication that the corresponding configuration key should be * removed. */ void mod_mgr_save_state() { guint num; guint i; GtkWidget *module; gchar *mods = NULL; gchar *buff; gint page; if (!nbook) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Attempt to save state but mod-mgr is NULL?"), __func__); return; } num = g_slist_length(modules); if (num == 0) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: No modules need to save state."), __func__); sat_cfg_set_str(SAT_CFG_STR_OPEN_MODULES, NULL); return; } for (i = 0; i < num; i++) { module = GTK_WIDGET(g_slist_nth_data(modules, i)); /* save state of the module */ mod_cfg_save(GTK_SAT_MODULE(module)->name, GTK_SAT_MODULE(module)->cfgdata); if (i == 0) { buff = g_strdup(GTK_SAT_MODULE(module)->name); } else { buff = g_strconcat(mods, ";", GTK_SAT_MODULE(module)->name, NULL); g_free(mods); } mods = g_strdup(buff); g_free(buff); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Stored %s"), __func__, GTK_SAT_MODULE(module)->name); } /* store the currently open page number */ page = gtk_notebook_get_current_page(GTK_NOTEBOOK(nbook)); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Saved states for %d modules."), __func__, num); sat_cfg_set_str(SAT_CFG_STR_OPEN_MODULES, mods); sat_cfg_set_int(SAT_CFG_INT_MODULE_CURRENT_PAGE, page); g_free(mods); } gboolean mod_mgr_mod_is_visible(GtkWidget * module) { gint page; gboolean retcode = TRUE; /* get page number for this module */ page = gtk_notebook_page_num(GTK_NOTEBOOK(nbook), module); if (page != -1) { if (gtk_notebook_get_current_page(GTK_NOTEBOOK(nbook)) == page) { retcode = TRUE; } else { retcode = FALSE; } } else { retcode = FALSE; } return retcode; } /* * Dock a module into the notebook. * * This function inserts the module into the notebook but does not add it * to the list of modules, since it should already be there. * * The function does some sanity checks to ensure the the module actually * is in the internal list of modules and also that the module is not * already present in the notebook. If any of these checks fail, the function * will send an error message and try to recover. * * The function does not modify the internal state of the module, module->state, * that is up to the module itself. */ gint mod_mgr_dock_module(GtkWidget * module) { gint retcode = 0; gint page; if (!g_slist_find(modules, module)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s not found in list. Trying to recover."), __func__, GTK_SAT_MODULE(module)->name); modules = g_slist_append(modules, module); } page = gtk_notebook_page_num(GTK_NOTEBOOK(nbook), module); if (page != -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s already in notebook!"), __func__, GTK_SAT_MODULE(module)->name); retcode = 1; } else { /* add module to notebook */ page = gtk_notebook_append_page(GTK_NOTEBOOK(nbook), module, gtk_label_new(GTK_SAT_MODULE(module)-> name)); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Docked %s into notebook (page %d)"), __func__, GTK_SAT_MODULE(module)->name, page); retcode = 0; } /* disable tabs if only one page in notebook */ if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook))) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), TRUE); } /* update window title */ update_window_title(); return retcode; } /* * Undock module from notebook * * This function removes module from the notebook without removing it from * the internal list of modules. * * The function does some sanity checks to ensure that the module actually * exists in the mod-mgr, if not it will add module to the internal list * and raise a warning. * * The function does not modify the internal state of the module, module->state, * that is up to the module itself. * * \note The module itself is responsible for temporarily incrementing the * reference count of the widget in order to avoid destruction when * removing from the notebook. */ gint mod_mgr_undock_module(GtkWidget * module) { gint retcode = 0; gint page; if (!g_slist_find(modules, module)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s not found in list. Trying to recover."), __func__, GTK_SAT_MODULE(module)->name); modules = g_slist_append(modules, module); } page = gtk_notebook_page_num(GTK_NOTEBOOK(nbook), module); if (page == -1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module %s does not seem to be docked!"), __func__, GTK_SAT_MODULE(module)->name); retcode = 1; } else { gtk_notebook_remove_page(GTK_NOTEBOOK(nbook), page); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Removed %s from notebook page %d."), __func__, GTK_SAT_MODULE(module)->name, page); retcode = 0; } /* disable tabs if only one page in notebook */ if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook))) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), TRUE); } /* update window title */ update_window_title(); return retcode; } static void update_window_title() { gint pgn, num; GtkWidget *pg; gchar *title; /* get number of pages */ num = gtk_notebook_get_n_pages(GTK_NOTEBOOK(nbook)); if (num == 0) { gtk_window_set_title(GTK_WINDOW(app), _("Gpredict: (none)")); } else { pgn = gtk_notebook_get_current_page(GTK_NOTEBOOK(nbook)); pg = gtk_notebook_get_nth_page(GTK_NOTEBOOK(nbook), pgn); title = g_strdup_printf(_("Gpredict: %s"), gtk_notebook_get_tab_label_text(GTK_NOTEBOOK (nbook), pg)); gtk_window_set_title(GTK_WINDOW(app), title); g_free(title); } } static void switch_page_cb(GtkNotebook * notebook, gpointer * page, guint page_num, gpointer user_data) { GtkWidget *pg; gchar *title; (void)notebook; (void)page; (void)user_data; pg = gtk_notebook_get_nth_page(GTK_NOTEBOOK(nbook), page_num); title = g_strdup_printf(_("Gpredict: %s"), gtk_notebook_get_tab_label_text(GTK_NOTEBOOK (nbook), pg)); gtk_window_set_title(GTK_WINDOW(app), title); g_free(title); } void mod_mgr_reload_sats() { guint num; guint i; GtkSatModule *mod; if (!nbook) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Attempt to reload sats but mod-mgr is NULL?"), __func__); return; } num = g_slist_length(modules); if (num == 0) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: No modules need to reload sats."), __func__); return; } /* for each module in the GSList execute sat_module_reload_sats() */ for (i = 0; i < num; i++) { mod = GTK_SAT_MODULE(g_slist_nth_data(modules, i)); gtk_sat_module_reload_sats(mod); } } static void create_module_window(GtkWidget * module) { gint w, h; gchar *icon; /* icon file name */ gchar *title; /* window title */ GtkAllocation aloc; gtk_widget_get_allocation(module, &aloc); /* get stored size; use size from main window if size not explicitly stoed */ if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL)) { w = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_WIDTH, NULL); } else { w = aloc.width; } if (g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL)) { h = g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_HEIGHT, NULL); } else { h = aloc.height; } /* increase reference count of module */ //g_object_ref (module); /* we don't need the positions */ //GTK_SAT_MODULE (module)->vpanedpos = -1; //GTK_SAT_MODULE (module)->hpanedpos = -1; /* undock from mod-mgr */ //mod_mgr_undock_module (module); /* create window */ GTK_SAT_MODULE(module)->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); title = g_strconcat(_("Gpredict: "), GTK_SAT_MODULE(module)->name, " (", GTK_SAT_MODULE(module)->qth->name, ")", NULL); gtk_window_set_title(GTK_WINDOW(GTK_SAT_MODULE(module)->win), title); g_free(title); gtk_window_set_default_size(GTK_WINDOW(GTK_SAT_MODULE(module)->win), w, h); g_signal_connect(G_OBJECT(GTK_SAT_MODULE(module)->win), "configure_event", G_CALLBACK(module_window_config_cb), module); icon = logo_file_name("gpredict_icon_color.svg"); if (g_file_test(icon, G_FILE_TEST_EXISTS)) { gtk_window_set_icon_from_file(GTK_WINDOW(GTK_SAT_MODULE(module)->win), icon, NULL); } g_free(icon); /* move window to stored position if requested by configuration */ if (sat_cfg_get_bool(SAT_CFG_BOOL_MOD_WIN_POS) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL) && g_key_file_has_key(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)) { gtk_window_move(GTK_WINDOW(GTK_SAT_MODULE(module)->win), g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_X, NULL), g_key_file_get_integer(GTK_SAT_MODULE(module)->cfgdata, MOD_CFG_GLOBAL_SECTION, MOD_CFG_WIN_POS_Y, NULL)); } gtk_container_add(GTK_CONTAINER(GTK_SAT_MODULE(module)->win), module); gtk_widget_show_all(GTK_SAT_MODULE(module)->win); /* reparent time manager window if visible */ if (GTK_SAT_MODULE(module)->tmgActive) { gtk_window_set_transient_for(GTK_WINDOW (GTK_SAT_MODULE(module)->tmgWin), GTK_WINDOW(GTK_SAT_MODULE(module)->win)); } } gpredict/src/mod-mgr.h000066400000000000000000000007341427377236300152030ustar00rootroot00000000000000#ifndef MOD_MGR_H #define MOD_MGR_H 1 GtkWidget *mod_mgr_create(void); gint mod_mgr_add_module(GtkWidget * module, gboolean dock); gint mod_mgr_remove_module(GtkWidget * module); void mod_mgr_save_state(void); gboolean mod_mgr_mod_is_visible(GtkWidget * module); gint mod_mgr_dock_module(GtkWidget * module); gint mod_mgr_undock_module(GtkWidget * module); void mod_mgr_reload_sats(void); #endif gpredict/src/nxjson/000077500000000000000000000000001427377236300150035ustar00rootroot00000000000000gpredict/src/nxjson/nxjson.c000066400000000000000000000250011427377236300164640ustar00rootroot00000000000000/* * Copyright (c) 2013 Yaroslav Stavnichiy * * This file is part of NXJSON. * * NXJSON is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * NXJSON is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with NXJSON. If not, see . */ // this file can be #included in your code #ifndef NXJSON_C #define NXJSON_C #ifdef __cplusplus extern "C" { #endif #include #include #include #include #include #include "nxjson.h" // redefine NX_JSON_CALLOC & NX_JSON_FREE to use custom allocator #ifndef NX_JSON_CALLOC #define NX_JSON_CALLOC() calloc(1, sizeof(nx_json)) #define NX_JSON_FREE(json) free((void*)(json)) #endif // redefine NX_JSON_REPORT_ERROR to use custom error reporting #ifndef NX_JSON_REPORT_ERROR #define NX_JSON_REPORT_ERROR(msg, p) fprintf(stderr, "NXJSON PARSE ERROR (%d): " msg " at %s\n", __LINE__, p) #endif #define IS_WHITESPACE(c) ((unsigned char)(c)<=(unsigned char)' ') static const nx_json dummy={ NX_JSON_NULL }; static nx_json* create_json(nx_json_type type, const char* key, nx_json* parent) { nx_json* js=NX_JSON_CALLOC(); assert(js); js->type=type; js->key=key; if (!parent->last_child) { parent->child=parent->last_child=js; } else { parent->last_child->next=js; parent->last_child=js; } parent->length++; return js; } void nx_json_free(const nx_json* js) { nx_json* p=js->child; nx_json* p1; while (p) { p1=p->next; nx_json_free(p); p=p1; } NX_JSON_FREE(js); } static int unicode_to_utf8(unsigned int codepoint, char* p, char** endp) { // code from http://stackoverflow.com/a/4609989/697313 if (codepoint<0x80) *p++=codepoint; else if (codepoint<0x800) *p++=192+codepoint/64, *p++=128+codepoint%64; else if (codepoint-0xd800u<0x800) return 0; // surrogate must have been treated earlier else if (codepoint<0x10000) *p++=224+codepoint/4096, *p++=128+codepoint/64%64, *p++=128+codepoint%64; else if (codepoint<0x110000) *p++=240+codepoint/262144, *p++=128+codepoint/4096%64, *p++=128+codepoint/64%64, *p++=128+codepoint%64; else return 0; // error *endp=p; return 1; } nx_json_unicode_encoder nx_json_unicode_to_utf8=unicode_to_utf8; static inline int hex_val(char c) { if (c>='0' && c<='9') return c-'0'; if (c>='a' && c<='f') return c-'a'+10; if (c>='A' && c<='F') return c-'A'+10; return -1; } static char* unescape_string(char* s, char** end, nx_json_unicode_encoder encoder) { char* p=s; char* d=s; char c; while ((c=*p++)) { if (c=='"') { *d='\0'; *end=p; return s; } else if (c=='\\') { switch (*p) { case '\\': case '/': case '"': *d++=*p++; break; case 'b': *d++='\b'; p++; break; case 'f': *d++='\f'; p++; break; case 'n': *d++='\n'; p++; break; case 'r': *d++='\r'; p++; break; case 't': *d++='\t'; p++; break; case 'u': // unicode if (!encoder) { // leave untouched *d++=c; break; } char* ps=p-1; int h1, h2, h3, h4; if ((h1=hex_val(p[1]))<0 || (h2=hex_val(p[2]))<0 || (h3=hex_val(p[3]))<0 || (h4=hex_val(p[4]))<0) { NX_JSON_REPORT_ERROR("invalid unicode escape", p-1); return 0; } unsigned int codepoint=h1<<12|h2<<8|h3<<4|h4; if ((codepoint & 0xfc00)==0xd800) { // high surrogate; need one more unicode to succeed p+=6; if (p[-1]!='\\' || *p!='u' || (h1=hex_val(p[1]))<0 || (h2=hex_val(p[2]))<0 || (h3=hex_val(p[3]))<0 || (h4=hex_val(p[4]))<0) { NX_JSON_REPORT_ERROR("invalid unicode surrogate", ps); return 0; } unsigned int codepoint2=h1<<12|h2<<8|h3<<4|h4; if ((codepoint2 & 0xfc00)!=0xdc00) { NX_JSON_REPORT_ERROR("invalid unicode surrogate", ps); return 0; } codepoint=0x10000+((codepoint-0xd800)<<10)+(codepoint2-0xdc00); } if (!encoder(codepoint, d, &d)) { NX_JSON_REPORT_ERROR("invalid codepoint", ps); return 0; } p+=5; break; default: // leave untouched *d++=c; break; } } else { *d++=c; } } NX_JSON_REPORT_ERROR("no closing quote for string", s); return 0; } static char* skip_block_comment(char* p) { // assume p[-2]=='/' && p[-1]=='*' char* ps=p-2; if (!*p) { NX_JSON_REPORT_ERROR("endless comment", ps); return 0; } REPEAT: p=strchr(p+1, '/'); if (!p) { NX_JSON_REPORT_ERROR("endless comment", ps); return 0; } if (p[-1]!='*') goto REPEAT; return p+1; } static char* parse_key(const char** key, char* p, nx_json_unicode_encoder encoder) { // on '}' return with *p=='}' char c; while ((c=*p++)) { if (c=='"') { *key=unescape_string(p, &p, encoder); if (!*key) return 0; // propagate error while (*p && IS_WHITESPACE(*p)) p++; if (*p==':') return p+1; NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; } else if (IS_WHITESPACE(c) || c==',') { // continue } else if (c=='}') { return p-1; } else if (c=='/') { if (*p=='/') { // line comment char* ps=p-1; p=strchr(p+1, '\n'); if (!p) { NX_JSON_REPORT_ERROR("endless comment", ps); return 0; // error } p++; } else if (*p=='*') { // block comment p=skip_block_comment(p+1); if (!p) return 0; } else { NX_JSON_REPORT_ERROR("unexpected chars", p-1); return 0; // error } } else { NX_JSON_REPORT_ERROR("unexpected chars", p-1); return 0; // error } } NX_JSON_REPORT_ERROR("unexpected chars", p-1); return 0; // error } static char* parse_value(nx_json* parent, const char* key, char* p, nx_json_unicode_encoder encoder) { nx_json* js; while (1) { switch (*p) { case '\0': NX_JSON_REPORT_ERROR("unexpected end of text", p); return 0; // error case ' ': case '\t': case '\n': case '\r': case ',': // skip p++; break; case '{': js=create_json(NX_JSON_OBJECT, key, parent); p++; while (1) { const char* new_key = NULL; p=parse_key(&new_key, p, encoder); if (!p) return 0; // error if (*p=='}') return p+1; // end of object p=parse_value(js, new_key, p, encoder); if (!p) return 0; // error } case '[': js=create_json(NX_JSON_ARRAY, key, parent); p++; while (1) { p=parse_value(js, 0, p, encoder); if (!p) return 0; // error if (*p==']') return p+1; // end of array } case ']': return p; case '"': p++; js=create_json(NX_JSON_STRING, key, parent); js->text_value=unescape_string(p, &p, encoder); if (!js->text_value) return 0; // propagate error return p; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { js=create_json(NX_JSON_INTEGER, key, parent); char* pe; js->int_value=strtoll(p, &pe, 0); if (pe==p || errno==ERANGE) { NX_JSON_REPORT_ERROR("invalid number", p); return 0; // error } if (*pe=='.' || *pe=='e' || *pe=='E') { // double value js->type=NX_JSON_DOUBLE; js->dbl_value=strtod(p, &pe); if (pe==p || errno==ERANGE) { NX_JSON_REPORT_ERROR("invalid number", p); return 0; // error } } else { js->dbl_value=js->int_value; } return pe; } case 't': if (!strncmp(p, "true", 4)) { js=create_json(NX_JSON_BOOL, key, parent); js->int_value=1; return p+4; } NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; // error case 'f': if (!strncmp(p, "false", 5)) { js=create_json(NX_JSON_BOOL, key, parent); js->int_value=0; return p+5; } NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; // error case 'n': if (!strncmp(p, "null", 4)) { create_json(NX_JSON_NULL, key, parent); return p+4; } NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; // error case '/': // comment if (p[1]=='/') { // line comment char* ps=p; p=strchr(p+2, '\n'); if (!p) { NX_JSON_REPORT_ERROR("endless comment", ps); return 0; // error } p++; } else if (p[1]=='*') { // block comment p=skip_block_comment(p+2); if (!p) return 0; } else { NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; // error } break; default: NX_JSON_REPORT_ERROR("unexpected chars", p); return 0; // error } } } const nx_json* nx_json_parse_utf8(char* text) { return nx_json_parse(text, unicode_to_utf8); } const nx_json* nx_json_parse(char* text, nx_json_unicode_encoder encoder) { nx_json js={0}; if (!parse_value(&js, 0, text, encoder)) { if (js.child) nx_json_free(js.child); return 0; } return js.child; } const nx_json* nx_json_get(const nx_json* json, const char* key) { if (!json || !key) return &dummy; // never return null nx_json* js; for (js=json->child; js; js=js->next) { if (js->key && !strcmp(js->key, key)) return js; } return &dummy; // never return null } const nx_json* nx_json_item(const nx_json* json, int idx) { if (!json) return &dummy; // never return null nx_json* js; for (js=json->child; js; js=js->next) { if (!idx--) return js; } return &dummy; // never return null } #ifdef __cplusplus } #endif #endif /* NXJSON_C */ gpredict/src/nxjson/nxjson.h000066400000000000000000000046641427377236300165050ustar00rootroot00000000000000/* * Copyright (c) 2013 Yaroslav Stavnichiy * * This file is part of NXJSON. * * NXJSON is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * NXJSON is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with NXJSON. If not, see . */ #ifndef NXJSON_H #define NXJSON_H #ifdef __cplusplus extern "C" { #endif typedef enum nx_json_type { NX_JSON_NULL, // this is null value NX_JSON_OBJECT, // this is an object; properties can be found in child nodes NX_JSON_ARRAY, // this is an array; items can be found in child nodes NX_JSON_STRING, // this is a string; value can be found in text_value field NX_JSON_INTEGER, // this is an integer; value can be found in int_value field NX_JSON_DOUBLE, // this is a double; value can be found in dbl_value field NX_JSON_BOOL // this is a boolean; value can be found in int_value field } nx_json_type; typedef struct nx_json { nx_json_type type; // type of json node, see above const char* key; // key of the property; for object's children only const char* text_value; // text value of STRING node long long int_value; // the value of INTEGER or BOOL node double dbl_value; // the value of DOUBLE node int length; // number of children of OBJECT or ARRAY struct nx_json* child; // points to first child struct nx_json* next; // points to next child struct nx_json* last_child; } nx_json; typedef int (*nx_json_unicode_encoder)(unsigned int codepoint, char* p, char** endp); extern nx_json_unicode_encoder nx_json_unicode_to_utf8; const nx_json* nx_json_parse(char* text, nx_json_unicode_encoder encoder); const nx_json* nx_json_parse_utf8(char* text); void nx_json_free(const nx_json* js); const nx_json* nx_json_get(const nx_json* json, const char* key); // get object's property by key const nx_json* nx_json_item(const nx_json* json, int idx); // get array element by index #ifdef __cplusplus } #endif #endif /* NXJSON_H */ gpredict/src/orbit-tools.c000066400000000000000000000116611427377236300161120ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Parts are Copyright John A. Magliacane, KD2BD 1991-2003 (indicated below) Authors: Alexandru Csete John A. Magliacane, KD2BD. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "sgpsdp/sgp4sdp4.h" #ifdef HAVE_CONFIG_H # include #endif #include "orbit-tools.h" orbit_type_t get_orbit_type (sat_t *sat) { orbit_type_t orbit = ORBIT_TYPE_UNKNOWN; if (geostationary (sat)) { orbit = ORBIT_TYPE_GEO; } else if (decayed (sat)) { orbit = ORBIT_TYPE_DECAYED; } else { orbit = ORBIT_TYPE_UNKNOWN; } return orbit; } /** \brief Determinte whether satellite is in geostationary orbit. * \author John A. Magliacane, KD2BD * \param sat Pointer to satellite data. * \return TRUE if the satellite appears to be in geostationary orbit, * FALSE otherwise. * * A satellite is in geostationary orbit if * * fabs (sat.meanmotion - 1.0027) < 0.0002 * * Note: Apparently, the mean motion can deviate much more from 1.0027 than 0.0002 */ gboolean geostationary (sat_t *sat) { if (fabs (sat->meanmo - 1.0027) < 0.0002) return TRUE; else return FALSE; } /** \brief Determine whether satellite has decayed. * \author John A. Magliacane, KD2BD * \author Alexandru Csete, OZ9AEC * \param sat Pointer to satellite data. * \return TRUE if the satellite appears to have decayed, FALSE otherwise. * \bug Modified version of the predict code but it is not tested. * * A satellite is decayed if * * satepoch + ((16.666666 - sat.meanmo) / (10.0*fabs(sat.drag))) < "now" * */ gboolean decayed (sat_t *sat) { #if 0 /*this code was used for debugging basically it print out the time of decay for comparison to other sources. */ time_t t; gdouble eol; char something[100]; eol=sat->jul_epoch + ((16.666666 - sat->meanmo) / (10.0 * fabs (sat->tle.xndt2o/(twopi/xmnpda/xmnpda)))); /* convert julian date to struct tm */ t = (eol - 2440587.5)*86400.; strftime(something,100,"%F %R",gmtime(&t)); printf("%s Decayed at %s %f\n",sat->nickname,something,eol); #endif /* tle.xndt2o/(twopi/xmnpda/xmnpda) is the value before converted the value matches up with the value in predict 2.2.3 */ if (sat->jul_epoch + ((16.666666 - sat->meanmo) / (10.0 * fabs (sat->tle.xndt2o/(twopi/xmnpda/xmnpda)))) < sat->jul_utc) return TRUE; else return FALSE; } /** \brief Determine whether satellite ever reaches AOS. * \author John A. Magliacane, KD2BD * \author Alexandru Csete, OZ9AEC * \param sat Pointer to satellite data. * \return TRUE if the satellite will reach AOS, FALSE otherwise. * */ gboolean has_aos (sat_t *sat, qth_t *qth) { double lin, sma, apogee; gboolean retcode = FALSE; /* FIXME */ /*the first condition takes care of geostationary satellites and decayed satellites. The second deals with LEOS from the original predict code. However, nothing correctly handles geos with poor station keeping that are tracing a figure 8. */ if ((sat->otype == ORBIT_TYPE_GEO) || (decayed(sat))) { retcode = FALSE; } else { if (sat->meanmo == 0.0) { retcode = FALSE; } else { /* xincl is already in RAD by select_ephemeris */ lin = sat->tle.xincl; if (lin >= pio2) lin = pi - lin; sma = 331.25 * exp(log(1440.0/sat->meanmo) * (2.0/3.0)); apogee = sma * (1.0 + sat->tle.eo) - xkmper; if ((acos(xkmper/(apogee+xkmper))+(lin)) > fabs(qth->lat*de2ra)) retcode = TRUE; else retcode = FALSE; } } return retcode; } gpredict/src/orbit-tools.h000066400000000000000000000026211427377236300161130ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef ORBIT_TOOLS_H #define ORBIT_TOOLS_H 1 #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" orbit_type_t get_orbit_type (sat_t *sat); gboolean geostationary (sat_t *sat); gboolean decayed (sat_t *sat); gboolean has_aos (sat_t *sat, qth_t *qth); #endif gpredict/src/pass-popup-menu.c000066400000000000000000000076571427377236300167200ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "config-keys.h" #include "orbit-tools.h" #include "pass-popup-menu.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" extern GtkWidget *app; /** * Show pass details. * * @param menuitem The seelcted menuitem. * @param data Pointer to the toplevel window. * * This function is called when the user selects the "Show details" menu item * in the upcoming passes popup menu. */ static void show_pass_details(GtkWidget * menuitem, gpointer data) { pass_t *pass; qth_t *qth; pass = PASS(g_object_get_data(G_OBJECT(menuitem), "pass")); qth = (qth_t *) g_object_get_data(G_OBJECT(menuitem), "qth"); show_pass(pass->satname, qth, pass, data); } /* data = toplevel window */ static void polar_plot_pass_details(GtkWidget * menuitem, gpointer data) { (void)menuitem; (void)data; g_print("FIXME: %s:%s not implemented!\n", __FILE__, __func__); } /* data = toplevel window */ static void azel_plot_pass_details(GtkWidget * menuitem, gpointer data) { (void)menuitem; (void)data; g_print("FIXME: %s:%s not implemented!\n", __FILE__, __func__); } void pass_popup_menu_exec(qth_t * qth, pass_t * pass, GdkEventButton * event, GtkWidget * toplevel) { GtkWidget *menu; GtkWidget *menuitem; menu = gtk_menu_new(); /* pass details */ menuitem = gtk_menu_item_new_with_label(_("Show details")); g_object_set_data(G_OBJECT(menuitem), "pass", pass); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(show_pass_details), toplevel); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* separator */ menuitem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* Polar plot pass */ menuitem = gtk_menu_item_new_with_label(_("Polar plot")); g_object_set_data(G_OBJECT(menuitem), "pass", pass); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(polar_plot_pass_details), toplevel); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_widget_set_sensitive(menuitem, FALSE); /* Az/El plot pass */ menuitem = gtk_menu_item_new_with_label(_("Az/El plot")); g_object_set_data(G_OBJECT(menuitem), "pass", pass); g_object_set_data(G_OBJECT(menuitem), "qth", qth); g_signal_connect(menuitem, "activate", G_CALLBACK(azel_plot_pass_details), toplevel); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_show_all(menu); /* gtk_menu_popup got deprecated in 3.22, first available in Ubuntu 18.04 */ #if GTK_MINOR_VERSION < 22 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); #else (void) event; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL); #endif } gpredict/src/pass-popup-menu.h000066400000000000000000000005421427377236300167070ustar00rootroot00000000000000#ifndef PASS_POPUP_MENU_H #define PASS_POPUP_MENU_H 1 #include #include "gtk-sat-data.h" #include "predict-tools.h" #include "sgpsdp/sgp4sdp4.h" void pass_popup_menu_exec(qth_t * qth, pass_t * pass, GdkEventButton * event, GtkWidget * toplevel); #endif gpredict/src/pass-to-txt.c000066400000000000000000000451261427377236300160430ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include "gtk-sat-data.h" #include "locator.h" #include "pass-to-txt.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-vis.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define NUMCOL 19 #define COL_WIDTH 8 const gchar *SPCT[] = { N_(" Time"), N_(" Az "), /* 6 */ N_(" El "), N_(" Ra "), N_(" Dec "), N_("Range"), N_(" Rate "), N_(" Lat "), N_(" Lon "), N_(" SSP "), N_("Footp"), N_(" Alt "), N_(" Vel "), N_(" Dop "), N_(" Loss "), N_(" Del "), N_(" MA "), N_(" Pha "), N_("Vis") }; const guint COLW[] = { 0, 6, 6, 6, 6, 5, 6, 6, 7, 6, 5, 5, 5, 5, 6, 5, 6, 6, 3 }; const gchar *MPCT[] = { N_(" AOS"), N_(" TCA"), /* 6 */ N_(" LOS"), N_("Duration"), N_("Max El"), N_("AOS Az"), N_("Max El Az"), N_("LOS Az"), N_("Orbit"), N_("Vis") }; const guint MCW[] = { 0, 0, 0, 8, 6, 6, 9, 6, 5, 3 }; static void Calc_RADec(gdouble jul_utc, gdouble saz, gdouble sel, qth_t * qth, obs_astro_t * obs_set); gchar *pass_to_txt_pgheader(pass_t * pass, qth_t * qth, gint fields) { gboolean loc; gchar *utc; gchar *header; gchar aosbuff[TIME_FORMAT_MAX_LENGTH]; gchar losbuff[TIME_FORMAT_MAX_LENGTH]; gchar *fmtstr; time_t aos, los; guint size; (void)fields; /* avoid unused parameter compiler warning */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); loc = sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME); aos = (pass->aos - 2440587.5) * 86400.; los = (pass->los - 2440587.5) * 86400.; if (loc) { utc = g_strdup(_("Local")); /* AOS */ size = strftime(aosbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, localtime(&aos)); if (size == 0) /* size > MAX_LENGTH */ aosbuff[TIME_FORMAT_MAX_LENGTH - 1] = '\0'; /* LOS */ size = strftime(losbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, localtime(&los)); if (size == 0) /* size > MAX_LENGTH */ losbuff[TIME_FORMAT_MAX_LENGTH - 1] = '\0'; } else { utc = g_strdup(_("UTC")); /* AOS */ size = strftime(aosbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, gmtime(&aos)); if (size == 0) /* size > MAX_LENGTH */ aosbuff[TIME_FORMAT_MAX_LENGTH - 1] = '\0'; /* LOS */ size = strftime(losbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, gmtime(&los)); if (size == 0) /* size > MAX_LENGTH */ losbuff[TIME_FORMAT_MAX_LENGTH - 1] = '\0'; } header = g_strdup_printf(_("Pass details for %s (orbit %d)\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n" "AOS: %s %s\n" "LOS: %s %s\n"), pass->satname, pass->orbit, qth->name, qth->loc, qth->lat, qth->lon, aosbuff, utc, losbuff, utc); g_free(utc); return header; } gchar *pass_to_txt_tblheader(pass_t * pass, qth_t * qth, gint fields) { gchar *fmtstr; guint size; gchar tbuff[TIME_FORMAT_MAX_LENGTH]; guint i; guint linelength = 0; gchar *line; gchar *sep; gchar *buff; (void)qth; /* avoid unused parameter compiler warning */ /* first, get the length of the time field */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); size = daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->aos); g_free(fmtstr); /* add time column */ buff = g_strnfill(size - 4, ' '); line = g_strconcat(_(SPCT[0]), buff, NULL); linelength = size + 1; g_free(buff); for (i = 1; i < NUMCOL; i++) { if (fields & (1 << i)) { /* add column to line */ buff = g_strconcat(line, " ", _(SPCT[i]), NULL); g_free(line); line = g_strdup(buff); g_free(buff); /* update line length */ linelength += COLW[i] + 1; } } /* add separator line */ sep = g_strnfill(linelength, '-'); buff = g_strdup_printf("%s\n%s\n%s\n", sep, line, sep); g_free(line); g_free(sep); return buff; } gchar *pass_to_txt_tblcontents(pass_t * pass, qth_t * qth, gint fields) { gchar *fmtstr; gchar tbuff[TIME_FORMAT_MAX_LENGTH]; guint i, num; gchar *line; gchar *data = NULL; gchar *buff; pass_detail_t *detail; obs_astro_t astro; gdouble ra, dec, numf; gchar *ssp; /* first, get the length of the time field */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->aos); /* get number of rows */ num = g_slist_length(pass->details); for (i = 0; i < num; i++) { /* get detail */ detail = PASS_DETAIL(g_slist_nth_data(pass->details, i)); /* time */ daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, detail->time); line = g_strdup_printf(" %s", tbuff); /* Az */ if (fields & SINGLE_PASS_FLAG_AZ) { buff = g_strdup_printf("%s %6.2f", line, detail->az); g_free(line); line = g_strdup(buff); g_free(buff); } /* El */ if (fields & SINGLE_PASS_FLAG_EL) { buff = g_strdup_printf("%s %6.2f", line, detail->el); g_free(line); line = g_strdup(buff); g_free(buff); } /* Ra */ if (fields & SINGLE_PASS_FLAG_RA) { Calc_RADec(detail->time, detail->az, detail->el, qth, &astro); ra = Degrees(astro.ra); buff = g_strdup_printf("%s %6.2f", line, ra); g_free(line); line = g_strdup(buff); g_free(buff); } /* Dec */ if (fields & SINGLE_PASS_FLAG_DEC) { Calc_RADec(detail->time, detail->az, detail->el, qth, &astro); dec = Degrees(astro.dec); buff = g_strdup_printf("%s %6.2f", line, dec); g_free(line); line = g_strdup(buff); g_free(buff); } /* Range */ if (fields & SINGLE_PASS_FLAG_RANGE) { buff = g_strdup_printf("%s %5.0f", line, detail->range); g_free(line); line = g_strdup(buff); g_free(buff); } /* Range Rate */ if (fields & SINGLE_PASS_FLAG_RANGE_RATE) { buff = g_strdup_printf("%s %6.3f", line, detail->range_rate); g_free(line); line = g_strdup(buff); g_free(buff); } /* Lat */ if (fields & SINGLE_PASS_FLAG_LAT) { buff = g_strdup_printf("%s %6.2f", line, detail->lat); g_free(line); line = g_strdup(buff); g_free(buff); } /* Lon */ if (fields & SINGLE_PASS_FLAG_LON) { buff = g_strdup_printf("%s %7.2f", line, detail->lon); g_free(line); line = g_strdup(buff); g_free(buff); } /* SSP */ if (fields & SINGLE_PASS_FLAG_SSP) { ssp = g_try_malloc(7); if (longlat2locator(detail->lon, detail->lat, ssp, 3) == RIG_OK) { buff = g_strdup_printf("%s %s", line, ssp); g_free(line); line = g_strdup(buff); g_free(buff); } g_free(ssp); } /* Footprint */ if (fields & SINGLE_PASS_FLAG_FOOTPRINT) { buff = g_strdup_printf("%s %5.0f", line, detail->footprint); g_free(line); line = g_strdup(buff); g_free(buff); } /* Alt */ if (fields & SINGLE_PASS_FLAG_ALT) { buff = g_strdup_printf("%s %5.0f", line, detail->alt); g_free(line); line = g_strdup(buff); g_free(buff); } /* Vel */ if (fields & SINGLE_PASS_FLAG_VEL) { buff = g_strdup_printf("%s %5.3f", line, detail->velo); g_free(line); line = g_strdup(buff); g_free(buff); } /* Doppler */ if (fields & SINGLE_PASS_FLAG_DOPPLER) { numf = -100.0e06 * (detail->range_rate / 299792.4580); buff = g_strdup_printf("%s %5.0f", line, numf); g_free(line); line = g_strdup(buff); g_free(buff); } /* Loss */ if (fields & SINGLE_PASS_FLAG_LOSS) { numf = 72.4 + 20.0 * log10(detail->range); // dB buff = g_strdup_printf("%s %6.2f", line, numf); g_free(line); line = g_strdup(buff); g_free(buff); } /* Delay */ if (fields & SINGLE_PASS_FLAG_DELAY) { numf = detail->range / 299.7924580; // msec buff = g_strdup_printf("%s %5.2f", line, numf); g_free(line); line = g_strdup(buff); g_free(buff); } /* MA */ if (fields & SINGLE_PASS_FLAG_MA) { buff = g_strdup_printf("%s %6.2f", line, detail->ma); g_free(line); line = g_strdup(buff); g_free(buff); } /* Phase */ if (fields & SINGLE_PASS_FLAG_PHASE) { buff = g_strdup_printf("%s %6.2f", line, detail->phase); g_free(line); line = g_strdup(buff); g_free(buff); } /* Visibility */ if (fields & SINGLE_PASS_FLAG_VIS) { buff = g_strdup_printf("%s %c", line, vis_to_chr(detail->vis)); g_free(line); line = g_strdup(buff); g_free(buff); } /* append line to return string */ if (i == 0) { data = g_strdup_printf("%s\n", line); g_free(line); } else { buff = g_strconcat(data, line, "\n", NULL); g_free(data); data = g_strdup(buff); g_free(buff); } } g_free(fmtstr); return data; } gchar *passes_to_txt_pgheader(GSList * passes, qth_t * qth, gint fields) { gchar *header; pass_t *pass; (void)fields; pass = PASS(g_slist_nth_data(passes, 0)); header = g_strdup_printf(_("Upcoming passes for %s\n" "Observer: %s, %s\n" "LAT:%.2f LON:%.2f\n"), pass->satname, qth->name, qth->loc, qth->lat, qth->lon); return header; } gchar *passes_to_txt_tblheader(GSList * passes, qth_t * qth, gint fields) { gchar *fmtstr; guint size; gchar tbuff[TIME_FORMAT_MAX_LENGTH]; guint i; guint linelength = 0; gchar *line; gchar *sep; gchar *buff; pass_t *pass; (void)qth; /* first, get the length of the time field */ pass = PASS(g_slist_nth_data(passes, 0)); fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); size = daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->aos); g_free(fmtstr); /* add AOS, TCA, and LOS columns */ buff = g_strnfill(size - 3, ' '); line = g_strconcat(_(MPCT[0]), buff, _(MPCT[1]), buff, _(MPCT[2]), buff, NULL); linelength = 3 * (size + 2); g_free(buff); for (i = 3; i < 10; i++) { if (fields & (1 << i)) { /* add column to line */ buff = g_strconcat(line, " ", _(MPCT[i]), NULL); g_free(line); line = g_strdup(buff); g_free(buff); /* update line length */ linelength += MCW[i] + 2; } } /* add separator line */ sep = g_strnfill(linelength, '-'); buff = g_strdup_printf("%s\n%s\n%s\n", sep, line, sep); g_free(line); g_free(sep); return buff; } gchar *passes_to_txt_tblcontents(GSList * passes, qth_t * qth, gint fields) { gchar *fmtstr; gchar tbuff[TIME_FORMAT_MAX_LENGTH]; guint i, num; gchar *line = NULL; gchar *data = NULL; gchar *buff; pass_t *pass; (void)qth; /* avoid unused parameter compiler warning */ pass = PASS(g_slist_nth_data(passes, 0)); /* first, get the length of the time field */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->aos); /* get number of rows */ num = g_slist_length(passes); for (i = 0; i < num; i++) { pass = PASS(g_slist_nth_data(passes, i)); /* AOS */ daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->aos); line = g_strdup_printf(" %s", tbuff); /* TCA */ daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->tca); buff = g_strdup(line); g_free(line); line = g_strdup_printf("%s %s", buff, tbuff); g_free(buff); /* LOS */ daynum_to_str(tbuff, TIME_FORMAT_MAX_LENGTH, fmtstr, pass->los); buff = g_strdup(line); g_free(line); line = g_strdup_printf("%s %s", buff, tbuff); g_free(buff); /* Duration */ if (fields & (1 << MULTI_PASS_COL_DURATION)) { guint h, m, s; /* convert julian date to seconds */ s = (guint) ((pass->los - pass->aos) * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; buff = g_strdup_printf("%s %02d:%02d:%02d", line, h, m, s); g_free(line); line = g_strdup(buff); g_free(buff); } /* Max El */ if (fields & (1 << MULTI_PASS_COL_MAX_EL)) { buff = g_strdup_printf("%s %6.2f", line, pass->max_el); g_free(line); line = g_strdup(buff); g_free(buff); } /* AOS Az */ if (fields & (1 << MULTI_PASS_COL_AOS_AZ)) { buff = g_strdup_printf("%s %6.2f", line, pass->aos_az); g_free(line); line = g_strdup(buff); g_free(buff); } /* Max El Az */ if (fields & (1 << MULTI_PASS_COL_MAX_EL_AZ)) { buff = g_strdup_printf("%s %9.2f", line, pass->maxel_az); g_free(line); line = g_strdup(buff); g_free(buff); } /* LOS Az */ if (fields & (1 << MULTI_PASS_COL_LOS_AZ)) { buff = g_strdup_printf("%s %6.2f", line, pass->los_az); g_free(line); line = g_strdup(buff); g_free(buff); } /* Orbit */ if (fields & (1 << MULTI_PASS_COL_ORBIT)) { buff = g_strdup_printf("%s %5d", line, pass->orbit); g_free(line); line = g_strdup(buff); g_free(buff); } /* Visibility */ if (fields & (1 << MULTI_PASS_COL_VIS)) { buff = g_strdup_printf("%s %s", line, pass->vis); g_free(line); line = g_strdup(buff); g_free(buff); } /* append line to return string */ if (i == 0) { data = g_strdup_printf("%s\n", line); g_free(line); } else { buff = g_strconcat(data, line, "\n", NULL); g_free(data); data = g_strdup(buff); g_free(buff); } } g_free(fmtstr); return data; } static void Calc_RADec(gdouble jul_utc, gdouble saz, gdouble sel, qth_t * qth, obs_astro_t * obs_set) { double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, Lz, cos_delta, sin_alpha, cos_alpha; geodetic_t geodetic; geodetic.lon = qth->lon * de2ra; geodetic.lat = qth->lat * de2ra; geodetic.alt = qth->alt / 1000.0; geodetic.theta = 0; az = saz * de2ra; el = sel * de2ra; phi = geodetic.lat; theta = FMod2p(ThetaG_JD(jul_utc) + geodetic.lon); sin_theta = sin(theta); cos_theta = cos(theta); sin_phi = sin(phi); cos_phi = cos(phi); Lxh = -cos(az) * cos(el); Lyh = sin(az) * cos(el); Lzh = sin(el); Sx = sin_phi * cos_theta; Ex = -sin_theta; Zx = cos_theta * cos_phi; Sy = sin_phi * sin_theta; Ey = cos_theta; Zy = sin_theta * cos_phi; Sz = -cos_phi; Ez = 0; Zz = sin_phi; Lx = Sx * Lxh + Ex * Lyh + Zx * Lzh; Ly = Sy * Lxh + Ey * Lyh + Zy * Lzh; Lz = Sz * Lxh + Ez * Lyh + Zz * Lzh; obs_set->dec = ArcSin(Lz); /* Declination (radians) */ cos_delta = sqrt(1 - Sqr(Lz)); sin_alpha = Ly / cos_delta; cos_alpha = Lx / cos_delta; obs_set->ra = AcTan(sin_alpha, cos_alpha); /* Right Ascension (radians) */ obs_set->ra = FMod2p(obs_set->ra); } gpredict/src/pass-to-txt.h000066400000000000000000000014621427377236300160430ustar00rootroot00000000000000#ifndef PASS_TO_TXT_H #define PASS_TO_TXT_H 1 #include #include "sat-pass-dialogs.h" #include "predict-tools.h" #include "gtk-sat-data.h" gchar *pass_to_txt_pgheader(pass_t * pass, qth_t * qth, gint fields); gchar *pass_to_txt_tblheader(pass_t * pass, qth_t * qth, gint fields); gchar *pass_to_txt_tblcontents(pass_t * pass, qth_t * qth, gint fields); gchar *passes_to_txt_pgheader(GSList * passes, qth_t * qth, gint fields); gchar *passes_to_txt_tblheader(GSList * passes, qth_t * qth, gint fields); gchar *passes_to_txt_tblcontents(GSList * passes, qth_t * qth, gint fields); #endif gpredict/src/predict-tools.c000066400000000000000000000667121427377236300164340ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2013 Alexandru Csete, OZ9AEC. Parts are Copyright John A. Magliacane, KD2BD 1991-2003 (indicated below) Authors: Alexandru Csete John A. Magliacane, KD2BD. Charles Suprin Daniel Estevez Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "gtk-sat-data.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" static pass_t *get_pass_engine(sat_t * sat_in, qth_t * qth, gdouble start, gdouble maxdt, gdouble min_el); /** * \brief SGP4SDP4 driver for doing AOS/LOS calculations. * \param sat Pointer to the satellite data. * \param qth Pointer to the QTH data. * \param t The time for calculation (Julian Date) */ void predict_calc(sat_t * sat, qth_t * qth, gdouble t) { obs_set_t obs_set; geodetic_t sat_geodetic; geodetic_t obs_geodetic; double age; obs_geodetic.lon = qth->lon * de2ra; obs_geodetic.lat = qth->lat * de2ra; obs_geodetic.alt = qth->alt / 1000.0; obs_geodetic.theta = 0; sat->jul_utc = t; sat->tsince = (sat->jul_utc - sat->jul_epoch) * xmnpda; /* call the norad routines according to the deep-space flag */ if (sat->flags & DEEP_SPACE_EPHEM_FLAG) SDP4(sat, sat->tsince); else SGP4(sat, sat->tsince); Convert_Sat_State(&sat->pos, &sat->vel); /* get the velocity of the satellite */ Magnitude(&sat->vel); sat->velo = sat->vel.w; Calculate_Obs(sat->jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set); Calculate_LatLonAlt(sat->jul_utc, &sat->pos, &sat_geodetic); while (sat_geodetic.lon < -pi) sat_geodetic.lon += twopi; while (sat_geodetic.lon > (pi)) sat_geodetic.lon -= twopi; sat->az = Degrees(obs_set.az); sat->el = Degrees(obs_set.el); sat->range = obs_set.range; sat->range_rate = obs_set.range_rate; sat->ssplat = Degrees(sat_geodetic.lat); sat->ssplon = Degrees(sat_geodetic.lon); sat->alt = sat_geodetic.alt; sat->ma = Degrees(sat->phase); sat->ma *= 256.0 / 360.0; sat->phase = Degrees(sat->phase); /* same formulas, but the one from predict is nicer */ //sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w); sat->footprint = 12756.33 * acos(xkmper / (xkmper + sat->alt)); age = sat->jul_utc - sat->jul_epoch; sat->orbit = (long)floor((sat->tle.xno * xmnpda / twopi + age * sat->tle.bstar * ae) * age + (sat->tle.xmo + sat->tle.omegao) / twopi) + sat->tle.revnum ; } /** * \brief Find the AOS time of the next pass. * \author Alexandru Csete, OZ9AEC * \author John A. Magliacane, KD2BD * \param sat Pointer to the satellite data. * \param qth Pointer to the QTH data. * \param start The time where calculation should start. * \param maxdt The upper time limit in days (0.0 = no limit) * \return The time of the next AOS or 0.0 if the satellite has no AOS. * * This function finds the time of AOS for the first coming pass taking place * no earlier that start. * If the satellite is currently within range, the function first calls * find_los to get the next LOS time. Then the calculations are done using * the new start time. */ gdouble find_aos(sat_t * sat, qth_t * qth, gdouble start, gdouble maxdt) { gdouble t = start; gdouble aostime = 0.0; /* make sure current sat values are in sync with the time */ predict_calc(sat, qth, start); /* check whether satellite has aos */ if (!has_aos(sat, qth)) return 0.0; if (sat->el > 0.0) t = find_los(sat, qth, start, maxdt) + 0.014; // +20 min /* invalid time (potentially returned by find_los) */ if (t < 0.1) return 0.0; /* update satellite data */ predict_calc(sat, qth, t); /* use upper time limit */ if (maxdt > 0.0) { /* coarse time steps */ while ((sat->el < -1.0) && (t <= (start + maxdt))) { t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); predict_calc(sat, qth, t); } /* fine steps */ while ((aostime == 0.0) && (t <= (start + maxdt))) { if (fabs(sat->el) < 0.005) { aostime = t; } else { t -= sat->el * sqrt(sat->alt) / 530000.0; predict_calc(sat, qth, t); } } } /* don't use upper time limit */ else { /* coarse time steps */ while (sat->el < -1.0) { t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); predict_calc(sat, qth, t); } /* fine steps */ while (aostime == 0.0) { if (fabs(sat->el) < 0.005) { aostime = t; } else { t -= sat->el * sqrt(sat->alt) / 530000.0; predict_calc(sat, qth, t); } } } return aostime; } /** * \brief Find the LOS time of the next pass. * \author Alexandru Csete, OZ9AEC * \author John A. Magliacane, KD2BD * \param sat Pointer to the satellite data. * \param qth Pointer to the QTH data. * \param start The time where calculation should start. * \param maxdt The upper time limit in days (0.0 = no limit) * \return The time of the next LOS or 0.0 if the satellite has no LOS. * * This function finds the time of LOS for the first coming pass taking place * no earlier that start. * If the satellite is currently out of range, the function first calls * find_aos to get the next AOS time. Then the calculations are done using * the new start time. * The function has a built-in watchdog to ensure that we don't end up in * lengthy loops. */ gdouble find_los(sat_t * sat, qth_t * qth, gdouble start, gdouble maxdt) { gdouble t = start; gdouble lostime = 0.0; gdouble eltemp; predict_calc(sat, qth, start); /* check whether satellite has aos */ if (!has_aos(sat, qth)) { return 0.0; } if (sat->el < 0.0) t = find_aos(sat, qth, start, maxdt) + 0.001; // +1.5 min /* invalid time (potentially returned by find_aos) */ if (t < 0.01) return 0.0; /* update satellite data */ predict_calc(sat, qth, t); /* use upper time limit */ if (maxdt > 0.0) { /* coarse steps */ while ((sat->el >= 1.0) && (t <= (start + maxdt))) { t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; predict_calc(sat, qth, t); } /* fine steps */ while ((lostime == 0.0) && (t <= (start + maxdt))) { t += sat->el * sqrt(sat->alt) / 502500.0; predict_calc(sat, qth, t); if (fabs(sat->el) < 0.005) { /* Two things are true at LOS time, the elevation is a zero and sat is descending. This checks that those two are true. */ eltemp = sat->el; /* check elevation 1 second earlier */ predict_calc(sat, qth, t - 1.0 / 86400.0); if (sat->el > eltemp) lostime = t; } } } /* don't use upper limit */ else { /* coarse steps */ while (sat->el >= 1.0) { t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; predict_calc(sat, qth, t); } /* fine steps */ while (lostime == 0.0) { t += sat->el * sqrt(sat->alt) / 502500.0; predict_calc(sat, qth, t); if (fabs(sat->el) < 0.005) { /* two things are true at LOS time The elevation is a zero and descending. This checks that those two are true. */ eltemp = sat->el; /*check elevation 1 second earlier */ predict_calc(sat, qth, t - 1.0 / 86400.0); if (sat->el > eltemp) lostime = t; } } } return lostime; } /** * \brief Find AOS time of current pass. * \param sat The satellite to find AOS for. * \param qth The ground station. * \param start Start time, prefereably now. * \return The time of the previous AOS or 0.0 if the satellite has no AOS. * * This function can be used to find the AOS time in the past of the * current pass. */ gdouble find_prev_aos(sat_t * sat, qth_t * qth, gdouble start) { gdouble aostime = start; /* make sure current sat values are in sync with the time */ predict_calc(sat, qth, start); /* check whether satellite has aos */ if (!has_aos(sat, qth)) { return 0.0; } while (sat->el >= 0.0) { aostime -= 0.0005; // 0.75 min predict_calc(sat, qth, aostime); } return aostime; } /** * \brief Predict the next pass. * \param sat Pointer to the satellite data. * \param qth Pointer to the observer data. * \param maxdt The maximum number of days to look ahead. * \return Pointer newly allocated pass_t structure that should be freed * with free_pass when no longer needed, or NULL if no pass can be * found. * * This function simply wraps the get_pass function using the current time * as parameter. * * \note the data in sat will be corrupt (future) and must be refreshed * by the caller, if the caller will need it later on (eg. if the caller * is GtkSatList). */ pass_t *get_next_pass(sat_t * sat, qth_t * qth, gdouble maxdt) { gdouble now; /* get the current time and call the get_pass function */ now = get_current_daynum(); return get_pass(sat, qth, now, maxdt); } /** * \brief Predict upcoming passes starting now * \param sat Pointer to the satellite data. * \param qth Pointer to the observer data. * \param maxdt The maximum number of days to look ahead. * \param num The number of passes to predict. * \return A singly linked list of pass_t structures or NULL if * there was an error. * * This function simply wraps the get_passes function using the * current time as parameter. * * \note the data in sat will be corrupt (future) and must be refreshed * by the caller, if the caller will need it later on (eg. if the caller * is GtkSatList). */ GSList *get_next_passes(sat_t * sat, qth_t * qth, gdouble maxdt, guint num) { gdouble now; /* get the current time and call the get_pass function */ now = get_current_daynum(); return get_passes(sat, qth, now, maxdt, num); } /** * \brief Predict first pass after a certain time. * \param sat Pointer to the satellite data. * \param qth Pointer to the location data. * \param start Starting time. * \param maxdt The maximum number of days to look ahead (0 for no limit). * \return Pointer to a newly allocated pass_t structure or NULL if * there was an error. * * This function assumes that you want a pass that achieves the * minimum elevation of is configured for. */ pass_t *get_pass(sat_t * sat_in, qth_t * qth, gdouble start, gdouble maxdt) { int min_ele = sat_cfg_get_int(SAT_CFG_INT_PRED_MIN_EL); if (min_ele == 0) min_ele = 1; return get_pass_engine(sat_in, qth, start, maxdt, min_ele); } /** * \brief Predict first pass after a certain time ignoring the min elevation. * \param sat Pointer to the satellite data. * \param qth Pointer to the location data. * \param start Starting time. * \param maxdt The maximum number of days to look ahead (0 for no limit). * \return Pointer to a newly allocated pass_t structure or NULL if * there was an error. * This function assumes that you want a pass that achieves the * minimum elevation of is configured for. */ pass_t *get_pass_no_min_el(sat_t * sat_in, qth_t * qth, gdouble start, gdouble maxdt) { return get_pass_engine(sat_in, qth, start, maxdt, 0.0); } /** * \brief Predict first pass after a certain time. * \param sat Pointer to the satellite data. * \param qth Pointer to the location data. * \param start Starting time. * \param maxdt The maximum number of days to look ahead (0 for no limit). * \return Pointer to a newly allocated pass_t structure or NULL if * there was an error. * * This function will find the first upcoming pass with AOS no earlier than * t = start and no later than t = (start+maxdt). * * \note For no time limit use maxdt = 0.0 * * \note the data in sat will be corrupt (future) and must be refreshed * by the caller, if the caller will need it later on (eg. if the caller * is GtkSatList). * * \note Prepending to a singly linked list is much faster than appending. * Therefore, the elements are prepended whereafter the GSList is * reversed */ static pass_t *get_pass_engine(sat_t * sat_in, qth_t * qth, gdouble start, gdouble maxdt, gdouble min_el) { gdouble aos = 0.0; /* time of AOS */ gdouble tca = 0.0; /* time of TCA */ gdouble los = 0.0; /* time of LOS */ gdouble dt = 0.0; /* time diff */ gdouble step = 0.0; /* time step */ gdouble t0 = start; gdouble t; /* current time counter */ gdouble tres = 0.0; /* required time resolution */ gdouble max_el = 0.0; /* maximum elevation */ pass_t *pass = NULL; pass_detail_t *detail = NULL; gboolean done = FALSE; guint iter = 0; /* number of iterations */ sat_t *sat, sat_working; /* FIXME: watchdog */ /*copy sat_in to a working structure */ sat = memcpy(&sat_working, sat_in, sizeof(sat_t)); /* get time resolution; sat-cfg stores it in seconds */ tres = sat_cfg_get_int(SAT_CFG_INT_PRED_RESOLUTION) / 86400.0; /* loop until we find a pass with elevation > SAT_CFG_INT_PRED_MIN_EL or we run out of time FIXME: we should have a safety break */ while (!done) { /* Find los of next pass or of current pass */ los = find_los(sat, qth, t0, maxdt); // See if a pass is ongoing aos = find_aos(sat, qth, t0, start + maxdt - t0); if (aos > los) // los is from an currently happening pass, find previous aos aos = find_prev_aos(sat, qth, t0); /* aos = 0.0 means no aos */ if (aos == 0.0) done = TRUE; /* check whether we are within time limits; maxdt = 0 mean no time limit. */ else if ((maxdt > 0.0) && (aos > (start + maxdt))) { done = TRUE; } else { //los = find_los (sat, qth, aos + 0.001, maxdt); // +1.5 min later dt = los - aos; /* get time step, which will give us the max number of entries */ step = dt / sat_cfg_get_int(SAT_CFG_INT_PRED_NUM_ENTRIES); /* but if this is smaller than the required resolution we go with the resolution */ if (step < tres) step = tres; /* create a pass_t entry; FIXME: g_try_new in 2.8 */ pass = g_new(pass_t, 1); pass->aos = aos; pass->los = los; pass->max_el = 0.0; pass->aos_az = 0.0; pass->los_az = 0.0; pass->maxel_az = 0.0; pass->vis[0] = '-'; pass->vis[1] = '-'; pass->vis[2] = '-'; pass->vis[3] = 0; pass->satname = g_strdup(sat->nickname); pass->details = NULL; /*copy qth data into the pass for later comparisons */ qth_small_save(qth, &(pass->qth_comp)); /* iterate over each time step */ for (t = pass->aos; t <= pass->los; t += step) { /* calculate satellite data */ predict_calc(sat, qth, t); /* in the first iter we want to store pass->aos_az */ if (t == pass->aos) { pass->aos_az = sat->az; pass->orbit = sat->orbit; } /* append details to sat->details */ detail = g_new(pass_detail_t, 1); detail->time = t; detail->pos.x = sat->pos.x; detail->pos.y = sat->pos.y; detail->pos.z = sat->pos.z; detail->pos.w = sat->pos.w; detail->vel.x = sat->vel.x; detail->vel.y = sat->vel.y; detail->vel.z = sat->vel.z; detail->vel.w = sat->vel.w; detail->velo = sat->velo; detail->az = sat->az; detail->el = sat->el; detail->range = sat->range; detail->range_rate = sat->range_rate; detail->lat = sat->ssplat; detail->lon = sat->ssplon; detail->alt = sat->alt; detail->ma = sat->ma; detail->phase = sat->phase; detail->footprint = sat->footprint; detail->orbit = sat->orbit; detail->vis = get_sat_vis(sat, qth, t); /* also store visibility "bit" */ switch (detail->vis) { case SAT_VIS_VISIBLE: pass->vis[0] = 'V'; break; case SAT_VIS_DAYLIGHT: pass->vis[1] = 'D'; break; case SAT_VIS_ECLIPSED: pass->vis[2] = 'E'; break; default: break; } pass->details = g_slist_prepend(pass->details, detail); /* store elevation if greater than the previously stored one */ if (sat->el > max_el) { max_el = sat->el; tca = t; pass->maxel_az = sat->az; } /* g_print ("TIME: %f\tAZ: %f\tEL: %f (MAX: %f)\n", */ /* t, sat->az, sat->el, max_el); */ } pass->details = g_slist_reverse(pass->details); /* calculate satellite data */ predict_calc(sat, qth, pass->los); /* store los_az, max_el and tca */ pass->los_az = sat->az; pass->max_el = max_el; pass->tca = tca; /* check whether this pass is good */ if (max_el >= min_el) { done = TRUE; } else { done = FALSE; t0 = los + 0.014; // +20 min free_pass(pass); pass = NULL; } iter++; } } return pass; } /** * Predict passes after a certain time. * * This function calculates num upcoming passes with AOS no earlier * than t = start and not later that t = (start+maxdt). The function will * repeatedly call get_pass until the number of predicted passes is equal to * num, the time has reached limit or the get_pass function returns NULL. * * \note For no time limit use maxdt = 0.0 * * \note the data in sat will be corrupt (future) and must be refreshed * by the caller, if the caller will need it later on (eg. if the caller * is GtkSatList). * * \note Prepending to a singly linked list is much faster than appending. * Therefore, the elements are prepended whereafter the GSList is * reversed */ GSList *get_passes(sat_t * sat, qth_t * qth, gdouble start, gdouble maxdt, guint num) { GSList *passes = NULL; pass_t *pass = NULL; guint i; gdouble t; /* if no number has been specified set it to something big */ if (num == 0) num = 100; t = start; for (i = 0; i < num; i++) { pass = get_pass(sat, qth, t, maxdt); if (pass != NULL) { passes = g_slist_prepend(passes, pass); t = pass->los + 0.014; // +20 min /* if maxdt > 0.0 check whether we have reached t = start+maxdt if yes finish predictions */ if ((maxdt > 0.0) && (t >= (start + maxdt))) { i = num; } } else { /* we can't get any more passes */ i = num; } } if (passes != NULL) passes = g_slist_reverse(passes); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Found %d passes for %s in time window [%f;%f]"), __func__, g_slist_length(passes), sat->nickname, start, start + maxdt); return passes; } pass_t *copy_pass(pass_t * pass) { pass_t *new; new = g_try_new(pass_t, 1); if (new != NULL) { new->aos = pass->aos; new->los = pass->los; new->tca = pass->tca; new->max_el = pass->max_el; new->aos_az = pass->aos_az; new->los_az = pass->los_az; new->orbit = pass->orbit; new->maxel_az = pass->maxel_az; new->vis[0] = pass->vis[0]; new->vis[1] = pass->vis[1]; new->vis[2] = pass->vis[2]; new->vis[3] = pass->vis[3]; new->details = copy_pass_details(pass->details); if (pass->satname != NULL) new->satname = g_strdup(pass->satname); else new->satname = NULL; } return new; } GSList *copy_pass_details(GSList * details) { GSList *new = NULL; guint i, n; n = g_slist_length(details); for (i = 0; i < n; i++) { new = g_slist_prepend(new, copy_pass_detail(PASS_DETAIL (g_slist_nth_data (details, i)))); } new = g_slist_reverse(new); return new; } pass_detail_t *copy_pass_detail(pass_detail_t * detail) { pass_detail_t *new; /* create a pass_t entry; FIXME: g_try_new in 2.8 */ new = g_new(pass_detail_t, 1); new->time = detail->time; new->pos.x = detail->pos.x; new->pos.y = detail->pos.y; new->pos.z = detail->pos.z; new->pos.w = detail->pos.w; new->vel.x = detail->vel.x; new->vel.y = detail->vel.y; new->vel.z = detail->vel.z; new->vel.w = detail->vel.w; new->velo = detail->velo; new->az = detail->az; new->el = detail->el; new->range = detail->range; new->range_rate = detail->range_rate; new->lat = detail->lat; new->lon = detail->lon; new->alt = detail->alt; new->ma = detail->ma; new->phase = detail->phase; new->footprint = detail->footprint; new->orbit = detail->orbit; new->vis = detail->vis; return new; } void free_pass(pass_t * pass) { if (pass != NULL) { free_pass_details(pass->details); if (pass->satname != NULL) { g_free(pass->satname); pass->satname = NULL; } g_free(pass); pass = NULL; } } /** \brief Free a list of passes. */ void free_passes(GSList * passes) { guint n, i; gpointer pass; n = g_slist_length(passes); for (i = 0; i < n; i++) { pass = g_slist_nth_data(passes, i); /* free element data */ free_pass(PASS(pass)); } /* now free the list elements */ g_slist_free(passes); passes = NULL; } /** * \brief Free a pass detail structure. * * This function is not rarely useful except for the * free_pass function. */ void free_pass_detail(pass_detail_t * detail) { g_free(detail); detail = NULL; } /** Free the whole list of details. */ void free_pass_details(GSList * details) { guint n, i; gpointer detail; n = g_slist_length(details); for (i = 0; i < n; i++) { detail = g_slist_nth_data(details, i); /* free element data */ free_pass_detail(PASS_DETAIL(detail)); } /* free list elements */ g_slist_free(details); details = NULL; } /** * \brief Get current pass. * \param sat Pointer to the satellite data. * \param qth Pointer to the QTH data. * \param start Time to start calculations; use 0.0 for now. * \return Pointer to a newly allocated pass_t structure or NULL if * there was an error. * * Assuming that sat->el > 0.0 this function calculates the details of the * current pass from AOS time to LOS time. * First the function goes back in time to before the AOS, then it calls * the get_pass_no_min_el function to get the details of the current pass * disregarding any minimum elevation requirements. * * \note The start parameter has been introduced to allow correct use of this * function in non-realtime cases. */ pass_t *get_current_pass(sat_t * sat_in, qth_t * qth, gdouble start) { gdouble t, t0; gdouble el0; sat_t *sat, sat_working; pass_t *pass; /*copy sat_in to a working structure */ sat = memcpy(&sat_working, sat_in, sizeof(sat_t)); if (start > 0.0) t = start; else t = get_current_daynum(); predict_calc(sat, qth, t); /*save initial conditions for later comparison */ t0 = t; el0 = sat->el; /* check whether satellite has aos */ if (!has_aos(sat, qth)) return NULL; /* find a time before AOS */ while (sat->el > 0.0) { predict_calc(sat, qth, t); t -= 0.007; // +10 min } pass = get_pass_no_min_el(sat, qth, t, 0.0); if (el0 > 0.0) { /* this function is only specified if the elevation is greater than zero at the time it is called */ if (pass) { if (pass->aos > t0) sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Returning a pass for %s that starts after the seeded time."), __func__, sat->nickname); if (pass->los < t0) sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Returning a pass for %s that ends before the seeded time."), __func__, sat->nickname); } } return pass; } gpredict/src/predict-tools.h000066400000000000000000000101411427377236300164220ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Charles Suprin Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef PREDICT_TOOLS_H #define PREDICT_TOOLS_H 1 #include #include "gtk-sat-data.h" #include "sat-vis.h" #include "sgpsdp/sgp4sdp4.h" /** \brief Brief satellite pass info. */ typedef struct { gchar *satname; /*!< satellite name */ gdouble aos; /*!< AOS time in "jul_utc" */ gdouble tca; /*!< TCA time in "jul_utc" */ gdouble los; /*!< LOS time in "jul_utc" */ gdouble max_el; /*!< Maximum elevation during pass */ gdouble aos_az; /*!< Azimuth at AOS */ gdouble los_az; /*!< Azimuth at LOS */ gint orbit; /*!< Orbit number */ gdouble maxel_az; /*!< Azimuth at maximum elevation */ gchar vis[4]; /*!< Visibility string, e.g. VSE, -S-, V-- */ GSList *details; /*!< List of pass_detail_t entries */ qth_small_t qth_comp; /*!< Short version of qth at time computed */ } pass_t; /** * \brief Pass detail entry. * * In order to ensure maximum flexibility at a minimal effort, only the * raw position and velocity is calculated. Calculations of the * "human readable" parameters are the responsibility of the consumer. * This way we can use the same prediction engine for various consumers * without having too much overhead and complexity in the low level code. */ typedef struct { gdouble time; /*!< time in "jul_utc" */ vector_t pos; /*!< Raw unprocessed position at time */ vector_t vel; /*!< Raw unprocessed velocity at time */ gdouble velo; gdouble az; gdouble el; gdouble range; gdouble range_rate; gdouble lat; gdouble lon; gdouble alt; gdouble ma; gdouble phase; gdouble footprint; sat_vis_t vis; gint orbit; } pass_detail_t; /* type casting macros */ #define PASS(x) ((pass_t *) x) #define PASS_DETAIL(x) ((pass_detail_t *) x) /* SGP4/SDP4 driver */ void predict_calc (sat_t *sat, qth_t *qth, gdouble t); /* AOS/LOS time calculators */ gdouble find_aos (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt); gdouble find_los (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt); gdouble find_prev_aos (sat_t *sat, qth_t *qth, gdouble start); /* next events */ pass_t *get_next_pass (sat_t *sat, qth_t *qth, gdouble maxdt); GSList *get_next_passes (sat_t *sat, qth_t *qth, gdouble maxdt, guint num); /* future events */ pass_t *get_pass (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt); GSList *get_passes (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt, guint num); pass_t *get_current_pass (sat_t *sat, qth_t *qth, gdouble start); pass_t *get_pass_no_min_el (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt); /* copying */ pass_t *copy_pass (pass_t *pass); GSList *copy_pass_details (GSList *details); pass_detail_t *copy_pass_detail (pass_detail_t *detail); /* memory cleaning */ void free_pass (pass_t *pass); void free_passes (GSList *passes); void free_pass_detail (pass_detail_t *detail); void free_pass_details (GSList *details); #endif gpredict/src/print-pass.c000066400000000000000000000227221427377236300157350ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include "sgpsdp/sgp4sdp4.h" #include "predict-tools.h" #include "gtk-sat-data.h" #include "sat-cfg.h" #include "sat-log.h" #include "pass-to-txt.h" #include "print-pass.h" #ifdef HAVE_CONFIG_H # include #endif /* In points */ #define HEADER_HEIGHT (10*72/25.4) #define HEADER_GAP (3*72/25.4) typedef struct { //gchar *filename; gdouble font_size; gint lines_per_page; gchar *pgheader; gchar **lines; gint num_lines; gint num_pages; gint fields; } PrintData; static void begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data); static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data); static void end_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data); /** \brief Print a satellite pass. * \param pass Pointer to the pass_t data * \param qth Pointer to the qth_t structure * \param parent Transient parent of the dialog, or NULL * * This function prints a satellite pass to the printer (or a file) using the * Gtk+ printing API. The function takes the user configuration into account * and only prints the selected columns. The font size will be adjusted so that * one row can fit on one line. The function will also try to reduce the number * of rows so that the whole pass can fit on one page: * * +-------------------------+ * | header | * |------------+------------| * | | | * | | | * | polar | az/el | * | | | * |------------+------------| * | | * | Table with data | * | | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | - - - - - - - - - - - | * | | * +-------------------------+ * */ void print_pass (pass_t *pass, qth_t *qth, GtkWindow *parent) { gchar *text,*header,*buff; GtkPrintOperation *operation; PrintData *data; GError *error = NULL; /* TODO check pass and qth */ operation = gtk_print_operation_new (); data = g_new0 (PrintData, 1); data->font_size = 12.0; // FIXME /* page header */ data->pgheader = g_strdup_printf (_("Pass details for %s (orbit %d)"), pass->satname, pass->orbit); /* convert data to printable strings; we use existing pass_to_txt functions */ data->fields = sat_cfg_get_int (SAT_CFG_INT_PRED_SINGLE_COL); header = pass_to_txt_tblheader (pass, qth, data->fields); text = pass_to_txt_tblcontents (pass, qth, data->fields); buff = g_strconcat (header, text, NULL); data->lines = g_strsplit (buff, "\n", 0); g_free (text); g_free (header); g_free (buff); g_signal_connect (G_OBJECT (operation), "begin-print", G_CALLBACK (begin_print), data); g_signal_connect (G_OBJECT (operation), "draw-page", G_CALLBACK (draw_page), data); g_signal_connect (G_OBJECT (operation), "end-print", G_CALLBACK (end_print), data); gtk_print_operation_set_use_full_page (operation, FALSE); gtk_print_operation_set_unit (operation, GTK_UNIT_POINTS); gtk_print_operation_run (operation, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, parent, &error); g_object_unref (operation); if (error) { sat_log_log (SAT_LOG_LEVEL_ERROR, "%s: %s", __func__, error->message); GtkWidget *dialog; dialog = gtk_message_dialog_new (parent, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", error->message); g_error_free (error); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); gtk_widget_show (dialog); } } /** \brief Print passes * \param passes A GSList containing pointers to pass_t data. * * Create a summary page, then for each pass_t call print_pass() */ void print_passes (GSList *passes) { (void) passes; /* avoid unused parameter compiler warning */ sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Not implemented!"), __func__); } static void begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { PrintData *data = (PrintData *)user_data; //char *contents; int i; double height; height = gtk_print_context_get_height (context) - HEADER_HEIGHT - HEADER_GAP; data->lines_per_page = floor (height / data->font_size); //g_file_get_contents (data->filename, &contents, NULL, NULL); //data->lines = g_strsplit (contents, "\n", 0); //g_free (contents); i = 0; while (data->lines[i] != NULL) i++; data->num_lines = i; data->num_pages = (data->num_lines - 1) / data->lines_per_page + 1; gtk_print_operation_set_n_pages (operation, data->num_pages); } static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data) { PrintData *data = (PrintData *)user_data; cairo_t *cr; PangoLayout *layout; gint text_width, text_height; gdouble width; gint line, i; PangoFontDescription *desc; gchar *page_str; (void) operation; /* avoid unused parameter compiler warning */ cr = gtk_print_context_get_cairo_context (context); width = gtk_print_context_get_width (context); cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT); cairo_set_source_rgb (cr, 0.8, 0.8, 0.8); cairo_fill_preserve (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_width (cr, 1); cairo_stroke (cr); layout = gtk_print_context_create_pango_layout (context); desc = pango_font_description_from_string ("sans 14"); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); pango_layout_set_text (layout, data->pgheader, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); if (text_width > width) { pango_layout_set_width (layout, width); pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_START); pango_layout_get_pixel_size (layout, &text_width, &text_height); } cairo_move_to (cr, (width - text_width) / 2, (HEADER_HEIGHT - text_height) / 2); pango_cairo_show_layout (cr, layout); page_str = g_strdup_printf ("%d/%d", page_nr + 1, data->num_pages); pango_layout_set_text (layout, page_str, -1); g_free (page_str); pango_layout_set_width (layout, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, width - text_width - 4, (HEADER_HEIGHT - text_height) / 2); pango_cairo_show_layout (cr, layout); g_object_unref (layout); layout = gtk_print_context_create_pango_layout (context); desc = pango_font_description_from_string ("monospace"); pango_font_description_set_size (desc, data->font_size * PANGO_SCALE); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); cairo_move_to (cr, 0, HEADER_HEIGHT + HEADER_GAP); line = page_nr * data->lines_per_page; for (i = 0; i < data->lines_per_page && line < data->num_lines; i++) { pango_layout_set_text (layout, data->lines[line], -1); pango_cairo_show_layout (cr, layout); cairo_rel_move_to (cr, 0, data->font_size); line++; } g_object_unref (layout); } /** * */ static void end_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { PrintData *data = (PrintData *)user_data; (void) operation; /* avoid unused parameter compiler warning */ (void) context; /* avoid unused parameter compiler warning */ g_free (data->pgheader); g_strfreev (data->lines); g_free (data); } gpredict/src/print-pass.h000066400000000000000000000025401427377236300157360ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef PRINT_PASS_H #define PRINT_PASS_H 1 #include #include "sat-pass-dialogs.h" #include "predict-tools.h" #include "gtk-sat-data.h" void print_pass (pass_t *pass, qth_t *qth, GtkWindow *parent); void print_passes (GSList *passes); #endif gpredict/src/qth-data.c000066400000000000000000000621121427377236300153350ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC Copyright (C) 2011-2012 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #ifdef HAS_LIBGPS #include #endif #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "locator.h" #include "orbit-tools.h" #include "qth-data.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" void qth_validate(qth_t * qth); /** * Read QTH data from file. * * \param filename The file to read from. * \param qth Pointer to a qth_t data structure where the data will be stored. * \return FALSE if an error occurred, TRUE otherwise. * * \note The function uses the new key=value file parser from glib. */ gint qth_data_read(const gchar * filename, qth_t * qth) { GError *error = NULL; gchar *buff; gchar **buffv; qth->data = g_key_file_new(); g_key_file_set_list_separator(qth->data, ';'); /* bail out with error message if data can not be read */ g_key_file_load_from_file(qth->data, filename, G_KEY_FILE_KEEP_COMMENTS, &error); if (error != NULL) { g_key_file_free(qth->data); qth->data = NULL; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not load data from %s (%s)"), __func__, filename, error->message); return FALSE; } /* send a debug message, then read data */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: QTH data: %s"), __func__, filename); /*** FIXME: should check that strings are UTF-8? */ /* QTH Name */ buff = g_path_get_basename(filename); buffv = g_strsplit(buff, ".qth", 0); qth->name = g_strdup(buffv[0]); g_free(buff); g_strfreev(buffv); /* QTH location */ qth->loc = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LOC_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: QTH has no location (%s)."), __func__, error->message); qth->loc = g_strdup(""); g_clear_error(&error); } /* QTH description */ qth->desc = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_DESC_KEY, &error); if ((qth->desc == NULL) || (error != NULL)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: QTH has no description."), __func__); qth->desc = g_strdup(""); g_clear_error(&error); } /* Weather station */ qth->wx = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_WX_KEY, &error); if ((qth->wx == NULL) || (error != NULL)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: QTH has no weather station."), __func__); qth->wx = g_strdup(""); g_clear_error(&error); } /* QTH Latitude */ buff = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LAT_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading QTH latitude (%s)."), __func__, error->message); g_clear_error(&error); if (buff != NULL) g_free(buff); qth->lat = 0.0; } else { qth->lat = g_ascii_strtod(buff, NULL); g_free(buff); } /* QTH Longitude */ buff = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LON_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading QTH longitude (%s)."), __func__, error->message); g_clear_error(&error); if (buff != NULL) g_free(buff); qth->lon = 0.0; } else { qth->lon = g_ascii_strtod(buff, NULL); g_free(buff); } /* QTH Altitude */ qth->alt = g_key_file_get_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_ALT_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading QTH altitude (%s)."), __func__, error->message); g_clear_error(&error); if (buff != NULL) g_free(buff); qth->alt = 0; } /* QTH Type */ qth->type = g_key_file_get_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_TYPE_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Error reading QTH type (%s)."), __func__, error->message); g_clear_error(&error); qth->type = QTH_STATIC_TYPE; } #if HAS_LIBGPS /* GPSD Port */ qth->gpsd_port = g_key_file_get_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_GPSD_PORT_KEY, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading GPSD port (%s)."), __func__, error->message); g_clear_error(&error); qth->gpsd_port = 2947; } /* GPSD Server */ qth->gpsd_server = g_key_file_get_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_GPSD_SERVER_KEY, &error); if ((qth->gpsd_server == NULL) || (error != NULL)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: QTH has no GPSD Server."), __func__); qth->gpsd_server = g_strdup(""); g_clear_error(&error); } #endif /* set QRA based on data */ if (longlat2locator(qth->lon, qth->lat, qth->qra, 2) != RIG_OK) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Could not set QRA for %s at %f, %f."), __func__, qth->name, qth->lon, qth->lat); } qth_validate(qth); /* Now, send debug message and return */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: QTH data: %s, %.4f, %.4f, %d"), __func__, qth->name, qth->lat, qth->lon, qth->alt); return TRUE; } /** * Save the QTH data to a file. * * \param filename The file to save to. * \param qth Pointer to a qth_t data structure from which the data will be read. */ gint qth_data_save(const gchar * filename, qth_t * qth) { gchar *buff; gint ok = 1; qth->data = g_key_file_new(); g_key_file_set_list_separator(qth->data, ';'); /* description */ if (qth->desc && (g_utf8_strlen(qth->desc, -1) > 0)) { g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_DESC_KEY, qth->desc); } /* location */ if (qth->loc && (g_utf8_strlen(qth->loc, -1) > 0)) { g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LOC_KEY, qth->loc); } /* latitude */ /* buff = g_strdup_printf ("%.4f", qth->lat); */ buff = g_malloc(10); buff = g_ascii_dtostr(buff, 9, qth->lat); g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LAT_KEY, buff); g_free(buff); /* longitude */ /* buff = g_strdup_printf ("%.4f", qth->lon); */ buff = g_malloc(10); buff = g_ascii_dtostr(buff, 9, qth->lon); g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_LON_KEY, buff); g_free(buff); /* altitude */ g_key_file_set_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_ALT_KEY, qth->alt); /* weather station */ if (qth->wx && (g_utf8_strlen(qth->wx, -1) > 0)) { g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_WX_KEY, qth->wx); } /* qth type */ /* static, gpsd... */ g_key_file_set_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_TYPE_KEY, qth->type); #if HAS_LIBGPS /* gpsd server */ if (qth->gpsd_server && (g_utf8_strlen(qth->gpsd_server, -1) > 0)) { g_key_file_set_string(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_GPSD_SERVER_KEY, qth->gpsd_server); } /* gpsd port */ g_key_file_set_integer(qth->data, QTH_CFG_MAIN_SECTION, QTH_CFG_GPSD_PORT_KEY, qth->gpsd_port); #endif /* saving code */ ok = !(gpredict_save_key_file(qth->data, filename)); return ok; } void qth_data_free(qth_t * qth) { /* stop any updating */ qth_data_update_stop(qth); if (qth->name) { g_free(qth->name); qth->name = NULL; } if (qth->loc) { g_free(qth->loc); qth->loc = NULL; } if (qth->desc) { g_free(qth->desc); qth->desc = NULL; } if (qth->qra) { g_free(qth->qra); qth->qra = NULL; } if (qth->wx) { g_free(qth->wx); qth->wx = NULL; } if (qth->data) { g_key_file_free(qth->data); qth->data = NULL; } g_free(qth); } /** * Update the qth data by whatever method is appropriate. * * \param qth the qth data structure to update * \param qth the time at which the qth is to be computed. this may be ignored by gps updates. */ gboolean qth_data_update(qth_t * qth, gdouble t) { #ifndef HAS_LIBGPS (void)qth; (void)t; return FALSE; #else gboolean retval = FALSE; guint num_loops = 0; if (qth->type != QTH_GPSD_TYPE) return FALSE; if (((t - qth->gpsd_update) > 30.0 / 86400.0) && (t - qth->gpsd_connected > 30.0 / 86400.0)) { /* if needed restart the gpsd interface */ qth_data_update_stop(qth); qth_data_update_init(qth); qth->gpsd_connected = t; } if (qth->gps_data != NULL) { switch (GPSD_API_MAJOR_VERSION) { case 4: #if GPSD_API_MAJOR_VERSION==4 while (gps_waiting(qth->gps_data) == TRUE) { /* this is a watchdog in case there is a problem with the gpsd code. */ /* if the server was up and has failed then gps_waiting in 2.92 confirmed */ /* will return 1 (supposedly fixed in later versions.) */ /* if we do not do this as a while loop, the gpsd packets can backup */ /* and no longer be in sync with the gps receiver */ num_loops++; if (num_loops > 1000) { retval = FALSE; break; } if (gps_poll(qth->gps_data) == 0) { /* handling packet_set inline with http://gpsd.berlios.de/client-howto.html */ if (qth->gps_data->set & PACKET_SET) { if (qth->gps_data->fix.mode >= MODE_2D) { if (qth->lat != qth->gps_data->fix.latitude) { qth->lat = qth->gps_data->fix.latitude; retval = TRUE; } if (qth->lon != qth->gps_data->fix.longitude) { qth->lon = qth->gps_data->fix.longitude; retval = TRUE; } } if (qth->gps_data->fix.mode == MODE_3D) { if (qth->alt != qth->gps_data->fix.altitude) { qth->alt = qth->gps_data->fix.altitude; retval = TRUE; } } else { if (qth->alt != 0) { qth->alt = 0; retval = TRUE; } } } } } #endif break; case 5: #if GPSD_API_MAJOR_VERSION==5 while (gps_waiting(qth->gps_data, 0) == 1) { /* see comment from above */ /* hopefully not needed but does not hurt anything. */ num_loops++; if (num_loops > 1000) { retval = FALSE; break; } if (gps_read(qth->gps_data) == 0) { /* handling packet_set inline with http://gpsd.berlios.de/client-howto.html */ if (qth->gps_data->set & PACKET_SET) { if (qth->gps_data->fix.mode >= MODE_2D) { if (qth->lat != qth->gps_data->fix.latitude) { qth->lat = qth->gps_data->fix.latitude; retval = TRUE; } if (qth->lon != qth->gps_data->fix.longitude) { qth->lon = qth->gps_data->fix.longitude; retval = TRUE; } } if (qth->gps_data->fix.mode == MODE_3D) { if (qth->alt != qth->gps_data->fix.altitude) { qth->alt = qth->gps_data->fix.altitude; retval = TRUE; } } else { if (qth->alt != 0) { qth->alt = 0; retval = TRUE; } } } } } #endif break; case 6: /* for libgps 3.17 */ #if GPSD_API_MAJOR_VERSION==6 while (gps_waiting(qth->gps_data, 0) == 1) { /* see comment from above */ /* hopefully not needed but does not hurt anything. */ num_loops++; if (num_loops > 1000) { retval = FALSE; break; } if (gps_read(qth->gps_data) > 0) { /* handling packet_set inline with http://gpsd.berlios.de/client-howto.html */ if (qth->gps_data->set & PACKET_SET) { if (qth->gps_data->fix.mode >= MODE_2D) { if (qth->lat != qth->gps_data->fix.latitude) { qth->lat = qth->gps_data->fix.latitude; retval = TRUE; } if (qth->lon != qth->gps_data->fix.longitude) { qth->lon = qth->gps_data->fix.longitude; retval = TRUE; } } if (qth->gps_data->fix.mode == MODE_3D) { if (qth->alt != qth->gps_data->fix.altitude) { qth->alt = qth->gps_data->fix.altitude; retval = TRUE; } } else { if (qth->alt != 0) { qth->alt = 0; retval = TRUE; } } } } } #endif break; default: break; } if (retval == TRUE) { qth->gpsd_update = t; } } qth_validate(qth); if (longlat2locator(qth->lon, qth->lat, qth->qra, 2) != RIG_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not set QRA for %s at %f, %f."), __func__, qth->name, qth->lon, qth->lat); } return retval; #endif // HAS_LIBGPS } /** * Initialize whatever structures inside the qth_t structure for later updates. * * \param qth the qth data structure to update * * Initial intention of this is to open sockets and ports to gpsd * and other like services to update the qth position. */ gboolean qth_data_update_init(qth_t * qth) { #ifdef HAS_LIBGPS char *port; #endif gboolean retval = FALSE; if (qth->type != QTH_GPSD_TYPE) return FALSE; /** FIXME: refactor */ #ifdef HAS_LIBGPS switch (GPSD_API_MAJOR_VERSION) { case 4: #if GPSD_API_MAJOR_VERSION==4 /* open the connection to gpsd and start the stream */ qth->gps_data = g_try_new0(struct gps_data_t, 1); port = g_strdup_printf("%d", qth->gpsd_port); if (gps_open_r(qth->gpsd_server, port, qth->gps_data) == -1) { free(qth->gps_data); qth->gps_data = NULL; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not open gpsd at %s:%d"), __func__, qth->gpsd_server, qth->gpsd_port); retval = FALSE; } else { (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); retval = TRUE; } g_free(port); #endif break; case 5: #if GPSD_API_MAJOR_VERSION==5 /* open the connection to gpsd and start the stream */ qth->gps_data = g_try_new0(struct gps_data_t, 1); port = g_strdup_printf("%d", qth->gpsd_port); if (gps_open(qth->gpsd_server, port, qth->gps_data) == -1) { free(qth->gps_data); qth->gps_data = NULL; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not open gpsd at %s:%d"), __func__, qth->gpsd_server, qth->gpsd_port); retval = FALSE; } else { (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); retval = TRUE; } g_free(port); #endif break; case 6: /* for libgps 3.17 */ #if GPSD_API_MAJOR_VERSION==6 /* open the connection to gpsd and start the stream */ qth->gps_data = g_try_new0(struct gps_data_t, 1); port = g_strdup_printf("%d", qth->gpsd_port); if (gps_open(qth->gpsd_server, port, qth->gps_data) == -1) { free(qth->gps_data); qth->gps_data = NULL; sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not open gpsd at %s:%d"), __func__, qth->gpsd_server, qth->gpsd_port); retval = FALSE; } else { (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); retval = TRUE; } g_free(port); #endif break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unsupported gpsd api major version (%d)"), __func__, GPSD_API_MAJOR_VERSION); return FALSE; break; } #else return FALSE; #endif return retval; } /** * Shutdown and free structures inside the qth_t structure were used for updates. * * \param qth the qth data structure to update * * Initial intention of this is to open sockets and ports to gpsd * and other like services to update the qth position. */ void qth_data_update_stop(qth_t * qth) { if (qth->type != QTH_GPSD_TYPE) return; /* close gpsd socket */ if (qth->gps_data != NULL) { #ifdef HAS_LIBGPS switch (GPSD_API_MAJOR_VERSION) { case 4: #if GPSD_API_MAJOR_VERSION==4 gps_close(qth->gps_data); #endif break; case 5: #if GPSD_API_MAJOR_VERSION==5 gps_close(qth->gps_data); #endif break; case 6: /* for libgps 3.17 */ #if GPSD_API_MAJOR_VERSION==6 gps_close(qth->gps_data); #endif break; default: break; } #endif qth->gps_data = NULL; } } /** * Load initial values into the qth_t data structure * * \param qth the qth data structure to update */ void qth_init(qth_t * qth) { qth->lat = 0; qth->lon = 0; qth->alt = 0; qth->type = QTH_STATIC_TYPE; qth->gps_data = NULL; qth->name = NULL; qth->loc = NULL; qth->gpsd_port = 0; qth->gpsd_server = NULL; qth->gpsd_update = 0.0; qth->gpsd_connected = 0.0; qth->qra = g_strdup("AA00"); } /** * Load safe values into the qth_t data structure * * \param qth the qth data structure to update * * This can be used if some operation is suspected of corrupting the structure * or entering invalid data. Originally it is based on code that reset values * if a load/read of a .qth failed. */ void qth_safe(qth_t * qth) { qth->name = g_strdup(_("Error")); qth->loc = g_strdup(_("Error")); qth->type = QTH_STATIC_TYPE; qth->lat = 0; qth->lon = 0; qth->alt = 0; qth->gps_data = NULL; } /** * Copy values from qth structure to qth_small structure * * \param qth the qth data structure to backup * \param qth_small the data structure to store values * * This is intended for copying only the minimal qth data to a structure for * tagging and later comparison. */ void qth_small_save(qth_t * qth, qth_small_t * qth_small) { qth_small->lat = qth->lat; qth_small->lon = qth->lon; qth_small->alt = qth->alt; } /** * Validate the contents of a qth structure and correct if necessary * * \param qth the qth data structure to cleanup */ void qth_validate(qth_t * qth) { /* check that the values are not set to nonsense such as nan or inf. * if so error it and set to zero. */ if (!isnormal(qth->lat) && (qth->lat != 0)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: QTH data had bogus lat %f"), __func__, qth->lat); qth->lat = 0.0; } if (!isnormal(qth->lon) && (qth->lon != 0)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: QTH data had bogus lon %f"), __func__, qth->lon); qth->lon = 0.0; } /* check that qth->lat and qth->lon are in a reasonable range and if not wrap them back */ if (fabs(qth->lat) > 90.0 || fabs(qth->lon) > 180.0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d"), __func__, qth->name, qth->lat, qth->lon, qth->alt); qth->lat = fmod(qth->lat, 360.0); while ((qth->lat) > 180.0) { qth->lat = qth->lat - 180.0; qth->lon = qth->lon + 180.0; } while ((qth->lat) < -180.0) { qth->lat = qth->lat + 180.0; qth->lon = qth->lon + 180.0; } if (qth->lat > 90.0) { qth->lat = 180.0 - qth->lat; qth->lon = qth->lon + 180.0; } if (qth->lat < -90.0) { qth->lat = -180.0 - qth->lat; qth->lon = qth->lon + 180.0; } qth->lon = fmod(qth->lon + 180.0, 360.0) - 180; if (qth->lon < -180.0) { qth->lon += 360.0; } else if (qth->lon > 180.0) { qth->lon -= 360.0; } } } /** * Compute the distance between a location in a qth_t structure and * qth_small_t structure. * * \param qth the qth data structure * \param qth_small the data structure * * This is intended for measuring distance between the current qth and * the position that tagged some data in qth_small. */ double qth_small_dist(qth_t * qth, qth_small_t qth_small) { double distance, azimuth; qrb(qth->lon, qth->lat, qth_small.lon, qth_small.lat, &distance, &azimuth); return (distance); } gpredict/src/qth-data.h000066400000000000000000000041561427377236300153460ustar00rootroot00000000000000#ifndef __QTH_DATA_H__ #define __QTH_DATA_H__ 1 #include #include "sgpsdp/sgp4sdp4.h" /** QTH data structure in human readable form. */ typedef struct { gchar *name; /*!< Name, eg. callsign. */ gchar *loc; /*!< Location, eg City, Country. */ gchar *desc; /*!< Short description. */ gdouble lat; /*!< Latitude in dec. deg. North. */ gdouble lon; /*!< Longitude in dec. deg. East. */ gint alt; /*!< Altitude above sea level in meters. */ gchar *qra; /*!< QRA locator */ gchar *wx; /*!< Weather station code (4 chars). */ gint type; /*!< QTH type (static,gpsd). */ gchar *gpsd_server; /*!< GPSD Server name. */ gint gpsd_port; /*!< GPSD Server port. */ gdouble gpsd_update; /*!< Time last GPSD update was received. */ gdouble gpsd_connected; /*!< Time last GPSD update was last attempted to connect. */ struct gps_data_t *gps_data; /*!< gpsd data structure. */ GKeyFile *data; /*!< Raw data from cfg file. */ } qth_t; /** Compact QTH data structure for tagging data and comparing. */ typedef struct { gdouble lat; /*!< Latitude in dec. deg. North. */ gdouble lon; /*!< Longitude in dec. deg. East. */ gint alt; /*!< Altitude above sea level in meters. */ } qth_small_t; typedef enum { QTH_STATIC_TYPE = 0, QTH_GPSD_TYPE } qth_data_type; gint qth_data_read(const gchar * filename, qth_t * qth); gint qth_data_save(const gchar * filename, qth_t * qth); void qth_data_free(qth_t * qth); gboolean qth_data_update(qth_t * qth, gdouble t); gboolean qth_data_update_init(qth_t * qth); void qth_data_update_stop(qth_t * qth); double qth_small_dist(qth_t * qth, qth_small_t qth_small); void qth_small_save(qth_t * qth, qth_small_t * qth_small); void qth_init(qth_t * qth); void qth_safe(qth_t * qth); #endif gpredict/src/qth-editor.c000066400000000000000000000633061427377236300157200ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "gtk-sat-data.h" #include "loc-tree.h" #include "locator.h" #include "qth-editor.h" #include "sat-cfg.h" #include "sat-log.h" /* Symbolic refs to be used when calling select_location in order * to determine which mode the selection should run in, ie. * select location or select weather station. */ enum { SELECTION_MODE_LOC = 1, SELECTION_MODE_WX = 2 }; extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *dialog; /* dialog window */ static GtkWidget *name; /* QTH name */ static GtkWidget *location; /* QTH location */ static GtkWidget *desc; /* QTH description */ static GtkWidget *lat, *lon, *alt; /* LAT, LON and ALT */ static GtkWidget *ns, *ew; static GtkWidget *qra; /* QRA locator */ static gulong latsigid, lonsigid, nssigid, ewsigid, qrasigid; static GtkWidget *wx; /* weather station */ #ifdef HAS_LIBGPS static GtkWidget *type; /* GPSD type */ static GtkWidget *server; /* GPSD Server */ static GtkWidget *port; /* GPSD Port */ #endif /** Update widgets from the currently selected row in the treeview */ static void update_widgets(qth_t * qth) { if (qth->name != NULL) gtk_entry_set_text(GTK_ENTRY(name), qth->name); if (qth->loc != NULL) gtk_entry_set_text(GTK_ENTRY(location), qth->loc); if (qth->desc != NULL) gtk_entry_set_text(GTK_ENTRY(desc), qth->desc); if (qth->wx != NULL) gtk_entry_set_text(GTK_ENTRY(wx), qth->wx); if (qth->lat < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), fabs(qth->lat)); if (qth->lon < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), fabs(qth->lon)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), qth->alt); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Loaded %s for editing:\n" "LAT:%.2f LON:%.2f ALT:%d"), __FILE__, __LINE__, (qth->name != NULL) ? qth->name : "???", qth->lat, qth->lon, qth->alt); } /** * Clear the contents of all widgets. * * This function is usually called when the user clicks on the CLEAR button */ static void clear_widgets() { gtk_entry_set_text(GTK_ENTRY(name), ""); gtk_entry_set_text(GTK_ENTRY(location), ""); gtk_entry_set_text(GTK_ENTRY(desc), ""); gtk_entry_set_text(GTK_ENTRY(wx), ""); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), 0.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), 0.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), 0); gtk_entry_set_text(GTK_ENTRY(qra), ""); } /** * Apply changes. * * @return TRUE if things are ok, FALSE otherwise. * * This function is usually called when the user clicks the OK button. */ static gboolean apply_changes(qth_t * qth) { const gchar *qthname = NULL; const gchar *qthloc = NULL; const gchar *qthdesc = NULL; const gchar *qthwx = NULL; const gchar *qthqra = NULL; #ifdef HAS_LIBGPS const gchar *gpsdserver = NULL; guint gpsdport; guint gpsdenabled; #endif gdouble qthlat; gdouble qthlon; guint qthalt; gchar *fname, *confdir; gboolean retcode; /* get values from widgets */ qthname = gtk_entry_get_text(GTK_ENTRY(name)); qthloc = gtk_entry_get_text(GTK_ENTRY(location)); qthdesc = gtk_entry_get_text(GTK_ENTRY(desc)); qthwx = gtk_entry_get_text(GTK_ENTRY(wx)); qthlat = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(ns))) qthlat = -qthlat; qthlon = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(ew))) qthlon = -qthlon; qthalt = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(alt)); qthqra = gtk_entry_get_text(GTK_ENTRY(qra)); #ifdef HAS_LIBGPS gpsdenabled = gtk_combo_box_get_active(GTK_COMBO_BOX(type)); gpsdserver = gtk_entry_get_text(GTK_ENTRY(server)); gpsdport = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(port)); #endif /* copy new values to qth struct */ qth->name = g_strdup(qthname); if (qthloc != NULL) qth->loc = g_strdup(qthloc); if (qthdesc != NULL) qth->desc = g_strdup(qthdesc); if (qthwx != NULL) qth->wx = g_strdup(qthwx); if (qthqra != NULL) qth->qra = g_strdup(qthqra); #ifdef HAS_LIBGPS if (gpsdserver != NULL) qth->gpsd_server = g_strdup(gpsdserver); qth->type = gpsdenabled; qth->gpsd_port = gpsdport; #endif qth->lat = qthlat; qth->lon = qthlon; qth->alt = qthalt; /* store values */ confdir = get_user_conf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, qth->name, ".qth", NULL); retcode = qth_data_save(fname, qth); g_free(fname); g_free(confdir); return retcode; } /** * Manage name changes. * * This function is called when the contents of the name entry changes. * The primary purpose of this function is to check whether the char length * of the name is greater than zero, if yes enable the OK button of the dialog. */ static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; (void)data; /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } /** * Manage SELECT button clicks. * * This function is called when the user clicks on one of the SELECT buttons. * the data parameter contains information about which button has been clicked. */ static void select_location(GtkWidget * widget, gpointer data) { guint mode = GPOINTER_TO_UINT(data); guint flags; gchar *qthloc; gchar *qthwx; gfloat qthlat; gfloat qthlon; guint qthalt; gboolean selected = FALSE; (void)widget; switch (mode) { /* We distinguish only between WX mode and "everything else". Although a value != 1 or 2 is definitely a bug, we need to have some sensible fall-back. */ case SELECTION_MODE_WX: flags = TREE_COL_FLAG_NAME | TREE_COL_FLAG_WX; break; default: flags = TREE_COL_FLAG_NAME | TREE_COL_FLAG_LAT | TREE_COL_FLAG_LON | TREE_COL_FLAG_ALT | TREE_COL_FLAG_WX; mode = SELECTION_MODE_LOC; break; } selected = loc_tree_create(NULL, flags, &qthloc, &qthlat, &qthlon, &qthalt, &qthwx); if (selected) { /* update widgets */ switch (mode) { case SELECTION_MODE_WX: gtk_entry_set_text(GTK_ENTRY(wx), qthwx); break; case SELECTION_MODE_LOC: gtk_entry_set_text(GTK_ENTRY(location), qthloc); gtk_entry_set_text(GTK_ENTRY(wx), qthwx); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), fabs(qthlat)); if (qthlat < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), fabs(qthlon)); if (qthlon < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), qthalt); break; default: /*** FIXME: add some error reporting */ break; } /* free some memory */ g_free(qthloc); g_free(qthwx); } /* else do nothing; we are finished */ } /** * Manage coordinate changes. * * This function is called when the qth coordinates change. The change can * be either one of the spin buttons or the combo boxes. It reads the * coordinates and the calculates the new Maidenhead locator square. */ static void latlon_changed(GtkWidget * widget, gpointer data) { gchar *locator; gint retcode; gdouble latf, lonf; (void)widget; (void)data; locator = g_try_malloc(7); /* no need to check locator != NULL, since hamlib func will do it for us and return RIGEINVAL */ lonf = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)); latf = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)); /* set the correct sign */ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ns))) { /* index 1 => South */ latf = -latf; } if (gtk_combo_box_get_active(GTK_COMBO_BOX(ew))) { /* index 1 => Wesr */ lonf = -lonf; } retcode = longlat2locator(lonf, latf, locator, 3); if (retcode == RIG_OK) { /* debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: %.2f %.2f => %s"), __FILE__, __func__, gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)), gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)), locator); g_signal_handler_block(qra, qrasigid); gtk_entry_set_text(GTK_ENTRY(qra), locator); g_signal_handler_unblock(qra, qrasigid); } else { /* send an error message and don't update */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error converting lon/lat to locator"), __FILE__, __LINE__); } if (locator) g_free(locator); } /** * Manage locator changes. * * This function is called when the Maidenhead locator is changed. * It will calculate the new coordinates and update the spin butrtons and * the combo boxes. */ static void qra_changed(GtkEntry * entry, gpointer data) { gint retcode; gdouble latf, lonf; gchar *msg; (void)entry; (void)data; retcode = locator2longlat(&lonf, &latf, gtk_entry_get_text(GTK_ENTRY(qra))); if (retcode == RIG_OK) { /* debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: %s => %.2f %.2f"), __FILE__, __func__, gtk_entry_get_text(GTK_ENTRY(qra)), lonf, latf); /* block signal emissions for lat/lon widgets */ g_signal_handler_block(lat, latsigid); g_signal_handler_block(lon, lonsigid); g_signal_handler_block(ns, nssigid); g_signal_handler_block(ew, ewsigid); g_signal_handler_block(qra, qrasigid); /* update widgets */ if (latf < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); if (lonf < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), fabs(latf)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), fabs(lonf)); /* make sure text is upper case */ msg = g_ascii_strup(gtk_entry_get_text(GTK_ENTRY(qra)), -1); gtk_entry_set_text(GTK_ENTRY(qra), msg); g_free(msg); /* unblock signal emissions */ g_signal_handler_unblock(lat, latsigid); g_signal_handler_unblock(lon, lonsigid); g_signal_handler_unblock(ns, nssigid); g_signal_handler_unblock(ew, ewsigid); g_signal_handler_unblock(qra, qrasigid); } else { /* send an error message and don't update */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid locator: %s"), __FILE__, __LINE__, gtk_entry_get_text(GTK_ENTRY(qra))); } } /* Create and initialise widgets */ static GtkWidget *create_editor_widgets(qth_t * qth) { GtkWidget *table; GtkWidget *label; GtkWidget *locbut; GtkWidget *wxbut; table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 5); /* QTH name */ label = gtk_label_new(_("Name")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); name = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name), 25); g_signal_connect(name, "changed", G_CALLBACK(name_changed), NULL); gtk_widget_set_tooltip_text(name, _ ("Enter a short name for this ground station, e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _")); gtk_grid_attach(GTK_GRID(table), name, 1, 0, 3, 1); /* QTH description */ label = gtk_label_new(_("Description")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); desc = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(desc), 256); gtk_widget_set_tooltip_text(desc, _ ("Enter an optional description for this ground station.")); gtk_grid_attach(GTK_GRID(table), desc, 1, 1, 3, 1); /* location */ label = gtk_label_new(_("Location")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); location = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(location), 50); gtk_widget_set_tooltip_text(location, _ ("Optional location of the ground station, fx. Copenhagen, Denmark.")); gtk_grid_attach(GTK_GRID(table), location, 1, 2, 2, 1); locbut = gtk_button_new_with_label(_("Select")); gtk_widget_set_tooltip_text(locbut, _("Select a location from a list")); g_signal_connect(locbut, "clicked", G_CALLBACK(select_location), GUINT_TO_POINTER(SELECTION_MODE_LOC)); gtk_grid_attach(GTK_GRID(table), locbut, 3, 2, 1, 1); /* latitude */ label = gtk_label_new(_("Latitude (\302\260)")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); lat = gtk_spin_button_new_with_range(0.00, 90.00, 0.0001); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(lat), 0.01, 1.0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(lat), TRUE); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lat), 4); gtk_widget_set_tooltip_text(lat, _ ("Select the latitude of the ground station in decimal degrees.")); gtk_grid_attach(GTK_GRID(table), lat, 1, 3, 1, 1); ns = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ns), _("North")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ns), _("South")); gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_grid_attach(GTK_GRID(table), ns, 2, 3, 1, 1); /* longitude */ label = gtk_label_new(_("Longitude (\302\260)")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); lon = gtk_spin_button_new_with_range(0.00, 180.00, 0.0001); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(lon), 0.01, 1.0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(lon), TRUE); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lon), 4); gtk_widget_set_tooltip_text(lon, _ ("Select the longitude of the ground station in decimal degrees.")); gtk_grid_attach(GTK_GRID(table), lon, 1, 4, 1, 1); ew = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ew), _("East")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ew), _("West")); gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_grid_attach(GTK_GRID(table), ew, 2, 4, 1, 1); /* connect lat/lon spinners and combos to callback remember signal id so that we can block signals while doing automatic cross-updates */ latsigid = g_signal_connect(lat, "value-changed", G_CALLBACK(latlon_changed), NULL); lonsigid = g_signal_connect(lon, "value-changed", G_CALLBACK(latlon_changed), NULL); nssigid = g_signal_connect(ns, "changed", G_CALLBACK(latlon_changed), NULL); ewsigid = g_signal_connect(ew, "changed", G_CALLBACK(latlon_changed), NULL); /* QRA locator */ label = gtk_label_new(_("Locator")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); qra = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(qra), 6); gtk_widget_set_tooltip_text(qra, _("Maidenhead locator grid.")); qrasigid = g_signal_connect(qra, "changed", G_CALLBACK(qra_changed), NULL); gtk_grid_attach(GTK_GRID(table), qra, 1, 5, 1, 1); /* altitude */ label = gtk_label_new(_("Altitude")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); alt = gtk_spin_button_new_with_range(0, 5000, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(alt), 1, 100); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(alt), TRUE); gtk_widget_set_tooltip_text(alt, _ ("Select the altitude of the ground station")); gtk_grid_attach(GTK_GRID(table), alt, 1, 6, 1, 1); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) label = gtk_label_new(_("ft ASL")); else label = gtk_label_new(_("m ASL")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 6, 1, 1); /* weather station */ label = gtk_label_new(_("Weather St")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 7, 1, 1); wx = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(wx), 4); gtk_widget_set_tooltip_text(wx, _("Four letter code for weather station")); gtk_grid_attach(GTK_GRID(table), wx, 1, 7, 2, 1); wxbut = gtk_button_new_with_label(_("Select")); gtk_widget_set_tooltip_text(wxbut, _("Select a weather station")); g_signal_connect(wxbut, "clicked", G_CALLBACK(select_location), GUINT_TO_POINTER(SELECTION_MODE_WX)); gtk_grid_attach(GTK_GRID(table), wxbut, 3, 7, 1, 1); #ifdef HAS_LIBGPS /* GPSD enabled */ label = gtk_label_new(_("QTH Type")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 8, 1, 1); type = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("Static")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("GPSD")); gtk_combo_box_set_active(GTK_COMBO_BOX(type), 0); gtk_widget_set_tooltip_text(type, _ ("A qth can be static, ie. it does not change, or gpsd based for computers with gps attached.")); gtk_grid_attach(GTK_GRID(table), type, 1, 8, 1, 1); /* GPSD Server */ label = gtk_label_new(_("GPSD Server")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 9, 1, 1); server = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(server), 6000); gtk_widget_set_tooltip_text(server, _("GPSD Server.")); gtk_grid_attach(GTK_GRID(table), server, 1, 9, 3, 1); /* GPSD Port */ label = gtk_label_new(_("GPSD Port")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 10, 1, 1); port = gtk_spin_button_new_with_range(0, 32768, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(port), 1, 100); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(port), TRUE); gtk_widget_set_tooltip_text(port, _ ("Set the port for GPSD to use. Default for gpsd is 2947.")); gtk_grid_attach(GTK_GRID(table), port, 1, 10, 1, 1); #endif if (qth->name != NULL) update_widgets(qth); gtk_widget_show_all(table); return table; } /** * Create and run QTH editor. * * @param qth Pointer to a qth_t structure where QTH data should be stored. * @param parent The parent dialog window. * @return GTK_RESPONSE_OK if the new QTH has been saved, GTK_RESPONSE_CANCEL * otherwise (e.g. user cancelled the operation. * * The QTH editor is a dialog window containing widgets that can be used to * edit an existing QTH or create a new one. If qth->name != NULL the function * will run in edit mode, i.e. preload the widgets with values from qth, otherwise * it will create empty widgets. * * To see the widget in action click on the "+" button in either the "New Module" * or "Configure Module" dialog. * * @bug Edit mode doesn't really works, that is, it does, but probably leaks memory * because I can't free existing data in qth_t */ GtkResponseType qth_editor_run(qth_t * qth, GtkWindow * parent) { gint response; gboolean finished = FALSE; /* create dialog and add contents */ dialog = gtk_dialog_new_with_buttons(_("Edit ground station data"), parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Clear", GTK_RESPONSE_REJECT, "_Cancel", GTK_RESPONSE_CANCEL, "_OK", GTK_RESPONSE_OK, NULL); /* disable OK button to begin with */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), create_editor_widgets(qth)); /* this hacky-thing is to keep the dialog running in case the CLEAR button is plressed. OK and CANCEL will exit the loop */ while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* OK */ case GTK_RESPONSE_OK: if (apply_changes(qth)) { finished = TRUE; } else { /* and error occurred; try again */ GtkWidget *errd; errd = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("An error occurred while trying to save\n" "ground station data to %s.qth!\n" "Please try again using a different name."), qth->name); gtk_dialog_run(GTK_DIALOG(errd)); gtk_widget_destroy(errd); finished = FALSE; } break; /* CLEAR */ case GTK_RESPONSE_REJECT: clear_widgets(); break; /* Everything else is considered CANCEL */ default: finished = TRUE; break; } } gtk_widget_destroy(dialog); return response; } gpredict/src/qth-editor.h000066400000000000000000000002741427377236300157200ustar00rootroot00000000000000#ifndef QTH_EDITOR_H #define QTH_EDITOR_H 1 #include #include "gtk-sat-data.h" #include "qth-data.h" GtkResponseType qth_editor_run(qth_t * qth, GtkWindow * parent); #endif gpredict/src/radio-conf.c000066400000000000000000000221031427377236300156470ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2015 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "sat-log.h" #include "compat.h" #include "gpredict-utils.h" #include "radio-conf.h" #define GROUP "Radio" #define KEY_HOST "Host" #define KEY_PORT "Port" #define KEY_CYCLE "Cycle" #define KEY_LO "LO" #define KEY_LOUP "LO_UP" #define KEY_TYPE "Type" #define KEY_PTT "PTT" #define KEY_VFO_DOWN "VFO_DOWN" #define KEY_VFO_UP "VFO_UP" #define KEY_SIG_AOS "SIGNAL_AOS" #define KEY_SIG_LOS "SIGNAL_LOS" #define DEFAULT_CYCLE_MS 1000 /** * \brief Read radio configuration. * \param conf Pointer to a radio_conf_t structure where the data will be * stored. * \return TRUE if the configuration was read successfully, FALSE if an * error has occurred. * * This function reads a radio configuration from a .rig file into conf. * conf->name must contain the file name of the configuration (no path, just * file name). */ gboolean radio_conf_read(radio_conf_t * conf) { GKeyFile *cfg = NULL; gchar *confdir; gchar *fname; GError *error = NULL; if (conf->name == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: NULL configuration name!"), __func__); return FALSE; } confdir = get_hwconf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, conf->name, ".rig", NULL); g_free(confdir); /* open .rig file */ cfg = g_key_file_new(); g_key_file_load_from_file(cfg, fname, 0, NULL); if (cfg == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not load file %s\n"), __func__, fname); g_free(fname); return FALSE; } g_free(fname); /* read parameters */ conf->host = g_key_file_get_string(cfg, GROUP, KEY_HOST, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } conf->port = g_key_file_get_integer(cfg, GROUP, KEY_PORT, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } /* cycle period is only saved if not default */ if (g_key_file_has_key(cfg, GROUP, KEY_CYCLE, NULL)) { conf->cycle = g_key_file_get_integer(cfg, GROUP, KEY_CYCLE, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } if (conf->cycle < 10) conf->cycle = 10; } else { conf->cycle = DEFAULT_CYCLE_MS; } /* KEY_LO is optional */ if (g_key_file_has_key(cfg, GROUP, KEY_LO, NULL)) { conf->lo = g_key_file_get_double(cfg, GROUP, KEY_LO, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } } else { conf->lo = 0.0; } /* KEY_LOUP is optional */ if (g_key_file_has_key(cfg, GROUP, KEY_LOUP, NULL)) { conf->loup = g_key_file_get_double(cfg, GROUP, KEY_LOUP, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } } else { conf->loup = 0.0; } /* Radio type */ conf->type = g_key_file_get_integer(cfg, GROUP, KEY_TYPE, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } /* PTT Type */ conf->ptt = g_key_file_get_integer(cfg, GROUP, KEY_PTT, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } /* VFO up and down, only if radio is full-duplex */ if (conf->type == RIG_TYPE_DUPLEX) { /* downlink */ if (g_key_file_has_key(cfg, GROUP, KEY_VFO_DOWN, NULL)) { conf->vfoDown = g_key_file_get_integer(cfg, GROUP, KEY_VFO_DOWN, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); conf->vfoDown = VFO_SUB; } } /* uplink */ if (g_key_file_has_key(cfg, GROUP, KEY_VFO_UP, NULL)) { conf->vfoUp = g_key_file_get_integer(cfg, GROUP, KEY_VFO_UP, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); conf->vfoUp = VFO_MAIN; } } } /* Signal AOS and LOS */ conf->signal_aos = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_AOS, NULL); conf->signal_los = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_LOS, NULL); g_key_file_free(cfg); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Read radio configuration %s"), __func__, conf->name); return TRUE; } /** * \brief Save radio configuration. * \param conf Pointer to the radio configuration. * * This function saves the radio configuration stored in conf to a * .rig file. conf->name must contain the file name of the configuration * (no path, just file name). */ void radio_conf_save(radio_conf_t * conf) { GKeyFile *cfg = NULL; gchar *confdir; gchar *fname; if (conf->name == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: NULL configuration name!"), __func__); return; } /* create a config structure */ cfg = g_key_file_new(); g_key_file_set_string(cfg, GROUP, KEY_HOST, conf->host); g_key_file_set_integer(cfg, GROUP, KEY_PORT, conf->port); g_key_file_set_double(cfg, GROUP, KEY_LO, conf->lo); g_key_file_set_double(cfg, GROUP, KEY_LOUP, conf->loup); g_key_file_set_integer(cfg, GROUP, KEY_TYPE, conf->type); g_key_file_set_integer(cfg, GROUP, KEY_PTT, conf->ptt); if (conf->cycle == DEFAULT_CYCLE_MS) g_key_file_remove_key(cfg, GROUP, KEY_CYCLE, NULL); else g_key_file_set_integer(cfg, GROUP, KEY_CYCLE, conf->cycle); if (conf->type == RIG_TYPE_DUPLEX) { g_key_file_set_integer(cfg, GROUP, KEY_VFO_UP, conf->vfoUp); g_key_file_set_integer(cfg, GROUP, KEY_VFO_DOWN, conf->vfoDown); } g_key_file_set_boolean(cfg, GROUP, KEY_SIG_AOS, conf->signal_aos); g_key_file_set_boolean(cfg, GROUP, KEY_SIG_LOS, conf->signal_los); confdir = get_hwconf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, conf->name, ".rig", NULL); g_free(confdir); gpredict_save_key_file(cfg, fname); g_free(fname); g_key_file_free(cfg); } gpredict/src/radio-conf.h000066400000000000000000000060051427377236300156570ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2015 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef RADIO_CONF_H #define RADIO_CONF_H 1 #include /** \brief Radio types. */ typedef enum { RIG_TYPE_RX = 0, /*!< Rig can only be used as receiver */ RIG_TYPE_TX, /*!< Rig can only be used as transmitter */ RIG_TYPE_TRX, /*!< Rig can be used as RX/TX (half-duplex only) */ RIG_TYPE_DUPLEX, /*!< Rig is a full duplex radio, e.g. IC910 */ RIG_TYPE_TOGGLE_AUTO, /*!< Special mode for FT-817, 857 and 897 using auto T/R switch */ RIG_TYPE_TOGGLE_MAN /*!< Special mode for FT-817, 857 and 897 using manual T/R switch */ } rig_type_t; typedef enum { PTT_TYPE_NONE = 0, /*!< Don't read PTT */ PTT_TYPE_CAT, /*!< Read PTT using get_ptt CAT command */ PTT_TYPE_DCD /*!< Read PTT using get_dcd */ } ptt_type_t; typedef enum { VFO_NONE = 0, VFO_A, VFO_B, VFO_MAIN, VFO_SUB } vfo_t; /** \brief Radio configuration. */ typedef struct { gchar *name; /*!< Configuration file name, without .rig. */ gchar *host; /*!< hostname or IP */ gint port; /*!< port number */ gint cycle; /*!< cycle period in msec */ gdouble lo; /*!< local oscillator freq in Hz (using double for compatibility with rest of code). Downlink. */ gdouble loup; /*!< local oscillator freq in Hz for uplink. */ rig_type_t type; /*!< Radio type */ ptt_type_t ptt; /*!< PTT type (needed for RX, TX, and TRX) */ vfo_t vfoDown; /*!< Downlink VFO for full-duplex radios */ vfo_t vfoUp; /*!< Uplink VFO for full-duplex radios */ gboolean signal_aos; /*!< Send AOS notification to RIG */ gboolean signal_los; /*!< Send LOS notification to RIG */ } radio_conf_t; gboolean radio_conf_read(radio_conf_t * conf); void radio_conf_save(radio_conf_t * conf); #endif gpredict/src/rotor-conf.c000066400000000000000000000206471427377236300157310ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2019 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "sat-log.h" #include "compat.h" #include "rotor-conf.h" #include "gpredict-utils.h" #define GROUP "Rotator" #define KEY_HOST "Host" #define KEY_PORT "Port" #define KEY_CYCLE "Cycle" #define KEY_AZTYPE "AzType" #define KEY_MINAZ "MinAz" #define KEY_MAXAZ "MaxAz" #define KEY_MINEL "MinEl" #define KEY_MAXEL "MaxEl" #define KEY_AZSTOPPOS "AzStopPos" #define KEY_THLD "Threshold" #define DEFAULT_CYCLE_MS 1000 #define DEFAULT_THLD_DEG 5.0 /** * \brief Read rotator configuration. * \param conf Pointer to a rotor_conf_t structure where the data will be * stored. * * This function reads a rotoator configuration from a .rot file into conf. * conf->name must contain the file name of the configuration (no path, just * file name and without the .rot extension). */ gboolean rotor_conf_read(rotor_conf_t * conf) { GKeyFile *cfg = NULL; gchar *confdir; gchar *fname; GError *error = NULL; if (conf->name == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: NULL configuration name!"), __func__); return FALSE; } confdir = get_hwconf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, conf->name, ".rot", NULL); g_free(confdir); /* open .rot file */ cfg = g_key_file_new(); g_key_file_load_from_file(cfg, fname, 0, NULL); if (cfg == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not load file %s\n"), __func__, fname); g_free(fname); return FALSE; } g_free(fname); /* read parameters */ conf->host = g_key_file_get_string(cfg, GROUP, KEY_HOST, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading rotor conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } conf->port = g_key_file_get_integer(cfg, GROUP, KEY_PORT, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading rotor conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } /* cycle period and threshold are only saved if not default */ if (g_key_file_has_key(cfg, GROUP, KEY_CYCLE, NULL)) { conf->cycle = g_key_file_get_integer(cfg, GROUP, KEY_CYCLE, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading rotor conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } if (conf->cycle < 10) conf->cycle = 10; } else { conf->cycle = DEFAULT_CYCLE_MS; } if (g_key_file_has_key(cfg, GROUP, KEY_THLD, NULL)) { conf->threshold = g_key_file_get_double(cfg, GROUP, KEY_THLD, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading rotor conf from %s (%s)."), __func__, conf->name, error->message); g_clear_error(&error); g_key_file_free(cfg); return FALSE; } if (conf->threshold < 0.1) conf->threshold = 0.1; } else { conf->threshold = DEFAULT_THLD_DEG; } conf->aztype = g_key_file_get_integer(cfg, GROUP, KEY_AZTYPE, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Az type not defined for %s. Assuming 0..360\302\260"), __func__, conf->name); g_clear_error(&error); conf->aztype = ROT_AZ_TYPE_360; } conf->minaz = g_key_file_get_double(cfg, GROUP, KEY_MINAZ, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: MinAz not defined for %s. Assuming 0\302\260."), __func__, conf->name); g_clear_error(&error); conf->minaz = 0.0; } conf->maxaz = g_key_file_get_double(cfg, GROUP, KEY_MAXAZ, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: MaxAz not defined for %s. Assuming 360\302\260."), __func__, conf->name); g_clear_error(&error); conf->maxaz = 360.0; } conf->minel = g_key_file_get_double(cfg, GROUP, KEY_MINEL, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: MinEl not defined for %s. Assuming 0\302\260."), __func__, conf->name); g_clear_error(&error); conf->minel = 0.0; } conf->maxel = g_key_file_get_double(cfg, GROUP, KEY_MAXEL, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: MaxEl not defined for %s. Assuming 90\302\260."), __func__, conf->name); g_clear_error(&error); conf->maxel = 90.0; } conf->azstoppos = g_key_file_get_double(cfg, GROUP, KEY_AZSTOPPOS, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: AzStopPos not defined for %s. Assuming at minaz (%f\302\260)."), __func__, conf->name, conf->minaz); g_clear_error(&error); conf->azstoppos = conf->minaz; } g_key_file_free(cfg); return TRUE; } /** * \brief Save rotator configuration. * \param conf Pointer to the rotator configuration. * * This function saves the rotator configuration stored in conf to a * .rig file. conf->name must contain the file name of the configuration * (no path, just file name and without the .rot extension). */ void rotor_conf_save(rotor_conf_t * conf) { GKeyFile *cfg = NULL; gchar *confdir; gchar *fname; if (conf->name == NULL) return; /* create a config structure */ cfg = g_key_file_new(); g_key_file_set_string(cfg, GROUP, KEY_HOST, conf->host); g_key_file_set_integer(cfg, GROUP, KEY_PORT, conf->port); g_key_file_set_integer(cfg, GROUP, KEY_AZTYPE, conf->aztype); g_key_file_set_double(cfg, GROUP, KEY_MINAZ, conf->minaz); g_key_file_set_double(cfg, GROUP, KEY_MAXAZ, conf->maxaz); g_key_file_set_double(cfg, GROUP, KEY_MINEL, conf->minel); g_key_file_set_double(cfg, GROUP, KEY_MAXEL, conf->maxel); g_key_file_set_double(cfg, GROUP, KEY_AZSTOPPOS, conf->azstoppos); if (conf->cycle == DEFAULT_CYCLE_MS) g_key_file_remove_key(cfg, GROUP, KEY_CYCLE, NULL); else g_key_file_set_integer(cfg, GROUP, KEY_CYCLE, conf->cycle); if (conf->threshold == DEFAULT_THLD_DEG) g_key_file_remove_key(cfg, GROUP, KEY_THLD, NULL); else g_key_file_set_double(cfg, GROUP, KEY_THLD, conf->threshold); /* build filename */ confdir = get_hwconf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, conf->name, ".rot", NULL); g_free(confdir); /* save information */ gpredict_save_key_file(cfg, fname); /* cleanup */ g_free(fname); g_key_file_free(cfg); } gpredict/src/rotor-conf.h000066400000000000000000000043011427377236300157230ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef ROTOR_CONF_H #define ROTOR_CONF_H 1 #include typedef enum { ROT_AZ_TYPE_360 = 0, /*!< Azimuth in range 0..360 */ ROT_AZ_TYPE_180 = 1 /*!< Azimuth in range -180..+180 */ } rot_az_type_t; /** \brief Rotator configuration. */ typedef struct { gchar *name; /*!< Configuration file name, less .rot */ gchar *host; /*!< hostname */ gint port; /*!< port number */ gint cycle; /*!< cycle period in msec */ rot_az_type_t aztype; /*!< Az type */ gdouble minaz; /*!< Lower azimuth limit */ gdouble maxaz; /*!< Upper azimuth limit */ gdouble minel; /*!< Lower elevation limit */ gdouble maxel; /*!< Upper elevation limit */ gdouble azstoppos; /*!< absolute position of rotation stops; normally = minaz */ gdouble threshold; /*!< Angle difference that triggers new motion command */ } rotor_conf_t; gboolean rotor_conf_read(rotor_conf_t * conf); void rotor_conf_save(rotor_conf_t * conf); #endif gpredict/src/sat-cfg.c000066400000000000000000000534361427377236300151670ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * @defgroup satcfg Read, manage and store gpredict configuration. * * The purpose with this module is to centralise the access to the gpredict.cfg * configuration file and also to have a central place where the min, max and * default values are defined. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-polar-view.h" #include "gtk-sat-module.h" #include "gtk-sat-list.h" #include "gtk-single-sat.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pass-dialogs.h" /* *INDENT-OFF* */ #define LIST_COLUMNS_DEFAULTS (SAT_LIST_FLAG_NAME |\ SAT_LIST_FLAG_AZ |\ SAT_LIST_FLAG_EL |\ SAT_LIST_FLAG_RANGE |\ SAT_LIST_FLAG_DIR |\ SAT_LIST_FLAG_NEXT_EVENT |\ SAT_LIST_FLAG_ALT |\ SAT_LIST_FLAG_ORBIT) #define SINGLE_PASS_COL_DEFAULTS (SINGLE_PASS_FLAG_TIME |\ SINGLE_PASS_FLAG_AZ |\ SINGLE_PASS_FLAG_EL |\ SINGLE_PASS_FLAG_RANGE |\ SINGLE_PASS_FLAG_FOOTPRINT) #define MULTI_PASS_COL_DEFAULTS (MULTI_PASS_FLAG_AOS_TIME |\ MULTI_PASS_FLAG_LOS_TIME |\ MULTI_PASS_FLAG_DURATION |\ MULTI_PASS_FLAG_AOS_AZ |\ MULTI_PASS_FLAG_MAX_EL |\ MULTI_PASS_FLAG_LOS_AZ) #define SINGLE_SAT_FIELD_DEF (SINGLE_SAT_FLAG_AZ |\ SINGLE_SAT_FLAG_EL |\ SINGLE_SAT_FLAG_RANGE |\ SINGLE_SAT_FLAG_RANGE_RATE |\ SINGLE_SAT_FLAG_NEXT_EVENT |\ SINGLE_SAT_FLAG_SSP |\ SINGLE_SAT_FLAG_FOOTPRINT |\ SINGLE_SAT_FLAG_ALT |\ SINGLE_SAT_FLAG_VEL |\ SINGLE_SAT_FLAG_DOPPLER |\ SINGLE_SAT_FLAG_LOSS |\ SINGLE_SAT_FLAG_DELAY |\ SINGLE_SAT_FLAG_MA |\ SINGLE_SAT_FLAG_PHASE |\ SINGLE_SAT_FLAG_ORBIT |\ SINGLE_SAT_FLAG_VISIBILITY) /* *INDENT-ON* */ /** Structure representing a boolean value */ typedef struct { gchar *group; /*!< The configuration group */ gchar *key; /*!< The configuration key */ gboolean defval; /*!< The default value */ } sat_cfg_bool_t; /** Structure representing an integer value */ typedef struct { gchar *group; /*!< The configuration group */ gchar *key; /*!< The configuration key */ gint defval; /*!< The default value */ } sat_cfg_int_t; /** Structure representing a string value */ typedef struct { gchar *group; /*!< The configuration group */ gchar *key; /*!< The configuration key */ gchar *defval; /*!< The default value */ } sat_cfg_str_t; /** Array containing the boolean configuration values */ sat_cfg_bool_t sat_cfg_bool[SAT_CFG_BOOL_NUM] = { {"GLOBAL", "USE_LOCAL_TIME", FALSE}, {"GLOBAL", "USE_NSEW", FALSE}, {"GLOBAL", "USE_IMPERIAL", FALSE}, {"GLOBAL", "MAIN_WIN_POS", FALSE}, {"GLOBAL", "MOD_WIN_POS", FALSE}, {"GLOBAL", "MOD_STATE", FALSE}, {"MODULES", "RULES_HINT", FALSE}, {"MODULES", "MAP_QTH_INFO", TRUE}, {"MODULES", "MAP_NEXT_EVENT", TRUE}, {"MODULES", "MAP_CURSOR_TRACK", FALSE}, {"MODULES", "MAP_SHOW_GRID", TRUE}, {"MODULES", "MAP_SHOW_TERMINATOR", TRUE}, {"MODULES", "MAP_KEEP_RATIO", FALSE}, {"MODULES", "POLAR_QTH_INFO", TRUE}, {"MODULES", "POLAR_NEXT_EVENT", TRUE}, {"MODULES", "POLAR_CURSOR_TRACK", TRUE}, {"MODULES", "POLAR_EXTRA_AZ_TICKS", FALSE}, {"MODULES", "POLAR_SHOW_TRACK_AUTO", FALSE}, {"TLE", "SERVER_AUTH", FALSE}, {"TLE", "PROXY_AUTH", FALSE}, {"TLE", "ADD_NEW_SATS", TRUE}, {"LOG", "KEEP_LOG_FILES", FALSE}, {"PREDICT", "USE_REAL_T0", FALSE} }; /** Array containing the integer configuration parameters */ sat_cfg_int_t sat_cfg_int[SAT_CFG_INT_NUM] = { {"VERSION", "MAJOR", 1}, {"VERSION", "MINOR", 4}, {"MODULES", "DATA_TIMEOUT", 300}, {"MODULES", "LAYOUT", 2}, /* FIXME */ {"MODULES", "VIEW_1", GTK_SAT_MOD_VIEW_MAP}, /* FIXME */ {"MODULES", "VIEW_2", GTK_SAT_MOD_VIEW_POLAR}, /* FIXME */ {"MODULES", "VIEW_3", GTK_SAT_MOD_VIEW_SINGLE}, /* FIXME */ {"GLOBAL", "CURRENT_PAGE", -1}, /* FIXME */ {"GLOBAL", "WARP", 1}, {"MODULES", "LIST_REFRESH", 1}, {"MODULES", "LIST_COLUMNS", LIST_COLUMNS_DEFAULTS}, {"MODULES", "MAP_CENTER", 0}, {"MODULES", "MAP_REFRESH", 10}, {"MODULES", "MAP_INFO_COLOUR", 0x00FF00FF}, {"MODULES", "MAP_INFO_BGD_COLOUR", 0x000000FF}, {"MODULES", "MAP_QTH_COLOUR", 0x00FFFFFF}, {"MODULES", "MAP_SAT_COLOUR", 0xF0F000FF}, {"MODULES", "MAP_SELECTED_SAT_COLOUR", 0xFFFFFFFF}, {"MODULES", "MAP_COV_AREA_COLOUR", 0xFFFFFF1F}, {"MODULES", "MAP_GRID_COLOUR", 0x7F7F7FC8}, {"MODULES", "MAP_TERMINATOR_COLOUR", 0xFFFF0080}, {"MODULES", "MAP_EARTH_SHADOW_COLOUR", 0x00000060}, {"MODULES", "MAP_TICK_COLOUR", 0x7F7F7FC8}, {"MODULES", "MAP_TRACK_COLOUR", 0xFF1200BB}, {"MODULES", "MAP_TRACK_NUM", 3}, {"MODULES", "MAP_SHADOW_ALPHA", 0xDD}, {"MODULES", "POLAR_REFRESH", 3}, {"MODULES", "POLAR_CHART_ORIENT", POLAR_VIEW_NESW}, {"MODULES", "POLAR_BGD_COLOUR", 0xFFFFFFFF}, {"MODULES", "POLAR_AXIS_COLOUR", 0x0F0F0F7F}, {"MODULES", "POLAR_TICK_COLOUR", 0x007F00FF}, {"MODULES", "POLAR_SAT_COLOUR", 0x8F0000FF}, {"MODULES", "POLAR_SELECTED_SAT_COL", 0xFF0D0BFF}, {"MODULES", "POLAR_TRACK_COLOUR", 0x0000FFFF}, {"MODULES", "POLAR_INFO_COLOUR", 0x00007FFF}, {"MODULES", "SINGLE_SAT_REFRESH", 1}, {"MODULES", "SINGLE_SAT_FIELDS", SINGLE_SAT_FIELD_DEF}, {"MODULES", "SINGLE_SAT_SELECTED", 0}, {"MODULES", "EVENT_LIST_REFRESH", 1}, {"PREDICT", "MINIMUM_ELEV", 5}, {"PREDICT", "NUMBER_OF_PASSES", 10}, {"PREDICT", "LOOK_AHEAD", 3}, {"PREDICT", "TIME_RESOLUTION", 10}, {"PREDICT", "NUMBER_OF_ENTRIES", 20}, {"PREDICT", "SINGLE_PASS_COL", SINGLE_PASS_COL_DEFAULTS}, {"PREDICT", "MULTI_PASS_COL", MULTI_PASS_COL_DEFAULTS}, {"PREDICT", "SAVE_FORMAT", 0}, {"PREDICT", "SAVE_CONTENTS", 0}, {"PREDICT", "TWILIGHT_THRESHOLD", -6}, {"SKY_AT_GLANCE", "TIME_SPAN_HOURS", 8}, {"SKY_AT_GLANCE", "COLOUR_01", 0x3c46c8}, {"SKY_AT_GLANCE", "COLOUR_02", 0x00500a}, {"SKY_AT_GLANCE", "COLOUR_03", 0xd5472b}, {"SKY_AT_GLANCE", "COLOUR_04", 0xd06b38}, {"SKY_AT_GLANCE", "COLOUR_05", 0xcf477a}, {"SKY_AT_GLANCE", "COLOUR_06", 0xbf041f}, {"SKY_AT_GLANCE", "COLOUR_07", 0x688522}, {"SKY_AT_GLANCE", "COLOUR_08", 0x0420bf}, {"SKY_AT_GLANCE", "COLOUR_09", 0xa304bf}, {"SKY_AT_GLANCE", "COLOUR_10", 0x04bdbf}, {"GLOBAL", "WINDOW_POS_X", 0}, {"GLOBAL", "WINDOW_POS_Y", 0}, {"GLOBAL", "WINDOW_WIDTH", 700}, {"GLOBAL", "WINDOW_HEIGHT", 700}, {"GLOBAL", "HTML_BROWSER_TYPE", 0}, {"TLE", "AUTO_UPDATE_FREQ", 2}, /* weekly, see tle_auto_upd_freq_t */ {"TLE", "AUTO_UPDATE_ACTION", 1}, /* notify, see tle_auto_upd_action_t */ {"TLE", "LAST_UPDATE", 0}, {"LOG", "CLEAN_AGE", 0}, /* 0 = Never clean */ {"LOG", "LEVEL", 2} }; /** Array containing the string configuration values */ sat_cfg_str_t sat_cfg_str[SAT_CFG_STR_NUM] = { {"GLOBAL", "TIME_FORMAT", "%Y/%m/%d %H:%M:%S"}, {"GLOBAL", "DEFAULT_QTH", "sample.qth"}, {"GLOBAL", "OPEN_MODULES", "Amateur"}, {"GLOBAL", "HTML_BROWSER", NULL}, {"MODULES", "GRID", "1;0;2;0;1;2;0;1;1;2;3;1;2;1;2"}, {"MODULES", "MAP_FILE", "nasa-bmng-07_1024.jpg"}, {"MODULES", "MAP_FONT", "Sans 8"}, {"MODULES", "POLAR_FONT", "Sans 10"}, {"TRSP", "SERVER", "https://db.satnogs.org/api/"}, {"TRSP", "FREQ_FILE", "transmitters/?format=json"}, {"TRSP", "MODE_FILE", "modes/?format=json"}, {"TRSP", "PROXY", NULL}, {"TLE", "SERVER", "https://celestrak.org/NORAD/elements/"}, {"TLE", "FILES", "amateur.txt;cubesat.txt;visual.txt;weather.txt"}, {"TLE", "PROXY", NULL}, {"TLE", "URLS", "https://www.amsat.org/amsat/ftp/keps/current/nasabare.txt;" "https://celestrak.org/NORAD/elements/amateur.txt;" "https://celestrak.org/NORAD/elements/cubesat.txt;" "https://celestrak.org/NORAD/elements/galileo.txt;" "https://celestrak.org/NORAD/elements/glo-ops.txt;" "https://celestrak.org/NORAD/elements/gps-ops.txt;" "https://celestrak.org/NORAD/elements/iridium.txt;" "https://celestrak.org/NORAD/elements/iridium-NEXT.txt;" "https://celestrak.org/NORAD/elements/molniya.txt;" "https://celestrak.org/NORAD/elements/noaa.txt;" "https://celestrak.org/NORAD/elements/science.txt;" "https://celestrak.org/NORAD/elements/tle-new.txt;" "https://celestrak.org/NORAD/elements/visual.txt;" "https://celestrak.org/NORAD/elements/weather.txt"}, {"TLE", "FILE_DIR", NULL}, {"PREDICT", "SAVE_DIR", NULL} }; /* The configuration data buffer */ static GKeyFile *config = NULL; /** * Load configuration data. * @return 0 if everything OK, 1 otherwise. * * This function reads the configuration data from gpredict.cfg into * memory. This function must be called very early at program start. * * The the configuration data in memory is already "loaded" the data will * be ereased first. */ guint sat_cfg_load() { gchar *keyfile, *confdir; GError *error = NULL; if (config != NULL) sat_cfg_close(); /* load the configuration file */ config = g_key_file_new(); confdir = get_user_conf_dir(); keyfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, "gpredict.cfg", NULL); g_free(confdir); g_key_file_load_from_file(config, keyfile, G_KEY_FILE_KEEP_COMMENTS, &error); g_free(keyfile); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Error reading config file (%s)"), __func__, error->message); sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Using built-in defaults"), __func__); g_clear_error(&error); return 1; } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Everything OK."), __func__); } /* config version compatibility */ guint16 cfg_ver; cfg_ver = sat_cfg_get_int(SAT_CFG_INT_VERSION_MAJOR) << 8 | sat_cfg_get_int(SAT_CFG_INT_VERSION_MINOR); /* if config version is < 1.1; reset SAT_CFG_STR_TLE_FILES */ if (cfg_ver < 0x0101) { sat_cfg_reset_str(SAT_CFG_STR_TLE_FILES); sat_cfg_set_int(SAT_CFG_INT_VERSION_MAJOR, 1); sat_cfg_set_int(SAT_CFG_INT_VERSION_MINOR, 4); } else if (cfg_ver < 0x0104) { /* Version 1.4 replaces TLE_SERVER and TLE_FILES with TLE_URLS, * so import TLE_SERVER and FILES if they exist. */ gchar *urls = NULL; gchar *buff; gchar *tle_srv = sat_cfg_get_str(SAT_CFG_STR_TLE_SERVER); gchar *tle_fstr = sat_cfg_get_str(SAT_CFG_STR_TLE_FILES); gchar **tle_fvec = g_strsplit(tle_fstr, ";", 0); unsigned int i; for (i = 0; i < g_strv_length(tle_fvec); i++) { if (i > 0) { buff = g_strdup_printf("%s;%s/%s", urls, tle_srv, tle_fvec[i]); g_free(urls); } else { buff = g_strdup_printf("%s/%s", tle_srv, tle_fvec[i]); } urls = g_strdup(buff); g_free(buff); } if (urls) sat_cfg_set_str(SAT_CFG_STR_TLE_URLS, urls); //sat_cfg_reset_str(SAT_CFG_STR_TLE_SERVER); //sat_cfg_reset_str(SAT_CFG_STR_TLE_FILES); g_free(urls); g_free(tle_srv); g_free(tle_fstr); g_strfreev(tle_fvec); sat_cfg_set_int(SAT_CFG_INT_VERSION_MAJOR, 1); sat_cfg_set_int(SAT_CFG_INT_VERSION_MINOR, 4); } return 0; } /** * Save configuration data. * @return 0 on success, 1 if an error occurred. * * This function saves the configuration data currently stored in * memory to the gpredict.cfg file. */ guint sat_cfg_save() { gchar *keyfile; gchar *confdir; guint err = 0; confdir = get_user_conf_dir(); keyfile = g_strconcat(confdir, G_DIR_SEPARATOR_S, "gpredict.cfg", NULL); err = gpredict_save_key_file(config, keyfile); g_free(confdir); return err; } /** * Close configuration module. * * This function cleans up the memory allocated to the storage and * management of configuration data. Note: configuration data will * no be accessible after call to this function, unless sat_cfg_load * is called again. This function should only be called when the * program exits. */ void sat_cfg_close() { if (config != NULL) { g_key_file_free(config); config = NULL; } } /** Get boolean value */ gboolean sat_cfg_get_bool(sat_cfg_bool_e param) { gboolean value = FALSE; GError *error = NULL; if (param < SAT_CFG_BOOL_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); /* return default value */ value = sat_cfg_bool[param].defval; } else { /* fetch value */ value = g_key_file_get_boolean(config, sat_cfg_bool[param].group, sat_cfg_bool[param].key, &error); if (error != NULL) { g_clear_error(&error); value = sat_cfg_bool[param].defval; } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown BOOL param index (%d)\n"), __func__, param); } return value; } /** Get default value of boolean parameter */ gboolean sat_cfg_get_bool_def(sat_cfg_bool_e param) { gboolean value = FALSE; if (param < SAT_CFG_BOOL_NUM) { value = sat_cfg_bool[param].defval; } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown BOOL param index (%d)\n"), __func__, param); } return value; } /** * Store a boolean configuration value. * @param param The parameter to store. * @param value The value of the parameter. * * This function stores a boolean configuration value in the configuration * table. */ void sat_cfg_set_bool(sat_cfg_bool_e param, gboolean value) { if (param < SAT_CFG_BOOL_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { g_key_file_set_boolean(config, sat_cfg_bool[param].group, sat_cfg_bool[param].key, value); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown BOOL param index (%d)\n"), __func__, param); } } void sat_cfg_reset_bool(sat_cfg_bool_e param) { if (param < SAT_CFG_BOOL_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { g_key_file_remove_key(config, sat_cfg_bool[param].group, sat_cfg_bool[param].key, NULL); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown BOOL param index (%d)\n"), __func__, param); } } /** * Get string value * * Return a newly allocated gchar * which must be freed when no longer needed. */ gchar *sat_cfg_get_str(sat_cfg_str_e param) { gchar *value; GError *error = NULL; if (param < SAT_CFG_STR_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); /* return default value */ value = g_strdup(sat_cfg_str[param].defval); } else { /* fetch value */ value = g_key_file_get_string(config, sat_cfg_str[param].group, sat_cfg_str[param].key, &error); if (error != NULL) { g_clear_error(&error); value = g_strdup(sat_cfg_str[param].defval); } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown STR param index (%d)\n"), __func__, param); value = g_strdup("ERROR"); } return value; } /** * Get default value of string parameter * * Returns a newly allocated gchar * which must be freed when no longer needed. */ gchar *sat_cfg_get_str_def(sat_cfg_str_e param) { gchar *value; if (param < SAT_CFG_STR_NUM) { value = g_strdup(sat_cfg_str[param].defval); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown STR param index (%d)\n"), __func__, param); value = g_strdup("ERROR"); } return value; } /** Store a str configuration value. */ void sat_cfg_set_str(sat_cfg_str_e param, const gchar * value) { if (param < SAT_CFG_STR_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { if (value) { g_key_file_set_string(config, sat_cfg_str[param].group, sat_cfg_str[param].key, value); } else { /* remove key from config */ g_key_file_remove_key(config, sat_cfg_str[param].group, sat_cfg_str[param].key, NULL); } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown STR param index (%d)\n"), __func__, param); } } void sat_cfg_reset_str(sat_cfg_str_e param) { if (param < SAT_CFG_STR_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { g_key_file_remove_key(config, sat_cfg_str[param].group, sat_cfg_str[param].key, NULL); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown STR param index (%d)\n"), __func__, param); } } gint sat_cfg_get_int(sat_cfg_int_e param) { gint value = 0; GError *error = NULL; if (param < SAT_CFG_INT_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); /* return default value */ value = sat_cfg_int[param].defval; } else { /* fetch value */ value = g_key_file_get_integer(config, sat_cfg_int[param].group, sat_cfg_int[param].key, &error); if (error != NULL) { g_clear_error(&error); value = sat_cfg_int[param].defval; } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown INT param index (%d)\n"), __func__, param); } return value; } gint sat_cfg_get_int_def(sat_cfg_int_e param) { gint value = 0; if (param < SAT_CFG_INT_NUM) { value = sat_cfg_int[param].defval; } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown INT param index (%d)\n"), __func__, param); } return value; } void sat_cfg_set_int(sat_cfg_int_e param, gint value) { if (param < SAT_CFG_INT_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { g_key_file_set_integer(config, sat_cfg_int[param].group, sat_cfg_int[param].key, value); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown INT param index (%d)\n"), __func__, param); } } void sat_cfg_reset_int(sat_cfg_int_e param) { if (param < SAT_CFG_INT_NUM) { if (config == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Module not initialised\n"), __func__); } else { g_key_file_remove_key(config, sat_cfg_int[param].group, sat_cfg_int[param].key, NULL); } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Unknown INT param index (%d)\n"), __func__, param); } } gpredict/src/sat-cfg.h000066400000000000000000000244751427377236300151750ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_CFG_H #define SAT_CFG_H 1 #include #define TIME_FORMAT_MAX_LENGTH 50 /** Symbolic references for boolean config values. */ typedef enum { SAT_CFG_BOOL_USE_LOCAL_TIME = 0, /*!< Display local time instead of UTC. */ SAT_CFG_BOOL_USE_NSEW, /*!< Use N, S, E and W instead of sign */ SAT_CFG_BOOL_USE_IMPERIAL, /*!< Use Imperial units instead of Metric */ SAT_CFG_BOOL_MAIN_WIN_POS, /*!< Restore position of main window */ SAT_CFG_BOOL_MOD_WIN_POS, /*!< Restore size and position of module windows */ SAT_CFG_BOOL_MOD_STATE, /*!< Restore module state */ SAT_CFG_BOOL_RULES_HINT_OBSOLETE, /*!< Enable rules hint in GtkSatList. */ SAT_CFG_BOOL_MAP_SHOW_QTH_INFO, /*!< Show QTH info on map */ SAT_CFG_BOOL_MAP_SHOW_NEXT_EV, /*!< Show next event on map */ SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK, /*!< Track mouse cursor on map. */ SAT_CFG_BOOL_MAP_SHOW_GRID, /*!< Show grid on map. */ SAT_CFG_BOOL_MAP_SHOW_TERMINATOR, /*!< Show solar terminator on map. */ SAT_CFG_BOOL_MAP_KEEP_RATIO, /*!< Keep original aspect ratio */ SAT_CFG_BOOL_POL_SHOW_QTH_INFO, /*!< Show QTH info on polar plot */ SAT_CFG_BOOL_POL_SHOW_NEXT_EV, /*!< Show next event on polar plot */ SAT_CFG_BOOL_POL_SHOW_CURS_TRACK, /*!< Track mouse cursor on polar plot. */ SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS, /*!< Extra Az ticks at every 30 deg. */ SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO, /*!< Automatically show the sky track. */ SAT_CFG_BOOL_TLE_SERVER_AUTH, /*!< TLE server requires authentication. */ SAT_CFG_BOOL_TLE_PROXY_AUTH, /*!< Proxy requires authentication. */ SAT_CFG_BOOL_TLE_ADD_NEW, /*!< Add new satellites to database. */ SAT_CFG_BOOL_KEEP_LOG_FILES, /*!< Whether to keep old log files */ SAT_CFG_BOOL_PRED_USE_REAL_T0, /*!< Whether to use current time as T0 fro predictions */ SAT_CFG_BOOL_NUM /*!< Number of boolean parameters */ } sat_cfg_bool_e; /** Symbolic references for integer config values. */ typedef enum { SAT_CFG_INT_VERSION_MAJOR = 0, /*!< Configuration version number (major) */ SAT_CFG_INT_VERSION_MINOR, /*!< Configuration version number (minor) */ SAT_CFG_INT_MODULE_TIMEOUT, /*!< Module refresh rate */ SAT_CFG_INT_MODULE_LAYOUT, /*!< Module layout */ SAT_CFG_INT_MODULE_VIEW_1, /*!< Type of view 1 */ SAT_CFG_INT_MODULE_VIEW_2, /*!< Type of view 2 */ SAT_CFG_INT_MODULE_VIEW_3, /*!< Type of view 3 */ SAT_CFG_INT_MODULE_CURRENT_PAGE, /*!< Number of integer parameters. */ SAT_CFG_INT_WARP_FACTOR, /*!< Time compression factor. */ SAT_CFG_INT_LIST_REFRESH, /*!< List refresh rate (cycle). */ SAT_CFG_INT_LIST_COLUMNS, /*!< List column visibility. */ SAT_CFG_INT_MAP_CENTER, /*!< Longitude around which the map is centered. */ SAT_CFG_INT_MAP_REFRESH, /*!< Map refresh rate (cycle). */ SAT_CFG_INT_MAP_INFO_COL, /*!< Info text colour on maps. */ SAT_CFG_INT_MAP_INFO_BGD_COL, /*!< Info text bgd colour on maps. */ SAT_CFG_INT_MAP_QTH_COL, /*!< QTH mark colour on map. */ SAT_CFG_INT_MAP_SAT_COL, /*!< Satellite colour on maps */ SAT_CFG_INT_MAP_SAT_SEL_COL, /*!< Selected satellite colour */ SAT_CFG_INT_MAP_SAT_COV_COL, /*!< Map coverage area colour */ SAT_CFG_INT_MAP_GRID_COL, /*!< Grid colour. */ SAT_CFG_INT_MAP_TERMINATOR_COL, /*!< Solar terminator colour. */ SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL, /*!< Earth shadow colour. */ SAT_CFG_INT_MAP_TICK_COL, /*!< Tick labels colour. */ SAT_CFG_INT_MAP_TRACK_COL, /*!< Ground Track colour. */ SAT_CFG_INT_MAP_TRACK_NUM, /*!< Number of orbits to show ground track for */ SAT_CFG_INT_MAP_SHADOW_ALPHA, /*!< Tranparency of shadow under satellite marker. */ SAT_CFG_INT_POLAR_REFRESH, /*!< Polar refresh rate (cycle). */ SAT_CFG_INT_POLAR_ORIENTATION, /*!< Orientation of the polar charts. */ SAT_CFG_INT_POLAR_BGD_COL, /*!< Polar view, background colour. */ SAT_CFG_INT_POLAR_AXIS_COL, /*!< Polar view, axis colour. */ SAT_CFG_INT_POLAR_TICK_COL, /*!< Tick label colour, e.g. N/W/S/E */ SAT_CFG_INT_POLAR_SAT_COL, /*!< Satellite colour. */ SAT_CFG_INT_POLAR_SAT_SEL_COL, /*!< Selected satellite colour. */ SAT_CFG_INT_POLAR_TRACK_COL, /*!< Track colour. */ SAT_CFG_INT_POLAR_INFO_COL, /*!< Info colour. */ SAT_CFG_INT_SINGLE_SAT_REFRESH, /*!< Single-sat refresh rate (cycle). */ SAT_CFG_INT_SINGLE_SAT_FIELDS, /*!< Single-sat fields. */ SAT_CFG_INT_SINGLE_SAT_SELECT, /*!< Single-sat selected satellite. */ SAT_CFG_INT_EVENT_LIST_REFRESH, /*!< Event list refresh rate (cycle). */ SAT_CFG_INT_PRED_MIN_EL, /*!< Minimum elevation for passes. */ SAT_CFG_INT_PRED_NUM_PASS, /*!< Number of passes to predict. */ SAT_CFG_INT_PRED_LOOK_AHEAD, /*!< Look-ahead time limit in days. */ SAT_CFG_INT_PRED_RESOLUTION, /*!< Time resolution in seconds */ SAT_CFG_INT_PRED_NUM_ENTRIES, /*!< Number of entries in single pass. */ SAT_CFG_INT_PRED_SINGLE_COL, /*!< Visible columns in single-pass dialog */ SAT_CFG_INT_PRED_MULTI_COL, /*!< Visible columns in multi-pass dialog */ SAT_CFG_INT_PRED_SAVE_FORMAT, /*!< Last used save format for predictions */ SAT_CFG_INT_PRED_SAVE_CONTENTS, /*!< Last selection for save file contents */ SAT_CFG_INT_PRED_TWILIGHT_THLD, /*!< Twilight zone threshold */ SAT_CFG_INT_SKYATGL_TIME, /*!< Time span for sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_01, /*!< Colour 1 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_02, /*!< Colour 2 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_03, /*!< Colour 3 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_04, /*!< Colour 4 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_05, /*!< Colour 5 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_06, /*!< Colour 6 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_07, /*!< Colour 7 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_08, /*!< Colour 8 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_09, /*!< Colour 9 in sky at a glance predictions */ SAT_CFG_INT_SKYATGL_COL_10, /*!< Colour 10 in sky at a glance predictions */ SAT_CFG_INT_WINDOW_POS_X, /*!< Main window X during last session */ SAT_CFG_INT_WINDOW_POS_Y, /*!< Main window Y during last session */ SAT_CFG_INT_WINDOW_WIDTH, /*!< Main window width during last session */ SAT_CFG_INT_WINDOW_HEIGHT, /*!< Main window height during last session */ SAT_CFG_INT_WEB_BROWSER_TYPE, /*!< Web browser type, see browser_type_t */ SAT_CFG_INT_TLE_AUTO_UPD_FREQ, /*!< TLE auto-update frequency. */ SAT_CFG_INT_TLE_AUTO_UPD_ACTION, /*!< TLE auto-update action. */ SAT_CFG_INT_TLE_LAST_UPDATE, /*!< Date and time of last update, Unix seconds. */ SAT_CFG_INT_LOG_CLEAN_AGE, /*!< Age of log file to delete (seconds) */ SAT_CFG_INT_LOG_LEVEL, /*!< Logging level */ SAT_CFG_INT_NUM /*!< Number of integer parameters. */ } sat_cfg_int_e; /** Symbolic references for string config values. */ typedef enum { SAT_CFG_STR_TIME_FORMAT = 0, /*!< Time format. */ SAT_CFG_STR_DEF_QTH, /*!< Default QTH file. */ SAT_CFG_STR_OPEN_MODULES, /*!< Open modules. */ SAT_CFG_STR_WEB_BROWSER, /*!< Web browser string. */ SAT_CFG_STR_MODULE_GRID, /*!< The grid layout of the module */ SAT_CFG_STR_MAP_FILE, /*!< Map file (abs or rel). */ SAT_CFG_STR_MAP_FONT, /*!< Map font. */ SAT_CFG_STR_POL_FONT, /*!< Polar view font. */ SAT_CFG_STR_TRSP_SERVER, /*!< Server for transponder updates (since 1.4) */ SAT_CFG_STR_TRSP_FREQ_FILE, /*!< The file with frequency data on the server (since 1.4) */ SAT_CFG_STR_TRSP_MODE_FILE, /*!< The file with mode descriptions on the server (since 1.4) */ SAT_CFG_STR_TRSP_PROXY, /*!< Proxy server. */ SAT_CFG_STR_TLE_SERVER, /*!< Server for TLE updates (replaced in 1.4 by TLE_URLS) */ SAT_CFG_STR_TLE_FILES, /*!< ; separated list of files on server (replaced in 1.4 by TLE_URLS) */ SAT_CFG_STR_TLE_PROXY, /*!< Proxy server. */ SAT_CFG_STR_TLE_URLS, /*!< ; separated list of TLE file URLs (since 1.4) */ SAT_CFG_STR_TLE_FILE_DIR, /*!< Local directory from which tle were last updated. */ SAT_CFG_STR_PRED_SAVE_DIR, /*!< Last used save directory for pass predictions */ SAT_CFG_STR_NUM /*!< Number of string parameters */ } sat_cfg_str_e; guint sat_cfg_load(void); guint sat_cfg_save(void); void sat_cfg_close(void); gboolean sat_cfg_get_bool(sat_cfg_bool_e param); gboolean sat_cfg_get_bool_def(sat_cfg_bool_e param); void sat_cfg_set_bool(sat_cfg_bool_e param, gboolean value); void sat_cfg_reset_bool(sat_cfg_bool_e param); gchar *sat_cfg_get_str(sat_cfg_str_e param); gchar *sat_cfg_get_str_def(sat_cfg_str_e param); void sat_cfg_set_str(sat_cfg_str_e param, const gchar * value); void sat_cfg_reset_str(sat_cfg_str_e param); gint sat_cfg_get_int(sat_cfg_int_e param); gint sat_cfg_get_int_def(sat_cfg_int_e param); void sat_cfg_set_int(sat_cfg_int_e param, gint value); void sat_cfg_reset_int(sat_cfg_int_e param); #endif gpredict/src/sat-info.c000066400000000000000000000450431427377236300153560ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #ifndef WIN32 #define _DEFAULT_SOURCE // see man timegm #else #define timegm _mkgmtime // https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64?view=vs-2017 #endif #include #include #include #include "config-keys.h" #include "orbit-tools.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-info.h" #include "sat-log.h" #include "sat-pass-dialogs.h" #include "sgpsdp/sgp4sdp4.h" #include "trsp-conf.h" /** * Show satellite info in a dialog (callback) * * @param menuitem The menuitem from where the function is invoked. * @param data Pointer to parent window or NULL. */ void show_sat_info_menu_cb(GtkWidget * menuitem, gpointer data) { sat_t *sat; sat = SAT(g_object_get_data(G_OBJECT(menuitem), "sat")); show_sat_info(sat, data); } /* Create transponder table. */ static GtkWidget *create_transponder_table(guint catnum) { GtkWidget *vbox, *label, *swin; GSList *trsplist = NULL; trsp_t *trsp = NULL; guint i, n; gchar *text; trsplist = read_transponders(catnum); if (trsplist == NULL) { swin = gtk_label_new(_("No transponders")); } else { vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 3); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); /* Add each transponder to vbox */ n = g_slist_length(trsplist); for (i = 0; i < n; i++) { gtk_box_pack_start(GTK_BOX(vbox), gtk_label_new(" "), FALSE, FALSE, 0); trsp = (trsp_t *) g_slist_nth_data(trsplist, i); /* transponder name */ text = g_strdup_printf("%s", trsp->name); label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), text); g_free(text); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); /* uplink */ if (trsp->uplow > 0.0) { if (trsp->uphigh > trsp->uplow) { /* we have a range */ text = g_strdup_printf(_ ("Uplink: %.4f \342\200\222 %.4f MHz"), trsp->uplow / 1.0e6, trsp->uphigh / 1.0e6); } else { text = g_strdup_printf(_("Uplink: %.4f MHz"), trsp->uplow / 1.0e6); } label = gtk_label_new(text); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); g_free(text); } /* downlink */ if (trsp->downlow > 0.0) { if (trsp->downhigh > trsp->downlow) { /* we have a range */ text = g_strdup_printf(_ ("Downlink: %.4f \342\200\222 %.4f MHz"), trsp->downlow / 1.0e6, trsp->downhigh / 1.0e6); } else { text = g_strdup_printf(_("Downlink: %.4f MHz"), trsp->downlow / 1.0e6); } label = gtk_label_new(text); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); g_free(text); } /* inverting */ if ((trsp->downhigh > trsp->downlow) && (trsp->uphigh > trsp->uplow)) { text = g_strdup_printf(_("Inverting: %s"), trsp->invert ? "YES" : "NO"); label = gtk_label_new(text); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); g_free(text); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); } /* mode string */ if (trsp->mode) { text = g_strdup_printf(_("Mode: %s"), trsp->mode); label = gtk_label_new(text); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); g_free(text); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); } if (trsp->baud) { text = g_strdup_printf(_("Baudrate: %9.2f"), trsp->baud); label = gtk_label_new(text); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); g_free(text); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); } } free_transponders(trsplist); /* pack into a scrolled window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (swin), vbox); } return swin; } /* BBBBB.BBBBBBBB] - Epoch Time -- 2-digit year, followed by 3-digit sequential day of the year, followed by the time represented as the fractional portion of one day, but... we now have the converted fields, tle->epoch_year, tle->epoch_day and tle->epoch_fod */ static gchar *epoch_to_str(sat_t * sat) { GDate *epd; guint h, m, s, sec; gchar *buff; gchar *fmt; struct tm tms; time_t t; guint size; /* http://celestrak.com/columns/v04n03/#FAQ02 ... While talking about the epoch, this is perhaps a good place to answer the other time-related questions. First, how is the epoch time format interpreted? This question is best answered by using an example. An epoch of 98001.00000000 corresponds to 0000 UT on 1998 January 01st in other words, midnight between 1997 December 31 and 1998 January 01. An epoch of 98000.00000000 would actually correspond to the beginning of 1997 December 31st strange as that might seem. Note that the epoch day starts at UT midnight (not noon) and that all times are measured mean solar rather than sidereal time units (the answer to our third question). */ epd = g_date_new_dmy(1, 1, sat->tle.epoch_year); g_date_add_days(epd, sat->tle.epoch_day - 1); /* convert date to struct tm */ g_date_to_struct_tm(epd, &tms); /* add HMS */ sec = (guint) floor(sat->tle.epoch_fod * 86400); /* fraction of day in seconds */ /* hour */ h = (guint) floor(sec / 3600); tms.tm_hour = h; /* minutes */ m = (guint) floor((sec - (h * 3600)) / 60); tms.tm_min = m; s = (guint) floor(sec - (h * 3600) - (m * 60)); tms.tm_sec = s; /* get format string */ fmt = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); /* format either local time or UTC depending on check box */ buff = g_try_malloc(51); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_LOCAL_TIME)) { t = timegm(&tms); size = strftime(buff, 50, fmt, localtime(&t)); } else size = strftime(buff, 50, fmt, &tms); if (size < 50) buff[size] = '\0'; else buff[50] = '\0'; g_date_free(epd); g_free(fmt); return buff; } /** * Show satellite info in a dialog * * @param sat Pointer to the sat info. * @param data Pointer to parent window or NULL. * * FIXME: see nice drawing at http://www.amsat.org/amsat-new/tools/keps_tutorial.php */ void show_sat_info(sat_t * sat, gpointer data) { GtkWidget *dialog; GtkWidget *notebook; GtkWidget *table; GtkWidget *label; GtkWindow *toplevel = NULL; gchar *str; if (data != NULL) toplevel = GTK_WINDOW(data); /* create table */ table = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 10); /* satellite name */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Satellite name:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); label = gtk_label_new(NULL); str = g_markup_printf_escaped(_("%s"), sat->nickname); gtk_label_set_markup(GTK_LABEL(label), str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 0, 1, 1); g_free(str); /* operational status */ label = gtk_label_new(_("Operational Status:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); switch (sat->tle.status) { case OP_STAT_OPERATIONAL: label = gtk_label_new(_("Operational")); break; case OP_STAT_NONOP: label = gtk_label_new(_("Non-operational")); break; case OP_STAT_PARTIAL: label = gtk_label_new(_("Partially operational")); break; case OP_STAT_STDBY: label = gtk_label_new(_("Backup/Standby")); break; case OP_STAT_SPARE: label = gtk_label_new(_("Spare")); break; case OP_STAT_EXTENDED: label = gtk_label_new(_("Extended Mission")); break; default: label = gtk_label_new(_("Unknown")); break; } g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 1, 1, 1); /* Catnum */ label = gtk_label_new(_("Catalogue number:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); str = g_strdup_printf("%d", sat->tle.catnr); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 2, 1, 1); g_free(str); /* international designator */ label = gtk_label_new(_("International designator:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); label = gtk_label_new(sat->tle.idesg); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 3, 1, 1); /* elset number */ label = gtk_label_new(_("Element set number:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); str = g_strdup_printf("%d", sat->tle.elset); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 4, 1, 1); g_free(str); /* elset epoch */ label = gtk_label_new(_("Epoch time:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); str = epoch_to_str(sat); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 5, 1, 1); g_free(str); /* Revolution Number @ Epoch */ label = gtk_label_new(_("Orbit number @ epoch:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); str = g_strdup_printf("%d", sat->tle.revnum); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 6, 1, 1); g_free(str); /* ephermis type left out, since it is always 0 */ /* separator */ gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 7, 2, 1); /* Orbit inclination */ label = gtk_label_new(_("Inclination:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 8, 1, 1); str = g_strdup_printf("%.4f\302\260", sat->tle.xincl / de2ra); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 8, 1, 1); g_free(str); /* RAAN */ label = gtk_label_new(_("RAAN:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 9, 1, 1); str = g_strdup_printf("%.4f\302\260", sat->tle.xnodeo / de2ra); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 9, 1, 1); g_free(str); /* Eccentricity */ label = gtk_label_new(_("Eccentricity:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 10, 1, 1); str = g_strdup_printf("%.7f", sat->tle.eo); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 10, 1, 1); g_free(str); /* Argument of perigee */ label = gtk_label_new(_("Arg. of perigee:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 11, 1, 1); str = g_strdup_printf("%.4f\302\260", sat->tle.omegao / de2ra); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 11, 1, 1); g_free(str); /* Mean Anomaly */ label = gtk_label_new(_("Mean anomaly:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 12, 1, 1); str = g_strdup_printf("%.4f\302\260", sat->tle.xmo / de2ra); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 12, 1, 1); g_free(str); /* Mean Motion */ label = gtk_label_new(_("Mean motion:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 13, 1, 1); str = g_strdup_printf("%.8f [rev/day]", sat->meanmo); label = gtk_label_new(str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 13, 1, 1); g_free(str); /* one half of the first time derivative of mean motion */ label = gtk_label_new(_("\302\275 d/dt (mean motion):")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 14, 1, 1); str = g_strdup_printf("%.5e [rev/day2]", sat->tle.xndt2o / (twopi / xmnpda / xmnpda)); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 14, 1, 1); g_free(str); /* one sixth of the second time derivative of mean motion */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("1/6 d2/dt2 (mean motion):")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 15, 1, 1); str = g_strdup_printf("%.5e [rev/day3]", sat->tle.xndd6o * xmnpda / (twopi / xmnpda / xmnpda)); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 15, 1, 1); g_free(str); /* B* drag term */ label = gtk_label_new(_("B* drag term:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 16, 1, 1); str = g_strdup_printf("%.5e [RE-1]", sat->tle.bstar * ae); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), str); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 16, 1, 1); g_free(str); /* Orbit type */ /* Next Event */ gtk_widget_show_all(table); notebook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, gtk_label_new(_("Orbit Info"))); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), create_transponder_table(sat->tle.catnr), gtk_label_new(_("Transponders"))); /* create dialog window with NULL parent */ dialog = gtk_dialog_new_with_buttons(_("Satellite Info"), toplevel, GTK_DIALOG_DESTROY_WITH_PARENT, "_OK", GTK_RESPONSE_ACCEPT, NULL); /* allow interaction with other windows */ gtk_window_set_modal(GTK_WINDOW(dialog), FALSE); g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(content_area), notebook, TRUE, TRUE, 0); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all(dialog); } gpredict/src/sat-info.h000066400000000000000000000004071427377236300153560ustar00rootroot00000000000000#ifndef SAT_INFO_H #define SAT_INFO_H 1 #include #include "gtk-sat-data.h" #include "sgpsdp/sgp4sdp4.h" void show_sat_info_menu_cb(GtkWidget * menuitem, gpointer data); void show_sat_info(sat_t * sat, gpointer data); #endif gpredict/src/sat-log-browser.c000066400000000000000000000454461427377236300166740ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "compat.h" #include "sat-log.h" #include "sat-log-browser.h" /* columns in the message list */ typedef enum { MSG_LIST_COL_TIME = 0, MSG_LIST_COL_LEVEL, MSG_LIST_COL_MSG, MSG_LIST_COL_NUMBER } msg_list_col_t; /* data structure to hold one message */ typedef struct { time_t time; /* time stamp */ sat_log_level_t level; /* debug level */ gchar *message; /* the message itself */ } message_t; /* Easy access to column titles */ const gchar *MSG_LIST_COL_TITLE[MSG_LIST_COL_NUMBER] = { N_("Time"), N_("Level"), N_("Message") }; const gfloat MSG_LIST_COL_TITLE_ALIGN[MSG_LIST_COL_NUMBER] = { 0.5, 0.5, 0.0 }; const gchar *DEBUG_STR[6] = { N_("NONE"), N_("ERROR"), N_("WARNING"), N_("INFO"), N_("DEBUG") }; extern GtkWidget *app; static gboolean initialised = FALSE; /* Is module initialised? */ /* counters */ static guint32 errors = 0; /* Number of error messages */ static guint32 warnings = 0; /* Number of warning messages */ static guint32 infos = 0; /* Number of verbose messages */ static guint32 debugs = 0; /* Number of trace messages */ /* summary labels; they need to be accessible at runtime */ static GtkWidget *errorlabel, *warnlabel, *infolabel, *debuglabel, *sumlabel; /* The message window itself */ static GtkWidget *window; /* the tree view model */ GtkTreeModel *model; /* load debug file related */ //static void load_debug_file(GtkWidget * parent); //static int read_debug_file(const gchar * filename); //static void clear_message_list(void); static void add_debug_message(const gchar * datetime, sat_log_level_t debug_level, const char *message); /* * Clear the message list * * Besides clearing the message list, the function also resets * the counters and set the text of the corresponding widgets * to zero. */ static void clear_message_list() { /* clear the meaase list */ gtk_list_store_clear(GTK_LIST_STORE(model)); /* reset the counters and text widgets */ errors = 0; warnings = 0; debugs = 0; gtk_label_set_text(GTK_LABEL(errorlabel), "0"); gtk_label_set_text(GTK_LABEL(warnlabel), "0"); gtk_label_set_text(GTK_LABEL(infolabel), "0"); gtk_label_set_text(GTK_LABEL(debuglabel), "0"); gtk_label_set_markup(GTK_LABEL(sumlabel), "0"); } /* Read contents of debug file. */ static int read_debug_file(const gchar * filename) { GIOChannel *logfile = NULL; /* the log file */ GError *error = NULL; /* error structure */ gint errorcode = 0; /* error code returned by function */ gchar *line; /* line read from file */ gsize length; /* length of line read from file */ gchar **buff; /* check file and read contents */ if (g_file_test(filename, G_FILE_TEST_EXISTS)) { /* open file */ logfile = g_io_channel_new_file(filename, "r", &error); if (logfile) { /* read the file line by line */ while (g_io_channel_read_line(logfile, &line, &length, NULL, NULL) != G_IO_STATUS_EOF) { /* trim line and split it */ line = g_strdelimit(line, "\n", '\0'); buff = g_strsplit(line, SAT_LOG_MSG_SEPARATOR, MSG_LIST_COL_NUMBER + 1); // +1 because we used to have a msg source (pre 1.4) /* Gpredict 1.3 and earlier had 4 fields: * buff[0]: Date and time * buff[1]: Message source * buff[2]: Message type * buff[3]: Message * As of 1.4 we no longer have message source: * buff[0]: Date and time * buff[1]: Message type * buff[2]: Message * * Gpredicxt 1.4+ will be able to read logs generated by earlier versions * but not the other way around. */ switch (g_strv_length(buff)) { case 1: add_debug_message("", SAT_LOG_LEVEL_ERROR, buff[0]); break; case 3: /* v1.4 and later */ add_debug_message(buff[0], (guint) g_ascii_strtod(buff[1], NULL), buff[2]); break; case 4: /* v1.3 and earlier with message source */ add_debug_message(buff[0], /* buff[1], - used to be message src */ (guint) g_ascii_strtod(buff[2], NULL), buff[3]); break; default: add_debug_message("", SAT_LOG_LEVEL_ERROR, _("Log file is corrupt")); break; } /* clean up */ g_free(line); g_strfreev(buff); } errorcode = 0; /* Close IO channel; don't care about status. Shutdown will flush the stream and close the channel as soon as the reference count is dropped. Order matters! */ g_io_channel_shutdown(logfile, TRUE, NULL); g_io_channel_unref(logfile); } else { /* an error occurred */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error open debug log (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); errorcode = 1; } } else { errorcode = 1; } return errorcode; } /* * Load debug file. * * This function creates the file chooser dialog, which can be used to select * a file containing debug messages. When the dialog returns, the selected * file is checked and, if the file exists, is read line by line. */ static void load_debug_file(GtkWidget * parent) { gchar *confdir; gchar *filename; gchar *title; gint error; /* error code returned by by read_debug_file */ GtkWidget *dialog; /* create file chooser dialog */ dialog = gtk_file_chooser_dialog_new(_("Select Log File"), GTK_WINDOW(parent), GTK_FILE_CHOOSER_ACTION_OPEN, "_Cancel", GTK_RESPONSE_CANCEL, "_Open", GTK_RESPONSE_ACCEPT, NULL); confdir = get_user_conf_dir(); filename = g_strconcat(confdir, G_DIR_SEPARATOR_S, "logs", NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), filename); g_free(filename); g_free(confdir); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { clear_message_list(); filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); /* sanity check of filename will be performed in read_debug_file */ error = read_debug_file(filename); if (error == 0) { /* Update title with filename */ title = g_strdup_printf(_("Log Browser: %s"), filename); gtk_window_set_title(GTK_WINDOW(window), title); g_free(title); } else { /* clear filename from title if unable to read file */ gtk_window_set_title(GTK_WINDOW(window), _("Log Browser")); } g_free(filename); } gtk_widget_destroy(dialog); } /* callback function called when a dialog button is clicked */ static void message_window_response(GtkWidget * widget, gint response, gpointer data) { (void)data; switch (response) { case GTK_RESPONSE_CLOSE: gtk_widget_destroy(widget); break; case GTK_RESPONSE_YES: load_debug_file(widget); break; case GTK_RESPONSE_NO: clear_message_list(); break; default: break; } } /* create summary */ static GtkWidget *create_message_summary() { GtkWidget *vbox; GtkWidget *table; /* table containing everything */ GtkWidget *frame; /* surrounding frame */ GtkWidget *label; /* dummy label */ /* create labels */ errorlabel = gtk_label_new("0"); g_object_set(errorlabel, "xalign", 1.0f, "yalign", 0.5f, NULL); warnlabel = gtk_label_new("0"); g_object_set(warnlabel, "xalign", 1.0f, "yalign", 0.5f, NULL); infolabel = gtk_label_new("0"); g_object_set(infolabel, "xalign", 1.0f, "yalign", 0.5f, NULL); debuglabel = gtk_label_new("0"); g_object_set(debuglabel, "xalign", 1.0f, "yalign", 0.5f, NULL); sumlabel = gtk_label_new(NULL); gtk_label_set_use_markup(GTK_LABEL(sumlabel), TRUE); gtk_label_set_markup(GTK_LABEL(sumlabel), "0"); g_object_set(sumlabel, "xalign", 1.0f, "yalign", 0.5f, NULL); /* create table and add widgets */ table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_container_set_border_width(GTK_CONTAINER(table), 10); label = gtk_label_new(_("Errors")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); label = gtk_label_new(_("Warnings")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); label = gtk_label_new(_("Info")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); label = gtk_label_new(_("Debug")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 4, 2, 1); label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_label_set_markup(GTK_LABEL(label), _("Total")); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); gtk_grid_attach(GTK_GRID(table), errorlabel, 1, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), warnlabel, 1, 1, 1, 1); gtk_grid_attach(GTK_GRID(table), infolabel, 1, 2, 1, 1); gtk_grid_attach(GTK_GRID(table), debuglabel, 1, 3, 1, 1); gtk_grid_attach(GTK_GRID(table), sumlabel, 1, 5, 1, 1); /* frame around the table */ frame = gtk_frame_new(_(" Summary ")); gtk_frame_set_label_align(GTK_FRAME(frame), 0.5, 0.5); gtk_container_add(GTK_CONTAINER(frame), table); /* pack frame into vbox so that it doesn't gets stretched vertically */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); return vbox; } /* create tree view model; we actually create a GtkListStore because we are only interested in a flat list. A GtkListStore can be cast to a GtkTreeModel without any problems. */ static GtkTreeModel *create_list_model() { GtkListStore *liststore; liststore = gtk_list_store_new(MSG_LIST_COL_NUMBER, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); /*** Fill existing data into the list here ***/ return GTK_TREE_MODEL(liststore); } static gint message_window_delete(GtkWidget * widget, GdkEvent * event, gpointer data) { (void)widget; (void)event; (void)data; /* return FALSE to indicate that message window should be destroyed */ return FALSE; } /* callback function called when the dialog window is destroyed */ static void message_window_destroy(GtkWidget * widget, gpointer data) { (void)widget; (void)data; /* clean up memory */ /* GSList, ... */ initialised = FALSE; } /* Create list view */ static GtkWidget *create_message_list() { GtkWidget *treeview; /* high level treev iew widget */ GtkWidget *swin; /* scrolled window containing the tree view */ GtkCellRenderer *renderer; /* cell renderer used to create a column */ GtkTreeViewColumn *column; /* place holder for a tree view column */ guint i; treeview = gtk_tree_view_new(); for (i = 0; i < MSG_LIST_COL_NUMBER; i++) { renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_(MSG_LIST_COL_TITLE[i]), renderer, "text", i, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1); /* only aligns the headers? */ gtk_tree_view_column_set_alignment(column, MSG_LIST_COL_TITLE_ALIGN[i]); } /* create tree view model and finalise tree view */ model = create_list_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), model); g_object_unref(model); /* treeview is packed into a scroleld window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), treeview); return swin; } /* Initialise message window. * * This function creates the message window and allocates all the internal * data structures. The function should be called when the main program * is initialised. */ void sat_log_browser_open() { GtkWidget *hbox; gchar *fname; gchar *confdir; gchar *title; gint error; /* error code returned by by read_debug_file */ if (!initialised) { hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_pack_start(GTK_BOX(hbox), create_message_list(), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), create_message_summary(), FALSE, TRUE, 0); /* create dialog window; we use "fake" stock responses to catch user button clicks (save_as and pause) */ window = gtk_dialog_new_with_buttons(_("Log Browser"), GTK_WINDOW(app), GTK_DIALOG_DESTROY_WITH_PARENT, "_Open", GTK_RESPONSE_YES, "Clear", GTK_RESPONSE_NO, "_Close", GTK_RESPONSE_CLOSE, NULL); gtk_window_set_default_size(GTK_WINDOW(window), 600, 300); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(window))), hbox, TRUE, TRUE, 0); /* connect response signal */ g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(message_window_response), NULL); /* connect delete and destroy signals */ g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(message_window_delete), NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(message_window_destroy), NULL); gtk_widget_show_all(window); /* read gpredict.log by default */ confdir = get_user_conf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, "logs", G_DIR_SEPARATOR_S, "gpredict.log", NULL); error = read_debug_file(fname); if (error == 0) { /* update window title if file read cleanly */ title = g_strdup_printf(_("Log Browser: %s"), fname); gtk_window_set_title(GTK_WINDOW(window), title); g_free(title); } else { /* Remove filename if file not read */ gtk_window_set_title(GTK_WINDOW(window), _("Log Browser")); } g_free(fname); g_free(confdir); initialised = TRUE; } } /* Add a message to message list */ static void add_debug_message(const gchar * datetime, sat_log_level_t debug_level, const char *message) { guint total; /* totalt number of messages */ gchar *str; /* string to show message count */ GtkTreeIter item; /* new item added to the list store */ gtk_list_store_append(GTK_LIST_STORE(model), &item); gtk_list_store_set(GTK_LIST_STORE(model), &item, MSG_LIST_COL_TIME, datetime, MSG_LIST_COL_LEVEL, _(DEBUG_STR[debug_level]), MSG_LIST_COL_MSG, message, -1); switch (debug_level) { case SAT_LOG_LEVEL_ERROR: errors++; str = g_strdup_printf("%d", errors); gtk_label_set_text(GTK_LABEL(errorlabel), str); g_free(str); break; case SAT_LOG_LEVEL_WARN: warnings++; str = g_strdup_printf("%d", warnings); gtk_label_set_text(GTK_LABEL(warnlabel), str); g_free(str); break; case SAT_LOG_LEVEL_INFO: infos++; str = g_strdup_printf("%d", infos); gtk_label_set_text(GTK_LABEL(infolabel), str); g_free(str); break; case SAT_LOG_LEVEL_DEBUG: debugs++; str = g_strdup_printf("%d", debugs); gtk_label_set_text(GTK_LABEL(debuglabel), str); g_free(str); break; default: break; } /* the sum does not have to be updated for each line */ total = errors + warnings + infos + debugs; str = g_strdup_printf("%d", total); gtk_label_set_markup(GTK_LABEL(sumlabel), str); g_free(str); } gpredict/src/sat-log-browser.h000066400000000000000000000002021427377236300166560ustar00rootroot00000000000000/* log file browser */ #ifndef SAT_LOG_BROWSER_H #define SAT_LOG_BROWSER_H 1 void sat_log_browser_open(void); #endif gpredict/src/sat-log.c000066400000000000000000000232631427377236300152040ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** * Gpredict debug message logger. * * This component is responsible for logging the debug messages * coming from gpredict and hamlib. Debug messages are stored * in USER_CONF_DIR/logs/gpredict.log during runtime. * * During initialisation, gpredict removes the previous gpredict.log * file to allow the creation of the new one. However, the user can * choose to keep old log files. In that case the old files are kept * under gpredict-X.log file name, where X is the file age in seconds * (unix time as returned by g_get_current_time). * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "compat.h" #include "sat-cfg.h" #include "sat-log.h" static gboolean initialised = FALSE; static GIOChannel *logfile = NULL; static sat_log_level_t loglevel = SAT_LOG_LEVEL_DEBUG; static gboolean debug_to_stderr = FALSE; // whether to also send debug msg to stderr /** String representation of debug levels. */ const gchar *debug_level_str[] = { N_(" --- "), N_("ERROR"), N_(" WARN"), N_(" INFO"), N_("DEBUG") }; static void manage_debug_message(sat_log_level_t debug_level, const gchar * message); static void log_rotate(void); static void clean_log_dir(const gchar * dirname, glong age); /** * Initialise message logger. * * This function initialises the debug message logger. First, it * checks that the directory USER_CONF_DIR/logs/ exists, if not it * creates it. * Then, if there is a gpredict.log file it is either deleted or * renamed, depending on the sat-cfg settings. * Finally, a new gpredict.log file is created and opened. */ void sat_log_init() { gchar *dirname, *filename, *confdir; gboolean err = FALSE; GError *error = NULL; /* Check whether log directory exists, if not, create it */ confdir = get_user_conf_dir(); dirname = g_strconcat(confdir, G_DIR_SEPARATOR_S, "logs", NULL); g_free(confdir); if (!g_file_test(dirname, G_FILE_TEST_IS_DIR)) { if (g_mkdir_with_parents(dirname, 0755)) { /* print an error message */ g_print(_("ERROR: Could not create %s\n"), dirname); err = TRUE; } } /* check if gpredict.log already exists */ filename = g_strconcat(dirname, G_DIR_SEPARATOR_S, "gpredict.log", NULL); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { /* Note that logger shall clean up and perform log rotation upon exit, so we don't do anything here except removing the old file. The reason for this is that we need sat-cfg parameters for log rotation, but sat-cfg is not initialised at this time. */ if (g_remove(filename)) g_print(_("%s: Failed to delete old log file %s\n"), __func__, filename); } /* create new gpredict.log file */ logfile = g_io_channel_new_file(filename, "w", &error); if (error != NULL) { g_print(_("\n\nERROR: Failed to create %s\n%s\n\n"), filename, error->message); g_clear_error(&error); err = 1; } /* clean up */ g_free(dirname); g_free(filename); if (!err) { initialised = TRUE; sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Session started"), __func__); } } /** Close message logger. */ void sat_log_close() { if (initialised) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Session ended"), __func__); g_io_channel_shutdown(logfile, TRUE, NULL); g_io_channel_unref(logfile); logfile = NULL; initialised = FALSE; /* Always call log_rotate to get rid of old logs */ log_rotate(); } } /** Log messages from gpredict */ void sat_log_log(sat_log_level_t level, const gchar * fmt, ...) { gchar *msg; /* formatted debug message */ gchar **msgv; /* debug message line by line */ guint numlines; /* the number of lines in the message */ guint i; va_list ap; if (level > loglevel) return; va_start(ap, fmt); /* create character string and split it in case it is a multi-line message */ msg = g_strdup_vprintf(fmt, ap); /* remove trailing \n */ g_strchomp(msg); /* split the message in case it is a multiline message */ msgv = g_strsplit_set(msg, "\n", 0); numlines = g_strv_length(msgv); g_free(msg); /* for each line in msgv, call the real debug handler which will print the debug message and save it to a logfile */ for (i = 0; i < numlines; i++) manage_debug_message(level, msgv[i]); va_end(ap); g_strfreev(msgv); } void sat_log_set_visible(gboolean visible) { (void)visible; } void sat_log_set_level(sat_log_level_t level) { if G_LIKELY (level <= SAT_LOG_LEVEL_DEBUG) loglevel = level; } static void manage_debug_message(sat_log_level_t debug_level, const gchar * message) { gchar *msg_time; GDateTime *now; gchar *msg; gsize written; GError *error = NULL; /* get the time */ now = g_date_time_new_now_local(); msg_time = g_date_time_format(now, "%Y/%m/%d %H:%M:%S"); g_date_time_unref(now); /* send debug messages to stderr */ if G_UNLIKELY(debug_to_stderr) g_fprintf(stderr, "%s %s %s\n", msg_time, debug_level_str[debug_level], message); msg = g_strdup_printf("%s%s%d%s%s\n", msg_time, SAT_LOG_MSG_SEPARATOR, debug_level, SAT_LOG_MSG_SEPARATOR, message); g_free(msg_time); /* print debug message */ if G_LIKELY(initialised) { /* save to file */ g_io_channel_write_chars(logfile, msg, -1, &written, &error); if G_UNLIKELY (error != NULL) { g_fprintf(stderr, "CRITICAL: LOG ERROR\n"); g_clear_error(&error); } g_io_channel_flush(logfile, NULL); } else { /* send to stderr */ g_fprintf(stderr, "%s", msg); } g_free(msg); } /** Perform log rotation and other maintenance in log directory */ static void log_rotate() { gint64 now; /* current time */ glong age; /* age for cleaning */ glong then; /* time in sec corresponding to age */ gchar *confdir, *dirname, *fname1, *fname2; /* get cleaning age; if age non-zero do not rename log */ age = sat_cfg_get_int(SAT_CFG_INT_LOG_CLEAN_AGE); /* initialise some vars */ now = g_get_real_time() / G_USEC_PER_SEC; confdir = get_user_conf_dir(); dirname = g_strconcat(confdir, G_DIR_SEPARATOR_S, "logs", NULL); fname1 = g_strconcat(dirname, G_DIR_SEPARATOR_S, "gpredict.log", NULL); fname2 = g_strdup_printf("%s%sgpredict-%ld.log", dirname, G_DIR_SEPARATOR_S, now); if (age > 0) { if (g_rename(fname1, fname2)) g_print(_("%s: Failed to rename %s to %s\n"), __func__, fname1, fname2); } /* calculate age for files that should be removed */ then = now - age; /* cleanup every time as old log files should be deleted if they exist */ clean_log_dir(dirname, then); g_free(dirname); g_free(fname1); g_free(fname2); g_free(confdir); } /** Scan directory for .log files and remove those which are older than age. */ static void clean_log_dir(const gchar * dirname, glong age) { GDir *dir; /* directory handle */ GError *error = NULL; /* error handle */ const gchar *fname; /* current file name */ gchar **vbuf; /* string vector buffer */ gchar *ages; /* age as string */ gchar *buff; ages = g_strdup_printf("%ld", age); dir = g_dir_open(dirname, 0, &error); /* failed to open dir */ if (error != NULL) { g_clear_error(&error); return; } while ((fname = g_dir_read_name(dir)) != NULL) { /* ensure this is a .log file */ if G_LIKELY (g_str_has_suffix(fname, ".log")) { vbuf = g_strsplit_set(fname, "-.", -1); /* Remove file if too old */ if (g_ascii_strcasecmp(vbuf[1], ages) <= 0) { buff = g_strconcat(dirname, G_DIR_SEPARATOR_S, fname, NULL); if (g_remove(buff)) g_print(_("%s: Failed to delete old log file %s\n"), __func__, buff); g_free(buff); } g_strfreev(vbuf); } } g_dir_close(dir); g_free(ages); } gpredict/src/sat-log.h000066400000000000000000000027701427377236300152110ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_LOG_H #define SAT_LOG_H 1 #include #define SAT_LOG_MSG_SEPARATOR "|" typedef enum { SAT_LOG_LEVEL_NONE = 0, SAT_LOG_LEVEL_ERROR = 1, SAT_LOG_LEVEL_WARN = 2, SAT_LOG_LEVEL_INFO = 3, SAT_LOG_LEVEL_DEBUG = 4 } sat_log_level_t; void sat_log_init(void); void sat_log_close(void); void sat_log_log(sat_log_level_t level, const char *fmt, ...); void sat_log_set_visible(gboolean visible); void sat_log_set_level(sat_log_level_t level); #endif gpredict/src/sat-monitor.c000066400000000000000000000024061427377236300161060ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** \defgroup satmon Monitor satellites. */ #include #include #ifdef HAVE_CONFIG_H # include #endif #include "sat-monitor.h" gpredict/src/sat-monitor.h000066400000000000000000000022221427377236300161070ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_MONITOR_H #define SAT_MONITOR_H 1 #endif gpredict/src/sat-pass-dialogs.c000066400000000000000000001347311427377236300170140ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** Dialogs to show satellite passes */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "gpredict-utils.h" #include "gtk-azel-plot.h" #include "gtk-polar-plot.h" #include "gtk-sat-data.h" #include "locator.h" #include "pass-popup-menu.h" #include "predict-tools.h" #include "print-pass.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-vis.h" #include "sat-pass-dialogs.h" #include "save-pass.h" #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #define RESPONSE_PRINT 10 #define RESPONSE_SAVE 11 /** Column titles for multi-pass lists */ const gchar *MULTI_PASS_COL_TITLE[MULTI_PASS_COL_NUMBER] = { N_("AOS"), N_("TCA"), N_("LOS"), N_("Duration"), N_("Max El"), N_("AOS Az"), N_("Max El Az"), N_("LOS Az"), N_("Orbit"), N_("Vis") }; /** Descriptive text for multi-pass list columns. */ const gchar *MULTI_PASS_COL_HINT[MULTI_PASS_COL_NUMBER] = { N_("Acquisition of signal (AOS)"), N_("Time of Closest Approach (TCA)"), N_("Loss of signal (LOS)"), N_("Duration of pass"), N_("Maximum elevation"), N_("Azimuth at AOS"), N_("Az at max. elevation"), N_("Azimuth at LOS"), N_("Orbit number"), N_("Visibility during pass") }; const gdouble MULTI_PASS_COL_XALIGN[MULTI_PASS_COL_NUMBER] = { 0.5, // AOS 0.5, // TCA 0.5, // LOS 0.5, // duration 1.0, // max el 1.0, // aos az 1.0, // max el az 1.0, // los az 1.0, // orbit 0.5, // visibility }; /** Column titles indexed with column symb. refs. */ const gchar *SINGLE_PASS_COL_TITLE[SINGLE_PASS_COL_NUMBER] = { N_("Time"), N_("Az"), N_("El"), N_("Ra"), N_("Dec"), N_("Range"), N_("Rate"), N_("Lat"), N_("Lon"), N_("SSP"), N_("Footp"), N_("Alt"), N_("Vel"), N_("Dop"), N_("Loss"), N_("Del"), N_("MA"), N_("Phase"), N_("Vis") }; /** Column title hints indexed with column symb. refs. */ const gchar *SINGLE_PASS_COL_HINT[SINGLE_PASS_COL_NUMBER] = { N_("Time"), N_("Azimuth"), N_("Elevation"), N_("Right Ascension"), N_("Declination"), N_("Slant Range"), N_("Range Rate"), N_("Latitude"), N_("Longitude"), N_("Sub-Satellite Point"), N_("Footprint"), N_("Altitude"), N_("Velocity"), N_("Doppler Shift @ 100MHz"), N_("Signal Loss @ 100MHz"), N_("Signal Delay"), N_("Mean Anomaly"), N_("Orbit Phase"), N_("Visibility") }; const gdouble SINGLE_PASS_COL_XALIGN[SINGLE_PASS_COL_NUMBER] = { 0.5, // time 1.0, // az 1.0, // el 1.0, // RA 1.0, // dec 1.0, // range 1.0, // range rate 1.0, // lat 1.0, // lon 0.0, // SSP 1.0, // footprint 1.0, // alt 0.0, // vel 1.0, // doppler 0.0, // loss 0.0, // delay 1.0, // MA 1.0, // phase 0.5, // visibility }; static void check_and_set_single_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i); static void check_and_set_multi_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i); static void latlon_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void distance_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void range_rate_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void float_to_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void two_dec_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void time_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void duration_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static gint single_pass_dialog_delete(GtkWidget *, GdkEvent *, gpointer); static void single_pass_dialog_destroy(GtkWidget *, gpointer); static gint multi_pass_dialog_delete(GtkWidget *, GdkEvent *, gpointer); static void multi_pass_dialog_destroy(GtkWidget *, gpointer); static void row_activated_cb(GtkTreeView * view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer data); static gboolean popup_menu_cb(GtkWidget * treeview, gpointer data); static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer data); static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer data); static void Calc_RADec(gdouble jul_utc, gdouble saz, gdouble sel, qth_t * qth, obs_astro_t * obs_set); static void single_pass_response(GtkWidget * dialog, gint response, gpointer data); static void multi_pass_response(GtkWidget * dialog, gint response, gpointer data); /** * Show details about a satellite pass. * * @param parent The parent widget. * @param satname The name of the satellite. * @param qth Pointer to the QTH data. * @param pass The pass info. * @param toplevel The toplevel window or NULL. * * This function creates a dialog window containing a notebook with three pages: * 1. A list showing the details of a pass * 2. Polar plot of the pass * 3. Az/El plot of the pass * * Reference to the parent widget is needed to acquire the correct top-level * window, otherwise simply using the main window would bring that to front * covering any possible module windows. This would be unfortunate in the case * of fullscreen modules. */ void show_pass(const gchar * satname, qth_t * qth, pass_t * pass, GtkWidget * toplevel) { GtkWidget *dialog; /* the dialog window */ GtkWidget *notebook; /* the notebook widet */ GtkWidget *list; GtkListStore *liststore; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeIter item; GtkWidget *swin; /* scrolled window containing the list view */ GtkWidget *polar; /* polar plot */ GtkWidget *azel; /* Az/El plot */ GtkWidget *hbox; /* hbox used in tab headers */ GtkWidget *image; /* icon used in tab header */ gchar *title; guint flags; guint i, num; pass_detail_t *detail; gchar *buff; gint retcode; gdouble doppler; gdouble delay; gdouble loss; obs_astro_t astro; gdouble ra, dec; /* get columns flags */ flags = sat_cfg_get_int(SAT_CFG_INT_PRED_SINGLE_COL); /* create list */ list = gtk_tree_view_new(); for (i = 0; i < SINGLE_PASS_COL_NUMBER; i++) { renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "xalign", SINGLE_PASS_COL_XALIGN[i], NULL); column = gtk_tree_view_column_new_with_attributes(_ (SINGLE_PASS_COL_TITLE [i]), renderer, "text", i, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(list), column, -1); /* only aligns the headers */ gtk_tree_view_column_set_alignment(column, 0.5); /* set cell data function; allows to format data before rendering */ check_and_set_single_cell_renderer(column, renderer, i); /* hide columns that have not been specified */ if (!(flags & (1 << i))) { gtk_tree_view_column_set_visible(column, FALSE); } } /* create and fill model */ liststore = gtk_list_store_new(SINGLE_PASS_COL_NUMBER, G_TYPE_DOUBLE, // time G_TYPE_DOUBLE, // az G_TYPE_DOUBLE, // el G_TYPE_DOUBLE, // ra G_TYPE_DOUBLE, // dec G_TYPE_DOUBLE, // range G_TYPE_DOUBLE, // range rate G_TYPE_DOUBLE, // lat G_TYPE_DOUBLE, // lon G_TYPE_STRING, // SSP G_TYPE_DOUBLE, // footprint G_TYPE_DOUBLE, // alt G_TYPE_DOUBLE, // vel G_TYPE_DOUBLE, // doppler G_TYPE_DOUBLE, // loss G_TYPE_DOUBLE, // delay G_TYPE_DOUBLE, // ma G_TYPE_DOUBLE, // phase G_TYPE_STRING); // visibility /* add rows to list store */ num = g_slist_length(pass->details); for (i = 0; i < num; i++) { detail = PASS_DETAIL(g_slist_nth_data(pass->details, i)); gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_TIME, detail->time, SINGLE_PASS_COL_AZ, detail->az, SINGLE_PASS_COL_EL, detail->el, SINGLE_PASS_COL_RANGE, detail->range, SINGLE_PASS_COL_RANGE_RATE, detail->range_rate, SINGLE_PASS_COL_LAT, detail->lat, SINGLE_PASS_COL_LON, detail->lon, SINGLE_PASS_COL_FOOTPRINT, detail->footprint, SINGLE_PASS_COL_ALT, detail->alt, SINGLE_PASS_COL_VEL, detail->velo, SINGLE_PASS_COL_MA, detail->ma, SINGLE_PASS_COL_PHASE, detail->phase, -1); /* SINGLE_PASS_COL_RA */ /* SINGLE_PASS_COL_DEC */ if (flags & (SINGLE_PASS_FLAG_RA | SINGLE_PASS_FLAG_DEC)) { Calc_RADec(detail->time, detail->az, detail->el, qth, &astro); ra = Degrees(astro.ra); dec = Degrees(astro.dec); gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_RA, ra, SINGLE_PASS_COL_DEC, dec, -1); } /* SINGLE_PASS_COL_SSP */ if (flags & SINGLE_PASS_FLAG_SSP) { buff = g_try_malloc(7); retcode = longlat2locator(detail->lon, detail->lat, buff, 3); if (retcode == RIG_OK) { buff[6] = '\0'; gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_SSP, buff, -1); } g_free(buff); } /* SINGLE_PASS_COL_DOPPLER */ if (flags & SINGLE_PASS_FLAG_DOPPLER) { doppler = -100.0e06 * (detail->range_rate / 299792.4580); // Hz gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_DOPPLER, doppler, -1); } /* SINGLE_PASS_COL_LOSS */ if (flags & SINGLE_PASS_FLAG_LOSS) { loss = 72.4 + 20.0 * log10(detail->range); // dB gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_LOSS, loss, -1); } /* SINGLE_PASS_COL_DELAY */ if (flags & SINGLE_PASS_FLAG_DELAY) { delay = detail->range / 299.7924580; // msec gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_DELAY, delay, -1); } /* SINGLE_PASS_COL_VIS */ if (flags & SINGLE_PASS_FLAG_VIS) { buff = g_strdup_printf("%c", vis_to_chr(detail->vis)); gtk_list_store_set(liststore, &item, SINGLE_PASS_COL_VIS, buff, -1); g_free(buff); } } /* connect model to tree view */ gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(liststore)); g_object_unref(liststore); /* scrolled window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), list); /* create notebook and add pages */ notebook = gtk_notebook_new(); #ifdef G_OS_WIN32 image = gtk_image_new_from_icon_name("format-justify-fill-symbolic", GTK_ICON_SIZE_BUTTON); #else image = gtk_image_new_from_icon_name("format-justify-fill", GTK_ICON_SIZE_BUTTON); #endif hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Data")), FALSE, TRUE, 5); gtk_widget_show_all(hbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), swin, hbox); /* polar plot */ polar = gtk_polar_plot_new(qth, pass); buff = icon_file_name("gpredict-polar-small.png"); image = gtk_image_new_from_file(buff); g_free(buff); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Polar")), FALSE, TRUE, 5); gtk_widget_show_all(hbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), polar, hbox); /* Az/El plot */ azel = gtk_azel_plot_new(qth, pass); buff = icon_file_name("gpredict-azel-small.png"); image = gtk_image_new_from_file(buff); g_free(buff); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Az/El")), FALSE, TRUE, 5); gtk_widget_show_all(hbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), azel, hbox); /* create dialog */ title = g_strdup_printf(_("Pass details for %s (orbit %d)"), satname, pass->orbit); /* use NULL as parent to avoid conflict when using undocked windows as parents. */ dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(toplevel), GTK_DIALOG_DESTROY_WITH_PARENT, "_Print", RESPONSE_PRINT, "_Save", RESPONSE_SAVE, "_Close", GTK_RESPONSE_CLOSE, NULL); g_free(title); /* Make Close button default */ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); /* window icon */ buff = icon_file_name("gpredict-sat-list.png"); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), buff, NULL); g_free(buff); /* allow interaction with other windows */ gtk_window_set_modal(GTK_WINDOW(dialog), FALSE); g_object_set_data(G_OBJECT(dialog), "sat", (gpointer) satname); g_object_set_data(G_OBJECT(dialog), "qth", qth); g_object_set_data(G_OBJECT(dialog), "pass", pass); g_signal_connect(dialog, "response", G_CALLBACK(single_pass_response), NULL); g_signal_connect(dialog, "destroy", G_CALLBACK(single_pass_dialog_destroy), NULL); g_signal_connect(dialog, "delete_event", G_CALLBACK(single_pass_dialog_delete), NULL); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), notebook, TRUE, TRUE, 0); gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 300); gtk_widget_show_all(dialog); } /** * Manage button responses for single-pass dialogues. * * @param dialog The dialog widget. * @param response The ID of the response signal, i.e. the pressed button. * @param data User data (currently NULL). * * Use sat, qth, and passes labels to obtain the relevant data */ static void single_pass_response(GtkWidget * dialog, gint response, gpointer data) { (void)data; pass_t *pass; qth_t *qth; switch (response) { case RESPONSE_PRINT: pass = (pass_t *) g_object_get_data(G_OBJECT(dialog), "pass"); qth = (qth_t *) g_object_get_data(G_OBJECT(dialog), "qth"); print_pass(pass, qth, GTK_WINDOW(dialog)); break; case RESPONSE_SAVE: save_pass(dialog); break; /* Close button or delete events */ default: gtk_widget_destroy(dialog); break; } } /** Set cell renderer function. */ static void check_and_set_single_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i) { switch (i) { /* general float with 2 dec. precision no extra format besides a degree char */ case SINGLE_PASS_COL_AZ: case SINGLE_PASS_COL_EL: case SINGLE_PASS_COL_RA: case SINGLE_PASS_COL_DEC: case SINGLE_PASS_COL_MA: case SINGLE_PASS_COL_PHASE: gtk_tree_view_column_set_cell_data_func(column, renderer, degree_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* LAT/LON format */ case SINGLE_PASS_COL_LAT: case SINGLE_PASS_COL_LON: gtk_tree_view_column_set_cell_data_func(column, renderer, latlon_cell_data_function, GUINT_TO_POINTER(i), NULL); break; /* distances and velocities */ case SINGLE_PASS_COL_RANGE: case SINGLE_PASS_COL_ALT: case SINGLE_PASS_COL_FOOTPRINT: gtk_tree_view_column_set_cell_data_func(column, renderer, distance_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SINGLE_PASS_COL_VEL: case SINGLE_PASS_COL_RANGE_RATE: gtk_tree_view_column_set_cell_data_func(column, renderer, range_rate_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SINGLE_PASS_COL_DOPPLER: gtk_tree_view_column_set_cell_data_func(column, renderer, float_to_int_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SINGLE_PASS_COL_DELAY: case SINGLE_PASS_COL_LOSS: gtk_tree_view_column_set_cell_data_func(column, renderer, two_dec_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case SINGLE_PASS_COL_TIME: gtk_tree_view_column_set_cell_data_func(column, renderer, time_cell_data_function, GUINT_TO_POINTER(i), NULL); break; default: break; } } /* render column containing lat/lon by using this instead of the default data function, we can control the number of decimals and display the coordinates in a fancy way, including degree sign and NWSE suffixes. Please note that this function only affects how the numbers are displayed (rendered), the tree_store will still contain the original floating point numbers. Very cool! */ static void latlon_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number = 0.0; gchar *buff; guint coli = GPOINTER_TO_UINT(column); gchar hmf = ' '; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* check whether configuration requests the use of N, S, E and W instead of signs */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (coli == SINGLE_PASS_COL_LAT) { if (number < 0.00) { number = -number; hmf = 'S'; } else { hmf = 'N'; } } else if (coli == SINGLE_PASS_COL_LON) { if (number < 0.00) { number = -number; hmf = 'W'; } else { hmf = 'E'; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid column: %d"), __FILE__, __LINE__, coli); hmf = '?'; } } /* format the number */ buff = g_strdup_printf("%.2f\302\260%c", number, hmf); g_object_set(renderer, "text", buff, "xalign", 1.0, NULL); g_free(buff); } /* general floats with 2 digits + degree char */ static void degree_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.2f\302\260", number); g_object_set(renderer, "text", buff, "xalign", 1.0, NULL); g_free(buff); } /* distance and velocity, 0 decimal digits */ static void distance_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* convert distance to miles? */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { number = KM_TO_MI(number); } /* format the number */ buff = g_strdup_printf("%.0f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* range rate is special, because we may need to convert to miles and want 2-3 decimal digits. */ static void range_rate_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* convert distance to miles? */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { number = KM_TO_MI(number); } /* format the number */ buff = g_strdup_printf("%.3f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* 0 decimal digits */ static void float_to_int_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.0f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* 2 decimal digits */ static void two_dec_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* format the number */ buff = g_strdup_printf("%.2f", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /* AOS/LOS; convert julian date to string */ static void time_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar buff[TIME_FORMAT_MAX_LENGTH]; gchar *fmtstr; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); if (number == 0.0) { g_object_set(renderer, "text", "--- N/A ---", NULL); } else { /* format the number */ fmtstr = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); daynum_to_str(buff, TIME_FORMAT_MAX_LENGTH, fmtstr, number); g_object_set(renderer, "text", buff, NULL); g_free(fmtstr); } } static gint single_pass_dialog_delete(GtkWidget * dialog, GdkEvent * event, gpointer pass) { (void)dialog; (void)event; (void)pass; /* dialog will be destroyed */ return FALSE; } static void single_pass_dialog_destroy(GtkWidget * dialog, gpointer data) { pass_t *pass = PASS(g_object_get_data(G_OBJECT(dialog), "pass")); (void)data; free_pass(PASS(pass)); gtk_widget_destroy(dialog); } /*** FIXME: other copies */ static void Calc_RADec(gdouble jul_utc, gdouble saz, gdouble sel, qth_t * qth, obs_astro_t * obs_set) { double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, Lz, cos_delta, sin_alpha, cos_alpha; geodetic_t geodetic; geodetic.lon = qth->lon * de2ra; geodetic.lat = qth->lat * de2ra; geodetic.alt = qth->alt / 1000.0; geodetic.theta = 0; az = saz * de2ra; el = sel * de2ra; phi = geodetic.lat; theta = FMod2p(ThetaG_JD(jul_utc) + geodetic.lon); sin_theta = sin(theta); cos_theta = cos(theta); sin_phi = sin(phi); cos_phi = cos(phi); Lxh = -cos(az) * cos(el); Lyh = sin(az) * cos(el); Lzh = sin(el); Sx = sin_phi * cos_theta; Ex = -sin_theta; Zx = cos_theta * cos_phi; Sy = sin_phi * sin_theta; Ey = cos_theta; Zy = sin_theta * cos_phi; Sz = -cos_phi; Ez = 0; Zz = sin_phi; Lx = Sx * Lxh + Ex * Lyh + Zx * Lzh; Ly = Sy * Lxh + Ey * Lyh + Zy * Lzh; Lz = Sz * Lxh + Ez * Lyh + Zz * Lzh; obs_set->dec = ArcSin(Lz); /* Declination (radians) */ cos_delta = sqrt(1 - Sqr(Lz)); sin_alpha = Ly / cos_delta; cos_alpha = Lx / cos_delta; obs_set->ra = AcTan(sin_alpha, cos_alpha); /* Right Ascension (radians) */ obs_set->ra = FMod2p(obs_set->ra); } /*** MULTI PASS ***/ /** * Show details about a satellite pass. * * @param satname The name of the satellite. * @param qth Pointer to the QTH data. * @param passes List of passes to show. * @param toplevel The toplevel window or NULL. * * This function creates a dialog window with a list showing the * details of a pass. * */ void show_passes(const gchar * satname, qth_t * qth, GSList * passes, GtkWidget * toplevel) { GtkWidget *dialog; GtkWidget *list; GtkListStore *liststore; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeIter item; GtkWidget *swin; gchar *title; guint flags; guint i, num; pass_t *pass = NULL; gchar *buff; /* get columns flags */ flags = sat_cfg_get_int(SAT_CFG_INT_PRED_MULTI_COL); /* create list */ list = gtk_tree_view_new(); for (i = 0; i < MULTI_PASS_COL_NUMBER; i++) { renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "xalign", MULTI_PASS_COL_XALIGN[i], NULL); column = gtk_tree_view_column_new_with_attributes(_ (MULTI_PASS_COL_TITLE[i]), renderer, "text", i, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(list), column, -1); /* only aligns the headers */ gtk_tree_view_column_set_alignment(column, 0.5); /* set cell data function; allows to format data before rendering */ check_and_set_multi_cell_renderer(column, renderer, i); /* hide columns that have not been specified */ if (!(flags & (1 << i))) { gtk_tree_view_column_set_visible(column, FALSE); } } /* create and fill model */ liststore = gtk_list_store_new(MULTI_PASS_COL_NUMBER + 1, G_TYPE_DOUBLE, // aos time G_TYPE_DOUBLE, // tca time G_TYPE_DOUBLE, // los time G_TYPE_DOUBLE, // duration G_TYPE_DOUBLE, // aos az G_TYPE_DOUBLE, // max el G_TYPE_DOUBLE, // az @ max el G_TYPE_DOUBLE, // los az G_TYPE_INT, // orbit G_TYPE_STRING, // visibility G_TYPE_INT); // row number /* add rows to list store */ num = g_slist_length(passes); for (i = 0; i < num; i++) { pass = PASS(g_slist_nth_data(passes, i)); gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, MULTI_PASS_COL_AOS_TIME, pass->aos, MULTI_PASS_COL_TCA, pass->tca, MULTI_PASS_COL_LOS_TIME, pass->los, MULTI_PASS_COL_DURATION, (pass->los - pass->aos), MULTI_PASS_COL_AOS_AZ, pass->aos_az, MULTI_PASS_COL_MAX_EL, pass->max_el, MULTI_PASS_COL_MAX_EL_AZ, pass->maxel_az, MULTI_PASS_COL_LOS_AZ, pass->los_az, MULTI_PASS_COL_ORBIT, pass->orbit, MULTI_PASS_COL_VIS, pass->vis, MULTI_PASS_COL_NUMBER, i, -1); } /* connect model to tree view */ gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(liststore)); g_object_unref(liststore); /* store reference to passes and QTH */ g_object_set_data(G_OBJECT(list), "passes", passes); g_object_set_data(G_OBJECT(list), "qth", qth); /* mouse events => popup menu */ g_signal_connect(list, "button-press-event", G_CALLBACK(button_press_cb), NULL); g_signal_connect(list, "popup-menu", G_CALLBACK(popup_menu_cb), NULL); /* "row-activated" signal is used to catch double click events, which means a pass has been double clicked => show details */ g_signal_connect(list, "row-activated", G_CALLBACK(row_activated_cb), toplevel); /* scrolled window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), list); /* create dialog */ title = g_strdup_printf(_("Upcoming passes for %s"), satname); /* use NULL as parent to avoid conflict when using undocked windows as parents. */ dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(toplevel), GTK_DIALOG_DESTROY_WITH_PARENT, "_Print", RESPONSE_PRINT, "_Save", RESPONSE_SAVE, "_Close", GTK_RESPONSE_CLOSE, NULL); g_free(title); /* Make Close button default */ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); /* window icon */ buff = icon_file_name("gpredict-sat-list.png"); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), buff, NULL); g_free(buff); /* allow interaction with other windows */ gtk_window_set_modal(GTK_WINDOW(dialog), FALSE); g_object_set_data(G_OBJECT(dialog), "sat", (gpointer) satname); g_object_set_data(G_OBJECT(dialog), "qth", qth); g_object_set_data(G_OBJECT(dialog), "passes", passes); g_signal_connect(dialog, "response", G_CALLBACK(multi_pass_response), NULL); g_signal_connect(dialog, "destroy", G_CALLBACK(multi_pass_dialog_destroy), NULL); g_signal_connect(dialog, "delete_event", G_CALLBACK(multi_pass_dialog_delete), NULL); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), swin, TRUE, TRUE, 0); gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 300); gtk_widget_show_all(dialog); } /** * Manage button responses for multi-pass dialogues. * * @param dialog The dialog widget. * @param response The ID of the response signal, i.e. the pressed button. * @param data User data (currently NULL). * * Use sat, qth, and passes labels to obtain the relevant data * */ static void multi_pass_response(GtkWidget * dialog, gint response, gpointer data) { (void)data; switch (response) { case RESPONSE_PRINT: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: PRINT not implemented"), __func__); break; case RESPONSE_SAVE: save_passes(dialog); break; /* Close button or delete events */ default: gtk_widget_destroy(dialog); break; } } static gint multi_pass_dialog_delete(GtkWidget * dialog, GdkEvent * event, gpointer pass) { (void)dialog; (void)event; (void)pass; /* dialog will be destroyed */ return FALSE; } static void multi_pass_dialog_destroy(GtkWidget * dialog, gpointer data) { GSList *passes = (GSList *) g_object_get_data(G_OBJECT(dialog), "passes"); (void)data; free_passes(passes); gtk_widget_destroy(dialog); } /** Set cell renderer function. */ static void check_and_set_multi_cell_renderer(GtkTreeViewColumn * column, GtkCellRenderer * renderer, gint i) { switch (i) { /* general float with 2 dec. precision no extra format besides a degree char */ case MULTI_PASS_COL_AOS_AZ: case MULTI_PASS_COL_LOS_AZ: case MULTI_PASS_COL_MAX_EL: case MULTI_PASS_COL_MAX_EL_AZ: gtk_tree_view_column_set_cell_data_func(column, renderer, degree_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case MULTI_PASS_COL_AOS_TIME: case MULTI_PASS_COL_TCA: case MULTI_PASS_COL_LOS_TIME: gtk_tree_view_column_set_cell_data_func(column, renderer, time_cell_data_function, GUINT_TO_POINTER(i), NULL); break; case MULTI_PASS_COL_DURATION: gtk_tree_view_column_set_cell_data_func(column, renderer, duration_cell_data_function, GUINT_TO_POINTER(i), NULL); break; default: break; } } /* duration; convert delta t in days to HH:MM:SS */ static void duration_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); guint h, m, s; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); if (number == 0.0) { g_object_set(renderer, "text", "- N/A -", NULL); } else { /* convert julian date to seconds */ s = (guint) (number * 86400); /* extract hours */ h = (guint) floor(s / 3600); s -= 3600 * h; /* extract minutes */ m = (guint) floor(s / 60); s -= 60 * m; buff = g_strdup_printf("%02d:%02d:%02d", h, m, s); g_object_set(renderer, "text", buff, NULL); g_free(buff); } } /** * Manage "popup-menu" events. * * @param treeview The tree view in the GtkSatList widget * @param list Pointer to the GtkSatList widget. * * This function is called when the "popup-menu" signal is emitted. This * usually happens if the user presses SHJIFT-F10? It is used as a wrapper * for the function that actually creates the popup menu. */ static gboolean popup_menu_cb(GtkWidget * treeview, gpointer data) { /* if there is no selection, select the first row */ view_popup_menu(treeview, NULL, data); return TRUE; /* we handled this */ } /** * Manage button press events. * * @param treeview The tree view in the GtkSatList widget. * @param event The event received. * @param list Pointer to the GtkSatList widget. */ static gboolean button_press_cb(GtkWidget * treeview, GdkEventButton * event, gpointer data) { /* single click with the right mouse button? */ if (event->type == GDK_BUTTON_PRESS && event->button == 3) { /* optional: select row if no row is selected or only * one other row is selected (will only do something * if you set a tree selection mode as described later * in the tutorial) */ if (1) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); /* Note: gtk_tree_selection_count_selected_rows() does not * exist in gtk+-2.0, only in gtk+ >= v2.2 ! */ if (gtk_tree_selection_count_selected_rows(selection) <= 1) { GtkTreePath *path; /* Get tree path for row that was clicked */ if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), (gint) event->x, (gint) event->y, &path, NULL, NULL, NULL)) { gtk_tree_selection_unselect_all(selection); gtk_tree_selection_select_path(selection, path); gtk_tree_path_free(path); } } } /* end of optional bit */ view_popup_menu(treeview, event, data); return TRUE; /* we handled this */ } return FALSE; /* we did not handle this */ } static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gpointer data) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; guint rownum = 0; GSList *passes = NULL; pass_t *pass = NULL; qth_t *qth; (void)data; /* get selected satellite */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { /* get data */ passes = (GSList *) g_object_get_data(G_OBJECT(treeview), "passes"); qth = (qth_t *) g_object_get_data(G_OBJECT(treeview), "qth"); gtk_tree_model_get(model, &iter, MULTI_PASS_COL_NUMBER, &rownum, -1); /* get selected pass */ pass = copy_pass(PASS(g_slist_nth_data(passes, rownum))); pass_popup_menu_exec(qth, pass, event, gtk_widget_get_toplevel(treeview)); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: There is no selection; skip popup."), __FILE__, __LINE__); } } /** * Signal handler for managing double clicks in multi-pass dialog. * * @param view Pointer to the GtkTreeView object. * @param path The path of the row that was activated. * @param column The column where the activation occurred. * @param data Pointer to the toplevel window. * * This function is called when the user double clicks on a pass in the * multi-pass dialog. This will cause the pass details to be shown. */ static void row_activated_cb(GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer data) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; GtkWidget *toplevel = GTK_WIDGET(data); guint rownum = 0; GSList *passes = NULL; pass_t *pass = NULL; qth_t *qth; (void)path; (void)column; /* get selected satellite */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { /* get data */ passes = (GSList *) g_object_get_data(G_OBJECT(treeview), "passes"); qth = (qth_t *) g_object_get_data(G_OBJECT(treeview), "qth"); gtk_tree_model_get(model, &iter, MULTI_PASS_COL_NUMBER, &rownum, -1); /* get selected pass */ pass = copy_pass(PASS(g_slist_nth_data(passes, rownum))); show_pass(pass->satname, qth, pass, toplevel); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: There is no selection; skip popup."), __FILE__, __LINE__); } } gpredict/src/sat-pass-dialogs.h000066400000000000000000000132111427377236300170060ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PASS_DIALOGS_H #define SAT_PASS_DIALOGS_H 1 #include #include #include "gtk-sat-data.h" #include "predict-tools.h" /** Column definitions for multi-pass listings. */ typedef enum { MULTI_PASS_COL_AOS_TIME = 0, /*!< AOS time. */ MULTI_PASS_COL_TCA, /*!< Time of closest approach. */ MULTI_PASS_COL_LOS_TIME, /*!< LOS time. */ MULTI_PASS_COL_DURATION, /*!< Duration. */ MULTI_PASS_COL_MAX_EL, /*!< Maximum elevation. */ MULTI_PASS_COL_AOS_AZ, /*!< Azimuth at AOS. */ MULTI_PASS_COL_MAX_EL_AZ, /*!< Azimuth at max el. */ MULTI_PASS_COL_LOS_AZ, /*!< Azimuth at LOS. */ MULTI_PASS_COL_ORBIT, /*!< Orbit number. */ MULTI_PASS_COL_VIS, /*!< Visibility. */ MULTI_PASS_COL_NUMBER } multi_pass_col_t; /** Column flags for multi-pass listings. */ typedef enum { MULTI_PASS_FLAG_AOS_TIME = 1 << MULTI_PASS_COL_AOS_TIME, /*!< AOS time. */ MULTI_PASS_FLAG_TCA = 1 << MULTI_PASS_COL_TCA, /*!< Time of closest approach. */ MULTI_PASS_FLAG_LOS_TIME = 1 << MULTI_PASS_COL_LOS_TIME, /*!< LOS time. */ MULTI_PASS_FLAG_DURATION = 1 << MULTI_PASS_COL_DURATION, /*!< Duration. */ MULTI_PASS_FLAG_MAX_EL = 1 << MULTI_PASS_COL_MAX_EL, /*!< Maximum elevation. */ MULTI_PASS_FLAG_AOS_AZ = 1 << MULTI_PASS_COL_AOS_AZ, /*!< Azimuth at AOS. */ MULTI_PASS_FLAG_MAX_EL_AZ = 1 << MULTI_PASS_COL_MAX_EL_AZ, /*!< Azimuth at max el. */ MULTI_PASS_FLAG_LOS_AZ = 1 << MULTI_PASS_COL_LOS_AZ, /*!< Azimuth at LOS. */ MULTI_PASS_FLAG_ORBIT = 1 << MULTI_PASS_COL_ORBIT, /*!< Orbit number. */ MULTI_PASS_FLAG_VIS = 1 << MULTI_PASS_COL_VIS /*!< Visibility. */ } multi_pass_flag_t; /** Column definition for single-pass listings. */ typedef enum { SINGLE_PASS_COL_TIME = 0, SINGLE_PASS_COL_AZ, /*!< Azimuth. */ SINGLE_PASS_COL_EL, /*!< Elvation. */ SINGLE_PASS_COL_RA, /*!< Right Ascension. */ SINGLE_PASS_COL_DEC, /*!< Declination. */ SINGLE_PASS_COL_RANGE, /*!< Range. */ SINGLE_PASS_COL_RANGE_RATE, /*!< Range rate. */ SINGLE_PASS_COL_LAT, /*!< Latitude. */ SINGLE_PASS_COL_LON, /*!< Longitude. */ SINGLE_PASS_COL_SSP, /*!< Sub satellite point grid square */ SINGLE_PASS_COL_FOOTPRINT, /*!< Footprint. */ SINGLE_PASS_COL_ALT, /*!< Altitude. */ SINGLE_PASS_COL_VEL, /*!< Velocity. */ SINGLE_PASS_COL_DOPPLER, /*!< Doppler shift at 100 MHz. */ SINGLE_PASS_COL_LOSS, /*!< Path Loss at 100 MHz. */ SINGLE_PASS_COL_DELAY, /*!< Signal delay */ SINGLE_PASS_COL_MA, /*!< Mean Anomaly. */ SINGLE_PASS_COL_PHASE, /*!< Phase. */ SINGLE_PASS_COL_VIS, /*!< Visibility. */ SINGLE_PASS_COL_NUMBER } single_pass_col_t; /** Column flags for single-pass listings. */ typedef enum { SINGLE_PASS_FLAG_TIME = 1 << SINGLE_PASS_COL_TIME, SINGLE_PASS_FLAG_AZ = 1 << SINGLE_PASS_COL_AZ, /*!< Azimuth. */ SINGLE_PASS_FLAG_EL = 1 << SINGLE_PASS_COL_EL, /*!< Elvation. */ SINGLE_PASS_FLAG_RA = 1 << SINGLE_PASS_COL_RA, /*!< Right Ascension. */ SINGLE_PASS_FLAG_DEC = 1 << SINGLE_PASS_COL_DEC, /*!< Declination. */ SINGLE_PASS_FLAG_RANGE = 1 << SINGLE_PASS_COL_RANGE, /*!< Range. */ SINGLE_PASS_FLAG_RANGE_RATE = 1 << SINGLE_PASS_COL_RANGE_RATE, /*!< Range rate. */ SINGLE_PASS_FLAG_LAT = 1 << SINGLE_PASS_COL_LAT, /*!< Latitude. */ SINGLE_PASS_FLAG_LON = 1 << SINGLE_PASS_COL_LON, /*!< Longitude. */ SINGLE_PASS_FLAG_SSP = 1 << SINGLE_PASS_COL_SSP, /*!< Sub satellite point grid square */ SINGLE_PASS_FLAG_FOOTPRINT = 1 << SINGLE_PASS_COL_FOOTPRINT, /*!< Footprint. */ SINGLE_PASS_FLAG_ALT = 1 << SINGLE_PASS_COL_ALT, /*!< Altitude. */ SINGLE_PASS_FLAG_VEL = 1 << SINGLE_PASS_COL_VEL, /*!< Velocity. */ SINGLE_PASS_FLAG_DOPPLER = 1 << SINGLE_PASS_COL_DOPPLER, /*!< Doppler shift at 100 MHz. */ SINGLE_PASS_FLAG_LOSS = 1 << SINGLE_PASS_COL_LOSS, /*!< Path Loss at 100 MHz. */ SINGLE_PASS_FLAG_DELAY = 1 << SINGLE_PASS_COL_DELAY, /*!< Signal delay */ SINGLE_PASS_FLAG_MA = 1 << SINGLE_PASS_COL_MA, /*!< Mean Anomaly. */ SINGLE_PASS_FLAG_PHASE = 1 << SINGLE_PASS_COL_PHASE, /*!< Phase. */ SINGLE_PASS_FLAG_VIS = 1 << SINGLE_PASS_COL_VIS /*!< Visibility. */ } single_pass_flag_t; void show_pass(const gchar * satname, qth_t * qth, pass_t * pass, GtkWidget * toplevel); void show_passes(const gchar * satname, qth_t * qth, GSList * passes, GtkWidget * toplevel); #endif gpredict/src/sat-pref-conditions.c000066400000000000000000000352121427377236300175230ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pref-conditions.h" static GtkWidget *tzero; static GtkWidget *minel; static GtkWidget *numpass; static GtkWidget *lookahead; static GtkWidget *res; static GtkWidget *nument; static GtkWidget *twspin; static gboolean dirty = FALSE; /* used to check whether any changes have occurred */ static gboolean reset = FALSE; void sat_pref_conditions_cancel() { dirty = FALSE; reset = FALSE; } void sat_pref_conditions_ok() { if (dirty) { sat_cfg_set_int(SAT_CFG_INT_PRED_MIN_EL, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (minel))); sat_cfg_set_int(SAT_CFG_INT_PRED_NUM_PASS, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (numpass))); sat_cfg_set_int(SAT_CFG_INT_PRED_LOOK_AHEAD, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (lookahead))); sat_cfg_set_int(SAT_CFG_INT_PRED_RESOLUTION, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (res))); sat_cfg_set_int(SAT_CFG_INT_PRED_NUM_ENTRIES, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (nument))); sat_cfg_set_int(SAT_CFG_INT_PRED_TWILIGHT_THLD, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (twspin))); sat_cfg_set_bool(SAT_CFG_BOOL_PRED_USE_REAL_T0, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (tzero))); dirty = FALSE; } else if (reset) { sat_cfg_reset_int(SAT_CFG_INT_PRED_MIN_EL); sat_cfg_reset_int(SAT_CFG_INT_PRED_NUM_PASS); sat_cfg_reset_int(SAT_CFG_INT_PRED_LOOK_AHEAD); sat_cfg_reset_int(SAT_CFG_INT_PRED_RESOLUTION); sat_cfg_reset_int(SAT_CFG_INT_PRED_NUM_ENTRIES); sat_cfg_reset_int(SAT_CFG_INT_PRED_TWILIGHT_THLD); sat_cfg_reset_bool(SAT_CFG_BOOL_PRED_USE_REAL_T0); reset = FALSE; } } static void spin_changed_cb(GtkWidget * spinner, gpointer data) { (void)spinner; (void)data; dirty = TRUE; } static void reset_cb(GtkWidget * button, gpointer data) { (void)button; (void)data; /* get defaults */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(minel), sat_cfg_get_int_def(SAT_CFG_INT_PRED_MIN_EL)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(numpass), sat_cfg_get_int_def(SAT_CFG_INT_PRED_NUM_PASS)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lookahead), sat_cfg_get_int_def (SAT_CFG_INT_PRED_LOOK_AHEAD)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(res), sat_cfg_get_int_def (SAT_CFG_INT_PRED_RESOLUTION)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(nument), sat_cfg_get_int_def (SAT_CFG_INT_PRED_NUM_ENTRIES)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(twspin), sat_cfg_get_int_def (SAT_CFG_INT_PRED_TWILIGHT_THLD)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tzero), sat_cfg_get_bool_def (SAT_CFG_BOOL_PRED_USE_REAL_T0)); /* reset flags */ reset = TRUE; dirty = FALSE; } static void create_reset_button(GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(button, _("Reset settings to the default values.")); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_conditions_create() { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; dirty = FALSE; reset = FALSE; table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* minimum elevation */ label = gtk_label_new(_("Minimum elevation")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); minel = gtk_spin_button_new_with_range(1, 90, 1); gtk_widget_set_tooltip_text(minel, _("Elevation threshold for passes.\n" "Passes with maximum elevation below this limit " "will be omitted")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(minel), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(minel), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(minel), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minel), sat_cfg_get_int(SAT_CFG_INT_PRED_MIN_EL)); g_signal_connect(G_OBJECT(minel), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), minel, 1, 0, 1, 1); label = gtk_label_new(_("[deg]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 1, 3, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Multiple Passes:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); /* number of passes */ label = gtk_label_new(_("Number of passes to predict")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); numpass = gtk_spin_button_new_with_range(5, 50, 1); gtk_widget_set_tooltip_text(numpass, _("The maximum number of passes to predict.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(numpass), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(numpass), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(numpass), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(numpass), sat_cfg_get_int(SAT_CFG_INT_PRED_NUM_PASS)); g_signal_connect(G_OBJECT(numpass), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), numpass, 1, 3, 1, 1); /* lookahead */ label = gtk_label_new(_("Passes should occur within")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); lookahead = gtk_spin_button_new_with_range(1, 14, 1); gtk_widget_set_tooltip_text(lookahead, _("Only passes that occur within the " "specified number of days will be " "shown.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lookahead), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(lookahead), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(lookahead), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lookahead), sat_cfg_get_int(SAT_CFG_INT_PRED_LOOK_AHEAD)); g_signal_connect(G_OBJECT(lookahead), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), lookahead, 1, 4, 1, 1); label = gtk_label_new(_("[days]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 4, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 5, 3, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Pass Details:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); /* time resolution */ label = gtk_label_new(_("Time resolution")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 7, 1, 1); res = gtk_spin_button_new_with_range(1, 600, 1); gtk_widget_set_tooltip_text(res, _("Gpredict will try to show the pass details " "with the specified time resolution.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(res), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(res), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(res), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(res), sat_cfg_get_int(SAT_CFG_INT_PRED_RESOLUTION)); g_signal_connect(G_OBJECT(res), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), res, 1, 7, 1, 1); label = gtk_label_new(_("[sec]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 7, 1, 1); /* number of entries */ label = gtk_label_new(_("Number of entries")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 8, 1, 1); nument = gtk_spin_button_new_with_range(10, 200, 1); gtk_widget_set_tooltip_text(nument, _("Gpredict will try to keep the number " "of rows in the detailed prediction " "within this limit.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(nument), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(nument), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(nument), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(nument), sat_cfg_get_int(SAT_CFG_INT_PRED_NUM_ENTRIES)); g_signal_connect(G_OBJECT(nument), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), nument, 1, 8, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 9, 3, 1); /* satellite visibility */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Satellite Visibility:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 10, 1, 1); /* twilight threshold */ label = gtk_label_new(_("Twilight threshold")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 11, 1, 1); twspin = gtk_spin_button_new_with_range(-18, 0, 1); gtk_widget_set_tooltip_text(twspin, _("Satellites are only considered " "visible if the elevation of the Sun " "is below the specified threshold.\n" " \342\200\242 Astronomical: -18\302\260 to -12\302\260\n" " \342\200\242 Nautical: -12\302\260 to -6\302\260\n" " \342\200\242 Civil: -6\302\260 to 0\302\260")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(twspin), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(twspin), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(twspin), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(twspin), sat_cfg_get_int(SAT_CFG_INT_PRED_TWILIGHT_THLD)); g_signal_connect(G_OBJECT(twspin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), twspin, 1, 11, 1, 1); label = gtk_label_new(_("[deg]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 11, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 12, 3, 1); /* T0 for predictions */ tzero = gtk_check_button_new_with_label(_("Always use real time for " "pass predictions")); gtk_widget_set_tooltip_text(tzero, _("Check this box if you want Gpredict " "to always use " "the current (real) time as starting time when predicting " "future satellite passes.\n\n" "If you leave the box unchecked and the time controller is " "active, Gpredict will use the time from the time controller " "as starting time for predicting satellite passes.")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tzero), sat_cfg_get_bool (SAT_CFG_BOOL_PRED_USE_REAL_T0)); g_signal_connect(G_OBJECT(tzero), "toggled", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), tzero, 0, 13, 3, 1); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(GTK_BOX(vbox)); return vbox; } gpredict/src/sat-pref-conditions.h000066400000000000000000000003311427377236300175220ustar00rootroot00000000000000#ifndef SAT_PREF_CONDITIONS_H #define SAT_PREF_CONDITIONS_H 1 GtkWidget *sat_pref_conditions_create(void); void sat_pref_conditions_cancel(void); void sat_pref_conditions_ok(void); #endif gpredict/src/sat-pref-debug.c000066400000000000000000000200561427377236300164400ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "gpredict-utils.h" #include "sat-cfg.h" #include "sat-pref-debug.h" #define SEC_PER_DAY 86400 #define SEC_PER_WEEK 604800 #define SEC_PER_MONTH 18144000 static GtkWidget *level; static GtkWidget *age; static gboolean dirty = FALSE; static gboolean reset = FALSE; /* Select proper log file age in combo box. */ static void select_age(void) { gint num = sat_cfg_get_int(SAT_CFG_INT_LOG_CLEAN_AGE); switch (num) { case SEC_PER_DAY: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 1); break; case SEC_PER_WEEK: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 2); break; case SEC_PER_MONTH: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 3); break; default: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 0); } } /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_debug_cancel() { } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_debug_ok() { gint num = gtk_combo_box_get_active(GTK_COMBO_BOX(age)); if (dirty) { /* store new values */ sat_cfg_set_int(SAT_CFG_INT_LOG_LEVEL, gtk_combo_box_get_active(GTK_COMBO_BOX(level))); switch (num) { case 1: sat_cfg_set_int(SAT_CFG_INT_LOG_CLEAN_AGE, SEC_PER_DAY); break; case 2: sat_cfg_set_int(SAT_CFG_INT_LOG_CLEAN_AGE, SEC_PER_WEEK); break; case 3: sat_cfg_set_int(SAT_CFG_INT_LOG_CLEAN_AGE, SEC_PER_MONTH); break; default: sat_cfg_set_int(SAT_CFG_INT_LOG_CLEAN_AGE, 0); } } else if (reset) { /* reset values */ sat_cfg_reset_int(SAT_CFG_INT_LOG_LEVEL); sat_cfg_reset_int(SAT_CFG_INT_LOG_CLEAN_AGE); } dirty = FALSE; reset = FALSE; } static void state_change_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; dirty = TRUE; } static void reset_cb(GtkWidget * button, gpointer data) { gint num = sat_cfg_get_int_def(SAT_CFG_INT_LOG_CLEAN_AGE); (void)button; (void)data; switch (num) { case SEC_PER_DAY: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 1); break; case SEC_PER_WEEK: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 2); break; case SEC_PER_MONTH: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 3); break; default: gtk_combo_box_set_active(GTK_COMBO_BOX(age), 0); } gtk_combo_box_set_active(GTK_COMBO_BOX(level), sat_cfg_get_int_def(SAT_CFG_INT_LOG_LEVEL)); reset = TRUE; dirty = FALSE; } GtkWidget *sat_pref_debug_create() { GtkWidget *vbox; /* vbox containing the list part and the details part */ GtkWidget *hbox; GtkWidget *rbut; GtkWidget *label; GtkWidget *butbox; gchar *msg; gchar *confdir; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_set_spacing(GTK_BOX(vbox), 10); /* debug level */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); label = gtk_label_new(_("Debug level:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); level = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(level), _("Level 0: None")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(level), _("Level 1: Error")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(level), _("Level 2: Warning")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(level), _("Level 3: Info")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(level), _("Level 4: Debug")); gtk_combo_box_set_active(GTK_COMBO_BOX(level), sat_cfg_get_int(SAT_CFG_INT_LOG_LEVEL)); g_signal_connect(G_OBJECT(level), "realize", G_CALLBACK(gpredict_set_combo_tooltips), _("Select the debug level. The higher the level, " "the more messages will be logged.")); g_signal_connect(G_OBJECT(level), "changed", G_CALLBACK(state_change_cb), NULL); gtk_box_pack_start(GTK_BOX(hbox), level, FALSE, FALSE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* clean frequency */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); label = gtk_label_new(_("Delete log files older than:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); age = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(age), _("Always delete")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(age), _("1 day")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(age), _("1 week")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(age), _("1 month")); select_age(); g_signal_connect(G_OBJECT(age), "realize", G_CALLBACK(gpredict_set_combo_tooltips), _("Select how often gpredict should delete " "old log files.")); g_signal_connect(G_OBJECT(age), "changed", G_CALLBACK(state_change_cb), NULL); gtk_box_pack_start(GTK_BOX(hbox), age, FALSE, FALSE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* separator */ gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); /* info label */ confdir = get_user_conf_dir(); msg = g_strdup_printf(_ ("Gpredict stores all run-time messages in the %s%slogs%s\n" "directory. The current log file is called gpredict.log and the file is\n" "always kept until the next execution, so that you can examine it in case\n" "of a failure. If old log files are kept, they are called gpredict-XYZ.log\n" "where XYZ is a unique timestamp."), confdir, G_DIR_SEPARATOR_S, G_DIR_SEPARATOR_S); label = gtk_label_new(msg); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); g_free(msg); /* reset button */ rbut = gtk_button_new_with_label(_("Reset")); gtk_widget_set_tooltip_text(rbut, _("Reset settings to the default values.")); g_signal_connect(G_OBJECT(rbut), "clicked", G_CALLBACK(reset_cb), NULL); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), rbut, FALSE, TRUE, 10); gtk_box_pack_end(GTK_BOX(vbox), butbox, FALSE, TRUE, 0); return vbox; } gpredict/src/sat-pref-debug.h000066400000000000000000000003001427377236300164330ustar00rootroot00000000000000#ifndef SAT_PREF_DEBUG_H #define SAT_PREF_DEBUG_H 1 GtkWidget *sat_pref_debug_create(void); void sat_pref_debug_cancel(void); void sat_pref_debug_ok(void); #endif gpredict/src/sat-pref-formats.c000066400000000000000000000173641427377236300170350ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "sat-cfg.h" #include "sat-pref-formats.h" #include "sat-pref-qth.h" /* *INDENT-OFF* */ static const gchar *tztips = N_("Display local time instead of UTC. Note: The local time is " "that of your operating system and not the local time at the " "location, which you select as " "tracking reference."); static const gchar *tftips = N_("Enter a format string using the following codes:\n\n" "\t%Y\tYear with century.\n" "\t%m\tMonth (01-12).\n" "\t%d\tDay of the month (01-31).\n" "\t%j\tDay of the year (001-366).\n" "\t%H\tHour (00-23).\n" "\t%M\tMinute (00-59).\n" "\t%S\tSeconds (00-59).\n\n" "See the user manual for more codes and examples."); static const gchar *nsewtips = N_("Checking this box will cause geographical " "coordinates to be displayed using a suffix " "instead of sign (eg. 23.43\302\260W " "instead of -23.43\302\260)."); static const gchar *imptips = N_("Display distances using Imperial units, for " "example miles instead of kilometres."); /* *INDENT-ON* */ static GtkWidget *tzcheck; /* "time zone" check button */ static GtkWidget *tfentry; /* time format entry */ static GtkWidget *tflabel; /* time format label, preview */ static GtkWidget *tfreset; /* time format reset button */ static GtkWidget *nsewcheck; /* N/S/W/E check button */ static GtkWidget *impcheck; /* Use imperial units */ static guint timer; static gboolean useimporg; /* original value for use imperial */ static gboolean tfprev_cb(gpointer data); static void systog_cb(GtkToggleButton * togglebutton, gpointer user_data); static void reset_cb(GtkWidget * button, gpointer data); /** Create and initialise widgets for number formats tab. */ GtkWidget *sat_pref_formats_create() { GtkWidget *vbox, *tfbox; gchar *text; /* use local time */ tzcheck = gtk_check_button_new_with_label(_("Show local time instead of UTC.")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tzcheck), sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)); gtk_widget_set_tooltip_text(tzcheck, _(tztips)); /* time format */ tfentry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(tfentry), TIME_FORMAT_MAX_LENGTH); gtk_widget_set_tooltip_text(tfentry, _(tftips)); text = sat_cfg_get_str(SAT_CFG_STR_TIME_FORMAT); gtk_entry_set_text(GTK_ENTRY(tfentry), text); g_free(text); tflabel = gtk_label_new("--/--/-- --:--:--"); /* periodic update of preview label */ timer = g_timeout_add(1000, tfprev_cb, NULL); /* reset button */ tfreset = gtk_button_new_with_label(_("Reset")); g_signal_connect(tfreset, "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(tfreset, _("Reset to default value")); tfbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_set_homogeneous(GTK_BOX(tfbox), FALSE); gtk_box_pack_start(GTK_BOX(tfbox), gtk_label_new(_("Time format:")), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(tfbox), tfentry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(tfbox), tflabel, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(tfbox), tfreset, FALSE, FALSE, 5); /* N/S/W/E */ nsewcheck = gtk_check_button_new_with_label(_ ("Use N/S/E/W for geographical coordinates.")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nsewcheck), sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)); gtk_widget_set_tooltip_text(nsewcheck, _(nsewtips)); /* unit */ useimporg = sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL); impcheck = gtk_check_button_new_with_label(_ ("Use Imperial units instead of Metric.")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(impcheck), useimporg); gtk_widget_set_tooltip_text(impcheck, _(imptips)); /* connect sat-pref-qth hook */ g_signal_connect(impcheck, "toggled", G_CALLBACK(systog_cb), NULL); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), tzcheck, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), tfbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), nsewcheck, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), impcheck, FALSE, FALSE, 0); return vbox; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_formats_cancel() { /* restore imperial setting to it's original value */ sat_cfg_set_bool(SAT_CFG_BOOL_USE_IMPERIAL, useimporg); g_source_remove(timer); } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_formats_ok() { g_source_remove(timer); sat_cfg_set_bool(SAT_CFG_BOOL_USE_LOCAL_TIME, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tzcheck))); sat_cfg_set_str(SAT_CFG_STR_TIME_FORMAT, gtk_entry_get_text(GTK_ENTRY(tfentry))); sat_cfg_set_bool(SAT_CFG_BOOL_USE_NSEW, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (nsewcheck))); sat_cfg_set_bool(SAT_CFG_BOOL_USE_IMPERIAL, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (impcheck))); } static gboolean tfprev_cb(gpointer data) { const gchar *fmtstr; GDateTime *now; gchar *text; (void)data; fmtstr = gtk_entry_get_text(GTK_ENTRY(tfentry)); /* get either local time or UTC depending on check box */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tzcheck))) now = g_date_time_new_now_local(); else now = g_date_time_new_now_utc(); text = g_date_time_format(now, fmtstr); gtk_label_set_text(GTK_LABEL(tflabel), text); g_date_time_unref(now); g_free(text); return TRUE; } /** Manage system toggle button signals */ static void systog_cb(GtkToggleButton * togglebutton, gpointer user_data) { (void)user_data; sat_cfg_set_bool(SAT_CFG_BOOL_USE_IMPERIAL, gtk_toggle_button_get_active(togglebutton)); sat_pref_qth_sys_changed(gtk_toggle_button_get_active(togglebutton)); } /** Reset time format string to default */ static void reset_cb(GtkWidget * button, gpointer data) { gchar *fmtstr; (void)button; (void)data; fmtstr = sat_cfg_get_str_def(SAT_CFG_STR_TIME_FORMAT); gtk_entry_set_text(GTK_ENTRY(tfentry), fmtstr); g_free(fmtstr); } gpredict/src/sat-pref-formats.h000066400000000000000000000003121427377236300170230ustar00rootroot00000000000000#ifndef SAT_PREF_FORMATS_H #define SAT_PREF_FORMATS_H 1 GtkWidget *sat_pref_formats_create(void); void sat_pref_formats_cancel(void); void sat_pref_formats_ok(void); #endif gpredict/src/sat-pref-general.c000066400000000000000000000051601427377236300167660ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-pref-debug.h" #include "sat-pref-formats.h" #include "sat-pref-general.h" #include "sat-pref-qth.h" #include "sat-pref-tle.h" /** * Create and initialise widgets for the general prefs tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_general_create() { GtkWidget *nbook; nbook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_formats_create(), gtk_label_new(_("Number Formats"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_qth_create(), gtk_label_new(_("Ground Stations"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_tle_create(), gtk_label_new(_("TLE Update"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_debug_create(), gtk_label_new(_("Message Logs"))); return nbook; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_general_cancel() { sat_pref_formats_cancel(); sat_pref_qth_cancel(); sat_pref_tle_cancel(); sat_pref_debug_cancel(); } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_general_ok() { sat_pref_formats_ok(); sat_pref_qth_ok(); sat_pref_tle_ok(); sat_pref_debug_ok(); } gpredict/src/sat-pref-general.h000066400000000000000000000003121427377236300167650ustar00rootroot00000000000000#ifndef SAT_PREF_GENERAL_H #define SAT_PREF_GENERAL_H 1 GtkWidget *sat_pref_general_create(void); void sat_pref_general_cancel(void); void sat_pref_general_ok(void); #endif gpredict/src/sat-pref-interfaces.c000066400000000000000000000043051427377236300174740ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2015 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pref-interfaces.h" #include "sat-pref-rig.h" #include "sat-pref-rot.h" /** * Create and initialise widgets for the hardware interfaces prefs tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_interfaces_create() { GtkWidget *nbook; nbook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_rig_create(), gtk_label_new(_("Radios"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_rot_create(), gtk_label_new(_("Rotators"))); return nbook; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_interfaces_cancel() { sat_pref_rig_cancel(); sat_pref_rot_cancel(); } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_interfaces_ok() { sat_pref_rig_ok(); sat_pref_rot_ok(); } gpredict/src/sat-pref-interfaces.h000066400000000000000000000023461427377236300175040ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2015 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PREF_INTERFACES_H #define SAT_PREF_INTERFACES_H 1 GtkWidget *sat_pref_interfaces_create(void); void sat_pref_interfaces_cancel(void); void sat_pref_interfaces_ok(void); #endif gpredict/src/sat-pref-layout.c000066400000000000000000000410341427377236300166660ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "config-keys.h" #include "gtk-sat-module.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-layout.h" static gboolean dirty = FALSE; static gboolean reset = FALSE; /* check boxes for window positioning */ static GtkWidget *mwin, *mod, *state; /* Text entry for layout string */ static GtkWidget *gridstr; static gulong gridstr_sigid; /* layout selector combo */ static GtkWidget *selector; /* layout thumbnail */ static GtkWidget *thumb; /* the number of predefined layouts (+1 for custom). */ #define PREDEF_NUM 10 /* Predefined layouts. */ gchar *predef_layout[PREDEF_NUM][3] = { {"1;0;2;0;1;2;0;1;1;2;3;1;2;1;2", N_("World map, polar and single sat"), "gpredict-layout-00.png"}, {"1;0;2;0;1", N_("World map"), "gpredict-layout-01.png"}, {"0;0;2;0;1", N_("Table"), "gpredict-layout-02.png"}, {"1;0;2;0;2;0;0;2;2;3", N_("World map and table"), "gpredict-layout-03.png"}, {"2;0;1;0;1;3;1;2;0;1", N_("Polar and single sat"), "gpredict-layout-04.png"}, {"2;0;1;0;1;4;1;2;0;1", N_("Polar and upcoming passes"), "gpredict-layout-05.png"}, {"1;0;3;0;4;0;0;3;4;6;2;0;1;6;8;3;1;2;6;8;4;2;3;6;8", N_("All views (narrow)"), "gpredict-layout-06.png"}, {"1;0;3;0;3;0;0;3;3;4;2;3;4;0;2;4;3;4;2;3;3;3;4;3;4", N_("All views (wide)"), "gpredict-layout-07.png"}, {"1;0;3;0;3;0;0;3;3;4;2;3;4;0;2;3;3;4;2;4", N_("Map, table, polar and single sat (wide)"), "gpredict-layout-08.png"}, {"", N_("Custom"), "gpredict-layout-99.png"} }; /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_layout_cancel(GKeyFile * cfg) { gchar *str; (void)cfg; str = sat_cfg_get_str(SAT_CFG_STR_MODULE_GRID); gtk_entry_set_text(GTK_ENTRY(gridstr), str); g_free(str); dirty = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_layout_ok(GKeyFile * cfg) { if (dirty) { /* we have new settings */ if (cfg != NULL) { g_key_file_set_string(cfg, MOD_CFG_GLOBAL_SECTION, MOD_CFG_GRID, gtk_entry_get_text(GTK_ENTRY(gridstr))); } else { sat_cfg_set_str(SAT_CFG_STR_MODULE_GRID, gtk_entry_get_text(GTK_ENTRY(gridstr))); sat_cfg_set_bool(SAT_CFG_BOOL_MAIN_WIN_POS, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (mwin))); sat_cfg_set_bool(SAT_CFG_BOOL_MOD_WIN_POS, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (mod))); sat_cfg_set_bool(SAT_CFG_BOOL_MOD_STATE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (state))); } } else if (reset) { /* we have to reset the values to global or default settings */ if (cfg == NULL) { /* layout */ sat_cfg_reset_str(SAT_CFG_STR_MODULE_GRID); /* window placement */ sat_cfg_reset_bool(SAT_CFG_BOOL_MAIN_WIN_POS); sat_cfg_reset_bool(SAT_CFG_BOOL_MOD_WIN_POS); sat_cfg_reset_bool(SAT_CFG_BOOL_MOD_STATE); } else { g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_GLOBAL_SECTION, MOD_CFG_GRID, NULL); } } dirty = FALSE; reset = FALSE; } /** * Get thumbnail icon filename from selection ID. * * @param sel The ID of the predefined layout or PREDEF_NUM-1 for custom. * @return A newly allocated string containing the full path of the icon. * * This function generates an icon file name from the ID of a predefined * layout. PREDEF_NUM-1 corresponds to the last entry in predef_layout[][], * which is the custom layout. The returned string should be freed when no * longer needed. * * The function checks that sel is within valid range (0...PREDEF_NUM-1). If * sel is outside the range, the custom layout icon is returned. */ static gchar *thumb_file_from_sel(guint sel) { gchar *fname; if (sel < PREDEF_NUM) fname = icon_file_name(predef_layout[sel][2]); else fname = icon_file_name(predef_layout[PREDEF_NUM - 1][2]); return fname; } static void layout_code_changed(GtkWidget * widget, gpointer data) { gchar *entry, *end, *j; gint len, pos; (void)data; /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { int c = *j; if (g_ascii_isdigit(c) || c == ';') { dirty = TRUE; /* ensure combo box is set to custom */ if (gtk_combo_box_get_active(GTK_COMBO_BOX(selector)) != PREDEF_NUM - 1) { gtk_combo_box_set_active(GTK_COMBO_BOX(selector), PREDEF_NUM - 1); } } else { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } } /* Callback to manage layout selection via combo box */ static void layout_selected_cb(GtkComboBox * combo, gpointer data) { gint idx; gchar *icon; (void)data; idx = gtk_combo_box_get_active(combo); if (idx < PREDEF_NUM) { dirty = TRUE; /* update icon */ icon = thumb_file_from_sel(idx); gtk_image_set_from_file(GTK_IMAGE(thumb), icon); g_free(icon); /* update layout code, unless Custom is selected */ if (idx < PREDEF_NUM - 1) { g_signal_handler_block(gridstr, gridstr_sigid); gtk_entry_set_text(GTK_ENTRY(gridstr), predef_layout[idx][0]); g_signal_handler_unblock(gridstr, gridstr_sigid); gtk_widget_set_sensitive(gridstr, FALSE); } else { gtk_widget_set_sensitive(gridstr, TRUE); } } } /* Create layout selector. */ static void create_layout_selector(GKeyFile * cfg, GtkGrid * table) { GtkWidget *label; gchar *buffer; gchar *thumbfile; guint i, sel = PREDEF_NUM - 1; /* get the current settings */ if (cfg != NULL) { buffer = mod_cfg_get_str(cfg, MOD_CFG_GLOBAL_SECTION, MOD_CFG_GRID, SAT_CFG_STR_MODULE_GRID); } else { buffer = sat_cfg_get_str(SAT_CFG_STR_MODULE_GRID); } /* create header */ label = gtk_label_new(_("Select layout:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(table, label, 0, 0, 1, 1); /* layout selector */ selector = gtk_combo_box_text_new(); gtk_grid_attach(table, selector, 1, 0, 2, 1); for (i = 0; i < PREDEF_NUM; i++) { /* append default layout string to combo box */ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(selector), _(predef_layout[i][1])); /* check if this layout corresponds to the settings */ if (!g_ascii_strcasecmp(buffer, predef_layout[i][0])) { sel = i; } } gtk_combo_box_set_active(GTK_COMBO_BOX(selector), sel); g_signal_connect(selector, "changed", G_CALLBACK(layout_selected_cb), NULL); /* layout preview thumbnail */ thumbfile = thumb_file_from_sel(sel); thumb = gtk_image_new_from_file(thumbfile); g_free(thumbfile); gtk_grid_attach(table, thumb, 1, 1, 2, 1); /* layout string */ label = gtk_label_new(_("Layout code:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(table, label, 0, 2, 1, 1); gridstr = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(gridstr), buffer); g_free(buffer); gtk_widget_set_tooltip_text(gridstr, _("This entry holds the layout code for the " "module.\n" "Consult the user manual for how to create " "custom layouts using layout codes.")); /* disable if it is a predefined layout */ if (sel < PREDEF_NUM - 1) { gtk_widget_set_sensitive(gridstr, FALSE); } /* connect changed signal handler */ gridstr_sigid = g_signal_connect(gridstr, "changed", G_CALLBACK(layout_code_changed), NULL); gtk_grid_attach(table, gridstr, 1, 2, 3, 1); } /* Toggle window positioning settings. */ static void window_pos_toggle_cb(GtkWidget * toggle, gpointer data) { (void)toggle; (void)data; dirty = TRUE; } /* window placement widgets */ static void create_window_placement(GtkBox * vbox) { GtkWidget *label; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Window Placements:")); gtk_box_pack_start(vbox, label, FALSE, FALSE, 0); /* main window setting */ mwin = gtk_check_button_new_with_label(_("Restore position of main window")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mwin), sat_cfg_get_bool(SAT_CFG_BOOL_MAIN_WIN_POS)); gtk_widget_set_tooltip_text(mwin, _ ("If you check this button, gpredict will try " "to place the main window at the position it was " "during the last session.\n" "Note that window managers can ignore this request.")); g_signal_connect(G_OBJECT(mwin), "toggled", G_CALLBACK(window_pos_toggle_cb), NULL); gtk_box_pack_start(vbox, mwin, FALSE, FALSE, 0); /* module window setting */ mod = gtk_check_button_new_with_label(_ ("Restore position of module windows")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mod), sat_cfg_get_bool(SAT_CFG_BOOL_MOD_WIN_POS)); gtk_widget_set_tooltip_text(mod, _ ("If you check this button, gpredict will try " "to place the module windows at the position " "they were the last time.\n" "Note that window managers can ignore this request.")); g_signal_connect(G_OBJECT(mod), "toggled", G_CALLBACK(window_pos_toggle_cb), NULL); gtk_box_pack_start(vbox, mod, FALSE, FALSE, 0); /* module state */ state = gtk_check_button_new_with_label(_ ("Restore the state of modules when reopened (docked or window)")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state), sat_cfg_get_bool(SAT_CFG_BOOL_MOD_STATE)); gtk_widget_set_tooltip_text(state, _("If you check this button, gpredict will " "restore the states of the modules from the last time they were used.")); g_signal_connect(G_OBJECT(state), "toggled", G_CALLBACK(window_pos_toggle_cb), NULL); gtk_box_pack_start(vbox, state, FALSE, FALSE, 0); } /* * Reset settings. * * @param button The RESET button. * @param cfg Pointer to the module config or NULL in global mode. * * This function is called when the user clicks on the RESET button. In global mode * (when cfg = NULL) the function will reset the settings to the efault values, while * in "local" mode (when cfg != NULL) the function will reset the module settings to * the global settings. This is done by removing the corresponding key from the GKeyFile. */ static void reset_cb(GtkWidget * button, gpointer cfg) { guint i, sel = PREDEF_NUM - 1; gchar *buffer; (void)button; /* views */ if (cfg == NULL) { /* global mode, get defaults */ buffer = sat_cfg_get_str_def(SAT_CFG_STR_MODULE_GRID); gtk_entry_set_text(GTK_ENTRY(gridstr), buffer); } else { /* local mode, get global value */ buffer = sat_cfg_get_str(SAT_CFG_STR_MODULE_GRID); gtk_entry_set_text(GTK_ENTRY(gridstr), buffer); } /* findcombo box setting */ for (i = 0; i < PREDEF_NUM; i++) { /* check if this layout corresponds to the settings */ if (!g_ascii_strcasecmp(buffer, predef_layout[i][0])) { sel = i; } } gtk_combo_box_set_active(GTK_COMBO_BOX(selector), sel); g_free(buffer); /* window placement settings */ if (cfg == NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mwin), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAIN_WIN_POS)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mod), sat_cfg_get_bool_def (SAT_CFG_BOOL_MOD_WIN_POS)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state), sat_cfg_get_bool_def (SAT_CFG_BOOL_MOD_STATE)); } /* reset flags */ reset = TRUE; dirty = FALSE; } static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _ ("Reset settings to the default values.")); } else { gtk_widget_set_tooltip_text(button, _ ("Reset module settings to the global values.")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_layout_create(GKeyFile * cfg) { GtkWidget *table; GtkWidget *vbox; /* create the table */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* layout selector */ create_layout_selector(cfg, GTK_GRID(table)); /* separator */ gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 3, 5, 1); /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, TRUE, 0); /* window placement */ if (cfg == NULL) create_window_placement(GTK_BOX(vbox)); /* create RESET button */ create_reset_button(cfg, GTK_BOX(vbox)); /* reset flags */ dirty = FALSE; reset = FALSE; return vbox;; } gpredict/src/sat-pref-layout.h000066400000000000000000000003431427377236300166710ustar00rootroot00000000000000#ifndef SAT_PREF_LAYOUT_H #define SAT_PREF_LAYOUT_H 1 GtkWidget *sat_pref_layout_create(GKeyFile * cfg); void sat_pref_layout_cancel(GKeyFile * cfg); void sat_pref_layout_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-list-view.c000066400000000000000000000137271427377236300173040ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gtk-sat-list.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-pref-list-view.h" #define Y0 1 /* First row where checkboxes are placed */ #define COLUMNS 3 /* Number of columns in the table */ /* column selector */ static GtkWidget *check[SAT_LIST_COL_NUMBER]; extern const gchar *SAT_LIST_COL_TITLE[]; extern const gchar *SAT_LIST_COL_HINT[]; static gboolean dirty = FALSE; static gboolean reset = FALSE; static guint startflags; static guint flags; /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_list_view_cancel(GKeyFile * cfg) { (void)cfg; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_list_view_ok(GKeyFile * cfg) { if (dirty) { if (cfg != NULL) { g_key_file_set_integer(cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_COLUMNS, flags); } else { sat_cfg_set_int(SAT_CFG_INT_LIST_COLUMNS, flags); } } else if (reset) { if (cfg != NULL) { g_key_file_remove_key(cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_COLUMNS, NULL); } else { sat_cfg_reset_int(SAT_CFG_INT_LIST_COLUMNS); } } dirty = FALSE; reset = FALSE; } /* Reset settings. */ static void reset_cb(GtkWidget * button, gpointer cfg) { guint32 flags; guint i; (void)button; if (cfg == NULL) { /* global mode, get defaults */ flags = sat_cfg_get_int_def(SAT_CFG_INT_LIST_COLUMNS); } else { /* local mode, get global value */ flags = sat_cfg_get_int(SAT_CFG_INT_LIST_COLUMNS); } for (i = 0; i < SAT_LIST_COL_NUMBER; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); } /* reset flags */ dirty = FALSE; reset = TRUE; } static void toggle_cb(GtkToggleButton * toggle, gpointer data) { if (gtk_toggle_button_get_active(toggle)) flags |= (1 << GPOINTER_TO_UINT(data)); else flags &= ~(1 << GPOINTER_TO_UINT(data)); /* clear dirty flag if we are back where we started */ dirty = (flags != startflags); } static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _ ("Reset settings to the default values.")); } else { gtk_widget_set_tooltip_text(button, _ ("Reset module settings to the global values.")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_list_view_create(GKeyFile * cfg) { GtkWidget *vbox; gint i; GtkWidget *table, *label; /* column visibility selector */ if (cfg != NULL) { flags = mod_cfg_get_int(cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_COLUMNS, SAT_CFG_INT_LIST_COLUMNS); } else { flags = sat_cfg_get_int(SAT_CFG_INT_LIST_COLUMNS); } /* create the table */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Visible Fields:")); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 2, 1); /* add fields except the last one (bold) */ for (i = 0; i < SAT_LIST_COL_NUMBER - 1; i++) { check[i] = gtk_check_button_new_with_label(_(SAT_LIST_COL_TITLE[i])); gtk_widget_set_tooltip_text(check[i], _(SAT_LIST_COL_HINT[i])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); g_signal_connect(check[i], "toggled", G_CALLBACK(toggle_cb), GUINT_TO_POINTER(i)); gtk_grid_attach(GTK_GRID(table), check[i], i % COLUMNS, Y0 + i / COLUMNS, 1, 1); } vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); create_reset_button(cfg, GTK_BOX(vbox)); startflags = flags; dirty = FALSE; reset = FALSE; return vbox; } gpredict/src/sat-pref-list-view.h000066400000000000000000000003621427377236300173000ustar00rootroot00000000000000#ifndef SAT_PREF_LIST_VIEW_H #define SAT_PREF_LIST_VIEW_H 1 GtkWidget *sat_pref_list_view_create(GKeyFile * cfg); void sat_pref_list_view_cancel(GKeyFile * cfg); void sat_pref_list_view_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-map-view.c000066400000000000000000001520401427377236300170760ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-sat-map.h" #include "map-selector.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-pref-map-view.h" /* map thumbnail */ static GtkWidget *thumb; static gchar *mapf = NULL; /* content selectors */ static GtkWidget *qth, *next, *curs, *grid, *terminatoronoff; /* colour selectors */ static GtkWidget *qthc, *gridc, *tickc; static GtkWidget *satc, *ssatc, *trackc; static GtkWidget *covc, *infofg, *infobg; static GtkWidget *terminator, *globe_shadow; static GtkWidget *shadow; /* ground track orbit number selector */ static GtkWidget *orbit; /* map center spin box */ static GtkWidget *center; /* misc bookkeeping */ static gboolean dirty = FALSE; static gboolean reset = FALSE; /** * Manage check-box actions. * * @param but The check-button that has been toggled. * @param daya User data (always NULL). * * We don't need to do anything but set the dirty flag since the values can * always be obtained from the global widgets. */ static void content_changed(GtkToggleButton * but, gpointer data) { (void)but; (void)data; dirty = TRUE; } /** * Manage color and font changes. * * @param but The color/font picker button that received the signal. * @param data User data (always NULL). * * We don't need to do anything but set the dirty flag since the values can * always be obtained from the global widgets. */ static void colour_changed(GtkWidget * but, gpointer data) { (void)but; (void)data; dirty = TRUE; } static void orbit_changed(GtkWidget * spin, gpointer data) { (void)spin; (void)data; dirty = TRUE; } static void center_changed(GtkWidget * spin, gpointer data) { (void)spin; (void)data; dirty = TRUE; } static gboolean shadow_changed(GtkRange * range, GtkScrollType scroll, gdouble value, gpointer data) { (void)range; (void)scroll; (void)value; (void)data; dirty = TRUE; /* prevent other signal handlers from being executed */ return TRUE; } static void update_map_icon() { gchar *mapfile; GdkPixbuf *obuf, *sbuf; if (g_path_is_absolute(mapf)) { /* map is user specific, ie. in USER_CONF_DIR/maps/ */ mapfile = g_strdup(mapf); } else { /* build complete path */ mapfile = map_file_name(mapf); } obuf = gdk_pixbuf_new_from_file(mapfile, NULL); g_free(mapfile); if (obuf != NULL) { /* scale the pixbuf */ sbuf = gdk_pixbuf_scale_simple(obuf, 100, 50, GDK_INTERP_HYPER); g_object_unref(obuf); /* update the GtkImage from the pixbuf */ gtk_image_clear(GTK_IMAGE(thumb)); gtk_image_set_from_pixbuf(GTK_IMAGE(thumb), sbuf); g_object_unref(sbuf); } else { gtk_image_clear(GTK_IMAGE(thumb)); gtk_image_set_from_icon_name(GTK_IMAGE(thumb), "image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR); } } /** * Manage RESET button signals. * * @param button The RESET button. * @param cfg Pointer to the module configuration or NULL in global mode. * * This function is called when the user clicks on the RESET button. In global mode * (when cfg = NULL) the function will reset the settings to the efault values, while * in "local" mode (when cfg != NULL) the function will reset the module settings to * the global settings. This is done by removing the corresponding key from the GKeyFile. */ static void reset_cb(GtkWidget * button, gpointer cfg) { GdkRGBA gdk_rgba; guint rgba; (void)button; if (cfg == NULL) { /* global mode, get defaults */ /* background map */ g_free(mapf); mapf = sat_cfg_get_str_def(SAT_CFG_STR_MAP_FILE); update_map_icon(); /* extra contents */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAP_SHOW_QTH_INFO)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAP_SHOW_NEXT_EV)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAP_SHOW_GRID)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(terminatoronoff), sat_cfg_get_bool_def (SAT_CFG_BOOL_MAP_SHOW_TERMINATOR)); /* colours */ rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_QTH_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(qthc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_GRID_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(gridc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_TICK_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(satc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_SEL_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_TRACK_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_INFO_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_INFO_BGD_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_TERMINATOR_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); /* shadow */ gtk_range_set_value(GTK_RANGE(shadow), sat_cfg_get_int_def(SAT_CFG_INT_MAP_SHADOW_ALPHA)); /* ground track orbits */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(orbit), sat_cfg_get_int_def (SAT_CFG_INT_MAP_TRACK_NUM)); /* center longitude */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(center), sat_cfg_get_int_def(SAT_CFG_INT_MAP_CENTER)); } else { /* local mode, get global value */ /* background map */ g_free(mapf); mapf = sat_cfg_get_str(SAT_CFG_STR_MAP_FILE); update_map_icon(); /* extra contents */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_QTH_INFO)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_NEXT_EV)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_GRID)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(terminatoronoff), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_TERMINATOR)); /* colours */ rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_QTH_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(qthc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GRID_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(gridc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TICK_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(satc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_SEL_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TRACK_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_INFO_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_INFO_BGD_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TERMINATOR_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); /* shadow */ gtk_range_set_value(GTK_RANGE(shadow), sat_cfg_get_int(SAT_CFG_INT_MAP_SHADOW_ALPHA)); /* ground track orbits */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(orbit), sat_cfg_get_int(SAT_CFG_INT_MAP_TRACK_NUM)); /* center longitude */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(center), sat_cfg_get_int(SAT_CFG_INT_MAP_CENTER)); } /* map file */ /* reset flags */ reset = TRUE; dirty = FALSE; } /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_map_view_cancel(GKeyFile * cfg) { (void)cfg; dirty = FALSE; g_free(mapf); } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_map_view_ok(GKeyFile * cfg) { GdkRGBA gdk_rgba; guint rgba; if (dirty) { if (cfg != NULL) { /* local config use g_key_file_set_xxx */ /* background map */ g_key_file_set_string(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_FILE, mapf); /* extra contents */ g_key_file_set_boolean(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_QTH_INFO, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(qth))); g_key_file_set_boolean(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_NEXT_EVENT, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(next))); g_key_file_set_boolean(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_CURS_TRACK, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(curs))); g_key_file_set_boolean(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_GRID, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(grid))); g_key_file_set_boolean(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_TERMINATOR, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(terminatoronoff))); /* colours */ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(qthc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_QTH_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(gridc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GRID_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TICK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(satc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_BGD_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TERMINATOR_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GLOBAL_SHADOW_COL, rgba); /* shadow */ g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHADOW_ALPHA, (gint) gtk_range_get_value(GTK_RANGE(shadow))); /* orbit */ g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_NUM, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(orbit))); /* map center */ g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_CENTER, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(center))); } else { /* use sat_cfg_set_xxx */ /* background map */ sat_cfg_set_str(SAT_CFG_STR_MAP_FILE, mapf); /* extra contents */ sat_cfg_set_bool(SAT_CFG_BOOL_MAP_SHOW_QTH_INFO, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (qth))); sat_cfg_set_bool(SAT_CFG_BOOL_MAP_SHOW_NEXT_EV, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (next))); sat_cfg_set_bool(SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (curs))); sat_cfg_set_bool(SAT_CFG_BOOL_MAP_SHOW_GRID, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (grid))); sat_cfg_set_bool(SAT_CFG_BOOL_MAP_SHOW_TERMINATOR, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (terminatoronoff))); /* colours */ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(qthc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_QTH_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(gridc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_GRID_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_TICK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(satc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_SAT_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_SAT_SEL_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_TRACK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_SAT_COV_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_INFO_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_INFO_BGD_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_TERMINATOR_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL, rgba); /* shadow */ sat_cfg_set_int(SAT_CFG_INT_MAP_SHADOW_ALPHA, (gint) gtk_range_get_value(GTK_RANGE(shadow))); /* orbit */ sat_cfg_set_int(SAT_CFG_INT_MAP_TRACK_NUM, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (orbit))); /* map center */ sat_cfg_set_int(SAT_CFG_INT_MAP_CENTER, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (center))); } dirty = FALSE; } else if (reset) { if (cfg != NULL) { /* use g_key_file_remove_key */ g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_FILE, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_QTH_INFO, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_NEXT_EVENT, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_CURS_TRACK, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_GRID, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_TERMINATOR, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_QTH_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GRID_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TICK_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_BGD_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHADOW_ALPHA, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_NUM, NULL); g_key_file_remove_key(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_CENTER, NULL); } else { /* use sat_cfg_reset_xxx */ /* background map */ sat_cfg_reset_str(SAT_CFG_STR_MAP_FILE); /* extra contents */ sat_cfg_reset_bool(SAT_CFG_BOOL_MAP_SHOW_QTH_INFO); sat_cfg_reset_bool(SAT_CFG_BOOL_MAP_SHOW_NEXT_EV); sat_cfg_reset_bool(SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK); sat_cfg_reset_bool(SAT_CFG_BOOL_MAP_SHOW_GRID); sat_cfg_reset_bool(SAT_CFG_BOOL_MAP_SHOW_TERMINATOR); /* colours */ sat_cfg_reset_int(SAT_CFG_INT_MAP_QTH_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_GRID_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_TICK_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_SEL_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_TRACK_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COV_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_INFO_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_INFO_BGD_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SHADOW_ALPHA); /* orbit */ sat_cfg_reset_int(SAT_CFG_INT_MAP_TRACK_NUM); /* map center */ sat_cfg_reset_int(SAT_CFG_INT_MAP_CENTER); } reset = FALSE; } g_free(mapf); } /** * Select a map * @param button Pointer to the "Select Map" button * @param data User data (always NULL) * * This function is called when the user clicks on the "Select Map" * button. The function calls the select_map function which will * return a newly allocated string containing the name of the newly * selected map, or NULL if the action was cancelled. * */ static void select_map_cb(GtkWidget * button, gpointer data) { gchar *mapfile; (void)button; (void)data; /* execute map selector */ mapfile = select_map(mapf); if (mapfile) { /* store new map name */ g_free(mapf); mapf = g_strdup(mapfile); g_free(mapfile); dirty = TRUE; /* update map preview */ update_map_icon(); } } /* Create map selector widget. */ static void create_map_selector(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *label; GtkWidget *table; gchar *mapfile; GdkPixbuf *obuf, *sbuf; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Background Map:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 0); /* create a table to put the map preview and select button in. using a simple hbox won't do it because the button would have the same height as the map preview */ table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_spacing(GTK_GRID(table), 0); gtk_grid_set_column_spacing(GTK_GRID(table), 15); gtk_box_pack_start(vbox, table, FALSE, FALSE, 5); /* load map file into a pixbuf */ if (cfg != NULL) { mapf = mod_cfg_get_str(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_FILE, SAT_CFG_STR_MAP_FILE); } else { mapf = sat_cfg_get_str(SAT_CFG_STR_MAP_FILE); } if (g_path_is_absolute(mapf)) { /* map is user specific, ie. in USER_CONF_DIR/maps/ */ mapfile = g_strdup(mapf); } else { /* build complete path */ mapfile = map_file_name(mapf); } obuf = gdk_pixbuf_new_from_file(mapfile, NULL); g_free(mapfile); if (obuf != NULL) { /* scale the pixbuf */ sbuf = gdk_pixbuf_scale_simple(obuf, 100, 50, GDK_INTERP_HYPER); g_object_unref(obuf); /* create a GtkImage from the pixbuf */ thumb = gtk_image_new_from_pixbuf(sbuf); g_object_unref(sbuf); } else { thumb = gtk_image_new_from_icon_name("image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR); } gtk_grid_attach(GTK_GRID(table), thumb, 0, 0, 1, 3); /* select button */ button = gtk_button_new_with_label(_("Select map")); gtk_widget_set_tooltip_text(button, _("Click to select a map")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_map_cb), NULL); gtk_grid_attach(GTK_GRID(table), button, 1, 1, 1, 1); } /** * Create content selector widgets. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets that are used to select what content, besides * the satellites, should be drawn on the polar view. Choices are QTH info, next * event, cursor coordinates, and extra tick marks. */ static void create_bool_selectors(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Extra Contents:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 5); /* horizontal box to contain the radio buttons */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); /* QTH info */ qth = gtk_check_button_new_with_label(_("QTH Info")); gtk_widget_set_tooltip_text(qth, _("Show location information on the map")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), mod_cfg_get_bool(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_QTH_INFO, SAT_CFG_BOOL_MAP_SHOW_QTH_INFO)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_QTH_INFO)); } g_signal_connect(qth, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), qth, FALSE, TRUE, 0); /* Next Event */ next = gtk_check_button_new_with_label(_("Next Event")); gtk_widget_set_tooltip_text(next, _("Show which satellite comes up next and at " "what time")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), mod_cfg_get_bool(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_NEXT_EVENT, SAT_CFG_BOOL_MAP_SHOW_NEXT_EV)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_NEXT_EV)); } g_signal_connect(next, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), next, FALSE, TRUE, 0); /* Cursor position */ curs = gtk_check_button_new_with_label(_("Cursor Position")); gtk_widget_set_tooltip_text(curs, _("Show the latitude and longitude of the " "mouse pointer")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), mod_cfg_get_bool(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_CURS_TRACK, SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_CURS_TRACK)); } g_signal_connect(curs, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), curs, FALSE, TRUE, 0); /* Grid */ grid = gtk_check_button_new_with_label(_("Grid Lines")); gtk_widget_set_tooltip_text(grid, _("Show horizontal and vertical grid lines")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid), mod_cfg_get_bool(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_GRID, SAT_CFG_BOOL_MAP_SHOW_GRID)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_GRID)); } g_signal_connect(grid, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), grid, FALSE, TRUE, 0); /* Solar Terminator */ terminatoronoff = gtk_check_button_new_with_label(_("Solar Terminator")); gtk_widget_set_tooltip_text(terminatoronoff, _("Show solar Terminator")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(terminatoronoff), mod_cfg_get_bool(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHOW_TERMINATOR, SAT_CFG_BOOL_MAP_SHOW_TERMINATOR)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(terminatoronoff), sat_cfg_get_bool (SAT_CFG_BOOL_MAP_SHOW_TERMINATOR)); } g_signal_connect(terminatoronoff, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), terminatoronoff, FALSE, TRUE, 0); } /** * Create colour selector widgets. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets for selecting colours for the plot background, * axes, tick labels, satellites, track, and info text. */ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *table; GdkRGBA gdk_rgba; guint rgba; /* RRGGBBAA encoded colour */ /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Colours:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 5); /* container */ table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_spacing(GTK_GRID(table), 3); gtk_grid_set_column_spacing(GTK_GRID(table), 10); gtk_box_pack_start(vbox, table, FALSE, TRUE, 0); /* background */ label = gtk_label_new(_("Ground Station:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); qthc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(qthc), TRUE); gtk_grid_attach(GTK_GRID(table), qthc, 1, 0, 1, 1); gtk_widget_set_tooltip_text(qthc, _("Select the ground station colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_QTH_COL, SAT_CFG_INT_MAP_QTH_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_QTH_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(qthc), &gdk_rgba); g_signal_connect(qthc, "color-set", G_CALLBACK(colour_changed), NULL); /* Grid in case it is enabled */ label = gtk_label_new(_("Grid:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 0, 1, 1); gridc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(gridc), TRUE); gtk_grid_attach(GTK_GRID(table), gridc, 3, 0, 1, 1); gtk_widget_set_tooltip_text(gridc, _("Select the grid colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GRID_COL, SAT_CFG_INT_MAP_GRID_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GRID_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(gridc), &gdk_rgba); g_signal_connect(gridc, "color-set", G_CALLBACK(colour_changed), NULL); /* tick labels */ label = gtk_label_new(_("Tick Labels:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 4, 0, 1, 1); tickc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(tickc), TRUE); gtk_grid_attach(GTK_GRID(table), tickc, 5, 0, 1, 1); gtk_widget_set_tooltip_text(tickc, _("Select a colour for tick labels")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TICK_COL, SAT_CFG_INT_MAP_TICK_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TICK_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); g_signal_connect(tickc, "color-set", G_CALLBACK(colour_changed), NULL); /* satellite */ label = gtk_label_new(_("Satellite:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); satc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(satc), TRUE); gtk_grid_attach(GTK_GRID(table), satc, 1, 1, 1, 1); gtk_widget_set_tooltip_text(satc, _("Select the satellite colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COL, SAT_CFG_INT_MAP_SAT_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(satc), &gdk_rgba); g_signal_connect(satc, "color-set", G_CALLBACK(colour_changed), NULL); /* selected satellite */ label = gtk_label_new(_("Selected Sat.:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 1, 1, 1); ssatc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(ssatc), TRUE); gtk_grid_attach(GTK_GRID(table), ssatc, 3, 1, 1, 1); gtk_widget_set_tooltip_text(ssatc, _("Select colour for selected satellites")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_SEL_COL, SAT_CFG_INT_MAP_SAT_SEL_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_SEL_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); g_signal_connect(ssatc, "color-set", G_CALLBACK(colour_changed), NULL); /* tack */ label = gtk_label_new(_("Ground Track:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 4, 1, 1, 1); trackc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(trackc), TRUE); gtk_grid_attach(GTK_GRID(table), trackc, 5, 1, 1, 1); gtk_widget_set_tooltip_text(trackc, _("Select ground track colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_COL, SAT_CFG_INT_MAP_TRACK_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TRACK_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); g_signal_connect(trackc, "color-set", G_CALLBACK(colour_changed), NULL); /* coverage */ label = gtk_label_new(_("Area Coverage:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); covc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc), TRUE); gtk_grid_attach(GTK_GRID(table), covc, 1, 2, 1, 1); gtk_widget_set_tooltip_text(covc, _("Select colour for coverage area.\n" "Hint: Make it transparent")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); g_signal_connect(covc, "color-set", G_CALLBACK(colour_changed), NULL); /* Info foreground */ label = gtk_label_new(_("Info Text FG:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 2, 1, 1); infofg = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(infofg), TRUE); gtk_grid_attach(GTK_GRID(table), infofg, 3, 2, 1, 1); gtk_widget_set_tooltip_text(infofg, _("Select info text foreground colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_COL, SAT_CFG_INT_MAP_INFO_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_INFO_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); g_signal_connect(infofg, "color-set", G_CALLBACK(colour_changed), NULL); /* Info background */ label = gtk_label_new(_("Info Text BG:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 4, 2, 1, 1); infobg = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(infobg), TRUE); gtk_grid_attach(GTK_GRID(table), infobg, 5, 2, 1, 1); gtk_widget_set_tooltip_text(infobg, _("Select info text background colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_INFO_BGD_COL, SAT_CFG_INT_MAP_INFO_BGD_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_INFO_BGD_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); g_signal_connect(infobg, "color-set", G_CALLBACK(colour_changed), NULL); /* Solar terminator */ label = gtk_label_new(_("Solar terminator:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); terminator = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(terminator), TRUE); gtk_grid_attach(GTK_GRID(table), terminator, 1, 3, 1, 1); gtk_widget_set_tooltip_text(terminator, _("Select solar terminator colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TERMINATOR_COL, SAT_CFG_INT_MAP_TERMINATOR_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TERMINATOR_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); g_signal_connect(terminator, "color-set", G_CALLBACK(colour_changed), NULL); /* Earth shadow */ label = gtk_label_new(_("Global shadow:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); globe_shadow = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(globe_shadow), TRUE); gtk_grid_attach(GTK_GRID(table), globe_shadow, 3, 3, 1, 1); gtk_widget_set_tooltip_text(globe_shadow, _("Select Earth shadow colour")); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_GLOBAL_SHADOW_COL, SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); } rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); g_signal_connect(globe_shadow, "color-set", G_CALLBACK(colour_changed), NULL); /* Shadow */ label = gtk_label_new(_("Shadow:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Transp.")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 4, 1, 1); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Opaque")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 5, 4, 1, 1); shadow = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 255, 1); gtk_scale_set_draw_value(GTK_SCALE(shadow), FALSE); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SHADOW_ALPHA, SAT_CFG_INT_MAP_SHADOW_ALPHA); } else { rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SHADOW_ALPHA); } gtk_range_set_value(GTK_RANGE(shadow), rgba); gtk_widget_set_tooltip_text(shadow, _("Shadow transparency under the satellite " "marker.\n\n" "The shadow improves the visibility " "of the satellites where the colour of the " "background is light, e.g. the South Pole. " "Fully transparent is the same as no shadow.")); gtk_grid_attach(GTK_GRID(table), shadow, 2, 4, 3, 1); g_signal_connect(shadow, "value-changed", G_CALLBACK(shadow_changed), NULL); } /** * Create orbit number selector widget. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets for selecting the number of orbit to show * the satellite ground track for. * */ static void create_orbit_selector(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; gint onum; hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); label = gtk_label_new(_("Display ground track for")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); orbit = gtk_spin_button_new_with_range(1, 10, 1); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(orbit), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(orbit), TRUE); if (cfg != NULL) { onum = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_TRACK_NUM, SAT_CFG_INT_MAP_TRACK_NUM); } else { onum = sat_cfg_get_int(SAT_CFG_INT_MAP_TRACK_NUM); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(orbit), onum); g_signal_connect(G_OBJECT(orbit), "value-changed", G_CALLBACK(orbit_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), orbit, FALSE, FALSE, 0); label = gtk_label_new(_("orbit(s)")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); } /** * Create map center selector widget. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets for selecting the longitude around which * to center the map. * */ static void create_center_selector(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; gint clon; hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); label = gtk_label_new(_("Center map at longitude")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); center = gtk_spin_button_new_with_range(-180, 180, 1); gtk_widget_set_tooltip_text(center, _("Select longitude. West is negative.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(center), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(center), TRUE); if (cfg != NULL) { clon = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_CENTER, SAT_CFG_INT_MAP_CENTER); } else { clon = sat_cfg_get_int(SAT_CFG_INT_MAP_CENTER); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(center), clon); g_signal_connect(G_OBJECT(center), "value-changed", G_CALLBACK(center_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), center, FALSE, FALSE, 0); label = gtk_label_new(_("[deg]")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); } /** * Create RESET button. * * @param cfg Config data or NULL in global mode. * @param vbox The container. * * This function creates and sets up the RESET button. */ static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _("Reset settings to default values")); } else { gtk_widget_set_tooltip_text(button, _("Reset module to global settings")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } /* * Create and initialise widgets for the map preferences tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_map_view_create(GKeyFile * cfg) { GtkWidget *vbox; GtkWidget *swin; /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); /* create the components */ create_map_selector(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 5); create_bool_selectors(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 5); create_colour_selectors(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 5); create_orbit_selector(cfg, GTK_BOX(vbox)); create_center_selector(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 5); create_reset_button(cfg, GTK_BOX(vbox)); reset = FALSE; dirty = FALSE; /* pack vbox into a scrolled window to reduce vertical size of the window */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); //gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(swin), vbox); gtk_container_add(GTK_CONTAINER(swin), vbox); return swin; } gpredict/src/sat-pref-map-view.h000066400000000000000000000003551427377236300171040ustar00rootroot00000000000000#ifndef SAT_PREF_MAP_VIEW_H #define SAT_PREF_MAP_VIEW_H 1 GtkWidget *sat_pref_map_view_create(GKeyFile * cfg); void sat_pref_map_view_cancel(GKeyFile * cfg); void sat_pref_map_view_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-modules.c000066400000000000000000000073541427377236300170300ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pref-layout.h" #include "sat-pref-list-view.h" #include "sat-pref-map-view.h" #include "sat-pref-modules.h" #include "sat-pref-polar-view.h" #include "sat-pref-refresh.h" #include "sat-pref-single-sat.h" /** * Create and initialise widgets for the modules prefs tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. * * @note The "modules" tab is different from the others in that it is used * by both the saf-pref dialog to edit global settings and the mod-cfg * dialog to edit individual module settings. Therefore, the create, * ok and cancel function take a GKeyFile as parameter. If the parameter * is NULL we are in global config mode (sat-pref) otherwise in local * config mode. */ GtkWidget *sat_pref_modules_create(GKeyFile * cfg) { GtkWidget *nbook; nbook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_layout_create(cfg), gtk_label_new(_("Layout"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_refresh_create(cfg), gtk_label_new(_("Refresh Rates"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_list_view_create(cfg), gtk_label_new(_("List View"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_map_view_create(cfg), gtk_label_new(_("Map View"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_polar_view_create(cfg), gtk_label_new(_("Polar View"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_single_sat_create(cfg), gtk_label_new(_("Single Sat View"))); return nbook; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_modules_cancel(GKeyFile * cfg) { sat_pref_layout_cancel(cfg); sat_pref_refresh_cancel(cfg); sat_pref_list_view_cancel(cfg); sat_pref_map_view_cancel(cfg); sat_pref_polar_view_cancel(cfg); sat_pref_single_sat_cancel(cfg); } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_modules_ok(GKeyFile * cfg) { sat_pref_layout_ok(cfg); sat_pref_refresh_ok(cfg); sat_pref_list_view_ok(cfg); sat_pref_map_view_ok(cfg); sat_pref_polar_view_ok(cfg); sat_pref_single_sat_ok(cfg); } gpredict/src/sat-pref-modules.h000066400000000000000000000023651427377236300170320ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PREF_MODULES_H #define SAT_PREF_MODULES_H 1 GtkWidget *sat_pref_modules_create(GKeyFile * cfg); void sat_pref_modules_cancel(GKeyFile * cfg); void sat_pref_modules_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-multi-pass.c000066400000000000000000000111721427377236300174470ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pass-dialogs.h" #include "sat-pref-multi-pass.h" #define Y0 1 /* First row where checkboxes are placed */ #define COLUMNS 2 /* Number of columns in the table */ static GtkWidget *check[MULTI_PASS_COL_NUMBER]; static guint startflags; static guint flags; static gboolean dirty = FALSE; static gboolean reset = FALSE; extern const gchar *MULTI_PASS_COL_HINT[]; /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_multi_pass_cancel() { dirty = FALSE; reset = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_multi_pass_ok() { if (dirty) { sat_cfg_set_int(SAT_CFG_INT_PRED_MULTI_COL, flags); dirty = FALSE; } else if (reset) { sat_cfg_reset_int(SAT_CFG_INT_PRED_MULTI_COL); reset = FALSE; } } static void toggle_cb(GtkToggleButton * toggle, gpointer data) { if (gtk_toggle_button_get_active(toggle)) flags |= (1 << GPOINTER_TO_UINT(data)); else flags &= ~(1 << GPOINTER_TO_UINT(data)); /* clear dirty flag if we are back where we started */ dirty = (flags != startflags); } /* Reset settings */ static void reset_cb(GtkWidget * button, gpointer data) { guint i; (void)button; (void)data; /* get defaults */ flags = sat_cfg_get_int_def(SAT_CFG_INT_PRED_MULTI_COL); for (i = 0; i < MULTI_PASS_COL_NUMBER; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); } /* reset flags */ reset = TRUE; dirty = FALSE; } static void create_reset_button(GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(button, _("Reset settings to the default values.")); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_multi_pass_create() { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; guint i; /* create the table */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Visible Columns:")); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 2, 1); /* get visible column flags */ flags = sat_cfg_get_int(SAT_CFG_INT_PRED_MULTI_COL); for (i = 0; i < MULTI_PASS_COL_NUMBER; i++) { check[i] = gtk_check_button_new_with_label(MULTI_PASS_COL_HINT[i]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); g_signal_connect(check[i], "toggled", G_CALLBACK(toggle_cb), GUINT_TO_POINTER(i)); gtk_grid_attach(GTK_GRID(table), check[i], i % COLUMNS, Y0 + i / COLUMNS, 1, 1); } /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(GTK_BOX(vbox)); startflags = flags; dirty = FALSE; reset = FALSE; return vbox; } gpredict/src/sat-pref-multi-pass.h000066400000000000000000000003311427377236300174470ustar00rootroot00000000000000#ifndef SAT_PREF_MULTI_PASS_H #define SAT_PREF_MULTI_PASS_H 1 GtkWidget *sat_pref_multi_pass_create(void); void sat_pref_multi_pass_cancel(void); void sat_pref_multi_pass_ok(void); #endif gpredict/src/sat-pref-polar-view.c000066400000000000000000001160251427377236300174410ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gpredict-utils.h" #include "gtk-polar-view.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-polar-view.h" /* orientation selectors */ static GtkWidget *nesw, *nwse, *senw, *swne; /* content selectors */ static GtkWidget *qth, *next, *curs, *xtick; /* colour selectors */ static GtkWidget *bgd, *axis, *tick, *sat, *ssat, *track, *info; /* Misc */ static GtkWidget *showtrack; /* misc bookkeeping */ static gint orient = POLAR_VIEW_NESW; static gboolean dirty = FALSE; static gboolean reset = FALSE; /** * Manage orientation changes. * * @param but the button that received the signal * @param data User data (always NULL). * * Note that this function is called also for the button that is unchecked, * */ static void orient_chganged(GtkToggleButton * but, gpointer data) { if (gtk_toggle_button_get_active(but)) { orient = GPOINTER_TO_INT(data); dirty = TRUE; } } /** * Manage check-box actions. * * @param but The check-button that has been toggled. * @param daya User data (always NULL). * * We don't need to do anything but set the dirty flag since the values can * always be obtained from the global widgets. */ static void content_changed(GtkToggleButton * but, gpointer data) { (void)but; (void)data; dirty = TRUE; } /** * Manage color and font changes. * * @param but The color/font picker button that received the signal. * @param data User data (always NULL). * * We don't need to do anything but set the dirty flag since the values can * always be obtained from the global widgets. */ static void colour_changed(GtkWidget * but, gpointer data) { (void)but; (void)data; dirty = TRUE; } /** * Manage RESET button signals. * * @param button The RESET button. * @param cfg Pointer to the module configuration or NULL in global mode. * * This function is called when the user clicks on the RESET button. In global mode * (when cfg = NULL) the function will reset the settings to the efault values, while * in "local" mode (when cfg != NULL) the function will reset the module settings to * the global settings. This is done by removing the corresponding key from the GKeyFile. */ static void reset_cb(GtkWidget * button, gpointer cfg) { guint cfg_rgba; /* 0xRRGGBBAA encoded color */ GdkRGBA gdk_rgba; (void)button; if (cfg == NULL) { /* global mode, get defaults */ /* extra contents */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool_def (SAT_CFG_BOOL_POL_SHOW_QTH_INFO)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool_def (SAT_CFG_BOOL_POL_SHOW_NEXT_EV)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool_def (SAT_CFG_BOOL_POL_SHOW_CURS_TRACK)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xtick), sat_cfg_get_bool_def (SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS)); /* colours */ cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_BGD_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(bgd), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_AXIS_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(axis), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_TICK_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tick), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_SAT_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(sat), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_SAT_SEL_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssat), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_TRACK_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(track), &gdk_rgba); cfg_rgba = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_INFO_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(info), &gdk_rgba); /* misc */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtrack), sat_cfg_get_bool_def (SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO)); } else { /* local mode, get global value */ /* extra contents */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_QTH_INFO)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_NEXT_EV)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_CURS_TRACK)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xtick), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS)); /* colours */ cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_BGD_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(bgd), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_AXIS_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(axis), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_TICK_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tick), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(sat), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_SEL_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssat), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_TRACK_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(track), &gdk_rgba); cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_INFO_COL); rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(info), &gdk_rgba); /* misc */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtrack), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO)); } /* orientation needs some special attention */ if (cfg == NULL) { orient = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_ORIENTATION); } else { orient = sat_cfg_get_int(SAT_CFG_INT_POLAR_ORIENTATION); } switch (orient) { case POLAR_VIEW_NESW: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nesw), TRUE); break; case POLAR_VIEW_NWSE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nwse), TRUE); break; case POLAR_VIEW_SENW: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(senw), TRUE); break; case POLAR_VIEW_SWNE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(swne), TRUE); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid chart orientation %d (using N/E/S/W)"), __FILE__, __func__, orient); orient = POLAR_VIEW_NESW; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nesw), TRUE); break; } /* reset flags */ reset = TRUE; dirty = FALSE; } /** * Create orientation chooser. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * The orientation selector consists of a radio-group having four radio * buttons: N/E/S/W, N/W/S/E, S/E/N/W, and S/W/N/E */ static void create_orient_selector(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Orientation:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 0); /* horizontal box to contain the radio buttons */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); /* N/E/S/W */ nesw = gtk_radio_button_new_with_label(NULL, _("N/E/S/W")); gtk_box_pack_start(GTK_BOX(hbox), nesw, FALSE, TRUE, 0); gtk_widget_set_tooltip_text(nesw, _("\tN\n" "W\t\tE\n" "\tS")); /* N/W/S/E */ nwse = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(nesw), _("N/W/S/E")); gtk_box_pack_start(GTK_BOX(hbox), nwse, FALSE, TRUE, 0); gtk_widget_set_tooltip_text(nwse, _("\tN\n" "E\t\tW\n" "\tS")); /* S/E/N/W */ senw = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(nesw), _("S/E/N/W")); gtk_box_pack_start(GTK_BOX(hbox), senw, FALSE, TRUE, 0); gtk_widget_set_tooltip_text(senw, _("\tS\n" "W\t\tE\n" "\tN")); /* S/W/N/E */ swne = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(nesw), _("S/W/N/E")); gtk_box_pack_start(GTK_BOX(hbox), swne, FALSE, TRUE, 0); gtk_widget_set_tooltip_text(swne, _("\tS\n" "E\t\tW\n" "\tN")); /* read orientation */ if (cfg != NULL) { orient = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_ORIENTATION, SAT_CFG_INT_POLAR_ORIENTATION); } else { sat_cfg_get_int(SAT_CFG_INT_POLAR_ORIENTATION); } switch (orient) { case POLAR_VIEW_NESW: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nesw), TRUE); break; case POLAR_VIEW_NWSE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nwse), TRUE); break; case POLAR_VIEW_SENW: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(senw), TRUE); break; case POLAR_VIEW_SWNE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(swne), TRUE); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%f:%d: Invalid PolarView orientation (%d)"), __FILE__, __LINE__, orient); orient = POLAR_VIEW_NESW; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nesw), TRUE); break; } /* finally, connect the signals */ g_signal_connect(nesw, "toggled", G_CALLBACK(orient_chganged), GINT_TO_POINTER(POLAR_VIEW_NESW)); g_signal_connect(nwse, "toggled", G_CALLBACK(orient_chganged), GINT_TO_POINTER(POLAR_VIEW_NWSE)); g_signal_connect(senw, "toggled", G_CALLBACK(orient_chganged), GINT_TO_POINTER(POLAR_VIEW_SENW)); g_signal_connect(swne, "toggled", G_CALLBACK(orient_chganged), GINT_TO_POINTER(POLAR_VIEW_SWNE)); } /** * Create content selector widgets. * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets that are used to select what content, besides * the satellites, should be drawn on the polar view. Choices are QTH info, next * event, cursor coordinates, and extra tick marks. */ static void create_bool_selectors(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Extra Contents:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 0); /* horizontal box to contain the radio buttons */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); /* QTH info */ qth = gtk_check_button_new_with_label(_("QTH Info")); gtk_widget_set_tooltip_text(qth, _ ("Show location information on the polar plot")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), mod_cfg_get_bool(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_QTH_INFO, SAT_CFG_BOOL_POL_SHOW_QTH_INFO)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(qth), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_QTH_INFO)); } g_signal_connect(qth, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), qth, FALSE, TRUE, 0); /* Next Event */ next = gtk_check_button_new_with_label(_("Next Event")); gtk_widget_set_tooltip_text(next, _ ("Show which satellites comes up next and at what time")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), mod_cfg_get_bool(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_NEXT_EVENT, SAT_CFG_BOOL_POL_SHOW_NEXT_EV)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(next), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_NEXT_EV)); } g_signal_connect(next, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), next, FALSE, TRUE, 0); /* Cursor position */ curs = gtk_check_button_new_with_label(_("Cursor Position")); gtk_widget_set_tooltip_text(curs, _ ("Show the azimuth and elevation of the mouse pointer")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), mod_cfg_get_bool(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_CURS_TRACK, SAT_CFG_BOOL_POL_SHOW_CURS_TRACK)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(curs), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_CURS_TRACK)); } g_signal_connect(curs, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), curs, FALSE, TRUE, 0); /* Extra tick marks */ xtick = gtk_check_button_new_with_label(_("Extra Az Ticks")); gtk_widget_set_tooltip_text(xtick, _ ("Show extra tick marks for every 30\302\260")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xtick), mod_cfg_get_bool(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_EXTRA_AZ_TICKS, SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xtick), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS)); } g_signal_connect(xtick, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), xtick, FALSE, TRUE, 0); } /** * Create color selector widgets. * * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * * This function creates the widgets for selecting colours for the plot background, * axes, tick labels, satellites, track, and info text. */ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *table; guint cfg_rgba; /* 0xRRGGBBAA encoded color */ GdkRGBA gdk_rgba; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Colours:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 0); table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_column_spacing(GTK_GRID(table), 10); gtk_grid_set_row_spacing(GTK_GRID(table), 3); gtk_box_pack_start(vbox, table, FALSE, TRUE, 0); /* background */ label = gtk_label_new(_("Background:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); bgd = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(bgd), TRUE); gtk_grid_attach(GTK_GRID(table), bgd, 1, 0, 1, 1); gtk_widget_set_tooltip_text(bgd, _("Click to select background colour")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_BGD_COL, SAT_CFG_INT_POLAR_BGD_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_BGD_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(bgd), &gdk_rgba); g_signal_connect(bgd, "color-set", G_CALLBACK(colour_changed), NULL); /* Axis */ label = gtk_label_new(_("Axes/Circles:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 0, 1, 1); axis = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(axis), TRUE); gtk_grid_attach(GTK_GRID(table), axis, 3, 0, 1, 1); gtk_widget_set_tooltip_text(axis, _("Click to select the axis colour")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_AXIS_COL, SAT_CFG_INT_POLAR_AXIS_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_AXIS_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(axis), &gdk_rgba); g_signal_connect(axis, "color-set", G_CALLBACK(colour_changed), NULL); /* tick labels */ label = gtk_label_new(_("Tick Labels:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 4, 0, 1, 1); tick = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(tick), TRUE); gtk_grid_attach(GTK_GRID(table), tick, 5, 0, 1, 1); gtk_widget_set_tooltip_text(tick, _ ("Click to select the colour for tick labels")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TICK_COL, SAT_CFG_INT_POLAR_TICK_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_TICK_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tick), &gdk_rgba); g_signal_connect(tick, "color-set", G_CALLBACK(colour_changed), NULL); /* satellite */ label = gtk_label_new(_("Satellite:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); sat = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(sat), TRUE); gtk_grid_attach(GTK_GRID(table), sat, 1, 1, 1, 1); gtk_widget_set_tooltip_text(sat, _("Click to select satellite colour")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_COL, SAT_CFG_INT_POLAR_SAT_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(sat), &gdk_rgba); g_signal_connect(sat, "color-set", G_CALLBACK(colour_changed), NULL); /* selected satellite */ label = gtk_label_new(_("Selected Sat.:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 1, 1, 1); ssat = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(ssat), TRUE); gtk_grid_attach(GTK_GRID(table), ssat, 3, 1, 1, 1); gtk_widget_set_tooltip_text(ssat, _ ("Click to select colour for selected satellites")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_SEL_COL, SAT_CFG_INT_POLAR_SAT_SEL_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_SAT_SEL_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssat), &gdk_rgba); g_signal_connect(ssat, "color-set", G_CALLBACK(colour_changed), NULL); /* track */ label = gtk_label_new(_("Sky Track:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 4, 1, 1, 1); track = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(track), TRUE); gtk_grid_attach(GTK_GRID(table), track, 5, 1, 1, 1); gtk_widget_set_tooltip_text(track, _("Click to select track colour")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TRACK_COL, SAT_CFG_INT_POLAR_TRACK_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_TRACK_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(track), &gdk_rgba); g_signal_connect(track, "color-set", G_CALLBACK(colour_changed), NULL); /* Info */ label = gtk_label_new(_("Info Text:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); info = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(info), TRUE); gtk_grid_attach(GTK_GRID(table), info, 1, 2, 1, 1); gtk_widget_set_tooltip_text(info, _("Click to select background colour")); if (cfg != NULL) { cfg_rgba = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_INFO_COL, SAT_CFG_INT_POLAR_INFO_COL); } else { cfg_rgba = sat_cfg_get_int(SAT_CFG_INT_POLAR_INFO_COL); } rgba_from_cfg(cfg_rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(info), &gdk_rgba); g_signal_connect(info, "color-set", G_CALLBACK(colour_changed), NULL); } /** * Create miscellaneous config widgets. * @param cfg The module configuration or NULL in global mode. * @param vbox The container box in which the widgets should be packed into. * */ static void create_misc_selectors(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *label; GtkWidget *hbox; /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Miscellaneous:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 0); /* horizontal box to contain the radio buttons */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_start(vbox, hbox, FALSE, TRUE, 0); /* show sky tracks */ showtrack = gtk_check_button_new_with_label(_("Show the sky tracks " "automatically")); gtk_widget_set_tooltip_text(showtrack, _("Automatically show the sky track of a " "satellite when it comes in range. You can always turn the " "sky track OFF for each individual object")); if (cfg != NULL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtrack), mod_cfg_get_bool(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_TRACK_AUTO, SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtrack), sat_cfg_get_bool (SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO)); } g_signal_connect(showtrack, "toggled", G_CALLBACK(content_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), showtrack, FALSE, TRUE, 0); } /** * Create RESET button. * @param cfg Config data or NULL in global mode. * @param vbox The container. * * This function creates and sets up the RESET button. */ static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _ ("Reset settings to the default values.")); } else { gtk_widget_set_tooltip_text(button, _ ("Reset module settings to the global values.")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_polar_view_cancel(GKeyFile * cfg) { (void)cfg; dirty = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_polar_view_ok(GKeyFile * cfg) { GdkRGBA gdk_rgba; guint rgba; if (dirty) { if (cfg != NULL) { /* use g_key_file_set_xxx */ /* orientation */ g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_ORIENTATION, orient); /* extra contents */ g_key_file_set_boolean(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_QTH_INFO, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(qth))); g_key_file_set_boolean(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_NEXT_EVENT, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(next))); g_key_file_set_boolean(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_CURS_TRACK, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(curs))); g_key_file_set_boolean(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_EXTRA_AZ_TICKS, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(xtick))); /* colours */ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(bgd), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_BGD_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(axis), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_AXIS_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(tick), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TICK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(sat), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(ssat), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_SEL_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(info), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_INFO_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(track), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TRACK_COL, rgba); /* misc */ g_key_file_set_boolean(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_TRACK_AUTO, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(showtrack))); } else { /* use sat_cfg_set_xxx */ /* orientation */ sat_cfg_set_int(SAT_CFG_INT_POLAR_ORIENTATION, orient); /* extra contents */ sat_cfg_set_bool(SAT_CFG_BOOL_POL_SHOW_QTH_INFO, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (qth))); sat_cfg_set_bool(SAT_CFG_BOOL_POL_SHOW_NEXT_EV, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (next))); sat_cfg_set_bool(SAT_CFG_BOOL_POL_SHOW_CURS_TRACK, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (curs))); sat_cfg_set_bool(SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (xtick))); /* colours */ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(bgd), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_BGD_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(axis), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_AXIS_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(tick), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_TICK_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(sat), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_SAT_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(ssat), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_SAT_SEL_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(info), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_INFO_COL, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(track), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_POLAR_TRACK_COL, rgba); /* misc */ sat_cfg_set_bool(SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (showtrack))); } dirty = FALSE; } else if (reset) { if (cfg != NULL) { /* use g_key_file_remove_key */ g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_ORIENTATION, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_QTH_INFO, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_NEXT_EVENT, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_CURS_TRACK, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_EXTRA_AZ_TICKS, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_BGD_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_AXIS_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TICK_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SAT_SEL_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_INFO_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_TRACK_COL, NULL); g_key_file_remove_key(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_SHOW_TRACK_AUTO, NULL); } else { /* use sat_cfg_reset_xxx */ /* orientation */ sat_cfg_reset_int(SAT_CFG_INT_POLAR_ORIENTATION); /* extra contents */ sat_cfg_reset_bool(SAT_CFG_BOOL_POL_SHOW_QTH_INFO); sat_cfg_reset_bool(SAT_CFG_BOOL_POL_SHOW_NEXT_EV); sat_cfg_reset_bool(SAT_CFG_BOOL_POL_SHOW_CURS_TRACK); sat_cfg_reset_bool(SAT_CFG_BOOL_POL_SHOW_EXTRA_AZ_TICKS); /* colours */ sat_cfg_reset_int(SAT_CFG_INT_POLAR_BGD_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_AXIS_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_TICK_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_SAT_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_SAT_SEL_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_INFO_COL); sat_cfg_reset_int(SAT_CFG_INT_POLAR_TRACK_COL); /* misc */ sat_cfg_reset_bool(SAT_CFG_BOOL_POL_SHOW_TRACK_AUTO); } reset = FALSE; } } /* * Create and initialise widgets for the polar view preferences tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_polar_view_create(GKeyFile * cfg) { GtkWidget *vbox; /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); /* create the components */ create_orient_selector(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 10); create_bool_selectors(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 10); create_colour_selectors(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 10); create_misc_selectors(cfg, GTK_BOX(vbox)); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 10); create_reset_button(cfg, GTK_BOX(vbox)); reset = FALSE; dirty = FALSE; return vbox; } gpredict/src/sat-pref-polar-view.h000066400000000000000000000003671427377236300174470ustar00rootroot00000000000000#ifndef SAT_PREF_POLAR_VIEW_H #define SAT_PREF_POLAR_VIEW_H 1 GtkWidget *sat_pref_polar_view_create(GKeyFile * cfg); void sat_pref_polar_view_cancel(GKeyFile * cfg); void sat_pref_polar_view_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-predict.c000066400000000000000000000054401427377236300170040ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pref-conditions.h" #include "sat-pref-multi-pass.h" #include "sat-pref-predict.h" #include "sat-pref-single-pass.h" #include "sat-pref-sky-at-glance.h" /** * Create and initialise widgets for the predictor tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_predict_create() { GtkWidget *nbook; nbook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_conditions_create(), gtk_label_new(_("Pass Conditions"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_multi_pass_create(), gtk_label_new(_("Multiple Passes"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_single_pass_create(), gtk_label_new(_("Single Pass"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_sky_at_glance_create(), gtk_label_new(_("Sky at a Glance"))); return nbook; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_predict_cancel() { sat_pref_conditions_cancel(); sat_pref_multi_pass_cancel(); sat_pref_single_pass_cancel(); sat_pref_sky_at_glance_cancel(); } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_predict_ok() { sat_pref_conditions_ok(); sat_pref_multi_pass_ok(); sat_pref_single_pass_ok(); sat_pref_sky_at_glance_ok(); } gpredict/src/sat-pref-predict.h000066400000000000000000000023271427377236300170120ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PREF_PREDICT_H #define SAT_PREF_PREDICT_H 1 GtkWidget *sat_pref_predict_create(void); void sat_pref_predict_cancel(void); void sat_pref_predict_ok(void); #endif gpredict/src/sat-pref-qth-data.h000066400000000000000000000037401427377236300170630ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2013 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Charles Suprin Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** Column definitions for QTH list. */ typedef enum { QTH_LIST_COL_NAME = 0, /*!< Name of the QTH. */ QTH_LIST_COL_LOC, /*!< Location, eg. "Copenhagen, Denmark". */ QTH_LIST_COL_DESC, /*!< Optional description. */ QTH_LIST_COL_LAT, /*!< Latitude in dec. deg. North. */ QTH_LIST_COL_LON, /*!< Longitude in dec. deg. East. */ QTH_LIST_COL_ALT, /*!< Altitude in meters. */ QTH_LIST_COL_QRA, /*!< QRA locator. */ QTH_LIST_COL_WX, /*!< 4 letter weather station. */ QTH_LIST_COL_DEF, /*!< Is this QTH the default one? */ QTH_LIST_COL_TYPE, /*!< Is this QTH the default one? */ QTH_LIST_COL_GPSD_SERVER, /*!< Is this QTH the default one? */ QTH_LIST_COL_GPSD_PORT, /*!< Is this QTH the default one? */ QTH_LIST_COL_NUM /*!< The number of fields. */ } qth_list_col_t; gpredict/src/sat-pref-qth-editor.c000066400000000000000000000720221427377236300174320ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC 2011 Charles Suprin, AA1VS This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* * Edit ground station details. * * The functions in this unit are used to edit the details of a given * ground station. The editor consists of a simple dialog window containing * widget for the individual setting. * * The functions can be used for editing the details of an existing ground * station or for adding a new location. In the first case, the widgets * in dialog will be preloaded with the existing data, while in the second * case the widgets will be empty and, upon successful completion a new * entry will be added to the GtkTreeView which contains the locations. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "gpredict-utils.h" #include "loc-tree.h" #include "locator.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-qth-data.h" #include "sat-pref-qth-editor.h" #define MAX_ALT 5000 /* maximum altitude for QTH in m */ /* * Symbolic refs to be used when calling select_location in order * to determine which mode the selection should run in, ie. * select location or select weather station. */ enum { SELECTION_MODE_LOC = 1, SELECTION_MODE_WX = 2 }; extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *dialog; /* dialog window */ static GtkWidget *name; /* QTH name */ static GtkWidget *location; /* QTH location */ static GtkWidget *desc; /* QTH description */ static GtkWidget *lat, *lon, *alt; /* LAT, LON and ALT */ static GtkWidget *ns, *ew; static GtkWidget *qra; /* QRA locator */ static gulong latsigid, lonsigid, nssigid, ewsigid, qrasigid; static GtkWidget *wx; /* weather station */ #ifdef HAS_LIBGPS static GtkWidget *type; /* GPSD type */ static GtkWidget *server; /* GPSD Server */ static GtkWidget *port; /* GPSD Port */ #endif /* Update widgets from the currently selected row in the treeview */ static void update_widgets(GtkTreeView * treeview) { GtkTreeSelection *selection; /* the selection in the tree view */ GtkTreeModel *model; /* the tree model corresponding to the selection */ GtkTreeIter iter; /* the iter of the selection */ gchar *qthname; /* location name */ gchar *qthdesc; /* location description */ gchar *qthloc; /* location */ gdouble qthlat; /* latitude */ gdouble qthlon; /* longitude */ guint qthalt; /* altitude */ gchar *qthwx; /* weather station */ gchar *qthgpsdserver; /* gpsdserver */ guint qthtype; /* type */ guint qthgpsdport; /* gpsdport */ selection = gtk_tree_view_get_selection(treeview); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { /* get values */ gtk_tree_model_get(model, &iter, QTH_LIST_COL_NAME, &qthname, QTH_LIST_COL_LOC, &qthloc, QTH_LIST_COL_DESC, &qthdesc, QTH_LIST_COL_LAT, &qthlat, QTH_LIST_COL_LON, &qthlon, QTH_LIST_COL_ALT, &qthalt, QTH_LIST_COL_WX, &qthwx, QTH_LIST_COL_GPSD_SERVER, &qthgpsdserver, QTH_LIST_COL_GPSD_PORT, &qthgpsdport, QTH_LIST_COL_TYPE, &qthtype, -1); /* update widgets and free memory afterwards */ if (qthname) { gtk_entry_set_text(GTK_ENTRY(name), qthname); } if (qthloc) { gtk_entry_set_text(GTK_ENTRY(location), qthloc); g_free(qthloc); } if (qthdesc) { gtk_entry_set_text(GTK_ENTRY(desc), qthdesc); g_free(qthdesc); } if (qthwx) { gtk_entry_set_text(GTK_ENTRY(wx), qthwx); g_free(qthwx); } #ifdef HAS_LIBGPS if (qthgpsdserver) { gtk_entry_set_text(GTK_ENTRY(server), qthgpsdserver); g_free(qthgpsdserver); } #endif if (qthlat < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), fabs(qthlat)); if (qthlon < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), fabs(qthlon)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), qthalt); #ifdef HAS_LIBGPS gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), qthgpsdport); gtk_combo_box_set_active(GTK_COMBO_BOX(type), qthtype); #endif sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Loaded %s for editing:\n" "LAT:%.4f LON:%.4f ALT:%d"), __FILE__, __LINE__, (qthname != NULL) ? qthname : "???", qthlat, qthlon, qthalt); g_free(qthname); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: No ground station selected!"), __FILE__, __LINE__); } } /** * Clear the contents of all widgets. * * This function is usually called when the user clicks on the CLEAR button * */ static void clear_widgets() { gtk_entry_set_text(GTK_ENTRY(name), ""); gtk_entry_set_text(GTK_ENTRY(location), ""); gtk_entry_set_text(GTK_ENTRY(desc), ""); gtk_entry_set_text(GTK_ENTRY(wx), ""); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), 0.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), 0.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), 0); gtk_entry_set_text(GTK_ENTRY(qra), ""); } /** * Apply changes. * @return TRUE if things are ok, FALSE otherwise. * * This function is usually called when the user clicks the OK button. */ static gboolean apply_changes(GtkTreeView * treeview, gboolean new) { GtkTreeSelection *selection; /* selection in the treeview */ GtkTreeModel *model; /* the tree model corresponding to the selection */ GtkListStore *liststore; /* the list store corresponding to the model */ GtkTreeIter iter; /* iter used to add and modify row data */ const gchar *qthname; const gchar *qthloc; const gchar *qthdesc; const gchar *qthwx; const gchar *qthgpsdserver; gdouble qthlat; gdouble qthlon; guint qthalt; guint qthtype; guint qthgpsdport; const gchar *qthqra; /* get values from dialog box */ qthname = gtk_entry_get_text(GTK_ENTRY(name)); qthloc = gtk_entry_get_text(GTK_ENTRY(location)); qthdesc = gtk_entry_get_text(GTK_ENTRY(desc)); qthwx = gtk_entry_get_text(GTK_ENTRY(wx)); #ifdef HAS_LIBGPS qthgpsdserver = gtk_entry_get_text(GTK_ENTRY(server)); #else qthgpsdserver = ""; #endif qthlat = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(ns))) qthlat = -qthlat; qthlon = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(ew))) qthlon = -qthlon; qthalt = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(alt)); #ifdef HAS_LIBGPS qthgpsdport = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(port)); qthtype = gtk_combo_box_get_active(GTK_COMBO_BOX(type)); #else qthgpsdport = 0; qthtype = 0; // FIXME: should probably use a #define #endif /* get liststore */ liststore = GTK_LIST_STORE(gtk_tree_view_get_model(treeview)); /* if this is a new entry, insert row into model */ if (new == TRUE) { gtk_list_store_append(liststore, &iter); } /* otherwise get current selection */ else { selection = gtk_tree_view_get_selection(treeview); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { liststore = GTK_LIST_STORE(model); } else { /* no selection; internal error */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Oooops, gpredict encountered an internal " "error (no selection in qth list)"), __FILE__, __LINE__); return FALSE; } } /* update values */ gtk_list_store_set(liststore, &iter, QTH_LIST_COL_NAME, qthname, QTH_LIST_COL_LOC, qthloc, QTH_LIST_COL_DESC, qthdesc, QTH_LIST_COL_LAT, qthlat, QTH_LIST_COL_LON, qthlon, QTH_LIST_COL_ALT, qthalt, QTH_LIST_COL_WX, qthwx, QTH_LIST_COL_GPSD_SERVER, qthgpsdserver, QTH_LIST_COL_GPSD_PORT, qthgpsdport, QTH_LIST_COL_TYPE, qthtype, -1); qthqra = gtk_entry_get_text(GTK_ENTRY(qra)); gtk_list_store_set(liststore, &iter, QTH_LIST_COL_QRA, qthqra, -1); return TRUE; } /** * Manage name changes. * * This function is called when the contents of the name entry changes. * The primary purpose of this function is to check whether the char length * of the name is greater than zero, if yes enable the OK button of the dialog. */ static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; (void)data; /* avoid unused parameter compiler warning */ /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } /** * Manage SELECT button clicks. * * This function is called when the user clicks on one of the SELECT buttons. * the data parameter contains information about which button has been clicked. */ static void select_location(GtkWidget * widget, gpointer data) { guint mode = GPOINTER_TO_UINT(data); guint flags; gchar *qthloc; gchar *qthwx; gfloat qthlat; gfloat qthlon; guint qthalt; gboolean selected = FALSE; (void)widget; /* avoid unused parameter compiler warning */ switch (mode) { /* We distinguish only between WX mode and "everything else". Although a value != 1 or 2 is definitely a bug, we need to have some sensible fall-back. */ case SELECTION_MODE_WX: flags = TREE_COL_FLAG_NAME | TREE_COL_FLAG_WX; break; default: flags = TREE_COL_FLAG_NAME | TREE_COL_FLAG_LAT | TREE_COL_FLAG_LON | TREE_COL_FLAG_ALT | TREE_COL_FLAG_WX; mode = SELECTION_MODE_LOC; break; } selected = loc_tree_create(NULL, flags, &qthloc, &qthlat, &qthlon, &qthalt, &qthwx); if (selected) { /* update widgets */ switch (mode) { case SELECTION_MODE_WX: gtk_entry_set_text(GTK_ENTRY(wx), qthwx); break; case SELECTION_MODE_LOC: gtk_entry_set_text(GTK_ENTRY(location), qthloc); gtk_entry_set_text(GTK_ENTRY(wx), qthwx); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), (gdouble) fabs(qthlat)); if (qthlat < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), (gdouble) fabs(qthlon)); if (qthlon < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alt), qthalt); break; default: /*** FIXME: add some error reporting */ break; } /* free some memory */ g_free(qthloc); g_free(qthwx); } /* else do nothing; we are finished */ } /** * Manage coordinate changes. * * This function is called when the qth coordinates change. The change can * be either one of the spin buttons or the combo boxes. It reads the * coordinates and the calculates the new Maidenhead locator square. */ static void latlon_changed(GtkWidget * widget, gpointer data) { gchar *locator; gint retcode; gdouble latf, lonf; (void)widget; /* avoid unused parameter compiler warning */ (void)data; /* avoid unused parameter compiler warning */ locator = g_try_malloc(7); /* no need to check locator != NULL, since hamlib func will do it for us and return RIGEINVAL */ lonf = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)); latf = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)); /* set the correct sign */ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ns))) { /* index 1 => South */ latf = -latf; } if (gtk_combo_box_get_active(GTK_COMBO_BOX(ew))) { /* index 1 => Wesr */ lonf = -lonf; } retcode = longlat2locator(lonf, latf, locator, 3); if (retcode == RIG_OK) { /* debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: %.2f %.2f => %s"), __FILE__, __func__, gtk_spin_button_get_value(GTK_SPIN_BUTTON(lon)), gtk_spin_button_get_value(GTK_SPIN_BUTTON(lat)), locator); g_signal_handler_block(qra, qrasigid); gtk_entry_set_text(GTK_ENTRY(qra), locator); g_signal_handler_unblock(qra, qrasigid); } else { /* send an error message and don't update */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error converting lon/lat to locator"), __FILE__, __LINE__); } if (locator) g_free(locator); } /** * Manage locator changes. * * This function is called when the Maidenhead locator is changed. * It will calculate the new coordinates and update the spin butrtons and * the combo boxes. */ static void qra_changed(GtkEntry * entry, gpointer data) { gint retcode; gdouble latf, lonf; gchar *msg; (void)entry; /* avoid unused parameter compiler warning */ (void)data; /* avoid unused parameter compiler warning */ retcode = locator2longlat(&lonf, &latf, gtk_entry_get_text(GTK_ENTRY(qra))); if (retcode == RIG_OK) { /* debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: %s => %.2f %.2f"), __FILE__, __func__, gtk_entry_get_text(GTK_ENTRY(qra)), lonf, latf); /* block signal emissions for lat/lon widgets */ g_signal_handler_block(lat, latsigid); g_signal_handler_block(lon, lonsigid); g_signal_handler_block(ns, nssigid); g_signal_handler_block(ew, ewsigid); g_signal_handler_block(qra, qrasigid); /* update widgets */ if (latf < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); if (lonf < 0.00) gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 1); else gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lat), fabs(latf)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lon), fabs(lonf)); /* make sure text is upper case */ msg = g_ascii_strup(gtk_entry_get_text(GTK_ENTRY(qra)), -1); gtk_entry_set_text(GTK_ENTRY(qra), msg); g_free(msg); /* unblock signal emissions */ g_signal_handler_unblock(lat, latsigid); g_signal_handler_unblock(lon, lonsigid); g_signal_handler_unblock(ns, nssigid); g_signal_handler_unblock(ew, ewsigid); g_signal_handler_unblock(qra, qrasigid); } else { /* send an error message and don't update */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid locator: %s"), __FILE__, __LINE__, gtk_entry_get_text(GTK_ENTRY(qra))); } } static GtkWidget *create_editor_widgets(GtkTreeView * treeview, gboolean new) { GtkWidget *table; GtkWidget *label; GtkWidget *locbut; GtkWidget *wxbut; table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 5); /* QTH name */ label = gtk_label_new(_("Name")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); name = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name), 25); gtk_widget_set_tooltip_text(name, _ ("Enter a short name for this ground station, " "e.g. callsign.\n" "Allowed characters: 0..9, a..z, A..Z, - and _")); gtk_grid_attach(GTK_GRID(table), name, 1, 0, 3, 1); /* attach changed signal so that we can enable OK button when a proper name has been entered */ g_signal_connect(name, "changed", G_CALLBACK(name_changed), NULL); /* QTH description */ label = gtk_label_new(_("Description")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); desc = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(desc), 256); gtk_widget_set_tooltip_text(desc, _("Enter an optional description for this" " ground station.")); gtk_grid_attach(GTK_GRID(table), desc, 1, 1, 3, 1); /* location */ label = gtk_label_new(_("Location")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); location = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(location), 50); gtk_widget_set_tooltip_text(location, _("Optional location of the ground station, " "e.g. Copenhagen, Denmark.")); gtk_grid_attach(GTK_GRID(table), location, 1, 2, 2, 1); locbut = gtk_button_new_with_label(_("Select")); gtk_widget_set_tooltip_text(locbut, _("Select a location from a list")); g_signal_connect(locbut, "clicked", G_CALLBACK(select_location), GUINT_TO_POINTER(SELECTION_MODE_LOC)); gtk_grid_attach(GTK_GRID(table), locbut, 3, 2, 1, 1); /* latitude */ label = gtk_label_new(_("Latitude (\302\260)")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); lat = gtk_spin_button_new_with_range(0.00, 90.00, 0.0001); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(lat), 0.0001, 1.0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(lat), TRUE); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lat), 4); gtk_widget_set_tooltip_text(lat, _("Select the latitude of the ground station " "in decimal degrees.")); gtk_grid_attach(GTK_GRID(table), lat, 1, 3, 1, 1); ns = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ns), _("North")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ns), _("South")); gtk_combo_box_set_active(GTK_COMBO_BOX(ns), 0); gtk_grid_attach(GTK_GRID(table), ns, 2, 3, 1, 1); /* longitude */ label = gtk_label_new(_("Longitude (\302\260)")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); lon = gtk_spin_button_new_with_range(0.00, 180.00, 0.0001); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(lon), 0.0001, 1.0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(lon), TRUE); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lon), 4); gtk_widget_set_tooltip_text(lon, _("Select the longitude of the ground station " "in decimal degrees.")); gtk_grid_attach(GTK_GRID(table), lon, 1, 4, 1, 1); ew = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ew), _("East")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ew), _("West")); gtk_combo_box_set_active(GTK_COMBO_BOX(ew), 0); gtk_grid_attach(GTK_GRID(table), ew, 2, 4, 1, 1); /* connect lat/lon spinners and combos to callback remember signal id so that we can block signals while doing automatic cross-updates */ latsigid = g_signal_connect(lat, "value-changed", G_CALLBACK(latlon_changed), NULL); lonsigid = g_signal_connect(lon, "value-changed", G_CALLBACK(latlon_changed), NULL); nssigid = g_signal_connect(ns, "changed", G_CALLBACK(latlon_changed), NULL); ewsigid = g_signal_connect(ew, "changed", G_CALLBACK(latlon_changed), NULL); /* QRA locator */ label = gtk_label_new(_("Locator")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); qra = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(qra), 6); gtk_widget_set_tooltip_text(qra, _("Maidenhead locator grid.")); qrasigid = g_signal_connect(qra, "changed", G_CALLBACK(qra_changed), NULL); gtk_grid_attach(GTK_GRID(table), qra, 1, 5, 1, 1); /* altitude */ label = gtk_label_new(_("Altitude")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) alt = gtk_spin_button_new_with_range(0, M_TO_FT(MAX_ALT), 1); else alt = gtk_spin_button_new_with_range(0, MAX_ALT, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(alt), 1, 100); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(alt), TRUE); gtk_widget_set_tooltip_text(alt, _("Select the altitude of the ground station " "in meters or feet " "depending on your settings")); gtk_grid_attach(GTK_GRID(table), alt, 1, 6, 1, 1); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) label = gtk_label_new(_("ft ASL")); else label = gtk_label_new(_("m ASL")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 6, 1, 1); /* weather station */ label = gtk_label_new(_("Weather St")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 7, 1, 1); wx = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(wx), 4); gtk_widget_set_tooltip_text(wx, _("Four letter code for weather station")); gtk_grid_attach(GTK_GRID(table), wx, 1, 7, 2, 1); wxbut = gtk_button_new_with_label(_("Select")); gtk_widget_set_tooltip_text(wxbut, _("Select a weather station")); g_signal_connect(wxbut, "clicked", G_CALLBACK(select_location), GUINT_TO_POINTER(SELECTION_MODE_WX)); gtk_grid_attach(GTK_GRID(table), wxbut, 3, 7, 1, 1); #ifdef HAS_LIBGPS /* GPSD enabled */ label = gtk_label_new(_("QTH Type")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 8, 1, 1); type = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("Static")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("GPSD")); gtk_combo_box_set_active(GTK_COMBO_BOX(type), 0); gtk_widget_set_tooltip_text(type, _("A qth can be static, ie. it does not " "change, or gpsd based for computers with " "gps attached.")); gtk_grid_attach(GTK_GRID(table), type, 1, 8, 1, 1); /* GPSD Server */ label = gtk_label_new(_("GPSD Server")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 9, 1, 1); server = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(server), 6000); gtk_widget_set_tooltip_text(server, _("GPSD Server.")); gtk_grid_attach(GTK_GRID(table), server, 1, 9, 1, 1); /* GPSD Port */ label = gtk_label_new(_("GPSD Port")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 10, 1, 1); port = gtk_spin_button_new_with_range(0, 32768, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(port), 1, 100); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(port), TRUE); gtk_widget_set_tooltip_text(port, _("Set the port for GPSD to use. Default for " "gpsd is 2947.")); gtk_grid_attach(GTK_GRID(table), port, 1, 10, 1, 1); #endif if (!new) update_widgets(treeview); gtk_widget_show_all(table); return table; } /* * Add or edit a QTH entry. * * The parameter new is used to indicate whether a new entry should be * created or just edit the one selected in the treeview. */ void sat_pref_qth_editor_run(GtkTreeView * treeview, gboolean new) { gint response; gboolean finished = FALSE; /* create dialog and add contents */ dialog = gtk_dialog_new_with_buttons(_("Edit ground station data"), GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Clear", GTK_RESPONSE_REJECT, "_Cancel", GTK_RESPONSE_CANCEL, "_OK", GTK_RESPONSE_OK, NULL); /* disable OK button to begin with */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), create_editor_widgets(treeview, new)); /* this hacky-thing is to keep the dialog running in case the CLEAR button is plressed. OK and CANCEL will exit the loop */ while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { case GTK_RESPONSE_OK: /* OK */ if (apply_changes(treeview, new)) finished = TRUE; else finished = FALSE; break; case GTK_RESPONSE_REJECT: /* CLEAR */ clear_widgets(); break; default: /* Everything else is considered CANCEL */ finished = TRUE; break; } } gtk_widget_destroy(dialog); } gpredict/src/sat-pref-qth-editor.h000066400000000000000000000002541427377236300174350ustar00rootroot00000000000000#ifndef SAT_PREF_QTH_EDITOR_H #define SAT_PREF_QTH_EDITOR_H 1 #include void sat_pref_qth_editor_run(GtkTreeView * treeview, gboolean new); #endif gpredict/src/sat-pref-qth.c000066400000000000000000001037631427377236300161550ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Charles Suprin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "locator.h" #include "qth-data.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-qth.h" #include "sat-pref-qth-data.h" #include "sat-pref-qth-editor.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *addbutton; static GtkWidget *editbutton; static GtkWidget *delbutton; static gulong handler_id; static GtkWidget *qthlist; /* we need access to this from the ok and cancel functions */ /* private function prototypes */ static GtkWidget *create_qth_list(void); static GtkTreeModel *create_and_fill_model(void); static guint read_qth_file(GtkListStore * liststore, gchar * filename); static GtkWidget *create_buttons(GtkTreeView * qthlist); static void default_toggled(GtkCellRendererToggle * cell, gchar * path_str, gpointer data); static gboolean clear_default_flags(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer defqth); static void float_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column); static void add_cb(GtkWidget * button, gpointer data); static void edit_cb(GtkWidget * button, gpointer data); static void delete_cb(GtkWidget * button, gpointer data); static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data); /* static gboolean check_and_set_default_qth (GtkTreeModel *model, */ /* GtkTreePath *path, */ /* GtkTreeIter *iter, */ /* gpointer data); */ static gboolean save_qth(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); static void delete_location_files(void); static gboolean convert_qth_altitude(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); /** * @brief Create and initialise widgets for the locations prefs tab. * * The QTH tab consists of two main parts: A list showing the configured * locations (.qth files in USER_CONF_DIR/ and three buttons beside the list: * Add Add a new location to the list * Edit Edit selected location * Delete Delete selected location * * @note This module uses the gtk-sat-data infrastructure to read and write * .qth files. * * Add button always active. * The other buttons are active only if a row is selected. * */ GtkWidget *sat_pref_qth_create() { GtkWidget *vbox; /* vbox containing the list part and the details part */ GtkWidget *swin; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); /* create qth list and pack into scrolled window */ qthlist = create_qth_list(); swin = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(swin), qthlist); gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), create_buttons(GTK_TREE_VIEW(qthlist)), FALSE, FALSE, 0); return vbox; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_qth_cancel() { } /** User pressed OK. Any changes should be stored in config. */ void sat_pref_qth_ok() { delete_location_files(); gtk_tree_model_foreach(gtk_tree_view_get_model(GTK_TREE_VIEW(qthlist)), save_qth, NULL); } /** Create QTH list widgets. */ static GtkWidget *create_qth_list() { GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; qthlist = gtk_tree_view_new(); model = create_and_fill_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(qthlist), model); g_object_unref(model); /* name column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "text", QTH_LIST_COL_NAME, NULL); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); /* location column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Location"), renderer, "text", QTH_LIST_COL_LOC, NULL); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); /* lat column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Lat"), renderer, "text", QTH_LIST_COL_LAT, NULL); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_cell_data_func(column, renderer, float_cell_data_function, GUINT_TO_POINTER(QTH_LIST_COL_LAT), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); /* lon column */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Lon"), renderer, "text", QTH_LIST_COL_LON, NULL); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_cell_data_func(column, renderer, float_cell_data_function, GUINT_TO_POINTER(QTH_LIST_COL_LON), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); /* alt column */ renderer = gtk_cell_renderer_text_new(); if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { column = gtk_tree_view_column_new_with_attributes(_("Alt\n(ft)"), renderer, "text", QTH_LIST_COL_ALT, NULL); } else { column = gtk_tree_view_column_new_with_attributes(_("Alt\n(m)"), renderer, "text", QTH_LIST_COL_ALT, NULL); } gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); gtk_tree_view_column_set_alignment(column, 0.5); /* locator */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("QRA"), renderer, "text", QTH_LIST_COL_QRA, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); gtk_tree_view_column_set_alignment(column, 0.5); /* weather station */ /* renderer = gtk_cell_renderer_text_new (); */ /* column = gtk_tree_view_column_new_with_attributes (_("WX"), renderer, */ /* "text", QTH_LIST_COL_WX, */ /* NULL); */ /* gtk_tree_view_insert_column (GTK_TREE_VIEW (qthlist), column, -1); */ /* gtk_tree_view_column_set_alignment (column, 0.5); */ /* default */ renderer = gtk_cell_renderer_toggle_new(); handler_id = g_signal_connect(renderer, "toggled", G_CALLBACK(default_toggled), model); column = gtk_tree_view_column_new_with_attributes(_("Default"), renderer, "active", QTH_LIST_COL_DEF, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(qthlist), column); gtk_tree_view_column_set_alignment(column, 0.5); g_signal_connect(qthlist, "row-activated", G_CALLBACK(row_activated_cb), NULL); #ifdef HAS_LIBGPS /* GPSD enabled */ /*server */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("GPSD\nServer"), renderer, "text", QTH_LIST_COL_GPSD_SERVER, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); gtk_tree_view_column_set_alignment(column, 0.5); /*port */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("GPSD\nPort"), renderer, "text", QTH_LIST_COL_GPSD_PORT, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); gtk_tree_view_column_set_alignment(column, 0.5); /*type */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("QTH\nType"), renderer, "text", QTH_LIST_COL_TYPE, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(qthlist), column, -1); gtk_tree_view_column_set_alignment(column, 0.5); #endif return qthlist; } /** * Create data storage for QTH list. * * This function creates the data storage necessary for the * list view. The newly created tree model is populated with * data from the .qth files in the users config directory. * The individual .qth files are read by the read_qth_file * function. */ static GtkTreeModel *create_and_fill_model() { GtkListStore *liststore; /* the list store data structure */ GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ const gchar *filename; /* file name */ gchar *buff; /* create a new list store */ liststore = gtk_list_store_new(QTH_LIST_COL_NUM, G_TYPE_STRING, // QTH name G_TYPE_STRING, // Location G_TYPE_STRING, // Description G_TYPE_DOUBLE, // Latitude G_TYPE_DOUBLE, // Longitude G_TYPE_INT, // Altitude G_TYPE_STRING, // QRA locator G_TYPE_STRING, // Weather station G_TYPE_BOOLEAN, // Default G_TYPE_INT, //type G_TYPE_STRING, //server G_TYPE_INT //port ); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(liststore), QTH_LIST_COL_NAME, GTK_SORT_ASCENDING); /* scan for .qth files in the user config directory and add the contents of each .qth file to the list store */ dirname = get_user_conf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".qth")) { buff = g_strconcat(dirname, G_DIR_SEPARATOR_S, filename, NULL); /* read qth file */ if (read_qth_file(liststore, buff)) { /* send debug message */ sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Read QTH data from %s."), __FILE__, __LINE__, filename); } else { /* error reading the file */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Error reading %s (see prev msg)"), __FILE__, __LINE__, filename); } g_free(buff); } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open user cfg dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); return GTK_TREE_MODEL(liststore); } /** * Read QTH file and add data to list store. * @param liststore The GtkListStore where the data should be stored. * @param filename The full name of the qth file. * @return 1 if read is successful, 0 if an error occurs. * * The function uses the gtk-sat-data infrastructure to read the qth * data from the specified file. * * There is a little challenge here. First, we want to read the data from * the .qth files and store them in the list store. To do this we use a * qth_t structure, which can be populated using gtk_sat_data_read_qth. * Then, when the configuration is finished and the user presses "OK", we * want to write all the data back to the .qth files. To do that, we create * an up-to-date qth_t data structure and pass it to the gtk_sat_data_write_qth * function, which will take care of updating the GKeyFile data structure and * writing the contents to the .qth file. */ static guint read_qth_file(GtkListStore * liststore, gchar * filename) { GtkTreeIter item; /* new item added to the list store */ qth_t *qth; /* qth data structure */ gchar *defqth; gboolean is_default = FALSE; gchar *fname; gint dispalt; /* displayed altitude */ if ((qth = g_try_new0(qth_t, 1)) == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to allocate memory!\n"), __FILE__, __LINE__); return FALSE; } /* read data from file */ if (!qth_data_read(filename, qth)) { g_free(qth); return FALSE; } /* calculate QRA locator */ gint retcode; qth->qra = g_malloc(7); retcode = longlat2locator(qth->lon, qth->lat, qth->qra, 3); if (retcode != RIG_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Could not convert (%.2f,%.2f) to QRA."), __FILE__, __LINE__, qth->lat, qth->lon); qth->qra[0] = '\0'; } else { qth->qra[6] = '\0'; sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: QRA locator is %s"), __FILE__, __LINE__, qth->qra); } /* is this the default qth? */ defqth = sat_cfg_get_str(SAT_CFG_STR_DEF_QTH); if (g_str_has_suffix(filename, defqth)) { is_default = TRUE; sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: This appears to be the default QTH."), __FILE__, __LINE__); } g_free(defqth); /* check wehter we are using imperial or metric system; in case of imperial we have to convert altitude from meters to feet. note: the internat data are always kept in metric and only the displayed numbers are converted. Therefore, we use a dedicated var 'dispalt' */ /* NO, ONLY DISPLAY WIDGETS WILL BE AFFECTED BY THIS SETTING */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { dispalt = (gint) M_TO_FT(qth->alt); } else { dispalt = (gint) qth->alt; } /* strip file name; we don't need the whole path */ fname = g_path_get_basename(filename); /* we now have all necessary data in the qth_t structure; add the data to the list store */ gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, QTH_LIST_COL_NAME, qth->name, QTH_LIST_COL_LOC, qth->loc, QTH_LIST_COL_DESC, qth->desc, QTH_LIST_COL_LAT, qth->lat, QTH_LIST_COL_LON, qth->lon, QTH_LIST_COL_ALT, dispalt, QTH_LIST_COL_QRA, qth->qra, QTH_LIST_COL_WX, qth->wx, QTH_LIST_COL_DEF, is_default, QTH_LIST_COL_TYPE, qth->type, QTH_LIST_COL_GPSD_SERVER, qth->gpsd_server, QTH_LIST_COL_GPSD_PORT, qth->gpsd_port, -1); g_free(fname); /* we are finished with this qth, free it */ qth_data_free(qth); return TRUE; } /** * Create buttons. * @param qthlist The GtkTreeView widget containing the qth data. * @return A button box containing the buttons. * * This function creates and initialises the three buttons below the qth list. * The treeview widget is needed by the buttons when they are activated. */ static GtkWidget *create_buttons(GtkTreeView * qthlist) { GtkWidget *box; /* add button */ addbutton = gtk_button_new_with_label(_("Add new")); gtk_widget_set_tooltip_text(addbutton, _("Add a new ground station to the list")); g_signal_connect(addbutton, "clicked", G_CALLBACK(add_cb), qthlist); /* edit button */ editbutton = gtk_button_new_with_label(_("Edit")); gtk_widget_set_tooltip_text(editbutton, _("Edit the selected ground station")); g_signal_connect(editbutton, "clicked", G_CALLBACK(edit_cb), qthlist); /* delete button; don't forget to delete file.... */ delbutton = gtk_button_new_with_label(_("Delete")); gtk_widget_set_tooltip_text(delbutton, _("Delete selected ground station")); g_signal_connect(delbutton, "clicked", G_CALLBACK(delete_cb), qthlist); /* vertical button box */ box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(box), GTK_BUTTONBOX_START); gtk_container_add(GTK_CONTAINER(box), addbutton); gtk_container_add(GTK_CONTAINER(box), editbutton); gtk_container_add(GTK_CONTAINER(box), delbutton); return box; } static void add_cb(GtkWidget * button, gpointer data) { GtkTreeView *qthlist = GTK_TREE_VIEW(data); (void)button; sat_pref_qth_editor_run(qthlist, TRUE); } static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data) { (void)path; (void)column; (void)user_data; sat_pref_qth_editor_run(tree_view, FALSE); } static void edit_cb(GtkWidget * button, gpointer data) { GtkTreeView *qthlist = GTK_TREE_VIEW(data); (void)button; sat_pref_qth_editor_run(qthlist, FALSE); } /** * Delete selected location * * This function is called when the user clicks the DELETE button. * If there are more than one locations defined in the list, the function * will delete the selected one. If the deleted location used to be the default * location, the first entry in the list will be selected as new default location. * * @note This function only deletes from the QTH list, not from disk. If the user * eventually presses OK, all QTH files will be removed before the new data * is rewritten to disk, thus the deleted entry will not be saved again. On * the other hand, if user clicks cancel, the delete process will be undone. */ static void delete_cb(GtkWidget * button, gpointer data) { GtkTreeView *qthlist = GTK_TREE_VIEW(data); GtkTreeModel *model = gtk_tree_view_get_model(qthlist); GtkTreeModel *selmod; GtkTreeSelection *selection; GtkTreeIter iter; (void)button; /* if this is the only entry, tell user that it is not possible to delete */ if (gtk_tree_model_iter_n_children(model, NULL) < 2) { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Can not delete ground station!\n\n" "You need to have at least one ground\n" "station set up, otherwise gpredict may\n" "not work properly.")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { /* get selected row FIXME: do we really need to work with two models? */ selection = gtk_tree_view_get_selection(qthlist); if (gtk_tree_selection_get_selected(selection, &selmod, &iter)) { gboolean neednewdef = FALSE; gchar *buff; gtk_tree_model_get(selmod, &iter, QTH_LIST_COL_DEF, &neednewdef, QTH_LIST_COL_NAME, &buff, -1); g_free(buff); /* delete qth entry from list */ gtk_list_store_remove(GTK_LIST_STORE(selmod), &iter); /* if the selected qth entry is the default one select the first entry in the list as the new default qth. */ if (neednewdef) { if (gtk_tree_model_get_iter_first(model, &iter)) { gtk_list_store_set(GTK_LIST_STORE(model), &iter, QTH_LIST_COL_DEF, TRUE, -1); } else { /* huh? no more entries, this is a bug! */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Empty ground station list!"), __FILE__, __LINE__); } } } } } /** * Handle toggle events on "Default" check box * @param cell The item that received the signal. * @param path_str Path string. * @param data Pointer to user data (list store). * * This function is called when the user clicks on "Default" check box * indicating that a new default location has been selected. If the * clicked check box has been un-checked the action is ignored, because * we need a default location. If the clicked check box has been checked, * the default flag of the checked QTH is set to TRUE, while the flag is * cleared for all the other QTH's. */ static void default_toggled(GtkCellRendererToggle * cell, gchar * path_str, gpointer data) { GtkTreeModel *model = (GtkTreeModel *) data; GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(path_str); gboolean fixed; gchar *defqth; /* block toggle signals while we mess with the check boxes */ g_signal_handler_block(cell, handler_id); /* get toggled iter */ gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, QTH_LIST_COL_DEF, &fixed, -1); if (fixed) { /* do nothing except sending a message */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: Default QTH can not be cleared! " "Select another QTH to change default."), __FILE__, __LINE__); } else { /* make this qth new default */ gtk_list_store_set(GTK_LIST_STORE(model), &iter, QTH_LIST_COL_DEF, TRUE, -1); /* copy file name of new default QTH to a string buffer */ gtk_tree_model_get(model, &iter, QTH_LIST_COL_NAME, &defqth, -1); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: New default QTH is %s.qth."), __FILE__, __LINE__, defqth); /* clear the default flag for the other qth */ gtk_tree_model_foreach(model, clear_default_flags, defqth); g_free(defqth); } /* clean up */ gtk_tree_path_free(path); /* unblock toggle signals */ g_signal_handler_unblock(cell, handler_id); } /** * Clear default flag for all qth, except defqth. * @param model The GtkTreeModel. * @param path The GtkTreePath. * @param iter The GtkTreeIter of the current item. * @param defqth The file name of the new default which should not be cleared. * * This function is called for each QTH entry in the QTH list with the purpose of * clearing the default flag. This happens when the user selects a new QTH to be * the default QTH and the other ones need to be cleared. */ static gboolean clear_default_flags(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer defqth) { gchar *thisqth; (void)path; gtk_tree_model_get(model, iter, QTH_LIST_COL_NAME, &thisqth, -1); /* clear flag if this is not the new default QTH */ if (g_ascii_strcasecmp(thisqth, (gchar *) defqth)) { gtk_list_store_set(GTK_LIST_STORE(model), iter, QTH_LIST_COL_DEF, FALSE, -1); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Clearing default flag for %s."), __FILE__, __LINE__, thisqth); } g_free(thisqth); return FALSE; } /* render column containing float by using this instead of the default data function, we can control the number of decimals and display the coordinates in a fancy way, including degree sign and NWSE suffixes. Please note that this function only affects how the numbers are displayed (rendered), the tree_store will still contain the original floating point numbers. Very cool! */ static void float_cell_data_function(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); gchar hmf = ' '; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* check whether configuration requests the use of N, S, E and W instead of signs */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_NSEW)) { if (coli == QTH_LIST_COL_LAT) { if (number < 0.0) { number *= -1.0; hmf = 'S'; } else { hmf = 'N'; } } else if (coli == QTH_LIST_COL_LON) { if (number < 0.0) { number *= -1.0; hmf = 'W'; } else { hmf = 'E'; } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Invalid column: %d"), __FILE__, __LINE__, coli); hmf = '?'; } } /* format the number */ buff = g_strdup_printf("%.4f\302\260%c", number, hmf); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /** Save a row from the QTH list (called by the save function) */ static gboolean save_qth(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { qth_t qth; gboolean def = FALSE; gchar *filename, *confdir; gchar *buff; (void)path; (void)data; gtk_tree_model_get(model, iter, QTH_LIST_COL_DEF, &def, QTH_LIST_COL_NAME, &qth.name, QTH_LIST_COL_LOC, &qth.loc, QTH_LIST_COL_DESC, &qth.desc, QTH_LIST_COL_LAT, &qth.lat, QTH_LIST_COL_LON, &qth.lon, QTH_LIST_COL_ALT, &qth.alt, QTH_LIST_COL_WX, &qth.wx, QTH_LIST_COL_TYPE, &qth.type, QTH_LIST_COL_GPSD_SERVER, &qth.gpsd_server, QTH_LIST_COL_GPSD_PORT, &qth.gpsd_port, -1); confdir = get_user_conf_dir(); filename = g_strconcat(confdir, G_DIR_SEPARATOR_S, qth.name, ".qth", NULL); g_free(confdir); /* check wehter we are using imperial or metric system; in case of imperial we have to convert altitude from feet to meters before saving. */ if (sat_cfg_get_bool(SAT_CFG_BOOL_USE_IMPERIAL)) { qth.alt = (guint) FT_TO_M(qth.alt); } if (qth_data_save(filename, &qth)) { /* saved ok, go on check whether qth is default */ if (def) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%d: %s appears to be default QTH"), __FILE__, __LINE__, qth.name); buff = g_path_get_basename(filename); sat_cfg_set_str(SAT_CFG_STR_DEF_QTH, buff); g_free(buff); } } g_free(filename); g_free(qth.name); g_free(qth.loc); g_free(qth.desc); g_free(qth.wx); return FALSE; } /** * Remove .qth files. * * This function is used to remove any existing .qth file * before storing the data from the QTH list. */ static void delete_location_files() { GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ const gchar *filename; /* file name */ gchar *buff; /* scan for .qth files in the user config directory and add the contents of each .qth file to the list store */ dirname = get_user_conf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".qth")) { buff = g_strconcat(dirname, G_DIR_SEPARATOR_S, filename, NULL); /* remove file */ if (g_remove(buff)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to remove %s"), __FILE__, __LINE__, filename); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Removed %s"), __FILE__, __LINE__, filename); } g_free(buff); } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open user cfg dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); } /** * Manage measurement system changes. * * This function should be called when the user changes between the * metric and imperial systems. When that happens, we need to convert * location altitudeas right away, otherwise the altitudes in the qth * list will keep their old values in the new system. * * If imperial = TRUE the new system is imperial and so we have to use * M_TO_FT. */ void sat_pref_qth_sys_changed(gboolean imperial) { gtk_tree_model_foreach(gtk_tree_view_get_model(GTK_TREE_VIEW(qthlist)), convert_qth_altitude, GUINT_TO_POINTER(imperial)); } /** * Convert altitude of the specified QTH entry. * * The data contain pointer to a boolean indicating whether the new * system is imperial (TRUE) or metric (FALSE) */ static gboolean convert_qth_altitude(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { gint alti; GtkTreeViewColumn *column; gchar *title; (void)path; /* first, get the current altitude and other data */ gtk_tree_model_get(model, iter, QTH_LIST_COL_ALT, &alti, -1); column = gtk_tree_view_get_column(GTK_TREE_VIEW(qthlist), 3); if (GPOINTER_TO_UINT(data)) { /* new sys is imperial */ alti = M_TO_FT(alti); title = g_strdup(_("Alt (ft)")); } else { /* new sys is metric */ alti = FT_TO_M(alti); title = g_strdup(_("Alt (m)")); } /* store new value */ gtk_list_store_set(GTK_LIST_STORE(model), iter, QTH_LIST_COL_ALT, alti, -1); /* update column title */ gtk_tree_view_column_set_title(column, title); g_free(title); return FALSE; } gpredict/src/sat-pref-qth.h000066400000000000000000000004111427377236300161440ustar00rootroot00000000000000#ifndef SAT_PREF_QTH_H #define SAT_PREF_QTH_H 1 GtkWidget *sat_pref_qth_create(void); void sat_pref_qth_cancel(void); void sat_pref_qth_ok(void); /* external hooks */ void sat_pref_qth_sys_changed(gboolean imperial); #endif gpredict/src/sat-pref-refresh.c000066400000000000000000000365731427377236300170230ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-pref-refresh.h" static GtkWidget *dataspin; /* spin button for module refresh rate */ static GtkWidget *listspin; /* spin button for list view */ static GtkWidget *mapspin; /* spin button for map view */ static GtkWidget *polarspin; /* spin button for polar view */ static GtkWidget *singlespin; /* spin button for single-sat view */ static gboolean dirty = FALSE; /* used to check whether any changes have occurred */ static gboolean reset = FALSE; /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_refresh_cancel(GKeyFile * cfg) { (void)cfg; dirty = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_refresh_ok(GKeyFile * cfg) { if (dirty) { if (cfg != NULL) { g_key_file_set_integer(cfg, MOD_CFG_GLOBAL_SECTION, MOD_CFG_TIMEOUT_KEY, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(dataspin))); g_key_file_set_integer(cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_REFRESH, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(listspin))); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_REFRESH, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(mapspin))); g_key_file_set_integer(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_REFRESH, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(polarspin))); g_key_file_set_integer(cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(singlespin))); } else { sat_cfg_set_int(SAT_CFG_INT_MODULE_TIMEOUT, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (dataspin))); sat_cfg_set_int(SAT_CFG_INT_LIST_REFRESH, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (listspin))); sat_cfg_set_int(SAT_CFG_INT_MAP_REFRESH, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (mapspin))); sat_cfg_set_int(SAT_CFG_INT_POLAR_REFRESH, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (polarspin))); sat_cfg_set_int(SAT_CFG_INT_SINGLE_SAT_REFRESH, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (singlespin))); } } else if (reset) { /* we have to reset the values to global or default settings */ if (cfg == NULL) { /* reset values in sat-cfg */ sat_cfg_reset_int(SAT_CFG_INT_MODULE_TIMEOUT); sat_cfg_reset_int(SAT_CFG_INT_LIST_REFRESH); sat_cfg_reset_int(SAT_CFG_INT_MAP_REFRESH); sat_cfg_reset_int(SAT_CFG_INT_POLAR_REFRESH); sat_cfg_reset_int(SAT_CFG_INT_SINGLE_SAT_REFRESH); } else { /* remove keys */ g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_GLOBAL_SECTION, MOD_CFG_TIMEOUT_KEY, NULL); g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_LIST_SECTION, MOD_CFG_LIST_REFRESH, NULL); g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_MAP_SECTION, MOD_CFG_MAP_REFRESH, NULL); g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_REFRESH, NULL); g_key_file_remove_key((GKeyFile *) (cfg), MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, NULL); } } dirty = FALSE; reset = FALSE; } static void spin_changed_cb(GtkWidget * spinner, gpointer data) { (void)spinner; (void)data; dirty = TRUE; } /** * Reset settings. * * @param button The RESET button. * @param cfg Pointer to the module config or NULL in global mode. * * This function is called when the user clicks on the RESET button. In global mode * (when cfg = NULL) the function will reset the settings to the efault values, while * in "local" mode (when cfg != NULL) the function will reset the module settings to * the global settings. This is done by removing the corresponding key from the GKeyFile. */ static void reset_cb(GtkWidget * button, gpointer cfg) { gint val; (void)button; /* views */ if (cfg == NULL) { /* global mode, get defaults */ val = sat_cfg_get_int_def(SAT_CFG_INT_MODULE_TIMEOUT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(dataspin), val); val = sat_cfg_get_int_def(SAT_CFG_INT_LIST_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(listspin), val); val = sat_cfg_get_int_def(SAT_CFG_INT_MAP_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(mapspin), val); val = sat_cfg_get_int_def(SAT_CFG_INT_POLAR_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(polarspin), val); val = sat_cfg_get_int_def(SAT_CFG_INT_SINGLE_SAT_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(singlespin), val); } else { /* local mode, get global value */ val = sat_cfg_get_int(SAT_CFG_INT_MODULE_TIMEOUT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(dataspin), val); val = sat_cfg_get_int(SAT_CFG_INT_LIST_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(listspin), val); val = sat_cfg_get_int(SAT_CFG_INT_MAP_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(mapspin), val); val = sat_cfg_get_int(SAT_CFG_INT_POLAR_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(polarspin), val); val = sat_cfg_get_int(SAT_CFG_INT_SINGLE_SAT_REFRESH); gtk_spin_button_set_value(GTK_SPIN_BUTTON(singlespin), val); } /* reset flags */ reset = TRUE; dirty = FALSE; } static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _ ("Reset settings to the default values.")); } else { gtk_widget_set_tooltip_text(button, _ ("Reset module settings to the global values.")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_refresh_create(GKeyFile * cfg) { GtkWidget *table; GtkWidget *vbox; GtkWidget *label; gint val; dirty = FALSE; reset = FALSE; table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* data refresh */ label = gtk_label_new(_("Refresh data every")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); dataspin = gtk_spin_button_new_with_range(100, 10000, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(dataspin), 1, 100); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(dataspin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(dataspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int(cfg, MOD_CFG_GLOBAL_SECTION, MOD_CFG_TIMEOUT_KEY, SAT_CFG_INT_MODULE_TIMEOUT); } else { val = sat_cfg_get_int(SAT_CFG_INT_MODULE_TIMEOUT); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(dataspin), val); g_signal_connect(G_OBJECT(dataspin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), dataspin, 1, 0, 1, 1); label = gtk_label_new(_("[msec]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 0, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 1, 3, 1); /* List View */ label = gtk_label_new(_("Refresh list view every")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); listspin = gtk_spin_button_new_with_range(1, 50, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(listspin), 1, 5); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(listspin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(listspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int(cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_REFRESH, SAT_CFG_INT_LIST_REFRESH); } else { val = sat_cfg_get_int(SAT_CFG_INT_LIST_REFRESH); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(listspin), val); g_signal_connect(G_OBJECT(listspin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), listspin, 1, 2, 1, 1); label = gtk_label_new(_("[cycle]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 2, 1, 1); /* Map View */ label = gtk_label_new(_("Refresh map view every")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); mapspin = gtk_spin_button_new_with_range(1, 50, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(mapspin), 1, 5); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mapspin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mapspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_REFRESH, SAT_CFG_INT_MAP_REFRESH); } else { val = sat_cfg_get_int(SAT_CFG_INT_MAP_REFRESH); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(mapspin), val); g_signal_connect(G_OBJECT(mapspin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), mapspin, 1, 3, 1, 1); label = gtk_label_new(_("[cycle]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); /* Polar View */ label = gtk_label_new(_("Refresh polar view every")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); polarspin = gtk_spin_button_new_with_range(1, 50, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(polarspin), 1, 5); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(polarspin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(polarspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int(cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_REFRESH, SAT_CFG_INT_POLAR_REFRESH); } else { val = sat_cfg_get_int(SAT_CFG_INT_POLAR_REFRESH); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(polarspin), val); g_signal_connect(G_OBJECT(polarspin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), polarspin, 1, 4, 1, 1); label = gtk_label_new(_("[cycle]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 4, 1, 1); /* Single-Sat View */ label = gtk_label_new(_("Refresh single-sat view every")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); singlespin = gtk_spin_button_new_with_range(1, 50, 1); gtk_spin_button_set_increments(GTK_SPIN_BUTTON(singlespin), 1, 5); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(singlespin), TRUE); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(singlespin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int(cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, SAT_CFG_INT_SINGLE_SAT_REFRESH); } else { val = sat_cfg_get_int(SAT_CFG_INT_SINGLE_SAT_REFRESH); } gtk_spin_button_set_value(GTK_SPIN_BUTTON(singlespin), val); g_signal_connect(G_OBJECT(singlespin), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), singlespin, 1, 5, 1, 1); label = gtk_label_new(_("[cycle]")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 5, 1, 1); /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(cfg, GTK_BOX(vbox)); return vbox; } gpredict/src/sat-pref-refresh.h000066400000000000000000000003501427377236300170100ustar00rootroot00000000000000#ifndef SAT_PREF_REFRESH_H #define SAT_PREF_REFRESH_H 1 GtkWidget *sat_pref_refresh_create(GKeyFile * cfg); void sat_pref_refresh_cancel(GKeyFile * cfg); void sat_pref_refresh_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-rig-data.h000066400000000000000000000035071427377236300170510ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2015 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PREF_RIG_DATA_H #define SAT_PREF_RIG_DATA_H 1 /** \brief Coumn definitions for radio list. */ typedef enum { RIG_LIST_COL_NAME = 0, /*!< File name. */ RIG_LIST_COL_HOST, /*!< Hostname, e.g. localhost */ RIG_LIST_COL_PORT, /*!< Port number */ RIG_LIST_COL_TYPE, /*!< Radio type */ RIG_LIST_COL_PTT, /*!< PTT */ RIG_LIST_COL_VFOUP, /*!< VFO Up */ RIG_LIST_COL_VFODOWN, /*!< VFO down */ RIG_LIST_COL_LO, /*!< Local oscillator freq (downlink) */ RIG_LIST_COL_LOUP, /*!< Local oscillato freq (uplink) */ RIG_LIST_COL_SIGAOS, /*!< Signal AOS */ RIG_LIST_COL_SIGLOS, /*!< Signal LOS */ RIG_LIST_COL_NUM /*!< The number of fields in the list. */ } rig_list_col_t; #endif gpredict/src/sat-pref-rig-editor.c000066400000000000000000000540251427377236300174220ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "gpredict-utils.h" #include "radio-conf.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-rig-editor.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *dialog; /* dialog window */ static GtkWidget *name; /* config name */ static GtkWidget *host; /* host */ static GtkWidget *port; /* port number */ static GtkWidget *type; /* rig type */ static GtkWidget *ptt; /* PTT */ static GtkWidget *vfo; /* VFO Up/Down selector */ static GtkWidget *lo; /* local oscillator of downconverter */ static GtkWidget *loup; /* local oscillator of upconverter */ static GtkWidget *sigaos; /* AOS signalling */ static GtkWidget *siglos; /* LOS signalling */ static void clear_widgets() { gtk_entry_set_text(GTK_ENTRY(name), ""); gtk_entry_set_text(GTK_ENTRY(host), "localhost"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4532); /* hamlib default? */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(lo), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(loup), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(type), RIG_TYPE_RX); gtk_combo_box_set_active(GTK_COMBO_BOX(ptt), PTT_TYPE_NONE); gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ptt), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaos), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(siglos), FALSE); } static void update_widgets(radio_conf_t * conf) { /* configuration name */ gtk_entry_set_text(GTK_ENTRY(name), conf->name); /* host name */ if (conf->host) gtk_entry_set_text(GTK_ENTRY(host), conf->host); /* port */ if (conf->port > 1023) gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), conf->port); else gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4532); /* hamlib default? */ /* radio type */ gtk_combo_box_set_active(GTK_COMBO_BOX(type), conf->type); /* ptt */ gtk_combo_box_set_active(GTK_COMBO_BOX(ptt), conf->ptt); /* vfo up/down */ if (conf->type == RIG_TYPE_DUPLEX) { if (conf->vfoUp == VFO_MAIN) gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 1); else if (conf->vfoUp == VFO_SUB) gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 2); else if (conf->vfoUp == VFO_A) gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 3); else gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 4); } /* lo down in MHz */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(lo), conf->lo / 1000000.0); /* lo up in MHz */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(loup), conf->loup / 1000000.0); /* AOS / LOS signalling */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaos), conf->signal_aos); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(siglos), conf->signal_los); } /* * Manage VFO changed signals. * Widget is the GtkComboBox that received the signal. * * This function is called when the user selects a new VFO up/down combination. */ static void vfo_changed(GtkWidget * widget, gpointer data) { (void)data; if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == 0 && gtk_combo_box_get_active(GTK_COMBO_BOX(type)) == RIG_TYPE_DUPLEX) { /* not good, we need to have proper VFO combi for this type */ gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1); } } /* * Manage ptt type changed signals. * Widget is the GtkComboBox that received the signal. * * This function is called when the user selects a new ptt type. */ static void ptt_changed(GtkWidget * widget, gpointer data) { (void)data; if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == PTT_TYPE_NONE && gtk_combo_box_get_active(GTK_COMBO_BOX(type)) == RIG_TYPE_TRX) { /* not good, we need to have PTT for this type */ gtk_combo_box_set_active(GTK_COMBO_BOX(widget), PTT_TYPE_CAT); } } /* * Manage name changes. * * This function is called when the contents of the name entry changes. * The primary purpose of this function is to check whether the char length * of the name is greater than zero, if yes enable the OK button of the dialog. */ static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; (void)data; /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } /* * Manage rig type changed signals. * widget os the GtkComboBox that received the signal. * * This function is called when the user selects a new radio type. */ static void type_changed(GtkWidget * widget, gpointer data) { (void)data; /* PTT consistency */ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == RIG_TYPE_TRX) { if (gtk_combo_box_get_active(GTK_COMBO_BOX(ptt)) == PTT_TYPE_NONE) { gtk_combo_box_set_active(GTK_COMBO_BOX(ptt), PTT_TYPE_CAT); } } if ((gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == RIG_TYPE_TOGGLE_AUTO) || (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == RIG_TYPE_TOGGLE_MAN)) { gtk_combo_box_set_active(GTK_COMBO_BOX(ptt), PTT_TYPE_CAT); } /* VFO consistency */ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == RIG_TYPE_DUPLEX && gtk_combo_box_get_active(GTK_COMBO_BOX(vfo)) == 0) { gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 1); } } static GtkWidget *create_editor_widgets(radio_conf_t * conf) { GtkWidget *table; GtkWidget *label; table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); /* Config name */ label = gtk_label_new(_("Name")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); name = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name), 25); g_signal_connect(name, "changed", G_CALLBACK(name_changed), NULL); gtk_widget_set_tooltip_text(name, _("Enter a short name for this configuration, " "e.g. IC910-1.\n" "Allowed characters: " "0..9, a..z, A..Z, - and _")); gtk_grid_attach(GTK_GRID(table), name, 1, 0, 3, 1); /* Host */ label = gtk_label_new(_("Host")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); host = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(host), 50); gtk_entry_set_text(GTK_ENTRY(host), "localhost"); gtk_widget_set_tooltip_text(host, _("Enter the host where rigctld is running. " "You can use both host name and IP address, " "e.g. 192.168.1.100\n\n" "If gpredict and rigctld are running on the " "same computer use localhost")); gtk_grid_attach(GTK_GRID(table), host, 1, 1, 3, 1); /* port */ label = gtk_label_new(_("Port")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); port = gtk_spin_button_new_with_range(1024, 65535, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4532); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(port), 0); gtk_widget_set_tooltip_text(port, _("Enter the port number where rigctld is " "listening")); gtk_grid_attach(GTK_GRID(table), port, 1, 2, 1, 1); /* radio type */ label = gtk_label_new(_("Radio type")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); //gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4); gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); type = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("RX only")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("TX only")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("Half-duplex")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("Full-duplex")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("FT817/857/897 (auto)")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(type), _("FT817/857/897 (manual)")); gtk_combo_box_set_active(GTK_COMBO_BOX(type), RIG_TYPE_RX); g_signal_connect(type, "changed", G_CALLBACK(type_changed), NULL); gtk_widget_set_tooltip_markup(type, _("RX only: The radio shall only be " "used as receiver. If Monitor PTT " "status is checked the doppler tuning " "will be suspended while PTT is ON " "(manual TX). If not, the controller will " "always perform doppler tuning and " "you cannot use the same RIG for uplink.\n\n" "TX only: The radio shall only be " "used for uplink. If Monitor PTT status" " is checked the doppler tuning will be " "suspended while PTT is OFF (manual RX).\n\n" "Half-duplex: The radio should be " "used for both up- and downlink but not at " "the same time. This option requires " "that the PTT status is monitored (otherwise " "gpredict cannot know whether to tune the " "RX or the TX).\n\n" "Full-duplex: The radio is a full-duplex" " radio, such as the IC910H. Gpredict will " "be continuously tuning both uplink and " "downlink simultaneously and not care about " "PTT setting.\n\n" "FT817/857/897 (auto): " "This is a special mode that can be used with " "YAESU FT-817, 857 and 897 radios. These radios" " do not allow computer control while in TX mode." " Therefore, TX Doppler correction is applied " "while the radio is in RX mode by toggling " "between VFO A/B.\n\n" "FT817/857/897 (manual): " "This is similar to the previous mode except" " that switching to TX is done by pressing the" " SPACE key on the keyboard. Gpredict will " "then update the TX Doppler before actually" " switching to TX.")); gtk_grid_attach(GTK_GRID(table), type, 1, 3, 2, 1); /* ptt */ label = gtk_label_new(_("PTT status")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); ptt = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ptt), _("None")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ptt), _("Read PTT")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ptt), _("Read DCD")); gtk_combo_box_set_active(GTK_COMBO_BOX(ptt), 0); g_signal_connect(ptt, "changed", G_CALLBACK(ptt_changed), NULL); gtk_widget_set_tooltip_markup(ptt, _("Select PTT type.\n\n" "None:\nDon't read PTT status from this radio.\n\n" "Read PTT:\nRead PTT status using get_ptt CAT command. " "You have to check that your radio and hamlib supports this.\n\n" "Read DCD:\nRead PTT status using get_dcd command. " "This can be used if your radio does not support the read_ptt " "CAT command and you have a special interface that can " "read squelch status and send it via CTS.")); gtk_grid_attach(GTK_GRID(table), ptt, 1, 4, 2, 1); /* VFO Up/Down */ label = gtk_label_new(_("VFO Up/Down")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); vfo = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(vfo), _("Not applicable")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(vfo), _("MAIN \342\206\221 / SUB \342\206\223")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(vfo), _("SUB \342\206\221 / MAIN \342\206\223")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(vfo), _("A \342\206\221 / B \342\206\223")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(vfo), _("B \342\206\221 / A \342\206\223")); gtk_combo_box_set_active(GTK_COMBO_BOX(vfo), 0); g_signal_connect(vfo, "changed", G_CALLBACK(vfo_changed), NULL); gtk_widget_set_tooltip_markup(vfo, _ ("Select which VFO to use for uplink and downlink. " "This setting is used for full-duplex radios only, " "such as the IC-910H, FT-847 and the TS-2000.\n\n" "IC-910H: MAIN\342\206\221 / SUB\342\206\223\n" "FT-847: SUB\342\206\221 / MAIN\342\206\223\n" "TS-2000: B\342\206\221 / A\342\206\223")); gtk_grid_attach(GTK_GRID(table), vfo, 1, 5, 2, 1); /* Downconverter LO frequency */ label = gtk_label_new(_("LO Down")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); lo = gtk_spin_button_new_with_range(-10000, 10000, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lo), 0); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(lo), 0); gtk_widget_set_tooltip_text(lo, _ ("Enter the frequency of the local oscillator " " of the downconverter, if any.")); gtk_grid_attach(GTK_GRID(table), lo, 1, 6, 2, 1); label = gtk_label_new(_("MHz")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 3, 6, 1, 1); /* Upconverter LO frequency */ label = gtk_label_new(_("LO Up")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 7, 1, 1); loup = gtk_spin_button_new_with_range(-10000, 10000, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(loup), 0); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(loup), 0); gtk_widget_set_tooltip_text(loup, _ ("Enter the frequency of the local oscillator " "of the upconverter, if any.")); gtk_grid_attach(GTK_GRID(table), loup, 1, 7, 2, 1); label = gtk_label_new(_("MHz")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 3, 7, 1, 1); /* AOS / LOS signalling */ label = gtk_label_new(_("Signalling")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 8, 1, 1); sigaos = gtk_check_button_new_with_label(_("AOS")); gtk_grid_attach(GTK_GRID(table), sigaos, 1, 8, 1, 1); gtk_widget_set_tooltip_text(sigaos, _("Enable AOS signalling for this radio.")); siglos = gtk_check_button_new_with_label(_("LOS")); gtk_grid_attach(GTK_GRID(table), siglos, 2, 8, 1, 1); gtk_widget_set_tooltip_text(siglos, _("Enable LOS signalling for this radio.")); if (conf->name != NULL) update_widgets(conf); gtk_widget_show_all(table); return table; } /* Apply changes. Returns TRUE if things are ok, FALSE otherwise */ static gboolean apply_changes(radio_conf_t * conf) { /* name */ if (conf->name) g_free(conf->name); conf->name = g_strdup(gtk_entry_get_text(GTK_ENTRY(name))); /* host */ if (conf->host) g_free(conf->host); conf->host = g_strdup(gtk_entry_get_text(GTK_ENTRY(host))); /* port */ conf->port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(port)); /* lo down freq */ conf->lo = 1000000.0 * gtk_spin_button_get_value(GTK_SPIN_BUTTON(lo)); /* lo up freq */ conf->loup = 1000000.0 * gtk_spin_button_get_value(GTK_SPIN_BUTTON(loup)); /* rig type */ conf->type = gtk_combo_box_get_active(GTK_COMBO_BOX(type)); /* ptt */ conf->ptt = gtk_combo_box_get_active(GTK_COMBO_BOX(ptt)); /* vfo up/down */ if (conf->type == RIG_TYPE_DUPLEX) { switch (gtk_combo_box_get_active(GTK_COMBO_BOX(vfo))) { case 1: conf->vfoUp = VFO_MAIN; conf->vfoDown = VFO_SUB; break; case 2: conf->vfoUp = VFO_SUB; conf->vfoDown = VFO_MAIN; break; case 3: conf->vfoUp = VFO_A; conf->vfoDown = VFO_B; break; case 4: conf->vfoUp = VFO_B; conf->vfoDown = VFO_A; break; default: conf->vfoUp = VFO_MAIN; conf->vfoDown = VFO_SUB; break; } } /* AOS / LOS signalling */ conf->signal_aos = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sigaos)); conf->signal_los = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(siglos)); return TRUE; } /* Add or edit a radio configuration */ void sat_pref_rig_editor_run(radio_conf_t * conf) { gint response; gboolean finished = FALSE; /* create dialog and add contents */ dialog = gtk_dialog_new_with_buttons(_("Edit radio configuration"), GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Clear", GTK_RESPONSE_REJECT, "_Cancel", GTK_RESPONSE_CANCEL, "_Ok", GTK_RESPONSE_OK, NULL); /* disable OK button to begin with */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), create_editor_widgets(conf)); /* keep the dialog running when CLEAR button is plressed * OK and CANCEL will exit the loop */ while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* OK */ case GTK_RESPONSE_OK: if (apply_changes(conf)) finished = TRUE; else finished = FALSE; break; /* CLEAR */ case GTK_RESPONSE_REJECT: clear_widgets(); break; /* Everything else is considered CANCEL */ default: finished = TRUE; break; } } gtk_widget_destroy(dialog); } gpredict/src/sat-pref-rig-editor.h000066400000000000000000000002631427377236300174220ustar00rootroot00000000000000#ifndef SAT_PREF_RIG_EDITOR_H #define SAT_PREF_RIG_EDITOR_H 1 #include #include "radio-conf.h" void sat_pref_rig_editor_run(radio_conf_t * conf); #endif gpredict/src/sat-pref-rig.c000066400000000000000000000730311427377236300161340ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "radio-conf.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-rig.h" #include "sat-pref-rig-data.h" #include "sat-pref-rig-editor.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *addbutton; static GtkWidget *editbutton; static GtkWidget *delbutton; static GtkWidget *riglist; static GtkTreeModel *create_and_fill_model() { GtkListStore *liststore; /* the list store data structure */ GtkTreeIter item; /* new item added to the list store */ GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ gchar **vbuff; const gchar *filename; /* file name */ radio_conf_t conf; /* create a new list store */ liststore = gtk_list_store_new(RIG_LIST_COL_NUM, G_TYPE_STRING, // name G_TYPE_STRING, // host G_TYPE_INT, // port G_TYPE_INT, // type G_TYPE_INT, // PTT G_TYPE_INT, // VFO Up G_TYPE_INT, // VFO Down G_TYPE_DOUBLE, // LO DOWN G_TYPE_DOUBLE, // LO UO G_TYPE_BOOLEAN, // AOS signalling G_TYPE_BOOLEAN // LOS signalling ); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(liststore), RIG_LIST_COL_NAME, GTK_SORT_ASCENDING); /* open configuration directory */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rig file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rig")) { vbuff = g_strsplit(filename, ".rig", 0); conf.name = g_strdup(vbuff[0]); g_strfreev(vbuff); if (radio_conf_read(&conf)) { /* insert conf into liststore */ gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, RIG_LIST_COL_NAME, conf.name, RIG_LIST_COL_HOST, conf.host, RIG_LIST_COL_PORT, conf.port, RIG_LIST_COL_TYPE, conf.type, RIG_LIST_COL_PTT, conf.ptt, RIG_LIST_COL_VFOUP, conf.vfoUp, RIG_LIST_COL_VFODOWN, conf.vfoDown, RIG_LIST_COL_LO, conf.lo, RIG_LIST_COL_LOUP, conf.loup, RIG_LIST_COL_SIGAOS, conf.signal_aos, RIG_LIST_COL_SIGLOS, conf.signal_los, -1); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Read %s"), __FILE__, __LINE__, filename); /* clean up memory */ if (conf.name) g_free(conf.name); if (conf.host) g_free(conf.host); } else { /* there was an error */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to read %s"), __FILE__, __LINE__, conf.name); g_free(conf.name); } } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); return GTK_TREE_MODEL(liststore); } /** * Render configuration name. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. * * This function renders the configuration name onto the riglist. Although * the configuration name is a plain string, it contains the file name of the * configuration file and we want to strip the .rig extension. */ static void render_name(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gchar *fname; gchar **buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &fname, -1); buff = g_strsplit(fname, ".rig", 0); g_object_set(renderer, "text", buff[0], NULL); g_strfreev(buff); g_free(fname); } /** * Render radio type. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. * * This function renders the radio type onto the riglist. */ static void render_type(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { guint type; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &type, -1); switch (type) { case RIG_TYPE_RX: g_object_set(renderer, "text", _("RX only"), NULL); break; case RIG_TYPE_TX: g_object_set(renderer, "text", _("TX only"), NULL); break; case RIG_TYPE_TRX: g_object_set(renderer, "text", _("Half-duplex"), NULL); break; case RIG_TYPE_DUPLEX: g_object_set(renderer, "text", _("Full-duplex"), NULL); break; case RIG_TYPE_TOGGLE_AUTO: g_object_set(renderer, "text", _("FT817/857/897 (auto)"), NULL); break; case RIG_TYPE_TOGGLE_MAN: g_object_set(renderer, "text", _("FT817/857/897 (man)"), NULL); break; default: g_object_set(renderer, "text", _("ERROR"), NULL); break; } } /** * Render PTT status usage. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. * * This function renders the PTT status usage onto the riglist. */ static void render_ptt(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gint ptt; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &ptt, -1); switch (ptt) { case PTT_TYPE_NONE: g_object_set(renderer, "text", _("None"), NULL); break; case PTT_TYPE_CAT: g_object_set(renderer, "text", _("PTT"), NULL); break; case PTT_TYPE_DCD: g_object_set(renderer, "text", _("DCD"), NULL); break; default: g_object_set(renderer, "text", _("None"), NULL); break; } } /** * Render Local Oscillator frequency * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. * * This function is used to render the local oscillator frequency. We * need a special renderer so that we can automatically render as MHz * instead of Hz. */ static void render_lo(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); /* convert to MHz */ number /= 1000000.0; buff = g_strdup_printf("%.0f MHz", number); g_object_set(renderer, "text", buff, NULL); g_free(buff); } /** * Render VFO selection. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. * * This function is used to render the VFO up/down selections for * full duplex radios. */ static void render_vfo(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gint number; gchar *buff; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); switch (number) { case VFO_A: buff = g_strdup_printf("VFO A"); break; case VFO_B: buff = g_strdup_printf("VFO B"); break; case VFO_MAIN: buff = g_strdup_printf("Main"); break; case VFO_SUB: buff = g_strdup_printf("Sub"); break; default: buff = g_strdup_printf("-"); break; } g_object_set(renderer, "text", buff, NULL); g_free(buff); } static void render_signal(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gboolean signal_enabled; guint coli = GPOINTER_TO_UINT(column); (void)col; gtk_tree_model_get(model, iter, coli, &signal_enabled, -1); g_object_set(renderer, "text", signal_enabled ? "YES" : "NO", NULL); } /** * Add a new radio configuration * * @param button Pointer to the Add button. * @param data User data (null). * * This function executes the radio configuration editor with the "new" * flag set to TRUE. */ static void edit_cb(GtkWidget * button, gpointer data) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(riglist)); GtkTreeModel *selmod; GtkTreeSelection *selection; GtkTreeIter iter; (void)button; (void)data; radio_conf_t conf = { .name = NULL, .host = NULL, .port = 4532, .type = RIG_TYPE_RX, .ptt = 0, .vfoUp = 0, .vfoDown = 0, .lo = 0.0, .loup = 0.0, .signal_aos = FALSE, .signal_los = FALSE }; /* If there are no entries, we have a bug since the button should have been disabled. */ if (gtk_tree_model_iter_n_children(model, NULL) < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Edit button should have been disabled."), __FILE__, __func__); //gtk_widget_set_sensitive (button, FALSE); return; } /* get selected row FIXME: do we really need to work with two models? */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(riglist)); if (gtk_tree_selection_get_selected(selection, &selmod, &iter)) { gtk_tree_model_get(model, &iter, RIG_LIST_COL_NAME, &conf.name, RIG_LIST_COL_HOST, &conf.host, RIG_LIST_COL_PORT, &conf.port, RIG_LIST_COL_TYPE, &conf.type, RIG_LIST_COL_PTT, &conf.ptt, RIG_LIST_COL_VFOUP, &conf.vfoUp, RIG_LIST_COL_VFODOWN, &conf.vfoDown, RIG_LIST_COL_LO, &conf.lo, RIG_LIST_COL_LOUP, &conf.loup, RIG_LIST_COL_SIGAOS, &conf.signal_aos, RIG_LIST_COL_SIGLOS, &conf.signal_los, -1); } else { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Select the radio you want to edit\n" "and try again!")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); return; } /* run radio configuration editor */ sat_pref_rig_editor_run(&conf); /* apply changes */ if (conf.name != NULL) { gtk_list_store_set(GTK_LIST_STORE(model), &iter, RIG_LIST_COL_NAME, conf.name, RIG_LIST_COL_HOST, conf.host, RIG_LIST_COL_PORT, conf.port, RIG_LIST_COL_TYPE, conf.type, RIG_LIST_COL_PTT, conf.ptt, RIG_LIST_COL_VFOUP, conf.vfoUp, RIG_LIST_COL_VFODOWN, conf.vfoDown, RIG_LIST_COL_LO, conf.lo, RIG_LIST_COL_LOUP, conf.loup, RIG_LIST_COL_SIGAOS, conf.signal_aos, RIG_LIST_COL_SIGLOS, conf.signal_los, -1); } /* clean up memory */ if (conf.name) g_free(conf.name); if (conf.host != NULL) g_free(conf.host); } static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data) { (void)tree_view; (void)path; (void)column; (void)user_data; edit_cb(editbutton, NULL); } /* Radio configuration list widget. */ static void create_rig_list() { GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; riglist = gtk_tree_view_new(); model = create_and_fill_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(riglist), model); g_object_unref(model); /* Conf name */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Config Name"), renderer, "text", RIG_LIST_COL_NAME, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_name, GUINT_TO_POINTER (RIG_LIST_COL_NAME), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* Host */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Host"), renderer, "text", RIG_LIST_COL_HOST, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* port */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Port"), renderer, "text", RIG_LIST_COL_PORT, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* rig type */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Rig Type"), renderer, "text", RIG_LIST_COL_TYPE, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_type, GUINT_TO_POINTER (RIG_LIST_COL_TYPE), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* PTT */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("PTT Status"), renderer, "text", RIG_LIST_COL_PTT, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_ptt, GUINT_TO_POINTER(RIG_LIST_COL_PTT), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* VFO Up */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("VFO Up"), renderer, "text", RIG_LIST_COL_VFOUP, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_vfo, GUINT_TO_POINTER (RIG_LIST_COL_VFOUP), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* VFO Down */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("VFO Down"), renderer, "text", RIG_LIST_COL_VFODOWN, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_vfo, GUINT_TO_POINTER (RIG_LIST_COL_VFODOWN), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* transverter down */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("LO Down"), renderer, "text", RIG_LIST_COL_LO, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_lo, GUINT_TO_POINTER(RIG_LIST_COL_LO), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* transverter up */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("LO Up"), renderer, "text", RIG_LIST_COL_LOUP, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_lo, GUINT_TO_POINTER (RIG_LIST_COL_LOUP), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* AOS signalling */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Signal AOS"), renderer, "text", RIG_LIST_COL_SIGAOS, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_signal, GUINT_TO_POINTER (RIG_LIST_COL_SIGAOS), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); /* LOS signalling */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Signal LOS"), renderer, "text", RIG_LIST_COL_SIGLOS, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_signal, GUINT_TO_POINTER (RIG_LIST_COL_SIGLOS), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(riglist), column, -1); g_signal_connect(riglist, "row-activated", G_CALLBACK(row_activated_cb), riglist); } /** * Delete selected radio configuration * * This function is called when the user clicks the Delete button. */ static void delete_cb(GtkWidget * button, gpointer data) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(riglist)); GtkTreeSelection *selection; GtkTreeIter iter; (void)button; (void)data; /* If there are no entries, we have a bug since the button should have been disabled. */ if (gtk_tree_model_iter_n_children(model, NULL) < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Delete button should have been disabled."), __FILE__, __func__); //gtk_widget_set_sensitive (button, FALSE); return; } /* get selected row */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(riglist)); if (gtk_tree_selection_get_selected(selection, NULL, &iter)) { gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } else { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Select the radio you want to " "delete\nand try again!")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } /** * Add a new radio configuration * * @param button Pointer to the Add button. * @param data User data (null). * * This function executes the radio configuration editor with the "new" * flag set to TRUE. */ static void add_cb(GtkWidget * button, gpointer data) { GtkTreeIter item; /* new item added to the list store */ GtkListStore *liststore; (void)button; (void)data; radio_conf_t conf = { .name = NULL, .host = NULL, .port = 4532, .type = RIG_TYPE_RX, .ptt = 0, .vfoUp = 0, .vfoDown = 0, .lo = 0.0, .loup = 0.0, .signal_aos = FALSE, .signal_los = FALSE, }; /* run rig conf editor */ sat_pref_rig_editor_run(&conf); /* add new rig to the list */ if (conf.name != NULL) { liststore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(riglist))); gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, RIG_LIST_COL_NAME, conf.name, RIG_LIST_COL_HOST, conf.host, RIG_LIST_COL_PORT, conf.port, RIG_LIST_COL_TYPE, conf.type, RIG_LIST_COL_PTT, conf.ptt, RIG_LIST_COL_VFOUP, conf.vfoUp, RIG_LIST_COL_VFODOWN, conf.vfoDown, RIG_LIST_COL_LO, conf.lo, RIG_LIST_COL_LOUP, conf.loup, RIG_LIST_COL_SIGAOS, conf.signal_aos, RIG_LIST_COL_SIGLOS, conf.signal_los, -1); g_free(conf.name); if (conf.host != NULL) g_free(conf.host); } } /** * Create buttons. * * @param riglist The GtkTreeView widget containing the rig data. * @return A button box containing the buttons. * * This function creates and initialises the three buttons below the rig list. * The treeview widget is needed by the buttons when they are activated. */ static GtkWidget *create_buttons(void) { GtkWidget *box; /* add button */ addbutton = gtk_button_new_with_label(_("Add new")); gtk_widget_set_tooltip_text(addbutton, _("Add a new radio to the list")); g_signal_connect(addbutton, "clicked", G_CALLBACK(add_cb), NULL); /* edit button */ editbutton = gtk_button_new_with_label(_("Edit")); gtk_widget_set_tooltip_text(editbutton, _("Edit selected radio")); g_signal_connect(editbutton, "clicked", G_CALLBACK(edit_cb), NULL); /* delete button; don't forget to delete file.... */ delbutton = gtk_button_new_with_label(_("Delete")); gtk_widget_set_tooltip_text(delbutton, _("Delete selected radio")); g_signal_connect(delbutton, "clicked", G_CALLBACK(delete_cb), NULL); /* vertical button box */ box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(box), GTK_BUTTONBOX_START); gtk_container_add(GTK_CONTAINER(box), addbutton); gtk_container_add(GTK_CONTAINER(box), editbutton); gtk_container_add(GTK_CONTAINER(box), delbutton); return box; } /* Create and initialise widgets for the radios tab. */ GtkWidget *sat_pref_rig_create() { GtkWidget *vbox; /* vbox containing the list part and the details part */ GtkWidget *swin; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); /* create qth list and pack into scrolled window */ create_rig_list(); swin = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(swin), riglist); gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), create_buttons(), FALSE, FALSE, 0); return vbox; } /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_rig_cancel() { } /** * User pressed OK. Any changes should be stored in config. * * First, all .grc files are deleted, whereafter the radio configurations in * the riglist are saved one by one. */ void sat_pref_rig_ok() { GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *buff, *dirname; const gchar *filename; GtkTreeIter iter; /* new item added to the list store */ GtkTreeModel *model; guint i, n; radio_conf_t conf = { .name = NULL, .host = NULL, .port = 4532, .type = RIG_TYPE_RX, .ptt = 0, .vfoUp = 0, .vfoDown = 0, .lo = 0.0, .loup = 0.0, .signal_aos = FALSE, .signal_los = FALSE }; /* delete all .rig files */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rig file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rig")) { buff = g_strconcat(dirname, G_DIR_SEPARATOR_S, filename, NULL); if (g_remove(buff)) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to remove %s"), __func__, buff); g_free(buff); } } } g_free(dirname); g_dir_close(dir); /* create new .rig files for the radios in the riglist */ model = gtk_tree_view_get_model(GTK_TREE_VIEW(riglist)); n = gtk_tree_model_iter_n_children(model, NULL); for (i = 0; i < n; i++) { /* get radio conf */ if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { /* store conf */ gtk_tree_model_get(model, &iter, RIG_LIST_COL_NAME, &conf.name, RIG_LIST_COL_HOST, &conf.host, RIG_LIST_COL_PORT, &conf.port, RIG_LIST_COL_TYPE, &conf.type, RIG_LIST_COL_PTT, &conf.ptt, RIG_LIST_COL_VFOUP, &conf.vfoUp, RIG_LIST_COL_VFODOWN, &conf.vfoDown, RIG_LIST_COL_LO, &conf.lo, RIG_LIST_COL_LOUP, &conf.loup, RIG_LIST_COL_SIGAOS, &conf.signal_aos, RIG_LIST_COL_SIGLOS, &conf.signal_los, -1); radio_conf_save(&conf); /* free conf buffer */ if (conf.name) g_free(conf.name); if (conf.host) g_free(conf.host); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to get RIG %s"), __func__, i); } } } gpredict/src/sat-pref-rig.h000066400000000000000000000002661427377236300161410ustar00rootroot00000000000000#ifndef SAT_PREF_RIG_H #define SAT_PREF_RIG_H 1 GtkWidget *sat_pref_rig_create(void); void sat_pref_rig_cancel(void); void sat_pref_rig_ok(void); #endif gpredict/src/sat-pref-rot-data.h000066400000000000000000000035401427377236300170710ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_PREF_ROT_DATA_H #define SAT_PREF_ROT_DATA_H 1 /** Coumn definitions for rotator list. */ typedef enum { ROT_LIST_COL_NAME = 0, /*!< File name. */ ROT_LIST_COL_HOST, /*!< Hostname */ ROT_LIST_COL_PORT, /*!< Port number */ ROT_LIST_COL_MINAZ, /*!< Lower Az limit. */ ROT_LIST_COL_MAXAZ, /*!< Upper Az limit. */ ROT_LIST_COL_MINEL, /*!< Lower El limit. */ ROT_LIST_COL_MAXEL, /*!< Upper El limit. */ ROT_LIST_COL_AZTYPE, /*!< Azimuth type. */ ROT_LIST_COL_AZSTOPPOS, /*!< Position of the azimuth rotation stops. Should default to MINAZ, unless specified otherwise */ ROT_LIST_COL_NUM /*!< The number of fields in the list. */ } rotor_list_col_t; #endif gpredict/src/sat-pref-rot-editor.c000066400000000000000000000351101427377236300174370ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "gpredict-utils.h" #include "rotor-conf.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-rot-editor.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *dialog; /* dialog window */ static GtkWidget *name; /* Configuration name */ static GtkWidget *host; /* host name or IP */ static GtkWidget *port; /* port number */ static GtkWidget *aztype; static GtkWidget *minaz; static GtkWidget *maxaz; static GtkWidget *minel; static GtkWidget *maxel; static GtkWidget *azstoppos; /* Update widgets from the currently selected row in the treeview */ static void update_widgets(rotor_conf_t * conf) { /* configuration name */ gtk_entry_set_text(GTK_ENTRY(name), conf->name); /* host */ if (conf->host) gtk_entry_set_text(GTK_ENTRY(host), conf->host); /* port */ if (conf->port > 1023) gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), conf->port); else gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4533); /* hamlib default? */ gtk_combo_box_set_active(GTK_COMBO_BOX(aztype), conf->aztype); /* az and el limits */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(minaz), conf->minaz); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxaz), conf->maxaz); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minel), conf->minel); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxel), conf->maxel); gtk_spin_button_set_value(GTK_SPIN_BUTTON(azstoppos), conf->azstoppos); } /* called when the user clicks on the CLEAR button */ static void clear_widgets() { gtk_entry_set_text(GTK_ENTRY(name), ""); gtk_entry_set_text(GTK_ENTRY(host), "localhost"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4533); /* hamlib default? */ gtk_combo_box_set_active(GTK_COMBO_BOX(aztype), ROT_AZ_TYPE_360); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minaz), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxaz), 360); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minel), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxel), 90); gtk_spin_button_set_value(GTK_SPIN_BUTTON(azstoppos), 0); } /* * This function is called when the contents of the name entry changes. * The primary purpose of this function is to check whether the char length * of the name is greater than zero, if yes enable the OK button of the dialog. */ static void name_changed(GtkWidget * widget, gpointer data) { const gchar *text; gchar *entry, *end, *j; gint len, pos; (void)data; /* step 1: ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); } } static void aztype_changed_cb(GtkComboBox * box, gpointer data) { gint type = gtk_combo_box_get_active(box); (void)data; switch (type) { case ROT_AZ_TYPE_360: gtk_spin_button_set_value(GTK_SPIN_BUTTON(minaz), 0.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxaz), 360.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(azstoppos), 0.0); break; case ROT_AZ_TYPE_180: gtk_spin_button_set_value(GTK_SPIN_BUTTON(minaz), -180.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxaz), +180.0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(azstoppos), -180.0); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid AZ rotator type."), __FILE__, __func__); break; } } static GtkWidget *create_editor_widgets(rotor_conf_t * conf) { GtkWidget *table; GtkWidget *label; table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); /* Config name */ label = gtk_label_new(_("Name")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); name = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name), 25); gtk_widget_set_tooltip_text(name, _("Enter a short name for this configuration, " " e.g. ROTOR-1.\n" "Allowed characters: 0..9, a..z, A..Z, - and _")); gtk_grid_attach(GTK_GRID(table), name, 1, 0, 3, 1); /* attach changed signal so that we can enable OK button when a proper name has been entered */ g_signal_connect(name, "changed", G_CALLBACK(name_changed), NULL); /* Host */ label = gtk_label_new(_("Host")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); host = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(host), 50); gtk_entry_set_text(GTK_ENTRY(host), "localhost"); gtk_widget_set_tooltip_text(host, _("Enter the host where rotctld is running. " "You can use both host name and IP address, " "e.g. 192.168.1.100\n\n" "If gpredict and rotctld are running on the " "same computer, use localhost")); gtk_grid_attach(GTK_GRID(table), host, 1, 1, 3, 1); /* port */ label = gtk_label_new(_("Port")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); port = gtk_spin_button_new_with_range(1024, 65535, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(port), 4533); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(port), 0); gtk_widget_set_tooltip_text(port, _("Enter the port number where rotctld is " "listening. Default is 4533.")); gtk_grid_attach(GTK_GRID(table), port, 1, 2, 1, 1); gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 3, 4, 1); /* Az-type */ label = gtk_label_new(_("Az type")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); aztype = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aztype), "0\302\260 \342\206\222 180\302\260 \342\206\222 360\302\260"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aztype), "-180\302\260 \342\206\222 0\302\260 \342\206\222 +180\302\260"); gtk_combo_box_set_active(GTK_COMBO_BOX(aztype), 0); gtk_widget_set_tooltip_text(aztype, _("Select your azimuth range here. Note that " "gpredict assumes that 0\302\260 is at North " "and + direction is clockwise for both types")); gtk_grid_attach(GTK_GRID(table), aztype, 1, 4, 2, 1); g_signal_connect(G_OBJECT(aztype), "changed", G_CALLBACK(aztype_changed_cb), NULL); /* Az and El limits */ label = gtk_label_new(_(" Min Az")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 5, 1, 1); minaz = gtk_spin_button_new_with_range(-200, 100, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minaz), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(minaz), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(minaz), FALSE); gtk_grid_attach(GTK_GRID(table), minaz, 1, 5, 1, 1); label = gtk_label_new(_(" Max Az")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 5, 1, 1); maxaz = gtk_spin_button_new_with_range(0, 450, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxaz), 360); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(maxaz), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(maxaz), FALSE); gtk_grid_attach(GTK_GRID(table), maxaz, 3, 5, 1, 1); label = gtk_label_new(_(" Min El")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 6, 1, 1); minel = gtk_spin_button_new_with_range(-10, 180, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(minel), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(minel), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(minel), FALSE); gtk_grid_attach(GTK_GRID(table), minel, 1, 6, 1, 1); label = gtk_label_new(_(" Max El")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, 6, 1, 1); maxel = gtk_spin_button_new_with_range(-10, 180, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxel), 90); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(maxel), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(maxel), FALSE); gtk_grid_attach(GTK_GRID(table), maxel, 3, 6, 1, 1); label = gtk_label_new(_(" Azimuth end stop position")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 1, 7, 2, 1); azstoppos = gtk_spin_button_new_with_range(-180, 360, 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(azstoppos), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(azstoppos), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(azstoppos), FALSE); gtk_widget_set_tooltip_text(azstoppos, _("Set the position of the azimuth end stop " "here, where 0\302\260 is at North, " "-180\302\260 is south, etc. " "The default for a 0\302\260 \342\206\222 " "180\302\260 \342\206\222 360\302\260 rotor " "is 0\302\260, and the default for a " "-180\302\260 \342\206\222 0\302\260 " "\342\206\222 +180\302\260 rotor is -180\302\260.")); gtk_grid_attach(GTK_GRID(table), azstoppos, 3, 7, 1, 1); if (conf->name != NULL) update_widgets(conf); gtk_widget_show_all(table); return table; } /* Called when the user clicks the OK button */ static gboolean apply_changes(rotor_conf_t * conf) { /* name */ if (conf->name) g_free(conf->name); conf->name = g_strdup(gtk_entry_get_text(GTK_ENTRY(name))); /* host */ if (conf->host) g_free(conf->host); conf->host = g_strdup(gtk_entry_get_text(GTK_ENTRY(host))); /* port */ conf->port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(port)); /* az type */ conf->aztype = gtk_combo_box_get_active(GTK_COMBO_BOX(aztype)); /* az and el ranges */ conf->minaz = gtk_spin_button_get_value(GTK_SPIN_BUTTON(minaz)); conf->maxaz = gtk_spin_button_get_value(GTK_SPIN_BUTTON(maxaz)); conf->minel = gtk_spin_button_get_value(GTK_SPIN_BUTTON(minel)); conf->maxel = gtk_spin_button_get_value(GTK_SPIN_BUTTON(maxel)); /* az stop position */ conf->azstoppos = gtk_spin_button_get_value(GTK_SPIN_BUTTON(azstoppos)); return TRUE; } /** * Add or edit a rotor configuration. * * @param conf Pointer to a rotator configuration. * * If conf->name is not NULL the widgets will be populated with the data. */ void sat_pref_rot_editor_run(rotor_conf_t * conf) { gint response; gboolean finished = FALSE; /* create dialog and add contents */ dialog = gtk_dialog_new_with_buttons(_("Edit rotator configuration"), GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Clear", GTK_RESPONSE_REJECT, "_Cancel", GTK_RESPONSE_CANCEL, "_Ok", GTK_RESPONSE_OK, NULL); /* disable OK button to begin with */ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), create_editor_widgets(conf)); /* this hacky-thing is to keep the dialog running in case the CLEAR button is plressed. OK and CANCEL will exit the loop */ while (!finished) { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { case GTK_RESPONSE_OK: if (apply_changes(conf)) finished = TRUE; else finished = FALSE; break; case GTK_RESPONSE_REJECT: /* CLEAR */ clear_widgets(); break; default: /* Everything else is considered CANCEL */ finished = TRUE; break; } } gtk_widget_destroy(dialog); } gpredict/src/sat-pref-rot-editor.h000066400000000000000000000002631427377236300174450ustar00rootroot00000000000000#ifndef SAT_PREF_ROT_EDITOR_H #define SAT_PREF_ROT_EDITOR_H 1 #include #include "rotor-conf.h" void sat_pref_rot_editor_run(rotor_conf_t * conf); #endif gpredict/src/sat-pref-rot.c000066400000000000000000000542221427377236300161600ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "compat.h" #include "gpredict-utils.h" #include "rotor-conf.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-rot.h" #include "sat-pref-rot-data.h" #include "sat-pref-rot-editor.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ static GtkWidget *addbutton; static GtkWidget *editbutton; static GtkWidget *delbutton; static GtkWidget *rotlist; static void add_cb(GtkWidget * button, gpointer data) { GtkTreeIter item; /* new item added to the list store */ GtkListStore *liststore; (void)button; (void)data; rotor_conf_t conf = { .name = NULL, .host = NULL, .port = 4533, .minaz = 0, .maxaz = 360, .minel = 0, .maxel = 90, .aztype = ROT_AZ_TYPE_360, .azstoppos = 0, }; /* run rot conf editor */ sat_pref_rot_editor_run(&conf); /* add new rot to the list */ if (conf.name != NULL) { liststore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(rotlist))); gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, ROT_LIST_COL_NAME, conf.name, ROT_LIST_COL_HOST, conf.host, ROT_LIST_COL_PORT, conf.port, ROT_LIST_COL_MINAZ, conf.minaz, ROT_LIST_COL_MAXAZ, conf.maxaz, ROT_LIST_COL_MINEL, conf.minel, ROT_LIST_COL_MAXEL, conf.maxel, ROT_LIST_COL_AZTYPE, conf.aztype, ROT_LIST_COL_AZSTOPPOS, conf.azstoppos, -1); g_free(conf.name); if (conf.host != NULL) g_free(conf.host); } } static void edit_cb(GtkWidget * button, gpointer data) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(rotlist)); GtkTreeModel *selmod; GtkTreeSelection *selection; GtkTreeIter iter; (void)button; /* avoid unused parameter compiler warning */ (void)data; /* avoid unused parameter compiler warning */ rotor_conf_t conf = { .name = NULL, .host = NULL, .port = 4533, .minaz = 0, .maxaz = 360, .minel = 0, .maxel = 90, .aztype = ROT_AZ_TYPE_360, .azstoppos = 0, //used in the "new rotator" dialog }; /* If there are no entries, we have a bug since the button should have been disabled. */ if (gtk_tree_model_iter_n_children(model, NULL) < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Edit button should have been disabled."), __FILE__, __func__); //gtk_widget_set_sensitive (button, FALSE); return; } /* get selected row FIXME: do we really need to work with two models? */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rotlist)); if (gtk_tree_selection_get_selected(selection, &selmod, &iter)) { gtk_tree_model_get(model, &iter, ROT_LIST_COL_NAME, &conf.name, ROT_LIST_COL_HOST, &conf.host, ROT_LIST_COL_PORT, &conf.port, ROT_LIST_COL_MINAZ, &conf.minaz, ROT_LIST_COL_MAXAZ, &conf.maxaz, ROT_LIST_COL_MINEL, &conf.minel, ROT_LIST_COL_MAXEL, &conf.maxel, ROT_LIST_COL_AZTYPE, &conf.aztype, ROT_LIST_COL_AZSTOPPOS, &conf.azstoppos, -1); } else { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("Select the rotator you want to edit\n" "and try again!")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); return; } /* run radio configuration editor */ sat_pref_rot_editor_run(&conf); /* apply changes */ if (conf.name != NULL) { gtk_list_store_set(GTK_LIST_STORE(model), &iter, ROT_LIST_COL_NAME, conf.name, ROT_LIST_COL_HOST, conf.host, ROT_LIST_COL_PORT, conf.port, ROT_LIST_COL_MINAZ, conf.minaz, ROT_LIST_COL_MAXAZ, conf.maxaz, ROT_LIST_COL_MINEL, conf.minel, ROT_LIST_COL_MAXEL, conf.maxel, ROT_LIST_COL_AZTYPE, conf.aztype, ROT_LIST_COL_AZSTOPPOS, conf.azstoppos, -1); } /* clean up memory */ if (conf.name) g_free(conf.name); if (conf.host != NULL) g_free(conf.host); } static void delete_cb(GtkWidget * button, gpointer data) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(rotlist)); GtkTreeSelection *selection; GtkTreeIter iter; (void)button; (void)data; /* If there are no entries, we have a bug since the button should have been disabled. */ if (gtk_tree_model_iter_n_children(model, NULL) < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Delete button should have been disabled."), __FILE__, __func__); //gtk_widget_set_sensitive (button, FALSE); return; } /* get selected row */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rotlist)); if (gtk_tree_selection_get_selected(selection, NULL, &iter)) { gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } else { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _ ("Select the rotator you want to delete\n" "and try again!")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } static void row_activated_cb(GtkTreeView * tree_view, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data) { (void)tree_view; (void)path; (void)column; (void)user_data; edit_cb(editbutton, NULL); } static GtkTreeModel *create_and_fill_model() { GtkListStore *liststore; /* the list store data structure */ GtkTreeIter item; /* new item added to the list store */ GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *dirname; /* directory name */ gchar **vbuff; const gchar *filename; /* file name */ rotor_conf_t conf; /* create a new list store */ liststore = gtk_list_store_new(ROT_LIST_COL_NUM, G_TYPE_STRING, // name G_TYPE_STRING, // host G_TYPE_INT, // port G_TYPE_DOUBLE, // Min Az G_TYPE_DOUBLE, // Max Az G_TYPE_DOUBLE, // Min El G_TYPE_DOUBLE, // Max El G_TYPE_INT, // Az type G_TYPE_DOUBLE // Az Stop Position ); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(liststore), ROT_LIST_COL_NAME, GTK_SORT_ASCENDING); /* open configuration directory */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rot file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rot")) { vbuff = g_strsplit(filename, ".rot", 0); conf.name = g_strdup(vbuff[0]); g_strfreev(vbuff); if (rotor_conf_read(&conf)) { /* insert conf into liststore */ gtk_list_store_append(liststore, &item); gtk_list_store_set(liststore, &item, ROT_LIST_COL_NAME, conf.name, ROT_LIST_COL_HOST, conf.host, ROT_LIST_COL_PORT, conf.port, ROT_LIST_COL_MINAZ, conf.minaz, ROT_LIST_COL_MAXAZ, conf.maxaz, ROT_LIST_COL_MINEL, conf.minel, ROT_LIST_COL_MAXEL, conf.maxel, ROT_LIST_COL_AZTYPE, conf.aztype, ROT_LIST_COL_AZSTOPPOS, conf.azstoppos, -1); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%d: Read %s"), __FILE__, __LINE__, filename); /* clean up memory */ if (conf.name) g_free(conf.name); if (conf.host) g_free(conf.host); } else { /* there was an error */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to read %s"), __FILE__, __LINE__, conf.name); g_free(conf.name); } } } } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%d: Failed to open hwconf dir (%s)"), __FILE__, __LINE__, error->message); g_clear_error(&error); } g_free(dirname); g_dir_close(dir); return GTK_TREE_MODEL(liststore); } /** * Create buttons. * @return A button box containing the buttons. * * This function creates and initialises the three buttons below the rot list. * The treeview widget is needed by the buttons when they are activated. * */ static GtkWidget *create_buttons(void) { GtkWidget *box; addbutton = gtk_button_new_with_label(_("Add New")); gtk_widget_set_tooltip_text(addbutton, _("Add a new rotator")); g_signal_connect(addbutton, "clicked", G_CALLBACK(add_cb), NULL); editbutton = gtk_button_new_with_label(_("Edit")); gtk_widget_set_tooltip_text(editbutton, _("Edit selected rotator")); g_signal_connect(editbutton, "clicked", G_CALLBACK(edit_cb), NULL); delbutton = gtk_button_new_with_label(_("Delete")); gtk_widget_set_tooltip_text(delbutton, _("Delete selected rotator")); g_signal_connect(delbutton, "clicked", G_CALLBACK(delete_cb), NULL); box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(box), GTK_BUTTONBOX_START); gtk_container_add(GTK_CONTAINER(box), addbutton); gtk_container_add(GTK_CONTAINER(box), editbutton); gtk_container_add(GTK_CONTAINER(box), delbutton); return box; } /** * Render an angle. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. */ static void render_angle(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gdouble number; guint coli = GPOINTER_TO_UINT(column); gchar *text; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); text = g_strdup_printf("%.0f\302\260", number); g_object_set(renderer, "text", text, NULL); g_free(text); } /** * Render the azimuth type. * * @param col Pointer to the tree view column. * @param renderer Pointer to the renderer. * @param model Pointer to the tree model. * @param iter Pointer to the tree iterator. * @param column The column number in the model. */ static void render_aztype(GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer column) { gint number; guint coli = GPOINTER_TO_UINT(column); gchar *text; (void)col; gtk_tree_model_get(model, iter, coli, &number, -1); switch (number) { case ROT_AZ_TYPE_360: text = g_strdup_printf ("0\302\260 \342\206\222 180\302\260 \342\206\222 360\302\260"); break; case ROT_AZ_TYPE_180: text = g_strdup_printf ("-180\302\260 \342\206\222 0\302\260 \342\206\222 +180\302\260"); break; default: text = g_strdup_printf(_("Unknown (%d)"), number); break; } g_object_set(renderer, "text", text, NULL); g_free(text); } static void create_rot_list() { GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; rotlist = gtk_tree_view_new(); model = create_and_fill_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(rotlist), model); g_object_unref(model); /* Conf name */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Config Name"), renderer, "text", ROT_LIST_COL_NAME, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); /* Host */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Host"), renderer, "text", ROT_LIST_COL_HOST, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); /* port */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Port"), renderer, "text", ROT_LIST_COL_PORT, NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); /* Az and el limits */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Min Az"), renderer, "text", ROT_LIST_COL_MINAZ, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_angle, GUINT_TO_POINTER (ROT_LIST_COL_MINAZ), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Max Az"), renderer, "text", ROT_LIST_COL_MAXAZ, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_angle, GUINT_TO_POINTER (ROT_LIST_COL_MAXAZ), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Min El"), renderer, "text", ROT_LIST_COL_MINEL, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_angle, GUINT_TO_POINTER (ROT_LIST_COL_MINEL), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Max El"), renderer, "text", ROT_LIST_COL_MAXEL, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_angle, GUINT_TO_POINTER (ROT_LIST_COL_MAXEL), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); /* Az type */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Azimuth Type"), renderer, "text", ROT_LIST_COL_AZTYPE, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_aztype, GUINT_TO_POINTER (ROT_LIST_COL_AZTYPE), NULL); gtk_tree_view_insert_column(GTK_TREE_VIEW(rotlist), column, -1); g_signal_connect(rotlist, "row-activated", G_CALLBACK(row_activated_cb), NULL); } GtkWidget *sat_pref_rot_create() { GtkWidget *vbox; /* vbox containing the list part and the details part */ GtkWidget *swin; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); /* create rot list and pack into scrolled window */ create_rot_list(); swin = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(swin), rotlist); gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), create_buttons(), FALSE, FALSE, 0); return vbox; } /** User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_rot_cancel() { } /** * User pressed OK. Any changes should be stored in config. * * First, all .rot files are deleted, whereafter the rotator configurations in * the rotlist are saved one by one. */ void sat_pref_rot_ok() { GDir *dir = NULL; /* directory handle */ GError *error = NULL; /* error flag and info */ gchar *buff, *dirname; const gchar *filename; GtkTreeIter iter; /* new item added to the list store */ GtkTreeModel *model; guint i, n; rotor_conf_t conf = { .name = NULL, .host = NULL, .port = 4533, .minaz = 0, .maxaz = 360, .minel = 0, .maxel = 90, .aztype = ROT_AZ_TYPE_360, .azstoppos = 0, }; /* delete all .rot files */ dirname = get_hwconf_dir(); dir = g_dir_open(dirname, 0, &error); if (dir) { /* read each .rot file */ while ((filename = g_dir_read_name(dir))) { if (g_str_has_suffix(filename, ".rot")) { buff = g_strconcat(dirname, G_DIR_SEPARATOR_S, filename, NULL); if (g_remove(buff)) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to remove %s"), __func__, buff); g_free(buff); } } } g_free(dirname); g_dir_close(dir); /* create new .rot files for the radios in the rotlist */ model = gtk_tree_view_get_model(GTK_TREE_VIEW(rotlist)); n = gtk_tree_model_iter_n_children(model, NULL); for (i = 0; i < n; i++) { /* get radio conf */ if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { /* store conf */ gtk_tree_model_get(model, &iter, ROT_LIST_COL_NAME, &conf.name, ROT_LIST_COL_HOST, &conf.host, ROT_LIST_COL_PORT, &conf.port, ROT_LIST_COL_MINAZ, &conf.minaz, ROT_LIST_COL_MAXAZ, &conf.maxaz, ROT_LIST_COL_MINEL, &conf.minel, ROT_LIST_COL_MAXEL, &conf.maxel, ROT_LIST_COL_AZTYPE, &conf.aztype, ROT_LIST_COL_AZSTOPPOS, &conf.azstoppos, -1); rotor_conf_save(&conf); /* free conf buffer */ if (conf.name) g_free(conf.name); if (conf.host) g_free(conf.host); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to get ROT %s"), __func__, i); } } } gpredict/src/sat-pref-rot.h000066400000000000000000000002661427377236300161640ustar00rootroot00000000000000#ifndef SAT_PREF_ROT_H #define SAT_PREF_ROT_H 1 GtkWidget *sat_pref_rot_create(void); void sat_pref_rot_cancel(void); void sat_pref_rot_ok(void); #endif gpredict/src/sat-pref-single-pass.c000066400000000000000000000115421427377236300175770ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-pass-dialogs.h" #include "sat-pref-single-pass.h" #define Y0 1 /* First row where checkboxes are placed */ #define COLUMNS 3 /* Number of columns in the table */ static GtkWidget *check[SINGLE_PASS_COL_NUMBER]; static guint startflags; static guint flags; static gboolean dirty = FALSE; static gboolean reset = FALSE; extern const gchar *SINGLE_PASS_COL_HINT[]; static void toggle_cb(GtkToggleButton * toggle, gpointer data); static void create_reset_button(GtkBox * vbox); static void reset_cb(GtkWidget * button, gpointer data); /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_single_pass_cancel() { dirty = FALSE; reset = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_single_pass_ok() { if (dirty) { sat_cfg_set_int(SAT_CFG_INT_PRED_SINGLE_COL, flags); dirty = FALSE; } else if (reset) { sat_cfg_reset_int(SAT_CFG_INT_PRED_SINGLE_COL); reset = FALSE; } } static void toggle_cb(GtkToggleButton * toggle, gpointer data) { if (gtk_toggle_button_get_active(toggle)) flags |= (1 << GPOINTER_TO_UINT(data)); else flags &= ~(1 << GPOINTER_TO_UINT(data)); /* clear dirty flag if we are back where we started */ dirty = (flags != startflags); } static void reset_cb(GtkWidget * button, gpointer data) { guint i; (void)button; (void)data; /* get defaults */ flags = sat_cfg_get_int_def(SAT_CFG_INT_PRED_SINGLE_COL); for (i = 0; i < MULTI_PASS_COL_NUMBER; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); } /* reset flags */ reset = TRUE; dirty = FALSE; } static void create_reset_button(GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(button, _("Reset settings to the default values.")); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_single_pass_create() { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; guint i; /* create the table */ table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 20); /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Visible Columns:")); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 2, 1); /* get visible column flags */ flags = sat_cfg_get_int(SAT_CFG_INT_PRED_SINGLE_COL); for (i = 0; i < SINGLE_PASS_COL_NUMBER; i++) { check[i] = gtk_check_button_new_with_label(SINGLE_PASS_COL_HINT[i]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); g_signal_connect(check[i], "toggled", G_CALLBACK(toggle_cb), GUINT_TO_POINTER(i)); gtk_grid_attach(GTK_GRID(table), check[i], i % COLUMNS, Y0 + i / COLUMNS, 1, 1); } /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(GTK_BOX(vbox)); startflags = flags; dirty = FALSE; reset = FALSE; return vbox; } gpredict/src/sat-pref-single-pass.h000066400000000000000000000003361427377236300176030ustar00rootroot00000000000000#ifndef SAT_PREF_SINGLE_PASS_H #define SAT_PREF_SINGLE_PASS_H 1 GtkWidget *sat_pref_single_pass_create(void); void sat_pref_single_pass_cancel(void); void sat_pref_single_pass_ok(void); #endif gpredict/src/sat-pref-single-sat.c000066400000000000000000000141721427377236300174220ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "config-keys.h" #include "gtk-single-sat.h" #include "mod-cfg-get-param.h" #include "sat-cfg.h" #include "sat-pref-single-sat.h" #define Y0 1 /* First row where checkboxes are placed */ #define COLUMNS 3 /* Number of columns in the table */ static GtkWidget *check[SINGLE_SAT_FIELD_NUMBER]; static guint startflags; static guint flags; static gboolean dirty = FALSE; static gboolean reset = FALSE; extern const gchar *SINGLE_SAT_FIELD_TITLE[]; extern const gchar *SINGLE_SAT_FIELD_HINT[]; /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_single_sat_cancel(GKeyFile * cfg) { (void)cfg; dirty = FALSE; reset = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_single_sat_ok(GKeyFile * cfg) { if (dirty) { if (cfg != NULL) { g_key_file_set_integer(cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_FIELDS, flags); } else { sat_cfg_set_int(SAT_CFG_INT_SINGLE_SAT_FIELDS, flags); } } else if (reset) { if (cfg != NULL) { /* local mode; remove key */ g_key_file_remove_key(cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_FIELDS, NULL); } else { /* global mode; reset value */ sat_cfg_reset_int(SAT_CFG_INT_SINGLE_SAT_FIELDS); } } dirty = FALSE; reset = FALSE; } static void toggle_cb(GtkToggleButton * toggle, gpointer data) { if (gtk_toggle_button_get_active(toggle)) flags |= (1 << GPOINTER_TO_UINT(data)); else flags &= ~(1 << GPOINTER_TO_UINT(data)); /* clear dirty flag if we are back where we started */ dirty = (flags != startflags); } static void reset_cb(GtkWidget * button, gpointer cfg) { guint i; (void)button; if (cfg == NULL) { /* global mode, get defaults */ flags = sat_cfg_get_int_def(SAT_CFG_INT_SINGLE_SAT_FIELDS); } else { /* local mode, get global value */ flags = sat_cfg_get_int(SAT_CFG_INT_SINGLE_SAT_FIELDS); } for (i = 0; i < SINGLE_SAT_FIELD_NUMBER; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); } /* reset flags */ dirty = FALSE; reset = TRUE; } static void create_reset_button(GKeyFile * cfg, GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), cfg); if (cfg == NULL) { gtk_widget_set_tooltip_text(button, _ ("Reset settings to the default values.")); } else { gtk_widget_set_tooltip_text(button, _ ("Reset module settings to the global values.")); } butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } GtkWidget *sat_pref_single_sat_create(GKeyFile * cfg) { GtkWidget *table; GtkWidget *vbox; GtkWidget *label; guint i; table = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(table), 10); gtk_grid_set_column_spacing(GTK_GRID(table), 5); /* create header */ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_label_set_markup(GTK_LABEL(label), _("Visible Fields:")); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 2, 1); /* get visible column flags */ if (cfg != NULL) { flags = mod_cfg_get_int(cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_FIELDS, SAT_CFG_INT_SINGLE_SAT_FIELDS); } else { flags = sat_cfg_get_int(SAT_CFG_INT_SINGLE_SAT_FIELDS); } for (i = 0; i < SINGLE_SAT_FIELD_NUMBER; i++) { check[i] = gtk_check_button_new_with_label(_(SINGLE_SAT_FIELD_TITLE[i])); gtk_widget_set_tooltip_text(check[i], _(SINGLE_SAT_FIELD_HINT[i])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check[i]), flags & (1 << i)); g_signal_connect(check[i], "toggled", G_CALLBACK(toggle_cb), GUINT_TO_POINTER(i)); gtk_grid_attach(GTK_GRID(table), check[i], i % COLUMNS, Y0 + i / COLUMNS, 1, 1); } /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(cfg, GTK_BOX(vbox)); startflags = flags; dirty = FALSE; reset = FALSE; return vbox; } gpredict/src/sat-pref-single-sat.h000066400000000000000000000003671427377236300174300ustar00rootroot00000000000000#ifndef SAT_PREF_SINGLE_SAT_H #define SAT_PREF_SINGLE_SAT_H 1 GtkWidget *sat_pref_single_sat_create(GKeyFile * cfg); void sat_pref_single_sat_cancel(GKeyFile * cfg); void sat_pref_single_sat_ok(GKeyFile * cfg); #endif gpredict/src/sat-pref-sky-at-glance.c000066400000000000000000000432021427377236300200070ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "gpredict-utils.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-sky-at-glance.h" static GtkWidget *timesp; /* spin button for number of hours */ static GtkWidget *col1, *col2, *col3, *col4, *col5; static GtkWidget *col6, *col7, *col8, *col9, *col10; static gboolean dirty = FALSE; /* used to check whether any changes have occurred */ static gboolean reset = FALSE; void sat_pref_sky_at_glance_cancel() { dirty = FALSE; reset = FALSE; } void sat_pref_sky_at_glance_ok() { GdkRGBA gdk_rgba; guint rgb; if (dirty) { /* values have changed; store new values */ sat_cfg_set_int(SAT_CFG_INT_SKYATGL_TIME, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (timesp))); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col1), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_01, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col2), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_02, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col3), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_03, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col4), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_04, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col5), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_05, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col6), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_06, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col7), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_07, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col8), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_08, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col9), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_09, rgb); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col10), &gdk_rgba); rgb = rgb_to_cfg(&gdk_rgba); sat_cfg_set_int(SAT_CFG_INT_SKYATGL_COL_10, rgb); } else if (reset) { /* values haven't changed since last reset */ sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_TIME); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_01); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_02); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_03); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_04); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_05); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_06); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_07); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_08); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_09); sat_cfg_reset_int(SAT_CFG_INT_SKYATGL_COL_10); /* FIXME: sats */ } } static void spin_changed_cb(GtkWidget * spinner, gpointer data) { (void)spinner; (void)data; dirty = TRUE; } /** * Reset settings. * * @param button The RESET button. * @param data User data (unused). * * This function is called when the user clicks on the RESET button. The function * will get the default values for the parameters and set the dirty and reset flags * appropriately. The reset will not have any effect if the user cancels the * dialog. */ static void reset_cb(GtkWidget * button, gpointer data) { guint rgb; GdkRGBA gdk_rgba; (void)data; (void)button; /* get defaults */ /* hours */ gtk_spin_button_set_value(GTK_SPIN_BUTTON(timesp), sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_TIME)); /* satellites */ /* colours */ rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_01); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col1), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_02); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col2), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_03); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col3), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_04); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col4), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_05); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col5), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_06); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col6), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_07); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col7), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_08); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col8), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_09); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col9), &gdk_rgba); rgb = sat_cfg_get_int_def(SAT_CFG_INT_SKYATGL_COL_10); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col10), &gdk_rgba); /* reset flags */ reset = TRUE; dirty = FALSE; } /** * Manage color and font changes. * * @param but The color/font picker button that received the signal. * @param data User data (always NULL). * * We don't need to do anything but set the dirty flag since the values can * always be obtained from the global widgets. */ static void colour_changed(GtkWidget * but, gpointer data) { (void)but; (void)data; dirty = TRUE; } /** * Create RESET button. * * @param cfg Config data or NULL in global mode. * @param vbox The container. * * This function creates and sets up the view selector combos. */ static void create_reset_button(GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(button, _("Reset settings to the default values.")); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } /** * Create and initialise widgets for the sky-at-glance tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be loaded. */ GtkWidget *sat_pref_sky_at_glance_create() { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; GdkRGBA gdk_rgba; guint rgb; /* 0xRRGGBB encoded colour */ guint y; dirty = FALSE; reset = FALSE; table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_row_homogeneous(GTK_GRID(table), FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 5); gtk_grid_set_row_spacing(GTK_GRID(table), 5); label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Time:")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); /* number of hours */ label = gtk_label_new(_("Find and show passes that occur within")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 2, 1); timesp = gtk_spin_button_new_with_range(1, 24, 1); gtk_widget_set_tooltip_text(timesp, _ ("The passes shown on the Sky at a Glance chart\n" "will begin within this number of hours.")); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(timesp), 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(timesp), TRUE); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(timesp), FALSE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(timesp), sat_cfg_get_int(SAT_CFG_INT_SKYATGL_TIME)); g_signal_connect(G_OBJECT(timesp), "value-changed", G_CALLBACK(spin_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), timesp, 2, 1, 1, 1); label = gtk_label_new(_("hours")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 3, 1, 1, 1); /* separator */ gtk_grid_attach(GTK_GRID(table), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), 0, 2, 5, 1); y = 3; label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Colours:")); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y, 1, 1); /* colour 1 */ label = gtk_label_new(_("Satellite 1: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y + 1, 1, 1); col1 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col1), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col1), _("Select colour 1")); gtk_grid_attach(GTK_GRID(table), col1, 1, y + 1, 1, 1); gtk_widget_set_tooltip_text(col1, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_01); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col1), &gdk_rgba); g_signal_connect(col1, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 2 */ label = gtk_label_new(_("Satellite 2: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y + 2, 1, 1); col2 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col2), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col1), _("Select colour 2")); gtk_grid_attach(GTK_GRID(table), col2, 1, y + 2, 1, 1); gtk_widget_set_tooltip_text(col2, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_02); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col2), &gdk_rgba); g_signal_connect(col2, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 3 */ label = gtk_label_new(_("Satellite 3: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y + 3, 1, 1); col3 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col3), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col3), _("Select colour 3")); gtk_grid_attach(GTK_GRID(table), col3, 1, y + 3, 1, 1); gtk_widget_set_tooltip_text(col3, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_03); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col3), &gdk_rgba); g_signal_connect(col3, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 4 */ label = gtk_label_new(_("Satellite 4: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y + 4, 1, 1); col4 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col4), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col4), _("Select colour 4")); gtk_grid_attach(GTK_GRID(table), col4, 1, y + 4, 1, 1); gtk_widget_set_tooltip_text(col4, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_04); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col4), &gdk_rgba); g_signal_connect(col4, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 5 */ label = gtk_label_new(_("Satellite 5: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, y + 5, 1, 1); col5 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col5), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col5), _("Select colour 5")); gtk_grid_attach(GTK_GRID(table), col5, 1, y + 5, 1, 1); gtk_widget_set_tooltip_text(col5, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_05); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col5), &gdk_rgba); g_signal_connect(col5, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 6 */ label = gtk_label_new(_("Satellite 6: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, y + 1, 1, 1); col6 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col6), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col6), _("Select colour 6")); gtk_grid_attach(GTK_GRID(table), col6, 3, y + 1, 1, 1); gtk_widget_set_tooltip_text(col6, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_06); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col6), &gdk_rgba); g_signal_connect(col6, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 7 */ label = gtk_label_new(_("Satellite 7: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, y + 2, 1, 1); col7 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col7), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col7), _("Select colour 7")); gtk_grid_attach(GTK_GRID(table), col7, 3, y + 2, 1, 1); gtk_widget_set_tooltip_text(col7, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_07); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col7), &gdk_rgba); g_signal_connect(col7, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 8 */ label = gtk_label_new(_("Satellite 8: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, y + 3, 1, 1); col8 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col8), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col8), _("Select colour 8")); gtk_grid_attach(GTK_GRID(table), col8, 3, y + 3, 1, 1); gtk_widget_set_tooltip_text(col8, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_08); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col8), &gdk_rgba); g_signal_connect(col8, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 9 */ label = gtk_label_new(_("Satellite 9: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, y + 4, 1, 1); col9 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col9), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col9), _("Select colour 9")); gtk_grid_attach(GTK_GRID(table), col9, 3, y + 4, 1, 1); gtk_widget_set_tooltip_text(col9, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_09); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col9), &gdk_rgba); g_signal_connect(col9, "color-set", G_CALLBACK(colour_changed), NULL); /* colour 10 */ label = gtk_label_new(_("Satellite 10: ")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 2, y + 5, 1, 1); col10 = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(col10), FALSE); gtk_color_button_set_title(GTK_COLOR_BUTTON(col10), _("Select colour 10")); gtk_grid_attach(GTK_GRID(table), col10, 3, y + 5, 1, 1); gtk_widget_set_tooltip_text(col10, _("Click to select a colour")); rgb = sat_cfg_get_int(SAT_CFG_INT_SKYATGL_COL_10); rgb_from_cfg(rgb, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(col10), &gdk_rgba); g_signal_connect(col10, "color-set", G_CALLBACK(colour_changed), NULL); /* create vertical box */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button(GTK_BOX(vbox)); return vbox; } gpredict/src/sat-pref-sky-at-glance.h000066400000000000000000000003501427377236300200110ustar00rootroot00000000000000#ifndef SAT_PREF_SKY_AT_GLANCE_H #define SAT_PREF_SKY_AT_GLANCE_H 1 GtkWidget *sat_pref_sky_at_glance_create(void); void sat_pref_sky_at_glance_cancel(void); void sat_pref_sky_at_glance_ok(void); #endif gpredict/src/sat-pref-tle.c000066400000000000000000000430371427377236300161420ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "sat-cfg.h" #include "sat-log.h" #include "sat-pref-tle.h" #include "tle-update.h" extern GtkWidget *window; /* dialog window defined in sat-pref.c */ /* Update frequency widget */ static GtkWidget *freq; /* auto update radio buttons */ static GtkWidget *warn, *autom; /* internet updates */ static GtkWidget *proxy, *tle_url_view, *add_tle, *del_tle; /* add new sats */ static GtkWidget *addnew; static gboolean dirty = FALSE; static gboolean reset = FALSE; /* * Configuration values changed. * * This function is called when one of the configuration values are * modified. It sets the dirty flag to TRUE to indicate that the * configuration values should be stored in case th euser presses * the OK button. */ static void value_changed_cb(GtkWidget * widget, gpointer data) { (void)widget; (void)data; dirty = TRUE; } /* Create widgets for auto-update configuration */ static void create_auto_update(GtkWidget * vbox) { GtkWidget *label; GtkWidget *box; guint i; /* auto update */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Auto-Update:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); /* frequency */ freq = gtk_combo_box_text_new(); for (i = 0; i < TLE_AUTO_UPDATE_NUM; i++) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(freq), tle_update_freq_to_str(i)); } gtk_combo_box_set_active(GTK_COMBO_BOX(freq), sat_cfg_get_int(SAT_CFG_INT_TLE_AUTO_UPD_FREQ)); g_signal_connect(freq, "changed", G_CALLBACK(value_changed_cb), NULL); label = gtk_label_new(_("Check the age of TLE data:")); box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_set_homogeneous(GTK_BOX(box), FALSE); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), freq, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, TRUE, 0); /* radio buttons selecting action */ label = gtk_label_new(_("If TLEs are too old:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); warn = gtk_radio_button_new_with_label(NULL, _("Notify me")); gtk_box_pack_start(GTK_BOX(vbox), warn, FALSE, TRUE, 0); autom = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(warn), _ ("Perform automatic update in the background")); gtk_box_pack_start(GTK_BOX(vbox), autom, FALSE, TRUE, 0); /* warn is selected automatically by default */ if (sat_cfg_get_int(SAT_CFG_INT_TLE_AUTO_UPD_ACTION) == TLE_AUTO_UPDATE_GOAHEAD) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(autom), TRUE); } g_signal_connect(warn, "toggled", G_CALLBACK(value_changed_cb), NULL); g_signal_connect(autom, "toggled", G_CALLBACK(value_changed_cb), NULL); } /* Callback function called when an URL entry in the list has been edited */ static void url_edited_cb(GtkCellRendererText * renderer, gchar * path, gchar * new_text, GtkListStore * tle_store) { GtkTreeIter iter; (void)renderer; gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(tle_store), &iter, path); gtk_list_store_set(tle_store, &iter, 0, new_text, -1); dirty = TRUE; } /* Add TLE button clicked */ static void add_tle_cb(GtkWidget * button, GtkListStore * tle_store) { GtkTreeView *tv = GTK_TREE_VIEW(tle_url_view); GtkTreePath *path; GtkTreeIter iter; GtkTreeSelection *selection; (void)button; gtk_list_store_append(tle_store, &iter); gtk_list_store_set(tle_store, &iter, 0, "http://server.com/file.txt", -1); /* activate the newly added row */ path = gtk_tree_model_get_path(GTK_TREE_MODEL(tle_store), &iter); selection = gtk_tree_view_get_selection(tv); gtk_tree_selection_select_path(selection, path); gtk_tree_view_scroll_to_cell(tv, path, NULL, FALSE, 0.0, 0.0); /* TODO: Enable editing on row */ dirty = TRUE; } /* Delete TLE button clicked */ static void del_tle_cb(GtkWidget * button, gpointer data) { (void)button; (void)data; GtkTreeView *tv = GTK_TREE_VIEW(tle_url_view); GtkTreeModel *model = gtk_tree_view_get_model(tv); GtkTreeModel *selmod; GtkTreeSelection *selection; GtkTreeIter iter; /* if this is the only entry, tell user that it is not possible to delete */ if (gtk_tree_model_iter_n_children(model, NULL) < 2) { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Can not delete TLE source!\n\n" "You should have at least one TLE source configured, " "otherwise Gpredict may not work correctly.\n\n" "If you want to modify the TLE source, click twice " "on the row to edit it.")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { /* get selected row FIXME: do we really need to work with two models? */ selection = gtk_tree_view_get_selection(tv); if (gtk_tree_selection_get_selected(selection, &selmod, &iter)) gtk_list_store_remove(GTK_LIST_STORE(selmod), &iter); dirty = TRUE; } } static GtkWidget *create_tle_buttons(GtkListStore * tle_store) { GtkWidget *box; add_tle = gtk_button_new_with_label(_("Add TLE source")); gtk_widget_set_tooltip_text(add_tle, _("Add a new TLE source to the list")); g_signal_connect(add_tle, "clicked", (GCallback) add_tle_cb, tle_store); del_tle = gtk_button_new_with_label(_("Delete TLE source")); gtk_widget_set_tooltip_text(del_tle, _("Delete the selected TLE source")); g_signal_connect(del_tle, "clicked", (GCallback) del_tle_cb, NULL); box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(box), GTK_BUTTONBOX_START); gtk_container_add(GTK_CONTAINER(box), add_tle); gtk_container_add(GTK_CONTAINER(box), del_tle); return box; } /* Update TLE URL view with URLs from tle_url_str */ static void set_tle_urls(const gchar * tle_url_str) { if (!tle_url_str) return; gchar **tle_url_strv = g_strsplit(tle_url_str, ";", -1); if (g_strv_length(tle_url_strv) > 0) { GtkTreeIter iter; GtkListStore *tle_store; unsigned int i; tle_store = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW(tle_url_view))); gtk_list_store_clear(tle_store); for (i = 0; i < g_strv_length(tle_url_strv); i++) { gtk_list_store_append(tle_store, &iter); gtk_list_store_set(tle_store, &iter, 0, tle_url_strv[i], -1); } } g_strfreev(tle_url_strv); } /* Create widgets for network update configuration */ static void create_network(GtkWidget * vbox) { GtkWidget *swin; GtkWidget *table; GtkWidget *label; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkListStore *tle_store; /* auto update */ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), _("Update from the Internet:")); g_object_set(label, "xalign", 0.0, "yalign", 0.5, NULL); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); table = gtk_grid_new(); gtk_grid_set_column_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_row_spacing(GTK_GRID(table), 5); gtk_grid_set_column_spacing(GTK_GRID(table), 5); label = gtk_label_new(_("Proxy server:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); proxy = gtk_entry_new(); if (sat_cfg_get_str(SAT_CFG_STR_TLE_PROXY)) gtk_entry_set_text(GTK_ENTRY(proxy), sat_cfg_get_str(SAT_CFG_STR_TLE_PROXY)); gtk_widget_set_tooltip_text(proxy, _("Enter URL for local proxy server. e.g.\n" "http://my.proxy.com")); g_signal_connect(proxy, "changed", G_CALLBACK(value_changed_cb), NULL); gtk_grid_attach(GTK_GRID(table), proxy, 1, 0, 5, 1); /* URLs */ label = gtk_label_new(_("TLE sources:")); g_object_set(label, "xalign", 1.0, "yalign", 0.5, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); tle_store = gtk_list_store_new(1, G_TYPE_STRING); tle_url_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(tle_store)); g_object_unref(tle_store); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tle_url_view), FALSE); gtk_widget_set_tooltip_text(tle_url_view, _ ("List of files with TLE data to retrieve from " "the Internet\nClick twice on a row to edit")); renderer = gtk_cell_renderer_text_new(); g_object_set(renderer, "editable", TRUE, NULL); g_signal_connect(renderer, "edited", G_CALLBACK(url_edited_cb), tle_store); column = gtk_tree_view_column_new_with_attributes("Invisible title :)", renderer, "text", 0, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tle_url_view), column); /* set URL data */ gchar *tle_url_str = sat_cfg_get_str(SAT_CFG_STR_TLE_URLS); set_tle_urls(tle_url_str); g_free(tle_url_str); /* scrolled window to contain the URL list */ swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), tle_url_view); gtk_grid_attach(GTK_GRID(table), swin, 1, 1, 5, 3); gtk_grid_attach(GTK_GRID(table), create_tle_buttons(tle_store), 1, 4, 4, 1); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); } /* Create widgets for network update configuration */ static void create_misc(GtkWidget * vbox) { #define ADBUT_TEXT N_("Add new satellites to local database") #define ADBUT_TIP N_("Note that selecting this option may cause previously " \ "deleted satellites to be re-added to the database.") addnew = gtk_check_button_new_with_label(ADBUT_TEXT); gtk_widget_set_tooltip_text(addnew, ADBUT_TIP); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(addnew), sat_cfg_get_bool(SAT_CFG_BOOL_TLE_ADD_NEW)); g_signal_connect(addnew, "toggled", G_CALLBACK(value_changed_cb), NULL); gtk_box_pack_start(GTK_BOX(vbox), addnew, FALSE, TRUE, 0); } /* * Reset settings. * * @param button The RESET button. * @param data User data (unused). * * This function is called when the user clicks on the RESET button. The function * will get the default values for the parameters and set the dirty and reset flags * appropriately. The reset will not have any effect if the user cancels the * dialog. */ static void reset_cb(GtkWidget * button, gpointer data) { (void)button; (void)data; /* get defaults */ /* update frequency */ gtk_combo_box_set_active(GTK_COMBO_BOX(freq), sat_cfg_get_int_def (SAT_CFG_INT_TLE_AUTO_UPD_FREQ)); /* action */ if (sat_cfg_get_int_def(SAT_CFG_INT_TLE_AUTO_UPD_ACTION) == TLE_AUTO_UPDATE_GOAHEAD) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(autom), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(warn), TRUE); } /* proxy */ gtk_entry_set_text(GTK_ENTRY(proxy), ""); /* URLS */ gchar *tle_url_str = sat_cfg_get_str_def(SAT_CFG_STR_TLE_URLS); set_tle_urls(tle_url_str); g_free(tle_url_str); /* add new sats */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(addnew), sat_cfg_get_bool_def (SAT_CFG_BOOL_TLE_ADD_NEW)); /* reset flags */ reset = TRUE; dirty = FALSE; } /* * Create RESET button. * * @param cfg Config data or NULL in global mode. * @param vbox The container. * * This function creates and sets up the view selector combos. */ static void create_reset_button(GtkBox * vbox) { GtkWidget *button; GtkWidget *butbox; button = gtk_button_new_with_label(_("Reset")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_cb), NULL); gtk_widget_set_tooltip_text(button, _("Reset settings to the default values.")); butbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_END); gtk_box_pack_end(GTK_BOX(butbox), button, FALSE, TRUE, 10); gtk_box_pack_end(vbox, butbox, FALSE, TRUE, 0); } /* User pressed cancel. Any changes to config must be cancelled. */ void sat_pref_tle_cancel() { dirty = FALSE; reset = FALSE; } /* User pressed OK. Any changes should be stored in config. */ void sat_pref_tle_ok() { if (dirty) { /* save settings */ /* update frequency */ sat_cfg_set_int(SAT_CFG_INT_TLE_AUTO_UPD_FREQ, gtk_combo_box_get_active(GTK_COMBO_BOX(freq))); /* action to take */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(autom))) sat_cfg_set_int(SAT_CFG_INT_TLE_AUTO_UPD_ACTION, TLE_AUTO_UPDATE_GOAHEAD); else sat_cfg_set_int(SAT_CFG_INT_TLE_AUTO_UPD_ACTION, TLE_AUTO_UPDATE_NOTIFY); /* proxy */ if (gtk_entry_get_text_length(GTK_ENTRY(proxy)) > 0) sat_cfg_set_str(SAT_CFG_STR_TLE_PROXY, gtk_entry_get_text(GTK_ENTRY(proxy))); else sat_cfg_reset_str(SAT_CFG_STR_TLE_PROXY); /* URLS */ gsize num; guint i; gchar *url, *buff, *all_urls = NULL; GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model(GTK_TREE_VIEW(tle_url_view)); num = gtk_tree_model_iter_n_children(model, NULL); for (i = 0; i < num; i++) { if (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { gtk_tree_model_get(model, &iter, 0, &url, -1); if (i > 0) { buff = g_strdup_printf("%s;%s", all_urls, url); g_free(all_urls); } else { buff = g_strdup_printf("%s", url); } all_urls = g_strdup(buff); g_free(buff); g_free(url); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Error fetching entry %d in URL list"), __FILE__, __func__, i); } } sat_cfg_set_str(SAT_CFG_STR_TLE_URLS, all_urls); g_free(all_urls); dirty = FALSE; } else if (reset) { /* use sat_cfg_reset */ sat_cfg_reset_int(SAT_CFG_INT_TLE_AUTO_UPD_FREQ); sat_cfg_reset_int(SAT_CFG_INT_TLE_AUTO_UPD_ACTION); sat_cfg_reset_str(SAT_CFG_STR_TLE_PROXY); sat_cfg_reset_str(SAT_CFG_STR_TLE_URLS); sat_cfg_reset_bool(SAT_CFG_BOOL_TLE_ADD_NEW); reset = FALSE; } } GtkWidget *sat_pref_tle_create() { GtkWidget *vbox; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_box_set_homogeneous(GTK_BOX(vbox), FALSE); gtk_container_set_border_width(GTK_CONTAINER(vbox), 20); create_auto_update(vbox); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 0); create_network(vbox); gtk_box_pack_start(GTK_BOX(vbox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, TRUE, 0); create_misc(vbox); create_reset_button(GTK_BOX(vbox)); return vbox; } gpredict/src/sat-pref-tle.h000066400000000000000000000002661427377236300161440ustar00rootroot00000000000000#ifndef SAT_PREF_TLE_H #define SAT_PREF_TLE_H 1 GtkWidget *sat_pref_tle_create(void); void sat_pref_tle_cancel(void); void sat_pref_tle_ok(void); #endif gpredict/src/sat-pref.c000066400000000000000000000173471427377236300153650ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "compat.h" #include "gpredict-utils.h" #include "sat-cfg.h" #include "sat-pref.h" #include "sat-pref-general.h" #include "sat-pref-interfaces.h" #include "sat-pref-modules.h" #include "sat-pref-predict.h" /** Columns in the icon list */ enum { NBOOK_PAGE_GENERAL = 0, NBOOK_PAGE_MODULES, NBOOK_PAGE_INTERFACE, NBOOK_PAGE_PREDICT }; const gchar *WINDOW_TITLE[4] = { N_("GPREDICT Preferences :: General"), N_("GPREDICT Preferences :: Modules"), N_("GPREDICT Preferences :: Interfaces"), N_("GPREDICT Preferences :: Predict") }; GtkWidget *window; /* dialog window */ extern GtkWidget *app; static void button_press_cb(GtkWidget * widget, gpointer nbook); /** * Create and run preferences dialog. * * The preferences dialog contains a GtkNoteBook, which is used to group * the various configuration parts/modules (General, Modules, Interfaces, ...). * Each configuration part can contain several subgroups that are managed * by the module itself. As an example, consider the "Modules" tab which * could have the following sub-groups: General, List View, Map View and so on. * The tabs of the notebook are invisible, instead a vertical icon list * placed on the left of the notebook is used to navigate through the * notebook pages. The icon list is actually implemented using pixmap buttons * in a button box. Using something like the GtkIconView would have been better * but that seems to be rather useless when packed into a box. */ void sat_pref_run() { GtkWidget *nbook; /* notebook widget */ GtkWidget *hbox; /* horizontal box */ GtkWidget *butbox; GtkWidget *genbut, *modbut, *ifbut, *predbut; gchar *iconfile; gint response; /* Create notebook and add individual pages. The individual pages will need the GKeyFile */ nbook = gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_general_create(), gtk_label_new(_("General"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_modules_create(NULL), gtk_label_new(_("Modules"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_interfaces_create(), gtk_label_new(_("Interfaces"))); gtk_notebook_append_page(GTK_NOTEBOOK(nbook), sat_pref_predict_create(), gtk_label_new(_("Predict"))); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nbook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(nbook), FALSE); /* create a button box and add the buttons one by one */ genbut = gpredict_vpixmap_button("gpredict-sat-pref.png", _("General"), NULL); gtk_button_set_relief(GTK_BUTTON(genbut), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(genbut), "page", GINT_TO_POINTER(NBOOK_PAGE_GENERAL)); g_signal_connect(G_OBJECT(genbut), "clicked", G_CALLBACK(button_press_cb), nbook); modbut = gpredict_vpixmap_button("gpredict-sat-list.png", _("Modules"), NULL); gtk_button_set_relief(GTK_BUTTON(modbut), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(modbut), "page", GINT_TO_POINTER(NBOOK_PAGE_MODULES)); g_signal_connect(G_OBJECT(modbut), "clicked", G_CALLBACK(button_press_cb), nbook); ifbut = gpredict_vpixmap_button("gpredict-oscilloscope.png", _("Interfaces"), NULL); gtk_button_set_relief(GTK_BUTTON(ifbut), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(ifbut), "page", GINT_TO_POINTER(NBOOK_PAGE_INTERFACE)); g_signal_connect(G_OBJECT(ifbut), "clicked", G_CALLBACK(button_press_cb), nbook); predbut = gpredict_vpixmap_button("gpredict-calendar.png", _("Predict"), NULL); gtk_button_set_relief(GTK_BUTTON(predbut), GTK_RELIEF_NONE); g_object_set_data(G_OBJECT(predbut), "page", GINT_TO_POINTER(NBOOK_PAGE_PREDICT)); g_signal_connect(G_OBJECT(predbut), "clicked", G_CALLBACK(button_press_cb), nbook); butbox = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(butbox), GTK_BUTTONBOX_START); gtk_container_add(GTK_CONTAINER(butbox), genbut); gtk_container_add(GTK_CONTAINER(butbox), modbut); gtk_container_add(GTK_CONTAINER(butbox), ifbut); gtk_container_add(GTK_CONTAINER(butbox), predbut); /* create horizontal box which will contain the icon list on the left side and the notebook on the right side. */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_set_homogeneous(GTK_BOX(hbox), FALSE); gtk_box_pack_start(GTK_BOX(hbox), butbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), nbook, TRUE, TRUE, 0); gtk_widget_show_all(hbox); /* create and display preferences window */ window = gtk_dialog_new_with_buttons(_("Gpredict Preferences :: General"), GTK_WINDOW(app), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_OK", GTK_RESPONSE_ACCEPT, NULL); iconfile = icon_file_name("gpredict-sat-pref.png"); gtk_window_set_icon_from_file(GTK_WINDOW(window), iconfile, NULL); g_free(iconfile); gtk_box_pack_start(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(window))), hbox, TRUE, TRUE, 0); gtk_box_set_spacing(GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG(window))), 10); gtk_button_clicked(GTK_BUTTON(genbut)); response = gtk_dialog_run(GTK_DIALOG(window)); switch (response) { case GTK_RESPONSE_ACCEPT: sat_pref_general_ok(); sat_pref_modules_ok(NULL); sat_pref_interfaces_ok(); sat_pref_predict_ok(); sat_cfg_save(); break; default: sat_pref_general_cancel(); sat_pref_modules_cancel(NULL); sat_pref_interfaces_cancel(); sat_pref_predict_cancel(); break; } gtk_widget_destroy(window); } /** * Handle button press events * * Basically consists of switching pages in the notebook. The page number is * received via the nbook parameter. */ static void button_press_cb(GtkWidget * widget, gpointer nbook) { gint page = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "page")); gtk_notebook_set_current_page(GTK_NOTEBOOK(nbook), page); gtk_window_set_title(GTK_WINDOW(window), _(WINDOW_TITLE[page])); } gpredict/src/sat-pref.h000066400000000000000000000001251427377236300153540ustar00rootroot00000000000000#ifndef SAT_PREF_H #define SAT_PREF_H 1 void sat_pref_run(void); #endif gpredict/src/sat-vis.c000066400000000000000000000065511427377236300152250ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /** \brief Satellite visibility calculations. */ #include #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" #include "sat-vis.h" #include "sat-cfg.h" static gchar VIS2CHR[SAT_VIS_NUM] = { '-', 'V', 'D', 'E'}; static gchar *VIS2STR[SAT_VIS_NUM] = { N_("Unknown"), N_("Visible"), N_("Daylight"), N_("Eclipsed") }; /** \brief Calculate satellite visibility. * \param sat The satellite structure. * \param qth The QTH * \param jul_utc The time at which the visibility should be calculated. * \return The visibility code. * */ sat_vis_t get_sat_vis (sat_t *sat, qth_t *qth, gdouble jul_utc) { gboolean sat_sun_status; gdouble sun_el; gdouble threshold; gdouble eclipse_depth; sat_vis_t vis = SAT_VIS_NONE; vector_t zero_vector = {0,0,0,0}; geodetic_t obs_geodetic; /* Solar ECI position vector */ vector_t solar_vector=zero_vector; /* Solar observed az and el vector */ obs_set_t solar_set; /* FIXME: could be passed as parameter */ obs_geodetic.lon = qth->lon * de2ra; obs_geodetic.lat = qth->lat * de2ra; obs_geodetic.alt = qth->alt / 1000.0; obs_geodetic.theta = 0; Calculate_Solar_Position (jul_utc, &solar_vector); Calculate_Obs (jul_utc, &solar_vector, &zero_vector, &obs_geodetic, &solar_set); if (Sat_Eclipsed (&sat->pos, &solar_vector, &eclipse_depth)) { /* satellite is eclipsed */ sat_sun_status = FALSE; } else { /* satellite in sunlight => may be visible */ sat_sun_status = TRUE; } if (sat_sun_status) { sun_el = Degrees (solar_set.el); threshold = (gdouble) sat_cfg_get_int (SAT_CFG_INT_PRED_TWILIGHT_THLD); if (sun_el <= threshold && sat->el >= 0.0) vis = SAT_VIS_VISIBLE; else vis = SAT_VIS_DAYLIGHT; } else vis = SAT_VIS_ECLIPSED; return vis; } /** \brief Convert visibility to character code. */ gchar vis_to_chr (sat_vis_t vis) { return VIS2CHR[vis]; } /** \brief Convert visibility to character string. * \param vis The visibility code * * The returned string must be freed when no longer needed. */ gchar * vis_to_str (sat_vis_t vis) { return g_strdup (_(VIS2STR[vis])); } gpredict/src/sat-vis.h000066400000000000000000000032741427377236300152310ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAT_VISIBILITY_H #define SAT_VISIBILITY_H #include #include #include "sgpsdp/sgp4sdp4.h" #include "gtk-sat-data.h" /** \brief Satellite visibility. */ typedef enum { SAT_VIS_NONE = 0, /*!< Unknown/undefined. */ SAT_VIS_VISIBLE, /*!< Visible. */ SAT_VIS_DAYLIGHT, /*!< Satellite is in daylight. */ SAT_VIS_ECLIPSED, /*!< Satellite is eclipsed. */ SAT_VIS_NUM } sat_vis_t; sat_vis_t get_sat_vis (sat_t *sat, qth_t *qth, gdouble jul_utc); gchar vis_to_chr (sat_vis_t vis); gchar *vis_to_str (sat_vis_t vis); #endif gpredict/src/save-pass.c000066400000000000000000000543761427377236300155510ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifdef HAVE_CONFIG_H #include #endif #include #include "gtk-sat-data.h" #include "pass-to-txt.h" #include "predict-tools.h" #include "sat-cfg.h" #include "sat-log.h" #include "sat-pass-dialogs.h" #include "gpredict-utils.h" #include "save-pass.h" #include "sgpsdp/sgp4sdp4.h" static void file_changed(GtkWidget * widget, gpointer data); static void save_pass_exec(GtkWidget * parent, pass_t * pass, qth_t * qth, const gchar * savedir, const gchar * savefile, gint format, gint contents); static void save_passes_exec(GtkWidget * parent, GSList * passes, qth_t * qth, const gchar * savedir, const gchar * savefile, gint format, gint contents); static void save_to_file(GtkWidget * parent, const gchar * fname, const gchar * data); enum pass_content_e { PASS_CONTENT_ALL = 0, PASS_CONTENT_TABLE, PASS_CONTENT_DATA, }; enum passes_content_e { PASSES_CONTENT_FULL = 0, PASSES_CONTENT_SUM, }; #define SAVE_FORMAT_TXT 0 /** * Save a satellite pass. * * @param toplevel Pointer to the parent dialogue window * * This function is called from the button click handler of the satellite pass * dialogue when the user presses the Save button. * * The function opens the Save Pass dialogue asking the user for where to save * the pass and in which format. When the user has made the required choices, * the function uses the lower level functions to save the pass information * to a file. * * \note All the relevant data are attached to the parent dialogue window. */ void save_pass(GtkWidget * parent) { GtkWidget *dialog; GtkWidget *grid; GtkWidget *dirchooser; GtkWidget *filchooser; GtkWidget *contents; GtkWidget *label; gint response; pass_t *pass; qth_t *qth; gchar *savedir = NULL; gchar *savefile; gint cont; /* get data attached to parent */ qth = (qth_t *) g_object_get_data(G_OBJECT(parent), "qth"); pass = (pass_t *) g_object_get_data(G_OBJECT(parent), "pass"); /* create the dialog */ dialog = gtk_dialog_new_with_buttons(_("Save Pass Details"), GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_Save", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); /* create the table */ grid = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(grid), 10); gtk_grid_set_row_spacing(GTK_GRID(grid), 10); gtk_container_set_border_width(GTK_CONTAINER(grid), 10); /* directory chooser */ label = gtk_label_new(_("Save in folder:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1); dirchooser = gtk_file_chooser_button_new(_("Select a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); savedir = sat_cfg_get_str(SAT_CFG_STR_PRED_SAVE_DIR); if (savedir) { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirchooser), savedir); g_free(savedir); } else { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirchooser), g_get_home_dir()); } gtk_grid_attach(GTK_GRID(grid), dirchooser, 1, 0, 1, 1); /* file name */ label = gtk_label_new(_("Save using file name:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 1, 1); filchooser = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(filchooser), 100); g_signal_connect(filchooser, "changed", G_CALLBACK(file_changed), dialog); gtk_grid_attach(GTK_GRID(grid), filchooser, 1, 1, 1, 1); /* use satellite name + orbit num as default; replace invalid characters with dash */ savefile = g_strdup_printf("%s-%d", pass->satname, pass->orbit); savefile = g_strdelimit(savefile, " ", '-'); savefile = g_strdelimit(savefile, "!?/\\()*&%$#@[]{}=+<>,.|:;", '_'); gtk_entry_set_text(GTK_ENTRY(filchooser), savefile); g_free(savefile); /* file contents */ label = gtk_label_new(_("File contents:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 2, 1, 1); contents = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(contents), _("Info+header+data")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(contents), _("Header + data")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(contents), _("Data only")); gtk_combo_box_set_active(GTK_COMBO_BOX(contents), sat_cfg_get_int(SAT_CFG_INT_PRED_SAVE_CONTENTS)); gtk_grid_attach(GTK_GRID(grid), contents, 1, 2, 1, 1); gtk_widget_show_all(grid); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), grid); /* run the dialog */ response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* user clicked the save button */ case GTK_RESPONSE_ACCEPT: /* get file and directory */ savedir = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dirchooser)); savefile = g_strdup(gtk_entry_get_text(GTK_ENTRY(filchooser))); cont = gtk_combo_box_get_active(GTK_COMBO_BOX(contents)); /* call saver */ save_pass_exec(dialog, pass, qth, savedir, savefile, SAVE_FORMAT_TXT, cont); /* store new settings */ sat_cfg_set_str(SAT_CFG_STR_PRED_SAVE_DIR, savedir); sat_cfg_set_int(SAT_CFG_INT_PRED_SAVE_CONTENTS, cont); /* clean up */ g_free(savedir); g_free(savefile); break; /* cancel */ default: break; } gtk_widget_destroy(dialog); } /** * Save a satellite passes. * * @param toplevel Pointer to the parent dialogue window * * This function is called from the button click handler of the satellite passes * dialogue when the user presses the Save button. * * The function opens the Save Pass dialogue asking the user for where to save * the data and in which format. When the user has made the required choices, * the function uses the lower level functions to save the pass information * to a file. * * @note All the relevant data are attached to the parent dialogue window. */ void save_passes(GtkWidget * parent) { GtkWidget *dialog; GtkWidget *grid; GtkWidget *dirchooser; GtkWidget *filchooser; GtkWidget *contents; GtkWidget *label; gint response; GSList *passes; gchar *sat; qth_t *qth; gchar *savedir = NULL; gchar *savefile; gint cont; /* get data attached to parent */ sat = (gchar *) g_object_get_data(G_OBJECT(parent), "sat"); qth = (qth_t *) g_object_get_data(G_OBJECT(parent), "qth"); passes = (GSList *) g_object_get_data(G_OBJECT(parent), "passes"); /* create the dialog */ dialog = gtk_dialog_new_with_buttons(_("Save Passes"), GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_Save", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); /* create the table */ grid = gtk_grid_new(); gtk_grid_set_column_spacing(GTK_GRID(grid), 10); gtk_grid_set_row_spacing(GTK_GRID(grid), 10); gtk_container_set_border_width(GTK_CONTAINER(grid), 10); /* directory chooser */ label = gtk_label_new(_("Save in folder:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1); dirchooser = gtk_file_chooser_button_new(_("Select a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); savedir = sat_cfg_get_str(SAT_CFG_STR_PRED_SAVE_DIR); if (savedir) { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirchooser), savedir); g_free(savedir); } else { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirchooser), g_get_home_dir()); } gtk_grid_attach(GTK_GRID(grid), dirchooser, 1, 0, 1, 1); /* file name */ label = gtk_label_new(_("Save using file name:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 1, 1); filchooser = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(filchooser), 100); g_signal_connect(filchooser, "changed", G_CALLBACK(file_changed), dialog); gtk_grid_attach(GTK_GRID(grid), filchooser, 1, 1, 1, 1); /* use satellite name + orbit num as default; replace invalid characters with dash */ savefile = g_strdup_printf("%s-passes", sat); savefile = g_strdelimit(savefile, " ", '-'); savefile = g_strdelimit(savefile, "!?/\\()*&%$#@[]{}=+<>,.|:;", '_'); gtk_entry_set_text(GTK_ENTRY(filchooser), savefile); g_free(savefile); /* file contents */ label = gtk_label_new(_("File contents:")); g_object_set(G_OBJECT(label), "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, 2, 1, 1); contents = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(contents), _("Complete report")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(contents), _("Summary")); gtk_combo_box_set_active(GTK_COMBO_BOX(contents), 0); gtk_grid_attach(GTK_GRID(grid), contents, 1, 2, 1, 1); gtk_widget_show_all(grid); gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), grid); /* run the dialog */ response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { /* user clicked the save button */ case GTK_RESPONSE_ACCEPT: /* get file and directory */ savedir = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dirchooser)); savefile = g_strdup(gtk_entry_get_text(GTK_ENTRY(filchooser))); cont = gtk_combo_box_get_active(GTK_COMBO_BOX(contents)); /* call saver */ save_passes_exec(dialog, passes, qth, savedir, savefile, SAVE_FORMAT_TXT, cont); /* store new settings */ sat_cfg_set_str(SAT_CFG_STR_PRED_SAVE_DIR, savedir); /* clean up */ g_free(savedir); g_free(savefile); break; /* cancel */ default: break; } gtk_widget_destroy(dialog); } /** * Manage file name changes. * * @param widget The GtkEntry that received the signal * @param data User data (not used). * * This function is called when the contents of the file name entry changes. * It validates all characters and invalid chars are deleted. * The function sets the state of the Save button according to the validity * of the current file name. */ static void file_changed(GtkWidget * widget, gpointer data) { gchar *entry, *end, *j; gint len, pos; const gchar *text; GtkWidget *dialog = GTK_WIDGET(data); /* ensure that only valid characters are entered (stolen from xlog, tnx pg4i) */ entry = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); if ((len = g_utf8_strlen(entry, -1)) > 0) { end = entry + g_utf8_strlen(entry, -1); for (j = entry; j < end; ++j) { if (!gpredict_legal_char(*j)) { gdk_display_beep(gdk_display_get_default()); pos = gtk_editable_get_position(GTK_EDITABLE(widget)); gtk_editable_delete_text(GTK_EDITABLE(widget), pos, pos + 1); } } } /* step 2: if name seems all right, enable OK button */ text = gtk_entry_get_text(GTK_ENTRY(widget)); if (g_utf8_strlen(text, -1) > 0) { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, TRUE); } else { gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); } } /** * Save data to file. * * @param parent Parent window (needed for error dialogs). * @param pass The pass data to save. * @param qth The observer data * @param savedir The directory where data should be saved. * @param savefile The file where data should be saved. * @param format The file format * @param contents The contents defining whether to save headers and such. * * This is the function that does the actual saving to a data file once all * required information has been gathered (i.e. file name, format, contents). * The function does some last minute checking while saving and provides * error messages if anything fails during the process. * * @note The formatting is done by external functions according to the selected * file format. */ static void save_passes_exec(GtkWidget * parent, GSList * passes, qth_t * qth, const gchar * savedir, const gchar * savefile, gint format, gint contents) { gchar *fname; gchar *pgheader; gchar *tblheader; gchar *tblcontents; gchar *buff = NULL; gchar *data = NULL; pass_t *pass; gint fields; guint i, n; switch (format) { case SAVE_FORMAT_TXT: /* prepare full file name */ fname = g_strconcat(savedir, G_DIR_SEPARATOR_S, savefile, ".txt", NULL); /* get visible columns for summary */ fields = sat_cfg_get_int(SAT_CFG_INT_PRED_MULTI_COL); /* create file contents */ pgheader = passes_to_txt_pgheader(passes, qth, fields); tblheader = passes_to_txt_tblheader(passes, qth, fields); tblcontents = passes_to_txt_tblcontents(passes, qth, fields); data = g_strconcat(pgheader, tblheader, tblcontents, NULL); g_free(pgheader); g_free(tblheader); g_free(tblcontents); if (contents == PASSES_CONTENT_FULL) { fields = sat_cfg_get_int(SAT_CFG_INT_PRED_SINGLE_COL); n = g_slist_length(passes); for (i = 0; i < n; i++) { pass = PASS(g_slist_nth_data(passes, i)); tblheader = pass_to_txt_tblheader(pass, qth, fields); tblcontents = pass_to_txt_tblcontents(pass, qth, fields); buff = g_strdup_printf("%s\n Orbit %d\n%s%s", data, pass->orbit, tblheader, tblcontents); g_free(data); data = g_strdup(buff); g_free(buff); } } /* save data */ save_to_file(parent, fname, data); g_free(data); g_free(fname); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid file format: %d"), __func__, format); break; } } /** * Save data to file. * * @param parent Parent window (needed for error dialogs). * @param passes The pass data to save. * @param qth The observer data * @param savedir The directory where data should be saved. * @param savefile The file where data should be saved. * @param format The file format * @param contents The contents defining whether to save headers and such. * * This is the function that does the actual saving to a data file once all * required information has been gathered (i.e. file name, format, contents). * The function does some last minute checking while saving and provides * error messages if anything fails during the process. * * @note The formatting is done by external functions according to the selected * file format. */ static void save_pass_exec(GtkWidget * parent, pass_t * pass, qth_t * qth, const gchar * savedir, const gchar * savefile, gint format, gint contents) { gchar *fname; gchar *pgheader; gchar *tblheader; gchar *tblcontents; gchar *buff = NULL; gchar *data = NULL; gint fields; switch (format) { case SAVE_FORMAT_TXT: /* prepare full file name */ fname = g_strconcat(savedir, G_DIR_SEPARATOR_S, savefile, ".txt", NULL); /* get visible columns */ fields = sat_cfg_get_int(SAT_CFG_INT_PRED_SINGLE_COL); /* create file contents */ pgheader = pass_to_txt_pgheader(pass, qth, fields); tblheader = pass_to_txt_tblheader(pass, qth, fields); tblcontents = pass_to_txt_tblcontents(pass, qth, fields); /* Add page header if selected */ if (contents == PASS_CONTENT_ALL) { data = g_strdup(pgheader); } /* Add table header if selected */ if ((contents == PASS_CONTENT_ALL) || (contents == PASS_CONTENT_TABLE)) { if (data != NULL) { buff = g_strdup(data); g_free(data); data = g_strconcat(buff, tblheader, NULL); g_free(buff); } else { data = g_strdup(tblheader); } } /* Add data */ if (data != NULL) { buff = g_strdup(data); g_free(data); data = g_strconcat(buff, tblcontents, NULL); g_free(buff); } else { data = g_strdup(tblcontents); } /* save data */ save_to_file(parent, fname, data); /* clean up memory */ g_free(fname); g_free(data); g_free(pgheader); g_free(tblheader); g_free(tblcontents); break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Invalid file format: %d"), __func__, format); break; } } static void save_to_file(GtkWidget * parent, const gchar * fname, const gchar * data) { GIOChannel *chan; GError *err = NULL; GtkWidget *dialog; gsize count; /* create file */ chan = g_io_channel_new_file(fname, "w", &err); if (err != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not create file %s (%s)"), __func__, fname, err->message); /* error dialog */ dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Could not create file %s\n\n%s"), fname, err->message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); /* clean up and return */ g_clear_error(&err); return; } /* save contents to file */ g_io_channel_write_chars(chan, data, -1, &count, &err); if (err != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: An error occurred while saving data to %s (%s)"), __func__, fname, err->message); dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _ ("An error occurred while saving data to %s\n\n%s"), fname, err->message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); g_clear_error(&err); } else { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Written %d characters to %s"), __func__, count, fname); } /* close file, we don't care about errors here */ g_io_channel_shutdown(chan, TRUE, NULL); g_io_channel_unref(chan); } gpredict/src/save-pass.h000066400000000000000000000024131427377236300155370ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef SAVE_PASS_H #define SAVE_PASS_H 1 #include #include "gtk-sat-data.h" #include "predict-tools.h" #include "sat-pass-dialogs.h" void save_pass(GtkWidget * parent); void save_passes(GtkWidget * parent); #endif gpredict/src/sgpsdp/000077500000000000000000000000001427377236300147645ustar00rootroot00000000000000gpredict/src/sgpsdp/1_COPYING000066400000000000000000000017651427377236300162500ustar00rootroot00000000000000Copyright Information: Some parts of the C source code in this package were ported partly form NORAD's Spacetrack report #3, which included FORTRAN source for SGP, SGP4, SDP4, SGP8 and SDP8. According to a statement in that report, the document is free of copyrights and open to unlimited public distribution. Other parts of the C source code in this package were ported from Pascal code provided by Dr. TS. Kelso on his CelesTrack website at http://celestrack.com/ . I have reproduced the copyright information regarding the Pascal source I used below: { Author: Dr TS Kelso } { Original Version: 1991 Oct 30} { Current Revision: 1992 Sep 03} { Version: 1.50 } { Copyright: 1991-1992, All Rights Reserved } I make no copyright claims to the C ports in this package as I used the above material downloaded from the Internet to produce it. I suppose any sourcecode used from norad.c must contain the above copyright statement by Dr. TS. Kelso. Neoklis Kyriazis April 10 2001.gpredict/src/sgpsdp/2_README000066400000000000000000000160651427377236300160750ustar00rootroot00000000000000 Introduction: ============= This package contains a partial port to C of Dr TS. Kelso's PASCAL library sgp4-plb26a. This library contains files with functions for calculating the position and velocity of a satellite using the NORAD SGP4 and SDP4 routines and from these the azimuth, elevation, range and range rate of same. Routines are also included for calculating the position of the sun and the illumination status and eclipse depth of the satellite. The port to C includes most of the sources needed for making the above calculations and for reading and checking two-line Keplerian element sets (TLE's) from a file, as available from many sources on the Internet. Some of the files in the PASCAL library are PC-specific and have not been ported to C or they have been substituted or modified with some functions I developed myself. A simple main() function is included to demonstrate the use of the C sgp4/sdp4 library and functions for reading and testing a TLE set from a file. Contents: ========= This package should contain the following files: 1. This README file. 2. The COPYING file with copyright details. 3. sgp4sdp4.c: The source-code of the ported SGP4 and SDP4 routines and some extra functions for testing and setting flow control flags. 4. sgp_in.c: Functions for reading a TLE set from a file and verifying, converting and pre-processing the Keplerian element set. 5. sgp_math.c: Various mathematical functions used by other routines. 6. sgp_obs.c: Functions for calculating the geodetic position of the observer and converting the ECI position and velocity of a satellite to observer-centered azimuth, elevation, range and range rate. Also calculating the observer-centered position of the sun. 7. sgp_time.c: Functions needed to calculate and convert time in various formats, e.g. Julian, calendar etc. 8. solar.c: Functions for calculating the position of the sun. 9. main.c: A basic main() function to demonstrate the use of the sgp4/sdp4 library to read a TLE set and calculate and print satellite predictions. 10. sgp4sdp4.h: A header file that should be #include'd in all source files using this library. 11. Makefile: A simple makefile for building the 'ephem' binary. Building and testing: ===================== Run make in the sgp4sdp4 source directory to compile the binary executable. Run ephem to start the test program, but please note you need to include a file in the same directory including TLE sets in NASA format as available on the Internet. There are fresh sets uploaded regularly at Dr TS Kelso's site at www.celestrak.com . Please note that you should edit main.c to enter the directory path for this file, it is currently set at amateur.txt and to also enter the observer's geodetic coordinates (lat and lon in rads and altitude in km). This is only a skeleton test application! Known bugs: =========== It appears that the original NORAD routines have been modified to correct some discrepancies in the calculated satellite position data, at least for some TLE sets of deep-space orbits. I have incorporated a fix for one bug at the end of the Lyddane modification in the 'dpper' section of the Deep routine, as suggested by Rom Matson. There are also suggested fixes for the discrepancy in satellite position data at 0 epoch time, between SDP4 and SGP routines. I have not made any changes to the NORAD routines, as the fixes appear to be for newer, modified SGP4/SDP4 routines. I will leave this to Celestial Mechanics programming gurus to be safe! Hidden bugs? ============ There may well be (even should be) some hidden bugs in the ported C source as I made a big effort to streamline the flow and structure of the FORTRAN routines, especially getting rid of all goto's. Although I have been careful with the changes, the TLE sets in NORAD's report do not result in program flow in all the branches of control statements so that its not possible to check the integrity of the C source in all circumstances. However I have made sure that the results produced by my C routines agree to the 5th or 6th digit of NORAD's examples. The most complicated part of the NORAD routines is the 'dpsec' part of the Deep routine where most of the changes to flow control and structure were made. This is were bugs affecting the deep-space routines may be hiding. I have conducted tests using KD2BD's PREDICT tracker using modified tle sets to force program flow through all the branches of if() statements and after fixing a number of bugs, I have close agreement with predict with a wide variety of orbital element sets. Still, there is no guarantee that some circumstances will not trigger a hidden bug. Using the sgp4sdp4 package: =========================== In order to use the ephemeris functions in sgp4sdp4 you will need to #include the sgp4sdp4.h header in your own source files. There are comments in all files describing the various functions and there use. There are also comments in the main() function describing the steps needed to get results from the package. The routines that calculate satellite position (SGP4 and SDP4) all have the same interface as follows: (double tsince, tle_t *tle, vector_t *pos, vector_t *vel ). tsince is the time interval in minutes since epoch time. tle_t *tle is a pointer to a structure that holds the TLE set of the satellite. Please see norad.h for details. vector_t *pos, vector_t *vel are structures holding the calculated Cartesian position x, y, z and velocity xdot, ydot, zdot data for the satellite. Please see norad.h for details. Please note that all three arguments are safer declared static if they are declared outside the main() function. All the flags controlling program flow must be cleared before a new TLE set is used or when a different ephemeris function is called. This is done by using ClearFlags(ALL_FLAGS); See main.c for details. Disclaimer: =========== I have ported the sgp-plb Pascal routines to C so that I can use them in my satellite tracking projects. I am releasing this source-code in the hope that other developers can benefit, as I have benefitted from available open source software. I can make no guarantee explicit or implicit as to the integrity and usability of these software modules and I cannot be held responsible for any damage or loss incurred by using them. Use the material in this package at your own risk. References: =========== Dr. TS. Kelso maintains an excellent web-site with a lot of information and software for tracking celestial objects. A pdf version of the NORAD Spacetrack report #3 is also included: http://celestrack.com/ Change Log: ================ Version 0.1: Was the first released after local bug-fixing. Version 0.2: Function Date_Time was re-written to include calculation of tm_wday and tm_isdst members in the struct tm type value it returns. Version 0.3: A suggested modification to the 4-quadrant AcTan() function was incorporated in order to make it agree with the original NORAD code. Thanks to Mr. Ed Savage for this. Neoklis Kyriazis August 31 2001. gpredict/src/sgpsdp/Makefile.am000066400000000000000000000016511427377236300170230ustar00rootroot00000000000000SUBDIRS = TR ##noinst_LIBRARIES = libsgp4sdp4.a AM_CPPFLAGS = $(all_includes) @PACKAGE_CFLAGS@ ##libsgp4sdp4_a_METASOURCES = AUTO ##libsgp4sdp4_a_SOURCES = \ ## solar.c \ ## sgp_time.c \ ## sgp_obs.c \ ## sgp_math.c \ ## sgp_in.c \ ## sgp4sdp4.c ##libsgp4sdp4_a_LDFLAGS = `pkg-config --libs glib-2.0` noinst_PROGRAMS = test-001 test-002 test_001_SOURCES = \ solar.c \ sgp_time.c \ sgp_obs.c \ sgp_math.c \ sgp_in.c \ sgp4sdp4.c \ test-001.c test_001_LDADD = @PACKAGE_LIBS@ ##test_001_LDFLAGS = `pkg-config --libs glib-2.0` test_002_SOURCES = \ solar.c \ sgp_time.c \ sgp_obs.c \ sgp_math.c \ sgp_in.c \ sgp4sdp4.c \ test-002.c test_002_LDADD = @PACKAGE_LIBS@ ##test_002_LDFLAGS = `pkg-config --libs glib-2.0` EXTRA_DIST = \ 1_COPYING \ 2_README \ README \ sgp4sdp4.c \ sgp4sdp4.h \ sgp_in.c \ sgp_math.c \ sgp_obs.c \ sgp_time.c \ solar.c \ test-001.c \ test-001.tle \ test-002.c \ test-002.tle gpredict/src/sgpsdp/README000066400000000000000000000003771427377236300156530ustar00rootroot00000000000000This library is based on the sgp4sdp4-0.3 by Neoklis Kyriazis (http://leonardo.spidernet.net/Copernicus/22420). I made some minor modifications to the code in order to create a library that works on multiple platforms. Hari Nair hari@alumni.caltech.edu gpredict/src/sgpsdp/TR/000077500000000000000000000000001427377236300153115ustar00rootroot00000000000000gpredict/src/sgpsdp/TR/Makefile.am000066400000000000000000000000771427377236300173510ustar00rootroot00000000000000EXTRA_DIST = \ README \ test-001-01.res \ test-002-01.res gpredict/src/sgpsdp/TR/README000066400000000000000000000000421427377236300161650ustar00rootroot00000000000000Numerical test result for sgpsdp. gpredict/src/sgpsdp/TR/test-001-01.res000066400000000000000000000052011427377236300175150ustar00rootroot00000000000000TEST DATA: TEST SAT SGP 001 1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 9 2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 103 DEEP_SPACE_EPHEM: 0 (expected 0) RESULT EXPECTED DELTA ------------------------------------------------------------------------------ STEP 1 t: 0.0 X: 2328.97068761 2328.97048951 0.00019810 (0.00001%) Y: -5995.22085643 -5995.22076416 0.00009227 (0.00000%) Z: 1719.97068075 1719.97067261 0.00000814 (0.00000%) VX: 2.91207226 2.91207230 0.00000004 (0.00000%) VY: -0.98341533 -0.98341546 0.00000013 (0.00001%) VZ: -7.09081695 -7.09081703 0.00000008 (0.00000%) STEP 2 t: 360.0 X: 2456.10753857 2456.10705566 0.00048291 (0.00002%) Y: -6071.93865906 -6071.93853760 0.00012146 (0.00000%) Z: 1222.89643564 1222.89727783 0.00084219 (0.00007%) VX: 2.67938947 2.67938992 0.00000045 (0.00002%) VY: -0.44828939 -0.44829041 0.00000102 (0.00023%) VZ: -7.22879242 -7.22879231 0.00000011 (0.00000%) STEP 3 t: 720.0 X: 2567.56230055 2567.56195068 0.00034987 (0.00001%) Y: -6112.50386789 -6112.50384522 0.00002267 (0.00000%) Z: 713.96381249 713.96397400 0.00016151 (0.00002%) VX: 2.44024579 2.44024599 0.00000020 (0.00001%) VY: 0.09810893 0.09810869 0.00000024 (0.00025%) VZ: -7.31995922 -7.31995916 0.00000006 (0.00000%) STEP 4 t: 1080.0 X: 2663.08919967 2663.09078980 0.00159013 (0.00006%) Y: -6115.48308263 -6115.48229980 0.00078283 (0.00001%) Z: 196.40236060 196.39640427 0.00595633 (0.00303%) VX: 2.19612236 2.19611958 0.00000278 (0.00013%) VY: 0.65241327 0.65241995 0.00000668 (0.00102%) VZ: -7.36282406 -7.36282432 0.00000026 (0.00000%) STEP 5 t: 1440.0 X: 2742.55314743 2742.55133057 0.00181686 (0.00007%) Y: -6079.67068185 -6079.67144775 0.00076590 (0.00001%) Z: -326.38672720 -326.38095856 0.00576864 (0.00177%) VX: 1.94849935 1.94850229 0.00000294 (0.00015%) VY: 1.21106891 1.21106251 0.00000640 (0.00053%) VZ: -7.35619329 -7.35619372 0.00000043 (0.00001%) gpredict/src/sgpsdp/TR/test-002-01.res000066400000000000000000000053051427377236300175230ustar00rootroot00000000000000TEST DATA: TEST SAT SDP 001 1 11801U 80230.29629788 .01431103 00000-0 14311-1 0 2 2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 2 DEEP_SPACE_EPHEM: 64 (expected 64) RESULT EXPECTED DELTA --------------------------------------------------------------------------------- STEP 1 t: 0.0 X: 7473.37235249 7473.37066650 0.00168599 (0.00002%) Y: 428.95458268 428.95261765 0.00196503 (0.00046%) Z: 5828.74803892 5828.74786377 0.00017515 (0.00000%) VX: 5.10715285 5.10715130 0.00000155 (0.00003%) VY: 6.44468277 6.44468284 0.00000007 (0.00000%) VZ: -0.18613180 -0.18613096 0.00000084 (0.00045%) STEP 2 t: 360.0 X: -3305.22249435 -3305.22537232 0.00287797 (0.00009%) Y: 32410.86724220 32410.86328125 0.00396095 (0.00001%) Z: -24697.17847749 -24697.17675781 0.00171968 (0.00001%) VX: -1.30113544 -1.30113538 0.00000006 (0.00000%) VY: -1.15131484 -1.15131518 0.00000034 (0.00003%) VZ: -0.28333545 -0.28333528 0.00000017 (0.00006%) STEP 3 t: 720.0 X: 14271.28902792 14271.28759766 0.00143026 (0.00001%) Y: 24110.45647174 24110.46411133 0.00763959 (0.00003%) Z: -4725.76149170 -4725.76837158 0.00687988 (0.00015%) VX: -0.32050356 -0.32050445 0.00000089 (0.00028%) VY: 2.67984224 2.67984074 0.00000150 (0.00006%) VZ: -2.08405317 -2.08405289 0.00000028 (0.00001%) STEP 4 t: 1080.0 X: -9990.05125819 -9990.05883789 0.00757970 (0.00008%) Y: 22717.38011629 22717.35522461 0.02489168 (0.00011%) Z: -23616.90130945 -23616.89066250 0.01064695 (0.00005%) VX: -1.01667324 -1.01667246 0.00000078 (0.00008%) VY: -2.29026532 -2.29026759 0.00000227 (0.00010%) VZ: 0.72892148 0.72892364 0.00000216 (0.00030%) STEP 5 t: 1440.0 X: 9787.88496660 9787.86975097 0.01521563 (0.00016%) Y: 33753.34020891 33753.34667969 0.00647078 (0.00002%) Z: -15030.79330940 -15030.81176758 0.01845818 (0.00012%) VX: -1.09424947 -1.09425966 0.00001019 (0.00093%) VY: 0.92359201 0.92358845 0.00000356 (0.00039%) VZ: -1.52231073 -1.52230928 0.00000145 (0.00010%) gpredict/src/sgpsdp/sgp4sdp4.c000066400000000000000000001252111427377236300166020ustar00rootroot00000000000000/* * Unit SGP4SDP4 * Author: Dr TS Kelso * Original Version: 1991 Oct 30 * Current Revision: 1992 Sep 03 * Version: 1.50 * Copyright: 1991-1992, All Rights Reserved * * Ported to C by: Neoklis Kyriazis April 10 2001 * Reentrancy mods by Alexandru Csete OZ9AEC */ #include "sgp4sdp4.h" /* SGP4 */ /* This function is used to calculate the position and velocity */ /* of near-earth (period < 225 minutes) satellites. tsince is */ /* time since epoch in minutes, tle is a pointer to a tle_t */ /* structure with Keplerian orbital elements and pos and vel */ /* are vector_t structures returning ECI satellite position and */ /* velocity. Use Convert_Sat_State() to convert to km and km/s.*/ void SGP4 (sat_t *sat, double tsince) { double cosuk,sinuk,rfdotk,vx,vy,vz,ux,uy,uz,xmy,xmx, cosnok,sinnok,cosik,sinik,rdotk,xinck,xnodek,uk, rk,cos2u,sin2u,u,sinu,cosu,betal,rfdot,rdot,r,pl, elsq,esine,ecose,epw,cosepw,x1m5th,xhdot1,tfour, sinepw,capu,ayn,xlt,aynl,xll,axn,xn,beta,xl,e,a, tcube,delm,delomg,templ,tempe,tempa,xnode,tsq,xmp, omega,xnoddf,omgadf,xmdf,a1,a3ovk2,ao,betao,betao2, c1sq,c2,c3,coef,coef1,del1,delo,eeta,eosq,etasq, perige,pinvsq,psisq,qoms24,s4,temp,temp1,temp2, temp3,temp4,temp5,temp6,theta2,theta4,tsi; int i; /* Initialization */ if (~sat->flags & SGP4_INITIALIZED_FLAG) { sat->flags |= SGP4_INITIALIZED_FLAG; /* Recover original mean motion (xnodp) and */ /* semimajor axis (aodp) from input elements. */ a1 = pow (xke/sat->tle.xno, tothrd); sat->sgps.cosio = cos (sat->tle.xincl); theta2 = sat->sgps.cosio * sat->sgps.cosio; sat->sgps.x3thm1 = 3 * theta2 - 1.0; eosq = sat->tle.eo * sat->tle.eo; betao2 = 1 - eosq; betao = sqrt (betao2); del1 = 1.5 * ck2 * sat->sgps.x3thm1 / (a1*a1*betao*betao2); ao = a1*(1-del1*(0.5*tothrd+del1*(1+134.0/81.0*del1))); delo = 1.5 * ck2 * sat->sgps.x3thm1 / (ao*ao*betao*betao2); sat->sgps.xnodp = sat->tle.xno / (1.0 + delo); sat->sgps.aodp = ao / (1.0 - delo); /* For perigee less than 220 kilometers, the "simple" flag is set */ /* and the equations are truncated to linear variation in sqrt a */ /* and quadratic variation in mean anomaly. Also, the c3 term, */ /* the delta omega term, and the delta m term are dropped. */ if ((sat->sgps.aodp * (1.0 - sat->tle.eo) / ae) < (220.0 / xkmper + ae)) sat->flags |= SIMPLE_FLAG; else sat->flags &= ~SIMPLE_FLAG; /* For perigee below 156 km, the */ /* values of s and qoms2t are altered. */ s4 = __s__; qoms24 = qoms2t; perige = (sat->sgps.aodp * (1 - sat->tle.eo) - ae) * xkmper; if (perige < 156.0) { if (perige <= 98.0) s4 = 20.0; else s4 = perige - 78.0; qoms24 = pow ((120.0 - s4) * ae / xkmper, 4); s4 = s4 / xkmper + ae; }; pinvsq = 1.0 / (sat->sgps.aodp * sat->sgps.aodp * betao2 * betao2); tsi = 1.0 / (sat->sgps.aodp - s4); sat->sgps.eta = sat->sgps.aodp * sat->tle.eo * tsi; etasq = sat->sgps.eta * sat->sgps.eta; eeta = sat->tle.eo * sat->sgps.eta; psisq = fabs (1.0 - etasq); coef = qoms24 * pow (tsi, 4); coef1 = coef / pow (psisq, 3.5); c2 = coef1 * sat->sgps.xnodp * (sat->sgps.aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq)) + 0.75 * ck2 * tsi / psisq * sat->sgps.x3thm1 * (8.0 + 3.0 * etasq * (8 + etasq))); sat->sgps.c1 = c2 * sat->tle.bstar; sat->sgps.sinio = sin (sat->tle.xincl); a3ovk2 = -xj3 / ck2 * pow (ae, 3); c3 = coef * tsi * a3ovk2 * sat->sgps.xnodp * ae * sat->sgps.sinio / sat->tle.eo; sat->sgps.x1mth2 = 1.0 - theta2; sat->sgps.c4 = 2.0 * sat->sgps.xnodp * coef1 * sat->sgps.aodp * betao2 * (sat->sgps.eta * (2.0 + 0.5 * etasq) + sat->tle.eo * (0.5 + 2.0 * etasq) - 2.0 * ck2 * tsi / (sat->sgps.aodp * psisq) * (-3.0 * sat->sgps.x3thm1 * (1.0 - 2.0 * eeta + etasq * (1.5 - 0.5 * eeta)) + 0.75 * sat->sgps.x1mth2 * (2.0 * etasq - eeta * (1.0 + etasq)) * cos (2.0 * sat->tle.omegao))); sat->sgps.c5 = 2.0 * coef1 * sat->sgps.aodp * betao2 * (1.0 + 2.75 * (etasq + eeta) + eeta * etasq); theta4 = theta2 * theta2; temp1 = 3.0 * ck2 * pinvsq * sat->sgps.xnodp; temp2 = temp1 * ck2 * pinvsq; temp3 = 1.25 * ck4 * pinvsq * pinvsq * sat->sgps.xnodp; sat->sgps.xmdot = sat->sgps.xnodp + 0.5 * temp1 * betao * sat->sgps.x3thm1 + 0.0625 * temp2 * betao * (13.0 - 78.0 * theta2 + 137.0 * theta4); x1m5th = 1.0 - 5.0 * theta2; sat->sgps.omgdot = -0.5 * temp1 * x1m5th + 0.0625 * temp2 * (7.0 - 114.0 * theta2 + 395.0 * theta4) + temp3 * (3.0 - 36.0 * theta2 + 49.0 * theta4); xhdot1 = -temp1 * sat->sgps.cosio; sat->sgps.xnodot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * theta2) + 2.0 * temp3 * (3.0 - 7.0 * theta2)) * sat->sgps.cosio; sat->sgps.omgcof = sat->tle.bstar * c3 * cos (sat->tle.omegao); sat->sgps.xmcof = -tothrd * coef * sat->tle.bstar * ae / eeta; sat->sgps.xnodcf = 3.5 * betao2 * xhdot1 * sat->sgps.c1; sat->sgps.t2cof = 1.5 * sat->sgps.c1; sat->sgps.xlcof = 0.125 * a3ovk2 * sat->sgps.sinio * (3.0 + 5.0 * sat->sgps.cosio) / (1.0 + sat->sgps.cosio); sat->sgps.aycof = 0.25 * a3ovk2 * sat->sgps.sinio; sat->sgps.delmo = pow (1.0 + sat->sgps.eta * cos (sat->tle.xmo), 3); sat->sgps.sinmo = sin (sat->tle.xmo); sat->sgps.x7thm1 = 7.0 * theta2 - 1.0; if (~sat->flags & SIMPLE_FLAG) { c1sq = sat->sgps.c1 * sat->sgps.c1; sat->sgps.d2 = 4.0 * sat->sgps.aodp * tsi * c1sq; temp = sat->sgps.d2 * tsi * sat->sgps.c1 / 3.0; sat->sgps.d3 = (17.0 * sat->sgps.aodp + s4) * temp; sat->sgps.d4 = 0.5 * temp * sat->sgps.aodp * tsi * (221.0 * sat->sgps.aodp + 31.0 * s4) * sat->sgps.c1; sat->sgps.t3cof = sat->sgps.d2 + 2.0 * c1sq; sat->sgps.t4cof = 0.25 * (3.0 * sat->sgps.d3 + sat->sgps.c1 * (12.0 * sat->sgps.d2 + 10.0 * c1sq)); sat->sgps.t5cof = 0.2 * (3.0 * sat->sgps.d4 + 12.0 * sat->sgps.c1 * sat->sgps.d3 + 6.0 * sat->sgps.d2 * sat->sgps.d2 + 15.0 * c1sq * (2.0 * sat->sgps.d2 + c1sq)); }; }; /* Update for secular gravity and atmospheric drag. */ xmdf = sat->tle.xmo + sat->sgps.xmdot * tsince; omgadf = sat->tle.omegao + sat->sgps.omgdot * tsince; xnoddf = sat->tle.xnodeo + sat->sgps.xnodot * tsince; omega = omgadf; xmp = xmdf; tsq = tsince*tsince; xnode = xnoddf + sat->sgps.xnodcf * tsq; tempa = 1.0 - sat->sgps.c1 * tsince; tempe = sat->tle.bstar * sat->sgps.c4 * tsince; templ = sat->sgps.t2cof * tsq; if (~sat->flags & SIMPLE_FLAG) { delomg = sat->sgps.omgcof * tsince; delm = sat->sgps.xmcof * (pow (1 + sat->sgps.eta * cos (xmdf), 3) - sat->sgps.delmo); temp = delomg + delm; xmp = xmdf + temp; omega = omgadf - temp; tcube = tsq * tsince; tfour = tsince * tcube; tempa = tempa - sat->sgps.d2 * tsq - sat->sgps.d3 * tcube - sat->sgps.d4 * tfour; tempe = tempe + sat->tle.bstar * sat->sgps.c5 * (sin (xmp) - sat->sgps.sinmo); templ = templ + sat->sgps.t3cof * tcube + tfour * (sat->sgps.t4cof + tsince * sat->sgps.t5cof); }; a = sat->sgps.aodp * pow (tempa, 2); e = sat->tle.eo - tempe; xl = xmp + omega + xnode + sat->sgps.xnodp * templ; beta = sqrt (1.0 - e*e); xn = xke / pow (a, 1.5); /* Long period periodics */ axn = e * cos (omega); temp = 1.0 / (a * beta * beta); xll = temp * sat->sgps.xlcof * axn; aynl = temp * sat->sgps.aycof; xlt = xl + xll; ayn = e * sin (omega) + aynl; /* Solve Kepler's' Equation */ capu = FMod2p (xlt - xnode); temp2 = capu; i = 0; do { sinepw = sin (temp2); cosepw = cos (temp2); temp3 = axn * sinepw; temp4 = ayn * cosepw; temp5 = axn * cosepw; temp6 = ayn * sinepw; epw = (capu - temp4 + temp3 - temp2) / (1.0 - temp5 - temp6) + temp2; if (fabs (epw - temp2) <= e6a) break; temp2 = epw; } while( i++ < 10 ); /* Short period preliminary quantities */ ecose = temp5 + temp6; esine = temp3 - temp4; elsq = axn*axn + ayn*ayn; temp = 1.0 - elsq; pl = a * temp; r = a * (1.0 - ecose); temp1 = 1.0 / r; rdot = xke * sqrt (a) * esine * temp1; rfdot = xke * sqrt (pl) * temp1; temp2 = a * temp1; betal = sqrt (temp); temp3 = 1.0 / (1.0 + betal); cosu = temp2 * (cosepw - axn + ayn * esine * temp3); sinu = temp2 * (sinepw - ayn - axn * esine * temp3); u = AcTan (sinu, cosu); sin2u = 2.0 * sinu * cosu; cos2u = 2.0 * cosu * cosu - 1.0; temp = 1.0 / pl; temp1 = ck2 * temp; temp2 = temp1 * temp; /* Update for short periodics */ rk = r * (1.0 - 1.5 * temp2 * betal * sat->sgps.x3thm1) + 0.5 * temp1 * sat->sgps.x1mth2 * cos2u; uk = u - 0.25 * temp2 * sat->sgps.x7thm1 * sin2u; xnodek = xnode + 1.5 * temp2 * sat->sgps.cosio * sin2u; xinck = sat->tle.xincl + 1.5 * temp2 * sat->sgps.cosio * sat->sgps.sinio * cos2u; rdotk = rdot - xn * temp1 * sat->sgps.x1mth2 * sin2u; rfdotk = rfdot + xn * temp1 * (sat->sgps.x1mth2 * cos2u + 1.5 * sat->sgps.x3thm1); /* Orientation vectors */ sinuk = sin (uk); cosuk = cos (uk); sinik = sin (xinck); cosik = cos (xinck); sinnok = sin (xnodek); cosnok = cos (xnodek); xmx = -sinnok * cosik; xmy = cosnok * cosik; ux = xmx * sinuk + cosnok * cosuk; uy = xmy * sinuk + sinnok * cosuk; uz = sinik * sinuk; vx = xmx * cosuk - cosnok * sinuk; vy = xmy * cosuk - sinnok * sinuk; vz = sinik * cosuk; /* Position and velocity */ sat->pos.x = rk*ux; sat->pos.y = rk*uy; sat->pos.z = rk*uz; sat->vel.x = rdotk*ux+rfdotk*vx; sat->vel.y = rdotk*uy+rfdotk*vy; sat->vel.z = rdotk*uz+rfdotk*vz; sat->phase = xlt - xnode - omgadf + twopi; if (sat->phase < 0) sat->phase += twopi; sat->phase = FMod2p (sat->phase); sat->tle.omegao1 = omega; sat->tle.xincl1 = xinck; sat->tle.xnodeo1 = xnodek; } /* SDP4 */ /* This function is used to calculate the position and velocity */ /* of deep-space (period > 225 minutes) satellites. tsince is */ /* time since epoch in minutes, tle is a pointer to a tle_t */ /* structure with Keplerian orbital elements and pos and vel */ /* are vector_t structures returning ECI satellite position and */ /* velocity. Use Convert_Sat_State() to convert to km and km/s. */ void SDP4 (sat_t *sat, double tsince) { int i; double a,axn,ayn,aynl,beta,betal,capu,cos2u,cosepw,cosik, cosnok,cosu,cosuk,ecose,elsq,epw,esine,pl,theta4, rdot,rdotk,rfdot,rfdotk,rk,sin2u,sinepw,sinik, sinnok,sinu,sinuk,tempe,templ,tsq,u,uk,ux,uy,uz, vx,vy,vz,xinck,xl,xlt,xmam,xmdf,xmx,xmy,xnoddf, xnodek,xll,a1,a3ovk2,ao,c2,coef,coef1,x1m5th, xhdot1,del1,r,delo,eeta,eta,etasq,perige, psisq,tsi,qoms24,s4,pinvsq,temp,tempa,temp1, temp2,temp3,temp4,temp5,temp6; /* Initialization */ if (~sat->flags & SDP4_INITIALIZED_FLAG) { sat->flags |= SDP4_INITIALIZED_FLAG; /* Recover original mean motion (xnodp) and */ /* semimajor axis (aodp) from input elements. */ a1 = pow (xke / sat->tle.xno, tothrd); sat->deep_arg.cosio = cos (sat->tle.xincl); sat->deep_arg.theta2 = sat->deep_arg.cosio * sat->deep_arg.cosio; sat->sgps.x3thm1 = 3.0 * sat->deep_arg.theta2 - 1.0; sat->deep_arg.eosq = sat->tle.eo * sat->tle.eo; sat->deep_arg.betao2 = 1.0 - sat->deep_arg.eosq; sat->deep_arg.betao = sqrt (sat->deep_arg.betao2); del1 = 1.5 * ck2 * sat->sgps.x3thm1 / (a1 * a1 * sat->deep_arg.betao * sat->deep_arg.betao2); ao = a1 * (1.0 - del1 * (0.5 * tothrd + del1 * (1.0 + 134.0 / 81.0 * del1))); delo = 1.5 * ck2 * sat->sgps.x3thm1 / (ao * ao * sat->deep_arg.betao * sat->deep_arg.betao2); sat->deep_arg.xnodp = sat->tle.xno / (1.0 + delo); sat->deep_arg.aodp = ao / (1.0 - delo); /* For perigee below 156 km, the values */ /* of s and qoms2t are altered. */ s4 = __s__; qoms24 = qoms2t; perige = (sat->deep_arg.aodp * (1.0 - sat->tle.eo) - ae) * xkmper; if (perige < 156.0) { if (perige <= 98.0) s4 = 20.0; else s4 = perige - 78.0; qoms24 = pow ((120.0 - s4) * ae / xkmper, 4); s4 = s4 / xkmper + ae; } pinvsq = 1.0 / (sat->deep_arg.aodp * sat->deep_arg.aodp * sat->deep_arg.betao2 * sat->deep_arg.betao2); sat->deep_arg.sing = sin (sat->tle.omegao); sat->deep_arg.cosg = cos (sat->tle.omegao); tsi = 1.0 / (sat->deep_arg.aodp - s4); eta = sat->deep_arg.aodp * sat->tle.eo * tsi; etasq = eta * eta; eeta = sat->tle.eo * eta; psisq = fabs (1.0 - etasq); coef = qoms24 * pow (tsi, 4); coef1 = coef / pow (psisq, 3.5); c2 = coef1 * sat->deep_arg.xnodp * (sat->deep_arg.aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq)) + 0.75 * ck2 * tsi / psisq * sat->sgps.x3thm1 * (8.0 + 3.0 * etasq * (8.0 + etasq))); sat->sgps.c1 = sat->tle.bstar * c2; sat->deep_arg.sinio = sin (sat->tle.xincl); a3ovk2 = -xj3 / ck2 * pow (ae, 3); sat->sgps.x1mth2 = 1.0 - sat->deep_arg.theta2; sat->sgps.c4 = 2.0 * sat->deep_arg.xnodp * coef1 * sat->deep_arg.aodp * sat->deep_arg.betao2 * (eta * (2.0 + 0.5 * etasq) + sat->tle.eo * (0.5 + 2.0 * etasq) - 2.0 * ck2 * tsi / (sat->deep_arg.aodp * psisq) * (-3.0 * sat->sgps.x3thm1 * (1.0 - 2.0 * eeta + etasq * (1.5 - 0.5 * eeta)) + 0.75 * sat->sgps.x1mth2 * (2.0 * etasq - eeta * (1.0 + etasq)) * cos (2.0 * sat->tle.omegao))); theta4 = sat->deep_arg.theta2 * sat->deep_arg.theta2; temp1 = 3.0 * ck2 * pinvsq * sat->deep_arg.xnodp; temp2 = temp1 * ck2 * pinvsq; temp3 = 1.25 * ck4 * pinvsq * pinvsq * sat->deep_arg.xnodp; sat->deep_arg.xmdot = sat->deep_arg.xnodp + 0.5 * temp1 * sat->deep_arg.betao * sat->sgps.x3thm1 + 0.0625 * temp2 * sat->deep_arg.betao * (13.0 - 78.0 * sat->deep_arg.theta2 + 137.0 * theta4); x1m5th = 1.0 - 5.0 * sat->deep_arg.theta2; sat->deep_arg.omgdot = -0.5 * temp1 * x1m5th + 0.0625 * temp2 * (7.0 - 114.0 * sat->deep_arg.theta2 + 395.0 * theta4) + temp3 * (3.0 - 36.0 * sat->deep_arg.theta2 + 49.0 * theta4); xhdot1 = -temp1 * sat->deep_arg.cosio; sat->deep_arg.xnodot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * sat->deep_arg.theta2) + 2.0 * temp3 * (3.0 - 7.0 * sat->deep_arg.theta2)) * sat->deep_arg.cosio; sat->sgps.xnodcf = 3.5 * sat->deep_arg.betao2 * xhdot1 * sat->sgps.c1; sat->sgps.t2cof = 1.5 * sat->sgps.c1; sat->sgps.xlcof = 0.125 * a3ovk2 * sat->deep_arg.sinio * (3.0 + 5.0 * sat->deep_arg.cosio) / (1.0 + sat->deep_arg.cosio); sat->sgps.aycof = 0.25 * a3ovk2 * sat->deep_arg.sinio; sat->sgps.x7thm1 = 7.0 * sat->deep_arg.theta2 - 1.0; /* initialize Deep() */ Deep (dpinit, sat); }; /* Update for secular gravity and atmospheric drag */ xmdf = sat->tle.xmo + sat->deep_arg.xmdot * tsince; sat->deep_arg.omgadf = sat->tle.omegao + sat->deep_arg.omgdot * tsince; xnoddf = sat->tle.xnodeo + sat->deep_arg.xnodot * tsince; tsq = tsince * tsince; sat->deep_arg.xnode = xnoddf + sat->sgps.xnodcf * tsq; tempa = 1.0 - sat->sgps.c1 * tsince; tempe = sat->tle.bstar * sat->sgps.c4 * tsince; templ = sat->sgps.t2cof * tsq; sat->deep_arg.xn = sat->deep_arg.xnodp; /* Update for deep-space secular effects */ sat->deep_arg.xll = xmdf; sat->deep_arg.t = tsince; Deep (dpsec, sat); xmdf = sat->deep_arg.xll; a = pow (xke / sat->deep_arg.xn, tothrd) * tempa * tempa; sat->deep_arg.em = sat->deep_arg.em - tempe; xmam = xmdf + sat->deep_arg.xnodp * templ; /* Update for deep-space periodic effects */ sat->deep_arg.xll = xmam; Deep (dpper, sat); xmam = sat->deep_arg.xll; xl = xmam + sat->deep_arg.omgadf + sat->deep_arg.xnode; beta = sqrt (1.0 - sat->deep_arg.em * sat->deep_arg.em); sat->deep_arg.xn = xke / pow( a, 1.5); /* Long period periodics */ axn = sat->deep_arg.em * cos (sat->deep_arg.omgadf); temp = 1.0 / (a * beta * beta); xll = temp * sat->sgps.xlcof * axn; aynl = temp * sat->sgps.aycof; xlt = xl + xll; ayn = sat->deep_arg.em * sin (sat->deep_arg.omgadf) + aynl; /* Solve Kepler's Equation */ capu = FMod2p (xlt - sat->deep_arg.xnode); temp2 = capu; i = 0; do { sinepw = sin (temp2); cosepw = cos (temp2); temp3 = axn * sinepw; temp4 = ayn * cosepw; temp5 = axn * cosepw; temp6 = ayn * sinepw; epw = (capu - temp4 + temp3 - temp2) / (1.0 - temp5 - temp6) + temp2; if (fabs (epw-temp2) <= e6a) break; temp2 = epw; } while (i++ < 10); /* Short period preliminary quantities */ ecose = temp5 + temp6; esine = temp3 - temp4; elsq = axn * axn + ayn * ayn; temp = 1.0 - elsq; pl = a * temp; r = a * (1.0 - ecose); temp1 = 1.0 / r; rdot = xke * sqrt (a) * esine * temp1; rfdot = xke * sqrt (pl) *temp1; temp2 = a * temp1; betal = sqrt (temp); temp3 = 1.0 / (1.0 + betal); cosu = temp2 * (cosepw - axn + ayn * esine * temp3); sinu = temp2 * (sinepw - ayn - axn * esine * temp3); u = AcTan (sinu, cosu); sin2u = 2.0 * sinu * cosu; cos2u = 2.0 * cosu * cosu - 1.0; temp = 1.0 / pl; temp1 = ck2 * temp; temp2 = temp1 * temp; /* Update for short periodics */ rk = r * (1.0 - 1.5 * temp2 * betal * sat->sgps.x3thm1) + 0.5 * temp1 * sat->sgps.x1mth2 * cos2u; uk = u - 0.25 * temp2 * sat->sgps.x7thm1 * sin2u; xnodek = sat->deep_arg.xnode + 1.5 * temp2 * sat->deep_arg.cosio * sin2u; xinck = sat->deep_arg.xinc + 1.5 * temp2 * sat->deep_arg.cosio * sat->deep_arg.sinio * cos2u; rdotk = rdot - sat->deep_arg.xn * temp1 * sat->sgps.x1mth2 * sin2u; rfdotk = rfdot + sat->deep_arg.xn * temp1 * (sat->sgps.x1mth2 * cos2u + 1.5 * sat->sgps.x3thm1); /* Orientation vectors */ sinuk = sin (uk); cosuk = cos (uk); sinik = sin (xinck); cosik = cos (xinck); sinnok = sin (xnodek); cosnok = cos (xnodek); xmx = -sinnok * cosik; xmy = cosnok * cosik; ux = xmx * sinuk + cosnok * cosuk; uy = xmy * sinuk + sinnok * cosuk; uz = sinik * sinuk; vx = xmx * cosuk - cosnok * sinuk; vy = xmy * cosuk - sinnok * sinuk; vz = sinik*cosuk; /* Position and velocity */ sat->pos.x = rk * ux; sat->pos.y = rk * uy; sat->pos.z = rk * uz; sat->vel.x = rdotk * ux + rfdotk * vx; sat->vel.y = rdotk * uy + rfdotk * vy; sat->vel.z = rdotk * uz + rfdotk * vz; /* Phase in rads */ sat->phase = xlt - sat->deep_arg.xnode - sat->deep_arg.omgadf + twopi; if (sat->phase < 0.0) sat->phase += twopi; sat->phase = FMod2p (sat->phase); sat->tle.omegao1 = sat->deep_arg.omgadf; sat->tle.xincl1 = sat->deep_arg.xinc; sat->tle.xnodeo1 = sat->deep_arg.xnode; } /* DEEP */ /* This function is used by SDP4 to add lunar and solar */ /* perturbation effects to deep-space orbit objects. */ void Deep (int ientry, sat_t *sat) { double a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,ainv2,alfdp,aqnv, sgh,sini2,sinis,sinok,sh,si,sil,day,betdp,dalf, bfact,c,cc,cosis,cosok,cosq,ctem,f322,zx,zy, dbet,dls,eoc,eq,f2,f220,f221,f3,f311,f321,xnoh, f330,f441,f442,f522,f523,f542,f543,g200,g201, g211,pgh,ph,s1,s2,s3,s4,s5,s6,s7,se,sel,ses,xls, g300,g310,g322,g410,g422,g520,g521,g532,g533,gam, sinq,sinzf,sis,sl,sll,sls,stem,temp,temp1,x1,x2, x2li,x2omi,x3,x4,x5,x6,x7,x8,xl,xldot,xmao,xnddt, xndot,xno2,xnodce,xnoi,xomi,xpidot,z1,z11,z12,z13, z2,z21,z22,z23,z3,z31,z32,z33,ze,zf,zm,zn, zsing,zsinh,zsini,zcosg,zcosh,zcosi,delt=0,ft=0; switch (ientry) { case dpinit : /* Entrance for deep space initialization */ sat->dps.thgr = ThetaG (sat->tle.epoch, &sat->deep_arg); eq = sat->tle.eo; sat->dps.xnq = sat->deep_arg.xnodp; aqnv = 1.0 / sat->deep_arg.aodp; sat->dps.xqncl = sat->tle.xincl; xmao = sat->tle.xmo; xpidot = sat->deep_arg.omgdot + sat->deep_arg.xnodot; sinq = sin (sat->tle.xnodeo); cosq = cos (sat->tle.xnodeo); sat->dps.omegaq = sat->tle.omegao; sat->dps.preep = 0; /* Initialize lunar solar terms */ day = sat->deep_arg.ds50 + 18261.5; /*Days since 1900 Jan 0.5*/ if (day != sat->dps.preep) { sat->dps.preep = day; xnodce = 4.5236020 - 9.2422029E-4 * day; stem = sin (xnodce); ctem = cos (xnodce); sat->dps.zcosil = 0.91375164 - 0.03568096 * ctem; sat->dps.zsinil = sqrt (1.0 - sat->dps.zcosil * sat->dps.zcosil); sat->dps.zsinhl = 0.089683511 * stem / sat->dps.zsinil; sat->dps.zcoshl = sqrt (1.0 - sat->dps.zsinhl * sat->dps.zsinhl); c = 4.7199672 + 0.22997150 * day; gam = 5.8351514 + 0.0019443680 * day; sat->dps.zmol = FMod2p (c - gam); zx = 0.39785416 * stem / sat->dps.zsinil; zy = sat->dps.zcoshl * ctem + 0.91744867 * sat->dps.zsinhl * stem; zx = AcTan (zx,zy); zx = gam + zx - xnodce; sat->dps.zcosgl = cos (zx); sat->dps.zsingl = sin (zx); sat->dps.zmos = 6.2565837 + 0.017201977 * day; sat->dps.zmos = FMod2p (sat->dps.zmos); } /* End if(day != preep) */ /* Do solar terms */ sat->dps.savtsn = 1E20; zcosg = zcosgs; zsing = zsings; zcosi = zcosis; zsini = zsinis; zcosh = cosq; zsinh = sinq; cc = c1ss; zn = zns; ze = zes; xnoi = 1.0 / sat->dps.xnq; /* Loop breaks when Solar terms are done a second */ /* time, after Lunar terms are initialized */ for(;;) { /* Solar terms done again after Lunar terms are done */ a1 = zcosg * zcosh + zsing * zcosi * zsinh; a3 = -zsing * zcosh + zcosg * zcosi * zsinh; a7 = -zcosg * zsinh + zsing * zcosi * zcosh; a8 = zsing * zsini; a9 = zsing * zsinh + zcosg * zcosi * zcosh; a10 = zcosg * zsini; a2 = sat->deep_arg.cosio * a7 + sat->deep_arg.sinio * a8; a4 = sat->deep_arg.cosio * a9 + sat->deep_arg.sinio * a10; a5 = -sat->deep_arg.sinio * a7 + sat->deep_arg.cosio * a8; a6 = -sat->deep_arg.sinio*a9+ sat->deep_arg.cosio*a10; x1 = a1*sat->deep_arg.cosg+a2*sat->deep_arg.sing; x2 = a3*sat->deep_arg.cosg+a4*sat->deep_arg.sing; x3 = -a1*sat->deep_arg.sing+a2*sat->deep_arg.cosg; x4 = -a3*sat->deep_arg.sing+a4*sat->deep_arg.cosg; x5 = a5*sat->deep_arg.sing; x6 = a6*sat->deep_arg.sing; x7 = a5*sat->deep_arg.cosg; x8 = a6*sat->deep_arg.cosg; z31 = 12*x1*x1-3*x3*x3; z32 = 24*x1*x2-6*x3*x4; z33 = 12*x2*x2-3*x4*x4; z1 = 3*(a1*a1+a2*a2)+z31*sat->deep_arg.eosq; z2 = 6*(a1*a3+a2*a4)+z32*sat->deep_arg.eosq; z3 = 3*(a3*a3+a4*a4)+z33*sat->deep_arg.eosq; z11 = -6*a1*a5+sat->deep_arg.eosq*(-24*x1*x7-6*x3*x5); z12 = -6*(a1*a6+a3*a5)+ sat->deep_arg.eosq* (-24*(x2*x7+x1*x8)-6*(x3*x6+x4*x5)); z13 = -6*a3*a6+sat->deep_arg.eosq*(-24*x2*x8-6*x4*x6); z21 = 6*a2*a5+sat->deep_arg.eosq*(24*x1*x5-6*x3*x7); z22 = 6*(a4*a5+a2*a6)+ sat->deep_arg.eosq* (24*(x2*x5+x1*x6)-6*(x4*x7+x3*x8)); z23 = 6*a4*a6+sat->deep_arg.eosq*(24*x2*x6-6*x4*x8); z1 = z1+z1+sat->deep_arg.betao2*z31; z2 = z2+z2+sat->deep_arg.betao2*z32; z3 = z3+z3+sat->deep_arg.betao2*z33; s3 = cc*xnoi; s2 = -0.5*s3/sat->deep_arg.betao; s4 = s3*sat->deep_arg.betao; s1 = -15*eq*s4; s5 = x1*x3+x2*x4; s6 = x2*x3+x1*x4; s7 = x2*x4-x1*x3; se = s1*zn*s5; si = s2*zn*(z11+z13); sl = -zn*s3*(z1+z3-14-6*sat->deep_arg.eosq); sgh = s4*zn*(z31+z33-6); sh = -zn*s2*(z21+z23); if (sat->dps.xqncl < 5.2359877E-2) sh = 0; sat->dps.ee2 = 2*s1*s6; sat->dps.e3 = 2*s1*s7; sat->dps.xi2 = 2*s2*z12; sat->dps.xi3 = 2*s2*(z13-z11); sat->dps.xl2 = -2*s3*z2; sat->dps.xl3 = -2*s3*(z3-z1); sat->dps.xl4 = -2*s3*(-21-9*sat->deep_arg.eosq)*ze; sat->dps.xgh2 = 2*s4*z32; sat->dps.xgh3 = 2*s4*(z33-z31); sat->dps.xgh4 = -18*s4*ze; sat->dps.xh2 = -2*s2*z22; sat->dps.xh3 = -2*s2*(z23-z21); if (sat->flags & LUNAR_TERMS_DONE_FLAG) break; /* Do lunar terms */ sat->dps.sse = se; sat->dps.ssi = si; sat->dps.ssl = sl; sat->dps.ssh = sh/sat->deep_arg.sinio; sat->dps.ssg = sgh-sat->deep_arg.cosio*sat->dps.ssh; sat->dps.se2 = sat->dps.ee2; sat->dps.si2 = sat->dps.xi2; sat->dps.sl2 = sat->dps.xl2; sat->dps.sgh2 = sat->dps.xgh2; sat->dps.sh2 = sat->dps.xh2; sat->dps.se3 = sat->dps.e3; sat->dps.si3 = sat->dps.xi3; sat->dps.sl3 = sat->dps.xl3; sat->dps.sgh3 = sat->dps.xgh3; sat->dps.sh3 = sat->dps.xh3; sat->dps.sl4 = sat->dps.xl4; sat->dps.sgh4 = sat->dps.xgh4; zcosg = sat->dps.zcosgl; zsing = sat->dps.zsingl; zcosi = sat->dps.zcosil; zsini = sat->dps.zsinil; zcosh = sat->dps.zcoshl*cosq+sat->dps.zsinhl*sinq; zsinh = sinq*sat->dps.zcoshl-cosq*sat->dps.zsinhl; zn = znl; cc = c1l; ze = zel; sat->flags |= LUNAR_TERMS_DONE_FLAG; } /* End of for(;;) */ sat->dps.sse = sat->dps.sse+se; sat->dps.ssi = sat->dps.ssi+si; sat->dps.ssl = sat->dps.ssl+sl; sat->dps.ssg = sat->dps.ssg+sgh-sat->deep_arg.cosio/sat->deep_arg.sinio*sh; sat->dps.ssh = sat->dps.ssh+sh/sat->deep_arg.sinio; /* Geopotential resonance initialization for 12 hour orbits */ sat->flags &= ~RESONANCE_FLAG; sat->flags &= ~SYNCHRONOUS_FLAG; if( !((sat->dps.xnq < 0.0052359877) && (sat->dps.xnq > 0.0034906585)) ) { if( (sat->dps.xnq < 0.00826) || (sat->dps.xnq > 0.00924) ) return; if (eq < 0.5) return; sat->flags |= RESONANCE_FLAG; eoc = eq*sat->deep_arg.eosq; g201 = -0.306-(eq-0.64)*0.440; if (eq <= 0.65) { g211 = 3.616-13.247*eq+16.290*sat->deep_arg.eosq; g310 = -19.302+117.390*eq-228.419* sat->deep_arg.eosq+156.591*eoc; g322 = -18.9068+109.7927*eq-214.6334* sat->deep_arg.eosq+146.5816*eoc; g410 = -41.122+242.694*eq-471.094* sat->deep_arg.eosq+313.953*eoc; g422 = -146.407+841.880*eq-1629.014* sat->deep_arg.eosq+1083.435*eoc; g520 = -532.114+3017.977*eq-5740* sat->deep_arg.eosq+3708.276*eoc; } else { g211 = -72.099+331.819*eq-508.738* sat->deep_arg.eosq+266.724*eoc; g310 = -346.844+1582.851*eq-2415.925* sat->deep_arg.eosq+1246.113*eoc; g322 = -342.585+1554.908*eq-2366.899* sat->deep_arg.eosq+1215.972*eoc; g410 = -1052.797+4758.686*eq-7193.992* sat->deep_arg.eosq+3651.957*eoc; g422 = -3581.69+16178.11*eq-24462.77* sat->deep_arg.eosq+ 12422.52*eoc; if (eq <= 0.715) g520 = 1464.74-4664.75*eq+3763.64*sat->deep_arg.eosq; else g520 = -5149.66+29936.92*eq-54087.36* sat->deep_arg.eosq+31324.56*eoc; } /* End if (eq <= 0.65) */ if (eq < 0.7) { g533 = -919.2277+4988.61*eq-9064.77* sat->deep_arg.eosq+5542.21*eoc; g521 = -822.71072+4568.6173*eq-8491.4146* sat->deep_arg.eosq+5337.524*eoc; g532 = -853.666+4690.25*eq-8624.77* sat->deep_arg.eosq+ 5341.4*eoc; } else { g533 = -37995.78+161616.52*eq-229838.2* sat->deep_arg.eosq+109377.94*eoc; g521 = -51752.104+218913.95*eq-309468.16* sat->deep_arg.eosq+146349.42*eoc; g532 = -40023.88+170470.89*eq-242699.48* sat->deep_arg.eosq+115605.82*eoc; } /* End if (eq <= 0.7) */ sini2 = sat->deep_arg.sinio*sat->deep_arg.sinio; f220 = 0.75*(1+2*sat->deep_arg.cosio+sat->deep_arg.theta2); f221 = 1.5*sini2; f321 = 1.875*sat->deep_arg.sinio*(1-2*\ sat->deep_arg.cosio-3*sat->deep_arg.theta2); f322 = -1.875*sat->deep_arg.sinio*(1+2* sat->deep_arg.cosio-3*sat->deep_arg.theta2); f441 = 35*sini2*f220; f442 = 39.3750*sini2*sini2; f522 = 9.84375*sat->deep_arg.sinio*(sini2*(1-2*sat->deep_arg.cosio-5* sat->deep_arg.theta2)+0.33333333*(-2+4*sat->deep_arg.cosio+ 6*sat->deep_arg.theta2)); f523 = sat->deep_arg.sinio*(4.92187512*sini2*(-2-4* sat->deep_arg.cosio+10*sat->deep_arg.theta2)+6.56250012 *(1+2*sat->deep_arg.cosio-3*sat->deep_arg.theta2)); f542 = 29.53125*sat->deep_arg.sinio*(2-8* sat->deep_arg.cosio+sat->deep_arg.theta2* (-12+8*sat->deep_arg.cosio+10*sat->deep_arg.theta2)); f543 = 29.53125*sat->deep_arg.sinio*(-2-8*sat->deep_arg.cosio+ sat->deep_arg.theta2*(12+8*sat->deep_arg.cosio-10* sat->deep_arg.theta2)); xno2 = sat->dps.xnq*sat->dps.xnq; ainv2 = aqnv*aqnv; temp1 = 3*xno2*ainv2; temp = temp1*root22; sat->dps.d2201 = temp*f220*g201; sat->dps.d2211 = temp*f221*g211; temp1 = temp1*aqnv; temp = temp1*root32; sat->dps.d3210 = temp*f321*g310; sat->dps.d3222 = temp*f322*g322; temp1 = temp1*aqnv; temp = 2*temp1*root44; sat->dps.d4410 = temp*f441*g410; sat->dps.d4422 = temp*f442*g422; temp1 = temp1*aqnv; temp = temp1*root52; sat->dps.d5220 = temp*f522*g520; sat->dps.d5232 = temp*f523*g532; temp = 2*temp1*root54; sat->dps.d5421 = temp*f542*g521; sat->dps.d5433 = temp*f543*g533; sat->dps.xlamo = xmao+sat->tle.xnodeo+sat->tle.xnodeo-sat->dps.thgr-sat->dps.thgr; bfact = sat->deep_arg.xmdot+sat->deep_arg.xnodot+ sat->deep_arg.xnodot-thdt-thdt; bfact = bfact+sat->dps.ssl+sat->dps.ssh+sat->dps.ssh; } else { sat->flags |= RESONANCE_FLAG; sat->flags |= SYNCHRONOUS_FLAG; /* Synchronous resonance terms initialization */ g200 = 1+sat->deep_arg.eosq*(-2.5+0.8125*sat->deep_arg.eosq); g310 = 1+2*sat->deep_arg.eosq; g300 = 1+sat->deep_arg.eosq*(-6+6.60937*sat->deep_arg.eosq); f220 = 0.75*(1+sat->deep_arg.cosio)*(1+sat->deep_arg.cosio); f311 = 0.9375*sat->deep_arg.sinio*sat->deep_arg.sinio* (1+3*sat->deep_arg.cosio)-0.75*(1+sat->deep_arg.cosio); f330 = 1+sat->deep_arg.cosio; f330 = 1.875*f330*f330*f330; sat->dps.del1 = 3*sat->dps.xnq*sat->dps.xnq*aqnv*aqnv; sat->dps.del2 = 2*sat->dps.del1*f220*g200*q22; sat->dps.del3 = 3*sat->dps.del1*f330*g300*q33*aqnv; sat->dps.del1 = sat->dps.del1*f311*g310*q31*aqnv; sat->dps.fasx2 = 0.13130908; sat->dps.fasx4 = 2.8843198; sat->dps.fasx6 = 0.37448087; sat->dps.xlamo = xmao+sat->tle.xnodeo+sat->tle.omegao-sat->dps.thgr; bfact = sat->deep_arg.xmdot+xpidot-thdt; bfact = bfact+sat->dps.ssl+sat->dps.ssg+sat->dps.ssh; } sat->dps.xfact = bfact-sat->dps.xnq; /* Initialize integrator */ sat->dps.xli = sat->dps.xlamo; sat->dps.xni = sat->dps.xnq; sat->dps.atime = 0; sat->dps.stepp = 720; sat->dps.stepn = -720; sat->dps.step2 = 259200; /* End case dpinit: */ return; case dpsec: /* Entrance for deep space secular effects */ sat->deep_arg.xll = sat->deep_arg.xll+sat->dps.ssl*sat->deep_arg.t; sat->deep_arg.omgadf = sat->deep_arg.omgadf+sat->dps.ssg*sat->deep_arg.t; sat->deep_arg.xnode = sat->deep_arg.xnode+sat->dps.ssh*sat->deep_arg.t; sat->deep_arg.em = sat->tle.eo+sat->dps.sse*sat->deep_arg.t; sat->deep_arg.xinc = sat->tle.xincl+sat->dps.ssi*sat->deep_arg.t; if (sat->deep_arg.xinc < 0) { sat->deep_arg.xinc = -sat->deep_arg.xinc; sat->deep_arg.xnode = sat->deep_arg.xnode + pi; sat->deep_arg.omgadf = sat->deep_arg.omgadf-pi; } if( ~sat->flags & RESONANCE_FLAG ) return; do { if( (sat->dps.atime == 0) || ((sat->deep_arg.t >= 0) && (sat->dps.atime < 0)) || ((sat->deep_arg.t < 0) && (sat->dps.atime >= 0)) ) { /* Epoch restart */ if( sat->deep_arg.t >= 0 ) delt = sat->dps.stepp; else delt = sat->dps.stepn; sat->dps.atime = 0; sat->dps.xni = sat->dps.xnq; sat->dps.xli = sat->dps.xlamo; } else { if( fabs(sat->deep_arg.t) >= fabs(sat->dps.atime) ) { if ( sat->deep_arg.t > 0 ) delt = sat->dps.stepp; else delt = sat->dps.stepn; } } do { if ( fabs(sat->deep_arg.t-sat->dps.atime) >= sat->dps.stepp ) { sat->flags |= DO_LOOP_FLAG; sat->flags &= ~EPOCH_RESTART_FLAG; } else { ft = sat->deep_arg.t-sat->dps.atime; sat->flags &= ~DO_LOOP_FLAG; } if( fabs(sat->deep_arg.t) < fabs(sat->dps.atime) ) { if (sat->deep_arg.t >= 0) delt = sat->dps.stepn; else delt = sat->dps.stepp; sat->flags |= (DO_LOOP_FLAG | EPOCH_RESTART_FLAG); } /* Dot terms calculated */ if (sat->flags & SYNCHRONOUS_FLAG) { xndot = sat->dps.del1*sin(sat->dps.xli-sat->dps.fasx2)+sat->dps.del2*sin(2*(sat->dps.xli-sat->dps.fasx4)) +sat->dps.del3*sin(3*(sat->dps.xli-sat->dps.fasx6)); xnddt = sat->dps.del1*cos(sat->dps.xli-sat->dps.fasx2)+2*sat->dps.del2*cos(2*(sat->dps.xli-sat->dps.fasx4)) +3*sat->dps.del3*cos(3*(sat->dps.xli-sat->dps.fasx6)); } else { xomi = sat->dps.omegaq+sat->deep_arg.omgdot*sat->dps.atime; x2omi = xomi+xomi; x2li = sat->dps.xli+sat->dps.xli; xndot = sat->dps.d2201*sin(x2omi+sat->dps.xli-g22) +sat->dps.d2211*sin(sat->dps.xli-g22) +sat->dps.d3210*sin(xomi+sat->dps.xli-g32) +sat->dps.d3222*sin(-xomi+sat->dps.xli-g32) +sat->dps.d4410*sin(x2omi+x2li-g44) +sat->dps.d4422*sin(x2li-g44) +sat->dps.d5220*sin(xomi+sat->dps.xli-g52) +sat->dps.d5232*sin(-xomi+sat->dps.xli-g52) +sat->dps.d5421*sin(xomi+x2li-g54) +sat->dps.d5433*sin(-xomi+x2li-g54); xnddt = sat->dps.d2201*cos(x2omi+sat->dps.xli-g22) +sat->dps.d2211*cos(sat->dps.xli-g22) +sat->dps.d3210*cos(xomi+sat->dps.xli-g32) +sat->dps.d3222*cos(-xomi+sat->dps.xli-g32) +sat->dps.d5220*cos(xomi+sat->dps.xli-g52) +sat->dps.d5232*cos(-xomi+sat->dps.xli-g52) +2*(sat->dps.d4410*cos(x2omi+x2li-g44) +sat->dps.d4422*cos(x2li-g44) +sat->dps.d5421*cos(xomi+x2li-g54) +sat->dps.d5433*cos(-xomi+x2li-g54)); } /* End of if (isFlagSet(SYNCHRONOUS_FLAG)) */ xldot = sat->dps.xni+sat->dps.xfact; xnddt = xnddt*xldot; if(sat->flags & DO_LOOP_FLAG) { sat->dps.xli = sat->dps.xli+xldot*delt+xndot*sat->dps.step2; sat->dps.xni = sat->dps.xni+xndot*delt+xnddt*sat->dps.step2; sat->dps.atime = sat->dps.atime+delt; } } while ( (sat->flags & DO_LOOP_FLAG) && (~sat->flags & EPOCH_RESTART_FLAG)); } while ((sat->flags & DO_LOOP_FLAG) && (sat->flags & EPOCH_RESTART_FLAG)); sat->deep_arg.xn = sat->dps.xni+xndot*ft+xnddt*ft*ft*0.5; xl = sat->dps.xli+xldot*ft+xndot*ft*ft*0.5; temp = -sat->deep_arg.xnode+sat->dps.thgr+sat->deep_arg.t*thdt; if (~sat->flags & SYNCHRONOUS_FLAG) sat->deep_arg.xll = xl+temp+temp; else sat->deep_arg.xll = xl-sat->deep_arg.omgadf+temp; return; /*End case dpsec: */ case dpper: /* Entrance for lunar-solar periodics */ sinis = sin(sat->deep_arg.xinc); cosis = cos(sat->deep_arg.xinc); if (fabs(sat->dps.savtsn-sat->deep_arg.t) >= 30) { sat->dps.savtsn = sat->deep_arg.t; zm = sat->dps.zmos+zns*sat->deep_arg.t; zf = zm+2*zes*sin(zm); sinzf = sin(zf); f2 = 0.5*sinzf*sinzf-0.25; f3 = -0.5*sinzf*cos(zf); ses = sat->dps.se2*f2+sat->dps.se3*f3; sis = sat->dps.si2*f2+sat->dps.si3*f3; sls = sat->dps.sl2*f2+sat->dps.sl3*f3+sat->dps.sl4*sinzf; sat->dps.sghs = sat->dps.sgh2*f2+sat->dps.sgh3*f3+sat->dps.sgh4*sinzf; sat->dps.shs = sat->dps.sh2*f2+sat->dps.sh3*f3; zm = sat->dps.zmol+znl*sat->deep_arg.t; zf = zm+2*zel*sin(zm); sinzf = sin(zf); f2 = 0.5*sinzf*sinzf-0.25; f3 = -0.5*sinzf*cos(zf); sel = sat->dps.ee2*f2+sat->dps.e3*f3; sil = sat->dps.xi2*f2+sat->dps.xi3*f3; sll = sat->dps.xl2*f2+sat->dps.xl3*f3+sat->dps.xl4*sinzf; sat->dps.sghl = sat->dps.xgh2*f2+sat->dps.xgh3*f3+sat->dps.xgh4*sinzf; sat->dps.sh1 = sat->dps.xh2*f2+sat->dps.xh3*f3; sat->dps.pe = ses+sel; sat->dps.pinc = sis+sil; sat->dps.pl = sls+sll; } pgh = sat->dps.sghs+sat->dps.sghl; ph = sat->dps.shs+sat->dps.sh1; sat->deep_arg.xinc = sat->deep_arg.xinc+sat->dps.pinc; sat->deep_arg.em = sat->deep_arg.em+sat->dps.pe; if (sat->dps.xqncl >= 0.2) { /* Apply periodics directly */ ph = ph/sat->deep_arg.sinio; pgh = pgh-sat->deep_arg.cosio*ph; sat->deep_arg.omgadf = sat->deep_arg.omgadf+pgh; sat->deep_arg.xnode = sat->deep_arg.xnode+ph; sat->deep_arg.xll = sat->deep_arg.xll+sat->dps.pl; } else { /* Apply periodics with Lyddane modification */ sinok = sin(sat->deep_arg.xnode); cosok = cos(sat->deep_arg.xnode); alfdp = sinis*sinok; betdp = sinis*cosok; dalf = ph*cosok+sat->dps.pinc*cosis*sinok; dbet = -ph*sinok+sat->dps.pinc*cosis*cosok; alfdp = alfdp+dalf; betdp = betdp+dbet; sat->deep_arg.xnode = FMod2p(sat->deep_arg.xnode); xls = sat->deep_arg.xll+sat->deep_arg.omgadf+cosis*sat->deep_arg.xnode; dls = sat->dps.pl+pgh-sat->dps.pinc*sat->deep_arg.xnode*sinis; xls = xls+dls; xnoh = sat->deep_arg.xnode; sat->deep_arg.xnode = AcTan(alfdp,betdp); /* This is a patch to Lyddane modification */ /* suggested by Rob Matson. */ if(fabs(xnoh-sat->deep_arg.xnode) > pi) { if(sat->deep_arg.xnode < xnoh) sat->deep_arg.xnode +=twopi; else sat->deep_arg.xnode -=twopi; } sat->deep_arg.xll = sat->deep_arg.xll+sat->dps.pl; sat->deep_arg.omgadf = xls-sat->deep_arg.xll-cos(sat->deep_arg.xinc)* sat->deep_arg.xnode; } return; } } /* Functions for testing and setting/clearing flags */ /* An int variable holding the single-bit flags */ static int Flags = 0; int isFlagSet(int flag) { return (Flags & flag); } int isFlagClear(int flag) { return (~Flags & flag); } void SetFlag(int flag) { Flags |= flag; } void ClearFlag(int flag) { Flags &= ~flag; } gpredict/src/sgpsdp/sgp4sdp4.h000066400000000000000000000320521427377236300166070ustar00rootroot00000000000000 #ifndef SGP4SDP4_H #define SGP4SDP4_H 1 #include #include #include #include #include /* #include */ /* from David Kaelbling */ #define select duplicate_select #include #undef select typedef enum { ORBIT_TYPE_UNKNOWN = 0, ORBIT_TYPE_LEO, /*!< Low Earth orbit, up to 1200 km. */ ORBIT_TYPE_ICO, /*!< Intermediate Circular Orbit, up to 1400 km. */ ORBIT_TYPE_GEO, /*!< Geostationary. */ ORBIT_TYPE_GSO, /*!< Geosynchronuous. */ ORBIT_TYPE_MOLNIYA, ORBIT_TYPE_TUNDRA, ORBIT_TYPE_POLAR, ORBIT_TYPE_SUNSYNC, ORBIT_TYPE_DECAYED } orbit_type_t; /** \brief Operational status of satellite. */ typedef enum { OP_STAT_UNKNOWN = 0, OP_STAT_OPERATIONAL, /*!< Operational [+] */ OP_STAT_NONOP, /*!< Nonoperational [-] */ OP_STAT_PARTIAL, /*!< Partially operational [P] */ OP_STAT_STDBY, /*!< Backup/Standby [B] */ OP_STAT_SPARE, /*!< Spare [S] */ OP_STAT_EXTENDED /*!< Extended Mission [X] */ } op_stat_t; /** \brief Two-line-element satellite orbital data. * \ingroup sgpsdpif * \bug doc incomplete. */ typedef struct { double epoch; /*!< Epoch Time in NORAD TLE format YYDDD.FFFFFFFF */ unsigned int epoch_year; /*!< Epoch: year */ unsigned int epoch_day; /*!< Epoch: day of year */ double epoch_fod; /*!< Epoch: Fraction of day. */ double xndt2o; /*!< 1. time derivative of mean motion */ double xndd6o; /*!< 2. time derivative of mean motion */ double bstar; /*!< Bstar drag coefficient. */ double xincl; /*!< Inclination */ double xnodeo; /*!< R.A.A.N. */ double eo; /*!< Eccentricity */ double omegao; /*!< argument of perigee */ double xmo; /*!< mean anomaly */ double xno; /*!< mean motion */ int catnr; /*!< Catalogue Number. */ int elset; /*!< Element Set number. */ int revnum; /*!< Revolution Number at epoch. */ char sat_name[25]; /*!< Satellite name string. */ char idesg[9]; /*!< International Designator. */ op_stat_t status; /*!< Operational status. */ /* values needed for squint calculations */ double xincl1; double xnodeo1; double omegao1; } tle_t; /** \brief Geodetic position data structure. * \ingroup sgpsdpif * * \bug It is uncertain whether the units are uniform across all functions. */ typedef struct { double lat; /*!< Latitude [rad] */ double lon; /*!< Longitude [rad] */ double alt; /*!< Altitude [km]? */ double theta; } geodetic_t; /** \brief General three-dimensional vector structure. * \ingroup sgpsdpif */ typedef struct { double x; /*!< X component */ double y; /*!< Y component */ double z; /*!< Z component */ double w; /*!< Magnitude */ } vector_t; /** \brief Bearing to satellite from observer * \ingroup sgpsdpif */ typedef struct { double az; /*!< Azimuth [deg] */ double el; /*!< Elevation [deg] */ double range; /*!< Range [km] */ double range_rate; /*!< Velocity [km/sec] */ } obs_set_t; typedef struct { double ra; /*!< Right Ascension [dec] */ double dec; /*!< Declination [dec] */ } obs_astro_t; /* Common arguments between deep-space functions */ typedef struct { /* Used by dpinit part of Deep() */ double eosq, sinio, cosio, betao, aodp, theta2, sing, cosg; double betao2, xmdot, omgdot, xnodot, xnodp; /* Used by dpsec and dpper parts of Deep() */ double xll, omgadf, xnode, em, xinc, xn, t; /* Used by thetg and Deep() */ double ds50; } deep_arg_t; /* static data for SGP4 and SDP4 */ typedef struct { double aodp, aycof, c1, c4, c5, cosio, d2, d3, d4, delmo, omgcof; double eta, omgdot, sinio, xnodp, sinmo, t2cof, t3cof, t4cof, t5cof; double x1mth2, x3thm1, x7thm1, xmcof, xmdot, xnodcf, xnodot, xlcof; } sgpsdp_static_t; /* static data for DEEP */ typedef struct { double thgr, xnq, xqncl, omegaq, zmol, zmos, savtsn, ee2, e3, xi2; double xl2, xl3, xl4, xgh2, xgh3, xgh4, xh2, xh3, sse, ssi, ssg, xi3; double se2, si2, sl2, sgh2, sh2, se3, si3, sl3, sgh3, sh3, sl4, sgh4; double ssl, ssh, d3210, d3222, d4410, d4422, d5220, d5232, d5421; double d5433, del1, del2, del3, fasx2, fasx4, fasx6, xlamo, xfact; double xni, atime, stepp, stepn, step2, preep, pl, sghs, xli; double d2201, d2211, sghl, sh1, pinc, pe, shs, zsingl, zcosgl; double zsinhl, zcoshl, zsinil, zcosil; } deep_static_t; /** * \brief Satellite data structure * \ingroup sgpsdpif * */ typedef struct { char *name; char *nickname; char *website; tle_t tle; /*!< Keplerian elements */ int flags; /*!< Flags for algo ctrl */ sgpsdp_static_t sgps; deep_static_t dps; deep_arg_t deep_arg; vector_t pos; /*!< Raw position and range */ vector_t vel; /*!< Raw velocity */ /* time keeping fields */ double jul_epoch; double jul_utc; double tsince; double aos; /*!< Next AOS. */ double los; /*!< Next LOS */ double az; /*!< Azimuth [deg] */ double el; /*!< Elevation [deg] */ double range; /*!< Range [km] */ double range_rate; /*!< Range Rate [km/sec] */ double ra; /*!< Right Ascension [deg] */ double dec; /*!< Declination [deg] */ double ssplat; /*!< SSP latitude [deg] */ double ssplon; /*!< SSP longitude [deg] */ double alt; /*!< altitude [km] */ double velo; /*!< velocity [km/s] */ double ma; /*!< mean anomaly */ double footprint; /*!< footprint */ double phase; /*!< orbit phase */ double meanmo; /*!< mean motion kept in rev/day */ long orbit; /*!< orbit number */ orbit_type_t otype; /*!< orbit type. */ } sat_t; /** \brief Type casting macro */ #define SAT(sat) ((sat_t *) sat) /** Table of constant values **/ #define de2ra 1.74532925E-2 /* Degrees to Radians */ #define pi 3.1415926535898 /* Pi */ #define pio2 1.5707963267949 /* Pi/2 */ #define x3pio2 4.71238898 /* 3*Pi/2 */ #define twopi 6.2831853071796 /* 2*Pi */ #define e6a 1.0E-6 #define tothrd 6.6666667E-1 /* 2/3 */ #define xj2 1.0826158E-3 /* J2 Harmonic */ #define xj3 -2.53881E-6 /* J3 Harmonic */ #define xj4 -1.65597E-6 /* J4 Harmonic */ #define xke 7.43669161E-2 #define xkmper 6.378135E3 /* Earth radius km */ #define xmnpda 1.44E3 /* Minutes per day */ #define ae 1.0 #define ck2 5.413079E-4 #define ck4 6.209887E-7 #define __f 3.352779E-3 #define ge 3.986008E5 #define __s__ 1.012229 #define qoms2t 1.880279E-09 #define secday 8.6400E4 /* Seconds per day */ #define omega_E 1.0027379 #define omega_ER 6.3003879 #define zns 1.19459E-5 #define c1ss 2.9864797E-6 #define zes 1.675E-2 #define znl 1.5835218E-4 #define c1l 4.7968065E-7 #define zel 5.490E-2 #define zcosis 9.1744867E-1 #define zsinis 3.9785416E-1 #define zsings -9.8088458E-1 #define zcosgs 1.945905E-1 #define zcoshs 1 #define zsinhs 0 #define q22 1.7891679E-6 #define q31 2.1460748E-6 #define q33 2.2123015E-7 #define g22 5.7686396 #define g32 9.5240898E-1 #define g44 1.8014998 #define g52 1.0508330 #define g54 4.4108898 #define root22 1.7891679E-6 #define root32 3.7393792E-7 #define root44 7.3636953E-9 #define root52 1.1428639E-7 #define root54 2.1765803E-9 #define thdt 4.3752691E-3 #define rho 1.5696615E-1 #define mfactor 7.292115E-5 #define __sr__ 6.96000E5 /*Solar radius - kilometers (IAU 76) */ #define AU 1.49597870E8 /*Astronomical unit - kilometers (IAU 76) */ /* Entry points of Deep() FIXME: Change to enu */ #define dpinit 1 /* Deep-space initialization code */ #define dpsec 2 /* Deep-space secular code */ #define dpper 3 /* Deep-space periodic code */ /* Carriage return and line feed */ #define CR 0x0A #define LF 0x0D /* Flow control flag definitions */ #define ALL_FLAGS -1 #define SGP_INITIALIZED_FLAG 0x000001 #define SGP4_INITIALIZED_FLAG 0x000002 #define SDP4_INITIALIZED_FLAG 0x000004 #define SGP8_INITIALIZED_FLAG 0x000008 #define SDP8_INITIALIZED_FLAG 0x000010 #define SIMPLE_FLAG 0x000020 #define DEEP_SPACE_EPHEM_FLAG 0x000040 #define LUNAR_TERMS_DONE_FLAG 0x000080 #define NEW_EPHEMERIS_FLAG 0x000100 #define DO_LOOP_FLAG 0x000200 #define RESONANCE_FLAG 0x000400 #define SYNCHRONOUS_FLAG 0x000800 #define EPOCH_RESTART_FLAG 0x001000 #define VISIBLE_FLAG 0x002000 #define SAT_ECLIPSED_FLAG 0x004000 /** Function prototypes **/ /* sgp4sdp4.c */ void SGP4(sat_t * sat, double tsince); void SDP4(sat_t * sat, double tsince); void Deep(int ientry, sat_t * sat); int isFlagSet(int flag); int isFlagClear(int flag); void SetFlag(int flag); void ClearFlag(int flag); /* sgp_in.c */ int Checksum_Good(char *tle_set); int Good_Elements(char *tle_set); void Convert_Satellite_Data(char *tle_set, tle_t * tle); int Get_Next_Tle_Set(char lines[3][80], tle_t * tle); void select_ephemeris(sat_t * sat); /* sgp_math.c */ int Sign(double arg); double Sqr(double arg); double Cube(double arg); double Radians(double arg); double Degrees(double arg); double ArcSin(double arg); double ArcCos(double arg); void Magnitude(vector_t * v); void Vec_Add(vector_t * v1, vector_t * v2, vector_t * v3); void Vec_Sub(vector_t * v1, vector_t * v2, vector_t * v3); void Scalar_Multiply(double k, vector_t * v1, vector_t * v2); void Scale_Vector(double k, vector_t * v); double Dot(vector_t * v1, vector_t * v2); double Angle(vector_t * v1, vector_t * v2); void Cross(vector_t * v1, vector_t * v2, vector_t * v3); void Normalize(vector_t * v); double AcTan(double sinx, double cosx); double FMod2p(double x); double Modulus(double arg1, double arg2); double Frac(double arg); int Round(double arg); double Int(double arg); void Convert_Sat_State(vector_t * pos, vector_t * vel); /* sgp_obs.c */ void Calculate_User_PosVel(double _time, geodetic_t * geodetic, vector_t * obs_pos, vector_t * obs_vel); void Calculate_LatLonAlt(double _time, vector_t * pos, geodetic_t * geodetic); void Calculate_Obs(double _time, vector_t * pos, vector_t * vel, geodetic_t * geodetic, obs_set_t * obs_set); void Calculate_RADec_and_Obs(double _time, vector_t * pos, vector_t * vel, geodetic_t * geodetic, obs_astro_t * obs_set); /* sgp_time.c */ double Julian_Date_of_Epoch(double epoch); double Epoch_Time(double jd); int DOY(int yr, int mo, int dy); double Fraction_of_Day(int hr, int mi, int se); void Calendar_Date(double jd, struct tm *cdate); void Time_of_Day(double jd, struct tm *cdate); double Julian_Date(struct tm *cdate); void Date_Time(double jd, struct tm *cdate); int Check_Date(struct tm *cdate); void Time_to_UTC(struct tm *cdate, struct tm *odate); struct tm Time_from_UTC(struct tm *cdate); double JD_to_UTC(double jt); double JD_from_UTC(double jt); double Delta_ET(double year); double Julian_Date_of_Year(double year); double ThetaG(double epoch, deep_arg_t * deep_arg); double ThetaG_JD(double jd); void UTC_Calendar_Now(struct tm *cdate); /* solar.c */ void Calculate_Solar_Position(double _time, vector_t * solar_vector); int Sat_Eclipsed(vector_t * pos, vector_t * sol, double *depth); #endif gpredict/src/sgpsdp/sgp_in.c000066400000000000000000000261171427377236300164160ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program This unit is: Copyright (C) 1992-1999 Dr TS Kelso. Copyright (C) 2001 by N. Kyriazis Copyright (C) 2006-2008 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* original header: */ /* Unit SGP_In */ /* Author: Dr TS Kelso */ /* Original Version: 1992 Jun 25 */ /* Current Revision: 1999 Nov 27 */ /* Version: 2.10 */ /* Copyright: 1992-1999, All Rights Reserved */ /* Ported to C by N. Kyriazis April 6 2001 */ #include #include #include "sgp4sdp4.h" /* Calculates the checksum mod 10 of a line from a TLE set and */ /* returns 1 if it compares with checksum in column 68, else 0.*/ /* tle_set is a character string holding the two lines read */ /* from a text file containing NASA format Keplerian elements. */ /* NOTE!!! The stuff about two lines is not quite true. The function assumes that tle_set[0] is the beginning of the line and that there are 68 elements - see the consumer */ int Checksum_Good(char *tle_set) { int i, check_digit, value, checksum = 0; if (tle_set == NULL) { return 0; } for (i = 0; i < 68; i++) { if ((tle_set[i] >= '0') && (tle_set[i] <= '9')) value = tle_set[i] - '0'; else if (tle_set[i] == '-') value = 1; else value = 0; checksum += value; } /* End for(i = 0; i < 68; i++) */ checksum %= 10; check_digit = tle_set[68] - '0'; return (checksum == check_digit); } /* Carries out various checks on a TLE set to verify its validity */ /* tle_set is a character string holding the two lines read */ /* from a text file containing NASA format Keplerian elements. */ int Good_Elements(char *tle_set) { /* Verify checksum of both lines of a TLE set */ if (!Checksum_Good(&tle_set[0]) || !Checksum_Good(&tle_set[69])) return (0); /* Check the line number of each line */ if ((tle_set[0] != '1') || (tle_set[69] != '2')) return (0); /* Verify that Satellite Number is same in both lines */ if (strncmp(&tle_set[2], &tle_set[71], 5) != 0) return (0); /* Check that various elements are in the right place */ if ((tle_set[23] != '.') || (tle_set[34] != '.') || (tle_set[80] != '.') || (tle_set[89] != '.') || (tle_set[106] != '.') || (tle_set[115] != '.') || (tle_set[123] != '.') || (strncmp(&tle_set[61], " 0 ", 3) != 0)) return (0); return (1); } /* Converts the strings in a raw two-line element set */ /* to their intended numerical values. No processing */ /* of these values is done, e.g. from deg to rads etc. */ /* This is done in the select_ephemeris() function. */ void Convert_Satellite_Data(char *tle_set, tle_t * tle) { char buff[15]; /* Satellite's catalogue number */ strncpy(buff, &tle_set[2], 5); buff[5] = '\0'; tle->catnr = atoi(buff); /* International Designator for satellite */ strncpy(tle->idesg, &tle_set[9], 8); tle->idesg[8] = '\0'; /* Epoch time; this is the complete, unconverted epoch. */ strncpy(buff, &tle_set[18], 14); /* The DDD field may be padded with spaces instead of zeros, but we're about to interpret it as a single real number with g_ascii_strtod, so convert spaces to zeros if needed. */ if (buff[2] == ' ') buff[2] = '0'; if (buff[3] == ' ') buff[3] = '0'; buff[14] = '\0'; // tle->epoch = atof (buff); tle->epoch = g_ascii_strtod(buff, NULL); /* Now, convert the epoch time into year, day and fraction of day, according to: YYDDD.FFFFFFFF */ /* Epoch year; we assume > 2000 ... */ strncpy(buff, &tle_set[18], 2); buff[2] = '\0'; tle->epoch_year = 2000 + atoi(buff); /* Epoch day */ strncpy(buff, &tle_set[20], 3); buff[3] = '\0'; tle->epoch_day = atoi(buff); /* Epoch fraction of day */ buff[0] = '0'; strncpy(&buff[1], &tle_set[23], 9); buff[10] = '\0'; tle->epoch_fod = g_ascii_strtod(buff, NULL); /* Satellite's First Time Derivative */ strncpy(buff, &tle_set[33], 10); buff[10] = '\0'; tle->xndt2o = g_ascii_strtod(buff, NULL); /* Satellite's Second Time Derivative */ strncpy(buff, &tle_set[44], 1); buff[1] = '.'; strncpy(&buff[2], &tle_set[45], 5); buff[7] = 'E'; strncpy(&buff[8], &tle_set[50], 2); buff[10] = '\0'; tle->xndd6o = g_ascii_strtod(buff, NULL); /* Satellite's bstar drag term * FIXME: How about buff[0] ???? */ strncpy(buff, &tle_set[53], 1); buff[1] = '.'; strncpy(&buff[2], &tle_set[54], 5); buff[7] = 'E'; strncpy(&buff[8], &tle_set[59], 2); buff[10] = '\0'; tle->bstar = g_ascii_strtod(buff, NULL); /* Element Number */ strncpy(buff, &tle_set[64], 4); buff[4] = '\0'; tle->elset = atoi(buff); /* Satellite's Orbital Inclination (degrees) */ strncpy(buff, &tle_set[77], 8); buff[8] = '\0'; tle->xincl = g_ascii_strtod(buff, NULL); /* Satellite's RAAN (degrees) */ strncpy(buff, &tle_set[86], 8); buff[8] = '\0'; tle->xnodeo = g_ascii_strtod(buff, NULL); /* Satellite's Orbital Eccentricity */ buff[0] = '.'; strncpy(&buff[1], &tle_set[95], 7); buff[8] = '\0'; tle->eo = g_ascii_strtod(buff, NULL); /* avoid division by 0 */ if (tle->eo < 1.0e-6) tle->eo = 1.0e-6; /* Satellite's Argument of Perigee (degrees) */ strncpy(buff, &tle_set[103], 8); buff[8] = '\0'; tle->omegao = g_ascii_strtod(buff, NULL); /* Satellite's Mean Anomaly of Orbit (degrees) */ strncpy(buff, &tle_set[112], 8); buff[8] = '\0'; tle->xmo = g_ascii_strtod(buff, NULL); /* Satellite's Mean Motion (rev/day) */ strncpy(buff, &tle_set[121], 10); buff[10] = '\0'; tle->xno = g_ascii_strtod(buff, NULL); /* Satellite's Revolution number at epoch */ strncpy(buff, &tle_set[132], 5); buff[5] = '\0'; tle->revnum = g_ascii_strtod(buff, NULL); } int Get_Next_Tle_Set(char line[3][80], tle_t * tle) { int idx, /* Index for loops and arrays */ chr; /* Used for inputting characters */ char tle_set[139]; /* Two lines of a TLE set */ /* set status to unknown by sefault */ tle->status = OP_STAT_UNKNOWN; /* Read the satellite's name */ for (idx = 0; idx < 25; idx++) { chr = line[0][idx]; if ((chr != CR) && (chr != LF) && (chr != '\0')) { /* avoid escaping & */ if (chr == '&') { tle->sat_name[idx] = '/'; continue; } /* check for operational status encoded in name */ if ((idx < 23) && (chr == '[') && (line[0][idx + 2] == ']') && ((line[0][idx + 1] == '+') || (line[0][idx + 1] == '-') || (line[0][idx + 1] == 'P') || (line[0][idx + 1] == 'B') || (line[0][idx + 1] == 'S') || (line[0][idx + 1] == 'X'))) { /* get operational status */ switch (line[0][idx + 1]) { case '+': tle->status = OP_STAT_OPERATIONAL; break; case '-': tle->status = OP_STAT_NONOP; break; case 'P': tle->status = OP_STAT_PARTIAL; break; case 'B': tle->status = OP_STAT_STDBY; break; case 'S': tle->status = OP_STAT_SPARE; break; case 'X': tle->status = OP_STAT_EXTENDED; break; default: tle->status = OP_STAT_UNKNOWN; break; } /* terminate sat_name string */ tle->sat_name[idx - 1] = '\0'; /* force loop exit */ idx = 25; } else { /* no operational status in name, go on */ tle->sat_name[idx] = chr; } } else { /* strip off trailing spaces */ while ((chr = line[0][--idx]) == ' '); tle->sat_name[++idx] = '\0'; break; } } /* Read in first line of TLE set */ strncpy(tle_set, line[1], 70); /* Read in second line of TLE set and terminate string */ strncpy(&tle_set[69], line[2], 70); tle_set[138] = '\0'; /* Check TLE set and abort if not valid */ if (!Good_Elements(tle_set)) return (-2); /* Convert the TLE set to orbital elements */ Convert_Satellite_Data(tle_set, tle); return (1); } /* Selects the appropriate ephemeris type to be used */ /* for predictions according to the data in the TLE */ /* It also processes values in the tle set so that */ /* they are appropriate for the sgp4/sdp4 routines */ void select_ephemeris(sat_t * sat) { double ao, xnodp, dd1, dd2, delo, temp, a1, del1, r1; /* Preprocess tle set */ sat->tle.xnodeo *= de2ra; sat->tle.omegao *= de2ra; sat->tle.xmo *= de2ra; sat->tle.xincl *= de2ra; temp = twopi / xmnpda / xmnpda; /* store mean motion before conversion */ sat->meanmo = sat->tle.xno; sat->tle.xno = sat->tle.xno * temp * xmnpda; sat->tle.xndt2o *= temp; sat->tle.xndd6o = sat->tle.xndd6o * temp / xmnpda; sat->tle.bstar /= ae; /* Period > 225 minutes is deep space */ dd1 = (xke / sat->tle.xno); dd2 = tothrd; a1 = pow(dd1, dd2); r1 = cos(sat->tle.xincl); dd1 = (1.0 - sat->tle.eo * sat->tle.eo); temp = ck2 * 1.5f * (r1 * r1 * 3.0 - 1.0) / pow(dd1, 1.5); del1 = temp / (a1 * a1); ao = a1 * (1.0 - del1 * (tothrd * 0.5 + del1 * (del1 * 1.654320987654321 + 1.0))); delo = temp / (ao * ao); xnodp = sat->tle.xno / (delo + 1.0); /* Select a deep-space/near-earth ephemeris */ if (twopi / xnodp / xmnpda >= .15625) sat->flags |= DEEP_SPACE_EPHEM_FLAG; else sat->flags &= ~DEEP_SPACE_EPHEM_FLAG; return; } gpredict/src/sgpsdp/sgp_math.c000066400000000000000000000104451427377236300167360ustar00rootroot00000000000000/* * Unit SGP_Math * Author: Dr TS Kelso * Original Version: 1991 Oct 30 * Current Revision: 1998 Mar 17 * Version: 3.00 * Copyright: 1991-1998, All Rights Reserved * * ported to C by: Neoklis Kyriazis April 9 2001 */ #include "sgp4sdp4.h" /* Returns sign of a double */ int Sign(double arg) { if (arg > 0) return (1); else if (arg < 0) return (-1); else return (0); } /* Returns square of a double */ double Sqr(double arg) { return (arg * arg); } /* Returns cube of a double */ double Cube(double arg) { return (arg * arg * arg); } /* Returns angle in radians from arg id degrees */ double Radians(double arg) { return (arg * de2ra); } /* Returns angle in degrees from arg in rads */ double Degrees(double arg) { return (arg / de2ra); } /* Returns the arcsine of the argument */ double ArcSin(double arg) { if (fabs(arg) >= 1) return (Sign(arg) * pio2); else return (atan(arg / sqrt(1 - arg * arg))); } /* Returns orccosine of rgument */ double ArcCos(double arg) { return (pio2 - ArcSin(arg)); } /* Calculates scalar magnitude of a vector_t argument */ void Magnitude(vector_t * v) { v->w = sqrt(Sqr(v->x) + Sqr(v->y) + Sqr(v->z)); } /* Adds vectors v1 and v2 together to produce v3 */ void Vec_Add(vector_t * v1, vector_t * v2, vector_t * v3) { v3->x = v1->x + v2->x; v3->y = v1->y + v2->y; v3->z = v1->z + v2->z; Magnitude(v3); } /* Subtracts vector v2 from v1 to produce v3 */ void Vec_Sub(vector_t * v1, vector_t * v2, vector_t * v3) { v3->x = v1->x - v2->x; v3->y = v1->y - v2->y; v3->z = v1->z - v2->z; Magnitude(v3); } /* Multiplies the vector v1 by the scalar k to produce the vector v2 */ void Scalar_Multiply(double k, vector_t * v1, vector_t * v2) { v2->x = k * v1->x; v2->y = k * v1->y; v2->z = k * v1->z; v2->w = fabs(k) * v1->w; } /* Multiplies the vector v1 by the scalar k */ void Scale_Vector(double k, vector_t * v) { v->x *= k; v->y *= k; v->z *= k; Magnitude(v); } /* Returns the dot product of two vectors */ double Dot(vector_t * v1, vector_t * v2) { return (v1->x * v2->x + v1->y * v2->y + v1->z * v2->z); } /* Calculates the angle between vectors v1 and v2 */ double Angle(vector_t * v1, vector_t * v2) { Magnitude(v1); Magnitude(v2); return (ArcCos(Dot(v1, v2) / (v1->w * v2->w))); } /* Produces cross product of v1 and v2, and returns in v3 */ void Cross(vector_t * v1, vector_t * v2, vector_t * v3) { v3->x = v1->y * v2->z - v1->z * v2->y; v3->y = v1->z * v2->x - v1->x * v2->z; v3->z = v1->x * v2->y - v1->y * v2->x; Magnitude(v3); } /* Normalizes a vector */ void Normalize(vector_t * v) { v->x /= v->w; v->y /= v->w; v->z /= v->w; } /* Four-quadrant arctan function */ double AcTan(double sinx, double cosx) { if (cosx == 0) { if (sinx > 0) return (pio2); else return (x3pio2); } else { if (cosx > 0) { if (sinx > 0) return (atan(sinx / cosx)); else return (twopi + atan(sinx / cosx)); } else return (pi + atan(sinx / cosx)); } } /* Returns mod 2pi of argument */ double FMod2p(double x) { int i; double ret_val; ret_val = x; i = ret_val / twopi; ret_val -= i * twopi; if (ret_val < 0) ret_val += twopi; return (ret_val); } /* Returns arg1 mod arg2 */ double Modulus(double arg1, double arg2) { int i; double ret_val; ret_val = arg1; i = ret_val / arg2; ret_val -= i * arg2; if (ret_val < 0) ret_val += arg2; return (ret_val); } /* Returns fractional part of double argument */ double Frac(double arg) { return (arg - floor(arg)); } /* Returns argument rounded up to nearest integer */ int Round(double arg) { return ((int)floor(arg + 0.5)); } /* Returns the floor integer of a double argument, as double */ double Int(double arg) { return (floor(arg)); } /* Converts the satellite's position and velocity */ /* vectors from normalised values to km and km/sec */ void Convert_Sat_State(vector_t * pos, vector_t * vel) { Scale_Vector(xkmper, pos); Scale_Vector(xkmper * xmnpda / secday, vel); } gpredict/src/sgpsdp/sgp_obs.c000066400000000000000000000154231427377236300165710ustar00rootroot00000000000000/* * Unit SGP_Obs * Author: Dr TS Kelso * Original Version: 1992 Jun 02 * Current Revision: 1992 Sep 28 * Version: 1.40 * Copyright: 1992, All Rights Reserved * * Ported to C by: Neoklis Kyriazis April 9 2001 */ #include "sgp4sdp4.h" /* Procedure Calculate_User_PosVel passes the user's geodetic position */ /* and the time of interest and returns the ECI position and velocity */ /* of the observer. The velocity calculation assumes the geodetic */ /* position is stationary relative to the earth's surface. */ void Calculate_User_PosVel(double _time, geodetic_t * geodetic, vector_t * obs_pos, vector_t * obs_vel) { /* Reference: The 1992 Astronomical Almanac, page K11. */ double c, sq, achcp; geodetic->theta = FMod2p(ThetaG_JD(_time) + geodetic->lon); /* LMST */ c = 1 / sqrt(1 + __f * (__f - 2) * Sqr(sin(geodetic->lat))); sq = Sqr(1 - __f) * c; achcp = (xkmper * c + geodetic->alt) * cos(geodetic->lat); obs_pos->x = achcp * cos(geodetic->theta); /* km */ obs_pos->y = achcp * sin(geodetic->theta); obs_pos->z = (xkmper * sq + geodetic->alt) * sin(geodetic->lat); obs_vel->x = -mfactor * obs_pos->y; /* km/sec */ obs_vel->y = mfactor * obs_pos->x; obs_vel->z = 0; Magnitude(obs_pos); Magnitude(obs_vel); } /* Procedure Calculate_LatLonAlt will calculate the geodetic */ /* position of an object given its ECI position pos and time. */ /* It is intended to be used to determine the ground track of */ /* a satellite. The calculations assume the earth to be an */ /* oblate spheroid as defined in WGS '72. */ void Calculate_LatLonAlt(double _time, vector_t * pos, geodetic_t * geodetic) { /* Reference: The 1992 Astronomical Almanac, page K12. */ double r, e2, phi, c; geodetic->theta = AcTan(pos->y, pos->x); /* rad */ geodetic->lon = FMod2p(geodetic->theta - ThetaG_JD(_time)); /* rad */ r = sqrt(Sqr(pos->x) + Sqr(pos->y)); e2 = __f * (2 - __f); geodetic->lat = AcTan(pos->z, r); /* rad */ do { phi = geodetic->lat; c = 1 / sqrt(1 - e2 * Sqr(sin(phi))); geodetic->lat = AcTan(pos->z + xkmper * c * e2 * sin(phi), r); } while (fabs(geodetic->lat - phi) >= 1E-10); geodetic->alt = r / cos(geodetic->lat) - xkmper * c; /* km */ if (geodetic->lat > pio2) geodetic->lat -= twopi; } /* The procedures Calculate_Obs and Calculate_RADec calculate */ /* the *topocentric* coordinates of the object with ECI position, */ /* {pos}, and velocity, {vel}, from location {geodetic} at {time}. */ /* The {obs_set} returned for Calculate_Obs consists of azimuth, */ /* elevation, range, and range rate (in that order) with units of */ /* radians, radians, kilometers, and kilometers/second, respectively. */ /* The WGS '72 geoid is used and the effect of atmospheric refraction */ /* (under standard temperature and pressure) is incorporated into the */ /* elevation calculation; the effect of atmospheric refraction on */ /* range and range rate has not yet been quantified. */ /* The {obs_set} for Calculate_RADec consists of right ascension and */ /* declination (in that order) in radians. Again, calculations are */ /* based on *topocentric* position using the WGS '72 geoid and */ /* incorporating atmospheric refraction. */ void Calculate_Obs(double _time, vector_t * pos, vector_t * vel, geodetic_t * geodetic, obs_set_t * obs_set) { double sin_lat, cos_lat, sin_theta, cos_theta; double el, azim, top_s, top_e, top_z; vector_t obs_pos, obs_vel, range, rgvel; Calculate_User_PosVel(_time, geodetic, &obs_pos, &obs_vel); range.x = pos->x - obs_pos.x; range.y = pos->y - obs_pos.y; range.z = pos->z - obs_pos.z; rgvel.x = vel->x - obs_vel.x; rgvel.y = vel->y - obs_vel.y; rgvel.z = vel->z - obs_vel.z; Magnitude(&range); sin_lat = sin(geodetic->lat); cos_lat = cos(geodetic->lat); sin_theta = sin(geodetic->theta); cos_theta = cos(geodetic->theta); top_s = sin_lat * cos_theta * range.x + sin_lat * sin_theta * range.y - cos_lat * range.z; top_e = -sin_theta * range.x + cos_theta * range.y; top_z = cos_lat * cos_theta * range.x + cos_lat * sin_theta * range.y + sin_lat * range.z; azim = atan(-top_e / top_s); /*Azimuth */ if (top_s > 0) azim = azim + pi; if (azim < 0) azim = azim + twopi; el = ArcSin(top_z / range.w); obs_set->az = azim; /* Azimuth (radians) */ obs_set->el = el; /* Elevation (radians) */ obs_set->range = range.w; /* Range (kilometers) */ /* Range Rate (kilometers/second) */ obs_set->range_rate = Dot(&range, &rgvel) / range.w; /* Corrections for atmospheric refraction */ /* Reference: Astronomical Algorithms by Jean Meeus, pp. 101-104 */ /* Correction is meaningless when apparent elevation is below horizon */ // obs_set->el = obs_set->el + Radians((1.02/tan(Radians(Degrees(el)+ // 10.3/(Degrees(el)+5.11))))/60); if (obs_set->el >= 0) SetFlag(VISIBLE_FLAG); else { obs_set->el = el; /*Reset to true elevation */ ClearFlag(VISIBLE_FLAG); } } void Calculate_RADec_and_Obs(double _time, vector_t * pos, vector_t * vel, geodetic_t * geodetic, obs_astro_t * obs_set) { /* Reference: Methods of Orbit Determination by */ /* Pedro Ramon Escobal, pp. 401-402 */ double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, Lz, cos_delta, sin_alpha, cos_alpha; obs_set_t obs; Calculate_Obs(_time, pos, vel, geodetic, &obs); az = obs.az; el = obs.el; phi = geodetic->lat; theta = FMod2p(ThetaG_JD(_time) + geodetic->lon); sin_theta = sin(theta); cos_theta = cos(theta); sin_phi = sin(phi); cos_phi = cos(phi); Lxh = -cos(az) * cos(el); Lyh = sin(az) * cos(el); Lzh = sin(el); Sx = sin_phi * cos_theta; Ex = -sin_theta; Zx = cos_theta * cos_phi; Sy = sin_phi * sin_theta; Ey = cos_theta; Zy = sin_theta * cos_phi; Sz = -cos_phi; Ez = 0; Zz = sin_phi; Lx = Sx * Lxh + Ex * Lyh + Zx * Lzh; Ly = Sy * Lxh + Ey * Lyh + Zy * Lzh; Lz = Sz * Lxh + Ez * Lyh + Zz * Lzh; obs_set->dec = ArcSin(Lz); /* Declination (radians) */ cos_delta = sqrt(1 - Sqr(Lz)); sin_alpha = Ly / cos_delta; cos_alpha = Lx / cos_delta; obs_set->ra = AcTan(sin_alpha, cos_alpha); /* Right Ascension (radians) */ obs_set->ra = FMod2p(obs_set->ra); } gpredict/src/sgpsdp/sgp_time.c000066400000000000000000000250331427377236300167420ustar00rootroot00000000000000/* * Unit SGP_Time * Author: Dr TS Kelso * Original Version: 1992 Jun 02 * Current Revision: 2000 Jan 22 * Modified for Y2K: 1999 Mar 07 * Version: 2.05 * Copyright: 1992-1999, All Rights Reserved * Version 1.50 added Y2K support. Due to limitations in the current * format of the NORAD two-line element sets, however, only dates * through 2056 December 31/2359 UTC are valid. * Version 1.60 modifies Calendar_Date to ensure date matches time * resolution and modifies Time_of_Day to make it more robust. * Version 2.00 adds Julian_Date, Date_Time, and Check_Date to support * checking for valid date/times, permitting the use of Time_to_UTC and * Time_from_UTC for UTC/local time conversions. * Version 2.05 modifies UTC_offset to allow non-integer offsets. * * Ported to C by: Neoklis Kyriazis April 9 2001 */ #define _POSIX_C_SOURCE 1 // gmtime_r() #include #include "sgp4sdp4.h" /* The function Julian_Date_of_Epoch returns the Julian Date of */ /* an epoch specified in the format used in the NORAD two-line */ /* element sets. It has been modified to support dates beyond */ /* the year 1999 assuming that two-digit years in the range 00-56 */ /* correspond to 2000-2056. Until the two-line element set format */ /* is changed, it is only valid for dates through 2056 December 31. */ double Julian_Date_of_Epoch(double epoch) { double year, day; /* Modification to support Y2K */ /* Valid 1957 through 2056 */ day = modf(epoch * 1E-3, &year) * 1E3; if (year < 57) year = year + 2000; else year = year + 1900; /* End modification */ return (Julian_Date_of_Year(year) + day); } /* Converts a Julian epoch to NORAD TLE epoch format */ double Epoch_Time(double jd) { double yr, _time, epoch_time; struct tm edate; Calendar_Date(jd, &edate); yr = edate.tm_year - 100 * (edate.tm_year / 100); _time = Frac(jd + 0.5); epoch_time = yr * 1000 + DOY(edate.tm_year, edate.tm_mon, edate.tm_mday) + _time; return (epoch_time); } /* The function DOY calculates the day of the year for the specified */ /* date. The calculation uses the rules for the Gregorian calendar */ /* and is valid from the inception of that calendar system. */ int DOY(int yr, int mo, int dy) { const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int i, day; day = 0; for (i = 0; i < mo - 1; i++) day += days[i]; day = day + dy; /* Leap year correction */ if ((yr % 4 == 0) && ((yr % 100 != 0) || (yr % 400 == 0)) && (mo > 2)) day++; return (day); } /* Fraction_of_Day calculates the fraction of */ /* a day passed at the specified input time. */ double Fraction_of_Day(int hr, int mi, int se) { return ((hr + (mi + se / 60.0) / 60.0) / 24.0); } /* The function Calendar_Date converts a Julian Date to a struct tm. */ /* Only the members tm_year, tm_mon and tm_mday are calculated and set */ void Calendar_Date(double jd, struct tm *cdate) { /* Astronomical Formulae for Calculators, Jean Meeus, pages 26-27 */ int Z, month; double A, B, C, D, E, F, alpha, day, year, factor; factor = 0.5 / secday / 1000; F = Frac(jd + 0.5); if (F + factor >= 1.0) { jd = jd + factor; F = 0.0; } /*if */ Z = Round(jd); if (Z < 2299161) A = Z; else { alpha = Int((Z - 1867216.25) / 36524.25); A = Z + 1 + alpha - Int(alpha / 4); } /*else */ B = A + 1524; C = Int((B - 122.1) / 365.25); D = Int(365.25 * C); E = Int((B - D) / 30.6001); day = B - D - Int(30.6001 * E) + F; if (E < 13.5) month = Round(E - 1); else month = Round(E - 13); if (month > 2.5) year = C - 4716; else year = C - 4715; cdate->tm_year = (int)year; cdate->tm_mon = month; cdate->tm_mday = (int)floor(day); } /* Time_of_Day takes a Julian Date and calculates the clock time */ /* portion of that date. Only tm_hour, tm_min and tm_sec are set */ void Time_of_Day(double jd, struct tm *cdate) { int hr, mn, sc; double _time; _time = Frac(jd - 0.5) * secday; _time = Round(_time); hr = floor(_time / 3600.0); _time = _time - 3600.0 * hr; if (hr == 24) hr = 0; mn = floor(_time / 60.0); sc = _time - 60.0 * mn; cdate->tm_hour = hr; cdate->tm_min = mn; cdate->tm_sec = sc; } /* The function Julian_Date converts a standard calendar */ /* date and time (FIXME: GMT?) to a Julian Date. The procedure Date_Time */ /* performs the inverse of this function. */ double Julian_Date(struct tm *cdate) { double julian_date; julian_date = Julian_Date_of_Year(cdate->tm_year) + DOY(cdate->tm_year, cdate->tm_mon, cdate->tm_mday) + Fraction_of_Day(cdate->tm_hour, cdate->tm_min, cdate->tm_sec); return (julian_date); } /* Date_Time() * * The function Date_Time() converts a Julian Date to * standard calendar date and time (GMT). The function * Julian_Date() performs the inverse of this function. */ void Date_Time(double julian_date, struct tm *cdate) { time_t jtime; jtime = (julian_date - 2440587.5) * 86400.; *cdate = *gmtime(&jtime); } /* The procedure Check_Date can be used as a check to see if a calendar */ /* date and time are valid. It works by first converting the calendar */ /* date and time to a Julian Date (which allows for irregularities, such */ /* as a time greater than 24 hours) and then converting back and comparing.*/ int Check_Date(struct tm *cdate) { double jt; struct tm chkdate; jt = Julian_Date(cdate); Date_Time(jt, &chkdate); if ((cdate->tm_year == chkdate.tm_year) && (cdate->tm_mon == chkdate.tm_mon) && (cdate->tm_mday == chkdate.tm_mday) && (cdate->tm_hour == chkdate.tm_hour) && (cdate->tm_min == chkdate.tm_min) && (cdate->tm_sec == chkdate.tm_sec)) return (1); else return (0); } /* Procedure gmtime_r is used to convert the calendar */ /* time time_t to a broken-down time representation, */ /* expressed in Coordinated Universal Time (UTC). */ /* This function is not present in WIN32 */ #ifdef WIN32 struct tm *gmtime_r(const time_t * timer, struct tm *result) { struct tm *local_result; local_result = gmtime(timer); if (local_result == NULL || result == NULL) return NULL; return memcpy(result, local_result, sizeof(*result)); } #endif /* Procedures Time_to_UTC and Time_from_UTC are used to */ /* convert 'struct tm' dates between UTC and local time. */ /* The procedures JD_to_UTC and JD_from_UTC are used to */ /* do the same thing working directly with Julian dates. */ void Time_to_UTC(struct tm *cdate, struct tm *odate) { time_t tdate; /* functions such as Julian_Date work with tm_year in being the year since 0 AD and mktime uses it as the year since 1900 tm_isdst = -1 forces the mktime call to lookup the daylight savings for the current timezone instead of using whatever was in the structure when it was created. */ cdate->tm_year -= 1900; cdate->tm_isdst = -1; tdate = mktime(cdate); gmtime_r(&tdate, odate); odate->tm_year += 1900; } struct tm Time_from_UTC(struct tm *cdate) { time_t tdate; tdate = mktime(cdate); return (*localtime(&tdate)); } /* The function Delta_ET has been added to allow calculations on */ /* the position of the sun. It provides the difference between UT */ /* (approximately the same as UTC) and ET (now referred to as TDT).*/ /* This function is based on a least squares fit of data from 1950 */ /* to 1991 and will need to be updated periodically. */ double Delta_ET(double year) { /* Values determined using data from 1950-1991 in the 1990 Astronomical Almanac. See DELTA_ET.WQ1 for details. */ double delta_et; delta_et = 26.465 + 0.747622 * (year - 1950) + 1.886913 * sin(twopi * (year - 1975) / 33); return (delta_et); } /* The function Julian_Date_of_Year calculates the Julian Date */ /* of Day 0.0 of {year}. This function is used to calculate the */ /* Julian Date of any date by using Julian_Date_of_Year, DOY, */ /* and Fraction_of_Day. */ double Julian_Date_of_Year(double year) { /* Astronomical Formulae for Calculators, Jean Meeus, */ /* pages 23-25. Calculate Julian Date of 0.0 Jan year */ long A, B, i; double jdoy; year = year - 1; i = year / 100; A = i; i = A / 4; B = 2 - A + i; i = 365.25 * year; i += 30.6001 * 14; jdoy = i + 1720994.5 + B; return (jdoy); } /* The function ThetaG calculates the Greenwich Mean Sidereal Time */ /* for an epoch specified in the format used in the NORAD two-line */ /* element sets. It has now been adapted for dates beyond the year */ /* 1999, as described above. The function ThetaG_JD provides the */ /* same calculation except that it is based on an input in the */ /* form of a Julian Date. */ double ThetaG(double epoch, deep_arg_t * deep_arg) { /* Reference: The 1992 Astronomical Almanac, page B6. */ double year, day, UT, jd, TU, GMST, _ThetaG; /* Modification to support Y2K */ /* Valid 1957 through 2056 */ day = modf(epoch * 1E-3, &year) * 1E3; if (year < 57) year += 2000; else year += 1900; /* End modification */ UT = modf(day, &day); jd = Julian_Date_of_Year(year) + day; TU = (jd - 2451545.0) / 36525; GMST = 24110.54841 + TU * (8640184.812866 + TU * (0.093104 - TU * 6.2E-6)); GMST = Modulus(GMST + secday * omega_E * UT, secday); _ThetaG = twopi * GMST / secday; deep_arg->ds50 = jd - 2433281.5 + UT; _ThetaG = FMod2p(6.3003880987 * deep_arg->ds50 + 1.72944494); return (_ThetaG); } double ThetaG_JD(double jd) { /* Reference: The 1992 Astronomical Almanac, page B6. */ double UT, TU, GMST; UT = Frac(jd + 0.5); jd = jd - UT; TU = (jd - 2451545.0) / 36525; GMST = 24110.54841 + TU * (8640184.812866 + TU * (0.093104 - TU * 6.2E-6)); GMST = Modulus(GMST + secday * omega_E * UT, secday); return (twopi * GMST / secday); } /* Gets calendar time from time() and produces a UTC calendar date */ void UTC_Calendar_Now(struct tm *cdate) { time_t t; t = time(0); *cdate = *gmtime(&t); cdate->tm_year += 1900; cdate->tm_mon += 1; } gpredict/src/sgpsdp/solar.c000066400000000000000000000042111427377236300162460ustar00rootroot00000000000000/* * Unit Solar * Author: Dr TS Kelso * Original Version: 1990 Jul 29 * Current Revision: 1999 Nov 27 * Version: 1.30 * Copyright: 1990-1999, All Rights Reserved * * Ported to C by: Neoklis Kyriazis April 1 2001 */ #include "sgp4sdp4.h" /* Calculates solar position vector */ void Calculate_Solar_Position(double _time, vector_t * solar_vector) { double mjd, year, T, M, L, e, C, O, Lsa, nu, R, eps; mjd = _time - 2415020.0; year = 1900 + mjd / 365.25; T = (mjd + Delta_ET(year) / secday) / 36525.0; M = Radians(Modulus(358.47583 + Modulus(35999.04975 * T, 360.0) - (0.000150 + 0.0000033 * T) * Sqr(T), 360.0)); L = Radians(Modulus(279.69668 + Modulus(36000.76892 * T, 360.0) + 0.0003025 * Sqr(T), 360.0)); e = 0.01675104 - (0.0000418 + 0.000000126 * T) * T; C = Radians((1.919460 - (0.004789 + 0.000014 * T) * T) * sin(M) + (0.020094 - 0.000100 * T) * sin(2 * M) + 0.000293 * sin(3 * M)); O = Radians(Modulus(259.18 - 1934.142 * T, 360.0)); Lsa = Modulus(L + C - Radians(0.00569 - 0.00479 * sin(O)), twopi); nu = Modulus(M + C, twopi); R = 1.0000002 * (1 - Sqr(e)) / (1 + e * cos(nu)); eps = Radians(23.452294 - (0.0130125 + (0.00000164 - 0.000000503 * T) * T) * T + 0.00256 * cos(O)); R = AU * R; solar_vector->x = R * cos(Lsa); solar_vector->y = R * sin(Lsa) * cos(eps); solar_vector->z = R * sin(Lsa) * sin(eps); solar_vector->w = R; } /* Calculates stellite's eclipse status and depth */ int Sat_Eclipsed(vector_t * pos, vector_t * sol, double *depth) { double sd_sun, sd_earth, delta; vector_t Rho, earth; /* Determine partial eclipse */ sd_earth = ArcSin(xkmper / pos->w); Vec_Sub(sol, pos, &Rho); sd_sun = ArcSin(__sr__ / Rho.w); Scalar_Multiply(-1, pos, &earth); delta = Angle(sol, &earth); *depth = sd_earth - sd_sun - delta; if (sd_earth < sd_sun) return (0); else if (*depth >= 0) return (1); else return (0); } gpredict/src/sgpsdp/test-001.c000066400000000000000000000122211427377236300164030ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2008 Alexandru Csete. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Unit test for SGP4 */ #include #include #include #include #include "sgp4sdp4.h" #define TEST_STEPS 5 /* structure to hold a set of data */ typedef struct { double t; double x; double y; double z; double vx; double vy; double vz; } dataset_t; const dataset_t expected[TEST_STEPS] = { {0.0, 2328.97048951, -5995.22076416, 1719.97067261, 2.91207230, -0.98341546, -7.09081703}, {360.0, 2456.10705566, -6071.93853760, 1222.89727783, 2.67938992, -0.44829041, -7.22879231}, {720.0, 2567.56195068, -6112.50384522, 713.96397400, 2.44024599, 0.09810869, -7.31995916}, {1080.0, 2663.09078980, -6115.48229980, 196.39640427, 2.19611958, 0.65241995, -7.36282432}, {1440.0, 2742.55133057, -6079.67144775, -326.38095856, 1.94850229, 1.21106251, -7.35619372} }; char tle_str[3][80]; sat_t sat; int main(void) { FILE *fp; int i; /* read tle file */ fp = fopen("test-001.tle", "r"); if (fp != NULL) { if (fgets(tle_str[0], 80, fp) == NULL) { printf("Error reading TLE line 1\n"); fclose(fp); return 1; } if (fgets(tle_str[1], 80, fp) == NULL) { printf("Error reading TLE line 2\n"); fclose(fp); return 1; } if (fgets(tle_str[2], 80, fp) == NULL) { printf("Error reading TLE line 3\n"); fclose(fp); return 1; } fclose(fp); if (Get_Next_Tle_Set(tle_str, &sat.tle) == 1) { printf("TEST DATA:\n"); } else { printf("Could not read TLE data 1\n"); return 1; } } else { printf("Could not open test-001.tle\n"); return 1; } printf("%s", tle_str[0]); printf("%s", tle_str[1]); printf("%s", tle_str[2]); select_ephemeris(&sat); printf("\nDEEP_SPACE_EPHEM: %d (expected 0)\n\n", (sat.flags & DEEP_SPACE_EPHEM_FLAG)); printf(" RESULT EXPECTED " " DELTA\n"); printf("-----------------------------------------------------------" "-------------------\n"); for (i = 0; i < TEST_STEPS; i++) { SGP4(&sat, expected[i].t); Convert_Sat_State(&sat.pos, &sat.vel); printf("STEP %d t: %6.1f X: %14.8f %14.8f %.8f (%.5f%%)\n", i + 1, expected[i].t, sat.pos.x, expected[i].x, fabs(sat.pos.x - expected[i].x), 100.0 * fabs(sat.pos.x - expected[i].x) / fabs(expected[i].x)); printf(" Y: %14.8f %14.8f %.8f (%.5f%%)\n", sat.pos.y, expected[i].y, fabs(sat.pos.y - expected[i].y), 100.0 * fabs(sat.pos.y - expected[i].y) / fabs(expected[i].y)); printf(" Z: %14.8f %14.8f %.8f (%.5f%%)\n", sat.pos.z, expected[i].z, fabs(sat.pos.z - expected[i].z), 100.0 * fabs(sat.pos.z - expected[i].z) / fabs(expected[i].z)); printf(" VX: %14.8f %14.8f %.8f (%.5f%%)\n", sat.vel.x, expected[i].vx, fabs(sat.vel.x - expected[i].vx), 100.0 * fabs(sat.vel.x - expected[i].vx) / fabs(expected[i].vx)); printf(" VY: %14.8f %14.8f %.8f (%.5f%%)\n", sat.vel.y, expected[i].vy, fabs(sat.vel.y - expected[i].vy), 100.0 * fabs(sat.vel.y - expected[i].vy) / fabs(expected[i].vy)); printf(" VZ: %14.8f %14.8f %.8f (%.5f%%)\n", sat.vel.z, expected[i].vz, fabs(sat.vel.z - expected[i].vz), 100.0 * fabs(sat.vel.z - expected[i].vz) / fabs(expected[i].vz)); } return 0; } gpredict/src/sgpsdp/test-001.tle000066400000000000000000000002351427377236300167470ustar00rootroot00000000000000TEST SAT SGP 001 1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 9 2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 103 gpredict/src/sgpsdp/test-002.c000066400000000000000000000122731427377236300164130ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2008 Alexandru Csete. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Unit test for SGP4 */ #include #include #include #include #include "sgp4sdp4.h" #define TEST_STEPS 5 /* structure to hold a set of data */ typedef struct { double t; double x; double y; double z; double vx; double vy; double vz; } dataset_t; const dataset_t expected[TEST_STEPS] = { {0.0, 7473.37066650, 428.95261765, 5828.74786377, 5.1071513, 6.44468284, -0.18613096}, {360.0, -3305.22537232, 32410.86328125, -24697.17675781, -1.30113538, -1.15131518, -0.28333528}, {720.0, 14271.28759766, 24110.46411133, -4725.76837158, -0.32050445, 2.67984074, -2.08405289}, {1080.0, -9990.05883789, 22717.35522461, -23616.890662501, -1.01667246, -2.29026759, 0.72892364}, {1440.0, 9787.86975097, 33753.34667969, -15030.81176758, -1.09425966, 0.92358845, -1.52230928} }; char tle_str[3][80]; sat_t sat; int main(void) { FILE *fp; int i; /* read tle file */ fp = fopen("test-002.tle", "r"); if (fp != NULL) { if (fgets(tle_str[0], 80, fp) == NULL) { printf("Error reading TLE line 1\n"); fclose(fp); return 1; } if (fgets(tle_str[1], 80, fp) == NULL) { printf("Error reading TLE line 2\n"); fclose(fp); return 1; } if (fgets(tle_str[2], 80, fp) == NULL) { printf("Error reading TLE line 3\n"); fclose(fp); return 1; } fclose(fp); if (Get_Next_Tle_Set(tle_str, &sat.tle) == 1) { printf("TEST DATA:\n"); } else { printf("Could not read TLE data 2\n"); return 1; } } else { printf("Could not open test-001.tle\n"); return 1; } printf("%s", tle_str[0]); printf("%s", tle_str[1]); printf("%s", tle_str[2]); select_ephemeris(&sat); printf("\nDEEP_SPACE_EPHEM: %d (expected %d)\n\n", (sat.flags & DEEP_SPACE_EPHEM_FLAG), DEEP_SPACE_EPHEM_FLAG); printf(" RESULT EXPECTED " " DELTA\n"); printf("-----------------------------------------------------------" "----------------------\n"); for (i = 0; i < TEST_STEPS; i++) { SDP4(&sat, expected[i].t); Convert_Sat_State(&sat.pos, &sat.vel); printf("STEP %d t: %6.1f X: %15.8f %15.8f %.8f (%.5f%%)\n", i + 1, expected[i].t, sat.pos.x, expected[i].x, fabs(sat.pos.x - expected[i].x), 100.0 * fabs(sat.pos.x - expected[i].x) / fabs(expected[i].x)); printf(" Y: %15.8f %15.8f %.8f (%.5f%%)\n", sat.pos.y, expected[i].y, fabs(sat.pos.y - expected[i].y), 100.0 * fabs(sat.pos.y - expected[i].y) / fabs(expected[i].y)); printf(" Z: %15.8f %15.8f %.8f (%.5f%%)\n", sat.pos.z, expected[i].z, fabs(sat.pos.z - expected[i].z), 100.0 * fabs(sat.pos.z - expected[i].z) / fabs(expected[i].z)); printf(" VX: %15.8f %15.8f %.8f (%.5f%%)\n", sat.vel.x, expected[i].vx, fabs(sat.vel.x - expected[i].vx), 100.0 * fabs(sat.vel.x - expected[i].vx) / fabs(expected[i].vx)); printf(" VY: %15.8f %15.8f %.8f (%.5f%%)\n", sat.vel.y, expected[i].vy, fabs(sat.vel.y - expected[i].vy), 100.0 * fabs(sat.vel.y - expected[i].vy) / fabs(expected[i].vy)); printf(" VZ: %15.8f %15.8f %.8f (%.5f%%)\n", sat.vel.z, expected[i].vz, fabs(sat.vel.z - expected[i].vz), 100.0 * fabs(sat.vel.z - expected[i].vz) / fabs(expected[i].vz)); } return 0; } gpredict/src/sgpsdp/test-002.tle000066400000000000000000000002361427377236300167510ustar00rootroot00000000000000TEST SAT SDP 001 1 11801U 80230.29629788 .01431103 00000-0 14311-1 0 2 2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 2 gpredict/src/strnatcmp.c000066400000000000000000000102771427377236300156520ustar00rootroot00000000000000/* -*- mode: c; c-file-style: "k&r" -*- strnatcmp.c -- Perform 'natural order' comparisons of strings in C. Copyright (C) 2000, 2004 by Martin Pool This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /* partial change history: * * 2004-10-10 mbp: Lift out character type dependencies into macros. * * Eric Sosman pointed out that ctype functions take a parameter whose * value must be that of an unsigned int, even on platforms that have * negative chars in their default char type. */ #include #include #include #include #include "strnatcmp.h" /* These are defined as macros to make it easier to adapt this code to * different characters types or comparison functions. */ static inline int nat_isdigit(nat_char a) { return isdigit((unsigned char) a); } static inline int nat_isspace(nat_char a) { return isspace((unsigned char) a); } static inline nat_char nat_toupper(nat_char a) { return toupper((unsigned char) a); } static int compare_right(nat_char const *a, nat_char const *b) { int bias = 0; /* The longest run of digits wins. That aside, the greatest value wins, but we can't know that it will until we've scanned both numbers to know that they have the same magnitude, so we remember it in BIAS. */ for (;; a++, b++) { if (!nat_isdigit(*a) && !nat_isdigit(*b)) return bias; else if (!nat_isdigit(*a)) return -1; else if (!nat_isdigit(*b)) return +1; else if (*a < *b) { if (!bias) bias = -1; } else if (*a > *b) { if (!bias) bias = +1; } else if (!*a && !*b) return bias; } return 0; } static int compare_left(nat_char const *a, nat_char const *b) { /* Compare two left-aligned numbers: the first to have a different value wins. */ for (;; a++, b++) { if (!nat_isdigit(*a) && !nat_isdigit(*b)) return 0; else if (!nat_isdigit(*a)) return -1; else if (!nat_isdigit(*b)) return +1; else if (*a < *b) return -1; else if (*a > *b) return +1; } return 0; } static int strnatcmp0(nat_char const *a, nat_char const *b, int fold_case) { int ai, bi; nat_char ca, cb; int fractional, result; assert(a && b); ai = bi = 0; while (1) { ca = a[ai]; cb = b[bi]; /* skip over leading spaces or zeros */ while (nat_isspace(ca)) ca = a[++ai]; while (nat_isspace(cb)) cb = b[++bi]; /* process run of digits */ if (nat_isdigit(ca) && nat_isdigit(cb)) { fractional = (ca == '0' || cb == '0'); if (fractional) { if ((result = compare_left(a+ai, b+bi)) != 0) return result; } else { if ((result = compare_right(a+ai, b+bi)) != 0) return result; } } if (!ca && !cb) { /* The strings compare the same. Perhaps the caller will want to call strcmp to break the tie. */ return 0; } if (fold_case) { ca = nat_toupper(ca); cb = nat_toupper(cb); } if (ca < cb) return -1; else if (ca > cb) return +1; ++ai; ++bi; } } int strnatcmp(nat_char const *a, nat_char const *b) { return strnatcmp0(a, b, 0); } /* Compare, recognizing numeric string and ignoring case. */ int strnatcasecmp(nat_char const *a, nat_char const *b) { return strnatcmp0(a, b, 1); } gpredict/src/strnatcmp.h000066400000000000000000000024071427377236300156530ustar00rootroot00000000000000/* -*- mode: c; c-file-style: "k&r" -*- strnatcmp.c -- Perform 'natural order' comparisons of strings in C. Copyright (C) 2000, 2004 by Martin Pool This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /* CUSTOMIZATION SECTION * * You can change this typedef, but must then also change the inline * functions in strnatcmp.c */ typedef char nat_char; int strnatcmp(nat_char const *a, nat_char const *b); int strnatcasecmp(nat_char const *a, nat_char const *b); gpredict/src/time-tools.c000066400000000000000000000052661427377236300157350ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include //#include #ifdef HAVE_CONFIG_H # include #endif #include "sgpsdp/sgp4sdp4.h" #include "time-tools.h" #include "sat-cfg.h" //#ifdef G_OS_WIN32 //# include "libc_internal.h" //# include "libc_interface.h" //#endif /** \brief Get the current time. * * Read the system clock and return the current Julian day. */ gdouble get_current_daynum () { struct tm utc; GDateTime *now; double daynum; UTC_Calendar_Now (&utc); now = g_date_time_new_now_local(); daynum = Julian_Date (&utc); daynum = daynum + (double)g_date_time_get_microsecond(now)/8.64e+10; g_date_time_unref(now); return daynum; } int daynum_to_str(char *s, size_t max, const char *format, gdouble jultime){ // printf("Someone called me\n"); time_t tim; size_t size=0; tim = (jultime - 2440587.5)*86400.0; if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) size = strftime (s, max, format, localtime (&tim)); else size = strftime (s, max, format, gmtime (&tim)); if (size Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef TIME_TOOLS_H #define TIME_TOOLS_H 1 gdouble get_current_daynum (void); //long get_daynum_from_dmy (int d, int m, int y); int daynum_to_str(char *s, size_t max, const char *format, gdouble jultime); #endif gpredict/src/tle-tools.c000066400000000000000000000104221427377236300155510ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Parts are Copyright John A. Magliacane, KD2BD 1991-2003 (indicated below) Authors: Alexandru Csete John A. Magliacane, KD2BD. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "sgpsdp/sgp4sdp4.h" #include "sat-log.h" #ifdef HAVE_CONFIG_H # include #endif #include "tle-tools.h" /** \brief Convert NASA 2-line orbital element set to tle_t structure. * \param line1 The first line containing the satellite name. * \param line2 The second line. * \param line3 The third line. * \param checksum Flag indicating whether to perform checksum check. * \param tle Pointer to a tle_t structure where the TLE data will be put. * \return TLE_CONV_SUCCESS if the conversion is successful or TLE_CONV_ERROR * if an error has occurred during the conversion. * * This function converts NASA 2-line orbital element data (as read from a tle * file) into a tle_t structure, which is used all over in gpredict. Note that * a standard 2-line data actually consists of three lines, the extra line * containing the name of the satellite in a field of 25 characters. * * The flag checksum can be used to control whether verification of the checksum * should be fperformed or not. If the flag is TRUE and the checksum is invalid, * an error message is logged and the function returns TLE_CONV_ERROR. The caller * can still ignore the error code since the tle structure will be populated; * however, the data may be nonsense. */ gint twoline2tle (gchar *line1, gchar *line2, gchar *line3, gboolean checksum, tle_t *tle) { /* FIXME */ (void) checksum; /* avoid unused parameter compiler warning */ /* check function parameters */ if G_UNLIKELY((line1 == NULL) || (line2 == NULL) || (line3 == NULL)) { sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: NULL input data!"), __func__); return TLE_CONV_ERROR; } if G_UNLIKELY(tle == NULL) { sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: NULL output storage!"), __func__); return TLE_CONV_ERROR; } return TLE_CONV_SUCCESS; } /** \brief Convert internal tle_t structure to NASA 2-line oribital element set. * \param tle Pointer to the tle_t structure that holds the data to be * converted. * \param line1 Pointer to unallocated memory where the first line will be * stored. The pointer should be freed when no longer needed. * \param line2 Pointer to unallocated memory where the second line will be * stored. The pointer should be freed when no longer needed. * \param line3 Pointer to unallocated memory where the third line will be * stored. The pointer should be freed when no longer needed. * \return TLE_CONV_SUCCESS if conversion went OK, TLE_CONV_ERROR otherwise. * * \note An error message will be logged if an error occurs. */ gint tle2twoline (tle_t *tle, gchar *line1, gchar *line2, gchar *line3) { (void) tle; /* avoid unused parameter compiler warning */ (void) line1; /* avoid unused parameter compiler warning */ (void) line2; /* avoid unused parameter compiler warning */ (void) line3; /* avoid unused parameter compiler warning */ return TLE_CONV_SUCCESS; } gpredict/src/tle-tools.h000066400000000000000000000027241427377236300155640ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef TLE_TOOLS_H #define TLE_TOOLS_H 1 #include #include "sgpsdp/sgp4sdp4.h" //#include "gtk-sat-data.h" enum { TLE_CONV_SUCCESS = 0, TLE_CONV_ERROR }; gint twoline2tle (gchar *line1, gchar *line2, gchar *line3, gboolean checksum, tle_t *tle); gint tle2twoline (tle_t *tle, gchar *line1, gchar *line2, gchar *line3); #endif gpredict/src/tle-update.c000066400000000000000000001414231427377236300157010ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Copyright (C) 2009 Charles Suprin AA1VS. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include #include #include #ifdef HAVE_CONFIG_H #include #endif #ifdef WIN32 #include "win32-fetch.h" #else #include #endif #include "compat.h" #include "gpredict-utils.h" #include "sat-cfg.h" #include "sat-log.h" #include "sgpsdp/sgp4sdp4.h" #include "tle-update.h" /* private function prototypes */ #ifndef WIN32 static size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE * stream); #endif static gint read_fresh_tle(const gchar * dir, const gchar * fnam, GHashTable * data); static gboolean is_tle_file(const gchar * dir, const gchar * fnam); static void update_tle_in_file(const gchar * ldname, const gchar * fname, GHashTable * data, guint * sat_upd, guint * sat_ski, guint * sat_nod, guint * sat_tot); static guint add_new_sats(GHashTable * data); static gboolean is_computer_generated_name(gchar * satname); /** Free a new_tle_t structure. */ static void free_new_tle(gpointer data) { new_tle_t *tle; tle = (new_tle_t *) data; g_free(tle->satname); g_free(tle->line1); g_free(tle->line2); g_free(tle->srcfile); g_free(tle); } /** * Update TLE files from local files. * * @param dir Directory where files are located. * @param filter File filter, e.g. *.txt (not used at the moment!) * @param silent TRUE if function should execute without graphical status indicator. * @param label1 Activity label (can be NULL) * @param label2 Statistics label (can be NULL) * @param progress Pointer to progress indicator. * @param init_prgs Initial value of progress indicator, e.g 0.5 if we are updating * from network. * * This function is used to update the TLE data from local files. */ void tle_update_from_files(const gchar * dir, const gchar * filter, gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2) { static GMutex tle_file_in_progress; GHashTable *data; /* hash table with fresh TLE data */ GDir *cache_dir; /* directory to scan fresh TLE */ GDir *loc_dir; /* directory for gpredict TLE files */ GError *err = NULL; gchar *text; gchar *ldname; gchar *userconfdir; const gchar *fnam; guint num = 0; guint updated, updated_tmp; guint skipped, skipped_tmp; guint nodata, nodata_tmp; guint newsats = 0; guint total, total_tmp; gdouble fraction = 0.0; gdouble start = 0.0; (void)filter; if (g_mutex_trylock(&tle_file_in_progress) == FALSE) { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: A TLE update process is already running. Aborting."), __func__); return; } /* create hash table */ data = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, free_new_tle); /* open directory and read files one by one */ cache_dir = g_dir_open(dir, 0, &err); if (err != NULL) { /* send an error message */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error opening directory %s (%s)"), __func__, dir, err->message); /* insert error message into the status string, too */ if (!silent && (label1 != NULL)) { text = g_strdup_printf(_("ERROR opening directory %s\n%s"), dir, err->message); gtk_label_set_markup(GTK_LABEL(label1), text); g_free(text); } g_clear_error(&err); err = NULL; } else { /* scan directory for tle files */ while ((fnam = g_dir_read_name(cache_dir)) != NULL) { /* check that we got a TLE file */ if (is_tle_file(dir, fnam)) { /* status message */ if (!silent && (label1 != NULL)) { text = g_strdup_printf(_("Reading data from %s"), fnam); gtk_label_set_text(GTK_LABEL(label1), text); g_free(text); /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); /* give user a chance to follow progress */ g_usleep(G_USEC_PER_SEC / 100); } /* now, do read the fresh data */ num = read_fresh_tle(dir, fnam, data); } else { num = 0; } if (num < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: No valid TLE data found in %s"), __func__, fnam); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Read %d sats from %s into memory"), __func__, num, fnam); } } /* close directory since we don't need it anymore */ g_dir_close(cache_dir); /* now we load each .sat file and update if we have new data */ userconfdir = get_user_conf_dir(); ldname = g_strconcat(userconfdir, G_DIR_SEPARATOR_S, "satdata", NULL); g_free(userconfdir); /* open directory and read files one by one */ loc_dir = g_dir_open(ldname, 0, &err); if (err != NULL) { /* send an error message */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error opening directory %s (%s)"), __func__, dir, err->message); /* insert error message into the status string, too */ if (!silent && (label1 != NULL)) { text = g_strdup_printf(_("ERROR opening directory %s\n%s"), dir, err->message); gtk_label_set_markup(GTK_LABEL(label1), text); g_free(text); } g_clear_error(&err); err = NULL; } else { /* clear statistics */ updated = 0; skipped = 0; nodata = 0; total = 0; /* get initial value of progress indicator */ if (progress != NULL) start = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(progress)); /* This is insane but I don't know how else to count the number of sats */ num = 0; while ((fnam = g_dir_read_name(loc_dir)) != NULL) { /* only consider .sat files */ if (g_str_has_suffix(fnam, ".sat")) { num++; } } g_dir_rewind(loc_dir); /* update TLE files one by one */ while ((fnam = g_dir_read_name(loc_dir)) != NULL) { /* only consider .sat files */ if (g_str_has_suffix(fnam, ".sat")) { /* clear stat bufs */ updated_tmp = 0; skipped_tmp = 0; nodata_tmp = 0; total_tmp = 0; /* update TLE data in this file */ update_tle_in_file(ldname, fnam, data, &updated_tmp, &skipped_tmp, &nodata_tmp, &total_tmp); /* update statistics */ updated += updated_tmp; skipped += skipped_tmp; nodata += nodata_tmp; total = updated + skipped + nodata; if (!silent) { if (label1 != NULL) { gtk_label_set_text(GTK_LABEL(label1), _("Updating data...")); } if (label2 != NULL) { text = g_strdup_printf(_ ("Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n"), updated, skipped, nodata); gtk_label_set_text(GTK_LABEL(label2), text); g_free(text); } if (progress != NULL) { /* two different calculations for completeness depending on whether we are adding new satellites or not. */ if (sat_cfg_get_bool(SAT_CFG_BOOL_TLE_ADD_NEW)) { /* In this case we are possibly processing more than num satellites How many more? We do not know yet. Worst case is g_hash_table_size more. As we update skipped and updated we can reduce the denominator count as those are in both pools (files and hash table). When we have processed all the files, updated and skipped are completely correct and the progress is correct. It may be correct sooner if the missed satellites are the last files to process. Until then, if we eliminate the ones that are updated and skipped from being double counted, our progress will shown will always be less or equal to our true progress since the denominator will be larger than is correct. Advantages to this are that the progress bar does not stall close to finished when there are a large number of new satellites. */ fraction = start + (1.0 - start) * ((gdouble) total) / ((gdouble) num + g_hash_table_size(data) - updated - skipped); } else { /* here we only process satellites we have have files for so divide by num */ fraction = start + (1.0 - start) * ((gdouble) total) / ((gdouble) num); } gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR (progress), fraction); } /* update the gui only every so often to speed up the process */ /* 47 was selected empirically to balance the update looking smooth but not take too much time. */ /* it also tumbles all digits in the numbers so that there is no obvious pattern. */ /* on a developer machine this improved an update from 5 minutes to under 20 seconds. */ if (total % 47 == 0) { /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); /* give user a chance to follow progress */ g_usleep(G_USEC_PER_SEC / 1000); } } } } /* force gui update */ while (g_main_context_iteration(NULL, FALSE)); /* close directory handle */ g_dir_close(loc_dir); /* see if we have any new sats that need to be added */ if (sat_cfg_get_bool(SAT_CFG_BOOL_TLE_ADD_NEW)) { newsats = add_new_sats(data); if (!silent && (label2 != NULL)) { text = g_strdup_printf(_("Satellites updated:\t %d\n" "Satellites skipped:\t %d\n" "Missing Satellites:\t %d\n" "New Satellites:\t\t %d"), updated, skipped, nodata, newsats); gtk_label_set_text(GTK_LABEL(label2), text); g_free(text); } sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Added %d new satellites to local database"), __func__, newsats); } /* store time of update if we have updated something */ if ((updated > 0) || (newsats > 0)) { gint64 now; now = g_get_real_time() / G_USEC_PER_SEC; sat_cfg_set_int(SAT_CFG_INT_TLE_LAST_UPDATE, now); } } g_free(ldname); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: TLE elements updated."), __func__); } /* destroy hash tables */ g_hash_table_destroy(data); g_mutex_unlock(&tle_file_in_progress); } /** Check if satellite is new, if so, add it to local database */ static void check_and_add_sat(gpointer key, gpointer value, gpointer user_data) { new_tle_t *ntle = (new_tle_t *) value; guint *num = user_data; GKeyFile *satdata; gchar *cfgfile; (void)key; /* check if sat is new */ if (!ntle->isnew) return; /* create config data */ satdata = g_key_file_new(); /* store data */ g_key_file_set_string(satdata, "Satellite", "VERSION", "1.1"); g_key_file_set_string(satdata, "Satellite", "NAME", ntle->satname); g_key_file_set_string(satdata, "Satellite", "NICKNAME", ntle->satname); g_key_file_set_string(satdata, "Satellite", "TLE1", ntle->line1); g_key_file_set_string(satdata, "Satellite", "TLE2", ntle->line2); g_key_file_set_integer(satdata, "Satellite", "STATUS", ntle->status); /* create an I/O channel and store data */ cfgfile = sat_file_name_from_catnum(ntle->catnum); if (!gpredict_save_key_file(satdata, cfgfile)) *num += 1; /* clean up memory */ g_free(cfgfile); g_key_file_free(satdata); } /** Add new satellites to local database */ static guint add_new_sats(GHashTable * data) { guint num = 0; g_hash_table_foreach(data, check_and_add_sat, &num); return num; } /** * Update TLE files from network. * * @param silent TRUE if function should execute without graphical status indicator. * @param progress Pointer to a GtkProgressBar progress indicator (can be NULL) * @param label1 GtkLabel for activity string. * @param label2 GtkLabel for statistics string. */ void tle_update_from_network(gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2) { static GMutex tle_in_progress; gchar *proxy = NULL; gchar *files_tmp; gchar **files; guint numfiles, i; gchar *curfile; gchar *locfile; gchar *userconfdir; #ifdef WIN32 int res; #else CURL *curl; CURLcode res; #endif gdouble fraction, start = 0; FILE *outfile; GDir *dir; gchar *cache; const gchar *fname; gchar *text; GError *err = NULL; guint success = 0; /* no. of successful downloads */ /* bail out if we are already in an update process */ if (g_mutex_trylock(&tle_in_progress) == FALSE) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: TLE update is already running. Aborting."), __func__); return; } /* get server, proxy, and list of files */ proxy = sat_cfg_get_str(SAT_CFG_STR_TLE_PROXY); /* avoid empty proxy string (bug in <2.2) */ if (proxy != NULL && strlen(proxy) == 0) { sat_cfg_reset_str(SAT_CFG_STR_TLE_PROXY); g_free(proxy); proxy = NULL; } files_tmp = sat_cfg_get_str(SAT_CFG_STR_TLE_URLS); files = g_strsplit(files_tmp, ";", 0); numfiles = g_strv_length(files); if (numfiles < 1) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: No files to fetch from network."), __func__); /* set activity string, so user knows why nothing happens */ if (!silent && (label1 != NULL)) { gtk_label_set_text(GTK_LABEL(label1), _("No files to fetch from network")); } } else { /* initialise progress bar */ if (!silent && (progress != NULL)) start = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(progress)); #ifndef WIN32 /* initialise curl */ curl = curl_easy_init(); if (proxy != NULL) curl_easy_setopt(curl, CURLOPT_PROXY, proxy); curl_easy_setopt(curl, CURLOPT_USERAGENT, "gpredict/curl"); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); #endif /* get files */ for (i = 0; i < numfiles; i++) { /* set URL */ curfile = g_strdup(files[i]); #ifndef WIN32 curl_easy_setopt(curl, CURLOPT_URL, curfile); #endif /* set activity message */ if (!silent && (label1 != NULL)) { text = g_strdup_printf(_("Fetching %s"), files[i]); gtk_label_set_text(GTK_LABEL(label1), text); g_free(text); /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); } /* create local cache file ~/.config/Gpredict/satdata/cache/file-%d.tle */ userconfdir = get_user_conf_dir(); locfile = g_strdup_printf("%s%ssatdata%scache%sfile-%d.tle", userconfdir, G_DIR_SEPARATOR_S, G_DIR_SEPARATOR_S, G_DIR_SEPARATOR_S, i); outfile = g_fopen(locfile, "wb"); if (outfile != NULL) { #ifdef WIN32 res = win32_fetch(curfile, outfile, proxy, "gpredict/win32"); if (res != 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%x)"), __func__, curfile, res); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, curfile); success++; } #else curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); /* get file */ res = curl_easy_perform(curl); if (res != CURLE_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%s)"), __func__, curfile, curl_easy_strerror(res)); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, curfile); success++; } #endif fclose(outfile); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to open %s preventing update"), __func__, locfile); } /* update progress indicator */ if (!silent && (progress != NULL)) { /* complete download corresponds to 50% */ fraction = start + (0.5 - start) * i / (1.0 * numfiles); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction); /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); } g_free(userconfdir); g_free(curfile); g_free(locfile); } #ifndef WIN32 curl_easy_cleanup(curl); #endif /* continue update if we have fetched at least one file */ if (success > 0) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Fetched %d files from network; updating..."), __func__, success); /* call update_from_files */ cache = sat_file_name("cache"); tle_update_from_files(cache, NULL, silent, progress, label1, label2); g_free(cache); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Could not fetch TLE files from network. Aborting."), __func__); } } /* clear cache and memory */ g_strfreev(files); g_free(files_tmp); if (proxy != NULL) g_free(proxy); /* open cache */ cache = sat_file_name("cache"); dir = g_dir_open(cache, 0, &err); if (err != NULL) { /* send an error message */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error opening %s (%s)"), __func__, dir, err->message); g_clear_error(&err); } else { /* delete files in cache one by one */ while ((fname = g_dir_read_name(dir)) != NULL) { locfile = g_strconcat(cache, G_DIR_SEPARATOR_S, fname, NULL); if (g_remove(locfile)) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to remove %s"), __func__, locfile); g_free(locfile); } /* close cache */ g_dir_close(dir); } g_free(cache); g_mutex_unlock(&tle_in_progress); } #ifndef WIN32 /** * Write TLE data block to file. * * @param ptr Pointer to the data block to be written. * @param size Size of data block. * @param nmemb Size multiplier? * @param stream Pointer to the file handle. * @return The number of bytes actually written. * * This function writes the received data to the file pointed to by stream. * It is used as write callback by to curl exec function. */ static size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE * stream) { /*** FIXME: TBC whether this works in wintendo */ return fwrite(ptr, size, nmemb, stream); } #endif /** * Check whether file is TLE file. * @param dir The directory. * @param fnam The file name. * * This function checks whether the file with path dir/fnam is a potential * TLE file. Checks performed: * - It is a real file * - suffix is .txt or .tle */ static gboolean is_tle_file(const gchar * dir, const gchar * fnam) { gchar *path; gchar *fname_lower; gboolean fileIsOk = FALSE; path = g_strconcat(dir, G_DIR_SEPARATOR_S, fnam, NULL); fname_lower = g_ascii_strdown(fnam, -1); if (g_file_test(path, G_FILE_TEST_IS_REGULAR) && (g_str_has_suffix(fname_lower, ".tle") || g_str_has_suffix(fname_lower, ".txt"))) { fileIsOk = TRUE; } g_free(fname_lower); g_free(path); return fileIsOk; } /** * Read fresh TLE data into hash table. * * @param dir The directory to read from. * @param fnam The name of the file to read from. * @param fresh_data Hash table where the data should be stored. * @return The number of satellites successfully read. * * This function will read fresh TLE data from local files into memory. * If there is a saetllite category (.cat file) with the same name as the * input file it will also update the satellites in that category. */ static gint read_fresh_tle(const gchar * dir, const gchar * fnam, GHashTable * data) { new_tle_t *ntle; tle_t tle; gchar *path; gchar tle_str[3][80]; gchar tle_working[3][80]; gchar linetmp[80]; guint linesneeded = 3; gchar catstr[6]; gchar idstr[7] = "\0\0\0\0\0\0\0", idyearstr[3]; gchar *b; FILE *fp; gint retcode = 0; guint catnr, i, idyear; guint *key = NULL; /* category sync related */ gchar *catname, *catpath, *buff, **buffv; FILE *catfile; gchar category[80]; gboolean catsync = FALSE; /* whether .cat file should be synced. NB: not effective since 1.4 */ /* Normal cases to check 1. 3 line tle file as in amateur.txt from celestrak 2. 2 line tle file as in .... from celestrak corner cases to check 1. 3 line tle with something at the end. (nasa.all from amsat) 2. 2 line tle with only one in the file 3. 2 line tle file reading the last one. */ path = g_strconcat(dir, G_DIR_SEPARATOR_S, fnam, NULL); fp = g_fopen(path, "r"); if (fp != NULL) { /* Prepare .cat file for sync while we read data */ buffv = g_strsplit(fnam, ".", 0); catname = g_strconcat(buffv[0], ".cat", NULL); g_strfreev(buffv); catpath = sat_file_name(catname); g_free(catname); /* read category name for catfile */ catfile = g_fopen(catpath, "r"); if (catfile != NULL) { b = fgets(category, 80, catfile); if (b == NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: There is no category in %s"), __FILE__, __func__, catpath); } fclose(catfile); catsync = TRUE; } else { /* There is no category with this name (could be update from custom file) */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s:%s: There is no category called %s"), __FILE__, __func__, fnam); } /* reopen a new catfile and write category name */ if (catsync) { catfile = g_fopen(catpath, "w"); if (catfile != NULL) { fputs(category, catfile); } else { catsync = FALSE; sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%s: Could not reopen .cat file while reading TLE from %s"), __FILE__, __func__, fnam); } /* .cat file now contains the category name; satellite catnums will be added during update in the while loop */ } /* set b to non-null as a flag */ b = path; /* read lines from tle file */ while (fgets(linetmp, 80, fp)) { /*read in the number of lines needed to potentially get to a new tle */ switch (linesneeded) { case 3: strncpy(tle_working[0], linetmp, 80); tle_working[0][79] = 0; // make coverity happy /* b is being used a flag here if b==NULL then we only have one line read in and there is no way we have a full tle as there is only one line in the buffer. A TLE must be two or three lines. */ b = fgets(tle_working[1], 80, fp); if (b == NULL) { /* make sure there is no junk in tle_working[1] */ tle_working[1][0] = '\0'; break; } /* make sure there is no junk in tle_working[2] */ if (fgets(tle_working[2], 80, fp) == NULL) { tle_working[2][0] = '\0'; } break; case 2: strncpy(tle_working[0], tle_working[2], 80); strncpy(tle_working[1], linetmp, 80); /* make sure there is no junk in tle_working[2] */ if (fgets(tle_working[2], 80, fp) == NULL) { tle_working[2][0] = '\0'; } break; case 1: strncpy(tle_working[0], tle_working[1], 80); strncpy(tle_working[1], tle_working[2], 80); strncpy(tle_working[2], linetmp, 80); tle_working[2][79] = 0; // make coverity happy break; default: sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s:%s: Something wrote linesneeded to an illegal value %d"), __FILE__, __func__, linesneeded); break; } /* b can only be null if there is only one line in the buffer */ /* a tle must be two or three */ if (b == NULL) { break; } /* remove leading and trailing whitespace to be more forgiving */ g_strstrip(tle_working[0]); g_strstrip(tle_working[1]); g_strstrip(tle_working[2]); /* there are three possibilities at this point */ /* first is that line 0 is a name and normal text for three line element and that lines 1 and 2 are the corresponding tle */ /* second is that line 0 and line 1 are a tle for a bare tle */ /* third is that neither of these is true and we are consuming either text at the top of the file or a text file that happens to be in the update directory */ if ((tle_working[1][0] == '1') && (tle_working[2][0] == '2') && Checksum_Good(tle_working[1]) && Checksum_Good(tle_working[2])) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Processing a three line TLE"), __FILE__, __func__); /* it appears that the first line may be a name followed by a tle */ strncpy(tle_str[0], tle_working[0], 80); tle_str[0][79] = 0; // make coverity happy strncpy(tle_str[1], tle_working[1], 80); strncpy(tle_str[2], tle_working[2], 80); /* we consumed three lines so we need three lines */ linesneeded = 3; } else if ((tle_working[0][0] == '1') && (tle_working[1][0] == '2') && Checksum_Good(tle_working[0]) && Checksum_Good(tle_working[1])) { sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: Processing a bare two line TLE"), __FILE__, __func__); /* first line appears to belong to the start of bare TLE */ /* put in a dummy name of form yyyy-nnaa base on international id */ /* this special form will be overwritten if a three line tle ever has another name */ strncpy(idstr, &tle_working[0][11], 6); g_strstrip(idstr); strncpy(idyearstr, &tle_working[0][9], 2); idstr[6] = '\0'; idyearstr[2] = '\0'; idyear = g_ascii_strtod(idyearstr, NULL); /* there is a two digit year field that started around sputnik */ if (idyear >= 57) idyear += 1900; else idyear += 2000; snprintf(tle_str[0], 79, "%d-%s", idyear, idstr); strncpy(tle_str[1], tle_working[0], 80); strncpy(tle_str[2], tle_working[1], 80); /* we consumed two lines so we need two lines */ linesneeded = 2; } else { /* we appear to have junk read another line in and do nothing else */ linesneeded = 1; /* skip back to beginning of loop */ continue; } tle_str[1][69] = '\0'; tle_str[2][69] = '\0'; /* copy catnum and convert to integer */ for (i = 2; i < 7; i++) { catstr[i - 2] = tle_str[1][i]; } catstr[5] = '\0'; catnr = (guint) g_ascii_strtod(catstr, NULL); if (Get_Next_Tle_Set(tle_str, &tle) != 1) { /* TLE data not good */ sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Invalid data for %d"), __FILE__, __func__, catnr); } else { if (catsync) { /* store catalog number in catfile */ buff = g_strdup_printf("%d\n", catnr); fputs(buff, catfile); g_free(buff); } /* add data to hash table */ key = g_try_new0(guint, 1); *key = catnr; ntle = g_hash_table_lookup(data, key); /* check if satellite already in hash table */ if (ntle == NULL) { /* create new_tle structure */ ntle = g_try_new(new_tle_t, 1); ntle->catnum = catnr; ntle->epoch = tle.epoch; ntle->status = tle.status; ntle->satname = g_strdup(tle.sat_name); ntle->line1 = g_strdup(tle_str[1]); ntle->line2 = g_strdup(tle_str[2]); ntle->srcfile = g_strdup(fnam); ntle->isnew = TRUE; /* flag will be reset when using data */ g_hash_table_insert(data, key, ntle); retcode++; } else { /* satellite is already in hash */ /* apply various merge routines */ /* time merge */ if (ntle->epoch == tle.epoch) { /* if satellite epoch has the same time, merge status as appropriate */ if (ntle->status != tle.status) { /* log if there is something funny about the data coming in */ sat_log_log(SAT_LOG_LEVEL_WARN, _ ("%s:%s: Two different statuses for %d (%s) at the same time."), __FILE__, __func__, ntle->catnum, ntle->satname); if (tle.status != OP_STAT_UNKNOWN) ntle->status = tle.status; } } else if (ntle->epoch < tle.epoch) { /* if the satellite in the hash is older than the one just loaded, copy the values over. */ ntle->catnum = catnr; ntle->epoch = tle.epoch; ntle->status = tle.status; g_free(ntle->line1); ntle->line1 = g_strdup(tle_str[1]); g_free(ntle->line2); ntle->line2 = g_strdup(tle_str[2]); g_free(ntle->srcfile); ntle->srcfile = g_strdup(fnam); ntle->isnew = TRUE; /* flag will be reset when using data */ } /* merge based on name */ if (is_computer_generated_name(ntle->satname) && !is_computer_generated_name(tle_str[0])) { g_free(ntle->satname); ntle->satname = g_strdup(tle.sat_name); } /* free the key since we do not commit it to the cache */ g_free(key); } } } if (catsync) { /* close category file */ fclose(catfile); } g_free(catpath); /* close input TLE file */ fclose(fp); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s:%s: Failed to open %s"), __FILE__, __func__, path); } g_free(path); return retcode; } /** * Update TLE data in a file. * * @param ldname Directory name for gpredict tle files. * @param fname The name of the TLE file. * @param data The hash table containing the fresh data. * @param sat_upd OUT: number of sats updated. * @param sat_ski OUT: number of sats skipped. * @param sat_nod OUT: number of sats for which no data found * @param sat_tot OUT: total number of sats * * For each satellite in the TLE file ldname/fnam, this function * checks whether there is any newer data available in the hash table. * If yes, the function writes the fresh data to temp_file, if no, the * old data is copied to temp_file. * When all sats have been copied ldname/fnam is deleted and temp_file * is renamed to ldname/fnam. */ static void update_tle_in_file(const gchar * ldname, const gchar * fname, GHashTable * data, guint * sat_upd, guint * sat_ski, guint * sat_nod, guint * sat_tot) { gchar *path; guint updated = 0; /* number of updated sats */ guint nodata = 0; /* no sats for which no fresh data available */ guint skipped = 0; /* no. sats where fresh data is older */ guint total = 0; /* total no. of sats in gpredict tle file */ gchar **catstr; guint catnr; guint *key = NULL; tle_t tle; new_tle_t *ntle; op_stat_t status; GError *error = NULL; GKeyFile *satdata; gchar *tlestr1, *tlestr2, *rawtle, *satname, *satnickname; gboolean updateddata; /* get catalog number for this satellite */ catstr = g_strsplit(fname, ".sat", 0); catnr = (guint) g_ascii_strtod(catstr[0], NULL); /* see if we have new data for this satellite */ key = g_try_new0(guint, 1); *key = catnr; ntle = (new_tle_t *) g_hash_table_lookup(data, key); g_free(key); if (ntle == NULL) { /* no new data found for this sat => obsolete */ nodata++; /* check if obsolete sats should be deleted */ /**** FIXME: This is dangereous, so we omit it */ sat_log_log(SAT_LOG_LEVEL_INFO, _ ("%s: No new TLE data found for %d. Satellite might be obsolete."), __func__, catnr); } else { /* open input file (file containing old tle) */ path = g_strconcat(ldname, G_DIR_SEPARATOR_S, fname, NULL); satdata = g_key_file_new(); if (!g_key_file_load_from_file (satdata, path, G_KEY_FILE_KEEP_COMMENTS, &error)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error loading %s (%s)"), __func__, path, error->message); g_clear_error(&error); skipped++; } else { /* This satellite is not new */ ntle->isnew = FALSE; /* get TLE data */ tlestr1 = g_key_file_get_string(satdata, "Satellite", "TLE1", NULL); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading TLE line 2 from %s (%s)"), __func__, path, error->message); g_clear_error(&error); } tlestr2 = g_key_file_get_string(satdata, "Satellite", "TLE2", NULL); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading TLE line 2 from %s (%s)"), __func__, path, error->message); g_clear_error(&error); } /* get name data */ satname = g_key_file_get_string(satdata, "Satellite", "NAME", NULL); satnickname = g_key_file_get_string(satdata, "Satellite", "NICKNAME", NULL); /* get status data */ if (g_key_file_has_key(satdata, "Satellite", "STATUS", NULL)) { status = g_key_file_get_integer(satdata, "Satellite", "STATUS", NULL); } else { status = OP_STAT_UNKNOWN; } rawtle = g_strconcat(tlestr1, tlestr2, NULL); if (!Good_Elements(rawtle)) { sat_log_log(SAT_LOG_LEVEL_WARN, _("%s: Current TLE data for %d appears to be bad"), __func__, catnr); /* set epoch to zero so it gets overwritten */ tle.epoch = 0; } else { Convert_Satellite_Data(rawtle, &tle); } g_free(tlestr1); g_free(tlestr2); g_free(rawtle); /* Initialize flag for update */ updateddata = FALSE; if (ntle->satname != NULL) { /* when a satellite first appears in the elements it is sometimes referred to by the international designator which is awkward after it is given a name */ if (!is_computer_generated_name(ntle->satname)) { if (is_computer_generated_name(satname)) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Data for %d updated for name."), __func__, catnr); g_key_file_set_string(satdata, "Satellite", "NAME", ntle->satname); updateddata = TRUE; } /* FIXME what to do about nickname Possibilities: */ /* clobber with name */ /* clobber if nickname and name were same before */ /* clobber if international designator */ if (is_computer_generated_name(satnickname)) { sat_log_log(SAT_LOG_LEVEL_INFO, _ ("%s: Data for %d updated for nickname."), __func__, catnr); g_key_file_set_string(satdata, "Satellite", "NICKNAME", ntle->satname); updateddata = TRUE; } } } g_free(satname); g_free(satnickname); if (tle.epoch < ntle->epoch) { /* new data is newer than what we already have */ /* store new data */ sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Data for %d updated for tle."), __func__, catnr); g_key_file_set_string(satdata, "Satellite", "TLE1", ntle->line1); g_key_file_set_string(satdata, "Satellite", "TLE2", ntle->line2); g_key_file_set_integer(satdata, "Satellite", "STATUS", ntle->status); updateddata = TRUE; } else if (tle.epoch == ntle->epoch) { if ((status != ntle->status) && (ntle->status != OP_STAT_UNKNOWN)) { sat_log_log(SAT_LOG_LEVEL_INFO, _ ("%s: Data for %d updated for operational status."), __func__, catnr); g_key_file_set_integer(satdata, "Satellite", "STATUS", ntle->status); updateddata = TRUE; } } if (updateddata == TRUE) { if (gpredict_save_key_file(satdata, path)) skipped++; else updated++; } else { skipped++; } } g_key_file_free(satdata); g_free(path); } g_strfreev(catstr); /* update out parameters */ *sat_upd = updated; *sat_ski = skipped; *sat_nod = nodata; *sat_tot = total; } const gchar *freq_to_str[TLE_AUTO_UPDATE_NUM] = { N_("Never"), N_("Monthly"), N_("Weekly"), N_("Daily") }; const gchar *tle_update_freq_to_str(tle_auto_upd_freq_t freq) { if ((freq <= TLE_AUTO_UPDATE_NEVER) || (freq >= TLE_AUTO_UPDATE_NUM)) freq = TLE_AUTO_UPDATE_NEVER; return _(freq_to_str[freq]); } /** * Determine if name is generic. * * @param satname The satellite name that might be old. * * This function determines if the satellite name is generic. Examples * of this are the names YYYY-NNNAAA international ID names used by * Celestrak. Also space-track.org will give items names of OBJECT A as * well until the name is advertised. */ static gboolean is_computer_generated_name(gchar * satname) { /* celestrak generic satellite name */ if (g_regex_match_simple("\\d{4,}-\\d{3,}", satname, 0, 0)) { return (TRUE); } /* space-track generic satellite name */ if (g_regex_match_simple("OBJECT", satname, 0, 0)) { return (TRUE); } return (FALSE); } gpredict/src/tle-update.h000066400000000000000000000061251427377236300157050ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef TLE_UPDATE_H #define TLE_UPDATE_H 1 #include #include "sgpsdp/sgp4sdp4.h" /** TLE format type flags. */ typedef enum { TLE_TYPE_NASA = 0 /*!< NASA two-line format (3 lines with name). */ } tle_type_t; /** TLE auto update frequency. */ typedef enum { TLE_AUTO_UPDATE_NEVER = 0, /*!< No auto-update, just warn after one week. */ TLE_AUTO_UPDATE_MONTHLY = 1, TLE_AUTO_UPDATE_WEEKLY = 2, TLE_AUTO_UPDATE_DAILY = 3, TLE_AUTO_UPDATE_NUM } tle_auto_upd_freq_t; /** Action to perform when it's time to update TLE. */ typedef enum { TLE_AUTO_UPDATE_NOACT = 0, /*!< No action (not a valid option). */ TLE_AUTO_UPDATE_NOTIFY = 1, /*!< Notify user. */ TLE_AUTO_UPDATE_GOAHEAD = 2 /*!< Perform unattended update. */ } tle_auto_upd_action_t; /** Data structure to hold a TLE set. */ typedef struct { guint catnum; /*!< Catalog number. */ gdouble epoch; /*!< Epoch. */ gchar *satname; /*!< Satellite name. */ gchar *line1; /*!< Line 1. */ gchar *line2; /*!< Line 2. */ gchar *srcfile; /*!< The file where TLE comes from (needed for cat) */ gboolean isnew; /*!< Flag indicating whether sat is new. */ op_stat_t status; /*!< Enum indicating current satellite status. */ } new_tle_t; /** Data structure to hold local TLE data. */ typedef struct { tle_t tle; /*!< TLE data. */ gchar *filename; /*!< File name where the TLE data is from */ } loc_tle_t; void tle_update_from_files(const gchar * dir, const gchar * filter, gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2); void tle_update_from_network(gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2); const gchar *tle_update_freq_to_str(tle_auto_upd_freq_t freq); #endif gpredict/src/trsp-conf.c000066400000000000000000000215711427377236300155510ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2016 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #include #include #include "compat.h" #include "gpredict-utils.h" #include "sat-log.h" #include "trsp-conf.h" #define KEY_UP_LOW "UP_LOW" #define KEY_UP_HIGH "UP_HIGH" #define KEY_DOWN_LOW "DOWN_LOW" #define KEY_DOWN_HIGH "DOWN_HIGH" #define KEY_INVERT "INVERT" #define KEY_MODE "MODE" #define KEY_BAUD "BAUD" static void check_trsp_freq(trsp_t * trsp) { /* ensure we don't have any negative frequencies */ if (trsp->downlow < 0) trsp->downlow = 0; if (trsp->downhigh < 0) trsp->downhigh = 0; if (trsp->uplow < 0) trsp->uplow = 0; if (trsp->uphigh < 0) trsp->uphigh = 0; if (trsp->downlow == 0 && trsp->downhigh > 0) trsp->downlow = trsp->downhigh; else if (trsp->downhigh == 0 && trsp->downlow > 0) trsp->downhigh = trsp->downlow; if (trsp->uplow == 0 && trsp->uphigh > 0) trsp->uplow = trsp->uphigh; else if (trsp->uphigh == 0 && trsp->uplow > 0) trsp->uphigh = trsp->uplow; } /** * Read transponder data file. * * @param catnum The catalog number of the satellite to read transponders for. * @return The new transponder list. */ GSList *read_transponders(guint catnum) { GSList *trsplist = NULL; trsp_t *trsp; GKeyFile *cfg = NULL; GError *error = NULL; gchar *name, *fname; gchar **groups; gsize numgrp, i; #define INFO_MSG N_("%s: Could not read %s from %s:'%s'. Using default.") name = g_strdup_printf("%d.trsp", catnum); fname = trsp_file_name(name); cfg = g_key_file_new(); if (!g_key_file_load_from_file (cfg, fname, G_KEY_FILE_KEEP_COMMENTS, &error)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error reading %s: %s"), __FILE__, fname, error->message); g_clear_error(&error); g_key_file_free(cfg); return NULL; } /* get list of transponders */ groups = g_key_file_get_groups(cfg, &numgrp); /* load each transponder */ if (numgrp == 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: %s contains 0 transponders"), __func__, fname); goto done; } for (i = 0; i < numgrp; i++) { trsp = g_try_new(trsp_t, 1); if (G_UNLIKELY(trsp == NULL)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to allocate memory for trsp data"), __func__); goto done; } /* read transponder data */ trsp->name = g_strdup(groups[i]); trsp->uplow = g_key_file_get_int64(cfg, groups[i], KEY_UP_LOW, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_UP_LOW, name, groups[i]); g_clear_error(&error); } trsp->uphigh = g_key_file_get_int64(cfg, groups[i], KEY_UP_HIGH, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_UP_HIGH, name, groups[i]); g_clear_error(&error); } trsp->downlow = g_key_file_get_int64(cfg, groups[i], KEY_DOWN_LOW, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_DOWN_LOW, name, groups[i]); g_clear_error(&error); } trsp->downhigh = g_key_file_get_int64(cfg, groups[i], KEY_DOWN_HIGH, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_DOWN_HIGH, name, groups[i]); g_clear_error(&error); } /* check data to ensure consistency */ check_trsp_freq(trsp); trsp->invert = g_key_file_get_boolean(cfg, groups[i], KEY_INVERT, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_INVERT, name, groups[i]); g_clear_error(&error); trsp->invert = FALSE; } trsp->mode = g_key_file_get_string(cfg, groups[i], KEY_MODE, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_MODE, name, groups[i]); g_clear_error(&error); } trsp->baud = g_key_file_get_double(cfg, groups[i], KEY_BAUD, &error); if (error != NULL) { sat_log_log(SAT_LOG_LEVEL_INFO, INFO_MSG, __func__, KEY_BAUD, name, groups[i]); g_clear_error(&error); } /* add transponder to list */ trsplist = g_slist_append(trsplist, trsp); } done: g_strfreev(groups); g_key_file_free(cfg); g_free(name); g_free(fname); return trsplist; } /** * Write transponder list to file. * * @param catnum The catalog number of the satellite. * @param trsplist Pointer to a GSList of trsp_t structures. * * The transponder list is written to a file called "catnum.trsp". If the file * already exists, its contents will be deleted. */ void write_transponders(guint catnum, GSList * trsp_list) { trsp_t *trsp; GKeyFile *trsp_data = NULL; gchar *file_name; gchar *trsp_file; gint i, n, trsp_written; file_name = g_strdup_printf("%d.trsp", catnum); trsp_file = trsp_file_name(file_name); trsp_data = g_key_file_new(); trsp_written = 0; n = g_slist_length(trsp_list); for (i = 0; i < n; i++) { trsp = (trsp_t *) g_slist_nth_data(trsp_list, i); if (!trsp->name) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Skipping transponder at index %d (no name)"), __func__, i); continue; } if (trsp->uplow > 0) g_key_file_set_int64(trsp_data, trsp->name, KEY_UP_LOW, trsp->uplow); if (trsp->uphigh > 0) g_key_file_set_int64(trsp_data, trsp->name, KEY_UP_HIGH, trsp->uphigh); if (trsp->downlow > 0) g_key_file_set_int64(trsp_data, trsp->name, KEY_DOWN_LOW, trsp->downlow); if (trsp->downhigh > 0) g_key_file_set_int64(trsp_data, trsp->name, KEY_DOWN_HIGH, trsp->downhigh); if (trsp->baud > 0.0) g_key_file_set_double(trsp_data, trsp->name, KEY_BAUD, trsp->baud); if (trsp->invert) g_key_file_set_boolean(trsp_data, trsp->name, KEY_INVERT, TRUE); if (trsp->mode) g_key_file_set_string(trsp_data, trsp->name, KEY_MODE, trsp->name); } if (gpredict_save_key_file(trsp_data, trsp_file)) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error writing transponder data to %s"), __func__, file_name); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("Wrote %d transmponders to %s"), trsp_written, trsp_file_name); } g_key_file_free(trsp_data); g_free(file_name); g_free(trsp_file); } /** * Free transponder list. * * @param trsplist Pointer to a GSList of trsp_t structures. */ void free_transponders(GSList * trsplist) { gint i, n; trsp_t *trsp; n = g_slist_length(trsplist); for (i = 0; i < n; i++) { trsp = (trsp_t *) g_slist_nth_data(trsplist, i); g_free(trsp->name); if (trsp->mode) g_free(trsp->mode); g_free(trsp); } g_slist_free(trsplist); trsplist = NULL; } gpredict/src/trsp-conf.h000066400000000000000000000037231427377236300155550ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2009 Alexandru Csete. Authors: Alexandru Csete Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef TRSP_CONF_H #define TRSP_CONF_H 1 #include /* NOTE For beacons uplow=uphigh=0 and downlow=downhigh */ typedef struct { gchar *name; /*!< The name of the transponder (same as config group) */ gint64 uplow; /*!< Lower limit of uplink. */ gint64 uphigh; /*!< Upper limit of uplink. */ gint64 downlow; /*!< Lower limit of downlink. */ gint64 downhigh; /*!< Upper limit of donlink. */ gdouble baud; /*!< Baud rate > */ gboolean invert; /*!< Flag indicating whether transponder is inverting. */ gchar *mode; /*!< Mode descriptor. */ } trsp_t; /* The actual data would then be a singly linked list with pointers to transponder_t structures */ GSList *read_transponders(guint catnum); void write_transponders(guint catnum, GSList * trsplist); void free_transponders(GSList * trsplist); #endif gpredict/src/trsp-update.c000066400000000000000000000620341427377236300161050ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Copyright (C) 2016 Baris DINC (TA7W) Copyright (C) 2017 Mario Haustein (DM5AHA) Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ /* * Downloads Frequency list from SATNOGS db and exports json transponder * information into satellite files identified by catalog id */ #include #include #include #include #include #include "compat.h" #include "trsp-update.h" #include "gpredict-utils.h" #include "sat-cfg.h" #include "sat-log.h" #include "nxjson/nxjson.h" #ifdef HAVE_CONFIG_H #include #endif #ifdef WIN32 #include "win32-fetch.h" #else #include #endif /* TRSP auto update frequency. */ typedef enum { TRSP_AUTO_UPDATE_NEVER = 0, /* No auto-update, just warn after one week. */ TRSP_AUTO_UPDATE_MONTHLY = 1, TRSP_AUTO_UPDATE_WEEKLY = 2, TRSP_AUTO_UPDATE_DAILY = 3, TRSP_AUTO_UPDATE_NUM } trsp_auto_upd_freq_t; /* Data structure to hold a TRSP set. */ struct transponder { char uuid[30]; /* uuid */ int catnum; /* Catalog number. */ char description[80]; /* Transponder descriptoion */ long long uplink_low; /* Uplink starting frequency */ long long uplink_high; /* uplink end frequency */ long long downlink_low; /* downlink starting frequency */ long long downlink_high; /* downlink end frequency */ char mode[20]; /* mode (from modes files) */ int invert; /* inverting / noninverting */ double baud; /* baudrate */ int alive; /* alive or dead */ }; /* Data structure to hold a MODES set. */ struct modes { int id; /* id */ char name[80]; /* Mode name */ }; /* Data structure to hold a MODE set. */ typedef struct { guint modnum; /* Mode number. */ gchar *modname; /* Mode description. */ } new_mode_t; /* Data structure to hold a TRSP list. */ typedef struct { guint catnum; /* Catalog number. */ guint numtrsp; /* Number of transponders. */ } new_trsp_t; #ifndef WIN32 /* private function prototypes */ static size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE * stream); #endif //int getMODElist_intoHashMap(); //static void check_and_print_mode(gpointer key, gpointer value, gpointer user_data) //{ // new_mode_t *nmode = (new_mode_t *) value; // guint *num = user_data; // // *num += 1; // // (void) key; /* avoid unused parameter compiler warning */ // // printf("MODES LIST : %d %s \n", nmode->modnum, nmode->modname); // //} /** Free a new_mode_t structure. */ static void free_new_mode(gpointer data) { //TODO: remove this. new_mode_t *mmode; mmode = (new_mode_t *) data; g_free(mmode->modname); g_free(mmode); } /** Free a new_trsp_t structure. */ static void free_new_trsp(gpointer data) { //TODO: remove this. new_trsp_t *mtrsp; mtrsp = (new_trsp_t *) data; g_free(mtrsp); } void trsp_update_files(gchar * input_file) { FILE *mfp; /* transmitter information json file */ size_t mfplen; /* size of transmitter information json file */ long flen; /* holds the file size returned by ftell or -1 on error */ int result; FILE *ffile; /* transponder output file in gpredict format */ char *jsn_object; /* json array will be in this buffer before parsing */ unsigned int idx; /* object index in JSON-Array */ new_mode_t *nmode; new_trsp_t *ntrsp; GHashTable *modes_hash; /* hash table to store modes */ GHashTable *trsp_hash; /* hash table to store satellite list to generate trsp files */ guint *key = NULL; gchar *userconfdir; gchar *trspfile; gchar *modesfile; gchar *trspfolder; /* force decimal mark to dot when parsing JSON file */ setlocale(LC_NUMERIC, "C"); modes_hash = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, free_new_mode); trsp_hash = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, free_new_trsp); userconfdir = get_user_conf_dir(); trspfolder = g_strconcat(userconfdir, G_DIR_SEPARATOR_S, "trsp", NULL); modesfile = g_strconcat(trspfolder, "/modes.json", NULL); mfp = fopen(modesfile, "r"); if (mfp != NULL) { mfplen = 0; fseek(mfp, 0, SEEK_END); flen = ftell(mfp); if (flen > 1) { mfplen = flen; rewind(mfp); jsn_object = g_malloc(mfplen); result = fread(jsn_object, mfplen, 1, mfp); if (result == 1) { const nx_json *json = nx_json_parse(jsn_object, 0); if (json) { idx = 0; while (1) { const nx_json *json_obj = nx_json_item(json, idx++); struct modes m_modes; if (json_obj->type == NX_JSON_NULL) break; m_modes.id = nx_json_get(json_obj, "id")->int_value; strncpy(m_modes.name, nx_json_get(json_obj, "name")->text_value, 79); m_modes.name[79] = 0; /* add data to hash table */ key = g_try_new0(guint, 1); *key = m_modes.id; nmode = g_hash_table_lookup(modes_hash, key); if (nmode == NULL) { /* create new_mode structure */ nmode = g_try_new(new_mode_t, 1); nmode->modnum = m_modes.id; nmode->modname = g_strdup(m_modes.name); g_hash_table_insert(modes_hash, key, nmode); } sat_log_log(SAT_LOG_LEVEL_INFO, _("MODE %d %s"), m_modes.id, m_modes.name); } // while(1) nx_json_free(json); } // if(json) } // if(result == 1) g_free(jsn_object); } // if(flen > 1) fclose(mfp); } // if(mfp) // guint num = 0; // printf("---------- PRINTING MODES LIST ------- \n"); // g_hash_table_foreach (modes_hash, check_and_print_mode, &num); mfp = fopen(input_file, "r"); if (mfp != NULL) { mfplen = 0; fseek(mfp, 0, SEEK_END); flen = ftell(mfp); if (flen > 1) { mfplen = flen; rewind(mfp); jsn_object = g_malloc(mfplen); result = fread(jsn_object, mfplen, 1, mfp); if (result == 1) { const nx_json *json = nx_json_parse(jsn_object, 0); if (json) { idx = 0; while (1) { const nx_json *json_obj = nx_json_item(json, idx++); struct transponder m_trsp; if (json_obj->type == NX_JSON_NULL) break; strncpy(m_trsp.description, nx_json_get(json_obj, "description")->text_value, 79); m_trsp.description[79] = 0; m_trsp.catnum = nx_json_get(json_obj, "norad_cat_id")->int_value; m_trsp.uplink_low = nx_json_get(json_obj, "uplink_low")->int_value; m_trsp.uplink_high = nx_json_get(json_obj, "uplink_high")->int_value; m_trsp.downlink_low = nx_json_get(json_obj, "downlink_low")->int_value; m_trsp.downlink_high = nx_json_get(json_obj, "downlink_high")->int_value; key = g_try_new0(guint, 1); *key = nx_json_get(json_obj, "mode_id")->int_value; nmode = g_hash_table_lookup(modes_hash, key); if (nmode != NULL) sprintf(m_trsp.mode, "%s", nmode->modname); else sprintf(m_trsp.mode, "%lli", nx_json_get(json_obj, "mode_id")->int_value); m_trsp.invert = nx_json_get(json_obj, "invert")->int_value; m_trsp.baud = nx_json_get(json_obj, "baud")->dbl_value; m_trsp.alive = nx_json_get(json_obj, "alive")->int_value; //strcpy(m_trsp.uuid,nx_json_get(json_obj, "uuid")->text_value); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(">>> Preparing information for transponders of cat_id %d <<<"), m_trsp.catnum, __func__); ////sat_log_log (SAT_LOG_LEVEL_INFO, _(" uuid : %s"), m_trsp.uuid, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" description : %s"), m_trsp.description, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" alive : %s"), m_trsp.alive ? "true" : "false", __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" uplink_low : %Ld"),m_trsp.uplink_low, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" uplink_high : %Ld"),m_trsp.uplink_high, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" downink_low : %Ld"),m_trsp.downlink_low, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _("downlink_high : %Ld"),m_trsp.downlink_high, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" Mode : %s"), m_trsp.mode, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" Invert : %s"), m_trsp.invert ? "true" : "false", __func__); // sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" Baud : %lf"),m_trsp.baud, __func__); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _(" norad_cat_id : %Ld"),m_trsp.catnum, __func__); char m_catnum[20]; sprintf(m_catnum, "%d", m_trsp.catnum); trspfile = g_strconcat(trspfolder, G_DIR_SEPARATOR_S, m_catnum, ".trsp", NULL); //sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s: Writing to file : %s "), __func__, trspfile); //first lets delete the file we already have, to make space for the new version /* check existence and add data to hash table for future check */ key = g_try_new0(guint, 1); *key = m_trsp.catnum; ntrsp = g_hash_table_lookup(trsp_hash, key); if (ntrsp == NULL) { /* create new_trsp structure */ ntrsp = g_try_new(new_trsp_t, 1); ntrsp->catnum = m_trsp.catnum; ntrsp->numtrsp = 1; //our first insertion of transponder to this file g_hash_table_insert(trsp_hash, key, ntrsp); if (g_remove(trspfile)) sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Failed to remove %s"), __func__, trspfile); } else { //TODO: increase number of transponders here //ntrsp->numtrsp += 1; //number of transponder info in this file //g_hash_table_replace(trsp_hash, key, ntrsp); } //now lets write the new version ffile = g_fopen(trspfile, "a"); if (ffile != NULL) { fprintf(ffile, "\n[%s]\n", m_trsp.description); if (m_trsp.uplink_low > 0) fprintf(ffile, "UP_LOW=%lld\n", m_trsp.uplink_low); if (m_trsp.uplink_high > 0) fprintf(ffile, "UP_HIGH=%lld\n", m_trsp.uplink_high); if (m_trsp.downlink_low > 0) fprintf(ffile, "DOWN_LOW=%lld\n", m_trsp.downlink_low); if (m_trsp.downlink_high > 0) fprintf(ffile, "DOWN_HIGH=%lld\n", m_trsp.downlink_high); fprintf(ffile, "MODE=%s\n", m_trsp.mode); if (m_trsp.baud > 0.0) fprintf(ffile, "BAUD=%.0f\n", m_trsp.baud); if (m_trsp.invert) fprintf(ffile, "INVERT=%s\n", "true"); fclose(ffile); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _ ("%s: Could not open trsp file for write"), __func__); } } // while(1) nx_json_free(json); } // if(json) } // if(result == 1) g_free(jsn_object); } // if(flen > 1) fclose(mfp); } // if(mfp) g_hash_table_destroy(modes_hash); } /** Update MODES files from network. */ void modes_update_from_network() { gchar *server; gchar *proxy = NULL; gchar *modes_file; gchar *file_url; gchar *locfile; gchar *userconfdir; #ifdef WIN32 int res; #else CURL *curl; CURLcode res; #endif FILE *outfile; guint success = 0; /* no. of successful downloads */ server = sat_cfg_get_str(SAT_CFG_STR_TRSP_SERVER); proxy = sat_cfg_get_str(SAT_CFG_STR_TRSP_PROXY); modes_file = sat_cfg_get_str(SAT_CFG_STR_TRSP_MODE_FILE); #ifndef WIN32 /* initialise curl */ curl = curl_easy_init(); if (proxy != NULL) curl_easy_setopt(curl, CURLOPT_PROXY, proxy); curl_easy_setopt(curl, CURLOPT_USERAGENT, "gpredict/curl"); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); #endif /* get files */ /* set URL */ file_url = g_strconcat(server, modes_file, NULL); #ifndef WIN32 curl_easy_setopt(curl, CURLOPT_URL, file_url); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Ready to fetch modes list from %s"), __func__, file_url); #endif /* create local cache file */ userconfdir = get_user_conf_dir(); locfile = g_strconcat(userconfdir, G_DIR_SEPARATOR_S, "trsp", G_DIR_SEPARATOR_S, "modes.json", NULL); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: File to open %s "), __func__, locfile); outfile = g_fopen(locfile, "wb"); if (outfile != NULL) { #ifdef WIN32 res = win32_fetch(file_url, outfile, proxy, "gpredict/win32"); if (res != 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%x)"), __func__, file_url, res); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, file_url); success++; } #else curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func); /* get file */ res = curl_easy_perform(curl); if (res != CURLE_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%s)"), __func__, file_url, curl_easy_strerror(res)); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, file_url); success++; } #endif fclose(outfile); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to open %s preventing update"), __func__, locfile); } g_free(userconfdir); g_free(file_url); g_free(server); g_free(proxy); g_free(modes_file); #ifndef WIN32 curl_easy_cleanup(curl); #endif /* continue update if we have fetched at least one file */ if (success > 0) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Fetched %d files from network; updating..."), __func__, success); //here we can get the modes json file into memory as hashmap.. //g_free(cache); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not fetch frequency files from network"), __func__); } } /** * Update TRSP files from network. * * @param silent TRUE if function should execute without graphical status indicator. * @param progress Pointer to a GtkProgressBar progress indicator (can be NULL) * @param label1 GtkLabel for activity string. * @param label2 GtkLabel for statistics string. */ void trsp_update_from_network(gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2) { static GMutex trsp_in_progress; gchar *server; gchar *proxy = NULL; gchar *freq_file; gchar *file_url; gchar *locfile_trsp; gchar *userconfdir; #ifdef WIN32 int res; #else CURL *curl; CURLcode res; #endif gdouble fraction; FILE *outfile; gchar *cache; gchar *text; guint success = 0; /* no. of successful downloads */ (void)label2; /* bail out if we are already in an update process */ if (g_mutex_trylock(&trsp_in_progress) == FALSE) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: A frequency update process is already running"), __func__); return; } /* get list with modes */ modes_update_from_network(); /* get server, proxy, and list of files */ //server = sprintf("%stransmitters/?format=json", sat_cfg_get_str(SAT_CFG_STR_TRSP_SERVER)); server = sat_cfg_get_str(SAT_CFG_STR_TRSP_SERVER); proxy = sat_cfg_get_str(SAT_CFG_STR_TRSP_PROXY); freq_file = sat_cfg_get_str(SAT_CFG_STR_TRSP_FREQ_FILE); #ifndef WIN32 /* initialise curl */ curl = curl_easy_init(); if (proxy != NULL) curl_easy_setopt(curl, CURLOPT_PROXY, proxy); curl_easy_setopt(curl, CURLOPT_USERAGENT, "gpredict/curl"); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); #endif /* get files */ /* set URL */ file_url = g_strconcat(server, freq_file, NULL); #ifndef WIN32 curl_easy_setopt(curl, CURLOPT_URL, file_url); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Ready to fetch transponder list from %s"), __func__, file_url); #endif /* set activity message */ if (!silent && (label1 != NULL)) { text = g_strdup_printf(_("Fetching %s"), "transmitters.json"); gtk_label_set_text(GTK_LABEL(label1), text); g_free(text); /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); } /* create local cache file */ userconfdir = get_user_conf_dir(); locfile_trsp = g_strconcat(userconfdir, G_DIR_SEPARATOR_S, "trsp", G_DIR_SEPARATOR_S, "transmitters.json", NULL); sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: File to open %s "), __func__, locfile_trsp); outfile = g_fopen(locfile_trsp, "wb"); if (outfile != NULL) { #ifdef WIN32 res = win32_fetch(file_url, outfile, proxy, "gpredict/win32"); if (res != 0) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%x)"), __func__, file_url, res); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, file_url); success++; } #else curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func); /* get file */ res = curl_easy_perform(curl); if (res != CURLE_OK) { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Error fetching %s (%s)"), __func__, file_url, curl_easy_strerror(res)); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Successfully fetched %s"), __func__, file_url); success++; } #endif fclose(outfile); } else { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Failed to open %s preventing update"), __func__, locfile_trsp); } /* update progress indicator */ if (!silent && (progress != NULL)) { /* complete download corresponds to 50% */ fraction = 1; gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction); /* Force the drawing queue to be processed otherwise there will not be any visual feedback, ie. frozen GUI - see Gtk+ FAQ http://www.gtk.org/faq/#AEN602 */ while (g_main_context_iteration(NULL, FALSE)); } g_free(userconfdir); g_free(file_url); g_free(server); g_free(freq_file); g_free(proxy); #ifndef WIN32 curl_easy_cleanup(curl); #endif /* continue update if we have fetched at least one file */ if (success > 0) { sat_log_log(SAT_LOG_LEVEL_INFO, _("%s: Fetched %d files from network; updating..."), __func__, success); /* call update_from_files */ cache = sat_file_name("cache"); trsp_update_files(locfile_trsp); g_free(cache); } else { sat_log_log(SAT_LOG_LEVEL_ERROR, _("%s: Could not fetch frequency files from network"), __func__); } g_mutex_unlock(&trsp_in_progress); } #ifndef WIN32 /** * Write TRSP data block to file. * * @param ptr Pointer to the data block to be written. * @param size Size of data block. * @param nmemb Size multiplier? * @param stream Pointer to the file handle. * @return The number of bytes actually written. * * This function writes the received data to the file pointed to by stream. * It is used as write callback by to curl exec function. */ static size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE * stream) { /*** FIXME: TBC whether this works in wintendo */ return fwrite(ptr, size, nmemb, stream); } #endif const gchar *freq_to_str2[TRSP_AUTO_UPDATE_NUM] = { N_("Never"), N_("Monthly"), N_("Weekly"), N_("Daily") }; const gchar *trsp_update_freq_to_str2(trsp_auto_upd_freq_t freq) { if ((freq <= TRSP_AUTO_UPDATE_NEVER) || (freq >= TRSP_AUTO_UPDATE_NUM)) { freq = TRSP_AUTO_UPDATE_NEVER; } return _(freq_to_str2[freq]); } gpredict/src/trsp-update.h000066400000000000000000000024361427377236300161120ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Copyright (C) 2016 Baris DINC (TA7W) Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ #ifndef TRSP_UPDATE_H #define TRSP_UPDATE_H 1 #include void trsp_update_from_network(gboolean silent, GtkWidget * progress, GtkWidget * label1, GtkWidget * label2); #endif gpredict/win32/000077500000000000000000000000001427377236300136375ustar00rootroot00000000000000gpredict/win32/Makefile000066400000000000000000000134351427377236300153050ustar00rootroot00000000000000# Makefile for cross-compiling gpredict for win32 on Linux, # using mingw compiler # configure pkg-config, version from git include config.mk # version string in C code VERSION_SHORT = $(GITMAJ).$(GITMIN).$(GITBLD) VERSION_LONG = $(GITMAJ).$(GITMIN).0.$(GITBLD) # directories topsrc = .. gpreddir = $(topsrc)/src sgpsdpdir = $(gpreddir)/sgpsdp nxjsondir = $(gpreddir)/nxjson # tools CC = gcc -Wall -O2 -mms-bitfields -DWIN32 AS = as DLLWRAP = dllwrap DLLWRAP_FLAGS = --as=$(AS) --export-all --driver-name $(CC) -s RC = windres # NB: .rc file create various version formats from the numbers RCFLAGS = --define __WIN32__ --define __WIN95__ --define MSRC --define __GNUWIN32__ \ --define VERMAJ=$(GITMAJ) --define VERMIN=$(GITMIN) --define VERBLD=$(GITBLD) # libraries GTKLIBS := $(shell pkg-config --define-prefix --libs gtk+-3.0) GLIBLIB := $(shell pkg-config --define-prefix --libs glib-2.0 gthread-2.0) GOOLIBS := $(shell pkg-config --define-prefix --libs goocanvas-3.0) GUI_LIBS = $(GTKLIBS) $(GLIBLIB) $(GOOLIBS) libsgpsdp.lib -lwinmm -lwininet -lws2_32 LIBS = -lm # flags/defines GTK_CFLAGS := $(shell pkg-config --define-prefix --cflags gtk+-3.0) GOO_CFLAGS := $(shell pkg-config --define-prefix --cflags goocanvas-3.0) CFLAGS = -DVERSION_SHORT=$(VERSION_SHORT) -DHAVE_CONFIG_H -DPACKAGE_LOCALE_DIR=\"/\" -I. -I.. -I$(gpreddir) $(GOO_CFLAGS) # source paths vpath %.c $(sgpsdpdir) vpath %.c $(gpreddir) vpath %.h $(gpreddir) vpath %.h $(sgpsdpdir) vpath %.c $(nxjsondir) vpath %.h $(nxjsondir) vpath %.rc $(topsrc)/win32 vpath %.c . #### End of system configuration section. #### SGPSDPSRC = \ sgp4sdp4.c \ sgp_in.c \ sgp_math.c \ sgp_obs.c \ sgp_time.c \ solar.c SGPSDPOBJ = $(SGPSDPSRC:.c=.o) NXJSONSRC = \ nxjson.c NXJSONOBJ = $(NXJSONSRC:.c=.o) GOOCANVSRC = \ goocanvasatk.c \ goocanvasellipse.c \ goocanvasenumtypes.c \ goocanvasgroup.c \ goocanvasimage.c \ goocanvasitem.c \ goocanvasitemmodel.c \ goocanvasitemsimple.c \ goocanvasmarshal.c \ goocanvaspolyline.c \ goocanvaspath.c \ goocanvasprivate.h \ goocanvasrect.c \ goocanvasstyle.c \ goocanvastable.c \ goocanvastext.c \ goocanvasutils.c \ goocanvaswidget.c \ goocanvas.c GOOCANVOBJ = $(GOOCANVSRC:.c=.o) GPREDICTSRC = \ about.c \ compat.c \ first-time.c \ gpredict-help.c \ gpredict-utils.c \ gtk-azel-plot.c \ gtk-event-list.c \ gtk-event-list-popup.c \ gtk-freq-knob.c \ gtk-polar-plot.c \ gtk-polar-view.c \ gtk-polar-view-popup.c \ gtk-rig-ctrl.c \ gtk-rot-ctrl.c \ gtk-rot-knob.c \ gtk-sat-data.c \ gtk-sat-list.c \ gtk-sat-list-popup.c \ gtk-sat-map.c \ gtk-sat-map-ground-track.c \ gtk-sat-map-popup.c \ gtk-sat-module.c \ gtk-sat-module-popup.c \ gtk-sat-module-tmg.c \ gtk-sat-popup-common.c \ gtk-sat-selector.c \ gtk-single-sat.c \ gtk-sky-glance.c \ gui.c \ locator.c \ loc-tree.c \ main.c \ map-selector.c \ map-tools.c \ menubar.c \ mod-cfg.c \ mod-cfg-get-param.c \ mod-mgr.c \ orbit-tools.c \ pass-popup-menu.c \ pass-to-txt.c \ predict-tools.c \ print-pass.c \ qth-data.c \ qth-editor.c \ radio-conf.c \ rotor-conf.c \ sat-cfg.c \ sat-info.c \ sat-log.c \ sat-log-browser.c \ sat-monitor.c \ sat-pass-dialogs.c \ sat-pref.c \ sat-pref-conditions.c \ sat-pref-debug.c \ sat-pref-formats.c \ sat-pref-general.c \ sat-pref-interfaces.c \ sat-pref-layout.c \ sat-pref-list-view.c \ sat-pref-map-view.c \ sat-pref-modules.c \ sat-pref-multi-pass.c \ sat-pref-polar-view.c \ sat-pref-predict.c \ sat-pref-qth.c \ sat-pref-qth-editor.c \ sat-pref-refresh.c \ sat-pref-rig.c \ sat-pref-rig-editor.c \ sat-pref-rot.c \ sat-pref-rot-editor.c \ sat-pref-single-pass.c \ sat-pref-single-sat.c \ sat-pref-sky-at-glance.c \ sat-pref-tle.c \ sat-vis.c \ save-pass.c \ strnatcmp.c \ time-tools.c \ tle-tools.c \ tle-update.c \ trsp-conf.c \ trsp-update.c \ win32-fetch.c GPREDICTOBJ = $(GPREDICTSRC:.c=.o) OBJS = $(SGPSDPOBJ) $(NXJSONOBJ) $(GPREDICTOBJ) %.o: %.c $(CC) -c $(CFLAGS) $(GTK_CFLAGS) $< $(CC) -MM $(CFLAGS) $(GTK_CFLAGS) $< > $*.d # targets begin all: libsgpsdp.dll gpredict.exe gpredict-con.exe dist: gpredict-$(GITMAJ).$(GITMIN).$(GITBLD).zip gpredict-$(GITMAJ).$(GITMIN).$(GITBLD).zip: all mkdir -p gpredict/doc cp -p ../AUTHORS ../COPYING ../NEWS ../README gpredict/doc mkdir -p gpredict/share/gpredict cp -p libsgpsdp.dll gpredict.exe gpredict-con.exe $(BINDEPS) gpredict cp -rp ../data gpredict/share/gpredict cp -rp ../pixmaps gpredict/share/gpredict cp -rp ../po gpredict/share/gpredict mkdir -p gpredict/$(LOADERS) cp -p loaders.cache gpredict/$(LOADERS) cp -rp $(GTKETC) gpredict mkdir -p gpredict/share/glib-2.0 cp -rp $(SCHEMAS) gpredict/share/glib-2.0 mkdir -p gpredict/share/icons/Adwaita cp -rp $(ADWAITA)/scalable gpredict/share/icons/Adwaita/ cp -rp $(ADWAITA)/scalable-up-to-32 gpredict/share/icons/Adwaita/ cp -rp $(ADWAITA)/index.theme gpredict/share/icons/Adwaita/ cp -rp $(ADWAITA)/icon-theme.cache gpredict/share/icons/Adwaita/ zip -r $@ gpredict rm -rf gpredict # Use -mconsole to always open a console window when gpredicxt is started # Use -mwindows for no console gpredict.exe: TARGET:=-mwindows gpredict-con.exe: TARGET:=-mconsole gpredict.exe gpredict-con.exe: $(OBJS) gpredict_res.o $(CC) $(TARGET) -mthreads -o $@ $^ $(CFLAGS) $(GTK_CFLAGS) $(LIBS) $(GUI_LIBS) -lmingwex -s gpredict_res.o: gpredict.rc $(RC) $(RCFLAGS) gpredict.rc $@ libgoocanvas.dll: $(GOOCANVOBJ) $(CC) -shared $(CFLAGS) $(GTK_CFLAGS) $(GOOCANVOBJ) $(GTKLIBS) -lm -lmingwex \ -Wl,--enable-auto-image-base -Wl,--out-implib,libgoocanvas.lib -o libgoocanvas.dll libsgpsdp.dll: $(SGPSDPOBJ) $(CC) -shared $(CFLAGS) $(GTK_CFLAGS) $(SGPSDPOBJ) $(GLIBLIB) -lm -lmingwex \ -Wl,--enable-auto-image-base -Wl,--out-implib,libsgpsdp.lib -o libsgpsdp.dll clean: rm -f *.o *.d *.def *.a *.lib *.dll *.exe *.zip rm -rf gpredict gpredict/win32/README000066400000000000000000000015731427377236300145250ustar00rootroot00000000000000### Win32 build notes ### # Phil Ashby, Dec 2017 - Jan 2018 At present, MSYS2 on a Windows system is required to gather dependencies before building a Win32 version of gpredict using this build system. Install MSYS2, open a shell and install the Gtk3 and Goocanvas2 packages, following the instructions from GTK team: https://www.gtk.org/download/windows.php Once your MSYS2 output folder (/mingw32 or similar) is accessible from this system, adjust the MINGW_ROOT parameter in config.mk to suit. You should now be able to cross-compile the Win32 version of GPredict using the 'make' command. Experimental Win32 build testing is being tracked in this ticket: https://github.com/csete/gpredict/issues/110 To build a deployable ZIP archive, use 'make dist', which packages all binary DLLs from dependent packages along with gpredict[-con].exe into a versioned ZIP. Good luck! Phlash. gpredict/win32/build-config.h000066400000000000000000000050021427377236300163470ustar00rootroot00000000000000/* build-config.h.in. Generated from configure.ac by autoheader. */ /* Define if code coverage should be enabled. */ #undef ENABLE_COV /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* "definition of GETTEXT_PACKAGE" */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #ifdef VERSION_SHORT #define stringify_(x) #x #define str_(x) stringify_(x) #define VERSION str_(VERSION_SHORT) #else #define VERSION "1.9.xx" #endif #define GETTEXT_PACKAGE "gpredict" #undef HAS_LIBGPS gpredict/win32/config.mk000066400000000000000000000042341427377236300154400ustar00rootroot00000000000000# Configuration variables governing the build of gpredict for win32 # pkgconfig path, assumes goocanvas-3.0.0 and gtk+-3.10.4 win32 packages # unpacked and paths adjusted (pkg-config files) at the same folder level # as gpredict. Downloads used: # # http://ftp.gnome.org/pub/GNOME/binaries/win32/goocanvas/3.0/ # download both: goocanvas-3.0.0-win32.zip, goocanvas-dev-3.0.0-win32.zip # # http://win32builder.gnome.org/gtk+-bundle_3.10.4-20131202_win32.zip # NB: I had to create new .pc files for both gtk+-3.0.pc and gdk.pc # (thanks GNOME for missing crucial bits out of builds). My versions # are in this folder, and will need unpack paths inserting. # Change the path below to select the appropriate install path and compiler # for 32 and 64 bit cross-compiles. Note that if you have expicitly changed # the PATH environment variable, you may need to make additional changes. # # Windows hosts will require a configuration like this for 32 bit compiles: # MINGW_ROOT=/mingw32 # or this, for 64 bit compiles: # MINGW_ROOT=/mingw64 # # Linux or other hosts require a path that is dependent upon the installation. # For 32 bit: # MINGW_ROOT=../../msys64/mingw32 # For 64 bit: # MINGW_ROOT=../../msys64/mingw64 # MINGW_ROOT=/mingw64 PKG_CONFIG_PATH = "$(abspath $(MINGW_ROOT)/lib/pkgconfig)" # binary dependencies to be deployed with gpredict.exe BINDEPS = \ $(wildcard $(MINGW_ROOT)/bin/*.dll) \ $(MINGW_ROOT)/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll \ $(MINGW_ROOT)/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll \ $(MINGW_ROOT)/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.dll # where to put the loaders.cache file LOADERS = lib/gdk-pixbuf-2.0/2.10.0 # other miscellaneous folders to deploy with the binary GTKETC = $(MINGW_ROOT)/etc SCHEMAS = $(MINGW_ROOT)/share/glib-2.0/schemas ADWAITA = $(MINGW_ROOT)/share/icons/Adwaita # Autoversioning from nearest git tag, assumes v. tag format. GITVER := $(shell git describe) GITSEP := $(subst -, ,$(GITVER)) GITTAG := $(word 1,$(GITSEP)) GITBLD := $(word 2,$(GITSEP)) GITCOM := $(word 3,$(GITSEP)) GITMAJ := $(subst v,,$(word 1,$(subst ., ,$(GITTAG)))) GITMIN := $(word 2,$(subst ., ,$(GITTAG))) gpredict/win32/gpredict.rc000066400000000000000000000026171427377236300157740ustar00rootroot00000000000000#include #include #include #include "resource.h" #if defined(VERMAJ) && defined(VERMIN) && defined(VERBLD) // awesome, we have version info #else // fake it! #define VERMAJ 1 #define VERMIN 9 #define VERBLD 0 #endif #define stringify_(x) #x #define str_(x) stringify_(x) #define VERSION_RSRC VERMAJ,VERMIN,0,VERBLD #define VERSION_STRS str_(VERMAJ) "." str_(VERMIN) "." str_(VERBLD) #define VERSION_STRL str_(VERMAJ) "." str_(VERMIN) ".0." str_(VERBLD) A ICON "icons/gpredict-icon.ico" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 1 VERSIONINFO FILEVERSION VERSION_RSRC PRODUCTVERSION VERSION_RSRC FILEOS VOS__WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN FILEFLAGSMASK 0x00000000 FILEFLAGS 0x00000000 { BLOCK "StringFileInfo" { BLOCK "040904e4" { VALUE "CompanyName", "Alexandru Csete, OZ9AEC" VALUE "FileDescription", "Gpredict: Real-time satellite tracking and orbit prediction program" VALUE "FileVersion", VERSION_STRL VALUE "InternalName", "GPredict" VALUE "LegalCopyright", "Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC" VALUE "ProductName", "GPredict" VALUE "ProductVersion", VERSION_STRS } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0409, 0x04E4 } } gpredict/win32/icons/000077500000000000000000000000001427377236300147525ustar00rootroot00000000000000gpredict/win32/icons/gpredict-icon.ico000066400000000000000000000204761427377236300202060ustar00rootroot00000000000000 (!PNG  IHDR\rf IDATx] xU> ₢ENj֪ةNgZw+nU[ۧ:L[N;bnnInn'; =$B ?K $&{sޯK*OH=[  .#B,τфRBaPKGh"4 mԪJ Yywϩu+ 3 2 #o>#d0."Hx"xa a"0Y8k('kQz/#s`]=H#œ~ͳ vn@R_{n'\4)p0Xw4 =Ba+DOfJp|s.ٟp![JB:M*[C #/ T•' ń̈́'8ӄ#B `:X-Ԩ$@?Mt yRqz ) a + 4w̓Rf mb0k¥(Eb@<ן9*:vH$ ^0z}Va)%uC3V2w󞞳;{戰SL*?#bgePo0ly S mBXǰ^Gx98,v֢؎ Bi B ?09ˎߟExP NX)s `ˉEOUWye 'Upg?y7C H`XYb< A#~]eR{TPcT E옻%PL Aw :B '͐U+|ut݄W!{-/OV CnIsTH=4K+p[Loq˦k*Vev-Xآk77TT-`'p!|7?%%>R9r4d],en5 .?#D:sFh j p/#jX%Jv/s pUNrUx rZrAg_4DXx6o6j#_?]5q"4I@:Ds>H4K!!@BO} ͵2yB#)S ɑH|&UQHk, /J^@@n ?SxEq Pg~ _Pk?$xGO3tEyiߐYSuX@Pgf XqMH6|s %JzKaO:3+q@_4,Y0W(z0svl#6| A"?D#.!YN^Cwt$C13C TtC>bVOW=A~'+.ifܜs_w Ẹ@w!9& \q u"؇[!6'AaF}Xl!4igw^cke5pToy/ݯ " T&n"Wp"~z֗/X"LΉ,ql:!vzN1lBDVfsg1ⶊbb'/:zx}?WdNhjku}^8PޜgiBբ*Q{8juά!( bp@M"SosrCkOo])7mI{'..v%{DvU7V-WNHv{ƹc*gq6Ϛu=O|a|~ѯ"`zSwnUQ;E|]:Xa"zqϯOk>!SYS4QA} :@oKAYiE Nae"'æGߞ:j@\^@"h^EH[XN~}Ʈt`.ڲ EHCU"!(Q-Ƌ";嘭39cs@v?^.11?`!M~yFִ N`PlUSe#qڪzK7-:`R+bV9 +XP rJoVy6.Z08ZCIڸN|8chGz\sIoWa5WK@R7Lfwإ{>^, a(ȹo~|kDz>=Bz, ,&l"~QU.Psy8ʊ% r[h7͜(ܧ?'qN'ĵ)ȹbٴA:$:7lmf֔?/`'"9sjӋV*1 rZ?wSrF8bpANOŏ g9M|WlEA[b^  H@&t^x}R '|A+GjTs=f}U^϶w $U_ş˛]J"Qx.YCv HhɜY.L -n;A/HA[9 vxXAڜ]f Qj@<{\93DK9.׋arY0 "5炜KV.aM,xXj {3'_#67t -4|^F @-(_?Bؖ҂7loq.}x?Vʥ(q˸iӆ` @399Uㆱ]UnyE p@9_P(Z:꛾oO5wtTAsg-H.u[{`w\h"t"PS.;x B^LD;TXG}[$Fؽ+e D[!A胓 E) Tw{nˡP@Np#FON&N{\lm7P޴AKqhT Ex0ͳJeN=8htV "ÃGx\#ЧɌI?^3@U,aÈ?F\Kk9 疽ou7ӸX3O&1A$hq>bEA F^UB%wUVKHf# >}I61Qߜ0iVu &ܖ B\`pqXQp{q$OQ lU\?N8% _Q,Mb7nVU | Nǀ qϼrG'%3"`v=zǼ{ *}o%ɌjDwK-c rnC9$G}W -"ܾY^ V^-K8S-?>o07ԥ8 ^q͞n{㐲ڝI*~1[Z@.}i>'&B.$lt=o' ۱IqGO([ж5+, HH8&OXz 70NhD6Y2?Pݓɫq?f`zw[EjN@X x*6@4+& ^V<"WH@0 %~DVĨo6gL>_-''.\ 3[oޮtrze4}37.ak:d_I7r!slh@~Q~ˏ{# ӂ9΅[e띵E`a-ߪi_ωA WuG:w,n:"/'8,1#<?dF}]4"? y?ڕ-G}+w4_/"û\$4dގ9w$>~ N߬ L(ѼZRoҊŮU*_(vg,RC w5\p?8`羁c@4l E4$P;ݿS=p99(U*.$?ss0Rc模~]ͻ`bA4%?B.&D@ \zwN~0gc{</LB 9ugLT\3crb"p=hNZ1kx̻4 hNɭH8[uXD`SCK[uXDS"/;dx܀t2 HK? c`8Bإ?9s 5X܀"(z @ 0!4aqnI>GIr(p ,l  )]X؀"_(?; )kW @ Bp"#7HeF4lL)ï,$;C~9%s^s"pa5Ve-H'dv~x?+YF0,1b& mvQcrA!:s퇍`7yx0"i%anoB#sFy@xC$xzJNVc>a/d=W|FQwǁ4=C8?Dԇ,h3ߕ}& qK;6 h;tN(ʎ"s~ٰC~Q @cg GJv K`ׇ'X&!_>M 5inȌ`ZI4nH:pYU!F!yaZrMgR4 4d*8v >X4&@gw ψpaNX4~}u5e1)s^$\<0edG'+6B;nWM8g/?8A"S*VP#m.uZ=ʃy L U3:AҤgNxpL܉d0 '#ex%Ir ]Ev+ 0ͭ8'e5/*`w@)ϨReBy/a~D *}J.4[ }ߦ{(3Hȃ\i*π˔|]DQZ5#V{4\`=1}rt~5jZ%$Pn.YeDTLj|C|O ىSE"ij@e}kaaVۧjULBC{jտY~F"[gFBê H#N+IENDB`gpredict/win32/loaders.cache000066400000000000000000000014151427377236300162560ustar00rootroot00000000000000# GdkPixbuf Image Loader Modules file # Automatically generated file, do not edit # Created by gdk-pixbuf-query-loaders.exe from gdk-pixbuf-2.30.1 # # LoaderDir = Z:\srv\win32builder\fixed_3104\build\win32/lib/gdk-pixbuf-2.0/2.10.0/loaders # "libpixbufloader-svg.dll" "svg" 2 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL" "image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" "" "svg" "svgz" "svg.gz" "" " #include #include #include "win32-fetch.h" #define BUFLEN 8192 int win32_fetch(char *url, FILE *file, char *proxy, char *ua) { HINTERNET hInt, hUrl; char buf[BUFLEN]; DWORD nRead; if (proxy != NULL) hInt = InternetOpen(ua, INTERNET_OPEN_TYPE_PROXY, proxy, "", 0); else hInt = InternetOpen(ua, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); if (NULL == hInt) return 0x80000000 | (int)GetLastError(); hUrl = InternetOpenUrl(hInt, url, NULL, 0, INTERNET_FLAG_RELOAD, 0); if (NULL == hUrl) { InternetCloseHandle(hInt); return 0x40000000 | (int)GetLastError(); } while (InternetReadFile(hUrl, buf, BUFLEN, &nRead)) { if (nRead > 0) fwrite(buf, nRead, 1, file); else break; } InternetCloseHandle(hUrl); InternetCloseHandle(hInt); return 0; } gpredict/win32/win32-fetch.h000066400000000000000000000021131427377236300160360ustar00rootroot00000000000000/* Gpredict: Real-time satellite tracking and orbit prediction program Copyright (C) 2001-2017 Alexandru Csete, OZ9AEC. Copyright (C) 2017 Phil Ashby, 2E0IPX. Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ More details can be found at the project home page: http://gpredict.oz9aec.net/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit http://www.fsf.org/ */ extern int win32_fetch(char *url, FILE *file, char *proxy, char *ua);