pax_global_header00006660000000000000000000000064126321176350014520gustar00rootroot0000000000000052 comment=91611a50a0fbc5250688d3a9263b7fcff4dd1cd4 MiniZincIDE-2.0.10/000077500000000000000000000000001263211763500136425ustar00rootroot00000000000000MiniZincIDE-2.0.10/COMBINED_LICENSE.txt000066400000000000000000001317771263211763500167450ustar00rootroot00000000000000The MiniZinc IDE is copyright NICTA and Monash University. It is distributed under the Mozilla Public License Version 2.0 (see below). The MiniZinc IDE uses the Qt toolkit, which is distributed under the LGPL license (see below). Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. GNU LESSER GENERAL PUBLIC LICENSE The Qt Toolkit is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). Contact: http://www.qt-project.org/legal You may use, distribute and copy the Qt GUI Toolkit under the terms of GNU Lesser General Public License version 2.1, which is displayed below. ------------------------------------------------------------------------- GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 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. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. 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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. 9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. 11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. 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. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. 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 library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! Digia Qt LGPL Exception version 1.1 As an additional permission to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that: (i) the header files of the Library have not been modified; and (ii) the incorporated material is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates; and (iii) you comply with the terms of Section 6 of the GNU Lesser General Public License version 2.1. Moreover, you may apply this exception to a modified version of the Library, provided that such modification does not involve copying material from the Library into the modified Library's header files unless such material is limited to (i) numerical parameters; (ii) data structure layouts; (iii) accessors; and (iv) small macros, templates and inline functions of five lines or less in length. Furthermore, you are not required to apply this additional permission to a modified version of the Library. MiniZincIDE-2.0.10/LICENSE.txt000066400000000000000000000405261263211763500154740ustar00rootroot00000000000000Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. MiniZincIDE-2.0.10/MiniZincIDE/000077500000000000000000000000001263211763500157045ustar00rootroot00000000000000MiniZincIDE-2.0.10/MiniZincIDE/CHANGES000066400000000000000000000110221263211763500166730ustar00rootroot000000000000002015-12-10 v2.0.10 - Updated to include MiniZinc 2.0.10 2015-12-07 v2.0.9 - Remove (unimplemented) menu item for adding files to a project. - Fix version number comparison to work for multi-digit minor and patch versions. 2015-10-19 v2.0.8 - Only disable the run and compile actions when a solving process is currently running (keep editor and rest of the user interface enabled). - Keep editor font setting synchronised across different IDE windows. 2015-10-06 v2.0.7 - Changed version number scheme to coincide with MiniZinc version. - Disable all editing while the solver is running (avoids race conditions). - Fix behaviour of stop button: avoid race condition when pressing it twice, and signal that process has stopped when the initial SIGINT was successful. - Split up extra mzn2fzn command line arguments so they get passed correctly. - Changed behaviour of MiniZinc path input (now doesn't check for presence of mzn2fzn every time the cursor leaves the input box). - Add configuration option to use "default behaviour" when running models, which is to output all intermediate solutions for optimisation problems, and stop after one solution for satisfaction problems. - Fix "Add solver" dialog (sometimes the option to add solvers would disappear from the drop-down menu). - On Windows, configure Gecode/Gist to run the correct batch file. - Fix a crash when activating the (un)comment or go to line actions while on the configuration tab. - Avoid opening multiple "File modified" dialogs for the same file. 2015-07-30 v0.9.9 - Fix for clicking on error messages on Windows - Fix syntax highlighting, used to turn itself off when saving file under a different name - Set default font more consistently on different platforms 2015-07-01 v0.9.8 - Add "dark mode" to change text colours - Various bug fixes - Add integration with Coursera MiniZinc course 2015-05-12 v0.9.7 - Various bug fixes - Improved compatibility with MiniZinc 2.0.2 - Bundled binary release (includes MiniZinc and some solvers) 2015-01-10 v0.9.6 - When killing a process (using the Stop action or timeout), send CTRL-C first, which allows the solver to exit gracefully. Solvers that do not react to CTRL-C are killed as before. - Fix copy/paste actions to also work in output window and to create rich text (including syntax colouring) - Avoid creating an empty .fzn file during compilation - Accept drag-and-drop to main window, opens dragged files - Quit menu action on Mac OS actually quits instead of just closing all open windows - Warn when loading large FlatZinc files - Assume UTF8 text encoding when loading and saving files - Keep selection of .dzn file in configuration tab when opening another .dzn file 2014-09-18 v0.9.5 - load new projects or files into existing project if it is empty and unmodified (avoids opening a new window) - fixed a bug when right-clicking into an empty area in the project explorer - fixed a bug when renaming files (in particular data files) in the project explorer - add support for multi-line (C-style) comments in the syntax highlighting - on Mac OS, show a Window menu to make it easy to switch between open projects, and open all files dragged onto the dock icon in the same project - fixed the hard-coded library path for the G12 lazyfd solver - fixed a bug that could cause a crash when closing and re-opening a project 2014-07-31 v0.9.4 - Project "drawer", better handling of projects - Tool bar - Limit additional arguments dialog to at most 10 parameters - Show MiniZinc version information in configuration dialog - More consistent handling of PATHs to MiniZinc and solvers - Print name of data files and additional arguments when running a solver - On Mac OS, enable QuickLook for MiniZinc files - Add recent files and projects to file menu - File dialogs open in the previously used directory 2014-04-01 v0.9.3 - Add elapsed time to output - Fix crash for files given as command line arguments - Make output window undockable - Add check for updates on startup - Fix bugs #4, #5, #8, #9 2014-02-03 v0.9.2 - Add verbose solver option - Save currently open project tab in project file - Ignore empty additional model parameters - Fix crash when closing modified Untitled tabs without saving - Fix crash after error message from solver - Fix project file format - Ask for parameter input when compiling (not just when solving) 2014-01-30 v0.9.1 Initial release MiniZincIDE-2.0.10/MiniZincIDE/MiniZincIDE.pro000066400000000000000000000032121263211763500204660ustar00rootroot00000000000000#------------------------------------------------- # # Project created by QtCreator 2013-12-12T09:32:30 # #------------------------------------------------- QT += core gui webkitwidgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = MiniZincIDE TEMPLATE = app VERSION = 2.0.10 DEFINES += MINIZINC_IDE_VERSION=\\\"$$VERSION\\\" bundled { DEFINES += MINIZINC_IDE_BUNDLED } macx { ICON = mznide.icns OBJECTIVE_SOURCES += rtfexporter.mm QT += macextras LIBS += -framework Cocoa } macx:bundled { QMAKE_INFO_PLIST = mznide-bundled.plist } macx:!bundled { QMAKE_INFO_PLIST = mznide.plist } RC_ICONS = mznide.ico CONFIG += embed_manifest_exe SOURCES += main.cpp\ mainwindow.cpp \ codeeditor.cpp \ highlighter.cpp \ fzndoc.cpp \ aboutdialog.cpp \ solverdialog.cpp \ gotolinedialog.cpp \ help.cpp \ finddialog.cpp \ paramdialog.cpp \ outputdockwidget.cpp \ checkupdatedialog.cpp \ project.cpp \ htmlwindow.cpp \ htmlpage.cpp \ courserasubmission.cpp HEADERS += mainwindow.h \ codeeditor.h \ highlighter.h \ fzndoc.h \ aboutdialog.h \ solverdialog.h \ gotolinedialog.h \ help.h \ finddialog.h \ paramdialog.h \ outputdockwidget.h \ checkupdatedialog.h \ project.h \ rtfexporter.h \ htmlwindow.h \ htmlpage.h \ courserasubmission.h FORMS += \ mainwindow.ui \ aboutdialog.ui \ solverdialog.ui \ gotolinedialog.ui \ help.ui \ finddialog.ui \ paramdialog.ui \ checkupdatedialog.ui \ htmlwindow.ui \ courserasubmission.ui RESOURCES += \ minizincide.qrc MiniZincIDE-2.0.10/MiniZincIDE/README.txt000066400000000000000000000032271263211763500174060ustar00rootroot00000000000000================================================================ MiniZinc IDE ================================================================ http://www.minizinc.org The MiniZinc IDE is copyright 2013 NICTA. Please see LICENSE.txt for license information. 1. Prerequisites To compile the MiniZinc IDE, you need the Qt toolkit (http://qt-project.org), version 5.0 or newer. On Windows and Mac OS, you can use the precompiled binaries from the Qt web site. On Linux, you can use the packages that come with your distribution (remember to also install the -dev packages that contain the header files). On Windows, you need Microsoft Visual C++ 2010 or later. On Mac OS, you need XCode 4 or later. On Linux, you need a recent C++ compiler (gcc or clang). To run the MiniZinc IDE, you will need version 1.6 of the G12 MiniZinc distribution (http://www.minizinc.org/download.html). 2. Compilation 2.1 Using Qt Creator Unpack the source code. Double-click the file MiniZincIDE.pro in the MiniZincIDE folder. This will open MiniZincIDE project in the Qt Creator application. Configure the project with the default settings. Change the build type to Release (using the icon in the bottom left hand corner that says "Debug"). Choose Build Project "MiniZincIDE" from the Build menu. If everything succeeds, the MiniZinc IDE binary will be created in the build folder that you set in the initial configuration. 2.2 Using the command line Unpack the source code. Run qmake in the MiniZincIDE subdirectory. Run make (or nmake on a Windows command line). 2.3 Troubleshooting If the qmake step fails with a message about qtwidgets, please make sure your Qt version is indeed 5.0 or newer. MiniZincIDE-2.0.10/MiniZincIDE/aboutdialog.cpp000066400000000000000000000012451263211763500207040ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "aboutdialog.h" #include "ui_aboutdialog.h" AboutDialog::AboutDialog(QString version, QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog) { ui->setupUi(this); QTextDocument* doc = ui->textBrowser->document(); QTextCursor cursor = doc->find("$VERSION"); cursor.insertText(version); } AboutDialog::~AboutDialog() { delete ui; } MiniZincIDE-2.0.10/MiniZincIDE/aboutdialog.h000066400000000000000000000011441263211763500203470ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ABOUTDIALOG_H #define ABOUTDIALOG_H #include namespace Ui { class AboutDialog; } class AboutDialog : public QDialog { Q_OBJECT public: explicit AboutDialog(QString version, QWidget *parent = 0); ~AboutDialog(); private: Ui::AboutDialog *ui; }; #endif // ABOUTDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/aboutdialog.ui000066400000000000000000000116151263211763500205410ustar00rootroot00000000000000 AboutDialog 0 0 540 345 About MiniZinc IDE true 180 300 341 30 Qt::Horizontal QDialogButtonBox::Close 10 10 511 281 QFrame::NoFrame 0 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'.Helvetica Neue DeskInterface'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:30px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.minizinc.org"><img src=":/images/mznlogo.png" width="128" height="108" /></a><span style=" font-family:'.Lucida Grande UI';"> </span></p> <p style=" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:large; font-weight:600;">The MiniZinc IDE</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Version $VERSION</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Author: Guido Tack<br />Copyright Monash University and NICTA 2013, 2014, 2015 </span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">This program is provided under the terms of the </span><a href="http://www.minizinc.org/2.0/LICENSE.txt"><span style=" font-family:'.Lucida Grande UI'; text-decoration: underline; color:#0000ff;">Mozilla Public License Version 2.0</span></a><span style=" font-family:'.Lucida Grande UI';">. It uses the Qt toolkit, available from </span><a href="http://qt-project.org"><span style=" font-family:'.Lucida Grande UI'; text-decoration: underline; color:#0000ff;">qt-project.org</span></a><span style=" font-family:'.Lucida Grande UI';">. </span></p></body></html> true buttonBox accepted() AboutDialog accept() 248 254 157 274 buttonBox rejected() AboutDialog reject() 316 260 286 274 MiniZincIDE-2.0.10/MiniZincIDE/cheat_sheet.mzn000066400000000000000000000113541263211763500207120ustar00rootroot00000000000000 %%%%%%%%%%%%%%%%%%%%%%%% % % % MiniZinc cheat sheet % % % %%%%%%%%%%%%%%%%%%%%%%%% /****************** * Model structure * ******************/ include "globals.mzn"; % use globals library int: n; % fixed integer parameter var 1..n: x; % integer decision variable array[1..n] of var 1..n: y; % array of integer decision variables constraint sum(y) <= x; % constraint solve satisfy; % find satisfying solution output ["Solution:\n", "x = ", show(x), % output list of strings "y = \(y)"]; % interpolation \(expression) /*********************** * Basic types * ***********************/ int: i; 3..5: j; % integer float: f; 3.0..5.0: g; % floating point number bool: b; % boolean set of int: s; % set set of 3..5: t; /*********************** * Type-insts * ***********************/ var int: x; % declare variable % (also with float, bool, and set of int) var 3..7: y; % declare variable with domain (also 3.0..7.0) var set of 10..20: s; % declare set variable (only fixed set of int!) array[1..4,1..10] of var 0.0..100.0: f; % declare 2d array of float variables var opt 1..10: ox; % declare optional int variable (can be 1..10 or % absent) /********************* * Basic Constraints * *********************/ constraint x = y; constraint x < y; constraint x <= y; constraint x > y; constraint x >= y; constraint x != y; % not equals /********************** * Logical Connectives * **********************/ % conditionals int: d = if i > 10 then a elseif i > 0 then b else c endif; constraint if x < y then y < z else y > z endif; constraint x < y \/ y != z; % logical "or" constraint x < y /\ y != z; % logical "and" constraint x < y -> y != z; % logical implication constraint not (x < y /\ y > z); % logical negation /****************** * Set Constraints * ******************/ constraint s subset t; % non-strict subset relation constraint s intersect t subset w; % intersection constraint s union t subset w; % union /*************************** * Predicates and Functions * ***************************/ constraint all_different(x); % predicate call constraint mydiv(x,y) = 2; % function call /******************************** * Comprehensions and generators * ********************************/ array[int] of int: a = [ i | i in 1..10]; % create array [1,2,3,4,5,6,7,8,9,10] array[int] of int: a = [ i | i in 1..10 where i mod 3=0]; % create array [3, 6, 9] constraint forall (i,j in 1..n where i CheckUpdateDialog::CheckUpdateDialog(QWidget *parent) : QDialog(parent), ui(new Ui::CheckUpdateDialog) { ui->setupUi(this); } CheckUpdateDialog::~CheckUpdateDialog() { delete ui; } bool CheckUpdateDialog::sendStats(void) const { return ui->checkBox->isChecked(); } MiniZincIDE-2.0.10/MiniZincIDE/checkupdatedialog.h000066400000000000000000000005621263211763500215200ustar00rootroot00000000000000#ifndef CHECKUPDATEDIALOG_H #define CHECKUPDATEDIALOG_H #include namespace Ui { class CheckUpdateDialog; } class CheckUpdateDialog : public QDialog { Q_OBJECT public: explicit CheckUpdateDialog(QWidget *parent = 0); ~CheckUpdateDialog(); bool sendStats(void) const; private: Ui::CheckUpdateDialog *ui; }; #endif // CHECKUPDATEDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/checkupdatedialog.ui000066400000000000000000000170531263211763500217110ustar00rootroot00000000000000 CheckUpdateDialog Qt::ApplicationModal 0 0 480 284 0 0 387 226 Automatic check for updates true QLayout::SetMaximumSize QLayout::SetMinimumSize 0 0 124 104 124 104 :/images/mznlogo.png true Qt::Vertical 20 40 Qt::Horizontal QSizePolicy::Preferred 10 10 QLayout::SetMinimumSize 0 0 <html><head/><body><p>The MiniZinc IDE can check automatically once a day whether any updates are available. You can disable the check at any time in the preferences dialog.</p><p>You can also help us improve the IDE by sending some anonymous statistics together with the check for updates.</p></body></html> true 0 0 Send anonymous usage statistics true 0 0 <html><head/><body><p>Do you want to enable the automatic update check?</p></body></html> true Qt::Vertical 20 20 QLayout::SetMinimumSize Qt::Horizontal 40 20 No Yes true Qt::Vertical 20 20 yesbutton clicked() CheckUpdateDialog accept() 485 215 270 119 nobutton clicked() CheckUpdateDialog reject() 415 215 270 119 MiniZincIDE-2.0.10/MiniZincIDE/codeeditor.cpp000077500000000000000000000264671263211763500205530ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "codeeditor.h" #include "mainwindow.h" void CodeEditor::initUI(QFont& font) { setFont(font); setTabStopWidth(QFontMetrics(font).width(" ")); lineNumbers= new LineNumbers(this); connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(setLineNumbersWidth(int))); connect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(setLineNumbers(QRect,int))); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(cursorChange())); connect(document(), SIGNAL(modificationChanged(bool)), this, SLOT(docChanged(bool))); setLineNumbersWidth(0); cursorChange(); highlighter = new Highlighter(font,darkMode,document()); setDarkMode(darkMode); QTextCursor cursor(textCursor()); cursor.movePosition(QTextCursor::Start); setTextCursor(cursor); ensureCursorVisible(); setFocus(); } CodeEditor::CodeEditor(QTextDocument* doc, const QString& path, bool isNewFile, bool large, QFont& font, bool darkMode0, QTabWidget* t, QWidget *parent) : QPlainTextEdit(parent), loadContentsButton(NULL), tabs(t), darkMode(darkMode0) { if (doc) { QPlainTextEdit::setDocument(doc); } initUI(font); if (isNewFile) { filepath = ""; filename = path; } else { filepath = QFileInfo(path).absoluteFilePath(); filename = QFileInfo(path).fileName(); } if (large) { setReadOnly(true); QPushButton* pb = new QPushButton("Big file. Load contents?", this); connect(pb, SIGNAL(clicked()), this, SLOT(loadContents())); loadContentsButton = pb; } setAcceptDrops(false); installEventFilter(this); } void CodeEditor::loadContents() { static_cast(qApp)->loadLargeFile(filepath,this); } void CodeEditor::loadedLargeFile() { setReadOnly(false); delete loadContentsButton; loadContentsButton = NULL; } void CodeEditor::setDocument(QTextDocument *document) { if (document) { delete highlighter; highlighter = NULL; } disconnect(this, SIGNAL(blockCountChanged(int)), this, SLOT(setLineNumbersWidth(int))); disconnect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(setLineNumbers(QRect,int))); disconnect(this, SIGNAL(cursorPositionChanged()), this, SLOT(cursorChange())); disconnect(this->document(), SIGNAL(modificationChanged(bool)), this, SLOT(docChanged(bool))); QPlainTextEdit::setDocument(document); if (document) { QFont f= font(); highlighter = new Highlighter(f,darkMode,document); } connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(setLineNumbersWidth(int))); connect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(setLineNumbers(QRect,int))); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(cursorChange())); connect(this->document(), SIGNAL(modificationChanged(bool)), this, SLOT(docChanged(bool))); } void CodeEditor::setDarkMode(bool enable) { darkMode = enable; highlighter->setDarkMode(enable); highlighter->rehighlight(); if (darkMode) { setStyleSheet("QPlainTextEdit{color: #ffffff; background-color: #181818;}"); } else { setStyleSheet("QPlainTextEdit{color: #000000; background-color: #ffffff;}"); } } void CodeEditor::docChanged(bool c) { int t = tabs == NULL ? -1 : tabs->indexOf(this); if (t != -1) { QString title = tabs->tabText(t); title = title.mid(0, title.lastIndexOf(" *")); if (c) title += " *"; tabs->setTabText(t,title); } } void CodeEditor::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Tab) { e->accept(); QTextCursor cursor(textCursor()); cursor.insertText(" "); } else { QPlainTextEdit::keyPressEvent(e); } } int CodeEditor::lineNumbersWidth() { int width = 1; int bc = blockCount(); while (bc >= 10) { bc /= 10; ++width; } width = std::max(width,3); return 3 + fontMetrics().width(QLatin1Char('9')) * width; } void CodeEditor::setLineNumbersWidth(int) { setViewportMargins(lineNumbersWidth(), 0, 0, 0); } void CodeEditor::setLineNumbers(const QRect &rect, int dy) { if (dy) lineNumbers->scroll(0, dy); else lineNumbers->update(0, rect.y(), lineNumbers->width(), rect.height()); if (rect.contains(viewport()->rect())) setLineNumbersWidth(0); } void CodeEditor::resizeEvent(QResizeEvent *e) { QPlainTextEdit::resizeEvent(e); QRect cr = contentsRect(); lineNumbers->setGeometry(QRect(cr.left(), cr.top(), lineNumbersWidth(), cr.height())); if (loadContentsButton) { loadContentsButton->move(cr.left()+lineNumbersWidth(), cr.top()); } } void CodeEditor::cursorChange() { QList extraSelections; BracketData* bd = static_cast(textCursor().block().userData()); if (bd) { QVector& brackets = bd->brackets; int pos = textCursor().block().position(); for (int i=0; i(block.userData()); QVector& brackets = bd->brackets; int docPos = block.position(); for (; i(block.userData()); QVector& brackets = bd->brackets; if (i==-1) i = brackets.size()-1; int docPos = block.position(); for (; i>-1 && brackets.size()>0; i--) { Bracket& b = brackets[i]; if (b.b==')' || b.b=='}' || b.b==']') { nRight++; } else if (b.b==match && nRight==0) { return docPos+b.pos; } else { nRight--; } } block = block.previous(); i = -1; } return -1; } void CodeEditor::paintLineNumbers(QPaintEvent *event) { QPainter painter(lineNumbers); QFont lineNoFont = font(); QFontMetrics fm(lineNoFont); int origFontHeight = fm.height(); lineNoFont.setPointSizeF(lineNoFont.pointSizeF()*0.8); QFontMetrics fm2(lineNoFont); int heightDiff = (origFontHeight-fm2.height()); painter.setFont(lineNoFont); painter.fillRect(event->rect(), QColor(Qt::lightGray).lighter(120)); QTextBlock block = firstVisibleBlock(); int blockNumber = block.blockNumber(); int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top(); int bottom = top + (int) blockBoundingRect(block).height(); int curLine = textCursor().blockNumber(); while (block.isValid() && top <= event->rect().bottom()) { if (block.isVisible() && bottom >= event->rect().top()) { QString number = QString::number(blockNumber + 1); if (blockNumber == curLine) painter.setPen(Qt::black); else painter.setPen(Qt::gray); int textTop = top+fontMetrics().leading()+heightDiff; painter.drawText(0, textTop, lineNumbers->width(), fm2.height(), Qt::AlignRight, number); } block = block.next(); top = bottom; bottom = top + (int) blockBoundingRect(block).height(); ++blockNumber; } } void CodeEditor::setEditorFont(QFont& font) { setFont(font); document()->setDefaultFont(font); highlighter->setEditorFont(font); highlighter->rehighlight(); } bool CodeEditor::eventFilter(QObject *, QEvent *ev) { if (ev->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(ev); if (keyEvent == QKeySequence::Copy) { copy(); return true; } else if (keyEvent == QKeySequence::Cut) { cut(); return true; } } return false; } void CodeEditor::copy() { highlighter->copyHighlightedToClipboard(textCursor()); } void CodeEditor::cut() { highlighter->copyHighlightedToClipboard(textCursor()); textCursor().removeSelectedText(); } MiniZincIDE-2.0.10/MiniZincIDE/codeeditor.h000066400000000000000000000036671263211763500202120ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef CODEEDITOR_H #define CODEEDITOR_H #include #include #include "highlighter.h" class CodeEditor : public QPlainTextEdit { Q_OBJECT public: explicit CodeEditor(QTextDocument* doc, const QString& path, bool isNewFile, bool large, QFont& font, bool darkMode, QTabWidget* tabs, QWidget *parent); void paintLineNumbers(QPaintEvent *event); int lineNumbersWidth(); QString filepath; QString filename; void setEditorFont(QFont& font); void setDocument(QTextDocument *document); void setDarkMode(bool); protected: void resizeEvent(QResizeEvent *event); void initUI(QFont& font); virtual void keyPressEvent(QKeyEvent *e); bool eventFilter(QObject *, QEvent *); private slots: void setLineNumbersWidth(int newBlockCount); void cursorChange(); void setLineNumbers(const QRect &, int); void docChanged(bool); void loadContents(); private: QWidget* lineNumbers; QWidget* loadContentsButton; QTabWidget* tabs; Highlighter* highlighter; bool darkMode; int matchLeft(QTextBlock block, QChar b, int i, int n); int matchRight(QTextBlock block, QChar b, int i, int n); signals: public slots: void loadedLargeFile(); void copy(); void cut(); }; class LineNumbers: public QWidget { public: LineNumbers(CodeEditor *e) : QWidget(e), codeEditor(e) {} QSize sizeHint() const { return QSize(codeEditor->lineNumbersWidth(), 0); } protected: void paintEvent(QPaintEvent *event) { codeEditor->paintLineNumbers(event); } private: CodeEditor *codeEditor; }; #endif // CODEEDITOR_H MiniZincIDE-2.0.10/MiniZincIDE/courserasubmission.cpp000066400000000000000000000272661263211763500223640ustar00rootroot00000000000000#include "courserasubmission.h" #include "ui_courserasubmission.h" #include "mainwindow.h" #include #include #include #include #include #include #include #include CourseraSubmission::CourseraSubmission(MainWindow* mw0, CourseraProject& cp) : QDialog(NULL), _cur_phase(S_NONE), project(cp), mw(mw0), ui(new Ui::CourseraSubmission) { ui->setupUi(this); ui->selectedSolver->setText(mw->getProject().currentSolver()); QVBoxLayout* modelLayout = new QVBoxLayout; ui->modelBox->setLayout(modelLayout); QVBoxLayout* problemLayout = new QVBoxLayout; ui->problemBox->setLayout(problemLayout); for (int i=0; isetChecked(false); modelLayout->addWidget(cb); } for (int i=0; isetChecked(true); problemLayout->addWidget(cb); } if (project.models.empty()) modelLayout->addWidget(new QLabel("none")); if (project.problems.empty()) problemLayout->addWidget(new QLabel("none")); _output_stream.setString(&_submission); QSettings settings; settings.beginGroup("coursera"); ui->storePassword->setChecked(settings.value("storeLogin",false).toBool()); ui->login->setText(settings.value("login").toString()); ui->password->setText(settings.value("password").toString()); settings.endGroup(); } CourseraSubmission::~CourseraSubmission() { QSettings settings; settings.beginGroup("coursera"); bool storeLogin = ui->storePassword->isChecked(); settings.setValue("storeLogin", storeLogin); if (storeLogin) { settings.setValue("login",ui->login->text()); settings.setValue("password",ui->password->text()); } else { settings.setValue("login",""); settings.setValue("password",""); } settings.endGroup(); delete ui; } QByteArray CourseraSubmission::challenge_response(QString passwd, QString challenge) { QByteArray hash = QCryptographicHash::hash(QString(challenge+passwd).toLocal8Bit(), QCryptographicHash::Sha1); return hash.toHex(); } void CourseraSubmission::disableUI() { ui->loginGroup->setEnabled(false); ui->modelBox->setEnabled(false); ui->problemBox->setEnabled(false); ui->runButton->setText("Abort"); } void CourseraSubmission::enableUI() { ui->loginGroup->setEnabled(true); ui->modelBox->setEnabled(true); ui->problemBox->setEnabled(true); ui->runButton->setText("Run and submit"); } void CourseraSubmission::cancelOperation() { switch (_cur_phase) { case S_NONE: return; case S_WAIT_CHALLENGE: disconnect(reply, SIGNAL(finished()), this, SLOT(rcv_challenge())); break; case S_WAIT_SOLVE: disconnect(mw, SIGNAL(finished()), this, SLOT(solver_finished())); mw->on_actionStop_triggered(); break; case S_WAIT_SUBMIT: disconnect(reply, SIGNAL(finished()), this, SLOT(rcv_solution_reply())); break; } ui->textBrowser->insertPlainText("Aborted.\n"); _cur_phase = S_NONE; enableUI(); } void CourseraSubmission::reject() { if (_cur_phase != S_NONE && QMessageBox::warning(this, "MiniZinc IDE", "Do you want to close this window and abort the Coursera submission?", QMessageBox::Close| QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) { return; } cancelOperation(); QDialog::reject(); } void CourseraSubmission::on_checkLoginButton_clicked() { _current_model = -2; get_challenge(); } void CourseraSubmission::get_challenge() { QString email = ui->login->text(); if (email.isEmpty()) { QMessageBox::warning(this, "MiniZinc IDE", "Enter an email address for Coursera login!"); _current_model = -2; return; } if (ui->password->text().isEmpty()) { QMessageBox::warning(this, "MiniZinc IDE", "Enter a password for Coursera login!"); _current_model = -2; return; } QUrl url("https://class.coursera.org/" + project.course + "/assignment/challenge"); QUrlQuery q; q.addQueryItem("email_address", email); q.addQueryItem("assignment_part_sid", "6vp6Er9J-dev"); q.addQueryItem("response_encoding","delim"); url.setQuery(q); QNetworkRequest request; request.setUrl(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); _cur_phase = S_WAIT_CHALLENGE; reply = IDE::instance()->networkManager->get(request); connect(reply, SIGNAL(finished()), this, SLOT(rcv_challenge())); } void CourseraSubmission::rcv_challenge() { disconnect(reply, SIGNAL(finished()), this, SLOT(rcv_challenge())); reply->deleteLater(); QString challenge = reply->readAll(); QStringList fields = challenge.split("|"); if (fields.size() < 7) { QMessageBox::warning(this, "MiniZinc IDE", "Error: cannot connect to Coursera.\n"+challenge); _cur_phase = S_NONE; enableUI(); return; } _login = fields[2]; QString ch = fields[4]; _state = fields[6]; _ch_resp = challenge_response(ui->password->text(),ch); if (_current_model < 0) { // Check login information _submission = "0"; _source = ""; _sid = project.checkpwdSid; if (_current_model == -1) ui->textBrowser->insertPlainText("Checking login\n"); submit_solution(); } else { int n_problems = project.problems.size(); CourseraItem& item = _current_model < n_problems ? project.problems[_current_model] : project.models[_current_model-n_problems]; QStringList allfiles = mw->getProject().files(); bool foundFile = false; for (int i=0; itextBrowser->insertPlainText("Error: could not open "+item.name+"\n"); ui->textBrowser->insertPlainText("Skipping.\n"); goto_next(); return; } break; } } if (!foundFile) { ui->textBrowser->insertPlainText("Error: could not find "+item.name+"\n"); ui->textBrowser->insertPlainText("Skipping.\n"); goto_next(); return; } _sid = item.id; if (_current_model < n_problems) { _submission.clear(); connect(mw, SIGNAL(finished()), this, SLOT(solver_finished())); ui->textBrowser->insertPlainText("Running "+item.name+"\n"); _cur_phase = S_WAIT_SOLVE; mw->addOutput("
Running Coursera submission "+item.name+"

\n"); if (!mw->runWithOutput(item.model, item.data, item.timeout, _output_stream)) { ui->textBrowser->insertPlainText("Error: could not run "+item.name+"\n"); ui->textBrowser->insertPlainText("Skipping.\n"); goto_next(); } return; } else { // Submit model source code _submission = _source; _source = ""; ui->textBrowser->insertPlainText("Submitting model "+item.name+"\n"); submit_solution(); } } } void CourseraSubmission::submit_solution() { QUrl url("https://class.coursera.org/" + project.course + "/assignment/submit"); QUrlQuery q; q.addQueryItem("email_address", QUrl::toPercentEncoding(_login)); q.addQueryItem("assignment_part_sid", QUrl::toPercentEncoding(_sid)); q.addQueryItem("submission", QUrl::toPercentEncoding(_submission.toUtf8().toBase64())); q.addQueryItem("submission_aux",QUrl::toPercentEncoding(_source.toUtf8().toBase64())); q.addQueryItem("challenge_response", QUrl::toPercentEncoding(_ch_resp)); q.addQueryItem("state",QUrl::toPercentEncoding(_state)); QNetworkRequest request; request.setUrl(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); _cur_phase = S_WAIT_SUBMIT; reply = IDE::instance()->networkManager->post(request,q.toString().toLocal8Bit()); connect(reply, SIGNAL(finished()), this, SLOT(rcv_solution_reply())); } void CourseraSubmission::rcv_solution_reply() { disconnect(reply, SIGNAL(finished()), this, SLOT(rcv_solution_reply())); reply->deleteLater(); QString message = reply->readAll(); if (_current_model < 0) { if (message != "password verified") { QMessageBox::warning(this, "MiniZinc IDE", "Login failed! Message: "+message); _current_model = -2; _cur_phase = S_NONE; return; } if (_current_model == -2) { QMessageBox::information(this, "MiniZinc IDE", "Login successful!"); _cur_phase = S_NONE; return; } } ui->textBrowser->insertPlainText("== "+message+"\n"); goto_next(); } void CourseraSubmission::solver_finished() { disconnect(mw, SIGNAL(finished()), this, SLOT(solver_finished())); QStringList solutions = _submission.split("----------"); if (solutions.size() >= 2) { _submission = solutions[solutions.size()-2]+"----------"+solutions[solutions.size()-1]; } if (_submission.size()==0 || _submission[_submission.size()-1] != '\n') _submission += "\n"; _submission += "unknown time\nMiniZinc IDE submission"; ui->textBrowser->insertPlainText("Submitting solution\n"); submit_solution(); } void CourseraSubmission::goto_next() { int n_models = project.models.size(); int n_problems = project.problems.size(); bool done = false; do { _current_model++; if (_current_model < n_problems) { QCheckBox* cb = qobject_cast(ui->problemBox->layout()->itemAt(_current_model)->widget()); done = cb->isChecked(); } else if (_current_model < n_models+n_problems) { int idx = _current_model - n_problems; QCheckBox* cb = qobject_cast(ui->modelBox->layout()->itemAt(idx)->widget()); done = cb->isChecked(); } if (_current_model >= n_models+n_problems) { ui->textBrowser->insertPlainText("Done.\n"); _cur_phase = S_NONE; ui->runButton->setText("Done."); ui->runButton->setEnabled(false); ui->buttonBox->button(QDialogButtonBox::Close)->setDefault(true); return; } } while (!done); get_challenge(); } void CourseraSubmission::on_runButton_clicked() { if (_cur_phase==S_NONE) { _current_model = -1; disableUI(); goto_next(); } else { cancelOperation(); } } void CourseraSubmission::on_storePassword_toggled(bool checked) { if (!checked) { QSettings settings; settings.beginGroup("coursera"); settings.setValue("storeLogin", false); settings.setValue("login",""); settings.setValue("password",""); settings.endGroup(); } } MiniZincIDE-2.0.10/MiniZincIDE/courserasubmission.h000066400000000000000000000024201263211763500220120ustar00rootroot00000000000000#ifndef COURSERASUBMISSION_H #define COURSERASUBMISSION_H #include #include #include "project.h" class QNetworkReply; class MainWindow; namespace Ui { class CourseraSubmission; } class CourseraSubmission : public QDialog { Q_OBJECT public: explicit CourseraSubmission(MainWindow* mw, CourseraProject& cp); ~CourseraSubmission(); protected: enum State { S_NONE, S_WAIT_CHALLENGE, S_WAIT_SUBMIT, S_WAIT_SOLVE } _cur_phase; int _current_model; QString _submission; QString _source; QTextStream _output_stream; QString _login; QString _sid; QString _ch_resp; QString _state; CourseraProject& project; MainWindow* mw; QNetworkReply* reply; QByteArray challenge_response(QString passwd, QString challenge); void disableUI(void); void enableUI(void); void cancelOperation(void); public slots: void reject(); private slots: void on_checkLoginButton_clicked(); void get_challenge(); void rcv_challenge(); void submit_solution(); void rcv_solution_reply(); void solver_finished(); void goto_next(); void on_runButton_clicked(); void on_storePassword_toggled(bool checked); private: Ui::CourseraSubmission *ui; }; #endif // COURSERASUBMISSION_H MiniZincIDE-2.0.10/MiniZincIDE/courserasubmission.ui000066400000000000000000000160411263211763500222040ustar00rootroot00000000000000 CourseraSubmission 0 0 521 585 0 0 Submit to Coursera Problems to run and submit Models to submit Coursera login information QLayout::SetMinimumSize Submission login: QLayout::SetMinimumSize Submission password: QLineEdit::Password 0 0 Note that this is your assignment submission password, not your Coursera login and password. Qt::RichText true QLayout::SetMinimumSize Remember password Qt::Horizontal 40 20 Check login Selected solver for running models (change in Configuration tab) Selected solver Qt::Vertical QSizePolicy::Minimum 20 10 Run and submit false true Qt::Vertical QSizePolicy::Minimum 20 10 Submission output 0 0 0 0 Qt::Horizontal QDialogButtonBox::Close buttonBox accepted() CourseraSubmission accept() 248 254 157 274 buttonBox rejected() CourseraSubmission reject() 316 260 286 274 MiniZincIDE-2.0.10/MiniZincIDE/finddialog.cpp000066400000000000000000000061011263211763500205060ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "finddialog.h" #include "ui_finddialog.h" #include "codeeditor.h" #include FindDialog::FindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::FindDialog), codeEditor(NULL) { ui->setupUi(this); } FindDialog::~FindDialog() { delete ui; } void FindDialog::show() { ui->not_found->setText(""); QDialog::show(); } void FindDialog::setEditor(CodeEditor* e) { codeEditor = e; } void FindDialog::find(bool fwd) { const QString& toFind = ui->find->text(); QTextDocument::FindFlags flags; if (!fwd) flags |= QTextDocument::FindBackward; bool ignoreCase = ui->check_case->isChecked(); if (!ignoreCase) flags |= QTextDocument::FindCaseSensitively; bool wrap = ui->check_wrap->isChecked(); QTextCursor cursor(codeEditor->textCursor()); int hasWrapped = wrap ? 0 : 1; while (hasWrapped < 2) { if (ui->check_re->isChecked()) { QRegExp re(toFind, ignoreCase ? Qt::CaseInsensitive : Qt::CaseSensitive); if (!re.isValid()) { ui->not_found->setText("invalid"); return; } cursor = codeEditor->document()->find(re,cursor,flags); } else { cursor = codeEditor->document()->find(toFind,cursor,flags); } if (cursor.isNull()) { hasWrapped++; cursor = codeEditor->textCursor(); if (fwd) { cursor.setPosition(0); } else { cursor.movePosition(QTextCursor::End); } } else { ui->not_found->setText(""); codeEditor->setTextCursor(cursor); break; } } if (hasWrapped==2) { ui->not_found->setText("not found"); } } void FindDialog::on_b_next_clicked() { find(true); } void FindDialog::on_b_prev_clicked() { find(false); } void FindDialog::on_b_replacefind_clicked() { QTextCursor cursor = codeEditor->textCursor(); if (cursor.hasSelection()) { cursor.insertText(ui->replace->text()); } find(true); } void FindDialog::on_b_replace_clicked() { QTextCursor cursor = codeEditor->textCursor(); if (cursor.hasSelection()) { cursor.insertText(ui->replace->text()); } } void FindDialog::on_b_replaceall_clicked() { int counter = 0; QTextCursor cursor = codeEditor->textCursor(); if (!cursor.hasSelection()) { find(true); cursor = codeEditor->textCursor(); } cursor.beginEditBlock(); while (cursor.hasSelection()) { counter++; cursor.insertText(ui->replace->text()); find(true); cursor = codeEditor->textCursor(); } cursor.endEditBlock(); if (counter > 0) { ui->not_found->setText(QString().number(counter)+" replaced"); } } MiniZincIDE-2.0.10/MiniZincIDE/finddialog.h000066400000000000000000000016041263211763500201560ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef FINDDIALOG_H #define FINDDIALOG_H #include namespace Ui { class FindDialog; } class CodeEditor; class FindDialog : public QDialog { Q_OBJECT public: explicit FindDialog(QWidget *parent = 0); ~FindDialog(); void setEditor(CodeEditor* doc); public slots: void on_b_next_clicked(); void on_b_prev_clicked(); void on_b_replacefind_clicked(); void on_b_replace_clicked(); void on_b_replaceall_clicked(); void show(); private: Ui::FindDialog *ui; CodeEditor* codeEditor; void find(bool fwd); }; #endif // FINDDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/finddialog.ui000066400000000000000000000105361263211763500203500ustar00rootroot00000000000000 FindDialog 0 0 589 161 Find 84 23 27 16 Find 119 22 450 21 300 0 62 56 49 16 Replace 119 53 450 21 300 0 144 81 151 20 0 0 Regular expression 305 81 101 20 Ignore case 435 81 111 20 Wrap around 10 120 114 32 Replace all 130 120 81 32 Replace 220 120 141 32 Replace and find 424 120 81 32 Previous 504 120 71 32 Next true 20 83 91 20 not found Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter MiniZincIDE-2.0.10/MiniZincIDE/fzndoc.cpp000066400000000000000000000005771263211763500177040ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "fzndoc.h" FznDoc::FznDoc(QObject *parent) : QObject(parent) { } MiniZincIDE-2.0.10/MiniZincIDE/fzndoc.h000066400000000000000000000012361263211763500173420ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef FZNDOC_H #define FZNDOC_H #include class FznDoc : public QObject { Q_OBJECT Q_PROPERTY(QString str READ str WRITE setstr) public: explicit FznDoc(QObject *parent = 0); void setstr(const QString& s) { m_str =s ; } QString str(void) { return m_str; } private: QString m_str; }; #endif // FZNDOC_H MiniZincIDE-2.0.10/MiniZincIDE/gotolinedialog.cpp000066400000000000000000000012171263211763500214110ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gotolinedialog.h" #include "ui_gotolinedialog.h" GoToLineDialog::GoToLineDialog(QWidget *parent) : QDialog(parent), ui(new Ui::GoToLineDialog) { ui->setupUi(this); ui->line->setFocus(); } GoToLineDialog::~GoToLineDialog() { delete ui; } int GoToLineDialog::getLine(bool *ok) { return ui->line->text().toInt(ok); } MiniZincIDE-2.0.10/MiniZincIDE/gotolinedialog.h000066400000000000000000000012071263211763500210550ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef GOTOLINEDIALOG_H #define GOTOLINEDIALOG_H #include namespace Ui { class GoToLineDialog; } class GoToLineDialog : public QDialog { Q_OBJECT public: explicit GoToLineDialog(QWidget *parent = 0); ~GoToLineDialog(); int getLine(bool* ok); private: Ui::GoToLineDialog *ui; }; #endif // GOTOLINEDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/gotolinedialog.ui000066400000000000000000000034411263211763500212450ustar00rootroot00000000000000 GoToLineDialog 0 0 179 78 Go to line true 10 40 161 32 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok 10 10 161 21 line buttonBox buttonBox accepted() GoToLineDialog accept() 248 254 157 274 buttonBox rejected() GoToLineDialog reject() 316 260 286 274 MiniZincIDE-2.0.10/MiniZincIDE/help.cpp000066400000000000000000000010651263211763500173420ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "help.h" #include "ui_help.h" #include Help::Help(QWidget *parent) : QMainWindow(parent), ui(new Ui::Help) { ui->setupUi(this); } Help::~Help() { delete ui; } void Help::closeEvent(QCloseEvent* e) { e->accept(); } MiniZincIDE-2.0.10/MiniZincIDE/help.h000066400000000000000000000011321263211763500170020ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef HELP_H #define HELP_H #include namespace Ui { class Help; } class Help : public QMainWindow { Q_OBJECT public: explicit Help(QWidget *parent = 0); ~Help(); protected: virtual void closeEvent(QCloseEvent*); private: Ui::Help *ui; }; #endif // HELP_H MiniZincIDE-2.0.10/MiniZincIDE/help.ui000066400000000000000000001022241263211763500171740ustar00rootroot00000000000000 Help 0 0 643 949 MiniZinc IDE Help <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'.Helvetica Neue DeskInterface'; font-size:13pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/images/mznicon.png" height="100" /></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:24pt; font-weight:600;">The MiniZinc IDE</span></p> <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI'; font-size:24pt; font-weight:600;"><br /></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.minizinc.org"><span style=" font-family:'.Lucida Grande UI'; text-decoration: underline; color:#0000ff;">www.minizinc.org</span></a></p> <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI'; text-decoration: underline; color:#0000ff;"><br /></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Overview</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The MiniZinc IDE lets you edit and run MiniZinc models. It requires a working installation of the the </span><a href="http://www.minizinc.org/2.0"><span style=" font-family:'.Lucida Grande UI'; text-decoration: underline; color:#0000ff;">NICTA MiniZinc distribution</span></a><span style=" font-family:'.Lucida Grande UI';"> (which is included if you downloaded the bundled version of the IDE).</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">When starting the MiniZinc IDE for the first time, you may be prompted to set the path to the MiniZinc distribution. Please see </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Solver Configuration</span><span style=" font-family:'.Lucida Grande UI';"> below on how to set up this path.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Editing</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can open MiniZinc model files (.mzn), MiniZinc data files (.dzn), and FlatZinc files (.fzn) in the editor. Just have a look at the menus to find out which editing commands are available.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can also open </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">project files</span><span style=" font-family:'.Lucida Grande UI';"> (.mzp). These files store the current project settings and all open editing tabs.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Project Explorer</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The project explorer shows the files that are part of the current project. Some of these files may be open in editor tabs, others are just part of the project but not currently open. You can add files by right-clicking in the project drawer and selecting &quot;Add existing file...&quot; from the context menu.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">By right-clicking on a data file (with extension .dzn) in the project explorer, you can run the model in the currently open editor tab using that data file.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Project Configuration</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Your project can be configured in the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Configuration</span><span style=" font-family:'.Lucida Grande UI';"> tab. You can save and load projects and open a new one from the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">File</span><span style=" font-family:'.Lucida Grande UI';"> menu.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The top section configures the data file to use when running a model. You can select from all .dzn files in your project, or add a new file to the project directly from the menu.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The second section configures the solver to be used. You can pick one of the available solvers from the drop-down box. See </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Solver Configuration</span><span style=" font-family:'.Lucida Grande UI';"> below on how to add third party solvers to this menu.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can configure the number of solutions to search for and whether all solutions are to be printed. </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Time limit</span><span style=" font-family:'.Lucida Grande UI';"> sets a timeout in seconds after which the solver process is killed. Note that the solver does not get a chance to report statistics or any solutions found when it is killed.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">In the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Advanced Options</span><span style=" font-family:'.Lucida Grande UI';"> section, you can set some more parameters for translation and solving.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Additional data </span><span style=" font-family:'.Lucida Grande UI';">field can contain additional MiniZinc expressions that you want to pass to the mzn2fzn compiler. For example, if you are solving a problem that has an integer parameter n, you can tick the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Additional data</span><span style=" font-family:'.Lucida Grande UI';"> box and enter n=10 into the textfield.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">This corresponds to running the minizinc command line tool with option -D&quot;n=10&quot;.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Number of threads</span><span style=" font-family:'.Lucida Grande UI';"> option allows you to specify the number of parallel threads to use (if supported by the solver).</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Random seed</span><span style=" font-family:'.Lucida Grande UI';"> is passed to the solver and may be used for randomised search strategies.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can also set additional </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Solver flags </span><span style=" font-family:'.Lucida Grande UI';">that are understood by the concrete FlatZinc implementation you have chosen.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Verbose</span><span style=" font-family:'.Lucida Grande UI';"> option prints the entire command line, which can be useful if the solver reports an error that may be due to a misconfiguration.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Finally, you can ask the solver to print (solver-specific) statistics during or after solving.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Running</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">In order to send the MiniZinc model you are currently editing to a solver, simply select </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Run</span><span style=" font-family:'.Lucida Grande UI';"> from the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">MiniZinc</span><span style=" font-family:'.Lucida Grande UI';"> menu (or the tool bar).</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">If there are any undefined parameters in your model (and you did not select a data file or additional parameters in the Configuration tab), a dialog will open where you can enter values for those parameters.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">If there are any errors in your model, the error messages appear in the output area, and you can click on them to go directly to the location of the error in your model.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The solver output also appears in the output area. The elapsed time is shown in the right hand corner of the status bar.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can stop the solving process at any time using the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Stop</span><span style=" font-family:'.Lucida Grande UI';"> option from the MiniZinc menu.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">As an option for advanced users, you can compile a model to FlatZinc without running it (select </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Compile</span><span style=" font-family:'.Lucida Grande UI';"> from the MiniZinc menu). This can sometimes help you detect inefficiences in the model.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Solver Configuration</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The solver configuration dialog is available via the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Preferences</span><span style=" font-family:'.Lucida Grande UI';"> options in the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">MiniZinc</span><span style=" font-family:'.Lucida Grande UI';"> menu (or in the application menu on Mac OS X). All configuration options entered here are saved between sessions.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">This is where you can set the path to the MiniZinc distribution (i.e., where the mzn2fzn tool is located). This field should be empty if you are using the bundled version of the IDE.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can set the default solver, i.e., the one that is selected in the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Configuration</span><span style=" font-family:'.Lucida Grande UI';"> tab for a new project. Select a solver from the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Solver</span><span style=" font-family:'.Lucida Grande UI';"> drop-down box and tick the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Default</span><span style=" font-family:'.Lucida Grande UI';"> box.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">You can also add third-party solvers. For example, to add support for the Gecode FlatZinc interpreter, choose &quot;Add new...&quot; from the </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Solver</span><span style=" font-family:'.Lucida Grande UI';"> drop-down box, then enter the following:</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Name: Gecode</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">(this is just the name used in menus etc)</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Executable: fzn-gecode</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">(assuming you installed Gecode so that fzn-gecode is on the path, otherwise enter the complete path)</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">MiniZinc library path: -I/usr/local/share/gecode/mznlib</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">(this assumes a Unix or Mac OS installation, on Windows change it accordingly to the Program Files/Gecode/mznlib directory)</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Backend option:</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">(leave empty)</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">Finally click </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Add</span><span style=" font-family:'.Lucida Grande UI';"> to add the solver.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">The </span><span style=" font-family:'.Lucida Grande UI'; font-style:italic;">Detach</span><span style=" font-family:'.Lucida Grande UI';"> option is useful for solvers that provide their own graphical user interface. If you select detach, the solver will be started in a background process, and you won't be able to see its output or stop its execution from within the IDE.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI';"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;">Bugs</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'.Lucida Grande UI'; font-size:14pt; font-weight:600;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">If you encounter any problems with the MiniZinc IDE, please report it using the issues tracker at</span></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/MiniZinc/MiniZincIDE/issues"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/MiniZinc/MiniZincIDE/issues</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.Lucida Grande UI';">If you find a bug in MiniZinc itself, please use the MiniZinc issues tracker at</span></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/MiniZinc/MiniZincIDE/issues"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/MiniZinc/libminizinc/issues</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> true true MiniZincIDE-2.0.10/MiniZincIDE/highlighter.cpp000066400000000000000000000162251263211763500207140ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "highlighter.h" Highlighter::Highlighter(QFont& font, bool dm, QTextDocument *parent) : QSyntaxHighlighter(parent) { Rule rule; quoteFormat.setForeground(Qt::darkRed); rule.pattern = QRegExp("\"([^\"\\\\]|\\\\.)*\""); rule.format = quoteFormat; rules.append(rule); commentFormat.setForeground(Qt::red); rule.pattern = QRegExp("%[^\n]*"); rule.format = commentFormat; rules.append(rule); QStringList patterns; patterns << "\\bann\\b" << "\\bannotation\\b" << "\\bany\\b" << "\\barray\\b" << "\\bbool\\b" << "\\bcase\\b" << "\\bconstraint\\b" << "\\bdefault\\b" << "\\bdiv\\b" << "\\bdiff\\b" << "\\belse\\b" << "\\belseif\\b" << "\\bendif\\b" << "\\benum\\b" << "\\bfloat\\b" << "\\bfunction\\b" << "\\bif\\b" << "\\binclude\\b" << "\\bintersect\\b" << "\\bin\\b" << "\\bint\\b" << "\\blet\\b" << "\\bmaximize\\b" << "\\bminimize\\b" << "\\bmod\\b" << "\\bnot\\b" << "\\bof\\b" << "\\boutput\\b" << "\\bopt\\b" << "\\bpar\\b" << "\\bpredicate\\b" << "\\brecord\\b" << "\\bsatisfy\\b" << "\\bset\\b" << "\\bsolve\\b" << "\\bstring\\b" << "\\bsubset\\b" << "\\bsuperset\\b" << "\\bsymdiff\\b" << "\\btest\\b" << "\\bthen\\b" << "\\btuple\\b" << "\\btype\\b" << "\\bunion\\b" << "\\bvar\\b" << "\\bvariant_record\\b" << "\\bwhere\\b" << "\\bxor\\b"; QTextCharFormat format; format.setFontWeight(QFont::Bold); for (int i=0; i= 0) { int length = expression.matchedLength(); if (format(index)!=quoteFormat && format(index)!=commentFormat) { setFormat(index, length, rule.format); } index = expression.indexIn(text, index + length); } } BracketData* bd = new BracketData; QRegExp re("\\(|\\)|\\{|\\}|\\[|\\]"); int pos = text.indexOf(re); while (pos != -1) { if (format(pos)!=quoteFormat && format(pos)!=commentFormat) { Bracket b; b.b = text.at(pos); b.pos = pos; bd->brackets.append(b); } pos = text.indexOf(re, pos+1); } setCurrentBlockUserData(bd); setCurrentBlockState(0); int commentStartIndex = 0; if (previousBlockState() != 1) { commentStartIndex = commentStartExp.indexIn(text); } while (commentStartIndex >= 0) { int commentEndIndex = commentEndExp.indexIn(text, commentStartIndex); int commentLength; if (commentEndIndex == -1) { setCurrentBlockState(1); commentLength = text.length() - commentStartIndex; } else { commentLength = commentEndIndex - commentStartIndex + commentEndExp.matchedLength(); } setFormat(commentStartIndex, commentLength, commentFormat); commentStartIndex = commentStartExp.indexIn(text, commentStartIndex + commentLength); } } #include #include #include #include #include #include #include class MyMimeDataExporter : public QTextEdit { public: QMimeData* md(void) const { QMimeData* mymd = createMimeDataFromSelection(); mymd->removeFormat("text/plain"); return mymd; } }; void Highlighter::copyHighlightedToClipboard(QTextCursor cursor) { QTextDocument* tempDocument(new QTextDocument); Q_ASSERT(tempDocument); QTextCursor tempCursor(tempDocument); tempCursor.insertFragment(cursor.selection()); tempCursor.select(QTextCursor::Document); QTextCharFormat textfmt = cursor.charFormat(); textfmt.setFont(quoteFormat.font()); tempCursor.setCharFormat(textfmt); QTextBlock start = document()->findBlock(cursor.selectionStart()); QTextBlock end = document()->findBlock(cursor.selectionEnd()); end = end.next(); const int selectionStart = cursor.selectionStart(); const int endOfDocument = tempDocument->characterCount() - 1; for(QTextBlock current = start; current.isValid() && current != end; current = current.next()) { const QTextLayout* layout(current.layout()); foreach(const QTextLayout::FormatRange &range, layout->additionalFormats()) { const int start = current.position() + range.start - selectionStart; const int end = start + range.length; if(end <= 0 || start >= endOfDocument) continue; tempCursor.setPosition(qMax(start, 0)); tempCursor.setPosition(qMin(end, endOfDocument), QTextCursor::KeepAnchor); tempCursor.setCharFormat(range.format); } } for(QTextBlock block = tempDocument->begin(); block.isValid(); block = block.next()) block.setUserState(-1); tempCursor.select(QTextCursor::Document); QTextBlockFormat blockFormat = cursor.blockFormat(); blockFormat.setNonBreakableLines(true); tempCursor.setBlockFormat(blockFormat); MyMimeDataExporter te; te.setDocument(tempDocument); te.selectAll(); QMimeData* mimeData = te.md(); QApplication::clipboard()->setMimeData(mimeData); delete tempDocument; } void Highlighter::setDarkMode(bool enable) { darkMode = enable; if (darkMode) { rules[0].format.setForeground(QColor(143,157,106)); commentFormat.setForeground(QColor(90,90,90)); rules[1].format.setForeground(QColor(90,90,90)); for (int i=2; i * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef HIGHLIGHTER_H #define HIGHLIGHTER_H #include #include #include struct Bracket { QChar b; int pos; }; class BracketData : public QTextBlockUserData { public: QVector brackets; }; class Highlighter : public QSyntaxHighlighter { Q_OBJECT public: Highlighter(QFont& font, bool darkMode, QTextDocument *parent = 0); void setEditorFont(QFont& font); void copyHighlightedToClipboard(QTextCursor selectionCursor); void setDarkMode(bool); protected: void highlightBlock(const QString &text); private: struct Rule { QRegExp pattern; QTextCharFormat format; }; QVector rules; QTextCharFormat quoteFormat; QTextCharFormat commentFormat; QRegExp commentStartExp; QRegExp commentEndExp; bool darkMode; }; #endif // HIGHLIGHTER_H MiniZincIDE-2.0.10/MiniZincIDE/htmlpage.cpp000077500000000000000000000033651263211763500202230ustar00rootroot00000000000000#include "htmlpage.h" #include "mainwindow.h" #include "QDebug" #include HTMLPage::HTMLPage(MainWindow* mw, QWidget *parent) : QWebPage(parent), _mw(mw), loadFinished(false) { connect(this, SIGNAL(loadFinished(bool)), this, SLOT(pageLoadFinished(bool))); connect(mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(jsCleared())); } void HTMLPage::javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID) { _mw->addOutput("
JavaScript message: source " +sourceID + ", line no. " + QString().number(lineNumber) + ": " + message + "

\n"); } void HTMLPage::jsCleared() { mainFrame()->addToJavaScriptWindowObject("mznide", this); } void HTMLPage::selectSolution(int n) { _mw->selectJSONSolution(this,n); } void HTMLPage::pageLoadFinished(bool ok) { if (ok) { loadFinished = true; for (int i=0; ievaluateJavaScript(json[i]); } json.clear(); } } void HTMLPage::addSolution(const QString &json0) { QString j = json0; j.replace("'","\\'"); j.replace("\"","\\\""); j.replace("\n"," "); if (loadFinished) { mainFrame()->evaluateJavaScript("addSolution('"+j+"')"); } else { json.push_back("addSolution('"+j+"')"); } } void HTMLPage::finish(qint64 runtime) { QString jscall = "if (typeof finish == 'function') { finish("+QString().number(runtime)+"); }"; if (loadFinished) { mainFrame()->evaluateJavaScript(jscall); } else { json.push_back(jscall); } } void HTMLPage::showSolution(int n) { if (loadFinished) { mainFrame()->evaluateJavaScript("gotoSolution('"+QString().number(n)+"')"); } } MiniZincIDE-2.0.10/MiniZincIDE/htmlpage.h000066400000000000000000000011731263211763500176600ustar00rootroot00000000000000#ifndef HTMLPAGE_H #define HTMLPAGE_H #include class MainWindow; class HTMLPage : public QWebPage { Q_OBJECT protected: MainWindow* _mw; QStringList json; bool loadFinished; public: explicit HTMLPage(MainWindow* mw, QWidget *parent = 0); virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID); void addSolution(const QString& json); void showSolution(int n); void finish(qint64 runtime); public slots: void selectSolution(int n); private slots: void pageLoadFinished(bool ok); void jsCleared(void); }; #endif // HTMLPAGE_H MiniZincIDE-2.0.10/MiniZincIDE/htmlwindow.cpp000077500000000000000000000037561263211763500206220ustar00rootroot00000000000000#include "htmlwindow.h" #include "ui_htmlwindow.h" #include "htmlpage.h" #include #include #include #include #include HTMLWindow::HTMLWindow(const QVector& specs, MainWindow* mw, QWidget *parent) : QMainWindow(parent), ui(new Ui::HTMLWindow) { ui->setupUi(this); for (int i=0; isetPage(p); loadQueue.append(QPair(wv,specs[i].url)); QDockWidget* dw = new QDockWidget(this); dw->setFeatures(QDockWidget::DockWidgetMovable); dw->setWidget(wv); addDockWidget(specs[i].area,dw); } if (specs.size() > 0) { connect(loadQueue[0].first, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); QWebView* wv0 = loadQueue[0].first; QString url0 = loadQueue[0].second; wv0->load(QUrl::fromUserInput(url0)); } } HTMLWindow::~HTMLWindow() { delete ui; } void HTMLWindow::addSolution(int nVis, const QString &json) { pages[nVis]->addSolution(json); } void HTMLWindow::selectSolution(HTMLPage *source, int n) { for (int i=0; ishowSolution(n); } } void HTMLWindow::finish(qint64 runtime) { for (int i=0; ifinish(runtime); } } void HTMLWindow::loadFinished(bool) { disconnect(loadQueue[0].first, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); loadQueue.pop_front(); if (loadQueue.size() > 0) { connect(loadQueue[0].first, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); QWebView* wv0 = loadQueue[0].first; QString url0 = loadQueue[0].second; wv0->load(QUrl::fromUserInput(url0)); } } void HTMLWindow::closeEvent(QCloseEvent * event) { emit closeWindow(); event->accept(); } MiniZincIDE-2.0.10/MiniZincIDE/htmlwindow.h000066400000000000000000000017341263211763500202560ustar00rootroot00000000000000#ifndef HTMLWINDOW_H #define HTMLWINDOW_H #include #include #include "htmlpage.h" namespace Ui { class HTMLWindow; } class MainWindow; class VisWindowSpec { public: QString url; Qt::DockWidgetArea area; VisWindowSpec(const QString& url0, const Qt::DockWidgetArea& area0 = Qt::TopDockWidgetArea) : url(url0), area(area0) {} VisWindowSpec(void) {} }; class HTMLWindow : public QMainWindow { Q_OBJECT public: explicit HTMLWindow(const QVector& specs, MainWindow* mw, QWidget *parent = 0); ~HTMLWindow(); void addSolution(int nVis, const QString& json); void selectSolution(HTMLPage* source, int n); void finish(qint64 runtime); private: Ui::HTMLWindow *ui; QVector pages; QVector > loadQueue; protected: void closeEvent(QCloseEvent *); private slots: void loadFinished(bool); signals: void closeWindow(void); }; #endif // HTMLWINDOW_H MiniZincIDE-2.0.10/MiniZincIDE/htmlwindow.ui000066400000000000000000000020601263211763500204350ustar00rootroot00000000000000 HTMLWindow 0 0 800 600 MainWindow 0 0 16777215 5 0 0 800 22 MiniZincIDE-2.0.10/MiniZincIDE/images/000077500000000000000000000000001263211763500171515ustar00rootroot00000000000000MiniZincIDE-2.0.10/MiniZincIDE/images/about.html000066400000000000000000000015471263211763500211600ustar00rootroot00000000000000

The MiniZinc IDE

Version $VERSION
Author: Guido Tack
Copyright Monash University and NICTA 2013, 2014, 2015
This program is provided under the terms of the Mozilla Public License Version 2.0. It uses the Qt toolkit, available from qt-project.org.
lala
MiniZincIDE-2.0.10/MiniZincIDE/images/coursera.png000066400000000000000000000332211263211763500215030ustar00rootroot00000000000000‰PNG  IHDRÃÃX†qÞgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYs  šœËiTXtXML:com.adobe.xmp 1 Adobe ImageReady ²#~ñ40IDATxíÝÛuÜ8¶ðqò¬Ö›}"°&‚Ö5XŠÀÕoîyM]Á¨_ÆzëR’#)‚£Ž`4×›zE|{“,w•T¼7€ük-».¼â²6 1ü!€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €ø#ù³+ìÉ ç×o^=šã¢m~5æÁ\ž=Mç{‚øx}ôʘ£ÍþZy¯ÿ6Ÿë¼ÊåƒþÛÌÅæËÿyv¿ùÌkø’¿ü%ŸØ62o¬Í‚™d⑤Aÿåѻͻ_ׯØôä—íÝ'Æ|‘×ôâ롹7g_:Ü«B ž@~>$‘œ Ö¼‘cR/ðÞXË{û}½•´žëå¹™ûÈš/_/Ïn[¯ " ÇÞ ä¥6=Ác›^Å[If½õn_wvÈÞÉÇ/rÕ}ÉÁ“• IérGˆŽôä|Ð @ xìä|,Ø9îô·ÅÒ`)û}/çôƒœÓ÷Éo6Þ¼‘üáoT |¿›“ü$? #è5³wúC Aòɘ[dS¿™Íÿìœ0&ÒÒÞë©)ȹþ[d’{©å¹—@Kµë¸9L0Ú_¯p9‘Íjà;‘ ð¼´× ^)ßÊÀ-?½ø†µRΉ­ü²wrÑx{›‚ãËo †}#ëUî£9•ÍÌ9øU)§ÁQfº¡äXE5é?^ŸÊ=µ“ÄD§3½ ¬“‘œu”:š‡`ØäÎjäJ7Ž$ÚxÐ}$ŒùA«ŒIn¸:3:Þö…ra½ïxí³X]z^DÉ*±æ†[ Ýg9Á°+S`W’;ë‘*£ÿÄÆÞHSöÕF;4þ ö–GÆîi †mLåd7 J€më/«Qî5®¤[ÇŠ+ãúnCÏyðñz!Û¤8¼Fiˆsñt(%Fº89« èô~‡ôiZPÝã€×Ù"i7Ž?¶ZÑŸþz}œ$æ\Î ½?>¹–Ÿ­p]Ø^ÉúŠ®ÍÑ †uÍ´ø˜žìrp–-@ëJ =ßZîË®dÄœ J‹ÓçÕ Òçïœ{ãÛWlŽÒbОÉÃ=(;_e;—rÅûaç{>x( ¥ÅÈ\<}:»ñp禳Kœ”ýÏÕµ5ö‚[ ÕE0,0zõñZºB˜¥Áw³ðµ§zoQJ*KªP»Í Ήn=‡_›½’®KKjPöË Ÿ¹pÂ? ûcvU|(U¨4,pÎɼAÌ‚ CgBÏ$(îË‚a®BÜwxLæ;‚¢CVj”{OKù‘xë°8‹x/@PÜÎ"‚avÿcÅUïöa1Ù÷ÅYK¬4¡YäžâÏ µ'ÒÜ`®YK¸ ÆÌòÐa®ÎŸ.ÏV³L}A¢©)€™Ç×kÙeòéL~çù7Ë`¼–ªŸè\²œþPó<îÓT§ m" Šso}JíȌςݤë9!#>-æØOqVÁP¯|e`à•$š{ »çÀÌ?Ù;ie·˜]+»¼ï¬\þ4ó€ä¿°Ÿåœ8ŸÓ91`˜U‰®¤J”‚_ô|±˜Ó½EÉÚè‚ ÃMîóºG`VU§“†ÙÐiÑJ2š*Ñ=G;_í L¾šˆ*ÑÝ çS {Çæ|êåO7R¬q3K±€TJÕé„ú'Æ?^ŸG6ZJš¹0,Îx¦¤5'—gË‚ÉÁ=É`Hi0øãÒ‹È(6™DCJƒ^OÓØ‰éÞ_ŸV0¤»Ä4Î7/R!%ÃË3{3è?. ƒÎ>_w~m"»˜Z+ìÉC}„ÌSKKQû½¯GûŽÀ“±º%†álÁ`s(-N'r+!6¶v\GÌH’è–@¸…Â[g9Ž~ 9ê…aüß2 „ó!À‚µ¢zœéñVkvÏg »dÈÕ¯ç‡W»·~:´G¡^íR-ä1úNO¢Ú4Ü’¡B®~C?‡üÛ}ö[¨PGV26ºUZ‹úwhMy^ëq—§2È’¡˵ZTÜ9é>ø|Ûuíc˜\žù¶_uöGn¬¨­#Å<ý „{1¸’áæþ d(°ß£zvk—{…Ëà­5$?߃˹‰îpvÑÈqZƒ*j ”“þ×ÐÙߤÿÔåÙI{úmó[4û&ÂOä9˜¿ÄÉ"¤Qk‚)æÕ@BOö©í†\.CJ“Þ*8xŒ„!åÚ|öUK½•RKÓ ‚!÷Cæs“Rû9¤‘f¸g>ÎQÂV ¼) z „@h(>ª¦á2cÍN Kží: ¤QŸç¸ü`‹y „ƒ³ÝTçÓÁž@8ÛÃ4ô„¿–{ˆÿ’ßó…Ï ñ6}>l&³o믇aÜ+$N昛qB¢_}ˆ^CáŒÏ—“L{i5ªãî ݉<>ØTÑ…^Øõ±æ¶ëô®k°m–²|`:ØÓ}¢Nv2OXë8¶'¾u»ðªdH ëˆyoå^áÒûý'zŸEì “€—­L½)ê¸v‘‰~r¢e! ÐÁž@Ø(G™9Hµ<*íØ—'ÄxQ2Ô›ª æ w:„öæ†õA^ìt}×±‰o|ºmô`˜õ?aˆµúÇs¶ð¿ƒ}~»à]»t²4þ è_öô¡ñ÷uÔ`¨­Š¤ÿÉÍø ìÁ\|ï`Ÿ='ú0—ü h@Ì.ǵ/Ò\|ÜœŸáÖ¥+ÅϾܟØÇÏí‚}*|7yÚÅ×çc¦u´`(÷DVÜ3ëg·íurh.|MuÖ÷ŠÛ¾æûÕ¿@d£Œ9lÛ(Á0¯ zß?/[@ °‘t¥¸8ûâ¥ÇÇë£üaÕ^î;…ÀPém39†ÚÞöv†ùi9º¼ï[ í`ÿéÌÏR¡v¡ÐuŒ.Ó÷aÀúÃÈZ˜Ž°¯ÃC9ñi03B.Ï|“QdÏ}%ЖtÜ.ð5wد1ô|BÓ௃Cí;%¸Œ¯8Æ6ÛmJûOgzÜy÷§-è„Þe ;䀚þvðãõé»2X0ÌïÒwjÈÜe[Æ×öÚrÔºPpˆ"P(`£Õò †ÚRŽû„…Y΄Þì•O°Ï[Ž^ Ô3+F ×Úë ŸU¿\ë Á0üÌË­ó = Hûe«w[5ýkÝÜXj¦Ñû¡úö ³¸í÷3ÍI’=’€¯ìåJ÷‚û„#l6Hé¸4t·è5R=ä±7…ö²ƒ=÷ §ph‘†^˜þ«K{ †TŽpذIãeûôÊ6â>!Ç'NÑ»¾[—ö µž—ê §\g¡¾v°Ï¯léVÔ"oYtæ=·.í'J#´žwæyGò‡ð±ƒ}Ö ¢[Ñð‡[œ–ÀëWý5Šë%j#É®‚§u ;ØKõ(†:ìbÚ?ëšÔýîv ó‡õ~è~WY#å>v°—êQ. ˳©4H’~ž>Óy0”{6ËF)cf:ð¯ƒ}vÃ?zßIòX äý4¦é4æMǹ7ÂA;¸€wìuPzKëÑÁ68 >έNƒ¡Ôç.g‘$Ò+;Øë~©¶}ë;ƒÀDôÜÊ _Ý%¨³`˜u¥àäï.kXSMï:Øë ~½Ñ_sÿ™ Ò—ÔÀ8,ºw‘W{¿mú¥v¥x¤TØ”­‡ùׯØ{Yï¹w«¯úÔ†ý§ïËþ’ÈkÒKæ?–yõÙ“GzV¶ÜøÓäY…ž=Á¾¯üã[‡½rNüGú>?H*¾›E‘¹lúý‘Ìw´ù^_å8É>Gz^ÐJ>ÃýýmŠÍyÒQ;Y_û¿lüÑè§ökb uòû^^ï¥xûõP‚_OAAK:‰5GÖyúˆþ0øñ£ ÉåéQ]³!æËï›ÿ:ĶØF¡@zQ(ÇÇ­¹82ÿýçYzqX¸Dƒ Úb^Ö­ŠÇ‰‰O\¤^÷³®ŸíQ¿}탡” £I#WLÝgô³5ÚÏ62·ò¯Ë“ûÙFj}Ôùd͉\MŸHp”Ãç¿üýÅ«G4q.Ô:vú™iÜsC[ë¹@pì'wËÖ*Ã/þ=ùtvQ6Oi­ƒ!WÂu˜ÛÌcïdéÕÓ¡¹éâê§Íž”-›v#°æT£ü"0Jû˳“²}z5$ƒŠkéïFê0ož¾3·^2Ђ”FO”û?&ºª!j ã7²’·ý'yV[XËI´úª¶/ÏBKyÞÊk!ñ]_ûÇöÿ]:ÞI›ü˜èß;ßñ¡0.7 OS%f!÷ßòµg˜Î_írq¼j³ÚVÁRaú½Ë®¥›ÀEr(A°§û{·Ú×—i€ÐA¢ÝnÂ^É¿èvíÖ&çªût¶Û§i-m¯âØ\xuÔ8­B7§Ú’ÂC¸zóÚÚ´ †ñÇÏ÷TÔË¬Š¹¦Ÿ'V‚¢4[>—‚.º¬ŸŒ=öªÄ̽Âç9ÞÕçì¼ÐgÙXCR„ …‚b‘Žû÷mÛ8ìEUô/÷]gÉL@J9‡Æ»î½äN%Eí`Ÿ\ž-{Ù?Ç•r¯Ð®t±éŸÅÒÀa¢ý,5FÚfÁéÏ9R-ääým!-ÖÇÆ.¼j ùmïú}£RÒêî¡V¡³fÔ¥Rag”ÙŠ¤a”1‹)•«€ò‹©s™{ŠUXÓ¥ÖèϮǎtQsø“î8¸å‹HøEûÇÍ1*¦;¹|œ£ÖˆÑ¿öÚéW’ÀX£||9³^šÈž¥-„'T%ú2¥/¿ÑšŽ´êߤƒ^ÎÀ7µ$ -jÏülF§`ÿî¾ÁgÛŸÛGm%ª}ãôtöú# ­BåþÉoUúcÙ¶µXÕ6O—‹ÂÈDäec¸ÝÒ‹ÃC{üôéìfwÊŒ>É€^hŸ9IµtáÏM mµë´¨S04–€æÚRý##%̵4X䥭“ÃäDúŒ]Í£ßk•rÙô1¦Q*l­¾ÖÒ`zq8…ÖÓ­9ŒÑÎãZJ¬sØÁæ&· ¹ï÷6{tZó¤5¾g˜Í•DÿÛ|Ss^¿®>æF:Ø»þñrßüë`o¸Wø2›|£?öéEA°Pv…4Ü~o— ­t ­Ø&ï¤A1Û1Ùÿ!RIJ 2u§šHú—yWI©pÖûÖ^é=ãIô¥­—`§¹¤Út!5&?8-<ë…¤_sÚ®¥Bó`˜¤Ðl+³»ý¨s£ÓûFrñDÒD{å]Gkî¶8,¹8l‚§÷ɵÁçC“¥ç;ïÁ£ Ùì¯Q0Ìëbi9W˘@X‹iÏLü4 ¦f:z<ËžÍ8E©Ð‰N.n8'\ä´Áî¢ËZf·Lã`Øèž!uØu(NúºRÁÍǽB—,[ë¹w%|—”Œ¸LÞ^ãVvI|‹ÿÓ¤*¾QÉPú6޶5öyb³'–¡;É¡T¸ÃQç°ŽRy65&2ëÎ=õ‹Îr–¦U¥µƒ¡^•ˆ(W$¥‡°”'ô‰Ü+lœƒ”“•.@@,åy>ñäùeŸkCZ‘–1ê´´9ïªj.¦‡+@©°iÞÙ¨mjV=jù×ï¶zχž£YMfí`¨Op:)¡lOûLeÍ CÙcö³±¥Â†dÔ’4k4»¶ºÎG«i´ÜÌf~­ã ×Ms½`(Oæ½ß×]éÌæ[g#¨Ì,Õ3K.¥Â&N-I-×yÓ~¹#7¹®{BËÕnçR+s2!œn“¢ÕŒ¢Ñ­©ok£TX;G¨%©MÕÉŒúø·tóNÖ6½•4©Ñ¬ …èdzLíS¤ Ïzpáö„A¬RaílZ'&©}%^{­ÌX, â±Å¼@(­Ñ”‹Ù‚É;_× †rµw²³T`ýõÐ,¡˜¸¥Â,ØšÙã—àô6«6¨iþ8´ÞvÇ»ü^¯0W Óû…æ­w)}‡ü{¶Þè$ÜJ…u35}ÊøªîÜÌ×­€>êÒý¦‘í(Dæxÿ&æümú…Õœf‘vJ…u³y-÷®ugf¾~||ÌY?)m¶V¹H¨Ã*K†ÖÖ[Q³Ý {nÃnv Øû:” ë(É<4"« ÕïlÙ³Ríç~·âÚ£wuöº2ÊÿIÍg{ÇzgÛ” kf²TÎù õ5•†šíÉø÷¸³¡Ò^¶:ý +ƒ¡\öÕ*b–íÈ”¦Q*œRn§%×ዉt Õ£å>ÃOM0Ù«á7ì÷“·ûʃ¡4ž‘$òƒç³Þ ¦Tè÷AßÕÞI êeWëšêzd”%}lýË])rì>ËiDSY¨+ †4žy!zñì>NP@U¶€·LZ‡I²wÙ(®’Uu#•ïºYÙdÖrT•’Ò`Hã™]¾ä;³Úý†OS TX«q̽©j¥çˆ î;üÕhJƒ¡\í¬oÖ¤•îMþ TXÅ:òO£¨vsŽt o¹­3æ>ø¶íü1„…»U e©£Â%ç7áf~Iž_Š)Væ9#/Uù1ƒô;ä7k++ä1„o¶>¾x[ «‹–/Ö8Ñ/ä¦ôíD“F²rJ…Õ‡fª|™#й­³IE7ÁŠ`¸½ªù¾—ÒÂoŒ¹8ýü§TXžÇÚššF3åF>MÍÆ,¥ªt“'U·ý ƒaNŠ›Lý56ÉíÔÓ8÷ôQ*¬>î«ÚÈ·9¨*ÝÉ‘£OÏ>ÃgóÍú£\ßÏ`‰§TX•ÉŒ¼T%äãtq{g“/rŽmÞï{- †uzìï[á¿“fäÃ)flž&J…Õ™KWŠj#çxúŽ`¸É©&-í;\ -oy³ÙÀ^iF>í\¦TX•¿öŠs ÊÈÓéÒLïõzºw^íVq0ôj7ÇÛù¡üm¼­³å¾(V ¯Þ«ÒÈë¤_(5[y•µ…) †R¤<ñ:‡Ú¹È$_Ú›A€Ra9ºæšzJ†sÍù™¦›RayÆS*,÷ajØòX«Â–µðó–½o  £Op/¼L:ØÿL©°Ø‡)á ” +H0¬È_éx|T1 “¼\²«cìæšöc°³M_†9A0¬ dr6&aô.Ý|7Óa×h‚?¸û <¿~3ÈvßÁ0ð d÷ë P*,u¢TXÊöÄWæ8ì ³÷à g¹ÇtR1 “= TX•AöÜP*¬B vº<à—’aÜ+ †ö®Æò“ŸEF*á@ <—)g Øü‡a׊}¦0ÅZJ†uò±$ÖY|úóÈ`ÅŒTp6S*,ϼt0îòY˜¸€ÔnQMZ# †5þô×k¦N>ÎB©°8W¤Ïåo” ‹}¦2Ej·Ž¦’–>ÓA0¬¡›$\YÕ`òn–l´ZeLl’ó¢i|?iIJíÖ&/ËoýC)ZßoVÁ«9Á <F›)Ë3{Ç`Üe>Ó˜vð;¿]us²0&¦xØšº+ŸÊ|ò£z2•´Ì%<¯°<§åbwY>S§ ö=™B::Jײõò…æ6M~8Þš×GsKwÈé¥TX–{ö3¥Â2ŸéLKLt:Ô´K‰´(­í, †2á¶Ý¦§µtª@²4þñú<½€ d‡ÞMŒû|èm²½á´áçA}÷Â`X3™ÓÆ‹™¤4ìdjƒ-ÃNDŸ{Ï#šúÔõiÝ61 Ÿögì}‰"Ç’!Õ(»Y—¶È¢ªtÅÃOñcZêyíá®y±K<¢É‹ld'¨"Ýe–û§_v¿ÙýDÉp×£ô“`-Jg`â¸r±™ˆ*À‚\àM0üšÇ•½ÌÔª^E0,ï—ñrsSÿ&ZL=…!§ï k!I©p&2÷~—I~+E¸(ÜÍÙõîÇ—Ÿ*‚¡yx¹È|¿Ñ›ÑYGîùøšò|ص¾îߨûÅ#šÆÎ·ŸÞΉÞ¸Å6eï«v²4ÊÕÅCÕ f8}1Ã4{Ÿd9V—Þïäx;H©p<ûÁ·œ× ¾]Ÿ7(™vÁP"å­Ï gߢwY)dœ­³Õ— »öÒd÷÷G4Q²+éý§¬TH ɳŒ’‹åvÁð+%Ãg¤ÙGJ!{YÆù2}Šwt1ÎÆýߪ«ÎhÊ«ž•€¸ò?¥ì¡ P*ÜÄqË`h.ÏdÕ•7÷o~ÊßR:ô%wå)ÞKÙÍdH›G4%&Î/2¢Ä`¾Îž®Q*Ü“'ÿýçY»’a¶Îê{¶=ù¯¤Ïjò‰ôçº1¬2Òˆfoö]:ìWzϪx¦ô#¼^î–\úÙN¸kuDSf+ƒÓïý‹>èô½“ørl‚! í«†aÛ,X ¿Vßxܬl†¯¯Íj†é5ÉÙÄÑO£î„ç—nµéÃ`ËGñ‘Q~~¢•©?€4šYÉÞpß¼ Kž¾«W»Y ÍÅÙ©2ù­`;|m¢÷ü0 {<%ñjØ-†¶5{U§ÁÀ¾TÕÛ5úUîÙrjâ€ße¥tªG‹ÈÓØ%1¬húö÷ÕÁPæŽMr»½ïŸ HÓþ´Ïóïùܵ€þS=Z®ê<·V·5ÛU/ÑÊ´^³*R]oí’aºQ²J_ù¯¦±&ÔÎlyß©_w¾äC¡€”Æ–…+&Ȯ󲫖Ééñ¿ªž9 ò{„bù¾p&¼A'7f”á üéÊcô –`ÖTÀ^É€É 0*ÒãKb®€+¤¶&§ƒqŸl}Qû­Žg)Ãxý£öŽ3jRb’S×.Ž› ~1­jÖ&¸GØ,+µ¦$¹<=j¶TÓ’aÚ“ŸV¥M‘õÇ]ª9niiW"'MûÓÆÂ¤—“œã– ¡Æ³ÜÜG¤Úôeþ}sðãõ©6# •|ÙÆ¥B][³jÒlûRwÍ_s蔪²–{Í—žòzâH£ Nü¦¹Üb0îÇtìÒ!&ɶÒjS§¨Èfù¸06º–Ù†ÌŸŠ½ grb›µ"ݤ¬Y5i¾ÔÁÇ›/ò–ŒÚ(6|•ý_ÒÎÑ5ÇÌk¸úpf—Ò‰>œWªÑþÎNû³§OÆþÙ©ê1»Ýñ )ë^›È.š¶öóG¾§=ÑÚÉŠ‹Â6¾î·¤\J†F2kÕfw羬þøÇÑýœK‰šv5 ºž öÊ)Êæò‘’Æ „šà×ZòIo¤#߸Lg9½KíHûü”ÒÝÊu-N%CíT+÷oײܶ€ý,}8Ï]ض×ÄûôØIɼbýÜɵ” ŽÏ]9ççäPމÖ”èE¡>¤šÒ`û-m¨uùþØuMN%Ãì$´w®e¹my”\X¤Ý ¤új{ʤÞKÚ4zõK3ñv9›»&ý~]Ö"î]¸,×ç2é¨Mr?}V lô¢äãõJ~ÀÿE ìæèŠLÒêØv+ʾëfd7É`-¹ÀZè&u•¬APkä³jn*Ùúéй”¢B8gµY¼‡¥tEZM%ÃvÒñÇùðÓÎ÷|h% ÇKwŠí:C]IüñæAVðv{…¼ïJÀ^iÇÑ&£®wµåNÖóÇI.ë#v‚jäV›ý{òéÌé 8½GgÂx¬þ¸I#›‹ä;¹4…êÓìöÀRjEN9::vVch{Õ*fÕ ™µ“'Ðzp##ÿ¤Í…«Æ:Þ¥ÒÕi7 cœðtœ/…r˜Øæê7Ë—´¹¾Ã–G]d-—7¡^f¥q³à|èïjs^lïU«`¨+¢t¸ÍÙïûM`<ˆÌ­O%Fý¡¬‘†Ñ)5}îW¿S8O7Ç¿÷†R ”Æ € ·>χͺÝÏ‹Íôµu0¤t¸Í9Ü{½’{+·62÷±5÷C>€9m™c €rÉ?ªAûÏy÷aצxŽn£/†ÙÐiZ#Ë¡ý¾ÿã-¨@W¥B]Wë`¨+™ÂU§¦#ô?ýUr€ÜKÎ~Ñ ©i’þ÷ï»È=?é,ÁöµøŒ9²&–WNô1Žqÿ‹Ó䣎|$û<Ùû¶› CIã­§NÇ{ÃLå‚°!Xo³wS*ÔÝë$Nñʳ·¼ó`ÅùÇÃË]‰Žå»Éþh¾Lo(߸— µ;‹v]%¥]íg~ŒË æ^dú/6_šÜ^ÐÒžMäbÐè… 9’uË¡¼rAØU>µ[ûy±o»C]1¥Ã}¼|‡@{€‡]kŸø×̇Í&¤fEÞÛÍg^ýp®-)HÖ«‚ﻃé_d(zص’t?) |Ñ·à×YÉ`ü¤Í`ì•Ómƒ·hö¬0Û1F¥ÙCÃW¸ HûôéÍ——räCóYïd8B³ìz/; †ºcÒè¼ëd}ÌU vͱù »¶œ«éž¶€ <±t—·‚¥Ó`¨7§¥÷—Šm2*¬/¥ƒW;üiKGJ…p,â½€¶˜w©*qCÝXúœ>cdÔþ@ÀU@.*—»Ãä“@ºtÝ.Ë!à³ÀAœ,úڿ΃az˃;ûÚaÖ‹ÀÔôê×uœÅ¼TønêF¤o~ú¨¯&]cš u e²'XÓ˜¦if0?*›ÄùÞ» ‰·B© ¤Õ£—gË>ÓÕK0Ô–Ö> y¡ºT1øC ¶€ýìÚd\¿ Ÿ\mhf H ÏêÑ CoÁP[û¤­~6[â*ä"Ò­T(îÉÕó²rÌ€@`}Wn8ú †²…¬ÕÕ¥l^(H[b;>¦+{€2£§”ù2-D{—ô\=ºQé5êF¤Óð©¼P]ºçýë¼%öþ©eßJ©PÆu+Q–­—iŒ+ ƒNhüä¯÷`HëÒAò‘/`Ï]»RÈÓE–’|Xþ ÛRSrêzNl¯§îûÁ†ã“&ßrOãouwŒù˜‹@ÖRîý±SzeصýÛiYBÀS½O8Tõ膠ÿ’a¾%i!w®'ýfü"€@&Ц+îqMOÀ~:ªá`ÁP7–˜„û‡ ÁßÜGßgصoˆ¼™ˆ€˜ä>ábŒä  µ»EZ‡[{±½g_  uûyÿëgûÂGf# „®#Í(Rbâ‹Ù`‘ÐØ²a<ÇKê`­I÷%1þøYùôý¾i|‡Àtì• Ä½pMŸ»&húÕuy–CÀ/vçCWi¥d¸Ùùä09¡…éFƒ×9¤ ZB5’u,ç`Eç àG TéQƒ¡Þ/¡…éxÒ¨õ°FüñzÉ`ÜmYÖ{צ†¤ëtŒ 55ÒÂ4Ží‰¼cÈ6õàoªë4¶i)ǰkS=6f—®´†dÀ¡Öê e/µ±Nv1O ëôøn%á:·¼0ìZ » |«!iy>tí9jšç‰¡aÀs>OA@‰ý¥MËÑÔ€aצp(Ì> ¾BÍ/J†›#DêWrgå‡Íg^_ÀþÐ:*Búh'{¾)˜«€ÏPóÄ«’áæ ¡„¸‘à5lé;•^àu— 97VrÚ~èn¬ þ|„*àe0Ô# ªá t7į!„ÕÑÛ`¨;G@TþÂè/n,876¼ú,J TC¯î>ÏÔ­{ˆt»xŽÃgOú„šð­sÃSv {׺;Ñ€ˆ^— 7úëõq’D·ò™få^=&n'œâ¶ïýðgd™º&^— 7‰ âF‚W†„jA Ñß#b®{&]‰~‘ãrZúƒ(~C•8âÇø–Á½¿‰ðf|µ‘GÏŒ=â>µ'ãì ŒsQØ…}XÁPS,ñàÑÜHÛŸw]°Z¤#ËŒù ¶í}' nkð~`¯Î—´‡ óTÒ¼Ü%»Y¦+´•œIN³Îð]­µƒõP{Ò"«h"àí¹Ð$2o÷ ÷¥)«“f´š}6|×·€ýœ¶’KG…é{[ ׯO‚IŸŒaï.Éì8Ø+oÏ…†© ¶d¸I§V =%Ñ$äíæ;^èKÀûsry¶ìký]®—Ú“.5Y×3éîfϳ\Ϧú1ø`˜ºg÷Wrñ} ùÀnû/°–†[§Œ3:`Zéz1 öL6¥Õ¢q²ðå^yWìÓ†¹Füãõyd£t…ÃzÈä!¤úì5Ï9S7w¨=©+Å|UÚmâë¡Y†z.”¥oRÁPʉ_–ÝLk(°¶‘]&ŸÎ..çßìY퉤ƒA¾ýËœ ö(Èš‘&²“ †iâåÄõh–Rœÿ[ æE`#0Õª ƒ¯OV’NFsÚd6¯ö³ÔŒ,¦XÜNø4ƒažÂW¯O­$‘4®ÙÎuÞ— „ÔH¦4!E¹Ç^$Ã÷[Ö˜ÿÄÆ.B»O¾•„Fo' S J‰ˆ9Ï<ÕÒ`Qžj)ÑÚè‚‹Å"¡ù~?å{ƒE¹:ý`˜§<»—K)Ñ~_„Á÷ó˜|i°(kåb1~4瑉~*š…ïç$`ïâØœO­¥hœM0Ü`ä-N—ò™{&”Y¿JKQ#÷C|ì@?d¾|¼>:0fÅ0‡C¢û³-­•‚ÂrJý›êÎ.¦@T6=N&7zòGÒiøÓ™ŒsËßF€ªÓÄl^×R+r‘š‹©7©ÊÑyà WÉ9½f' £ÈŒ•1Ô Œ%?äv噃‡æ|îAp#>ï`˜+h«S)),©"Ú“|å ¸i¶þq?ñ\å¶BS?oç— ¨¿ws¿5ð,†[ Å-Œé¼%¶ÍK‚b[AO–'–eÁpAqJx_»Î3‚b×¢C¬/;´q%ÁRo‚aOvOqÉVeH~MÓ†12šþŠýæ‹.ý2—òò¶ß-±vô<ˆ¤aÌwS×%Ým–!ÖÑ˯ˆ%(.8ùë€1Oúü¾Õœ›†¡ž×¢,¸`Cß6íg™­¤÷Ù”G0,÷y15ÛQú¥ñ¸¨6#|¡ÏT»‘NÂsì$<‚wñ&õ‚ñw9/l$ø)-Cu?å[mU¡­p †®|R…GòXKi‘Qm\Ý–“«_cn(ºéõ½”Žö”$ÒdßD§²-Z¡öž^J)ð†R`7ÀÃõä·‰YÈ à§\wºg:n¨‰’÷@öàxüU^“"A‘ÀØM6傇æ†{݈nÖB0ÜHtôš*%FK`¤ÄØŽ5?ñ¹¥%\;I–&0:åÂ%Àïä< 1Œb…†u”\çÉZ£žÈâò+ã*F½÷!Œ¹±‘¹¥ê§J+ìé\4ç_Z b’›ƒØÜp/¼Ø©ë)îEKÖ—þXsÉ? ŽòoÞ÷S4øIéùVneD J1Ë?i|sð{v^$&>™[Š¿Ø$·éE ¥¿ÑN‚áhô²á¼ä(™p,áXä»1w§çmkuϽ¤ó6ŠÌý'}Ïܯ>ŽÖšc97Nä¼scŽù ž÷±œ sypnG#Áз\ÒIpÌ~ôGàMxA2íó÷ 'üCzÂË+÷ü|;ÐÛŸgç…5ñ‘ç%ÈôâO~`ï“HÎk{îùù{Ü ýÍ›Ý=“«åW$#óF¥NÌ®š¥¼e"ùa¦oW~eû Û—÷·úª%=©úýÂÉ®ü * Aò•1GpŽå€|#çAz)ÁRÞ÷×€­ô<¸<»Ô€u"@0ì„Ñ£•äAóù%iuÓóo_~Þ¶í)¹m Þ'°çœ`v¤ÿÊÒ¢µÛÓ¿RñÍÁ{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÿý2ƒœW4¹*IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/coursera@2x.png000066400000000000000000000332211263211763500220550ustar00rootroot00000000000000‰PNG  IHDRÃÃX†qÞgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYs  šœËiTXtXML:com.adobe.xmp 1 Adobe ImageReady ²#~ñ40IDATxíÝÛuÜ8¶ðqò¬Ö›}"°&‚Ö5XŠÀÕoîyM]Á¨_ÆzëR’#)‚£Ž`4×›zE|{“,w•T¼7€ük-».¼â²6 1ü!€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €ø#ù³+ìÉ ç×o^=šã¢m~5æÁ\ž=Mç{‚øx}ôʘ£ÍþZy¯ÿ6Ÿë¼ÊåƒþÛÌÅæËÿyv¿ùÌkø’¿ü%ŸØ62o¬Í‚™d⑤Aÿåѻͻ_ׯØôä—íÝ'Æ|‘×ôâ롹7g_:Ü«B ž@~>$‘œ Ö¼‘cR/ðÞXË{û}½•´žëå¹™ûÈš/_/Ïn[¯ " ÇÞ ä¥6=Ác›^Å[If½õn_wvÈÞÉÇ/rÕ}ÉÁ“• IérGˆŽôä|Ð @ xìä|,Ø9îô·ÅÒ`)û}/çôƒœÓ÷Éo6Þ¼‘üáoT |¿›“ü$? #è5³wúC Aòɘ[dS¿™Íÿìœ0&ÒÒÞë©)ȹþ[d’{©å¹—@Kµë¸9L0Ú_¯p9‘Íjà;‘ ð¼´× ^)ßÊÀ-?½ø†µRΉ­ü²wrÑx{›‚ãËo †}#ëUî£9•ÍÌ9øU)§ÁQfº¡äXE5é?^ŸÊ=µ“ÄD§3½ ¬“‘œu”:š‡`ØäÎjäJ7Ž$ÚxÐ}$ŒùA«ŒIn¸:3:Þö…ra½ïxí³X]z^DÉ*±æ†[ Ýg9Á°+S`W’;ë‘*£ÿÄÆÞHSöÕF;4þ ö–GÆîi †mLåd7 J€më/«Qî5®¤[ÇŠ+ãúnCÏyðñz!Û¤8¼Fiˆsñt(%Fº89« èô~‡ôiZPÝã€×Ù"i7Ž?¶ZÑŸþz}œ$æ\Î ½?>¹–Ÿ­p]Ø^ÉúŠ®ÍÑ †uÍ´ø˜žìrp–-@ëJ =ßZîË®dÄœ J‹ÓçÕ Òçïœ{ãÛWlŽÒbОÉÃ=(;_e;—rÅûaç{>x( ¥ÅÈ\<}:»ñp禳Kœ”ýÏÕµ5ö‚[ ÕE0,0zõñZºB˜¥Áw³ðµ§zoQJ*KªP»Í Ήn=‡_›½’®KKjPöË Ÿ¹pÂ? ûcvU|(U¨4,pÎɼAÌ‚ CgBÏ$(îË‚a®BÜwxLæ;‚¢CVj”{OKù‘xë°8‹x/@PÜÎ"‚avÿcÅUïöa1Ù÷ÅYK¬4¡YäžâÏ µ'ÒÜ`®YK¸ ÆÌòÐa®ÎŸ.ÏV³L}A¢©)€™Ç×kÙeòéL~çù7Ë`¼–ªŸè\²œþPó<îÓT§ m" Šso}JíȌςݤë9!#>-æØOqVÁP¯|e`à•$š{ »çÀÌ?Ù;ie·˜]+»¼ï¬\þ4ó€ä¿°Ÿåœ8ŸÓ91`˜U‰®¤J”‚_ô|±˜Ó½EÉÚè‚ ÃMîóºG`VU§“†ÙÐiÑJ2š*Ñ=G;_í L¾šˆ*ÑÝ çS {Çæ|êåO7R¬q3K±€TJÕé„ú'Æ?^ŸG6ZJš¹0,Îx¦¤5'—gË‚ÉÁ=É`Hi0øãÒ‹È(6™DCJƒ^OÓØ‰éÞ_ŸV0¤»Ä4Î7/R!%ÃË3{3è?. ƒÎ>_w~m"»˜Z+ìÉC}„ÌSKKQû½¯GûŽÀ“±º%†álÁ`s(-N'r+!6¶v\GÌH’è–@¸…Â[g9Ž~ 9ê…aüß2 „ó!À‚µ¢zœéñVkvÏg »dÈÕ¯ç‡W»·~:´G¡^íR-ä1úNO¢Ú4Ü’¡B®~C?‡üÛ}ö[¨PGV26ºUZ‹úwhMy^ëq—§2È’¡˵ZTÜ9é>ø|Ûuíc˜\žù¶_uöGn¬¨­#Å<ý „{1¸’áæþ d(°ß£zvk—{…Ëà­5$?߃˹‰îpvÑÈqZƒ*j ”“þ×ÐÙߤÿÔåÙI{úmó[4û&ÂOä9˜¿ÄÉ"¤Qk‚)æÕ@BOö©í†\.CJ“Þ*8xŒ„!åÚ|öUK½•RKÓ ‚!÷Cæs“Rû9¤‘f¸g>ÎQÂV ¼) z „@h(>ª¦á2cÍN Kží: ¤QŸç¸ü`‹y „ƒ³ÝTçÓÁž@8ÛÃ4ô„¿–{ˆÿ’ßó…Ï ñ6}>l&³o믇aÜ+$N昛qB¢_}ˆ^CáŒÏ—“L{i5ªãî ݉<>ØTÑ…^Øõ±æ¶ëô®k°m–²|`:ØÓ}¢Nv2OXë8¶'¾u»ðªdH ëˆyoå^áÒûý'zŸEì “€—­L½)ê¸v‘‰~r¢e! ÐÁž@Ø(G™9Hµ<*íØ—'ÄxQ2Ô›ª æ w:„öæ†õA^ìt}×±‰o|ºmô`˜õ?aˆµúÇs¶ð¿ƒ}~»à]»t²4þ è_öô¡ñ÷uÔ`¨­Š¤ÿÉÍø ìÁ\|ï`Ÿ='ú0—ü h@Ì.ǵ/Ò\|ÜœŸáÖ¥+ÅϾܟØÇÏí‚}*|7yÚÅ×çc¦u´`(÷DVÜ3ëg·íurh.|MuÖ÷ŠÛ¾æûÕ¿@d£Œ9lÛ(Á0¯ zß?/[@ °‘t¥¸8ûâ¥ÇÇë£üaÕ^î;…ÀPém39†ÚÞöv†ùi9º¼ï[ í`ÿéÌÏR¡v¡ÐuŒ.Ó÷aÀúÃÈZ˜Ž°¯ÃC9ñi03B.Ï|“QdÏ}%ЖtÜ.ð5wد1ô|BÓ௃Cí;%¸Œ¯8Æ6ÛmJûOgzÜy÷§-è„Þe ;䀚þvðãõé»2X0ÌïÒwjÈÜe[Æ×öÚrÔºPpˆ"P(`£Õò †ÚRŽû„…Y΄Þì•O°Ï[Ž^ Ô3+F ×Úë ŸU¿\ë Á0üÌË­ó = Hûe«w[5ýkÝÜXj¦Ñû¡úö ³¸í÷3ÍI’=’€¯ìåJ÷‚û„#l6Hé¸4t·è5R=ä±7…ö²ƒ=÷ §ph‘†^˜þ«K{ †TŽpذIãeûôÊ6â>!Ç'NÑ»¾[—ö µž—ê §\g¡¾v°Ï¯léVÔ"oYtæ=·.í'J#´žwæyGò‡ð±ƒ}Ö ¢[Ñð‡[œ–ÀëWý5Šë%j#É®‚§u ;ØKõ(†:ìbÚ?ëšÔýîv ó‡õ~è~WY#å>v°—êQ. ˳©4H’~ž>Óy0”{6ËF)cf:ð¯ƒ}vÃ?zßIòX äý4¦é4æMǹ7ÂA;¸€wìuPzKëÑÁ68 >έNƒ¡Ôç.g‘$Ò+;Øë~©¶}ë;ƒÀDôÜÊ _Ý%¨³`˜u¥àäï.kXSMï:Øë ~½Ñ_sÿ™ Ò—ÔÀ8,ºw‘W{¿mú¥v¥x¤TØ”­‡ùׯØ{Yï¹w«¯úÔ†ý§ïËþ’ÈkÒKæ?–yõÙ“GzV¶ÜøÓäY…ž=Á¾¯üã[‡½rNüGú>?H*¾›E‘¹lúý‘Ìw´ù^_å8É>Gz^ÐJ>ÃýýmŠÍyÒQ;Y_û¿lüÑè§ökb uòû^^ï¥xûõP‚_OAAK:‰5GÖyúˆþ0øñ£ ÉåéQ]³!æËï›ÿ:ĶØF¡@zQ(ÇÇ­¹82ÿýçYzqX¸Dƒ Úb^Ö­ŠÇ‰‰O\¤^÷³®ŸíQ¿}탡” £I#WLÝgô³5ÚÏ62·ò¯Ë“ûÙFj}Ôùd͉\MŸHp”Ãç¿üýÅ«G4q.Ô:vú™iÜsC[ë¹@pì'wËÖ*Ã/þ=ùtvQ6Oi­ƒ!WÂu˜ÛÌcïdéÕÓ¡¹éâê§Íž”-›v#°æT£ü"0Jû˳“²}z5$ƒŠkéïFê0ož¾3·^2Ђ”FO”û?&ºª!j ã7²’·ý'yV[XËI´úª¶/ÏBKyÞÊk!ñ]_ûÇöÿ]:ÞI›ü˜èß;ßñ¡0.7 OS%f!÷ßòµg˜Î_írq¼j³ÚVÁRaú½Ë®¥›ÀEr(A°§û{·Ú×—i€ÐA¢ÝnÂ^É¿èvíÖ&çªût¶Û§i-m¯âØ\xuÔ8­B7§Ú’ÂC¸zóÚÚ´ †ñÇÏ÷TÔË¬Š¹¦Ÿ'V‚¢4[>—‚.º¬ŸŒ=öªÄ̽Âç9ÞÕçì¼ÐgÙXCR„ …‚b‘Žû÷mÛ8ìEUô/÷]gÉL@J9‡Æ»î½äN%Eí`Ÿ\ž-{Ù?Ç•r¯Ð®t±éŸÅÒÀa¢ý,5FÚfÁéÏ9R-ääým!-ÖÇÆ.¼j ùmïú}£RÒêî¡V¡³fÔ¥Rag”ÙŠ¤a”1‹)•«€ò‹©s™{ŠUXÓ¥ÖèϮǎtQsø“î8¸å‹HøEûÇÍ1*¦;¹|œ£ÖˆÑ¿öÚéW’ÀX£||9³^šÈž¥-„'T%ú2¥/¿ÑšŽ´êߤƒ^ÎÀ7µ$ -jÏülF§`ÿî¾ÁgÛŸÛGm%ª}ãôtöú# ­BåþÉoUúcÙ¶µXÕ6O—‹ÂÈDäec¸ÝÒ‹ÃC{üôéìfwÊŒ>É€^hŸ9IµtáÏM mµë´¨S04–€æÚRý##%̵4X䥭“ÃäDúŒ]Í£ßk•rÙô1¦Q*l­¾ÖÒ`zq8…ÖÓ­9ŒÑÎãZJ¬sØÁæ&· ¹ï÷6{tZó¤5¾g˜Í•DÿÛ|Ss^¿®>æF:Ø»þñrßüë`o¸Wø2›|£?öéEA°Pv…4Ü~o— ­t ­Ø&ï¤A1Û1Ùÿ!RIJ 2u§šHú—yWI©pÖûÖ^é=ãIô¥­—`§¹¤Út!5&?8-<ë…¤_sÚ®¥Bó`˜¤Ðl+³»ý¨s£ÓûFrñDÒD{å]Gkî¶8,¹8l‚§÷ɵÁçC“¥ç;ïÁ£ Ùì¯Q0Ìëbi9W˘@X‹iÏLü4 ¦f:z<ËžÍ8E©Ð‰N.n8'\ä´Áî¢ËZf·Lã`Øèž!uØu(NúºRÁÍǽB—,[ë¹w%|—”Œ¸LÞ^ãVvI|‹ÿÓ¤*¾QÉPú6޶5öyb³'–¡;É¡T¸ÃQç°ŽRy65&2ëÎ=õ‹Îr–¦U¥µƒ¡^•ˆ(W$¥‡°”'ô‰Ü+lœƒ”“•.@@,åy>ñäùeŸkCZ‘–1ê´´9ïªj.¦‡+@©°iÞÙ¨mjV=jù×ï¶zχž£YMfí`¨Op:)¡lOûLeÍ CÙcö³±¥Â†dÔ’4k4»¶ºÎG«i´ÜÌf~­ã ×Ms½`(Oæ½ß×]éÌæ[g#¨Ì,Õ3K.¥Â&N-I-×yÓ~¹#7¹®{BËÕnçR+s2!œn“¢ÕŒ¢Ñ­©ok£TX;G¨%©MÕÉŒúø·tóNÖ6½•4©Ñ¬ …èdzLíS¤ Ïzpáö„A¬RaílZ'&©}%^{­ÌX, â±Å¼@(­Ñ”‹Ù‚É;_× †rµw²³T`ýõÐ,¡˜¸¥Â,ØšÙã—àô6«6¨iþ8´ÞvÇ»ü^¯0W Óû…æ­w)}‡ü{¶Þè$ÜJ…u35}ÊøªîÜÌ×­€>êÒý¦‘í(Dæxÿ&æümú…Õœf‘vJ…u³y-÷®ugf¾~||ÌY?)m¶V¹H¨Ã*K†ÖÖ[Q³Ý {nÃnv Øû:” ë(É<4"« ÕïlÙ³Ríç~·âÚ£wuöº2ÊÿIÍg{ÇzgÛ” kf²TÎù õ5•†šíÉø÷¸³¡Ò^¶:ý +ƒ¡\öÕ*b–íÈ”¦Q*œRn§%×ዉt Õ£å>ÃOM0Ù«á7ì÷“·ûʃ¡4ž‘$òƒç³Þ ¦Tè÷AßÕÞI êeWëšêzd”%}lýË])rì>ËiDSY¨+ †4žy!zñì>NP@U¶€·LZ‡I²wÙ(®’Uu#•ïºYÙdÖrT•’Ò`Hã™]¾ä;³Úý†OS TX«q̽©j¥çˆ î;üÕhJƒ¡\í¬oÖ¤•îMþ TXÅ:òO£¨vsŽt o¹­3æ>ø¶íü1„…»U e©£Â%ç7áf~Iž_Š)Væ9#/Uù1ƒô;ä7k++ä1„o¶>¾x[ «‹–/Ö8Ñ/ä¦ôíD“F²rJ…Õ‡fª|™#й­³IE7ÁŠ`¸½ªù¾—ÒÂoŒ¹8ýü§TXžÇÚššF3åF>MÍÆ,¥ªt“'U·ý ƒaNŠ›Lý56ÉíÔÓ8÷ôQ*¬>î«ÚÈ·9¨*ÝÉ‘£OÏ>ÃgóÍú£\ßÏ`‰§TX•ÉŒ¼T%äãtq{g“/rŽmÞï{- †uzìï[á¿“fäÃ)flž&J…Õ™KWŠj#çxúŽ`¸É©&-í;\ -oy³ÙÀ^iF>í\¦TX•¿öŠs ÊÈÓéÒLïõzºw^íVq0ôj7ÇÛù¡üm¼­³å¾(V ¯Þ«ÒÈë¤_(5[y•µ…) †R¤<ñ:‡Ú¹È$_Ú›A€Ra9ºæšzJ†sÍù™¦›RayÆS*,÷ajØòX«Â–µðó–½o  £Op/¼L:ØÿL©°Ø‡)á ” +H0¬È_éx|T1 “¼\²«cìæšöc°³M_†9A0¬ dr6&aô.Ý|7Óa×h‚?¸û <¿~3ÈvßÁ0ð d÷ë P*,u¢TXÊöÄWæ8ì ³÷à g¹ÇtR1 “= TX•AöÜP*¬B vº<à—’aÜ+ †ö®Æò“ŸEF*á@ <—)g Øü‡a׊}¦0ÅZJ†uò±$ÖY|úóÈ`ÅŒTp6S*,ϼt0îòY˜¸€ÔnQMZ# †5þô×k¦N>ÎB©°8W¤Ïåo” ‹}¦2Ej·Ž¦’–>ÓA0¬¡›$\YÕ`òn–l´ZeLl’ó¢i|?iIJíÖ&/ËoýC)ZßoVÁ«9Á <F›)Ë3{Ç`Üe>Ó˜vð;¿]us²0&¦xØšº+ŸÊ|ò£z2•´Ì%<¯°<§åbwY>S§ ö=™B::Jײõò…æ6M~8Þš×GsKwÈé¥TX–{ö3¥Â2ŸéLKLt:Ô´K‰´(­í, †2á¶Ý¦§µtª@²4þñú<½€ d‡ÞMŒû|èm²½á´áçA}÷Â`X3™ÓÆ‹™¤4ìdjƒ-ÃNDŸ{Ï#šúÔõiÝ61 Ÿögì}‰"Ç’!Õ(»Y—¶È¢ªtÅÃOñcZêyíá®y±K<¢É‹ld'¨"Ýe–û§_v¿ÙýDÉp×£ô“`-Jg`â¸r±™ˆ*À‚\àM0üšÇ•½ÌÔª^E0,ï—ñrsSÿ&ZL=…!§ï k!I©p&2÷~—I~+E¸(ÜÍÙõîÇ—Ÿ*‚¡yx¹È|¿Ñ›ÑYGîùøšò|ص¾îߨûÅ#šÆÎ·ŸÞΉÞ¸Å6eï«v²4ÊÕÅCÕ f8}1Ã4{Ÿd9V—Þïäx;H©p<ûÁ·œ× ¾]Ÿ7(™vÁP"å­Ï gߢwY)dœ­³Õ— »öÒd÷÷G4Q²+éý§¬TH ɳŒ’‹åvÁð+%Ãg¤ÙGJ!{YÆù2}Šwt1ÎÆýߪ«ÎhÊ«ž•€¸ò?¥ì¡ P*ÜÄqË`h.ÏdÕ•7÷o~ÊßR:ô%wå)ÞKÙÍdH›G4%&Î/2¢Ä`¾Îž®Q*Ü“'ÿýçY»’a¶Îê{¶=ù¯¤Ïjò‰ôçº1¬2Òˆfoö]:ìWzϪx¦ô#¼^î–\úÙN¸kuDSf+ƒÓïý‹>èô½“ørl‚! í«†aÛ,X ¿Vßxܬl†¯¯Íj†é5ÉÙÄÑO£î„ç—nµéÃ`ËGñ‘Q~~¢•©?€4šYÉÞpß¼ Kž¾«W»Y ÍÅÙ©2ù­`;|m¢÷ü0 {<%ñjØ-†¶5{U§ÁÀ¾TÕÛ5úUîÙrjâ€ße¥tªG‹ÈÓØ%1¬húö÷ÕÁPæŽMr»½ïŸ HÓþ´Ïóïùܵ€þS=Z®ê<·V·5ÛU/ÑÊ´^³*R]oí’aºQ²J_ù¯¦±&ÔÎlyß©_w¾äC¡€”Æ–…+&Ȯ󲫖Ééñ¿ªž9 ò{„bù¾p&¼A'7f”á üéÊcô –`ÖTÀ^É€É 0*ÒãKb®€+¤¶&§ƒqŸl}Qû­Žg)Ãxý£öŽ3jRb’S×.Ž› ~1­jÖ&¸GØ,+µ¦$¹<=j¶TÓ’aÚ“ŸV¥M‘õÇ]ª9niiW"'MûÓÆÂ¤—“œã– ¡Æ³ÜÜG¤Úôeþ}sðãõ©6# •|ÙÆ¥B][³jÒlûRwÍ_s蔪²–{Í—žòzâH£ Nü¦¹Üb0îÇtìÒ!&ɶÒjS§¨Èfù¸06º–Ù†ÌŸŠ½ grb›µ"ݤ¬Y5i¾ÔÁÇ›/ò–ŒÚ(6|•ý_ÒÎÑ5ÇÌk¸úpf—Ò‰>œWªÑþÎNû³§OÆþÙ©ê1»Ýñ )ë^›È.š¶öóG¾§=ÑÚÉŠ‹Â6¾î·¤\J†F2kÕfw羬þøÇÑýœK‰šv5 ºž öÊ)Êæò‘’Æ „šà×ZòIo¤#߸Lg9½KíHûü”ÒÝÊu-N%CíT+÷oײܶ€ý,}8Ï]ض×ÄûôØIɼbýÜɵ” ŽÏ]9ççäPމÖ”èE¡>¤šÒ`û-m¨uùþØuMN%Ãì$´w®e¹my”\X¤Ý ¤új{ʤÞKÚ4zõK3ñv9›»&ý~]Ö"î]¸,×ç2é¨Mr?}V lô¢äãõJ~ÀÿE ìæèŠLÒêØv+ʾëfd7É`-¹ÀZè&u•¬APkä³jn*Ùúéй”¢B8gµY¼‡¥tEZM%ÃvÒñÇùðÓÎ÷|h% ÇKwŠí:C]IüñæAVðv{…¼ïJÀ^iÇÑ&£®wµåNÖóÇI.ë#v‚jäV›ý{òéÌé 8½GgÂx¬þ¸I#›‹ä;¹4…êÓìöÀRjEN9::vVch{Õ*fÕ ™µ“'Ðzp##ÿ¤Í…«Æ:Þ¥ÒÕi7 cœðtœ/…r˜Øæê7Ë—´¹¾Ã–G]d-—7¡^f¥q³à|èïjs^lïU«`¨+¢t¸ÍÙïûM`<ˆÌ­O%Fý¡¬‘†Ñ)5}îW¿S8O7Ç¿÷†R ”Æ € ·>χͺÝÏ‹Íôµu0¤t¸Í9Ü{½’{+·62÷±5÷C>€9m™c €rÉ?ªAûÏy÷aצxŽn£/†ÙÐiZ#Ë¡ý¾ÿã-¨@W¥B]Wë`¨+™ÂU§¦#ô?ýUr€ÜKÎ~Ñ ©i’þ÷ï»È=?é,ÁöµøŒ9²&–WNô1Žqÿ‹Ó䣎|$û<Ùû¶› CIã­§NÇ{ÃLå‚°!Xo³wS*ÔÝë$Nñʳ·¼ó`ÅùÇÃË]‰Žå»Éþh¾Lo(߸— µ;‹v]%¥]íg~ŒË æ^dú/6_šÜ^ÐÒžMäbÐè… 9’uË¡¼rAØU>µ[ûy±o»C]1¥Ã}¼|‡@{€‡]kŸø×̇Í&¤fEÞÛÍg^ýp®-)HÖ«‚ﻃé_d(zص’t?) |Ñ·à×YÉ`ü¤Í`ì•Ómƒ·hö¬0Û1F¥ÙCÃW¸ HûôéÍ——räCóYïd8B³ìz/; †ºcÒè¼ëd}ÌU vͱù »¶œ«éž¶€ <±t—·‚¥Ó`¨7§¥÷—Šm2*¬/¥ƒW;üiKGJ…p,â½€¶˜w©*qCÝXúœ>cdÔþ@ÀU@.*—»Ãä“@ºtÝ.Ë!à³ÀAœ,úڿ΃az˃;ûÚaÖ‹ÀÔôê×uœÅ¼TønêF¤o~ú¨¯&]cš u e²'XÓ˜¦if0?*›ÄùÞ» ‰·B© ¤Õ£—gË>ÓÕK0Ô–Ö> y¡ºT1øC ¶€ýìÚd\¿ Ÿ\mhf H ÏêÑ CoÁP[û¤­~6[â*ä"Ò­T(îÉÕó²rÌ€@`}Wn8ú †²…¬ÕÕ¥l^(H[b;>¦+{€2£§”ù2-D{—ô\=ºQé5êF¤Óð©¼P]ºçýë¼%öþ©eßJ©PÆu+Q–­—iŒ+ ƒNhüä¯÷`HëÒAò‘/`Ï]»RÈÓE–’|Xþ ÛRSrêzNl¯§îûÁ†ã“&ßrOãouwŒù˜‹@ÖRîý±SzeصýÛiYBÀS½O8Tõ膠ÿ’a¾%i!w®'ýfü"€@&Ц+îqMOÀ~:ªá`ÁP7–˜„û‡ ÁßÜGßgصoˆ¼™ˆ€˜ä>ábŒä  µ»EZ‡[{±½g_  uûyÿëgûÂGf# „®#Í(Rbâ‹Ù`‘ÐØ²a<ÇKê`­I÷%1þøYùôý¾i|‡Àtì• Ä½pMŸ»&húÕuy–CÀ/vçCWi¥d¸Ùùä09¡…éFƒ×9¤ ZB5’u,ç`Eç àG TéQƒ¡Þ/¡…éxÒ¨õ°FüñzÉ`ÜmYÖ{צ†¤ëtŒ 55ÒÂ4Ží‰¼cÈ6õàoªë4¶i)ǰkS=6f—®´†dÀ¡Öê e/µ±Nv1O ëôøn%á:·¼0ìZ » |«!iy>tí9jšç‰¡aÀs>OA@‰ý¥MËÑÔ€aצp(Ì> ¾BÍ/J†›#DêWrgå‡Íg^_ÀþÐ:*Búh'{¾)˜«€ÏPóÄ«’áæ ¡„¸‘à5lé;•^àu— 97VrÚ~èn¬ þ|„*àe0Ô# ªá t7į!„ÕÑÛ`¨;G@TþÂè/n,876¼ú,J TC¯î>ÏÔ­{ˆt»xŽÃgOú„šð­sÃSv {׺;Ñ€ˆ^— 7úëõq’D·ò™få^=&n'œâ¶ïýðgd™º&^— 7‰ âF‚W†„jA Ñß#b®{&]‰~‘ãrZúƒ(~C•8âÇø–Á½¿‰ðf|µ‘GÏŒ=â>µ'ãì ŒsQØ…}XÁPS,ñàÑÜHÛŸw]°Z¤#ËŒù ¶í}' nkð~`¯Î—´‡ óTÒ¼Ü%»Y¦+´•œIN³Îð]­µƒõP{Ò"«h"àí¹Ð$2o÷ ÷¥)«“f´š}6|×·€ýœ¶’KG…é{[ ׯO‚IŸŒaï.Éì8Ø+oÏ…†© ¶d¸I§V =%Ñ$äíæ;^èKÀûsry¶ìký]®—Ú“.5Y×3éîfϳ\Ϧú1ø`˜ºg÷Wrñ} ùÀnû/°–†[§Œ3:`Zéz1 öL6¥Õ¢q²ðå^yWìÓ†¹Füãõyd£t…ÃzÈä!¤úì5Ï9S7w¨=©+Å|UÚmâë¡Y†z.”¥oRÁPʉ_–ÝLk(°¶‘]&ŸÎ..çßìY퉤ƒA¾ýËœ ö(Èš‘&²“ †iâåÄõh–Rœÿ[ æE`#0Õª ƒ¯OV’NFsÚd6¯ö³ÔŒ,¦XÜNø4ƒažÂW¯O­$‘4®ÙÎuÞ— „ÔH¦4!E¹Ç^$Ã÷[Ö˜ÿÄÆ.B»O¾•„Fo' S J‰ˆ9Ï<ÕÒ`Qžj)ÑÚè‚‹Å"¡ù~?å{ƒE¹:ý`˜§<»—K)Ñ~_„Á÷ó˜|i°(kåb1~4瑉~*š…ïç$`ïâØœO­¥hœM0Ü`ä-N—ò™{&”Y¿JKQ#÷C|ì@?d¾|¼>:0fÅ0‡C¢û³-­•‚ÂrJý›êÎ.¦@T6=N&7zòGÒiøÓ™ŒsËßF€ªÓÄl^×R+r‘š‹©7©ÊÑyà WÉ9½f' £ÈŒ•1Ô Œ%?äv噃‡æ|îAp#>ï`˜+h«S)),©"Ú“|å ¸i¶þq?ñ\å¶BS?oç— ¨¿ws¿5ð,†[ Å-Œé¼%¶ÍK‚b[AO–'–eÁpAqJx_»Î3‚b×¢C¬/;´q%ÁRo‚aOvOqÉVeH~MÓ†12šþŠýæ‹.ý2—òò¶ß-±vô<ˆ¤aÌwS×%Ým–!ÖÑ˯ˆ%(.8ùë€1Oúü¾Õœ›†¡ž×¢,¸`Cß6íg™­¤÷Ù”G0,÷y15ÛQú¥ñ¸¨6#|¡ÏT»‘NÂsì$<‚wñ&õ‚ñw9/l$ø)-Cu?å[mU¡­p †®|R…GòXKi‘Qm\Ý–“«_cn(ºéõ½”Žö”$ÒdßD§²-Z¡öž^J)ð†R`7ÀÃõä·‰YÈ à§\wºg:n¨‰’÷@öàxüU^“"A‘ÀØM6傇æ†{݈nÖB0ÜHtôš*%FK`¤ÄØŽ5?ñ¹¥%\;I–&0:åÂ%Àïä< 1Œb…†u”\çÉZ£žÈâò+ã*F½÷!Œ¹±‘¹¥ê§J+ìé\4ç_Z b’›ƒØÜp/¼Ø©ë)îEKÖ—þXsÉ? ŽòoÞ÷S4øIéùVneD J1Ë?i|sð{v^$&>™[Š¿Ø$·éE ¥¿ÑN‚áhô²á¼ä(™p,áXä»1w§çmkuϽ¤ó6ŠÌý'}Ïܯ>ŽÖšc97Nä¼scŽù ž÷±œ sypnG#Áз\ÒIpÌ~ôGàMxA2íó÷ 'üCzÂË+÷ü|;ÐÛŸgç…5ñ‘ç%ÈôâO~`ï“HÎk{îùù{Ü ýÍ›Ý=“«åW$#óF¥NÌ®š¥¼e"ùa¦oW~eû Û—÷·úª%=©úýÂÉ®ü * Aò•1GpŽå€|#çAz)ÁRÞ÷×€­ô<¸<»Ô€u"@0ì„Ñ£•äAóù%iuÓóo_~Þ¶í)¹m Þ'°çœ`v¤ÿÊÒ¢µÛÓ¿RñÍÁ{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÿý2ƒœW4¹*IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/document-new.png000066400000000000000000000026631263211763500222730ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆ¬PLTEÿÿÿïÿõÿò ÿÿ•••šššª¥@»+ÿ󘘘¼¶5ÿóÿôÿÿÿóÿÿÿôÿôÿó ÿó ÿôÿôÿôÿõ-ÿôÿôÿò ÿõ ÿôÿôÿøÿèÿóÿô ÿóÿÿSSSRRR777WWWXXX333›››ŸŸŸ———”””‰‰‰†††‚‚‚~~~{{{„ƒl•’[¡M«¦D¯ª?­¨=ýýýþþþúúúüüüûûûûúãüù¹ýø–ý÷zýöeþö\ýõ[ýöfÝÝÝÞÞÞÛÛÛæææàààáááâââãããääÝêç°ðë‰ôífùñLüò7üó@þô:ØÐ+“““ßßßÜÜÜäääçåÇîê™ôîpýö^ý÷qþ÷_îå2‘‘‘çççåååëé¹ñìŠöï^ýö_ý÷‡þù£ÿùˆñêRèèèíê³òí‚øðVþù¤þüÕÿú¤òìféééóîƒýôAþüÖŠŠŠêêêíë»òí‹÷ð^þøˆÿù‰‡‡‡íëÍñíœöðrúòLþ÷`„„„±±±ëëäðí¶ôï÷ðhýó8þô9×Ï*ëëëìììîíØñî­÷ñsùò`ùñW¶°2íííîíÚñî·óïžõðŽõð…ü÷•‘<îîîîîëðïÚñðÄòï¸òð¾úù×]\QxxxïïïùùùSSSuuuðððøøøQQQrrrñññòòòPPPnnnóóóNNNkkkôôôLLLhhh²²²õõõdddöööaaa÷÷÷^^^ZZZWWWTTTXXX&ÑׇDtRNS 2;RòøŽïømEšÂŽXߦ-ä´w:5à§# ›0?ñò #xö÷10@GJBF;) ð„ÃJrIDAT8ËÑù{ËpÀñÙê÷}3gÝ÷=ׯ ›3iëViÇZtq j¦³Ž*q3×\­cêqk‘i EE\ÿˆä›4O·zÏãó[ž÷ëóÍ÷I’’þkj%§h4)ɵcÏuê¦gLËHŸž9#kæ¬ÙÙ9sæÎ›¿`a½úš h#ˆA`qôz½aÑâ%Ks—-_ÑjÜD™Hžq%jÂ0³ÇñU«×¬Í·X­ëÖ7…4ÍØ€m(ÈAlÜ´9ߺÅnߺ­y‹–­ØŽØL¤Ø ‚¢¨;wY» ÷µnµ`/b2å9ÅuŠBQ´x_‰Õî*-Ý ]ûÈ‚M˜Ñ-­£$I,ñØ]‡dÐ €Ã0f¶Ñ„¸N’Nç‘£Ç,Žã.׉¢Î] ®œ„͸‰¦@v»O>SæqØíg¥KvàŒŸÇhdš¾p±üRÙeçÊÕîPªü®Á8‰y¥NÓ^¯ïúò›·**roC=zÊ [OP˜Oî>Ÿßçî½û••¦*=)G ûý ÉßtN7Øy^>¾Ç€|/°¬ ăÁj@`ƒAVàãÀÏ_Á„WTUAõ’2¨qÉ^½Y^ˆ°BaûôÕ‚Þ¯ÿ€¿ÿ2ƒ:LÚá#FŽ0cÆŽ?Ay‡6m⤄™œ6eªØþkï·WÛÜôIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/document-open.png000066400000000000000000000026701263211763500224410ustar00rootroot00000000000000‰PNG  IHDR szzôIDATXÃÅ–ÍGÆõ1Ý3»ãñîbƒÀÀJ‰…@†$@œd±rp¢ÈúbÁ•ÿ’ÿà‚D( hnÈâ’È8 àÀ E ‹Ã&‡¬Ñ²3;»³3ÓõÅagÆó¹Y0R^©Ô]ÝÕïóÔó>ÕU"I>ÌÐGTØ,5¡”ÒG¥Ò+YjÖ£(êÜ5z½.¾¹þ ?{þªÕêÜq!pl6›òç¿xቷþòÖ›EV|%Š¢ô®\¾|YÜüÛ_ÙÜÜœ !à½Ç{µc išòų_'ï9ùù_¿úòë‹•ÅGºÝ®™«Ø¸y󦂔’AB ¥D)…Ö¥¥R‰(Š(—ËH)yòɧxükì¦W‹¢P‡*°ººª‹¢¸æœ{h–´·þù®PJ exã·oཧµæû¤( â8æëO?#Bç¯^»ú«ÕO¯>µ±±ágȲìSårùþ‹/ê4M‡@Þ{œsüäùçRŽ_;?VûÁ½÷žZ­Æ•+Wøø©Oˆ³_8ûÄ?ýñ»ZFߟI (мR©„Û·oÓh4†õ !àœCRŠ,ˈã€ß_ÿÎO(*•8wîa”Rœ9sc ÖZî»÷>õÎß7¾÷Ü~úƒ$IÂcL–ç¹XYYÆ9‡÷~Š€”’—_y‰ÇÖceå>ò( ¦TREJ)œscˆ¢ˆVk·véҥؓÍZyžçªÑhÒh4†%! ”âÙo¬¿öúkc˜å(Šxè«çÐZFYN8qâDÖjµÔòòƘ1Ƙ¡û¡”âÂãÆÀ&Á'Í Ì'°±±QÔj5¹³³3T``Bkít4ùo®]Å9Ïœ‰ =±¶v~øí¬ƒ½`qqѬ¯¯ëíímn¼ç¹þNJp7áœ!íÁdÄ‹Ÿi¿ô­QB0ÍfS7›Mn5ª|ûé/óÙSË#Rö¯‡¡ÌPcâ‰Þltøñ/o<CS­.VŒ1˜HŽU"Þýw—½žBßï“úÍvêVÕXS!h ^åœ3­Ö.Íf“ná©V"¬ÑO1Ѽî4м¤…#Ë-±5¥@!/—c–––È­`!ÖŸ£åô4ÃÜÎ|i:™eᘦ½gñ> w¶!kmÑnïÓjíbÜG©Äš@@õ ù@018ØÏ …õÄZ’fÆ;goÏò@E%*Ç–©-D@"©ó!¸ýo\t2ƒó­åHÑMóB±=EÀ{ŸïïwØÚ-8¾¸‚±¥ÄŒì‡”c$rãéå‚–1R’ýnnwL8ª@¦µFÅ1UJts‡séÅØ¥ï±0¼:ð ë§V¤è³ÝÝϽ aš€÷>ít:4v5•¥ˆNjÈ­GôgiǸ€±ëÄ v̨ZÿAj{T ©f– B ã*Z—h§†ýÔcüÔb2ï ƒˆ9$€nnéfF3§½^¯ËN»L\[Û=özf2ïTj1Ǥ“â Ý+(¬+ýùäÛ;÷nL+Ð× äÎÓî ãÇ2Ì[s*1ö\JÁö^†²—ŒÍÆ<¦)íÔqòž˜…²¦ýo`ã ¼‘Bf9RнÑ÷£º&”¨–‹ÚÏMÆ€ÍêûhµrD;Sêõz´¶¶æÚ½‚Ý^àý­Ýþñ{&Ê‘AGû!ÀÖÖž+Lïõz]'IbÊIà#§OŸ~öÔë?ÌŽNÉÿâïw”à`óîûï½ùâwo_¿ì%Iâ[[ ø¤Žã•ËÇkL¬ð» ï½q΋ð®×jÿ64I’ ’$¡^¯K wöÛÿw„~3€M’ÄÃÈ‘ìÊÿ˸$(³EkIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/document-save.png000066400000000000000000000036341263211763500224370ustar00rootroot00000000000000‰PNG  IHDR szzôcIDATXÃÅ—mlÇÇ3»wgßù|øb0ñ ˜85Ʀ”Æ!¼•@xICpš"’A©Ò/©ÔTЦ/´BM£ ¤|h¥ÒHý€Z5QÒ(mZšTqÒÐ’D„L¨Cbˆ1î‘Øçóíúnwg¦Ì]móÖª>Ò£·ùé™gþ³ ÿg×0ãÞ'Û´¥0K@„8Féýñ\ϾmoÿÏjWíNÚ¶÷›X4²`nK}lÚÔ 9©¼” PôöêwöäRƒÙà ÿþÞ—¿wî†ÔÜýdmHš7[gOÏÌ›ÓP!¤˜²-, –”H)Žž<§ö½y4›ÌâÞ?m?zCZ:v„³ÙÈ‹Z΃¨íK MµBvù´©Éò9M5Ò’’¼§ÐÆØôœá×/¿“Òž?÷Ì+Ÿÿ´ÖĆhýÊGoªˆ-<ŸÊ4u÷¦ÞL»;‡œ{Î](=qúüŒ[ë«BvÈ"ï)²9Ÿd"J¬Œýò¡µ ʇóJcŒ¡*ãW/ìÏ|<4²èÓn…ŽáÜ\#ÌÙ@«û&.Ðóçí¿ùýÉž”²-‰hò¾Æñù|s}ÌÂlº®L¿gç:mDÓü²ÃÏc~ …–Z–5rÈ22é6V,i¥ K Fs¡$,yö¥×ùBù Œ1ÅñJ)åûþ ®ë>´oß¾üD{lEkë¬ÔÁ?´Ö?Û¸qã²ööv¤”Å 1dÝä|ÿ¾ñå9$ ZZZ…Ëžþù×®pÑ6¯^½šl6‹ïû¬j«'5àòòrç-¤Ò#¸¹ƒÁ˜Ñmqó/þõn> µ±ŠÀËqôx?ÿÖ2´ p‡+VpìØ±¯ãÆ%غuën™2eʲššÇÁ¶mlÛfÓ½s¸­±’·Þ;Á”ŠR”1¤³yú?qø oˆs²¤³yª”Øð÷C'xâ‘%$Q¤”ŒŒŒÐØØHYYÙÚ5kÖT]@±eýúõÂuÝB­5J)ÛÐÆÔD„·Þ;E2^Bz8OÆõPztK«+˘qs9¯xŸooheÆÍåcB`ŒÁ÷}–/_…B›. °téR[ñpkk+ÙlÛ¶1Æ ”"TàóƒMóãsºç·ÏšJ84*¤å±0·7Uñú÷i_0¶¦)(¥Š§GJ‰ëº´µµlݱc‡¼ ™LÞ³hÑ¢êP(D.—CJIxžG>Ÿ'ŸÏ£UÀÎ-óɤ‡èëÿ„y³¦- ±xN-o2Â}‹§Ç{žGضçyÄãqfÏž=ãÈ‘#+/B|mÕªUd2‚ ÀSœÄƒÖšeøÑ¦VNž>Ë@:ýwÌ ûÃódÒC<ÒÞˆçyø¾ïûA€”¥Zk\×eÉ’%X–µuÀš5kª+++W×ÕÕá8J)²Ù,¥¥¥E1RJ¡”¢¼TòÃ?Ç¡#ÝüíÐ)ºŽ÷ðXG–0A€Ö€’’„d2´Öär9(//oïèè¨)ضýðÚµkm×uB}ddß÷‰ÅbD£QÂá0B,Ë¢º2ƶfÓuü Û¾Ò”Šáp˜h4J<'ãyŽã ¥DJI(B)ÅÂ… m­õæ¢!6´¶¶âº.ÕÕÕ¤Ói†‡‡BA±lYñx¼(Ëó“I~÷“:ÊJm¤”h­ÑZæ‹ÖÅw¤”$ *++éíí¥­­W_}õAàÇ!úL<gxx˜¾¾>´ÖH9š–eÔZó¡PØàûþ¸ÈE"„øÏ=gŒ!›Íâ8Zk&OžŒÖúÖ±Jñ<Û¶‹/޽€ ÏÔ•úÇö|l_!7úûû‹å¢AÀÉ“'/™@k=ñv»lÛ; ººúR!*_™‚Êc ®®Žt:M]]ƒƒƒL›6t:M}}}ñ9q-96l…ga߯d— ûľ+m€RêêˆD"ãöûj 'ŸØw9»V1 TÆš››QJ%´r¥Bˆq:-˜‰m…£ è"€1¦çÌ™3õ3gÎ,&N!y åkyMM Zkš››ñ<¦¦&r¹8ŽCCC™L†D"Q8ê'€ÀuÝïìÚµë))eí5ã~L)Õ›J¥žÂµ(n*€r „nðº£?B9 \.Œý,@좗p™¿¦ë´à¢ç€ìE þ Xž]²1'úIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-copy.png000066400000000000000000000013141263211763500215530ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆPLTEЇ‰…Šÿÿÿïïïííí–™”ŠÇÇÇÅÅÅëëëÃÃÃéééýýýûûûùùùççç÷÷÷õõõóóóñññŠˆ‹†‰Žˆ€€€ˆ‹…²¸²‰ˆ‰ŒˆŸŽ‰ˆ‡„‹„ˆŠ…ÿÿÿïïïðððîîîÇÇÇÆÆÆÅÅÅêêêíííìììÄÄÄëëëÃÃÃéééþþþèèèüüüçççúúúÂÂÂÁÁÁÀÀÀùùùóóóûûûòòòõõõøøøáâᇊ„†Š„ŒŠ’••˜“‡‹…ÐÐÐÎÎÎÍÍÍ•—”‰‡½½½¼¼¼˜š—öööñññôôô÷÷÷±±±’”‘ýýýóóò¢£¡ÃòzÕ"tRNSi€k€€€êÒ€€€€€€€€€€€€€i¥ð î+þ¾ÔèM„vÛjTIDAT8Ë¥“[W‚@FÍrJÔÊŠî×I@qÐ2S±Ì®j×ÿÿS:3Œz0V¶VûõÛìyáÄbsYˆG°ˆ„øRñøÁB"…eÁŠ’ÍE@Qæ´Yò‚'fw]ûµ H „ çS Ü IEQBøÚ²ŠÖX $3€„TjúÔ £T²m[ „(étz\ŸÃlN„'Æu˜$d2â Y/¦ã8!¬òY¨Îgש aMì à:Ì.s=!¬s!›¥9Ë’õr­V¯×/˜s)„ > Õ]Ƙ©¦ØAÀuÆœ¢Ö¸–ª&ªJ+“v×Ö›×­v„my ´Šë¶ßíÞto{èߤ^¨îßõï‡,´BõÇþÓóËî²n G¯^¥Wz{ß?À7JÍa>?lŽ-ï£úÙû:<:ñIè :þéÙüÃç|‹„avîÚÇ—IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-cut.png000066400000000000000000000040161263211763500213760ustar00rootroot00000000000000‰PNG  IHDR szzôÕIDATXí—kl×Çÿ÷ÎÝÙÝÙ]ï¿m‚íØ€)Æ(AóhZ%jû¡Ž i]5«B©*ÀvC´ ”Ú1Ô´iÚ¸O¥4iC…H­* ¤hƒeClð‹õãÝÙÇÌÜ{ûÁ82[é‘Η9gþç7÷Ü3w†`ûùž]Û #þr,bzü~S°Ýõµõ¦iýXeNmÓ¦MÑñòèxÚÚÚL.ø¦´Ô´¸Çë|u*Åkj^›Њ””Ô¸€õâD¹ãØTúî¢âEêêUkìùáÎ]; &S\JIT»sï’Å_µ¯Yõ5»BéÖ‰î½/@MÍŽ%6Õ¶pfþ,&%ÁâE‹í›úödêv׬÷xÑ·$‰DpýØQÓ}àpÙ?®_SÑdSI~Kã¶ÞÏÈÍÃÙ3§`ý©ÑK¸§wÁã{À¶©h’É&66æ!—¤?œÇfäŽé™|°ùÞL÷$8ÖÙ\Î^E÷—xH¥¥ë¸Ó J™Â ³s—Ó‰3«ÑA=ô!SÈ·$>¤©v;úÕ9tã–= J¥Ë²¬¿1!~U Nàà;„Ò?¤ø|,+5Õéu¹ ô ¢½»ŽDg¬?¦vóo‡<ä½t·÷ëiÌcwkš{°¦°ÀÍáatôôD{úû-pþü:`ßþJéKTQüEyy.Ó²ÐÙ×w+¤ëª¢(¶sæ°H4Š‹}JÜÊ*ø›)p;ãô“ ¼©‘Û ¶]éêŠÏëbÀo÷Óî°(­HNLdpãæÍ°—ó'¾ÄGãXês»Í®ƒ1Öqwë˜Â:\ŠM³°|ôzpKbYo0#²RSm¥îP(-Ÿž’¢u÷÷G¸;Æo4EQ^Ÿ•ÐÄç{ïœïí b9 ¥»m,„^¿Är²²œ6ÆÊïàœçº].葈àìØâ^Æ>ÎHIñªªŠî`Ð4„øÍÝŠ¿î MUU‘äó%%(ÊÁ±Bˆ¦®Ç¼LËʹwb€ÛéTPôð{`GQÚ3’“™›Ÿïl*$€$É£^„¼øY[›>kÆ G²Ï÷ˆ›ÒŽ`Ý3@¡t¡[Ól”Rà‹×õcøcÎÊÎþæ4¯—œjnÖ-Ε·Û,ÈÉñ8T'ÏŸ\ç¼áËzë68½kŒ%±‡± Y”V,˜=[‹™&Ú{zB!]Wcbå¢EΡáayº¥åÀÓ†ñ$>*Àj™3åÓ‚œ÷CééÔÆ†ÃatôöƺƒAÞ"¥»°aä u##iz5¥« m™©©Jnf¦#Éçôôõ‰ÿ¶¶†Ú,ëñW€VæØ' õ@Qc»1ò'C ¥AÎ÷¿/ÄÞ#@èv±Q'c\Žq€/›ÌØSà<ƒBPz¶Ë4_Ú œ» +Ç; F…é]Eé}üö”Ž´` „³2bLìûK?{Å4›IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-find-replace.png000066400000000000000000000040441263211763500231350ustar00rootroot00000000000000‰PNG  IHDR szzôëIDATXÃå—yl×Ç?oföð øXcc°$nâàæ‚’¶†@ÐMBB›ôH$¤FM¥"¨ª(ù#Rh%4´ DU’4¢%µ5‰8_cl¼Þ5ëkÏÙ™yý#°ÂÔæhû_¿ÒOoæifÞç}ßoÞÿï—VìØ±ã›Í¶K‘¦( Š¢`Y–ea¦iÎZ^©N1­ëúæ]»ví½,QSSÓ¸išÒ²,iY–Ôu=ymšæŒ0 #‰DbF躞Œx<.ãñ¸Ü²eËø¥íi—V†‘)„àôéÓ!0M“ÔÔT¢Ñ(¾~?Áñ †‘Àn·“CiÉ2²³sBÌÚ))%ÙÙÙ$‰Ì+H)¿!’18àÓ–O¨ª®â» df¸ÑT =¡322LËçŸÑéí`e]=.Wê¿ó`³X–5 0è§³«>ø#ÍÉžì?ö CÁ%yéÜsK!îjdÀßÏG}HÙò8TUeÙ²e—òËD¢¾8~ŒÍ?Bï™0ϼuˆï¯*ãW­DUCÁ(ûøÓ}ì|êÖÒÜÜÌÝgíõw/–2À…;:Ú¸õÖÛÅ$/¼}œ·Ô³æ†|²Òí¸ìÛΆú"jËsxôåf ‹±;í:|¯×ËÉ“'“N^5€išÉr àcYér^úË ½«šb›Ô);)®'i©.J ²(ÈÏþÏO±fõ‚ÁQV¬XAYYÙâÎÌd*£³œO‘˜N$G×ut=N"ezzŠÉñ1q3~_?)k×®£¦¦»œd÷ËÑxßVŒ…¥s¹0>þ˜}¿ y.Y ·mÛ¦HL3;'‹EžFFF‘RR{ãõ,Fµ9Ùs ‹ýÇÎp6¡4/ïÕçÓx{í4½ÞÄÝIu¥Ò{âïÚÞãÞ»V£XaâgÒ ,iàìŽ'VkôÓ‘¨}Ý»GBâ¢Æç9\ÚžœìÜõó3âóù‡Ã”––bɽ}½ÔÖÖR]} Ü P5 =®ཽ{Ñãq6?ü(ümÏoéÞÏÚï¬"1å'4ô%AGzSñ»ß̽iúñmÛ°’l߾ݣhrÿâÅEU[ ½½½¨ªJqq1áȉD‚o­þ6}§{iïhÃï÷ …p:,-)¥~e=K–”`™»_ýiÒÏ­õõDF»ˆŽvãNÐ6h§g4“wöµÎp]P5^»¡¶¶JZ‚£GŽáv»ÉËËc$8LŠÃÉ-ß¼X,F8¡0¿ˆÅÅ(Š‚UU9wn˜ÁÀŸ½ÿ"7–gRUYGèÌQb“¼þ_Ìã'vðÌ‹¯Î>H)×,_¾œp4D8\Ž‚€MѨ½®–h4J"‘ ''øz¡²ÙlØl6E!2=ÊûM¿æÎºbòó15ðOb¡1Ž÷Å9Íâ±çwã)X ̀¡¾¾¾õKJJÈtgÐÖv‚ªÊò<‹ˆF£(Š‚ªªôôô`ªª&{?=æÃ{èÜÛp3éN&û …8v*Áùlý݇8]iÌ% @‘ÆÏ[>o±ZZZV‡Ã‘´Ç~òS˲PU§ÓI"‘ ¶¶!D¨ûx3GÞà¡«±É0“ý‡NÅií¸‹VóøÖߣ(ê¬Sð €§ŸÞ6mÚ$ssr ƒ!Ð4 —Ë…išx½^LÓDAhb˜ÏöngÓ “~¦†NÕiíW(¨YOeýtttRSSse€‹eÆœ/TTT$xsûýl¸o#i·1vä NÆèrÑøØKÔÔ­å|n!¥¼¶-Ù…©x6uuuaš&gûO #ääå£OøøÊ7Å—ƒ©¬ºÿªojàZtMHiѼû—¬Z·‰ƒì¦×?Åòëïä©WÞ"-cÁeíþ¯öî|޾Sݰouw>BÝîÀ²$ãœO&è…ßÔf³%óèjÒE™’R¦§§§'Ïš¦!¥Ä4 RÓÜüæõOÉòÏ8 ]º›VUMÓPUUUQ»Ý> äã@f.Fi@v]]ݽEEEÏ !R®ÉË++ÖÓÓóRkkëÀ0p°.pÙÀ óü½ú¿jü¼Ûa øÐ¥\ â<_Š«làJ2_Û’™ú/}®ýõR¢IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-paste.png000066400000000000000000000022321263211763500217150ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆPLTE\\\``^\\\wOrMrLuMrMqMiFqL`A\\\™™››ŽŠŠ}qqL]]\¡¡•¤¤™——ŠpKŇ'ƈ'ºº±«« ¬¬¡­­¢®®£¼¼³½‚%Á„&–zˆŠ…Éɹ¹°¹¹¯¸¸¯¸¸®··®··­¶¶­¶¶¬ÆÆ¾ƒ~‘Šy¤r"ÿÿÿ___¨¨¬¬¢««¢ªª¡ªª ¤¤šòòò¢q"ðð¢^^^˜˜—ææå¡o"ć&ããâØØØÜÜÛîîíŸn!Â…&ïïîm!œl!¿ƒ&ÈÈÇÇÇÆÆÆÅíííšk!ííì˜j!¼%îîîìììììë—i º€%ÅÅÅÅÅÄÞÞÞëëë•h ¸%ëëê“g ·~%êêê’f µ}$ÆÆÆÄÄÄÄÄÃÃÃÃêêééééýýýe ³|$èèèûûûŽc²{$ùùùb°y$ÐÐÐééè‹a®x#ñññúúú‰`­w#þþþðððôôôÙÛÙ‡Š„«v#†Š„ŒŠ‡‹…©u#ïïïÕÕÕÖÖÖÐÐÏŽ‘Œ¨t#ùùø÷÷÷ÄÅÄ‚„€¦s"ööö‘‹ÔÔÔ©«©‡‹†ƒŽŽ‹‡‰„óóóøøøÕÖÔ‹Ž‰‚…€€€}‘‘££ £q"‰y‡Š…ˆŠ„Œ†x½‚&?X5tRNSÛŠü‹ûû‹üý ™ü¤!+173¤ÚêŸIDAT8ËuÏ÷WÓPÀñ¨±P5Nêu ¢òkÅ#Ô* Ö*5Õ àjA"Ô:PqÖ½ý}/¶7ýþÒsr?ïÞSIÊ#vyR®HÅV{š_@Hå\V%!ùâdÜx¯ªÚívÏc±ŸêªùüÓ„‰6(\ óÈÂE‹YKXK—‘þÉSh—,/²båªÕµµkÖ®««[O6l¬—]Y”Ò†M^¯×çó55mnðS [Dlm&Xó¶í ;ìä °k·Ó…½öÙ`TªJa?Ïÿ@UU…Â98„išÖ¢)FP3j{­(¡…#Ž @U[%jk§p Áq<Á··œ‡O¶G(œBp:»o†ØóH¤ƒÂgÿÌq{¬ëÎ!8Ϧ]àÛ/vvF£º~ɈÁeW€ªÎö>6Ì.¸ŠàÎq{lšÝЃà:PE ³íQÖ Ã¸išF[7ÜBp(ÿç¸Ý4#­ñô"èƒ;ÂqÓÔƒýVÿÝ܃Xö8ßL²“C¸]üyæøÿÐÃTêÑcáÄx*·†“©Ô³Áçx#Îñá„õòÕë7oߥPÖ{<÷[#±ØÇä§Ï_¾~À÷ ösà@:ý;&yäý)*ž,I%SJ]9*:m:[Q2£¬|æ•Ï*+ž-ý àïjÝYIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-redo.png000066400000000000000000000026461263211763500215430ustar00rootroot00000000000000‰PNG  IHDR szzômIDATXÃÅ–[lUÇÿß™Ùݰ7[ ”bAŠE¨7î‘.C“Õ¢QôE‘'_äÑh5>iâ’0!* aM•…Š”û‚”µ@i»ô¾K·{™Ûù|`w³]v …ÎäË9gæÌ÷ÿÿœ™9ÄÌx˜EÜoOûÊãÓî9Ï}Ø"üæñiî‡@óf,].÷ø´Š‡€sV:7¬i ³Ÿ6óRP_Ó¨¬zæ¥É$D«Ç§-x`‚€ŠA³S*kź%¯–(B=äñiÍ€‚a£L*…gù›ÅšÓõ£g»¶ùŽ÷ç;àñiEšHà5"zŽ™+«77Œ~6›°Ù@±R²TüÒòCl$9üõÞ·õ­÷ àñi+H`÷”òZ­¾ö© å«h‚VŠ"ç$RJœ‡Å&$›°Ø„KL€Š"øgOìf4¼%6ø½º9nOs’Àç%îÉ›¼â®-›‡„Î1˜2 S&`p6°Ù‚Í’v¡d*¹På¬Ç¹‹gâ½ý7N³Ä‹~¯½kO›L.~|mÍ’9ë4:ò&$[°ØÈÔiëÓ×â­HØ€&&`ªk>þ ^Ð;»;®±ÄB¿WNk¨cÍ^(øvÑœ5-›Ý¬D­~ÜZlÀ­ÕŸ®)ëLÔêψ@±ZÓ´080`Ø“->&€Ç§­ª)¯_³pÖZ%bv˜Tœ9é¥[@ŸÌä¨pÖA³KqôÄ‘¸n&?ðoÔ¿ÌÕQ ˆ;I`Çê§×»bö ,Ö! ‚Á &¸”‰PÈ‘ý$Ñ<‡a³†Œª´Ù ½GO‰›¦¹ÅïÕwäÓ*äÀ†ºê¹eÅÅŤ‚LR«à`7þë=Ë]—Ã}2,z«é}Á,Ño´ª] °bÇOý·mëu¿W÷r:?anÝä׈5É“œU µãÀÉ݉h"¼‹‡´ Rþf–èÑÛ´obŠëI$†m´ž9“R6û½úá±ÖY^¡ÐeÅÕdÈl¶P☊öPÀÞòû–Xï÷ê-é±/owso2ˆAý*¦¹‘§'£,yµß«·â%¿Œ:‡Ã]F¡ 'F¿¶î2˜±ÈïÕ»³‡J–ˆÙƒ˜ænDÏ}¾íl˜%?ï÷ê—î$^€™+,J@² Šq¶½%Á°?ËO‹“è¼Þe¯^îa‰e~¯~ýnÄ?#A„ã}¸õjI\ëicfì(”äRð¢¼zù K<;ñ‚ZRîŠt˜‚ÉL#n™1!"AD ©é€®Pg |U.ýy“1”º®¤ÆÒ=¸MÞê¼pÊ– G©æG/I'€ÜФÅû?Y/Ùf%s®98ˆÈ‘‚Í t‰ïÞ³GÌÁø§7.ÆMGåôʲ©3ÄŠ\qÎÚۗvñì¶š®SîÐmt«(ÊÞmÆÁP{pëp¬7RZ^-J§kk­AQNrçHÔ4LîìSÂéP²ƒˆõ7LPRP™ö¦½Í³êæ¿“L ›m¾ÙÿEòÄP/l”ã w;·OÌŒ”%£„³Ûë>)«YÒÔøFÌr^h¹²ïàGÑ`,šqPäˆÛãhÛ¹ädúå3çÊw§Ö–ÌPêú®ŒÜ8¾3ÜѰ̔Ùð]Ì\°™Ùµ!ÉóÒ‘qÈQD¢zžê,Ÿ©º”H—Ô;ŽéI3N‰çÉ…²˜YŽZÙ‹±€xvžuîkÅy"Âff{”ÞX[²L6P>qJ%Ï‘çBãÚ–ç€eºÙ<΄ÿäÙäå6bƒIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/edit-undo.png000066400000000000000000000030011263211763500215410ustar00rootroot00000000000000‰PNG  IHDR szzôÈIDATXÃÅ—[lTÇ€¿ÿœ³ëõm¡Øq“€Áq(¸„’¸…¨à&%!}0j”<)•€@µi$*µR+¥!ªzI+U©ZJ_š†ÔÁ‰zIÚ¨E¹V”`.áÖ Œ 6\Œ½Ëz½—s™¿ö®–eq×&jGͬöœù¾™ùÿ9爪òÿ,ÖÌoÙû‚üàð³2ëzœ™Ütà%‰åO kÆÂüôº{vÊ"c䨼%ÝmÙŽ{=ði tuÈZÇ©>²¨í; Í÷‡®;€ÊØ·SžŠÌjúãmkž©®ª­ëeeÄÀ›R] ¿›3ïÞûæ·~5¢ÞûÙSXá[ø($¦Øß!MµŽõÖüÛ_P?M(ÈBƒ‹ ÎGŸR`ïoä^;RûjKÛk+g7J>Œš$`3±s‚ˆØa›óû^”8 xE ¯­Ü¤'ÊRÑÞòÍÊè§µ}?â„‚ìIÐ,ªÙ|ªi3FàÇñÝÜd‰KºÃýÿôÕ¸o{ÞµY‡§%°«C"a›Ž9s×<ÐÔúµˆý¨?€âƒz“.5— ü!0cˆUƒ]ñIÄidtð_þ…¾Ï}¬m½¾T–@×óRk…躹eýâ=öÓ‡@“äEÀGÕ“Äß…WOP¬áTÞ‰ÚwÐßý—ÌøhϾØ(íí[4[J Ÿ†mèÂŽ‘Á=—a9õ¨É€IƒI£šA5‹1Üä%ájbxão¤:inýbdÎÜÖU³góã²c k§´;áèˋ۞¨ŠTEÅÏõƒ ¼ñw@ÓLdÁÔçØu8чé}ïÏ™L¼ïîU›ô`yAØ)KÁþûÂω~üvÛßñðÓ麗Ôo PMƒfÐ`?s ãž‚üXvŧðÌ í=ð|ÿ¬‹—¬Ó+Žï’'áª Ú ÁÒ¾CÛ{Î÷üÖç&Œw&ŸPºÿ±ÝïÙóBêôÑ¿Žý»¿×õYNEÝ×±#+ò—ÙãDªU¢7,¸!–æË׌³>+.ž~çõÓ‡Ÿvj¾„Y^°Ù¾— ÜñØêÄð¹‡.œ>úíÞç?<Ò‘»§jõäð† }ˆh}c•KÊX½I3Ÿ]σÉÑ3ÛNt=—VkNõ}€…š‰Õp¡·m“¾ö¹º-£91ûÙñ®?d|¿ »â6L0B¨ÂKX6-É©êÊ ú„›Ž僮ÎT6"T³5ãWaûÍ®zX·j}ràøî”j £&‰…OÌ@`rK6ê‹Æó¾pêðë—ãÏ™‰L(]ÎU²-LžMŒô«Ø "ã¨R7c€•›u¯§Ú:øÁѳçO¾ë‰jÉ'Òºu¨áÙÔåKžH¬*2cÈðþŒd¢X"b~#}=|fdðìAcL¸û!q ª-"–1Œù^ÚƒH‰ÑxÖü­, #"! „suÃHoùk]—ýç…ÿá¬OT%h€çbC ßòùÕU¬ÂƒHDdR*W¥¨_\‰F‘D" è-8?’ý Zê+kBÁàÉkd$óÌ=ðÀ¨ªÉ1¸U/U¥X&‘ȃs­ùÆfÚ«kCn(bN ÄfÇã™}[w°‰— ™œ¨QUUÍÍÜ.‚Ù%ì"¹bóÜ÷XÙ²Ðz´¡1œJÅÝèè°9þÝ_òô»GIå®™¬ªšœÀµÀåô0·ÎÃ~ê1V77±¼:J6$tf€·¿µÝ.à‚s}U WÀ*s®Xå˨ºëÓÔÝÑ­750×÷‹ÅÚµŸc¿~•KÅЂßA~ ŠÐfŠ@¬©Á®«Ãi¾™ðÒ[¨®¿‘Ê* Ç3øC$÷t“8r‚lP‹D_õ8.ÚŽÿšåŠL(çZ_‹€2Õ×qQZ^ .Ep €¹½¾&D¦ûy>)U >Ažæ€ÿçèTÉäÔIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/folder.png000066400000000000000000000025661263211763500211430ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆôPLTEGGG€€€zzzwwwxxxvvvxxx€€€zzzooorrr‘‘‘pppmmmzzzsssooonnnmmmkkkmmmssslll€€€oooiiiiiiffffff5f¥8i¦eee8i§bbb9j§___9i¨^^^7g§ZZZ|ŸÊ4d£WWWq–Ã5e¤UUUd‹½6e¤RRRT~µ2d£PPPEr¬3f¦NNN:i§3f¦KKK4f¤€€III6g¦GGG8i§DDD9g¥>>>Ft­0^–000 %<>96@<* Ü´jÕIDAT8Ëc` `db†Vl ØØcbãââã98±(àâNJNIMKÏÈÌÌàáÅ¢€?+;'7/¿  ° H@PP „Eà DÅŠÓ22KJKËÊËË+’órsr²‹‹‹Äá $$+óª ªkjëŠêÁ ¨®¶¦:S a‡tCciiyESsKK+´´47µ•·Ë ÈvvvA7€8=r@ V PUÖÛ×ßß?aÂD˜“`Š"XÒÔÚiÓgÌœ9 fƒÁœ9sæÎ72XJmÛÂE‹—`€YK—©‚¨-¯_1iå* °zñu°äµëÖo؈6mÞ²US ¬@{Ûö;w¡Ý{öîݧ£ V ×¸ÿÀÁC¨àð‘£GÓ7+0L;~â$LæÔ®ÓW9{΃˜4Ÿ¿pñðáKg._¹zí:¸ajV`ÞtóÖíÕwîÞC÷-,Á ¬<|tç1&xòÔÚ¬ÀöÙóO^b‚W¯í ‘eÿæí»÷0ÁûŽo>}þ‚|ýæ–wvùþãç/lÀÕͤÀÃÓëw7àííã VÀàç„‚CBáI*"Ò/DEGÐ#ßNJ…@«è=9IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/format-indent-less.png000066400000000000000000000016261263211763500233770ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆ’PLTE‹‹‰ªªªŒŽ‰ˆˆˆŒŽˆ‹ˆaaa‹ˆ$$$‡Š…‡‰… ˆŠ…ÿÿÿøø÷÷÷öööõ™™™õõôõõõôôóöööôôôóóòóóóòòñòòòññðñññððïðððïïïïïîîîîîîíííííí웜šêêéìììììëëëꂃUWSééèëëëßßÝoqmèèçêêêéééËÌËac_ççæèèè´µ²XZVZ\Xqso‰ŠˆŸ ž··¶ÍÎÍæææçç癚—Y[Wproˆ‰‡¶¶µÌÍÌååå€~žŸää俿呇ˆ†µµ´ääãææä‹Œ‰žœ´´³ËÌÊãããååäåå㢣¡VXTÊËÉããâää⸹¸prn†‡…ž›´´²ÉÊÈããáääáÊËÊceaÞÞÞÞÞÜÞÞÝààßááßââáããàØØØããßàààƒ€ââßââÞ•–“PȪûtRNSÙåùùù ú8#àì9"+/*'ku$–IDAT8Ë“gSÂ@EcWì½c0F±@QAWTÀÄ®Ø…Ø ±ÄŠ]± ÿÛÝ :!Ž÷ë;çíîY†ùGÒu’ž¡Fdf}M©Â³ÿX“1Í tÌš¸ Ioáx}€m5qm¼Yï–êíæ ¬‰ê])r9ª[º¬:Gp<Õ›=yƒ¦›±.XmŽî$€œ®mǺÃÙó zgoÙNt§Ë·õ A|9ª»<ý Õ #4"XíT÷x} ÕøGB¢ÍÞMt¯×'€T36Žh&&§¦gfç|Ro™Gñ,,.M/¯¬Jüà@pÙ ˆ2ÌëÁMÿÖœ¼ ‹{»{ûrX€`uAàø$¬¨ Õœ.ijó‹Ë«ˆ¢^€Vss‹ÐøÝÝýÃãÓsDU¯£ÐªyÁMŠøraë‘è+\ܬOz{G²LÆXÆ>@›ÅÕ„>ôØrÉ8Ï ûõò … ST\¢÷yKËŠ1À”WTVU§HMm]}ó‚(—5ªª\IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/format-indent-more.png000066400000000000000000000016001263211763500233630ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆƒPLTE‹‹‰ªªªŒŽ‰ˆˆˆŒŽˆ‹ˆaaa‹ˆ$$$‡Š…‡‰… ˆŠ…ÿÿÿøø÷÷÷öööõ™™™õõôõõõôôóöööôôôóóòòòñòòòññðóóóñññððïïïïïïîðððîîîîîíííííí윚ìììììë^`\|~zææåëëëëëê`b^UWSlmjרÖêêêéééêêèçèçççæfgd_a]ÅÆÅèèè¾¾¼¤¥£Œ‹sur[]YXZV¯°®çççÖ×Õ½½¼—˜–ÕÖÕ½½»£¤¢‹ŒŠ‚ßßßÔÕÔ¼¼ºsuqæææææäÓÔÓ»»º¢£¡rtqvxuÙÚØååäååãÒÓÒ»»¹Š‹‰‹ŠââáääâÑÒѺº¸¡¢ VXT£¤¡ääá]_[ããàhjfÌÌËããáããß^`[wyuÙÙØââßââÞ•–“Ê£xótRNSÙåùùù ú8#àì9"+/*'ku$IDAT8ËÓiS‚P€aÚËÛw " ²@I3ú)EE;­¶YYi–¶™íÖO˜[Bu¾ò¼œ™3säSä°˜â’@­ ,Š©ù å2(Šá81DRÃ.Ú È¹¾q‚|Nʹ‡fØ‘ lÏÿÝøY¯ïPòb”¥\jîõ}êi†ÈÀ8G«¹?8í4ƒÔ$˜ ©y0ÌC@ÎIšõMϳÌÍËy8Ì‹Àp&´°¸´¼”Y]“s^” €ìú†Ø”DQ @Þ­íˆÀîž$p )ÿþÁNäÐ`7ÊA`Ø<>‰EN pvÎÅðÐá‹dìÒW©£x" ÆÍ_ßÜêàî^Îé ôÓðb€‡¤’§3YxµÓˆR<>©ùsöþ`þ4’ðúöžPólîZ.D¹Ï”–ç>dP©|®²Y>½ê[-‚ÔÙë­oC£]HSsKk›É´wtvu#_J•VKá›ÕIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/media-playback-start.png000066400000000000000000000020061263211763500236530ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆPLTEIKE**&cc`KLIÁÂÁRSPAC?œžšOQM552xzwOOK&&"__\IKHº»¸QRN@@>)))•–“RRM¾~˜áà¿ dÂòAÁ!¡X*lekMÓªÕá‘QÑXƒ:lMCÕژظø‘¶n^bRrXJ(.ëSÓÒq˜Q‘ŸÅ€d‡¥äà“gÈf¼cc˜t^ÄàIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/media-playback-stop.png000066400000000000000000000012211263211763500235010ustar00rootroot00000000000000‰PNG  IHDR D¤ŠÆ,PLTEX[W...BBBUUUaaavvv€€€™™™ªªª¹¹¹±±±ÂÂÂÙÙÙäääÿÿÿÿÿÿñññëëëTWSýýýûûûùùùþþþüüüåæããåáùúùâãßüüûøùøúûú÷ø÷ãäáãäàâäà÷÷öçèåæçäåçãáãßY\XêëèéêçèéæåæâßáÜÛÞÙÙÛÕÕØÓÖØÒbeaõõõåçäááÞÞàÛÝßÚÜÞÙÜÝØÛÝØÚÜ×ööõknjö÷öæçãäåâäåáàâÞàáÝõöôtwr÷øöêëéçèæõõô}€{øøøïïîííììíëëìꆉ„ùùøññðîîíéêèôôó’øø÷õöõôõôóôòóóòòóñ˜›•ò\&tRNS%$ù#"!  T ÁüIDAT8ËíÒ[WQÆq’ó¡Pz‘=M2öÆ0“rBI#¡ÃH§ïÿ27“yoº·ü¯k=7Ų͔uÇœì®6 ìÅŽÁŽ„3Š‚'œp¼Ñ)81pAr œ 7¤ô AH§)å“àÆÀ,“]•ËBD ¼yV$ùœ/.Ke–÷bà«Tk´®(ÆU³uÝ®ø0ðwº7½¾@yqp[Tî:~ Ãû‘$?d²¤ÇQQ0Ø?Nž¦³‚$ëFïcœ?¿L^§³Ñ›.´yƒÐâ=źí¥ú¡iŸ_ß‹ása ÿЬ:ú÷AÕ/¾Ñ.aÝ9£sIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/mznicon.png000066400000000000000000000326701263211763500213440ustar00rootroot00000000000000‰PNG  IHDRøÐ*.¬P5IDATxÚí½yp×}ïûéîY0Ì`° ˆ}#ˆ»H‰ Eí’­…bʦ#Yñ»ÖMâë%qr+ïEÎòî«z×UQWåÅ‹[^®,+±®eÉ‹D­–DÊ’¸H‚ ö}_ f¦»Ïûcˆ1A@ 0x>U(QƒžîÓóíß9¿óûýŽ"„@_þæoþæ®gžy&ÛçóÅ»)’ÕEÀïH@UÕÿ®ªê#ñn‡du¡ªj—ïFH$’ÅC \"YÅHK$«)p‰d#.‘¬b¤À%’UŒø2@P”x·B²Y´uð#áÜá(ðëŠwÒÀmŠÅ»ÖJEÕ4Ý7Ô—uÞ/î ™ñn͵±ÛíØívLÓdbbÓ\šÆ*ŠBbb"‹…@ @(Zôë9¬V+¡Pˆ@ °$÷¹˜ÄLt•u#bÏ™QóÁ¦qsgw&t0 0„@ÆË]‹sL0Òk0âݘ«ãv»Ù±c7ndbb‚ýû÷söìY cq¬iÅÅÅÜu×]dddPWWÇG}Äààࢼ`TU¥  €;üü|.^¼ÈþýûéééY²Úb° 7Žö“#úž÷{¿<Ð/n ÆB ãBS¢–ʾ,%BËò9Y,öìÙÿøEŠ‹‹Ñuššžzê):::XÌ0眜žzê)î¼óNœN'cccüó?ÿ3?ÿùωùõ222ø³?û3vïÞÛíÆï÷óýïŸýèGô÷÷/âS^\nHàM~]ûpÀøò¾NãÔ ïÀ$Œ˜1¥h…È—ýW2“)È <#EQHHHÀív£\šÀëºÎÈȺ®_ó{v»¤¤$¬V+BÆÆÆ3›’’ÂÃ?Ì–-[p8<üðÃ<÷Üsôöö.êùÎ;ïäŽ;î ¨¨UUÉÌÌdïÞ½¼÷Þ{ŒŽŽ"„@UURRR¢÷2Ÿg§ë:>Ÿ`0ÀöíÛyà(..FUU222xüñÇùío»h£†¥`Þ§;xǶ?|¿—µ}_\²>*RÌKˆÕjvÊäädzzzxñÅill¼æº¼¼œx€ÜÜ\4M# ñË_þ’ÇϘsÚl6Ün7Ëï»Ibb"IIIÑ—Êb‘’’‚Ãá˜v´´4, Š¢ „ !!?þã?&??^ç¶X,´··ó /ÐÚÚŠ—Ë5ã¾®Ö†•ÆœÞä7´ßt†ÿñ…ó¯.Œ˜ŒN½ì/·Ö’%Ãjµ²k×.>ûÙÏ’––DÞÐÐ@WW~¿Æw4Mã–[ná‰'ž //EQ0 ƒÞÞ^êëëg|hhˆ“'O²~ýz2331M“‹/ÒÔÔtÝQB,8~ü8¤¥¥‘€ßïç£>ŠZoˆŒF}ôQÊËËç%BEQØ·oÑsÕ××sæÌ¼^/‰‰‰>üðCº»»W¬õ†9 üÄp0÷ÇÆÏ_n7oë™ä[œ±Ùl”””™™‰Óé"wãÆ¼ÿþûWxRR¥¥¥äää’’ýº»»™œœ\ô{]L®+ðÃz鿞7Þ½ÃôŽšRÜËMÓX³f )))ÓæÇV«•¢¢"233illœÖÖ®]KAAÁ çää––†¦i3¾‡éêꢻ»{VA©ªŠÅb¹ªóÍívãñx¢¿a||üºçett4:ç¾Ó49uêÁ`p†B`·Û©¨¨ 111úùàà ¯¿þ:===3Î966ÆØØØ5¯w96›íª÷©( )))$''£(  ÍÛ!ét:q¹\Øl6 à  âóùæ}žk üÌhØûÝ‹á·öµ ¯n\Ü+wt³ø˜ LæýŒTU%??Ÿ¤¤¤iŸ+ŠBzz:•••œ8qbÚTUUŠŠŠÈÊÊšöR€ˆeOOOŸñ9@aa!kÖ¬‰zª§OŸŽzŸ§ðz½lÚ´ »ÝΘªN“ššJyy9[·n¥¬¬ —ËÅèè(çÎã½÷Þ£±±ñªÖét²nݺè=jšFKK ]]]Ñ—P à›ßü&III3©( ÕÕÕüã?þcTà†apîÜ9Þyç×t8¬]»–ÔÔTLÓDÓ4ºººhkk›q¯ÙÙÙÔÔÔÐÝÝÍ‘#G¢çÊÌ̤ººš[n¹…uëÖa±XèêêâÔ©Só™Ïðàƒ’™™Ibb"Š¢D-ï{ï½Ç³Ï>ËáǯùwMOOçÁäÓŸþ4›6m"11MÓB …˜˜˜àܹs¼üò˼úê«ôööÎÞW®öá&Ÿúi³~÷ˆÉÜU)!°ªàµ+¬q¨d&(¤'€Ë¢`³(Òš_bјV8îQ8©BpŽß³X,E;ïåóÌ©yxJJÊ4QJJÊ´9û•Žª¬¬,œNç4'D†ï›7o&55EQHJJÂf³E¿›ŸŸÏ׿þuvìØAVV¦iòÕ¯~•ÄÄDvíÚÅý÷ßOvvvô;S¤¦¦²gÏ’““yúé§©­­6=°Ûí”––²qãÆèÒXff&š¦M;ÏÕ<ÜŠ¢““Þ={HHHˆרØÈ믿~ÕyµÝngݺulܸUUQ…ÇO›Îlذ¯ýëlÚ´ ¯×Kaa!_ýêWyíµ×xüñÇÙ±c^¯Uîöz½¤¥¥‘––Æ_ÿõ_ÓÐÐ0ãúééé<ùä“üéŸþ)¹¹¹Ñ¸ƒ+ÉÎΦ²²’‚‚¾÷½ïÍêåŸ!ð}]ÁOýõÆÓ=“sœs P¸4Øž¦°#]£Ò£‘çPI·+ØUÐTU&S\ Ea¤Oᇩ*çµ¹ <99™’’œN'†a088H(Âëõb·Û)(( ¬¬ŒÆÆÆ¨eÌËË#??Ÿ„„ à»»;êžza¤§§ÓÙÙyÕ%°)a]n-… S__Ï=÷܃¦ihšÆŽ;(**"%%ÇsM·Ûíæž{î¡©©‰®®.:::¦uVUU£?Sמú¹Þ9!!½{÷R^^ý®Ïç㥗^âüùóWÄå/¼©ï!¦]§»»›öövjjj¢F»w簾¦&ú‚¼‡{ï½—?ÿó?ç¯þꯦ=ãÔÔT¾ô¥/ñå/™¬¬¬ë®$$$PXXÈC=Äk¯½vUgêåÌø›ôŸ3A››¸U 7AáŠ,Ü›©QåQHÒ4lš‚EŠzVl à´(s(išFVV^¯‹ÅB0Œ äöÛoÇëõ’ššÊúõëùàƒÇf³QTTDZZªªâ÷û9zô(YYY¬_¿‹ÅB^^©©©Ñ!ôå\Þɯüw__?ýéO)--ZÌÄÄDŠ‹‹£ÇéºÎ¹sç8þ<)))lܸqÚˆ`ÇŽ¼ôÒK3¬ÑÕD|¥è®DQòòòøô§?=m„sñâE~ó›ßÌyîz5š››yæ™g(++cûöíØl6<gÚ½9r„¶¶6 ¸í¶Û¢¿s¹\ìÚµ ¯×¦¦ilß¾/|á dggGíééáã?¦½½§ÓÉ–-[Ø´iŠ¢°ÿ~~ö³ŸÑÖÖ6ëý4ÿ qò©×; ·®Ía‘[D¾¼Þ _.³òé<+n«*E=OÄ<ÃЧ’0\.éP:tˆªª*¼^/.—‹7âv»ééé!%%%:/èììdÿþýlÛ¶òòr bá322¢/¹‡ijjâÙgŸ¥¦¦&@3ÅÄÄ¿þõ¯yî¹ç¸xñ"n·›'Ÿ|’'Ÿ|2ê@[³fÍu-ý|°ÙlìÙ³‡ÒÒÒiÖûÕW_¥±±qAA+Á`'Nðÿñ¬[·Ž5kÖLû} à»ßý./¿ü2]]]òôÓOO¹Çã™&p¯×ËÞ½{§½GGGyúé§Ù·oýýýÑéÊ“O>Éðð0/¾øbtõ`6¢oô‡í/¶™Oë ÌÚ+À‚ÉFÊ_WZ¹?Ó‚Ç&#_–EQ(((˜fººº¨««£¿¿ŸuëÖaµZ),,$??Ÿ––ÒÒÒ¨¬¬Œ ªµµ•ºº:òòò¢Ö:%%…ÌÌLf8¼fÃ0 êëëill$+++êqƒ8p€ù—¡®®Ž`0ˆªª¼ýöÛ<úè£8NEAÓ´óÖeÍš5ìÝ»7:÷hiiᥗ^š×‹ëZ˜¦Éûï¿Ï×¾ö5222¦½”~ò“Ÿðï|‡®®®h„à믿>MàBˆi~„ÜÜ\víÚ5í<äùçŸgddÓ4Q…¡¡!úúú£¯¯oΑ„ѧzjÄÜs¨_D\Þ×C€& Ì¥ò—eV>™eÁcÓf»Ž$FLÍ—§æ{º®Ó××Gww7Ñ!hZZ8Nrrr(**ŠvúÆÆF𛛣swˆX¾ÜÜ\\.× ‰mrr’öööi¯»»›þð‡œ>}š@ €išÑ$±±±˜GˆY­Vî¾ûîisïññqÞ}÷]ZZZbrÚÞÞÎððð´ó={–ÿ÷§££ƒp8Œiš†Akkë5Ï£ªjôE<…ÏçãÀÓÎ/„ sñâEº»»ç&ýK¾Ó-ž ÏòÀ/UÉ´+üa¡•‡r,¸­Òr/Š¢àt:ÉÏÏzYu]g``€ááaêêê¢ëÏÉÉÉ”––âñx(..ŽÎ¿GGGihh`dd„áááiYdSm7"ð©bW:¥Ž=:#Æ}¶yô’””Äã?>ÍÝÛÛËÏþó˜F¤MNN2999íNœ8qÕ$Ÿë¦X­Vrrr¦­0ôõõqæÌ™köÌ÷¹©çFL÷û}Ææ¹Ä—ÛT¸-Cåó…Ú%Ë-'ÝK…¢(dddDçÊélSC·Ó§OGž˜˜HII ”——G‡ô---477399ÉÈÈ~¿?Ú)óòòHII¹ááò•/  …®Ù)c)rMÓ¨©©aëÖ­Ñ!ðää$û÷ïçÌ™31O¹²íóÖ@d4vù:ýÔyb™®\ßÝè×O ¹ôë|ìÎRÈOÔ¤´—˜©ù÷T°Š‚ññq†‡‡ ƒ´´´ÐÚÚJ(BUUrrr¨©©aýúõÑŽÔØØH[[¡PˆááaÆÆÆ¢ÿrOz¬Ú{½—E,Ó0m6O<ñD4u"Ùp/¾øâ ‰ïFîu¾\Í"kš6ïüö로Ÿ ÎágUÕn•û²4–¦ÂM§æß¦i2::ŠßïÇ4M†††8{öl4-;;›Ý»wSYYnhh §§Ã0š&p¯×KffæŒXõ厢(¬_¿ž]»vEG6¡Pˆ#GŽP[[»è™o7J8f```Úg©©©Æì*@ý¨yÿuº4÷N±(lKSY“hAÍ—ž) >%pÃ0èëë‹Îóü~ÿ´y¸Çãaýúõx½^4M£··—††ü~?Bˆ¨À§`·ÛÉÉÉY’‚±DUU>÷¹Ïáõz£Ÿù|¾¨'z¹¢ë:­­­\¾«lzz:Û·oݳhÞÙôª Èp¨lHQP¥¸ãBbb"Q'Ò”À§HÁ`sçÎEK iš­J ÐÔÔDSSSt¹hddŸÏ7ÍÂåääàv»c¶lµØ(ŠÂÚµky衇¢C[]×9qâ@Q¬Vë5â}Ÿíííœ8q"úÿ6›ûî»M›6͸Ï?ù“?a÷îÝóšBYÎŽ)ý!f5Ȫ©v(KR‰f’H–Œ©L±ËãÉ Ã §§'*XÓ4éééáÂ… ”••ÍÈ6khhˆÎ¿!PÑßß?-ürGÛrÚ^Ž‚½{÷’››u¨ªÊÚµkyæ™g®ù=›ÍF}}=ßþö·éêêŠ[ûÛÚÚØ·o»víŠ~VTTÄ?ýÓ?ñÊ+¯P__OJJ wß}7ŸúÔ§‡ÃlÞ¼™ï|ç; Îz~˸iù³‡ª@š]!#A_‹S —gƒéºNooï´Ž‘‘êêê¸óÎ;§ < ÑÜÜø`Þ^«ÕJ]]]t<pòäÉh:­ÝnçÂ… Wm¿‚ÚÚZ&''£ëÖõõõ3†Ê¦iÒÝÝÍÁƒ£± ===ŒÍ8çØØ¿úÕ¯hmmå‰'žà±Ç›ö2‡H±È7Þxƒ^xÚÚÚ9ÕÆSö÷êâ‘ø®Þ*ÀaÏåj|» U•±ç±¢··—o}ë[<óÌ3³.éx<\.‡§Ó‰¦iœ?~F‡±X,x<ÜnwÔã:!uåË`ª„¦iLLL £ÞuÓ4IKK#999zžP(DGGnjάªjôØ)±º»»gëp8¢¹ëñô÷÷O uµÛíx½Þè JQ¢  MÍÈȸáÀœ@ @oo/áp«Õ-™<•s>22ÂàààU縹¹¹ÓF!SË+-ªËå"+++úy8¦»»ûšÓ›ÍFzz:%%%ãñx¢Å.[ZZèéé™1-»ªªvÉ W—!œêXWë|S5¼®ô²^m87%f`ZrÃCCC ÍzÓ4˜¸qµcííí×=. ÒÙÙyÝcü~ÿ‚£Ô®Þµ~%W¶íZǎͰ´×V‡B!º»»éëëãØ±cÑ’Máp˜P(4ïxt)ðÄÔv®å‚çzÎëyaçÓ™b}l,ï3í¿Ñ6 !¢uëJü]ˆ‰dÑ—HV1RàÉ*F \"YÅHK$«)p‰d#.‘¬b¤À%’UŒ¸D²Š‘_ĺâ§D‘~%CU㌪ª$''“=£‹$vB0‚€ÁõS"…À¡)¸mʬ{€¬¤ÀãLrr2{÷îeç΄ÃáUìp¥ (04iòí‹ôƒy¢DÂlNUøb©¥/?Qù¶2Ͻã–Bˆ1)ð8cµZ)**š¶}$öô„ =Y ´˜×ß{/$Hͳ°};+’­ s¾À2E <ÎL¥~.‡ÒA«Ý@!0 ÄõjI 0M%aù׫š²WInÄe?s8ά¬Ý®Á’[pÃ0"»KŽú7átSL!H°Ûñ¤¤LÛæV"‰5K.ðP(Ä;ï¼Ãþß¾‹ÉÍ7„B`"Ø´y3>ø ¹yyÒ±&Y4–\à¦i2Ô×GCÃÅÈ\ç&ÛäÌ뤤¥âr9£•K%’Å".N6U³`·[1MqSup!@ÓTJËÊØ°aI.W¼›$YåÄg„¬ÌøÇM®ë¸Ý*ªªÈÍÍÙ6½ɵ¸Ù¦ÀqCPA~~•8¥õ–,RàK„aè8.Ê+*ÉÏÏÇj‘!’ÅG | ‚Üü|*ªªp_±c…D²XH/º®ãIö°eËfÖ•–^s+‰$ÖH/2B€¢ òòó©ª^?c¿)‰d1‘_d CÇåtS^QA^^Þ¬[ÚJ$±D | ÈÉË£ªz=ž””x7Er“!¾ˆ†‰Óéd]é:ò fì?-‘,6Rà‹ˆ‚¬¬,Ö¯_Ojª´Þ’¥G |‘0MMÓÈ/*¦¨¸»]fI–)ðEÂ4MÜ®$Š‹ŠHMKws$7)Rà‹€i 4M#+'—‚‚™ó-‰Rà‹€0#εŠÊJòò nªŒ9ÉòB <Æ!PT•¬ì,ªªªHKO‹w“$71Ku!¡`1¿a׌QEQ°Z¬Øí± 5M“ÄD'¥åÊ”PI\YrÛìvn«©Áëõ"ñÓ·¢`˜-MÍ9r˜pHgá#i¢¨dffR]U7##^w'‘q¸Õjeý† ”W”ÇùÖ††ééêÆ4Œ…ŸŽH`K‚#ue¥­Ê°T¿ßÏÈð0cc>‚Á†i`³ZIp$âv¹q'»q$8n¶ZË–¸ô@›Í÷Œ*ÃÐäܹs†¹`G˜ðz3X¿aYYÙ‹ÐjÁÈÈ(N§sɢↆi¸x‘óçÏÓÖÚÆà@?>Ÿp0ˆɃEU@³ZH°;p9¤x½äåäP²nëÊÊHKME‘ußãÂê31sdtd”#GÐßדó ÓÄn·Q²®”¢â˜[ïÎÎNÞxãuNŸ8ÉíwÞÁ½÷ÝÛí^”gã÷û9sæ4µ‡ŽpîÂ9úúƒ¦0Eäe‘âÊT¡q%ZµF½x£ªŠ-!OJ*%ëÖrË-ÛÙ´y3ÉÉÉrUa ¹)nš&}==œª=N8Œu‰xÒÒ½lÜ´‘ÜÜܘµuÜïçw¿ûoîÛG[k3ÁP˜¾¾^¡0Ÿ|ðÁ˜¦ŸööörèàÇüð#ZÛZ÷û1M“ˆžÅ%Åeâ¼âÿ§~o˜ÃÔÑý~&ü~º;;8|è0¹¹9ÔÔ|‚Û︃ŒŒ )ô%সÏçãØñctwwGŒÐÏgš&V«µ%k)**ŽÉðYA[k+/<ÿ>~ÉB‚Ï7Ư~ù2ª¦ñÀ,¸BLoo/ØÏ‡ £½ƒ`0Yî»$Øž…+7MA`|‚†óhjlæÀþ÷¹÷þû¹÷¾ûILL\ð³’\››RàCƒƒ;^ËdpE‰õ ©i)lذ‘¼¼¼·ophˆà·ß¦­µÓŒ ƒ/ܘÏÏo~õK¹ó®»p:ó¾ŽÏçã£?ä·o½EsK#¡`8ú»XZWå²*º†®ÓÜÔÄs?ú!íí<ú@VV¶Ü›m‘¸éîóù8^{Œö–v„¨ ÜxÁ4«FQÑZŠKJ°/ ,5pêÔIÞxm§Oל p-Ë©(0<4Ä+¿x '™[¶mÇnŸÛvZ†apæôi^ýõ¯©;yÿøŠ‹±ÌìL½¤B!×_{•æ¦f{üq6lÚ$Ói›Nà#ÃÃ?^K 0ëÁãIaÃæÎû»âÒn–Í-ͼñúëúè#†‡Gæ(8…Þž^zñEÜÉÉTVV]7°FÁÀÀ¿}ë-Þyûmúúz. û•9\+¶D„®ræôiþí;ßæ±?ú<5;wÊ!{Œ¹©>>>NÝ©S475c患̄0Q5ÂÂ"JJÖáp8æõ}Ó4àwðî;oÓÞÞŽišsœ¢Dj¾556òË_üO²‡¼kì3nš&gÏœá׿|™cµÇ˜œœŒn]O,ή.~üƒg ‡BìºóΚnH®ÎM%ð¡¡!ŽÕÖ26æ‹ÉœOHv¹¨^_=/ëmš&ãããœ99Icc#õõõèºë­¨*yTTUÍ9ØD³X(+/ãö]wà÷ûéhï@3&Î>E‰XòÖ¶V~õÊ+ àøñc¼±ïu&''Ð4mÙŠû÷Ïœ >|ˆÂ¢RS#--mÙ·{9sS|dd˜£‡248#_±ÀápR]]MÑÚây}ÓãIáS=Lº×Ë+/½Ä… ˆ‘ÈT îÔIšðûǦ±â’^ì6ï¼ý6Uë7pë­·É¡úX>ž–E" ÑÖÚJ}ý9Âá0ꂇ|‘”ÐÜÜÈ.¡ždϼÏ`³YÙ±s'Ÿûü穪®BU-aÆä~EÁ4££#‘ÑÁ2r¦Í«ÕÊàà ö¿Oÿïcß%ófåýõçÉðÈGa` oÁA-F&$$PQ]EÑÚµ7|UQزu+Ÿ}ìsTVU¡(Z EšfYÑCÛ„µ‡ÒÒÜD8^ø oRVÖØmžèºNwwõÑe¨…Þn$ø$33“ÊÊ ÒÒ^ŽiÓæM†Ž®‡¹pþ¦)V´0c…Õbaddˆ£GRZVNzzº|.7Àª¶à>ß(µGŽÑÝÝÅï“&n!"ÃëòÊ*Ö®-‰IEaÓæÍ<üÈnrr§âØåÀjµqúÔ)†flF77«Và†aÐÛÛÇ™ºSLLb¶ÜâÍðR]]ÍšÌ̘µÕb±p˶mÜs、¦¦"§œ¬6]tvtÖõx7gE²j>66ƉÚZ:Ú;‰…õF,²² ŠKn|î}-œIIì¨ÙÉ-Û¶a·Úb6BLÃ@×õèaD @,ÖˆCUÁ —Òeå›o¾¬J›¦ÉàÀuu§ðûbb½š–Nõ†õdgç,J»³srøÄí»(^·–ÈŸ&þÚ0 Âa!¶.—‹d‡d·û¥Úkz8"öX=¦båÛÛÚ˜˜˜ˆ÷£X‘¬J'ÛTRIKKK´HˆÄn—®+¥dݺEã.¯¨`ûm5ttt1æ‹QÔÝ `B‰‰ddxÉÍ/ ?/oF: ‰„‚AF†‡iïè ¥±‘îî.Ƭš‹DF šªÑßßK(ºT„B:ÚæÃªøðð'OœÀ72ë- %ÅCõ†jòr^Ðáz8Ù°agêê¨=zbRsf~÷j:v»ü‚B¶ßz+Ûn½•¢kœ´´´ðÁþý¼ÿÞ»ôtu¡Æ0jN³hø}cƒ“rˆ~¬:‡Ãaºº»hnjÂ0͈EY¯-¦¤´ Ë%(,,dã¦M4\<ÏÈÈh¬ ⬘¦‰a˜¤{Ó¨Ùù îà“Î WXXHaa!EE…<ÿüót´¶ÆL䊢L˜Hß«Nà~¿Ÿ¦†F‡cf½]nUë7ÜPA‡Áf·³®´”üÂBFNœ\’k†i ŠJŠÙýÈ£|b×í$%¹æuŽšOÜN(æÙï}ßè(šª.x¸®( º®‡–ä9¬6V•“M×uzº»9{æ,z(£¹² °°òòŠ%Ý%4¿ €ÒÒ²KÁ9‹k¹¦æÛÕë«ùÂþ+wÝsϼŠ‘d—íÛoå¶;"O.fWZîeU <pþ|= /Ä æœ¨“©ªz=EÅEKz/.—‹Â¢b ‹º.nš&¦iR½~O|þÿ`ÓæÍs®ív5‰‰|âöÛq''Gd)‡ÕqeÕÜ0 úûú8sú #ÃÃ1ž›äæåSQQÓ™´ä÷”…;iñ®+èz˜òŠröþáRYY¹àÌ-MÓÈËϧ  ašÒöÆ™U#ð‰ñqޝåıch1(¢ „‰3ÉÍm;vPY]—{ÊÊÎ&3+kQ†éB@(dãÆÍü—ÿú'lÚ¼Û,÷å8N*«*AU¥3«Bà†aÐÝÝÍé“§ðù|h–… Ü4……”WT’0¿bб"1ÑIfvV«%æ: …‚äççóÀƒRVZÓ’ÅV«•¬¬llVktWI|XŸœ pñÂ.œ?³¡yB‚ƒÊêjŠ‹çWÐ!–¨ªJFF&V›XŠD× œN'wÝ}77mšw5ØÙÐ4 ÉÉ)‘ L‰++^à¦iÐ××ÇéºS bYpJ(˜†I^~.UUU$-âx.¤¥§c·YcfÁ…aèܲm·Õì$%ÅsªªJ¢3›ÕÙœPð¸±â †hjhäÌéÓ‘ÀЧ„ lv;•UÕ¬-YïÛ#ÅãÁž³È°P(D^A5·ßNVvvÌŠ>^Ž¢(X¬ÖH€Œ)ÕOV´ÀMÓdhpºº:úûz±Z^»Ë0t23³¨ª^Ó;o”$— »ÍG6I´²íÖ[©¬¨\Ôu}MÓP5Mï8³¢‡iinæÌé“£”PÍJEUëJK—Åæ‡ã²×Âä¢ë:¥e¥lݺOJÊ¢&n(1h¯dáÄ¿ß BF‡‡9}æ4XcPyS7t¼k¨®Þ@jjj¼oˆl`±Z,Æ©Zr7m$¿°XV*½IX±‡Ã´µ·sòø ÃŒ‰ŸHU5Ê+Ê)¯¨X6÷5MÅbÑX¨sA›ÍŽÇ“º¤!·’ø²b>66Fý™3´¶4Çd ×4MÒÒÒ¨Z_Mº×»|–w%fÉ¢¿¿%9t¾YX‘×uÎŽŽ?F8F]À¾^—³®´ŒÊŠj¬Vëo¦+‘,+Rà—6lhÀf·-Ø ™¦‰Åb¡jýz2³3eÕɪaÅ ÜÐu:;:9^[ËäÄDŒ"מ••Òù$YU¬8Oƒ45\àü¹z¬VÛ‚sާ¬wiY9yùùËbiL"‰+ª7†AOw7µÇŽáó_ò./ !.·›ššØíÒ»,Y]¬(‡B!𛩫;“Úh¦i¢i%¥ë¨Þ°aÙ,I$±bÅÜ4Mz{º9|äÃÃÃXc°%®—ËÅŽš¸ÝîxߢDsVŒÀC¡ÍÍ-Ô<‰U³ è:¦‰¦©¬-YǦM›¥sM²*Y7M“N?ÎàÀ@l[„À™”ÄöÛn]I%Éb°"®ë:í­Í¯=³‚š¢RXXÌæ-[dè¦dÕ²ì.„`hhSÇOÒÛÛ3ëíHLdëöm¤¦,¤‰d1Xö×uÎÎNŽ;J,¶ðÂDE!¯0Ÿ­[o!!ÆåŠ$’åIJ¸Ï7Êé“'iom‹‰#L°;lÙr ^¯W†¥JV5ËZຮÓÕÑÉ‘£G1Øã[B›“ÃÖmÛHLLŒ÷-J$‹Ê²øÄÄçêëinhŒ‰õ6… Áá`ÓÖ­ädg˰TɪgÙöpÃ0èêìäàÇ éFL¬· dffqË-ÛpHë-¹ X¶Ÿ h¸x‘†‹çI°ÇÀz›&6»õ›6’—Ÿ/ÃR%7ËRà¦iÒÛ×ÇÁ?fbr2õÈŠÞ /Û·o{­s‰d©X–…B4]¼ÈÙ3§±ÇÄs.°Ú¨ªÞ@Aa‘´Þ’›†e'p!ýýý>r˜1¿?ްHÌzZZ·lÛ†Ë5ÿ}¯%’•ʲx8¦µ¥™S'Nb‹IJ¨ÀbµPQQAqÉÚ˜n²'‘,w–ÀGF†©­=ÊpLöø©žT¶nÛNŠ'%Þ·'‘,) OªŽ!º®ÓÖÚFí‘£h1¨”jš›ÍJyeååeX­Ö—xZ d4d±XV÷ù|œ8~Œ¾¾˜TlHLLdmI a]§¿¿/Þ·8KoZ­‰‰I2«Ms–ÀMÓ¤««“ÇÇhÓ¢¨Óäĉã476±ü þ+„0ìÜy;%¥¥‘9%’±lz“ß?FÝÉStwuƨ“Gb×}ccüèc È÷-^µ¡à$kוP\\BñÚµ .‰!Ë¢7 !èíéåСC†S+¦ª*‡cùlEt9 „&m8N4‹ey¶Q²¢YŸ˜çÌÙ³´47¢i‹Ô¤eè\C(Ìå7s¬–Å2ÙÀÀ‡?þ˜P0$˜DCâ.ðÉÉI.\¸@ÃÅ ‹g½%’›”¸ |p`£‡3>>.­·Dcâ*ð@ À™Óu«=*‹/H$‹@\U548Èád4—D²ÄMà¡`¦¦FêÏÕKqK$‹DÜ>4<Ä‘C‡ó‹rȉd&q¸iš´··sêTß!‘,qxpr’cGŽ0<4ˆ´ÞÉâ±äB088ȱcÇ1 SZo‰dYrƒAŽ9Boo4ÞÉ"³¤B0:2‡¿ûC×¥÷\"Yd–Tà¡Pˆãµµ´¶6Çû¾W(ò…(™Küíóùøðw¿cÜ@•}fdK¥ë¥”™ÂŒüÞ7¬q¸t¥C˜*[sƒ)s&æÎq3³d…BÔ:Å… ç1õ0BÓ¤ARtÓÀ4ÍH6ëÕ(¦ÙÊɈ{hÂ0¦yY,N„˜¦‰©„-‘wÙ G×1­v"R—Ì—%¸!Ÿ¸ývLSÈù÷%t]'Ýë%+3óªUdmö¶Ýº¬œ0;Ž0Ml -Iéh—ÛÍwÜÅèè(ŠªÜð»\¢ª¬Y³U‘ù óeÉn³Ù¨Ù¹“mÛ·Òx_ŽªiØl6Ô«<11‘O~êAt]_Ð3€ª(Øìö%xzz:{ûCLÓ\p»À‘˜(w¤¹–LàŠ¢àp8"å“$sFUÕ¹¹Åb‘{À-ä˜G"YÅHK$«)p‰d#.‘¬b¤À%’UŒ¸D²Š‘—HV1RàÉ*F \"YÅHK$«)p‰d#.‘¬b¤À%’UŒ¸D²Š‘—HV1RàÉ*F \"YÅHK$«)p‰d#.‘¬b¤À%’«°ZªþÊ F$7 sß8AA`¼Û Ô9›p:pã¥÷%’ø!˜kßU°*°ZöµVmVAÂì¸)À§Ãx8ÞM–Hæ!¾°˜}ç'!H´(Ø4úâÝæX ºTœn«20Û¦€¡ ôåQ’•‡? ]9ÛUQH²);ÕÕ1D/O¶Ld;hžm‚b è›49í3âÝf‰d^„Mh3虈ë üÒ>IkVÇð.yÑK’”3× (`*00)8:CÎÄ%+_Èàƒ“‰ðì£O‡rWÞNQ×DØšª¼;ÛÈE Ãïtê† ¤»M²0… Þ§ój‡Nx6Ãlra­SùF¼Û+T€ ÉÚG©öÙ‡%ºç}‚׺Müºœ‹K–?#!“ßt´úbVg²B¥[!'Qû~¼Û+T€OdX7xøã:¢U"V|( owé|Ô¯£›&K²›¼Dr„„ÉGýa^j7 ÍÓ%À¢Â…r·Öï¶ÇŠè]ß—©ýom¶5tg}&Ï5\30…"%.Yv˜˜œÑy¦A§mŒë;×LAN¢Âæ4åÅx·=–Do{×í×9IÊæìrõ™ ïô<Û¨Óì×1…”¸dù` AÓ¨Áw.èè}V(j¼ åÉÊ×âÝþX½õštkóCÙÚóêl¾³KCõþ°ÂÿnÕùÎÅ0ç}:†¹d0iÎŒê|ó\˜—ZMÆaNåi¸7S]—d].SL{·ýA¾úl®Sc6±^ywHá§-:ÿtVçäˆÎhHŠ\L!虼קóÿÔy±Å`Èdvq P Áé;Ò,·Äû>b"®óÿu<ðô·ÏOU1‡§y@Éš`§WãÑ\ wxR4’-*v-Þ·'YÍ   FB‚ÎIƒ×:L^éйàLÂÜRÂLH¶(|÷­á‰¢„uñ¾§X3CàGõÜ¿¬ þæ£~± ËÏ"À¦À»ÂúAMš…-iy‰`WUl*«'ÿNG"}U… ݤa >Ôù¨Ïä˜`HgöxóËNg wf*¼uWâªì¡3$¼-ÍÒñÅýÿmòë/ö„„uNY5 „´O zzàð€ŽÇ¦“éPÈt¨¸¬`Y•OÂ&øÂÐ0é ÀHP0:µb;q+&”¸á E–Óñ¾§Åb†ŸâÔþþ»gõÿ9$¸áÔ9U€UM‘\;L‰£ ‰KÖz>ÂæÒñ²à+ë,ü]õ* >¿‚kÂÿ¨ÀòÍþ€ÈùÏ&óK£&7TûŜʚ—¾7Éb \ñß¹pIÜ©6…Ϩ«ZÜpÙ–º­“_)µþÝžBõùE‘¡ç’•Ï%q§Yá±|•¯•ÚâÝ¤ÅæšCô)N„“¿u>üÏ¿j3þ´ÏcmÉ åR0K–/Tùæ–ÕéT»’Ypq,”ð¿šÌ¿ùfã/:'ErXp©š›{K–9—º¨]Q(v*ü—b•§*W÷°üræ$ð)~Ü8ùé7™{fXlš i½i•dÅq©‹z­°)Uå¿­µ¾ûé|ë=ñnÖR2/ åþ´Eÿ?ßêá³]ãf–ojyB`–,.ͳQÀ£A¾ÎQy¢Ðº®2ÙÚïæ-5óøû:ƒÛ^é_:8hÞÛùCaãrs.-»d©¸¬ Û4HÑ ËŸX£±7GûÚ®5¶oÇ»‰ñâ†>Åû}¡òw{Íϼ×gþA_lñéà7!$ºô¼K…H·CQpjà±+'Ámé÷e*Ýšf[U©Ÿ7ôŒ*ð).úŒ„“£fÍiŸyk£OTuÍ¢ÑIQã×A7•yÇ"H$×D1±j . ¤Ú œ*eI <ê7îÍ´þßñnÞr"f¿’_Hí7o ÀÀd¼oS²š°) PäVÉuðŸÅN›+^ƒÿL† ¢fIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/mznlogo.png000066400000000000000000000327321263211763500213530ustar00rootroot00000000000000‰PNG  IHDRøÐ*.¬P5¡IDATxÚí½ip×yïýëîY03`°ûFÁM)²(Ù–,[’)¥:–¿‘nß8Îr«r+v%©z¿¤*ÎR•/JlÅö•m%ÖkYò¢Õ’%‘²$Š$¸$¸`ßû2`03Ý缆IÄ`ž_yÊÔ,ݧçßÏsžóœçhRÊÇQ¬~¿Ÿ¯ýë<õÔSÕnŽ"¹Ù€­v+net]¿ŠD¢ëz¯êU E£®P$1Jà E£®P$1Jà E£¾Êh«ÝERc[®K$B‚%AÊÕ¾Ì5Ц½|4¥tÅ20 )™2%AS2ŒF$AScÚ¡D>Ý0ŒH.%±Ú­¹>N§§Ó‰‚©©)„X™Æjš†ÛíÆf³ …ˆD"Ë~>—Ë…Ýn'‰ …Vä:—“% |ZHÆÂ‚öIAã˜ä츠uRàÁ” ––”(}_›1!넬Õn̵IKKcïÞ½lß¾©©)<ȹsç°¬åm°aTTTðÑ~”ÜÜ\yÿý÷^–Œ®ë”––rÏ=÷PRRÂ¥K—8xð }}}+ö@[nZàS¦Äœ3y§ßâРd,,™ˆhLJˆÌˆZ)û:H°I´HS®Éûd³ÙxôÑGùâ¿HEE¦iR__ÏW¾òº»»‘Ë8ö*,,ä+_ù ÷Þ{/‡‰‰ þùŸÿ™Ÿüä'Œ%ü|¹¹¹üÙŸýû÷ï'--`0Èw¾ó¾÷½ï188¸ŒwyyY´À£BÐ5%xoÈâ•‹†aÉÐ4Œ yy¬-c‘£™1¥[^Ÿ™çMÜ#MÓHII!-- íòÞ4MÆÆÆ0Móº¿s:¤¦¦b·ÛR211A(š#ØŒŒ ~øan»í6\.?ü0Ï<ó ýýýËê2ß{ï½ÜsÏ=”——£ë:yyy8p€·ß~›ññq¤”èºNFFFüZsïLÓ$‡سg<ðèºNnn.=ö¿þõ¯—ÍkX ,p‰d4"9>å¿;-Þé‡$(/[%æÄn·Ç;ezz:}}}<÷Üs´´´\×…®®®æ ¨¨Ã0ˆD"üìg?ãÈ‘#sÆœ‡ƒ´´4l¶ßv·ÛMjjjü¡²\dddàr¹f'++ ›Í†¦iH)IIIáÿð)))YÔ±m6]]]<ûì³ttt ¥Äëõι®kµa½± [BÒ1%øeO”gÛÇã3û+­µbŰÛíìÛ·Ï~ö³dee1777ÓÛÛK0œóÃ0¸ýöÛyüñÇ)..FÓ4,Ë¢¿¿Ÿ¦¦¦9áÔ©Slݺ•¼¼<„\ºt‰ÖÖÖz ‰àĉ´´´••EJJ Á`÷ß?n½!æ<òÈ#TWW/J„š¦ñÊ+¯055?VSSgÏž%''·ÛM(â½÷ÞÃï÷¯[ë ó \bJÉ™ñ(ßo±x¡KÐ7 &¨ôUÆáp°iÓ&òòòðx<@¬ãnß¾wÞyçšOMM¥²²’ÂÂB222âï—””––ÆÐÐЬÎ …xöÙgؽ{7¡Pˆ_|‘æææe²?~œï|ç; ±aÃÎ;Ç3Ï<Ãððp\”š¦át:ÉÈÈX”À»»»yë­·f囚šøÏÿüO&'')**¢¥¥…ï}ï{ËkXnn(ðˆŒ¹äߺ`ñZ`È’ +s½ðz½ãt:ãï¹\.ª««IOOÇï÷ÏùMQQeee³~PPP€ÏçÃ0Œ9Öª©©‰û·#''‡p8Lÿ5‰& òÒK/qäÈÜn7ãããôööÎ÷/DxRÊYâ·,‹Ó§Oóæ›oFãï‡B!Þ|óMNŸ>×ë%à÷û™žž^ök]N®+pS N þí‚ū݂q¡Ä½V0 ƒ 6‘‘1k|l·Û)//'//–––Y`ãÆ”––Îxaa!YYY†1ç7Ñh”ÞÞ^ü~ÿ¼‚Òu›ÍvÍà[ZZ>Ÿ/þùØØ“““7<æøø8ãããñ1÷Õ!8}ú4ápxŽ—Rât:©©©ÁívÇßæÕW_¥¯¯oÎ1'&&˜˜˜¸îù®Äáp\ó:5M###ƒôôt4McjjŠ‘‘‘E$=^¯‡ÃeY„ÃaÀ¢sM[.,¾u)Ê+]’ܼ¸×¯w³ü‚Eß#]×)))!55uÖûš¦‘Mmm-'Ožœå‚êºNyy9ùùù³ ³ìÙÙÙsÞ(++cÆ ñHu(âÌ™3ñèó 999ìØ±§ÓÉ¡C‡âÕi233©®®f×®]TUUáõzçüùó¼ýöÛ´´´\³Óz<6oÞ¿FÃ0hoo§··7þ …BüË¿ü ©©©s©iuuuüã?þc\à–eqþüyÞ|óÍ9çt¹\lܸ‘ÌÌL„†Aoo/s®µ  €úúzü~?G+//ºº:n¿ýv6oÞŒÍf£··—Ó§OsøðaÚÚÚæýÛº\.*++¹óÎ;©¨¨Àãñ`š&ÃÃÃ477ÓÔÔÄÅ‹™ššZP_™ó•HüSÿ·Íâ]"&îÅh[^ñÒÀ©ƒ]‹¥b*û%š „":DX¸Îm6[ü5iiiÔÖÖâõzg ÜårQZZŠ×ëcí222ÈÏϳ®äá‡æÓŸþ4™™™tuuñ¥/}‰þþ~4MÃëõ²iÓ&>õ©Oñè£"¥äþáøÕ¯~Eaa!û÷ïçÓŸþ4eeex½^ ÃÀ4M‚Á wÜqßÿþ÷9zô(“““³Î›——Ç_þå_²eË4MÃápðïÿþï<÷ÜsŒŽŽ‰D8þü5Çß.—‹ûï¿–õƒ¼ñÆtvvÎy ø|>¾øÅ/R__ļ¡çŸžoûÛ "¥$++‹ªª*öïßÏ#ó™Ï°cÇÜn7†a ¥$‰055Åùóçyá…x饗èï¯\ýF0*yÍoò£6“1ÁÂU))±ëãÔØàÒÉKÑÈN¯MÃaÓ”5¿ Íf05ªq§qJ‡ðg³Ù(//wÞ+Ç™3ãðŒŒŒY¢ŒŒŒYcö«Uùùùx<žYA,ˆ¹ï;wî$33MÓHMMÅápÄ[RRÂW¿úUöîÝK~~>B¾üå/ãv»Ù·oŸøÄ'(((ˆÿf†ÌÌL}ôQÒÓÓùÚ×¾FCCìáÓ餲²’í۷ǧÆòòò0 cÖq®áÖ4ÂÂB}ôQRRRâßkiiáÕW_½æ¸Úét²yóf¶oߎ®ëhšÆ‘#Gf g¶mÛÆW¿úUvìØANNeee|ùË_æå—_æ±ÇcïÞ½äääÌ)¿•““CVVYYYüõ_ÿ5ÍÍÍsΟ͓O>ÉÿñSTTÏ;¸š‚‚jkk)--åÛßþö¼QþYY‚w£üŸ&‹¾é޹%hH¼ìÉÒØ›mPë3(véd;5œ:º®S\ Mcl@ã»™:Œ… <==M›6áñx°,‹ááa"‘9998NJKK©ªª¢¥¥%n‹‹‹)))!%%˲ðûýñôÌ#;;›žžžkNÍëJk)¥dtt”¦¦&>þñc†a°wï^ÊËËÉÈÈÀçó]7––ÆÇ?þqZ[[éíí¥»»{Vg½º^¦iñׯÈ)))8p€êêêøoÏ?ÿ<.\¸¦ ®|àÍüFJ9ë<~¿Ÿ®®.êëëã‰Fû÷ï§¾¾>þ€¼>Ÿûî»?ÿó?ç¯þê¯fÝãÌÌLþäOþ„/}éKäççßpF %%…²²2zè!^~ùåkS¯$.p L ¾ßjraB€±0që@QŠÆï—Û¸/Ï`‹O#Õ0p6%êyq¤€Ç¦-ØQ2 ƒüü|rrr°Ùl„Ãá¸@î¾ûnrrrÈÌÌdëÖ­¼ûî»LNNâp8(//'++ ]× ƒ;vŒüü|¶nÝŠÍf£¸¸˜ÌÌ̸ }%Wvò«ÿ=00À~ô#*++ãÓívSQQÿžišœ?ž .‘‘ÁöíÛgy{÷îåù矟c®%â«Ew5š¦Q\\Ìg>ó™YÎ¥K—øå/¹à±ëµhkkã©§ž¢ªªŠ={öàp8ðù|ø|¾Y×zôèQ:;;)--åÎ;ïŒæõzÙ·o999qa†Áž={xâ‰'(((ˆ·¯¯>ø€®®.<·Ýv;vì@Ó4<Èüc:;;ç£ |Ò„7úL^í¶0LrËØ·¦Á—ªì|¦ØNš]W¢^$r‘iè3‹0¼^/ëP---|øá‡lÙ²…œœ¼^/Û·o'--¾¾>222âãr€žž<ÈîÝ»©®®b>777þÐX(Ñh”ÖÖVž~úiêëëã 43LMMñ‹_ü‚gžy†K—.‘––Æ“O>É“O> mذᆖ~18}ôQ*++gYï—^z‰–––%%­„ÃaNž<Éý×±yóf6lØ0ëóP(Ä·¾õ-^xáz{{)++ãk_ûÚ,‘û|¾YÏÉÉáÀ³ˆããã|ík_ã•W^app0>\yòÉ'å¹çž‹Ï̇ b¬:Ês‚ISƒùR{%Øl÷éüu­OäÙð9TæËJ i¥¥¥³¬Soo/ ²yófìv;eee”””ÐÞÞNVVµµµqAuttÐØØHqqqÜZgdd——GJJÊœ€×|X–ESS---äççÇ#îáp˜C‡ñ¯ÿú¯466‡Ñu7ÞxƒGyǃ¦i†‘°²Ñ6làÀñ±7@{{;Ï?ÿü¢\×CÁ;ï¼Ã_üÅ_››;ë¡ôƒü€o~ó›ôööÆ3_}õÕY—RΊ#±oß¾YÇ9|ø0?üáC¦iŒŒŒ000ÀÄÄ Î$Ô–äô˜àÃA yß †„*¯Îÿª²óÉ|>‡±s)ÀÌxyf¼gš&øý~ZZZâ.hVV555x< )//wú––ÚÚÚâcwˆY¾¢¢"¼^ïM‰mzzš®®®YÏï÷óÝï~—3gÎ …BÄyLLL$,Ëbddd–ÀsrrÈËË›“«¾ÖÑ4­[·²oß¾¸g‰D8zô( ˾òíf‰F£ Íz/33“²²²„CIÓø<ê¾<öΰiìÎÒÙà¶¡\ó•gÆ‚Ïܲ,âã¼`08kîóùغu+999†A?ÍÍ̓A¤”qÏÀétRXX¸"‰®ë|þóŸ''''þ^ ˆG¢×*¦iÒÑÑ1kWÙììlöìÙ“¸{Ð6)çÕ«.!×¥³-CCWâ^Ün7¥¥¥ñ ÒŒÀgHáp˜óçÏÇK †¯J ÐÚÚJkkk|ºhllŒ@ 0ËÂ’––¶nv;Õ47òÐCÅ][Ó49yò$‡BÓ4ìvûu_«}]]]œö±ñ©O}Šh4ÊÎ;ùæ7¿Éððð¼Ç·M A :ï÷Ð5Èrj䦨âk«ÁÌŠ+Wƒ™¦Iÿ¬ޱ±1¹÷Þ{g <‰ÐÖÖ6k~5222Ÿ*›IóLOO_u˶Prss9pàÀ¬©&]×)..ž•úy­ûéóùøîw¿»ªíŸššâõ×_硇âî»ïbÑõ}ûöQUUÅÄÄv»ÜÜ\ÒÒÒøÓ?ýSvîÜÉßÿýßsâĉ>ˆm‘¨Nx»è¤)ó%Â(–MÓæ,µ,‹¡¡¡Ys­3ÓeäççÇß¡££cÎ|ðèèh¼ð‚¦i——‡ÝnOHæ×róÉO~2^ õJl6Û5×·_ÉZpÑ!V5çë_ÿ:%%%”––±xHqqq<“íÊvæää°{÷n<ϼÓú‚g50ë¸>ÕzÆ0 jkkgMMOO3888Kà¦iÒÞÞŽßïŸåzÑÓÓ3Gàccc³v+q¹\”——ÇË1;ŽYÓ6‡ãš¸™ï^ùYJJÊu¿{ågN§3¾Ds†™ê0W߃««¬>ñÄ7\Åu#l6[\8º®Ï™ž²Ûí× 6º\®Y¢»z9ì•ç¸Þ9g‡Ã¼þúëüÝßý.\˜uŸ®•ÆÛÙÙÉßþíßrâĉys l‹‘«* ºzÌ”'zå•WâÅý~?ÃÃÃsÊ,õõõñòË/‰D⹆†:;;ç¤9Ƥ á÷ûijjŠ[ï‹/òÞ{ïÅoתp¿]1öá‡Æ—xÎäŸ_Íøø8‡¦··›ÍFÿ5 >?~<žçp8èèè˜Õþ’’ÆÇÇy÷Ýwõ·Ûí466ÆçÈC¡§NŠ/§u:\¼xñší—RÒÐÐÀôôt|Þº©©iŽ«,„Àï÷søðáxnB__sŽ911ÁÏþs:::xüñÇùÜç>7ëa±b‘¯½öÏ>û, ª§ì7å§ß ¸Qz«— >_dð=t]åž'Šþþ~¾þõ¯óÔSOÍ;¥ãóùðz½¸\.<†apáÂ…9Æf³áóùHKK‹G\g2¤®~Ì‚0 ƒ©©)Âáp<º.„ ++‹ôôôøq"‘ÝÝÝs:³®ëñïΈ- á÷ûç|×årÅ×®C,0888+ÕÕét’““@išÆÐÐP|ÄRSssso:1' ÑßßO4Ån·ÇK&Ϭ9cxxøšcÜ¢¢¢Y^ÈLÀòj‹êõzÉÏÏ¿Fñûý×þ8²³³Ù´iø|¾x±Ëöövúúúæ Ë®‡®ë½Ë¶»¨"ñ\Y„p¦c]«óÍÔðº:Êz-wnFÌÀ¬Å 3ŒŒŒ0222ïq„ ÍIܸÖwC¡]]]7ü^8¦§§ç†ß ƒKÎR»Zx×ûüj®nÛõ¾;111ÇÒÞÈ­ŽD"øý~8~üx¼dS4%‰,:] |1ó‡]h¹à…óFQØÅt¦D7‘×¹í¿Ù6J)ãuë–Êê‡ Ų¡®P$1Jà E£®P$1Jà E£®P$1Jà E£®P$1Jà E£¾HtÅO…býJ¥ª®2º®“žžNAAÁœ ,ŠÄaIÉXB7^)%.C#͡ͻÈz@ |•IOOçÀÜu×]D£ÑuUìp½ i02-øÆ%‹wAÜ (‘´$;35¾Xi£Ä­¡-r︵„”R |µ±Ûí”——ÏÚ¾F‘xú".ÑÚÅ÷Þ‹H2‹mìÙÝë»þø`féçZ(”Ô˜ÒŠ€°7ª%)%R4-›ÝX÷AªõÞ~…baÈ+^ øÞÊ® VÜ‚[–Û]r<€\ÏþÏM¢BJRœN|³¶¹U(ÍŠ <‰ðæ›orð×o!¸õ\)%ÉŽ;yðÁ)*.V5Ų±âB020@só¥ØXçÛäÌŠšddeâõzâ•KŠåbU‚lºaÃé´#„¼¥:¸”`:•UUlÛ¶ƒT¯wµ›¤HrVÇCÖæüã–À4MÒÒ|ÔlÙBQQQ¶éU(®Ç­6^5¤M“””SSS‹GYoÅ  ¾BX–‰Ç㥺¦–’’ì6•‚ X~”ÀW)A")*)¡fËÒ®Ú±B¡X.”ÀWÓ4ñ¥û¸í¶l®¬¼î>V E¢Q_f¤M——”°¥nëœý¦ŠåD |™±,¯'Ꚋ‹‹çÝÒV¡H$Jà+@aq1[ê¶âËÈXí¦(n1”À—Ëx<6Wn¦¤´tÎþÓ År£¾ŒH)ÉÏÏgëÖ­df*ë­Xy”À— !†aPR^AyEN§Z5¦Xy”À— !iÞT*ÊËÉÌÊ^íæ(nQ”À—!$†a_XDii©Zó­X5”À—)bÁµšÚZŠKJo©sе…x‚‘R¢é:ùùlÙ²…¬ì¬Õn’âfå³.¤$3 "«ºbTÓ4ì6;NgâRG…¸Ý*«k(-+SKB«ÊŠ Üátrg}=999Häêé[Ó°„E{kG!1Yº'-Ñ4¼¼<ê¶Ô‘“›»ZW§P« p»ÝÎÖmÛ¨®©^åKצ¯×°¬¥ŽXbKŠ+…ÍU•”U”'eZj0dlt”‰‰ápKX8ìvR\nÒ¼i¤¥§áJqÝjµ<Ö,«ÒǪ¯¨²,“‘áaΟ?e‰%¤” ANN.[·m#?¿`Z-Çãñ¬XVÜÈÈ0Í—.qáÂ:;:$ ‡1cë`Ñ50ì6Rœ.¼99²ióf6WU‘•™‰¦ê¾¯ ÉgbÈøØ8Gep`0!Ç“Bàt:Ø´¹’²òŠ„[ïžž^{íUΜ<ÅÝ÷ÞÃ}÷‚´´´e¹7Á`³gÏÐðáQÎ_<ÏÐÀápKXH!c3ˆÕ×f ˆkñª5ú¥‹Óu))ø22Ù´y#·ß¾‡;w’žž®fV[RàBúú8Ýp‚h$œë‹&deç°}ÇvŠŠŠÖÖÉ`ßüæ7¼þÊ+tv´ŽDè'‰òÉLèòÓþþ~><ü‡ß{ŸŽÎ&ƒA„Äô,/Ç(®çUÿ=ó¹%$–01ƒA¦‚Aü=ÝùðEE…Ôׄ»ï¹‡ÜÜ\%ôà–x àø‰ãøýþ˜Zâñ„Øí6nÚHyyEBÜg)%<ûÃÒxú“““—-$üüg/ <ðÀ’+Äô÷÷ó¼÷î!º»º ‡Ã±é¾Ë‚#ìy¸úûBHB“S4_¸HkK‡¾Ã}Ÿø÷Ýÿ Ün÷’ï•âúÜ’æø‰¦ÃÓhZ¬·ÔÈÌÊ`Û¶í/¹}Ã##¼wèo¾ñmˆËûè\)¸‰@_þüg¸ÝnîýèGñx<‹>O àý÷Þã׿úmí-DÂÑøg‰´®ÚUt-Ó¤­µ•g¾÷]º»ºxäw~‡üüµ7Û2qË <p¢á8]í]H)Ñ—¸ñ‚›Ý ¼|#›6á\BZj(âôéS¼öò+œ9ÓHx:Äõ,§¦ÁèÈ/þôy|¾tnß½§Ó¹ óX–ÅÙ3gxé¿ ñÔI‚“ShZ"|™ù™yHE"&¯¾üm­m|î±Çضc‡ZN» ÜråĉB¡ÉXï>_Ûvn§´´lÑ¿•—w³lkoãµW_åÃ÷ßgttl‚Óèïëãùçž#-=ÚÚ-7L¬‘R244įõ+Þ|ã ú.»ýÚΕXbB×9{æ ÿþÍoð¹ßÿõwÝ¥\ösK |rr’ÆÓ§ikmòĒ³Ì¤è†AYY9›6mÆår-ê÷B†††øÍ¡C¼õætuu!„X°à4-Vó­µ¥…Ÿýô§øÒ}_gŸq!çΞå?{ã Ç™žžŽo]¼šØl=½½|ÿ?Ÿ&‰°ïÞ{oj¸¡¸6·”ÀGFF8ÞÐÀÄD !c>)!Ýë¥nkÝ¢¬·‚ÉÉIN<Î믾ƹ³g™žc‹œ¦iXBpâÄ 6¼ôKýÝä^•A‰D8wö,?úá¸xþüå¡ÉÚóÚívFFFøÁ3Ï`³Ù¹ëî(Kž n‡BSœ?žK—.bYV¬·D7 JJK©¬ª^˜Õ‘’p$Bó¥K¼ñ«_qäða1tMÇ0n^pº® ‡yçà!6lÈç£÷ßGZZRJ&''ùàý÷xá§?¥§³36k°§§#ÃÃüø¿ŸÅ›æå¶]»V=*¸e>:2ʉcGKL—’T‡ºº­”•—/蘖eqòÄ ~òÜ9îh ë‰YŒ¢i:ãc£¼þúk±mûv&''yãõ×yå¥_244„®ëkRܱÛ)IIqÐÞÙÉÏ^x̬,6nܨë,‘[BàÓÓÓ´´´ÐÔÔ„iš ±Þš®S\ZJÍ–- N61l6ªª«¸{ß=ƒAº»º‘R$$اi1KÞÑÙÁÏ_|$œ8qœ×^y•éé) ÃX³âþí}OJ GŽ|HYy)™™Ÿ#++kÍ·{-sK|ll”cfdx8A±b‰Ëå¡®®Žò‹ú¥Ï—Á§z˜ìœ^|þy.^¼ˆ”V‚D®¡§OÑÚÒL08‰Öº[ôât8xó7زuwÜq§rÕ—ÀÚ‰´,ÑH„ÎŽššÎFÑ—ìòÅ–„Åv õ¥û}‡ÃÎÞ»îâó_ø[ê¶ ë6¤ ¹^MÓB2>>óÖP0m¡Øív†‡‡9tð›û®X4ëﯿHFÇÆ8vô(CCKNj˜™’’BMÝÊ7n¼éãèšÆm»vñÙÏ}žÚ-[Ð4#"ð­k×6%ÅEÑc´·µF—~À[”õå»-Ó4ñû»iŠOC-õrcÉ'yyyÔÖÖ•µôrL;vîÀ²LL3ÊÅ çB®ka& »ÍÆØØÇŽ£²ªšììlu_n‚¤¶àÀ8 Gã÷÷òÛE7”1÷ººv 7nJH5McÇÎ<üéýÍä±+—ÀnwpæôiF†‡‘"1ÞÍ­FÒ Ü²,úû8Ûxš©©P¦[rrs¨««cC^^ÂÚj³Ù¸}÷n>~ß}dff¢†œ1ì½ÝÝôtw5ÍÕnκ$i>11ÁɆº»zH„õFJl6ƒªª*6ÝüØûzxRSÙ[·ïÞÓîHØxê¶ÕQ\´ô‚7Âåv³mÛ6Î66Òpì($¤æÌâ®Õ²LœN%¥eì¹ãvßqeeå×M8iooç݃yçí·èëíEO`Öœa3&‡§•‹~$À£Ñ(½þ^ÚZ[±„ˆY”%XÅÆ 6UVa[¢eeelß±ƒæKO”Aœ!–%ÈÎÉ¢þ®ð‰>IiYÙ¼™peee”••Q^^ÆøCº;:&rMÓ…¦ M…”Ào‚¤x0¤µ¹…á‘á„Yooš—-[·ÝTA‡›Áát²¹²’’²2ÆNžZ‘sZ–…’òMìÿô#|dßݤ¦zuŒúÜM$åéo›Àø8†®/Ù]×4 Ó4‰F#+r’¤ ²™¦IŸßϹ³ç0#‘•%eeeTW׬è.¡%¥¥TVV]NÎY^Ë53Þ®ÛZÇOü>úñ/ZÜ[ì²gÏܹwoìÎ%Ìâ*Ë}³$•ÀC¡.4Ñ|ébrΉ™¶Ôm¥¼¢|E¯ÅëõRV^AŠ+eYçÅ…!¨ÛºÇ¿ðÿ°cçÎ×v».·›Ü}7iéé1Y*·zUI[–ÅàÀgÏœelt4Aî¹ ¨¸„šš<žÔ¿¦‚‚|ÒR—ï¼R‚iF©®©æÀïýµµµK^¹eÅ%%”––"…P¶w•IOMNrâD'ÇH@)žÔ4îÜ»—Úº-«rMùäåç/‹›.%D"a¶oßÉü?bÇÎ8–`¹¯ÄãñP»¥t]YðU&)nY~¿Ÿ3§N0lK¸’²²RªkjIIY\1ÅDáv{È+ÈÇn·%\'‘H˜’’xðAª*+Z²Øn·“Ÿ_€ÃnX’BàÓÓ!.]¼ÈÅ æš§¤¸¨­«£¢bq‰®ëäææaw8I¤HLÓÂãñðÑ}Œí;v,ºì|†ôôŒ˜G SV•u/p!,8Óxš¡áalK^ —±eËR—q ¼²²³q:ì ³àR‚´Lnß½›;ëï"#×p꺎ÛãÆawÄ6'T|ÕX÷‡#´6·pöÌ™XbÅ’—„JN'µ[êØ¸iój_>Δ”„e†E"ŠKK©¿ûnò VôñJ4MÃf·Çd„R÷j²®.„`dx˜ÆÆFú±Û—^»Ë²LòòòÙR·5¡;wÞ,©^/N‡#!m’hg÷wP[S»¬óú†a †2ޫ̺x4¥½­³gN!e‚–„vj¶Ô°¹²rMlàr¹®xp-M.¦iRYUÉ®]·áËÈXÖ…ZÚ«X:«ßƒo)%㣣œ9{†žîì ¨¼iZ&9¹¨«ÛFffæj_"ÛÀf·/YŒ3µä¶ïØNIY…ªTz‹°nFéìêâÔ‰“X–HHœH× ªkª©®©Y3÷ CÇf3XjpAJÃáÄçË\Ñ”[Åê²n>11AÓÙ³t´·%dWAVV[¶Ö‘“³v¦w4-a‹E{IÊu¾UX—7M“žînNœ8N4E_¾^W²¹²ŠÚš:ìvû o¦«P,ëRàSS—7lnÆát,Ù !°ÙllÙº•¼‚2:ÂÑ?d"0N"Ê!+й¬ŠÀ…tuuqút#•ß¡P,«"ððô4Çetde½ŠåcÅ.¥dxx˜ãÇO ,¡¬·B±Œ¬¸ÀÃá0ÇŽ¥¿¿Oo…b™YQK)ã½ß¼‹eš*z®P,3+*ðH$‰†::ÚVûº×)ê¨X+šüxï7¿a2BW}4 "¶¥Ò–” )bŸ yÓ—ÈËçY9¤”È™²57¹dN"‘R –pŒ[™x$¡ñôi.^¼€0£HÃPIÓ0……"¶šõZ”!b[9 i¼¹›&-"ö°XH)B L‹¨-ö,»©ã˜&Âî$&uÅbY1K)‘Rò‘»ïF©Æß—1M“ìœòóò®YEÖáLa÷{È/,!nú†þ°Ú!J±þF¡7$󹬚FªCÑ æÐ=vóP„„iÁ™€µÚmV(ET@Ë„Eß”DÞHà—÷IÚ¢‘jOŽ@›žbH6¥j7 h 4š–‚¥FâŠõC bñî`*:¿÷é²C‘R’d~IwÛ4vejóΗI cQøÍI㨅 ·)ÖBJš&/u›Dç3É–¤È =ö$™_ҺƶtƒLçüdjp! yÙ/šj,®XûŒE¿ìµèJä¼¢Õ¨MÓ(tI³½µnh:%©Û|€uÑj1+>…7zMÞ41…`Ev“W(n‚ˆ¼?åù.Ad>U‚M‡Û|66¸æ÷h× º¤Û5îÏ30æ›CÐÀ”p. x¦Õââ„…š’¸bÍ!\3yªÙ¤s‚ׄ¤Ð­±3K#Õ–Ö.§ªºmû6¦j±pù<„Æ›ýO·˜´M„TW¬„”´Ž[|ó¢É¡>0ç 0&¡>G£:]#‰ô¸Mƒ©èóÅÎ.»êƒQÿ¯Ãä›—¢\˜XJäŠ5À´%9;nò/ç£<ß!˜„Íwe¹à¾<ƒ"—-‰U/ \2:¿S¢SäÑc ¾—Eîhü¨ÝäŸÎ™œ3(‘+V!%}Ó’·Lþ߯0ϵ[Œæ·Í’Ü›m°7ˆÓHqØfþa×a[ºÎgKu¾q^ÖäïŽ ¯ E4~Öm2–Pƒˆ„®iI_2ñ9Lò\y.¯¤ \(V—¨€@zB‚¾Œ…%ã33¶‹·&`S§FE*Ü™mpžÆ¶tC'ÉÒËÃÍ |!%Q!霔œœ Z’Þ°`|Z4ÁÚ¢’ŒŠ¢ 솆×™NRNUªÆ6ŸNO'Û¡¡k±×-N¯&¥|2  °kñYŸIDAT8Ëc`N€‘)™™………•-R“Ù9P¤9¹¸ÓÒ32³²sróò ‹ŠyJxùøò‚B¥Âeå•UÕ5µuõ MÍ"¢-bâ0y I©Ö¶öŽŽ„‚ήîž^iˆ¼¬œ|_ÿ„‰'NšWRïÔ±IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/images/process-stop.png000066400000000000000000000035651263211763500223310ustar00rootroot00000000000000‰PNG  IHDR szzô5D½w!îî^„’¹Ë?Ë¥ÆTU,]§}çNe<ðû“ÉôücYp¬®±ñW{ô%’Á`T³¾XþR”.Ü:ªŠetúýJ$ØùµT*y®/!0ÇÖ®ýå·ô%ÆÆPC¡¬Ü9å²Ìz‡„eá<´FQ¨Sî›&ŽãàUŶ,:úú”p °Ë¯ióC0œ'pN6®[÷‹=øâ##$Ãá¼Ôå²LmC©Ý»Y3:ŠšÉH,"°Æã¡¼µ£·—Uá0ñ\œè9[{z”p Ðÿ”®O_…[@?|úÒéÓJìóϳà®Ä9ðšúzæOÂhj‚úzªoßFÕõlû嬺¬ŒŠ–b'NioG¶,V‡ÃÜ×õ|LZUÁqèÞ±C¹yóæ·>†ÓbL–QC¡¢9ŽCzöYŸAзo'ý⋬¯¬DÌõ}µ×Ky[ñ“'=DQD{æ*2IÂìܺñéiDEÉcÈ¥Úp1‰ aðØåËPQA¦»A0úúd™õƒƒ$S)ÊÛÚPÉvŠã ¦RT=K0“!µ¨œÜ¦°íeä·“%Db16¼û.¢,“Ù¶ A0·oG”$*¯^%qô(ˆ"" $“Tž;Çd(D\ÓŠ€óDJpGiî8N~èØ–E$eÃûï#* FGG–DOfOù<&“”¿þ:“ccĉè—QÇÉ÷ûb"¶ã yìòeDAÀèì,LEMÃwñ"wîÅŠÀmÃÀ6Ml7™LiÛ.^4GÆ­v˶IÅãT^»†ÕÕU+MM!¥Ó¨ dfg1ãq¬dSÓpl» `ÖÕ-Ÿ‚| ¸J¸)ToÜHEo/éçŸGÅ|«ØÍÍhÏ=Çá0ÿÆ0Œ"P×m(JA>}NîŽmgçqŸW?ù$U~?™^@eDQD2 ¤éé|ËZ]]8бo’dzØvïKÖ€mgÝ•ÕU¨ni¡jçNô½{$ Q3¤7Þ@šœÄØ¿«£Û¶±»»e™NŸ bèzxq!–"à8ÎùkÛÛ©ôûIïÙS×uÄóç}ï=â‘튂¬(˜mmÙZioGÜ¿ŸîŠ >»pK׋”LmY”¯[·DþŠÇÇÚ¸ܳ€¦!^¼ÈØ0?:Š¡ëüûí·1?üid$ûªìµkñ56¢¬ZU.ˆbQ $€o@ÍL0عµ¿_¶R)Œx<_ ##Tz<ȲŒU]gp±wÞaþÎü¢–i2}ëõµµˆ Ix>úˆáW_Eš*¢¹™ùD‹ńá´0ê[X¨Ÿ™˜èÜÚ×'›sshããss葳Ÿ|Âêª*ªÆÇ¹t‰ù/¾XRݦi2uãë6lÀ 1|æ ‰‰‰ü÷¢$ÑÔÚJ,¶¯†Ã1¾:sEgŠ8×PSóãoö÷{gnÜ  ò&IxjjÐff–T÷â{ÉëE,+#‹Àe™¦–f“IûoáðlvüîåSàÚüy‡¦UOF£Û:ý~ÅL&ÑïßÏW®‘L>ÜM‡™NÉ2M­­D ëï‘È$Ð÷3È¿ó—œ ‡à/þtzõx4ÚÕÕ×§X©éxü‘À¥\Vš7m"‹™ÿœ˜¸'ÂS' º¯ä©ø \ÙžNWG§¦¶mëéQLMË“X)¸âñмy3£ssægÑèÝ›ðõ×`êA¬åþ”_…á-º¾fvjjkWw·l¤Óh‰ÄÊÀËÊhÞ¼™ÿÎ̘ק§GÞ‚\ƒÙ)ŸY ´ÜéºÒõcðò¦ŠŠïíÞµ«LpG³mc»“s‘»ÏÛæf0hܘ½ý{82s@ˆ1·®—#à*³ ¨*~ Çjá%¾„¥àúy8ž€ Iö3žËâCxÈW\"¹kOβ“Ô]Ã̜ę,€ ¤^)RñbŽ˜ .PÜ …Z}¤ýC+ ïP$ý/IEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/main.cpp000066400000000000000000000016321263211763500173360ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mainwindow.h" int main(int argc, char *argv[]) { IDE a(argc, argv); QStringList args = QApplication::arguments(); QStringList files; bool hadProject = false; for (int i=1; ishow(); hadProject = true; } else { files << args[i]; } } if (!hadProject) { MainWindow* w = new MainWindow(files); w->show(); } #ifdef Q_OS_MAC a.setQuitOnLastWindowClosed(false); #endif return a.exec(); } MiniZincIDE-2.0.10/MiniZincIDE/mainwindow.cpp000077500000000000000000003143211263211763500205730ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include "mainwindow.h" #include "ui_mainwindow.h" #include "aboutdialog.h" #include "codeeditor.h" #include "fzndoc.h" #include "finddialog.h" #include "gotolinedialog.h" #include "help.h" #include "paramdialog.h" #include "checkupdatedialog.h" #include "courserasubmission.h" #include #ifdef Q_OS_WIN #define pathSep ";" #define fileDialogSuffix "/" #define MZNOS "win" #else #define pathSep ":" #ifdef Q_OS_MAC #define fileDialogSuffix "/*" #define MZNOS "mac" #include "rtfexporter.h" #else #define fileDialogSuffix "/" #define MZNOS "linux" #endif #endif IDEStatistics::IDEStatistics(void) : errorsShown(0), errorsClicked(0), modelsRun(0) {} void IDEStatistics::init(QVariant v) { if (v.isValid()) { QMap m = v.toMap(); errorsShown = m["errorsShown"].toInt(); errorsClicked = m["errorsClicked"].toInt(); modelsRun = m["modelsRun"].toInt(); solvers = m["solvers"].toStringList(); } #ifdef Q_OS_MAC (void) new MyRtfMime(); #endif } QVariantMap IDEStatistics::toVariantMap(void) { QMap m; m["errorsShown"] = errorsShown; m["errorsClicked"] = errorsClicked; m["modelsRun"] = modelsRun; m["solvers"] = solvers; return m; } QByteArray IDEStatistics::toJson(void) { QJsonDocument jd(QJsonObject::fromVariantMap(toVariantMap())); return jd.toJson(); } void IDEStatistics::resetCounts(void) { errorsShown = 0; errorsClicked = 0; modelsRun = 0; } struct IDE::Doc { QTextDocument td; QSet editors; bool large; Doc() { td.setDocumentLayout(new QPlainTextDocumentLayout(&td)); } }; bool IDE::event(QEvent *e) { switch (e->type()) { case QEvent::FileOpen: { QString file = static_cast(e)->file(); if (file.endsWith(".mzp")) { PMap::iterator it = projects.find(file); if (it==projects.end()) { MainWindow* mw = qobject_cast(activeWindow()); if (mw==NULL) { mw = new MainWindow(file); mw->show(); } else { mw->openProject(file); } } else { it.value()->raise(); it.value()->activateWindow(); } } else { MainWindow* curw = qobject_cast(activeWindow()); if (curw != NULL && (curw->isEmptyProject() || curw==lastDefaultProject)) { curw->openFile(file); lastDefaultProject = curw; } else { QStringList files; files << file; MainWindow* mw = new MainWindow(files); if (curw!=NULL) { QPoint p = curw->pos(); mw->move(p.x()+20, p.y()+20); } mw->show(); lastDefaultProject = mw; } } return true; } default: return QApplication::event(e); } } void IDE::checkUpdate(void) { QSettings settings; settings.sync(); settings.beginGroup("ide"); if (settings.value("checkforupdates",false).toBool()) { if (settings.value("lastCheck",QDate::currentDate().addDays(-2)) < QDate::currentDate()) { QString url_s = "http://www.minizinc.org/ide/version-info.php"; if (settings.value("sendstats",false).toBool()) { url_s += "?version="+applicationVersion(); url_s += "&os="; url_s += MZNOS; url_s += "&uid="+settings.value("uuid","unknown").toString(); url_s += "&stats="+stats.toJson(); } QUrl url(url_s); QNetworkRequest request(url); request.setRawHeader("User-Agent", (QString("Mozilla 5.0 (MiniZinc IDE ")+applicationVersion()+")").toStdString().c_str()); versionCheckReply = networkManager->get(request); connect(versionCheckReply, SIGNAL(finished()), this, SLOT(versionCheckFinished())); } QTimer::singleShot(24*60*60*1000, this, SLOT(checkUpdate())); } settings.endGroup(); } IDE::IDE(int& argc, char* argv[]) : QApplication(argc,argv) { setApplicationVersion(MINIZINC_IDE_VERSION); setOrganizationName("MiniZinc"); setOrganizationDomain("minizinc.org"); #ifdef MINIZINC_IDE_BUNDLED setApplicationName("MiniZinc IDE"); #else setApplicationName("MiniZinc IDE (bundled)"); #endif networkManager = new QNetworkAccessManager(this); QSettings settings; settings.sync(); settings.beginGroup("ide"); if (settings.value("lastCheck",QDate()).toDate().isNull()) { settings.setValue("uuid", QUuid::createUuid().toString()); CheckUpdateDialog cud; int result = cud.exec(); settings.setValue("lastCheck",QDate::currentDate().addDays(-2)); settings.setValue("checkforupdates",result==QDialog::Accepted); settings.setValue("sendstats",cud.sendStats()); } settings.endGroup(); settings.beginGroup("Recent"); recentFiles = settings.value("files",QStringList()).toStringList(); recentProjects = settings.value("projects",QStringList()).toStringList(); settings.endGroup(); stats.init(settings.value("statistics")); lastDefaultProject = NULL; helpWindow = new Help(); { // Load cheat sheet QString fileContents; QFile file(":/cheat_sheet.mzn"); if (file.open(QFile::ReadOnly)) { fileContents = file.readAll(); } else { qDebug() << "internal error: cannot open cheat sheet."; } QSettings settings; settings.beginGroup("MainWindow"); QFont defaultFont; defaultFont.setFamily("Menlo"); if (!defaultFont.exactMatch()) { defaultFont.setFamily("Consolas"); } if (!defaultFont.exactMatch()) { defaultFont.setFamily("Courier New"); } defaultFont.setStyleHint(QFont::TypeWriter); defaultFont.setPointSize(13); QFont editorFont = settings.value("editorFont", defaultFont).value(); bool darkMode = settings.value("darkMode", false).value(); settings.endGroup(); cheatSheet = new QMainWindow; cheatSheet->setWindowTitle("MiniZinc Cheat Sheet"); CodeEditor* ce = new CodeEditor(NULL,":/cheat_sheet.mzn",false,false,editorFont,darkMode,NULL,NULL); ce->document()->setPlainText(fileContents); QTextCursor cursor = ce->textCursor(); cursor.movePosition(QTextCursor::Start); ce->setTextCursor(cursor); ce->setReadOnly(true); cheatSheet->setCentralWidget(ce); cheatSheet->resize(800, 600); } connect(&fsWatch, SIGNAL(fileChanged(QString)), this, SLOT(fileModified(QString))); connect(this, SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(handleFocusChange(QWidget*,QWidget*))); connect(&modifiedTimer, SIGNAL(timeout()), this, SLOT(fileModifiedTimeout())); #ifdef Q_OS_MAC MainWindow* mw = new MainWindow(QString()); const QMenuBar* mwb = mw->ui->menubar; defaultMenuBar = new QMenuBar(0); QList lst = mwb->children(); foreach (QObject* mo, lst) { if (QMenu* m = qobject_cast(mo)) { if (m->title()=="&File" || m->title()=="Help") { QMenu* nm = defaultMenuBar->addMenu(m->title()); foreach (QAction* a, m->actions()) { if (a->isSeparator()) { nm->addSeparator(); } else { QAction* na = nm->addAction(a->text()); na->setShortcut(a->shortcut()); if (a==mw->ui->actionQuit) { connect(na,SIGNAL(triggered()),this,SLOT(quit())); } else if (a==mw->ui->actionNewModel_file || a==mw->ui->actionNew_project) { connect(na,SIGNAL(triggered()),this,SLOT(newProject())); } else if (a==mw->ui->actionOpen) { connect(na,SIGNAL(triggered()),this,SLOT(openFile())); } else if (a==mw->ui->actionHelp) { connect(na,SIGNAL(triggered()),this,SLOT(help())); } else { na->setEnabled(false); } } } } } } mainWindows.remove(mw); delete mw; #endif checkUpdate(); } void IDE::handleFocusChange(QWidget *old, QWidget *newW) { if (old==NULL && newW!=NULL && !modifiedFiles.empty()) { fileModifiedTimeout(); } } void IDE::fileModifiedTimeout(void) { QSet modCopy = modifiedFiles; modifiedFiles.clear(); for (QSet::iterator s_it = modCopy.begin(); s_it != modCopy.end(); ++s_it) { DMap::iterator it = documents.find(*s_it); if (it != documents.end()) { QFileInfo fi(*s_it); QMessageBox msg; if (!fi.exists()) { msg.setText("The file "+fi.fileName()+" has been removed or renamed outside MiniZinc IDE."); msg.setStandardButtons(QMessageBox::Ok); } else { msg.setText("The file "+fi.fileName()+" has been modified outside MiniZinc IDE."); if (it.value()->td.isModified()) { msg.setInformativeText("Do you want to reload the file and discard your changes?"); } else { msg.setInformativeText("Do you want to reload the file?"); } QPushButton* cancelButton = msg.addButton(QMessageBox::Cancel); msg.addButton("Reload", QMessageBox::AcceptRole); msg.exec(); if (msg.clickedButton()==cancelButton) { it.value()->td.setModified(true); } else { QFile file(*s_it); if (file.open(QFile::ReadOnly | QFile::Text)) { it.value()->td.setPlainText(file.readAll()); it.value()->td.setModified(false); } else { QMessageBox::warning(NULL, "MiniZinc IDE", "Could not reload file "+*s_it, QMessageBox::Ok); it.value()->td.setModified(true); } } } } } } void IDE::fileModified(const QString &f) { modifiedFiles.insert(f); if (activeWindow()!=NULL) { modifiedTimer.setSingleShot(true); modifiedTimer.start(3000); } } void IDE::newProject() { MainWindow* mw = new MainWindow(QString()); mw->show(); } QString IDE::getLastPath(void) { QSettings settings; settings.beginGroup("Path"); return settings.value("lastPath","").toString(); } void IDE::setLastPath(const QString& path) { QSettings settings; settings.beginGroup("Path"); settings.setValue("lastPath", path); settings.endGroup(); } void IDE::setEditorFont(QFont font) { QSettings settings; settings.beginGroup("MainWindow"); settings.setValue("editorFont", font); settings.endGroup(); for (QSet::iterator it = IDE::instance()->mainWindows.begin(); it != IDE::instance()->mainWindows.end(); ++it) { (*it)->setEditorFont(font); } } void IDE::openFile() { QString fileName = QFileDialog::getOpenFileName(NULL, tr("Open File"), getLastPath(), "MiniZinc Files (*.mzn *.dzn *.fzn *.mzp)"); if (!fileName.isNull()) { setLastPath(QFileInfo(fileName).absolutePath()+fileDialogSuffix); } if (!fileName.isEmpty()) { MainWindow* mw = new MainWindow(QString()); if (fileName.endsWith(".mzp")) { mw->openProject(fileName); } else { mw->createEditor(fileName, false, false); } mw->show(); } } void IDE::help() { helpWindow->show(); helpWindow->raise(); helpWindow->activateWindow(); } IDE::~IDE(void) { QSettings settings; settings.setValue("statistics",stats.toVariantMap()); settings.beginGroup("Recent"); settings.setValue("files",recentFiles); settings.setValue("projects",recentProjects); settings.endGroup(); } bool IDE::hasFile(const QString& path) { return documents.find(path) != documents.end(); } QTextDocument* IDE::addDocument(const QString& path, QTextDocument *doc, CodeEditor *ce) { Doc* d = new Doc; d->td.setDefaultFont(ce->font()); d->td.setPlainText(doc->toPlainText()); d->editors.insert(ce); d->large = false; documents.insert(path,d); fsWatch.addPath(path); return &d->td; } QPair IDE::loadFile(const QString& path, QWidget* parent) { DMap::iterator it = documents.find(path); if (it==documents.end()) { QFile file(path); if (file.open(QFile::ReadOnly | QFile::Text)) { Doc* d = new Doc; if ( (path.endsWith(".dzn") || path.endsWith(".fzn")) && file.size() > 5*1024*1024) { d->large = true; } else { d->td.setPlainText(file.readAll()); d->large = false; } d->td.setModified(false); documents.insert(path,d); if (!d->large) fsWatch.addPath(path); return qMakePair(&d->td,d->large); } else { QMessageBox::warning(parent, "MiniZinc IDE", "Could not open file "+path, QMessageBox::Ok); QTextDocument* nd = NULL; return qMakePair(nd,false); } } else { return qMakePair(&it.value()->td,it.value()->large); } } void IDE::loadLargeFile(const QString &path, QWidget* parent) { DMap::iterator it = documents.find(path); if (it.value()->large) { QFile file(path); if (file.open(QFile::ReadOnly | QFile::Text)) { QTextStream file_stream(&file); file_stream.setCodec("UTF-8"); it.value()->td.setPlainText(file_stream.readAll()); it.value()->large = false; it.value()->td.setModified(false); QSet::iterator ed = it.value()->editors.begin(); for (; ed != it.value()->editors.end(); ++ed) { (*ed)->loadedLargeFile(); } fsWatch.addPath(path); } else { QMessageBox::warning(parent, "MiniZinc IDE", "Could not open file "+path, QMessageBox::Ok); } } } void IDE::registerEditor(const QString& path, CodeEditor* ce) { DMap::iterator it = documents.find(path); QSet& editors = it.value()->editors; editors.insert(ce); } void IDE::removeEditor(const QString& path, CodeEditor* ce) { DMap::iterator it = documents.find(path); if (it == documents.end()) { qDebug() << "internal error: document " << path << " not found"; } else { QSet& editors = it.value()->editors; editors.remove(ce); if (editors.empty()) { delete it.value(); documents.remove(path); fsWatch.removePath(path); } } } void IDE::renameFile(const QString& oldPath, const QString& newPath) { DMap::iterator it = documents.find(oldPath); if (it == documents.end()) { qDebug() << "internal error: document " << oldPath << " not found"; } else { Doc* doc = it.value(); documents.remove(oldPath); fsWatch.removePath(oldPath); documents.insert(newPath, doc); fsWatch.addPath(newPath); } } void IDE::versionCheckFinished(void) { if (versionCheckReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()==200) { QString currentVersion = versionCheckReply->readAll(); QRegExp versionRegExp("([1-9][0-9]+)\\.([0-9]+)\\.([0-9]+)"); int curVersionMajor = 0; int curVersionMinor = 0; int curVersionPatch = 0; bool ok = true; if (versionRegExp.indexIn(currentVersion) != -1) { curVersionMajor = versionRegExp.cap(1).toInt(&ok); if (ok) curVersionMinor = versionRegExp.cap(2).toInt(&ok); if (ok) curVersionPatch = versionRegExp.cap(3).toInt(&ok); } int appVersionMajor = 0; int appVersionMinor = 0; int appVersionPatch = 0; if (ok && versionRegExp.indexIn(applicationVersion()) != -1) { appVersionMajor = versionRegExp.cap(1).toInt(&ok); if (ok) appVersionMinor = versionRegExp.cap(2).toInt(&ok); if (ok) appVersionPatch = versionRegExp.cap(3).toInt(&ok); } bool needUpdate = ok && (curVersionMajor > appVersionMajor || (curVersionMajor==appVersionMajor && (curVersionMinor > appVersionMinor || (curVersionMinor==appVersionMinor && curVersionPatch > appVersionPatch)))); if (needUpdate) { int button = QMessageBox::information(NULL,"Update available", "Version "+currentVersion+" of the MiniZinc IDE is now available. " "You are currently using version "+applicationVersion()+ ".\nDo you want to open the MiniZinc IDE download page?", QMessageBox::Cancel|QMessageBox::Ok,QMessageBox::Ok); if (button==QMessageBox::Ok) { QDesktopServices::openUrl(QUrl("http://www.minizinc.org/ide/")); } } QSettings settings; settings.beginGroup("ide"); settings.setValue("lastCheck",QDate::currentDate()); settings.endGroup(); stats.resetCounts(); } } QString IDE::appDir(void) const { #ifdef Q_OS_MAC return applicationDirPath()+"/../Resources/"; #else return applicationDirPath(); #endif } IDE* IDE::instance(void) { return static_cast(qApp); } MainWindow::MainWindow(const QString& project) : ui(new Ui::MainWindow), curEditor(NULL), curHtmlWindow(NULL), process(NULL), outputProcess(NULL), tmpDir(NULL), saveBeforeRunning(false), project(ui), outputBuffer(NULL), processRunning(false) { init(project); } MainWindow::MainWindow(const QStringList& files) : ui(new Ui::MainWindow), curEditor(NULL), curHtmlWindow(NULL), process(NULL), outputProcess(NULL), tmpDir(NULL), saveBeforeRunning(false), project(ui), outputBuffer(NULL), processRunning(false) { init(QString()); for (int i=0; imenuWindow->clear(); ui->menuWindow->addAction(minimizeAction); ui->menuWindow->addSeparator(); for (QSet::iterator it = IDE::instance()->mainWindows.begin(); it != IDE::instance()->mainWindows.end(); ++it) { QAction* windowAction = ui->menuWindow->addAction((*it)->windowTitle()); QVariant v = qVariantFromValue(static_cast(*it)); windowAction->setData(v); windowAction->setCheckable(true); if (*it == this) { windowAction->setChecked(true); } } } void MainWindow::windowMenuSelected(QAction* a) { if (a==minimizeAction) { showMinimized(); } else { QMainWindow* mw = static_cast(a->data().value()); mw->showNormal(); mw->raise(); mw->activateWindow(); } } void MainWindow::init(const QString& projectFile) { IDE::instance()->mainWindows.insert(this); ui->setupUi(this); ui->outputConsole->installEventFilter(this); setAcceptDrops(true); setAttribute(Qt::WA_DeleteOnClose, true); minimizeAction = new QAction("&Minimize",this); minimizeAction->setShortcut(Qt::CTRL+Qt::Key_M); #ifdef Q_OS_MAC connect(ui->menuWindow, SIGNAL(aboutToShow()), this, SLOT(showWindowMenu())); connect(ui->menuWindow, SIGNAL(triggered(QAction*)), this, SLOT(windowMenuSelected(QAction*))); ui->menuWindow->addAction(minimizeAction); ui->menuWindow->addSeparator(); #else ui->menuWindow->hide(); ui->menubar->removeAction(ui->menuWindow->menuAction()); #endif QWidget* toolBarSpacer = new QWidget(); toolBarSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); ui->toolBar->insertWidget(ui->actionShow_project_explorer, toolBarSpacer); newFileCounter = 1; findDialog = new FindDialog(this); findDialog->setModal(false); paramDialog = new ParamDialog(this); fakeRunAction = new QAction(this); fakeRunAction->setShortcut(Qt::CTRL+Qt::Key_R); fakeRunAction->setEnabled(true); this->addAction(fakeRunAction); fakeCompileAction = new QAction(this); fakeCompileAction->setShortcut(Qt::CTRL+Qt::Key_B); fakeCompileAction->setEnabled(true); this->addAction(fakeCompileAction); fakeStopAction = new QAction(this); fakeStopAction->setShortcut(Qt::CTRL+Qt::Key_E); fakeStopAction->setEnabled(true); this->addAction(fakeStopAction); updateRecentProjects(""); updateRecentFiles(""); connect(ui->menuRecent_Files, SIGNAL(triggered(QAction*)), this, SLOT(recentFileMenuAction(QAction*))); connect(ui->menuRecent_Projects, SIGNAL(triggered(QAction*)), this, SLOT(recentProjectMenuAction(QAction*))); connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(tabCloseRequest(int))); connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabChange(int))); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(statusTimerEvent())); solverTimeout = new QTimer(this); solverTimeout->setSingleShot(true); connect(solverTimeout, SIGNAL(timeout()), this, SLOT(on_actionStop_triggered())); statusLabel = new QLabel(""); ui->statusbar->addPermanentWidget(statusLabel); ui->statusbar->showMessage("Ready."); ui->actionStop->setEnabled(false); QTabBar* tb = ui->tabWidget->findChild(); tb->setTabButton(0, QTabBar::RightSide, 0); tabChange(0); tb->setTabButton(0, QTabBar::LeftSide, 0); ui->actionSubmit_to_Coursera->setVisible(false); connect(ui->outputConsole, SIGNAL(anchorClicked(QUrl)), this, SLOT(errorClicked(QUrl))); QSettings settings; settings.beginGroup("MainWindow"); QFont defaultFont; defaultFont.setFamily("Menlo"); if (!defaultFont.exactMatch()) { defaultFont.setFamily("Consolas"); } if (!defaultFont.exactMatch()) { defaultFont.setFamily("Courier New"); } defaultFont.setStyleHint(QFont::TypeWriter); defaultFont.setPointSize(13); editorFont = settings.value("editorFont", defaultFont).value(); darkMode = settings.value("darkMode", false).value(); ui->actionDark_mode->setChecked(darkMode); ui->outputConsole->setFont(editorFont); resize(settings.value("size", QSize(800, 600)).toSize()); move(settings.value("pos", QPoint(100, 100)).toPoint()); if (settings.value("toolbarHidden", false).toBool()) { on_actionHide_tool_bar_triggered(); } if (settings.value("outputWindowHidden", true).toBool()) { on_actionOnly_editor_triggered(); } settings.endGroup(); IDE::instance()->setEditorFont(editorFont); Solver g12fd("G12 fd","flatzinc","-Gg12_fd","",true,false); bool hadg12fd = false; Solver g12lazyfd("G12 lazyfd","flatzinc","-Gg12_lazyfd","-b lazy",true,false); bool hadg12lazyfd = false; Solver g12mip("G12 MIP","flatzinc","-Glinear","-b mip",true,false); bool hadg12mip = false; #ifdef MINIZINC_IDE_BUNDLED Solver gecode("Gecode (bundled)","fzn-gecode","-Ggecode","",true,false); bool hadgecode = false; #ifdef Q_OS_WIN Solver gecodeGist("Gecode (Gist, bundled)","fzn-gecode-gist.bat","-Ggecode","",true,true); #else Solver gecodeGist("Gecode (Gist, bundled)","fzn-gecode-gist","-Ggecode","",true,true); #endif bool hadgecodegist = false; #endif int nsolvers = settings.beginReadArray("solvers"); if (nsolvers==0) { #ifdef MINIZINC_IDE_BUNDLED solvers.append(gecode); solvers.append(gecodeGist); #endif solvers.append(g12fd); solvers.append(g12lazyfd); solvers.append(g12mip); } else { IDE::instance()->stats.solvers.clear(); for (int i=0; istats.solvers.append(solver.name); } solvers.append(solver); } if (!hadg12fd) solvers.append(g12fd); if (!hadg12lazyfd) solvers.append(g12lazyfd); if (!hadg12mip) solvers.append(g12mip); #ifdef MINIZINC_IDE_BUNDLED if (!hadgecodegist) solvers.push_front(gecodeGist); if (!hadgecode) solvers.push_front(gecode); #endif } settings.endArray(); settings.beginGroup("minizinc"); mznDistribPath = settings.value("mznpath","").toString(); defaultSolver = settings.value("defaultSolver","").toString(); settings.endGroup(); checkMznPath(); for (int i=0; iconf_solver->addItem(solvers[i].name,i); ui->conf_solver->addItem("Add new solver..."); if (!defaultSolver.isEmpty()) ui->conf_solver->setCurrentText(defaultSolver); connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(onClipboardChanged())); projectSort = new QSortFilterProxyModel(this); projectSort->setDynamicSortFilter(true); projectSort->setSourceModel(&project); projectSort->setSortRole(Qt::UserRole); ui->projectView->setModel(projectSort); ui->projectView->sortByColumn(0, Qt::AscendingOrder); ui->projectExplorerDockWidget->hide(); connect(ui->projectView, SIGNAL(activated(QModelIndex)), this, SLOT(activateFileInProject(QModelIndex))); projectContextMenu = new QMenu(ui->projectView); projectOpen = projectContextMenu->addAction("Open file", this, SLOT(onActionProjectOpen_triggered())); projectRemove = projectContextMenu->addAction("Remove from project", this, SLOT(onActionProjectRemove_triggered())); projectRename = projectContextMenu->addAction("Rename file", this, SLOT(onActionProjectRename_triggered())); projectRunWith = projectContextMenu->addAction("Run model with this data", this, SLOT(onActionProjectRunWith_triggered())); projectAdd = projectContextMenu->addAction("Add existing file...", this, SLOT(onActionProjectAdd_triggered())); ui->projectView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->projectView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onProjectCustomContextMenu(QPoint))); connect(&project, SIGNAL(fileRenamed(QString,QString)), this, SLOT(fileRenamed(QString,QString))); connect(ui->conf_data_file, SIGNAL(currentIndexChanged(int)), &project, SLOT(currentDataFileIndex(int))); connect(ui->conf_have_cmd_params, SIGNAL(toggled(bool)), &project, SLOT(haveExtraArgs(bool))); connect(ui->conf_cmd_params, SIGNAL(textEdited(QString)), &project, SLOT(extraArgs(QString))); connect(ui->conf_have_mzn2fzn_params, SIGNAL(toggled(bool)), &project, SLOT(haveExtraMzn2FznArgs(bool))); connect(ui->conf_mzn2fzn_params, SIGNAL(textEdited(QString)), &project, SLOT(extraMzn2FznArgs(QString))); connect(ui->conf_verbose, SIGNAL(toggled(bool)), &project, SLOT(mzn2fznVerbose(bool))); connect(ui->conf_optimize, SIGNAL(toggled(bool)), &project, SLOT(mzn2fznOptimize(bool))); connect(ui->conf_solver, SIGNAL(currentIndexChanged(QString)), &project, SLOT(currentSolver(QString))); connect(ui->conf_nsol, SIGNAL(valueChanged(int)), &project, SLOT(n_solutions(int))); connect(ui->conf_printall, SIGNAL(toggled(bool)), &project, SLOT(printAll(bool))); connect(ui->conf_stats, SIGNAL(toggled(bool)), &project, SLOT(printStats(bool))); connect(ui->conf_have_solverFlags, SIGNAL(toggled(bool)), &project, SLOT(haveSolverFlags(bool))); connect(ui->conf_nthreads, SIGNAL(valueChanged(int)), &project, SLOT(n_threads(int))); connect(ui->conf_have_seed, SIGNAL(toggled(bool)), &project, SLOT(haveSeed(bool))); connect(ui->conf_seed, SIGNAL(textEdited(QString)), &project, SLOT(seed(QString))); connect(ui->conf_timeLimit, SIGNAL(valueChanged(int)), &project, SLOT(timeLimit(int))); connect(ui->conf_solver_verbose, SIGNAL(toggled(bool)), &project, SLOT(solverVerbose(bool))); if (!projectFile.isEmpty()) { loadProject(projectFile); setLastPath(QFileInfo(projectFile).absolutePath()+fileDialogSuffix); } else { on_actionNewModel_file_triggered(); if (getLastPath().isEmpty()) { setLastPath(QDir::currentPath()+fileDialogSuffix); } } } void MainWindow::onProjectCustomContextMenu(const QPoint & point) { projectSelectedIndex = projectSort->mapToSource(ui->projectView->indexAt(point)); QString file = project.fileAtIndex(projectSelectedIndex); if (!file.isEmpty()) { projectSelectedFile = file; projectOpen->setEnabled(true); projectRemove->setEnabled(true); projectRename->setEnabled(true); projectRunWith->setEnabled(ui->actionRun->isEnabled() && file.endsWith(".dzn")); projectContextMenu->exec(ui->projectView->mapToGlobal(point)); } else { projectOpen->setEnabled(false); projectRemove->setEnabled(false); projectRename->setEnabled(false); projectRunWith->setEnabled(false); projectContextMenu->exec(ui->projectView->mapToGlobal(point)); } } void MainWindow::onActionProjectAdd_triggered() { addFileToProject(false); } void MainWindow::addFileToProject(bool dznOnly) { QStringList fileNames; if (dznOnly) { QString fileName = QFileDialog::getOpenFileName(this, tr("Select a data file to open"), getLastPath(), "MiniZinc data files (*.dzn)"); fileNames.append(fileName); } else { fileNames = QFileDialog::getOpenFileNames(this, tr("Select one or more files to open"), getLastPath(), "MiniZinc Files (*.mzn *.dzn)"); } for (QStringList::iterator it = fileNames.begin(); it != fileNames.end(); ++it) { setLastPath(QFileInfo(*it).absolutePath()+fileDialogSuffix); project.addFile(ui->projectView, projectSort, *it); } setupDznMenu(); } void MainWindow::updateUiProcessRunning(bool pr) { processRunning = pr; if (processRunning) { fakeRunAction->setEnabled(true); ui->actionRun->setEnabled(false); fakeCompileAction->setEnabled(true); ui->actionCompile->setEnabled(false); fakeStopAction->setEnabled(false); ui->actionStop->setEnabled(true); ui->actionSubmit_to_Coursera->setEnabled(false); } else { bool isMzn = false; bool isFzn = false; if (curEditor) { isMzn = QFileInfo(curEditor->filepath).completeSuffix()=="mzn"; isFzn = QFileInfo(curEditor->filepath).completeSuffix()=="fzn"; } fakeRunAction->setEnabled(! (isMzn || isFzn)); ui->actionRun->setEnabled(isMzn || isFzn); fakeCompileAction->setEnabled(!isMzn); ui->actionCompile->setEnabled(isMzn); fakeStopAction->setEnabled(true); ui->actionStop->setEnabled(false); ui->actionSubmit_to_Coursera->setEnabled(true); } } void MainWindow::onActionProjectOpen_triggered() { activateFileInProject(projectSelectedIndex); } void MainWindow::onActionProjectRemove_triggered() { int tabCount = ui->tabWidget->count(); if (!projectSelectedFile.isEmpty()) { for (int i=0; itabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); if (ce->filepath == projectSelectedFile) { tabCloseRequest(i); if (ui->tabWidget->count() == tabCount) return; tabCount = ui->tabWidget->count(); i--; } } } } project.removeFile(projectSelectedFile); } void MainWindow::onActionProjectRename_triggered() { project.setEditable(projectSelectedIndex); ui->projectView->edit(projectSelectedIndex); } void MainWindow::onActionProjectRunWith_triggered() { ui->conf_data_file->setCurrentIndex(ui->conf_data_file->findText(projectSelectedFile)); on_actionRun_triggered(); } void MainWindow::activateFileInProject(const QModelIndex &proxyIndex) { QModelIndex index = projectSort->mapToSource(proxyIndex); if (project.isProjectFile(index)) { ui->tabWidget->setCurrentWidget(ui->configuration); } else { QString fileName = project.fileAtIndex(index); if (!fileName.isEmpty()) { bool foundFile = false; for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); if (ce->filepath == fileName) { ui->tabWidget->setCurrentIndex(i); foundFile = true; break; } } } if (!foundFile) { createEditor(fileName,false,false); } } } } MainWindow::~MainWindow() { for (int i=0; ikill(); cleanupProcesses[i]->waitForFinished(); delete cleanupProcesses[i]; } if (process) { process->kill(); process->waitForFinished(); delete process; } delete ui; delete paramDialog; } void MainWindow::on_actionNewModel_file_triggered() { createEditor(".mzn",false,true); } void MainWindow::on_actionNewData_file_triggered() { createEditor(".dzn",false,true); } void MainWindow::on_defaultBehaviourButton_toggled(bool checked) { ui->defaultBehaviourFrame->setEnabled(checked); ui->userBehaviourFrame->setEnabled(!checked); } void MainWindow::createEditor(const QString& path, bool openAsModified, bool isNewFile, bool readOnly) { QTextDocument* doc = NULL; bool large = false; QString fileContents; QString absPath = QFileInfo(path).canonicalFilePath(); if (isNewFile) { absPath = QString("Untitled")+QString().setNum(newFileCounter++)+path; } else if (path.isEmpty()) { absPath = path; // Do nothing } else if (openAsModified) { QFile file(path); if (file.open(QFile::ReadOnly)) { fileContents = file.readAll(); } else { QMessageBox::warning(this,"MiniZinc IDE", "Could not open file "+path, QMessageBox::Ok); return; } } else { if (absPath.isEmpty()) { QMessageBox::warning(this,"MiniZinc IDE", "Could not open file "+path, QMessageBox::Ok); return; } QPair d = IDE::instance()->loadFile(absPath,this); updateRecentFiles(absPath); doc = d.first; large = d.second; } if (doc || !fileContents.isEmpty() || isNewFile) { int closeTab = -1; if (!isNewFile && ui->tabWidget->count()==2) { CodeEditor* ce = static_cast(ui->tabWidget->widget(0)==ui->configuration ? ui->tabWidget->widget(1) : ui->tabWidget->widget(0)); if (ce->filepath == "" && !ce->document()->isModified()) { closeTab = ui->tabWidget->widget(0)==ui->configuration ? 1 : 0; } } CodeEditor* ce = new CodeEditor(doc,absPath,isNewFile,large,editorFont,darkMode,ui->tabWidget,this); if (readOnly || ce->filename == "_coursera") ce->setReadOnly(true); int tab = ui->tabWidget->addTab(ce, ce->filename); ui->tabWidget->setCurrentIndex(tab); curEditor->setFocus(); if (openAsModified) { curEditor->filepath = ""; curEditor->document()->setPlainText(fileContents); curEditor->document()->setModified(true); tabChange(ui->tabWidget->currentIndex()); } else if (doc) { project.addFile(ui->projectView, projectSort, absPath); IDE::instance()->registerEditor(absPath,curEditor); } if (closeTab >= 0) tabCloseRequest(closeTab); setupDznMenu(); } } void MainWindow::setLastPath(const QString &s) { IDE::instance()->setLastPath(s); } QString MainWindow::getLastPath(void) { return IDE::instance()->getLastPath(); } void MainWindow::openFile(const QString &path, bool openAsModified) { QString fileName = path; if (fileName.isNull()) { fileName = QFileDialog::getOpenFileName(this, tr("Open File"), getLastPath(), "MiniZinc Files (*.mzn *.dzn *.fzn *.mzp)"); if (!fileName.isNull()) { setLastPath(QFileInfo(fileName).absolutePath()+fileDialogSuffix); } } if (!fileName.isEmpty()) { if (fileName.endsWith(".mzp")) { openProject(fileName); } else { createEditor(fileName, openAsModified, false); } } } void MainWindow::tabCloseRequest(int tab) { CodeEditor* ce = static_cast(ui->tabWidget->widget(tab)); if (ce->document()->isModified()) { QMessageBox msg; msg.setText("The document has been modified."); msg.setInformativeText("Do you want to save your changes?"); msg.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); msg.setDefaultButton(QMessageBox::Save); int ret = msg.exec(); switch (ret) { case QMessageBox::Save: on_actionSave_triggered(); if (ce->document()->isModified()) return; case QMessageBox::Discard: break; case QMessageBox::Cancel: return; default: return; } } ce->document()->setModified(false); ui->tabWidget->removeTab(tab); setupDznMenu(); if (!ce->filepath.isEmpty()) IDE::instance()->removeEditor(ce->filepath,ce); delete ce; } void MainWindow::closeEvent(QCloseEvent* e) { bool modified = false; for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration && static_cast(ui->tabWidget->widget(i))->document()->isModified()) { modified = true; break; } } if (modified) { int ret = QMessageBox::warning(this, "MiniZinc IDE", "There are modified documents.\nDo you want to discard the changes or cancel?", QMessageBox::Discard | QMessageBox::Cancel); if (ret == QMessageBox::Cancel) { e->ignore(); return; } } if (project.isModified()) { int ret = QMessageBox::warning(this, "MiniZinc IDE", "The project has been modified.\nDo you want to discard the changes or cancel?", QMessageBox::Discard | QMessageBox::Cancel); if (ret == QMessageBox::Cancel) { e->ignore(); return; } } if (process) { int ret = QMessageBox::warning(this, "MiniZinc IDE", "MiniZinc is currently running a solver.\nDo you want to quit anyway and stop the current process?", QMessageBox::Yes| QMessageBox::No); if (ret == QMessageBox::No) { e->ignore(); return; } } if (process) { disconnect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(procError(QProcess::ProcessError))); process->kill(); } for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); ce->setDocument(NULL); ce->filepath = ""; if (ce->filepath != "") IDE::instance()->removeEditor(ce->filepath,ce); } } if (!projectPath.isEmpty()) IDE::instance()->projects.remove(projectPath); projectPath = ""; IDE::instance()->mainWindows.remove(this); QSettings settings; settings.beginGroup("MainWindow"); settings.setValue("editorFont", editorFont); settings.setValue("darkMode", darkMode); settings.setValue("size", size()); settings.setValue("pos", pos()); settings.setValue("toolbarHidden", ui->toolBar->isHidden()); settings.setValue("outputWindowHidden", ui->outputDockWidget->isHidden()); settings.endGroup(); e->accept(); } void MainWindow::dragEnterEvent(QDragEnterEvent* event) { if (event->mimeData()->hasFormat("text/uri-list")) event->acceptProposedAction(); } void MainWindow::dropEvent(QDropEvent* event) { const QMimeData* mimeData = event->mimeData(); if (mimeData->hasUrls()) { QList urlList = mimeData->urls(); for (int i=0; iacceptProposedAction(); } void MainWindow::tabChange(int tab) { if (curEditor) { disconnect(ui->actionCopy, SIGNAL(triggered()), curEditor, SLOT(copy())); disconnect(ui->actionPaste, SIGNAL(triggered()), curEditor, SLOT(paste())); disconnect(ui->actionCut, SIGNAL(triggered()), curEditor, SLOT(cut())); disconnect(ui->actionUndo, SIGNAL(triggered()), curEditor, SLOT(undo())); disconnect(ui->actionRedo, SIGNAL(triggered()), curEditor, SLOT(redo())); disconnect(curEditor, SIGNAL(copyAvailable(bool)), ui->actionCopy, SLOT(setEnabled(bool))); disconnect(curEditor, SIGNAL(copyAvailable(bool)), ui->actionCut, SLOT(setEnabled(bool))); disconnect(curEditor->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); disconnect(curEditor->document(), SIGNAL(undoAvailable(bool)), ui->actionUndo, SLOT(setEnabled(bool))); disconnect(curEditor->document(), SIGNAL(redoAvailable(bool)), ui->actionRedo, SLOT(setEnabled(bool))); } if (tab==-1) { curEditor = NULL; ui->actionClose->setEnabled(false); } else { if (ui->tabWidget->widget(tab)!=ui->configuration) { ui->actionClose->setEnabled(true); curEditor = static_cast(ui->tabWidget->widget(tab)); connect(ui->actionCopy, SIGNAL(triggered()), curEditor, SLOT(copy())); connect(ui->actionPaste, SIGNAL(triggered()), curEditor, SLOT(paste())); connect(ui->actionCut, SIGNAL(triggered()), curEditor, SLOT(cut())); connect(ui->actionUndo, SIGNAL(triggered()), curEditor, SLOT(undo())); connect(ui->actionRedo, SIGNAL(triggered()), curEditor, SLOT(redo())); connect(curEditor, SIGNAL(copyAvailable(bool)), ui->actionCopy, SLOT(setEnabled(bool))); connect(curEditor, SIGNAL(copyAvailable(bool)), ui->actionCut, SLOT(setEnabled(bool))); connect(curEditor->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); connect(curEditor->document(), SIGNAL(undoAvailable(bool)), ui->actionUndo, SLOT(setEnabled(bool))); connect(curEditor->document(), SIGNAL(redoAvailable(bool)), ui->actionRedo, SLOT(setEnabled(bool))); setWindowModified(curEditor->document()->isModified()); QString p; p += " "; p += QChar(0x2014); p += " "; if (projectPath.isEmpty()) { p += "Untitled Project"; } else { QFileInfo fi(projectPath); p += "Project: "+fi.baseName(); } if (curEditor->filepath.isEmpty()) { setWindowFilePath(curEditor->filename); setWindowTitle(curEditor->filename+p+"[*]"); } else { setWindowFilePath(curEditor->filepath); setWindowTitle(curEditor->filename+p+"[*]"); } ui->actionSave->setEnabled(true); ui->actionSave_as->setEnabled(true); ui->actionSelect_All->setEnabled(true); ui->actionUndo->setEnabled(curEditor->document()->isUndoAvailable()); ui->actionRedo->setEnabled(curEditor->document()->isRedoAvailable()); updateUiProcessRunning(processRunning); findDialog->setEditor(curEditor); ui->actionFind->setEnabled(true); ui->actionFind_next->setEnabled(true); ui->actionFind_previous->setEnabled(true); ui->actionReplace->setEnabled(true); ui->actionShift_left->setEnabled(true); ui->actionShift_right->setEnabled(true); curEditor->setFocus(); } else { curEditor = NULL; setWindowModified(project.isModified()); connect(&project, SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); ui->actionClose->setEnabled(false); ui->actionSave->setEnabled(false); ui->actionSave_as->setEnabled(false); ui->actionCut->setEnabled(false); ui->actionCopy->setEnabled(false); ui->actionPaste->setEnabled(false); ui->actionSelect_All->setEnabled(false); ui->actionUndo->setEnabled(false); ui->actionRedo->setEnabled(false); fakeRunAction->setEnabled(true); fakeCompileAction->setEnabled(true); ui->actionRun->setEnabled(false); ui->actionCompile->setEnabled(false); ui->actionFind->setEnabled(false); ui->actionFind_next->setEnabled(false); ui->actionFind_previous->setEnabled(false); ui->actionReplace->setEnabled(false); ui->actionShift_left->setEnabled(false); ui->actionShift_right->setEnabled(false); findDialog->close(); setWindowFilePath(projectPath); QString p; if (projectPath.isEmpty()) { p = "Untitled Project"; } else { QFileInfo fi(projectPath); p = "Project: "+fi.baseName(); } setWindowTitle(p+"[*]"); } } } void MainWindow::on_actionClose_triggered() { int tab = ui->tabWidget->currentIndex(); tabCloseRequest(tab); } void MainWindow::on_actionOpen_triggered() { openFile(QString()); } QStringList MainWindow::parseConf(bool compileOnly, bool useDataFile) { QStringList ret; if (compileOnly && !project.mzn2fznOptimize()) ret << "--no-optimize"; if (compileOnly && project.mzn2fznVerbose()) ret << "-v"; if (compileOnly && project.haveExtraArgs() && !project.extraArgs().isEmpty()) ret << "-D" << project.extraArgs(); if (compileOnly && project.haveExtraMzn2FznArgs() && !project.extraMzn2FznArgs().isEmpty()) { QStringList compilerArgs = project.extraMzn2FznArgs().split(" ", QString::SkipEmptyParts); ret << compilerArgs; } if (compileOnly && useDataFile && project.currentDataFile()!="None") ret << "-d" << project.currentDataFile(); if (!compileOnly && project.defaultBehaviour()) { QFile fznFile(currentFznTarget); if (fznFile.open(QIODevice::ReadOnly | QIODevice::Text)) { int seekSize = strlen("satisfy;\n\n"); if (fznFile.size() >= seekSize) { fznFile.seek(fznFile.size()-seekSize); QString line = fznFile.readLine(); if (!line.contains("satisfy;")) ret << "-a"; } } } else { if (!compileOnly && project.printAll()) ret << "-a"; } if (!compileOnly && project.printStats()) ret << "-s"; if (!compileOnly && project.n_threads() > 1) ret << "-p" << QString::number(project.n_threads()); if (!compileOnly && project.haveSeed()) ret << "-r" << project.seed(); if (!compileOnly && project.haveSolverFlags()) { QStringList solverArgs = project.solverFlags().split(" ", QString::SkipEmptyParts); ret << solverArgs; } if (!compileOnly && !project.defaultBehaviour() && project.n_solutions() != 1) ret << "-n" << QString::number(project.n_solutions()); Solver s = solvers[ui->conf_solver->itemData(ui->conf_solver->currentIndex()).toInt()]; if (compileOnly && !s.mznlib.isEmpty()) ret << s.mznlib; return ret; } void MainWindow::setupDznMenu() { QString curText = ui->conf_data_file->currentText(); ui->conf_data_file->clear(); ui->conf_data_file->addItem("None"); QStringList dataFiles = project.dataFiles(); for (int i=0; iconf_data_file->addItem(dataFiles[i]); } ui->conf_data_file->addItem("Add data file to project..."); ui->conf_data_file->setCurrentText(curText); } void MainWindow::addOutput(const QString& s, bool html) { QTextCursor cursor = ui->outputConsole->textCursor(); cursor.movePosition(QTextCursor::End); ui->outputConsole->setTextCursor(cursor); if (html) ui->outputConsole->insertHtml(s); else ui->outputConsole->insertPlainText(s); } void MainWindow::checkArgsOutput() { QString l = process->readAll(); compileErrors += l; } QString MainWindow::getMznDistribPath(void) const { return mznDistribPath; } void MainWindow::checkArgsFinished(int exitcode) { if (processWasStopped) return; QString additionalCmdlineParams; QString additionalDataFile; if (exitcode!=0) { checkArgsOutput(); compileErrors = compileErrors.simplified(); QRegExp undefined("symbol error: variable `([a-zA-Z][a-zA-Z0-9_]*)' must be defined"); undefined.setMinimal(true); int pos = 0; QStringList undefinedArgs; while ( (pos = undefined.indexIn(compileErrors,pos)) != -1 ) { undefinedArgs << undefined.cap(1); pos += undefined.matchedLength(); } if (undefinedArgs.size() > 0) { QStringList params; paramDialog->getParams(undefinedArgs, project.dataFiles(), params, additionalDataFile); if (additionalDataFile.isEmpty()) { if (params.size()==0) { procFinished(0,false); return; } for (int i=0; ifilepath, additionalCmdlineParams, additionalDataFile); } void MainWindow::checkArgs(QString filepath) { if (mzn2fzn_executable=="") { int ret = QMessageBox::warning(this,"MiniZinc IDE","Could not find the mzn2fzn executable.\nDo you want to open the solver settings dialog?", QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok) on_actionManage_solvers_triggered(); return; } process = new MznProcess(this); processName = mzn2fzn_executable; processWasStopped = false; process->setWorkingDirectory(QFileInfo(filepath).absolutePath()); process->setProcessChannelMode(QProcess::MergedChannels); connect(process, SIGNAL(readyRead()), this, SLOT(checkArgsOutput())); connect(process, SIGNAL(finished(int)), this, SLOT(checkArgsFinished(int))); connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(procError(QProcess::ProcessError))); QStringList args = parseConf(true, true); args << "--instance-check-only" << "--output-to-stdout"; args << filepath; compileErrors = ""; process->start(mzn2fzn_executable,args,getMznDistribPath()); } void MainWindow::on_actionRun_triggered() { if (mzn2fzn_executable=="") { int ret = QMessageBox::warning(this,"MiniZinc IDE","Could not find the mzn2fzn executable.\nDo you want to open the solver settings dialog?", QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok) on_actionManage_solvers_triggered(); return; } if (curEditor && curEditor->filepath!="") { if (curEditor->document()->isModified()) { if (!saveBeforeRunning) { QMessageBox msgBox; msgBox.setText("The model has been modified. You have to save it before running."); msgBox.setInformativeText("Do you want to save it now and then run?"); QAbstractButton *saveButton = msgBox.addButton(QMessageBox::Save); msgBox.addButton(QMessageBox::Cancel); QAbstractButton *alwaysButton = msgBox.addButton("Always save", QMessageBox::AcceptRole); msgBox.setDefaultButton(QMessageBox::Save); msgBox.exec(); if (msgBox.clickedButton()==alwaysButton) { saveBeforeRunning = true; } if (msgBox.clickedButton()!=saveButton && msgBox.clickedButton()!=alwaysButton) { return; } } on_actionSave_triggered(); } if (curEditor->document()->isModified()) return; updateUiProcessRunning(true); on_actionSplit_triggered(); IDE::instance()->stats.modelsRun++; if (curEditor->filepath.endsWith(".fzn")) { currentFznTarget = curEditor->filepath; runSolns2Out = false; runCompiledFzn(0); } else { compileOnly = false; checkArgs(curEditor->filepath); } } } QString MainWindow::setElapsedTime() { qint64 elapsed_t = elapsedTime.elapsed(); int hours = elapsed_t / 3600000; int minutes = (elapsed_t % 3600000) / 60000; int seconds = (elapsed_t % 60000) / 1000; int msec = (elapsed_t % 1000); QString elapsed; if (hours > 0) elapsed += QString().number(hours)+"h "; if (hours > 0 || minutes > 0) elapsed += QString().number(minutes)+"m "; if (hours > 0 || minutes > 0 || seconds > 0) elapsed += QString().number(seconds)+"s"; if (hours==0 && minutes==0) elapsed += " "+QString().number(msec)+"msec"; QString timeLimit; if (project.timeLimit() > 0) { timeLimit += " / "; int tl_hours = project.timeLimit() / 3600; int tl_minutes = (project.timeLimit() % 3600) / 60; int tl_seconds = project.timeLimit() % 60; if (tl_hours > 0) timeLimit += QString().number(tl_hours)+"h "; if (tl_hours > 0 || tl_minutes > 0) timeLimit += QString().number(tl_minutes)+"m "; timeLimit += QString().number(tl_seconds)+"s"; } statusLabel->setText(elapsed+timeLimit); return elapsed; } void MainWindow::statusTimerEvent() { QString txt = "Running."; for (int i=time; i--;) txt+="."; ui->statusbar->showMessage(txt); time = (time+1) % 5; setElapsedTime(); } void MainWindow::readOutput() { MznProcess* readProc = (outputProcess==NULL ? process : outputProcess); if (readProc != NULL) { readProc->setReadChannel(QProcess::StandardOutput); while (readProc->canReadLine()) { QString l = readProc->readLine(); if (inJSONHandler) { l = l.trimmed(); if (l.startsWith("%%%mzn-json-time")) { JSONOutput[curJSONHandler].insert(2, "["); JSONOutput[curJSONHandler].append(","+ QString().number(elapsedTime.elapsed()) +"]\n"); } else if (l.startsWith("%%%mzn-json-end")) { curJSONHandler++; inJSONHandler = false; } else { JSONOutput[curJSONHandler].append(l); } } else { QRegExp pattern("^(?:%%%(top|bottom))?%%%mzn-json:(.*)"); if (pattern.exactMatch(l.trimmed())) { inJSONHandler = true; QStringList sl; sl.append(pattern.capturedTexts()[2]); if (pattern.capturedTexts()[1].isEmpty()) { sl.append("top"); } else { sl.append(pattern.capturedTexts()[1]); } JSONOutput.append(sl); } else { if (curJSONHandler > 0 && l.trimmed() == "----------") { openJSONViewer(); JSONOutput.clear(); curJSONHandler = 0; if (hadNonJSONOutput) addOutput(l,false); } else if (curHtmlWindow && l.trimmed() == "==========") { finishJSONViewer(); if (hadNonJSONOutput) addOutput(l,false); } else { if (outputBuffer) (*outputBuffer) << l; addOutput(l,false); hadNonJSONOutput = true; } } } } } if (process != NULL) { process->setReadChannel(QProcess::StandardError); for (;;) { QString l; if (process->canReadLine()) { l = process->readLine(); } else if (process->state()==QProcess::NotRunning) { if (process->atEnd()) break; l = process->readAll()+"\n"; } else { break; } QRegExp errexp("^(.*):([0-9]+):\\s*$"); if (errexp.indexIn(l) != -1) { QString errFile = errexp.cap(1).trimmed(); QUrl url = QUrl::fromLocalFile(errFile); url.setQuery("line="+errexp.cap(2)); url.setScheme("err"); IDE::instance()->stats.errorsShown++; addOutput(""+errexp.cap(1)+":"+errexp.cap(2)+":
"); } else { addOutput(l,false); } } } if (outputProcess != NULL) { outputProcess->setReadChannel(QProcess::StandardError); for (;;) { QString l; if (outputProcess->canReadLine()) { l = outputProcess->readLine(); } else if (outputProcess->state()==QProcess::NotRunning) { if (outputProcess->atEnd()) break; l = outputProcess->readAll()+"\n"; } else { break; } addOutput(l,false); } } } void MainWindow::openJSONViewer(void) { if (curHtmlWindow==NULL) { QVector specs; for (int i=0; ishow(); } for (int i=0; iaddSolution(i, JSONOutput[i].join(' ')); } } void MainWindow::finishJSONViewer(void) { if (curHtmlWindow) { curHtmlWindow->finish(elapsedTime.elapsed()); } } void MainWindow::compileAndRun(const QString& modelPath, const QString& additionalCmdlineParams, const QString& additionalDataFile) { process = new MznProcess(this); processName = mzn2fzn_executable; curFilePath = modelPath; processWasStopped = false; runSolns2Out = true; process->setWorkingDirectory(QFileInfo(modelPath).absolutePath()); connect(process, SIGNAL(readyRead()), this, SLOT(readOutput())); if (compileOnly) connect(process, SIGNAL(finished(int)), this, SLOT(openCompiledFzn(int))); else connect(process, SIGNAL(finished(int)), this, SLOT(runCompiledFzn(int))); connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(procError(QProcess::ProcessError))); QStringList args = parseConf(true, additionalDataFile.isEmpty()); if (!additionalCmdlineParams.isEmpty()) { args << "-D" << additionalCmdlineParams; } if (!additionalDataFile.isEmpty()) { args << "-d" << additionalDataFile; } tmpDir = new QTemporaryDir; if (!tmpDir->isValid()) { QMessageBox::critical(this, "MiniZinc IDE", "Could not create temporary directory for compilation."); procFinished(0); } else { QFileInfo fi(modelPath); currentFznTarget = tmpDir->path()+"/"+fi.baseName()+".fzn"; args << "-o" << currentFznTarget; args << "--output-ozn-to-file" << tmpDir->path()+"/"+fi.baseName()+".ozn"; args << modelPath; QString compiling = fi.fileName(); if (project.currentDataFile()!="None") { compiling += " with data "; QFileInfo fi(project.currentDataFile()); compiling += fi.fileName(); } if (!additionalDataFile.isEmpty()) { compiling += ", with additional data "; QFileInfo fi(additionalDataFile); compiling += fi.fileName(); } if (!additionalCmdlineParams.isEmpty()) { compiling += ", additional arguments " + additionalCmdlineParams; } addOutput("
Compiling "+compiling+"

"); process->start(mzn2fzn_executable,args,getMznDistribPath()); time = 0; timer->start(500); elapsedTime.start(); } } bool MainWindow::runWithOutput(const QString &modelFile, const QString &dataFile, int timeout, QTextStream &outstream) { bool foundModel = false; bool foundData = false; QString modelFilePath; QString dataFilePath; QString dataFileRelative = dataFile; if (dataFileRelative.startsWith(".")) dataFileRelative.remove(0,1); const QStringList& files = project.files(); for (int i=0; iselectSolution(source,n); } } void MainWindow::pipeOutput() { outputProcess->write(process->readAllStandardOutput()); } void MainWindow::procFinished(int, bool showTime) { readOutput(); updateUiProcessRunning(false); timer->stop(); QString elapsedTime = setElapsedTime(); ui->statusbar->showMessage("Ready."); process = NULL; if (outputProcess) { outputProcess->closeWriteChannel(); outputProcess->waitForFinished(); outputProcess = NULL; finishJSONViewer(); inJSONHandler = false; JSONOutput.clear(); } if (showTime) { addOutput("
Finished in "+elapsedTime+"

"); } delete tmpDir; tmpDir = NULL; outputBuffer = NULL; emit(finished()); } void MainWindow::procError(QProcess::ProcessError e) { if (e==QProcess::FailedToStart) { QMessageBox::critical(this, "MiniZinc IDE", "Failed to start '"+processName+"'. Check your path settings."); } else { QMessageBox::critical(this, "MiniZinc IDE", "Unknown error while executing the MiniZinc interpreter."); } procFinished(0); } void MainWindow::outputProcError(QProcess::ProcessError e) { if (e==QProcess::FailedToStart) { QMessageBox::critical(this, "MiniZinc IDE", "Failed to start 'solns2out'. Check your path settings."); } else { QMessageBox::critical(this, "MiniZinc IDE", "Unknown error while executing the MiniZinc interpreter."); } procFinished(0); } void MainWindow::saveFile(CodeEditor* ce, const QString& f) { QString filepath = f; int tabIndex = ui->tabWidget->indexOf(ce); if (filepath=="") { if (ce != curEditor) { ui->tabWidget->setCurrentIndex(tabIndex); } QString dialogPath = ce->filepath.isEmpty() ? getLastPath()+"/"+ce->filename: ce->filepath; filepath = QFileDialog::getSaveFileName(this,"Save file",dialogPath,"MiniZinc files (*.mzn *.dzn *.fzn)"); if (!filepath.isNull()) { setLastPath(QFileInfo(filepath).absolutePath()+fileDialogSuffix); } } if (!filepath.isEmpty()) { if (filepath != ce->filepath && IDE::instance()->hasFile(filepath)) { QMessageBox::warning(this,"MiniZinc IDE","Cannot overwrite open file.", QMessageBox::Ok); } else { IDE::instance()->fsWatch.removePath(filepath); QFile file(filepath); if (file.open(QFile::WriteOnly | QFile::Text)) { QTextStream out(&file); out.setCodec(QTextCodec::codecForName("UTF-8")); out << ce->document()->toPlainText(); file.close(); if (filepath != ce->filepath) { QTextDocument* newdoc = IDE::instance()->addDocument(filepath,ce->document(),ce); ce->setDocument(newdoc); if (ce->filepath != "") { IDE::instance()->removeEditor(ce->filepath,ce); } project.removeFile(ce->filepath); project.addFile(ui->projectView, projectSort, filepath); ce->filepath = filepath; setupDznMenu(); } ce->document()->setModified(false); ce->filename = QFileInfo(filepath).fileName(); ui->tabWidget->setTabText(tabIndex,ce->filename); updateRecentFiles(filepath); if (ce==curEditor) tabChange(tabIndex); } else { QMessageBox::warning(this,"MiniZinc IDE","Could not save file"); } IDE::instance()->fsWatch.addPath(filepath); } } } void MainWindow::fileRenamed(const QString& oldPath, const QString& newPath) { for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); if (ce->filepath==oldPath) { ce->filepath = newPath; ce->filename = QFileInfo(newPath).fileName(); IDE::instance()->renameFile(oldPath,newPath); ui->tabWidget->setTabText(i,ce->filename); updateRecentFiles(newPath); if (ce==curEditor) tabChange(i); } } setupDznMenu(); } } void MainWindow::on_actionSave_triggered() { if (curEditor) { saveFile(curEditor,curEditor->filepath); } } void MainWindow::on_actionSave_as_triggered() { if (curEditor) { saveFile(curEditor,QString()); } } void MainWindow::on_actionQuit_triggered() { qApp->closeAllWindows(); if (IDE::instance()->mainWindows.size()==0) { IDE::instance()->quit(); } } void MainWindow::on_actionStop_triggered() { ui->actionStop->setEnabled(false); if (process) { disconnect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(procError(QProcess::ProcessError))); processWasStopped = true; #ifdef Q_OS_WIN AttachConsole(process->pid()->dwProcessId); SetConsoleCtrlHandler(NULL, TRUE); GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0); #else ::kill(process->pid(), SIGINT); #endif if (!process->waitForFinished(500)) { if (process->state() != QProcess::NotRunning) { process->kill(); process->waitForFinished(); } } delete process; process = NULL; addOutput("
Stopped.

"); procFinished(0); } } void MainWindow::openCompiledFzn(int exitcode) { if (processWasStopped) return; if (exitcode==0) { QFile file(currentFznTarget); int fsize = file.size() / (1024*1024); if (file.size() > 10*1024*1024) { QMessageBox::StandardButton sb = QMessageBox::warning(this, "MiniZinc IDE", QString("Compilation resulted in a large FlatZinc file (")+ QString().setNum(fsize)+" MB). Opening " "the file may slow down the IDE and potentially " "affect its stability. Do you want to open it anyway, save it, or discard the file?", QMessageBox::Open | QMessageBox::Discard | QMessageBox::Save); switch (sb) { case QMessageBox::Save: { bool success = true; do { QString savepath = QFileDialog::getSaveFileName(this,"Save FlatZinc",getLastPath(),"FlatZinc files (*.fzn)"); if (!savepath.isNull() && !savepath.isEmpty()) { QFile oldfile(savepath); if (oldfile.exists()) { if (!oldfile.remove()) { success = false; } } QFile newfile(currentFznTarget); newfile.copy(savepath); } } while (!success); procFinished(exitcode); return; } case QMessageBox::Discard: procFinished(exitcode); return; default: break; } } openFile(currentFznTarget, true); } procFinished(exitcode); } void MainWindow::runCompiledFzn(int exitcode) { if (processWasStopped) return; if (exitcode==0) { readOutput(); QStringList args = parseConf(false,true); Solver s = solvers[ui->conf_solver->itemData(ui->conf_solver->currentIndex()).toInt()]; if (!s.backend.isEmpty()) args << s.backend.split(" ",QString::SkipEmptyParts); args << currentFznTarget; if (s.detach) { addOutput("
Running "+curEditor->filename+" (detached)

"); MznProcess* detached_process = new MznProcess(this); detached_process->setWorkingDirectory(QFileInfo(curEditor->filepath).absolutePath()); QString executable = s.executable; if (project.solverVerbose()) { addOutput("
Command line:

"); QString cmdline = executable; QRegExp white("\\s"); for (int i=0; i"+cmdline+"
"); } detached_process->start(executable,args,getMznDistribPath()); cleanupTmpDirs.append(tmpDir); cleanupProcesses.append(detached_process); tmpDir = NULL; procFinished(exitcode); } else { if (runSolns2Out) { outputProcess = new MznProcess(this); inJSONHandler = false; curJSONHandler = 0; JSONOutput.clear(); if (curHtmlWindow) { disconnect(curHtmlWindow, SIGNAL(closeWindow()), this, SLOT(closeHTMLWindow())); curHtmlWindow->setAttribute(Qt::WA_DeleteOnClose, true); curHtmlWindow = NULL; } hadNonJSONOutput = false; outputProcess->setWorkingDirectory(QFileInfo(curFilePath).absolutePath()); connect(outputProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput())); connect(outputProcess, SIGNAL(readyReadStandardError()), this, SLOT(readOutput())); connect(outputProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(outputProcError(QProcess::ProcessError))); QStringList outargs; outargs << currentFznTarget.left(currentFznTarget.length()-4)+".ozn"; outputProcess->start("solns2out",outargs,getMznDistribPath()); } process = new MznProcess(this); processName = s.executable; processWasStopped = false; process->setWorkingDirectory(QFileInfo(curFilePath).absolutePath()); if (runSolns2Out) { connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(pipeOutput())); } else { connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput())); } connect(process, SIGNAL(readyReadStandardError()), this, SLOT(readOutput())); connect(process, SIGNAL(finished(int)), this, SLOT(procFinished(int))); connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(procError(QProcess::ProcessError))); if (project.timeLimit() != 0) { int timeout = project.timeLimit(); solverTimeout->start(timeout*1000); } elapsedTime.start(); addOutput("
Running "+QFileInfo(curFilePath).fileName()+"

"); QString executable = s.executable; if (project.solverVerbose()) { addOutput("
Command line:

"); QString cmdline = executable; QRegExp white("\\s"); for (int i=0; i"+cmdline+"
"); } process->start(executable,args,getMznDistribPath()); time = 0; timer->start(500); } } else { delete tmpDir; tmpDir = NULL; procFinished(exitcode); } } void MainWindow::on_actionCompile_triggered() { if (mzn2fzn_executable=="") { int ret = QMessageBox::warning(this,"MiniZinc IDE","Could not find the mzn2fzn executable.\nDo you want to open the solver settings dialog?", QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok) on_actionManage_solvers_triggered(); return; } if (curEditor && curEditor->filepath!="") { if (curEditor->document()->isModified()) { if (!saveBeforeRunning) { QMessageBox msgBox; msgBox.setText("The model has been modified."); msgBox.setInformativeText("Do you want to save it before compiling?"); QAbstractButton *saveButton = msgBox.addButton(QMessageBox::Save); msgBox.addButton(QMessageBox::Cancel); QAbstractButton *alwaysButton = msgBox.addButton("Always save", QMessageBox::AcceptRole); msgBox.setDefaultButton(QMessageBox::Save); msgBox.exec(); if (msgBox.clickedButton()==alwaysButton) { saveBeforeRunning = true; } if (msgBox.clickedButton()!=saveButton && msgBox.clickedButton()!=alwaysButton) { return; } } on_actionSave_triggered(); } if (curEditor->document()->isModified()) return; updateUiProcessRunning(true); compileOnly = true; checkArgs(curEditor->filepath); } } void MainWindow::on_actionClear_output_triggered() { ui->outputConsole->document()->clear(); } void MainWindow::setEditorFont(QFont font) { QTextCharFormat format; format.setFont(font); ui->outputConsole->setFont(font); QTextCursor cursor(ui->outputConsole->document()); cursor.movePosition(QTextCursor::Start); cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); cursor.mergeCharFormat(format); for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i)!=ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); ce->setEditorFont(font); } } } void MainWindow::on_actionBigger_font_triggered() { editorFont.setPointSize(editorFont.pointSize()+1); IDE::instance()->setEditorFont(editorFont); } void MainWindow::on_actionSmaller_font_triggered() { editorFont.setPointSize(std::max(5, editorFont.pointSize()-1)); IDE::instance()->setEditorFont(editorFont); } void MainWindow::on_actionDefault_font_size_triggered() { editorFont.setPointSize(13); IDE::instance()->setEditorFont(editorFont); } void MainWindow::on_actionAbout_MiniZinc_IDE_triggered() { AboutDialog(IDE::instance()->applicationVersion()).exec(); } void MainWindow::errorClicked(const QUrl & anUrl) { QUrl url = anUrl; QString query = url.query(); url.setQuery(""); url.setScheme("file"); QFileInfo urlinfo(url.toLocalFile()); IDE::instance()->stats.errorsClicked++; for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); QFileInfo ceinfo(ce->filepath); if (ceinfo.canonicalFilePath() == urlinfo.canonicalFilePath()) { QRegExp re_line("line=([0-9]+)"); if (re_line.indexIn(query) != -1) { bool ok; int line = re_line.cap(1).toInt(&ok); if (ok) { QTextBlock block = ce->document()->findBlockByNumber(line-1); if (block.isValid()) { QTextCursor cursor = ce->textCursor(); cursor.setPosition(block.position()); ce->setFocus(); ce->setTextCursor(cursor); ce->centerCursor(); ui->tabWidget->setCurrentIndex(i); } } } } } } } void MainWindow::on_actionManage_solvers_triggered(bool addNew) { QSettings settings; settings.beginGroup("ide"); bool checkUpdates = settings.value("checkforupdates",false).toBool(); settings.endGroup(); SolverDialog sd(solvers,defaultSolver,addNew,mznDistribPath); sd.exec(); defaultSolver = sd.def(); mznDistribPath = sd.mznPath(); if (!mznDistribPath.isEmpty() && ! (mznDistribPath.endsWith("/") || mznDistribPath.endsWith("\\"))) mznDistribPath += "/"; checkMznPath(); QString curSelection = ui->conf_solver->currentText(); ui->conf_solver->clear(); for (int i=0; iconf_solver->addItem(solvers[i].name,i); ui->conf_solver->addItem("Add new solver...",solvers.size()); int idx = ui->conf_solver->findText(curSelection); if (!addNew && idx!=-1) ui->conf_solver->setCurrentIndex(idx); else ui->conf_solver->setCurrentText(defaultSolver); settings.beginGroup("ide"); if (!checkUpdates && settings.value("checkforupdates",false).toBool()) { settings.setValue("lastCheck",QDate::currentDate().addDays(-2)); IDE::instance()->checkUpdate(); } settings.endGroup(); settings.beginGroup("minizinc"); settings.setValue("mznpath",mznDistribPath); settings.setValue("defaultSolver",defaultSolver); settings.endGroup(); settings.beginWriteArray("solvers"); QStringList solvers_list; for (int i=0; istats.solvers = solvers_list; settings.endArray(); } void MainWindow::on_actionFind_triggered() { findDialog->raise(); findDialog->show(); findDialog->activateWindow(); } void MainWindow::on_actionReplace_triggered() { findDialog->raise(); findDialog->show(); findDialog->activateWindow(); } void MainWindow::on_actionSelect_font_triggered() { bool ok; QFont newFont = QFontDialog::getFont(&ok,editorFont,this); if (ok) { editorFont = newFont; IDE::instance()->setEditorFont(editorFont); } } void MainWindow::on_actionGo_to_line_triggered() { if (curEditor==NULL) return; GoToLineDialog gtl; if (gtl.exec()==QDialog::Accepted) { bool ok; int line = gtl.getLine(&ok); if (ok) { QTextBlock block = curEditor->document()->findBlockByNumber(line-1); if (block.isValid()) { QTextCursor cursor = curEditor->textCursor(); cursor.setPosition(block.position()); curEditor->setTextCursor(cursor); } } } } void MainWindow::checkMznPath() { QString ignoreVersionString; SolverDialog::checkMzn2fznExecutable(mznDistribPath,mzn2fzn_executable,ignoreVersionString); if (mzn2fzn_executable.isEmpty()) { int ret = QMessageBox::warning(this,"MiniZinc IDE","Could not find the mzn2fzn executable.\nDo you want to open the solver settings dialog?", QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok) on_actionManage_solvers_triggered(); return; } } void MainWindow::on_actionShift_left_triggered() { QTextCursor cursor = curEditor->textCursor(); QTextBlock block = curEditor->document()->findBlock(cursor.anchor()); QRegExp white("\\s"); QTextBlock endblock = curEditor->document()->findBlock(cursor.position()).next(); cursor.beginEditBlock(); do { cursor.setPosition(block.position()); if (block.length() > 2) { cursor.movePosition(QTextCursor::Right,QTextCursor::KeepAnchor,2); if (white.indexIn(cursor.selectedText()) == 0) { cursor.removeSelectedText(); } } block = block.next(); } while (block.isValid() && block != endblock); cursor.endEditBlock(); } void MainWindow::on_actionShift_right_triggered() { QTextCursor cursor = curEditor->textCursor(); QTextBlock block = curEditor->document()->findBlock(cursor.anchor()); QTextBlock endblock = curEditor->document()->findBlock(cursor.position()).next(); cursor.beginEditBlock(); do { cursor.setPosition(block.position()); cursor.insertText(" "); block = block.next(); } while (block.isValid() && block != endblock); cursor.endEditBlock(); } void MainWindow::on_actionHelp_triggered() { IDE::instance()->help(); } void MainWindow::on_actionNew_project_triggered() { MainWindow* mw = new MainWindow; QPoint p = pos(); mw->move(p.x()+20, p.y()+20); mw->show(); } bool MainWindow::isEmptyProject(void) { if (ui->tabWidget->count() == 1) { return project.isUndefined(); } if (ui->tabWidget->count() != 2) return false; CodeEditor* ce = static_cast(ui->tabWidget->widget(0)==ui->configuration ? ui->tabWidget->widget(1) : ui->tabWidget->widget(0)); return ce->filepath == "" && !ce->document()->isModified() && !project.isModified(); } void MainWindow::openProject(const QString& fileName) { if (!fileName.isEmpty()) { IDE::PMap& pmap = IDE::instance()->projects; IDE::PMap::iterator it = pmap.find(fileName); if (it==pmap.end()) { if (isEmptyProject()) { int closeTab = ui->tabWidget->count()==2 ? (ui->tabWidget->widget(0)==ui->configuration ? 1 : 0) : -1; loadProject(fileName); if (closeTab > 0 && ui->tabWidget->count()>1) { CodeEditor* ce = static_cast(ui->tabWidget->widget(closeTab)); if (ce->filepath == "") tabCloseRequest(closeTab); } } else { MainWindow* mw = new MainWindow(fileName); QPoint p = pos(); mw->move(p.x()+20, p.y()+20); mw->show(); } } else { it.value()->raise(); it.value()->activateWindow(); } } } void MainWindow::updateRecentProjects(const QString& p) { if (!p.isEmpty()) { IDE::instance()->recentProjects.removeAll(p); IDE::instance()->recentProjects.insert(0,p); while (IDE::instance()->recentProjects.size() > 7) IDE::instance()->recentProjects.pop_back(); } ui->menuRecent_Projects->clear(); for (int i=0; irecentProjects.size(); i++) { ui->menuRecent_Projects->addAction(IDE::instance()->recentProjects[i]); } ui->menuRecent_Projects->addSeparator(); ui->menuRecent_Projects->addAction("Clear Menu"); } void MainWindow::updateRecentFiles(const QString& p) { if (!p.isEmpty()) { IDE::instance()->recentFiles.removeAll(p); IDE::instance()->recentFiles.insert(0,p); while (IDE::instance()->recentFiles.size() > 7) IDE::instance()->recentFiles.pop_back(); } ui->menuRecent_Files->clear(); for (int i=0; irecentFiles.size(); i++) { ui->menuRecent_Files->addAction(IDE::instance()->recentFiles[i]); } ui->menuRecent_Files->addSeparator(); ui->menuRecent_Files->addAction("Clear Menu"); } void MainWindow::recentFileMenuAction(QAction* a) { if (a->text()=="Clear Menu") { IDE::instance()->recentFiles.clear(); updateRecentFiles(""); } else { openFile(a->text()); } } void MainWindow::recentProjectMenuAction(QAction* a) { if (a->text()=="Clear Menu") { IDE::instance()->recentProjects.clear(); updateRecentProjects(""); } else { openProject(a->text()); } } void MainWindow::saveProject(const QString& f) { QString filepath = f; if (filepath.isEmpty()) { filepath = QFileDialog::getSaveFileName(this,"Save project",getLastPath(),"MiniZinc projects (*.mzp)"); if (!filepath.isNull()) { setLastPath(QFileInfo(filepath).absolutePath()+fileDialogSuffix); } } if (!filepath.isEmpty()) { if (projectPath != filepath && IDE::instance()->projects.contains(filepath)) { QMessageBox::warning(this,"MiniZinc IDE","Cannot overwrite existing open project.", QMessageBox::Ok); return; } QFile file(filepath); if (file.open(QFile::WriteOnly | QFile::Text)) { if (projectPath != filepath) { IDE::instance()->projects.remove(projectPath); IDE::instance()->projects.insert(filepath,this); project.setRoot(ui->projectView, projectSort, filepath); projectPath = filepath; } updateRecentProjects(projectPath); tabChange(ui->tabWidget->currentIndex()); QDataStream out(&file); out << (quint32)0xD539EA12; out << (quint32)103; out.setVersion(QDataStream::Qt_5_0); QStringList openFiles; QDir projectDir = QFileInfo(filepath).absoluteDir(); for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i)!=ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); if (!ce->filepath.isEmpty()) openFiles << projectDir.relativeFilePath(ce->filepath); } } out << openFiles; out << QString(""); // Used to be additional include path out << (qint32)project.currentDataFileIndex(); out << project.haveExtraArgs(); out << project.extraArgs(); out << project.haveExtraMzn2FznArgs(); out << project.extraMzn2FznArgs(); out << project.mzn2fznVerbose(); out << project.mzn2fznOptimize(); out << project.currentSolver(); out << (qint32)project.n_solutions(); out << project.printAll(); out << project.printStats(); out << project.haveSolverFlags(); out << project.solverFlags(); out << (qint32)project.n_threads(); out << project.haveSeed(); out << project.seed(); out << false; // used to be whether time limit is checked out << (qint32)project.timeLimit(); out << project.solverVerbose(); out << (qint32)ui->tabWidget->currentIndex(); QStringList projectFilesRelPath; QStringList projectFiles = project.files(); for (QList::const_iterator it = projectFiles.begin(); it != projectFiles.end(); ++it) { projectFilesRelPath << projectDir.relativeFilePath(*it); } out << projectFilesRelPath; out << project.defaultBehaviour(); project.setModified(false, true); } else { QMessageBox::warning(this,"MiniZinc IDE","Could not save project"); } } } void MainWindow::loadProject(const QString& filepath) { QFile pfile(filepath); pfile.open(QIODevice::ReadOnly); QDataStream in(&pfile); quint32 magic; in >> magic; if (magic != 0xD539EA12) { QMessageBox::warning(this, "MiniZinc IDE", "Could not open project file"); close(); return; } quint32 version; in >> version; if (version != 101 && version != 102 && version != 103) { QMessageBox::warning(this, "MiniZinc IDE", "Could not open project file (version mismatch)"); close(); return; } in.setVersion(QDataStream::Qt_5_0); projectPath = filepath; updateRecentProjects(projectPath); project.setRoot(ui->projectView, projectSort, projectPath); QString basePath; if (version==103) { basePath = QFileInfo(filepath).absolutePath()+"/"; } QStringList openFiles; in >> openFiles; QString p_s; qint32 p_i; bool p_b; int dataFileIndex; in >> p_s; // Used to be additional include path in >> dataFileIndex; in >> p_b; project.haveExtraArgs(p_b, true); in >> p_s; project.extraArgs(p_s, true); in >> p_b; project.haveExtraMzn2FznArgs(p_b, true); in >> p_s; project.extraMzn2FznArgs(p_s, true); in >> p_b; project.mzn2fznVerbose(p_b, true); in >> p_b; project.mzn2fznOptimize(p_b, true); in >> p_s; project.currentSolver(p_s, true); in >> p_i; project.n_solutions(p_i, true); in >> p_b; project.printAll(p_b, true); in >> p_b; project.printStats(p_b, true); in >> p_b; project.haveSolverFlags(p_b, true); in >> p_s; project.solverFlags(p_s, true); in >> p_i; project.n_threads(p_i, true); in >> p_b; project.haveSeed(p_b, true); in >> p_s; project.seed(p_s, true); in >> p_b; // used to be whether time limit is checked in >> p_i; project.timeLimit(p_i, true); if (version==102 || version==103) { in >> p_b; project.solverVerbose(p_b, true); in >> p_i; ui->tabWidget->setCurrentIndex(p_i); } QStringList projectFilesRelPath; if (version==103) { in >> projectFilesRelPath; } else { projectFilesRelPath = openFiles; } if (version==103 && !in.atEnd()) { in >> p_b; project.defaultBehaviour(p_b, true); } else { project.defaultBehaviour(project.n_solutions() == 1 && !project.printAll()); } for (int i=0; iprojectView, projectSort, basePath+projectFilesRelPath[i]); } else { QMessageBox::warning(this, "MiniZinc IDE", "Could not find file in project: "+basePath+projectFilesRelPath[i]); } } for (int i=0; iprojects.insert(projectPath, this); tabChange(ui->tabWidget->currentIndex()); if (ui->projectExplorerDockWidget->isHidden()) { on_actionShow_project_explorer_triggered(); } } void MainWindow::on_actionSave_project_triggered() { saveProject(projectPath); } void MainWindow::on_actionSave_project_as_triggered() { saveProject(QString()); } void MainWindow::on_actionClose_project_triggered() { close(); } void MainWindow::on_actionFind_next_triggered() { findDialog->on_b_next_clicked(); } void MainWindow::on_actionFind_previous_triggered() { findDialog->on_b_prev_clicked(); } void MainWindow::on_actionSave_all_triggered() { for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i)!=ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); if (ce->document()->isModified()) saveFile(ce,ce->filepath); } } } void MainWindow::on_action_Un_comment_triggered() { if (curEditor==NULL) return; QTextCursor cursor = curEditor->textCursor(); QTextBlock beginBlock = curEditor->document()->findBlock(cursor.anchor()); QTextBlock endblock = curEditor->document()->findBlock(cursor.position()); if (beginBlock.blockNumber() > endblock.blockNumber()) std::swap(beginBlock,endblock); endblock = endblock.next(); QRegExp comment("^(\\s*%|\\s*$)"); QRegExp comSpace("%\\s"); QRegExp emptyLine("^\\s*$"); QTextBlock block = beginBlock; bool isCommented = true; do { if (comment.indexIn(block.text()) == -1) { isCommented = false; break; } block = block.next(); } while (block.isValid() && block != endblock); block = beginBlock; cursor.beginEditBlock(); do { cursor.setPosition(block.position()); QString t = block.text(); if (isCommented) { int cpos = t.indexOf("%"); if (cpos != -1) { cursor.setPosition(block.position()+cpos); bool haveSpace = (comSpace.indexIn(t,cpos)==cpos); cursor.movePosition(QTextCursor::Right,QTextCursor::KeepAnchor,haveSpace ? 2:1); cursor.removeSelectedText(); } } else { if (emptyLine.indexIn(t)==-1) cursor.insertText("% "); } block = block.next(); } while (block.isValid() && block != endblock); cursor.endEditBlock(); } void MainWindow::on_actionOnly_editor_triggered() { if (!ui->outputDockWidget->isFloating()) ui->outputDockWidget->hide(); } void MainWindow::on_actionSplit_triggered() { if (!ui->outputDockWidget->isFloating()) ui->outputDockWidget->show(); } void MainWindow::on_actionPrevious_tab_triggered() { if (ui->tabWidget->currentIndex() > 0) { ui->tabWidget->setCurrentIndex(ui->tabWidget->currentIndex()-1); } } void MainWindow::on_actionNext_tab_triggered() { if (ui->tabWidget->currentIndex() < ui->tabWidget->count()-1) { ui->tabWidget->setCurrentIndex(ui->tabWidget->currentIndex()+1); } } void MainWindow::on_actionHide_tool_bar_triggered() { if (ui->toolBar->isHidden()) { ui->toolBar->show(); ui->actionHide_tool_bar->setText("Hide tool bar"); } else { ui->toolBar->hide(); ui->actionHide_tool_bar->setText("Show tool bar"); } } void MainWindow::on_actionShow_project_explorer_triggered() { if (ui->projectExplorerDockWidget->isHidden()) { ui->projectExplorerDockWidget->show(); ui->actionShow_project_explorer->setText("Hide project explorer"); } else { ui->projectExplorerDockWidget->hide(); ui->actionShow_project_explorer->setText("Show project explorer"); } } void MainWindow::on_conf_timeLimit_valueChanged(int arg1) { if (arg1==0) { ui->conf_timeLimit_label->setText("seconds (disabled)"); } else { ui->conf_timeLimit_label->setText("seconds"); } } void MainWindow::on_conf_solver_activated(const QString &arg1) { if (arg1=="Add new solver...") { on_actionManage_solvers_triggered(true); } } void MainWindow::onClipboardChanged() { ui->actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty()); } void MainWindow::on_conf_data_file_activated(const QString &arg1) { if (arg1=="Add data file to project...") { int nFiles = ui->conf_data_file->count(); addFileToProject(true); if (nFiles < ui->conf_data_file->count()) { ui->conf_data_file->setCurrentIndex(ui->conf_data_file->count()-2); } } } void MainWindow::on_actionSubmit_to_Coursera_triggered() { courseraSubmission = new CourseraSubmission(this, project.coursera()); connect(courseraSubmission, SIGNAL(finished(int)), this, SLOT(courseraFinished(int))); setEnabled(false); courseraSubmission->show(); } void MainWindow::courseraFinished(int) { courseraSubmission->deleteLater(); setEnabled(true); } bool MainWindow::eventFilter(QObject *obj, QEvent *ev) { if (obj == ui->outputConsole) { if (ev->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(ev); if (keyEvent == QKeySequence::Copy) { ui->outputConsole->copy(); return true; } else if (keyEvent == QKeySequence::Cut) { ui->outputConsole->cut(); return true; } } return false; } else { return QMainWindow::eventFilter(obj,ev); } } void MainWindow::on_actionCheat_Sheet_triggered() { IDE::instance()->cheatSheet->show(); IDE::instance()->cheatSheet->raise(); IDE::instance()->cheatSheet->activateWindow(); } void MainWindow::on_actionDark_mode_toggled(bool enable) { darkMode = enable; QSettings settings; settings.beginGroup("MainWindow"); settings.setValue("darkMode",darkMode); settings.endGroup(); for (int i=0; itabWidget->count(); i++) { if (ui->tabWidget->widget(i) != ui->configuration) { CodeEditor* ce = static_cast(ui->tabWidget->widget(i)); ce->setDarkMode(darkMode); } } static_cast(IDE::instance()->cheatSheet->centralWidget())->setDarkMode(darkMode); } MiniZincIDE-2.0.10/MiniZincIDE/mainwindow.h000066400000000000000000000223361263211763500202370ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "codeeditor.h" #include "solverdialog.h" #include "help.h" #include "paramdialog.h" #include "project.h" #include "htmlwindow.h" #include "courserasubmission.h" namespace Ui { class MainWindow; } class FindDialog; class MainWindow; class QNetworkReply; class QTextStream; class IDEStatistics { public: int errorsShown; int errorsClicked; int modelsRun; QStringList solvers; QVariantMap toVariantMap(void); IDEStatistics(void); void init(QVariant v); QByteArray toJson(void); void resetCounts(void); }; class IDE : public QApplication { Q_OBJECT public: IDE(int& argc, char* argv[]); ~IDE(void); struct Doc; typedef QMap DMap; DMap documents; typedef QMap PMap; PMap projects; QSet mainWindows; QStringList recentFiles; QStringList recentProjects; QSet modifiedFiles; QTimer modifiedTimer; IDEStatistics stats; MainWindow* lastDefaultProject; Help* helpWindow; QMainWindow* cheatSheet; QNetworkAccessManager* networkManager; QNetworkReply* versionCheckReply; #ifdef Q_OS_MAC QMenuBar* defaultMenuBar; #endif QFileSystemWatcher fsWatch; bool hasFile(const QString& path); QPair loadFile(const QString& path, QWidget* parent); void loadLargeFile(const QString& path, QWidget* parent); QTextDocument* addDocument(const QString& path, QTextDocument* doc, CodeEditor* ce); void registerEditor(const QString& path, CodeEditor* ce); void removeEditor(const QString& path, CodeEditor* ce); void renameFile(const QString& oldPath, const QString& newPath); QString appDir(void) const; static IDE* instance(void); QString getLastPath(void); void setLastPath(const QString& path); void setEditorFont(QFont font); protected: bool event(QEvent *); protected slots: void versionCheckFinished(void); void newProject(void); void openFile(void); void fileModified(const QString&); void fileModifiedTimeout(void); void handleFocusChange(QWidget*,QWidget*); public slots: void checkUpdate(void); void help(void); }; class MainWindow : public QMainWindow { Q_OBJECT friend class IDE; public: explicit MainWindow(const QString& project = QString()); explicit MainWindow(const QStringList& files); ~MainWindow(); private: void init(const QString& project); signals: /// emitted when compilation and running of a model has finished void finished(); public slots: void openFile(const QString &path = QString(), bool openAsModified=false); void on_actionStop_triggered(); private slots: void on_actionClose_triggered(); void on_actionOpen_triggered(); void tabCloseRequest(int); void tabChange(int); void on_actionRun_triggered(); void checkArgs(QString filepath); void checkArgsOutput(); void checkArgsFinished(int exitcode); void readOutput(); void pipeOutput(); void procFinished(int, bool showTime=true); void procError(QProcess::ProcessError); void outputProcError(QProcess::ProcessError); void on_actionSave_triggered(); void on_actionQuit_triggered(); void statusTimerEvent(); void on_actionCompile_triggered(); void openCompiledFzn(int); void runCompiledFzn(int); void on_actionSave_as_triggered(); void on_actionClear_output_triggered(); void on_actionBigger_font_triggered(); void on_actionSmaller_font_triggered(); void on_actionAbout_MiniZinc_IDE_triggered(); void errorClicked(const QUrl&); void on_actionDefault_font_size_triggered(); void on_actionManage_solvers_triggered(bool addNew=false); void on_actionFind_triggered(); void on_actionReplace_triggered(); void on_actionSelect_font_triggered(); void on_actionGo_to_line_triggered(); void on_actionShift_left_triggered(); void on_actionShift_right_triggered(); void on_actionHelp_triggered(); void on_actionNew_project_triggered(); void on_actionSave_project_triggered(); void on_actionSave_project_as_triggered(); void on_actionClose_project_triggered(); void on_actionFind_next_triggered(); void on_actionFind_previous_triggered(); void on_actionSave_all_triggered(); void on_action_Un_comment_triggered(); void on_actionOnly_editor_triggered(); void on_actionSplit_triggered(); void on_actionPrevious_tab_triggered(); void on_actionNext_tab_triggered(); void recentFileMenuAction(QAction*); void recentProjectMenuAction(QAction*); void on_actionHide_tool_bar_triggered(); void on_actionShow_project_explorer_triggered(); void activateFileInProject(const QModelIndex&); void onProjectCustomContextMenu(const QPoint&); void onActionProjectOpen_triggered(); void onActionProjectRemove_triggered(); void onActionProjectRename_triggered(); void onActionProjectRunWith_triggered(); void onActionProjectAdd_triggered(); void on_actionNewModel_file_triggered(); void on_actionNewData_file_triggered(); void on_actionSubmit_to_Coursera_triggered(); void fileRenamed(const QString&, const QString&); void on_conf_timeLimit_valueChanged(int arg1); void on_conf_solver_activated(const QString &arg1); void onClipboardChanged(); void on_conf_data_file_activated(const QString &arg1); void showWindowMenu(void); void windowMenuSelected(QAction*); void closeHTMLWindow(void); void on_actionCheat_Sheet_triggered(); void on_actionDark_mode_toggled(bool arg1); void courseraFinished(int); void on_defaultBehaviourButton_toggled(bool checked); protected: virtual void closeEvent(QCloseEvent*); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dropEvent(QDropEvent *); bool eventFilter(QObject *, QEvent *); void openJSONViewer(void); void finishJSONViewer(void); void compileAndRun(const QString& modelPath, const QString& additionalCmdlineParams, const QString& additionalDataFile); public: bool runWithOutput(const QString& modelFile, const QString& dataFile, int timeout, QTextStream& outstream); private: Ui::MainWindow *ui; CodeEditor* curEditor; QString curFilePath; HTMLWindow* curHtmlWindow; MznProcess* process; QString processName; MznProcess* outputProcess; bool processWasStopped; int curJSONHandler; bool inJSONHandler; bool hadNonJSONOutput; QVector JSONOutput; QTimer* timer; QTimer* solverTimeout; int time; QElapsedTimer elapsedTime; QLabel* statusLabel; QFont editorFont; bool darkMode; QVector solvers; QString defaultSolver; QString mznDistribPath; QString getMznDistribPath(void) const; QString currentFznTarget; bool runSolns2Out; QTemporaryDir* tmpDir; QVector cleanupTmpDirs; QVector cleanupProcesses; FindDialog* findDialog; QString projectPath; bool saveBeforeRunning; QString compileErrors; ParamDialog* paramDialog; bool compileOnly; QString mzn2fzn_executable; Project project; QSortFilterProxyModel* projectSort; QMenu* projectContextMenu; QAction* projectOpen; QAction* projectRemove; QAction* projectRename; QAction* projectRunWith; QAction* projectAdd; QString projectSelectedFile; QModelIndex projectSelectedIndex; int newFileCounter; QAction* fakeRunAction; QAction* fakeStopAction; QAction* fakeCompileAction; QAction* minimizeAction; QTextStream* outputBuffer; CourseraSubmission* courseraSubmission; bool processRunning; void createEditor(const QString& path, bool openAsModified, bool isNewFile, bool readOnly=false); QStringList parseConf(bool compileOnly, bool useDataFile); void saveFile(CodeEditor* ce, const QString& filepath); void saveProject(const QString& filepath); void loadProject(const QString& filepath); void setEditorFont(QFont font); void setLastPath(const QString& s); QString getLastPath(void); QString setElapsedTime(); void setupDznMenu(); void checkMznPath(); void updateRecentProjects(const QString& p); void updateRecentFiles(const QString& p); void addFileToProject(bool dznOnly); void updateUiProcessRunning(bool pr); public: void addOutput(const QString& s, bool html=true); void openProject(const QString& fileName); bool isEmptyProject(void); void selectJSONSolution(HTMLPage* source, int n); const Project& getProject(void) { return project; } }; #endif // MAINWINDOW_H MiniZincIDE-2.0.10/MiniZincIDE/mainwindow.ui000077500000000000000000001235571263211763500204370ustar00rootroot00000000000000 MainWindow 0 0 800 982 :/mznide.ico:/mznide.ico 256 256 true 0 0 0 0 0 0 Qt::StrongFocus 0 true true true 0 0 Configuration QFrame::NoFrame Qt::ScrollBarAlwaysOff true 0 0 593 774 0 0 0 0 0 Translation (MiniZinc to FlatZinc) 0 0 Data file: None 0 0 Solving 0 0 Solver: Time limit: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter QAbstractSpinBox::UpDownArrows 3600 seconds (disabled) Qt::Horizontal 40 20 Default behaviour true buttonGroup QFrame::Panel QFrame::Raised 1 true 0 0 300 0 <html><head/><body><p><span style=" font-style:italic;">Optimization problems: print all solutions</span></p></body></html> Qt::RichText false true <html><head/><body><p><span style=" font-style:italic;">Satisfaction problems: print first solution and stop</span></p></body></html> User-defined behavior buttonGroup false QFrame::Panel QFrame::Raised Print all solutions Stop after this many solutions: 10000 1 (not relevant for optimization problems) Qt::Horizontal 40 20 Advanced options false Translation options: Verbose flattening Produce optimized FlatZinc (disable if flattening takes too long) true Additional data: Additional mzn2fzn arguments: Solver options: Number of threads: 1 1 Qt::Horizontal 40 20 Random seed: 0 0 Qt::Horizontal 40 20 Solver flags: Verbose solving Statistics for solving conf_stats conf_solver_verbose label label_7 conf_verbose conf_optimize 0 0 800 22 true &File Recent Files Recent Projects Edit Find MiniZinc View Help Window 0 0 QDockWidget::AllDockWidgetFeatures Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea Output 8 Qt::ScrollBarAsNeeded Qt::ScrollBarAsNeeded false toolBar false 32 32 Qt::ToolButtonTextUnderIcon false TopToolBarArea false false QDockWidget::DockWidgetMovable Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea Project 2 0 0 0 0 Qt::ScrollBarAsNeeded Qt::ScrollBarAsNeeded 10 true true true true false :/icons/images/document-open.png:/icons/images/document-open.png &Open... Ctrl+O false :/icons/images/document-save.png:/icons/images/document-save.png Save Ctrl+S false Save as... Ctrl+Shift+S false Close file Ctrl+W false :/icons/images/edit-undo.png:/icons/images/edit-undo.png Undo Ctrl+Z false :/icons/images/edit-redo.png:/icons/images/edit-redo.png Redo Ctrl+Shift+Z false :/icons/images/edit-cut.png:/icons/images/edit-cut.png Cut Ctrl+X false :/icons/images/edit-copy.png:/icons/images/edit-copy.png Copy false :/icons/images/edit-paste.png:/icons/images/edit-paste.png Paste Ctrl+V false Select All Ctrl+A Go to line... Ctrl+L :/icons/images/media-playback-start.png:/icons/images/media-playback-start.png Run Ctrl+R Quit :/icons/images/media-playback-stop.png:/icons/images/media-playback-stop.png Stop Ctrl+E Compile Ctrl+B Clear output Ctrl+K Bigger font Ctrl++ Smaller font Ctrl+- About MiniZinc IDE Default font size Preferences Replace... Ctrl+Shift+F Select font... Ctrl+T Only editor Ctrl+1 Show output Show output Ctrl+2 :/icons/images/format-indent-less.png:/icons/images/format-indent-less.png Shift selection left Shift left Ctrl+[ false :/icons/images/format-indent-more.png:/icons/images/format-indent-more.png Shift selection right Shift right Ctrl+] false Help... New project Ctrl+Shift+N Save project Save project as... Close project Ctrl+Shift+W :/icons/images/edit-find-replace.png:/icons/images/edit-find-replace.png Find... Ctrl+F false Find next Ctrl+G Find previous Ctrl+Shift+G Save all (Un)comment Ctrl+/ Previous tab Ctrl+{ Next tab Ctrl+} Clear menu Clear menu Hide tool bar :/icons/images/package-x-generic.png:/icons/images/package-x-generic.png Show project explorer false :/icons/images/document-new.png:/icons/images/document-new.png New model New model Ctrl+N false :/icons/images/document-new.png:/icons/images/document-new.png New data New data false :/icons/images/coursera.png:/icons/images/coursera.png Submit to Coursera Ctrl+U Cheat Sheet... true Dark mode OutputDockWidget QDockWidget
outputdockwidget.h
1
MiniZincIDE-2.0.10/MiniZincIDE/minizincide.qrc000066400000000000000000000021351263211763500207160ustar00rootroot00000000000000 images/mznlogo.png images/about.html images/mznicon.png cheat_sheet.mzn mznide.ico images/document-new.png images/document-open.png images/document-save.png images/edit-find-replace.png images/edit-paste.png images/edit-redo.png images/edit-undo.png images/format-indent-less.png images/format-indent-more.png images/media-playback-start.png images/media-playback-stop.png images/process-stop.png images/edit-copy.png images/edit-cut.png images/folder.png images/package-x-generic.png images/coursera.png images/coursera@2x.png MiniZincIDE-2.0.10/MiniZincIDE/mznide-bundled.plist000066400000000000000000000066541263211763500216750ustar00rootroot00000000000000 NSPrincipalClass NSApplication CFBundleIconFile mznide.icns CFBundlePackageType APPL CFBundleGetInfoString Created by Qt/QMake CFBundleExecutable MiniZincIDE CFBundleIdentifier org.minizinc.MiniZincIDE-bundled CFBundleDocumentTypes CFBundleTypeRole Editor CFBundleTypeName MiniZinc Project CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions mzp CFBundleTypeRole Editor CFBundleTypeName FlatZinc instance CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions fzn CFBundleTypeRole Editor CFBundleTypeName MiniZinc Data CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions dzn CFBundleTypeRole Editor CFBundleTypeName MiniZinc model CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions mzn UTExportedTypeDeclarations UTTypeIdentifier org.minizinc.minizinc UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription MiniZinc model UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension mzn UTTypeIdentifier org.minizinc.flatzinc UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription FlatZinc model UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension fzn UTTypeIdentifier org.minizinc.minizinc-data UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription MiniZinc data UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension dzn MiniZincIDE-2.0.10/MiniZincIDE/mznide.icns000066400000000000000000007573701263211763500200730ustar00rootroot00000000000000icnsÞøTOC hic08CXic10¿ãic13CXic09œ™ic12>ic07&6il32Ãl8mkic11 is32rs8mkic14œ™ic08CX‰PNG  IHDR\r¨f AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs  šœ8µIDATxí}€Õõþye; ìR–ÎR¤W+Š- ØPT°`IŒ±Åý5’˜-5ÑD°£(bÆ€?é½Ã.mawÙ…­¯ýÏ7ˉ‚€5°[3Û’kA@BR # `á/Y„¤ F@ÀÂ_².H,Œ€€…?¾d]2 X! |ɺ  e@°0Bþø’uA@@Ê€ `a„,üñ%ë‚€€”AÀÂXøãKÖ!)‚€…°ðÇ—¬ BR # `á/Y„¤ F@ÀÂ_².8UòË«ÔCÿo&ß]}„hQ!Ñžc.ØÒAév'}¼·’Fd9¨°¼’vW%“Ëæ¤f¶bêת•ûœä®¬¤õü^¿,'-*ðшÖD§tH¥ŸºÈææàí6V9p´L¡²¿¥#³§‘£U²%¥é<2geeÑ·ß~ûàÊ•+û2.GùÏz@Y¥@D6Ÿév»=Ïãñ<¬ÖOúrn.ÞcJ8’ª6ýŠ*V|FΜ\Žõ»Ž[öëùb/þÌD ˆ«C20âaùª¹÷“œFY×ßGiƒÏ%÷Á]ü4*FþPˆ`ä– ÐTzQ *á¸ÆÃïÑJ"eÝð`(ð„#z Óò,WB‘, 'H¦Jâ²0B‘þøB‘F\â €@pÂvKH lÐJÀC@ qx™÷tpØUwNÀ¼%$A aŸÄT·“i&Ýi£ë¼½œ¡šÁ$@e•dožJín|ìó^£¤¥W×ùJrA¦€2©Åe:…+8þÚ°­KËdN¹ÒKª}mË\Ôœ ’™@" 6òñì@³ToÎu7UzßÿO3Ú–'ØAÀ¨1eñQëTóÙ¨ œºVùÆ|˜ïv¸‚¬(ööøÏöŠ6U^rø˜ êÌ|G$«±‰l¥)Ték“ µÙ˜¨¸;×¶m[ºêª«èСC4{ö숦õôÓO§ÓN;~øáZ´hQØãîÖ­]vÙe´cÇš3gNØã‹F†@5ca+WÊ´Ù²~Úçž²¶„®X[bUíµ;¼.nèêS|,]ÿàߨÎ8Uðm6ŠEAåïÛ·/L•@oºé&ºà‚ ¨º:ü£–{ž~úi?4wß}7=ûì³þs³FE_}õedd(A¿óÎ;tå•WšMÔóáÃB³`.¯™Í6ÿ®rÚV™œ³íˆýî¼2ïÍ»KmYÊ Ÿ{°÷ç6ƒ¸CÀÚU‰RþÑ"`K&[;fÒû/ ßO_hïÄÌñ÷ßOgœqF­ôÜyçô /ÔºföI×®]i×®]u‚Åõ={öÔ¹nôz;«W¯¦Ô ½xí ðZ€u¼ v†8wîx™/ÒX™×2ÙC?8îøæ°í±ýåÞ,rpóÞ¬†LjTÙè쳿T I91O<‘~ó›ßdâMUUUôè£*¿¡"»ï¾û¨cÇŽJ+žœœLï¾û.-Y²$à+={ö¬s}ðàÁu®™}¡GƒÄu-L:• ¤ä•¸!¬ZµjE/½ô-_¾\yïŠsàÀqKÁ°h0 ã¯}:ë³õ~e³ç•U‡£‰µû”Ž;li¨4÷ >X‚äzӸ袋­±V>ÿüsúî»ï´—jwîÜ™þþ÷¿×º†1~0xï½÷èŽ;î¨õü[o½Uë<'¨˜‡¦Ö­yYéqâçŸVO•ß›o¾™ÐuoŠ<òÈ#þ×¼^/}öÙgÊøß‘æÏŸ¯=MˆãÊÕF¼]š6».ýt»gùªÃŽÑ”Á•=™Çö ;HÅf‰èÓ§OèÏ:ë¬:×´Î>ûlí©rÜ©S§:×Ô <ðÐË(//'ŒË1N·”––Ò˜1chÍš5„ʹvíZ:çœs×µ’—×´ÙäKÿ.zS Päµ°°n¼ñFZºt©6º„8®·€ºªÝ¥™æïvßûÆ&ïSÞd¾’ÆwŽë‰8φzA¥Á0 ˜"(úÒÒÒ¨¢ÉÚRÉ~®¸â ÊÍÍUî<pYí—L:CåG÷¾{÷îŠV>P°ªÂ.н`×@dèþë•þW¿úa&àÈ‘#T\\¬$!ÎC€Zù;pKÿÉNïÃs6û¦Õ´úLPˆÄ-[¶¤~ýúÕIËÉ'ŸL999¬¢bZM/ƒLV¬X¡¿å?¤óß ó¦ä‚ɱcÇÈív+ú ½½‡ÃQkp^|ñE*++ $íܹ3è½D¸á' 嵂êÌ„Ž\ùߨáºkÎfÛ4vûC”Ä]~þ¿Q¢ »QïZåa`ÔDœú÷ïÒÂåt: À·ß~[{Y9FkŠÖ-`8ˆÐ3ÈÌÌT”l• ­#*^ÐR£71oÞ<ý-Ŏ邾ä„9ý™3g*vu>~¡E‹”’’¢Ä_ôF´C¤å¶Ûn#(5¥çÀôã?Ö" '‚M%¦§§S³fÍ”ø ÅP½uÖL›N(¡H…Þ@+H'l&`»ýÅþýûé›o¾Q†QÚçê;‘cºÃ3ä½èE0üþFÄOl¤SKpÚžYaénÏèÿ­ðºü½4¨¹V^šA9)²1FT ƒ´ÑɱÙ µ€2MŒƒõ+zÐ .\X§`…Ò+¨qûŸ8”`l $Æå0¹Õ *–Yl0u©v»Nȳã£Pòûßÿž@¨§žz*mݺµÎ£ú¼ÂÜX ½ª‹/¾X!eôè0|Sõ.ÆÀ<»©‹£üPÂÊ'üAðêÆÊ+¶¸zR3nÖëSJzèü®DË®H§Ámj”CJNë#:pÈ…Æ" o©¡‡¦Y« GAOAuü¯žcì.­V0KÐTÙ¸q£2žô>Ó¦M£}ûö)Ê0ØèEßý×ßoÌù]wÝ¥(è´ï<ñÄÚSCÇèíÀ0) 'óÜsÏQAAÒ+ ¤ÐçõÖ[o­Ôøñãý†[øÃ÷©_xá…ô‡?ü¡ÖóúðjÝ pâ'€Ã>•r_×C¯lu=ÆÚ‡ú{ì×òÒè.DŸ_˜AI¶¤QÈ¥p" WØ¡µÀØtÙ²eþh1·î&æ¿hyUAT¯@2B[? À5h¬?øàú]Zýp@«Wð?Ø„Œ³õ•.??ŸÞÿý&„ü•Ÿ~ú©ÎÍûï¿¿N/cÛ¶mužÓæßI¯«€RÓ—zÁ씄FÅOû¹©¼ÄCŸnuXSd;‘ C eé‡n©:¶°Óü±X2é×'M“¼ßôU5iýúë¯k…¢vûÑrhµÙ ,PžÓ[º @ýtÙÑ£G•iµZ‰â“¤¤¤Z½ý}#ç0ç…6_+f´÷›r¬Ÿ‹Ç%^´¸ëïáºà¡,C§ø  ¤ÊEžjúnŸçjÂ’t¬Oçÿƒ k©ÒCïŒI¡4ôB=4¹ahìµ¢Zý©[½§¶,‹jEµåWßSïéu êõ†þꧯ µ×¶vj8˜F¬¯b¨Ï6öW¿8 ixùå—L½Ïë»Ýú™5€úò «M½lß¾]ÉÔs?œÒ.²SShY‘g<Õ&¡ºbê·ÈF—ôvÒ©íŽ?,ãýº8…ù iz€Ú@·Qkƒ¡ºÄúÆ“h˜µ$€–(y±òpþÑk£a8h6 A5é åææÖz÷ù矸ơÖCM8ÑÚBàu­¾¥ ÁÕzE«Ë©uä?ìcsè­Å¶þª=‹¿P|×v&iCPë¥æ›ô-Œ~ lvïÞ­„ƒq5”ª`ÚwÚJypÕzƒ½{÷ª+¿F V@|‚VRßRêŸ1óü¡‡ªœËåòO•Õº†“¦æS¯‡AÒ`\NñÀù.š³«ª¥›»ö¡†ó¨ïe^ÕÉKý²Ó™6 »ô­8ÆÚªhõè’ÃdTÛ̈́̀V  Ó hâQ`ò«7û1cFEg¬å FD0ÈÒʸqã´§¦û —mý«ì¶äæÁ|}:»€»´3¦•ê{ÐôôJ€ô&Àú\Kè’Ã*OÛ5×ÞG°˜šÓŠQE 6¬H?üðõ¢ƒ’ ÁX,RרiÅb"m¯M½ŽaLŠŠ¿­Ïw»’x"àÖþ…Öþƒ ’ÙZ°5"ÑD@¯ÔW`(ÐÍ×O"Íè),^¼¸Vòõ†*èaÀl8ÔrÙZÄÀ ô"˜× ô"—\r‰âúKß=ǹºÚ Ž´+ µaDêVœXO  *:Ì–a?¡z@êÒ¥‹bF ‹N,.zõÕWÕÇýë'€KÚ¦ç,ÚUÞŽ<\ùµªÕwóÔ /ꮘCõ/½€F£n X^ª]€ iŒ¡åD(TúŠ­êÔäÁ¬$£µ)PïÅê¯ÞeÒ‰é5x2ªOÐ#Š6À$ûü#µk×Ο\ôÐ3€µfR°êPU¨b%"¦vÑë ôýý9ðŠ+ܧW;†A¹TP×yаSŠrØ=˜Tþ H…ý*&ºôZÑW`ÜÓwóÕçÕé?õ¿ú!®ÅÓ0sþFºúPF[ Œ æ~->¬ Õʯ¦Ïÿë_ÿROõû T{šó:”ô†4èI\÷ý/6*:yØ,ôJ.„«Njã€Í{ Å(Úõy¼¯¯p+¦Š~n׃ÍmëŸÅd QuÚ{úwqO?µ¦?Ç3°¾ î×'Zýˆ> ¡ÂÕïè‰YW¾zM?…ˆëð‰¨'£¾£ÿÅ‚$ì“Ðñ×ã$»­‚O*ˆ‡ÇMâ¬!H…ï,rÑ›ÐêuˆÝ|½¶¶úúUlx=m!Å4Öœ«¨²*Àx^u¢¾‹põ• ÷…èš>ý3À#Ъ?5þ†üjÃÔWjÜÓ§A Sûžz-Ðo ç´xkßùç?ÿ©8S ô´ÏavCíroíýúŽýƒÌÛSyÝ#«}¯¬,t¥’âú;À«èõ³½@6ÿÝrI /ô«<,—š‚¼Ýë¶kÃC+Ûq¬4ƒ²ÇXx¨µGå€Áî¡åQ. |¸ÕBA]µj•ò LzÕ…B—b^ÝT\ü¡à©÷µéƒû*(«'*>È‹fô= ¤ct„…)0œÃ6Aï©CØ2€ôð l´•£M›6„iË`VxÚ´é‘_(1 §â‡5øSÓ´A¡ª']„…o—`xÄ_|  ë®NÝ"<$¯Zƒ-}Úp~õÕWÓèÑ£ý6˜-Àj@8[Q1~z§6,ÎcÀA„´(ÅÀqC XRë+ÁÞÃu#ï† WîE`àD?‰’3Õ Ô¾‘wë [îÇ&B±ù]$U‚@DˆÌ‰ ›Äæw‘T A@ "0K$‚@l" ›ßER%D!€ˆÀ,‘±‰€@l~I• „"³D"Ä&B±ù]$U‚@DˆÌ‰ ]xíVòÔYÍS’è^€Oy‘ØCÀáLâÅ6ì,‡ Å©t ”n!€@¨Délñ±mVêa囨æ‡çCÀŸÅ¬|¢ïÚÈž°aT"Æ’÷´–>ê·òËgJÍÛæìØËÁ+¦âÀXØå` 4…¡Åk“&MŠbìÖ‰zË~&€œßV!ê37øvÞ!«ïM·<·ãÞò~9Òºõç—@qÛ¨õ‘…jÁÝ,lj %;رŞjòc5X°ºÌPÍn²*µèÒóoÿÍ«r{¨pÁ JË퇵Ó!˜#2y0#Q𢄠³#²…þ³%ÙÉ]TA>vØûïÓ©Õ9×RÅ®õ5•?[ þŠ®¤8ÂØ6ª.¬ o’@T‡[¶l¡çþñ 5o–Ivg(wÄþâŠÎnwÐýû¨»ëzðáÿ¡X%𦠠’@R«4¥'°ù~Jˆá@T  èÐaú€ýµ·bnI<Íb-ñ‘ƒ}å­^³š^zñ%ke=Ns pqO ‘H ª–ž¦´~Yìy6ÇØ8-' J6Qb7Þ‹/º˜nùÝ­ zGŠ>‰FQ%ÌsÃ;ªúýϹÀÅôþ}ûé¶Ûo\¤“)$ ˆД"Ѹ@0ÝWÐ=NèA—\viã^–§c•â]1(…âßñù¼ Ïe—O4´“M’.QjHÐ|ÐH¢õ/..¦öíÛÓU¼áƒH|#ï$ áò—”ä¤=»vÑÅ—^JØ}W$þˆgˆ`ùCë´ô(µÌ΢k®».‚1KTáF ^I@ Ü%C>¦:wïÜE¿;Ž÷ÏÑÜ‘ÃD@ I@ R%[l™’–J×]/­¤`t<ñFB*!I<ï¿{×n:kÌ:¡gÏÅ*ÑDx"!€•l‹íózèZiý#„xt£‰ˆ@9Í?\}vÆ4lذÄ(QÄñ@B‘()ì[ª¢¼‚®Í$ÐŽ©8b„Â\\`óŸ—ŸGÃON§ŸyF˜c“àcX&!€p—Öþ)>B“§L wL~ #«$U€</‹µÙmìb-Êpe²`Éï^ñ׿;nœÉ¡Kpñ†@,’@T—WU»èàþäv¹ÉÉ&²Ñ–$gg·¢ä”dòxؤ bçîÿ¡Cô»ÛoSˆÎ„ %ˆ8G@%Xq*½ZÇ2…‚ôìÝK±‰wFÑ%özÈÌ̤ҒR***¢”ÔÃ>ùѳ)ä%¿¹ÝºÑÄ+.ób+É7X"¨À é‹_™‰m“ꮪ¢Ë/H•l­Ç`T`ö»7?Ÿî¾çYòkÌ|?VH ªKßõý÷Þ§õë×SÿÈãvJô%¼ä·]»v4ùÚk …‹/ç±MÃ:ƪ€‡o°o(,,T¦9½¼u|¤¥¥ñp*›:vìHmÚ¶á^^oêÕ«W,f%ªiŠà"àf+½Y3gRÛvmÙZwƒ0(Ê¢6û½ù–ßðð¦…Áп¾~Ý:Å£òý=H=#`Z¼|Ù2Z²d -ý¿Ÿ(O*KoÍœEûò÷ÒªÕ«hÖ[oS/Ö¥˜-G¥¹s>¤ùóçÓÆ ùjÁùÊâ¿zô¨ÙG)6ØBµ–°‚¥Š‡Wûöî%Ö[³fQw~÷¬1gÓåW\A]ºt©õ¸O¢IB\âÞ™ýµàVÊ‹Ý ZÿÍìðŠ¿öÚ ­öës?šK/¿ø"mÙ¼Yñ¦Ü§o_Ú²q]~Ùe4磃µßhø´¢‡@:ãoÐ'sçÒ.Þ¨^›;vꤴöŠW8s…æ:©{…()9™Úä´åV÷°|TXTH/¿ð"½7ûm{Ñxºõw¿£Ö­[ëB²Öi´HÀüÉï8ûn?,üÐ½íØ©#€ñé¿ÊÊ*JIN1µõ_³z5]?åZºëŽ;¨äÈÂë ÒÒÓÙ¹H)uãÖÔá°Ó¤‰—Ó¾}ûšŒ¾Zù_æ= .ºp<½ðüóäânü Áƒ•±<î£wTñë‹ïaX=ôy8Ù¢9Mÿïÿhü¯ÆÒÌoÖDÂßWI ’ŽF-O3fLWÖè;L0ròxx÷ÎtÆèÑÔ»Oö¬¬Œþü§i4媫iùòe4pÐ Êa_‚¨-veUuïÞƒ»Ù• IÀç@Säsîæ;ÿzòoO’ƒ÷Ë2t¨2=‹UŒJ¥oJ AÞAÚ.HlȡܳH¦ï€n¼~*yË—#M–&€5kÖÐ’Q—®]¹u3Þú{¸P{¸qý S —Ö÷yǤñc/¤7^{‡¨Šª\ÓÎö“Ê„³cûvº³‘û rwÿöÛn§ßþæ6Z:DÆãq~K?Éhã2ûDPÉúìVÙ¼Vb-ü~!M`oIXß`e‰$ Xšf¾1ƒ|nžºJ6¾-–üÂáÇ©§FÃG orù]ÆÃ‘)W^E÷þþnªª(§AÇRJJ ¹¸Õ%P´ <>›7ŸžyêéPúï}õå—J…ûlÞ<0`€2ÎGïÂìßa€¨04À𳕼jr"ï–„a™•%R$`YÈË˧¯¿^@]ºu%Ëxëïã±mWØ)M\ò{„í}øtý5×КÕk”.x›œª®ªéî7¤2x¸xö™gèK®Ü¡äÏzœnžz£2í9xÈ‚òÎè H¨ør¯’‡/ݺw§-ZÒÕ—O¢5«V5䵄}&$`Yxsút*)-¡ôŒ .üt× /W°ùßË„2bÄ:ë¬Ñ ñø“³ßœI»mÞäi±®tB¯žJelìšt©¡€„ùñ½wý^Ù|DŸíLæÆ¿ÿýoê׿Ÿ¢S@ï!ŠÆÊÊJêй“2ópÍä)”ŸŸ I‹ZÂM–$€â#ÅôÉÇSW®lf´zv.¸Å<–¾êª«UP¾ûæ:ó´ÓéO=J®¼ƒQ¦Ú  kª ?9Üs@7þ¶ßþ®V0›xÊpkø—/]¦†-0‚Š% T³B³K.÷Ì<^ºù¦_+C„XJc¤ÓN°$¼5s6*(PæþÑje—ßéDnMÇNߨ `AWÄsâ»C1VüL€½Ï‰}håÊôÄŸÿ¢¤iÙOK鲋/¦ žY8xPD”|£ÖÃ5=Þœ‡u<úÔ“¯u׊'á"Ë@w1ç|0GѬµùGA„ÇŸû÷ÓDž‡wòqc‚~æqî¨SO£ŸY酞Š©æ¥Ö}ûõc+Çyôâ /Ð÷ÞKÍ›7W¬ðš:UhFºŸxmÆkÿþëEV7æÕ„|6$`Ni‹#¸?úð#Ú¹c»by¦X³H;º«Øå·[·\ºâÊIM )™­ä^ã¿üþ•ôóÏ?+óûf€¢àÙƒ–¬P{õ•WÙßB²Bz @¤;yHMMã¿TzöÏÄC’ÞF³IÀrðþ»ïÖT~X´˜ýæó’ß‹y‹ït6j1"O>ýÛÜ@«¸Û1£’B‰¿ÝX)˜Ê’(º…8©ü*–Hs÷ÝiñâÅôã?ª—-ýk& Xоþê+Zµj%µcãsݨ %%%Ô>§iûüMûËŸiÒÕ“yúk5+Í[¦–Ô¨®#š5ì$&[,€©AÀ,°Ìäé¶ŒfÍê®XkB©‚ 3þŒgÅŸ™»ü>Å=3Î:“Ö­]ÏîÉØ3QÒ–h¯¸¹'ßË–.5´Þ!Ñp1ƒ,C?/[N?.^B;w1<­„Ö_YÛ<Ó´Ö_[8ÿõÊ+¼~¾=íá•xɼ¾ÀòÂ=7ô-ßû­åáÐ`”,CoNƒìì´ãv£‚0víÜMç]pud£³%ƒ“^zù_TZ\BXd†RÐÔ42"Mú?3ôÁÒ‰!L:{ú‰§3Ej#`„,AÛ¶n¥o¿ùŽºææný=æÙ1& çN?ýô§;ヒ¶lÚL0؉A…Çx¼œI ÎHvîØÉ vðïî­ìQŒ¡NG¼bÆ&³E ví2ÅkS,àifšJ±Q²ÌD"@X0µ-g;ó4žN2be‡ ÑúoÛ²…F³Éï‰ýúˆÍ¼K·²;ñ/>ÿœòx(‡5 6+%¨ô0—ÎÏ˧c¥G©s×.4hè`êÔ©³2ûùz¬$Äeû¶íÊ Fn·\ÅcYi†«6ôŒài¤Ó£ç fe/aÂQI ¨Ëñ9Mx8Ì.¿r¹õ7Ãì×ãq+¾î®ã)»HÈ=÷ÝGSyQV‚EC ˆÜÇS…ìð”SN¥±^¨¸ójÓ¦Mä€\³ƒ•·ßy‡¾á—®<ýwëFIW6¤=yyB*(ºß$ {§ ?€§@f‹LÃSaèÚ¢«;ò”Q4‚ׯGBÎ}&qæ™´›[W´Ä‘ÄegOCkÙ„Ï<÷½Á‹•`ð¨ò#]p:š}ý½òïWé‘ÇSœ‡–²×"ÓÒͺ7¯Ž<Êû7ˆG@%Õ³Pës¯¥Šë¾Ð=(Ðæ²_»N]:+»D áÏîØ±2ºnêõxËø£“¯™B‹~ø!bS‚æ`iî¦éö7øç'þ¢¬šlLN¦\w-%¥$ÑCüúؘWƒ> ûEL‹ÂgHhTÀp çÓÉD/“Ð=€wÞ~G™«ÏnÕÊpëØ^öl;tØP:ëì³C£oòÝ1cÆP?¶ëGOé§Àé{ÿݰa#Ýsÿ}ôÌóÏ5ºò«é›ÄËŽÇò2çíÛ¶™2û‚pkH@¬#TŒCýª$àe¾ìþÐ>ÞÒ0ÊÈ\„ñÈG|@9ì‰Ö E*^Qa[ê5nɯ¹…9ï˜sϥü‚©†K0Û€”œ}òot;!5*·Ýy‡RùŸÜ…7CÂ9ÝhFúb) €§´‚¼®À¤™°ð;¹Ü°a½²ÌÖ¨Ù/*AÁAêÃ~÷&L˜•ï{ú™§SFz{/2¶kQ°ÄƒXÜܵÞÄþøö8]=er°Gu½7ï 4tè:t°@YíØ¨—åasàoësvú’° øúoÞÂp×_ëõ÷ï;@']®(ºÌù* eàÀAÊ¢˜bvŽÐiwÒZÞ¸ã¶;ï¤ë§Nm\âêyúä‘£”aE=Éí( °„WŽ-g»ñŽ&˜ýb>6ÊèŠÄI¼d7Z‚^H/vQÂZu³ NGÑ[:çœ1tÿ0=‹½¸€µF{b¦'LLÌiÀ7§ÏPv£Á¾tFÅÁS[ùù{èRÖ†Ã%šÒŸ=÷ºØÑ‡™ÿ~vh’•­Lõ™¶VNÛ¶ÊT¢Yöj¸òk„›\·v--\¸rsM0ûåÖ¿ôH µi݆½ý^kmƒ!tàeÌ))ɦ¶¤^ö$¼—7û|cÖLÅEšÁ$|½ïÜŒm 0}cžx^š0ƒq|1á†Øå×ÍŠ2tk ìý÷°íùø‹.R¶³2žÑ÷Ûó Aå˜Õ @eÜÈsýÚÀ´9\‚4Ã!‰.ØÂ•F«†›P€yú_|E¹ÝŒ›ýbœE/lAxÍÔëb¢|€°Õv%{Í5ªÀûÐm` ?<òpXó—̽–g’©=—°&ØB'Ìb³ß"Þ[cu£ÝLŒ±òìÜsϣμè%¤9¯†ÃºxÅŽ+°Aþvñ>†¿æ-Á@*á;ï5ˆ½E N”›vÂlÎç}òÉñ}þŒÏ•WUW)Ó×]}Ó Ó[¨¸Š¯?ácf«÷±{ðë®ïdlÔ«ìÊ«!H˜Íþâà 3++˜֟~œÁãbìžK’ÊN1 [62:LcÎ9—ÝŽ%ÇRö$-F !ëÑ?œsÜ×?›T0„éE? I·Û˜#‡Ón˜(’^y&¶Høø£¹´}ë6jËóÍFÇ™XººgÏÞ¬ã:yäȘûzèNý×d J@ÑÊÇÜçx‚‚Þ}ç]ešÎhåWÐç5eG²³ÏèÏûG¼4H„–C î àÞ`óç+ØcŽq_ÿv€±wß^ÂvÙcÎ9Çr…A2l=âžfóÔ_vå1ÁìׯÓUE‡ éÊ(,ùµ^Ñ“ÇqM+¸å_¾þ±PÇÃ&­F¤fÉoaùêE¼‹®ˆ `âš°è1§ ›gÀÆþ}ûè’‰M Ï …GòÿÄ-ì`_ôß|ý5ûúïj¸õWÌb •]ƒ®šy?ñ_Œ$ñŠ@ÜÀÌ3y{®2JKKW|Öù5‹~vÓE—^BÍØÔVD° qI…ÜZÏÿtårëoÔ×?Z˜·ÉiË;ýÈÔŸU ¾ä³¸$€Yo¾I‡ØAfó–Æ]~Õ,ŠÙEŽO­[·–r!X ¸#€òò2úh·ԩ³q_ÿ°¨«¨(§ŒÌfbøc©b/™Uˆ;øàý÷i׮݊åŸá%¿<{°k'–üžËÉ\ù,ƒ@\L}?x—}ýçä¶ùÇ®æ%¿Ð\%±–)Q’ѸB ®à«/¾d×Õk”Í>ŒÚý×8üØM§ó¾{š³uU\}yI¬ Àļ5{µ`_ÿfˆ——üVWUÅä’_3ò'a A nàÿ–üH?ò”FbÔ,ùÍ£Q§œÂ[^ŸÒœäA !ˆxsútÅ׿[M+sÿ%%tïº+"X¸ €M7ÑÂïR×®]Èí1æï‹~öçï¥!C‡ÒùçŸoåo/yâCo¿Õ®jJIM­Ù ÞÀ‡:T@W\y…PäUA 1ˆùÀþèóÏæ+óôØðȨÞp{Ê’_#0Ê» „@ÌÀlÞ駈wÄ…?|£†?Xò»7¹Œ—ü¢7a4¼*’‹"ÓPz´”æ~ø¡âëßå6ÖúCñ‡­µ;uêDWN¾Ú¢Ÿ[²-ÔF ¦ àíÙoSþž_ÿÜ\×Ny#Ïà4d7›ý^|É%”™™©¼ R¬Œ@Ì@µËÅ‹~æ(Î>Ý}ý£¢>¬¸ûºû¾{­ü½%ï‚@-bv{ðO?þ„6óô¶¯2£û_QQAÃGŒ eË–Ñ (¾ÄjAÝtFªØ21œž9z4a¶BD71Kï¾óeeg“‡¬hß±#mà­°=õƘTþa†¢ àuíÖ•¾_¼HÀèG—÷„@LÀ ÒŠå?SŸ¾'š²êH`T²Ž;ÞZ»AÈ6ò! SÒyWã1š¾FfGb²Ÿ9ãéq>¹äDø˜ €ÊÊJš;ç#êØ±“a«¿_²&G‚€ P1Aðõ¿cÇvjÕ¦µ´þõ}1¹/˜ˆ@lÀ{ï)•ߨ³Oq‘ K uXðÕW´nõZjß¡ƒif¿–ør’IAÀ¢N3Ùß¼ýˆ‚@äˆ*,]º”}ý/¡Î]ŒûúºãŽpHsu÷gÙeÖ®*ªryWÙSy›j•½€4½³ÛKO GŸÈáLØGÀGïïfu^×üæ\vyÖ âsPÛtÏúÅG)¿¼þCÐpbäÆäÎuÕ{~8½«“–y—¿±Ûã>êò9 { lp-ÝF;úèË=Õt^—MÄ’ «#àözè•-L™ ±ã@ŠíÇÌTå$(p~XXTEIÞ}¹ÍhÅÚƒ¶“(9Pí?Ž‚»OL,÷1à9ôÔßEJ²•<½®Š ‹¹¬¶åìp?¨¸m¼•¹NiCß$Ù„Y€D? ú*¼”éµÓ€–ÞÉÇÚÿÙæéja£U{]ôüú ~ -$d[.Å7ûË*èOK¹l7çÚ¢î+íY5+¹3lZ§%m¨r;ÈÇu#Þÿ}= cŠƒ2Xû?¦cÆ»éÏUUü8X/P¸žå »~¨¦³s4 uŠô!,×b7ûÜE•..ò-¹Á 5¥‡­ËFvrÌîËz‚G}õÎÆH& ?´ÎLQ2Ù£-ïô•_,ØQ}>es7 ¤òÍj;ù¸Š–N´S.˜U¼B‰xü)ùŠ€¿zhò—U´r?ÇÖŽk¾'TÙä{U^j‘aslcu[ÿ Ã›¨}\?”–º•ºž\MtaÇ# öØÎ'gÛb,mn£C<¦õA}<ÎK#ÚB{ à°~r \ø.†.Î^ýE½¿•Ù §5ÙÎe¾ÒFguõ¾Tâ®8¼¡Ôr4üKdqpÔ9µN"ýà9né| ÂGÃrlKGµ³}÷ã^ÛhÊæwBu—p/ËFذâ¤*é…“½tû D$$Pm¹!jšþEû\të÷´¶ˆÏÛsC†f·‚ Šl•R“½Þ3s’¦•Tú‹€¹$û  s«šCL‹¶ái¾‡‡yo·ß½ Ý!JÂP r V R¥îø¡ŠÞßé£{MèŽÞ€?Š`°ËuA ‰ Lê«§ÖVÓÓëÜ4}—]˜û¶ã¿†ZñUØhboßc­ZV(·“3¡Ì\Òëàl󝨛ªiæ Z §—îø®üoo²=N­ø=°g} '”ïq„äqVÿ6>º¬[2lm£L096¦ƒDR_ør_¨ƒ€JXµMÓöÐç{\ôÙ>.¬•ü ÷L{–†T~Tt6qï”aÛ:wBZ/ž£J·¯½Ô‰>Ž.œ¥êè~I´Ÿ¶”²©“FR¼ÚÇCã¿t/[~È>œZòÍ_8Bód€C¨ |üÏ1FQéAðwHwP¶2ÌàËž„‚5@þåRD°s9òr¶Ÿ­úJÊQÖ¸qárKÍø/‰ùRƒå• ÃΚÿ·Æ8NÖ!iÓ‘jwz«±Þ¬noÜÅ®C sž©l1±—kìòŽTælE TCH@žÿ­u3F—q¬vùhW ŸSôDÃ(…©Æ©(oT܆V~æ Lùa­ïmCSÏìêÜt˜ÉÄÎaذî%ÁÅßX_Âê€]}ü_^•‡6úú=ø“g%÷’h(¸šð”ÃÄÇSŸc9MiSPQ–ÙhBOߟ¦ô¶=Ö9-™-bãáO ؇6ƒN®¶ø{UžºãŒ€z2³žs"­ožR=zêgßðRáÊdäÒ¨WM믿&ç‚@4@·möOnïüKŸlûc|ÜÙbK[ƒ"vî–ëÿló_êö*Ó(§tt,ùßXç¨)tŠù5¼)-úqôä'®@Ùå1¿“»þ—÷ö>Ò3ËþðaX´³X­Hû  &ûuÿ Õ¼h¢œP]Ó-eåÍœ#Njíùž0žgEIÕ`«‹“\‰دŸRÃËmÔÜGGþ1Òqéy¹ŽiùP ZTê%à‚©T,œÚÄ}ŸÍ—÷ÈPÛè‰]éÑ 6’ðã |<X´Åx¶Õéé .«\^Ojé›awÛОÙö Ž·ü1žƒ°%¯A ÆŽ–2î ìgmà)]ìÿq”{Äà,Ï|ªæITfUE›ª‚­¾$¿‚@4PÊ!—I´\¨øÜå?!Í»mr/÷äÓsÜãXùµó —c´Yø³ªø•€ 3#lA…l/ݽµmù¹<ãZÚÎ9æ±ß±¥Ô7¾”¯+šUè:Ðåçý(ãXD0µ«e «w0µÇkY’“mÔ­™gãImíÿ–ã|­ ²Ü•_ä„ůҳ53ñV£ ™ÞøCoà0/NOò-8¿kò‚’jwŸÿÛ综ÄåºhK…c`¥›’<¼¶@ñFV ˆ†à2… •]1Úa”ÓÎîê}Ô9“öf¥Ú?Õ>ù“žiåŸíãq~™7™Š¸Â+(¿"&êHøK?†> ì¦>Y4­MšmZ…ÛÖiÉ!ÛÈÔ?¿ÒÓóh¹mÀ¡j[*›X¸Ùµ‚`/FÓÔ^Ÿ—Z§{“²“í{Z¤øV•Uø¶jŸüS³T×z—Ë^ÂëXª¹GPÌ UjŠRF Ç›Hø )S’A@hR6,HyJâ!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚â!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚â!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚âÿœß5_ªÞIEND®B`‚ic10¿ã‰PNG  IHDR+ƒ AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs%%IR$ð@IDATxì €\EµþOwÏž=BdK@y;‚€ˆˆ,Š"úþŠûòԧ⊂¢²Pû&;B „$$ÉìÝý?_M¾¦¦é™éÛݳöWÉ{oݪSU¿ª{»êÔ–Êçó&#" " " " " " "0¹ ¤'wò”:@å@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI)TD@D@D@D@D@D@D HP™¬$Š€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€*" " " " " " "P¤¨ƒLVE@D@D@D@D@D@D@ •¨RÔA&+‰" " " " " " " €Ê€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ô)ê “•D@e@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI)TD@D@D@D@D@D@D HP™¬$Š€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€*" " " " " " "P¤¨ƒLVE@D@D@D@D@D@D@ •¨RÔA&+‰" " " " " " " €Ê€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ô)ê “•D@e@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI)TD@D@D@D@D@D@D HP™¬$Š€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€*" " " " " " "P¤¨ƒLVE@D@D@D@D@D@D@ •¨RÔA&+‰" " " " " " " €Ê€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ô)ê “•D@e@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI)TD@D@D@D@D@D@D HP™¬$Š€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€*" " " " " " "P¤¨ƒLVE@D@D@D@D@D@D@ •¨RÔA&+‰" " " " " " " €Ê€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ô)ê “•D@e@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI)TD@D@D@D@D@D@D HP™¬$Š€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€*" " " " " " "P¤¨ƒLVE@D@D@D@D@D@D@ •¨RÔA&+‰" " " " " " " €Ê€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ô)ê “•D@e@D@D@D@D@D@D@ꀀuÉJ¢ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€H 2 " " " " " " u@@ €:Èd%QD@D@D@D@D@D@¤P: @d²’(" " " " " " R¨ ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ 2YI†$èHâºr·ù¬Ù².³æŒÙ´&³åí9Ë¥ÓÖÎÛì¶”5æò¶dmÞ¦µä­±Ñlv&eOw§ì±µ9[0-mÙ|ÊšrÝ6Í456ØÊuy{.—³M§g¬¯'ok»{­µ1móZ3¶dÙ,—³t}Öæø}‹¥ì>—½óì”­ìì±gÜÿÎÓ2¶tõZ›ÚÔ`[Ìšjw®ÊYÆã¶óL³5yëð›KïËÙ!›åìeÓS–ëKÛožÊYwOÎÞ·e£]çñ߬%eé|ÎR )Ûį³}y»wMŸù…-šÓf‹Ÿ1{|e§»C£õ6ºŒž´õx\ŸéΚ{·§zÓöDgÎ^>Åì ›flY{ŸåSžÎÆŒåó•³–O‰A Á¿ ½=]v˯jë׬°¶™YÞ¿kce¬©©iî×¾öµÏ<ðÀþE4ÿrˈ€ˆ€ˆ€ˆ€TB åm;š¼7ðü¾Íë[—÷ôô\MûZœ)j dˆ€ˆ€$'óæucs£Í|Éæ¶nå2Ëe³øaH.¨¶>¦¹¸£ý ¶\%MD@D@D@ZÁ~H ² " õF ›Í[Ú{Ýú:Ëù(¨e÷Ülm³æŒµ ÅóaËzË ¥WD@D@D@F‰À¼Z‡£5jMTòD@D` ³¿·Û§Cõšírøa¶ùÂ=}*À*³0hÌFhØÿäµDŠ€ˆ€ˆ€ˆÀ5Ÿ„/€Ê–ˆ€LPôtå,ëJ€8̶X¸—µ?ë ˆ„…@ÆL 0Aè)š" " " " Z@e@D@& ðA›,m»ñ:yÞž¸g±Mµ±ù|€ ”EUD@D@D@D`´ H0ÚÄžˆ€TI (:°”‡ù9oOÞsËxX Ê”É»ˆ€ˆ€ˆ€ˆÀH`$éJ¶ˆ€Œ”Oàê Ÿ¶?ÜCI¹`\, 8B)–Xj h €j Ê¿ˆ€Œ Àš=¾&Àaý v¬Yé±ÁÊ€š0FÙ¢`E@D@D@D`Ü`Üf"&" ð0`Ø`o_JLHð ]‰€ˆÀ„$+°0à;bwŽ˜IR¤E@D@D@D@F€€Ö¨)" £M`À€GfyŸ°Ìט2kŽvíÌPx" " " "0N H0N3FѤš¾E`ØÀ§`- ˜”¢Ü‹€ˆ€ˆ€ˆÀä% )“7o•2:$F¸`à€«|]@, (#" " " "PϤ¨çÜWÚE@&%xM€}$Àf ÷´õaM$W»LÊLW¢D@D@D@D  R”IND@D`¢ˆ•‹Žð-wò…W?ã#´;ÀDËKÅWD@D@D@jE@kÔŠ¤äˆ€ˆÀ8#ÀéaM_æ _pªg9¥èˆ€ˆ€ˆ€ˆÀè`t8+A ÐÑ¿0àÎ> jw€1É*" " " cJ@SÆ¿‘'ÀݲÝfX`ó…{Øú5ZpäÉ+_¤_ù¡Øˆ€ˆÀˆˆ×ØùðÃ] °§µ‡…±;€è*" " " ㌀¦Œ³ QtD@D`¤pM€¦|Úvñ‘0OܳئÎÞØ¯¤@ôGD@D@D@&1)&qæ*i" "PL€#Ìçì²aM)Š)é^D@D@D@&')&g¾*U" "0(Ž»¸“–ù€m¾;@ eD@D@D@D@&%)&e¶*Q" "04‚Ó;ÌR®xò^)†¦¦§" " " "0± hÀ‰нˆ€TL€Ó²½f;…Ýöìß Œ ¨X¬<Š€ˆ€ˆ€ˆ€ŒSRŒÓŒQ´D@D`4P s%¶Übá^Ö¾z冠5`4ò@aˆ€ˆ€ˆ€ˆÀh`´H+§¨ÀH€]ŽxÝ%À3fùÜ8±¢%" " " "P ­P 5ùIF (:Ðà÷5Žô-}Q€'ï¹E N²|VrD@D@D@ꛀõÿJ½ˆ€øÎ€Ö³A °ó‡»}Ê•Z°H" " " "0Á h ÀÏ@E_D@jI (:s–íö5|w€Íîik|Mìè ‰K@#&nÞ)æ" "0"¸&@£OÀ€hø?qÏM6uÖÆ~ ½qÐŒHØ*" " " "0r¤9¶’," –”½]9oúûš¾0 åó®XlSgC  ‘6cqº& @]g¿/" ƒàHôú÷/ h®¸ÙGÌÜ“žˆ€ˆ€ˆ€ˆ€Œ[Z`Üf"&" cO (|M€¾_àˆÃ|‹@¬ °*D,¥5Æ>ƒH@@#À’S¨GT4åÓ¶Ð×È:„•÷Ýj›Ì+L€6›ʈÀhHy Ìûô”ØÀŽöÅÏbwºž×0ÊëñŸƒå핇ã;ÿ»ÉE@ €É•ŸJˆ€ŒÔ±±&@Ú§ìè»Üט¶ÕKîÊ¥šû’e|4@N‹Ž{ šûC»ÒS±&Pü®ÆÄ­øùXÇWá‹Àd% À8ÍÙŒW¶›Ò©þÃ+ÕM^džÝÔ†”mÖš¶lŸßøó¯„u~ŒÓ)Z" €÷µZŸw¶fÍ6;üP»é¶Ù+;¿ûìޔÿœä{'zÿ F îõ¹œÆ£L°¬,;ºéô ³WKå\Ê*‡#NyçWq€C=+v«{êHP¿ª|cТ·çmšW¦§xN´yƒ~n‹÷¢yk½÷¦­ëËíæw-yK5ôäSSšÒ醯Ï6žÿh÷Þ«;úfº]*ŸÎf½NîRdD@D`d øÀ꼯²¾îÔìy³º—öl:ùZlèúHÿ‹©2"0ÚØ‹7 ÐH®Á1ÚñTxµ%@%O&“)Îz•HfâÀ;:˜Bgâ¤B1‰G@ €QÊ3TqLmLÙ¦mÞæuèUfíÝ9{j}Ïn«ºlÁŠž¾Ösîë[ô\:5ï©çz¶[Þa‹Úó Ö—ÎXOW‡WfRö\6eí=. ãqÑÁ‘ë¥(À·Ç+Ø9¯p/qÍã²g-ïß1üdò}R¨€Œ*4üÙÛ7þÕðÕlõÀØðgÀÅþ¸,ÐÎcO€ïkqþß}L˜ü¤¡ümNx†7úg7ûpþTÆïÈîðøšÞ­ÿÝn>ØÑpàÓÏe›–´?¿pu¾ÑÐØï~Â+×YoÙ{cß;þ½VíGÊï{7 yóQÞÕæÆCH»½r0dD@F…¾jYÿì4[Ι¹F|Ÿº7,þ¤ŒŒ.5öG—·BjH9S =ùÚPó±F,Q-öéøáhóÆþ¬–Œµçò¶¾+;eYWæW=•]øôšöýï_g/{¬ÝòÝð€†¾gAÚFïQÃ$ŒdCï¾_ûFÿ×Ý?gª¥üÈù_øÃ¸Whg"#"0š²ùu–Ê´ºŽ2㟠|Ì‚Jr4£ °êŒ† ã@o/ìù'†éÓ§Û^{íe»ï¾»mºé¦†^Åžž[ºt©ÝqÇvà 7ЩaÈ8ähš@ɸ½àðð¸—xóÍ7·<ÐvÚi§PŸ½½½!Ÿo¼ñF[²dI!=x¿jxŒÊEqo?ß9¾ÕV[Ù>ûìc .´–––ð.vvvÚ½÷Þk7ß|³=òÈ#tZ8—* …‡ºHD@ €D¸:½üÞ&oöF;šãÞ;?µÑfßûÔº#ž\•Ýë–çÒ .~$·ëšÎüÜç:|q,,J4mš{hñF¿oªñ#tçCzþýÿ'¿¡W͵ °sE@;4ûƒ.aö+ü$#" £B )|y {Ìç›}F@ÿ7Iýÿ£¿®ill >4öØ knn¶ÿú¯ÿ²w½ë]¶ýöÛ‡Æ}1$(/^l\pýìg? ¸A#%nXûÓýØ ‚ù̼FƒÿÃþ°}ôÑ6{öì’‘{úé§íøƒþùvçw†¼nhh2¤(‰lÄ,ñnâÝCþqšÆË_þrûÄ'>a¯ýëm“M6)öêÕ«íŠ+®°sÎ9Çî¾ûî঩©Éúúú e¡¤GYŠ€”M@ €²Q½àÐ;ö­ÅÛ囸b}¾$Öª¼mÙ˜Ëïüõ{s»YKê“ÿzªkÊ3ÝÞšÏxCßš¼–ì“d§xc½½ønz»üý.$4äÝl8õßÄáVý˜ˆ®E@ÆŠ¾G8`¼Ù}¾hÛÿLE vÐxëêê vJE? ûî»/­Â 4 iÐxxå+_Ž#<ÒN<ñD[¶lYhL°¡I·:=8ïØø‡’çK_úÒ  Æ£?Þ÷¾÷%Áç?ÿyûÞ÷¾ŽPÈŒäu±Òå#ùˆ|òÉa„ÎP1Ùh£ìío»æÛÍ~ùË_¶o~ó›A‘ wu(jz&Éè‹X&¯ÐèϤÊýóÚÒ֑͵Þülß!|<ûŸ7­ê=ôéõS—uxc¿oŠ7ôgôÏ@å8ë=ÿ­ÍaH¿ù‚Ö›µ”/ê—òžŒ\#dD@D@D@Ê!ÀûC9Ä.½ôR›5kVð{ F# hðጞG6(ñü¸ã޳—¾ô¥vÔQGÙ“O>YxVNØr3:Øègh_øÂì´ÓNãmaÔò“SBßÌkØ£‰QsæÌ±ÓO?=( t1*˜7 ÿ3Î8£.ßc¾·x€÷½üTÖ ï¾ñoØÆol§œrŠvzºê H0 Côhanÿ,Ÿ×¿¾·ÇVtµíöÏ•ÝÇþï“ù7ß±ªwÁºvoÔca¾6ÌáÏZ¦o½¤|eâ>ßË„R>—¿ÏWíÇlþ†\ƒåR>´ßWîÏ»fÔ\ #" " "044êØ0Dþ’K. 4 p`Ž1 Üņ*àn·Ýv =à @™±]-äóCþÙøg£±c¾Æ×,pÿ¸GòªU«B~Ó-eã^¦ö7TÎ@ú>ðð‡éÇ5ò ù¿¿¼ÇHLíøÎw¾S(µµ$Š@}øKY_i6µX“‹ù5»š¤£7uÈï]yî1W®ºõ”[²Ÿùû Öuú0ÿæFŸàCû{gúhØËygΧx[ßré¬èó]Ú2¾Š¦'kîÚ×üƒ²@è‡Í9'€Fuçž{na1‚l¢na‡ç8p7J?üpûÔ§>5€-e °Ôͨ`>,Z´È¾úÕ¯†ðÑ› ÃüÅ5Ëþ°ƒ–‰3Ï<3(}‚¥þŒ ä Ö倆ynüÖôÀÁüB¾3/q ÷˜FƒÑX¢”ay)õLv" ¥ ¨ZÄŸ,4ü7iIÙÆ-éiÿ~vý[N¹q͵'ü­óê_?=ïã­óÆ>VnvtMî0ã#Ì?P)Ÿ×ïÛòå7ôêCÖëw—–óý±s }ÖÝä«»R;ü¹cü‘†Gq„¡çv¨ücÈp܈`#g<ç?h`°!Àf›mëà&n|¨Q°ŒÉ6ÜO:é$kkk+4ô™Ç̯áòˆeÓD>ô¡…´ÐnLV'‚1ó þa(? ó/~‹¯ávð÷|'g̘ÄsúÅYFD µB7ðÊz‹½É‡ò¿¤5e³}¸ÿžìyÛ'ïÎÞwÚÍ+ñëGV¸:ãsû§Mõ¡þÖÐèxì×—ÂC4õûüËæÚi|ƒp;àè¿ ~×,„;ÿ°ù/š;”(—À 'œPÒ)<;bc6Ñ09þøãƒSØQ10˜Œb™º9èí=øàƒ °AY°æ‚Gæ5”ÃÔ™Ñ#€ÿ±æ ò!é{…<ÄÁ<<æ˜clÇw,$òðã]‹ ó-¶+çšy‹™8%Á<ÊL"¨T^ᛃº»»ƒLæo¹r+"`V |¶qÌt%¶;e{rýûð¯g¿}ûª¦›>ÏR-YkÉw[gÃŒ|Oa,è“E%Ð7îëéÿð[ óý:½ándD@D@&%Vê1tø²Ë. T›xdÊ äàÝ€b⬳β7¾ñÖÑÑñ¢÷%ÉûSn:FÛY!Ýàý†7¼¡"X¬Y³&DŸyÊ/']pK¿T àûÉïÂÀóÉÀ½r#µ$0éhª7ø·ã–Œ­\—=àÜÛ×÷ÇåéE–ߨ-}@Î? Ýë¬'Àªþ0/ôþ„áV ÿ~>ú+" “›*œ¬øc.ëæ›oÌã’¦=í¯|å+í—¿üeÁk’ÊpÁS /^ýêW‡^QôŒVjvß}÷ÂÖz#]ôÑG­««ëECöË;⇆$rŒë²eËlåÊ•Aì¨ @ÞËŒ äÃã?> päKRSü~=ðÀIE„òÂÆ'ÊvŽÀ=¦ŽLvsÏ=÷Ø?þñ̤ íâ<Ä=9–Ë­¯¯/4ðã¼G¹Ð»Y.A¹Á ¼°²Æàn&ô“9Þë¿ù””]ùxç§þóïÏ^÷ÇåÏ-²oíûVéžvËäÖY®ÅµËM…Vþ„N¯"/" "P9TtQQE…•  ù¥Aå3>h?ØnÙ£¼÷Þ{p–´R=Às•7ØW{—]v Râ8–+~`fΜiÛn»m¹Þ*rÇ|¸å–[ C„Ÿ´AA9È[š»îºËV¬Xnñrãçt§óè¸í¶Û "_˜wË2.—ì-†ó{ï½· _ ,ðýÅ5zþi ŸÇd,3çž{®­[·®â^ö»ï¾›¨‚b­pSæòï8ùÃÛ­·ÞZð æ“‘{!º$0)Þ©o ™”m5¥ÁþµªçŸ¾sý-_½¿÷kËÚ=¹3|[¿Æõ–ê[eÞóßæ†¬+ëAÊ-" "0! BÉJ=Î0Ø“œ†ži_|F¥Gì €ñÒsˆi \ý•츗­8-¥î‘.ôˆî¼óÎášvᦆXÉGãëúë¯/„Eûr‚b¾¢÷?Γ?ýéOÁ;à€»øy9²å¦ö®½öÚšÈ$yÍØÀ§ <øàƒ™I Þ –kœQFhXNx¦ýd8c½’Ë/¿¼2(X”qÞ<òHpÉoiÞ‚ä¿IT<öØcvõÕW1ÙH nD`„¼ð%¡FS,uú³}4ãÌtŸ]¾ô¹SÞyãú^þ`ûîÖÔf©æé–éjô)ü>ô¿mcË6ϱ®ü_ØÏçöç“/Í´),Ñ!ÀF BÃByñvV¬pòŽ=\tÑEöÜsÏøU’Fð†0Lú~!ÿpð;…<\»vmžAn%q+Ñ…Ô)I¥Àg¾µ1e}¹Ùg?d|ÿÍù/-ïl´Æ©­–ÊuúÖ}¾¸_Ê?(}®MÎ¥¬/•µ^ë±\Æí±P€Œˆ€ˆ€8V*±õ\¼U¹pÐÓ̃ ˆ)S¦Ø®»îZ 1Ã)XÖø‚òÆAì·ß~!$6’’TÎ!²àfÇw ç‘üÃtÜqÇöõ¯½âŠ–â40~p ÿ8°ãÍgœQXÍné>¾¦[Gó TÞwß}!`ä-ó‡ù=T>Á Þ? E¿ä’K*z׊ËeÁ“è^$_ô´_pÁ!u|oŠß­¡’?콿ð íöÛo/8G˜Û÷”ÍüäÏùÍBBùWlàîeD@’˜ ¼úh¾o>%cÏtdwûØÍÏÞðã;°´ȸÆÖ§ä±r®Çö÷EÊ?<¾ê¿/ïïqC þ$+:r-" “—+¥èݎר$ÅlÐÀï>ûìSJ2+ÊË_°rŒô0MPh`ñ>'(N;í´à—veFCÎF‰¤XôíøãûÑ#hÚ3a‡÷y »¸¬cÅø·¼å-vçwÂÙ€áûÁB ŽlÀ°ÿ‹/¾8ỿëå"C>P ƒÅ>úhÃÈÒë0-  ˆööv;å”Sìàƒ¶óÎ;/Ì5Žçø#^èÑÄtÏ|æ3vÀ%£’ ¸Ñ?2cKyÍ|fþ ÿMozShD¢‘úïÿûE‘\ºt©]vÙevì±ÇÚa‡fØÇþÙãŒsq¹}‘:³ð†Át‰üàÌ~C ʼ€?0§‚£9 ”Aþ`šGÄâ`‡<Ĉ#<²°~â¢ü‹IéZª#пBJu2FÕwøLùŸ¹mi{¶#¿ÕI·¯ù¿›W7n™Úà#ý§ZÞøI7ôøÍ–ËC¿áóû CÿG5ª LD@D`@e•b “¯µ8°àhVìY‘Ç=”Õ€{ºaC«ÜxÁ=z!×Ûn»í‹¼²qÁ0^ä ¡ÂccŽ×8£qˆcÖ¬Y!m´Qp‡©˜7üÀ†3¾ðW«x%L†œC€=ÂXqyç‡8¶Øb‹°£†Š£L ¯±ÕæúÓ@ü#¯!CæÅÀ… ôk®¹Æn»í¶‚#p­ö¡òáàÀ=ó£†,X`PJ"1×ÿþûï·eË–âÀ |KpÀ¿Œˆ@õ&”_ÏÏ^2-eÿ|¼ë•§ÝÑûë»×´Î5ŸîŸó†>Vö÷%ý}Á?Z„¶‹è£_}1‘¨¬¨¢â‹FƼyój–p6fvÞyçÐXÅ0ö‘6HOl ˜1cF°bZãçå^³"ŽJ9Ì–[n\¼ ²Ya¯¶ù 9šøvà9Ü\aÄ%öW‹¸1>:׆Ë¥çì17ÇP&–£|~1)0Á{…†>Þ‰þð‡Åü<(ㆼy†—ø÷K–,)¬í€û¡ â¿·C¹Õ3á L˜)lüoÜbö÷Ù>~{ïßï^Ý57ÓØeé^Ÿk”‚î u8ö›Œˆ€ˆ€$!ÀJ1üp®~ÿC¹ec½åXˆo4 ÒÃáqû¿jÃFãéa¥£  0‰ l¸ÇöºøMºîºë4×~|d‰b!£B`B(ДoðNýMšRvõãoû￯¸xé:¼0mºeÒ¾ÕK¦qT`)ú!Pëáÿl,ƒà+_ùÊQ‰†:ÃÅv†{î¹gÍ óçÏ74lXàÌk>ÓYD`ì à½ä®üXé}û¼Q D`¤ L€ïògµšýcY牟½©ó’§zÚ,Õ¸c­§¡Õ²ØîOFD@D@jHÃÚGÊ`çÞŽT¨Ècx/ÍÂ… m~ÔH§}%g4þ9 þ±¨^,›œy]I8ò#"02¨¼ûî»í׿þuï*íG&TIƽ ïÿ¹­i»iiç§?{G×ÙkúÚ2-ÍmÖl¾Í÷l`Á¿–\»¥Âw,#" " UØxãÃ"cS« q\¹Þ}÷Ýmë­·®2–C{G¼ãy³X{ VJ‡R û—¾ô¥…!l¸Á€Zñ+×…ˆ@Õð~Â\xá…†Ý3J½ÓU"" ã’À¸U`Ø“ÇnSïùÿõòÎμ­ó«ëó>쿹Dz=ÝÖ›nò5þº-•í³l·8ŽK¼Š”ˆ€ˆÀD$ðÿñ…½íkÕ€…ΉÇÊ×£±ãŽÊýH„GùÈcŒ0 =ŸñÌg•žãJ|]®¼R~`7Ò†á2,œ9ôº’°)/öÆ(¶ç=Ã¥ÿb?´§{<¯&ž”SÉ™aÇ1©,¦¹R9ŒÃ6ÍW&é;E÷Pò„d<þøãöóŸÿ<¤¨VÊAâ).O´/÷\œgÕÊ+7ÜØÃÄ™&¾¦ÝPgº§,¸ÅȬxtVü¬”ûø9üãž|è÷Ý”J'ÓÇ´ÑM±=ŸóÌwîÈŠÏtö©õãVûŸÒdvÃÓ½ïúÆm«/jÏϲ†¶¼õõôZoÆX¯Ç>eYW dÓXÓ¤¯ù©x‰€ˆÀD"0þ|kiñUgÝ WÑ(7]År°@<÷¶\9Iܱâé µœÿÏ8ĕξ¥vxî¹çBãÜZ@xÉpãŒÓPçâ<À= 寚gñÅÁžVÈcáó('Æg0±rlè‘܇§›ñãÊï”»Œ‰f2ª$îðË3­X±"lWÇ- +‘™ÄÂGžà@ZÚÚÚ¬%óiˆyüà?»g N#~–$ž¥ÜB¾¯ˆY–r_lWœwÅt»­Å=åÇß-ØÁÀ|À¦’ïßK†§é¢|ÜÓáÁOÌ÷ŒüÐ=ýÇná"¤ñgya>5Ós*]tÇ3Ü’y å²?— o×ÛÜæ0çÿè“î콨½w†¥šÚ-³~ªå3>ç?ãÌ í}üQòT¥OD@F“@¼¢=+µ²P‘Deð¯x…aªÁÊ•+k!zH˜r°ùæ›7¨üÔ2M ˜{³s/qTæXy£›jϬ¸U"—AV2ÚU¯RþÁ˜¬Q©E¾ÃÀžtæC%ñ Ê \4Ni&ï;#>ŒÜ@6ƒUÌk0ÿµ¶GøLd#mñ}’ðât%ñ·ä‡}êq}òÉ'Û9çœ9IeUêù€…ôŒT%½ÿØâ TæÓ]ˆ@…y¨ÐQ&Ï劄{6Fj·Rá#,TÌÝðéÀ5”Aˆ íén°3*üäÀ†ÂŠY ÜwÜ1”/ä F€ Ü!L4yä[¶l™ýûßÿ¶ûî»ÏÚÛÛ‹pÆÂ0- ŸgÚ'°…ûrý”’ɲnˆÃC=TÊ٨ؽä%/1¬ãƒ|g‡ œéGüqM–XøïÉ'Ÿ,xG™Ás–©Âƒ*/Ãf\†I?µŽK9á–jxòÝsÄ ñ*7-~àrJ¥iúôéöò—¿<Xf³Í6³)S¦„1Ù=ýôÓöè£Ú’%Kìï,ÓS¿$q£Œ±<#¾HC©xã۵馛ÚÌ™3 ;Ù`d^WWWàÅü¬_¿ÞV­ZeÏ?ÿ¼­^½Úžzê©‚’.æMù»ÓÉwtÿî±Î––tC»åz½Ñß0Õ¼p®ɈŒuŽ(|1%°ÑFÙöÛoâÀÊC¹•ír"ËÚo¿ýìŸÿüg9Þ*vƒÞ•‘˜ÿ_*BhlÆ öêÄöI¯Á yÁüHê¿”{TY¹.õ¼Z»âÆÿ‡?üaÃÚ_úÒ—B•á³ò^nx`W`y|Þ{ï½í ƒ ùQ³fÍ*Kì³Ï>7Ýt“ýßÿýŸ-^¼Ø`—4neV†#æ ÓÆs^ƒ“Rå„2Ë•w` 8 4Až–’Df·ˆ3Ãûô§?móæÍ ÞaŸÄ€Ë üBÑsÁDà9ÂI*· º€ Œ7d'Í¿JüDQ¨è2sîܹÞhLžyæ™äÅî<ä†ß.>&4f1 ïë{ìv­­ÞÑ9ŒAøPØA pà 7ØÿøG»çž{‚/ÊFĸ{ÿF ŒCar |Z#[mµUhøƒe)&xG;::lùòåA± E ”š·ÜrK¸_³fMð ·2 ×XÓ5rÈð-›î=ÿ=Û=û»w¬¿óµ¾ù_¦ËZ²mÖ‘j1,ó—I=k½YCªÍÿhë¿‘Ë Iú%€Þô¶ÁÔªR Y¨Ç•GÜCðÕ¯~GÌ`q>ö"|„;R•5¦—÷ÕœYiC =Ùè1C…/I…—iGCþP¹G…q¤ ⃆øg?ûY;úè£Ã=wÜqa>9Uʉi‹cŽ9ÆŽ=öX{Õ«^eX`2©™={v(‹(Ÿüä'íÞ{ï5ÌÿéO8Åò_œa˜7±›Z\£§iÃa0½åÈ&W¸íìì ëR÷ì–#‡£XâFÓ]ŽÿJܰœÆ~1½æÿý¿ÿ¬’òf|QñþÀ\~ùå…‘:´cy ªüÃ8¢,â}EÃ6nä•#2Àï+ò ©Jòp¨°À†q¥»·½ímöùϾ †bí´ÓN á–<éçXN|g(·ðÇpvØa;þøãÃ÷ þ^Âm9ò·Ùf›p~øáö±},(ìð®^vÙeá»XŽœÑrSÌc°p_÷º×Ù›ßüæ ¼,V$æ‡öåß Tàã9Ê΃>h×\sýù϶üãe—ÅrãÎxL¤s¢š?"ÆCÒÞžOeóö凲øË KeZû,—o´.|«ò]áÅéËaŽ~p¤½ ù€up§?" "0 JkàG!àšÁÞ_üâíío{Â^œwÃ¥ îÑ(ÁÐQ4tüãçeÀsö@±1Jž8Ã.n(N:5Ìÿïÿþï°x!ü8À~ó›ß„¹Ü艅”36À˜&Êæ=ÜàšîÐ09á„ ò1² \CyÅòy9˜>€ùæøÀì;ßùŽ}÷»ß-4À_ÄgÈ‚?œqÄé/7>¥ÜAq—^zi˜V‚é qüJù‰íàqAÃóöÛo·÷¾÷½öÄOÄNʾfÚài-ÛsB‡”0cóŸÿùŸ…o9ÇÏ“\#ï~ò“Ÿ¼°,â8Ü‚£Á¼Âwaí²Ë.axv1§xЛûÖ·¾Õ~øá‚}¹dÊ3Ë-üÓ×»í¶›}îsŸ³7¾ñ¸-˜SO=Õº»»í¬³ÎPÎá—ìâß^ãY,½ØxWßùÎw†áì…ü"fÛó:~Îkœq`™#Ž8"häž~úévýõׯ cäyq|À†i75úƒpqÀàŒð©xe¼ñ ¬Þð†7؇>ô!{õ«_ «‚a: .³§»âçø üáøÄ'>Ø Lþìg?+L€_ð`\ã{ðÌÉf)¦ô/ˆ\3À‰òÑâe°Éoξµãì??°f_km³\ºÙ·ùsèèéO¡#Xn(O“/#jU‚D@D@Ê"ÀŠ+*ü‘ÇÜ|Úážîø,é²p ¢ÁÔüùóÃöyPÀÏYŒÃNVì~$VÿåÇ× \™¡­K—. éÄ3rŽÝUz &¨Hc>(Žj ¦z$5H ÊA\âÓŠFŒCï)ƒ)ßÿþ÷ ;æ;ÜA.ÃÀ=*ÍH3zOãÔ£Ž:*(0*™ÚÇaâ ƒ°ðœgô¤}ë[ß " ‰Æúˆ/ â w0Œ'ŸË*ÿ@ÁV½§B®‘QɨˆRa1½¥žÕÊŽü) <(zh°gŽöÃñ]¹öÚkí¯ýkÁùH¦ yˆ^n¼k•¼oŒ$qPÚUkÈiæïÈG?úQ;ñÄCï1Â`Ùf£ð+_ùŠaþ~ô£ÈAYÇs¸Å5ò ÞSæ ÂÀ\~LÿùÈG>æöEào(?ç5ÎLâ€8rÈ!vàÚÙgŸmgœqFáÇ3~FÊ ^4¸FÜÈ”ÏÐàÇH Ä76årÃtÆÏp=˜=ÝÅÏïqïFIáxÏ{Þc_ÿú×íw¿û]ðJ†ù8’ŒB cø§_ýSfúü›_Ë#ïe¯¯'oÐ+üiiïÇÏ{ØN´¦ÙÖØà‹:„ß ¼8pO;¿” °"Rì‹0Ñ òÀJ í*=C+ ¬”@6zèaž+ 'ö‡á·ÖMSKÙ”ŸçÌ™7„Âb:c7Õ^¯[·®ZÁ%Ãÿ‘È3¦×¬(.Z´( ›ÿío[hüã¶ÿ£6äßò–·0ô7 i‡3ó e+·cwÜøçó ¬Ê?q¸¼Æ<å+¯¼2(,(>.ÏLS-óacKÉJLÌ „1•È-?üÎÄqGØozÓ›ÂbŽŒG%Œc?ѱe×úŒòŒÑÕ,î†w¨CžH/ĉv˜6ƒ5/0ÄCÇÁÏÙˆÇ=ËÖL8øàƒC8Ï ®ývØaAá‚ÑXØéàó`QņïÓE ”hØb‘Y„…ô ntSEe{Eyæ÷a#Ê<4¼¯¸â ;pCãŸé€4Òke˜fÊók à;úÃþÐæ»"ÏÌK¤a2šD©ò|óÌ«Íá£ýC“~†ïù·ø‰®—}áÖçÏÍ6úâSÚ,ë*†¾¶±™Œà•&ñGÃ×ÑcHÊï«=³‚AEäA€Ê +L·ÃZ1,4 ×`Zk6ù@V\!cþ”sf”ñ‰eÒ®œ3ÂBþ¡¢Ê4b±½/|á ¡gsˆaX‘Ä5z•GÄÏ`>õ©O…ž(\Ã>.ðwsÀ¯ºêª0ý÷Ç4UšÈ¡<È…L´ÇÈ E:a6óƒñ¤ŒjÏ —rpŸô ß‰pfzÉqnkk+”>o2/7]ô‹EÑð‚©E™,|ÊŽÓ·åæË=ã],g°pcûØãCEvyAYþÕ¯~ePÚÁ°Ìãšï+e l£a)C7º)ŸéC¯?¹Pb?<Çw#iþÑñq€,Ää#0¯yÍk‚ÒŽCëÉϘ.\”ax‹ÜÑóŽo¦_aTÜð»x#-1ËZÄ ò(;þ¾2~˜’ñ—¿ü%¬£‚ðb–µÊ§Z¤£Ö2)Üu-ŽÌ93}”E_oÏŒ¯ÝÕù·åk|uÿÆ.K÷®öõ\SîS&•ñBLÌ€ký¾þë σ#>ÇKì×>â7ܯþ'‡Ãë••Q*½>iy )õJù†/”Ÿ&”á;+ˆfØÂCa98P1½è¢‹ÂÂ<癵2‰¸# Ä÷8£<àŒghÌ wô3ŸùLØÅà¼óÎ Ïñ qŸZr¤¼$²øeº(g¼ž™>2G<ã²…ç|7‡JüÃPÝbë8 y ƒ°Æ…aljö¥ÎÈÿj ¿uŒÃ‘G”tìñG9çpsœá~ŠÃå;K÷˜gº/´‡^løaZW¬îÅ31Z~(ï*€Ÿ$,‚°¢?Lä@6Èæo Ÿc·X|[Â0|2*øòâÀp!„òñ½ ÒÏñ îáq†!«pS£?áQ>ã {„M†§žzªá÷ëƒü`øÖÑžqæþ&ºñ–fù&Û[›Ö¥çµÍmÍØYÿ¶sn|™5yæ &Þ›ÔƒíÐÅžƒµû!)?•#àÒ3ô’ׯõÀj‡ž¾|Îçëô¹’£Ñ ^ÚÐ{}è_wƒõúΡáo>"å/DƒÿèºÕÎ-=6«¹Á¦µ5ÛL_5±%ãóhšr6§Ùå¥ýC⌿–Æi²° ©Òñ@_™œ+Ÿoh¶-9{vJÊNjK[—OÓ­®ª66©cå„•Ä«©³’Pn¬âŠÌP~X›â0 À\DT2*­h -4˜/ÎÊ.ãÈgÅg„G7ä»8ÎÅ~Šïá~,X`ûÑG-vRñ=ó â4V,Ð=VÂñ@/ö7Žûé¼P‰7´*H ÚsŸ›“òQM®ýÏušu»Ö)5ÃWq{×>åûPùj±Ö©9ÛzZŸm=5m»ÎÎØ¶3l®¯’¸7ög´dlšý…Ñ …~·IĪRÆò'"0 ð­Á·ßêF[Ö1ÅÎLuvRï–ŠÎ hâó… &J¾Ç¨L°’Èsä ºaøøš5k •Çèñ°—ˆÒ7tÐû7Q‰+>±PVX‘±œØ]9×[n¹eXw Ê-ÇßDqåV¯¦w²ey¨$Ý"‹ɰŸ7~ûÑ~VÀG^àÀäjËã\‹3”X U¬^IškÉ"ƒü @‚ÁÖh±Â¥œt¢,òËÊÊ•+ög”g v“õŒFïqÇWóäa1E¼¯«V­ óý1"ï*ò|Çcü¶rÊ)¡w»ÖqcYão)ϘnÁÆ?YÐmÍ3¤JqüŽ>úèXÏ…ï#â ¦¯Ê ÇÔ{"@ƒ/ØWA•qF£ïÁëCÛÿçžK^Û2#=Ý+-)ïíÞ A«Fþxõë#‹|$¿ÿɶZ¾Ûêõ}¯W™Ó¾’q:c³¦˜í9'c{n’·ý7ÎÚv33ΩŦ„¡1Øþ•k,Žˆ{œ¡‰÷Q2" "0ªðýÉX§OOJ…}\ü6¬0ñøAç?Æóÿq_Ž TúØ“y°KbÐŒun¼ñÆà7ŽS9rP!)N æ3<³âÂFeã9ݰ÷IÒBÿà°ùæ›Sô¤:ƒÛÕW_mX=½óœóÏ´#±,IŽ|lô bÊüãaž1ó‚2‘Iò$I*q ezø°¿9ã…³Lr|ßàÓKŽ9æ˜äBŠ|°\þò—¿4l5 »8¬"/“êéÄvx8³^‹â}ÅŽ'ßýîw Ê(k`ø;Àw ø;[‹°+‘Áw£–~ÿû߇Q;#Q˜nÄñýï¿}ík_ Ñ/ÆáŽWƒï-ò ßÛ7¿ùÍA¹ó_ÿõ_!º°GþÆi¯é('^‰é ·à`DBžgšì¢÷|ýŠGs‡YS—国‚‘óÆmÏñ[(˜†JΩN/P m–Ëzú:Öxí ×fÎHÙÁ›4Ú›µÙA>UhJÛäSú{õ‘-þêuéÖðuú|¬òX/À´¯‘àc ÂZ ø©ÅAz¸–‘ ¾:>Z),;âkš4æ ôïOÞ:‰GX&*#8PAÁ0IôîVjº»»«Ú« öAP©aÅ Ì+ßsÏ=ƒ(6.qƒkº‹ÃüÑ-¯ÙðŒÝ–sÝ0w}20"»Ë.»Ì–,YzU¹0ÒŠ "ÝÑm9 À~! jäùã ïÃÍ8ùƒáÕµpË-·Œ“MÌh  à€Áh¼ÃI )|ÇYþ0Œ#5hžÑ-í'ãï ¶’DOôŠ+BO=ÒIÕ¤ï$4‰ðÈ|aW‹°F¥g– ƒÇ"žœ¶S‹2€ôÁ@¿S˜ºò­o}+؃ Ë\¸‡?ðA¸Ö ;=ôa¡VØ3OÇaôG)‘ •ê–”8” æø0öëW5îpÖ]öIï¿dÝÞøGÁÀGÓ &bõqfÓÛÏX±?¼ ¸öÃÓ×Û€·÷ô4?mGnÞbûyã÷9èÕßÐØ÷^}àç~ýßýåóÎÃe…õ\^s¯O‘ð—+`òùþÂ?+>zbƒbÀ-òî1AŒdD@D`$¸ß¿5¾˜>Êú:%½yŸÏä&í+›fƒ"w$B9™¬¬!4þ“*P)@¥½@˜zÄG„JB%1ÆvMçœsN¨0Vâ~XÃH ͆Aņ•PT`X 7üÁs²€›‡~Ø–.]jtPI÷±_^3 ܃#¶TìêÂz>“à }L#Îh𢗽«9B¶<—›r0Ç®ËJ(ì`PÆ å Ïa’ÊžFèòù£ý¨aÎ,+û#Ô¤˼…"kLÀðL’ß(7E?XîÞ{ï ÷x†òD¹“¨'ðÞ ÍgŸ}¶µ··ÛùçŸXÄŒ’r cøK†ƒ3åò½å{œ4Œ‘rÅ0¦Dà»…¸VkXÎ( ‹è}ï{ß+l¥ùtSmX#éñG^"¿_äÊÖfÁo!Єæ=ÜNd“Hð`:¹6’pœ¥=Ÿ±ÖË[ó›g×ûðÑÓ¬µ'e=}½¡éËäÓéø?£ ©í½ð94Խўò^}´¼óÞPOa¡?ïËwº÷Þ·6·ÛA šímÛδ×zoÿì4 4×Ýø”ôòÃ&³xýPûÃ"2þq÷_hòoE™RD¬t)"P+¨.ô†õGü …Fÿ†oÑÄT\ðƒŸÄÐ?VØÆÐJ¬´ŒU—“V:°75æì£grY¡*GÜó€?ÌÿÇ–W0±,\fP±a¥æöÛo{#xà dÒo|Ëb|á,Áa2)˜V¦÷wÞy§auñ¿þõ¯aÚ+ûàdF¿ƒásüiârˆg”ËçÃ9o5^ø ~wæ_¹q,,–Ä sfÑÀºë®»s.û À ó¨ Vþ¯ÕŒJBcŒ†y†û¸óùd;#½q:Á#+ hEù¯æ}àûƒ¼ŒÃÀ= žÓM1WºçsÄ“þè–n(‹ö•ž!á¡gûw¿û¡|Tko\£M05f(å„Kò[Ì©XNœÎR\éžîâ0_œù Fã£H`èq`|(o¢)²Ï¡‰šÜ`Ǩ¹¾¨Ý Of_÷‡ÖnoM;b”ËÁá‹â9Ò ‡Ÿ&‚ñú?òÚšá½Ö“ïq¥€ÿà{/~o·ÿˆ÷tØÔ欿`Ž»M³í=×ð óö‘h_%ØçÍ໊ u®eº\ûé=çÙFŸV€aóÉ`ò«+.r©v¯l­ôQë-—nôô´xãßµié;d»ûÕ«7² ÷ÎÚkææ¼ñïöùvËçÚÈ>ß7»¿Ž6‘R­¸Š€ˆ€ðÝ ½ýìË=lî¡ñ]©Áêýè)@pƒ HÜÈ8°BU®,Èaã=ïI•'®8ýãÿ‹†utø‚µnâJQ|nøWž¦M›V»™Œ×H7VÇÂ}0hL Æh´Òϼ`—g„_«¸A& Ïý"3<ðŠßoòƒOlýˆ‘@0pƒ#~ ñ‡î™Ç?ûÙφp]¿>ýéO‡ppÂ(ò-"aÆ×ÌsØá;‚F'ò?I, ”…çPê+‰ó7œ=åBé‹]`ŽZ¤›œ /f…{²Áaò9~S©P»bÃg”ô·ëÖ­ ›b(äãÆ?ÝËœh÷‰«riKz¬È¦­Í·¼üÁµŸ¼jyßî¾Ê’çXÚ{Žüðyc^Lƒ~ž@]Ø®¸°¬/`ØÐd=ͳ¼÷¦/î7Õ¬½ÏþcÓ¼]tÐLûÓ¾Síu~O÷z¡ò!³ÙFë´Ö›™æiõ Õ-§0ÑÊ™â+" ãšÍóçϯ8ŽÏ<óLð›t!4T&âaÚ{ï½÷€ûr#„ ˜ã‰UēĿÙgŸ s†Q‰êìômkË4¨@¡BE“t=ú›hgV1¼[÷Áe¸¥?`¸ ¨TÂ=âÂQ»8Ÿ*ÂáHÈX´hQâ54* {¢û+Φ *Ò°˜¤,±,BÆM7Ýæ-SžÎ `ÝŠeË– ´¥;¾ƒÈ[\ó]ÂoßYF¥øžö•œ!‹ß*š*‘ûá·;˜`ý Ü')³±¬øL¸. ì‹9 ŒøÁ5Ll,Jü,Äg„ƒƒ¿Ã×_½½æ5¯±o~ó›ŸpËtâ ÷ÝF¡—“ßÂ/‰qF6­)eÏwõn~ÁÃ]Ÿ³´ol—÷ÊDW‡õ¥[|%{Ÿ E†çÆ?âæ § ñÌ÷ù†}–oœeÖé… }ÍmÎØÛwn±ï4ݶl†^¥ÓzzÝ}jН’Ý¿ÔÖëÃà\ÚåùÙû’à”[à:Db·jæÝb@Ìǰùæfÿ}+Ӡ‚J* ;ï¼shDaXyƒÊûî»o¨Ø$ñ³øç?ÿièùÇä˜Ú€žr Ò98Ã`kCڕ㢺‰{“>ûÙφ^Ü—¼ä%£žrG¥Ç`†î{^®=ËåÍ›7Ï0ëaÈ$'pÐA…Á{„oØ‚3—#•n¡BJf ¾O<ñ„}ìc3,’8Úy„o·¯³†¼ÏæÏNñQ ]ÖÚô¼}tQ›²ÓT›‚^}_ÐKF8Ò¾îA³/ ˆTº½oßçoEHgUo\&Y‘º!Àöx¸:ì’˜çŸ>T à{n+XL.+d ³Ÿüä'¼-4Š+.~ÁÞôÖW2´“qƒœ¿ÿýïѨ˜Æ†6ãg¬h1=¨„aH(WPŽÝN¦k°ã~?þñíø@Xh é„™Ô"Ý,Ë|àyíÚµöÓŸþÔ.¾øâ0e°ð°`ß—¿üå‚r‡et0÷¥ì†ËçhPЀ ËÎ2/@y`>Âï,vR ©¶¼\tÑEaåéü”u~ï`{ÞyçÙë_ÿúðŽò=à»»{AB²+ÈÂ^cÈß›ûï¿ß¾ÿý'F[•2³fͲN8!,F7gΜ ƒå#Iüøâ ؾ“JïRá–²ƒ?L ‡zhpå/âVü](%+¶ã»§*/ô 9¬´”ò;¬ìŒFwRÊ*QfIS¼Š?ÜÑ-ÝðÌgŒ#*—Ûn»-OÚ3òyÃ'ô€¡FƒÊ"óžg>«äÌò€˜³²](?üðPñE¯Ì`y…J/*íØ¾n 3i¥–~â00‚Efx`Þþö·î<¼„Á]<õÔSA qÞ î£¾žðä{ƒO¯ºêªïŸÑm5„ð]€<¾/”áæù´( âßâ°ðû7Pa¤ü'}W!“ei‚‹µ&1#þ¦}ðƒ ÊÈA™FzV¹²'Æ ~ñ}:ðÀí;ßùNhüC.ÃæïK,;ë:`”œ×^{mp?PXÀàÒpª÷‡òÓ êÍ eZ¶Ù¨5cå³ÝÝ6¾]À¿ÖävºtEÛ+­­Ù|õû0~¾ìÐÆƒC4Ú}{‹îç­Ù¦¸2`¦õu­²¶é°_Ü`ÇnÕ?€¢Ã•Y_å?“`„ÄxHâ " "`¡â)•ô>p ÈÀúøžrãJ íxF凔]wÝ5 gä3TVð<®tñYñóÿ‡ §Ø}ñýßþö· ÿ•Rûá=âWLQÄšõ`vô2Ñüò—¿4Nã@C†yÌûjÏ(0¨(c3†Ã`8.*øxÎò€üà=ÎXì{Îc¸8”Tø'ib…ÁLxoÈ– _F>ÔÊ`åÿåË—Lµ’;Yä€=¤ ù€^x¾+¸fƒ×ÕÊl| 0b «ËŸx≅†?ß=œy ÷ñ{‰‘YX¸öq\‡‹_à'ö‡oB5ÓЀ†Aˆ;Ó›T.Ó¡þÇ|èч N-ÀõPòù¥{LÂ7ñOúSðf4˜Ái§Öɀܸ9ÝMæs"@ÆÃÊ9½#|F«¥®\ºî´öõ^¸Ú0ÿÝÓ/ÀŸ(PÒÝ6ŧ,t¯÷áý}ÏØ›wh¶_¸‰í<ÍGx³ÿ¼/ø×v€ ‰A€ðùÞûϡ˕T^V­Ze˜sMƒÊ7¦Ć•›Ø.¾F\Ø€Df¿ýö Vq=Tü°;v¨Æ`åðØ`n$_ŠM\,¶gñÜf›mb'“ò<¨œa>£×îW¿úUH/žÓ~0vIÀ@VÜøÒ—¾dØÓO`F! ߨ\£œ1>8£ç½‹ô.ÊüÃxÄÎk‘¾XÞd¾æ÷½ÿPÔÂ@yÉ%—Dá=dÙ+XÖù˜ð}eyEOñ}÷ÝÈÐÜx] 2æ3d Þô¦7ö—‡¡|ºAÜ`‡÷»T<¡XÄHú BÊüy0ô‹{þæ”)"8c\qóÖ·¾5¬[ƒkÈÃ3üîÀ¾ƒ8á¸÷Þ{ƒ2 ßOÚa!Ë8L¦£X.„.|‰k([Ž9昂~0½îU¯zUý„{ä3ŽÁäÂÍd4‰Z¬]ÝyîèôzB[6o]Ò³ÿåKì(˯·†Þ._õßGxfxÇ? ñ8nˆk·õ¯Ï¶ú>~ÏÙGwJÙ%ûβM|¾67Õú|JCkOŸMéið‚Ój=a¨ÿ8Nž¢&" "ð"˜«ÎžKT’šÇ{ìE).¤Y¨X W¹@¸qzòiPùÁs´/>/X°`@ûpaûGcðÆo Öä€!§è)Nbè~°a=4@fæ3ÓF+®8ó: ËRn!Ÿaœyæ™öÅ/~18cE7|NÿqÜT–™/—^ziXì‘nË=C&‰ËY±²¨\YõæŽÌ0¿û=ïyOÍ’"Q0Ìóš ŸD‚ØàcÆ:%þóŸG$…xG”ÄÇ{laÚMô‹0JÅaá@Øxÿ€3¾I˜¦pÍ5רç?ÿù°[§\)å×Ó9‘`®OîØÂÛÊs¦¤R¿]Þûùçž÷íGü>åÃúRÞûï7>W¼¼7?cXįÍ|Ù¾tsþ}Áóaù5vÖžÙ7ml->Ô?õ ò>”?~^ØÌWü›šOÙ´q­ÜŸä+kغŒÛ %©´0Þè%/6hH³'‚φ’J */4»í¶›q+9TzØ»Áç¥ÎðSΜNV– #ŽÓwÞi?üðÑÍÀU—é¶TŒ²X ¤[¬^a¢0ƒù 'ð¤iÙ×HÎâÅ‹íŽ;î²J)‘+®/¸àûÜç>‡Ë~±;Æ%ŽÇ{é àA¯bRÇ¥”ßáž—òSv̤C”±i5†ùˆQX€’†áÄå‚Ïêý 6ÅåCìɲ>ÙàŽßuØašß34c<`ÇÆ*¦ia‡¤†áÄé¦]9²à6v%õ^{íUðŠø1ŽñoYÁÁ†‹˜M,JŠ]h0:!æ{¸ýÐ-ŸÁåã÷—nŸ|òÉ ¬À0Œ'®F%#!àw"›D €'žËÛPÇÒµy[Ûžµ>mÿñçùƒ­Ñ iëõÆ*ÕìG¢àF‘«([Æû/๾Nkô –õøf×ÚwmµÏìØâ‰zw‡vÆŸãÀš´äš4÷)#" "0†Š·XJ•Róý1ÿCJ! Tê3qÅ nxo>Ö€Á3TXX™ –%þpÀÛáÜ".Ånn½õÖ‚^ W†[Òn°3ã¹”½é¦›Úüùó ^Tã Xáá¾@%’†×’Ï=÷k¤i/Îgúì̆yÒ?æúcsØ‘'ÂŽùÓÜášqÃ}lŠw{ˆŸ vÍüŽŸUñÝÕó5ó¬0ü¿ç1ËNãÉp*‘?ÙýÄß?r™ìSÚ'aQüç{yê©§Úïÿû ùÎ÷q^²Ñ‡ÉxP6ÞÕbEmì~¨k–ºì{Àçññ``éfñûδâÂ) ö0LOÿ]ÿ_L=Ãjÿ41ºç™nÊ9Ç~b…<ÓÍ3dÅ×åÈžènB³µÜDLmNÙPÇÌÖ”ÏýÏØµK;>¶v•ïÓ8¥Õ{ɽ¥ÜíÛBôúÜ /<ãÒx»=×ëÛD n–Zç›d<Ê®´È?g_ةž¸ÐWÉD·¶×›ÿàîÆiRÆ%_EJD@Æ1j÷.ÇŦ˷Šeƒš•ɸ‚Tì¾Ôý>ûì¬Y1‰+EÅî§OŸöv‡=ÜÃí`0VÎP™£øÒ¢”I²Br©4n¿ýöA,ã4T:J…?‘íîºë®BôÁiOb˜WðÃr€!²ØfeŒù‡çñ5JIäËí‹ rÈ!¶ÿþû‡|g_ìjp¼¿h0ò;ÿüów¬'Ã@/qܰ®ä;…wùÁóï~÷;ûÊW¾ÂÇs~‡Päåƒï7òÓÎÆÒ .Ø®¶CFàÃ4}ûÛß#Íp#éw²’xÔ»ŸD €iÓ}˜û Çt·Ÿ7+eÏfm–ÿ·µzy¦Ùr=Yà]ä9êâ…Ösvü1÷áû錿\™õ–Å*‡MÓýèµ/îØd§yã?…aÿ}Öî£Öù8è4´«ßøËFÅHD@’Àâ[l Â/+$åÊéèèÐkûÃPMô”°BH»áÎèÑçŠÆp;”¬¶¿ãŽ;‘HÃPnQ¹bå‹-T|o¹å–‚Ú•MV΂£AþPn\‰[´hÑו4v˜@7XmšLc®´ê žôDz‰aÿY€g(WxŽFARÙq¸˜ÆBCl¯ë‘#ðÎw¾³ðž–ónÅ1{ä?ì<2RsØãp'ûõý÷ß_HbÒùÉO†÷Ïð޲1»ƒÛáLü~Bîh›˜Fv×ˉOüígzðä6Œ,ÓIÙ”¶Ü $HÐá#܆:|ÀúŠå½¿|l·›ÛÌz|îKÖ‡û55Z¾Í•Mnï…ü×6…¨yã¿Ë矲wmÛd_Üi¦GµÃa[­7í#ùñ˜ÄKFD@D  ÿßzë­ ~’V<0d=G0q ÷èQç6z¨Ø°Âƒgå˜]vÙÅ8=ÀÁüí¾ûî…Š'âá`†•°8­‚Éá¯Å I*“G{ÈÅý·ùJåmÓÖÔŒ¿®ì~¯§g©œ7üÓ>W>íCë{º-×à~±.¦Ñ‹A ¼Œþ{™Ïy…%ë þå¼ç¿c­½ååvÞ®>ì Éùž†XðÏ惡’ ãÿêU‰È¹{qGÃÿÑxªÔ`‘¼¸áŒŠ+0¨ø¡aý†7¼!Tø’6z§L™†Y¢·—•GÆ•'V¤`Çùÿ»øýðÌ^ãX&Wÿ‡V6ÙÀdúè°3ÂKÈ…_¦[,bжdŠã<˜œÉd4cŶ¶¶B#¾Üô'òÌp†œxÅ<ÇÁ¢ÓGøþ¹]í¶ÏKZìÛ{Ï´é ~ïn-åCÿÆ"Ú¨"†Ï­+dD@D@&>vØ¡ˆ¸‚S°Üp +_ñ3ô\°7†žÑ0cÚv±ßr®÷Øc’ÎbyPb¼â¯î`c¸ÊÝÁ*“Å‹‡Å/ôb—J{qÄb™q¥ÃE9=ry.–1Ùî±Âþ²eË ÉJšn0¥Ÿ_üâ…|‚T ‘7T:*ã‚ré” Þë\=ä_ÜX‡DŒê9þøãƒp丗ó~ű‰e^|ñÅá¿s±[]—O x ò/‰‰óàœsÎ)ü6Ä2×Åï^ü¼Ô5üÄedíÚµ¥œš¶w…Išú¡¿|°0õ v´ÂõgD $êöØcFé–oÆß9Mi»jiöCÝ.Ò;ͱhžÏª÷³_»Ö*ÏÜ17D£!Ýk Öõ±u£ÐøŸ3¥ÝÎÞsžmäÉÌú†ˆ?¶Lû¢€“ì[Pð¦ ñG[Ò òWàhŸá&®¢›ø9®±²4*n?‹ý”º¦[ ÆÖ~èýe¸xW±óÆoÄ ÿRa¡ñ¡‡*<‚üØ`Ë)4b·Øb‹`͸ÅnâkÆ“vXÇ`Ûm·-4^a_ÝN¶3zÕãÕ§+IˆPÂ\tÑEÁ;ø‚_-—§•Ä[~ú 0¿ÈÛÁÍš5+ÜBƒ÷£ø¡ÛÁÎÌ/,ÞÅLmtvz‡ ¿[Ȥy‚ð[íµ×ÚoûÛÚDª„”±­.Õ,œÿFAñ\üã=Ï%’/«H4`iWÞJ+¼Óÿ®µÝ/ûý“öakð¹ÿyˆEK™G bZ3'¢˜Êøü™ôzËe\aÑí_×Z|m™öŠ9‚sõ@¸H'ÔþÕ,š$" "0¢0Äžsì‡ •–RB,žFƒ Vr°×I*4 Ρ‡])þǃ×CÆu×]gÝݘŸWÚ`@¦³Tø¥} ´elë©§å šô²gC“¹C¥y00Gt7˜W|×6Úh£Bï?ò–e#Vè•/ÊûùÏn܆”a•ã_nJÀ(*1àÏ|¹þúëÃèþT"o(?#%w¨0ùlæÌ™ÒË4óy’3GÈ%ñ#·µ!HÐë?d¥ŽLcÚ?Ÿzí}]M>ÖÉؘ#ÿµ‰dM¥ cÃg"d³}ž«¯U`kž¶wÎOÛ;·öùXùœuùt¾Ó»0u!¢šFUÂD@D@FŽÀüùóm³Í6ÀP•hVvâÊú#l‹ùÿS¦¨2[ÎYþl;^zþ1¿|5©ŸÖ!Mm’ˆëüzHÒ¡sÃ='ºì_Z—(”nùÔaýrÞAÀË…-…JDíÀ@ƒ°N  @ÝÈ—n “ñ jþ ÛÐøÜ0Ö0Âù§žzJ~÷»ßåz)øxÁ‚n9@ `‚ ŽÍú?öýó8¶|bßw~Þ|ëÿ¾ŸÜ}y,¤3Zܹáì ,‡ôƒ†·xm Á‚ÕÙÕÎ]€º2¡ü³Ÿýl6ãýçû¹Ï¯y¶z·-Îßpà ٩;çߎÛàP_V¶-4?¬_Wþ~¡q…ÙŸ_0 ú>²ð½½½YÛ3öŒ„¹Üõ–·@ÒíÖ]’û{qç ¼ð~ïǤsfôçæÏë°€°öšëà„”Z\MëÐþC:ãò÷Gwi^5¿˜¾@G$@$а.½?À m;¶­5rü†Ê[o½•5Àeþl ÿçî¹ç»TðÖo€žxâ‰Ùp–ÌÅ4ûÙ‹ìX¼XYàñÇ/ „È›o¾™5Ž5£ñ"ò—\Ï/¯“@=°gõ¤“N’uëÖU$ÄŸ/l]tÑEN!d=Öx&‹}.‹Ê5,‰Þgö]Äh0@íRÁM8~VFmyíÔÃ×÷ ÉÛ÷ :Ÿ>Kê ÚN¨¡£C¯¾NÔ€|éˆVYܪ‡)Í·æ™ýa¬0æ‰H€JCÀ_4¦1ý°Ã+8b4Z¬‘m Åfì)_D~C©;oiùv,­åË—ËQGe‡·/¼ðBÁ#0ÚkOOÄÝ!‡’Í£Ï&{’;$P§.¼ðB·ÜŠç?×…×^n¿ývÁÏâÂû ï ü°OGa%àßû˜g6üû;¬y¯·|Ъããí×¢ûS›â²g(þ¾5ØÚ%“tø4)µªŸˆ@¯Rãy:\Eöôɱ ùSX0ÄÿÄ */¡¨·û€å! † ` Xâ¶¹ó…ÜzàL(‡ P‡å±fw‡¼ZƒÂþ¢E‹F?î¸ã²ÃUG\(ðÃÿ µxÞ¬hgå/0™¬7(‚ØAÈä Ô0é<ÿüó³%°wPöÄ8;xï`µs?þñ³J{?Ø5nI Và[àÛJ¨•|×K>I½/íN‰ý^îNét€´<øÆà©’lÇôy‰§‡¤ ËæéúPÉÿ®× ý êO üýíÒN™ªYÕU2¨¶ •áz¹½X ë³Æ·?ÝÎ!§c ·¾?ø5 ÆØÏçlž/®A€.t¾½Åe cÊÂ)§œb—ÜÊáróåNðïþûï/ÀWÆ „,;6%†Ù˜H< KµDà‹_ü¢´··ï7‚¨2àÙö…|,)Šùÿpx¿˜ž Éý€ëi~FÛúa±* ¦±ÑU‡@ @S³Z¢þµ´¨á‡æHëÃ=©E2¤Bu"!I÷ŸÔUtá ´¢ªS"/Õ¨öêG¢:´ÅlÖÑ :Þ¿OdõÌnYw°Î_ÐÎÿAU $Ðû¯SèH€H€ê€ Ò~ã#Èð#â7ÄqΖƳëþÖäØZº÷Ýw_Ö Î#>[Ú-{!gÇoÔüñÙ«sæÌ‘c=ÖÛ0ÊìÅv°zÁ³Ï>ë|Zþò³k)dă—qƒ!@[>Ê¿Î}¨uxNðžÁÏwX/ýãÿ¸*° î¿~ö³ŸeGíàÝQ̳?"3< €pßÙ=‰ûÞ¾…Dƒp¿ G!éÐÏøF¾©Æñ«øøÅôסsüßÛ—šÿâ¾ØRL©‡ÌŸŠ +Òz—PÅ„NìOë´„hD ÿáÅ’ÏÞ,“`£`ùÔ¥Ÿô†„ýB:  ú#à7:P:4Ò!@›+´ñá7vÐO †à‹´M(€Ì£‡Ãy[âÍòáoí:¶æ ðc$”°cgñ»ƒÿ=ôÐCÙ5Äý<æ÷ÙŒWÞܰvìÇq衇ºÓ~¹Ì·$P«pÛ=í?çž{®{Níü™B¬²Â¿õòCáxÍ5׸`þ3eñXvÌ- ”ƒŒÇÚw,hü¸Gí>Å7ئáÙ¹ ñÑñ)–ÍJ~Gëï#3Ò²o¨ïˆ݃ªÐh\:*ØqÅçª!5 iU¤S:"¡%%MhD%Þ“#çÉú:ä˦zUw‘’xò[Š23  ýø\ÄüÿÜùôûÊs {kxcH|¡±5ø·nÝ*0¼‡¸0¯×r“DZþuL[°‘ 'œp‚ó޲ù~rãíøÞ{ïqi´˜~¼)#"ôŒN³jwI ”LÙç¿k&Mš$ñ1"¿¸nýˆ cØóóÓŸþTüå8ÇÂK$P6øöa8ÿûPH‚¸—í~Fïÿüùó F?e H°k("øíND¤[Íæ=¶[þ‡ —=P,e(E¾(ÝKVWIUÄÓ2”Pß.¹`aTfB?‘èiÒQ3ÕRgБ Ô)ÉÖð@£#è\ô܆æôãWˆ³°}}}#–´üä‹×ü<#Xà7«ÿ6ÿ‚‡)òÅ“ïF/øö ˆ°<æú÷Ïû ÿ|n˜±Ž?üð±.ó Ô,{žíÙ@ïÿ²eË\yp çñ¬š¿ Å”‹/¾xD\AÂÓ/ ”Š€¯0ÅW¡qçÞû° CW˜- ý×ÞÏôìGuÓ×’êØÚÓzœ›€ñÿ!ìEOÇc’RÁ?© ¤D“Ú9]>5{ŠæUÏÁðŸP‰êH€”.ˆ›2Âu ¸ è…H€j„i¾p:ßÔ4rYÛBJ„¼5`°,–1 가Ń-~ùzðqζ–.F`ý’%KÜuô&b*ü™waŒ›7oä.óíË|ÛÇâ.¡÷eFÏM¡i! _(^`ÀW&Œ—.¯“@Ø àÆ}n÷:žË?û³?sÙ†ä+óŠ)Ëe—]&¯¼òРЏí]VL\ C!ÐÛÛ›µ“ïÛ5^Üþ·cåÊ•ãyçõ2¤xþ=í5W‡ÿ·â©IoíkÔáÿjÿ?$sþ]î>ø—LiƒÈYþ×s*è¯[0]›ŒÜÃðŸŽP=€ÚP•”î ©UXèƒø¹G$@$~h¤ø½äÖ‹4ç~à ?ÎBã‚àýûßÿ^.\8¦ðí§…¸íøÄOt¿Í,F¸¸çž{¤¿?ó=G¼c >; ûÄJf¸©Ð2# ä[EÃô * ¥Gµ@ÀžOäJ€U«VÉi§æ²îßÿØÇuß¿óäý³ë¶…Ò Ãÿá üÛyléH RìÞEz6e¬û8_¾pÏâ‡ïFž­X±"«öãGØÜã|ññ\ñ Þ_>½Uð[5§Uú#ÍóžìÙ×"qµà^Dþoøt57‰¤*+ÔÚ_D{+Z䌃TâVVÀ F2@›ÕžüèH€H€êø™[¼x±í¼Ímè¼üòˇõ=¾öÚkòÜsϹS~ž|?þ>ÒõÓ†=‹Ö82aÀãï[cË?w÷Ýwgqn´ž?P`(rPçç±¥¥Eü%ƒÆEÿ$FxNpŸÛóô…/|!›M{†ýmö¢·ã‡÷N»eÿž|òIw ~ügÒ÷Ç}¨çŸ>›”ÝóÙv:è §,³ xF Àv´o’ùåvbI½ïïMÉýíÞ—–îô)Iµ®ï†L,e W ?¥ I÷É‘j8ùèé˜èïDÿLo?»üËÆž“ @ `)º óÿQ4ºý†7Fë6mÚä‚¢‘´ñzæÌ™®‘„HÇX×ñ³åÂ`·àw¿û ‚ÞDs…äc``@º»»-HÁ[Ÿc€±àÄ葪@Ï=C0t‰ùÿ¾ï9…_*âBŒÎùñì¢Âqî³ä§Á}('»¿‘R ÔÙsàÛÙ¸q£‹ÆûöÍ šýF  Þ’fý%›†äÅ=KBƒ§Çn|–òøÒw¥ŽIÐN²GNëŠÈA­™t8hª<¼+ „‘Öð€ðÈ!‡Φ…·€…4ÿþöþûïw‡¹qú~FÛ·†Âú ¦|þq??GyD^zé¥lú¹×óÅcáaİЕüxlزM5€öîø„¸_ëìA9>ýéO V€ "°ã™À‚=+·Ür‹ØŠšàÆ{î'þ#2زe‹›Ê†$ü{¿$í»dÏÆ† ²£Âp ÷¾= …ÄG?ŤøðÜf9þÀfÁv{:úa§ø`Teq9(W(hJ±À€ûo‰ÊšYÃ=aÍo¹80^ hp~Kvtt&âÇ9¹Åô~˜ÐûÌ3Ïd§ Ác ¡B2…|à‡pã5’àÇœõö›õÄaéŸ_> “okʃ|×F;g=9V~LÁÀH :¨700zÁ¸by®Àž<‹&ìÃøŸ9S Ø1·$PI¸/í;e°$ š|‹ðíÁýŽg¤½½].¼ðÂl4¸nײ'¹SrÛw¦e‡þÞx/)¯ôÉûÙϺUF¬\þ³cçÆÚâ™Äs‚p˜*tà 7d½[¸fûÙ‹Ü! ðïg™4YÜ»&àÛ} ›G}´‹ çì|иé¿p}©¨ ¦c²m ¶tg"Ò)íNwÂô½ …']~Ÿé¨ŽùO Éqƒ2» é/Nšû/?{¦@$@a$`ËçÓÀ°Æ,ØOÔŠ½oˆÏâ-„—5Žl;VÄëÇ Ã…fL,7ÜX<ükÅŒ|@ŽŸiÓ¦‰¿þsn>sóÆc»—±5¥ò×ÕÕ%ŸûÜç\Výg¦Ð¼#Œ) æg?û™`É58{F,mw²ÂÿL1QÍ"Ã>Üo~óyê©§Ü>¾5Aîwhø™0Ž©/豇Cœøáš é–öpP·±¼!?çwž\}õÕ‚)fDSÐ~úÓŸºß¬Y³²y¶ûÛ·ž÷3kŠXÂLoÖYô"W¼8^Ô€“ý© L¨Þ\gJŽìh–ùºt!”é´…Ô›H¢ÓP•"{ŒƒH€H ²Ž=öØ’$ˆ¹ôÅ:¿¡r×]w ó57«b½ ÎUè•yâ‰'‚EP—۠ÜdŒ^Ê2·ÑvÈ!‡È¡‡*XÁ\nZvž[ܧøA`€P‹ýfÅÜ„Üï¸äžFX{?`>4âmm^¿ºŠšššÜ”§ÿøÿÈ>¯–Ï å«b˜t øïpÔ;އ††ä’K.ôÜã~µûÁ¶~˜±²ÿÐñ­ÂšW^y¥`µŒ„éééo¾ç á!ø›Ãh¿¯~õ«ò·û·î®ÙójÏ,FÀÍ_ÿõ_ ¾Å~x‹§ž·½ŸP›iykïÀ!º¸žD#úò‹ªÈ ­&½D_Z‹fµK³Zÿ‡ÀÁTBšÔhaDÛZ²úbvH€H Ìl~.’±l¡IZC»ÍÝ/4¬ïÏod`¥gŸ}VŽ9æßKÉö‘g4Þá0üßO;H"¹ ®wÞy'Hpçyñœ)S¦i¾ p¤ @&`‚ Hþ¤“N’³Î:kDNÌŸ½7F\åaàï)ÿ]5Š÷ŠŸ¾þúëÝó AÏzS+ž &X5þû™À½Š{ö¿ø…üå_þ¥@©‹cüð|qðo ¤ƒãï~÷»rÎ9çÈ¿üË¿¸¹ûýýý.J\ÍÍ;×-Ãù¥/})û ệ0ˆqãþÅñŠ+ä–[n‘o~ó›òÃþp´hëò| ÀÂŽ¨lïO7íìV:Ö/馟Þt]n¯ê"õðÍæf$è?¬N08 ‹:QD4€†¤I‹kNá‰*…@G$@ A=ióçÏweµ†v1ß·o_Öž5€ Ço¡AC‚O?ýtV0‘|—„+6ÏÈ›9Œ0‡r Nü°ï—ÑüØu¿|PL ÁhÎâ±cnI ¬L©†{î‚ .!\X¾ýgÆÎµµùÓ£=Gc…-÷5ä)W Z¾rç‘ñ—Ÿ€_ç¶iað­o}Ë}LÑœï[0Vóù_¹r¥üò—¿”GyÄMa{î¹çœ [}àÀt«oÀºÿ²eËœ2η/ƒûÏ~ȯ}‹ìÙÅ#ð~ðƒ¸)<_ÿú×eëÖ­.›æ×òlaO\³rÚõZÛR´j¡Õß;]äVÐ%öœ, Àmƒp0@~4»4ãbêp,4PtÄÅÿpTsA$@•"áß,Ï[C HÚËàÁ>œ5€‚Ä“v0Î+Ö»f=îâþ½òÊ+rÿý÷»'Ò)´ñ‚2æ–ÓW 1„øŒÏXÙD£Éw¶î³ÃõÜ´ì·$vÚ3 %–-ËÍ_îýž{}´ã|‚Ðh~+uϸ•ûtK ß;ú?ÿó?ݘxìþ-ä›0E„Çñüñîÿ8‡Qhø–aéMSœùqáûfB¿·ûÇq™ßsÏ=×)0%àºë®séXúØÂÙóïÇå.Ôà¿ánóÂrþžŽ¾Ø9 i­´JýIÌ­©8­•ÕÖ—-hp ŸÐR¨ 9"™ŠÔ:   €ùæóæÍs%µ¸}Ô )¾}ðß|óM×ø($L®4œ­ñl$ Í7kß–4NìznÅoÚ´I ¸€óóPH\–'ß/ &á<Ø ^cäûksîÐæû·ùÿ·5ìx¬­5rÓ~衇²Ár¯e/Øñó„•|£F¸fžB£´øl‹Þk¯½æ‚ÛPK\³ë…Æ cj¾µsãShxú#J°{Óîq,UKãpãõ4V*L‡ªAÀž ¤ïÍ7¾ñl6ìyÉž(bÇ&è#ŠÜïŸ\³ï’ß«ï'¸L`çqÎa1Êçâ‹/–?ú£?riú#Þ|¿G-m)º©äÞdzHi㺀ZAÔåõªî …Ð¥u…BgèÏ øz<«5%“š`kSêÜUXdl*vÕ‹Ç FeSØs±äœ}´s?ö…Å.‚!ûæ‚6n&¶¶cX86ùËmÜÀO!ÎÂYq›€b× ‰Ëüøa°‡µŸ}C€8ç—Ç…ºE‹e½G6î@ øÏQn´ÿøÇÝâ8oï™\?<&F à#PÞÿ÷—Ë.»Ìݾg¦ñ~M /„ž3{&±µ};ï#>œm¹çü,yTj÷î»ïfˆ;·AUhzç;4T 0‡rçkøØõ [Ø0g %;²]¾|yÖ{nþ³¸CU €ûÏ ~Ø÷ïóÏ«ñ?: Œ mJ0Û~õ«_[zßãZy·Û3Žo'ʲsçNùÔ§>%X~#Öì:êÝ߯Åû  Ö 8²)Tk¹g~I€H€‚ÀGÛ¦©Ç0ó)S¦¸¨¬QA?à===û),­ ùÌõÿÀ¸S–'ÛæúËwŒâøX›Ã€\‡<~AzêÍ â~¬´Ð[²gÏçÅÏûXaò]³òãâô‡ê#^4ÂJáÀÂÜDX`zƇ>ô!‹Š[ r…ü¯|å+YAÆžUÛ†&óÌ Tˆ€õðCÈ÷ã_|QÎ;ï¼ì7ÓFÒT([E'ƒgÊþ .¸@n»í¶l<ƒƒƒNˆ2ÂO­?óÁZ?Y Ü!  Ú pä‘GŽÈ(„äbaô¨Ã>„ÿR6žzê©ËŽÈð8ÖA¹ð³^ëýÇ1g¸†m)ò ½½½.gˆζî À²bŠ绘ð&Co$˜îGSòÙû«‰`þ?®ãg×'À$Pì°çÀn~øa9ÿüóÝHûN…µÈÈžw¹EÏÿ¯ýk—U|?íš=óö^kY ÉW+r&¸Ãz… D?$@$@µCÀ>ÐØÂµ¶¶ŽX»æo-ÜX%}å•WF4ö­Á3V˜B¯Á°Þ½÷Þ›õn½*–¯ñ¶h XyIvyA[¹}?8_¬ƒÑB߀å/7¾Üó8¶¼˜ß%K–ØnA[k|YÜ…l-Mø5fåvh<šBÆÒ.$¿¾ŸÜ<–#߯iùiµŸ›¯R[ùüç ùðëp¬|áœmý:’G„·Þ>‹ë3ŸùŒ{§XüAò„8jñ—™ Eù®¡þì~¾±3f…0€_„µ{À3_š¥:ç+H‘Ï õkùðËlç&²Eù}çÂÓ/‹Õ âó÷ýøƒì#/ˆÏ œ¥eqßu×]²nÝ:·B€Å››g;o[\/¥C=Ú½dq[ì<ÒÃȶ7ºåÿpŒ2XX ‡òâœÃ_-º:Vèð 5ˆ\æÑùÕb…1Ï$@$@£ÀÇÙð5wîÜì 8Æuóƒ­9|ÌñQ7ÁÛÎûÛ·ß~;{h‚ì‰ìøË¢ –×B¶È¿ùCVžþyÙ´i“ËÊ„üÂU>ç¡À»víÊŽ†0ŽÆÝØ`‹|å¦iþ-)ß@£ËÝZÜ8øà¬¼A¶~£ s9ËíÀÀl2ɧùÍ-+òë—a¢ù7®VOˆÏÒo‹0¹y±ûl"ù²8Mq‚¸pn¼ü从°P®Gu–Ÿ9sæÈŸüÉŸdƒƒF†ó¥_çP`00åGùr]®_óƒó…ò€_Ô™…ÅþDê07£# ÿ¶2’oÄiŒl;Z:Åž7~øBòæûñóæ—Õ3ȾŸçíý‚åÏ9çùå/é¼X9¾¿08‡ßhñúiŒ·oñaké`k÷Ò±<Þwß}rî¹ç 8‡®›³ü”*ooµ¶u¬¨R¦K$@$P-øhÛ‡yÀðÿ®®.—œ·=>æöA·óÖSè‡÷Ëá¾Íï?è>¦¼þúëÙ¼ ïûì±ÇÜ(ÿ\)÷1ü?×fFhXYãɶ֫–ËÜòsøá‡»õ–q„«ÕŸÅ3Öñ¿Õ?ü ?VÜc]‰¤cù…kñDâ³¼gkàBIQL¼ÈŸÅeq—jk÷Å7‘tPAÒóÓ„Q³Y³f¦.üƒƒ)̰?ždÜpOÙ=ÂZ<¦d GPÿ¹ÏAgy â¿Ð¼!^{XüÅÜÏ‹ŸÖâ+4/AüYÜöŽÀ :°¨ÿo|Ã)Q.Ôkóö ’^>¿Æ.÷݉4My?úÑœ‚”æÈ3ü÷|q×ú9*j½™  ¬á“'Ÿ|rVp2OÖ¸ÀÎ÷o~òmmÈ{©–Ä9“pv._>òË-z1ÊéÀ Órå×sþ¸fA?–\´h‘;5Z]øç›››_KËk¬}ø÷ãÉÍßXa'rÍò[Lv¯!ï~ý˜¸ò…±†1ÒiiiÉçeÔsùø›8j `tËœq°ã [?Oùò;{Öî1céûm~! ™C|AÂ[¸B·7Êféâœ/4cS¨ÿBüKp4–…„Ëõƒ²øå˽^êcŸöñƒ‚åûßÿ¾¬Y³Fî¾ûn—$Îg«g?l)ò…xq/Z:öNÀ2¹gŸ}¶|ýë_Ï*´‘òi~)ò¦8>xºÂ”+æ…H€H€Š `B>Þøp?úè£rÝu×¹i3gÎt=ÍXÐ>îHÂß-IôxûS7)ØN´`yEÚ°ÜëÃqûöíËÿŸH<ã……Ms(ƒÏ1÷Øüa û»wï–íÛ·»ž X‹ÆzËp`juèN ÿÃykÀµµµù—íûy„PWn7yòäì”IkêÔ©ôñÒƒ c¬ÁtÒ¤Iã÷:òY*WJvˆ .è³ AîOÿôO³¶D܉ûÁÓîÜ386…T>¦v®££CJqOL›6mBÂïxÕeùÅ’¤VÎñÂŒu¶gÌácñÛ¹ [{÷Ùû«¦ÖOõSN‡4ý¼ ŒPƒSj¾üå/;C°¾Ð^ùò[l^—)v¦È]|ñÅrÑE ¾—p~zHßò0Ú7ɪáTÔpå1ë$@$@# XC sü®¹æ÷CCSf̘!óçÏ— ¸ŸÙÀ<ôÙ³gg‡¹ŽŒUsÞ!°Â!^KÇÓ\ÿAŽ­¡-,cH<X‡¸ç7\Ðx…-|½ó…ÄÄÏŽ;²Þý<ØIXS~õÕWÝ´,Ÿˆ•^~ùew,ñÃy o‡Ë|ñàš Ø¿õÖ[]LAÍ?üùΣˆôÀ S.Êí°œÔå—_îF8‹Ž²¡Ü^ÁJ“R:r¦€ñ+4†¡ëëë+˜«5ŽÁ •{î¹§dYDýþä'?qÏ¥­8¤¾Q×èéô<¿AÊdqaþ2îéFs`Eˆ-) .¸oP>#Ÿ‹]Ãý饗ʼyóÄÑáûÍ·x~P6 [‚5ŸÿRÃ0õK.¹ÄÝ7xöLx-$~ä\¦OŸ>B;£Bâ4?xÎŒ;Î=óÌ3ôüw£ù÷·†ð‹zD}â‡ã-[¶ø^KºoåFÞáìž0åò !ßh(½?ùÉOÊé§Ÿžõëvþ³4‘V®Ã;߯_üârÓM7‰}¿,_ð}ä×¹qÔÓqÄ`R¨Mïõ~â¹Ýò¹¯>ßÐ3¨C)bº&¢„`ÞÑéÌ‹•—ÂK»/%ŸX—kNƶAI¦›$–Ò¼Æö¿) );ý dzÐðÝÀGrëÖ­rÊ)§8˹adãØÇÊ„AŒ€‘/( 9ä9ì°ÃÜúôP `x:æ®_¿Þ5b­1æ¾7ÚˆjT·aÃ׸‡` #^xá'äÃ^X5kAÚÊ“å&Z"Pèûµ–ÊÖ¼Ö2ëBó%ÛqÇç¾³gœq†`É͉Œö‚‚ çgŸ}Vn¿ýv¹óÎ;Ý÷)¬ulù/sønâXÙ|Khß¶ó¥Ør@)(2  Ð(TèDï"zXñËuh€,^¼Øõ£ ¿õøêÜpõ~ <ð€¬]»VÐk†Þ|ëɯ÷²³|$@Á§SYñ ý–ŸBùBšwôº£‡¿ï}ï{N°téR§Œ?ôÐCÝŠ>˜¢m„©døvct†ñwww Ï©‚p›7ovP@çºB•¹áêé˜ €zªM–…H€H 4¬G=¹áŸ|òÉìiø7¶Í^l 4ê0oßæî7PÑYT  20ÁÂ=ìàgÓâ Ç”(LaÀ( àÊg|«ÇºoS! UJXÚõ¸¥ k•e" (ˆ6‡Òz÷qœ¯€Æ‰ùEC~Y `5€Æ¾9Ÿ)Wüsæ[  À÷ßÓѾ%ôñ+ÄžâÀ·ξÙö½²­»ØÀÿ¨hàÊgÑI€H ‘  !Û0AÕ\ÍŸß8?;oa‘%8åS‚€5Àò]oDV,3 Àþð µ_î7Çf8~ì»bß]l-Œùµ¸üo6Rå·èöT|À‚{$@$@ DÀ Ö ­q`  A.·aáN6Ð?cbѾ½¦`ö¯ã›‚Ÿ}·íñaߟ€o’ÿòÓlô}*ý`ùI€H Á ø C†„ïìØ÷kç|¶?²i´;å% ‰ð¿ö}±-b·ëþ¹ÑR…_ó?šŸF=‚5ü=ËM$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åPP9ÖL‰H€H€H€H€H€H€ªF€ €ª¡gÂ$@$@$@$@$@$@$P9TTŽ5S"      ª  jè™0 TŽ•cÍ”H€H€H€H€H€H€H j¨¨z&L$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åPP9ÖL‰H€H€H€H€H€H€ªF€ €ª¡gÂ$@$@$@$@$@$@$P9TTŽ5S"      ª  jè™0 TŽ•cÍ”H€H€H€H€H€H€H j¨¨z&L$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åPP9ÖL‰H€H€H€H€H€H€ªF€ €ª¡gÂ$@$@$@$@$@$@$P9TTŽ5S"      ª  jè™0 TŽ•cÍ”H€H€H€H€H€H€H j¨¨z&L$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åPP9ÖL‰H€H€H€H€H€H€ªF€ €ª¡gÂ$@$@$@$@$@$@$P9TTŽ5S"      ª  jè™0 TŽ•cÍ”H€H€H€H€H€H€H j¨¨z&L$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åPP9ÖL‰H€H€H€H€H€H€ªF€ €ª¡gÂ$@$@$@$@$@$@$P9TTŽ5S"      ª  jè™0 TŽ•cÍ”H€H€H€H€H€H€H j¨¨z&L$@$@$@$@$@$@•#@@åX3%      ¨*ª†ž “ @åÄ+—S"      ÈG N8{<âb‘P$8#      RÈ'ì§R©RD="*Fàà Ô'*ê³^Y*      A€6Fàà @åš$}ú%   z$€)ù¦L´¬0Q‚ O$@ F ‰¸' Ù¹sgƒ•žÅ% Ú"€7væ­®|‡1Oá"ÄÜ€#0­Ô8 ÔD Ô1ÿèõǶ³³S¾ð…/È+¯¼"S¦L©ãR³h$@$rÚS˜Š&%m•ÔÀï“­½íòЮI2éÖÌ'U 6‘[{7c½š·I²pRçžSÛ¶?º»y’$"SÓ­é^i =äü™=(ë`ñ¢BgýãÞqIv©( FFB$@C ôþÏ›7O.ºè¢Æ)8KJ$@5Dàò·wÉã IëL‘¶ø#‘AQY_>º¸ù…¿omÍ®×_”dëÒÓó5ÄšY%RÈ7Ü?ß¹‰¦Ò×ÁD‹Åð$@$@å `¢X,VŽè' @Ñt€öòÛüÞé6Ù3¤ïꔊҮÅF‘ºYd¯H¢[b{æ,;¢Ý’xm«4µ·IÓÍrÖD/ ’@ °6V¹³J@¹ 3~ ¨3ø@Åãqg˜Æ¦ ˆÑ¨5;ë¬À, Ô!I¨À“hBßÅM"]{ô_¯6õ›{$¦—Âæt€þasô-:I¡M"G,“ˆ~KÒo¿ ÒÖ¡—Â6m!l™N€ €àÌ‚H€–þ¦¦¦¬UÚdRç•ê9 ÿ {K°à$@!!×nþtRêä*"2…Ô¯½þQ:ý,F#è/¢#†Ò2˜JG‡Ò)I§¢=ü(=Ÿ”ô[[$B%@Hî.f£žPPOµÉ² @˜ (LðǨ€<Æk*&A$@$ú–DT•´Í™‰ñ¤öþë/•d$„Ãÿ1¼?ªÊŠXZb±æd›vö÷%4¿:ŠA_®ÆU—±JÞÝ$PjT”š(ã# :'¡¿¹Y{mèH€H€ÂC2¾*T ;iIb†Ø‡Pø×\¹áý*ÿÃFAª)*‘tf¸?F1À’A|ñr§ÔHmÛ,‘I:@ÏÒ‘ Lœ@èM¼HŒH€H€H€H€H C gÕQøjŠtB§¨þ¢iÉ2‰Í[¬+ôhQ|¬[ b p@±äŽH€H€H€H€H ô ³€@§/ÄU —ÄHÚp,ø&B€ €‰ÐcX     Ò€`H•˜ Jôÿ»éT”ž5cl(œÐPÕÍÂ’ @0%6pÓ“tŸN€A: ¢p@Q؈H€H€H€H€H ì†§`-Ãø’åš\„ÓÊ Ô3*ê¹vY6    ¨uª€a@,i8Â&W¨õšeþ«@€ €*@g’$@$@$@$@$@Øt€a›IÀøÑ+   Þ $@$@$@$@$@á'`J]"#¢óh ü•Ɔa«æ‡H€H€H€H€H ?O Ф6bTäçij$0 *FS¯§ÓžÕT¿^ËËr‘ NÀ'øû…Ç@Ÿ$@$@$PÃJÑÕ`J€ 0guC€ €º©Ê`I$º‚ —P F¾I ~ à}Jéz˺µ_ý––%# ¨yª€aÀtV °˜KÖ|¥²• @#€• ‚4¬a‹Å\ã> ~t$@$àD"‚÷ƒ¹ˆÓ‘ @¨ àS%ÀˆÕ^”H[§®ÀïX¨ëŽ™«J€UC_لј‡ÀEÀÐоùR¬l 057Ü7Brx4@¸sÍÜ‘ 4<|À†T 5 ¸„#þ¦ €±pÀXtêè~ÖÛÜÜ,òóË/—­/n–Immª%­£Â²($@ˆèßL&%;Å`Zÿ÷wî”õçœ#«×®)8z$  ª0%€.ؤ«èDW]"p‹ŽèàH€ªU +*ÂZ3eÈ6ijÿ|èA¹÷λeZ»“ŠRP䌒BOO>zû¡ŒÇâÒ»oŸLž|ì±rÚ©§:¯PàçF ø¹O$@$@µN`x:@Z¢:`™~uœm[$ÒÖ¡Ëâ" Ô?ލÿ:f I€HÀÀlGXöw=ÿÚÎèï—¡¡!YÎziV¥œ/üS àð @=0%€.ؤ6h°ž*—e)„GB‰~H€H @¸‡Téï¥G-•œp¢;yÿúc:5Àüº üG$@$@õD`X i °x¹+Y’#ꩆY–1pÀpx‰H€ê@J%ÀÀà€¬9s­´OétÅÄ´ÿP`¤GÔ[í³<$@$@Yú9t†Õæ-Vˆ¹Õh ˇ;uK€#ê¶jY0 IÀõê§t"€*vïÙ#-8XV¯]“õÔÒÒâöÙûŸE  z&0<Àl ¨Ém›i žëœeS t$@$@C@…ôî÷õõÉÙjù¿«««qÊÎ’’ @.S¨MŒº‘ºD Ž†£#z$@@=Ö*ËD$@£@ï~_oŸ,X°@Ö®]ë|q¨ÿ(°xšH€H 1xJ€&UÐ0`cT{£–’ €F­y–›H á@ÐÇ<ÿ½==²zõérðÁ7˜H€H€ò0%ÀÙ8LÒ} —OÖ4*jºú˜y (œ@4•!5þ×5cº¬[¿ÞÄtÎù/œ!}’ Ô1(j×Mð  §Ôq­7\Ѩh¸*gI€„ú´ ÷&à§µñ‚=½½òÑÓWÉÂE‹ÿo„»e$ (˜€¶ ›·DÒ½ P0?z =®ú*bI€H 8t:%èñ‡ƒ‹Ætî¯tLí”õ6d#tнÎQY$Ü! ht¦P{é0 ÇÕý¦¨Ÿòs@ýÔ%KB$@Y*ÓK<—X,潸k×.Yyüñ²léÒ¬?ìpÀ<   ]2W! O8†Ó& @@]T# A$@#  ÷?©Súûû%‰Jï¾½ÒÜÜ,gžuÖèù·‘#.ð€H€H€€)œa@UÌ¥aÀF¿%ê¡üTÔC-² $@$C@åzI ¹Þ}ìïÓ¥ÿN:édY¹reÖ'{þ³(¸C$@$@ù ˜`Ø0`”#òsâÙš!@@ÍT3J$@…PÎ555I"™€ @µü¿ÎM 0[ÆÉdRð£#  ƒ€§hR›œ0+^ =*B_EÌ '€^ÿòŸRc»{zäÈeK帕ǻˆÐŽƒ}üèH€H€H€Æ!€gv‰@*Æ¡ÅË!&ÀUB\9Ì Cóú1ü_âMκ?zùׯ_/“ÛÛGDGËÿ#pð€H€H€Æ&`#†WÀˆºÔ¶ÍiëP£¦^; ^%jà€j×Ó' @ƒ$¢†ÿÐÙ»w¯,Xp°¬^½ºÄ©0:  h@¦P={f: 6à]PÓE怚®>fžH€òÐaÿ‘hÄ­€‘7ž+y<ò @`Pètq#–»àÉm[8 0H¨ލu¦I$@%$ÏšZ—ܽk—ÌŸ?_Î^ú/Ÿ¿fƒQ‘ @ãP%@6ÜË?0 ¨FwéH ̨sí0o$@$Px<îæúCèêDöKë¶hPÖœ±V¦uu¹X8翘ôB$@$@… vKìíQÍ•…"¤¿Êà€Ê3gŠ$@$P2)úax(¦?‰Fݰÿzÿ÷t˼ƒç«à —–õþS P2ôŒˆH€H€ô¬†t$ òn¨P#Ål’ À~TèG»#©óüMN¥ÝþÐà¬ZµÊM@8(L °_<œrþŸE  ¨¾`Érލÿ/y ©(9RFH$@$€eÿô‹ÿ°þ¿¯·WÖœq†ÌV%œÍýŸ`* N$@$@$P‹L €é‹—I”Ój±«–g*ª†ž “ @~ð£jè'¦ÃûwìØ!³fΔ³×­ËzÆõ¤N  #  hPž i m4è]PT±©( ‘ @ùÀè¬Fõ7¨ÖÿO_½Z>dA6AŒàÐÿ,î @c€«`$€SÀ&À lL,uAh=ª LôD$@•#Õaÿèåß«Cÿg̘!çnÜ8"q*Fàà 4. ŽêêËÝêÁ©m[$ÒÖCAË…%•GŒŠ†H€H ò ³Ec’ÖQÝ{öȱ'¬”vXå3ÂI€H€H€jƒ€ÐÕšœa@®PW\r@u¸3U ÈKßpŒÜëÝ×+S::åÜ}ÌMÈë™'I€H€H€Hü‘ªÀ‰ä¶Í À»c?°ž  êH§“Òßß'dzBǸÌ8»ÕÍS'  3o$@Æ&ÀâŒM71 ÌgÞ*I€#*I›i‘ À8Ô¼Ÿ ÿýÒÑÞ!uî?ìÀÑèß8àx™H€H€H 3†u5!(à8€7†O€#|Ü' jPÓÿ=:÷Éá‡ËGN>ÉåíWíì1}   °éëDça$@WyµU*{TTŠ4Ó! < Ø›Ã>zÿ›[šåœ$Sc€zΆÿs€‘â–H€H€H`L¦p†—IŒJ€1q5ÒE*©¶YV ÐH§Snx?¾Ó˜¢·g÷n9üˆ#ääSOÍæ‚¿¯(È^à ŒF`Ø&€¨ c€«Œ†ª‘ÎSÐHµÍ²’ „Ž@<×Yÿú§sõ¢:ü?ªÛµg¬•Ö¶Öl^©È¢à @ªHÃ&€›°œ#‚°«S¿TÔiŲX$@µA ¢BÆ¥eÇŽ²pÑBY³f;…¡ÿþñ‹Çi³µ6j”¹$  @ScÈ”œ²Ú©xv¨¨8r&H$@€¯&þ$‘HÈÐМqÆ2eÚ4ç‚?®Ñ‘ @Ñ|%ÀáË„†‹&Yó©¨ù*,¾ÖïX| Yϲ¦é†…P¿¬¸f©žûÁ ¤†môõõË‚ƒÈéýÿˆ Œm@ð˜‚H€H€H€<¦È¤MNÃìrLiÃTõÈ‚¦Ô²xB{±Æ8þ(ÌäÃ#Ÿ°>Ÿ–d")±áµèR@?q=t÷O\-Õã~¢+Žž¿ÄPB†äÔU§ÉÜçe#‚á?<›xNéH€H€H€H`ÂL ŽJ|ñr]rÛ‰´u ñ7áèAø Pþ:*Ys{‡0ì8™”†óy/çz‰(ªÜí[š›ep`@0X=ª?îÜ2î‡EU»S¼)»žž=Ò5}ºœsîÆñP17H€H€H€JA 8TÃÃñ%PD$¹m³D&©ÀµîJ‘ã+*ÂZ3eȆã‡ÞDÌ5Þ·w¯¼¿k§›_LA£ Àkþ„<öð&iiiqVÿ#záÇû¨° 6Nî9Tõ:Œ*îÛ·O>¼r¥,;æIB r‚7mrÆ”¾HÏ‹½£@#÷Šo{öp ûv ÿþ¾›?—ÃåKÓò•»-GúŒ“H€ò0%€.ˆÕ¢óKº¯G½r¥§¼¼jø$5\yA³î Ø÷ƒÆEÿõOÀîSÝô›¥{×niooÏ6š­±Zÿ4&^B÷¼é7ÿ0z"ªö LÙ°qƒ®¬y›bŠ: ñ à™±w|ûûvŒ÷”) °…RÀç§‚çq”ãûˆ´M¹`ïNÛ"ا# ª€«dG¨ —J€ªÖI§ €2@e”$Požæ¹÷Þ{dÊÔ©Ú0F¯fT@½•³œåÁ76ÀÍ|¬¬päGÈ)'Ÿì’…@böLXqøH /¨ãñLSÆhSر)3óFâìïïw«âàŒs:ç{{{ò׳.Š©P­º Ž›âM2ir›4·´JLáàÇw–/;—‘÷Óeúƒ3%A® Ç- ”•€)Ü™Õh°¬Ä+9GÎI 6 ñl½`7Þt³ìÞÝ-tôÔFB–Kðt‚CS‹ ¨@ÿœsÎÑÞÿ,þ£á?Æ=dE`vH TìY1Aßž1Ëd¾çhH…úïíwßyGvíÞ-;w¾/ïïx_öôì‘÷vì=úž€ÀßçzäGBŸULÙIêóélžèʼ¸ ý-*äG° ªjõâMq™4i²[.#¥¦êêØvM“fÌ©SõÜTé:`†Lž`¿®¦Ë¬Ùsä`U |há‡äCúÌV¥Àt9@G$@U#€W›ÚÐÉO_²\·Up‰ÀªÕG‰¦ D  Ô*4h­ÁmÛLSVd§•ÝôàƒÚ#¦Ëý¡ç«V ‚|CW,ý·è°ÃdÕšÕÙ\å 4Ù Ü LÀÝÃáл ¶ö³ÈºuÆí……Ëô°µÞ_óËmy ž¬çÞêÉy\ÃÏêÂêÔN«þ¾~yáùçåõW_“§žzJ¶nÙ";Þ×aü==’pÆ6UØ×aù˜‹ßªCîãS¦¸Âà9Ä» ?{×¹ øçN`œÎo»ìž)?5oY§÷Žà£2nøžË peâ!ÖÔ$­ú‡rÀJG @€ß¶moÉ«/¿"Ý¿*&&¹åA§N™ê”‡«­¼3/^,-ª´ÈuÆ [»×sYå†á1 L@_mi(rmLêÐ(ì½WplôT„ ˜¨&ë]CãÑà–ŸßÞz›lÕ^´)S:]cJ#| a½†Ø®:}•QXÈ48˱Bø«×¬‘Ó>úQ9H ºpìÜþÃsDáßhpK$P÷RÛ9¶:€'ß|Q"mºÊ޾cèÂK€ €ðÖ sF#€F³5þžV#Sè¼ÛöŽŽzÐ*–“O1—YÿRÚÛ á®w_¯¬>c­¬Pc]pŒÀ›¥Ã1î?Ÿöígß|óM¹ô²ËÜ´•½:d|JG§3 çF¯€³þLHta†&ÔLÅ¡žæÌ™#>úˆ|GGü÷¿åÖ`7åüùy°t¹IŒñ3V¸Çí½‚s¶Uî¸ãyäåÛ£¬†ðœÓ¸à,>wPÀ¿zmvÇØã`åÅÆ›tt@‡¾¿ãªèT%×–Í[äùgŸ•믻NN?ýt9óÌ3uyÁ…Ùú0 ^”Ü% ÂàÅã­€×6 †®š¾¨¨&}¦M!!` sdçæ›oqs¢»´ Ckt†$«¡Ïx¡ÇL!@nß¾]Zuˆîùœïòn½¢#ÒЗªú78ÿ^…Á·ë®»Vü]í V¶w´Ë¬™3Ã¥±,\R•0®·Të#߈ Äe×1Ü|Ž®Ð°iÓ#òªøÖ·¿-s`0pX¨õÛêÓgü{lýwìŠ<¦lo»í6¹_‡ûw«¢f2†®«àSb\‡“:>sÎr†5WàûïŸåÙÜ‚%[¤MG@!ùζ·äÿ»èËÝ¿½C>ºz•œqöÙ²HgÓüz kY™/ ð”4 ¢z#+TŒ‡—H øö—6o•z(c5[“lq€› ?hâºïzÿW¯–eË—»ÈÀÛz”±OÆã3¶{Ôþ7©‘¸+.û¹ØUJ—y³ç8ƒ•ƒj ÂTÃE£q7Š%æ$ËýÓ{X–‡„:ƒÂf欙ò¸ZÿÇo~S¾ûÝï ,ªÛH€ýcàŸxâÞöë |Öžþ뮽VžzòIèÓ?súoÑúIBØW›Ê?­aÝtQêËO‹û# àÁo’²Å»gPWÀ”Ü»P~a˜÷õõÊv5ùs]ã6~qº®Jò±sÏu+ @CG$@Eð”ñÅÚÞÁ÷àÝWEš2Ëñ'•eCˈI 6 ÑnÖm¿½MÞyûméêšæ–þs-óÚ(Fhr‰Æw“½UñS-ÿïUã[“d­ÿ7‡9„¤\AÉ®s;’€)KL¨|C-ž_~Ååró7«á¾^½W§K+„XD×à;¨†Ò"jØR×+ªÌ÷sà ˜ŒÍǨCÏ›TÛXoý›ÿð™‘:=Àž‹Lj¿Qœ•ß_Xù}¦,AÿÝwß-¿¾áyêñ'tbhÊõöwvNqÈÂ~<¦½ÿZwP`ú ê›®à>¤¶°œ ¦¶¸^}…‹*[åå1aTq@ïu[üù¥—ʺâ˹ª8ï¼óôyêÊ&î׫_ÿYÜ! ŸÀ°@5º}¨¤¶¿îlï@@.T„«>˜¨ 4äw¾¿Sî»÷^iÕb‹Ps†¥øÎVÊ e,QA¨[ך_qÌ ùèªÓFÄcÂ숓 x+Tر¡À}i¬ö*Ë_]û+¹öÚkäí·Þv6*¦è}ŒX͇ÓûUÅx'øØ­‹ð£ •˜a! ébÞ¹ó«ûÍ*,Í9`¦²þ£üP¾¥#::Õ&†^ƒsþ5]øGMvëìÊŠòY™¡LÁ¾Gq­üØBȼU—£»I ‰>ûìsÒ¯=ÎS§Ms‚§…sau„FJ{ÿ‡ÒCîÊ3ÉØZÀuº`½ëqËL¥Ð{rø¾Ç=šTžªrÔë®°{ïS'·KTíeìØþžü÷ÿûŸr÷wÉùŸº@Ö­[—£‘š}«;¼×°Ÿ«˜ –[ú&¨[x¹@;4P·E¬‡‚QPµÈ2@ üæ77È«¯¼"3´G y¬9T¡È©$Q÷Q aìæÓêǯ¯¯O÷c²nýz‹Ë!p~囀g‚£ ÁÇÖ“Œp÷Üy—\uåU²éÑMκÿ4í¥ô{õ!à¸ûTï[‹«PÒüCPrNãˆâÞW¥ b¾úw¾õ-ùî÷¾'­“Ú²ÊäÏ VŽLõ÷ßg„2;E‰n±ïî÷á"ßßýr½õߤFDûûú¥K­ùw´OvÊgÑC£U¦Bjæí‚ø¡¥åyånà˜ËÒŽõB6&Ô!¦\€7zýuÚ̯¿&?øá1ÍOæÓrÂÊÜshubϤÅgÛl¤Ü! ¨ TÔD51“$P^»Õ ×m·ýÖ5æÑÈKêp]AmH–7õ:Š]ÓèQVùQºwtËáG!«Õê6ÝØL¨Ä„ý¬ ®A^~ùeù¹Z÷¿íæ[]OäŒéÓ2‰ %ˆù±fìt ¹ ¡(¡=¥ÈÖZooïÛn¹ÅÙø¿þöo²Â/„ŸF€PF3j‚¿c¯ÐMøLm&\§æï»ç^Ù§#5¦N*]sç(C¨a2+Œ€§/€RôS>˜"€‘¨ÌýÇ3»qÁqßÝ÷ÊsO?#ŸøÄ'äSø‡Ò5#£¶û÷„)Ê—CÆL$@$P.T”‹,ã%"pÏ=÷ÈK/m•éS»\Ã.¢V¿Î#mjn!hÕP‘ª’U',)7ô¦AX:ó̳ÔÀäªä%̉šà AÒ †šY;‡|÷ìÙãÿk¯ù¥ìîÞ#S§Lqóü1L?‚õ†cQçzú*÷m€Mÿ¸Þn-nnI€H€ÂM€ €p×sGe'0 Ö¢o¾ù&×t½B*ü`ÛÜwsGKÙ»ZöÂT!4€ÑvÎ5¨S²oo¶è0Y»ö wÚËUÈ^¨“4Ò"î¸õ6¹òŠ+å™gžqö(æ¨~tO&Ô¢yZ·]Î Kš¡§BK©ò’^SNpM©BgÒ¤É2MÓûÉO~┟üä'³ÂŸ÷Rç% ñ…ÝãVÖj<î7¿º^~õËëäµ7^—™j4±kî4]s~Ð= 62u„1&0†¡<ÌC†;q(eTüO¨PQîX_eX>³}Ò$éš2U^íuùÆßCÎÚ¸^¾xáe6žGuPòØýàNð @Í  fªŠ%Ò°:ÄøàƒÊ=®ø™NðOè2j®Ñ¯ó×ÕJ—ú  `4ò`ÑÆœq0Ët¥)1mXŸ|ê)n4Ÿ »£ÅU¯çQîÑÇl¸àÏ=÷œ\w͵:Œüíõß-3fÌÐ5Ì› 9þQíõ‡ÿ„ 䈳\C­ž`ÈK©¡ç}¤ 0¨‚Òÿóoÿ.³ôY9M{DsËeBQîùZªÛÜúrŠeàʤÂá-:âš«¯–-/¼àÎÍ™;×-3ëóxPGP‡Á=âŠÇui9}…¸Ñ|—„æV@}¢ž0] ÷:ŒF±R€Ö™V¬S®aX—N»ÙݳG®þÅUòâ³ÏËŸÿÅŸË)§žšyß¡ÆÕö™AXÄ©áéH€H€ÂK€ €ðÖ sF%%¯¡áõ¶[o•¨¶ÛÐëªàfœkø³Á>f`}m8°_¿¿«[fÌž%kÏ>3Ö EÃãìÉÚÉFŽ¢›°{÷n¹òÊ+åº_]'»v¼¯=ìSe–¹‡ƒá8ßùŠ+ÿ|©÷Q—¸õݰuéºýj,m‡æñŸÿéŸdºZ¶_ºâhH@N`‚bŠ ì[/¸;YÿPFwkþR ÷6Þ z ·ùùäÒK~&wÞy‡ëÕïèìÌ–Ñ Î _F¨tL4 ÂBðG<˜2@NàÞIö?°óàªIqiPïcøëÔi“téÀ—6o‘oêh€OÿÑÉg?÷9iiku×Ýó1|ÿ`£ èH€H€ÂK€ €ðÖ sF%%€Æ=ghÐA …{ôÑG¼¦èÜ]'ô”4Åú =Ãñ¨ýƒÑ8ÝG/èÞ½{弓?!óšï€9x›À[ÿTF–÷bÆ``Ðëxƒ®<ñ þ7oÙ"“uÈñÌ™³wfØîEä£÷éjÙþ­·ß–èò€ßÿçïËÁ‡âòkÏê»ÕˈûUeö}z?_¥S2®ºê*§ü˜:uгk¡?lõT‹ÜÃ’g«—þápuÕiQ½¯gÏ™íV7ùïÿú/yúé§å/¾üe9ò¨#ݳmß–rÌÉäˆÿI€H€JA€ €RPd$P  à‡Þ=k¤ÝöÛßÊ®»dÎpk #Ñ€6¡*{²vPvž­ØO=ù”\­‚ÿ]wÝå¦OÌ›5[{ØÑS¬B%z’‡ó_í-! i‡Ãþ\öþì³ÏÈÿÔ%Ó~ø¿~$“ÛÛÝùZ‚äÂÚÛÿóŸ]*/>÷¼Ä´W÷6îg°Àpqºú'€ûÝF„`Ûª#f¨Í‡ûÕ8à›o¿%_ùÊWdõêÕîÛbоú§Â’ @m  ¶ë¹'À¬§rëÖ­òÀƒȤɓÜð\ôfÓ  ‚„% l†P„ùájýÿ´ÓN“E ºˆpÊVøû©Ô¼W_ |÷Ýwå*?~óon”o¿+3fÎPC­UØPd¡u¨kL÷Àßܹó䡇7É¿þ¯•o|ó2çõZ­:Ü«VWÛÞÚ&Wh¯ÿM7Ý${TA8[Gf4©‚ Æâb1AÑi:‚£†‹[«ÕT•|»w— À=Òß? m“ÚdÁ‚òÞö÷äÛßþ¶¼òê«j ðÂìýS•L2Q  ‚ PP0*z$Ú'€ztிþzy_ç3ÏÒÞœÐu¹º†ÿ_R{BÑ»r•ž£Cdׯ[ï2Öè1ƒPÕˆ‚¿_{è¼UmM\qÅòÒË¿—& ç)+ -îWC{MºÅâ2£“!”¡¡“ÀsCÎHfJ‡ÁOrËÞýZ§1xð|ù“Ï>; e·çÌçæ}»G«£‚.¾øbyùå—¥]ç~;{ ¸—‡—]Dù3Ó9Â\æ­”ܽ1üíhmmÉ*4§© ìü¯ÿú±¼ñúëòÕ¯}M¦ét2:  p  ÜõÃÜ‘@Y¼½í-yàžûdz{§4ëö!¼B(w•¥ì¥Š¾³š­C×Êo__¯³üä²¥. €&T•*Í0Ńòû %x¡ôðËþäãOÈ¥—]&÷ªuÿ¶¶6™1ušöŸÐð*U:kã˜5ïŒÅ…ô&D¶PVg”P0ÿ}@í=´w´«#*?ýÿÙ{À8«ëîûH3£}±-ïÆ 6ØÆØ`Œ1‹ñ‚WÙ²,´IÒ¯/} i¾´MZHhKHx³”šôk›&$M“&y³aã}ÇÆ`¼°Û€myÕ¾¤ïüÏèŽG²-iä‘ôÌ<ÿ £yæYîsïïÞçñ=çž{ο_†"ËV”X›Ã¿Bv4gpŒúªQf$Ü×Y `Ÿk#·眼‰CpnEØ å†”¦tD@ˆ«^ãžxLw«e e©ðÓܨáŸxBÆŽ+S¦Mµª™“¼6Á©?ûATxkã Ö(Ol™Ö®[+ÿù?wÞ|Ãüiè7˜û£¨7òp‰Â¿#áŸo×÷ šãiÍe D†:îLS‹ž‘òüîÝòàƒÿ Ÿyà~™~íµÖwp®ó àòÁ>&  þ#qÞ÷çI€ú˜Â®mÚ´ÑB5!Lâ?GD±>.H Ü.]…Á€Æ§¯¬¬”é×]'7Ýxc Ôªó*¸A<„lã¢ü1ØÇò’O~ò“Þï§:k–Ñ£GëìŽ4¨Pi~ =èu–Üwç·õÎÑ è)ò å”*9ûê×äÄñRSnÀW@¬  F±‚t_Tíƒ2à7óï„ÿÒÒòðÃË#Öð½÷ßU/ï#4ÊA‘)´ òg¨ã¿X¡¯/ÊÌ{$ }n›ôy†Uþ høØÚÑ㡇’;wF+ÂePQÜ  O ÀÍÀB@ß@ïCº¾3ÖA]wíf3û®©s'Ruuu¶†}EI‰ Y}-äõMÔ‚¡S8áÿ‹ûä¿¿_¾öÈ£Rzì¸ú—¦áýrMð„Àþ†Yåf¬õO‘%œ:TöîÛ+ÿüoJ“Z9 AàÆÉ ãö£ÿà¾H®­ÜïžÛ-ÿôàƒò«_üR—ÌÂ\ƒZ³ ¡±äÁýÙ*Ì?q0…R¸Ù”Exþ#Ïtš ÓçKúÇ” ê÷Éúœ>÷L$@$@Þ À%Þh–‚ú„@MM¬Y³Võçfo1ƒÝL-@·ùc0ë„_wå•2óÆdΜ9–‡°ºa’žÑÕõ˜†ûÉþKÖ?³V**ËÍ9^¾šû£Ÿa–Cÿ šú76F„ËP›ãÄ$­úyņМ‘0y#¡5/¹ÜûÉ¿2k§8ï¢>ØaýTé#Ä¢Y^hß­¬ª’Ÿÿä§òóÿù©­­‘ËFRVÈþFuôaŸF,Õ€ÒF4RtëƒÆJ²[@­ ͼ}<k}Þ¡QªV$'Nž”¯~åQ[°p鳊I²*²¸$@$²¨HÙ¦eÅüNƒw—œ ¶cÇyý÷¿—5Y¶YçÌ‹kª‹~;ÁƒÝt ‰¡©¾¡^ÒCYR¼Ô–TàbÇú¢yô€ë/®ž®Øï¶­èèVÚ_Ìú¡¶V~¥Nãà8îð;‡¤Hü]¦æþÍ:3ˆˆ¶DBMƒ±Ìù bøáÓ.O2éN±P—€*7´Bæã EÿL…ëq&ÈRíxÎ0‹Žúc»7SǶ2ÆjË!éàÁƒòÄ·¿-ÔRñ܋Ы¸ç†aimÒ6Ue ¬½t#¨å5ÇoZ~&ˆ%KíØ’©Ï4”|Mú¼C!€>ج §áÆKYY™-‹AZ°xQär\‡„ŽÆD$@$Ð/¨èì¼) ô.  x@Àû¶lÚdµ¢ƒtVP1Xè:vüÇtqàˆ0u „Y®µ™ÐrF¸S¦^-‹—è W’§Ø¾â¶!ä;¡Ò}»®²{×sò£§ž’û÷ fôGêú_¸M*üƒPš “ä«èký϶µÚšá(MÈV…˜5é¡óΞ=+ÿöÝïÉåê }┫LY‚ã½™ ˆ@B›Áƒ›ñ7§…º­:þüÞ¿|WJOœ„o³ð•ÚÑvUÇŒˆÄyDBâ-B'¡ ÊÔ‘@¤ß§Ù2Si_²(z""c4i¨Ž?OŸ>%ª ô³…KGÝFrïËËöð @_  /(ó$ÐÇ ¸Y?wë=/¼ /ì~Aã—GÖþ×ë¬ ¶¶ùw¿;hÓ„Õ<Láì BQ]}Íœ.\¸ÐfSqYT˜ê˜G’üF¿éfª1@ý¸=âСCò›ŸÿRž^½ÊÌÄ *²™c'xâ<§P—b·¡ H©ÔVO'0#âÁûï¿'ßøÆ7äëßú¦j´ ðO|÷FB¾`Œ¶]{Õ¨Éÿ÷ÿí?ä—j¥°mC‡ 1!̵‡;Ï}÷FÙ˜gêpýý Ûxo4«B©hÈ`9¡Î&¿ª~AZÔÒdñ²eÑþ‡óÜu©Oˆ5$ ï葈wêÇ’€/ @€ƒ°oŒé  žÙkÕd³Í:ƒ™/˜af[¥_rêV¥M@ª®q'XN`½+f»&Nœ( ÜfÙ˜°¬Ç`Õ­¼=rÊŒNQ|Òtf; â`Îû“ÿú‰|úoÿVþûg?³¾3xð`=G±¨É¯ø{¤JýZ °¬‚öÞ½{åÉïí¶E eÌØ1ÑÚ€©cÝéá ÊñA‚™nW摪+«ä?UhýÔ§þZ~·j•Íìꬖ> T–?D”HXJB‘ÒÐÙp„²á©Ò­üÌYù– <¥ÇKϤÀÿs;»·ÛÏÌ{ÛegÏœ‘Ï=ðYµÖø¾äçä©Âf)g,¤Ÿ9¯„µOò)¨ºG…gy…ü¤À*SÎ1 v?¼h4:À0ùÛoÊ#_þ²ÔTU·+2úµ[ÊÒî $” ÅÉÌHÀ;œ0·Iã’ŸR'L9™™&p„!øÛ eăs¬0áÒ{«$˜×N‡€¯£ØŠÊJ2t¨,/YÞ®à eŠ×gÁÝ Ûõ«„UD6®['Ÿ¸÷>y⟗3*Pb97/Ï|6ÛúòÁ˜Ùƒ2‰Š$ÃgÀ)"ÈD–V V§€ûöì•yâ ‘Žžˆ6èÉóç®`k¤×_û½|ú¯ÿFV?ý´ Ö( -#ä.ç¼÷³Z>&H4ôDô{ü˜è;F·¡P £½3† ‘çžÝ%ë[æ'åpÊ0\ïúw¢ËÇüH€H€"¸€=RP|?~\Ö¯_/Y9Ùæ´­m&ZcœÃÔ…áa­EêëêdÅÊ2a„..ôæa °ñÀî”D(é›ߟ«s¿5Ϭ‘†¦­æ¹æÈ«ÍJàbµq}ˆƒös„À"¬Ž6ñt5Ô×Kvv¶ŒPEÊ:U®\yÅ•òñ{þÜfCÓÕY0Œm‹s9¿+ ÁÒš5ÏÈwŸxRŽ;.ãÆ33ÿ:½/f]áÂ1¶møÄ2þéEêcèƒP"Ôdn^®ú¥)¿üå/eÈðaò—÷Þkýß=8×½Wz±˜ÌšH€|K€ ß6=+îtöÿ­?¼%£G^¦*̾ôn,òTeÑ“´JuUé:øââb«j2T•‚8O:%?ÿŸÿÑ™ÿõrR·¡,9`„*Õa\S·ÓTmûžÔ ÂKFH…s•„à;KrTèAާ~ø”\uõ¹á¦M0GrmÑ{!ïXáè?ü|ÿßÿCú|7V zK;ZÕae(:³Ú¼y ôôñfõ ®ÿÕ«r ï!„ÇüÉOþ[®Tÿ·ÍŸo·ŽçYè­²2_ Hu\ê-Ìúù’›Õ¸3ÿmnnj7èK0=¬´Š\fþ_©æÿ7Ìœ)Ó¯»ÎrŠÄz˜u¿\æÙëÔ:ä3÷wòãÿXÊ+*d†ˆÌSsþ*?Æ%˜öKE<|Ó&U  ßdegÏú†zSáûÉ'ÿENŸ>c‚<Ú"ž~„síùVK”¯ýëòïÿþïê›!Còóó¥±A£2èúkÕ)è9pΨL$àX€¾Òð€pD Ë—"õQ¡öHòøãË‘#G¢¥„RŒ‰H€H ÷PÐ{l™3 ô+wo¿ý¶ÐÁV‹¼"æÂýZ¨d¼¹ÎâbÝ4œY(”’’V R“q ŠÙ·—^zIzè!yøK_’·Þ|ÃSxè†c?xï†ó. ÁãL“±i{«Ìtƒ®Ë è@èAØMøL€’僯Ëßþ¶ÝçÆÛNª'õ‡þéŸä§?ý©„!UÚäšpP! Ðn˜aÅý™HÀ 0ûߪžFmiŒ:¢ÌÊRÅXc“äÈa6òµÇ“šš/•e  ”'@@Ê71+˜êÜšn±Ž”6®]ÏJ:ÀÊ7£Y×^BÀcêœfm£kX!·-¤>]U!×ÝpƒÜ|ë-Ñ ’Q@^ÿÌZù‹?ûsYýÛßI®F†9d¸d´ «˜:N×m€ ‰ßLñÀ³˜ŒÌì‡U™bŠíGp˜®3ôP¬Ñè ¿þåÿµÌ]?Âuøà|»gÛýÆÉ¯½üŠ|îþdËÆM2¬h°äåäHšæíœªôoÊ›f ï å x…€½WôÝe*>èãx¿Õ~¼ûÙòÃïÿ§σ{ìÝë¾½R–ƒH€’™GÉÜz,; (70r³~€²{×sòÚ+¯hÌöL3 †›î¨`‹“˜.H E'^H`Šwa½ÂRŠE‹a§1wBÛ3ñðΩW_-³fÝé:wNÈŒÄêF?ÉÊÊ´:ÂòõeŠžI„ŽDrýû CI‡pŠp ø½ï~O^}éåhæ8×‡ØÆ' }Ç^xáùâ¿(/«Ǩ‘#u† þ‘Ù~í·z. x™@z[Jôk K«ÏDF0¤!+›SÀÝ;wYñÑßñï–Sj»çÈËucÙH€H YP,-År’ÀE¸Y>7P‚@·Jg¯>_Í+Ý@ û±ÍÔ9‹oß6s “m…&eåårµ ÎóæÍ³‹“™ãøIWÊ·¿û/òg÷ü/©Soÿ¥§NXx®|]ûŸ …‘.@_2áØg:ï0qÅò ðßjpêô)ù—'Ÿ´ÈÈ{žÑÇ ô˜ÓF=¶mÛ6ùÂç¿ ÇK[Dœ¯ê¦ RGƒL$Lз±4Íú¼.]ÉÉÍ‘:õ[¥Ø™S§­*Pº¢Ÿ;…l2Õe% / À˭ò‘@ $tF±¾{ÏžÌ)N Ø]èÜ.²÷ßa”šÓDe†yo˜Á׫Wu¬á^¾|¹­[uƒÑŽÜ“”¨ã½÷Ý'åË’¯~ Þ{ï=©ªª2SõÎ*#¾<çQ³òd©œÇË aÆfó¡XÑtÙ¨Q²{÷nù×ýWûvr} ýÏ)~ý‹_Ê?|îs…¢J µ”™PCˆ²sõdÎBþI"ö.Õ>lïZíóˆ°òúï/O=õ”Õ}Úõk§àN¢ê±¨$@$àYTx¶iX0è ¢0H‚ “ígÖ¬‘ õèÔß ê&—Øï„‰îåêÓ³tе©à! ³«uuµ2åª)²páBƒË1OJJfÔ€Ú‰,]²TûÚc‚egΜ‘êêjÉTç\èKMáöQ#Po|˜zNôÌÂD¿iKh(´ŸiÆuëÔgŽ· =Î_Ç/þûgòè#ª?u ¨çB\ ¨Êœ %•["`ð $ íÇÚ‘ÍùhHŸ‡¼ü<ùío#ÛwìˆÖÿv9E@t'7H€H€zL€ €£ã…$Ðÿ0(Âà¨Eü!½þÚk²}ëVsü/äPapSa$¢ ÃÅÿ@8V3ìý`V Þðëu6ü–ٳ͢Â]˜ÌÝ ³æg̘!ÿç›ßù·Ý&§O’JUYßQ%€öë[8'”Jvõ®+ÄõmìU`w 9°„ýÿ÷½•÷ÕÏ3>­jñýý7ùÎOHnn®™ýc_«vLàÇ3 %Aº¶ ¶eJ\âÉ$ÐðNÂKc° ¹º©A­®~üçL!‰w­{WõcQyk H)T¤Ts²2~$ ¬‰ìغMN—žì¬l"ÿAè0URL'¡ ±ªCê*M¢`VU]%ãÆ_.ÅË—E/Äì8>Éš0ÐFŸ‰Ub >\¾¤!?òÇ,egΪ©y¥ÅꆨTE’ŽÀ탸 ÆÙ•zÔüà!ýÛx6!©Yÿñ£Gå;ß~BgôÁZäÛßúgùÁS?Pf† (ÐóT)ÕÖïЮBxêØž=*/">&]€gVWxÏh*T$öî,}A»*ö}e;ù‡H€H ÇtdÇD$¬Ü€ ƒ£“'NÊVUdhh7 £lÀÔ6 JÖúõe¹M¦UpMêüÂmªæÍŸ/S=ek,ùÏþÓ?Ê@|?õÔÕâ¼Uòuæ\0ÓÜ –˜©†°É”X-*ôçéÌçîçž“ýà¦øù/~nÑr4Ì”RPXcàŸëÄ6sóíÞX¶–#¿øå/eÞ‚ÛdÌØ±Tx§…X  À‘\ 4"«à_P¸™‘ÕêùÿÝwß5GJéiúhSHˆ»c v:xBèªÑõð#5ÔÚ²eÅqç“l Ù̳ü/ÿê>ù»°xõˆ~€c‘psj¡KJ pЧd«§WË Ë“üü|3õÿÉO~"øä¨R @à”Ñ–¢ht†°šúcÍ? ¤*¼[`¥TT4HŽ>"?úñSµª¬ ô*ú =oL—NÀÍÆVTVÊæÍ›ÔX@2Ôd¸µÍ'À¥ßÁ_9`¶;”4/øåeöo¾Œ¿||ÊC0%’V!¹>ø¡Ê?~þ!5= Ç3ÁB*çŒ5ŸØî`ÊpUÁN'!ðCáeKšÎ„Bàojh0ÅTDƒ^ÊD©KÏœ]B °iãFyN-c˜H€H€G€ €Ä±dN$ÐoÖ¯_'‡–ü¼|Öú­ I~có¼®öÿ:ó=LÍþW¬X‘ä5ê^ñMÕS±®ÜLÍu{ÁüÛäaõ pÙ¨ËäØÑc&ˆÂJÀY ´Ù£Gn VL=#€å&Ž9r€…„õÒQ¸è>8úËÒè Htögø'E @ðGÇ3‘£Ëªkjåç?ÿEÔ‘mŠV›Õ" >%@@ŸâæÍHàÒØ l› °êt€´~ÍZs–™•iΔtºðÒnäÓ«›áý_°fµ ˜;žL¸b‚‘prªb€[Jâ¬JP×ëgÝ þŸÇdüÄ+äýãÇEã#ØÒ‹ Ë%l¦N¯5nìs=êéÊ –;°¬°çßÈ©íÆ>XàyÇR;Ö£;ñ"HÖÇÕúНA……²÷…dû–­ç>ÕßËçU˜;H€H A¨HHfC}AÀ j±Ÿ=Ï?/xó-sØàþ0×eJ¥{`ÀYYU¥k¯óeyII´j±¼£;SpÃõ¯ØªMžr•|éËË5Ó¯•SgÎH}C½ ª˜¡3ôêo²ª_ŲIÔ¶ÊøÆîÙ…¦­x¦õN/Ô>‰*ó!¯ÀûÄܪˆÍÍÎ6㪧WÙÒ,”Ñ-UòJyY H6T$[‹±¼¾'!—›©]½jµTUU·™ë¬ 2ÎÆö¨Ÿ”[•*¦M›&Ó¯».š‡cÝá³É“&Ë·¾ùM¹zÊ)=qÂf«³ÕQ"B¶¨%@ÐÖ«óŸ“KíT¢´=Ë´é¹Tº¼>™@†ˆ˜øÀ!æ³;Ÿ•;wZðï”Î .™êŲ’ €pÄæ…V`H ›0àÁÇÅAM#÷ì}Ñ<ˆCxá¨-²~²›Yò´6ò+Õ™bvv–Ü~ûí¶×ñö3$ô+pR4¨HöíÛ'Ï>û¬ì„ÿ ZÍ´ÏŽ¿H€H€:  þ$¯p7ðyãàAÙ£9¹¹&ðÃDØ–`vDPLÝ#¯ÓH˜iÊU–ÅË—KmÊX[8æÝË1uÎBÝ¡A߃iÄÈ‘òÐ>/7Ìš%g5ZB“ƦGèI³JÑ©»X%•ÛN"¬ @oÀì¿…¿l³ñÿ~R•iUuµÕ‰—ùY û„ 2äN 8ÀòHß)õõ ºl+[ÞÔ(8o½ñF» ð.¿™L$@$@  s>(WO*gËÎFfåÜIü& ¨ÓVXøcé[~~¾¼õÖäàï_·ÜðNw Û±¿Ý~~“ DPÀž@#ój˜VC ‚Pjk©UàzÕjsX×ÒÚlË (87äñX%<^°-+/“[n¹E¦L›j¥År pgê·Týr€FSxàûe¨F(¯(ç`¼gHy @ ÷ïb‹þ»˜••%õ õ²wïÞ˜3$ªÄ¥ þ  v8Úm‡ƒ?H ÿ 8 ` ü#íÛ»OöíÛ+yyùæ“0­æ 'þö³††¨~n¿ãvËÎêtÎ(þÌxE”€³@ÿEš2mšüå½iJ•j µÛWÝ9Ñ‹¹A$@]h7é²·t{§D"‘4Ë«¯¾*uuuÑ+ñnÁ»ˆ‰H€Hà⨸8!~#«@!¶lÜ(Uc=;'Ǩ¾ꤩ©QBé=@ËšÑx Ô, @²hÅ;ÿµ½«3BräÈayçw¢UpJ©ˆ"á œG€ €óp ô?gN’þÃÛ²cÛv †4þ±š©»ÙS÷Ýÿ¥õn g‚¥4b’¿¶¦V22B²´x™CéqgŽ.­Ý ¼c.÷ÜsÌœ5KÊTé†F'ç2•? ÄCï§;„ Ÿ•™%ååòF‡p€±JÈxòç¹$@$àTø¥¥YϤ!`ƒœ63jzýúõRZZª¡r’¦^+(„{ÄÆ:ÿªÊ*™}Ël™3çVLšPêµ§Pyòòòä`PQ‘ú]PÚt^™BM̪@ŸÀ;Käjkkl€+üæ Q àˆð›H€Î'@ÀùL¸‡aks}‰H€.•@Zoø49tèTWW[vP 3‘ tN€ €Îùð( ô 7ˆY·nüACåæäZè¿~)L’ß&£imÞýkt8õê)róÍ·Dkå„~¬…’€©w¬¼ýv)Y^"j²  èãí¬]8nïðÌ•R•€.'ÊV˸'OÊ›o¾iµÄûœïñTmpÖ‹H Q¨HIæC €‹“A!¬®]»V223t¶:ÈÙéòuÊX¤«ÅâeÅ’[o¹µ(ìXgQ8ör'—Á$׸ª€ß'ÿJ®œhH‘|ìž?—Pv¦Ô××Ã'#FëåV›p–Л33ˆ%Ъ¬ÃÇ}=ç¼o}7 ïÚy@ž¤L ý–L°×Fˆ6ƒ6Z†*Ç[åÈ;‡£å2…cô7H€H€:  #þ&~$pŠ4ÔÖÉúµëñé1˜1! ±ÿ˜â"€¡b:¦ütx_£kÏ‹‹‹%Oý)p€ÆK:Ù™ä:ç\K/–’’©Ô¥ˆlýh#(cš¿û’XóâÎ ÀÚ§ã'"Tž“ïœo´M6@IDATûõÝ •%§!èü<ÚÇÐN¡Œ 9~옄›è\´ñóv$@IJ€ €$m8;µ lÛ¶M^yõ0°Ð„[Ÿ~nÞ#µ+ŸÈÚéØž¢kjªeÜØq²háBËÝ £‰¼óº0 СÀBØ.ÛÖÓî¾ûn=z´œ9}Ú”ˆÄc©À…óà^Hgåû å`+üœ÷‰ÿè’øPþOD $>,ã …TPz\ÊΞµ8¥câïÆI€H 5PíÈZ¤„6mÜ$õ &¼¶èÌFffT€J¡ªözU0¬««×ðse²¬d¹ 1Âî ¥S߀² ,³bi“ðGŽ%ÿ>nû«*+U¸RA0ݬú¦T¼‹/ @ŠWq>ö?ìIOœû¨¢Ê)«Ì"…Z) òtB„œrõ+rìØq+gÄ’ÎÛÓåfáH€H ¿pÜ_äy_ßp&¦RcÓK/ýû÷K^NN›à¤ÎÒt†Ôf¡Ìœ=ölnwJ@Ç€ˆ}Ùe—Éò呵ÿF‘:rï4ì1޳q¾ ð//Y!Û¶m—];wJaáijjÔHEAoÆ }OÂfôÍɧ*  „‚0q³¦R¡Þ½q®»F7l9`únÄOˆ*TÈ ¨¢ -ñ  ]g["€ŸL}NˇÐNÕ55òþûïɵ×M·2DÛ´ÏKÄ’ €÷ Pàý6b S”€ `pбdºÎXαÛuÞõÑ»?&¯þþ5©¨(—Ux¡ÍÐß™H #ô4<¯µC;žu›Å×çïQ{ö%ÝHM RÛP/ –EVV–äççKAA ,‡ÿð¶~‘?è÷™Óg¬L $GãÑ· Z‹¾«£KôNeE·oÉã% ýÀxk»?^ïÕ<ŸH€|I€ _6;+í%±³¢k×®‘ÒãÇå²1clàˆÙ$K&ÙF”^*»—Êb¤ZT Ð8f 1#³Ðå+–Ë5Ó®±¢Âü¼!€:!ÔKuðKY´ÅÇþôcòüÎçädi©ä© •æú¼_`°žÝ"€>ƒ%"¡`HÏoU)¡¿AgûsU¨¿lÌh™>}º\?óz ÷y…\¦N&C—èë3ýøÀ‚`Ìè1rÓM7YYϪóÊÃGŽÈ+/½,{÷í•CxGŽŸ8!YÞrÐÀAj}Ðd .SÜš­BD©(UÝjðnœ„w¾-P%Þ%gΜV‡¯5Úr»q5O! ÿ À¿mÏš÷3Ì€:AÛ¥:ômëV)0À3¶VݤÚ6%@?—×ë·Ç°: ³Çš Cbö?O‚+4ä\l¢àK£¶cûþ°áÃäÎÜ!O>ñ]£–P¦ xìòýÓ0½+ú fý1ãß ³üµÕQ#† .S¯™&7ßr³Ìºá3ïï¬ ¦DP% f‘°Ï%·Û?±çº}ø¤Ëð™qýõò±?»[^:ð’†m]'/ìyAŽê{<;[—äå#w[^ ·iÚ¾ÏÝÒÝšß= `ª„ÊÕœœ\CQ8¤ 0y €¯Pà«æfe½FƒI—~û»ßÊ!51><â©>²?b*¤œºóù}éà$*4©÷ÿ:Y°à6™®fæ± B£Äéûmô{|à˜- ß%+VÈÚgÖjÿ?$³Š´ #BZß—Œwô"ô•&5¯?}ê”)ù`Ú¿xñbY¼t‰Œ5²]‘\ƒw¦³°rÎ?q2ŽÅ&sûÜ·».úÞmÚñþÀ9îƒõçPàóöÛo˯~õ+ÙªŠÜ“§N›#W, ˆh´ôžío[n÷@diHšFÊÉ UTVUÉ(×¶wmÙìy ¤,*R¶iY±d"pJ¶[·lµY âêØ}/Šç˜;×}»¼:þvBçÔ©SeêW¾"kŸ^-O~ç;rêÄI:l˜)ZÔOIP£ÀR!¨Ê Ôá 322¤•fêH$ˆ0üBÔÔÚõ®ô 3^B$@)O -FMÊד$Ï€©ú† ëÍÄ5¤§0”á00þæjÑ È1ó[Û;î¼CC|eÅŸ¯è3¤ChÂÔ÷Å>ðA‹µÞ¬ë»7ˆœí³&鳡íñ‰(7Õr' ³ðzw<ÇêDï”:ÚËS…èÿºçùæ·¾%ý“?1á}Á¤z®×£Å+Käñï†H€Hà⨸8!^'°ûùçåÀ’“›Ó6³Ða Ežž€Çà¯BC@{¹zÿ_`Y`–0VÐìI¾¼¦wÄ uØF[!//‘I'I9fòôQ¨i8Sò@·{ñ[?‚+++tü ™¯ÏíW¿ú5ùÐ?hÂ}l¿ýè'®¯xŠ•³­ocÆÿÁ”;ï¸SŽ«–JU~ þ`ÈâÙ{½>^,ŸYN(c„… 3T‘âÅR²L$@$à-tè­ö`i|DN Ö­^£&ÿÍ’¡¡¢l[·0M×ÐR&ýøˆG¼U/ °a8ŒA ¼…·ªEÌ PGaNHh'tÄ{žßk Ü!¹öq¿óòóTœ/ûì·6„ÐÇ51†*©ÿ`Æ»QßyPÔ¡å­Ýõy=^Zª Ð\¹ÿäÃwÝ%Y™VO׬ýu~»¾‚gÛí÷2”ŽeÄzÿ¿ý̧52Àiy^•¿! ]‰Uã¼XÝ\½\'O–Mÿ-€2 ÿÕÔÔœ{ox²°, ô?N­ô°>%ðÚk¯ÉKûHž ÿ&Èb`œ†A.KNctÙ-0àk lö_C…3F½É/‰^ ƒê(Om@8rÚ K_\ÂLðhm˪ uèÕæÀãwòÐÇÔ:BàŬ7 ï=*㮘 |í«ò'wÌ„÷¼¢O8»mô“d0ýÔøü¿pvùé¿ÿŒŒ¸l¤Å¬Ç«¾µ9býrþÙÜÓ÷o@Pß'a]Rk¯9‡ìªõ×ö~jÔÐu! ˆ¨öíyëƒÞPñ}Ñs޼’HÀ¨ðG;³–ýL3HÝÀäC‡dóæÍ6–¡f¡0_„PœËtqàñˆ¶˜õ1b„,[¾3L@E(@ªAõQR Ðw'CPb-±:ÿ+((EKÛENÀ·[cÞEn<ìè÷0GÛæª3ÀÅ‹—س€}LÞ'àn±B<”š˜ÝÆ{o°*<PáÿŽ~À*ƒwÎÅuxGâ7žÛTN¨+ÞK¨÷°áÃå.u|ˆ…¦îL媳n$@$@!@€G‚Åðí*ü—¾Tæê€7"ì¸Y2 cÏþ¡gM,'À¯²¦Zn¼åf¹jêÕ–‰`ãÛ}â̧÷ô}'¡3oœ%ƒ‡“z•Gà+ÄJ KýÔJßí×bí¤ÎþÔ §¥¥YÞ?~TFŽ->ö5™·à6ËmížUÿH¸ÖmÛŽüƒ:£îÎ `qñR™4íj]ÆTeýÛÞYZo÷ï~3‘ @" PHšÌ‹.BÀ ⪪ªdýºu¶æ?Sg¯]ø'\Fyæ"ð:îÖñ0„ ,˜…'ñ¬ì,YyÇÑÙ~ÇÚ}w¼œ¿½Km!ߘ 5f´LÑ¥ ‘öÕ6w‚c ý\ÔïÖÈG%Ó6ÃóoìYjÝ„÷MMa)=^*—_>^{ì1™:mšqV:hëØÔñwì±TÙv‚½s`Z K"–GÌÿU±i .<ZaœëÎO•ú³$@$@ýO ý¿¾ý_–€RšÀÖ­[åàÁƒ’¯&ëͶæ3¥«Ûk•ƒ²M2ãºë£^Ä{í†Ì¸Ï`f&ÿP@š7ož*y²¥N­ 0à qD€ì³"ñFÝ! %Ú¦©Íª môî»ïÊÌ믗'ŸüŽLš8ÉÚÍ)ppÜ)V wÛË—ËUS®’ „°S.ØïeˆÛŸu& / À ­À2ø‚Õýöw¿SSæ€dgeë ÏÕN|%•êêjcxçw˜°˜ø1Çþ"€öu7Ýx£Œ;ÖL¤±ÇÌW†OÈþj“îÜ7òJS?ªÄ9QzBn˜5S>ÿð—dä¨HhNäaŠmG'üv'ßT:Çõkgºʼ¹s5ìe£)Ià K]˜H€H€H ѨH4QæG!ðÜîÝòòË/KNn® òÒ9¶»©ów»A³;‚qqeE¹\sÍ4™}ë­n7¿S€Ú³Ÿnt^~¾\{Í5*ôÃa\‹4µY¤@USª öŒªVÎìàðïŠ+&ÈWyÄ„ìs¿û†"ÇɽËð ŽÇ­sæÈÈ‘#%¬J€ô´@»c~äÄ:“ ô*z-sö)7¨s;`ÀkÿñÀefF¼ÿc{ì9>ÅÕeµ±&3Š +r® ÿºÖ8M-)Š—-‹˜ëo²ìeRœ€vÄìh¬ ô 5#ÏÎÊ’zõ€g)¤Âcd•tRT)u ©Ï"ÚʵÖµŸ>sF&Nœ(_øÒe¸ ´HÕ (vÜù© æâ5CÝ |»¥ãÆ_nþ.ju©K0¤ åYsñ¼x„H€H€zB€ €žPã5$Ð òbÓKûÈþ=/J®šþCpIÓéÿ´@:MûÀ2yÒ¤H1Û¡NàõBÙ½\†éÓ§ËUt!ZL@%èéøŸ‰H€H€I€ €DÒd^$ Üì¿û~ë­·d×Î]‚pOfÃê%NÌà霩sûBYb]›ÊPçU2fô™«N³ Œ¸ÙDÇÜðOJ˜>ýZ-Eä‡Fý·2á+;žU÷,â¿™ºG`Ê”)’¡OPtE-´ë9žE$@$Ð]Tt—Ï#npÞËqúûGÊ–­[Lào7Û@9¤-fÿ[t`¬£änæêßÓœÀ‘­±àk4ôBŠ/3 N¸À7ËNéâ_Z©[óñãǢ±cÔ$l³£XÎÔ÷ðŒ™#?å÷XyY¹Ü}÷ÝòÁ»>l…Á³û\ö} “ûŽp X8`€:¼¬Ó’».,= €7 PàÍva©’˜@¬ ºiÃ9qô¸ªùSs“­ë„Ìs3—tÙÊ&H(§4u—oõºYÆ‘—‹+î2‰åîöñ;u`Vô Žìùi «ù9gFûºuñŒtöÏeXýpœ-/—EKË=÷þïvEE€[–ƒo\ÇÔ9g%1~Â2t¨E¼Ðu_Ä£$@$@$ÐTô/!θu¯g5Öæõ%¨` šáă¼f8Õ|¿™º  Ê’€z‡ÔWVV& ”+WF/‚`á Q,)»aæÑY™&|ªÍGÊÖÓKsϘs\ á?]Ÿ»÷KËÔk¯‘ÏÜÿ÷Âr€6³÷â;vÛKuòrY† "—¾,²Ä…]ÜËMŲ‘ @Ò ’´MÇ‚{‘Ç.mÜ´QÞ|ëM)((0Ïÿn,‡ïØóÜùü>Ÿ¼½ƒ>õºöÿÖ[o•Ë/¿üü¹Ç&\q… Póèf]ÐÚÂ0€}ÑèP°…ÕgfF¦*-5ôŸ¾ãjÔIÝàAƒä3Ÿþ´ Ö Nø]þÔeK¥{8‹ U›è;n¼- ë²1&  H4*M”ùùš€›ñªÔ0Në×­¬[ÏÎΡÀßÓ^¡ú0­TÏÿ…ùrçwZNT ôhr^çÌ£GŽ)£ÔD*ƒ Œ2õ>õNáñ_µ.R§NÿÐ÷ß¿L:Õ `Vz¬Ÿ˜.Àõwè QG€—ž%s   (*¢(¸A‰#°}Û69xð äääèzÿ¦Èvâ²÷ON:õßÒÒ*Õ••róÍ7Ë”«®²º;E‹@ø»¦®½9ã*ínÆÙßTú°ö0ç×ÿÔ3}µ:â¼ëÖ¥ÅÅV*ãÓ±GŽ%YÙYª8¦£ËÄÐe.$@$@±¨ˆ¥Ámˆ“@ì ÍmC8Ù¼y³444DÖÀž[gîþ:Bž zmË(°ÅÚºZÉ×e+o¿# ıŽîàFJ@_pmŽeAפ!!™zŸ€ùØÐÛ€÷©S§dî¼yrß'ÿÊnÜÒ& :…Œk£Þ/Ujß!7?WòóóÕò"í÷©]cÖŽH€H / PЗ´y¯”#`áüTàǤ½/ì‘×¼"ù¹yÓY ûÇÔ5s”Øv­:û_UW#Óg^/3f̈fbŠ‚è/n¤:'`¢žcÆ•‚¢R‹eª`ê]pø—®Q8ŽŸ8!£•ý§>ý7ÍwÅ~´œÚ2:6íqcÄöeÿdzh1Tªô)/$ ¸*.†»I +˜U¸ÇÀ Š[ÿºvÍ9sö´äçåÛ±p³:,k›Õî*O?ëZc(TÒ±ŽØ„ÿuüW'ÙºŒâöÛo×È T¤ø¹¸º1BŠ–u SïÀ»­Vþeéò‹¿þÔ§dôè1½{Cçîþ(а± ´åcXzÁD$@$@‰$@@"i2/_€Àyp~ãà²s×.Z1nkÖÁ3œh9å€/ÅQi„GlUfp~ e”5ö;Öÿ#9+‹8²ä©)@À F¨J¡ GÆ “íˆÁÔ‹ôÖ¤***äÃú,\´ÈnÛ½xwßf/† …ú8 $–‰åÉÜ|D‚?ÂÎK6ªþë_ÿÚË‘N¼A9@ÁµëŽsb| ôgddج#+W®8Crf²@ºæ™Jgt4/G4{¦hYÓËÍœ&gÏž‘k¯¹Fþüž{ì^|öz¹{¿áÆX—Ñ`ïgÎ$@$àSTø´áYíÄÀ`ØÍþ¿ûsç³’•IÕÌ“ƒ:“ƒµí0mÜ%æî©• &Í-NXPUU)WªÃ·… ¶«(•)ípøâGÇggÌØ1¶îÜõÎ’&¨èŒ?Þiøkÿk5äß ƒä“ý))8@ªU“*è:¶G‚îîëlЗSE€(ÈÏÓ%f³tñ5VžH€H á¨H8Rfè°a°ìÃϬZ%gOŸÑй6‹ðuH8Ï9µó ›žÔ³¹YyêÞ±æ8M'%+WX(ÅØüÀÛ1ÝÏíÔ%`BiÌlÿðáÃ%Ï™*Öô!4%›v {S—B/× ¯«æV ©_“` (õŤJCþýÑG?"×θ.rseŒgÏ)^z¹D¾ÊÞÞk1ëýsÔ`FV&Yûª°²$@$Ð7¨èμK À€Í­í?}ò”lÚ°Q0cD+|c¶ ãjg%‚V¥†¼RŸâ&Ð-+“‘cF˂ŋÛåoƒdHzL¾&0dðT4HDF" G¨'›¡†B€)> fÏ–²ƒ®E?§Îœ‘k®›.ù“¶Ë ï<¾ÏÚ!IØ´Ky %S RÙâˆð›H€H Q¨HIæã;±³ÿ7l?¼õ–Å«§øW€Ì…IH×þ××7˜÷ë%K–¨ùñÀø3ã)GÀ Fxæ†iˆ´¢AE¦H×k8KCÂr>†"î?=!ÜÃqiEE¹ 4Pî½÷^ÉÂ’&¦^'ÐÑÊ%';Û¬¡\Ÿïõð$@$@¾!@€ošší-5ºNvÓ¦M:PÎQgu6ƒÝ[÷JÕ|!|Àœ³UUU2fìXY±¢$U«ËzÅI £”“cÑl=ºæY;­¢Ì jœ·ðõé˜w¶Š@¨ÛÕjú×]wÉ 3gúšK_V¾£uSŽÎþC!C €¾lÞ‹H€üA€ ´3kÙ œìF5ýKgÿ.²ðu½p+_d †L РkçÍ›'#†ðE½YÉÎ ¸™ÑŽR‘>oAýoÒH&(©uÎZ ó\yô<*ùƒõéS§e¦ þú§zÞ)ÜÑ{:öÛlµ@ÿ†’‹‰H€H€I€ €DÒd^¾#€0u7mÔXÙM:SÓ¬‚HÐw Qa˜éjll°ïwÞqG"²e)B £p„j Ó8éAUá„ „ìz¨»ÅÝ’‰4õ_k&X1Ý{ï}’§Nè:Z^Ä9/è6§èrÌsss%Cß¶´-{évF<‘H€H€º @@€x˜b `6&vFæÅöÈ믾¦ÉsÔv“NÇ^Åí®¨_QŠTÖ×É-so•Ë'Lèê÷ 'ü;ÁÈU{ÄÈ‘ 0õJŸžžfŠwœß'àXŠ©3ÌúÚjV뉲š*)ÖÈ3fÑôÿâôzçˆëç.÷ õ‡ËÕŒFÿYÁò œ×ñ\w ¿I€H€H ;¨è%žã{˜†à³3ýoÖ5ëOÿæ·R_Wo޲‚*ŒÀSüÀ´º¶Fr òeåí·G3p‚Jt7H À€Âu’–¡Â ±j}) Ï)ûL×]d³:NlÑwXff–½ÓΪ×ÿqã/—}ünË,)hvÍ2Qg¸~똇õß,o¡N9Q„™ €#@€#Áoè„gø`pæh¯¾üŠìyqšÊæêLMº…ÎrÊN²â¡ Àò‰Z5?ž5k–L›6ÍΠrP>ÝûÜ9Ùjusõæp“)t€*é¨p|:ûÆL²I–ª<ß„S„ï|à2jÔ(;ŠwÞyx™zŸ€û7ÆÝ)]ÿ­ATóÊèvò›H€H€@€ €@d©O¦˜n@ìjûÌêÕ¶þ3h t@æÀôà»^…¼¼`Àí¶7¢HÅÊ'¸NxOÁdÂ"&èv•.½™3w®Ì?/z'0v³ÑŽwô 7z…8wd ë&  H4*M”ù¥$ †Ý€øÔñòâsÏÛŒ?ÌŽ1   «7?&m9….ØN×i*‰œ.;+“¦\¥BÈœèÅŽut7|KÏTlpÛPºÁž=µ¦PJX;Ítq&dÚìºTTTJŽÎúðîjwÁ9Ý9Ÿ'íNà„èØÏq´•)•ÑÇÛîØŠoôÃD$@$@=%@@OÉñ:ßpƒ0'ܯY»FÞzë-)ÔÙGÄâëÄbæÑLûUø¯o¨·Yÿ;î¼#²œ"¾ìx¶Ÿ ¨ ŸŸŸgÏ úRSS#qt£O ¬ê5ìæâÅ‹eêÕWwã*žÒרËêkâ¼ øƒþhgÖò8ÁYTêŒÙ†õ$77ÇVÌh3ÅA@G´Ÿhüvµ­«­“É“&˼yóãÈ„§’@„@ž:„2 ÞÿÓÓÕQ§›&% N ƒA©®®–¡Ã†ÉG?ò;·£ùy§ð @Ò  i›Žï+±¦™[6o–#‡ëÌcÍ6vìuþ·¤™ðÐõþtÉÒ0œ^›šÂ‘hx8™.J¬***äÊ Wȇ?ôáèy´ˆ¢à ¤4*RºyY¹žÀºþ †wlÝ./8 ê4+ ³Ø4ÿŸ.d33ÙnQ³mu¸P×# ô„@ZâÀ À´ëß—ΘéçHÚ¬¾)+#o+8P «Ÿ„ºÆz¹mÉb):ÄNÆûŽþLÎqã ¤2*R¹uY·¸ ` +ü»m¬[ß¾u«9°ƒÀÏÿL=%&gËÊeøÈ²|E‰eâ8÷4G^çOY™™ªP KXÚÔüJè#ÌC@ýøGßi°¨­­•‰“'K±.½A³E¢s0‘ ¤>*R¿YÃnÀ f§1Æ€c'˜î{q¯ìÛ¿O×þç« ÅB2ÙìZ7óæimT8à -Λ7WFެ?vœÉ‰â!i_¥Úµ&1A6ž‹ýr® ø†)b}£ï¸’’9b„pï=>ƒ~é¬' €ß Pà÷ÀúG @ w1Æ¡@r¿×¯['§O–Æ7‚SÜÀÞLJ¨éñ²å‘H ŽsÜò_È+,ì¬lUÚ¥«ÒÊ%<ž˜çf¼¥ìM8úA´<ƒ“&NŠrŠL*¢H¸A$@$@)M€ €”n^V.N€°Í&bЬé÷¯¾&»ŸÛ-ùðTï HTă×Î㺺Z™yýL¹rrDð%>L$ÌœÉT¥ú•=Žiö€Æ“EjŸ é_ÁàMy›EÖú755Z½cNÚ@X;   *ØH ÿ±3ÒkÖ®•cÇIŽ HSs°l(ºüãfÁ ¬?8p¬¼óöèµüc.ÑÜ .¤©é?üqDYº1·‹Ë|to«s ¿à(Ñ%¼çð\òùsDøM$@$@©O€ €ÔocÖ°›0v³ÐNpôÝ÷äù]»$7//¢0ùB‡Ñ:h¶O7óöëiNð‡ƒ6¤²³geÖ7ʵ3®‹"w'ˆDwrƒºA £ðоÄç²=8{—éû ï¶€ üö,âý¥ ü˜H€H€H€üE€ µ7kÛ Nu§­~z•}ÿ})€ù?SÜ‚ —¨\¤¾®NrsseÅÊÑ| ”8%At'7H »(ÈvMªfÿ!î[Tµœ`"  ð'*üÙî¬õ@Ål™[[UY);wî´ÐbÎ"à—q×E˜àߨhBœ´Áùßu3f¨À¬èŽyt7H€H€H€H€H€z½†–'7í„ý6ÈáÇuÖ:/âI;Ù*äò¦¥G”* MMåwÜ© •€™#CÑæH؆€‰H€H€H€H€H ÷PÐ{l™s€ ¡´RgÿWýn•„ÃaÉÈѵXÚŠÌü«‹?©ªª’«¯š"7ß:Ûrj‰ö"À)zp+^B$@$@$@$@$Ð ÁnœÃSHÀwvlÛ.¯|]†©øñ à;—Xa›Ñ×Iý¦¦°„B!Y°x¡ddeÚL0q èná¬.Üo~“ $ž-Ï”9&1ÌB·j˜¬Í7I³ ®ÁÖF÷%qú«è­êààjtöü„ ²pñâ %ÐApÁ“¸“H€H€H€H€Hà’ PpÉ™Aªؽ{·ìÛ¿Oò4ôÌÓÓÕŒÝ$ÙT«ho×G•)VQ—ùÏ;GŠÔš‰¦þ½ žù“ À… Ppa.ÜëS0[ÿío'µµµú/_ÖAˆUguôwªÓ?puÙhY¶l¹]Ÿ tö7J^@$@$@$@$@ !@@B02“T!ðò˯Èþýû%''G'ý[%¬ÞëEø˜ô¤}a=çóæÏ•á#GXœýï I^C$@$@$@$@‰!@É&1™KŠxzÕÓR^^.¹9¹jþߢæêé’¿)R¿>«†2«ÐH cÆŒ¶Ð¸o‹úV ³¿>kÞˆH€H€H€H€Î#@ÀyH¸ÃO0KíÒÛo¿-ÏïÚ%y*üÃK}«®]k»f[àÎâ÷ ¨†Ä-“Pl’¦Öõõu2gþ<vÙ(»Ä™þÓ à‚¹“H€H€H€H€z½Ž˜7ð"þøÄ £k×®•ò3g%;3S…~Ìþ«H«±ìuËUðT™à'Á’ þà†µÿCŠ˲’’¶ÝºŸ~<Õf, €ÿPà¿6g•@¬à G“-›7Gþ6ƒ˜ÿÑ”\ÐE·Q¡¿¥Mø‡›¥²²Jnºé&™4i’]ˆhÎüß"t‘“ $ž‰gÊ“€„QÄŸwBéÖ-[äÈ»ïZè¿´ôìÙmÍ:¼ÖkÎ]wѦU”´ªEEº²«««³ ÅË–ÙU0ýU¸¸¥]dÉÃ$@$@$@$@$@ &@@‚2»ä!àÑŠÊ yfÍSd¨ù?œþÁèÇ[UøÇÌ6SÀJ¡57‡uí½Ì™;WfÞ8Ë.‚ð–nÉ/L$@$@$@$@$@}O Ø÷·äI ÿ ˜p¯B)„Óm[·É[o¾) Å6y_…Yóþ¯ÇÍ€‹:m4p¯:þ322dÁÂ…ÆÖx¶] k ÇÝY^tš)’ $”-Š“™% ¢BT`ݲ~£è¼¿d3"b>d~MçæýÏmEŽðïù`5‘&555ríõ×ɬ›n´Sà?œ1ëï–¸ïóóà     Þ$@ €Þ¤Ë¼=KÀ ¡ÏîxV^zé€dee™+ö{¶ð,XzºjMTO‚ïââbÉÔ¥H޳+rÇßn?¿I€H€H€H€H€zŸ-zŸ1ïàADa°qãF©U§uyùy*¿r¦¿§M…YþŠòr™6uš,X°À²1Š=Íב $œ GÊ “…À‹{÷Ê‹/î‘ÜÜ\ Àó¿&(˜â#eJmm­466JÉŠ6ûŽtöGžM$@$@$@$@½M€ €Þ&Ìü=K`ÕÓOKUU•def™‡z8¬3Ÿž-±· «+`ÒäÉ2ÿ¶ùVH(hîï­öbiH€H€H€H€H€ ö”'Т¡ü:š£¿qð Ù³gdggëLuº¤éÚõV¬c·€)ä’*gðø LqÒ¤3ÿ@P-Y,ù……Ѽö‰H€H€H€H€HÀ;¨ðN[°$½@À™ô»5ÿîׯ—Ó¥'$';Gש «ܹî~_„€êIZ0ý¯ŸP0dæÿÃF “Û/´ ÀÑyþ¿HÜM$@$@$@$@$Шèè¼e߀ðõèNÀ?~ü¸lÚ´IãÕgJ6¼ÿ«@«Z àx[À¾-`Þ ³ûMMæõ¿¡¡An3WFe5GX]0‘ x‹Þj–&ÁÜ:ôØ%«W¯–ÃGËСC¤AÍ×›T…Ð …·.Á%H­ìÀ Ÿ ù«“'OÉÈ#äwÞi…àVÍY    H~T$²]pæÿ0K/++“­[·ª§ú,ó ÐܶõìÈJ•m™ºA T« µ«òdÁÂE2zì»Ê)ÀÛP0‘ xƒÞh–¢ @ av_ÓÚµkåíwÞ‘¢AƒôWš„2B&¨¦ë›ûo¥éººÈ›ÝW¡>¬Â?Lÿ"‹/ŠžÝ1ô­¢h¸A$@$@$@$@ýN€ €~o ¯Ô×Öɳ۶KP'¥!¨šçÜ\MÙ1S¦³Ö\Ðuk¤)?ø¨m¨—ëf]/“®š½(Và‡ €w½S–„z‡€DwíÚ)¯½úªdêúu3O8ýÓÿÚ½s÷ËÕ%ieJ^^ž¬X¹"¢8I±j²:$@$@$@$@$Š8E—Š­Ê:Gëûý›ßHUuµääåš¹?„¦ø¤¥é+C-êëëåú믗›n¼É2àZÿø8òl    èTôuÞ³Ï ìÚµK8 C‡ Q¶†½Ï ‘ 7TIm]­…P\¶l¹ÕˆÂ*4,ë@$@$@$@$àTø¡•YGY·~…üËÎζ°†„!ÿºìN¸wß“P[[+Ó¦M“[n¹Å®Ç±Øµÿ]fÊH€H€H€H€H€ú…ý‚7í Q!U3Ý~õ•Wdïž½’›Ó&ü·š@³L&àøÁJÀi"ü&4jØ¿`F†,]V,™QÎîü çÆ½$@$@$@$@$@^ @€ZeH¨øtLkV?#gÎJNV– ¬-ü;"ºàoõ6Oþ˜áªàôéÓrå”ɲhÉb»çPø¿ >î$    Ï`Ï5 ÔS±ÞüIúáwÉs»ž“̬L ƒç„Uzþï3ø!Ô”%ø„M€‹–-ÑÙµ€²ÅEXè43$    ðZx¢XˆDpB¬Öþ:|Hr5dÎUK³ ­8þÿ»O¬ð9~¼T¦\=E.^½³ÿà e €· Pàíöaéâ àîûý£GeË–-’¯ÂfF¦„Ñm3[#_¿žŠuÿ&ü·-‡Å‹Ë€ÂQ$\EÁ     ð<*<ßD,`w @µÙ}áGZ¿a½9rD Tø«0›&™Áű‡%SçÀJ]7ažÿ'L/K–,±‹küÀ2( ˜H€H€H€H€H€¼M€ o·K'¦Huµu²kÛIÓŸéð`ߪëÕÚÝU7ЪŸˆŠ ÎÌ}t:„ÿP ¨æý«‰zõpã-7˰#¢pŽE hS¸DpƒH€H€H€H€HÀ“¨ðd³°P=%àf¢·«éÿ›¯”¼œ\Á\?„U¤pÛÌ¿ûm;ùç<P¤46Àñ_PêêeÐÁR²reô<ò‹¢à $ *’¦©XЮ¸ÙÿF­^µzµ ûÍ’•m&ìîZÎü;ƒ%þƒ©DuU•ÜzËl™xå•_Ä£$@$@$@$@$@ž&@€§›‡…‹‡€ I·cÇvyõÕW¥hÐ šúǰùõá¿° Pîüàìhl„…§ó' €Ç Pàñbñâ#ÖptëÖo0§uX€µÿLñ€‰¸9,Uª˜;wŽ\5y²eBÓÿøYò     ð *¼Ò,Ç%ˆ¸þyqÏÙ¿oŸä«çƦï>ÒŽ‚=¬)êë%??_–•”XF˜ýïx^÷ïÀ3I€H€H€H€H€ú›ýݼ@¸wkþñíÖöoÝ´YN•ž¼Ü\ ƒÂp]ã»Vî£áüT›nj’³å2kö-rýÌ™– ˜s @×¼ÕkOvŠwœßí ˜°¯ëýÁÇ «&*ëªe¶:þ›0a|û‹ø‹H€H€H€H€H eÐkZÊ4ejVkÓòæýÎô5=øêk²ëÙêù?ÛÌþÓtY@3–¨€Ëtaæí_ÿ`0(éʵ®®N°¡ÿŠÔéßò’»³ÿæÇ½$@$@$@$@$ìhì-èƒò›ÀÚæ¥Þ økžY#å’­ ¬°°ð>àÑã*ªr‚¿jIŒW@Mÿsrr¤±±Qn¾ñ&™6mZ4k*¢(¸A$@$@$@$@)C€ €”iÊÔ¬ˆ9ö‹1[G-=&;vìܼ< ef˜Bmz»sg½À„zµ÷o7K“.«ÈÌÊ’êªjÉËÍ“’‘µÿ¸Þ– ´9Zì,?#    H.”˜’«½|WZ7ã~,@Zµj•;~L232EZt‡ µXݹvÿœG €––f[NÒeÍá)-=.×͘.7Κ=Ÿ³ÿQÜ     ”"@)Õœ©W'Œºõÿ'JKeëÖ­6ûŸ™™)áæ°U1V·?øôÓbŠ]û_W#y²´¸¸Ý…`N–íð ¤Z¤D3¦~%œ`Ç–­rèí·míKkÄéÿu¿ý[[Z%šó¿u8cÖL¹eöìv8Öívò @Ò  é›0õ+à¬ju½úúuëÍ„ËÜþÔ'˜¦i¼„€úIhV« ,©HOO“¥K—š2%1w`.$@$@$@$@$@^&@€—[‡e³ÐNÐߺe‹|ã š;ñÄGQð_0’ÚšZ™4q’Ü:ûÖø2áÙ$@$@$@$@$@IK€ €¤m:ÿÜœÿéºô 6H­š­g©÷zþ÷€Õ4MóySc“455ÚìÿÀ”;³!    ð:*¼ÞB>/LÕ‘ž}öYÙ¿¿ (@ÙÿRú„êM*+*düø ²hÑ"ËÉYX\J¶¼–H€H€H€H€HÀû¨ð~ù¾„­--²êéUÒÐØ(9¹¹\ûß/þ‘ÿÚNVÁÞÿ›4nb£:O\\¼TІ îFN<…H€H€H€H€H UP*-™¢õ€ùÿ+/½,{÷¼(…ùù¢Rmä“¢õíÍjérºì¬ 9\-]b·âìogÞ$@$@$@$@$à-Tx«=Xš ÀìyyyÄ[=bÔ_àîêš@Ks‹Ô«…ÛæÏ—Q#GZ4…µ®€µ @ÓÔXÕ@IDATê  õÛ8©kxèíwd÷sÏÉ€ÏÿX©ˆ¿I!äWTVÈð#dÙ²e–±Ô-ZÄÏ“W @2  [-ÅË+nÚ°QJO”J¶zþohh, ƒZãì--Íæýέ·Êĉíê rDrŽíÿ ¤,ˆ²ÕcÅ’™ÀÉ'eýºu …$Mÿ „°k KH+E«õÎ[J8Œ¤4©¯o„ü+n›ýÇq| P‰U¸tž+’ $3Z$së¥XÙ1»&}£ ÿGÞ="…VÓ´ô4‹cßÜ¢.í£ÂmŠAHTu”Q@µ$-ma«ëjåúgÉŒ3",õ˜[ûï¾ukæC$@$@$@$@$àM´ðf»ø®T˜…N×~'ØW••ËF5ÿéì?LÕ[Mè ¨@½0uA ®3ûêô/- V’‘•!%%%í®¢àß @Ê @Ê7qrTÂhä)ïö;äàÁ×%77·ÍÞ³þj¶®a{rÔ¬J7IKk‹)OjjjdúµÓeÖ¬YýSÞ•H€H€H€H€HÀ¨ðD3°0ýwÎèeÖþë̦:ÿC‚àd³ÖtÑÉ_°Ãúþššjc÷á»î²ß\ÂC$@$@$@$@$@)N€ €oàd©–8“ô]Ïî”^’¼¼|5ùOÌøÃi]²TÆåLWáK****löîœ9(‹@$@$@$@$@$Пè ?éóÞQVM ‚þúµk%¬Þþ1‹Ý¬–±‚¿më9L°%ê0]},-^ÚùÉf•jUeó¾~úûç$ÍÍÍÙ–³¶Ø›ßò–ìíG‘÷ € € 0Xë|öõÑ\~Ùe¶cÇv«ªñ¿2)`_T '±-..ªñÿf;zÓ1Y ²| Ê à®l € € 0œ$Î󞻣~ì±Çì ×~a9ó´4dÝçýëÿl Ô5ôÿ¸ã޳7-÷þwön^ € €ƒ*À€A=³9>.ï…ŽÕ½r»Â{ÿ·=eããYöÿ,÷ÿrâ¿•¯ãþö(‰HKþy•øcšæþ¿ímvâI›³·{ýÛ¯;ð ÜC@@a 0Lg;§Ç:;;kW]y¥j¼–K%óÆìA eg;¸€7ú}n¿'ü‹uó†~­V³©©){Ó›Þ˜½ÑcþÿÁ y@@a 0Lg;GÇÚÎúïEºRÿ‡|È&'×eØf£¡%õÕdÀ ž±öŒþb±”Ùy0å›Î?ß^rÖYÙ{=ÐÐþù‚Ê @@@`  äiퟃZXX° /¼ÐŠêù/•KÖPãßÖ… ¬ ôÏu·¤áòÐÿ‚–M\Pï¿ xë[ß–Âünèž¾ù´ ‚ÿ € € 0”†ò´÷ö ½Qê |ß®»î:»÷¾û¬\.›'¯óíR©œ kOÔ`%`ÆtмAŸèæYÿLyýëß`ç¾âåÙëݲDñimóƒ~O € € €À@ èÓ›¿ƒók;`³Ù´‹ÔûßlÔmttT ÿ’yv£ÙÈzª£H=×Dž÷$f=ürZXX´J¹bïúöo3 à›[úÖÎÀ¨ŠŒƒ@@ZC{ê{sàh÷DéÖ[í«·ßa“Õ±¥áé*R ‘Þ`4l]³×èM9ûa¯î“5êõsqaÞ^qÞ+íe/?÷YE÷×´ÍŸõ$ € € €ÀКSõëö°ô‹.ºÈfçç­R­Z+÷ÿrk¿ý|>JœßR¸SÜŠ•ù¿®¹ÿe{Ç;ß‘¢pǶe~KOÉ@@@ Ûº->äûk7Lï½÷^»ùæ›mbbÒ¢(Ìzû‡œ¦óÃ×è·›W嬳·Ø\}†D霓w € € 0èý çìøÚCÑ?ýéOÛìôŒiîXž¯ž³âæº8ÞÈo(B«Ù²oýÖoÍFRxýñv %×@á@@@ «ºÊÍÎ\à°n¸Áª#Õ ÄGþ“ëïпíÆ½7ôgffìÌ3ϰ׾îµÙxþ¿µ_sèŸÊ+@@@`Ð úîáñµ¡íFi»(W^q…íÙµ+Ëü"†ÿ·ažç§7öÛ=û%HtÓ†VOH’ÔÞüö·ÙøädöîvbÀöH‹çùHžB@@! 0d'¼W‡Û^úoÏž=ö…«®±P}þþ¿V«Eoõ¡œ&±<·ßGK„Ah3šBqÊ)'ÛÞôÆýŸà¦íÀËþ¹ƒ € €H€_ƒ5ðkß¼7:Š¢ìþe_b÷Ýw¯M­_¿ô˜µ±z³Ùž_ÀWCô^ÿP¦­8¶ÄÝ´Àßð;î¸ã²çÚCÿéý~KžE@@`X ë™ïÒq·{þ½Q:­ùê—\z©(ñ_¹\¶T Úb±d>¤½,èR±ún7îãAòï÷ççgíÄÍ›í-o}Kv,ÞëïÖí £úîS`@@Ö\€ÀšïžÙ½òÊ+ì¾ûïË2ÿ/hé:ïÉÖ¸v‹`{aP€4]Jò—ĉ½QCÿO:õÔì(‹Ùh‹và…?‘W € € €À0 †é`9Öî xOu{8º¯UùåWd½×>=ÔúõÞh­ÕjÙ=ÑÝÂõÙÞ<˜â û@Á’Å……,â4ü¿½eÏ-h?ÆO@@@`¥]¯+5¸¿f·ßö%ûÚ—¿jc#£¨ñïÁŸÇžõj¯Ù^냛¦˜°Z½nï|ç;íÌ-gí?@´¸)½ð@”oí))ÏÔ˲±o@@3Fð-X3¯ü·¥—\|©-ÎÏÙøØ¨)Q}Öø÷> €F¡‚R©¨u«VªJüw¼=pß}¶oß´%Š ¸³/èÿgC Ûžb||ÜN?ýt+•JÙîÛ£º]ö‡ € pp·á™#XÙ¨¿õÖ[íÖ›o±u릖Ù-7R³F«‚l/,àVÞÈ* J¢8bÿüÏÿdŸüä'¬Ùjf£(^øxk'0==m¯{ýëí7?ô¡ý;áï{?w@@ÜÈÍ©¬‚x ÝxÑEÙÜܬ{Ì&-ù§Ä4úëdûàj_ÐýöiE…ÌØMO¦È†@ïâzÃæçæµ4eË4 +ˆ?=hå«|°!€ €äC€šY>ÎÃÀ•¢Ýøø‘Gìæ›o¶Jµ’eý³DvÌUïô„gs«Õ j'N¬T*Z=!Òl ýO+°!ÐKT ý}'=Ie{ó€`C@È€üœ‹¾.‰Wö}kûmWü/üìgm׎YïÿR¦ú¾>ÌžÞ—Kt׬Gu¹aÕl5¬ @½h'ô\¹¤§WÛÀ^–}#€ € pÀ‚{« àC~Û•þ§®½úËÔ%ê©.ŠÙrv«°«¡úˆ,°¢#nÉ7Ûpñÿù* ôÿÕW!—›´{.sYH … € `Æk‚ÀxÕo¾µ^vÙå¶uëVSæÿ TÏu‘ÆÿóV@@@àˆon xÏ¿ß|Žºo3³³võ5×쮡æ¬ëëFa›ŒŸ € € €@Wt•{0wæóÿ—æ÷k-úåþå—]¦Þÿ‡mÃÆYb°$N¬ÕÐ|u2‚æ—€£B@@Ü Èý)ʽñïóþýæÃÿçæçì’K.±z­®õËK×i¾º¯Ðäÿ¨(! € € 0X$¬óÙ“£Y9ÿß pÓõ_´ûï¹×FFG³¿O Pd ›оߓ‚²S@@@`ˆ0Ä'µÝÙ:õþšp¥’ÿÕÌת_¹.¸²Ûjí˜ÏA@@8d‡LÅ &°rXÿ­7ßb·Ýv›ŽŽÓØ?#€ € €= ÐôAÛ¥Ïýogÿÿìý—MÏLÛÄ„dü´SÍñ € € €@ èã“—·¢ßu÷ÝvóÍ7«÷iîÞÊGy@@@a 0Ìgÿ޽½ôßʸäâ‹mffF€±,ã¿ç`C@@ȇ€|œ‡¾+…'ýÛŸøO¥ßúðÃvý5×ÚH–ø/Pò¿€%ÿúî¬R`@@dƒ|vWùØÚ~ïý÷9ÿ…ÂU$/ýü%öÄãÙøø„yNŸÿ¿29à*…C@@èP€@‡`ÃþòöÐÿöO÷ؽs§ÝðŬ2RµB±`©kÅñR `ØÁ8~@@@ 'ºpsR Š‘_¬g_Åó‘+ç÷_véeöàƒÚÔúõV«Õ²†¿`@~Ï%%C@@á`Àðó#>âvãßzÒ¿+¯¼Òbõø§Ij%ðÔ! Ø™@@@VS€ÀjjÉg­ìÙ¿î ×ÚC=d릦²¡ÿQ¤€rø€v `HX8L@@@ ×r}zòW8oü·­Fî¸äkhØ¡XÔÐÿÀêzÌŸ÷Æûuù; J„ € € Ÿ€á;çGtÄÞ¨÷|»ñ†íK_ºÝÆÆÇ÷&½þû)¸ƒ € €äJ€@®NGF€‹/þ¼%ib•JEóÿ“>*â•Ùÿï¼óN»åÖ[mDKÿy@zþ›•7"€ € €] ÐæÁ؉/Ønè_ô¹‹lzß>©Ž ÆÁq € € €À€ ð|8‡çóü³eýô³½­Lè÷Ð}÷Û­7ÝbcccæÿÃåœí×ò@@@ òwNz^"ïå_ÙÛ¿²ñï…»T™ÿwnß‘‚(P€‚žž € € €<§@á9åÁ¡hõwˆ•÷w>¹Ý¾píuV,•²Õb’ÿ ýw@@èFôÇyêI)ŸÙóï…¸ôÒKmëÖGÔû?jI’*ûjAOJÇN@@@: Љֿvzï>»úꫳ>EÀ,µB!b À/8|@@èýqžrQÊo¼Ñî¹çk¶~Ãz5ü jþ›F$Ù-¤ € € € pPšá}‡þïoØ/'ø«Í/Úe_¢„Z PÿkÅqäù ¬0¼_Ž@@úF€$€}sªº[Е‰ÿ|Ï_¼î:ûÒ—nµ‘‘üWß¿þl € € €ý#À€þ9W]+éÓÿjè{¢¿«¯¹Úêõ†•Ë¥ýx,€E»vjØ € € pØ›npߨžÐÜvë­v‹n“æÉÿüñýÿ4ÿ÷›À‘!€ € €À ¤³¹ŠÇÒnèûG^xá…¶wï^«VªÙüÿlø?SVQ›B@@Ö^€ÀÚ÷ݲþåþ=_ÿºÝzó-65¹N½ÿ% øï»óI@@@ À÷ày.»äRÛ½{—•Š%åH² ÿ>E »éLx^>žD@@r#@ 7§"Ù¶m›]sÍ5JüWYõ¯ùÿl € € €ý)@‹®?Ï[WJísÿŸ|ò)›šš²B¡¸4ÿ¿+{f' € € €«-@`µEäóvïÞmW_}µþQ¶Ö_âÃÿÙ@@@úV€@ßžºÕ/¸ÏëooW]u•=üðÃ611aqkÎbq·Ÿæ' € € €@Ÿ è³¶Åõ†½7þÛ ü™™»ìâKlDsÿ#ÍûO5ø?Ñ æ76@@@¾ З§mõ ÝÚïKÿ …샯½öZ»ï¾û¬\RæÂ(Ô€¡$\=x> @@è²€.ƒçmwÞ°"Íó_Þ|Àå—]nóóóY£ßÓÿ{pÀ—l Ú¯å' € € €@ÿèŸsµ&%õþ•sÿ¿øÅ/ÚwÞa“““Y`ÀÿšMhOX“‚ð¡ € € €k*@`Myóÿá+ÿ^ÚÏ}þs67?gÕêHÖó¯è€Õ4)À€üŸPJˆ € €D`iÒ÷AžäááÈzùu¨wÝu—ÝyÛí¶~b~ÓÈ%ÿóÍÿ —§ 0 #á@@@ ïÐw§lu Ünüû§^ú¹ÏÛ¾]»m¬RUÿŒÿ>Àþ4þWמOC@@º)@ ›Ú9ÜW;ðÐÚÕW]e££cK ýô@ ‡Å¦H € € € èlP_~ùå—ÛÎ;mݤÿèíÔÍq!€ € €ÀÐ ÚSàÀwìØaW\u¥UGF,I“ì‰0â«q@ˆ{ € € €@ÿ ÐÊëÿsxÄGpÉ¥—Ø£[µñ‰ñåžÿvú¿#þh>@@@ 'rr"ºYŒV«µˆÿ¾½{íºk®µ‚–øó|©nzÿŸ¹<`7ËǾ@@@V_€Àê›æþ½¡ßNþwÕWÚÝ_þŠU+‹ceú×è¹? ˆ € € pèݪ¯_é=ú~k/åç€Z­f—)ù_­Ñ°±±1+•Ц™`C@@,ƒu>z4íÿ†ûíû7|ñ‹vï½÷Ø1›ŽÑû4ü_ÿzÀûþÛ¯9èò € € €@_ è«Óud…õF}¡P°Póý›êå¿ä’‹­V¯[1*d½þÍf3Û¿†GfÍ»@@@¼ ÈÛYÃòøðoÜûö•/Ùn»õ6©úÒ±K¥¬×?\žûO` O € €ô@€@Ð{µË•Ãú¯¸ô2«ÍÍ[µ\¶ Œ”°µ4ì_£M`C@@,ƒu>éh¸ÿ~»BÉÿÊY¯ÿÒW€ÿC¢ãE € € €@ß èÛS×yÁÛ#.¾øbÛ¹s§MLN’ì¯sFÞ € €ô¥€¾¿Ùѵ³ú_uÅöøÖÇlãú «ñh À3ƒCÀÁ!"€ € €C)@`O»'ûó†};é_¨ßçfgíóŸû¼”ù¿P(Xª@!*h, € € €À0гì€8Ž÷Ý7Þh÷kù¿‘‘ªzÿ[YÿÕjY¤` € € €Àà Ðsì½ÿíõzÝ.¿üŠl¾¿÷þ‡ad-²áÿ$Ðo‡… € €<]€ÀÓ=â·ö¼þvàK·Ýf7Ý|£•JE­ú·42 \.gÇ'F ÄÁs € € €Ï)@à9YúûÁvÿýóÒ‹>gs{§­Z1Ozò??D%h¿¦¿˜Ò#€ € €¼€êÓçÛ û{îþšÝ|ÓM6>>‘5üýpü¹DIÙ@@@†G€ÀžkOî×Þ.¼èBÛ7=c“ë&5úŸFÛ…Ÿ € € €À° À3îCü}Ûºu«Ýpý 69é½ÿÞëOÆ¿<Ý € € pH¬wHLýõ¢vàâ‹/¶;wÚQë7XÜŠ-P` =5 ¿ŽˆÒ"€@žüºÒ¾u³œÚk¶¤iûº¦´&>Ç©›EÈý¾2›e—i[å¾àpé\-çêyæy{æïÃÌ•ýÅ«“aþpì Љ€N´úèµ>ø }æ3Ÿ±E-8=;“Íÿ}Þ?ƒúè,RTò*ðô Éôô´ÍÏÏY¬åEÛÛ3W#i?¾š?­†MÏÍZm±f###º¼©\í¢µ®æûð³þòÕ_ü|$:?3³³ÏÊã 'žT~N°ŸY«ÙéY ƒpŸöWœsuà\éÛ›}÷îÛg‹º´¯=^Á=@•Vj È}¯„ß}÷ÝV,íô3N·¨eˆ(V˜Þ±9˽HŸ1hvÝŒ»éØl”‘—ª[Éb©d§œvšÍÏÍe¿ö…*[¤íÿåï‡_ö= ­Ñ¨Ûb­f£c£ËO.ýðƤ'†¥Qù4–®ÿâ7~kâ;á„í´½ÈFGGun–glúˆ/ÿ-ÏZZÊ8‰‹¢‚MNo´MÇn"Ðõo.;D~ ÐogìÊ땸 .¸À^ùÊWê?ŠQVNU¹+ú.©4‚ /AçXjP¶_ã F#K¥bÖ\Ùˆi¿fµú>¶lÙbþßÉ*üèŒÂÈ,ö‘N4ÿ3ïì’à\y0¶n"ûï‚?ãŽþߌv£sµÏŸwèí ŒŸ¿½÷½?lÿ÷{Þ“ýwüi­¥wè<À¯Ì–6.²ïï‚®A%+¨Úð)çÐ@`¸J®bÞ>Â+r6lÈ[±( ¸€š-û”¾‰ תWÙH•JÅŽ;î¸W]ûÃkÖ~OìáP|4ˆõå¼NízÏÊ©HÀ €<[€Užm20´{ü' °Ö‰zß=é7ïÍôÛZm¾•×8¿ï®v‰{€†ÿFtf¶¯ösЖµÏÉÊ%}×bŸƒô™m«µ¼æ ’Ç‚Ã-À€<ÿþ@¯·+þ»ßoW.ð9$È@»áï?=ÉZo~mó†S6Õi9ÐÙÖ¾Öûî§Ï_ÙÀ÷sã[{„†ß_ù¼ÿÎÖö³}ï>ŒÝÏ çæ…Ï…µ‡ýûýöwü…ßÉ+@á 0€çý™ }ÿáÊŠÅ2‡„9h_{¼Þ¾¿–Åj_ÛÚûèÆ>ÛûêÇŸ+}VNÏ ÁÔû³¹òÜxiÚç„@gçæ™×„ÎÞÍ«@á 0€çyeEâ`÷ð°9$ÈÀÊkÎZgå¾v­ËП¿Ò¦]Þ•­¼ß~žŸ½xæ¹xæï½)U¾÷ºÒhåý|—šÒ!€½ @ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € €ôN€@ïìÙ3 € € €] Ð5jv„ € € €@ïôΞ=#€ € € Ð5]£fG € € ðœÁs>ʃ °Ê…Uþ<>@@xÔ,(f¯I¬5ÂÈêšÔ£lý,é$†©ÏÉïI$ßsCÉ@@\À#'$±%º¥ €~?Ùi\ÐùÔ9í÷àòà“Ë¡!€ € _oñ'VT“±œVT÷?#ò{¶©dË'0>¤ó¢^è…:ûD@@`èZ™ÀHTˆG£ÈjQJ Ï¿¡Z—0´y£òy2; x@çéQ¹|ŸÖBà¥õ2滜ùüjP*@@~8PO,Ȫ¿y¯«ŸX-ÆÑR) ,ôÓ÷í¹Ê©u*0§'óþí{®òÃc|–Îþ™5®cý^xFP GlËÛáÓïsqh±æE¡G‹KåL•”"{íþ#éQÙ- € €«#à5ÛH·–j¼ó9õz$õØ^ƒÏéæeÔÿKš4^P⸂9§E¥X‡&éú-¿Êa4R Ó‰¬­?Ò,SGNpV†`?»tèZ÷T½hóÍØ&ʺø)Ɉ_c,mY¨ûŠ‹æ÷¬P2@@:Ô9çÝr³jüëg½©p@ð:oë½ÞÒO½Œ‰’Æ× Q©”4ÿ;8å¹|i¨oa ÄŽlùè(0Y*Ü9QJ¿Xâ×)¬¨?Ñå1Ùh€üd½•Z3Ë.ZÈJš]g² `/‚ùã£D € €}&PÎÆ˜í5VKë-}ÍéQx<µrÕFµ|ÜHäí ¶~(ê+× åäùvHƒè«#Åt|¢Ðüå=‹º¨dkwê7ð(OÎÕ*ήFl;›ÛPòH”Ï)ò2æxTž¿)” @@ ÇK]]¥åÀ£ºÊªÖX¶å°YíCн£N‰åbxQCCuëºå°¤Ë†ü8õgçÐ[]~.ý'[¾: (˜c£…`b¼àó‰tvòάϯ÷ßs¶©°»Z¶m1²3Gý05¼H_Á˜@ÎNÅA@8RïèJ4ä?Zš«kÌ7UOW[ Ù–šbGº‡µx¿šVœFÁ®»”6~§Ç,ØúZ QÓpS(¯ƒFôõ‘ ná; S1«%¶=²Xž©F•i$‡?_úÒµjMÛ[S5%û j}Ñ,Òèϳ!€ € 0 Yÿ¿ÏùW¯zCýts‹ª®Çê¬ËêÁ>Z7o›êåÞ1§ÅBP,•”²;ñ`[_ ¨é審¯³åS £ÀžZjqlw¬-Þk{ çX¼ ‹Œ_Pü¸×Ûò…­]OR¨eEžhz`iÊÒ…q)wAûe½.5ûG@@àH¼žë ؼ޻£Þ²í©zî<É^GêªTKÓs›6ªuãN.õ㫾€ž`ë[?}bN­Y³}þ…dË¥@G€ÍË)E©=Z˜³–ÜAMS‹ûyycQSPêj‡å¥‹8/.y*GG€Ðçè¨ôcIü%K›¯^šSä€<þµê›§v×®½ºìm0•mšÅà¢6?@@CÀëãÞÚÝ3±ÕçÔ+x¾.=žåÈáQ*cÜQ#QíöÝéŽw6¼êÎÖÇ‹Zí„õ{“Ÿx.ŠåñÙ}|DƒYôŽ¿¿nu¦ÇqðTP^ X6¯>­*S¡d÷,†ö " gyyUV¿°D~mdC@@``|þ¿z ìö9õü7=Ó\]™¹*äÊY°®Ö6TK­ÝJ\À´ñþþ2ú¢ååÖe[‡ý­»z¥ï(P KVщ]_ â‘bÃæý’׈¢B{r±lwïjØYÇÕl#}³˜ÅêòI € €ôTÀ‡Ð{½¼©9ÿ·ïU*öp\¿kºnž7ÅF‹7Ô+H«ä¹°”í…¼i¸~Tm­ìkÇÉ|!¯^=ßQà„j`U” £QVãzÞSŒæ¹7]ëŠÚ|j÷íY4;~"3Î.ŽÙ½<¼W_ö‹ € ЗY§\jOÌ4íë»T÷ &UM÷ä×yݼ.Ùx!IŽ)§õH%%×suhåò‘Ö£ÅÐÍqhf½xUG€WoHlDë:ìj&Û>rj{ZfTÎïТ(L­Ø»½Œ*«“¦.†><Êol € €ô¿€7õ#«©Þ[±¹… ª£7,PWljZ_/wý^j)ú’ZUü´ñÖ§N«´Zãj1æ7XÑÿßnŸÁb©lóÚYª/]î¾vÝ@èƒ}t¯F¦ÿ[ز‹Ö’†¥£-PãZëwæðʢȓʦ(Ôí3óöð\d§Œ•µ4*—–>ø^RD@@¢¬¹U´[vͨnîYØÔ£ž½?§Í0u÷V|ôhéÑÇÕ©¸ƒ €œí|¾T9í8ÝŠ9ýÊåS­û¥ê(àsŠ|8ÇX)Y8¹ßù•$}kþKŒËƒž*=<¿`7>Y²S^¬L¨ËÉQºOÍ@@X+Àæj‘]¶Ký¯Z¦;˪·{/ûZíïH>W-DuÔ‡5;edln¬ZñÿGÚû÷ê”ú)Ô,qk1þ¿÷çãyJÐQàúm>|Þlª¬h]µx‡Nó[—yÌg˜'Ðt…ÔmŒØUÛ‹öîûÂ(>ô?Ÿå}žóÄS € €<¯À÷ÆvÇ>õþ«Aí©°<óõÒÀú¼Õ}Uµ+7ÇÇÿ+mªÈKÞ÷øx2¿þuSÛßsÅYÝaË­@G€Òh) "ŽªWý¤cJ3ö ŒhT@^·@‘Űٲ8YoW혳GíÔ]Ù@@(Ä.zªn©– § VªÇÖ C‹½UÖóM-Â,¡V47­+ÜvT5Ø^óÅtÐõü,Qt^Sõ³újklùè(pÎ1KW£ub÷4ëו ‰†ëè#"…írøG›j>Q(HQhi@h7îlØ©'i€¶–¾ž,Õ(Mú/ÖLeC@@ ÏÙ|y-ù§—W潟:½n|²®_ʪß*ù_hÜkÅâ@K®htwÿ°¼ñ¯RúÊ„>,AIº-I4ˆ8´“G[÷¯«šJ«»Ý/{\Eo÷{‹0ÑyfË·@G€ñÿ¥Ä•°yßK¦Š;wF¥¥@ÞTžÂªÅ%]h<@1]°Ï=T·ï;)Ìý^Zÿ¢Æq¬@€9ò©l € €ä\ ©.óP çEªÍzÒk5¬¯y2´{öªÞ;RÒøÜ=–¨_+lŽ-=ßÛ€Êç]Ãú¡Ö¡§%°D¿G‰U퉅ºíÓ!$^1gë[XS:&Ë[_ì¨yÙ·ÇÛÏïè m[>¯©õvÌXµq£Â+(PÑ_²þ¨óµ©%%V-hia”Ö>»êÉš}ufÌ^6)Zêþ0[À Œ<9 W|?Jƒ € ðL¯rJòçu×’w«g·²]úȼÍ-ªÕ?U²0®(&ÐÔ3Þ'ÛëMul-ÃÕëï€ÀW(ð€@ÝΜûü¨V›o0 ×géH÷ߊ5⤠ ”VdË·@G€sÖ/µò=plLo¿ä¢¤ù³Qe3whh¿Åú"úE§ÙöfÅ>õpÍ^ö2†ª¼ºEQÑG!eQG¢²!€ € _ul©2î×£DCþÊÝ>=oŸõN¹ÒFïßÒ˜zUj ªæ{2ìœTÑ al­@9 ¯‡§vÒ¨=qÆdåß&Ê*£—™­o¼ •êœ6µ€/È–oŽQ{IØ L“—N>Œ¤ïH}Rÿp#å'H5ÿ?Ñ2Œ&|lØ?>Ø´÷živj¹¨S‹Š ê"jKyò}ª( € €À° àŸxr? £RÕu5õïnÚöEå·U…5++ÀB1û:>:Û…ì°ŸÚr´.B©¦,%0L}¼JÎ!Wž@@ Þ\V£ÚçÕ‡eÛ:ŸØ…é~©jåú^kø(ײ:·ô2 Ëîqëyÿ X(9wª¹š `ÍÚ‚½l}ô•³4`áÑ9up9õïÖÔ9õñàþ3Âý+»6%ï(°uZÃŒVlëK¶õô‘ú Oî}‹C*Ç5k}©@Ðã9Gº.6 žQDs¡T”4\ðQ Z˜2´?hÔ¾çôÄŽ-–Ul]qôe =#)ߨg—» € €yH5óß+¯ÅØÓêì_ž\°‡gTÙ­ŒYCsì­jÄK+dózÞ¸VBJð¼­²)5—Øæj|ÅîùºµzÜdÈÛùí·ò¨u•m£¢Q(ývCXÞŽÚSå'û(â—o,Ç_ØÖP¢%‰üÄ+ ©IõY†Ïƒ¦‘J“*àS´J¶.e1°ûwšýûMû™—h™“—5𘠀 €9ð&V¶‚•ê´ìKíc_ŸViµ–žzþuÄyÇV6=×îzżç›w¶Åš–ënµ”›ëE«vʺtûãóqVMïy)Àa d3LtŠ7ê«ç#9rñ•;죎7vxûæ¥UÚ4GéÝã#Ñ?|äîÇß–¶6IÙ/: ãźii’žoÙ7Ðÿ^’åodÁLíOï5ûžS”̰k¨”?eñÔž—™ € € pÏû¿Tì/˜±Ç¶ë·I%Öó„€> Õ7¯ûfõàì·ÿ£)·ž”[ËnǾêVsÎ^99ráyëÇîÜ­ážÌ­Óº:[}@ŠîðØò-ÐQàþi_VïÀ¶Mñ¿œ:ÚúÝöÔNjƺøø'ÒÐ{5¨s¹ù…Që£>¼'±ÞU³Ÿ§ †ÖNÕÌ$=ÑG.B!€ € ®€šÑ:¸¢Ý»£iýؼzãŽU­»¥ÆµO}UýÛëâ9Û|ÙÂ4õò)PnÚ–±ôó;kf;tËaqs¦—÷â¤Þ´ÊkË/ïx=)_G-ÞÛ§ÛaÅ¥²zÀî˜Jd¯:nýã̶NJý¢£žÿ´¨?pvŸ×?i-Abº}ì~³·V±×­SÈ*ÕMÃ’Ø@@È«@IýDuìßg¶oVóý'”íoF³¯K^ïù®rØ£ÞR½;ð q/~Úºjí¥«·*~a Z€­¿|GIçU“®ÙúD £ïkO|ú?Æ£õ ;›ÕOÿË# 4þÃJÉ‚ÖT@}êš]Ÿ? S‰”%-Ú¾™Eû£¯,Úk^j•¥¾ÀZ $ËPÐv)ˆ‘ÓÑ ùÓ¥D € €« àµho\E>·_ «<é¿/¨Öö¿·×ì_ñûšûßX°RiÌšJvÕ2­›·FµêÕªg‰Ê¦äÜgM•·Ÿ4ÝVS£ä˲õ­€Ïÿ/ê{YÔyl)À³´æZßÎм£@sÖ/4OßöF½j¬xý ã©=¾¨u<‚Y+5޶z6×þÙ¯ú»»ý›¾¥ºz¦Áˆ¢*ëHjnmÚß=Rµ÷<¢ÂxÈBYJ•  ¦‹g%]Ôò©Ï"Ðí3Åþ@@að@¬ª´w«%ÞïkEý{o«b¼ã)kÔ5÷³ê´%üojÅ?ÑšÇ¬Ö ^h¥°ÄG'´ªö–M…ÏœXNìá9zûùûíé”÷]A§À%xô\lý!ÐQàÄ‘g7„Õþ·ÓËá-¬Ÿùü¿mKÞÑ(mÔÜõþÇOÏU•T¶¦¦5ìÞ´Ó^uÔ±vΨÇUÕè×ô…jP±8¬ê2Ër¹9w@_¡:Ò­QŠ4 `Z™ª<$°Îþäöy»çAÍýßpŒ~Wã?­[½å“éÕø÷$Ü^×ÍÕæ¢IâZ™kÃ„ÙæÑÂïìQ¶¸ØSƳõ­@6ô_¾ZbVG¡”jl}"ÐQàë{tqyŽm²Øãñ?~º¿£™Œ*J©‹Rv‘ÊÛ¶Ê£‹bk”‚wìÇJý7Vµ{öÍÛÿ¸c}ö5Y-*ÚÚ´¨XѲV!=‡!€ € Б€ª­±–´N4´ßçý›•ío¶¶ì¯îVskêxudš-êqE _‰KXiîÿ~Ä*W¢Ú´–ÝzíñÍ;®Vv}yŸOfëg–Nà˜Fuœ¢Qà,§Þ_g²£¶m­¡ÞslI+°s&ÊŸþÆõõ×ïLŽJZí¹óÏñâ?(Ú( ÙRÍ©²TH&§ìâ‡wØï­›¶_;{Ò" Kò#ðÅ ²d* iéñYc÷ € €Àp (e•†Í«ÙßÒÈÕâûÊLl¿ñ¥š9¯†I£Xë>šU&ê ôÂÔëµ¹Üt êñ¬io?¦ü©c+ú¯‡Øú[ÀGT–gœx0‡SÚ?ç³£ÀÉãÏßÑgΟ8Zj¼ySðÿ]¿}úç²áG+¯AþÈK˜O‘ѰQUÏ~biÔ°P£¢ÂˆfLØïß1g¯ÚP´·«*pÕ­:QGLýsö)) € €@.²‰·±z÷‹ Û§ª?}çœmÛY±h¢¢yÿóšsXÓ_¤|UAc)u–¶*/unoú¸p• •ÂŽ_—>õöã+ŸôZõø³gçòP¨çð¦]ÝO«ßžû%<šcŽZ¶Ï—ª£¡Þò—l,ÿ]y¬ösõE C*êëàs{<©ÿGOa¢»ž-¢‡›Š“¦Vü‹²/¬ÿ´¤f…bÕæFí'ošµKÞ4b/žÐÜ$ϼøœ%/¸nb•èBæ1ÌŽàzx¼ì@@ 窛¦JT]ÓXj¯czû8Mc‹¢UC«ö‹wíµk·†Ž­³0Ô€¬çUÿxâ?uk¥árWl.s¹á¯¬ÿ ´m´Š˜ò¼îèâÕ{“ð©}ZµÐŽlý+ÐÔù;ZM¤uÅ45Ý¿G2œ%ï¨û5¿Æd»GÓþ×­+=òÚã*³—ߎ+Piž ÐÿÀSE/Ó,1‰Ç‹z¼i8ZÔ’ZŽÄ×úK´d¡/A† U öÐî1{ïÍÓö©ož´M•²‚5]T«ºÎ.•]ïX>B—=>“ì@ 5þ[ÞŤŽ34UO-ú¯¤Ô¿û@Ã>q§ZÍ6¥ù kª^½?Û¿¯V¥Î-_%@/Öý@Ú²–P)o´ëž¶ÿVZ´O|sÕÆÃ9kéõiZµ†ŽÅ×·,("»8ð1ÜC@@à0UÇ U¿,kh¿×9ËžÔOIÿþáþÄ~C‰ª­5eZdKÙþç4ŠU«Te=ÿ¾£vÝ|eÝö0 °ªoñ<[-ŽY#R‡Ù¼½å”êSo9®ô e-°•¾€­¿|µÉX'³¦[”§Á'潡4øIDATýÍÚµÒwi_cž£x>½Ç;Õß|lù£gLîûõ{wi€GRƒ?ôáÿ àÿËçæªª5©4Íû·‰ ûÔÖ=6V®ÙŸã:- ¨¿ç_ñ kAXÏdê_ö<]kó K©@@^@À{ÿˉçÚªjJ¿×—»üÑÔ~ñú†µŠ#f;j­U?UÙN4jÕ’²^“Ãzµɧ«îì1ŠT€Å₽|lôW–íXÔØñÏVÙŽT  ö·ýh ©doÞßQ ÊÅ;HAõ%¨i=ˆË6ýžÍÁÿüõéò/[ªVsvqRTSÁ€8ËNšÃ‹UVÊPYÿ‹.î±Öˆ.ªaÅþö+s6YjÙoŸ[T0@´b@Ó‡2=mÁAÜSÃ)í¶zÏšöÚã }ͦâ#-ÄZ P¯Yª8÷¸°ì¾S?m±Ú:©:B}@´ßgëOŽÑ!¼zŸþè_¾®ùä[ûØÇ¾Zýq+yÓÀZZrÏ|AÓÀ'þä-^´Ô˜³!KºØúÄ-­bU]ªÙÿºeÖfj‹ögç鲫Ç4éE ¯èVÕ5Y(ºàùr‚'bQ°€ @@g ø`X (Õ”Ò–2þ{•S£L[M5þ•ÙßFí‡ûÉ›ëöx\±°ªDÔÞ‰¦úe¬úfM¯P†-½IuѼ5þý@Õ0 #Ô¬ÕRýX£ŽŸ¬Õ^>UùõÛöÖm¦™·ú¿šíP<±{1L혲2¢ù´i‡J—»×B“þ@™KÙÄ÷¿?×=¿PÕ´(é÷Ÿ4þן~xþÇ·Ï•¬¥ÞõHkoÿç{óÆÿò·9[Â@¹”q%MKö7wï±}:€¼jÒŽ-Ç’(èq ÑËc…pç‚q+éíK·ò}””@@ ûêÓœ~ÍëW'RUõGŸÓoŸ2;aù@Ë>xóvÛ]×@ÿʈúÒ+V¼±ïUþ¯WÛuÏ“Qç1 2ÅŠnD>E¡z”Ê8cßw|ò÷›'G›ÓX‡ŽZz;[®–ZH>zé^® Ga:èèO±¨(å¡lácçN¦w¼{sü—zô~…—æ5颧•Jå#zÿš¬˜Ⲹ`­ñ’¥ÇÛÜ[³]óûì#çOÚK'|y“Ôš­š²FV,i¾SïKM @@ò*&šÅ¯£†ôg‰§Õ¨Õóÿá¯5ì·oßmÍFÉÊ£SjD×lQS¼÷ÿ@Õ¹]‡ÎkšÊ§´À§)ÔCõþÇO¾ïÔðƒ'—š¶qtiâl^O åz~Ÿ¶áCþ÷Æ¡rP<ÿky6ÿöúÜøCÜüÏüÍ›Gœ{ÿÎY¨*Áž®w}X>θT²âì‚%£ŠÙNŒØ5MÛwÕöÚCÙÞqì¨%˜ÆóºÔ©ï?Ñ’- v°!€ € ðLX£J›ºU4:Ö{ñ·5"ûå/ÍØ?<¬V8‘Í$ÕUÞ(ûRJûïÓRÛ=ÿÏü°þî© [ÞZ¬ÏÚ»O«ü}vßþd“N²ž«NŠäÃÿ×—õO6üß¿“lý,ÐQÀÓyê¶[×µ—LE|߉¥Ï}äËé;›% ýñ·û<û§mÞoþÌÇžö‚žþ’FZ–%·ZCå/ïS2–’Ý·;¶w_³Ï~ëf?{ƈ†4ùZ­ZîDóaø“èéébç € €@n¼Æ[Ñ@Á ‘ñ`Gèɳ+âòŒ=ìøÆX%þE@úZ «Çª†—5ŠÕõ´Â”ÚJ¾ÖR›ICùÕÀƒ¦2ùíoï«Ûo}¹fOMšiùéÐæ”PÃç5ò4Læ-ÑG¥Å PÝ2[F;:Í‹¥¾Vû¶@uß8ËTØ´ºCýg)«c/¹ôñ¿YÃßGv° Œ@G€Q¿¢u´y&P³£+Ñ?zöÄŸý÷~ÇÒªºÆuÁ¨×Õ®L¨åÈ|YÐläTGŸÝ»ûÔ…´PT„·aÉbÝÒuº€«QÿwwÍÛ†öÓ üði;JÓ ~qôù X P¨ÆK%I°?Ü»Ã`Ï € €G, ./µÙ#ï' |žtÓõþ ª•Óí³O6ìÃ_ì–­Þ°×c“›ôÚÐJµDYÿUG,O™ú‹Ô˜öÿNëÚzK¶¸ÕTï°š*Û*ê¸vm³WŸ>ú'Tþ»Iµ£VF‚ݾ €#iÿ¿ S_½ ³?ÍÃHzãÞãï;«ô»×<^{íçïÙö6;öh…FKŠjYÀ¸¡8§Ãc¤‡±ƒpÒï˶ì_*5t5 éW¬wªbkrÌ/ÝÚ²O?Q´÷Ÿnö½'5l$K¨clùT (¤¦w™b¿l € €},ÐŒ¼«únÒÈF|ªE¯ßJvîØþô«sö©mú5Ð<ÿ²¦“*R4 V®7”ôOóKM2ÕhÑ–wù§ôѦcRV/%‡Sýv®fÔLü¹-›~(R_ßNNÔêûÈ»ËEõ VIÍ—f,wY~íw×Q@#—kSG¹m([úös'þì–]ÓoÛ5³GCŸŽRt´˜-¡§.q…MûëÛjŽV¬ uªùOAKÃúëÞJ¬UÕˆ€ÖˆÝ¼=µ›w5ì¯ ì7ÏÙwŸ:aë‹>…"ÎâÁZ&• @@ Ï”Þoióaüªå}~wjÿðà¼]úHÑöíS…oTõ\ÕSeǵ~tªŽ –꽚kq)Î2ÿ«­­¿*‡A¢1Êi•&‹êä*Ù¼ìøÿ8ÿ˜òÕ»t,ÞØ_Gãþl+<eŸ5ÏVŸûÏ#ÐQ ÉR@<ϧì)EvjˆÓ޶‹¶9þñß»-þ€g4 =Rª¡Cõ¥ÀéÁÞ»ÇS•ݧñšï”ÄúëÐ%.Ö´†Ð# Ùø”µõC»q[h7mMì“ÌÛ»Î(Û·m.Ø9%%ˆYºìë½úφòhVH"¥Bhù§eŸ™ø ²å«çRþ§ðxªß´_Ï/°4»ÌŸ`C@8ˆ€W©–«UÙ+¼6åc÷ŸƒŸÕ§ô¬g<Óÿ}…ª¬¾åcóõ»º}²Z°&wjäçRr¿ìµþÚæê‰]½½aÿº5¶ ŸjØl–.]oœô÷kOZ/-FêV·-S{톂½ecdçmHmƒ’hVؒŲ‡ÿðÕdÕò×½,Dœ%ô¾ÊB¶ôJßãeXüƒ €¬™Àþ^ýlZžOõ(¥£Îò2y3Ç›;ZÉ>«UyB¿¥©ýK*¥*dU›QÞ§»ö%vãŽy»JCýoÝÖ²3ª§©!l£ôSŸ¤Ó iSŸfu¶¥Z®Øù/+îfÏ=ó÷¥7äü_ÕKÕã5Öÿ»O¯}ñÝÇUþz¦8|é¶¾拼"—¾·+›4}{Dü¹: «ß‘nšödo?qô³?¶sþ_ÿôËÓïN«ët­ô ð nŠ&+å¿9EÒ‚£Æ-mÔla¡e·>VÖ8öW•Û².´³¦¦ìüÉy;wClÇo˜°c÷_C¥8U¡¦ ”²¡iþŸyÆ_è ~{8.@X-u©¥O Ôñëæ9ëÛ!€ök¼¿h êà¹>±”×龩]8SµûÕë¿kZ½bžÃª<ªä~jêG­l^¿ÅÊ—®.ý–æúgK>û}ÙÀ!sÔ\ÝNXŸØZø¿|újªc-ä±¾Åà<ï§Ï'¸Ô²/-'spÎìÓ¤}•{ú£ùmwÝÇ(Ùæ ýYÍ›ÿ‘Ó'ÿÛí;ö\pÝSÍm̱à±W 9ɆWÙnrõîÔÇók9À؇‚5tœ¾lŠgÔa'ZqÖÆí¦=»é©È>©eÅц±ÎlËHÓÎ íäɪ­Ÿ£ EW‹‰Mh@Uïõ³l € €‡*ðÌFMª^ýÄjÌÏjîú¾…ÔfçöõzÁîžKíë»gí«ó±mo¨ŽÚÔ­¥À€Dy<«¶úÔóÆ¿–z5‚õk aš>ÅUãñ¯©K#QýèdàG©Y®Åœ}èì±_ú†£ª?µ ú{G­ } [Î| ŒÎ£Vh£o1g§f•‹ÓÑŸêX¥£—´¨‰†³o/ïüà+Öÿü÷\5ÿ©™¦†Ui­À@Ã¥-™çECõš'~Á€-Ð|yoÿGQY€Íéש Ö’1€¦€H’*‡@iAÿ¡±fkÒîz²iw-êêêCÉF›(Ö¬¢ÏY§ä‚G(§LYSd6¥Ïñà2 € €ÀÁT¯ÌªUž´YÍUž¼n6£ÌO¥EÛ;»`OÍÅ6«†C¿/6Õò›·wKÊîïëÜ4aÀ—~VçM¢Q©êªE%ÿKÓŠ5T ÔpмƒGÏÅ>ús)µÿÁ Ô'«~+AuAÇ,ŸÞlP^°wm™ü×·œ\üÅKääPl}-µ'8}}±ðµèGª>BOøG­xKûi~"€ €t ð´Q§Ëuµ¬¿¢Þö´×,}völV[ñ:ªŸV·z>&3’Ò˜b"Z!™ÓȆ)››µŸßRüá“ËÖÜ×ðéTGŸ°žó04[™mH: ¬f[Ó¦ie¥(²_:{üÝÎÌ>|ÿž¤X({6ÖE ¯¨oûÈsôïy\©½ò¾Ž¨ýk6ñ¬’#€ €=”Æúš@z¥S¹«4(·¹¨iá¼}ð¬â/¼scùÒ‡4rW϶«¥k²{>tͼ#²¤^YïÿgŽ¡~ZåÍçH½|¬òÄïŸWz÷»ozüß{5K¾ºA‰UµX ßÃÐæ²û@< € p¸šÛ¶jÖô„SqÑÞ{Zø™>¹ò¿viÉ¿@+$ Ú€ÝÃeê×÷yK"›¶Ò¯@¹K £ÀZL7/iÈÉ¢:úÏ?ýK§—~ôÿýjå“õ¤¢‹Ê´BŠÙÄ*X;ОƒÐþý°ŽypÞäµKóç˜8@@ x=»]çÖäUåé²ZlozqrÏÏoûέ–àu÷b6E¢‡Åd×G,Ú90ŽøÓø€~è(°VsCüË7S«ÛžúÛ¹3‹›ÿø+3¿™*a^¤uTuy±¸°¨è£^Lhd€.HJŠw (Ð/ÔGXÎçüãÌ"GøÁ¼@fçêXÆ:–T÷Õø¢ñ¥„ÜJdÖìœãÒ¿tΆ×{þ®šYb‰äÏÄOV«¤q@Îg§‡ÑQà-}º›ZEE;³ýÖŽÙäÝÿôHý̸2fÕFK9t)*(#~S Ï|ïs߇î¢3t¼_5>@x†u¬6HhšçßÒÒÔ:ßÒ1Kæí¨©û½ošúÀñë‚íÛæR«–ÈßöêÇŸÞð¯(Û˜:Wµš#Û t˜Ô µØü²»>Ð#ýÜ uîîU#ï¼'n]xÛcvV#Œ­¬·E=™;²ùFºôè•í¡IkQ">@@!ðN¶BEõíHýmsZÈ iåêœ}è7üÈKÖ|æk Z˜JËV{J0Úý÷½ðöV–è_'/TOj8̹Öûïô­j‰; xã|­7ÿrNJ}èÌßñëÓ3×Þ¶·vL­¤0U£¡áFº(iÕ€Ø/Pl € € °:Jø—³æKÂ¥­)Ôøõè}÷æ‘OlS«½Žž‹­?x’j÷ñöúÍÞèóÆÿ>ÆoôúTô|ÿ6éJµªˆU¢ØÞ<¶áö½ñQoú…Û§oÚ1[²Xi,ž· Ôü$¼’hd€e! iWÎ ;A@èoË{î-ïW ”[K¹þ³.á´>¢nþ¢ýä™­¿û±Ó ¿šêá9 _~iÿøNåZ,è6Ä¢ý{èÙTC-¾ßkèÏÚß ö´l®1o¯ÜÞüWç˦ʢÅuE% ‘• °ú|]µâ¦b> ‰°ä¡žG^‡ € 0¬êѪ?+ÿ©S-R¾­Põnk²`?{FúÉ_ÙRùáFœZ]7jØÃú=á¸U £@¢¦v×nÐL#Û¹˜Ú› —|ü #ßrTqÁÒÅqkš ìÑ0]¨ c)…%ùHõ+Êq!€ €¬ž€²¿+ÛØŠT³oX«•(Û¿š­¦ýì–‘ÿ鳊ï[аÿyżט K £@·Ý#Ž <Ú‹‰½â¨â%󯱷MUæ­¡@€­ÒUß¿…Å¥¡KÝ. ûC@@ ¯4à?*e‰µÃ¦¦Õ64ì¿P³_8·ô—?ñ¢ê÷650`^³léùï«“Ja8d\ü(ÚA€ÝŠB¾ò˜Òeöêâ;_vt}Þ©Œ±•êÓÊ X× ¹LòYç… € €C* :s«aqX+iY%œ·Ÿ={ì#?xjù•BjÓ ÿCúÅà°‡D ÷?Þ´÷häîzjï8¡ò…ž»á¼—­ŸhÎÏX½¬QZÀ|…‚À*éÖ¯DLÀùØ@@†Z@õ䬂ì•cU”CM£­µ¬>e?ÿŠÒoü™£?SÕSûZžúóPS8øÁè‹€Ÿ¿%º^=<Û™c…{>úê©7}ã)鶤6kÍ j…H‰›¾¨n‘.^ºÎ…qßž" € €«& 5³4]Ö{ƪjØ—TŸV&mMŸµzÝ&+5ûƒóýðÎûмæüÇ -ÿUƒçƒȱ@ßµ=~YP$àESv¶ò|ÛIÁÃÁlÕµF žŒ¢ÀÂr5 ÞÄÔ€û( € €ÀÚh ¿ ŒPÃ?Qÿ¤ß½ý?Û1“uûøk&óûNù`ÇYu¹ÙA»6¥áS@ '}ðØä¢òÌjé’ãÊ#·þƹGós[J›e TrÀ@Ë& ÄajIUÛ|Ø € €Ã$ üXqª>ÿÔ;ÄæT?Vµx!´WŸ<ö·¯ßð¯ÛTù­ú¢êÕJøçI·éÿ¦/Ç:Ì}ð“åùþÔ´íu-JÚÜ{Ϩ¼÷wÎK~úèI-e2¯­‚£‚¥zò@B€a>Í; € €Àp x…¹¦úp]õæšóŸÚ»^ßô‡¯»àU“ágv+  )ÿ4ü‡ëKÁÑ"à“€úwó$%  ðø\bß¾¹øgñÍë¾÷ô‰øñDk—´<±‰ ð € €C%àɱSOöWÑÏyû‰³“¿ü§ó'. ¢ÇYÔR€Â ×¨¾,™@ß·ŽýÂåÖv*ª¹¹Zù÷ž7úŠoÑÜõi]yZcz¶ÚôË € €}.ðœÕÚvs^I±² ²Žq1²ÍãQú'çÙÿÀ)•,ÄQ²§‘˜Rf±!€À ô}ÀÏ›_Ãü:øÔBlcåh篷þµ¿}Ž}âÄ‚.|Z [ÏT«¤¡…©¦ hÍÓP9‚Ð'=5µZ@`…Tϳ!€ € [ÕzÏz­[ÁW¾Rle÷×ÝjK¹¯‹ãº«ç• ûM›Ó«¿ÿÅųßzüÄÇÕ–½ñÏ2¹=¹ ® D -å´í‹‰UÒ=kìG~õÜÊwôü}¦Ñi<ª‹bÁ‚–.|$ÊëbYÐE³YâäØ@@È«€'ÁRž+­ma£n¥Æ¼•’ÍéÕ´×@‹þEUÍMl½:ºÞsjñw?òÍÕïø–Í…¯=2[]ý^ôüçõÄR.º'0Pgó À¢ùjÈÓ™Güç_œ?þªyIácAx®½þG_:ùõ$´‹Zëo]…Òñ 0êìͧ4•åQ-øâ©hÏÏž[~Û)'žôîëï_øµ‹Ü{–Õ&4 ªÑT l¡š^ŸhÌ”&ReS öçðDz'uEÕ…— @@#ðje–J•PÕ7ÕGSMiõûYÓŸO5ö?ë°*[ÜÒÉ´°¾–üÌ•¿æ˜±_i¥{·×S[Ô´€2“ýø”𠪀·h‡bóöú¢†A=4›ØK×ÿõ¾aêìÿñŠ‘ž16³` 5åP,$ÔW7ýkE]<‹Z% ðßZbò©òøÍ°UŠï ‰ €¬µ@ zgèõKÏI´²ê¦òøYU H¬ ®ª²HŠ–ªg«l‹öžfÿù‘ó§.ø‘—løÉÅ4Ø»·ždUT°!€š€x›Ýoûj±=¹¤ï°M×Sk¨wÿ) µŠŠÕë¾óøÖuï{QõO/2yÿðës­Šµ|þ¿ú½(kìûJš«‡J&Ô­™¬¥×¥ž}0ËêºrOÜG@%éËê†ê¹×t} ×÷„~JÔ5‚4µ´¨$M#õ…¤‚¦O'U!UQÃ÷Õóoª?¶lT•PïÕßfoýÿÛ»—¿ª:àçÿþÏLÛ™Žû m¦5•PC0*!`à ‰11Ähܸ 1qáÎÄ…Ñ [V* eéΆD 4 !@Ê«¯é´Óyÿ×ß™vj]J„Âô|n2ý·óøwÎçwrï¹ß{î¹SíßÞµó¡ ãÍ_‰ T#ñãïÌU1F=§åÜÿŠè5Aà\DŸw¨yvþ˜‹x5ž˜öŽ¥ç°kxß÷¦6ÝÿäñÚÿôÞÊ}î òýXõàkÅmy§3j±“¯tÏ=¡eïingA@£€¼×^Ûe¯½^ˆ/ú-ü• @`ÝäÇöÅX°Š'F­>º/ÖŠÊ€j­'Öâ‰Ry…ÿa?>—?ãÌœäÇNÇ ,8cÉFššXI·]]ñÎí£?Ù¾)=²µÛLOŸ¤S+µ´O±² @à£üÉ|ŠžOÏ㙪i)v¼»'[o~gOíG·ìi=ðÒ‰Þ¾—ß_üÖ3'«ï<Õ«W½vܳ?щÿe[ê«p‰~ÌXM}/œüçÿЉV° @€Ö·@•1´Þ5¢yݨ8ñïÔãIRUœèǸ0fˆvãD¿‹ù-Õ#h-ÅzR1—¿?–6uÓ×¶v^Þ;ÞþÍõ›Oܺ£ý\sþóô™X fÄpqí’Ñú6òÛ ði|@5Öv¼§cÞÕb\ÍÿBçÔ[·^µðÖ±«·=v轕Ÿ½2Û»ýog–¾þôLý®·c ´8›ªHsº´³¼V§|EÈ{ayÀ¨û2 @`Ä@1_õÆ8¯ E×[qò3BSLíï.G(·„. cí¨|¥¿>–64»iߦ¹×oÙ5ö‡/Nv»aCúscX ^L`1¾íD<ªzkä;Hmø8B5ß0>XŒølz·7™†Íö·]Ó|pÿŽáƒU¿ù¥‡÷ï|f®vë›'—o{õÌ|¬Þ÷sÕcÑÀHƒÏüçÛÎoy€ûš†W @€À:¨ÅužÔ5cEþ¸W°÷ˆbögœÁ/å“þ¸4>ÞO7o®¿¾wcûñÏoê<ºóæßLÔÒÉ8áw¶J˜-°—ûóâ~††ë° ø• ¬3À‡(XÞ)/§FŠ%ÿbW_‹[·ªôÞâ05#ñ­¼v¢vð›»Ç^_ýòÓ ·šIßøÇ‰þÄÓsͽK«käDø|?ϼhO_[]%6>qì{áHƒØâ%â„ür~ËßðŸ­}Ö+ @€À¥\lý÷7çáÕê—âÕ¡Vü±º°sþdŒáòçò€qï¾Ý³Êsö{ƒÔîtÓž«ÆN^7ºxô†Éæk×mnþrÏhíñ™•úðhŒãF€tt¡‘ÎÄFf`#@€ÀeüŸÜù÷÷g{U,ÔRÅB-UšêÖŸ½gjüÙë'ÓýoT­ïoé_;=Þ|èXÿžNǧW7Ÿ`O-Çýg#þÍ ¶sóÇò¡ ¿i> D@PP  bA|=¦”­>ö%>ùù¯9(¨â¾³s?/6 @€KÈ'ôk'õ±0_Œ´b –?ò½›y\–OîóÀ,ÆeùŸõxT_¾`³3BãT~ÓäÆ46Z¥ÉF¯úÜxý©›>3öʶÑö¯ÿxºqä®ÉƱ;¶ÖÓlL!=:×qß¹a_^Í?Þá\¶¯6\NÀG¨qþ¿ĺÿéØR#ööOÔ^ºªÛ|iÿXúÕÑ|XÕ¹ñ¡7ûž[ÙqÓ®Þgß_Ü{d¥µe:Ö˜ïõâ¶±8BÄýd)B‚˜_ïzþÀa~â@=‚ƒV,,“ïIèÇ^:]¥ãKÃø¨§ÅÍõWgy^±’F€À:|ÌÅʇSËqâ¯Ç–â¯X `¢Ľ^¶t«ôÀWši~¥õÓƒgj[ŸYnֵͤóÃîÝïœ4Îö«ÝÓƒêÆ™â10q šïGü¯)ž#›CêÕ7Îù€ @àCÄ@*«òI\åÏOwkÅ=ù1ãrKm!íi§ñvów›íÙ›ó;Æ«› sOîÞ86Ü¿cüðÃÿZN?~a)µb½§vÌڜ͗ö#DÈøÆx/Ïò8ÐF€O“€à2V#òí±Àëêa9^ߎµ;µút;Õ¦GãJþ–Ñæ¡n«ýÛçâ10wl‹ÇŽôo:<»tË+ÕèèìrjÍÎ/7gWÚ ½ùÆ ÖŽ£ËHbr¼`#@€¸Ta,Ûß,7F °¡ÛéOnè®LŒvzÝv5˜êö—÷M4þòÈáþóÇgé«[iûxJ/¼³{®¥™Xëïh\á¯ÅØ-Ÿ÷çEüòÄ×d.Uß÷ ðI Ô*S’>){ÿ/ @€¸ly¹ @€¸ÂWx5 @€d€~@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@@P@‘5‘ @€ô @€ P€€ €"k" @€è @€ @ @EÖD @€ Ð @€ @€@€Ь‰ @€ @@  @€ @€Y  @€ @€€@ @€ @€ (²& @€ @€€>@€ @€ PdM$@€ @€}€ @€ ( ÈšH€ @€ú @€(@àßÇœ:¿„`ÐíIEND®B`‚ic13CX‰PNG  IHDR\r¨f AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs%%IR$ð8µIDATxí}€Õõþye; ìR–ÎR¤W+Š- ØPT°`IŒ±Åý5’˜-5ÑD°£(bÆ€?é½Ã.mawÙ…­¯ýÏ7ˉ‚€5°[3Û’kA@BR # `á/Y„¤ F@ÀÂ_².H,Œ€€…?¾d]2 X! |ɺ  e@°0Bþø’uA@@Ê€ `a„,üñ%ë‚€€”AÀÂXøãKÖ!)‚€…°ðÇ—¬ BR # `á/Y„¤ F@ÀÂ_².8UòË«ÔCÿo&ß]}„hQ!Ñžc.ØÒAév'}¼·’Fd9¨°¼’vW%“Ëæ¤f¶bêת•ûœä®¬¤õü^¿,'-*ðшÖD§tH¥ŸºÈææàí6V9p´L¡²¿¥#³§‘£U²%¥é<2geeÑ·ß~ûàÊ•+û2.GùÏz@Y¥@D6Ÿév»=Ïãñ<¬ÖOúrn.ÞcJ8’ª6ýŠ*V|FΜ\Žõ»Ž[öëùb/þÌD ˆ«C20âaùª¹÷“œFY×ßGiƒÏ%÷Á]ü4*FþPˆ`ä– ÐTzQ *á¸ÆÃïÑJ"eÝð`(ð„#z Óò,WB‘, 'H¦Jâ²0B‘þøB‘F\â €@pÂvKH lÐJÀC@ qx™÷tpØUwNÀ¼%$A aŸÄT·“i&Ýi£ë¼½œ¡šÁ$@e•dožJín|ìó^£¤¥W×ùJrA¦€2©Åe:…+8þÚ°­KËdN¹ÒKª}mË\Ôœ ’™@" 6òñì@³ToÎu7UzßÿO3Ú–'ØAÀ¨1eñQëTóÙ¨ œºVùÆ|˜ïv¸‚¬(ööøÏöŠ6U^rø˜ êÌ|G$«±‰l¥)Ték“ µÙ˜¨¸;×¶m[ºêª«èСC4{ö숦õôÓO§ÓN;~øáZ´hQØãîÖ­]vÙe´cÇš3gNØã‹F†@5ca+WÊ´Ù²~Úçž²¶„®X[bUíµ;¼.nèêS|,]ÿàߨÎ8Uðm6ŠEAåïÛ·/L•@oºé&ºà‚ ¨º:ü£–{ž~úi?4wß}7=ûì³þs³FE_}õedd(A¿óÎ;tå•WšMÔóáÃB³`.¯™Í6ÿ®rÚV™œ³íˆýî¼2ïÍ»KmYÊ Ÿ{°÷ç6ƒ¸CÀÚU‰RþÑ"`K&[;fÒû/ ßO_hïÄÌñ÷ßOgœqF­ôÜyçô /ÔºföI×®]i×®]u‚Åõ={öÔ¹nôz;«W¯¦Ô ½xí ðZ€u¼ v†8wîx™/ÒX™×2ÙC?8îøæ°í±ýåÞ,rpóÞ¬†LjTÙè쳿T I91O<‘~ó›ßdâMUUUôè£*¿¡"»ï¾û¨cÇŽJ+žœœLï¾û.-Y²$à+={ö¬s}ðàÁu®™}¡GƒÄu-L:• ¤ä•¸!¬ZµjE/½ô-_¾\yïŠsàÀqKÁ°h0 ã¯}:ë³õ~e³ç•U‡£‰µû”Ž;li¨4÷ >X‚äzӸ袋­±V>ÿüsúî»ï´—jwîÜ™þþ÷¿×º†1~0xï½÷èŽ;î¨õü[o½Uë<'¨˜‡¦Ö­yYéqâçŸVO•ß›o¾™ÐuoŠ<òÈ#þ×¼^/}öÙgÊøß‘æÏŸ¯=MˆãÊÕF¼]š6».ýt»gùªÃŽÑ”Á•=™Çö ;HÅf‰èÓ§OèÏ:ë¬:×´Î>ûlí©rÜ©S§:×Ô <ðÐË(//'ŒË1N·”––Ò˜1chÍš5„ʹvíZ:çœs×µ’—×´ÙäKÿ.zS Päµ°°n¼ñFZºt©6º„8®·€ºªÝ¥™æïvßûÆ&ïSÞd¾’ÆwŽë‰8φzA¥Á0 ˜"(úÒÒÒ¨¢ÉÚRÉ~®¸â ÊÍÍUî<pYí—L:CåG÷¾{÷îŠV>P°ªÂ.н`×@dèþë•þW¿úa&àÈ‘#T\\¬$!ÎC€Zù;pKÿÉNïÃs6û¦Õ´úLPˆÄ-[¶¤~ýúÕIËÉ'ŸL999¬¢bZM/ƒLV¬X¡¿å?¤óß ó¦ä‚ɱcÇÈív+ú ½½‡ÃQkp^|ñE*++ $íܹ3è½D¸á' 嵂êÌ„Ž\ùߨáºkÎfÛ4vûC”Ä]~þ¿Q¢ »QïZåa`ÔDœú÷ïÒÂåt: À·ß~[{Y9FkŠÖ-`8ˆÐ3ÈÌÌT”l• ­#*^ÐR£71oÞ<ý-Ŏ邾ä„9ý™3g*vu>~¡E‹”’’¢Ä_ôF´C¤å¶Ûn#(5¥çÀôã?Ö" '‚M%¦§§S³fÍ”ø ÅP½uÖL›N(¡H…Þ@+H'l&`»ýÅþýûé›o¾Q†QÚçê;‘cºÃ3ä½èE0üþFÄOl¤SKpÚžYaénÏèÿ­ðºü½4¨¹V^šA9)²1FT ƒ´ÑɱÙ µ€2MŒƒõ+zÐ .\X§`…Ò+¨qûŸ8”`l $Æå0¹Õ *–Yl0u©v»Nȳã£Pòûßÿž@¨§žz*mݺµÎ£ú¼ÂÜX ½ª‹/¾X!eôè0|Sõ.ÆÀ<»©‹£üPÂÊ'üAðêÆÊ+¶¸zR3nÖëSJzèü®DË®H§Ámj”CJNë#:pÈ…Æ" o©¡‡¦Y« GAOAuü¯žcì.­V0KÐTÙ¸q£2žô>Ó¦M£}ûö)Ê0ØèEßý×ßoÌù]wÝ¥(è´ï<ñÄÚSCÇèíÀ0) 'óÜsÏQAAÒ+ ¤ÐçõÖ[o­Ôøñãý†[øÃ÷©_xá…ô‡?ü¡ÖóúðjÝ pâ'€Ã>•r_×C¯lu=ÆÚ‡ú{ì×òÒè.DŸ_˜AI¶¤QÈ¥p" WØ¡µÀØtÙ²eþh1·î&æ¿hyUAT¯@2B[? À5h¬?øàú]Zýp@«Wð?Ø„Œ³õ•.??ŸÞÿý&„ü•Ÿ~ú©ÎÍûï¿¿N/cÛ¶mužÓæßI¯«€RÓ—zÁ씄FÅOû¹©¼ÄCŸnuXSd;‘ C eé‡n©:¶°Óü±X2é×'M“¼ßôU5iýúë¯k…¢vûÑrhµÙ ,PžÓ[º @ýtÙÑ£G•iµZ‰â“¤¤¤Z½ý}#ç0ç…6_+f´÷›r¬Ÿ‹Ç%^´¸ëïáºà¡,C§ø  ¤ÊEžjúnŸçjÂ’t¬Oçÿƒ k©ÒCïŒI¡4ôB=4¹ahìµ¢Zý©[½§¶,‹jEµåWßSïéu êõ†þꧯ µ×¶vj8˜F¬¯b¨Ï6öW¿8 ixùå—L½Ïë»Ýú™5€úò «M½lß¾]ÉÔs?œÒ.²SShY‘g<Õ&¡ºbê·ÈF—ôvÒ©íŽ?,ãýº8…ù iz€Ú@·Qkƒ¡ºÄúÆ“h˜µ$€–(y±òpþÑk£a8h6 A5é åææÖz÷ù矸ơÖCM8ÑÚBàu­¾¥ ÁÕzE«Ë©uä?ìcsè­Å¶þª=‹¿P|×v&iCPë¥æ›ô-Œ~ lvïÞ­„ƒq5”ª`ÚwÚJypÕzƒ½{÷ª+¿F V@|‚VRßRêŸ1óü¡‡ªœËåòO•Õº†“¦æS¯‡AÒ`\NñÀù.š³«ª¥›»ö¡†ó¨ïe^ÕÉKý²Ó™6 »ô­8ÆÚªhõè’ÃdTÛ̈́̀V  Ó hâQ`ò«7û1cFEg¬å FD0ÈÒʸqã´§¦û —mý«ì¶äæÁ|}:»€»´3¦•ê{ÐôôJ€ô&Àú\Kè’Ã*OÛ5×ÞG°˜šÓŠQE 6¬H?üðõ¢ƒ’ ÁX,RרiÅb"m¯M½ŽaLŠŠ¿­Ïw»’x"àÖþ…Öþƒ ’ÙZ°5"ÑD@¯ÔW`(ÐÍ×O"Íè),^¼¸Vòõ†*èaÀl8ÔrÙZÄÀ ô"˜× ô"—\r‰âúKß=ǹºÚ Ž´+ µaDêVœXO  *:Ì–a?¡z@êÒ¥‹bF ‹N,.zõÕWÕÇýë'€KÚ¦ç,ÚUÞŽ<\ùµªÕwóÔ /ꮘCõ/½€F£n X^ª]€ iŒ¡åD(TúŠ­êÔäÁ¬$£µ)PïÅê¯ÞeÒ‰é5x2ªOÐ#Š6À$ûü#µk×Ο\ôÐ3€µfR°êPU¨b%"¦vÑë ôýý9ðŠ+ܧW;†A¹TP×yаSŠrØ=˜Tþ H…ý*&ºôZÑW`ÜÓwóÕçÕé?õ¿ú!®ÅÓ0sþFºúPF[ Œ æ~->¬ Õʯ¦Ïÿë_ÿROõû T{šó:”ô†4èI\÷ý/6*:yØ,ôJ.„«Njã€Í{ Å(Úõy¼¯¯p+¦Š~n׃ÍmëŸÅd QuÚ{úwqO?µ¦?Ç3°¾ î×'Zýˆ> ¡ÂÕïè‰YW¾zM?…ˆëð‰¨'£¾£ÿÅ‚$ì“Ðñ×ã$»­‚O*ˆ‡ÇMâ¬!H…ï,rÑ›ÐêuˆÝ|½¶¶úúUlx=m!Å4Öœ«¨²*Àx^u¢¾‹põ• ÷…èš>ý3À#Ъ?5þ†üjÃÔWjÜÓ§A Sûžz-Ðo ç´xkßùç?ÿ©8S ô´ÏavCíroíýúŽýƒÌÛSyÝ#«}¯¬,t¥’âú;À«èõ³½@6ÿÝrI /ô«<,—š‚¼Ýë¶kÃC+Ûq¬4ƒ²ÇXx¨µGå€Áî¡åQ. |¸ÕBA]µj•ò LzÕ…B—b^ÝT\ü¡à©÷µéƒû*(«'*>È‹fô= ¤ct„…)0œÃ6Aï©CØ2€ôð l´•£M›6„iË`VxÚ´é‘_(1 §â‡5øSÓ´A¡ª']„…o—`xÄ_|  ë®NÝ"<$¯Zƒ-}Úp~õÕWÓèÑ£ý6˜-Àj@8[Q1~z§6,ÎcÀA„´(ÅÀqC XRë+ÁÞÃu#ï† WîE`àD?‰’3Õ Ô¾‘wë [îÇ&B±ù]$U‚@DˆÌ‰ ›Äæw‘T A@ "0K$‚@l" ›ßER%D!€ˆÀ,‘±‰€@l~I• „"³D"Ä&B±ù]$U‚@DˆÌ‰ ]xíVòÔYÍS’è^€Oy‘ØCÀáLâÅ6ì,‡ Å©t ”n!€@¨Délñ±mVêa囨æ‡çCÀŸÅ¬|¢ïÚÈž°aT"Æ’÷´–>ê·òËgJÍÛæìØËÁ+¦âÀXØå` 4…¡Åk“&MŠbìÖ‰zË~&€œßV!ê37øvÞ!«ïM·<·ãÞò~9Òºõç—@qÛ¨õ‘…jÁÝ,lj %;رŞjòc5X°ºÌPÍn²*µèÒóoÿÍ«r{¨pÁ JË퇵Ó!˜#2y0#Q𢄠³#²…þ³%ÙÉ]TA>vØûïÓ©Õ9×RÅ®õ5•?[ þŠ®¤8ÂØ6ª.¬ o’@T‡[¶l¡çþñ 5o–Ivg(wÄþâŠÎnwÐýû¨»ëzðáÿ¡X%𦠠’@R«4¥'°ù~Jˆá@T  èÐaú€ýµ·bnI<Íb-ñ‘ƒ}å­^³š^zñ%ke=Ns pqO ‘H ª–ž¦´~Yìy6ÇØ8-' J6Qb7Þ‹/º˜nùÝ­ zGŠ>‰FQ%ÌsÃ;ªúýϹÀÅôþ}ûé¶Ûo\¤“)$ ˆД"Ѹ@0ÝWÐ=NèA—\viã^–§c•â]1(…âßñù¼ Ïe—O4´“M’.QjHÐ|ÐH¢õ/..¦öíÛÓU¼áƒH|#ï$ áò—”ä¤=»vÑÅ—^JØ}W$þˆgˆ`ùCë´ô(µÌ΢k®».‚1KTáF ^I@ Ü%C>¦:wïÜE¿;Ž÷ÏÑÜ‘ÃD@ I@ R%[l™’–J×]/­¤`t<ñFB*!I<ï¿{×n:kÌ:¡gÏÅ*ÑDx"!€•l‹íózèZiý#„xt£‰ˆ@9Í?\}vÆ4lذÄ(QÄñ@B‘()ì[ª¢¼‚®Í$ÐŽ©8b„Â\\`óŸ—ŸGÃON§ŸyF˜c“àcX&!€p—Öþ)>B“§L wL~ #«$U€</‹µÙmìb-Êpe²`Éï^ñ׿;nœÉ¡Kpñ†@,’@T—WU»èàþäv¹ÉÉ&²Ñ–$gg·¢ä”dòxؤ bçîÿ¡Cô»ÛoSˆÎ„ %ˆ8G@%Xq*½ZÇ2…‚ôìÝK±‰wFÑ%özÈÌ̤ҒR***¢”ÔÃ>ùѳ)ä%¿¹ÝºÑÄ+.ób+É7X"¨À é‹_™‰m“ꮪ¢Ë/H•l­Ç`T`ö»7?Ÿî¾çYòkÌ|?VH ªKßõý÷Þ§õë×SÿÈãvJô%¼ä·]»v4ùÚk …‹/ç±MÃ:ƪ€‡o°o(,,T¦9½¼u|¤¥¥ñp*›:vìHmÚ¶á^^oêÕ«W,f%ªiŠà"àf+½Y3gRÛvmÙZwƒ0(Ê¢6û½ù–ßðð¦…Áп¾~Ý:Å£òý=H=#`Z¼|Ù2Z²d -ý¿Ÿ(O*KoÍœEûò÷ÒªÕ«hÖ[oS/Ö¥˜-G¥¹s>¤ùóçÓÆ ùjÁùÊâ¿zô¨ÙG)6ØBµ–°‚¥Š‡Wûöî%Ö[³fQw~÷¬1gÓåW\A]ºt©õ¸O¢IB\âÞ™ýµàVÊ‹Ý ZÿÍìðŠ¿öÚ ­öës?šK/¿ø"mÙ¼Yñ¦Ü§o_Ú²q]~Ùe4磃µßhø´¢‡@:ãoÐ'sçÒ.Þ¨^›;vꤴöŠW8s…æ:©{…()9™Úä´åV÷°|TXTH/¿ð"½7ûm{Ñxºõw¿£Ö­[ëB²Öi´HÀüÉï8ûn?,üÐ½íØ©#€ñé¿ÊÊ*JIN1µõ_³z5]?åZºëŽ;¨äÈÂë ÒÒÓÙ¹H)uãÖÔá°Ó¤‰—Ó¾}ûšŒ¾Zù_æ= .ºp<½ðüóäânü Áƒ•±<î£wTñë‹ïaX=ôy8Ù¢9Mÿïÿhü¯ÆÒÌoÖDÂßWI ’ŽF-O3fLWÖè;L0ròxx÷ÎtÆèÑÔ»Oö¬¬Œþü§i4媫iùòe4pÐ Êa_‚¨-veUuïÞƒ»Ù• IÀç@Säsîæ;ÿzòoO’ƒ÷Ë2t¨2=‹UŒJ¥oJ AÞAÚ.HlȡܳH¦ï€n¼~*yË—#M–&€5kÖÐ’Q—®]¹u3Þú{¸P{¸qý S —Ö÷yǤñc/¤7^{‡¨Šª\ÓÎö“Ê„³cûvº³‘û rwÿöÛn§ßþæ6Z:DÆãq~K?Éhã2ûDPÉúìVÙ¼Vb-ü~!M`oIXß`e‰$ Xšf¾1ƒ|nžºJ6¾-–üÂáÇ©§FÃG orù]ÆÃ‘)W^E÷þþnªª(§AÇRJJ ¹¸Õ%P´ <>›7ŸžyêéPúï}õå—J…ûlÞ<0`€2ÎGïÂìßa€¨04À𳕼jr"ï–„a™•%R$`YÈË˧¯¿^@]ºu%Ëxëïã±mWØ)M\ò{„í}øtý5×КÕk”.x›œª®ªéî7¤2x¸xö™gèK®Ü¡äÏzœnžz£2í9xÈ‚òÎè H¨ør¯’‡/ݺw§-ZÒÕ—O¢5«V5䵄}&$`Yxsút*)-¡ôŒ .üt× /W°ùßË„2bÄ:ë¬Ñ ñø“³ßœI»mÞäi±®tB¯žJelìšt©¡€„ùñ½wý^Ù|DŸíLæÆ¿ÿýoê׿Ÿ¢S@ï!ŠÆÊÊJêй“2ópÍä)”ŸŸ I‹ZÂM–$€â#ÅôÉÇSW®lf´zv.¸Å<–¾êª«UP¾ûæ:ó´ÓéO=J®¼ƒQ¦Ú  kª ?9Üs@7þ¶ßþ®V0›xÊpkø—/]¦†-0‚Š% T³B³K.÷Ì<^ºù¦_+C„XJc¤ÓN°$¼5s6*(PæþÑje—ßéDnMÇNߨ `AWÄsâ»C1VüL€½Ï‰}håÊôÄŸÿ¢¤iÙOK鲋/¦ žY8xPD”|£ÖÃ5=Þœ‡u<úÔ“¯u׊'á"Ë@w1ç|0GѬµùGA„ÇŸû÷ÓDž‡wòqc‚~æqî¨SO£ŸY酞Š©æ¥Ö}ûõc+Çyôâ /Ð÷ÞKÍ›7W¬ðš:UhFºŸxmÆkÿþëEV7æÕ„|6$`Ni‹#¸?úð#Ú¹c»by¦X³H;º«Øå·[·\ºâÊIM )™­ä^ã¿üþ•ôóÏ?+óûf€¢àÙƒ–¬P{õ•WÙßB²Bz @¤;yHMMã¿TzöÏÄC’ÞF³IÀrðþ»ïÖT~X´˜ýæó’ß‹y‹ït6j1"O>ýÛÜ@«¸Û1£’B‰¿ÝX)˜Ê’(º…8©ü*–Hs÷ÝiñâÅôã?ª—-ýk& Xоþê+Zµj%µcãsݨ %%%Ô>§iûüMûËŸiÒÕ“yúk5+Í[¦–Ô¨®#š5ì$&[,€©AÀ,°Ìäé¶ŒfÍê®XkB©‚ 3þŒgÅŸ™»ü>Å=3Î:“Ö­]ÏîÉØ3QÒ–h¯¸¹'ßË–.5´Þ!Ñp1ƒ,C?/[N?.^B;w1<­„Ö_YÛ<Ó´Ö_[8ÿõÊ+¼~¾=íá•xɼ¾ÀòÂ=7ô-ßû­åáÐ`”,CoNƒìì´ãv£‚0víÜMç]pud£³%ƒ“^zù_TZ\BXd†RÐÔ42"Mú?3ôÁÒ‰!L:{ú‰§3Ej#`„,AÛ¶n¥o¿ùŽºææný=æÙ1& çN?ýô§;ヒ¶lÚL0؉A…Çx¼œI ÎHvîØÉ vðïî­ìQŒ¡NG¼bÆ&³E ví2ÅkS,àifšJ±Q²ÌD"@X0µ-g;ó4žN2be‡ ÑúoÛ²…F³Éï‰ýúˆÍ¼K·²;ñ/>ÿœòx(‡5 6+%¨ô0—ÎÏ˧c¥G©s×.4hè`êÔ©³2ûùz¬$Äeû¶íÊ Fn·\ÅcYi†«6ôŒài¤Ó£ç fe/aÂQI ¨Ëñ9Mx8Ì.¿r¹õ7Ãì×ãq+¾î®ã)»HÈ=÷ÝGSyQV‚EC ˆÜÇS…ìð”SN¥±^¨¸ójÓ¦Mä€\³ƒ•·ßy‡¾á—®<ýwëFIW6¤=yyB*(ºß$ {§ ?€§@f‹LÃSaèÚ¢«;ò”Q4‚ׯGBÎ}&qæ™´›[W´Ä‘ÄegOCkÙ„Ï<÷½Á‹•`ð¨ò#]p:š}ý½òïWé‘ÇSœ‡–²×"ÓÒͺ7¯Ž<Êû7ˆG@%Õ³Pës¯¥Šë¾Ð=(Ðæ²_»N]:+»D áÏîØ±2ºnêõxËø£“¯™B‹~ø!bS‚æ`iî¦éö7øç'þ¢¬šlLN¦\w-%¥$ÑCüúؘWƒ> ûEL‹ÂgHhTÀp çÓÉD/“Ð=€wÞ~G™«ÏnÕÊpëØ^öl;tØP:ëì³C£oòÝ1cÆP?¶ëGOé§Àé{ÿݰa#Ýsÿ}ôÌóÏ5ºò«é›ÄËŽÇò2çíÛ¶™2û‚pkH@¬#TŒCýª$àe¾ìþÐ>ÞÒ0ÊÈ\„ñÈG|@9ì‰Ö E*^Qa[ê5nɯ¹…9ï˜sϥü‚©†K0Û€”œ}òot;!5*·Ýy‡RùŸÜ…7CÂ9ÝhFúb) €§´‚¼®À¤™°ð;¹Ü°a½²ÌÖ¨Ù/*AÁAêÃ~÷&L˜•ï{ú™§SFz{/2¶kQ°ÄƒXÜܵÞÄþøö8]=er°Gu½7ï 4tè:t°@YíØ¨—åasàoësvú’° øúoÞÂp×_ëõ÷ï;@']®(ºÌù* eàÀAÊ¢˜bvŽÐiwÒZÞ¸ã¶;ï¤ë§Nm\âêyúä‘£”aE=Éí( °„WŽ-g»ñŽ&˜ýb>6ÊèŠÄI¼d7Z‚^H/vQÂZu³ NGÑ[:çœ1tÿ0=‹½¸€µF{b¦'LLÌiÀ7§ÏPv£Á¾tFÅÁS[ùù{èRÖ†Ã%šÒŸ=÷ºØÑ‡™ÿ~vh’•­Lõ™¶VNÛ¶ÊT¢Yöj¸òk„›\·v--\¸rsM0ûåÖ¿ôH µi݆½ý^kmƒ!tàeÌ))ɦ¶¤^ö$¼—7û|cÖLÅEšÁ$|½ïÜŒm 0}cžx^š0ƒq|1á†Øå×ÍŠ2tk ìý÷°íùø‹.R¶³2žÑ÷Ûó Aå˜Õ @eÜÈsýÚÀ´9\‚4Ã!‰.ØÂ•F«†›P€yú_|E¹ÝŒ›ýbœE/lAxÍÔëb¢|€°Õv%{Í5ªÀûÐm` ?<òpXó—̽–g’©=—°&ØB'Ìb³ß"Þ[cu£ÝLŒ±òìÜsϣμè%¤9¯†ÃºxÅŽ+°Aþvñ>†¿æ-Á@*á;ï5ˆ½E N”›vÂlÎç}òÉñ}þŒÏ•WUW)Ó×]}Ó Ó[¨¸Š¯?ácf«÷±{ðë®ïdlÔ«ìÊ«!H˜Íþâà 3++˜֟~œÁãbìžK’ÊN1 [62:LcÎ9—ÝŽ%ÇRö$-F !ëÑ?œsÜ×?›T0„éE? I·Û˜#‡Ón˜(’^y&¶Høø£¹´}ë6jËóÍFÇ™XººgÏÞ¬ã:yäȘûzèNý×d J@ÑÊÇÜçx‚‚Þ}ç]ešÎhåWÐç5eG²³ÏèÏûG¼4H„–C î àÞ`óç+ØcŽq_ÿv€±wß^ÂvÙcÎ9Çr…A2l=âžfóÔ_vå1ÁìׯÓUE‡ éÊ(,ùµ^Ñ“ÇqM+¸å_¾þ±PÇÃ&­F¤fÉoaùêE¼‹®ˆ `âš°è1§ ›gÀÆþ}ûè’‰M Ï …GòÿÄ-ì`_ôß|ý5ûúïj¸õWÌb •]ƒ®šy?ñ_Œ$ñŠ@ÜÀÌ3y{®2JKKW|Öù5‹~vÓE—^BÍØÔVD° qI…ÜZÏÿtårëoÔ×?Z˜·ÉiË;ýÈÔŸU ¾ä³¸$€Yo¾I‡ØAfó–Æ]~Õ,ŠÙEŽO­[·–r!X ¸#€òò2úh·ԩ³q_ÿ°¨«¨(§ŒÌfbøc©b/™Uˆ;øàý÷i׮݊åŸá%¿<{°k'–üžËÉ\ù,ƒ@\L}?x—}ýçä¶ùÇ®æ%¿Ð\%±–)Q’ѸB ®à«/¾d×Õk”Í>ŒÚý×8üØM§ó¾{š³uU\}yI¬ Àļ5{µ`_ÿfˆ——üVWUÅä’_3ò'a A nàÿ–üH?ò”FbÔ,ùÍ£Q§œÂ[^ŸÒœäA !ˆxsútÅ׿[M+sÿ%%tïº+"X¸ €M7ÑÂïR×®]Èí1æï‹~öçï¥!C‡ÒùçŸoåo/yâCo¿Õ®jJIM­Ù ÞÀ‡:T@W\y…PäUA 1ˆùÀþèóÏæ+óôØðȨÞp{Ê’_#0Ê» „@ÌÀlÞ駈wÄ…?|£†?Xò»7¹Œ—ü¢7a4¼*’‹"ÓPz´”æ~ø¡âëßå6ÖúCñ‡­µ;uêDWN¾Ú¢Ÿ[²-ÔF ¦ àíÙoSþž_ÿÜ\×Ny#Ïà4d7›ý^|É%”™™©¼ R¬Œ@Ì@µËÅ‹~æ(Î>Ý}ý£¢>¬¸ûºû¾{­ü½%ï‚@-bv{ðO?þ„6óô¶¯2£û_QQAÃGŒ eË–Ñ (¾ÄjAÝtFªØ21œž9z4a¶BD71Kï¾óeeg“‡¬hß±#mà­°=õƘTþa†¢ àuíÖ•¾_¼HÀèG—÷„@LÀ ÒŠå?SŸ¾'š²êH`T²Ž;ÞZ»AÈ6ò! SÒyWã1š¾FfGb²Ÿ9ãéq>¹äDø˜ €ÊÊJš;ç#êØ±“a«¿_²&G‚€ P1Aðõ¿cÇvjÕ¦µ´þõ}1¹/˜ˆ@lÀ{ï)•ߨ³Oq‘ K uXðÕW´nõZjß¡ƒif¿–ør’IAÀ¢N3Ùß¼ýˆ‚@äˆ*,]º”}ý/¡Î]ŒûúºãŽpHsu÷gÙeÖ®*ªryWÙSy›j•½€4½³ÛKO GŸÈáLØGÀGïïfu^×üæ\vyÖ âsPÛtÏúÅG)¿¼þCÐpbäÆäÎuÕ{~8½«“–y—¿±Ûã>êò9 { lp-ÝF;úèË=Õt^—MÄ’ «#àözè•-L™ ±ã@ŠíÇÌTå$(p~XXTEIÞ}¹ÍhÅÚƒ¶“(9Pí?Ž‚»OL,÷1à9ôÔßEJ²•<½®Š ‹¹¬¶åìp?¨¸m¼•¹NiCß$Ù„Y€D? ú*¼”éµÓ€–ÞÉÇÚÿÙæéja£U{]ôüú ~ -$d[.Å7ûË*èOK¹l7çÚ¢î+íY5+¹3lZ§%m¨r;ÈÇu#Þÿ}= cŠƒ2Xû?¦cÆ»éÏUUü8X/P¸žå »~¨¦³s4 uŠô!,×b7ûÜE•..ò-¹Á 5¥‡­ËFvrÌîËz‚G}õÎÆH& ?´ÎLQ2Ù£-ïô•_,ØQ}>es7 ¤òÍj;ù¸Š–N´S.˜U¼B‰xü)ùŠ€¿zhò—U´r?ÇÖŽk¾'TÙä{U^j‘aslcu[ÿ Ã›¨}\?”–º•ºž\MtaÇ# öØÎ'gÛb,mn£C<¦õA}<ÎK#ÚB{ à°~r \ø.†.Î^ýE½¿•Ù §5ÙÎe¾ÒFguõ¾Tâ®8¼¡Ôr4üKdqpÔ9µN"ýà9né| ÂGÃrlKGµ³}÷ã^ÛhÊæwBu—p/ËFذâ¤*é…“½tû D$$Pm¹!jšþEû\të÷´¶ˆÏÛsC†f·‚ Šl•R“½Þ3s’¦•Tú‹€¹$û  s«šCL‹¶ái¾‡‡yo·ß½ Ý!JÂP r V R¥îø¡ŠÞßé£{MèŽÞ€?Š`°ËuA ‰ Lê«§ÖVÓÓëÜ4}—]˜û¶ã¿†ZñUØhboßc­ZV(·“3¡Ì\Òëàl󝨛ªiæ Z §—îø®üoo²=N­ø=°g} '”ïq„äqVÿ6>º¬[2lm£L096¦ƒDR_ør_¨ƒ€JXµMÓöÐç{\ôÙ>.¬•ü ÷L{–†T~Tt6qï”aÛ:wBZ/ž£J·¯½Ô‰>Ž.œ¥êè~I´Ÿ¶”²©“FR¼ÚÇCã¿t/[~È>œZòÍ_8Bód€C¨ |üÏ1FQéAðwHwP¶2ÌàËž„‚5@þåRD°s9òr¶Ÿ­úJÊQÖ¸qárKÍø/‰ùRƒå• ÃΚÿ·Æ8NÖ!iÓ‘jwz«±Þ¬noÜÅ®C sž©l1±—kìòŽTælE TCH@žÿ­u3F—q¬vùhW ŸSôDÃ(…©Æ©(oT܆V~æ Lùa­ïmCSÏìêÜt˜ÉÄÎaذî%ÁÅßX_Âê€]}ü_^•‡6úú=ø“g%÷’h(¸šð”ÃÄÇSŸc9MiSPQ–ÙhBOߟ¦ô¶=Ö9-™-bãáO ؇6ƒN®¶ø{UžºãŒ€z2³žs"­ožR=zêgßðRáÊdäÒ¨WM믿&ç‚@4@·möOnïüKŸlûc|ÜÙbK[ƒ"vî–ëÿló_êö*Ó(§tt,ùßXç¨)tŠù5¼)-úqôä'®@Ùå1¿“»þ—÷ö>Ò3ËþðaX´³X­Hû  &ûuÿ Õ¼h¢œP]Ó-eåÍœ#Njíùž0žgEIÕ`«‹“\‰دŸRÃËmÔÜGGþ1Òqéy¹ŽiùP ZTê%à‚©T,œÚÄ}ŸÍ—÷ÈPÛè‰]éÑ 6’ðã |<X´Åx¶Õéé .«\^Ojé›awÛОÙö Ž·ü1žƒ°%¯A ÆŽ–2î ìgmà)]ìÿq”{Äà,Ï|ªæITfUE›ª‚­¾$¿‚@4PÊ!—I´\¨øÜå?!Í»mr/÷äÓsÜãXùµó —c´Yø³ªø•€ 3#lA…l/ݽµmù¹<ãZÚÎ9æ±ß±¥Ô7¾”¯+šUè:Ðåçý(ãXD0µ«e «w0µÇkY’“mÔ­™gãImíÿ–ã|­ ²Ü•_ä„ůҳ53ñV£ ™ÞøCoà0/NOò-8¿kò‚’jwŸÿÛ综ÄåºhK…c`¥›’<¼¶@ñFV ˆ†à2… •]1Úa”ÓÎîê}Ô9“öf¥Ú?Õ>ù“žiåŸíãq~™7™Š¸Â+(¿"&êHøK?†> ì¦>Y4­MšmZ…ÛÖiÉ!ÛÈÔ?¿ÒÓóh¹mÀ¡j[*›X¸Ùµ‚`/FÓÔ^Ÿ—Z§{“²“í{Z¤øV•Uø¶jŸüS³T×z—Ë^ÂëXª¹GPÌ UjŠRF Ç›Hø )S’A@hR6,HyJâ!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚â!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚â!€xùR’NA „T Rˆ„âåKI:0 P%HA ^ˆ—/%退@@• xA@ ^¾”¤SBaU‚âÿœß5_ªÞIEND®B`‚ic09œ™‰PNG  IHDRôxÔú AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs  šœ@IDATxì}€TÕõ÷™²Ý¥ÃÒY@""öŠ @:¦˜hš-1Q“hôó¯ÑDc¬Ñ$jŒš˜ {[4"vEé KÛ]¶ÎÎ|çwwÏðvxÓv§¼Ù9fç½ûn9÷wßÜsî¹çžë ¤APE@P² wv5W[«(Š€" (@@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!*da§k“E@PôPE@P²²°ÓµÉŠ€" (Š€ ú(Š€" (Yˆ€ YØéÚdE@PE@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!*da§k“E@PôPE@P²²°ÓµÉŠ€" (Š€ ú(Š€" (Yˆ€ YØéÚdE@PE@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!^»6¯(«³‹ç¥Uy¼T^ë¢MµõTW ÞEÐÁC97½¶µ‘útpS¯ŽvÖU6¸©Gn#Õ4ÖÓ˜´¦ÂConk¤i¥ÚÛXG{+«h@÷ÎävçPhý^Ý¥š^Ý\OwïD¯ïn ÉÝýôâ¢D}YŒYV^GKrhB×þ¨”Ó^z9ÙípQ~c-ù¼ùTvè™ÔÛkTD{ö$»Öl)ßívS 0Ÿli3Úéâq ínOÁÚ&\#´·6¶§þ ×–Œðº0å^w€º0·ïã!ê‘Ï?4w k…Ï߯Þïj¬l tÔ»zíó“ÏÍ¿¿ph¼"йêë¨Îøì°ã·nxòÙC[>×»Ö"à÷óùÌYÚ#c´¶Éz…Ý›ÑMv¼Áü;Ÿ¹x!úº¨Sµ‹öÖùS£{üëÛ|ã^ö»†­¯vum[ÃØ}þ@§zQ-5˜ý»¨!£;H‰O,bê‰ê‹©~sáGÒÈ•"ÓÑZ§" $ G 9¬»/ÎuQ|®À Íõ¾Ãÿ¶¶æøOöÔùPwH5ÊþúF ¸ äLJ¹¾ ³ ¾Æ­‹4i§øFƒ"< ×÷)ó6$…ªŸ%q³gϦóÏ?ŸzöìI555ôꫯÒ]wÝE;wî4éÚ£f`ܸqôÓŸþ”FŒaTãŸ~ú)ÝsÏ=ôþûïL¬*t‘¬ýš““C?úÑhæÌ™T\\LUUU´téRºï¾û¨¾¾¾].{d@ÅM¢£€¦–‹Š<êS@TÑèî±r[í·^ÝæŸ¼®Âuê®ú\¯Ÿ_.ò63yNGœŽ ZÄ:>(Œß¦Ü?î7B34!॑*AÆýF@% æ_PP@K–,¡É“'·(ãøã§Ë.»Œ&MšDo¼ñF‹gíáæª«®¢›o¾¹ESŽ<òH#ýêW¿¢ßýîw¹^.ýÚ·o_zñÅéàƒnÑÆ“O>™~ò“ŸÐĉiãÆ-žé3pŒÐÈ »[îÜôÞÎÆ ÷}Zåë;§ï¨x(À3 ŒÆù^rzÈãËãP5Bà:8F¦Ï@#Nƒ"ôUŠEYþç?ÿdþ˜åããñ°Á‡ÂÂBzê©§3寿þ:î:œšá{ßû^ æ/Ú Ìž lݺ•þþ÷¿;µ aé’~]¶lYù766šÙ>4øtÐAôÄO˜~ [>p MoešÈñóLÁËlÇ¢þÜ´b»êŸ?Ûûî-_tzkÉ÷¬•õ^ü'êË&Òí£"¼®ï7¢‹ŽÎiê:­VˆˆÀ©§žjÔÃ’ Ðëe¾™Q€™téÒ…þïÿþO’˜gÁ› ¼èС]wÝu-(µ9"…^{íµz&ÌðÇ$Úh]Ò;v,ýìg?3i¤¿ƒôÂQ¤E‰zqÏøs´µÆÆ3[êWÝô^í/¯+8Ìï/"W'fî<[€:ŸX€Y½™Ùó6"¦K´j•å¨wI‰Q‚`m8–pÖYgQçÎMRa±äsbšO<‘ –40C„!C†5yØ„~0uêTC]_Y…€iÓ¦…Mçàæei)_`öͳ~õäm{{ë|c¾²áÞ·wçhàuü<^Þg5ÀUÅêBþ±4ÿ`öëø³®´ÁYˆ@§N¨¤¤ÄS¡ùÖÁ3Ǻºº„­±víÚ•ºwïnÊ´B:óòò¨¢¢‚ÊÊʬbº.--5éPŽ0>»Œh'>{ØÝ‚•Ø¥uzÜàÁƒc&1\ZÁ†u½{÷¶}b®$Ž„è'h0°dñù矇ÍÙ¿ÿ°Ï¬ d´ -Þ_k½N?)öÏúÝTèõç-ßÜpëâÍ?©ªeòÙ°¯CÓ ßgfüéF)PÒ…Ö‰/ºè"ª­­=€„üü|ª¬¬¤‘#GÒ¦M›ÚÌ4}ôQ:ýôÓ¨ F|Ÿ|ò rÈ!Ð-b÷îÝÑ’˜çûöí£½{÷Æ”Ö鉰«!Ö-í¬Y³èá‡6Æ”²›"Ö²[›ïÖwÞI—_~yØ"¤¯Â u"ðíÚµ‹Àü58”<–‡ÕöÝy†¿©*pÜ-ŸÖ?VVÕÐ\^ÊéØ@ pã½>tújÀçì7F©K:£F2u`@¶ ˜ÂÒú‘G±{s\¯^½è„N0éÃÕAcèС´víÚ˜ËEBX‰ó›ß ;ûFñÚk¯Ñ¶mÛâ*Û©‰ß|óMðaë`¤Í`Œo½õ–]’`œØ ¬på'ðâ¯ýkÄÒÞ~ûmÂŽ†haÅŠÁ$¢ÕFè…c×Mjà]úTÈúðv½%}·]õ~ÝkeUyýØ ˜<<¾ØÆË`Ñ$•-\p4`î¡Û«„`0X]#`½qñ™½{ì±Fí)?ÒBˆ7@8ÁÞwÐh¥×b½ñB“¹ÉÐ?ëׯ'+ m·´iÖ.H,ó¤*ÈNÐ%}®î»ï¾ÛørÀsä³ö+îѯpþô§?™"¤=áÊÓøô"4Ã&öýyÛ^Û×ùê÷kþû¯Ï=WÔX:.d£>cÍÏæ}VÁi¿E@ aÆ™5q;(0˜Ê6º£Ž:Ê.IÔ8 Ð2hC‹K3fL,É‚i@'ÔÖçž{®a¸·2¹þõ¯MÏ<óŒÉÊ,ƒ…eجä_ýuCuh»‰g—^ziØVIß„Mà¨O„±{ï½×”.ýcW4AßùÎwÌ#䳦•r°rõêÕ&M{éW;,ÚC\R°sLL¹èó]¾£~ýî¾ oln8ÞÍ[ú\lõ‡}M3~¾Fb Š€"`7û…³òÃ;,4:®{QÿË 04³0£xmÀ ¨¼÷Þ{F›±hÑ¢ 1êXµjÍ™3‡®¿þzS¥•‰˜ˆ ýƒ6Cð®ØÞ¸cÇŽ`K°æš¤fL¦ éãÅ‹›þŠDú Ÿ… ÐW^y%(L"< Š€"øŽ5ÀÙŽ ܱæ…õ ˆ‹†Nýúõ3»"¥³> epØJº045&^‡2<0ü>øà€¦8­Ý/¿ü2-_¾ÜÐÚ†PâCiÓÆ/i‘&4<Óog!°%°vŒ#ø´¾×¶7^sýJfþÞòvâøfÃ%g5]©Qœ…¬½ak€ª¹¨¨(Öä& ÌðÇ-ˆ`€ýáV-€ÄG˯Ï[@n.{?MQøóŸÿœ¢š´§!À0nYßB7­ÜVŽ«jC¹^r³å¿¿‘ þtâï´~WzˆfÿƒØJ¬|Ž9æ˜X“Óa‹Y¼ùÄ6!ÖÙ„¨“à ˆ—O°/DmK(2¡UJÙ¡ñ±ÜG£GʈDÊ@½ÿø†?ˆX?Ø=çM°?aOêµ~ËL§bM?Ö }&t†æ‹»|R&ð‰†‘¤ -Çî^h²{–¨8ÐOMÒÞxò%:­í øb Âø½ÜöÅú÷W¾Ýú~Ýmä."wþÁ>ûÙ·_³•Œ…ÆR±¦QÚ!ÖYv´æaÇ sÊ)§ÐóÏ?-y‹ç0à*--mí¶ ÷ßD¦Z†0™ÐxÜGbNvé­qR.Ê7\yd%=Ê€†”Ðj À©<ßaÁšÖDÄñ4„£ÃZL¤:äNQüßÿþ·3àñå—_Ò/~ñ úýïo­6xmÅ }Šœb¡=Z<–&Hˆåš áh’xkªBH…÷Jx–üøãÍòDki²õRú á_¶Ðè!õÃ1–JĹ—•ö¨…'1­0ƒ­~óÜôú¶úY×¾µï~ru`þüàÅL÷÷'±ï´èv†À¡‡w‹âÉ£‚“N:)îz¬K2G*ûÁ ˆ}áÈc ¸‡Õ<êx=ÆAè¹í¶ÛGë>÷ÜsA!ÀZ>®e…â\`' ‡1¶­aK"ö¹Ëš¶Ð,å„–owÁË2vmByÀÞôÂíóG|0‹¯{võD‹;çœsÂ&A{PÚùüäÃ},íD:ô+´ø¤°V„>ÓË¥ü.SWöä—C¹ü¬qqe}Q‘+?‡||d¯që›dæ›—Ì=FmÜóü Àq›!˜®õ£ÄòÀt ñF¥"XgÙÑê“ALTœaˆ0x¶Fk€Yt<;@˜BÏž=©G->ðxu­¨lMÂ?h£´ÎeÀX„ùcF^œ=ÚpöcVŠkœFˆ³à×^íâ[Ü"Ô õ1¶·I¼üN`ì¸téÒïœÐ4±Ѓòzè!úïÿÛ*æºp¬2„ñùóçaï.ðŒb¥§-él€zø"}êø92²ýö½úÇ>ÛR;ÒÓ™€-fÛÉ6 þG¼­Ð w8dUÕòÝ>:öðõ^¾®âO Kü1Â'jÔbã;áÑ|Í»ÎwI ˜a»]hÀe7HYãÅ£¦pA 8äÁZ®µ¼pe}RV¸t/jn)Ûú-iÄØMîå[hƒBÌ8|ðA‚Ѐx´SÊÂZ«Ìv%fyPûâTEI'å†ûF›¬ŒÂ|ûC@±¶‡Iºå[â­i$®­ßBvOâìʆ³žH3t»<ˆÃÒ†ø3vY¿‘Ï1ã¶ H‹ ´VЖöˆš±MÚ ¬þóŸÿ˜™?:©SžGúFZY®8û쳃[‘Gê‹”_Ò XãÇ!Y矾Éf}¥}áÊÃsI/ià 6(ЪàY*ƒ­ ÀæL‘Âôaß"7ÝõIý7îûÈ?“ºä°Û_žùC-ÐB_FëŸðé> ê«d&_ÀÜTP쥱%DÃ;ºil±‹ú° â9T”ËéXHpÁXAƒ"üV‘ßí¡Ö2Cóã~ìØ±fÍXʲKc'õØ=‹TÔð7ÝtS0GÐZ˜ \ðâ\.tÜqÇ™<(;4m°° ¤Ã¬VòB({ì±ÇŒ÷¾Xfk}Ök)7YßBß…^h[…à,4‰ñŸmâ(‘òžHY¡ÉíúÈšêþüàÖ(Ûw} M–’Àpá‹"´- s:­}‹÷³wh•¤¼0YM´´i!¾ñÆ4pàÀ`Á#áeIyÖd(;2 ø@û„2Q_,ôYˉ÷ÚVèÒuÿ!´@¦~}è­-þ¡7¼×p/ÁÖ· ƒM4“Eyø0LJjßÅß ü½ù¨GwÝ?ŸÎèã¦c{•˜Ã7„´ƒÓjPZ‰Àà6“ä@»šì k:X?7Î Öx»kq$‹µlÄYïCóG¢14m"î¡ýÆ7¾AðZˆ‰¶ë®»Î¨ûKKKƒg<s(½R„«ÿøÇôÇ?þ14‰ãîá3ÜpAú¶&°›@@;å]—/ÑñûÛßhêÔ©aϼ°Ö‡Š %j-ó·–e½Æì†xr…õ™Ý50‚aTö`þ"ŒÚ¥mMʃ–ÂÜEG;”©5uØå±ݪy÷žÝgÇ×2_…ññ5U¬¨nèÄFÿMªR»ÒÛÀ’‚—ÕüùM?üF–Uvñl¿†è˜ƒÜ´øL/mœYDUH3ä1óÏãÚ¸9Ö0~Îëgæàrü~^Ä7?ÐbË;ÀŠ:óöVÔGÖ†µå·ætàl ‹N:餰…™A­-ç„ÎÒpý˜Ý„ V-E¸4‰ŠÍ_|ññR®l ÎXWóGFgn,O¼[êdÙ$Þ¼ÉL/ý*uDZûGZˆ¬'0¶©¯5ß ï2úÛ"ѵ8Þ;»¾ +]W\qELI…¾¿ÿýïA;˜Pì­ÙÑe}n½–´R|{ÀX1UÁV°u/ò‡ ]ÙôÿÁ US—®o˜DE…äö×ò\;þU˜â÷G»<ÌüùÐ ^ZðUò`ì ÐICsè¶±y4¾g¨Kevo‘c\,4ðÄ_ôÐð;§Ah)zy"ØA5øä“Oõ`h#0€`ðÀLõÎ;ï }lîñéÂyÿ“Áênøê—5äРd¶[A›ìz%`V‹­SáŽ%ýÒäF'ùñ-åYÓYŸGº†ÖÖÅ0-RÚT?C{Ð6Ìaý`×F¤A<„),“ &æ&E¤Nì ¦èWØjD  =´]¸—¥y&ßÑÊÃó‰'še-;wÍ¡ù¡‰š5kV0:\=‚s0¡åBÚnÍ+é%î–[n1;P ï±´ÏRLB/-œs¹ÝòüúéÊqýŠÔ=·žþ½ÎwŸéK9ìÛßïI4wÅŸËtóL•¿|åÔ« @K¦åÑ˧0óg’lsÐÀË©™œíF¯$ kêHêu0aж3¬’Ûìöƒ\D¢mýƒ !{àÃ5sèСá%-FeX¯mKN‚U<åv§vZ<ÙR’ÌC˜ TÚØZi³!mwÒRöÄÿð‡?´’÷5˜¤´-îÌœá裎š ¿+«-J¤ B i¯¾õÖ[Á-¡x&ÏQ†•ùC ‚êÿª«® ö)ÒXÓã>ÑÁVðÖñ²¾Í§7O¼—|ÖøóU¹c©°š\õ¼U*¼½@üIJ!fþæì•<»/÷Ð…‡çÐæsŠhz¬5°ó ¶ <äf»—gÿ,!þº4‡"à 0û4 –-œ¶ã ô­Ôc{ßGa¢BD‚9Èú¿5Ÿõêë>»z" *Ö²}ÁT¬Âí貫Ì[8žãÈÛ)S¦›`…ûbõÌ6dÈ»*Ò'Ì}+ŒT˜Šap<³lÙ2»Gi‹ƒ=³Ï>kê§_%-ì°Â-¼BËe5p”t¡ ”x¶F XZ)-- ›LÊB8”ÂTh°ã‚9òâZœ.!òÈï[Yác[ %NÒà;™Áv `dI“5²T 6ÛE…/«ýÅ÷îÿy“A3hÈ„±ƒÀÅ*­½òjéѳ hî@X@åÀÖœ-ôûM±úWÈd°Î)àH]¬Ê¾]z,ÀˆÈ.~øáÔ·o_»G& |ì‚ X‘lìò%"ÜЂ@¸è¢‹Ìs¡'RùHƒ¼p(õ­¨¾%ÔÏ/½ô’ÁL˜©< ý–=ü¡ñN¸‡ê;ì–?„Æ?ýéOréˆoQq£_Ï8ã Ãü °EjƒŽþÂÖ9x[yöúë¯Ó;ï¼cœ Ùõ+Þ áÓB>¤-Ñ„+©ã‘G!x1 Ð`A€Å»Àð±¥áÒK/5»W$•6ëµ¥#Ù÷¶ÀZööiýld·þkk¨ð¾Õ•—R¼Ù*ZI+Ké¬Ú÷`ÁŸ™?V5¼?£€Fwà­…Ðxx×hZY…fSŒ@4¦ õ?øˆG°2@\°ž)3A“ÈòG ­˜µ àFê³bR¶JvÏ%]"¿­4ƒY `À· h“´ 6˜Y®´âƒg(OÒ ŒX¶‚‰#»:Ó7mÚ4#àD£Ž”ä|+žÑò%ó¹•0ÐHi¥ Ìœzê©-Uô'ž#¼—áN9”wõYi°Ö/ï‡l«D:ùI:Iƒ÷ [E¤nk¹¸–´Hƒ¶Â–ަBŸ›Èý±:ñÞ~ùtæãƱËßEkëÎ_¿'PB¼-½ð%NÀkúlð׸ÏOý;ùiÅ/õå½×¼ãÐlûg?ƒš"4´E Å`ÖͰEååå·éÁ‘0zk3àšUœãÈ…ç2Ha\¶ÿaM³æÐ ùà~W¬ñ%.4m2ïeÿz¤:d †Slm” í•{ù†ïùhAÊŒ–.ÕÏÃ9þÒ^*ÀiAè]PÙG "ôÁàš*kŸ ,)O¾áb8Z´véàÎXìfä]—oä“kØàDI„HåÙÕ‘î8[`-3cù|Qí§Oü~ïÓÛŽc~sàÝËFz‰àÊlÐçr±µ…›OôÓsgu ~|˜P-ÏúýÆÝ_ºáÑúä"€Ùÿ Þ^.@ý/jN¤‘£­ƒŸ5¯Ý2¶õÙ­uʆ5SøÍ—`½–8ëw4…5m¢¯¡°*†–/m‚¦àá‡6!dE˜a÷PSÃF"„Hù#dKê#h| áˆ°î +s'ë;nG§ô+ìDµ®O$m¤÷Ä®ŽÐ8Ø»”––†Fï¥ø@À½Ä9üÂV—¿g'ëü›C—\½òµÿˆ×wø»×õ±G>ãõ^ùÚdàbaÂC ðÏﯧù'ÓHðR@¾)[(ÐoE ý"•zhÀÀ†˜ÜyB+p|çÔoЉ~@Ç?P}ËìØJ·´©5‡þXËIÅu8ãSkÝЄýæ7¿ F Áˆæ ‰&Ô…æ ½dœ+ØÂv§ú!H½¡å8ù\ü€Ð”Ïà­Ùë9ŸjÙÓ«êæ´=Z{@¾Ø#8?—ÓèeAƒ-þ¯›O“û±×>öØg„ ~lŒc/PS*‰€¸¹µÁEY—ç0~u£ÄY¿±M/´ÌP5¦5=®_|ñÅQáýMðÌæä•>,üb”­x;¹]VÚ`˜vÎ9ç˜(éës¹þ׿þEkÖ¬‘[Ç~ƒYÛŸZ Æš9N„LUã¿Hõ ó”ÆÉÏl€Jæ¾øÔ»]´¶–òŸ- œ æï2jypç6†&þÏÿ:©Ÿ® ƒLù¶$µ±BÍ®8X2#X•õ:ôÄ6<h¸Éz?žÃÇ€Ôa—ÎX°=É uˆ µH×¶8ÌÖEsŽFØ)„Ó„Ë“)ñòn`kšuÖ/ñ¡íÀ¸Ñ0 Í—ê{ÐM£îˆáp´FŒÂ屯‹ ¶H‹ 39ØrÛÿ•×>+vÕÒs›+&}½·±»äçY fè ì—ß8ÊõÓo‚…?üø»Èëá [ŠP§¡8™M‡Vro7ÛÇÞõHa"»8• ³¹ý†oÐ.TèÍæ/t‡>s½ә][1¡1ßùÎw‚Å ½ò¾ R)v7ÈÌä° ´Á*ÐØ‘[ŽT†XÞ£hž3SIokê²e·#:æ>Çwï@ªÝ§ûê}l‘φy áμt€Z+é⑹tLw0ÿ¶,'´¦ÙšGH?°þ·;À:˜[-Ô%Û#©K±@fK'tRÄ†Ú °žÆŽƒH!õh¤üÉ|*Ð$³®t”}ÞyçΤ„q‰Û_¼7òî„Ë“ ñ©î×X„¦¶Ú¤w[ _a•çQ·|¯gã¾üÓ)ó€I·Mýïâ%<ùUçRÇ¢kFC¢cm|hP²Œ!Èu¸¦ÛYoÃH/ÒÌ®¤¤ÄŒ2#i0ÀÉö?ký0´ µ=°>Ç5œëhH ¡ ü‚ .0Û1D‰Ãz¹ÕŮħ†âöUK¤ßhŸ>}2º±¶ÀöRxHWöËSç²r‡oöâûùd¾6XüóA>TÓ@ßå£>ìoÀ×Èn~UÐfhµ€ÌA@ãhjt8±nÉ“|h©ÌÜ­ƒžKXêC(-- ˜œªØ…hÆVÑh·+SãZ‡úTúyΜ9A? v¥Iºûî»Ïî±ÆÅ€ð-ÙåwæÄ3"„ÆX¾m€Ž^?uá“þ6V¦ùëxvnñµ}–Îó^û¯'*¨¥„B›US¶TÄB¾¦Q2ñãÇG$>Ä phBÙ(>ž[¯¡¢‡ŸôHAÎ °æ“ôÑ á އ4$ô¨£/¾øbS!îíú á#~é5´ à.öé8#M­‰·µªxf]=õb£¿g6úQNÛalåÉ/2UùhêAÅ4¦3WÀÁm…²µ°)¡þU²hëè`þ2ð‡‚Ù;,ÃÍðq~¹¬OZgÖrdû3™ÑÈs;ãCy†oœvû…X<óYóéu뀓'±é$¥Yûžéä>´_%½~GG œðœ‚/N•Äo¿Eé“LÂÜvîýüv=¿½‘6TÕd¿¿hnóMoC`Ç?ìôŸ¦€£ß¦ÐðOƒ"MtïÞÂyÔ“$’~ÝW¬Xqd2õë×ϸ)JÙÜ$¿ÄY ‹Åª#kz¤¬‡þH?K ’jë¿ýío&Zâ$~LJÀ|@â†;4§àcÛ3f˜ÇˆË4Ìm€ Ýs©W‘Ç»©ÎË?˜i'‚?38T×Hù…^:µ7—©AÈb°†Þ¹sg[dp‰¶ÅHfðv…` ÂG,ÂCÓÀý/΢Í~/ÔáP¸²4¾ík¬ÿ‡ ÒÏpK ?ùò…Ë£ñ‘Ž¡>2¬9D;Á Ëa¡Â¶5­S¯m€ñÝrh@qΨ=×@3ûOˆ‘âsÑ„.¹4 H×úB(]©A ÜìßZ{¤5H¤ƒ! œfÍéZ˜‚-Œ´v³–HÛ¥ xÔ<gÔÉò_(À’|åK°ëWyíuË'ZÚöø\°—hc(ž’»ynºé&ƒÝòL°±b û™; D°>“ô©ú¶îß\AK¶Uõih`Ëo"¦ÿÍÍiðÓøXR°5=HU›µE íD3‘–ðÜêò÷ÖmP‰æMKáÉÌǺ tÀ³Ò¢×ñ#`Å{þÏ=÷ܨ…`ß,K7Q jN`¥!Ö<í-ÝâÅ‹ƒgq„âa½¿âŠ+‚g3à÷*,àx¨|ôÑGé²Ë.3[y±Œ&ÏÒ-'ž90Vn÷•ÔÔ³|ƒé?oÕkë:öú³æÿ¸n¨²ì½*Ì™ÞéBëTR‰À!‡bªÃß:Xi°n´Æ[¯q¶øQGeŠz£W?ýôÓˆép8 –z÷î6œdhuV6±>ˆ ¼~ðƒ¼ÿE 'žx¢ÙûߥK—°Æ£ÑÊèСƒq2õÍo~3ìÑhe´§çð‡ñøãÓ÷¿ÿ}èí~«ò†·Û—_~¹í‰•X¹çž{Ìö\äs°³ãÞ{ïM l¶Àä®ù´®lߪã5ÂÜ&ký¶QÇ‚|äh@GTÉ’1þk[©š[ÈD0 €ÚÁn@A<Îp´k¾˜iXgò¸—µ`”.Xó„¦=Â|ÄÊE¼Ð*uÀu+v2¨ŠbÛ鹿µuö/}`W,ÒÚëY ±â#¿¤¿ë®»Œ{k<Îh£Ço ;iðÁŽVŸÒ¿øÆy “&M2ýl=ÂX~ã±ÒÜšt¶ŸìÚZ—Óu¼ðÁ³öà×fg=¬ùï漣|h`X¸_Âm ášGÈT ö“™µÌBÛUn$Lžü ª—òB˱»_¾|¹‰¶`¬ŸÕÐ:ÈYËÄz&´’ƒÀ·¾õ­´œ»€]&šÀ‘¿·Ür ]yå•1AãÞ©S§¿-|D€ÆoJ„ëéÓ§Ó—_~I³fÍ õò?  FØÚ¯þðÝut(¹s›öé'‚W³ O¾‡z 0!ТL@@˜¨Ìþ#ÑÉ ™5ß¾}û‚Ûù¤|ëóÐë;v8²2{I‡2¤œuëÖ™h°$õ{ܸqæÖ®,k:½ŽÁÓºõ/¾4u"¸æškè£>Š©ÈPÆ{éOkˆ“ß®{ôèa~›7Þx£5YR¯mùðÖÚ†ƒ÷5øcæÏ¤·În&ûub{‚ªD¤nl°š;“À]Yÿ(¬íõ»5.ܵÌè…qÛ¥“º±÷_ÔŒgM8‰·”Iœ5-®í3 M£÷±#€>kÊ”)tôÑGÇžYS&ôvÛœwÞyÁ]7‘vßHÿ 1¸Fo}&qHgý}Y#ý¦¥ü¶|Û \i•ÛåÚ×–‚íòòØ¢AÈJ¬?pÙ?éǽvíÚ˜q’}¸ ¨[êßÖ(\>«Bò‡¦ÅrŽÖ€³†XOÖ~ð[Áçý÷ß§yóæ‚¢]/Õò{ÄvOlåÄ{€8ë¸o™±¤·bÉÙŠ4<·hΕÀ­…­ C³(éD tû~ä¡?td`ˆDï'Ÿ|Bï¾û®IZNh>«`8¦.yàˆ»¬!”ÖN:‘h4¬éb½ŽFCh9±¦5Ê'm(=­¹¥>œ¶8mÚ4S|´>m ÑòH¡´†ÞG+'Öç(7YeG¢!–:1Û<-Z"•éYèoHÒb§Á_þòs+õÅBŸäoÍ·­Ðš‚bÉÓÄö›…‘bɨi G@~Șý‹ ‰“oke¾Ì­Ïì®…±Û•%q0‹A·.i-ÇËR„¤GYRž¤ wäp,ÂK,i¤|c` ­ßú×­)3´ ¹—ºä[âÃ}ÇR· îveHÿøÇ?>޵î`†\È ·5u#Okó%€ô˜êú"õ…Ђ4ÖtóçÏ'ê©SúNò…û¶–…4дüñôÐCµÈ"¿¹‘ ¾I©`Úµ8E ã(..6GüÖÕñKI¢d@h¼<ý–ãCã­÷Ñ– ¬iåZ–ÀØBi¥8>¡šä-((˰ßñž(ˆ2a¤€½ìùùÑ·/K{@C^^^¤"©°Ï.!IJ_Z“HN¢¾ûÝïFJ’ôgðqÚ·À?ZU4ðzm7¥“Æ[f,éã}ÿ á½Yµj•ÙÖ‡ÝÂøcþÐëo ~ DpÍúÌD$ùOdÄ“\¹¯d H1p`Û^ÿþý3üðûôécöÒc-½oß¾tä‘GÒ®]»‚Ç#Oè l‡ ±ÿƒ^}=¹m (ƒò+¯¼b‰íRf9 À΀իW›-Š8 Ï}>ŸÔd ”’þóŸSÏž=ƒ§J<ÚƒÁl±Š'À€ñ{ßûžB…(”ƒ½ººÚ`k¹Ðr`mƒ;ÚÀô°{"–ððÑ©¨¨8@`B~/pÄ)àŒ†K.¹ÄÌ Ñw© èôO8ßðÿío› d…¾gÈü/l¬´ãÝ –h¯]àýµnKT®ü^ ñ­Pá‡í! úŽxâ òŽ W]u•ñpá…Òܹs£Åôÿ²eËèÿøGÐÛ¦ô3Ê—ëxèjmZ—€e-àíÕÓo[ã¹{þ:_ê×½mx YÕÏæ ¨Ða%nz÷,H–¬xÀÉ€m(ÖJ¯^+ÉBàꫯ¦›o¾9YÅP.8<¹aæ-ƒÍ‰R­I˜åïÙ³'…µjUŠ@f"¿ø@˜/))1‚z4!<Ëò^¢[ÁüœÙçYˆšKùªˆ%M£$ ‘öEǬV¶‰J1‚@¬3ß$Á£Å*ŽGÀú†‹íhn¶Ñ kžt6PmÒ‰¾Öõãd`À7žYŸ§,+}é¦EëWœ‚@èïT~áôI¼|;á·­€Ð^Ò{E ÅÈ@ ߨÞzbrÂVçDšÂ«4!îw"ñò&òZT«€pè" (Š€"¨ý¬­TE@PZ  @ 8ôFPE@ÈTÈŽ~ÖV*Š€" (-P z£(Š€" d*dG?k+E@P¨Ð½QE@P²²£Ÿµ•Š€" (Š@ Th‡Þ(Š€" (Ù€ ÙÑÏÚJE@PE *´€CoE@Pì@@€ìègm¥" (Š€"ÐZÀ¡7Š€" (Š@v  @vô³¶RPE@h€ -àÐE@PE ;P ;úY[©(Š€" ´@@€pè" (Š€"¨ý¬­TE@PZ  @ 8ôFPE@ÈTÈŽ~ÖV*Š€" (-P z£(Š€" d.@ fâUˆ*M˜¸\®ll¶¶YP2 aüü³ @†u²’›Z*++S[¡Ö¦(Š@`þŸkvo¬ 5"”––R—.]hРAÙØ|ms;ASÂ<žîÕÖûiUµ‡]~J„n+@~¢œ\¼oË–"¯»Ìס[®ËßÐNPËÈfôfª¿ˆ•rbEJÓeТ566Òå—_n>YÕxml»Eà½4á%¼<ô{ÐLUDtjÅêÜÿºæþ:W.y‹;QÀÏ‚†”"КåJRÚEZY&!àvë Y&õ—ÒŸ¹~ §Ë ;@# îUáòθ–ªÿz¹öì$êØÈß M‘0TH”ZP¶# ?&?ÏdTÈö·!óÛù¸›ÕõþÆz¢þð@c"&é\—J ;ó(ÿˆq”ë¹êÿr9¹*ÊUÈ€×F§8ÐIJbz€ Ì?=Øk­É@ÀÍB@¦ý¡¤\äâbý;È5~åüè ø|D¡f­O ƒR REÀéÀ0 ÅüØVOnª”^¤ ‡T TE À¾‚@“p˜ ™ð¨ ½¤4*Š€"1¨)]•µ¶yÅá0)SúSéTEÀ¨à€NˆJBV Êü£¾š@P6" B@Lzö¬õëîõ_¯§÷ß}Ÿ xWL"üb%½¿´‚D#Àš ·ÇMU•UÔ©sg:ù”‰‰®AËS²–B@Ã}ºEÐI/CÖ è„o¬ ‹~x•@.uúâ¤÷2¥´`»ßgkÖÐM·üN€”"¯•e*8µŸ³Zè\TL¥PßþýY §¾¤É¤ËÍû”Ë˶ө§O¢K.½4™UiÙŠ@# B€;?«Ó!ÌøÁüUpâë™|šÜn•ï,§ .¾€Ý£'ÁIJò› 5(‚€ N먬4tZ'(=i@€×þ!ôíÚµ‹ DÓfÌHZ¥"m´Ôc`zû_€ô⯵§ Ø|x<Ú±}M~¶9ò7M¤hµŠ@–! B€S:\§ô„Ò‘R0û¯Ø»—z•”ÐìY³MÝ8øGƒ" ¤Rr´:Tˆ†>o—xØøoÆ 4qÒiÔ«OoÓFµi—]­r,*¤»kTHwhý)GŒ¾zß>Vûw¥YsfëW …^()B@…€m[ ¶°hd{E^ áøgÓæÍ4qâD9bd{mª¶KÈTHWG©.äµÞ´ uµuTС€æ|óCƒž ‘–®ÐJ *XÀHÙ¥ )ƒZ+J7Pñ{Xؼqqä4þ°ÃÒM’Ö¯(ATB‘¢ R´Vã êêêpb9Í7ÏË]ûwFß(Šá×¹­žÜ‡£œ ï õÜwB€äâ«¥;·ËMÛ·o§ÃŽ˜@'žt’¡L™¿ƒ:HIQ *¤êEP UHk=éE€zhôù¨¶¦†æÍ›¤E€ z¡8RÑ*¤e­#­€É{yßÿ¶íe4zÌ¡tæ™g¥•­\PbA@…€XPjKÚ‚žæu>¼í/ð›OEEMŸÛ´ï_-ÿßuJ¡" 6É}TH.¾ZzºàÙ?4e|äïðƒ‡ÓŒ³§§›"­_PâB@5qÁGbâK“f&^·—vò©g=•rssYÈ̆(ÕŠ@Ö" B@2º^€d ªe:7¹hï®Ý4pPipë4jüç˜.RBP! F bN¦@ÌPiÂLDÀÅn·nÝJgq&uîÔ)› 4+Š@‚P$àB€€¨E8ÞùG•lø×½O Íš;Ç™D*UŠ€"'*Ä XØä*„…Fd6¼õÏã¥-<ûŸ8iõïß?³›£Ô+Š€,`´úR€VC§Ž@uu5uìØ‘æÍišý«ñŸÓ{LéSâA@…€xвK«€*—ñäòÚÿÆèøO¤#Fd|{´Š€"`‡€ v¨Ä§@¬HiºŒB ¾¶žòòói¶eí_-ÿ3ª •XE FTˆ¨’©p$‘éx<Ú´y{ÜqtÔ‘Gfzs”~E@ˆŠ€ Q!²I € (•™ÀêŸwøScc#ùùfvóÚf¶F©VøP! >¼ˆTˆ1Mï\ØÁ›×þ·lÞLƧO>ɹ´*eŠ€"TˆTâAKÓ:hü<û¯®ÚG3çÌ6´úý8H]ÿ:ºã”8E ¡¨+œ*ÄŠ”¦s<.—›¶••ј±|äïÔ©†^·›³f@ƒ" d*ÄÒÛ*Ä‚’¦q<f–ïvQÅÞ½4cÖLC¯ÎüßmJ "DTˆ® ÑÒç,ÿË·ï a£3›ùgD×)‘Š@P! ¸*DBGŸe `öå;vÐÔ©ÓÌþÿŒ!\ U$# B@8€U‡ŒÆg `þ»øÈßÒÒRšcqü“1 PBE ɨ`° v¨h\Æ €u~ÛCeÛ¶Ñä3N§Î]»f íJ¨" ¤BÑV ½Ï(°ö_UUI%={Ьæ­jü—Q]¨Ä*)D@…+Ø^ëM¶]CuìaÇ1ºUlÏcǼ‹ÿðÏ$#öÏ»ÙòË–-4gÎ\0pàþ†è•" (¶´\åD»Ã‘ˆmŽö™ÕÀÞ}Uôõú Ìðx¯83’l,¦ïoôS§®]¨S§NÔØàc‰Àe§á®z_5ÑœoÌ ’‡x Š€" „G@…`“Õ@¯Þ½éÔÓ'QÏ=ÔYLó/žó:wd£º´ví:*È/à'Îô¤õÿVžýO>ý 5jTs ôKPXP! k¬Ÿpüñtâ 'Äò¦d]šÿwõ5´rÅJêÛ¯ŸŽœ¶®ŽY~]]Y¾QËÿ¬{=µÁŠ@‚Èn! +Á<ä“ ·¨]óÁ»ïÑž}Žzö*1K#Ncþv8ôçèc£#Ž>Êàí…g!€wÇúIuRG²Ê×rÛ3-…€€—=aÀ»‹Ú{ÈZ @{ïØ¶´ï_>Juµµ”_P@ø18,`…ß×Ð@føsçÍ5Ôá`œ…@${ŒeÛiëÖ­´gïÚµsíe7εüÞÕÖð§®–<^/RNnð»Ø¹sgêØ±ufÛ”’’žÔ½gÏàÒ]¤zœ…ˆRãLZ Ùb¨€3߯”S…ÑÕ«WÓk¯½F½ûô¡ÆFç1ƒµÿÍ<û{Øatò) V™¼“C°Oy§'¨ÂXè/ßQNkÖ¬¡ÕkVÓ:¶-ÙÎŒž÷ìÙKuõuT_WOÐà4õ#ìN›„¹¦™½ŸŸ('ÇËŸ\ÊËËcA #uê܉z÷îÅ»?JiÈС4|øÁT:h ‚ ê×ì+&û„²ï-? Å2ðâÁ’ù yPÞC%l éÄÙ?h3¨Ú·fY¼þe ÐÊ(ß~û>¹pM2Å^Ö>@3!41ç&Q;ü?úx­|c}øîû´vÝ:ÚɆ¥Øµ‘Û<£‡†©°¸ˆŠÝÙ™NmlÖà°Š‡é‚;OP¾±C¥‘·jUUïãòvÑ'Ÿ~J õävy¨+ï\éÂëð#h‘GÐá&P6ðµkXãõZhB »„ô½7 0lݼ…^XþõéÛ‡¬Rwbp³ß†²-Ûhì˜CiÚ´iN$1,M`’˜í>xÿôÀ}÷SyyM`¾@IDAT9}}íÕôãÿ$#g­hO(ãÿèƒéå—^¢7W®ä]$k©†5ÌØ;uêL½JJŒöì‡Ù¦½%ÍÌ 5ǘM'Ák š¨Ëãõþ¡Ìââb³EKBx_kØ(ô«¯ÖÓªU«háüùlÃÒ›FŽA'žt"pòIÔ£»îö±À©—aà·o •‡£œ ï ö¼ @Ø— {È ¾tév©[FÃX•Š5uÇøyÚßDOwóšñÏf]fî17pR°ÎX­v /½ø"ÝrËïéËÏ×ÒAƒS¿¾}é¶[nåuðmôÛßþÖ4AòJŸ8©] Å޾]<úɧè¥åËé£?¢ššj³^ß³k7Êá¹?¿SÐt mMszyÿ·ÐÁi*ÈÏçm«ùÔ“í`²µ ¯ÿ÷5Zþ ԋ…Ú£Ž<Š¦ÏœAGqD‹ …&§bÞ‚X½IÙ!¨¢×ÉéÕÔTí£ÿ<óuíÑÍ ÒŽ¢ƒ¢‹/¸Î;÷;ìòM0` :è ÊeUûcp6óÇ{ÒÁÞEÀ^$X€éM£Gޤ_Mß;ÿ<ºð ùlõÁ÷J°h™[ï²–B@{q¤€ì|›[´zᢅÆéÛÃ#¥Y³ 1[¤Ní Ø¶„UVVð™ =iîœý‡þ¤–’k³Î ±½íî;ï¤=ú/ÃqFŒÉB «ûë™ñ‡r KQ<¬˜;?3%7 £Xxà¿P·’tá´Xs·dKÚ%z³d„2^n¹çÎ?мn&ÐACÈëÍ¡e‹¨“)þÈÛ a ýô§ž5=éµå/Ó{o¬¤‹/û)ÇÚd@g¦”Ä–B@{Ø €”¾@Ψ 3™µÁéÏ{o¿K%½z‘y§ è8š8‡éfÞ¢xâ)©tPiZA´b'„,fû‰iS¦ÒüÖ-”ñìé0;ŽÄü%?¾!äàì†÷ÈÌFŽ·Þô;²ŒYË–ûD~ƒV|L`a¥Ñ×h¶)Nçm–‹/2»†±ý‚‹]£Â–êÿöÐêúzn;:xÔêØ¥3]wíµFÛ±wÄHß‹Üëw¶"ÐRÈtM€ YúËìfÁ‚|r€¼Ìx h掀Œ†ÿW³Ó—¼ü<šÝìø'ȬÒ@$$ÁîãVÑw¿}.ýòò+ #YÝoÔâ¬î‹Œ[˜âL`°ØÀq «Ù¯þå•ôþ»ï&½• Sh}sÅ4{ú úÝM7S>Ÿ9œUä^fŽ˜õÜ9m:ñOh68&:lÜ8z÷­·é¬3ϤçŸÞT)}ž¬úµÜLB ý*dÒ{— Ze°ÿð£é¯ÿp,²#g8LÌì3Mœ8‘Æð–9'ø¬ÿõ 7Ð7æÎ£OÞû€ÆŒE={ö`âk3sD߀uîÒ… ‹ŠèÒKJ[Y+ué·Da`eä•••tíuÿGçò:ÿ¦MéPÞ*w»æÌ…DUèÔr ­5ü  :l˜q6t/ÃÜ}Ï=òX¿fÚ‡ @¿Ð‹ÿ½êyíº[r[™“ x/›ÍýÆ9†,ЙhF®½¨+—ÇŒ¦žq&=ökòþC‘W’ÙE­…„+2¦x´¯ŽÝÛÂZ}ïîÝô3ö':¡ôÄT %‘µM‚ã+¯¼b¶Â=ΈC‡Dý¤ÖD8R(´´%i—Üï>¶É€áá ¥Ûw ]qÙåA<²—¤ž©g¾ @¦¾{m¤ûk¶|†ËÖÞ¼‡Û×Ì\ÚXd³cö#`¿îGy¤)_˜VÂ+³)uI}¼ÿ3o]}富Ǚ‘ìo>7'Ç`—ŒU¬³CpróîÛïÐ/¯øy°ýV&nCvÌQ®°Þý½óϧêª*ÞŠ8šü¼fÖs!í4!0†”ÇžÇËöKéÜo›ªXS¢Ëí´Ó[Õ¬ÌThU§gf&ëì–ÿ8Œ¦˜Õ¼<­tTƒÀtA`'sYÕž®P^¾ƒ®¹újúÖ¼shí§kh 3É.ݺælÅ3YôÁ&`8û³_¼x1=ü×M5VÁ$Öz…VÉûþûïÓ̳ϦÇy×Âð¡›CtêYàÐÙí~D¡ÑñaY‡¿±üôÖoÒ÷¿ÃŸo AØ@æ *ìïÅv%L§ý-îy³ö=Ñ Ó]'Aþ)kx¸ýݺe æ9N9õ””¾XØÛYÙ?ÊjþéSØž½ô TJJKù$:MËê~l•c“PfåCxgÁm·ÞfœñÄ['úÝÊØyøoF ÙVVF#yÛ!ذ%ÂA¼å·çô8| §OB8ÍBN8„á'4ýd¦ Àþl÷Wà°mí«/¿¢îݺñäŸwB;H€ípÔüVÖ°ü¹)°üÆ'øÀÙÍì3éúë®3Æw#G°%}ºÉž †‹2ñÁš.>[·l¥«~þ úÞw¿K_õbg>]º²º¿Ù…o¼íHdúv(Ô¿ÿ*ßQN¿ºêª`Ñ‘p±>ûü³ÏiÖŒôì³ÏÑHnWaQ¡YƤ‘Àï„e¸ÅïåJ>îø2v,Áªa‘8ýÎF2KP ËÞQœˆö釫Œ…3¶;9-ðχÜ<ÐîÞ¹›ÎžÙÄüAc¢ ¯„9bvŒë‡ø+[÷ŸAËŸƒQ¿ýe?fߢ07iøƒúkëëh(/¼ºüEºíw¿7Tý¡$¡MBó³Ï¢Þ½z³¡Ãfÿ˜Z5ÏZ·³åýTVýFn\ž–ó:ú¼Ùsèûß=Êx7<Þò‰} |\¬àՆⓒLFˆÀ¥{îf ßöíÛM]ÒÏAÚË_]yÝü›ßÐ0vjÓ­{7³”‘²­P–œ¡AéÀý€£¯½úZÿÕú`?dÚÞp8_P \ßµ£x™ .]¼„rx†íf«oð['æmFÍ¿—w(ôÐΞ•¼Ù?Ú]Ì̾oŸ>†át /¬ú™i²ZÀI°´ E(ƒ1bII‰Ù%惀>SÂ÷¾êj:›ÿë_tè!£© /_™ $ÛxïI€;'<ödgAµl\yãõ×›BPkc5š½= àl!@€öðŽEhƒ Fo¿óýïÿ£¾ýúqj~)¦ðÀéfKû­|äï§ŸÉ3«’­jû£¼‚|ºãî?Ð=÷ý™5e´‰å°c'‡ ÐÆð0løpZþ tÿý÷²aé¿«|'}cÖl>¶÷ sè¡F hÄVO'íõt2È1Ò&œ5 åÛ^eoŠŠŸ†ËÐdÙ‚€s…Úù;(Æs {œjy[]Nn.ù¡jÇŒ×)™¿‹÷ZWðì¿k÷î4«yö/ÂK2È”²§MFó. ¼Ü9°sçÎÔ•A‚öÂa{øðCêÉâþæmZ[f²òñkO|®úìyó‚U€~iC02MXÀn€¿°ßý!ìNwíºu”›“  Miµ™€Œm»³?‹o¼aŽ`Κ•Æt#!@€t÷{‚êÆ)³ÿe‹–P^^.¹-ªëU•b jßQ¶FŽIS¦N – ú¥ ÁÈ4\€Y(,*¢»ÿ|Ù¦¸uóV^çÍMEZe¦ €ßbGÖ¼mâm™ÿcÿØH½ @l=“©dæüæ+hå›+¨Oï>|¤­COµc»k÷.š9s&ÁPhw*Ð¥Kév¶ ¨¨¬ ÊŠ ³ÕNõNí­ôÓåñxùŸ6)Áéï¸Ð©ßéD µB€ éìëÖm±Âñ<þååå%°†Ä…Mk»v–Ó vc;}vrýIÕ2psÜqôÓ+.£¯7|M.žåé'è¶Ï2¼å¶#{h\µjUñaAòµÏk«‡@ê„Ã×ki.©i>ºúãOXíø_sè±üO3UT߬ZßQ¶ƒUÿÓ¨¨˜½:]²º¦†>þä… YýF´¢ñÉThE·85Ë&fH/¾°œz÷émÿ8‘Nãø‡ü|æf¿´iŒD„ªnݻѕ×^C»öî!{1ôðN ñ!AP>’ÓºŒ%qûÍãW…Š iõ*v+­AhÉtäjU§83Ó’ iûöT̪G'Îþ1âWïÛG];ub·¿û×þ1ðgÚìèÔI§±ã úê‹/y§…Û öÎ|+œC•að͇,øøgŸÏo3‚#(;„jdWºM[/yF¾V¤ñûÿ‚Ì)—uµ|:£E U$Oð¶ŠÍä0ÍàÁ²Š÷Ó?ûì³Æí¯#™?#æeËè/6®£3fÒ°a;Ã8(1;cŽ-‚?»ürzsÅ›lи“:wéâX­KÍKxRîÀà+*öRÕ¾*öKá7;?rXEîõzY.„½F|æ$CHS9|¨ìCŠù‡Q8Ç©ïu8Ð@oA~>•m/£¯¿^OÃÎÌw>\û4>•´\åD»ÿ ZMˆ ­†Î±þ Uê²¥Ké‹u_ÐÈQ#Í@ ¡ÀIÔÔòz(fD³Ïi:ò×Ìö˜‘fRß ._¿÷£Òo®ÿµ9/“Ú‘LZÑ×ð?T;ËËiïž½”Ë ½ô Át̰ãiÈ!4 c%Ÿ—Ÿgœ-Õ×ÕSm}íÞµ›6lÜ@_ñ»¼vÍçô%kXr¸¬>l3‚wÇÇΙ`a€wßé;qv°VnûPÀé½åtú/¨àô>@f¢:_ºh1uáã`qªžÓT¡˜émܰ‘&ž2‘ÆgH´2S§Ñ+=çž{.=Ã._×®]Kýô7jìXó¶ÇtƧ3iX¿×ÖÔÒPžõÎæsŽ?îx3v ±oMÝ»g½÷î{ôüž£åÏ/§>2º´t ;bÊaÿœ÷®‡ö)N—Äû¿}ûöÐGz¯´B@+N{ͬéW+àjÏY„ù?Á³ÿOØÒ¸¤W xðÅ ã¤àfE}¯óòŒPŽü•S÷œDg¼´ˆJú»çŸGûª«›4/ñÒÒCæÄ»ˆ“¶nÙBŸ}þk¢FÑø-^¶„.㥒ØЂù£ÿ?뵎N;ÓÉ,0ÞüûßÓ㋘ƒ™>ÿüs³ä’“›c’JÖ|Žº6üoë¶mŽ"K‰ÉdZ ^:#,ðRY¼ÁYœ"^ê5½A`ñ‚ETØ¡È Â˜9mP„:Œáð#'üm³yýN?óL:æè£iÛ–m-N ”çíõ»I °?„‚‘Ûj>:¹7/‹ÜóÇ?Ñ#þ“N;}RPCŠú_Xëuh:¹Ç²ÁwÞI÷Üs9hgóÆÍF eH:§}c%N£v—ïtiJOF#"4¶NP £_¢W^}…Þ{ÿ=xKÌQ¤NlÜ×ÕÕÑ9çœãDòZM“•ùÌûÆ9¦Ðr8MkucȈÑ6°ÛVÞÚy)Ïô=±”N›<É䉯bòYgÒc ç“'×þö7o—‰®#†fÇœÚ,YìãÝ/Ä"`.¸ƒ­THl¤¼´E ±Eº‡¼ldåij»í¬þwØ8š|úé)Ç'™ZÜ$nÛ!£1Œëàí=@Ýöʳþ>ýúÑcÿ~Œ.¾äb¶îo2+‚ЇçV!)Q˜ å“ÿúàƒÔÈkžÛÙ´85@€%ëØÈQƒ"xö Þݾ_ˆ±"bʉÉ` õæëÿ3Ž| f7€Sè .E0ØÃÛ¿fÎcHkkÿ‚1˜›•ÁM›>ªØ #¬àÛkSÏaƒÎ}ìßþ“?¦i³fÒÂ¥KhÔèÑ-š !(™Ë<#Fޤ_ÿæF*++cÃK_‹~hAˆnà'¢¦¶Ú”( íf!€«½Ðı-P€ {#0Kx|þ¿©†·Öåçå;ÎðLL l[9ŠÎ>ûl!»Ý~Ÿ~údò7‰/•­€€#136ÛÃXxIæ¬0•m³« Û0=á*/ßa<ÙÙ¥Éä¸<Þ‡åœÍ¼Þ÷Ÿî¡ó¿ÿ=ÓœpVüÉl«ýäêÚ­+UðùòÛHf½Z¶"à\XØ^Gîá‡ÅL¢ 1C嬄‹-¢ všRXThÖZe@t •ŒáÔeÈС4ÕÄíy€–¥ l[+È/`×¶ íFÀ»•ËÛî°Þ^YYE>üÁ;$@¨K—`7pà@šÊæ¶-[™9÷+È„<ýV²æèÊØÝN«¯FÙŽô »ýíÅ[®„ñ8­˜ñÃ2ü¬³Î¢Îìû?[Â1ÇC³›ã],üÚ1Ï)Œû¶­Ûh«þ|øA:þøãMw¦[è”wúô³Ùsg>g¢š…ÌlyÓ´Š@ÛP í¦¤ë`ûÄ’%´…OþëªOk|J‰¡ä‚#{õéÃêÿö¿öH¬3àñìï`7Ÿè dþÏ `ü»Ù®áî{ÿLŽ<Ò¼xïÒ©ÑAÝ‚9\ìŽ7–vó™ é¤)†Ÿ†&Q…@æPŽ‚3yÄÈÀVÇÇÏ>½ì êÖ¥+5Àú9yU¶ªdÐébUì6vü3ùŒÓiÀ€¦' *­j` ™;|<°a&¬Ó39€Ábÿúf6oºù&:ù䓃͑÷1‘æ‹cŽ?Ži­&^ŒÐU€4÷…VŸ9¨!}%êÎ'žx‚Ö°;Ôž=zÀå«™%` v_U5ua•ììÙ³ ºB{†@Ýf2ÇOàÓï2×0 n¥qÜñ¿ø%MŸ1#Ø—NæÆŒÃï\ª­«Ñe€6¿ÁZ@¶  @†ô´¨;—±ã‘ÊúÏ&õ? N ^¦ ~ÏO˜8‘>Üf´T’‰YQa‘9§’¾Í´`?¿Sp®óÉêÕ4kÞ<ºàâ M3Díï´Ù?ˆÃÙø  Êª}¬s–Pœiï€Ò›=¨A}ýüþC}ø!õ*éeÖqâT§ŽO€ËÉñÒ¬¹³ƒÈ:‘a‰KÒر‡R}Cæy“Ƕ8†wüøÃè·¬úGp2ó}0:--DÕÕ,d‘°‰¶kPZ‹€ ­E. ùæ/X`ÎU÷²Ó'Íq0à‚ù»‰l=öØcéðÃÆ§!çTy0¦u(,¤Þ˜I}¸58 ;ÐíwÜNÖè` '˜ê^vidèN\¢È¤w@iÍTpp_c ƒOu„·Þ\Iï¼ùùÛ<ûwÝX†` {ß]ìöt.Œ“ía/ôà¾jÚšæ$q-|Ï€É7°‘évv¯{Íu×RÿMbY~ ŸÓOúñ™^wŽc·Æ:%¥BØ€ û±pÜd¨6æÏŸO~žÝä°zÖq3¦máÙÿ„#Ž Ø^¶‡N;R¯Þ½Ø|MF@ýþx×Ö~¾–¾õ­o±ÿ†)A·•È=zR;,jd…E@ˆŽ€ Ñ1J[ aô8gýõ×^£>}û²ФHQ6ü¦ËO5|ä¯Xþƒv¡ß&KVDõçi=Ÿפ>w–±f‹à¾Êå#k7nÜH8dçšÿ»Ö<Δþ:»tíBM^[´OoEÀlaqF¤¬».xüß´wÏÊïÐ!hŒå ›<¯æð̱Œ÷ý2f4Þì"´ ýN¡5Õt <˜||J£ë#ìЉ"h‚Š¿n_ [ÐWÑåWþ‚gѹªLë¿¢N© ¸ý/4fý»—êw]ëËLTpx¿mÞ²™^n>ôlj³ˆ`8ŒeÖœ¦#iRɳj>Jzö$7 G>hm %µæÖîõxéËu_²êÿ›tB³›ßÖ—–úœ"¨ñ¹¹|`‘—Ê4(Š@tTˆŽQZS,]¼”}êo¡N<»UgZ ©ÜÃkÿeÛ·ÓÈ1‡ÐÌfg1!I²ög5óN^päüŸÚ›-lõ?hØúùÏ‘Ñ}Õ¡ /exÍ2„ 2ºQJ¼"DTH"¸­-Z<çUUVÒž~šz–ô$?,í0¯-Û¹ƒÎšq¶94Æ$¦”$+ãéÊÇuàeÞš–R*b« ¶>V—㔿]ruh>Y2¶ÜÎI%‚±‹—2ŒžÅ‰`;.¥D" @ ç\¸]Mݲ„ýY·nuíÜÅ‘³ ¸»w¡Ó›\ÅÊ`ì4SK‰u  S§ÎTT Û0VÎ |Ê[ÌoܸÁøøŸ~ötg‘× jà½^2á @ƒ" DGÀi£RtŠÛy Ã@›‹¡þt™y8±b¦•ƒ­|äï$>ô§KçΦgTíºÿ-îXlNlÄNN è¿Új><‡™æE—\$/û¯Íbh¡»P‚}ªŠ@8T‡LšãŸyò)ZóÉ'¬þ/ :J3I-ªÇšö^>&¶WïÞ4kö~·¿-eáu ÍÏÏg£4xtØއ=þmذ‘N4‰Æ~x»é)lG•à4¡YèÒoEÀ)¨à”žh¦Cf3‹/¦vÇ 5»Ó–XÁ@¶láÙ?3ýû;DÇГÏÇ71"™š¦Ÿ4¼c8©°#«Ëøƒ¤Ÿ RÀMÓ (1"à<î#áí-˜„ÌX^{õUz÷wVäNÜúçæQ¶Š÷Œwbµÿœ¹ºõ/Ò»˜ŸŸo\Ó²«¤HÉRú ?Þï0Ë,^ágo„.¶MØNÆ £iÍ{ÇhŒF(Š€" d*¤±»dý|þ‚ùTÄnYÁh6³–mc;Øs˜ïÿwiìB­ZPŒE@€4wÝKË—Óª÷>0[ÿÙÈÎi'¬ïÞµ‹”äCfòTpZ/)=Š€" Ä€ ñc–Ћ,¤íê7@üMñ«¢Õ)Š€"TTH*¼.ªó5kÖЫ/¿B}ûö%¯ýKü9Òzª*+WÂ9sÕíozzAkUE y¨úX:òÈ#ÛÔVͬ(Š€"àLTHq¿T×Ôгϣ®¼§^âR@BLU`í{ü·lÞL‡>žNšxrLù4‘" (Š@æ! @ ú kç²~¾dÉêØ©“Y÷—¸S Þ««öѼfË'z'Œ©1šHPE "*D„'±Ÿ~êiZõÑGÔ«woò7úÉï°caù¿½þ:~5uŠi¼zýKì; ¥)Š€"àTHAOÈLÿ‰ÅK(/7\†ÿ;Éøêbd÷žÝ4uúŒ *B{0B/E@PÚ*¤¨_{í5ZùÖJvüÓ‡ü>>ôÇpÜUC5˜é—ï,§a ¥Y³fÆC“(Š€" d2*$±÷¬nÎ_@l ˜“““Ä[Q4[þc–ëÿ²íe4mæt㜨%iE@P B@€$v–óºÿ¯¿N}z÷1B@«Œ¿hfþذg÷nX:ˆ¦Ïlšý;m‡Bü ÓŠ€" (‘P :mxŠÃt.ZDûªª¨C‡Ç9þ}^>Šxû¶mtúäÉÔ£{wDw-˜ý£(Š€"ÐîP É]ºiÃFzyù‹Ô›ýå?9Ëë¯!§²²‚º0ãŸÓìø'ÉhñŠ€" (@@€$u‚XÏ/Z°€v”m§âމÝ%©¶Ö‹­[ùП“N™ÈK¥­/Hs*Š€" d*$±»vïÙCO?ó »ý-aÕ?ÏþÌ?k#jkk©CaÍ›×t䯃HTRE@P’ˆ€ ·…Û_Þ÷¿~ýzêÔ¥3;ýq–«/úóõÆtÜÉ'ÐèÑ£Œ„§(Š€"àdTHpï@õO€ê<ùÄÔ­[W®ÁYªÌþAQ}C;&Ê¥sæ}à –ÿ ~´8E@PŒ€ îa¢O?õ­^½†zö(qœË_4™ÅÚ´qM˜0ü=  v †D‹SE@p *$¸SàQaáüùTÀÛþ\DÌŸ¥öIÀGþ~óœ# Å)Š€" ddO™[d_^¾œÞyûmêÕ«Ÿ®ç¬µPîá³¶oÝF‡O§žrjäÆèSE@Pv‰€ IèÖ… “Ç›ã8·¿¢â‡AbEõ>š=wnZ¯E*Š€" d*$¸—ÞyëmZ¹bõíׇ|>_‚KocqlùçaËÿmìõoØ!#iÊ´©m,P³+Š€" d**$¸ç–.^L55Õ”——ï¨ã~÷7“ýþ³‚Y3šŽüuÚöÄýtê•" (Š@2P èŠåÿë¾ —^z‰ú°ÛßF>ò—wÛ9*¸y{byùNvðpšÑ|è, 8ŠP%FPE 騈…‰.f·¿;wî¤ââŽ\ªÃ¸?“ãæÏÎòtæ´)TXXhZ.´'-BPE ƒP AU^^N/ò¡?}úðÚ#¯ýólÛIÁåvÑÞŠ½Ô¯š§ÆNê¥EP´  @‚`_ºh1­ÿê+êܹ3«þ¸õÏC›ùПS'ÆÞ »%¨ÕZŒ" (Š@¦" @z®¶®Ž–.YJÝ™±úÍÂ?»vÔü•••Ôµ{7š={NZ¬E(Š€" d:*$ —-[FŸ}þ•ð©N´ªÇ‘¿[xöÚ¤É4dèA¦ÅNPÐZ„" (Š@œ¨'`’ÜÊ@ŸX²„ºuùÿí{”\Å}ç·ßóÔH#F^BF ¶$›§m8 ìø6ØÄ'qbœílv'»'ÉþáulìØa}¯9œÍ®ÿÙã=`z Â2Bâi ‹FHBh¤Ñè53=Ó}ûÞýýîLË#Ñ’zÔw4}ç~ Zýº]·êS5UßúUÕ¯¦ˆ[g'þYZmôŸïë“Ö–¹íö¡Ñ¿¥Åå’ä€@< j,÷'žxB6m|E::¦IIçþëií¿¥ÅÎ&ØýÞ{zàÏGü50RÀÔˆ€ŸC€@ N³ÐÊ#è%< )=R7¡fv[÷_Okÿ--…BAGû ù£?:ò÷4³ËÏ @`‚@ÔP ë×­“Ö«Ûß™êøGÍÿjX¯!¶ðjsÿ{tîÿŠ+¯+¯ºêè Ì*P0G?ä ÄŠ †â^ºt™øzÚ_:“b©§­ÿfþ/•JR,å ·ß¤³ …ÍO!L0€Qh¹ݼù5YûÌ3zèÏì £e4c~y*•”÷tîÿƒ ÊõŸàÈß1Î DŒ`”V6?´l™ôõöJ¶!W[ÿl‘ŸçKïá#òù/Üäж'–Ó>Ê,s9 L@€Qjyô¿s×.yüñÇefgg0ëosêõR©”tíé’‹ÊÍçþÕ[ë‰i GõÕsÕy ”GÐËuôoæu;ôÇæÙË ^’_,uõÿ Üñ•;ê%I"õVÎ*™€Æ@jÜîÑQ³ÿ«“ÎŽ vý×ÓÊ?cªé± 3fÌ”×t–7Þü@^-õµC! Åo‚Ï\(Ϙ1C¾öõ¯>L”…`ò@!œˆàDdNðùŠåËå­·¶ÊEó/’¢Žþë®[ÕʦRºð¾ûî“|o_ðþÙáã“°Ž~oW—\|é%òµ¿üË“\ÉW€¢G0Ê2[µòaim›úSwÿˆ¼ØÔDg°F±ÿ,£zi ©¹98B¹\ÖŒþG…‹!:&€¨¢pl½-¢[½j•üû¦WåÎÓUöõwäïȬ.‰m7@]9'™ÂúmÒÉÜ;—”#€ÀD#À"ÀS”h¹ó·Ë–êâ¿Æ¦&IX@§p r| @õLpŠÒ)›|×þúyé¹ôÈß=õOWþŸâw| @¨g€S”NY,}`I0 ÎfNñ ¾† Ô?ÀIʨ¼ï{ãÆòìºgeæ,=ôÇ-ä|@ˆ@…r²Ž¤ëÜåK”ÁÁ‚dsÙ Wó @ z§(³í۶ɯ׬‘3gÔŸÏÿS¤¯!@'"€¨@Ææý˾ó—/[.ûº»¥E÷ƒ—§*ü„ @‘"€8Iqíß×-?ö ™>£SÜ:ôù’¤ó @à¤'ÁóЊòÎÛoKÛ¤¶`ô_Þp’Ÿð @ #Ši¤‰ßÕõyø™2µÓÿF¼„ ‰A0¢GŽð}x•¼©'éM³SÿêÜíïˆ,ð€ PÀ 0-[¶48¦|Ì .ãc@€@$ F[y¤ÿô“OÉ+¯¼"3¦KÉFÿøýA‰—€ 0 †KÑæÿË[ÿ¼ÿÝ ˜J¦ô<8 úš@˜HÇ•æK/¼ /ècöìÙÌýdž·€ 0q †Ë²¼ðÁ”ÂÀ€äÔí/–ÿ‰SÑÉ  K uìÛx¿Û²e‹<»v­ŽþÏWýñ9ô7Þ‚ÜC˜À°Œ(Üe˖Ƀ¥±©‘½ÿ#¸ð€&Ø €òÊÿwß}Wžüåã2£sº¸¾®ü'@€&0Ø €òÊÿå+–ËŽ;dR[›xê÷Ÿ@˜Èb/¬póù~yìÑGußÿŒ!Ó?Ûþ&r'o€   aåò‡äí7¶ÊÔööÀñOyG5€ 0Q ´dW®\˜þËÛþF 4Q ž|A€@¼ ÄV”;ùÕ«Wn§ëâ?ŸÅñþk ÷€bD ¶ læ_òóû¥!›ÓÉ»þcTñÉ* ¸ˆ¥(oý[ûìZÙ°q£Ìœ9SJ¥¢úýÇçÜÿ È? ¸ˆ¥(oý[¶d©ø%OÒ™ôð?~\Ê|B€@Ì ÄRX™oÚô[Y÷ëgdö¬Yâz¶ïßa æ d€@œÄV<ðÀéÈKCc‡þĩƓW@ÄRìxçùõSOKgç =ôÇeæŸ?@ˆX €ËWHO÷~iiižû]¹“a@ˆ9Ø €ž=òØc«eZÇ4ñlîŸu1ÿ û€âI v`å²òÖ›oÊäö)Aßïáü'ž5Ÿ\Cˆ9Tœò_ÒSþ{tµLï0¯:ô×mÿe‡@qâ@^«$`‡B飖:b¿=ê]"¡¯Êþ¦«LBè—]YŠ&î®— ¼†²ü‡Îp4å?¢Œæ·\ 1&+pÏ=÷ȪիdÞódû¶·ß01d¢&ë+»ötIKsóÑ ˜p Ø×Ý-¿Û¶M¼rß?ÎSN–ö¼î~)J±P<š¯‰òb÷îݲuëVéÏç%0î™Ç`¼÷ì~WZÚ'c*¸5*ˆ•˜¥{þïüá¤cJ»8%ŸéÿÊu‚O‡ ø¾#ýý}º^dªÖíøí?S£7|êFé˜Ù)S&µ‰ãzEa?ÿRM¾YŠnQ¿ž~üãã_üÅW¥ë3]Òˆ¶ñU[VS<­7½ƒy™6uÚ8“áöx?X €[o½õýøU°‘¿uœ&Êž$«ø™\sÍ5Á£škÇãs‹=ZQ3é<Ù=­lÊÏÞvkÝæg´Ö£“å™ï X €0€G| Œ¦ã/SªÇF߯Å6:­Ç´•¹æÙŒ=,?õê9mõÊŒt=ÀØ3æ€À鎒O÷wc‰¬<‰Qi«%ßõœŸzN[-Ìùm´ Än`´‹‹ÔC€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E ©Ô’X@¨CŽ/âÔaºHÒÉ NF‡ï @à’âI)¡}&ÔLUÉ@T…‰‹ @à}õû qJƒâ脲ƒx¢ñù ±ªÛVžï‹þ§%®I'DnœUå’‹ @@ë°Ãl×}Oãô¥=ÛXjÖAç` ÈQ"PQä’ÉFÇI4ˆ4/:µSK…)÷÷úÜ_²5‡VCR&04Öò—ú€Æ„ÀÐjo5Ò{:D×N[$¤õßÁÌ¿/-©RºU{“šô1)¿±Š´¢˜œÉ®œ-¾$ž£xZQj¬+&!$áKWQd¿›”ö”S«¬+Ä @`Èõ¸Ú˜‡jܵÎÁ—\²ø^nÈÄ;ÙMÜ,U³›ç5º¿?y£8vÉ >jTZ9ºóEy¯?-í­©h€Æš@ÙâÚ•wE\‰¡Ž»¶ûš¨HêÜ¿/òns.%I‹›ÀÒ=%ÙSL¾.3é°½ÖÎßÖ†&µb ˆ¼×çËÅ­ú:P¡ˆ€ÈÔ D–€´áž¼Õ«S°^RóFG­í·W’µèž›KõNÒ5ý Úô(U’Šàgoi§ïÉÛ YOò¦‚…#5fË*†®Ùxh@>1£Iû*JDù9 Qظ_/LõAÃ>ªß¾ïbkÂU´e’ûŠ™wóE_ -!2* €k'g¥Çõ kö©P‹QÍÃa~"iy±KkÍ…þPd 2…„BQ&àK_É•=Úä§Õ `wF]ØÝšv/ëL,¾vDª’TÿõbGöôûÛ~¶ÍqûJ~Jí‡ÒŽlìöt Ê•”cf({ @`¬ lЩݽ‡tˆÞ¬£:Ý»_{Ð_‰OoH¿Ñï•ú{tŠ·†¨¨=aÄPeßZ±kh—«voûÔ”lz×—…¡Ð´9ÿ_¶õdÍ»Ž,ž]§¢PîM$€bMÀ‘Õ]:<·Ú¦ckí¨Í¢k¦áRQ.mKn>'›”¢î7Ã!:* €õ‹rV³#3&¥^ÿm·»0pïdxÁqJâçÓ²bwR€U ÝhŽ$,^s#E€ ÐØ–ÿ¡¦Õ•Gw©H%$å9âÖÒœ[çïi×áésÎ6 ¾²v/=kÓ õ@àêö¦ª’QQÜzNBf©Ø{Ø{ûÁ¶ŽZjK9æ[Po×G·÷Ê¿,JJ6™VŸêˆ•£eHÕ}éÁ}‰O99sßkJUÅ[ñ"ÏöŸšJlÎËË»rÿ[Iù#Vkˆ¶â½ø€@¼ 9ü¹kS^uÑFv²Ûkóö5 ÿµ­Ö›o[ÃtM×§¦Ÿ»bZNÎiªAPÄ»Æ5÷@·-çÔàä“ÒÒ8ð¸¤?Ô›„9¨aþ¨\GlUJÆ—oo,È-çg$L/TLJþ Ñðeýž‚Ü·UלÕÁ—µëµµ|s#<èȤ¦‚\Ò–\µ«W=Z×@ˆнnSrècõ!5yÍò·ä nßs²ÁªýšsisPÍiyS }wƒ+ÿ´ÈÎ.V/Rêuhhs ‰  Œ†€±<Ýê— \¬åï6ô¨7÷fùںÖÞù¥Eï28(‹:š7Õš}­g@íª Ñ#PQÌI É9uñ,­YyåCMƒO®9Ðp½4jÁ[ «9è‚@sÕæÈ~#rÃÙƒrÍ´”Z”ÔD•L° °f¾DÄ’€µÏEu@þqcQÖmÓ}zS›´ó?¢_„ÔK÷HÈE“KúÕ°Oׄ%-bYfã˜éŠ``ÀNÿêëíà¾Ït¤~¾f·w½ogIüjŽzJ¤¢ž$å«ktMÀg[õLi]`ÖjSÀŸ TKÀúek;“*žÚëÈw^Ô÷­M:ØR}:gïûæ§·–ÆU«; ÔT+Í "·í=Ôžq¥QO$ÔêÄ^EPjšt47ûtáÞÎ.­ìÜ–¿{O_ªÁÉ–´ 醾À›Ôé¼î(ðµ³7=1¹$oê‚À/=U‡>©ûKµ‚y¾m;´ûèQ“GS @¨DÀS÷êfâÏèªÿw yùâÓÚK'š$ÙÝ|¥F¨ù6?°!x} ùø…ΚK;Ò›÷«¶Heh¥+•I>«(ΞL MÿyÙD÷-g—–üÛ†?Óýº’T¿²‘úiÝQ ¼ÖHÝ›ªé)Y¹Õ‘ÿü|ŸÜ}EC°¤¤[ØVrÚ€ù! Ö´½Ì%Š20×öÞIDATPÌÈͪÏÿžœ8St¯~àœÇÚ[»ª–ŽZë´íס¿ÆóåóœŸNI$å@Ê7g€„ˆp“ûq‰ñàï;w{5M·¾zÀ]x˯~#jîqt€^SÿÜýlÖßótÝA'wY³üóGÌ|až¦TŸ¨ P×úþXQr\¼… /Ú8Û†<ë×µ•¢Žò¯]Õ/ëw–$¥¹ˆ®âv“ú}ú4'©w;âËeÓœ×þ×G³0à¦ôø_ë!õFàZTW*^uhÀÔâïÃa5óÌŸ”Üð¹Ù©åËßp?'“mÀÐzýß_uú¯<ëàm¸ß–•»^ÈK¿šî¾Üæ®|q5)ö}ƶžÔ¤`O?}ü€@½ð¼¢zãs$­5ûß°ª$/ïÑvrªù£®ym+@­NÊ™ÖuÁmo:·ôãTÚ•ýE¬´e>u÷\# Š€_½§îGÓxjxý`ñŠ/>ã?'ª%p1i&¥ð MQù6au(%Ÿ™+òàuY5kieÖŽ?Áz€%ÂK@fõåõ#%YüØ€ìÞ¯­d».¬ö­ý¶±]xm³Y~Eçþ/m•W¹~ðÒ‚º°Ûê’ÀÅS§T•®Š€ &£êLê’©Ùço>«÷¡•Ûä–TVÇåZ ‚Õ¥:F#ØtDZwxm¾¬z³(êÓ+?™“¶™Ÿ­ÎZS¢š>K¢ÝÝ@›€6~ÁÿjŠæóÍ"šÿûVAþ|MQ÷þëDªüu) ýõ;½8Œ`ÑØýl»V¡$w\½'—n”®¾áS\øqŒŠ€ußß¡[=˜¦Ãñ7õ_uóêÁu~:+‰Œï«—VÐ 5fHïf=ûa›f(É·>,òÝÙR«ô:¥JÀL[v(@¡ ‰J@›Ã’Úß­5ß,Ö8îHÈ×Öí×’¾mHK¢¡¤-cy&Ô?ÅÓkظ½ïÄ˺V iבW¡cñªþßîìÏu¦&© _µ yÃ&«1C¤òÓÑûXE 6!è™’Wõa•ÕlSiGrM)]°èK§>šôz3¦ ÔÛÜœPÓýØÕçKw¿ná+h[fÎOlJŸu•&ÚÎa± /~[ ]ôL§Ú‚>fYgoí[ÎT#¦ƒ+uºæëhÿ¼6ïÍ¥ŸÈ~¸=—9²W·³áj¸("ð´¨:ÀÑ}#Çd©§X®tÇ||ÌÛŠ—T7žÕ¶æoúæ]Ï9?vSjšÏ¨x°QyÐAŸ:žc"­ú͈?†à¤üC½ŸÝº|8EpÙˆkË—ñ @ ÞÓ\j»¼?Sí—ÝLï¥Ç±û½žžðç¹_¹ }»ë%Ø?6®²ab¨8Až±5&U†]ý%ùØôÜÿü÷/X½5ÿ%©[óTÁ®UÆêefÃ:ÔŒF€ P·†;ùàidÛu&¬ÓÚnÚIâäGŸÈ~銎¦Wöé¢?ûœ5Õ ÇŠ ­!°©W™c_fë w_›ü«”ôÏyø ¹ÑŸ¢Ž)t¥¾7nøPa«,<.ƒÆ@´WÚä{¶ô«èÉß^–üÖu³2÷ïÑuÖ6 84îŒHÀX¨(‚swª¼›UÝ!+|B¾³ õ»¯_¿Ã¹ÜSàèÂ[¬Ü²gU+—A€ÀØÐÜ|WLéìííór?¼z¦ó½wôÔ?[’`  —@Å¡¾™ï«}Xý°ø=¾.&¼ï]ÖºøêsW¥[§tÕH"¡B`âò#g€"J@;y[4ek¾Õ»ßMççþuQ{ò¿½§ÛmívD‹uÉ®(Fñû£—Ú Ñº…E×öþèêìWW|Qö«ùÈÔsòm…G#á Œ=áéÈ¿4¨ ¾ò%ùÂRÿü‘©Îßî±-Õ„ØM±¤ÎìWK@¾ä÷ÿèʦË?}~éI9Ü/¾«n µ²±–$6õŠŒBuJÀøqRÚñ÷ë(ßÍË JßYÔ‘þ‡=ºà/¡ CgóF=ê4â žVõ¿¯Ï}òÏ6ý?9¨_¬ÒÙí¨dƉ@àŒ0»¾>üþ4èáA?º&÷_®‘ûÇæU•;¡ #h"à@Á×㣓ޗçdþTæ_7¹®xZé†V– bWÓÈ0 0Ž´Q6¬Zø½Ã®Ìjñzþtãå‹ggÿeûaÌþãX0ãzë1–#yWdË!OÏÊþäç×¥/›ÛTè‘ýR¯Rwº{ ¤uRŸíä? „GÀ:|kZí 4mkÅÕM_jöÿÈìôSßZ¼àÂÉ©ßV§?ÚT;¹Â»11E…ÀØö¼V³4ìÐJ6¯-ýÒ/KŸýùyr¯0åõ¦t§A£Ö<­”V9 € ]“•T÷}Á™hz΀y‡ýë‹“ó Ó×)øû»uÁßpÞ=‰)RÆV £0kÀÎ>Ý! ‰¾¯ÏKýɿܹíìI}}r(/~Q-€ªÕ£3öâè›H%±€Î8ã{rkÙÕ²_êˈ—wäªé²á+ç œó¡öÄ{t=–YgñíÆK©înxF€åÚvôë–Àm:ß´ =±ì»kìü Jÿ'í©èÓs.õ¡¤M ç˜U@“f[U€ pbÚL:ÚÙ'’®vêvd¯­ð×ÔÒÚ>©Ð÷ýËó߸óCÞ"ðïØ­ÞýÿêÒŸ½Ô—Z”?\×Ó‹´ÂÛ: VËZ}"@˜p´Ã¶I«7u_]ª—D›ì>}è‘ë­SŠƒ×ÎIþêš©-?kË<â’ùg»Ù¥¾üϲµÕ £<Кp\ÈP(êBXNÊ•µWØ­ X éÄž+Û»¯›âÝýZ1sчn;œ÷nY{0=ÿ +9(ªåKU@àC@…y´íf ¦ LØký `ˆ €@=zikËì…Z7íÙŒœÚ¬Yû¥ƒ}mIg=éÈô¼âó ¦4Þ÷êôªOÏMìŸß˜_ìЭÕÚvZSgMÕ¨pLbµuÀ¾AsW™Wü×ÕcÕ¾çý™Ö-ƒWnéN|lO!wÉáüàü^IÌ=èªYLϲ.© bÑcˆ%£–‚¤fÏþz€ê•€õØ6I_Ô½yfæoö$‘õeZ2+9wðå9mÙmóÛœ×Z›Wï.x¾t–WjN¥eý¾~õ±’i¦ô?:þz-àúMW} €a^ÃzØN”n]äRPQÐv§]ÿ—iOÿrsŸ#×Ïóssš“KvËœý½‰¹s›ë¶åÓ3ß=äzý®ŸL8ýµþO€ Pg´«×µMy¿-'nç¤Lê‚Ùµã€übÞ4÷‚w˽[ý÷Lvä¦%å¹ÃŽ¶Ž˜÷¾N]¥]>~•gÔ’£‹ëé£Vh¤€ P+5 @ˆ@ÜJœüB€”€j@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!ÿ|âÞùgÁ»ÇIEND®B`‚ic12>‰PNG  IHDR@@ªiqÞ AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs%%IR$ð ›IDATxí[ t”ÕþþY2a& d# d‚”%,âQYE„BX=§Aϰ,¥¢@©Õƒ ˆ¢€z°KXE+m¥ ²KËb¥„„-û:I&³¼Þû I“ùcrGî9æÿßÿ¶ûÝûî»÷þ/Š¿dÒü’™gÞïp_~áèÞ8V ¢àd7ÊœÐjrlô Ó#P§ ÈFëDQ‡’Æ ‡p”á§W’wlþ\õââ¢ꥌ.•½©Û‹ÚlõýE9ït:çêîÔÀ‡¬ƒ.þU €b·Ck4 Ãä9¸üW[ÚÆ /Ò8MÍxMV³©à®ÍШš9IT„Z#ý:Ôá„ÈðïþpŃ ë¿ßµýZiV~«š3hâçt_jñ+¥m¢§t‹2=Ó¦}pêÔ)¤¤¤ °°Ð]W«ÕJ&¹`ïÞ½¨¶mÛb×®](++CPPžxâ |ûí·hÖ¬™»ßøùù¡¤¤¤Z™^¯—ÀU-ÔIê6›ðÝ)öe:•8T8 £e04N _¥êÜ«¶óê^GsbÖwh(¾Ù¢]»v0 r‚=ô,5›Í’A2J°“ýX²d ¬V+¦M›† . {÷î(**·=w£%ˆsçΕíz÷î‚‚ÄÅÅaÞ¼y²)S¦`ÕªU²Ž;JЂƒƒåóêÕ«áö€ßÿ± C¿*ù3>)X[(º}^(Òrlô¾¡È.ÚÆÅ’:Ðb¢‹Ô\”——‹çŸ^L:Udee‰Ù³g bJ >üðCy?þ|A€ˆˆ ˆ7n¸ûÉÌ̯¿þº|~ë­·Dzzºð÷÷ÙÙÙ‚–‡X¸p¡ì£C‡‚–”ظq£ pÄøñã]}ü@ ;[¢t;X"¦±(‚IÝ÷÷ƒÑ—LC gã!‰¢¢¢ÐªU+¼úê« æqéÒ%¬X±B®ÝÝ»w£¸¸XJzÿþýRê‹-ÂàÁƒм¼<\»vMö3fÌøøøHis·s]ÇŽÃä&L}³ÆðÒ©J´ ÊGÍ‹½o®C¡LàÙ_é–yÂQÅ„öïßñññ’énݺI•NMMÅÀ¥Z›L&ð: G‹-äcccå/iHÂà‰ðÁ°X,˜1cžzê)°­à÷L‘‘‘ ”÷lcØH^½zkÖ¬ÛŸqãÆÉw,}&M3¡Äk¥R´iÑ€’—ÝWÿÃRcé°´6mÚ„µk×ÊÝ€ ![ôíÛ·ƒíÀåË—qôèQ٘듺ãâÅ‹r·nÝW®\‘ÚCËýúõ“”$Ó¡C‡pþüyy¿oß>¹£Œ1Æ òeËÜàÈ ü'ñ–•ºÏŠÞÏKN”ËuÓx “%Ä4ÜÏþ%ªªÒYŸ´DFw[*—6€½`·’òÛ†&VY–nCïjÈ¥ê<‡ÒÒRwS*—ê.!wi#Üð¶æ2^Ð}µ.¥YÓ_^$yH0‘ܸÑàuÿé§ŸJ§„Ÿ† ÖTqûMðQº³á;6.-ßµù¨&(ȇ,¥'¸¹‰®\ž‹GØX}A†‰eëì-‘,ëg¤§£9).Ëëm{oëùPlùÑ?‰× eÏ‘Ûò,£¿ú–¡dÞÉ›óB<›“ƒys_&XHÏzôrnäAZËAŽ ö:èeõÕ².=Ȱ@ha‹i²l ¿O„eßvèCƒÉ¯°ÔÛuh/ÝÆš¾¶§ér;ÞÚ^š÷2ºvõTõç½cUç5O1»È/ðñCȲmɉ(õi =Ï¢RêR›ø¶êÅôÂátÈý›÷p¾,¥쌟8Ás× ùV«3‡@ N(`||lÙ´Ìí@ ÔÈ£pÈyú§%“&?²5V/ 0ØûrmO,}g‡ BÁ‰ùÃ6R1ƒ[M°Ÿ!Û Mð@1÷Êk¯Ñl+ZM44`æõؼy …¦•î'ƒÆÆg¤$Õ\²˜~é2PâÉw¡@5©Á#ì_Ozn’Ç9,û°± ¦å¨Á¹³çðx¯^èÒ¥Kµv?ýø_Ì™3Gúî3gý®Ú»í[·aë–-2ô-).!ß^ƒæÍÿÀxaÊ èÞ£Gµúu>¨Á pçá.S4·võLj3Çɵ/(RVVЉIIîFYY™XüÆ›xfìXç,–,^Œ/wî”ïÙ¿fôXÌœ>ǹªˆŠŽBEŒ ¹ç»ï0rx"ÖPü®šn‚P—Mð¨u ºþ/ëȽ,£lŒ‘p Tøáž=Ñ«OoÙ”í˜ÄÑ8|øRÔÆ; Gfï-¶Š ¬Zù>22Òѵ[åNáv™i MFtìÔ‘…øCòlD(«¢º4:«·°Úï$Iƙ͔Qªa*geÆOœèž#Ä7–,F—„.ÈÏÏ—†2,,LÖ]0oœ;8[ÃŒónRHí¹_¶µâRâ„Â\ÄR¦gƒÆöE-yÒê«ÞlXŸ‚œìl‡óÚg¿%%¹%%.ô±Gñ6%4o\¿.­ ɳ{lnc†‰òvNbž5åLZšS <"×®^CiÈõ9‰Â^å‘Çղ_Y¿¦Ç+·ÈúÀQÕr‘£¢¢¥T´Z²(f{3ÙPs–>öGŽ”1=KÖElí ( š‘‘é3gbÓ–ÍHݺóÌGnn*¬•šÅ%Kÿúµë®¦ê«€²t+LýFË>ê¥[6o–Ì“ågÊÎ΂™2=#G’ϵýúëaRØw`b¦Ê‰AÞú–,]Š©¿}Q:O¬5£ÆŒFŸ¾}‘q%Cî,¼<4äÛ몀WÛu–¹@ :ø©²zýHÝŒ°°p™}e5å Í(’°§h¯]ûöˆ¦œ`)¥²˜´”z¾@Þ&OƒS“º&¡´Vs=¥^Ó­Þ5ƒPDñƒ­2G¡ºÇ¿ý5åçO "2B.6náøÍøg«Tã‰?†ø“_Á†¥œŸ›'ÓØÉsfרYùÈ'=©õÝÏ.¤O]ÂV™XQ ¿æ-$ólÌ.Ñ^>|ÄpiÀ}úb}b66ó•Gj6öæÙn³#²u+Yõã5«%>Û)Â/¥ÚHF„tvȇ¶]®a¥å×’’) Mˆ‹mÐñ¢è¤†·Ä$\‡$¼mSŸz—@}:¼×ÚÜà^“XCÏ—ŽCÃפn¥ëzœFéO_EK‚ÁTžíT3˜®Ü¡Ð©ÞJ¢sÁ÷¹6Ú2Û˜}èHž:Wºˆ@Òç XI¾¼hÇKî^¯­¦t¶^¢ï::!B/âš9Nб«J4m Ê¿Ì:Í7|Zz¦o¡c÷­;iÅ΋É+F§9惟t"Sc÷þb6u-t¢hd”òò¢SÎ0iü+þ]èĸx„щQ+œ¾KÈ Ug`ɯ>MqI-JöQf›8ÅFž¦kUx;eýs@{“8:¦ÓS3”Üég—ìøŒ–hÀFð>½Ûíõ˜;)Š?1O Ð#PùSÛ@ì.¦Å_ŸÏ:«þ-†|ön¡š•tPüâ÷¹XTè¯íL^8v÷Hÿ°µÖ ­} Ħ EþW ÙBÕÄÛ d³€4*Ê(¾ê"p!Ǫ$^(=Êé#5Uàüô]A$|-›h³Is" ¶†ĉÒ¶{UvDUsUš:-­j¶P¹¾À5ÂTš¦Ëû4 îwϨ÷5àî‘EÓÌäÿp7 Ÿ5çãIEND®B`‚ic07&6‰PNG  IHDR€€Ã>aË AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs  šœ“IDATxí] xTE¶>ÝÎJBV–B¾*ˆÀ€ "ƒŽè ì ¼ñSÜFFæ1Ž>n¸ŒË÷EQVeTEEY°…ldíît÷;%uÓinw:é% }Ï÷ݾ÷Ö­[·êÔ_§N:U­³Ûí¤Qðr@¼E×JhrhÐäòâk@@s È‹¯I AÎ /¾&49‚¼ø!(ÿšSå‚ Ñ|·#ÛL' mmÔÑïùå”a' ›‹ºP:Ql¥6ÑFÜÂ@¿æØ(Ô  8ûôÆPÒsÞö¾0•N~±bÒ»QDD„þĉ«Îž=Û™3”ðL5ž¢ÂRu:ÝG6›íŸÈ¶@ãÉ?‘Õd&CXõ›5l+enYJ]{¸ ×ò‘Ò˜ÊRyí.¿ÝètçØ\PFv+Ñ€WçSʰItéøA OiÊBiç9pIƨ•ÀÄaW@··0&¡õ½ŽìyedL§ë_›Oû_hJçþŸMJ;×È¥ïv L#¦+º Wzl¨l¬X(¹˜U–ÀõÈt_(£°¤ð’³^ ÝóÕ#?YcɵÕ9àhíF®xÖù¨ÈBmæë&Ÿ5釿çZ»|–UÞ‚ cpÔ#* ’J†f¡ö’¨8έoE , V*iÚ´iÕ9æÁÝã?N·Þz+M™2…Ž?îÁQî¾ûnzøá‡iêÔ©´oß>ßó&âå@³gŠ cv^¢¤² o(¦ñærît!ô\çR44„éd=g¦SeÆEî«ÿôèу®»î:Ú¾};ýöÛoÊCֆ鿛o¦˜˜Ú²e åçç‹g=ô=Z\oÚ´‰¾øâ åš.Ú¶mK/¾ø"éõzš>}:=òÈ#ÔªU+0`•––’£®›5kF+W®¤²²2zûí·)::šžyæºãŽ;jú”OžW€`!WrL(Ñ…BûøMçt‹l¤3‹~â°  ñPT‡Rèì—j9{ã7è†n åË—Óøñã•(íÚµ£/¿üRÜ£µ.Z´H\£Ò_yå!öîÝ«Ä÷䂇£ôõ×_Ó!ChëÖ­â•‘#GÒܹsU_?}ú4}üñÇÄÃ2úôÓOiÒ¤I´mÛ6Õ¸þ¬Tmr$ѦӶ§vgÓóÆR5„+_ ƒ:Ö½ óG®j™¦»¬„‡‡S·nÝDŠîÑÚ@7Ýt“8ã§k×®Êõ/¿üÂý›ca•G5^ U:´Z¼‚‚徤¤„Š‹‹)))I„=ÿüód6›ÅõäÉ“ G ‰k˜(Š;{-£ôtð=º;‹+?‚`¬¬|ð‚•@*á{6Q.|ߎ<΀|R£:PóæÍÅ#ˆ[ˆbIýúõ“—Ô¥Kåb|æÌ™4cÆ Šá={ö¤yóæQË–-8Þ|óMÑ¿÷Ýw4|øpå]ˆþû￟^}õUºæškDøÚµkE7ТE ‚~ñÖ[o‰ð“'OÒ‡~¨¼;nÜ8Bº@!½tûí·ÓÎ; R*Œí!Ž„{äúŽ÷Þ{RRÜ›F„Ø{¶Tôù{Îêú¿Ôú&Es\Ï¢â˘»6JKÒÑ„îaÔ;Þ@!¥ÜdÔ/…ñ˜ÔÆÙø›ÑFÇU²rÕUWU úHùöáÇEØ=÷Ü£„ɼ±R(žÙ¹¨öœõñì¹çžSÂYˆ0ù3{öl%¿cˆ¸È‹$¯#nׯ_oOHHPÒC>,Ëø¡PH…œN?ž·Ý~ÔlB¬ˆ– À 0ÛèÛQÔ«yuqÃO™QD’ý?´|hü×^ ‹1)-­¢yĈ„Ñ‚ó°MêãhEx¢bš+_èÐö›6mªòõ˃xàøÁPvvöå8D~!Æ¥´D€B uìØ1ñ®Œ‹nôôÓOH\c(›››+$Pù:À±KVÚ”i ”ê`(O ­Úð+å’Ùv,#úã^½z‰ ={ö´{€Ð»woqýŸÿüGQ %XÄ•Ÿ¬¬,úÎ;ïˆÊÇÍ¥KVU‹Å¢òFõ ±cÇ* é»ï¾[ý¡‹»3gΈ' †‰ (‘’ `À‰‰‰"# Iȯìzd˜óY ÜÿK‘ýOb¨‡Š7YÁ™f Û:4ì–ï\ ÇûÔÔTEÌÌÌ$(l ù®¿þz1ôbq­´ÄîÝ+æH\U¦³Ò…´x&'ÐÂ… éСC½*âa¤€¡"È9º¤òòŠ™]y_ÓY¼ùÓ%s÷"›=Rhvò 6õMèPñqÔØÎ²BO:%².Ç×°`t±ÊË«˜A–Z»Édá®~d¥¸z®Ž!¨ÔîgÍš¥Åm*YŠ{Lj ¤„”D£FRÇÅʼn.J P¹ˆÓu·AÓ—Äjx´ž®O*‚ mtg)Òe Óî”rìØ±C\Ÿ;wNœ;uê$Î5 ”$y-Ï2Üù,ûh| ¦âO>ù„Ö¬Y#ôЉ'Šè²…×”–cÚ°‚/^,Î/¿ü²°@bDÑt&Mšˆgj?‘6ý¡?Côãà‘I"O÷%x.ÝÔÒ®÷°?üá"RàfóæÍJ¾¤N€áš$˜ŒRÕ¤¸Ç0P’”00I’•3hÈ!„þ„þC3UZ+†mr¨*Ó—gÄ—ß‚’)¿¡¤¤ÈHhíDO<ñ¡;Ãðöõ×_'õˆë &(z|Çñ,JWdµë‰§XU‚Ȩ qŒß¨®y$ !²ïGæaFKß¿¿` ͯZµJô­.\ (VˆWXX¨ˆVă©̇1FÒ÷ß/Æßø–$Øúôé#lkÓ¦°`„áØ_ã4@<$Ïå=ÂŽ9"¾‹9 iÁ„¸Ÿ?¾Ð?¤’ÈÃJ1ÞÇ(@v°AàÞQê!MGÒAÜ<¶³tÙ¿–#H €»ƒ”H=Én_BH8¾Ó ¯Ñß‹‰Qp›´³U¯iÞÉc¡?îØIMã¢øÄ•Æê«,§rB6q¾¸b€qqc£"Úz‘s-‡ß „ÎqôiÂÌ{þ~lÓ ŠHc'x&9X}]ÆFXí`œq´ØùšIþJϔŮiçmd‡z©Lí£š¤¼´ˆÎ³ß}οyÕ“ŸAà2Ø5é±G§Q(»"I“¨¿˜åœ.*&ÜÎ]:Óžžm”dÇÌ<‚*U1ö¿´äéì M¨ã«Kèè?ØJù•AàÐú0­®Ø©UhñûöýD'O Ô'ýÿ–:¶¼ZrKÉA_ñ?¼*!99YHç9jr JfÕ øý¥Ò¿ÎŸß tÚ9¥¼ôÍÿ ðzˆ)Ì@V+¯T`Åè<`Ô]wºnö= , ;A$Ü4‰J3؉ !C‘×ðQ>âôÄ“OR³Ê%èÕõó/@àõ(À›2bEZjZ*¹ZŽ s2ã¤pyXéçïê›_¬ß@#† ëï[ðòìëx 7–‡=üàƒô»H«Äü]wŒ“ZXéÁËÄ;°‘ >ýP<áÐigk§8óuˆ1„·uI¢«®¾ŠÒx‘ægk?¥›†Þ(¶˜QKßßauµÖ+V¯XI§¹r1¤ƒB¨F/3•¹µúaåðèA^!k¶˜Åb ,¢@?ŽM!âY<8õºx“ïU4gï¸í6:zôõîÛG¬é‡wF#î½ÍúÁ´GþJYÑë? ¿˜Æ–{ô8¦íé5g‘u ÅòBÌV æ'ÿgK²=M»¶ñê‚zÀ'«WS\\¼ËÊÇð‹9»uïFwñØ_°ïË-›é¾©÷Óî]»XaS_A‹w!eÐÒ?xÿ}kòÐê!‰¼%€R'µM[*O y›f]߯-ê_ò¾{ÐÎ[µN¹¬Å¢à,½…Qcð»*÷ësÇgg=OãxÉ7v÷DHÀ‰Ð%@ħ´n-4|SåÎ\NѪÝJ;¤HM„8A›ô4ÚÌ[ÏÉu|5½ççµA½`%+ááaC,xÊ7ûB6µoßžÆòÎYžÐ+¯¿F}z÷AÂEM ÈÅ‹îúqØZ±f\-'}ºtíBcÆŠ!æ)<%ôX“Ÿ•yšNÊ û˜J«y÷EKÓ¼ùïÑÊ5«iþ¼;Úñè!::FUÉtþî©ô¿O?# IÎÏÔîaÿOä¹€²Ê­_Õâ4¦°€F’õŸÎcp÷»h9P 3N§AƒÑÕ¼1³7”ÆR&))QXä\µC(rGaóºsô›GÃÉÂ}¼Ôú=~¹F V±ÙJ¶Hweo‡¥äé¸ß/a–EŸ.L¼¬W¨†ŠIÜ’§ÿ÷tµÇ.ÄqˆŸº’b._l €ÕlöÅü:*_­ÕTLùfð>¼ýhÐõƒ½fféPQ®Ì¼x–Ã}?¶ˆÇBmH,‚AæXµI«!Äõ;>[»ŽòæŒ-y ™« Á”/9ò;°ÿ^kÍ®L³ÐÄaõæÎ#xÏ}_TÌE4·`;/ØÉ¯ØÎz°g÷Â+ÇUß“mVîô`Ò'Ø+Ëå÷+V._)–;£W#ôÅçx£ciÂU‹£…ù—~ÀÏüŸ5ßîø†ÒxH¦fö…ˆ0ÎaÊ×Å|¿‹®¥ø +ø?vJX± w±Ÿ¾^ÏV8vÂl×®­O†~ZuÖ~ÀéÓ§hë¿·RzZ:•ó¼ºÁì›Éñnã?=rÜ[-®æ?ø0û¢uGÇD«jã‚á_:““[ñ:¿Š½òýWD-ewð90Û··NoÚZµïGf0W ¦FÜr«ðâu—Aí™9às¬âÿÁÅBŽ„„DUÃZ1OùâïLƯš–ôo1µÔ]qÀ§€f¿vÍ'¼v®E…¯?W¶3¡õcþëüÚuhïüX»0| €Uìì‰E•˜Wweö…¯–kýuÚ£.ªö95¨[hÔbz†–±q<ßïÂ×^ØßYJàoR–¼L8cÀÐBšØ3hÒ=“…Tñ&­`|×gØÌÞ>XžÕ‰wîteöEÑ„G,âUÁ  /8kâûéZöB·¢Qí8à3Àß/$ÔèvYö2¨4l.á Â\‚…„Â@£ÚsÀ'ø—eíâÒJKS÷õWË–+A-®»0¨™Ø<²ÆÙ?w‰ñ3ï:àJÆa¡'ìýîüåƒ˜Ç ºè^[±lÛºÒÒÓ]~4‚Z~Å—ÑŽÑñh´Ð4º ­úŠ‚kÐäòâk@@s È‹¯I AÎ /¾&49‚¼øšÐäòâk Èðÿµ¨V/ 'IEND®B`‚il32ýÿÙºik‚mqr=âÔtRT‚VWd7#ƒñf‰gQTB=$4Vœ{F %9ny¼¹ƒ·½cÆÅ®Ro©o({^>wÌ{|WF‡ÿާ¢‘ÂfV·†¯^s€¥¦ŸH‡ÿƒ( @#4eX/Adr‡ÿ•‘qÿõÒÕÖÙÉÙÆ†ÍÎ 5̵°€±qÿÒ)7€<>*?üˆÿ Lÿ÷õ€ó qÿÏ(-/HN ‰ÿ EàÊÜÚØØqÿð·¼¾Ëj/CóÿÜçÿÿ¼–¨ú€ÿ Eå½ÊÜÚØq‚ÿþE›ÿ–mÓl% !Kãÿÿ EæÂ½ÊÝÚq‚ÿ†Aòÿ’$ED*7@D#mÿÿ EæÂ½ÊÜqÿïA‹€ÿ x1:>»Øe.Oÿÿ Eæ€Â½Êqÿš;æ€ÿ ¯&3¼ÿÿ¥Wÿÿ EæÂ¿q€ÿøK|ÿ ³"Núÿÿ¡Xÿÿ Eæ‚Âq€ÿ¨"/Óÿ ¯#MëÿÿžXÿÿ Eæ‚ÂqÿÿþSˆ‚ÿ «#LêÿÿžXÿÿ Eæ‚Âqÿÿ¸$@|˜‘‘~̾$LêÿÿžXÿÿ Eæ‚ÂqÿúM"C-Ç;èÿÿ•Hÿÿ Eæ‚ÂqÿË?ƒ]A¯Í8\ìÿÿ§0gÿÿ Eæ‚Âqÿô÷þ‚ýüþþüý€ÿþüýÿÿ Eæ‚Âq“ÿ Eå‚Á~“ÿ ;傾U“ÿOí‚ÎJ™ÝÜÛàÔRºï‚Þ´4“pÙ½‚»ª‰`8.2*>~ºÀ¾‚½½ÿ½ÿòæÒËÊ‚Ëà§%õðÍÀÁ‚ÂÅÞ`#ƒùÆ–Ÿ‚žšÉkeQTB=$4Vœ{F %9ËŒÍèçƒæð~ÆÅ®Ro©o({^>wÌ{|Wž½‡ÿ§¢‘ÂfV·†¯^s€¥¦ŸHœÓ‡ÿƒ( @#4eR/AdŸÍ‡ÿ–ŸÍÿõÒÕ€ÖÕØÇÙÆ‡Í•´‚± ŸÍÿÑ%38789&:üˆÿ¾Ùÿïò€ó ŸÍÿÍ#(+DJž‰ÿ¨¾úãÔ×ØØŸÍÿ𶺼Êf*?óÿÛçÿÿº“¦ú€ÿ ¨¾öíãÔרŸÍ‚ÿþ@™ÿ“jÒi Gãÿÿ¨¾öéíãÕÖŸÍ‚ÿƒ<òÿA@%2<@jÿÿ¨¾öééíãÔŸÍÿï=‰€ÿ u,69º×b)Kýÿ¨¾ö€éíãŸÍÿ˜7æ€ÿ ®!/»ÿÿ£Sûÿ¨¾öéëŸÍ€ÿ÷Gzÿ ±JûÿÿŸTüÿ¨¾ö‚éŸÍ€ÿ¦+Òÿ ­IëÿÿœTüÿ¨¾ö‚éŸÍÿÿþO…‚ÿ ©HêÿÿœTüÿ¨¾ö‚éŸÍÿÿ¶;x–{˽HêÿÿœTüÿ¨¾ö‚éŸÍÿùH?(ŠÆ 6èÿÿ’Cüÿ¨¾ö‚éŸÍÿÉ;€Y€Z=­Ì3Xìÿÿ¥,cüÿ¨¾ö‚éŸÍÿô÷þ‚ýüþþüý€ÿþüýÿÿ¨¾ö‚éŸÍ“ÿ¨¾ö‚éÒ“ÿ«ºõ‚çÄ“ÿÁø‚î¿“ÚóŽòóð¾‘æú‚ôã³–Ÿ¢¡¢œ—Íñè‚æàÖÆ¹¶·µºÒæéè‚ç½ÿ½ÿúù÷„øÿÂúú÷„öùÿr#ƒúöññƒòïÿ¡eQTB=$4Vœ{F %9öðøü„ûÿ‹ÆÅ®Ro©o({^>wÌ{|Wòö‡ÿy§¢‘ÂfV·†¯^s€¥¦ŸHòø‡ÿƒ( @#4eO/Adò÷‡ÿ•ò÷ÿõÑÔÕØÇÙÆ‡ÍÊ¿¨¯± ò÷ÿÐ$27678%:ü‹ÿìðôóóò÷ÿÌ"')BIž‰ÿóöÿîÑÕÙØò÷ÿﵺ¼Ée)>óÿÛçÿÿº’¦ú€ÿ óõüÿîÑÕÙò÷‚ÿþ?™ÿ“iÒhFãÿÿóõûûÿîÑÕò÷‚ÿ‚;òÿ@?$1;?jÿÿóõûúûÿîÐò÷ÿî<ˆ€ÿu+59¹×a'Júÿóõûúúûÿîò÷ÿ—6å€ÿ ­ -»ÿÿ¢R÷ÿóõûúþò÷€ÿøFxÿ ±IúÿÿžSøÿóõû‚úò÷€ÿ¥*Òÿ ­Hêÿÿ›Søÿóõû‚úò÷ÿÿþN…‚ÿ ©Géÿÿ›Søÿóõû‚úò÷ÿÿ¶:x•ŽŽ{˼Géÿÿ›Søÿóõû‚úò÷ÿúH>'‰Å 5çÿÿ‘B÷ÿóõû‚úò÷ÿÉ9YXX€Y<¬Ë3Wëÿÿ¤,bùÿóõû‚úò÷ÿô÷ÿ‚ýüþþüý€ÿþüýÿÿóõû‚úò÷“ÿóõû‚úòø“ÿóõû‚úòö“ÿòöý‚ûöñú‘ýöðùü‚úùôñòññöûƒúø÷ö‘õöø„ú½ÿl8mk!€{{{{{{{{{{{{{{{{}t73333333/žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿª9:;;?8ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqO|}{{{{{{{{{{{{{{{{~y>ic11 ‰PNG  IHDR szzô AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs%%IR$ðgIDATX ÅWkL“g~¾ö£¥Tîw r¡YØbœ€'²ÄÅÍl2c ?Œ“͉&»øc&:7É~l‹—ÍÄ83gôÇ2/àT˜C4r‘›Œ £ÜÊ¥ÐÒöûvÞW[¨- a‰'iûÞÎ{ž÷œçœ÷­ Ë2^¤(^¤qf[|0bAǨŒª> ÿš(È! Á–¬†Pu Õ{rc¯5wo¦×UÏ5Â?.j”@„—ÂÖc”¢É¸ÕáѼ—.·N¤çí@ó·SMét:Œc``€GFFÂl6£··—÷ãããÑÚÚ:UÅÑ}E`µøX­eÔðäÇwG «™ü¥´/så­[¶@ß×¥RÉ [,twwÃd2!,, qqqÈÎÎF{{;ª««¡×ëùxss3±páBTUU Š_ܵ«œøl÷JO¬Ò‰°)%wÈ¬Ê 8¨ÇÔÞ\PFàžžœ>}QQQHKKC}}= .]º„„„tvvrP………ÈÉÉAii)AB$ñà=ë'Ù©*|ýŠÚá–™uÂ|||ÐÑÑvêÁÁA¡¦¦åååÜx Err2°dÉh4455!%%…‡çÖ­[ÜŒ ËBž=Œ¢÷Þ½{ÑÕÕ…€€ÄÄÄ ­­ŸÔjµr0þþþHMMÅÄèÎüñ;µÁäú††¤§§ƒñ‚„bzrذ«fœ¼ùlRr¸„èû)” ÉØØ±µ…‹ÅÉ!´€‘Í@îÎZ•…ÊÊJ¨Õ³‡ŒíQaCŠÊxîHtÏw=6µ`!–?Ù™Ù6³/‡´¶4#wýzcÇÐh9SéëïGpP0Ê+*8ƒJ³4C@¨õ¯éM†~HJŠºÀÏÍ5Ø(~씲$P(‡J¥ÆCJ§O?ßÍ=1‹M§iY? 3”~±èGêpá –ˆñÓ©SðɸBooœd­ÎFbR2W®¤Ò¬‡§§'°9é8w Œž~î˜Mf\ šÍJíÊUoP&D8é‹”JVÚ@§‹Äë™+s¬ 2òbÏvǬkC)YÝ8_úˆ Á!!ÈÝï¢É 1#Ä4 ÑÅc›m¦SÛW9ÿºp€mÊÜo"/äåoĢŋ5¨Ç0akÙg.âTØF—/^D]m-¯v£##8zä0¿½Ø\_?Þ^·AäìlÉs‹Ë„%‚òJQÄ…ó¥è£G‡½z?ê탯¯Ò22øø ½€ØZ»ŒSV艄¬š>¾¯ì3Óÿ:¨«½ƒá‘!¤g,çDDù¦éz\ÄQµT©THJJæi'P»ÐuûÒ¢Eˆ¦ë™^–öá'µiY2=.–]¥›Î“b;y2û,Þ¬D3¹~ó&'¢½ÏÆróò‘“»ÓB64«8Ðjµ…Ùb̮秅e†»q¶ŽQÕ]Ù‹Hãí1åîz×9ö„sÌJ/²nsu*˜ ÃRèíL«>2,#(D°yÒÕî§vE ®‰KÎݱì;""+\I±wïªi-¸™`¥š´ç6=åG%|˜ üYAÿxüT®A (¿ÔJI[ËÆó¡!MZ×unÌÌ0Ä":A›Ð}T”¡Ú­Uüy{@¢”uÕ~}hBû˜ŒƒüN㈼xÌAˆs•‘ X2ÄAŠ ¹Ÿý×pW4…¹–Ò9àäªÏ–¬sµ2ƒþndê7$ âIEND®B`‚is32rÿy?&.-<€HNlcfe*”Šc]~iis!.‚ÿE.U3,RJImHÿâÞçÝŽOYa]VPJ^Së230J‚ÿeú5µâÌEüÎÑ#¥¯ÃŠ@Öü,0—È>ÿÿ­,ÿPEIë@47•@ÿÿ'ÿÒ!ýÙ>à@A=>?ÿ´(ÿÿÀ:ÿÂIã??FBJù8OC…+ÿµ$âA?EEJ󢤋‹Ä¯ÿà§æ:?EEAˆÿ(#//+¿ä„Úé˜>Ž‚‚= …™äÎÎÿÿÏ·¯²·Ê-€·¹ÉÅÆØS†Šc]~jis!®‚ÿ=0U3-N5Jm½ÿÝÛãÙŽPYbZcN?H^Ìâ%/*EƒÿdÖÒÈ̾øÉУ­Â‡>Ñÿ¹½µ®¶ÿÿ«(ÿLB8ö½¿µ¸ÿÿ"ÿÑýÙ/ìļ¿¿·ÿ¬#ÿÿ¾5ÿÁ9ïü¾¾Ä÷,K@ƒ&ÿ³íż¾¾Äˆ‰Ã­ÿà ó½¼¾¾·ˆÿ³²¶¶®äõ„ñ÷ÔµÙÒÒ¶¨¯„®­§Øõííÿÿö€ôüú0€ôö÷÷úÿbŠc]~jis!ó‚ÿ:1U3.M,KnøùÚÙâ×PYbXg_6I^ÿÛ .)E„ÿOݽÌùöÈÏ£­Â†=ÌÿýýÁ¢ôÿÿª&ÿ~KB1úýüýÃõÿÿ!ŒÿÐýÙ(òÿôúúôÿ¨"ÿÿ¾4ÿÀ3ôÿõô÷þõ(J?ƒ%ÿ³ òÿ€õ ü꘢ˆˆÃ­ÿà›ùú€õôˆÿóôõõôüþ„ýþúôø÷÷õó†ôò÷ûúúÿs8mk'$!Š¿······»­{ûÿþüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿå•™“ëÿÿÿÿÿÿÿÿÿÿÿµëÿÿÿÿÿÿÿÿÿÿÿÀëÿÿÿÿÿÿÿÿÿÿÿÀëÿÿÿÿÿÿÿÿÿÿÿÀëÿÿÿÿÿÿÿÿÿÿÿÀëÿÿÿÿÿÿÿÿÿÿÿÀëÿÿÿÿÿÿÿÿÿÿÿÀûÿÿÿÿÿÿÿÿÿÿÿÎÛÿÿÿÿÿÿÿÿÿÿÿµ(¬½·······¾¨ic14œ™‰PNG  IHDRôxÔú AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs%%IR$ð@IDATxì}€TÕõ÷™²Ý¥ÃÒY@""öŠ @:¦˜hš-1Q“hôó¯ÑDc¬Ñ$jŒš˜ {[4"vEé KÛ]¶ÎÎ|çwwÏðvxÓv§¼Ù9fç½ûn9÷wßÜsî¹çžë ¤APE@P² wv5W[«(Š€" (@@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!*da§k“E@PôPE@P²²°ÓµÉŠ€" (Š€ ú(Š€" (Yˆ€ YØéÚdE@PE@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!*da§k“E@PôPE@P²²°ÓµÉŠ€" (Š€ ú(Š€" (Yˆ€ YØéÚdE@PE@}E@P,D@€,ìtm²" (Š€" €¾Š€" (Š@" @vº6YPE@P@ßE@PE P ;]›¬(Š€" ¨ ï€" (Š€"…¨…®MVE@PTÐw@PE@ÈBTÈÂN×&+Š€" (*è; (Š€" d!^»6¯(«³‹ç¥Uy¼T^ë¢MµõTW ÞEÐÁC97½¶µ‘útpS¯ŽvÖU6¸©Gn#Õ4ÖÓ˜´¦ÂConk¤i¥ÚÛXG{+«h@÷ÎävçPhý^Ý¥š^Ý\OwïD¯ïn ÉÝýôâ¢D}YŒYV^GKrhB×þ¨”Ó^z9ÙípQ~c-ù¼ùTvè™ÔÛkTD{ö$»Öl)ßívS 0Ÿli3Úéâq ínOÁÚ&\#´·6¶§þ ×–Œðº0å^w€º0·ïã!ê‘Ï?4w k…Ï߯Þïj¬l tÔ»zíó“ÏÍ¿¿ph¼"йêë¨Îøì°ã·nxòÙC[>×»Ö"à÷óùÌYÚ#c´¶Éz…Ý›ÑMv¼Áü;Ÿ¹x!úº¨Sµ‹öÖùS£{üëÛ|ã^ö»†­¯vum[ÃØ}þ@§zQ-5˜ý»¨!£;H‰O,bê‰ê‹©~sáGÒÈ•"ÓÑZ§" $ G 9¬»/ÎuQ|®À Íõ¾Ãÿ¶¶æøOöÔùPwH5ÊþúF ¸ äLJ¹¾ ³ ¾Æ­‹4i§øFƒ"< ×÷)ó6$…ªŸ%q³gϦóÏ?ŸzöìI555ôꫯÒ]wÝE;wî4éÚ£f`ܸqôÓŸþ”FŒaTãŸ~ú)ÝsÏ=ôþûïL¬*t‘¬ýš““C?úÑhæÌ™T\\LUUU´téRºï¾û¨¾¾¾].{d@ÅM¢£€¦–‹Š<êS@TÑèî±r[í·^ÝæŸ¼®Âuê®ú\¯Ÿ_.ò63yNGœŽ ZÄ:>(Œß¦Ü?î7B34!॑*AÆýF@% æ_PP@K–,¡É“'·(ãøã§Ë.»Œ&MšDo¼ñF‹gíáæª«®¢›o¾¹ESŽ<òH#ýêW¿¢ßýîw¹^.ýÚ·o_zñÅéàƒnÑÆ“O>™~ò“ŸÐĉiãÆ-žé3pŒÐÈ »[îÜôÞÎÆ ÷}Zåë;§ï¨x(À3 ŒÆù^rzÈãËãP5Bà:8F¦Ï@#Nƒ"ôUŠEYþç?ÿdþ˜åããñ°Á‡ÂÂBzê©§3寿þ:î:œšá{ßû^ æ/Ú Ìž lݺ•þþ÷¿;µ aé’~]¶lYù766šÙ>4øtÐAôÄO˜~ [>p MoešÈñóLÁËlÇ¢þÜ´b»êŸ?Ûûî-_tzkÉ÷¬•õ^ü'êË&Òí£"¼®ï7¢‹ŽÎiê:­VˆˆÀ©§žjÔÃ’ Ðëe¾™Q€™téÒ…þïÿþO’˜gÁ› ¼èС]wÝu-(µ9"…^{íµz&ÌðÇ$Úh]Ò;v,ýìg?3i¤¿ƒôÂQ¤E‰zqÏøs´µÆÆ3[êWÝô^í/¯+8Ìï/"W'fî<[€:ŸX€Y½™Ùó6"¦K´j•å¨wI‰Q‚`m8–pÖYgQçÎMRa±äsbšO<‘ –40C„!C†5yØ„~0uêTC]_Y…€iÓ¦…Mçàæei)_`öͳ~õäm{{ë|c¾²áÞ·wçhàuü<^Þg5ÀUÅêBþ±4ÿ`öëø³®´ÁYˆ@§N¨¤¤ÄS¡ùÖÁ3Ǻºº„­±víÚ•ºwïnÊ´B:óòò¨¢¢‚ÊÊʬbº.--5éPŽ0>»Œh'>{ØÝ‚•Ø¥uzÜàÁƒc&1\ZÁ†u½{÷¶}b®$Ž„è'h0°dñù矇ÍÙ¿ÿ°Ï¬ d´ -Þ_k½N?)öÏúÝTèõç-ßÜpëâÍ?©ªeòÙ°¯CÓ ßgfüéF)PÒ…Ö‰/ºè"ª­­=€„üü|ª¬¬¤‘#GÒ¦M›ÚÌ4}ôQ:ýôÓ¨ F|Ÿ|ò rÈ!Ð-b÷îÝÑ’˜çûöí£½{÷Æ”Ö鉰«!Ö-í¬Y³èá‡6Æ”²›"Ö²[›ïÖwÞI—_~yØ"¤¯Â u"ðíÚµ‹Àü58”<–‡ÕöÝy†¿©*pÜ-ŸÖ?VVÕÐ\^ÊéØ@ pã½>tújÀçì7F©K:£F2u`@¶ ˜ÂÒú‘G±{s\¯^½è„N0éÃÕAcèС´víÚ˜ËEBX‰ó›ß ;ûFñÚk¯Ñ¶mÛâ*Û©‰ß|óMðaë`¤Í`Œo½õ–]’`œØ ¬på'ðâ¯ýkÄÒÞ~ûmÂŽ†haÅŠÁ$¢ÕFè…c×Mjà]úTÈúðv½%}·]õ~ÝkeUyýØ ˜<<¾ØÆË`Ñ$•-\p4`î¡Û«„`0X]#`½qñ™½{ì±Fí)?ÒBˆ7@8ÁÞwÐh¥×b½ñB“¹ÉÐ?ëׯ'+ m·´iÖ.H,ó¤*ÈNÐ%}®î»ï¾ÛørÀsä³ö+îѯpþô§?™"¤=áÊÓøô"4Ã&öýyÛ^Û×ùê÷kþû¯Ï=WÔX:.d£>cÍÏæ}VÁi¿E@ aÆ™5q;(0˜Ê6º£Ž:Ê.IÔ8 Ð2hC‹K3fL,É‚i@'ÔÖçž{®a¸·2¹þõ¯MÏ<óŒÉÊ,ƒ…eجä_ýuCuh»‰g—^ziØVIß„Mà¨O„±{ï½×”.ýcW4AßùÎwÌ#䳦•r°rõêÕ&M{éW;,ÚC\R°sLL¹èó]¾£~ýî¾ oln8ÞÍ[ú\lõ‡}M3~¾Fb Š€"`7û…³òÃ;,4:®{QÿË 04³0£xmÀ ¨¼÷Þ{F›±hÑ¢ 1êXµjÍ™3‡®¿þzS¥•‰˜ˆ ýƒ6Cð®ØÞ¸cÇŽ`K°æš¤fL¦ éãÅ‹›þŠDú Ÿ… ÐW^y%(L"< Š€"øŽ5ÀÙŽ ܱæ…õ ˆ‹†Nýúõ3»"¥³> epØJº045&^‡2<0ü>øà€¦8­Ý/¿ü2-_¾ÜÐÚ†PâCiÓÆ/i‘&4<Óog!°%°vŒ#ø´¾×¶7^sýJfþÞòvâøfÃ%g5]©Qœ…¬½ak€ª¹¨¨(Öä& ÌðÇ-ˆ`€ýáV-€ÄG˯Ï[@n.{?MQøóŸÿœ¢š´§!À0nYßB7­ÜVŽ«jC¹^r³å¿¿‘ þtâï´~WzˆfÿƒØJ¬|Ž9æ˜X“Óa‹Y¼ùÄ6!ÖÙ„¨“à ˆ—O°/DmK(2¡UJÙ¡ñ±ÜG£GʈDÊ@½ÿø†?ˆX?Ø=çM°?aOêµ~ËL§bM?Ö }&t†æ‹»|R&ð‰†‘¤ -Çî^h²{–¨8ÐOMÒÞxò%:­í øb Âø½ÜöÅú÷W¾Ýú~Ýmä."wþÁ>ûÙ·_³•Œ…ÆR±¦QÚ!ÖYv´æaÇ sÊ)§ÐóÏ?-y‹ç0à*--mí¶ ÷ßD¦Z†0™ÐxÜGbNvé­qR.Ê7\yd%=Ê€†”Ðj À©<ßaÁšÖDÄñ4„£ÃZL¤:äNQüßÿþ·3àñå—_Ò/~ñ úýïo­6xmÅ }Šœb¡=Z<–&Hˆåš áh’xkªBH…÷Jx–üøãÍòDki²õRú á_¶Ðè!õÃ1–JĹ—•ö¨…'1­0ƒ­~óÜôú¶úY×¾µï~ru`þüàÅL÷÷'±ï´èv†À¡‡w‹âÉ£‚“N:)îz¬K2G*ûÁ ˆ}áÈc ¸‡Õ<êx=ÆAè¹í¶ÛGë>÷ÜsA!ÀZ>®e…â\`' ‡1¶­aK"ö¹Ëš¶Ð,å„–owÁË2vmByÀÞôÂíóG|0‹¯{võD‹;çœsÂ&A{PÚùüäÃ},íD:ô+´ø¤°V„>ÓË¥ü.SWöä—C¹ü¬qqe}Q‘+?‡||d¯që›dæ›—Ì=FmÜóü Àq›!˜®õ£ÄòÀt ñF¥"XgÙÑê“ALTœaˆ0x¶Fk€Yt<;@˜BÏž=©G->ðxu­¨lMÂ?h£´ÎeÀX„ùcF^œ=ÚpöcVŠkœFˆ³à×^íâ[Ü"Ô õ1¶·I¼üN`ì¸téÒïœÐ4±Ѓòzè!úïÿÛ*æºp¬2„ñùóçaï.ðŒb¥§-él€zø"}êø92²ýö½úÇ>ÛR;ÒÓ™€-fÛÉ6 þG¼­Ð w8dUÕòÝ>:öðõ^¾®âO Kü1Â'jÔbã;áÑ|Í»ÎwI ˜a»]hÀe7HYãÅ£¦pA 8äÁZ®µ¼pe}RV¸t/jn)Ûú-iÄØMîå[hƒBÌ8|ðA‚Ѐx´SÊÂZ«Ìv%fyPûâTEI'å†ûF›¬ŒÂ|ûC@±¶‡Iºå[â­i$®­ßBvOâìʆ³žH3t»<ˆÃÒ†ø3vY¿‘Ï1ã¶ H‹ ´VЖöˆš±MÚ ¬þóŸÿ˜™?:©SžGúFZY®8û쳃[‘Gê‹”_Ò XãÇ!Y矾Éf}¥}áÊÃsI/ià 6(ЪàY*ƒ­ ÀæL‘Âôaß"7ÝõIý7îûÈ?“ºä°Û_žùC-ÐB_FëŸðé> ê«d&_ÀÜTP쥱%DÃ;ºil±‹ú° â9T”ËéXHpÁXAƒ"üV‘ßí¡Ö2Cóã~ìØ±fÍXʲKc'õØ=‹TÔð7ÝtS0GÐZ˜ \ðâ\.tÜqÇ™<(;4m°° ¤Ã¬VòB({ì±ÇŒ÷¾Xfk}Ök)7YßBß…^h[…à,4‰ñŸmâ(‘òžHY¡ÉíúÈšêþüàÖ(Ûw} M–’Àpá‹"´- s:­}‹÷³wh•¤¼0YM´´i!¾ñÆ4pàÀ`Á#áeIyÖd(;2 ø@û„2Q_,ôYˉ÷ÚVèÒuÿ!´@¦~}è­-þ¡7¼×p/ÁÖ· ƒM4“Eyø0LJjßÅß ü½ù¨GwÝ?ŸÎèã¦c{•˜Ã7„´ƒÓjPZ‰Àà6“ä@»šì k:X?7Î Öx»kq$‹µlÄYïCóG¢14m"î¡ýÆ7¾AðZˆ‰¶ë®»Î¨ûKKKƒg<s(½R„«ÿøÇôÇ?þ14‰ãîá3ÜpAú¶&°›@@;å]—/ÑñûÛßhêÔ©aϼ°Ö‡Š %j-ó·–e½Æì†xr…õ™Ý50‚aTö`þ"ŒÚ¥mMʃ–ÂÜEG;”©5uØå±ݪy÷žÝgÇ×2_…ññ5U¬¨nèÄFÿMªR»ÒÛÀ’‚—ÕüùM?üF–Uvñl¿†è˜ƒÜ´øL/mœYDUH3ä1óÏãÚ¸9Ö0~Îëgæàrü~^Ä7?ÐbË;ÀŠ:óöVÔGÖ†µå·ætàl ‹N:餰…™A­-ç„ÎÒpý˜Ý„ V-E¸4‰ŠÍ_|ññR®l ÎXWóGFgn,O¼[êdÙ$Þ¼ÉL/ý*uDZûGZˆ¬'0¶©¯5ß ï2úÛ"ѵ8Þ;»¾ +]W\qELI…¾¿ÿýïA;˜Pì­ÙÑe}n½–´R|{ÀX1UÁV°u/ò‡ ]ÙôÿÁ US—®o˜DE…äö×ò\;þU˜â÷G»<ÌüùÐ ^ZðUò`ì ÐICsè¶±y4¾g¨Kevo‘c\,4ðÄ_ôÐð;§Ah)zy"ØA5øä“Oõ`h#0€`ðÀLõÎ;ï }lîñéÂyÿ“Áênøê—5äРd¶[A›ìz%`V‹­SáŽ%ýÒäF'ùñ-åYÓYŸGº†ÖÖÅ0-RÚT?C{Ð6Ìaý`×F¤A<„),“ &æ&E¤Nì ¦èWØjD  =´]¸—¥y&ßÑÊÃó‰'še-;wÍ¡ù¡‰š5kV0:\=‚s0¡åBÚnÍ+é%î–[n1;P ï±´ÏRLB/-œs¹ÝòüúéÊqýŠÔ=·žþ½ÎwŸéK9ìÛßïI4wÅŸËtóL•¿|åÔ« @K¦åÑ˧0óg’lsÐÀË©™œíF¯$ kêHêu0aж3¬’Ûìöƒ\D¢mýƒ !{àÃ5sèСá%-FeX¯mKN‚U<åv§vZ<ÙR’ÌC˜ TÚØZi³!mwÒRöÄÿð‡?´’÷5˜¤´-îÌœá裎š ¿+«-J¤ B i¯¾õÖ[Á-¡x&ÏQ†•ùC ‚êÿª«® ö)ÒXÓã>ÑÁVðÖñ²¾Í§7O¼—|ÖøóU¹c©°š\õ¼U*¼½@üIJ!fþæì•<»/÷Ð…‡çÐæsŠhz¬5°ó ¶ <äf»—gÿ,!þº4‡"à 0û4 –-œ¶ã ô­Ôc{ßGa¢BD‚9Èú¿5Ÿõêë>»z" *Ö²}ÁT¬Âí貫Ì[8žãÈÛ)S¦›`…ûbõÌ6dÈ»*Ò'Ì}+ŒT˜Šap<³lÙ2»Gi‹ƒ=³Ï>kê§_%-ì°Â-¼BËe5p”t¡ ”x¶F XZ)-- ›LÊB8”ÂTh°ã‚9òâZœ.!òÈï[Yác[ %NÒà;™Áv `dI“5²T 6ÛE…/«ýÅ÷îÿy“A3hÈ„±ƒÀÅ*­½òjéѳ hî@X@åÀÖœ-ôûM±úWÈd°Î)àH]¬Ê¾]z,ÀˆÈ.~øáÔ·o_»G& |ì‚ X‘lìò%"ÜЂ@¸è¢‹Ìs¡'RùHƒ¼p(õ­¨¾%ÔÏ/½ô’ÁL˜©< ý–=ü¡ñN¸‡ê;ì–?„Æ?ýéOréˆoQq£_Ï8ã Ãü °EjƒŽþÂÖ9x[yöúë¯Ó;ï¼cœ Ùõ+Þ áÓB>¤-Ñ„+©ã‘G!x1 Ð`A€Å»Àð±¥áÒK/5»W$•6ëµ¥#Ù÷¶ÀZööiýld·þkk¨ð¾Õ•—R¼Ù*ZI+Ké¬Ú÷`ÁŸ™?V5¼?£€Fwà­…Ðxx×hZY…fSŒ@4¦ õ?øˆG°2@\°ž)3A“ÈòG ­˜µ àFê³bR¶JvÏ%]"¿­4ƒY `À· h“´ 6˜Y®´âƒg(OÒ ŒX¶‚‰#»:Ó7mÚ4#àD£Ž”ä|+žÑò%ó¹•0ÐHi¥ Ìœzê©-Uô'ž#¼—áN9”wõYi°Ö/ï‡l«D:ùI:Iƒ÷ [E¤nk¹¸–´Hƒ¶Â–ަBŸ›Èý±:ñÞ~ùtæãƱËßEkëÎ_¿'PB¼-½ð%NÀkúlð׸ÏOý;ùiÅ/õå½×¼ãÐlûg?ƒš"4´E Å`ÖͰEååå·éÁ‘0zk3àšUœãÈ…ç2Ha\¶ÿaM³æÐ ùà~W¬ñ%.4m2ïeÿz¤:d †Slm” í•{ù†ïùhAÊŒ–.ÕÏÃ9þÒ^*ÀiAè]PÙG "ôÁàš*kŸ ,)O¾áb8Z´véàÎXìfä]—oä“kØàDI„HåÙÕ‘î8[`-3cù|Qí§Oü~ïÓÛŽc~sàÝËFz‰àÊlÐçr±µ…›OôÓsgu ~|˜P-ÏúýÆÝ_ºáÑúä"€Ùÿ Þ^.@ý/jN¤‘£­ƒŸ5¯Ý2¶õÙ­uʆ5SøÍ—`½–8ëw4…5m¢¯¡°*†–/m‚¦àá‡6!dE˜a÷PSÃF"„Hù#dKê#h| áˆ°î +s'ë;nG§ô+ìDµ®O$m¤÷Ä®ŽÐ8Ø»”––†Fï¥ø@À½Ä9üÂV—¿g'ëü›C—\½òµÿˆ×wø»×õ±G>ãõ^ùÚdàbaÂC ðÏﯧù'ÓHðR@¾)[(ÐoE ý"•zhÀÀ†˜ÜyB+p|çÔoЉ~@Ç?P}ËìØJ·´©5‡þXËIÅu8ãSkÝЄýæ7¿ F Áˆæ ‰&Ô…æ ½dœ+ØÂv§ú!H½¡å8ù\ü€Ð”Ïà­Ùë9ŸjÙÓ«êæ´=Z{@¾Ø#8?—ÓèeAƒ-þ¯›O“û±×>öØg„ ~lŒc/PS*‰€¸¹µÁEY—ç0~u£ÄY¿±M/´ÌP5¦5=®_|ñÅQáýMðÌæä•>,üb”­x;¹]VÚ`˜vÎ9ç˜(éës¹þ׿þEkÖ¬‘[Ç~ƒYÛŸZ Æš9N„LUã¿Hõ ó”ÆÉÏl€Jæ¾øÔ»]´¶–òŸ- œ æï2jypç6†&þÏÿ:©Ÿ® ƒLù¶$µ±BÍ®8X2#X•õ:ôÄ6<h¸Éz?žÃÇ€Ôa—ÎX°=É uˆ µH×¶8ÌÖEsŽFØ)„Ó„Ë“)ñòn`kšuÖ/ñ¡íÀ¸Ñ0 Í—ê{ÐM£îˆáp´FŒÂ屯‹ ¶H‹ 39ØrÛÿ•×>+vÕÒs›+&}½·±»äçY fè ì—ß8ÊõÓo‚…?üø»Èëá [ŠP§¡8™M‡Vro7ÛÇÞõHa"»8• ³¹ý†oÐ.TèÍæ/t‡>s½ә][1¡1ßùÎw‚Å ½ò¾ R)v7ÈÌä° ´Á*ÐØ‘[ŽT†XÞ£hž3SIokê²e·#:æ>Çwï@ªÝ§ûê}l‘φy áμt€Z+é⑹tLw0ÿ¶,'´¦ÙšGH?°þ·;À:˜[-Ô%Û#©K±@fK'tRÄ†Ú °žÆŽƒH!õh¤üÉ|*Ð$³®t”}ÞyçΤ„q‰Û_¼7òî„Ë“ ñ©î×X„¦¶Ú¤w[ _a•çQ·|¯gã¾üÓ)ó€I·Mýïâ%<ùUçRÇ¢kFC¢cm|hP²Œ!Èu¸¦ÛYoÃH/ÒÌ®¤¤ÄŒ2#i0ÀÉö?ký0´ µ=°>Ç5œëhH ¡ ü‚ .0Û1D‰Ãz¹ÕŮħ†âöUK¤ßhŸ>}2º±¶ÀöRxHWöËSç²r‡oöâûùd¾6XüóA>TÓ@ßå£>ìoÀ×Èn~UÐfhµ€ÌA@ãhjt8±nÉ“|h©ÌÜ­ƒžKXêC(-- ˜œªØ…hÆVÑh·+SãZ‡úTúyΜ9A? v¥Iºûî»Ïî±ÆÅ€ð-ÙåwæÄ3"„ÆX¾m€Ž^?uá“þ6V¦ùëxvnñµ}–Îó^û¯'*¨¥„B›US¶TÄB¾¦Q2ñãÇG$>Ä phBÙ(>ž[¯¡¢‡ŸôHAÎ °æ“ôÑ á އ4$ô¨£/¾øbS!îíú á#~é5´ à.öé8#M­‰·µªxf]=õb£¿g6úQNÛalåÉ/2UùhêAÅ4¦3WÀÁm…²µ°)¡þU²hëè`þ2ð‡‚Ù;,ÃÍðq~¹¬OZgÖrdû3™ÑÈs;ãCy†oœvû…X<óYóéu뀓'±é$¥Yûžéä>´_%½~GG œðœ‚/N•Äo¿Eé“LÂÜvîýüv=¿½‘6TÕd¿¿hnóMoC`Ç?ìôŸ¦€£ß¦ÐðOƒ"MtïÞÂyÔ“$’~ÝW¬Xqd2õë×ϸ)JÙÜ$¿ÄY ‹Åª#kz¤¬‡þH?K ’jë¿ýío&Zâ$~LJÀ|@â†;4§àcÛ3f˜ÇˆË4Ìm€ Ýs©W‘Ç»©ÎË?˜i'‚?38T×Hù…^:µ7—©AÈb°†Þ¹sg[dp‰¶ÅHfðv…` ÂG,ÂCÓÀý/΢Í~/ÔáP¸²4¾ík¬ÿ‡ ÒÏpK ?ùò…Ë£ñ‘Ž¡>2¬9D;Á Ëa¡Â¶5­S¯m€ñÝrh@qΨ=×@3ûOˆ‘âsÑ„.¹4 H×úB(]©A ÜìßZ{¤5H¤ƒ! œfÍéZ˜‚-Œ´v³–HÛ¥ xÔ<gÔÉò_(À’|åK°ëWyíuË'ZÚöø\°—hc(ž’»ynºé&ƒÝòL°±b û™; D°>“ô©ú¶îß\AK¶Uõih`Ëo"¦ÿÍÍiðÓøXR°5=HU›µE íD3‘–ðÜêò÷ÖmP‰æMKáÉÌǺ tÀ³Ò¢×ñ#`Å{þÏ=÷ܨ…`ß,K7Q jN`¥!Ö<í-ÝâÅ‹ƒgq„âa½¿âŠ+‚g3à÷*,àx¨|ôÑGé²Ë.3[y±Œ&ÏÒ-'ž90Vn÷•ÔÔ³|ƒé?oÕkë:öú³æÿ¸n¨²ì½*Ì™ÞéBëTR‰À!‡bªÃß:Xi°n´Æ[¯q¶øQGeŠz£W?ýôÓˆép8 –z÷î6œdhuV6±>ˆ ¼~ðƒ¼ÿE 'žx¢ÙûߥK—°Æ£ÑÊèСƒq2õÍo~3ìÑhe´§çð‡ñøãÓ÷¿ÿ}èí~«ò†·Û—_~¹í‰•X¹çž{Ìö\äs°³ãÞ{ïM l¶Àä®ù´®lߪã5ÂÜ&ký¶QÇ‚|äh@GTÉ’1þk[©š[ÈD0 €ÚÁn@A<Îp´k¾˜iXgò¸—µ`”.Xó„¦=Â|ÄÊE¼Ð*uÀu+v2¨ŠbÛ鹿µuö/}`W,ÒÚëY ±â#¿¤¿ë®»Œ{k<Îh£Ço ;iðÁŽVŸÒ¿øÆy “&M2ýl=ÂX~ã±ÒÜšt¶ŸìÚZ—Óu¼ðÁ³öà×fg=¬ùï漣|h`X¸_Âm ášGÈT ö“™µÌBÛUn$Lžü ª—òB˱»_¾|¹‰¶`¬ŸÕÐ:ÈYËÄz&´’ƒÀ·¾õ­´œ»€]&šÀ‘¿·Ür ]yå•1AãÞ©S§¿-|D€ÆoJ„ëéÓ§Ó—_~I³fÍ õò?  FØÚ¯þðÝut(¹s›öé'‚W³ O¾‡z 0!ТL@@˜¨Ìþ#ÑÉ ™5ß¾}û‚Ûù¤|ëóÐë;v8²2{I‡2¤œuëÖ™h°$õ{ܸqæÖ®,k:½ŽÁÓºõ/¾4u"¸æškè£>Š©ÈPÆ{éOkˆ“ß®{ôèa~›7Þx£5YR¯mùðÖÚ†ƒ÷5øcæÏ¤·În&ûub{‚ªD¤nl°š;“À]Yÿ(¬íõ»5.ܵÌè…qÛ¥“º±÷_ÔŒgM8‰·”Iœ5-®í3 M£÷±#€>kÊ”)tôÑGÇžYS&ôvÛœwÞyÁ]7‘vßHÿ 1¸Fo}&qHgý}Y#ý¦¥ü¶|Û \i•ÛåÚ×–‚íòòØ¢AÈJ¬?pÙ?éǽvíÚ˜q’}¸ ¨[êßÖ(\>«Bò‡¦ÅrŽÖ€³†XOÖ~ð[Áçý÷ß§yóæ‚¢]/Õò{ÄvOlåÄ{€8ë¸o™±¤·bÉÙŠ4<·hΕÀ­…­ C³(éD tû~ä¡?td`ˆDï'Ÿ|Bï¾û®IZNh>«`8¦.yàˆ»¬!”ÖN:‘h4¬éb½ŽFCh9±¦5Ê'm(=­¹¥>œ¶8mÚ4S|´>m ÑòH¡´†ÞG+'Öç(7YeG¢!–:1Û<-Z"•éYèoHÒb§Á_þòs+õÅBŸäoÍ·­Ðš‚bÉÓÄö›…‘bɨi G@~Șý‹ ‰“oke¾Ì­Ïì®…±Û•%q0‹A·.i-ÇËR„¤GYRž¤ wäp,ÂK,i¤|c` ­ßú×­)3´ ¹—ºä[âÃ}ÇR· îveHÿøÇ?>޵î`†\È ·5u#Okó%€ô˜êú"õ…Ђ4ÖtóçÏ'ê©SúNò…û¶–…4дüñôÐCµÈ"¿¹‘ ¾I©`Úµ8E ã(..6GüÖÕñKI¢d@h¼<ý–ãCã­÷Ñ– ¬iåZ–ÀØBi¥8>¡šä-((˰ßñž(ˆ2a¤€½ìùùÑ·/K{@C^^^¤"©°Ï.!IJ_Z“HN¢¾ûÝïFJ’ôgðqÚ·À?ZU4ðzm7¥“Æ[f,éã}ÿ á½Yµj•ÙÖ‡ÝÂøcþÐëo ~ DpÍúÌD$ùOdÄ“\¹¯d H1p`Û^ÿþý3üðûôécöÒc-½oß¾tä‘GÒ®]»‚Ç#Oè l‡ ±ÿƒ^}=¹m (ƒò+¯¼b‰íRf9 À΀իW›-Š8 Ï}>ŸÔd ”’þóŸSÏž=ƒ§J<ÚƒÁl±Š'À€ñ{ßûžB…(”ƒ½ººÚ`k¹Ðr`mƒ;ÚÀô°{"–ððÑ©¨¨8@`B~/pÄ)àŒ†K.¹ÄÌ Ñw© èôO8ßðÿío› d…¾gÈü/l¬´ãÝ –h¯]àýµnKT®ü^ ñ­Pá‡í! úŽxâ òŽ W]u•ñpá…Òܹs£Åôÿ²eËèÿøGÐÛ¦ô3Ê—ëxèjmZ—€e-àíÕÓo[ã¹{þ:_ê×½mx YÕÏæ ¨Ða%nz÷,H–¬xÀÉ€m(ÖJ¯^+ÉBàꫯ¦›o¾9YÅP.8<¹aæ-ƒÍ‰R­I˜åïÙ³'…µjUŠ@f"¿ø@˜/))1‚z4!<Ëò^¢[ÁüœÙçYˆšKùªˆ%M£$ ‘öEǬV¶‰J1‚@¬3ß$Á£Å*ŽGÀú†‹íhn¶Ñ kžt6PmÒ‰¾Öõãd`À7žYŸ§,+}é¦EëWœ‚@èïT~áôI¼|;á·­€Ð^Ò{E ÅÈ@ ߨÞzbrÂVçDšÂ«4!îw"ñò&òZT«€pè" (Š€"¨ý¬­TE@PZ  @ 8ôFPE@ÈTÈŽ~ÖV*Š€" (-P z£(Š€" d*dG?k+E@P¨Ð½QE@P²²£Ÿµ•Š€" (Š@ Th‡Þ(Š€" (Ù€ ÙÑÏÚJE@PE *´€CoE@Pì@@€ìègm¥" (Š€"ÐZÀ¡7Š€" (Š@v  @vô³¶RPE@h€ -àÐE@PE ;P ;úY[©(Š€" ´@@€pè" (Š€"¨ý¬­TE@PZ  @ 8ôFPE@ÈTÈŽ~ÖV*Š€" (-P z£(Š€" d.@ fâUˆ*M˜¸\®ll¶¶YP2 aüü³ @†u²’›Z*++S[¡Ö¦(Š@`þŸkvo¬ 5"”––R—.]hРAÙØ|ms;ASÂ<žîÕÖûiUµ‡]~J„n+@~¢œ\¼oË–"¯»Ìס[®ËßÐNPËÈfôfª¿ˆ•rbEJÓeТ566Òå—_n>YÕxml»Eà½4á%¼<ô{ÐLUDtjÅêÜÿºæþ:W.y‹;QÀÏ‚†”"КåJRÚEZY&!àvë Y&õ—ÒŸ¹~ §Ë ;@# îUáòθ–ªÿz¹öì$êØÈß M‘0TH”ZP¶# ?&?ÏdTÈö·!óÛù¸›ÕõþÆz¢þð@c"&é\—J ;ó(ÿˆq”ë¹êÿr9¹*ÊUÈ€×F§8ÐIJbz€ Ì?=Øk­É@ÀÍB@¦ý¡¤\äâbý;È5~åüè ø|D¡f­O ƒR REÀéÀ0 ÅüØVOnª”^¤ ‡T TE À¾‚@“p˜ ™ð¨ ½¤4*Š€"1¨)]•µ¶yÅá0)SúSéTEÀ¨à€NˆJBV Êü£¾š@P6" B@Lzö¬õëîõ_¯§÷ß}Ÿ xWL"üb%½¿´‚D#Àš ·ÇMU•UÔ©sg:ù”‰‰®AËS²–B@Ã}ºEÐI/CÖ è„o¬ ‹~x•@.uúâ¤÷2¥´`»ßgkÖÐM·üN€”"¯•e*8µŸ³Zè\TL¥PßþýY §¾¤É¤ËÍû”Ë˶ө§O¢K.½4™UiÙŠ@# B€;?«Ó!ÌøÁüUpâë™|šÜn•ï,§ .¾€Ý£'ÁIJò› 5(‚€ N먬4tZ'(=i@€×þ!ôíÚµ‹ DÓfÌHZ¥"m´Ôc`zû_€ô⯵§ Ø|x<Ú±}M~¶9ò7M¤hµŠ@–! B€S:\§ô„Ò‘R0û¯Ø»—z•”ÐìY³MÝ8øGƒ" ¤Rr´:Tˆ†>o—xØøoÆ 4qÒiÔ«OoÓFµi—]­r,*¤»kTHwhý)GŒ¾zß>Vûw¥YsfëW …^()B@…€m[ ¶°hd{E^ áøgÓæÍ4qâD9bd{mª¶KÈTHWG©.äµÞ´ uµuTС€æ|óCƒž ‘–®ÐJ *XÀHÙ¥ )ƒZ+J7Pñ{Xؼqqä4þ°ÃÒM’Ö¯(ATB‘¢ R´Vã êêêpb9Í7ÏË]ûwFß(Šá×¹­žÜ‡£œ ï õÜwB€äâ«¥;·ËMÛ·o§ÃŽ˜@'žt’¡L™¿ƒ:HIQ *¤êEP UHk=éE€zhôù¨¶¦†æÍ›¤E€ z¡8RÑ*¤e­#­€É{yßÿ¶íe4zÌ¡tæ™g¥•­\PbA@…€XPjKÚ‚žæu>¼í/ð›OEEMŸÛ´ï_-ÿßuJ¡" 6É}TH.¾ZzºàÙ?4e|äïðƒ‡ÓŒ³§§›"­_PâB@5qÁGbâK“f&^·—vò©g=•rssYÈ̆(ÕŠ@Ö" B@2º^€d ªe:7¹hï®Ý4pPipë4jüç˜.RBP! F bN¦@ÌPiÂLDÀÅn·nÝJgq&uîÔ)› 4+Š@‚P$àB€€¨E8ÞùG•lø×½O Íš;Ç™D*UŠ€"'*Ä XØä*„…Fd6¼õÏã¥-<ûŸ8iõïß?³›£Ô+Š€,`´úR€VC§Ž@uu5uìØ‘æÍišý«ñŸÓ{LéSâA@…€xвK«€*—ñäòÚÿÆèøO¤#Fd|{´Š€"`‡€ v¨Ä§@¬HiºŒB ¾¶žòòói¶eí_-ÿ3ª •XE FTˆ¨’©p$‘éx<Ú´y{ÜqtÔ‘Gfzs”~E@ˆŠ€ Q!²I € (•™ÀêŸwøScc#ùùfvóÚf¶F©VøP! >¼ˆTˆ1Mï\ØÁ›×þ·lÞLƧO>ɹ´*eŠ€"TˆTâAKÓ:hü<û¯®ÚG3çÌ6´úý8H]ÿ:ºã”8E ¡¨+œ*ÄŠ”¦s<.—›¶••ј±|äïÔ©†^·›³f@ƒ" d*ÄÒÛ*Ä‚’¦q<f–ïvQÅÞ½4cÖLC¯ÎüßmJ "DTˆ® ÑÒç,ÿË·ï a£3›ùgD×)‘Š@P! ¸*DBGŸe `öå;vÐÔ©ÓÌþÿŒ!\ U$# B@8€U‡ŒÆg `þ»øÈßÒÒRšcqü“1 PBE ɨ`° v¨h\Æ €u~ÛCeÛ¶Ñä3N§Î]»f íJ¨" ¤BÑV ½Ï(°ö_UUI%={Ьæ­jü—Q]¨Ä*)D@…+Ø^ëM¶]CuìaÇ1ºUlÏcǼ‹ÿðÏ$#öÏ»ÙòË–-4gÎ\0pàþ†è•" (¶´\åD»Ã‘ˆmŽö™ÕÀÞ}Uôõú Ìðx¯83’l,¦ïoôS§®]¨S§NÔØàc‰Àe§á®z_5ÑœoÌ ’‡x Š€" „G@…`“Õ@¯Þ½éÔÓ'QÏ=ÔYLó/žó:wd£º´ví:*È/à'Îô¤õÿVžýO>ý 5jTs ôKPXP! k¬Ÿpüñtâ 'Äò¦d]šÿwõ5´rÅJêÛ¯ŸŽœ¶®ŽY~]]Y¾QËÿ¬{=µÁŠ@‚Èn! +Á<ä“ ·¨]óÁ»ïÑž}Žzö*1K#Ncþv8ôçèc£#Ž>Êàí…g!€wÇúIuRG²Ê×rÛ3-…€€—=aÀ»‹Ú{ÈZ @{ïØ¶´ï_>Juµµ”_P@ø18,`…ß×Ð@føsçÍ5Ôá`œ…@${ŒeÛiëÖ­´gïÚµsíe7εüÞÕÖð§®–<^/RNnð»Ø¹sgêØ±ufÛ”’’žÔ½gÏàÒ]¤zœ…ˆRãLZ Ùb¨€3߯”S…ÑÕ«WÓk¯½F½ûô¡ÆFç1ƒµÿÍ<û{Øatò) V™¼“C°Oy§'¨ÂXè/ßQNkÖ¬¡ÕkVÓ:¶-ÙÎŒž÷ìÙKuõuT_WOÐà4õ#ìN›„¹¦™½ŸŸ('ÇËŸ\ÊËËcA #uê܉z÷îÅ»?JiÈС4|øÁT:h ‚ ê×ì+&û„²ï-? Å2ðâÁ’ù yPÞC%l éÄÙ?h3¨Ú·fY¼þe ÐÊ(ß~û>¹pM2Å^Ö>@3!41ç&Q;ü?úx­|c}øîû´vÝ:ÚɆ¥Øµ‘Û<£‡†©°¸ˆŠÝÙ™NmlÖà°Š‡é‚;OP¾±C¥‘·jUUïãòvÑ'Ÿ~J õävy¨+ï\éÂëð#h‘GÐá&P6ðµkXãõZhB »„ô½7 0lݼ…^XþõéÛ‡¬Rwbp³ß†²-Ûhì˜CiÚ´iN$1,M`’˜í>xÿôÀ}÷SyyM`¾@IDAT9}}íÕôãÿ$#g­hO(ãÿèƒéå—^¢7W®ä]$k©†5ÌØ;uêL½JJŒöì‡Ù¦½%ÍÌ 5ǘM'Ák š¨Ëãõþ¡Ìââb³EKBx_kØ(ô«¯ÖÓªU«háüùlÃÒ›FŽA'žt"pòIÔ£»îö±À©—aà·o •‡£œ ï ö¼ @Ø— {È ¾tév©[FÃX•Š5uÇøyÚßDOwóšñÏf]fî17pR°ÎX­v /½ø"ÝrËïéËÏ×ÒAƒS¿¾}é¶[nåuðmôÛßþÖ4AòJŸ8©] Å޾]<úɧè¥åËé£?¢ššj³^ß³k7Êá¹?¿SÐt mMszyÿ·ÐÁi*ÈÏçm«ùÔ“í`²µ ¯ÿ÷5Zþ ԋ…Ú£Ž<Š¦ÏœAGqD‹ …&§bÞ‚X½IÙ!¨¢×ÉéÕÔTí£ÿ<óuíÑÍ ÒŽ¢ƒ¢‹/¸Î;÷;ìòM0` :è ÊeUûcp6óÇ{ÒÁÞEÀ^$X€éM£Gޤ_Mß;ÿ<ºð ùlõÁ÷J°h™[ï²–B@{q¤€ì|›[´zᢅÆéÛÃ#¥Y³ 1[¤Ní Ø¶„UVVð™ =iîœý‡þ¤–’k³Î ±½íî;ï¤=ú/ÃqFŒÉB «ûë™ñ‡r KQ<¬˜;?3%7 £Xxà¿P·’tá´Xs·dKÚ%z³d„2^n¹çÎ?мn&ÐACÈëÍ¡e‹¨“)þÈÛ a ýô§ž5=éµå/Ó{o¬¤‹/û)ÇÚd@g¦”Ä–B@{Ø €”¾@Ψ 3™µÁéÏ{o¿K%½z‘y§ è8š8‡éfÞ¢xâ)©tPiZA´b'„,fû‰iS¦ÒüÖ-”ñìé0;ŽÄü%?¾!äàì†÷ÈÌFŽ·Þô;²ŒYË–ûD~ƒV|L`a¥Ñ×h¶)Nçm–‹/2»†±ý‚‹]£Â–êÿöÐêúzn;:xÔêØ¥3]wíµFÛ±wÄHß‹Üëw¶"ÐRÈtM€ YúËìfÁ‚|r€¼Ìx h掀Œ†ÿW³Ó—¼ü<šÝìø'ȬÒ@$$ÁîãVÑw¿}.ýòò+ #YÝoÔâ¬î‹Œ[˜âL`°ØÀq «Ù¯þå•ôþ»ï&½• Sh}sÅ4{ú úÝM7S>Ÿ9œUä^fŽ˜õÜ9m:ñOh68&:lÜ8z÷­·é¬3ϤçŸÞT)}ž¬úµÜLB ý*dÒ{— Ze°ÿð£é¯ÿp,²#g8LÌì3Mœ8‘Æð–9'ø¬ÿõ 7Ð7æÎ£OÞû€ÆŒE={ö`âk3sD߀uîÒ… ‹ŠèÒKJ[Y+ué·Da`eä•••tíuÿGçò:ÿ¦MéPÞ*w»æÌ…DUèÔr ­5ü  :l˜q6t/ÃÜ}Ï=òX¿fÚ‡ @¿Ð‹ÿ½êyíº[r[™“ x/›ÍýÆ9†,ЙhF®½¨+—ÇŒ¦žq&=ökòþC‘W’ÙE­…„+2¦x´¯ŽÝÛÂZ}ïîÝô3ö':¡ôÄT %‘µM‚ã+¯¼b¶Â=ΈC‡Dý¤ÖD8R(´´%i—Üï>¶É€áá ¥Ûw ]qÙåA<²—¤ž©g¾ @¦¾{m¤ûk¶|†ËÖÞ¼‡Û×Ì\ÚXd³cö#`¿îGy¤)_˜VÂ+³)uI}¼ÿ3o]}富Ǚ‘ìo>7'Ç`—ŒU¬³CpróîÛïÐ/¯øy°ýV&nCvÌQ®°Þý½óϧêª*ÞŠ8šü¼fÖs!í4!0†”ÇžÇËöKéÜo›ªXS¢Ëí´Ó[Õ¬ÌThU§gf&ëì–ÿ8Œ¦˜Õ¼<­tTƒÀtA`'sYÕž®P^¾ƒ®¹újúÖ¼shí§kh 3É.ݺælÅ3YôÁ&`8û³_¼x1=ü×M5VÁ$Öz…VÉûþûïÓ̳ϦÇy×Âð¡›CtêYàÐÙí~D¡ÑñaY‡¿±üôÖoÒ÷¿ÃŸo AØ@æ *ìïÅv%L§ý-îy³ö=Ñ Ó]'Aþ)kx¸ýݺe æ9N9õ””¾XØÛYÙ?ÊjþéSØž½ô TJJKù$:MËê~l•c“PfåCxgÁm·ÞfœñÄ['úÝÊØyøoF ÙVVF#yÛ!ذ%ÂA¼å·çô8| §OB8ÍBN8„á'4ýd¦ Àþl÷Wà°mí«/¿¢îݺñäŸwB;H€ípÔüVÖ°ü¹)°üÆ'øÀÙÍì3éúë®3Æw#G°%}ºÉž †‹2ñÁš.>[·l¥«~þ úÞw¿K_õbg>]º²º¿Ù…o¼íHdúv(Ô¿ÿ*ßQN¿ºêª`Ñ‘p±>ûü³ÏiÖŒôì³ÏÑHnWaQ¡YƤ‘Àï„e¸ÅïåJ>îø2v,Áªa‘8ýÎF2KP ËÞQœˆö釫Œ…3¶;9-ðχÜ<ÐîÞ¹›ÎžÙÄüAc¢ ¯„9bvŒë‡ø+[÷ŸAËŸƒQ¿ýe?fߢ07iøƒúkëëh(/¼ºüEºíw¿7Tý¡$¡MBó³Ï¢Þ½z³¡Ãfÿ˜Z5ÏZ·³åýTVýFn\ž–ó:ú¼Ùsèûß=Êx7<Þò‰} |\¬àՆⓒLFˆÀ¥{îf ßöíÛM]ÒÏAÚË_]yÝü›ßÐ0vjÓ­{7³”‘²­P–œ¡AéÀý€£¯½úZÿÕú`?dÚÞp8_P \ßµ£x™ .]¼„rx†íf«oð['æmFÍ¿—w(ôÐΞ•¼Ù?Ú]Ì̾oŸ>†át /¬ú™i²ZÀI°´ E(ƒ1bII‰Ù%惀>SÂ÷¾êj:›ÿë_tè!£© /_™ $ÛxïI€;'<ödgAµl\yãõ×›BPkc5š½= àl!@€öðŽEhƒ Fo¿óýïÿ£¾ýúqj~)¦ðÀéfKû­|äï§ŸÉ3«’­jû£¼‚|ºãî?Ð=÷ý™5e´‰å°c'‡ ÐÆð0løpZþ tÿý÷²aé¿«|'}cÖl>¶÷ sè¡F hÄVO'íõt2È1Ò&œ5 åÛ^eoŠŠŸ†ËÐdÙ‚€s…Úù;(Æs {œjy[]Nn.ù¡jÇŒ×)™¿‹÷ZWðì¿k÷î4«yö/ÂK2È”²§MFó. ¼Ü9°sçÎÔ•A‚öÂa{øðCêÉâþæmZ[f²òñkO|®úìyó‚U€~iC02MXÀn€¿°ßý!ìNwíºu”›“  Miµ™€Œm»³?‹o¼aŽ`Κ•Æt#!@€t÷{‚êÆ)³ÿe‹–P^^.¹-ªëU•b jßQ¶FŽIS¦N – ú¥ ÁÈ4\€Y(,*¢»ÿ|Ù¦¸uóV^çÍMEZe¦ €ßbGÖ¼mâm™ÿcÿØH½ @l=“©dæüæ+hå›+¨Oï>|¤­COµc»k÷.š9s&ÁPhw*Ð¥Kév¶ ¨¨¬ ÊŠ ³ÕNõNí­ôÓåñxùŸ6)Áéï¸Ð©ßéD µB€ éìëÖm±Âñ<þååå%°†Ä…Mk»v–Ó vc;}vrýIÕ2psÜqôÓ+.£¯7|M.žåé'è¶Ï2¼å¶#{h\µjUñaAòµÏk«‡@ê„Ã×ki.©i>ºúãOXíø_sè±üO3UT߬ZßQ¶ƒUÿÓ¨¨˜½:]²º¦†>þä… YýF´¢ñÉThE·85Ë&fH/¾°œz÷émÿ8‘Nãø‡ü|æf¿´iŒD„ªnݻѕ×^C»öî!{1ôðN ñ!AP>’ÓºŒ%qûÍãW…Š iõ*v+­AhÉtäjU§83Ó’ iûöT̪G'Îþ1âWïÛG];ub·¿û×þ1ðgÚìèÔI§±ã úê‹/y§…Û öÎ|+œC•að͇,øøgŸÏo3‚#(;„jdWºM[/yF¾V¤ñûÿ‚Ì)—uµ|:£E U$Oð¶ŠÍä0ÍàÁ²Š÷Ó?ûì³Æí¯#™?#æeËè/6®£3fÒ°a;Ã8(1;cŽ-‚?»ürzsÅ›lи“:wéâX­KÍKxRîÀà+*öRÕ¾*öKá7;?rXEîõzY.„½F|æ$CHS9|¨ìCŠù‡Q8Ç©ïu8Ð@oA~>•m/£¯¿^OÃÎÌw>\û4>•´\åD»ÿ ZMˆ ­†Î±þ Uê²¥Ké‹u_ÐÈQ#Í@ ¡ÀIÔÔòz(fD³Ïi:ò×Ìö˜‘fRß ._¿÷£Òo®ÿµ9/“Ú‘LZÑ×ð?T;ËËiïž½”Ë ½ô Át̰ãiÈ!4 c%Ÿ—Ÿgœ-Õ×ÕSm}íÞµ›6lÜ@_ñ»¼vÍçô%kXr¸¬>l3‚wÇÇΙ`a€wßé;qv°VnûPÀé½åtú/¨àô>@f¢:_ºh1uáã`qªžÓT¡˜émܰ‘&ž2‘ÆgH´2S§Ñ+=çž{.=Ã._×®]Kýô7jìXó¶ÇtƧ3iX¿×ÖÔÒPžõÎæsŽ?îx3v ±oMÝ»g½÷î{ôüž£åÏ/§>2º´t ;bÊaÿœ÷®‡ö)N—Äû¿}ûöÐGz¯´B@+N{ͬéW+àjÏY„ù?Á³ÿOØÒ¸¤W xðÅ ã¤àfE}¯óòŒPŽü•S÷œDg¼´ˆJú»çŸGûª«›4/ñÒÒCæÄ»ˆ“¶nÙBŸ}þk¢FÑø-^¶„.㥒ØЂù£ÿ?뵎N;ÓÉ,0ÞüûßÓ㋘ƒ™>ÿüs³ä’“›c’JÖ|Žº6üoë¶mŽ"K‰ÉdZ ^:#,ðRY¼ÁYœ"^ê5½A`ñ‚ETØ¡È Â˜9mP„:Œáð#'üm³yýN?óL:æè£iÛ–m-N ”çíõ»I °?„‚‘Ûj>:¹7/‹ÜóÇ?Ñ#þ“N;}RPCŠú_Xëuh:¹Ç²ÁwÞI÷Üs9hgóÆÍF eH:§}c%N£v—ïtiJOF#"4¶NP £_¢W^}…Þ{ÿ=xKÌQ¤NlÜ×ÕÕÑ9çœãDòZM“•ùÌûÆ9¦Ðr8MkucȈÑ6°ÛVÞÚy)Ïô=±”N›<É䉯bòYgÒc ç“'×þö7o—‰®#†fÇœÚ,YìãÝ/Ä"`.¸ƒ­THl¤¼´E ±Eº‡¼ldåij»í¬þwØ8š|úé)Ç'™ZÜ$nÛ!£1Œëàí=@Ýöʳþ>ýúÑcÿ~Œ.¾äb¶îo2+‚ЇçV!)Q˜ å“ÿúàƒÔÈkžÛÙ´85@€%ëØÈQƒ"xö Þݾ_ˆ±"bʉÉ` õæëÿ3Ž| f7€Sè .E0ØÃÛ¿fÎcHkkÿ‚1˜›•ÁM›>ªØ #¬àÛkSÏaƒÎ}ìßþ“?¦i³fÒÂ¥KhÔèÑ-š !(™Ë<#Fޤ_ÿæF*++cÃK_‹~hAˆnà'¢¦¶Ú”( íf!€«½Ðı-P€ {#0Kx|þ¿©†·Öåçå;ÎðLL l[9ŠÎ>ûl!»Ý~Ÿ~údò7‰/•­€€#136ÛÃXxIæ¬0•m³« Û0=á*/ßa<ÙÙ¥Éä¸<Þ‡åœÍ¼Þ÷Ÿî¡ó¿ÿ=ÓœpVüÉl«ýäêÚ­+UðùòÛHf½Z¶"à\XØ^Gîá‡ÅL¢ 1C嬄‹-¢ všRXThÖZe@t •ŒáÔeÈС4ÕÄíy€–¥ l[+È/`×¶ íFÀ»•ËÛî°Þ^YYE>üÁ;$@¨K—`7pà@šÊæ¶-[™9÷+È„<ýV²æèÊØÝN«¯FÙŽô »ýíÅ[®„ñ8­˜ñÃ2ü¬³Î¢Îìû?[Â1ÇC³›ã],üÚ1Ï)Œû¶­Ûh«þ|øA:þøãMw¦[è”wúô³Ùsg>g¢š…ÌlyÓ´Š@ÛP í¦¤ë`ûÄ’%´…OþëªOk|J‰¡ä‚#{õéÃêÿö¿öH¬3àñìï`7Ÿè dþÏ `ü»Ù®áî{ÿLŽ<Ò¼xïÒ©ÑAÝ‚9\ìŽ7–vó™ é¤)†Ÿ†&Q…@æPŽ‚3yÄÈÀVÇÇÏ>½ì êÖ¥+5Àú9yU¶ªdÐébUì6vü3ùŒÓiÀ€¦' *­j` ™;|<°a&¬Ó39€Ábÿúf6oºù&:ù䓃͑÷1‘æ‹cŽ?Ži­&^ŒÐU€4÷…VŸ9¨!}%êÎ'žx‚Ö°;Ôž=zÀå«™%` v_U5ua•ììÙ³ ºB{†@Ýf2ÇOàÓï2×0 n¥qÜñ¿ø%MŸ1#Ø—NæÆŒÃï\ª­«Ñe€6¿ÁZ@¶  @†ô´¨;—±ã‘ÊúÏ&õ? N ^¦ ~ÏO˜8‘>Üf´T’‰YQa‘9§’¾Í´`?¿Sp®óÉêÕ4kÞ<ºàâ M3Díï´Ù?ˆÃÙø  Êª}¬s–Pœiï€Ò›=¨A}ýüþC}ø!õ*éeÖqâT§ŽO€ËÉñÒ¬¹³ƒÈ:‘a‰KÒر‡R}Cæy“Ƕ8†wüøÃè·¬úGp2ó}0:--DÕÕ,d‘°‰¶kPZ‹€ ­E. ùæ/X`ÎU÷²Ó'Íq0à‚ù»‰l=öØcéðÃÆ§!çTy0¦u(,¤Þ˜I}¸58 ;ÐíwÜNÖè` '˜ê^vidèN\¢È¤w@iÍTpp_c ƒOu„·Þ\Iï¼ùùÛ<ûwÝX†` {ß]ìöt.Œ“ía/ôà¾jÚšæ$q-|Ï€É7°‘évv¯{Íu×RÿMbY~ ŸÓOúñ™^wŽc·Æ:%¥BØ€ û±pÜd¨6æÏŸO~žÝä°zÖq3¦máÙÿ„#Ž Ø^¶‡N;R¯Þ½Ø|MF@ýþx×Ö~¾–¾õ­o±ÿ†)A·•È=zR;,jd…E@ˆŽ€ Ñ1J[ aô8gýõ×^£>}û²ФHQ6ü¦ËO5|ä¯Xþƒv¡ß&KVDõçi=Ÿפ>w–±f‹à¾Êå#k7nÜH8dçšÿ»Ö<Δþ:»tíBM^[´OoEÀlaqF¤¬».xüß´wÏÊïÐ!hŒå ›<¯æð̱Œ÷ý2f4Þì"´ ýN¡5Õt <˜||J£ë#ìЉ"h‚Š¿n_ [ÐWÑåWþ‚gѹªLë¿¢N© ¸ý/4fý»—êw]ëËLTpx¿mÞ²™^n>ôlj³ˆ`8ŒeÖœ¦#iRɳj>Jzö$7 G>hm %µæÖîõxéËu_²êÿ›tB³›ßÖ—–úœ"¨ñ¹¹|`‘—Ê4(Š@tTˆŽQZS,]¼”}êo¡N<»UgZ ©ÜÃkÿeÛ·ÓÈ1‡ÐÌfg1!I²ög5óN^päüŸÚ›-lõ?hØúùÏ‘Ñ}Õ¡ /exÍ2„ 2ºQJ¼"DTH"¸­-Z<çUUVÒž~šz–ô$?,í0¯-Û¹ƒÎšq¶94Æ$¦”$+ãéÊÇuàeÞš–R*b« ¶>V—㔿]ruh>Y2¶ÜÎI%‚±‹—2ŒžÅ‰`;.¥D" @ ç\¸]Mݲ„ýY·nuíÜÅ‘³ ¸»w¡Ó›\ÅÊ`ì4SK‰u  S§ÎTT Û0VÎ |Ê[ÌoܸÁøøŸ~ötg‘× jà½^2á @ƒ" DGÀi£RtŠÛy Ã@›‹¡þt™y8±b¦•ƒ­|äï$>ô§KçΦgTíºÿ-îXlNlÄNN è¿Új><‡™æE—\$/û¯Íbh¡»P‚}ªŠ@8T‡LšãŸyò)ZóÉ'¬þ/ :J3I-ªÇšö^>&¶WïÞ4kö~·¿-eáu ÍÏÏg£4xtØއ=þmذ‘N4‰Æ~x»é)lG•à4¡YèÒoEÀ)¨à”žh¦Cf3‹/¦vÇ 5»Ó–XÁ@¶láÙ?3ýû;DÇГÏÇ71"™š¦Ÿ4¼c8©°#«Ëøƒ¤Ÿ RÀMÓ (1"à<î#áí-˜„ÌX^{õUz÷wVäNÜúçæQ¶Š÷Œwbµÿœ¹ºõ/Ò»˜ŸŸo\Ó²«¤HÉRú ?Þï0Ë,^ágo„.¶MØNÆ £iÍ{ÇhŒF(Š€" d*¤±»dý|þ‚ùTÄnYÁh6³–mc;Øs˜ïÿwiìB­ZPŒE@€4wÝKË—Óª÷>0[ÿÙÈÎi'¬ïÞµ‹”äCfòTpZ/)=Š€" Ä€ ñc–Ћ,¤íê7@üMñ«¢Õ)Š€"TTH*¼.ªó5kÖЫ/¿B}ûö%¯ýKü9Òzª*+WÂ9sÕíozzAkUE y¨úX:òÈ#ÛÔVͬ(Š€"àLTHq¿T×Ôгϣ®¼§^âR@BLU`í{ü·lÞL‡>žNšxrLù4‘" (Š@æ! @ ú kç²~¾dÉêØ©“Y÷—¸S Þ««öѼfË'z'Œ©1šHPE "*D„'±Ÿ~êiZõÑGÔ«woò7úÉï°caù¿½þ:~5uŠi¼zýKì; ¥)Š€"àTHAOÈLÿ‰ÅK(/7\†ÿ;Éøêbd÷žÝ4uúŒ *B{0B/E@PÚ*¤¨_{í5ZùÖJvüÓ‡ü>>ôÇpÜUC5˜é—ï,§a ¥Y³fÆC“(Š€" d2*$±÷¬nÎ_@l ˜“““Ä[Q4[þc–ëÿ²íe4mæt㜨%iE@P B@€$v–óºÿ¯¿N}z÷1B@«Œ¿hfþذg÷nX:ˆ¦Ïlšý;m‡Bü ÓŠ€" (‘P :mxŠÃt.ZDûªª¨C‡Ç9þ}^>Šxû¶mtúäÉÔ£{wDw-˜ý£(Š€"ÐîP É]ºiÃFzyù‹Ô›ýå?9Ëë¯!§²²‚º0ãŸÓìø'ÉhñŠ€" (@@€$u‚XÏ/Z°€v”m§âމÝ%©¶Ö‹­[ùП“N™ÈK¥­/Hs*Š€" d*$±»vïÙCO?ó »ý-aÕ?ÏþÌ?k#jkk©CaÍ›×t䯃HTRE@P’ˆ€ ·…Û_Þ÷¿~ýzêÔ¥3;ýq–«/úóõÆtÜÉ'ÐèÑ£Œ„§(Š€"àdTHpï@õO€ê<ùÄÔ­[W®ÁYªÌþAQ}C;&Ê¥sæ}à –ÿ ~´8E@PŒ€ îa¢O?õ­^½†zö(qœË_4™ÅÚ´qM˜0ü=  v †D‹SE@p *$¸SàQaáüùTÀÛþ\DÌŸ¥öIÀGþ~óœ# Å)Š€" ddO™[d_^¾œÞyûmêÕ«Ÿ®ç¬µPîá³¶oÝF‡O§žrjäÆèSE@Pv‰€ IèÖ… “Ç›ã8·¿¢â‡AbEõ>š=wnZ¯E*Š€" d*$¸—ÞyëmZ¹bõíׇ|>_‚KocqlùçaËÿmìõoØ!#iÊ´©m,P³+Š€" d**$¸ç–.^L55Õ”——ï¨ã~÷7“ýþ³‚Y3šŽüuÚöÄýtê•" (Š@2P èŠåÿë¾ —^z‰ú°ÛßF>ò—wÛ9*¸y{byùNvðpšÑ|è, 8ŠP%FPE 騈…‰.f·¿;wî¤ââŽ\ªÃ¸?“ãæÏÎòtæ´)TXXhZ.´'-BPE ƒP AU^^N/ò¡?}úðÚ#¯ýólÛIÁåvÑÞŠ½Ô¯š§ÆNê¥EP´  @‚`_ºh1­ÿê+êܹ3«þ¸õÏC›ùПS'ÆÞ »%¨ÕZŒ" (Š@¦" @z®¶®Ž–.YJÝ™±úÍÂ?»vÔü•••Ôµ{7š={NZ¬E(Š€" d:*$ —-[FŸ}þ•ð©N´ªÇ‘¿[xöÚ¤É4dèA¦ÅNPÐZ„" (Š@œ¨'`’ÜÊ@ŸX²„ºuùÿí{”\Å}ç·ßóÔH#F^BF ¶$›§m8 ìø6ØÄ'qbœílv'»'ÉþáulìØa}¯9œÍ®ÿÙã=`z Â2Bâi ‹FHBh¤Ñè53=Ó}ûÞýýîLË#Ñ’zÔw4}ç~ Zýº]·êS5UßúUÕ¯¦ˆ[g'þYZmôŸïë“Ö–¹íö¡Ñ¿¥Åå’ä€@< j,÷'žxB6m|E::¦IIçþëií¿¥ÅÎ&ØýÞ{zàÏGü50RÀÔˆ€ŸC€@ N³ÐÊ#è%< )=R7¡fv[÷_Okÿ--…BAGû ù£?:ò÷4³ËÏ @`‚@ÔP ë×­“Ö«Ûß™êøGÍÿjX¯!¶ðjsÿ{tîÿŠ+¯+¯ºêè Ì*P0G?ä ÄŠ †â^ºt™øzÚ_:“b©§­ÿfþ/•JR,å ·ß¤³ …ÍO!L0€Qh¹ݼù5YûÌ3zèÏì £e4c~y*•”÷tîÿƒ ÊõŸàÈß1Î DŒ`”V6?´l™ôõöJ¶!W[ÿl‘ŸçKïá#òù/Üäж'–Ó>Ê,s9 L@€Qjyô¿s×.yüñÇefgg0ëosêõR©”tíé’‹ÊÍçþÕ[ë‰i GõÕsÕy ”GÐËuôoæu;ôÇæÙË ^’_,uõÿ Üñ•;ê%I"õVÎ*™€Æ@jÜîÑQ³ÿ«“ÎŽ vý×ÓÊ?cªé± 3fÌ”×t–7Þü@^-õµC! Åo‚Ï\(Ϙ1C¾öõ¯>L”…`ò@!œˆàDdNðùŠåËå­·¶ÊEó/’¢Žþë®[ÕʦRºð¾ûî“|o_ðþÙáã“°Ž~oW—\|é%òµ¿üË“\ÉW€¢G0Ê2[µòaim›úSwÿˆ¼ØÔDg°F±ÿ,£zi ©¹98B¹\ÖŒþG…‹!:&€¨¢pl½-¢[½j•üû¦WåÎÓUöõwäïȬ.‰m7@]9'™ÂúmÒÉÜ;—”#€ÀD#À"ÀS”h¹ó·Ë–êâ¿Æ¦&IX@§p r| @õLpŠÒ)›|×þúyé¹ôÈß=õOWþŸâw| @¨g€S”NY,}`I0 ÎfNñ ¾† Ô?ÀIʨ¼ï{ãÆòìºgeæ,=ôÇ-ä|@ˆ@…r²Ž¤ëÜåK”ÁÁ‚dsÙ Wó @ z§(³í۶ɯ׬‘3gÔŸÏÿS¤¯!@'"€¨@Ææý˾ó—/[.ûº»¥E÷ƒ—§*ü„ @‘"€8Iqíß×-?ö ™>£SÜ:ôù’¤ó @à¤'ÁóЊòÎÛoKÛ¤¶`ô_Þp’Ÿð @ #Ši¤‰ßÕõyø™2µÓÿF¼„ ‰A0¢GŽð}x•¼©'éM³SÿêÜíïˆ,ð€ PÀ 0-[¶48¦|Ì .ãc@€@$ F[y¤ÿô“OÉ+¯¼"3¦KÉFÿøýA‰—€ 0 †KÑæÿË[ÿ¼ÿÝ ˜J¦ô<8 úš@˜HÇ•æK/¼ /ècöìÙÌýdž·€ 0q †Ë²¼ðÁ”ÂÀ€äÔí/–ÿ‰SÑÉ  K uìÛx¿Û²e‹<»v­ŽþÏWýñ9ô7Þ‚ÜC˜À°Œ(Üe˖Ƀ¥±©‘½ÿ#¸ð€&Ø €òÊÿwß}Wžüåã2£sº¸¾®ü'@€&0Ø €òÊÿå+–ËŽ;dR[›xê÷Ÿ@˜Èb/¬póù~yìÑGußÿŒ!Ó?Ûþ&r'o€   aåò‡äí7¶ÊÔööÀñOyG5€ 0Q ´dW®\˜þËÛþF 4Q ž|A€@¼ ÄV”;ùÕ«Wn§ëâ?ŸÅñþk ÷€bD ¶ læ_òóû¥!›ÓÉ»þcTñÉ* ¸ˆ¥(oý[ûìZÙ°q£Ìœ9SJ¥¢úýÇçÜÿ È? ¸ˆ¥(oý[¶d©ø%OÒ™ôð?~\Ê|B€@Ì ÄRX™oÚô[Y÷ëgdö¬Yâz¶ïßa æ d€@œÄV<ðÀéÈKCc‡þĩƓW@ÄRìxçùõSOKgç =ôÇeæŸ?@ˆX €ËWHO÷~iiižû]¹“a@ˆ9Ø €ž=òØc«eZÇ4ñlîŸu1ÿ û€âI v`å²òÖ›oÊäö)Aßïáü'ž5Ÿ\Cˆ9Tœò_ÒSþ{tµLï0¯:ô×mÿe‡@qâ@^«$`‡B飖:b¿=ê]"¡¯Êþ¦«LBè—]YŠ&î®— ¼†²ü‡Îp4å?¢Œæ·\ 1&+pÏ=÷ȪիdÞódû¶·ß01d¢&ë+»ötIKsóÑ ˜p Ø×Ý-¿Û¶M¼rß?ÎSN–ö¼î~)J±P<š¯‰òb÷îݲuëVéÏç%0î™Ç`¼÷ì~WZÚ'c*¸5*ˆ•˜¥{þïüá¤cJ»8%ŸéÿÊu‚O‡ ø¾#ýý}º^dªÖíøí?S£7|êFé˜Ù)S&µ‰ãzEa?ÿRM¾YŠnQ¿ž~üãã_üÅW¥ë3]Òˆ¶ñU[VS<­7½ƒy™6uÚ8“áöx?X €[o½õýøU°‘¿uœ&Êž$«ø™\sÍ5Á£škÇãs‹=ZQ3é<Ù=­lÊÏÞvkÝæg´Ö£“å™ï X €0€G| Œ¦ã/SªÇF߯Å6:­Ç´•¹æÙŒ=,?õê9mõÊŒt=ÀØ3æ€À鎒O÷wc‰¬<‰Qi«%ßõœŸzN[-Ìùm´ Än`´‹‹ÔC€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E©â"±€ p ÂáH,€ H@Dª¸H, @ €p8  @ R‘*. @‡ ŽÄ@ˆ@¤Š‹ÄB€Â!€‡#±@€"E ©Ô’X@¨CŽ/âÔaºHÒÉ NF‡ï @à’âI)¡}&ÔLUÉ@T…‰‹ @à}õû qJƒâ脲ƒx¢ñù ±ªÛVžï‹þ§%®I'DnœUå’‹ @@ë°Ãl×}Oãô¥=ÛXjÖAç` ÈQ"PQä’ÉFÇI4ˆ4/:µSK…)÷÷úÜ_²5‡VCR&04Öò—ú€Æ„ÀÐjo5Ò{:D×N[$¤õßÁÌ¿/-©RºU{“šô1)¿±Š´¢˜œÉ®œ-¾$ž£xZQj¬+&!$áKWQd¿›”ö”S«¬+Ä @`Èõ¸Ú˜‡jܵÎÁ—\²ø^nÈÄ;ÙMÜ,U³›ç5º¿?y£8vÉ >jTZ9ºóEy¯?-í­©h€Æš@ÙâÚ•wE\‰¡Ž»¶ûš¨HêÜ¿/òns.%I‹›ÀÒ=%ÙSL¾.3é°½ÖÎßÖ†&µb ˆ¼×çËÅ­ú:P¡ˆ€ÈÔ D–€´áž¼Õ«S°^RóFG­í·W’µèž›KõNÒ5ý Úô(U’Šàgoi§ïÉÛ YOò¦‚…#5fË*†®Ùxh@>1£Iû*JDù9 Qظ_/LõAÃ>ªß¾ïbkÂU´e’ûŠ™wóE_ -!2* €k'g¥Çõ kö©P‹QÍÃa~"iy±KkÍ…þPd 2…„BQ&àK_É•=Úä§Õ `wF]ØÝšv/ëL,¾vDª’TÿõbGöôûÛ~¶ÍqûJ~Jí‡ÒŽlìöt Ê•”cf({ @`¬ lЩݽ‡tˆÞ¬£:Ý»_{Ð_‰OoH¿Ñï•ú{tŠ·†¨¨=aÄPeßZ±kh—«voûÔ”lz×—…¡Ð´9ÿ_¶õdÍ»Ž,ž]§¢PîM$€bMÀ‘Õ]:<·Ú¦ckí¨Í¢k¦áRQ.mKn>'›”¢î7Ã!:* €õ‹rV³#3&¥^ÿm·»0pïdxÁqJâçÓ²bwR€U ÝhŽ$,^s#E€ ÐØ–ÿ¡¦Õ•Gw©H%$å9âÖÒœ[çïi×áésÎ6 ¾²v/=kÓ õ@àêö¦ª’QQÜzNBf©Ø{Ø{ûÁ¶ŽZjK9æ[Po×G·÷Ê¿,JJ6™VŸêˆ•£eHÕ}éÁ}‰O99sßkJUÅ[ñ"ÏöŸšJlÎËË»rÿ[Iù#Vkˆ¶â½ø€@¼ 9ü¹kS^uÑFv²Ûkóö5 ÿµ­Ö›o[ÃtM×§¦Ÿ»bZNÎiªAPÄ»Æ5÷@·-çÔàä“ÒÒ8ð¸¤?Ô›„9¨aþ¨\GlUJÆ—oo,È-çg$L/TLJþ Ñðeýž‚Ü·UלÕÁ—µëµµ|s#<èȤ¦‚\Ò–\µ«W=Z×@ˆнnSrècõ!5yÍò·ä nßs²ÁªýšsisPÍiyS }wƒ+ÿ´ÈÎ.V/Rêuhhs ‰  Œ†€±<Ýê— \¬åï6ô¨7÷fùںÖÞù¥Eï28(‹:š7Õš}­g@íª Ñ#PQÌI É9uñ,­YyåCMƒO®9Ðp½4jÁ[ «9è‚@sÕæÈ~#rÃÙƒrÍ´”Z”ÔD•L° °f¾DÄ’€µÏEu@þqcQÖmÓ}zS›´ó?¢_„ÔK÷HÈE“KúÕ°Oׄ%-bYfã˜éŠ``ÀNÿêëíà¾Ït¤~¾f·w½ogIüjŽzJ¤¢ž$å«ktMÀg[õLi]`ÖjSÀŸ TKÀúek;“*žÚëÈw^Ô÷­M:ØR}:gïûæ§·–ÆU«; ÔT+Í "·í=Ôžq¥QO$ÔêÄ^EPjšt47ûtáÞÎ.­ìÜ–¿{O_ªÁÉ–´ 醾À›Ôé¼î(ðµ³7=1¹$oê‚À/=U‡>©ûKµ‚y¾m;´ûèQ“GS @¨DÀS÷êfâÏèªÿw yùâÓÚK'š$ÙÝ|¥F¨ù6?°!x} ùø…ΚK;Ò›÷«¶Heh¥+•I>«(ΞL MÿyÙD÷-g—–üÛ†?Óýº’T¿²‘úiÝQ ¼ÖHÝ›ªé)Y¹Õ‘ÿü|ŸÜ}EC°¤¤[ØVrÚ€ù! Ö´½Ì%Š20×öÞIDATPÌÈͪÏÿžœ8St¯~àœÇÚ[»ª–ŽZë´íס¿ÆóåóœŸNI$å@Ê7g€„ˆp“ûq‰ñàï;w{5M·¾zÀ]x˯~#jîqt€^SÿÜýlÖßótÝA'wY³üóGÌ|až¦TŸ¨ P×úþXQr\¼… /Ú8Û†<ë×µ•¢Žò¯]Õ/ëw–$¥¹ˆ®âv“ú}ú4'©w;âËeÓœ×þ×G³0à¦ôø_ë!õFàZTW*^uhÀÔâïÃa5óÌŸ”Üð¹Ù©åËßp?'“mÀÐzýß_uú¯<ëàm¸ß–•»^ÈK¿šî¾Üæ®|q5)ö}ƶžÔ¤`O?}ü€@½ð¼¢zãs$­5ûß°ª$/ïÑvrªù£®ym+@­NÊ™ÖuÁmo:·ôãTÚ•ýE¬´e>u÷\# Š€_½§îGÓxjxý`ñŠ/>ã?'ª%p1i&¥ð MQù6au(%Ÿ™+òàuY5kieÖŽ?Áz€%ÂK@fõåõ#%YüØ€ìÞ¯­d».¬ö­ý¶±]xm³Y~Eçþ/m•W¹~ðÒ‚º°Ûê’ÀÅS§T•®Š€ &£êLê’©Ùço>«÷¡•Ûä–TVÇåZ ‚Õ¥:F#ØtDZwxm¾¬z³(êÓ+?™“¶™Ÿ­ÎZS¢š>K¢ÝÝ@›€6~ÁÿjŠæóÍ"šÿûVAþ|MQ÷þëDªüu) ýõ;½8Œ`ÑØýl»V¡$w\½'—n”®¾áS\øqŒŠ€ußß¡[=˜¦Ãñ7õ_uóêÁu~:+‰Œï«—VÐ 5fHïf=ûa›f(É·>,òÝÙR«ô:¥JÀL[v(@¡ ‰J@›Ã’Úß­5ß,Ö8îHÈ×Öí×’¾mHK¢¡¤-cy&Ô?ÅÓkظ½ïÄ˺V iבW¡cñªþßîìÏu¦&© _µ yÃ&«1C¤òÓÑûXE 6!è™’Wõa•ÕlSiGrM)]°èK§>šôz3¦ ÔÛÜœPÓýØÕçKw¿ná+h[fÎOlJŸu•&ÚÎa± /~[ ]ôL§Ú‚>fYgoí[ÎT#¦ƒ+uºæëhÿ¼6ïÍ¥ŸÈ~¸=—9²W·³áj¸("ð´¨:ÀÑ}#Çd©§X®tÇ||ÌÛŠ—T7žÕ¶æoúæ]Ï9?vSjšÏ¨x°QyÐAŸ:žc"­ú͈?†à¤üC½ŸÝº|8EpÙˆkË—ñ @ ÞÓ\j»¼?Sí—ÝLï¥Ç±û½žžðç¹_¹ }»ë%Ø?6®²ab¨8Až±5&U†]ý%ùØôÜÿü÷/X½5ÿ%©[óTÁ®UÆêefÃ:ÔŒF€ P·†;ùàidÛu&¬ÓÚnÚIâäGŸÈ~銎¦Wöé¢?ûœ5Õ ÇŠ ­!°©W™c_fë w_›ü«”ôÏyø ¹ÑŸ¢Ž)t¥¾7nøPa«,<.ƒÆ@´WÚä{¶ô«èÉß^–üÖu³2÷ïÑuÖ6 84îŒHÀX¨(‚swª¼›UÝ!+|B¾³ õ»¯_¿Ã¹ÜSàèÂ[¬Ü²gU+—A€ÀØÐÜ|WLéìííór?¼z¦ó½wôÔ?[’`  —@Å¡¾™ï«}Xý°ø=¾.&¼ï]ÖºøêsW¥[§tÕH"¡B`âò#g€"J@;y[4ek¾Õ»ßMççþuQ{ò¿½§ÛmívD‹uÉ®(Fñû£—Ú Ñº…E×öþèêìWW|Qö«ùÈÔsòm…G#á Œ=áéÈ¿4¨ ¾ò%ùÂRÿü‘©Îßî±-Õ„ØM±¤ÎìWK@¾ä÷ÿèʦË?}~éI9Ü/¾«n µ²±–$6õŠŒBuJÀøqRÚñ÷ë(ßÍË JßYÔ‘þ‡=ºà/¡ CgóF=ê4â žVõ¿¯Ï}òÏ6ý?9¨_¬ÒÙí¨dƉ@àŒ0»¾>üþ4èáA?º&÷_®‘ûÇæU•;¡ #h"à@Á×㣓ޗçdþTæ_7¹®xZé†V– bWÓÈ0 0Ž´Q6¬Zø½Ã®Ìjñzþtãå‹ggÿeûaÌþãX0ãzë1–#yWdË!OÏÊþäç×¥/›ÛTè‘ýR¯Rwº{ ¤uRŸíä? „GÀ:|kZí 4mkÅÕM_jöÿÈìôSßZ¼àÂÉ©ßV§?ÚT;¹Â»11E…ÀØö¼V³4ìÐJ6¯-ýÒ/KŸýùyr¯0åõ¦t§A£Ö<­”V9 € ]“•T÷}Á™hz΀y‡ýë‹“ó Ó×)øû»uÁßpÞ=‰)RÆV £0kÀÎ>Ý! ‰¾¯ÏKýɿܹíìI}}r(/~Q-€ªÕ£3öâè›H%±€Î8ã{rkÙÕ²_êˈ—wäªé²á+ç œó¡öÄ{t=–YgñíÆK©înxF€åÚvôë–Àm:ß´ =±ì»kìü Jÿ'í©èÓs.õ¡¤M ç˜U@“f[U€ pbÚL:ÚÙ'’®vêvd¯­ð×ÔÒÚ>©Ð÷ýËó߸óCÞ"ðïØ­ÞýÿêÒŸ½Ô—Z”?\×Ó‹´ÂÛ: VËZ}"@˜p´Ã¶I«7u_]ª—D›ì>}è‘ë­SŠƒ×ÎIþêš©-?kË<â’ùg»Ù¥¾üϲµÕ £<Кp\ÈP(êBXNÊ•µWØ­ X éÄž+Û»¯›âÝýZ1sчn;œ÷nY{0=ÿ +9(ªåKU@àC@…y´íf ¦ LØký `ˆ €@=zikËì…Z7íÙŒœÚ¬Yû¥ƒ}mIg=éÈô¼âó ¦4Þ÷êôªOÏMìŸß˜_ìЭÕÚvZSgMÕ¨pLbµuÀ¾AsW™Wü×ÕcÕ¾çý™Ö-ƒWnéN|lO!wÉáüàü^IÌ=èªYLϲ.© bÑcˆ%£–‚¤fÏþz€ê•€õØ6I_Ô½yfæoö$‘õeZ2+9wðå9mÙmóÛœ×Z›Wï.x¾t–WjN¥eý¾~õ±’i¦ô?:þz-àúMW} €a^ÃzØN”n]äRPQÐv§]ÿ—iOÿrsŸ#×Ïóssš“KvËœý½‰¹s›ë¶åÓ3ß=äzý®ŸL8ýµþO€ Pg´«×µMy¿-'nç¤Lê‚Ùµã€übÞ4÷‚w˽[ý÷Lvä¦%å¹ÃŽ¶Ž˜÷¾N]¥]>~•gÔ’£‹ëé£Vh¤€ P+5 @ˆ@ÜJœüB€”€j@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!@ ,C€Ô@€@ bXèd€ € @€bHÃB'Ë€ u€ C€:Y†  ¨€ @İÐÉ2 @@€ Ä †…N–!@ê @ †1,t² @@P @1$€ˆa¡“e@€€:@ˆ!ÿ|âÞùgÁ»ÇIEND®B`‚MiniZincIDE-2.0.10/MiniZincIDE/mznide.ico000077500000000000000000002026231263211763500176760ustar00rootroot00000000000000 e*Æ@@h ++ è“5({800h£9Y4 @@@(dt00¨ŒŠ ¨4™hÜ¡',D§@@(2kÓ‰PNG  IHDR\r¨f IDATxÚí]i–â¼U½óí«ØbgÔÊò~4!4Ù–“@¤>h* lYÃÕ@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHÈ>ò·à\‚ˆKÜ…Ic«šïÿÅm9僊›²‹ü/nAHH(€P!!!Wr+C„„„  $$$,€P!!!!}ò|>—eYX_ˆñny8ý —bñëûÈkõ¾Žé“>›ðï}ïçl©<ŸÏ]p*{Lʽo‡×¼Õ>ÄÚ*ŸéÏ'·V«îˆ‰AÉÞ¿÷J ’ŸÑ‰ûýýw”%9âïýïÀÞçÏçS ühÁ!n¿sn“¿¿?x>ŸÓkî÷{ö»¿¿¿ðóóc:oMn·Ün·S\ëÌ{H ÙûâªO­nÚ*–‚›‰l]±ZöéýYÖ‡e«pÇJ.@¦‰‰=êÿF  ;Ð39©}4¿>{›ÄÚ9ö*î:޼ÖS*ÖׇŶ²‹ÑïÈŒXåà>Ÿêd¦À'¯t½ à &öü,À²«µ×ªÏYÔwܶŸþ}§Ð3¸©Õÿ@ª¤ï¾heŸk¨Q~k€úÌ)ͺøÚï}ÌËïÙ§cÕasëÏçs×<»%ŽpÖk-Ñy'Ÿ›B°¾kû!Ú¾û†÷޻ޖ.Uåİì#M t;éå}Í–¢©ãR"m3rÏUWþæãñ€ŸŸøùù!ÏÁm—¢×sÀF´%w¯R!5îÓkµÜgD$çÂÏÏϱøx<ÞÛ< Åèó<¥•žð÷5?4Äf·ZÜj/­4”É]š÷TpÉâh+£fp¿M­„3ë¬g®SçGÝ¿ò\Z2™€A¤ç&¿æYü¤ËÅЧJNš¨Ô+³ÜnœÖ‰gÉ\ôº½øÞk]ÏSºV)ó1’1ðËh¾~áó{Lâeñ­Ÿ{b%ÐePœbâ=+ØŒÔKŒÔ.P“zƵJÇÑR£Sp,è§´’´]ÈqYnBRØ€@ â Àñæ}©è, `åØr­V夹- vPýi>ËÊo]ý®ì¼h£Æ—©%G-®ÄlP©¿–ÕteWf#f*» `øWÿ–‰<¢<¾Áôï±´AJ­6Ò@ÕT»M 0 ûm9ÿ‘kì/ÏÞÇ`ºõ÷]ý[-màIaKÚSX-ͰdÐa"ÍPv–`á¡ €EþE<”FîEõ+b¶×BiU(gµFaíAÀ„_ Hš•´~à~Ïi¾VðOò·ô VÐ’ŽE}¾ís¿h¨¤•²ªì£ õL¥çÜz¬±\õ[/J,ñÕ{îÔ}o¡êÒŽµ, ù›÷ûÝ ð±m·ØI=[}ö‘8À•\€€eåäX¤Ñ  ^s\€J0N¿•FläxŸ“ˆÁ¯ý‚€?•°R•ïÿzÞï,¯~kI/@ê©wßoõšWj¯ÛíF¾¯T`Ò6gz_é«z>Ï>'+ùÚÓÐ{oIÏ_úŽÛïv»ýØc‹ÜìHsÜË*8ƒù%ÑÇ´¼.#R `Yº²=ý{ñ½Ç:ƒé²ï½ÂrQÿac‚õþüS››Œò1̸Üo´wÔÿáêsƒ>i¢}J6àê–Âý!òÞ‚‹‘÷{¥®> É{y[´Àäã¸ì|½<¾³î—È}½çÀ´ŽmÿYçEü$°Í¾#þ\× \Žjº'5·CîÓV`ƒŽßY÷S`?‘Òl6 ÔëÜpk/o<ŸÏåöû[kA"%¸8ièçíö¯3ËÈjͬ®Û×ÄéWX¼ ñsÏwˆˆÕêÿ-iÐÞëµ(,Ǭ,îóå-€2 `¤·jp\7†T|­Øˆ9sjö=¾>¿VVŠ‘5?ÖÇ]·Ã)ö½m± àÆH‹ ƒì¿sÙÎCÝós‚ïþÓ}÷O¹†°zqFZpK@çÅq:±_tÇïIC˜Lì÷dÌ?¯ûn“¯8.lÇÅ÷„5wUXÄöé1¥}Óëý”ôåìZk ¸WF€üSŸ [½þ\9)¶•6_½ó‰”¿cÂûNo'›xƒ9×UɈÛç9ývìˆ×¹…Pt~þýÕðßåå­^>Ì·à;¨jÝ\±øWúîÿâtHý½n¯õã¿Mêï¶N°XÅaûÛ{ß×öÉAªˆÂúgÈý{zßíŸùéê»§/}¶øíÔuzv%æ~çöû €|Œsï—´R³YXF VÍOõ³«Mef.ÝÈÝËj\ï—˜üÕª^˜ø¤eP»•+’Y"(víýVÀ»Ô{ô<ÕF¸(`‘ƒ.gÖAaç¾{=¡43¾2ËÙãlÊ Þßàv°®fÁÁzºÇ^¸ûEìŠ ãÊ1€E&í™øY°òß…›šB¯ž¤’UuàÊàcmAZÙÜÝç=kà¨f1"õÝU³U-sƒF&=ª£ëÅjO­Ø¤¹]›õä„/ÿ&*9àHŸåŽlÇ €}r Õ=œQ°~ÇŽõ…°x/”A/v»|8ôêN¬Ì†íR‹X3_Ž ¤–LJÖH•1(Ïe[ý¿Ý˜éó{HËX¿f  Ô£ñ)Þ’âÓVoÙ2à­*†P+£L@ª8ˆ>÷:îÜ#X¤ÿ¥¯îtj$IZR9ÖTЖ!KRoYZ0ÿüN¦i»5W¦òŠmS<.¾Òƒ[înM)&iÁôw³·ô?isK?búZÿ!šR\Zzí,ŸÓó¶¦é¸ô¦å÷<ïÑí÷—Nw§©?¼R ˆ¾\Щ;0bLzÉ"hôAA¶c•nH@LöñŠ|¢UàÅòìI2Ëq]\  x‘ùZòˆaƒn–Tí%'¹À)#ê<$€Â7|Û„ßÓ˜àÀpõÀ²˜úô<°ªˆYUÁÙÛWd~•&3Zü€R‚‚è]ý¿)ú? zòe„ ðe-!J:²šUY­À€Í§Q{L& J/RÀ!)Û`UÀ®þWÍŒ.»[«õ{Ù€ðÒöÛ¤ËJe“aʨöKÿÄwe 1P¥¾u$¿É ^!õ®üß2Á=&¾§5ÂâÂPz ¤ ­éŸP—ù¦À|ûõÂߊUÓòá÷öåÄ­Í}¹AKóñ8„=&ܧ1{S»·^ƒÊ~uy§HA{y¬À£ÞZs ‘ƒz¹1ë¢æk ôÎ ¢±f°/z1Pÿ6³W &2±U|i½ÿ–Áá-©õµnë9™=ÆŠjögcþªµBM@käÚóaö®”Ò~$JHëÙp(’}öÆê*fQíÙ.@:Ñ!7…²'}¡<µóõ|ÆšõÈ›üàûìƠ̂־ú3eÄ,˜Â+¬ÜèŠ)¿/'Úl˨šØÅ*ÏYUv¥Øÿ¨ÎÑ&p– ¸b €1ýGÓ€½“`îêo«­^@!üðèå$‚ªw޾œøÔD_[Œ¤nTrïV A»O³²$b¬Ê  ²¼WáY0YËq¹ˆ¿¨Q[ªÑ3.òΖq†}X6Z>s¿œì<(KæC(‹® ¨’YZ\€–±~]À"—˜çß#e¥­ì$ÀˆÁ HdŸ½.Iyν¸™uANðö¬Q²qÊ U˜eÍÄ^µU`Zâ]º !àYß½GÚˆZý9Þ1HPˆy¤¿ÊTb r¹ŸýŽRl%N|@•¹i{Õ®R xsdPàtLKéÀË×@{sн1ä=ç`""%Ì^dhÅz' 7!›ø•Οƒd%•1ý] RS‚¥,p*S›µãQ+`v´@` ë²IÏ4^¯E0ÚrL„£:¡HºZ÷Z6ÙÄ”O= t$ØJ«¨=[fM+ U9(–«<’ç0+îCfDPPÔ •{år§ˆ,Ç#L£2ÕrõDÒŽâ\³˜üÐÈ»^?0¥¢ÐMR pñÿYXkÍËu‘€‹­`tï”Ìlò›ÃX龬~¾È†l¤*§¶¡börjbK`( - rŒ SFÅÑ@aF º¨Á/] @0¦H)*­Ñ4O‹ùË®hÊħ¢Þ­×ðD©6¦ ‘­HÜ”R:H“_%P¶wƒ˜±¶RÕœIÁVK\¥e -xK- òžä^”Q–ߥ¢Ø¬ïª„ꃴɧøT¦c`]»É Y ¨¼TÉ[N`éÛäJKp"S­¬¡E`¾b°¥Fz$H·— Àv#""Ö”ßϧ¶j“wôÚÊvâb#­j‘ÌNèî…Ô ER„r¹´Œ–Ô-Œ1ت ÈÊO- Ñ€ŒR{øí#¦ÿ»-4¹ÂðÝ~A2‡Q.ù‚$Q‰l®½R^ö®Gbð³©+s­9…k¤UkF€rÀŸòó¥qL~ÔŒ±‡E (&_‰ ´ à‹ù7å„¢œÃ×Á;Ђy´eZX™Eð‘}EÄþ‰­/@úÿ ÚZS},|ò%ïûhhé·žÏçv™¯×ÖÚ;iOŽ[¯‚¼Å÷¶oÖ(Àpåurÿ¿ßïùo¦½°h}^tLÈŸ#nçŸ5;À´Br¨móž iƒì\ ý­äþ¾¯’{WtyH®åÝqË>ɶʽ•zT¤ŸŸÛ˜¾ßóeÛðËâ„€à^âEW%ýÈ.‘bK¶™Yx·Lã2dKsÅo'Ý0¸vÞC) ,™kK§ç6+@z–’÷ËYY·”´KÊÿ¾',Mãj+c‹µ`ùÌ­¬éê¿YE¢¢ËPj+”+Þú¯µ;ŽvoÖãÜž·mÙCȺe½ˆ0YÁ‹Õ1]Âó>K©¥ƒ”¥Cv<"º1QVHÕá);·ÅUÙ˜X(…Y“‹Q¤çåøæ¬ß+Y¦Z€eÆ»â|(DÒÅ•IÈ…záÕùà›V…&d!ß ŒéH`€ETŸ²Z¤ªA:Ø‹¶$1`ÌPGZS3^Ì@-”RºyJ›·´ùïÃõßÃVÄa4„i•EµÂÄò÷¥Þ Uµ kA$Æ…Í|E-KâÍØ2IØ”Zã+BÉïÌë‹–”ì$*ƒv‚S5hààÓƒýnÀ²X€Kô ´âH À“ÝÕr\`ëÔ¬:ã'S+Ðl@ð¯è"ÞQÙYªù²kºüÙDÆ8N€Ë×J¡u²îåpZŠ2”[½`”Q(´–R£Ëm¥îÊ ù©þÞĨ4…mm³n.Z $¸_®²4`ŽHS kz$M“0é–Ñ´Ø(($åÀ*å”fÙ6Kšܲbÿö¼Ýn&pt]P”%]˜‚w°L”eé=€ ”Ý ”s{>ßçÆ¯å9¤÷«åéK,ÀIIj²hEgº ¦)íŸ" ˜¦¾ ÐÛµ,¦Mxëj0³ÑƒZô#•ôŠåÀõûQR–ó‚R(ÄUò%Æuå]ÏJ«R¯ éU0ZX©Ò5ø–…ç`<ÜÏÀ`kŠ‹­ýgh¶¼ØZp2ˆDeflvjpqzž‹^ ÀÅ3hÔaS´) ŒÝRÀu›4ceš–«‚™Æ+Èi½:%˜m.ý¿ÈK›”"–A³K`tì°ÿ+WŠÝRšh¯U¾ÅÂÐ& 2åÀd®zb§¯”&ŸÖ¡ ¸"8«¾‚L&Bç(;.£ Î$Ë(˜—ÈÀ"vöò÷=”„%òŸNt¹þ¶ýf1YïY>h – ÈY€íÑËÀ²}†æSY–€-YæXšÓËÍÒ½.`‘Ù=&ú W€§»n 4¥DÎãšë& …™†ù7úý=X{é¼YÒ Qˆ'ïÂð|iU`Z/ýxüK¡©-õÒ“ºiIýüýýåé.ª¶=¿XÈjä±N³ü«Ñ/e$õÙ›öüýýMKøŠ´Þ̯ëëGúú¸Ôªôl¹´f¹_V…XUÒ|oe|YÓÍït_–,x®–dc.€7 §+ò/œ¨õî5-µ·;ÓÛùÌV ÊãtÊo²‘«Uà¨È¤ŒG× s_€Ëǘ€ gêÎ =lnÔ´2]xf7'm ªi©?}¥OŸfœ–k!À–Œ†®GÖsŽÎ@Öñ¾Ç$·ƒR¾?>/…™gzðíùï†ÖJ5öR.½¡‘¨'†šHDåRìRÚ¬¶÷Eô”ú8l/sÓŠ÷—.Þß9ýôZ ¶`šÐÓ4¢=¸9Û°”SŠÙ‹‘uZÄLjÕßÒ}ÖsEìëôÃ÷ù³rã͘أׯ±×ŽD>}¶Á bÊ-2ù\)·Á£0k ®À…Ðn´N”‘nAzi¬…î:ßnª27ˆ³¥âŽ vö¸\=ÏZ*•^`2,Æ3ëÿ_¾€Š4’Cì=!(ÿŽýqfŒ£«üÈä1ã€[íõ&ŸôwêsRiÙøb¡)Y€ 3É8€ûffXGÊF=¶Msǘ}ÈËL³\9BN·Û³)×OÝë¾–r`>ŸŽDœ˜çåÇáÁcyvä6ûoÑç }˜yϦBbŠHJßKìö ¸T @@–1ï,@Ëv׿7¯DÕASjìîC™ Á¾Ã¸=­VKﳓ»ëVÀûïƒØ2  ¥¿/Xd~À½]­èGÍ÷pØRqh‘Ï,€ ØI¸v¾™'ÝÓp¶€•ö[‚;2± ·åêåÀR0„@EÆõù¶îŸ 6åßy))oP 2ñÿó\{ž‹¦LÔ»¹‚XJß—«ÆÊ.)I=&ÝR4|‹_k¡Ä¢:ýäˆx,\úE?»´k 8 |¹ÇdhMñõ ÚÚrk³=k7t÷Å(0À È7Ÿ÷€™‰µ>X`yñP¶ ˆïV¿²€äFé¹Z°++Í8ãùÐÀ`+/Á@šZZÀDP"Þ°[½ðÝ^H,ÙlBŒv3ƒ®£ÓÏÞ)?=˜"­–ÔÖÛ; ÐSƬu:â\ RU®°\»=8Ù äGÇ»)×Ëï/íÏqýç1¥æ’bÒp؆ʸë¥R+8F»=·,¨F’0„Nƒ§%šµ[¨M™jõÞ:–p ò¥ïÔØ¿\{p¥ ºµk˜ˆœx>94ýXa»{»4˜fûU­Â˜å”A@š|…OËVœ€ƒXl,-¶Vx׃zŠvæÂP\kôÑWYvºb ëÀvAÞ¸gejTü‚©~ëÑ8Æ Ƹ¡—·ˆ8ÀlŸ—Òò}•soEÖÚ½¨u?+ðIWã1€&#(]0Íd.MYL¤ W#±ö€øe¯‰ii-¹Ð2<ªÎ¼Ó¢šTÑ~ÅŠ$7ؘÁu dez0;‚±UQ«ôwÑH†ïÅú#rý›Vš»7?r3ZžI)³z¢ùX­~¸ÜPÉh±‹^ø¹%Õ| BÊJ%åå ˜I0$¾¹lbÀ.u Þ.€”ùôI·iGÎCKW#žé8¿/KSeŠÀ¢º£d‘–Ï •¿ |\ °×ä?Ú Pƒ€"O dà§=³|7`½ Å4ºàˆ p/Ï HÁ"…,ÀÌ_ëoéð#·¿ž1g+S‰¢×÷Æþ,)Š¦Æ¥Jwc¿Rú»Kó,Ë à1)$Ø«VJÊY­VÊÌÉÑúÙN}&g¼cm– ߪLîéMœ€¢B¢ ¿|ùJ/px¤ÎºsÇ ·óîeûdš°õ9¤á¶»¹ZºVë l€·«,zkðËfLÀ‘p™Ù—i€¡T“)­7îhÑsš…w´°GI‚Z­i9œwF fA~yð¿²à¶ün$ oLtÒpoÆÎÿýý½ÿfÁ×?ŒôÓ¦˜^KÂõ/¯ïRð{Š_>Ÿï:þÞKy7ýlýÛzÒ{F–ÿ°¸f,·È‰PŸÏgwÍFù\5"¤^ÜsMžYºÝûÚ˜qE}Wþ}ýüüûƒÛí7Ûw‚ä¾ÕÂ\ÎH /ÕÕ²zXê¹UC ®ª- â«èûóàk]©JßUûHIÕöà"Dº¶–<â}.×Hï|Ô›È2K‹ÿ½H ࿺Lê¥ùðþo¡_­¼×Zd*ære°X¿¿¿ð÷÷W­þÛª¿–†aÖò¡^õ²:¹”"û½nÕqXTœHZ·U"þöúÌQ«qm¶É*GL¯=¯Â[¿{>oêslmƒÎ­¾XÐ{§INÛ–[‰=—Ñ‚sÕ¢’¤ÇǰÓå˜_î®Ò#³£Ç=Í=špædú0'žL£åYä¼Ü&=Fº 3mµ(·VŸÀÎZiÐ`gV`±{‘9³ãL ÆÁÞ¯ Vû0µÔ×–’_«ÉøÏš2 1V½Ü†MQ 8…©ØZÁbë‰höYi±ÕÓÕHeÖ²F@õ¼µñ—e™?,/íñ·÷ù“êÄÞ +Õ+нÇÕ°óE9ôàoOÚ€¹…2רòîʵk} ¡3{!6ÕÆ;\’œh‹”¶ KhÁ-d §ŠrQa }ù·ßNøý˜ûÃ9+þ2ñ ÛSe!ˆ,Q|—\×ðöË©ˆšïe©b#Dû¯Ü—™´È¿ö7¹T­ÊêçŽt»³ÆóãÆß›Ú¾ïþ·Çø¾éÅcþŽxozÏYÓ`Tª(ãõO†DDÛ(÷„<}Hö $”­ˆˆAYœë{ŸR@BáŤ¹ÊûX¥±èˆr`° ¥õöz°‹bì+B®éóâ>AöúúR®ÛÝn· ,¥ÿºßéÅï k–^<Õ,DX¤Üµ…/[1Ò!R u{2¬<ÌwEºŠª—Ö¦k™ø[å`§w¯ªU5Y=ë¹dõÔ÷o$òo™pô³JMíùÕÊt³ Ò ¬Y ê\o¿¿9ß%¥ ˜±þµ àöû[wK度A3V Éóù,LõÚ àºßV'1³Óa ˜á¬‚‰R¦ËU¼í·ò}J« UÚÊ_*,L‘êZˆµTž®µçéI¢›ÒÝšótaûy™]ŽüöçB 7÷_7 m‘DXjK(«‰™ºïl.Š Z·¾ÊS6Ù Æ ˜VÔµâØwI«¥hÛEÄÖ“ÖV~^R£îx IDAT-¶Ô䊀"0ÚL›t5ª³Žád À‰•¡U×EkQ÷o(ßë`™õ[(ˆÈlßQH¬‘úl©±…ÖQ–m1ÅEð¹öÓiˆÝx YŽ ƒiO.¥Ý¸ô¢Øn‹Ã=ì‰ë³¥Ð}œ€ê˜[lôwŽÖÀ˸¿d–+Js¥ïZ¬”I]¡ú*.z"ÊŸ‡§kÿ<ëC€а²ì‹(|ù}a)l– ïãÊY€Üì§Ž]£ì|LÊâÓ-¼²Y)™Œ¢Þ#±ÀZû¨A@.p>PšüLÇT‹É/ š²è‡Œh‹þ¿ÖH‚ðÑ«Ht¬GVùäæ¿¦\¨\»µ €íÁ´,åX+±:ØFÏ®ÀÜßéT­ÐMoPzïÊô%7Ö¤†5ï  x\Kd]FCŸˆ‹H«˜É"éT  «¶×TKiÖZ #Í%N>OIåQt$º ¾wª¶˜6åT݂ٯ.ÒzXN´"ö€‰i„PãZ£ÿ–…€‹È:3Ã)Çk:¶U®ü_ždÀÝöÞuåMÊ'•”D¢—|fTA=2`Ç´ËWÁm@Ib»+Â’èt¡¸,4\ÞìßVSz$ (ysë‹XhZ4•~ׯ„ª Ûþî:@¹7`i1¾QoﻼÏ_½ê2P²Ï\é"PÖ„PÕÑ#‰ì«* s•¥`KܹñÀz¿j>â7)—†DHb³ù߃õØ>#ùüÔ¸Lá 0᥌TuïV à~'2÷ËX|@é0Ê©Oý ØXaÍMB,TâTñŽØÂº­[Àòúx/eÊs(ÔÞÙ[XRP‰ô5Ëžà»Óƒ‚^êzu%J0À%0ÁG·æ¬ßÖÙåi\=e"V–B¹J~9¬4 ` ò ‰Bkd³‰•Y½—U&D°\Œ½gô_Ú¦ˆ¡±Ç@à¸ó–,êüž4þŸÂ½„0Þ´nʰï`Z[ÏÕâçì=ëjï‹$Ó ôáy'x5 \?§+&d,>Hr¤ûç¿Ãð ¤Ç{ík©„”]ëÿoçŒÅù¤¿ÕN ÚËñSv._”ŽZ÷‘jT­ùÍU,€ŸbU^n¿¿›F  $XîwVÃj+WéWŽrð}›hw³~g¦x?c+k'7#P2ÆWË6ï??a”,€‚;=äºr¶¦©]ü‹ëº,-¸Ô6ùõ²I~Ýö'M´™¿Óêý\{Û¶¡ô‹îÀ:-ØŒwÔàž}#ME=ÏqÏké1J+g§ž3ZW‘7' Ñ ˆ£÷¨3Ziíµ*޶«òê<¼‡ríuzÎm–2iÁ—ë4á-#)è'˜‰GšÙÞÊhÖêß«PÎÐXµG!¡Ô ðBY:@Q#åÀ³MòêS}ÚOR¨g¸fSZ’³(epY @è4³»îÑæÿ¬ó °õà-Ž˜ÄÏ©§ÛôpsP®KÐåb’P@÷6?qU=Êí©ÌŽèŠ1ï :³Šm†Âðõœ ú|FËŒEFÀ€ól«Ü‘ÇæÿžYowa¶»(–¼_5 P• ZñÓ&§—+p—çðŒÉ>œ¥íÃ7¹pg Ê|#ÖÒ^Â=«ÙެKø¥{dvÂzå Ÿ“ßÀ¥„ÓˆÄ÷3ýâ#*Ï`yx ÷l²²G¡·7u^®¨¹#Pz“>i•8ƒò9ƒ²9"à‘Îóüm)½M-r—šÿ$5¸`&i‚î™Ã>º’îì“g¤/[¹,ÙŽlŒ{1ÉÌ#¥A( N'ÝŠû©x„Þª»Owzö3s^ÒÿOü‹´~?£pg&IçÂ'º3 »¼>Ò~`á¼´ÿoq˜ààwVÕ¡÷ŠúMqÏHüžBöT­€+‹ÙGêÏ œ- w†ºw{®£kf¯ð–ß;3¤ 6ÿ+ Ó|€7cLȼ{5‹Úl&›TÏÒÌþXýʃµààÎÁ¾™)¥³ÐÎFêa™Ì°ú¬XÊ5¸üê¯Bƒ½y(×FìˆÖÃ5¬•ÑŠ«—eê-Ò4«Áj@bÜÒ Äú>ë¸ñ¾ïó@mr+ÁjvõÉoH –7m1v¶>¤x÷‘÷Űq‹Ù¥ˆ?zãšÐbz-¶$nï­Ÿ½c=æŒëÝãžöÞŸÑs¶,0špEÈï%Ðczíe\iÅ»ªeeg–2ßú  Y4¹áL[5fX 3,ÖëÕâ-³>ϸ?^÷_RÂv1ù½1Ú„?j5ô\Iϰ*Ÿuõï9çÑ@^Kªz¹b˯9†€]K[‚4#+¢µÏ»¶ÿ¨•¡Y:­«Üìø„·_ÎÝGëdí}Æ’B S¬ú³­î¡Ì\u´>ï{­¤–ßø6?\3ÇG¬3Ë36þvLü=AC³Vme€¥}å÷ôç«ÐÔÁlâ<Ö ö7η7üö OYz$zp¶/ܳúïé›ï ™K0–ˆ»ÞcMñ0÷6VüÄ V…P¾§¨®ò}ݦüù}ú΋;&wìÖ÷–sî½^ëoµ^“õ^H÷¶õšz®Q{¶øªÞÛBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBŽÿö™èAW¹àIEND®B`‚(@€€€€ÿÿ€€ÿÿÿÿÀÀÀ€€€€€€€2222RR2R22"R2#%"2RR`#"R%"2%"2%"5"RR2%"22R0R%"R%"R%"R%"%"%"R%"R%"`%!dfFFFFFdfFFfFddddddbRP2dDDDFDFDDDFDDDDdFDDDDb#RDdDDDDDDDDDDDFDDDDFDDbR2DDdFDDDDdFDDdDDDDDDFDF%TDDDDDdDDDDDDDDDdFDDDDF#2FDDDDDdDDDFDDFDDDFDDDFRTDFDFDDDdDdDDdDDDDDFDdB#2DDDDDdDDDDDDDDdDdDDDDFRTFDFDDDDFDDFDDDDDDdDDDF"2DDDDdDdDDdDFDFDdDDFDdF%TDA³³§§§§§§¦C³³DDD³–DF#2DD1zzK:qDDD³¶DBRTFD³‰‰§C±dFD†FF22DDH‘‰ƒ³³¦H§DDD–DF#TDFA;˜vIƒ§DDd‰DF%2DDFz‰DDDDDAdDDDF"TdDDzqDFDdFK8¡DDDDFR2DdDk;dDDDDC±dFD³¶dB#TDDDA;;DDDDK:qDDD6DFR2DDdF³4DdFDa˜‰DDDz¶DF"TFDDDDDDDA‘dDd³vFF%2DDFD‰DDDD@FDD¦DB#TDDDDA˜DFDA³dDDDFR2DFDDA¨4dDF`6FD FF"TdDDFD³³¶DDD§dF;1vDF%2DDDDD˜DdF˜˜:q³³¶DF#TDFDDDa‰dDa˜¨‘DFR2DDFDdA˜DŠyDB#TFDDDDF:vDaF³³¶DDFR2DDDDDD§¡DDaDfddFF"TDFaaaa˜;dDdFDDFfDDDDF%2DF‘³±³DDDDDDDDDDDB#TdD‰§1¶DDDDFDDFDdFFR2DDz;;1DFDdDDdDDDDF#TDF˜˜DDDDDDDDDDDF%2DDaaaaaadDDDDDDDDDDF"TFDDDFDdDDdAfaaaf31‰‘‰!DFDDDDDFDD@&DDFDDDDDDD@RDDDFDDdDFD@&DdDDFDDdDD@`ffVDDdDDDDDDF@@F`aa`2DDDDdDdDdD@Aa`aRTDDDDDDDDD@fAaa`f#"bbbbbbbbdA`aAfRRRRRRRRRR AD########## ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿðÿÿàÿÀÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€€€€€€€€Ààðÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( @ÿÿ€€€€€ÀÀÀÿÿÿÿ€€€€€€€QQQQfffFdfffFfdPfdfffdfffFdfffffffFffdffffffffffdd4333D4fD4d!f0:084*fcsdf3)³74¢fcƒdfcfFc*fcddc0ffc8dc3d!fd:6fc7fcdff24fc›fc3dffC£fc¹4i³ddfcxFJ008td!ffd862407„dfDD74dFD3fdf«£¤fffffdf)##sfffffffDDDDDdDdFD !dfFdf0fffff0xxfffff043333334DDDD0C33D 033ÿÿÿÿÿÿÿÿÿÿÿÿÀÿ€ÿ€€Àÿðÿÿÿÿÿÿÿÿÿÿÿÿ( ÿÿ€€ÿÿÿÿÀÀÀ€€€€€€€A!!!!a@#S33353Q333333155533S2#fvfh3f1W†fWSg2#6sSX3b153g3f2#3f3hc–13PUvf2UVƒSVU1#gu3332UUU53S1#33333343333331!! €€(0`ÿÿ€€€€€ÀÀÀÿÿÿÿ€€€€€€€!!QffffdfdfffffdffA VfFffffffFffFffdaQ6ffFffffffFfffffd6fffFdfFffffffFfd6dffffffFffFdffdfffffffffFffffffdQFfFFFFFFffFfffFfdd333333¶33fFC36dFF002rrs†;‹ffjš6ff3 ;ƒ˜¶8¸ffI£6dQ6fc“¸;£4;£FfC©6d6dc9£fFdf8²ffC6d6fd«ƒffff;‹fdk‹Ff6ff2s6ffd8ºffh¸6dQ6dfCr¶fFf;ƒFfKƒ6D6ffc‹„fff8²ffC©Fdfdd03ffF;‹FfC6fFFfd3 Fff©£f@76dQfff@96fc0033;ƒ6dFfdfcš¤fC00:˜9FdFffd“f003003sff6ffFd:šfc3f306fdQ6fDDD9©6ffffCDfFd6f¸º'04fdffffffd6d08²s'3ffdfFfffd6f‹©£FfffffFfd6dD4CDDDFffffffdd6ffffdffC03‰©©©©6fffffff@dffFffF@Ffdffdff@t43@@`CD4CVfffffff@43@@@@@3!fffffff@C@`C@@3403@0300430!!!!!!! 0@C3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÀÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€€€€€€Ààÿÿàÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰PNG  IHDR\r¨f IDATxÚíyxUö÷¿UÕÕKBIH B€„EUeWG•qÜÐqf”q–Ÿ ޾:nã(›¢È¨È¢²ºƒ¢‚Ù!IYºººªÞ?:ÝéJ/餫;ôù<O“ÚoÕ½çžsî¹çAAAAAAAAAAAAAAAAAAAAAA†^AhñÚþ£ìß³¦^Qô2MhjlDÚ€xìñ¿R{uæÎš­ ôOÓ Š»úÆR“ -bâãè%š“ÝÁ&cè“Ú£ÓéHA€ A D¨`é%$•ƽ"hèuáíÅ‚’נ໳ ~:gEq`–zãуhÀÚûf†ôS&$$`ÉÂE¨¨ªÄÆ7ß ê½']: &NÀŸ~†O¿ø<à÷ËHÏÀü¹sqòÔI¼û¿ÿ‘h]§-Ê[…26ЏfŸXÛÜ#à †‘¡4Œ(†ì3fggcß¾}ˆŽŽÜrË-¸êê«a±X~ïû~ÿ¬þû〢 ƒU«VaÍš5»ß%_Œ]»wƒe€apÝÿþ‡ ö¼z§ÅEþ}LPþ}Ü‚#g[¸A8`Y€•m‚€hçKèÁ$€û¯‚rà£|ÄO÷ïÇEãÆ9!<ôÀƒxú_Ïô¾ƒ¦á§ãÇ\¶4¥ee¹ç?þˆÌÌLȲ –µYÊK/Á;ïnî–Õ+''GŽa4Õv–ÊÊo­¸íKб@„¢–+² ÈÔ¶ƒÕ;ߺâ7°ZEèt:˜ÍùóŸÚíï»ï>¤$÷o9Ǧ·7á˯¾r{læ¡vuűmDÎÈ€—-}ð UC´3tp¦J,_¾¹#s`6›¡Óq°Z%Ÿ~cãâðÂó/àÛïµ AƒEQÝ3+{ð.™€ß|Ѩ\õ‰`»B@-½k™5knýí­ªÆùñÎØ½ŸÇsRú÷ÇêÕ«˲Œø„>ÀÛo½…·þFÕ(Þ~kSÀËöõhhhp˜P__‡¾Uw˯1cÆ8Þ]h´÷ ?¶ZݹíØk¦OW›¸;?êqõ¦S£)ê•—K¶†¯§Æ d¬jüpÙä)^ϹrÚêÊÀ²šêY[xà~lÛú!x=Y–ñȪ‡±ó“^¶††\}Å•8ž—ƒÁ€üü|L›6 ªãÊJËTïÀÞ¸Ûû}ôÑGq²¨P-LV¬À¾½{Áñqûí·ã«oö¸zÓ! `g‰ \õ‰€RÉÞë¡Âðìáàx’(9¶M»rþôèŸ=ž3õŠi.ªõð#åÒ¸Àb±àº®Gƃ8ßpUUUA+ß¡Ã? wÌd¤gàTÁ)·ÇDDv¼RʲŒçž{Îe{MM ®ºújd¤g î\jjjzd½ñYx礠\µ£Éæà£^?¤ˆ‹‹ÃÈÜH¢Yn5Å.?Îã4P¸tÂD—m‘‘‘ȲÛú8Up*¨¿í½=qþüy°¼²,»ü«­­Cc£kÕ¿ŸÞ­°s¾_Omü>k•Y”_m³ÑœÍ³/wÒÞ÷ç\Â##†e«l^Gï&ZqÅԩظÉÕNÏÉÉA¿¤D•À°3dè•CÌN”ÞSï^hnn†Éd X:wîœ[GcFz²³²ðáŽí.û-\ˆÉ“§ _ß¾¨¨¬Ä矆µëÖy-cTTL&“ãÞ’$¹4Ì;ïº ?¸ ‚U„`±À ×¢ ð,JËÊp૯‘;z”ãxƒÁ€5Ï<ãõ~’$ã8·÷s~—)IÉØþÑNÕv½^% aâ¤KŠòr|²kW‡G.¾ð"\uÕUHJINÇ¡ª² ß~û-vïÝã·pòIüê½F †Àt¬ë`´0K$ÀʵY×_ XÃPH° ”ˆÎËffe¹xÈíLž<Å­¸êŠ+Uv°3¹9¹nƒ|Ý´ Ï>û,a2™ Š".ºè"?~\uÜõ×_—^z&“óçÌuëæÍÇê¿®FZzºêøe˖⡇¿½Í£ÓrÓ[oáòiÓÐØØˆÈÈHìÞµ ÓgÌPSUU…*¸×L.3VÕøí×ô4Œxçwâ‘GAss3t:ššš‘“3ÒEóùõ¯oÁ«¯¾A0ñ’ Á¹léR¬~l5ú%%ª„ó’—áÁUâæåËqäȯß5''O>ñ$&]6ÉÅlaYøÇ?þ'žx"p eC½R*à;Ð{³,`–³Àɱbcc& ÄöŽéÐ;zzÍÓ.÷ýÛßÿîñøHSX–EdDÀ0ˆˆRûr²GàÝ÷ÿ‡ÔÔT‚Y–ñÞïcü¸qXõÐCøõòå’ÃGŒÀÁƒ‘=,Û£IsÕWbëÎm*ŸNÛkEFFbõêÕ¸|êT,Z¼¸SÚ€WpÏÁ&åéï,@Ö÷Q> 4Yß‹Á‚Qz̠ädVÁ“)¢µ²y¨°ÚÛßã°E™:.†YQÀ2 š›Í`YƒššŠììläåå©ÔÛ‹/¹Ä¡þÛ*°“É–5Ìý§E—J-H­‘‹çΣ¶m%dý騪áyÒVX–Åú ë‘5Ìõþ jû½¾á¼Ïïç‚1cmLN|ùÅ^{`A´8žššÀ:…²747Ál6«ž½OŸ>ø)/¬)²Õb‹"ôÂÆ0þâ‹]¶gggã½­Ø¿í`ò”)xõ•W0wÞ2dÑ (˜Í¶9½XÏ]bx&0m:v¼^¯GNn®£Q}´sÖ¯_¯îí§LUý=iÂD [¬_¿¯½úŠãÛôKJÄС®Ž@¹ °ªª “.» ß:äÒ°eµÇ´ôtL»ürMßé½÷Ýë²í/y´ýuèºÌ2*çàÈ‘#QX ×ƒ¼lm·ñÀ¨Ñ£‘““ãjîlÚ¤n'-ÿ¯8SŽŠ3åYu¿}ðÀ<óÌ¿:gyzÚqåÇ ôl«ŽÀµS J`d‹C³#ñÈ‘² †á ™eYÛÿ[ ÄñdhÁÈaÙ¶™–Jr¶¦;>ܦjpS§ªã.›\õ÷uóæÛL(§{765aÑ ‘™‰ŒÌLL¿|ªCðükÍ3˜tÙeí–§Ãàã|‹m¬_PÚïùk€i€ïnˆÀð^’ãáAp‘¢ö—ÓvȊ胫4&«EÄÇ»w7ðª¯×·ŽÝN»bšê{÷îuñä=Úk#öF^^|õµÛ}K/ÁêÕ«QZV†o¿;„›o¼) õàÞßßI”T=ò_ÿ[û?ë›úåW_áäÉ“î;Ñ+…5kÖ ªª _~õîþÝí–õ¶Ûos9fæŒØòþ{¬"$«ˆO?ûS&MÂü9sñÀªýó=»Û8wO£ž·5no=?Ë&%qøè$‹ÕU…wRa:[¡ÏäæªvÕ5ga±XðÍ×­Qk‘‘‘?n¼Í©Û¿?FÉuT²ÆÆFTUU¡î¬ÚvÏÉÍõë¹>ûì3—mÏ?÷œËة—z`•´™=¥7âΕwÛÊÚR«««}†S|›½úÕ—®¡Ó<òˆK¯|ìÄ 7emµùâââpéäIªc>Ú±Ómhö™ª*·C¬š€-…)yŸÅ§Ð #%†Ã¶éˆ‚•ìù®0FŽTõe-ÃZ{vïQ÷FW\ÑbL…hií?ùøãÁ¡YÙÃüjgkÕ׫~Øå8Žã|ÒX¶ãuhÅ·AÒ©£Öž]£ýÌÅóõçTWœ)w;4Çëy¯×3zt«ãÏîx;°s-\Àº“‚+Û¾ÍoÐ,á­)Fð’ƒÑØÚК÷,²G Wõåe§m&Ü'Ÿ¨Ž»dÂ%€‰—LP eûq•m@–û(B…9Ïrªzpþ¼{¯½A¯÷I”;‘Lfå]wƒ—D›°SȲŒ^z1àߤ®¶ÆK9< »¸øx•¶¿œ ®xñ¸è|°Éj€¹Ãô˜Ä«í}»£¼ýŸžÔ6“wJÏØÀ×¾V…¾Ž9QQQÈi3Æ¿oï>[E+(@mmc»$JÈÉÞi @aÕõÀd2!**xëιv–-ÒÑiíé'Ÿòö«•æj0™¼h2l;šŽz¿(IÁ‡ê`‹÷o‹Çrææfµ½O¬!CT Rœ:e ,±X,Øõñ'Žý±ñ±X±bRœF~~¾#Åb± ²ExØ6b„¦æœ§Üp>°êAUà§×á_Ï=Û±‹tR“­óaÔ; `;ém¢&.ÌV¹}õ¿žÅ„`X¬žy]Ȉ#T ²ðäIU·{ïÇ~«Ãã?ޤä~ŽýÛ?ܦº^aQ±Ú&3Z³F!¸'sf¸ñ5z´ªn®{}mÇ'0ù(ì<-»ÕQŽæýä2<~õ5WOØì_DœˆÙ)³H­° ÉiÛ^zZ݃ïúd—J;`Y¢¥µ!îÝ£vVTVª5Œ¬,ÍŸ™Óñ/=òGÕßÍÍf¬¸õ·½§ZLiYT'9Y´x12Ò3\ŽÕëõ¸`ÌX¿ï©]ùMr‹Lh§0m Çr.&ѽ÷ݫ٢Á ·ÅøbGëµwl>ûÜs˜;k¶ÛÉRÎlÞ¼\x¡Ûïé ª7=îÃ&å@¥ˆ†ç0à&`PoùsŒ°"i3cútìÚ½Û'{ºoB €#G">>O=õ”Û±ö„„d ‹`Þ Gyy…G{ñ®;ïüðÃa”––¢´¬ÔqÍ”þý1`ÀX„Ö{;qÜ­]ï|,Ïq% ß9¢V±[Ê16w”#àEoУ¸¸Ø%SOvv6b{ECEè zÔ;§ªô ;j4ªÏžíxoßò|GŽþ趬îö;“‘žÄÄ~Ž÷ÛÐØè6×@TTFËV•5ÿ—_Úž\¶t)&N¼ƒÛfhž>sÇÇ»ï¾ësÃ÷´0H§À‰9Õ\؆ÔÚ6(wÛ|ÅŸs{ =õxî &+Éú££J¸«¨þTÞpoüáø<{LÜùh?‚@ õÑm§i¿F€RxD €¶N@$ˆ0ö @a,‚c@&A @™A„(V9 (¸7Ä()-¥—‚#•Y )..&ê <ú—¿ ¨ ±±±åÀM¶âY®Ýë;ãíxwûìÛ:»Oµa ¶17½]£Ý²3 6–û*°Fï~,CoK3¢kc0uËzÕt¾}ú&¸]=˜@ˆ1{öl‡sU–eð’(ã9M~=öpnŽóvN{×ëè9öl¸ÎûÝmóõúžÊmÿ;¿Æ€}‡%¾9ø}nÏõv“!APW>–m]DU„&¿ž2æ´½ó½ÝãmŸ'|¹ž½Üž¶ùz}wåq>æ\ApÆEàœzrÒH„ ÍM¸éÆéEt'i„6½.¸ð\tÑE¤ú$ÂÚšܸl½ˆî™E×I[ØÝô_çmöÿ·ýµÿßÝö@Q~æ ²GŒÀÕ×\Õá¡?"е¿ïAs‹Y° ¢¼¢$ypç4DÑqŽ}¿}˲Džwl³ßþ€j;ÄÆÅÁ`08ò h¡þWVV⎻ï‚Åb%ç_(æsºT z ÉÊBdT$ z}Ç8ÃBVd—mŠ¢@âØßö×~ÈŠ  "##Q{îjëjaÔ4)ßÙ³g‘––†ùóæQÂlüŒ÷Œ@’° €@14;ïmý µq(Šw'™'Ú~Žý|ç߶ǹ»FËù ¯¿³ ‰Ðëõ(+-Å=÷ßYQ¨ñ“@ ]¿=¹¯ûÛþúpÍ›7ãÈáÖ­‰ê_[Sƒ¾}ûbÉ’%=®ÒTœ)ÇÏÇ~ÆéÓ§QZ\Šêšj˜›šaUd˜x=ô&ÄÇÆ!¹2úõë‡!C‡"555}:›Œ4€ð†ã9l\·‰‰‰ªœ„þPTXˆ[o¿ƒ! «(çççcÍš5XµjUP×OGâóÏ>ǃp¦´ ÕÕU°È2 ŽcÁ²,Žƒ"IŠ(B²Ê`XÑÑÑHJNƘ±cqÁ…àŠ_Mƒh‘BàË‹€Þ“¬HØþÁ6ËËCîèѪœ„¥¹¹±qqX¼t‰ošKùךg°áÍ(/)ÅáCßaÃ[o"-=]ó÷"¶nÝŠí[·â缟Q__ØøxÄÄÆ``Zº‹Ö¸O j¶8sú4Öýxë^™C‡`ÊÔ)˜?ÿ:ôKJ¤ H kÙôÖ›ˆ‹k1 ýküz½ùÇO`îüyèÓ§¦ÏùÑŽø÷ /àıcÈ’‰Æá缟±ðúðö–wýÒ ƒci²ÆÆF¬_»¼÷> ƒ¤äd¤¥§{ÔŽ¼%P5ê è•…Ĥ$ˆ¢ˆšºZ<ÿìsxóÍ·píÌkqÇ]¿CdddØÿLا{ÏÔÁðÍÁo”œ¬‰êo6›¡7ð¸ñæ›4{ÆãyyøÍЏgåJœ««Ã¨1c`ÔPWwƒeY,˜jkëüêíeYÆþóÌž1Ï>ó/4[ääæ")9Ù‘…¹=_ާD¨¢(:îÑ/¡/Fƒ˜Ø¼ñú1㪫±yóæ.¨ý ÍwðÆÚu0™"*¬¿½á©LštÒÒÒüï dOþßXºd¾=t9¹¹ˆïÓf³Ùñ¬‚YÀÀ´4˜Íf,]²¸Ó9vïÚ…ùsæâ©ü Ë"wÔ(ÄÅÄjá, DQ„Ùl†Qo@Nn.t:¼ç>ܶâ7hll ÊAsz6ùùùøüóÏ0`àM*ºÅb$IX¾âÏCŽ>òá`æÕ×àµW^Aߤ~ÈÊâÑ?a±X•= ¿œÄÊßÝÙ¡û666âÞ?Ü‹;o»•UU5f ¢££a±X[ñœ4ƒ> ¸püEØÿùç¸öšé(,(b `IWÖ¾ö: Jš„;¦ü^:ÃGŒèôœÿŸŽÅòoÄý¸MMMußÞ =i(‚Ù¦®oÿp;žÿÿϧ{}ºÿSÌœ1Û·oGöˆHMI xÃ÷ä?£rrÐÔÔ„YÓgâð÷?É “ŽTWWcÏžÝHM¨™šÛØØ€oº©S¦Ds³[ýW,]¸‡8ŒÜѣߧO‡¤(ŠÈ‹5O<}{÷z=öÿþþO,_~3«„Q99Žó»*í˲°X,È<qñqX²hŽçåu­„mé_í¿¨««C¯È(M®W\T„1\€qïp#Ú¼y3®½ælX¿ÒbÈСJF£Óâ¾{îAuuµ[•ùÍ7ãåW_FΈ‘HJNV ™®ŽXlnjFRr2zÇÆbé’enË <9ññ77›±mëV¤¥¥iÒûó<ºº:,Y¼¸Cèë/¾Ä•—OÃê?ý²,#wÔ(èt:¿žÉb± _b"dYÁ·ß¡ò`æŒøæë¸è‚ ½nHUÈ–gJOO‡¢H¸åæå̈ÜÎ{& g²qãTVV"ºwoM®WYQ¡YY¸fÖŒŽ½|‡Úš³à8ý5kŒv§à7‡¾Å“O< 8üý˜7{‘3*7侫&ЄÁ™CpôðxúŸOÈþgÈ v­_Q°åíw¬Ñ¸¿^¯Ç™Ó§1ÿúë Y¬òÀ_4n¾ùþ{Œ¿äbüöU®ÌFdÇG;vॿˆï¿ÑÑÑÈ4‚YèŸÊîÓxù¥—ç u‹÷Þ{………HèÛW“ëUUVb`Z,\hÛÐ Ïÿ /½ˆE ⛯j:în2™Ð+:¯¾ü8=Ĥ¤nÓø}½Ϭy"«]àªÌpv›ƒL€pâ·ßFl|¼&*°^¯ÇéÓ§1{î\¿g=þWÜ|Ërüpä°¦=(˲˜–£ÞÐ¥^~Ì™ŒÁƒðå_âÇoh6±ŠU$Š 7ðùgŸá‡ï¾GjJŠ&×;WW‡¾}ûÚÖùëdïïÌÃz‹,DÞÑ£0 ùàÝpØ‹çyèx6n|Óï«A@ÏbÃÚuˆlöó·'Ôëõ((.Æô™3a25ëY{ü¯˜8ù2ùá0ôÈ’ÔE‰‰‰8tð mXP³Ù•íø[Hè9ütô(¾üâKÍÂ~ëΣwTnZ~38žëÔR_žxñ¥—”œŒâ’-D÷îêêjìÛ·/x7%  çðúkÿÇqšLúáy%E¸êê«Ñ'>’ŪiÆ_–eñü‹ÿFíÙ³¨o8²j¹ý7Ù•Àh4ààÁ3€°%%%Ø¿o?Ò2Ò5q„ ‚¯kòË0šÛÖ™™™¸kåJœ:‘2Z€½±764 ¤´E…8ùËIœ8~ÅEÅ8WW§Z›QQ½PRT ƒÑ¨°Êao„EBkס±±Á‘òÛß)¿ÇÃäÉ“‘––fKøÙ"´æÖÛ~‹}{÷¢¨°Ôtˆ°3½}aAêëë‘––†œQ¹Ø?ƈfÕ5Õ()*ÆÉ_N  Yz5;½cbpöìYüòË/Ú8rYб€Õ‹ @9»7õõõعs§fa¿öU~íž–aºÜ×Êßÿ7/[†¤ää.I-n0pº´ ÕÕÕ7nfΚ…)—OEt¯^­µ”Ÿã9ìß³=&ÒIDATo¿óö~² 3ÒÑ+2J3! ÓéPW[‡’âb›h/‹t»@ñÜøí@·6z¼ ðæíÂ~íS~Ç_<¹£rm•/Àký»x<.›<ÅEŶ£Aîõþ‘ѽðäSOáÕÿ¾†Ysf#::ÚmÙ%QÂ%&àÙgŸÅŸþ¸ §‹KQÏeEœ¯×Ð/B@=Y–ñÁ{ïkö+Š¢mÊïò›ƒºÈçâeKÑÐÜä(S0ss3~8rÓgÎÀ[·âWW_åy­U{²U©ë/ÅŸ{§Niê`XÆÄáKÀݜ·Þ|ÇÉGŸ„M®W^Q1\€ñ_Ôr\>m²³²PYQp€çyœolÀѼŸpß½÷âoÿø;X–måè@£›5g6¦Ïœ‰Çk.؃2@@÷…ã9lÙü.R“ûkÒsò<Ú³gqà ×ÝW\y%ª«ª:äfoü§Näãÿü'nýío½~gË|×ïW‚ãt°Z­~?;ÏóPä–g¡eÖIxcûÛðs^žmŒàÿ˜ŠªJd‚×^Û%å™|Ù$DDF4ž_û1üËŸ1wî\ÛF?m©©©=zª*+ýÄ¢(B’$ÛãC  ûòΦMˆ‰‰qØ¥þþTœ>ƒëÜÐeA(#Gå =#µ55Ñ@ôz=ŽååáΕwaÑ¢Ešö²&NDÃùM®¥ãu6EÈ3ðÝ7ߪrýûÛcÖÕÖ¢J ,\¨iÄ_G°X¬:t(jÏפñÿôãQLž:w®¼[½Sƒ†6xH&t¼ÎoG¬ÝÐôÐlÀžÇëëÖBoà5Ëõ_ZZŠyóçiï߆猄d¶hêàygNŸF\|žz晀Ø× }û"&&V«Õ¯oa Ú™|Øö¸@ üü||±ÿS l üñ7xæ\]zÇÆbɲe~ IIJ†ÁhÔ¤\Ϊ¤¨6½ “ÉçîÓ'¦¨Hf3tQþ%aåt,$IÖHHÑâ =Nظn=,‹#hÆ_Û¿¸¸³gÏn]»® '¢$&'¡wïh¿{Rgíæø±cX¸xÆ]<>`e‹é^‘Q4p^ʲÒ-sÕÕÕøø£00#]{ó|c¢¢¢°téR[fÚ.6’’“Ñ;&MMMš\Ï®Ý<ô§Gü«õÖkëu`9VYÃ%ÁµVí%%нذvjkjÕËïk1 ƒ¢S˜6í ôKìI”:½ÚV ˜"" Y­šØþ§Ná7·Þ “1°!Æ:V–åÀÈj~~™áÚO F û >ܺÓÒ4É÷g6›Áëx,[~“£²…‚êaÔ&ûPuUrGƲeKm#lŠ"Ñ ÇV9?ý¼«H6 €L€žÁúõëQVZŠ˜ØXM*ZIq.›2™™™!UNƒÁà·€ãyg«Ïbò”)¶éÌl ÃAa¿—(аŠVM4ßlì6üoËǸ¿¿Ø–¯l ?B-ûŒ_E0, 85Y±‚ÑHÐp<+Œº[ßÿ¿œDß~ý4éýËJK1qâDŒ5*$ËË8¥6ëlíñùAy^0šhZ—V’‰FzÄxgÓ&ÄÆÇkr-QQ__ÅË–¶N9 %- åYüp”$«&¶´OÜ’UÃ_ À.ô4}d™Ýš/¿øß~oËõ/‚_‚çy”WT`ìØ±˜8qbkM Ñ™gÝe<œ£‰PåÐäÊdt÷¬_»Q¦ÍEMU®»á†nøÝ-L¯Óv6`{)ÁH„.?=Н¿üJ³\ÿ•’•…™³® ÝBkä î#kn«( g êÞ½¿³mè蘭òòrÌ?¿5*.óÏk4žÎqÁŸ¢©É¢Õ·ñ¦•H X…%Š”””`÷®Ý6Ðo‡Ï󨮮Fÿ”ܰàM{ÛPÅjׂXF-LE¢_†c 32 €PäÍõÑÜÜ“ɤIïrª°³fÏ‚A¯'Û?„q I;# illÄŽíÛ0`ÀM&ýÔŸ;‡Ôäþ¸iùòÐUý5¤5(XV‹v“€XûsSF ðë×®EEy¹&¹þ àÔ)\}Ít›6à¸xM”ä_ƒ ¶@K' l7‚$¤É1dYÆ{[þ‡”–Þß_»²¹¹Q½¢qãM7¶fà q ÀßH@À)(ßL±jb¦©4€`@À¡Ç–-[ê$â["ÿüõüáò_]~I‰Î]V·Pãý~lmi­BÛØ7ÈBðzom؈Ä~‰mÀÌf3`ùòåÝóãi1¬aÇ2:ÍžW–ƒ¨q –L€á“váç¼<¤¦¤hâü+).ÂÄI—"sðà ,¹Z¦TðliY±BÖ2PQzø„¡n•ôÍõl SjÐÚ§üÞÔ²ÎÛ]†þºá%ãCây>¸>€0 Ûˆ·ïÂ×_}þ-½¿¿?ö)¿cÆŒé^Ã~ÝpˆRÑhmQaœ˜(^#|Àº7´ËõØbÞ°haØ~x%ˆ¶´Ý ‰Êªõd öÌìz ðéþýH MØoIi)rGƤË. Ûž„éUZ ? Ë2­“‚ h ØÐ’ëßh4jÒû—W”ㆅ ºÝ@Pcêe ‘ Ðó@mm¶o³…ýj‘ ³²¢YYY˜={vXø`ÆÔÛüÅ%ø)ÏN&@ײq}K®Â~‹JKpýü룱û}1Eñ;8Ø€=' 8œ€Áj dt‚ ØÂ~[Öùó—ºÚZ¤hsþ1Á„ÓÒÐ"8˜>†á4K æÖ  g €MßDYi)â5Èõ¯×ëmëüÍãX7P„î'4J l$E›ÅLõ> >ÒB-[¶ 1¥¿&½mM 2‡ Á¿ûkêfÎ$»  I(p7ò¸Ó†ÿÙHÀíÛ¶!ÿÄ ääæj´Ðg#FƒÃ?ƹúúV Ø¢ ÛCc#Íœ·ÙV¥eT±èmÿVIÖkß/"M¸tÊ¥-ží|» ìÜ~îe&‘€D €·6mBLLŒf+ý$öë‡cÇŽaůoǵ¬1Bp‹ªŠ*¤Lŧ_áS™d¹óju0€Š"ARä@\˜´€ž(8€ï¿ùC³²´í‰XhéÝåË«ä”p ɇÊíÏ󫆃ЈBR •BÓðúoÀh4øíéTã ô3IJ³Þc°%#P@œ–þ¾£vº@2Çóòðõg_8Â~Þ@ Ž€t»| Q€ ³~Ýp Õ=‡€hÐ`8Þ÷…¤‘Š3娵ëMrý÷Xt\X_‹¬À’Å÷aI҂ȺuëP__“É’Nº.¡mE—dmC»³iÔY!à|ž•4€ ¹ÙŒÛ¶!­%ì—¿çНE(ppY»t`*€¢P}è)`íë¯ãÌéÓšMúé6²—Î_‰ âZ­ Àó¼öš‹ŽL€èÕ>xï=G®ÿðµoYW5·#Çw·òu€Ô o±´2PpØüî»(8u }úô! Ìè¶ ªÑZ8u¶e}Ê ØsÀ»o¿ƒ¸„¿~ô¤ 4ÊîêdY&¨š9̧û?őÇ‘š’BÃ~®Æsà.Ý Ók«ŸZ I6¼ë\— € kתrýÚ©ç>i2¨Ò‚Ç#'` 9üýª\ÿ4ÉœãÜ``|˜%ïë!éÈ >+—hA ;–ïªDœ®a5µS­Àðè0Wö×10rí/‰ªgñV± Þ@éˆî…Á`À–"+ ¶ôòžhÑB.ìF>ˆ52€Å»TDp²\Ä®‘jÑ­°ÊV¼xBzq`¬íkcâùðW'és;/F€üV‚^¯sHV‚užüÉ‚³u2 ÖËDIÞüª¿ž +0o @ô>hÍáû ϵ´6~ò !LUÆ£D —½ºÀàÊ>=ßÉí*˜#k lO è­àîÏ=+@0›a0©–!‰^¯Ãô$˜àK5µJX9\~înåöµŽL¦¾/ LÔÙÖW2ˆÀ^õz–|bÆ÷åV ZDÉëy¼EF|$‹iÉz&,À?Æè¸öµˆªD67á§z£Ñ!¢+Ïáúš°ñˆo 2ò6Ê¥D³ÿ«‹wäÑȹc(œcÚŸ,aЇE9ŒÝÒ„gl¯çhÅZ¢Ë{þokXŒÙԄͧ$ FÖµoÖ6F ·d™Â¢{/äkõ JûqN/ç%LJÖã9ÀŒt=D‹D5’XCÁeÛѳžH0é­#ӀЖ3fçηôö:Lë}Œßƒöª“XoîVÔ§ÂÆ¿^«œe9 ¢ªT[,‘Wr‹û!ÓFûZnOÇ9o×wè†§Ž§ƒ“‰Y¥A~v½“ÏîýF½rNjyÑÅÝ Õ…ögdÝ<¯,»ÿõtnÛ2z« l;ïÇùÚö¿ÿßÞu¯Ïzh,žž¡íù¡ˆÔµßN°î2–2ð†ñ•:Ŭ(@×yM€ B»ÓÚ üûnË2„¥mÚáBÜxNùÑÌÙ*D·mü:‰Á[Su˜?Ð¶Ž©NüŽ/•çR£mRAt›†o`R8 tqtØ{¤;ýÞ9)(7}.¢QAŽ(¢`± €{FèðôE4åPi'¥–|, —[%-At%,k‹ûoIî9-Ø5ƒz}M€{6)¯ž”P/:ÍÐ;©]ö(L D{{½ ¸²‹•Ãõa1¹§Ë€u'eG©;*€FI¥¹ ƹ™$$1î·„/8¥ïft: cl pía¤FLà̮ӥ¶YÁM2ŽVɨé[ÚÉ(Ò›AN‹¾<6qüAAAAAAAAAAAAAAAAAAAAAAAAAA„ÿhb(³”IEND®B`‚(@€CCC444õµ5ó°òª ò§÷® """ÃÃÃ___”””###QQQ   ò§ ò¨÷¯lllâââ øøø888 rrr///PPP---ööö'''ZZZò¨ò§ô»GõÀWøÄX›››÷÷÷cccfff½½½ ¡¡¡qqqÒÑÒ¼¼¼TTT‚‚‚```ÒÒÓHHH‘‘‘««¬|||ÞÞÞ999ËËËMMMò¦óµ:øïÞÊÉʬ¬¬¦¦§•••ñññÜÜÜVVVmmmªªªÎÎÎbbb]]]¾¾¾ÕÕÕ^^^ØØØ~~~ddd)))óªòªùóèSSS¶¶¶[[[¹¹ºÀÀÀXXXEEEŸŸŸtttò¦õÆfäääïïï!!!ºººµµµ®®®ssswwwöІ©©©jjj111ÇÇÇKKK———ŠŠŠœœššš>>>ÚÙÚùùù¤¤¤¢¢¢¢Žc¢vqb2òòò¢¡£¥¤¦õÓ–ííîEDGKJMHGJèèèDCFJILˆ‡‰}|ŸŸ¡„ƒ…IHKíííÕÕÖÙÙÚqprooqjjlCBEGFIxwyÐÐÐßßàFEHÅÄÅ‘‘“jil‹ŠŒedgXX[MLONMPëë븸¹RQSXWZ™˜šZY\MLPPOR~}»º¼GGJ²±³ª©«RQTÃÂÄ¿¿Àyx{°°²–•—šš›º¹»îíîKJN Ÿ¡gfi’‘“SRUÉÉÊçççvux††ˆÚÚÛEDH…„†{z}“’”_^a_]`[Z]ïïðLKO£¢¤õõõVUX®­¯A@D?>ACBFœœž­­¯ëëììëìöÍ{öÓò¨ôµ8ô½Mò¬öÓ’öÛ©ôÀZ÷Þ°øèÆ÷à´õÃcò§ôµ6ó«ó­ô¯ô¯ô´1õøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúöooo÷ ooooooooooooooooooooooooooooooooooooooooõéoïðñññññññññññññññññññññññññññññññññññññòóô ìoí‰!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!îoéê‰!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ëooç!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!èoo{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’o{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’o{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’o{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’o{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!‰!!’o{!!!r³åååå³åååååååååå³(!³åå忉!!!!!åååå!!!’ o{!!!ß॥¥¥¥¥¥¥¥¥¥¥¥¥¥áX!˜¥¥âÛ!!!!!!ã⥥âä!!!’o{!!!ÝÞ™™™™™™™™™™™™™™™ª¨!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!Ü™™™™™™™™™™™™™™™ª¨!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!ÚÛ™™™™™™™™™™™™™™ª¨!É™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!Ö™™™™•×ØØØØØØØØÙ\!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!Ϧ™™™ª@!!!!!!!!!!!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!!Ô™™™™Õ!!!!!!!!!!!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!!Ò”™™™ÓT!!!!!!!!!!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!!!Й™™™Ñ!!!!!!!!!!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!!!Ϊ™™™¦Ï!!!!!!!!!•™™™Í!!!!!!Ê™™™™Ä!!!’o{!!!!!!!!Ë™™™™Ì!!!!!!!!!•™™™Í!!!!!!œ™™™™Ä!!!’o{!!!!!!!!Ǧ™™™•È2!!!!!!!™™™™É!!!!!Ê™™™™Ä!!!’oo{!!!!!!!!2¸™™™™m!‰!!!!!Ÿ˜™™™™Å!!!!!Æ™™™™Ä!!!’o{!!!!!!!!!¿ž™™™À!!!!!!Á¦™™™™¦Â!!!!Ù™™™Ä!!!’o{!!!!!!!!!º™™™žD!!!!!!»™™™™™™ž‘!¼½™™™™¾!!!’o{!!!!!!!!!!·™™™™¸2!!!!Mª™™™™™™™ž–¹¦™™™™”@!!!’o{!!!!!!!!!!³ž™™™–´!!!ˆµ™™™™–ž™™™™™™™™™™¶2!!!’o{!!!!!!!!!!!®™™™™¯!!S°ž™™™±v²™™™™™™™™™ª6!!!!’o{!!!!!!!!!!!©”™™™ª«!!S¬¦™ª;!©­¦™™™™™™ªO!!!!!’o{!!!!‰!!!!!!!›™™™™¢!!!!ˆ£|!!!!h¤˜˜¥¦§¨!!!!!!’o{!!!„œœœœœœœž™™™”@!!!!!!!!!!!!Ÿ ¡!!!!!!!!’o{!!!“˜™™™™™™™™™™™™™›!!!!!!!!!!!!!!!!!!!!!!!!’o{!!!“˜™™™™™™™™™™™™™”F!!!!!!!!!!!!!!!!!!!!!!!’o{!!!“˜™™™™™™™™™™™™™™š!!!!!!!!!!!!!!!!!!!!!!!’o{!!!“”••••••••••••••–—!!!!!!!!!!!!!!!!!!!!!!’o{!!!‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘:!!!!!!!!!!!!!!!!!!!!!!’o{!!!!!!!!!!!!!!!!!!!!‰Š‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹ŒŽeeeeeeeeeeeo{!!!!!!!!!!!!!!!!!!!!!o{!!!!!!!!!!!!!!!!!!!!!o{!!!!!!!!!!!!!!!!!!!!!o{!!!!!!!!!!!!!!!!!!!!!k|P}~X€l‚1Bjƒt€€€„…R]l€†‡@ˆ<op!!!!!!!!!!!!!!!!!!!!!%qlrsrt!#guijWvwjkZ[mx#!yTzgbcd!!!!!!!!!!!!!!!!!!!!>Sef<Q!#ghijVWklZ[mn#!a!JKL!!!!!!!!!!!!!!!!!!!MN$OOPQ!#RSTUVWXYZ[\]!5^_`a+,-................./012%3!456789:;<=>?@ABC DEFCGH:I  !"#$%&'!(!&)* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿðÿÿàÿÀÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€€€€€€€€Ààðÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(0`ó®ó¬ò§Æ... LLL¯¯¯ ¥¥¥"""XXX###§§§ò© ò¨ó© ÇŽ ¡¡¡†††111ììì WWW 222QQQ<<<OOO„„„éééRRR 444MMMAAAbbbò¨ óºDøêÒøõïÇÅÀ¸¸¸´´´uuuÉÉÉ,,,ÍÍÍÝÝÝžžžÙÙÙººº–––ÁÁÁ××פ¤¤***ÌÌÌ‚‚‚333ò§ó­øøøÇÇǼ¼¼¢¢¢ÅÅÅ[[[¿¿¿$$$¹¹¹(((³³³YYYõÄ\555   ¶¶¶KKKŠŠŠÎÎÎ%%%888îîî½½½pppÂÂÂ!!!õÆd ÑÑÑ;;;;6*<-5* '''õõõ¸·¹º¹ºº¹»ââãöÝ®òªò©ðððEDHJILPORïïïöÜ®EDG—–˜MLOååæ´³µµµ¶xwz‹‹ëëëôôôòòòÇÇÈ­­®¹¹ºææçôóôVUXÜÜÝööö±°²UTW€÷÷÷XWZHGJJIM’óóó±±²~€nmpIHKœ›zy{ƒƒ…badÓÓÔÌÌÍNMPÐÏÐÀÀÁsru¤¤¥“’”žŸ¡ ¢pprÆÆÇîîïSRUÖÖ×»»¼ÏÏÐihkkjm½½¾ááá~}€vuxääåGFIÞÞÞ_^`QPSŒŽ®­®çç眜£¢¤ïïðTSVWVYYX[ùùù«ª¬\[^ÉÉÊfehffionqlknèèèdcf§¦¨õÄ^öÜ«ò§ó¯ù÷òõÆgó¯ ò© ô¾RøïßøùùøõîöÒò¨ò¨ó­ó­ó© ó¯#ó¬òª ò©ó«ìíææææææææææææææææææææææææææææîïçèéééééééééééééééééééééééééééêëàáâÎããããããããããããããããããããããããããÎäåææGÜÝIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIÞßÙIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIÚÛjIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII„jIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII„jIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII„jIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII„jIIÑÒÓÓÓÓÓÓÓÓÓÓÓÔÎŒÓÓÕIIIIÖ×ÓÓØII„jII—ÐËοÄIIIIÀÁ†II„jIIIÏËοÄIIIIÀÁ†II„jIIIÊËÌÍÍÍÍÍͨοÄIIIIÀÁ†II„jIIIIÈÉIIIIIIII¿ÄIIIIÀÁ†II„jIIIIÇ«™ IIIIIII¿ÄIIIIÀÁ†II„jIIIIIÅÆIIIIIII¿ÄIIIIÀÁ†II„jIIIIIÂÃwIIIIII¿ÄIIIIÀÁ†II„jIIIIII¾¤zIIIIII¿‚IIIIÀÁ†II„jIIIIII¹º›IIIII»¼III½†II„jIIIIII›³´IIIIµ«¶·II¸¤†II„jIIIIIII­¤®IIII¯‚°±•²II„jIIIIIII—¨©IIª«¤¬II„jIIIIIIII¡¢IŽ£¤¤¥¦¤§III„jIIIIIIII”•–I—˜™š—›‘œžŸ III„jIIw‰ŠŠŠŠŠ‹ŒIIIŽIII‘’“IIIII„jII…‡ˆIIIIIIIIIIIIIIIII„jII…†IIIIIIIIIIIIIIIII„jII€‚ƒIIIIIIIIIIIIIIII„jIIwxyyyyyyyyyyz{IIIIIIIIIIIIIIII|}~jIIIIIIIIIIIIIIIqrrrrrrrrrrrrrrrrstuRRRRRRRRvjIIIIIIIIIIIIIIIJjIIIIIIIIIIIIIIIJV.klmT mnV)oo. Vp .C [IIIIIIIIIIIIIIIJ\]-^_`a#PbMc=defghV5X?iDS,GH2IIIIIIIIIIIIIIJKLM6N9OPQMRSTSU?VWX?YZT/0122222222222223456789:;< =$>?@AB:CDEF !"#$%&'()*+, -. ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÀÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€€€€€€Ààÿÿàÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( @ó­ó« ò¨ò©òª ò©óª ó´-ô¼Gô¼Dõ»?ô»Cò©ò¨öÒøø÷øøøó±$ò© ôº>ò©ÔÔÕ˜˜™˜—™ßßàó¼Hò§¶¶¸JIL^]_õõõ¬«­ÌÌ̓‚„ƒƒ…ZY\VUXñññíííàààóóóëëìOOR Ÿ¡÷÷÷´³µedfÛÛÜÑÐÑutvGFIFEHMLO‹ŠŒííî¡¡¢PORëëëööövuxIHKcbdKJMllnòòòXWZ”“•ÓÓÓNMPIGK»»¼±°²LKNãããžžŸsru¾½¿—–˜bbdˆ‡‰ÞÞÞmloôôô‚ƒ“’•À¿ÀÚÚÛHGJ‘ooq}|~óóôFEIÞÞßÏÏÏ~}qpsÝÝÝ  ¡ÏÏÐÖÕÖŒŒŽeegèèèfegŸž ONRONQjil“’”––˜õôõó«ó±"ø÷öóµ/òª ò«öσöÓó¬ò¦ó±#ó²&ó¬ó­óª ó¬ó¬}~€z{ |uvwsxyqrstuSSSSSSSSSSpSSS;SS;jklllllllllmSllInlloh5i\]^YUfg\]^YUb=cddddde\]^YU`a\]^YU_=X_\]^YU-Z[\]^YUV==W)=X1YU;OPQ3RSTUHIJKL!M9NABCDEF=G89:;<=>8?@*+,-./01234567!"####$%&'()    À€€À( ó­ó²$ô²$ó«÷îÝøøøó±#×××ÈÈÉÚÚÚó±$€€‚JIL¾½¾ÐÐкº»ONQbbdöööÂÂÃñññÍÍΗ–˜±°±õõõ¹¸¹²±³ÎÍÎKJMfehIHKš™›÷÷÷jikZY\óó󃃅‡‡‰ßÞßYY[poqÈÇȦ¥§žžŸèèèmloonpxwySRUîî HGJëëëÖÖ×_^aŒŒŽ•”–‰ˆŠMLO Ÿ¡ëëìonqqpsó¬øíÚ÷ïÝó¬CC@AB!:;;;;#<=>?6 7889345./012345./* +,-./!"#$% &'()      €€‰PNG  IHDR\r¨f IDATxÚíyxUÖÿ?U½¥³/ÙÊžEQ‡QADQwÇw}u\æÕWÇAGGÑ€"Ђи¢"(ð%²’Ù„t’Þª~„Ä,µ;I‡œÏ󄇮®®®º}Ï÷Þ{î¹ç‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ƒ"Eà_¼ýöÛúÚµk A×u)Ák***HHHà™gž{÷w¦M›¦ò'>ýëÕ«—ÇÖD“ó/"""¤ŸÓ§ODºª*?‰à{ ƒ€ "‚ ˆø+â¨Dz,2ñ'ˆô`¬N›‚ ÐS±Z¥„NÃØQþô]ßsRg[±ÎÎ2y•Pá]F¹1£$ZXøÀ¿¼;EQÐuèèhfÏžMQQK–,éÔ{8ÿüó7nß~û-ß}÷]‡_rr23fÌàÀ,_¾\ %¾iŒÿ¹Ç®¿‘å ³P4P@UPÐÑOÙ¾ÐÒ/aFék'£ÿ…_Þâºuë3fL½c>ø ¯¼òJ‡~obb"YYYŽŸyæ™äæævHogûöíœyæ™õŽ_{íµÝ¶'ššJff¦âÓÀêCUú=[]ܹÉ‚OYº^ýŽg1xð`æÍ›‡ÛíFUUìv;O<ñv»½ÙÏ=ðÀÄÆÆâp80›Í¼ÿþûlܸÑã¹gœqF£c#FŒèðgëß¿“Çë ÀM7ÝDZZv»Ei]Û¦ª*QQQ¼öÚklݺµV<}gjjêi7h·Üº¡\Ÿ¼Æ FÜT7÷2Âï ®¸â î¸ãŽú½z5ß|óM“Ÿ‰çé§Ÿ®w,::ºIX¶lóæÍ«wìÝwßíðgÛºu+'Ož$$$¤öXYY?üðC½ón»í6FŽÙ®ïxüñÇkÿ¯iŸþ9—_~y½sV­Zuú<Û󡘌ú[Y:)`ÖN­7ÃïJ ÔèØÄ‰›ýÌ…^ØèX\\\“ç?ôÐC¬\¹£ÑˆÛíæÑGeÍš5þleeeLš4‰¬¬,L&{÷î墋.¢¬¬¬Þy‡j·ñ7üì¼yóX»v-F£‘òòrî¼óN6oÞ|ÚÕ›6õVç9ôKWW’¯A:Èzu¿4dÒ¤I<ñÄm€!C†`µZ©¬¬lô^UU³fÍ"))‰ÊÊJ :íù233IKK#%%…x<'((¨Í×u»Ý¼öÚkŽ—””ðÛßþ–äädŽ?NiiéiYoZÝX–m×'V‰ @€*c{?"<<œ¡C‡6:>f̘&—Bõ´ZC‚ƒƒ=ŠI]²³³;ÕøëÒ”ñ”——c0p»ÝhšVïïøñ㜽Ö0fΜÉSO=EJJJ½óçÎË#<Âï~÷;Ö­[çñž–,YÂ…^Hyy9ÁÁÁ¬Y³†©S§Ö¾¯ë:ÅÅÅM>Ó¨Q£ÍX¼÷Þ{=zÔãùwß}7?þ86› «ÕJYY©©©Õ;ïÖ[oå7ÞÀår1nܸڙ„n¸§žzо}ûÖ;ÿ¦›nâá‡ææ›ofûöíÍþ®©©©¼øâ‹Œ?Þãû6›^xçž{®ã qñ =Ç©‚ù”·düŠª:”ë`Vèj$µÄêÍ*º.AŠÍ`$0 Vhlãg››Šó4ίë 4›ÍyRSS=~Æjµ¢( ÁÁÁµÇê&šHIIaÅŠõ¦ —/_ΰaØ3g<òH“÷™’’Â_|Áyç×Ȼՙ’E© hkæ$O-ýóÏ?ßäùÁÁÁõž5""¢^²–aÆñÑG_ÛãX±bgŸ}6=ô·ß~{“×:t(›6mbذaMi.¹ä>ûì3Ünw“× âÉ'ŸdüøñÌ™3‡cÇŽùVîß\¡¿¸ÍQ:¸[Q‰UÐí*”¹‰ ‡9éF¦Æ›c—‹ÅŒÝîk÷Hu`޵íPwÌ^UU…ªªµ-tBBC‡eçÎõ*θqãj_Ûív4MÃjµÖ:kBëâ)¦ nµÙl”””ÔEQÈÌÌl2#MC/^ÌàÁƒ}wyyy³¯›#==³Ï>»Þ±7’™™Ùäg:Akʨ†ŠŠŠFåÅŽ;j˱Y盪²xñbÆŽëñ÷\¹re³ÆßPäßzë-®¼òJß:_üÑj«ŒèÇu°9yô,ûfZyyl ãzëàrž*D1þ–8énÛù‹…áÇ׾^½z5 ,h4 ¨Ë¸qã°X,8-ZÄÛo¿]û~ß¾}0`@›ï½  € &4jÁ=S:III\pÁ>-Óx Ñ±'Ÿ|Òkgä°aÃØ¿£^RCšòm¤§§{ìm½ÿþûÏÏÏÏçÈ‘#ŽoÞ¼™—^z©Ùrm³\¼Ú¦cl…cJ¡ºË_ ‘ªóã•A<žf H×%6 @qqq£€•†ÐpX°~ýz<Øj¿BKÜzë­Í¾ÿì³Ï’œœÌ¹çžËž={<:5}Ett4³fͪwl×®]¬_¿Þ'׿í¶Ûš}ÿá‡&11‘ /¼ÐcØrÃg1cF£ˆËòòr®¾új ÀgœÁäÉ“ÉÎÎ`þüùŒ?¾Ý‹£š€5ìlhÙ)¥n~“[f28ôWµ³;ìb¡LÖÚårñõ×_×ku'NœXÛâ×ÿ×ðÍ7ßPQQQïXZZZ»ïi÷îÝlÚ´Éã{×]wO?ý4GŽaÛ¶mÜrË-­n1ÛÃ=÷ÜÓhVà¯ý«Ï®¿qãFöîÝÛä8~þüù²qãFþð‡?´ø¬wÞyg£s¦L™ÂŠ+p»Ý¸Ýn¾ùæ&L˜ÀŒ3xøá‡½*;0íër£±åÖß B‘Æ„X}yšC‹ìdv!KJJ°ÛílÙ²¥žCëœsΪÃGõëãäI 9¼€ÃhÈ+¯¼Â‡~XïØÁƒu[[;öm «ÕÚÈèŠŠŠøàƒ|ú|ÿý÷ŽýùÏnÔËøå—_šõ¡DEE5ŠÍX½zµG1=zô(Ÿ}ö™×÷îQ>ÎÑ!„æ#ýTÊtbÃTV]„ÝîkìjMHëW_}å±Û?aœÎ_—ùå—‚]¼ÔZ]G½xûL&“Çy{_0oÞ|¸Þõ¼O­dgnvúè£6j}k¦Ê:šö>§§@ž†Q“.U.­ùð °iŒÓ) ,»’†š]¯Õ¯ë0<÷Üsõº™«W¯®÷ù¼¼¼z¯ÓÓÓ»e¹Œ3¦QtäÂ… Û)×™ìØ±£‘Ïâ²Ë.ë<È8àÐqé-{ÿpe¼EZÿ.¦a%o؂ׇâ(õÂ~: ™xëì*{ì±z¯+++%2ñGòóók×Ô0{öìz½¶ºÃŒö&?©ç«©û"Ëæ®Ö„æº0`†±½ ´kåŠà3:ðþýûÉÊÊòhȇƒ 6Ô;¶oß¾F=Œ   f—Ëú£_¤áB§C‡1}út¢¢¢uÏu]¯]í·dÉ’FIF:› 4ª¬]»–™3gÖFX&$$°xñbFÍÝwßÍ›o¾é(¯ÐÁ­¢4=àS”p$¶¿ éÕ«W£uûž<ÆkÖ¬ñ(k×®mdØ5þƒ¬V+C† ©SàïüñltìÌ3Ï$##£ÅÏ~õÕW].o¿ý6þóŸë-vЉ‰aÆ lÙ²·ÛÍèÑ£k/¿ü2&Là±Çk׌A½!Àæbª=üÍÿgQèc`W·þ =í ØS7¿®04¤á¢» ‚ƒƒ½êê×è*ìv{“éÇGÍ9çœÓhÖaúôéüóŸÿôÞ`sÓª¤&ERüw5 Ós×tu²~ýz^éº3u?ßp®zÒ¤I¿v=$ijn»á¹M­S¥‘yúž†Skž¦Ú|ðA¯b êÞGkïhä¸ hñú5xZ(µnÝ: ˜šbÿþýÜ{ï½Þ @@ëVlâÖu4I Ö¥DGG7ªPžVŠÙl¶FÞþ°k×.=€º×4 DFF6kìM-ó­YŽ\·ò·V@Zó= Ï‰ŽŽn“Ñx4†:×lhÔªª6ù¬­Oç5µzïÿøÓ§Oo±[¿téRF]o¹w›D¯^«òi…þ}‘›ð(€ ú‡©ìnÁéð__sÙe—5ÙmoØÊDEE‘˜˜ÈСC‰ŠŠbþüùTUUy‹PUU…ÅbáÈ‘#‡ wÝuªªòÓO?‘““CQQQíB¡¾}û’’’R›w_QvîÜÙh!TgNHH ªª £ÑˆËåâçŸnÔÍ®Yά( š¦a±X8pà@£L=C† !44‡ÃÅbáĉõD¬wïÞ¤§§7…×’aêºÎŽ;jË/>>žøøøÚû×4ÌÌL» %&&KUU&“‰ÊÊJ¹k§n5MÃl6³oß¾f3Aõ†$&L¨ ÈÏÏ'++‹åË—×–§ü uijc€n*ÍucÛˆâÍgÿ¦)¡üi†7,ÆßóADAA@ADAA@AºMíµ`”¢ñ/!A DèI8NtÍÍ Òú "= ƒÑHnn.ãÆgذaR ‚@BÓ©¬¨äñü "=¬õ78”wˆ³Î>‹³Ï#"ˆô(…ã¥Ç¹nÎ) ÁïèÒÕ€  ¨*Šª tuÞEEA÷ñŠDUU9z$ŸaÆqée—áp:¥Æ "5ØN òârº0šºîV@Ó4"#£0[ÌMn¢Ðf0(**ä÷¸KŒ_hˆ%ÐÊÏ$<<c¦Óu ¡ìDÇŽÃ`ñ:'¿¢ª”“”œÌÌYWIMD2hà@V~ö© Õ«®œIeU%–‹÷k4r8/{ï»O–ü "þÎË>`çÎ KŽÛåòÒ p¢´”¾}ûrÝ 7œveUXPÀŽ;)Ì?Jnn.%%%TVT¢é&“ «ÕJdd$±±±ôŽîÍ’˜˜(•LÀ?1¨*‹32ˆîíG Ñh$';‡ÛÕÐ!÷ü˾}ÌÿÛK<øè#$tBhñÏ™™lܸ‘Íÿï{òrQTRŒævc2™0ŒEÁ­ihn7n·§Ó…ª*D„‡Ó7¦ié#8{ÌÙLºø"Ü.·T<ÿ`Õg«ÈÚ³‡á©©¸|ÐúÛÊË ˆèÀEQ˜ÿ÷¿ónÆbŽäæ§í?±øÝ÷HLò} ëp8X±ü#V­ZÅî]»°•—ADDú÷¯Þ\£®/åÔPª¡ƒÅn·säðavîØÁ»‹“Ò¿?']ÈU³fѧO©€"]ËÒ%ïަy¿é£Ñh$+;›™³®"2*Ò§÷¹úóÕ¼þê«ìÍÊ¢ÿ€ 2„½»÷pÕŒ,ÿøcââãÚ}m³Ù\»5™Ífcáßá“+ÈÎÉ!"2’ظ8L&SuW]GÓu›êy*A“ÙLï>ÑD÷탮é”+áõW^eÙ’÷¸ôŠ)Üùûß"± èñÞ©Íßofë–-ÄÆÅ¢iÞwK«ªìXÌŸ¶þY{ö0ï–Û¸çäÄñ㤅50“ee$÷ïÁ rõÌ«())ñªµøÏ¿ßâŠË§ðÊË/ãt»I1‚ØØXEÁårUgonÇ ‰¦i¸Ýn4]#22’Ôô„„…²à?ÿeÊo/eÙÒ÷ÅE:Ÿ… `±`ð§Þh2‘sð ã'L )9Ùëë¹\.^xî™3ûZ¶nÝBjZ}bbp8躎¢(TÙ+IIéÝ^Åsnhwzõµ_}Å•S¯àùçžÇ ¨¤Ixx8N§Óç)Ûu]Çétb $=}$&“™G|ˆ;çÝAy…M¬R sÈÊÊbã·ß‘˜ˆËN)·Ó‰[ssãÍ7y}­OV®dÊ¥—óÎ[oÓ¯gTë\«ç@Án·3pÐ ìßÏÝmÜg Üfãþûîçwóî ¨¨ˆQg","¼Vd:]ש²Û‰ŒŠä¬³G³~Ýz¦^zû÷ïËèx2ÞYˆîÒ0™½ß–ÌpÊóÞ¸q OÞîëdffrËܹÿO÷b¯¬ í¬‘X,œ-ln·Û>"•Ï?]Åk¯ü£Ußµ~Ý:¦^zŸú)Ç'6.‡ÃÑ©›´( ¸Ýn\.ié#¨ª¨dæÓø93S¬S ã(,,⫯¾$!9·ÓûÖ_×5l•ÌiçØ¿²¢‚¿>ý 7^=™Û3I9’Þ}úà°·¾%v»Ü ‘Êß_z‰uëÖ5{î Ï=Ïm7Ý‚®iŒHOG?5äèJª*+INI!,,œk¯ºš¬Ý»ÅBE:†E p¢ìAAèx×ÕU ÊcôèÑœ{îØ6þÃ÷—qÅe—³8c ‰ 8ó \.W›×$躎Ål!)9™ûïùE……»üååÜ<÷Fþõ¯1tØPúÄÄ`·Ûýâ7Q…ªª*úÅÇÉõ×Í¡¨¨P¬TÀ·TTVðÉÊ•$&$ú¤ÕS…Òcǘ={v›>·iÃ.™tyò ܺNÚˆtL&N/¹\.úô郦iÜõ»ß×{ïàƒL½| [7oaôèÑŒF\~¶HIQö*’q»5n»õö·q¬@ónÆŠ ÷ÚÑ¥ª*G þècØO¯^½ª£Ù¼ì®“œœÄ¬k®n§éüóÍ×™uÍ5üðÃèºîÐu‹ÅBxX8o¾ñ&F“™˜~ý°WUu}ò•6̤ëº÷[7Ì2¼›±X,V ýd,Ê (8_´FSuàÏ”©S|ºËï3Ï>Ãø‰°ãç˜-t©£¸ÜnbccÙ²y³Wë„,;2fÓ†ÄÇ'xó¯fÉoXhH‡ìòûÏ7Þ oL ¹99˜M&©¥ºNPp0ÅÅŬ[»VÊC í,ZðªÑà“9e£ÑHöÁ.™<™^ѽ}~¯F£‘×^ÿ'e¥'°Ùlþ—RìÔlEÿŽt.êºN ÕÊ÷ßo«h‡rsYûõ7$&%ù$ã¯ÝnÇd4vèN?gœywß{{÷dað“@UU1 TØlÉ;ÌÁ9°ÿ 7'—ÒcǪÇìàUÓuBÂÂÈÉΖ^‘/›žðKePQY‰5 À«(»šÖù—½{™0q)úwè}ßrûm|±z5‡rrˆ‹óYºò¶b0ÐÑÉ;”GyÙIâH9‚¸¸xq:‘›“Ãþ_ö£( IÉI (>»g]Ó ¢¤¸˜û—/Ö+Ð2'ËÊXõÙ*’’’|öëv»p:]̽ùæN¹ÿûx€›æÎ¥_ll—”ŸÙbáH^%%Åœ{îy\zùåLœt!¡¡¡{ÖË{K—òõš5$&'âµèÖÞ‹ÙLAA¹‡‰È ud,\DqQ!a!^O…Œrsr9çܱ¤¦¥vÊý{ã/¸€œœ¯c ÚÚê«•Ÿ·o'44”—æÏçÍ·ßâŠéÓ<?Tgý;î<^þÇ+<þä“ä墬¬Ìw÷­(¸ìNž(Ëh—ËÅŠ+ˆKˆÇåô¾õ×5òrsoº±SŸãºëç`+/ï´)A£Ñˆ½ªŠÌâò)Søhå .þÍoÚt«®¹š'Ÿù ì÷Y ‚BuÎAG ¹–¾·”œì"£¢|²èçðáÃŒ5’sÏ;¯SŸcÒ¤I :”⢢Ÿ0™Œ”——³k×nî{ðþçŸo·rÚô+¹ô²ËÙÿË/>[ÑW-!ÐbwÝÈÇ~HŸ¾}|âˆRU•c%ǸúÚÙþ,§“I_Lqa!Šªth™•—Ûøeï^þçùç¸mÞ<¯¯y×ݬîQØí> CVºY8³@ðùªUìÚµ“¾}ûzö«ª*…… 4ˆ©S§vÉóœÁùávvLÖEUp9ìÙµ‹'ž~ŠWÍôÉu“’’92¢‚BT1\€Nëþ/y—°Ð0ŸŒ? ªü#G™yõUš/¯.©©i¤ôO¡´´´CZ@£jäç;¸ëî»™}íµ>½ö˜sÆR^^.Ö&Ð9ü°u+[7o&Öa¿ª¢pìØ1â¹úškºì™œN'gĉ²2Ÿ €Åba×®\tÑ$îþÓ=>¿÷3Äh2v™x =L-XˆÉlFõÁxÙ`2‘——Ë•3ftyjªaÇãtø6…—Ñh$??ŸÈˆH^š?¿Cî»Ot4¡¡¡>‹|øûŸn´oï^Ö¯_O’/Â~…²ã'èÝ«7sævý.¿ýúõÃb1û´%Õ\nçâÅøpUc]¢¢{ŠÃáÀl6wë¥ÉÒðsgdàrº°X,^_Ëd4’›Í”+® ((¨ËŸ-&&¦º%uø.²n÷îÝ\}Í5ŒmG6ãÖJ€5À')Ø€&)..æË/Ö”œä“]~+l6‚ÂB¸þ¦¹~ñ|111D„’Õ¯I âIDAT‡Se÷>­—rÊ·ÎÃ?Ö¡÷m¶˜±MâèàÖá"Ž•#((Èën¦Ñh$';›‹/¾„èÞÑ~ñ|–€‚‚ƒ«#á¼€ê%͹}ÞvP׿¶’)*Uè8ìv;Ÿ~òÉ©}þ¼ïjÚv ª¹7ÞèWÏi4«sýye EEE¤Hcîß»Ñk¶D:Š%‹ÉËË#""Â7­ÿÁÆOœÀ€3øÕsX­>qn–3颋%¬Và4xEá£å§rýû ì×ívãt8:}ÑOk0øh-€Á¨Š7^8=`åÇ+ؿ£½g rss{Þ¹ŒHO÷»gÕuÝ'IME¯¼pzÀûKß'22Ò7N&l'Or½Ìû ‚@ lذ¶m£_l?´þ*‡fDz:ãÎ?_j‡ àï,Y¸ˆ À@ðAد¢¨+.áš.Xò+"mdçÎlܰ‘„„xÜ./ý¨*……… 8+¦M“š!ˆø;‹,Œ>Hm0É?r„é3gâ–€AÀ¿9|ø0_õ‰I‰^·þŠ¢p¬¤„øøf_'ÝAÀïÉX˜­Ü†Õèu0Kõ¢Ÿ®¸r:&ÙtBðoÊËËYõÙ§$%%údÑOYY½ûDsƒLý "þÏâE‹(*,$4<Ì'a¿Ù³¹|ÊBBB¤F"þŒÛíâãåï}®¨¬¬ ($X€îÀ‡|@vv‘‘‘Þ·þ&Ù³¹øâ‹‰‰‰‘Ú ˆø3&“‰ßÿ>}úø$ì×á°£( ×ß8Wj‚ àï¬ùâÿøyG&}úz/Õ ?r8ÿ‚ 8p ÔAÀßywÉbÂBÃ|r-ÍíÆa·ûå’_AhÀ?lcÓÆMÄÅÇ{½æ¿zÉï!Æž{.£F’Z ˆø;‹,Àd6ûd«iEQ(;q‚Ù×Ï‘ ˆø;dýºõ$&&àr{7õ§ª*ùy‡I9’ &H DüÅ áp:°àm ;UU)**dÖ5³ä×Düý•–²úóU$%%yøS“ ÷ Yò+ÝC–ddp¬´” à`¯ F#GfÆÌ™ (˜Íf©‚€¿bwØYñÑG$$&âôÁ¢ŸÒÒRâââ¸æºkå—€÷–¼G^nu®|ö›s0›iÓ§×¶ü‡Cj€ à(ªÊÇË—Ó/¶.·~3pà@~ÿÇ?ȯ.5 £¿ÞØg+?!k÷ÒF¤ù¤û_YYÉY£G“™™ÉñÒRðIv} žR½½Y`` L˜€Óé”Ú)ô\xéR""#}’ŸOÓ4bbcÙµ{7·ßt‹_* ……E$&'²nÃwR3…ž+›¿ÿžm[`ÐÁ>ÛQÖír¡* ±ñq^o­Ý1=…À  úùéý âè4¾³K€UU}nd~m\b÷BO€¬Ý»ÙðÝŸmó-B7€ŒE‹Ðu]²ó BO€‚ü£|¹æKŸäú¡› À’Œ ÊÊÊ ô>׿ ÝH*+*ùô“OIL’±¿ ô8X¼hGæî—óô‚ ÐAèºÎŠåçuÔŸ ÝL>üàØOTï^Òú B€eˈêÝËëdŸ‚ t3øvýzvlÿ™˜~ý|ö+B7€Œ…‹ –_Bzšlß¾M7Ÿ/ÝAèi°è˜ŒF &£ü‚Г 77—u߬#1) —SZAè º¬é]ðŸÿRQaÃd6Köª—*kšÖ¢#T×44Íݪs›Ã­i:åªÕ¹ïö~oMÉTq7€}ûöñŸ·ß"22мCy qÿ(ŠBQaFSó©Ê ‹‹9|øƒ±Ý ª*‡ssâÄñN{¾ÂÂŽÎÇåÒÐu­ÝetèÐ!l6›Xnw€«•7ß~›>½¢q¹]’£ºzãpØ °ZQNíYà)kñcy‚²ÒãX-V/„SÁf³‘˜œØä÷øšç_|{ef³Å+Á?i+gÈСR]º³ÄÇÅ'¥ßN§³ÉMK†Ö-{7é#GÊ뇨RþIgíYÐß#û/ˆ‚  ‚€ "‚ ˆ‚  ‚€ "‚ ˆ‚  ‚€ "‚ ˆ‚  ‚€ "‚ ˆ‚  ‚€ "‚ 4#Šäç„(=G*\­Ë×nT@±ºsÅ—úÛXb¬ ´´MŸeš‚]—º/îÖ´u:(§ù®Uõ`X„Ú¼W@L_éæP¹lç%tO,3zËÝŒJ„(`Л߹ɨƒMcÿqMj’ÐMÑùñ„¦†þn¸€$çDÀÞÒ@Ma]Kê‘Ð-ù©ÈÍ¡R h¾±ÓtRÃÔž#—Ä5@¡ÅÍ­ Ks4,£Ô&¡Ûuÿ?Èq‚]µãÖ ¤÷¢ç@˜Y§Òôì‡*(Ðù¿\ÙóMè^¸47oìuBHkZvQ‘†ž%“c `oaÜ£h`Öyh«ŽÅb®UVAðw^Üa§¤T+ 7ÓÓu)˜Íð›X‹Ò£`V¢ º«ùÙM0…Ÿ;yyg%‹Ij–à÷siüe³ BMÍrÀ¡ñ›¾†Ó¾L™ùô„ÅbU«J³½#ˆ0pÏ·~.vb·;0[,RË?û¸lµ“*§¬ZËàT¸gˆ¹ç ÀŸ@¹Ö²è`V™´ÒN¾]Åa·Ëp@ð£7[NÕG#×ýŸóÞî‚ݰëDä~&¥G Às£, FÜ-Ìõ»P…"7Œý°’ÌÕÆo·‹sPèzì;ªÙÀU«+X’å†èê)ìæ-Bƒ*…çGöŒam“#ýß5B™ - ƒÜ@„ÂQ Îþ¸Šl¯’€ÐÅÝýêú·¥DeÔ{|°_ƒåמks]»J EçÖAÖëÞüCþû¤ŽU“ڼǪ…¢Jã.ÆÇ™¹/¦¦˜±ÛÝR#…3ô†½M‹ÅÌŽ/îp±`VÝÄE®VZà •~cdzb€À‡ÙUúŒÏ´&òWÑ«¯xp+ ë­3#ÙÌ9½†Gé¤`DÖ¾Dç„Cå—ãŠÝ¬Îuòù ªª{¦˜[iüà¸Îù} |;%¸Ç¬tkñA¯ÿ椾hŸá´¼R°îÀBW«‰v L`4Ð/@!H7²’PðÅøUAÓuòí:'*´êè>ƒÁ ˜ôÖ5Z5õµ T§‚vKHªœ­zبwJõ Ô¨{upRa¨ƒØ¿à«Ö”êÖÛ¤W/dC¡MLp)`sÃíá=®f¶úÔé'4ªE@ëèo„vhA{꣔+,¹ÈĵÉ"Í:]^?®Û- „(më ‚ÿÀTj¼~¾•ß ²ôÈæ©Íöa™¾½D…ðSÑTâÓº£ñWÑ­ðÞ…Ff&Z{lß´]~Çúrý, ‹Ž®)¢B70|t*â-phvH”¶»–í·ë7~çÄæ¬®_×V‹~WËO9«p)Ü3DeþØ@ñHá·Ü]mú«û´jgŠ 0i´Ù+bôju8»CEgRo…¯.•Vß§Pß¶Têoÿâ¢Ì¡ÿ*ÆSßPwêO„Aè¨Z\S·4¥zÚÙ­a6+\ÔîÀEýÌbü%5,øÅ¡qØÎªB8éw¥^=O«è¿ ‚ ø½:G¥S9ª® U,ŠÎY‘ Sâ<4,@j\g @]¾>êÒ‹ì;ËÜd»9Z¥ ªêiŸk]è¼ê«éÁ¡R#U¢M*Ó’¤¥AAAAAAAAAAAAAAAAAAAAAAAAA¡+øÿ" ú2‰~LsIEND®B`‚(@€ôµ6ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô¯ô´1ó«ò§ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò§ó­ò§ò¨ò¨ò§ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò¦ò§ò¨ò¨ò§ôµ6ò¨ò¨ò¦ôÀZ÷Þ°øèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆøèÆùèÆ÷à´õÃcò§ò¨ò§ò¬ò¨ò§öÓ’ùùùøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøöÛ©ò¦ò¨ó¯ ò¨ò¨ôµ8ùùùøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøô½Mò¨ò¦ò¦ò¨öÍ{øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøöÓò¨ò§ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøïïïëëëëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëëìëêëöööøøøëëëëëìëëìëëììëìùùùøøøøøøøøøøøøøøøòòòëëìëëìëëìëëìóóóøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøø®­¯A@DCBECBECBECBECBECBECBECBECBECBECBECBECBECBECBE?>AÎÎÏøøøDCFCBECBECBELKOøøøøøøøøøøøøøøøøøøœœžCBFCBECBECBF­­¯øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøõõõVUXJILJILJILJILJILJILJILJILJILJILJILJILJILJILJILFEHÐÐÐøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøø£¢¤JILJILJILJILJILJILJILJILJILJILJILJILJILJILJILFEHÐÐÐøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøïïðLKNJILJILJILJILJILJILJILJILJILJILJILJILJILJILFEHÐÐÐøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøø“’”JILJILJILJILKJM_^a_]`_]`_]`_]`_]`_]`_]`_]`[Z]ÕÕÕøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøçççGFIJILJILJILFEHÒÒÓøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøø…„†JILJILJILJIL{z}øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøÚÚÛEDGJILJILJILEDHÜÜÜøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøvuxJILJILJILJIL††ˆøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøÉÉÊFEHJILJILJILGFIçççøøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøgfiJILJILJILJIL’‘“øøøøøøøøøøøøøøøøøøøøøøøøøøøKJMJILJILJILSRUøøøøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøº¹»GFIJILJILJILKJMîíîøøøøøøøøøøøøøøøøøøøøøøøøJILJILJILJILKJNòòòøøøøøøøøøøøøøøø Ÿ¡JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøø÷÷÷ZY\JILJILJILJILžž øøøøøøøøøøøøøøøøøøøøøíííDCFJILJILJILJIL–•—øøøøøøøøøøøøøøøšš›JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøª©«IHKJILJILJILRQTóóóøøøøøøøøøøøøøøøøøøÃÂÄGFIJILJILJILJILGFI¿¿Àøøøøøøøøøøøøyx{JILJILJILJIL°°²øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøòòòPORJILJILJILIHK««¬øøøøøøøøøøøøøøøøøø~}JILJILJILJILJILJILIHK¤¤¦òòòøøø»º¼GGJJILJILJILJIL²±³øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø™˜šJILJILJILJILZY\÷÷÷øøøøøøøøøøøøÊÉÊFEHJILJILJILJILJILJILJILIHKHGJMLPGFIJILJILJILJILEDGÒÒÓøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøëêëHHKJILJILJILHGJ¸¸¹øøøøøøøøøÚÚÚRQSJILJILJILJILHGJJILJILJILJILJILJILJILJILJILJILJILXWZ÷÷÷øøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø‹ŠŒJILJILJILJILedgøøøøøøñññXX[JILJILJILJILMLO´´µNMPJILJILJILJILJILJILJILJILJILFEH¼¼¼øøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøßßàEDGJILJILJILFEHÅÄÅøøøøøøððð‘‘“GFIJILFEH½½¾øøøßßßjilGFIJILJILJILJILJILJILFEH¦¦§øøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø}|~JILJILJILJILqprøøøøøøøøøøøøÚÙÚooq¨¨©øøøøøøøøøøøø¹¹ºjjlDCFDCFCBEGFIxwyÑÐÑøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøóó󜜟Ÿ¡ŸŸ¡ŸŸ¡ŸŸ¡ŸŸ¡ŸŸ¡ŸŸ¡„ƒ…IHKJILJILJILEDGÓÒÓøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøíííÕÕÖÙÙÚòòòøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøííîDCFJILJILJILJILJILJILJILJILJILJILJILJILJIL}|øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøííîDCFJILJILJILJILJILJILJILJILJILJILJILJILJILEDGÞÞÞøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøííîDCFJILJILJILJILJILJILJILJILJILJILJILJILJILJILˆ‡‰øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøííîDCFKJMKJMKJMKJMKJMKJMKJMKJMKJMKJMKJMKJMKJMKJMHGJèèèøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøóó󢡣¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦¥¤¦ÒÑÒøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøõÓ–ò¨ò¨ò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøùùù¤¤¤¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢Žc¢v¢vqb2SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøò¦ò¨öІøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøEEE©©©”””jjjÎÎÎ111ÇÇÇKKK———›››HHHYYYŠŠŠÇÇÇÇÇÇÇÇÇœœœLLLššš^^^ÇÇÇ>>>ÓÓÓÚÚÚUUUò¦ò¨õÆføøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø///äää ïïïÃÃÃ!!!ïïïøøø [[[ºººÀÀÀXXXmmmªªªµµµ®®®XXXEEE]]]¾¾¾ŸŸŸsss øøøÜÜÜwww[[[###óªò¨òªùóèøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøñññSSS¶¶¶âââTTTÄÄÄøøø [[[ºººÀÀÀXXXmmmªªªEEEâââ]]]¾¾¾ŸŸŸttt øøø)))øøøò¦ò¨ò¨óµ:øïÞøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøÊÊʬ¬¬rrr§§§¦¦¦•••øøø €€€ñññ___ÛÛÛVVVmmmªªªÎÎÎbbb]]]¾¾¾ÃÃÃÕÕÕ^^^øøøØØØ~~~ddd(((ò¨ò¨ò¨ò§ô»GõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWõÀWøÄX›››÷÷÷///cccøøøfff½½½ ¡¡¡qqqÒÒÒ¼¼¼TTT‚‚‚```ÓÓÓHHH‘‘‘ «««|||ÞÞÞ999ËËËÒÒÒMMMò§ ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨ò¨÷¯lllâââ øøø888 rrr///PPP---øøøöööøøøPPP'''ZZZõµ5ó°òª ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§ò§÷® """ÃÃÃ___”””#########QQQ   CCC444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿðÿÿàÿÀÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€?ÿ€€€€€€€€Ààðÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMiniZincIDE-2.0.10/MiniZincIDE/mznide.plist000066400000000000000000000066441263211763500202610ustar00rootroot00000000000000 NSPrincipalClass NSApplication CFBundleIconFile mznide.icns CFBundlePackageType APPL CFBundleGetInfoString Created by Qt/QMake CFBundleExecutable MiniZincIDE CFBundleIdentifier org.minizinc.MiniZincIDE CFBundleDocumentTypes CFBundleTypeRole Editor CFBundleTypeName MiniZinc Project CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions mzp CFBundleTypeRole Editor CFBundleTypeName FlatZinc instance CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions fzn CFBundleTypeRole Editor CFBundleTypeName MiniZinc Data CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions dzn CFBundleTypeRole Editor CFBundleTypeName MiniZinc model CFBundleTypeIconFile mznide.icns CFBundleTypeExtensions mzn UTExportedTypeDeclarations UTTypeIdentifier org.minizinc.minizinc UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription MiniZinc model UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension mzn UTTypeIdentifier org.minizinc.flatzinc UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription FlatZinc model UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension fzn UTTypeIdentifier org.minizinc.minizinc-data UTTypeReferenceURL http://www.minizinc.org/ UTTypeDescription MiniZinc data UTTypeIconFile mznide.icns UTTypeConformsTo public.plain-text UTTypeTagSpecification public.filename-extension dzn MiniZincIDE-2.0.10/MiniZincIDE/outputdockwidget.cpp000066400000000000000000000003201263211763500220100ustar00rootroot00000000000000#include "outputdockwidget.h" #include void OutputDockWidget::closeEvent(QCloseEvent *event) { if (isFloating()) setFloating(false); else hide(); event->ignore(); } MiniZincIDE-2.0.10/MiniZincIDE/outputdockwidget.h000066400000000000000000000005241263211763500214630ustar00rootroot00000000000000#ifndef OUTPUTDOCKWIDGET_H #define OUTPUTDOCKWIDGET_H #include class OutputDockWidget : public QDockWidget { Q_OBJECT public: explicit OutputDockWidget(QWidget *parent = 0) : QDockWidget(parent) {} signals: public slots: protected: void closeEvent(QCloseEvent *event); }; #endif // OUTPUTDOCKWIDGET_H MiniZincIDE-2.0.10/MiniZincIDE/paramdialog.cpp000066400000000000000000000052601263211763500206730ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "paramdialog.h" #include "ui_paramdialog.h" #include #include #include #include #include #include ParamDialog::ParamDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ParamDialog) { ui->setupUi(this); } void ParamDialog::getParams(QStringList params, const QStringList& dataFiles, QStringList &values, QString &dataFile) { QVector le; QFormLayout* formLayout = new QFormLayout; ui->frame->setLayout(formLayout); QComboBox* cb = NULL; if (dataFiles.size() > 0) { cb = new QComboBox(); connect(cb, SIGNAL(currentIndexChanged(int)), this, SLOT(dataFileChanged(int))); cb->addItem("Select data file or input values"); int selectItem = 0; for (int i=0; iaddItem(fi.fileName(),dataFiles[i]); if (previousDataFile==dataFiles[i]) selectItem = i+1; } cb->setCurrentIndex(selectItem); formLayout->addRow(cb); } bool fillPrevious = previousParams == params; for (int i=0; icurrentIndex()!=0) e->setEnabled(false); le.append(e); formLayout->addRow(new QLabel(params[i]+" ="), le.back()); } if (cb==NULL || cb->currentIndex()==0) le[0]->setFocus(); if (QDialog::exec()==QDialog::Accepted) { if (cb && cb->currentIndex() != 0) { dataFile = cb->currentData().toString(); previousDataFile = dataFile; } else { for (int i=0; itext(); previousParams = params; previousValues = values; } } delete ui->frame; ui->frame = new QFrame; ui->frame->setFrameShape(QFrame::StyledPanel); ui->frame->setFrameShadow(QFrame::Raised); ui->verticalLayout->insertWidget(0, ui->frame); } void ParamDialog::dataFileChanged(int i) { bool disable = (i>0); QFormLayout* l = static_cast(ui->frame->layout()); for (int i=1; irowCount(); i++) { QWidget* w = l->itemAt(i,QFormLayout::FieldRole)->widget(); w->setDisabled(disable); } } ParamDialog::~ParamDialog() { delete ui; } MiniZincIDE-2.0.10/MiniZincIDE/paramdialog.h000066400000000000000000000015411263211763500203360ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef PARAMDIALOG_H #define PARAMDIALOG_H #include #include namespace Ui { class ParamDialog; } class ParamDialog : public QDialog { Q_OBJECT public: explicit ParamDialog(QWidget *parent = 0); ~ParamDialog(); void getParams(QStringList params, const QStringList& dataFiles, QStringList& values, QString& dataFile); private: Ui::ParamDialog *ui; QStringList previousParams; QStringList previousValues; QString previousDataFile; private slots: void dataFileChanged(int); }; #endif // PARAMDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/paramdialog.ui000066400000000000000000000033201263211763500205210ustar00rootroot00000000000000 ParamDialog 0 0 400 84 Model Parameters true QFrame::StyledPanel QFrame::Raised Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() ParamDialog accept() 248 254 157 274 buttonBox rejected() ParamDialog reject() 316 260 286 274 MiniZincIDE-2.0.10/MiniZincIDE/project.cpp000066400000000000000000000444111263211763500200620ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "project.h" #include "ui_mainwindow.h" #include "courserasubmission.h" #include #include #include #include #include Project::Project(Ui::MainWindow *ui0) : ui(ui0), _courseraProject(NULL) { projectFile = new QStandardItem("Untitled Project"); invisibleRootItem()->appendRow(projectFile); mzn = new QStandardItem("Models"); QFont font = mzn->font(); font.setBold(true); mzn->setFont(font); invisibleRootItem()->appendRow(mzn); dzn = new QStandardItem("Data (right-click to run)"); dzn->setFont(font); invisibleRootItem()->appendRow(dzn); other = new QStandardItem("Other"); other->setFont(font); invisibleRootItem()->appendRow(other); _isModified = false; } Project::~Project() { delete _courseraProject; } void Project::setRoot(QTreeView* treeView, QSortFilterProxyModel* sort, const QString &fileName) { if (fileName == projectRoot) return; _isModified = true; projectFile->setText(QFileInfo(fileName).fileName()); projectFile->setIcon(QIcon(":/images/mznicon.png")); QStringList allFiles = files(); if (mzn->rowCount() > 0) mzn->removeRows(0,mzn->rowCount()); if (dzn->rowCount() > 0) dzn->removeRows(0,dzn->rowCount()); if (other->rowCount() > 0) other->removeRows(0,other->rowCount()); projectRoot = fileName; _files.clear(); for (QStringList::iterator it = allFiles.begin(); it != allFiles.end(); ++it) { addFile(treeView, sort, *it); } } QVariant Project::data(const QModelIndex &index, int role) const { if (role==Qt::UserRole) { QStandardItem* item = itemFromIndex(index); if (item->parent()==NULL || item->parent()==invisibleRootItem()) { if (item==projectFile) { return "00 - project"; } if (item==mzn) { return "01 - mzn"; } if (item==dzn) { return "02 - dzn"; } if (item==other) { return "03 - other"; } } return QStandardItemModel::data(index,Qt::DisplayRole); } else { return QStandardItemModel::data(index,role); } } void Project::addFile(QTreeView* treeView, QSortFilterProxyModel* sort, const QString &fileName) { if (_files.contains(fileName)) return; QFileInfo fi(fileName); QString absFileName = fi.absoluteFilePath(); QString relFileName; if (!projectRoot.isEmpty()) { QDir projectDir(QFileInfo(projectRoot).absoluteDir()); relFileName = projectDir.relativeFilePath(absFileName); } else { relFileName = absFileName; } QStringList path = relFileName.split(QDir::separator()); while (path.first().isEmpty()) { path.pop_front(); } QStandardItem* curItem; bool isMiniZinc = true; bool isCoursera = false; if (fi.suffix()=="mzn") { curItem = mzn; } else if (fi.suffix()=="dzn") { curItem = dzn; } else if (fi.suffix()=="fzn") { return; } else { curItem = other; isMiniZinc = false; isCoursera = fi.completeBaseName()=="_coursera"; } if (isCoursera) { if (_courseraProject) { QMessageBox::warning(treeView,"MiniZinc IDE", "Cannot add second Coursera options file", QMessageBox::Ok); return; } QFile metadata(absFileName); if (!metadata.open(QIODevice::ReadOnly)) { QMessageBox::warning(treeView,"MiniZinc IDE", "Cannot open Coursera options file", QMessageBox::Ok); return; } QTextStream in(&metadata); CourseraProject* cp = new CourseraProject; if (in.status() != QTextStream::Ok) { delete cp; goto coursera_done; } cp->course = in.readLine(); if (in.status() != QTextStream::Ok) { delete cp; goto coursera_done; } cp->checkpwdSid= in.readLine(); if (in.status() != QTextStream::Ok) { delete cp; goto coursera_done; } cp->name = in.readLine(); QString nSolutions_s = in.readLine(); int nSolutions = nSolutions_s.toInt(); for (int i=0; iproblems.append(item); } if (in.status() != QTextStream::Ok) { delete cp; goto coursera_done; } nSolutions_s = in.readLine(); nSolutions = nSolutions_s.toInt(); for (int i=0; imodels.append(item); } _courseraProject = cp; ui->actionSubmit_to_Coursera->setVisible(true); } coursera_done: setModified(true, true); QStandardItem* prevItem = curItem; treeView->expand(sort->mapFromSource(curItem->index())); curItem = curItem->child(0); int i=0; while (curItem != NULL) { if (curItem->text() == path.first()) { path.pop_front(); treeView->expand(sort->mapFromSource(curItem->index())); prevItem = curItem; curItem = curItem->child(0); i = 0; } else { i += 1; curItem = curItem->parent()->child(i); } } for (int i=0; iappendRow(newItem); if (isetIcon(QIcon(":/icons/images/folder.png")); } else { _files.insert(absFileName,newItem->index()); if (isMiniZinc) { newItem->setIcon(QIcon(":/images/mznicon.png")); } } treeView->expand(sort->mapFromSource(newItem->index())); prevItem = newItem; } } QString Project::fileAtIndex(const QModelIndex &index) { QStandardItem* item = itemFromIndex(index); if (item==NULL || item->hasChildren()) return ""; QString fileName; while (item != NULL && item->parent() != NULL && item->parent() != invisibleRootItem() ) { if (fileName.isEmpty()) fileName = item->text(); else fileName = item->text()+"/"+fileName; item = item->parent(); } if (fileName.isEmpty()) return ""; if (!projectRoot.isEmpty()) { fileName = QFileInfo(projectRoot).absolutePath()+"/"+fileName; } QFileInfo fi(fileName); if (fi.canonicalFilePath().isEmpty()) fileName = "/"+fileName; fileName = QFileInfo(fileName).canonicalFilePath(); return fileName; } Qt::ItemFlags Project::flags(const QModelIndex& index) const { if (index==editable) { return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable; } else { QStandardItem* item = itemFromIndex(index); if (!item->hasChildren() && (item==mzn || item==dzn || item==other) ) return Qt::ItemIsSelectable; return Qt::ItemIsSelectable | Qt::ItemIsEnabled; } } QStringList Project::dataFiles(void) const { QStringList ret; for (QMap::const_iterator it = _files.begin(); it != _files.end(); ++it) { if (it.key().endsWith(".dzn")) ret << it.key(); } return ret; } void Project::removeFile(const QString &fileName) { if (fileName.isEmpty()) return; if (!_files.contains(fileName)) { qDebug() << "Internal error: file " << fileName << " not in project"; return; } setModified(true, true); QModelIndex index = _files[fileName]; _files.remove(fileName); QStandardItem* cur = itemFromIndex(index); while (cur->parent() != NULL && cur->parent() != invisibleRootItem() && !cur->hasChildren()) { int row = cur->row(); cur = cur->parent(); cur->removeRow(row); } QFileInfo fi(fileName); if (fi.fileName()=="_coursera") { delete _courseraProject; _courseraProject = NULL; ui->actionSubmit_to_Coursera->setVisible(false); } } void Project::setEditable(const QModelIndex &index) { editable = index; } void Project::setModified(bool flag, bool files) { if (!projectRoot.isEmpty()) { if (_isModified != flag) { emit modificationChanged(flag); _isModified = flag; if (files) { _filesModified = _isModified; } if (!_isModified) { currentDataFileIndex(currentDataFileIndex(),true); haveExtraArgs(haveExtraArgs(),true); extraArgs(extraArgs(),true); mzn2fznVerbose(mzn2fznVerbose(),true); mzn2fznOptimize(mzn2fznOptimize(),true); currentSolver(currentSolver(),true); n_solutions(n_solutions(),true); printAll(printAll(),true); defaultBehaviour(defaultBehaviour(),true); printStats(printStats(),true); haveSolverFlags(haveSolverFlags(),true); solverFlags(solverFlags(),true); n_threads(n_threads(),true); haveSeed(haveSeed(),true); seed(seed(),true); timeLimit(timeLimit(),true); solverVerbose(solverVerbose(),true); } } } } bool Project::setData(const QModelIndex& index, const QVariant& value, int role) { editable = QModelIndex(); QString oldName = itemFromIndex(index)->text(); if (oldName==value.toString()) return false; QString filePath = QFileInfo(fileAtIndex(index)).canonicalPath(); bool success = QFile::rename(filePath+"/"+oldName,filePath+"/"+value.toString()); if (success) { _files[filePath+"/"+value.toString()] = _files[filePath+"/"+oldName]; _files.remove(filePath+"/"+oldName); setModified(true, true); emit fileRenamed(filePath+"/"+oldName,filePath+"/"+value.toString()); return QStandardItemModel::setData(index,value,role); } else { return false; } } bool Project::haveExtraArgs(void) const { return ui->conf_have_cmd_params->isChecked(); } QString Project::extraArgs(void) const { return ui->conf_cmd_params->text(); } bool Project::haveExtraMzn2FznArgs(void) const { return ui->conf_have_mzn2fzn_params->isChecked(); } QString Project::extraMzn2FznArgs(void) const { return ui->conf_mzn2fzn_params->text(); } bool Project::mzn2fznVerbose(void) const { return ui->conf_verbose->isChecked(); } bool Project::mzn2fznOptimize(void) const { return ui->conf_optimize->isChecked(); } QString Project::currentSolver(void) const { return ui->conf_solver->currentText(); } int Project::n_solutions(void) const { return ui->conf_nsol->value(); } bool Project::printAll(void) const { return ui->conf_printall->isChecked(); } bool Project::defaultBehaviour(void) const { return ui->defaultBehaviourButton->isChecked(); } bool Project::printStats(void) const { return ui->conf_stats->isChecked(); } bool Project::haveSolverFlags(void) const { return ui->conf_have_solverFlags->isChecked(); } QString Project::solverFlags(void) const { return ui->conf_solverFlags->text(); } int Project::n_threads(void) const { return ui->conf_nthreads->value(); } bool Project::haveSeed(void) const { return ui->conf_have_seed->isChecked(); } QString Project::seed(void) const { return ui->conf_seed->text(); } int Project::timeLimit(void) const { return ui->conf_timeLimit->value(); } bool Project::solverVerbose(void) const { return ui->conf_solver_verbose->isChecked(); } bool Project::isUndefined() const { return projectRoot.isEmpty(); } void Project::currentDataFileIndex(int i, bool init) { if (init) { _currentDatafileIndex = i; ui->conf_data_file->setCurrentIndex(i); } else { checkModified(); } } void Project::haveExtraArgs(bool b, bool init) { if (init) { _haveExtraArgs = b; ui->conf_have_cmd_params->setChecked(b); } else { checkModified(); } } void Project::extraArgs(const QString& a, bool init) { if (init) { _extraArgs = a; ui->conf_cmd_params->setText(a); } else { checkModified(); } } void Project::haveExtraMzn2FznArgs(bool b, bool init) { if (init) { _haveExtraMzn2FznArgs = b; ui->conf_have_mzn2fzn_params->setChecked(b); } else { checkModified(); } } void Project::extraMzn2FznArgs(const QString& a, bool init) { if (init) { _extraMzn2FznArgs = a; ui->conf_mzn2fzn_params->setText(a); } else { checkModified(); } } void Project::mzn2fznVerbose(bool b, bool init) { if (init) { _mzn2fzn_verbose= b; ui->conf_verbose->setChecked(b); } else { checkModified(); } } void Project::mzn2fznOptimize(bool b, bool init) { if (init) { _mzn2fzn_optimize = b; ui->conf_optimize->setChecked(b); } else { checkModified(); } } void Project::currentSolver(const QString& s, bool init) { if (init) { _currentSolver = s; ui->conf_solver->setCurrentText(s); } else { checkModified(); } } void Project::n_solutions(int n, bool init) { if (init) { _n_solutions = n; ui->conf_nsol->setValue(n); } else { checkModified(); } } void Project::printAll(bool b, bool init) { if (init) { _printAll = b; ui->conf_printall->setChecked(b); } else { checkModified(); } } void Project::defaultBehaviour(bool b, bool init) { if (init) { _defaultBehaviour = b; ui->defaultBehaviourButton->setChecked(b); } else { checkModified(); } } void Project::printStats(bool b, bool init) { if (init) { _printStats = b; ui->conf_stats->setChecked(b); } else { checkModified(); } } void Project::haveSolverFlags(bool b, bool init) { if (init) { _haveSolverFlags = b; ui->conf_have_solverFlags->setChecked(b); } else { checkModified(); } } void Project::solverFlags(const QString& s, bool init) { if (init) { _solverFlags = s; ui->conf_solverFlags->setText(s); } else { checkModified(); } } void Project::n_threads(int n, bool init) { if (init) { _n_threads = n; ui->conf_nthreads->setValue(n); } else { checkModified(); } } void Project::haveSeed(bool b, bool init) { if (init) { _haveSeed = b; ui->conf_have_seed->setChecked(b); } else { checkModified(); } } void Project::seed(const QString& s, bool init) { if (init) { _seed = s; ui->conf_seed->setText(s); } else { checkModified(); } } void Project::timeLimit(int n, bool init) { if (init) { _timeLimit = n; ui->conf_timeLimit->setValue(n); } else { checkModified(); } } void Project::solverVerbose(bool b, bool init) { if (init) { _solverVerbose = b; ui->conf_solver_verbose->setChecked(b); } else { checkModified(); } } int Project::currentDataFileIndex(void) const { return ui->conf_data_file->currentIndex(); } QString Project::currentDataFile(void) const { return ui->conf_data_file->currentText(); } void Project::checkModified() { if (projectRoot.isEmpty() || _filesModified) return; if (currentDataFileIndex() != _currentDatafileIndex) { setModified(true); return; } if (haveExtraArgs() != _haveExtraArgs) { setModified(true); return; } if (extraArgs() != _extraArgs) { setModified(true); return; } if (mzn2fznVerbose() != _mzn2fzn_verbose) { setModified(true); return; } if (mzn2fznOptimize() != _mzn2fzn_optimize) { setModified(true); return; } if (currentSolver() != _currentSolver) { setModified(true); return; } if (n_solutions() != _n_solutions) { setModified(true); return; } if (printAll() != _printAll) { setModified(true); return; } if (defaultBehaviour() != _defaultBehaviour) { setModified(true); return; } if (printStats() != _printStats) { setModified(true); return; } if (haveSolverFlags() != _haveSolverFlags) { setModified(true); return; } if (solverFlags() != _solverFlags) { setModified(true); return; } if (n_threads() != _n_threads) { setModified(true); return; } if (haveSeed() != _haveSeed) { setModified(true); return; } if (seed() != _seed) { setModified(true); return; } if (timeLimit() != _timeLimit) { setModified(true); return; } if (solverVerbose() != _solverVerbose) { setModified(true); return; } setModified(false); } void Project::courseraError() { QMessageBox::warning(NULL,"MiniZinc IDE", "Error reading Coursera options file", QMessageBox::Ok); } MiniZincIDE-2.0.10/MiniZincIDE/project.h000066400000000000000000000113451263211763500175270ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef PROJECT_H #define PROJECT_H #include #include #include namespace Ui { class MainWindow; } class QSortFilterProxyModel; class CourseraItem { public: QString id; QString model; QString data; int timeout; QString name; CourseraItem(QString id0, QString model0, QString data0, QString timeout0, QString name0) : id(id0), model(model0), data(data0), timeout(timeout0.toInt()), name(name0) {} CourseraItem(QString id0, QString model0, QString name0) : id(id0), model(model0), timeout(-1), name(name0) {} }; class CourseraProject { public: QString name; QString checkpwdSid; QString course; QList problems; QList models; }; class Project : public QStandardItemModel { Q_OBJECT public: Project(Ui::MainWindow *ui0); ~Project(void); void setRoot(QTreeView* treeView, QSortFilterProxyModel* sort, const QString& fileName); QVariant data(const QModelIndex &index, int role) const; void addFile(QTreeView* treeView, QSortFilterProxyModel* sort, const QString& fileName); void removeFile(const QString& fileName); QList files(void) const { return _files.keys(); } QString fileAtIndex(const QModelIndex& index); virtual Qt::ItemFlags flags(const QModelIndex& index) const; QStringList dataFiles(void) const; void setEditable(const QModelIndex& index); virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ); bool isProjectFile(const QModelIndex& index) { return projectFile->index()==index; } bool isModified() const { return _isModified; } void setModified(bool flag, bool files=false); int currentDataFileIndex(void) const; QString currentDataFile(void) const; bool haveExtraArgs(void) const; QString extraArgs(void) const; bool haveExtraMzn2FznArgs(void) const; QString extraMzn2FznArgs(void) const; bool mzn2fznVerbose(void) const; bool mzn2fznOptimize(void) const; QString currentSolver(void) const; int n_solutions(void) const; bool printAll(void) const; bool defaultBehaviour(void) const; bool printStats(void) const; bool haveSolverFlags(void) const; QString solverFlags(void) const; int n_threads(void) const; bool haveSeed(void) const; QString seed(void) const; int timeLimit(void) const; bool solverVerbose(void) const; CourseraProject& coursera(void) { return *_courseraProject; } bool isUndefined(void) const; public slots: void currentDataFileIndex(int i, bool init=false); void haveExtraArgs(bool b, bool init=false); void extraArgs(const QString& a, bool init=false); void haveExtraMzn2FznArgs(bool b, bool init=false); void extraMzn2FznArgs(const QString& a, bool init=false); void mzn2fznVerbose(bool b, bool init=false); void mzn2fznOptimize(bool b, bool init=false); void currentSolver(const QString& s, bool init=false); void n_solutions(int n, bool init=false); void printAll(bool b, bool init=false); void defaultBehaviour(bool b, bool init=false); void printStats(bool b, bool init=false); void haveSolverFlags(bool b, bool init=false); void solverFlags(const QString& s, bool init=false); void n_threads(int n, bool init=false); void haveSeed(bool b, bool init=false); void seed(const QString& s, bool init=false); void timeLimit(int n, bool init=false); void solverVerbose(bool b, bool init=false); signals: void fileRenamed(const QString& oldName, const QString& newName); void modificationChanged(bool); protected: Ui::MainWindow *ui; bool _isModified; bool _filesModified; QString projectRoot; QMap _files; QStandardItem* projectFile; QStandardItem* mzn; QStandardItem* dzn; QStandardItem* other; QModelIndex editable; int _currentDatafileIndex; bool _haveExtraArgs; QString _extraArgs; bool _haveExtraMzn2FznArgs; QString _extraMzn2FznArgs; bool _mzn2fzn_verbose; bool _mzn2fzn_optimize; QString _currentSolver; int _n_solutions; bool _printAll; bool _defaultBehaviour; bool _printStats; bool _haveSolverFlags; QString _solverFlags; int _n_threads; bool _haveSeed; QString _seed; int _timeLimit; bool _solverVerbose; CourseraProject* _courseraProject; void checkModified(void); void courseraError(void); }; #endif // PROJECT_H MiniZincIDE-2.0.10/MiniZincIDE/rtfexporter.h000066400000000000000000000015271263211763500204460ustar00rootroot00000000000000#ifndef RTFEXPORTER_H #define RTFEXPORTER_H #include class MyRtfMime : QMacPasteboardMime { public: MyRtfMime() : QMacPasteboardMime(MIME_ALL) { } QString convertorName() { return QString("MyRtfMime"); } bool canConvert(const QString &mime, QString flav) { return mimeFor(flav)==mime; } QString mimeFor(QString flav) { if (flav==QString("public.rtf")) return QString("text/html"); return QString(); } QString flavorFor(const QString &mime) { if (mime==QString("text/html")) return QString("public.rtf"); return QString(); } QVariant convertToMime(const QString &mimeType, QList data, QString flavor); QList convertFromMime(const QString &mime, QVariant data, QString flav); }; #endif // RTFEXPORTER_H MiniZincIDE-2.0.10/MiniZincIDE/rtfexporter.mm000066400000000000000000000040021263211763500206170ustar00rootroot00000000000000#import #include "rtfexporter.h" NSData* ba_toNSData(const QByteArray& data) { return [NSData dataWithBytes:data.constData() length:data.size()]; } QByteArray ba_fromNSData(const NSData *data) { QByteArray ba; ba.resize([data length]); [data getBytes:ba.data() length:ba.size()]; return ba; } QVariant MyRtfMime::convertToMime(const QString &mimeType, QList data, QString flavor) { if (!canConvert(mimeType, flavor)) return QVariant(); if (data.count() > 1) qWarning("QMacPasteboardMimeHTMLText: Cannot handle multiple member data"); // Read RTF into to NSAttributedString, then convert the string to HTML NSAttributedString *string = [[NSAttributedString alloc] initWithData:ba_toNSData(data.at(0)) options:[NSDictionary dictionaryWithObject:NSRTFTextDocumentType forKey:NSDocumentTypeDocumentAttribute] documentAttributes:nil error:nil]; NSError *error; NSRange range = NSMakeRange(0, [string length]); NSDictionary *dict = [NSDictionary dictionaryWithObject:NSHTMLTextDocumentType forKey:NSDocumentTypeDocumentAttribute]; NSData *htmlData = [string dataFromRange:range documentAttributes:dict error:&error]; return ba_fromNSData(htmlData); } QList MyRtfMime::convertFromMime(const QString &mime, QVariant data, QString flavor) { QList ret; if (!canConvert(mime, flavor)) return ret; NSAttributedString *string = [[NSAttributedString alloc] initWithData:ba_toNSData(data.toByteArray()) options:[NSDictionary dictionaryWithObject:NSHTMLTextDocumentType forKey:NSDocumentTypeDocumentAttribute] documentAttributes:nil error:nil]; NSError *error; NSRange range = NSMakeRange(0, [string length]); NSDictionary *dict = [NSDictionary dictionaryWithObject:NSRTFTextDocumentType forKey:NSDocumentTypeDocumentAttribute]; NSData *rtfData = [string dataFromRange:range documentAttributes:dict error:&error]; ret << ba_fromNSData(rtfData); return ret; } MiniZincIDE-2.0.10/MiniZincIDE/solverdialog.cpp000066400000000000000000000206521263211763500211070ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "solverdialog.h" #include "ui_solverdialog.h" #include "mainwindow.h" #include #include #include #include #include #include #ifdef Q_OS_WIN #define pathSep ";" #define fileDialogSuffix "/" #define MZNOS "win" #else #define pathSep ":" #ifdef Q_OS_MAC #define fileDialogSuffix "/*" #define MZNOS "mac" #else #define fileDialogSuffix "/" #define MZNOS "linux" #endif #endif SolverDialog::SolverDialog(QVector& solvers0, const QString& def, bool openAsAddNew, const QString& mznPath, QWidget *parent) : QDialog(parent), ui(new Ui::SolverDialog), solvers(solvers0), defaultSolver(0) { ui->setupUi(this); ui->mznDistribPath->setText(mznPath); for (int i=solvers.size(); i--;) { ui->solvers_combo->insertItem(0,solvers[i].name,i); } ui->solvers_combo->setCurrentIndex(0); defaultSolver = ui->solvers_combo->findText(def); ui->solver_default->setChecked(0==defaultSolver); ui->solver_default->setEnabled(0!=defaultSolver); QSettings settings; settings.beginGroup("ide"); ui->check_updates->setChecked(settings.value("checkforupdates",false).toBool()); ui->send_stats->setChecked(settings.value("sendstats",false).toBool()); ui->send_stats->setEnabled(ui->check_updates->isChecked()); settings.endGroup(); if (openAsAddNew) ui->solvers_combo->setCurrentIndex(ui->solvers_combo->count()-1); editingFinished(false); } SolverDialog::~SolverDialog() { delete ui; } QString SolverDialog::mznPath() { return ui->mznDistribPath->text(); } QString SolverDialog::def() { return ui->solvers_combo->itemText(defaultSolver); } void SolverDialog::on_solvers_combo_currentIndexChanged(int index) { if (indexname->setText(solvers[index].name); ui->executable->setText(solvers[index].executable); ui->detach->setChecked(solvers[index].detach); ui->mznpath->setText(solvers[index].mznlib); ui->backend->setText(solvers[index].backend); ui->solver_default->setChecked(index==defaultSolver); ui->solver_default->setEnabled(index!=defaultSolver); ui->updateButton->setText("Update"); ui->deleteButton->setEnabled(true); ui->solverFrame->setEnabled(!solvers[index].builtin); } else { ui->name->setText(""); ui->executable->setText(""); ui->detach->setChecked(false); ui->mznpath->setText(""); ui->backend->setText(""); ui->solverFrame->setEnabled(true); ui->updateButton->setText("Add"); ui->deleteButton->setEnabled(false); } } void SolverDialog::on_updateButton_clicked() { if (ui->name->text().trimmed().isEmpty()) { QMessageBox::warning(this,"MiniZinc IDE","You need to specify a name for the new solver.",QMessageBox::Ok); return; } if (ui->executable->text().trimmed().isEmpty()) { QMessageBox::warning(this,"MiniZinc IDE","You need to specify an executable for the new solver.",QMessageBox::Ok); return; } int index = ui->solvers_combo->currentIndex(); if (index==solvers.size()) { for (int i=0; iname->text().trimmed()==solvers[i].name) { QMessageBox::warning(this,"MiniZinc IDE","A solver with that name already exists.",QMessageBox::Ok); return; } } Solver s; solvers.append(s); } solvers[index].backend = ui->backend->text(); solvers[index].executable = ui->executable->text().trimmed(); solvers[index].mznlib = ui->mznpath->text(); solvers[index].name = ui->name->text().trimmed(); solvers[index].builtin = false; solvers[index].detach = ui->detach->isChecked(); if (index==solvers.size()-1) { ui->solvers_combo->insertItem(index,ui->name->text(),index); } ui->solvers_combo->setCurrentIndex(index); } void SolverDialog::on_deleteButton_clicked() { int index = ui->solvers_combo->currentIndex(); if (QMessageBox::warning(this,"MiniZinc IDE","Delete solver "+solvers[index].name+"?",QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok) { solvers.remove(index); if (ui->solver_default->isChecked()) defaultSolver = 0; ui->solvers_combo->removeItem(index); } } void SolverDialog::on_mznpath_select_clicked() { QFileDialog fd(this,"Select MiniZinc distribution path (bin directory)"); QDir dir(ui->mznDistribPath->text()); fd.setDirectory(dir); fd.setFileMode(QFileDialog::Directory); fd.setOption(QFileDialog::ShowDirsOnly, true); if (fd.exec()) { ui->mznDistribPath->setText(fd.selectedFiles().first()); on_mznDistribPath_returnPressed(); } } void SolverDialog::on_exec_select_clicked() { QFileDialog fd(this,"Select solver executable"); fd.selectFile(ui->executable->text()); fd.setFileMode(QFileDialog::ExistingFile); if (fd.exec()) { ui->executable->setText(fd.selectedFiles().first()); } } void SolverDialog::on_solver_default_stateChanged(int state) { if (state==Qt::Checked) { defaultSolver = ui->solvers_combo->currentIndex(); ui->solver_default->setEnabled(false); } } void SolverDialog::on_check_updates_stateChanged(int checkstate) { QSettings settings; settings.beginGroup("ide"); settings.setValue("checkforupdates", checkstate==Qt::Checked); settings.endGroup(); ui->send_stats->setEnabled(checkstate==Qt::Checked); } void SolverDialog::on_send_stats_stateChanged(int checkstate) { QSettings settings; settings.beginGroup("ide"); settings.setValue("sendstats", checkstate==Qt::Checked); settings.endGroup(); } void SolverDialog::checkMzn2fznExecutable(const QString& mznDistribPath, QString& mzn2fzn_executable, QString& mzn2fzn_version_string) { MznProcess p; QStringList args; args << "--version"; mzn2fzn_executable = ""; mzn2fzn_version_string = ""; p.start("mzn2fzn", args, mznDistribPath); if (!p.waitForStarted() || !p.waitForFinished()) { p.start("mzn2fzn.bat", args, mznDistribPath); if (!p.waitForStarted() || !p.waitForFinished()) { return; } else { mzn2fzn_executable = "mzn2fzn.bat"; } } else { mzn2fzn_executable = "mzn2fzn"; } mzn2fzn_version_string = p.readAllStandardOutput()+p.readAllStandardError(); } void SolverDialog::editingFinished(bool showError) { QString mzn2fzn_executable; QString mzn2fzn_version; checkMzn2fznExecutable(ui->mznDistribPath->text(),mzn2fzn_executable,mzn2fzn_version); if (mzn2fzn_executable.isEmpty()) { if (showError) { QMessageBox::warning(this,"MiniZinc IDE","Could not find the mzn2fzn executable.", QMessageBox::Ok); } if (mzn2fzn_version.isEmpty()) { ui->mzn2fzn_version->setText("None"); } else { ui->mzn2fzn_version->setText("None. Error message:\n"+mzn2fzn_version); } } else { ui->mzn2fzn_version->setText(mzn2fzn_version); } } void SolverDialog::on_mznDistribPath_returnPressed() { editingFinished(true); } void MznProcess::start(const QString &program, const QStringList &arguments, const QString &path) { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QString curPath = env.value("PATH"); QString addPath = IDE::instance()->appDir(); if (!path.isEmpty()) addPath = path + pathSep + addPath; env.insert("PATH", addPath + pathSep + curPath); setProcessEnvironment(env); #ifdef Q_OS_WIN _putenv_s("PATH", (addPath + pathSep + curPath).toStdString().c_str()); #else setenv("PATH", (addPath + pathSep + curPath).toStdString().c_str(), 1); #endif QProcess::start(program,arguments); #ifdef Q_OS_WIN _putenv_s("PATH", curPath.toStdString().c_str()); #else setenv("PATH", curPath.toStdString().c_str(), 1); #endif } void SolverDialog::on_check_solver_clicked() { editingFinished(true); } MiniZincIDE-2.0.10/MiniZincIDE/solverdialog.h000066400000000000000000000041271263211763500205530ustar00rootroot00000000000000/* * Author: * Guido Tack * * Copyright: * NICTA 2013 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef SOLVERDIALOG_H #define SOLVERDIALOG_H #include #include namespace Ui { class SolverDialog; } struct Solver { QString name; QString executable; QString mznlib; QString backend; bool builtin; bool detach; Solver(const QString& n, const QString& e, const QString& m, const QString& b, bool bi, bool dt) : name(n), executable(e), mznlib(m), backend(b), builtin(bi), detach(dt) {} Solver(void) {} }; class MznProcess : public QProcess { public: MznProcess(QObject* parent=NULL) : QProcess(parent) {} void start(const QString& program, const QStringList& arguments, const QString& path); }; class SolverDialog : public QDialog { Q_OBJECT public: explicit SolverDialog(QVector& solvers, const QString& def, bool openAsAddNew, const QString& mznPath, QWidget *parent = 0); ~SolverDialog(); QString mznPath(); QString def(); static void checkMzn2fznExecutable(const QString& mznDistribPath, QString& mzn2fzn_executable, QString& mzn2fzn_version_string); private slots: void on_solvers_combo_currentIndexChanged(int index); void on_updateButton_clicked(); void on_deleteButton_clicked(); void on_mznpath_select_clicked(); void on_exec_select_clicked(); void on_solver_default_stateChanged(int arg1); void on_check_updates_stateChanged(int arg1); void on_send_stats_stateChanged(int arg1); void on_mznDistribPath_returnPressed(); void on_check_solver_clicked(); private: Ui::SolverDialog *ui; QVector& solvers; int defaultSolver; void editingFinished(bool showError); }; #endif // SOLVERDIALOG_H MiniZincIDE-2.0.10/MiniZincIDE/solverdialog.ui000066400000000000000000000205041263211763500207360ustar00rootroot00000000000000 SolverDialog 0 0 528 492 Preferences true 0 0 Solver 1 0 Add new... Default QFrame::StyledPanel QFrame::Raised Name Executable 0 0 Select true false Detach MiniZinc library path Backend option Qt::Horizontal 40 20 Delete Update MiniZinc path Select false Check QFrame::StyledPanel QFrame::Raised Found MiniZinc installation: none Check for updates to the IDE on startup once a day Send anonymous statistics to help us improve the IDE Qt::Horizontal QDialogButtonBox::Close solvers_combo name executable exec_select mznpath backend deleteButton updateButton buttonBox buttonBox accepted() SolverDialog accept() 248 254 157 274 buttonBox rejected() SolverDialog reject() 316 260 286 274 MiniZincIDE-2.0.10/TODO.txt000066400000000000000000000026221263211763500151520ustar00rootroot00000000000000Features that would be nice to have: * Show types * Integrated global constraint library browser * Save all data files before running * Auto indent * Column selection Done * Focus * Make dzn selection in Configuration tab work * Clear output window * Font size * Tabs-to-spaces (without messing up the undo buffer) * About dialog * Click on error location to jump to position in editor * Configuration dialog for adding other solvers * Global solver configurations stored somewhere system wide * Find/replace * Font selection * Go to line * Configure paths * Time outs * Mac application icon * Indent/outdent selection * Report solve time * Basic help * Windows application icon * Multiple windows ("projects") * Saving/loading projects (i.e. the contents of the Configuration tab + all open files) * Do not load really large files (show button instead to load on demand) * Save before running * Remove LGPL find/replace dialog * Correct copyright headers * Handle duplicate open files * Save all * Change font also for output * Correct handling of open constraint graph windows * Packaging * Run fzn files * Use mzn2fzn and implement the solutions processing internally * Comment/uncomment selection * Detach solver (to be able to run Gecode w/ Gist) * Dialog for missing model parameters * Detect when files change on disk (auto reload + dialog if changed) * Colour selection