From e206d09ba885090f8c9bdd87fe355390b992cef5 Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Sun, 16 Feb 2020 18:13:26 +0300 Subject: [PATCH] Init --- .gitignore | 4 + LICENSE | 674 +++++++++++++++++++++ README.md | 1 + pom.xml | 112 ++++ src/main/java/glintwineprog/Main.java | 21 + src/main/java/glintwineprog/MainAppUi.form | 144 +++++ src/main/java/glintwineprog/MainAppUi.java | 73 +++ src/main/resources/banner.png | Bin 0 -> 36612 bytes src/main/resources/trayicon.gif | Bin 0 -> 821 bytes 9 files changed, 1029 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/glintwineprog/Main.java create mode 100644 src/main/java/glintwineprog/MainAppUi.form create mode 100644 src/main/java/glintwineprog/MainAppUi.java create mode 100644 src/main/resources/banner.png create mode 100644 src/main/resources/trayicon.gif diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d17143 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Project exclude paths +/target/ +/.idea/ +/GlintwineProg.iml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..88e01bf --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Java swing UI example. Not an app. \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6ba3a34 --- /dev/null +++ b/pom.xml @@ -0,0 +1,112 @@ + + + 4.0.0 + + loper + GlintwineProg + + GlintwineProg + 1.0-SNAPSHOT + + https://github.com/developersu/${project.artifactId}/ + + NS Atmosphere dongle flash tool + + 2019 + + Dmitry Isaenko + https://developersu.blogspot.com/ + + + + + GNU General Public License v3 + http://www.gnu.org/licenses/gpl.txt + manual + + + + + + developer.su + Dmitry Isaenko + + Developer + + +3 + https://developersu.blogspot.com/ + + + + + UTF-8 + + + + GitHub + https://github.com/developer_su/${project.artifactId}/issues + + + + + + org.scream3r + jssc + 2.8.0 + compile + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + + maven-jar-plugin + 2.4 + + + default-jar + none + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + + glintwineprog.Main + + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file diff --git a/src/main/java/glintwineprog/Main.java b/src/main/java/glintwineprog/Main.java new file mode 100644 index 0000000..243bf6f --- /dev/null +++ b/src/main/java/glintwineprog/Main.java @@ -0,0 +1,21 @@ +package glintwineprog; + +import javax.swing.*; +import java.awt.*; + +public class Main { + public static void main(String[] args) { + MainAppUi frame = new MainAppUi("GlintwineProg"); + + //JFrame frame = new JFrame("GlintwineProg"); + //frame.setContentPane(new MainAppUi().mainPanel); + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + Image img = new ImageIcon(MainAppUi.class.getClassLoader().getResource("trayicon.gif")).getImage(); + frame.setIconImage(img); + //frame.setMinimumSize(new Dimension(720, 450)); + frame.setResizable(false); + frame.setVisible(true); + + } +} diff --git a/src/main/java/glintwineprog/MainAppUi.form b/src/main/java/glintwineprog/MainAppUi.form new file mode 100644 index 0000000..906af6f --- /dev/null +++ b/src/main/java/glintwineprog/MainAppUi.form @@ -0,0 +1,144 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/glintwineprog/MainAppUi.java b/src/main/java/glintwineprog/MainAppUi.java new file mode 100644 index 0000000..54b74b9 --- /dev/null +++ b/src/main/java/glintwineprog/MainAppUi.java @@ -0,0 +1,73 @@ +package glintwineprog; + +import jssc.SerialPortList; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.io.FileFilter; + + +public class MainAppUi extends JFrame{ + private JButton selectBtn; + private JPanel mainPanel; + private JComboBox comportCBox; + private JButton flashButton; + private JPanel bannerPnl; + private JButton refreshButton; + private JLabel payloaderNameLbl; + private JLabel statusLbl; + private JProgressBar progressBar; + private JPanel statusJPanel; + + public MainAppUi(String appName){ + super(appName); + this.setContentPane(mainPanel); + + statusJPanel.setBorder(BorderFactory.createMatteBorder(1, 0,0,0, Color.darkGray)); + progressBar.setVisible(false); + flashButton.setEnabled(false); + selectBtn.addActionListener(actionEvent -> { + JFileChooser fileChooser = new JFileChooser(System.getProperty("user.home")); + fileChooser.setDialogTitle("Select payload"); + fileChooser.setFileFilter(new BinFileFilter()); + int retval = fileChooser.showOpenDialog(null); + if (JFileChooser.APPROVE_OPTION == retval) + setPayloadFile(fileChooser.getSelectedFile()); + }); + refreshButton.addActionListener(actionEvent -> refreshComPortList()); + flashButton.addActionListener(actionEvent -> flash()); + refreshComPortList(); + } + + private void setPayloadFile(File payloadFile){ + payloaderNameLbl.setText(payloadFile.getName()); + flashButton.setEnabled(true); + } + + private void refreshComPortList(){ + comportCBox.removeAllItems(); + for (String name : SerialPortList.getPortNames()) + comportCBox.addItem(name); + } + + private void flash(){ + // TODO + } +} + +class BinFileFilter extends javax.swing.filechooser.FileFilter implements FileFilter { + + @Override + public boolean accept(File file) { + if (file.isDirectory()) + return true; + String extension = file.getName().toLowerCase().replaceAll("^.+\\.", ""); + return extension.equals("bin"); + } + + @Override + public String getDescription() { + return "*.bin files"; + } +} diff --git a/src/main/resources/banner.png b/src/main/resources/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8aeca2ecc79f650167cf2f5d5a8d4a224907ee GIT binary patch literal 36612 zcma&Mb8seK&@dX?w(V?eYvYY=+s?Cbva#*m*tTuk_7fX7zxTUe)&1|iRfC>WbIzQ0 zPj^QsDM%s0;lY7`fFR09i~j-v0bBfrt6`wNuRoH>4naUbgRR8Glw`!jNF1FV%&lzA zKtO2X{o)0r`-KSx4OAM*Frn$g!%a&Ru*4+@8sQ{LP^?4L3FVkRP%_vlXqjRHZF+lS z2g`yY>#LBe0!f}h_YO|}o{&*~GSfDM-|Vyy1Fr@5d_!po;RohozMNNk*R$TbFvD> zRF#=g2d#Sr@}U@NJ6479m-gVU=MC3S1?!{}vQ52n3-68F4`gmZ?G}og8$uE;sq^UW zYHDfgQ(*oC2#p`;94r-DhyBeKC}UYEagZkv4G_^=cjor*5m-lQEf)|Fc=Z2HP>_r) zobN$sR~dN;=mRhWOjvvtJ%qXMAzW7pO;<4oJ3BLbR}e90Gb2|sQxXp=S4$Ep8F?j* z0Hp8bNkC-8MN~c4F0wt+^we6vglvHG)9GxTW^-((umN!(`S3J2rF0TKOyO`E5*Zqu zCyEl{Ri3rm@XLXaEo2g^!oqPWAhdr$trAVWtBZ3xmw~YYqdY!8ou}^8E2i%bMzfm6 z*MQpR?OP939ufG>cxWM_`ARexa3P|srtE4E-}nFXh_?9u9~6zS{=d`ycQ9YP@&A7D ze+QKcwEy4T<^S&>jdJDx!Q^|&{|Y9RsQ(Yv-|zl^Kq}6dQfKl(#VwACZLVBEWF6H1 zi`d{SV;Ls7Y(97jG{k(T(nY{;m7RH!Wnpx~v^W;hq~NNSzk+b>-W2P7B*QzepC$p4 zRW_c(o|fGQ4_EP>YbNiG&iRHJiaU#>=E8pBx7OvRDzSC+g9l=(4d2utpe%UJ3wv!^ zx5vM}D=RDW2VSn!7H<0-GcSX-IF&ms-~|~3CEh{M-{x&lBROzqJWQYeCW|$+M^T_f z6;G(C6uZ@p{LABYpOg)yDRgA|hKK;=*nCR)@AS}aSGzb+i0$4T%QBB4Yy&WLAUADIt83 zIDiX5Tl^F6w*pp`O`3*HKwN#ZkvFu_@4JPCFQn|Zx^Ln1;!mGFB9`m?qA)=kK`lwB_5ojBTmQy~$KE zFYz$8;*Uj@p&CG&sV=9y#V3Cq&=E`r^WT;us8t1pbXe$FY9Skk5pMFQj-Qo|U9y(% zj#~7F-@3g>4LUD0yS!Ix8LHO-13)f``n#f$sthqerWa{SmnS~g7f?fULDNMQ`E>~k zuB%pfzXOid66yBz#=C3onvkj7Kv=m>UhPWxTZW9u9MwY-?+72tNdAYZNW|GxX;-<= zMAp@)#%^!g>dn=MX;o5G@-Oz5(^qfi4|idoSPJ9lDl@MhOmDG`zSl3qv2@6}Ogja} z-`H7a=`q0&kUCtARSna`_^+cmmuO*|&Htf|p5b;$iM=CpD6RX?P~ZTj7*QC;bG`TW z0cCRj4fC(dpJSU81}&in@XNmmR&hGih}*NrmvyHr*49M2@4TD;()CMl)VXn)Pd=1# zCA{VfZBjzP1DyDX{qF+`hXjLov-Ih%&2akZ=W~D}%AIvDAd$RkG$Yalw%V*lu8mx| z^>8}e)pv+$IDcScwM)1|w01)3$E8G-WKBKD>)Mg_^rXpSX0mpsB%WnacnMewR+?;P|d-V(G@3gqzk*HHZ*I8#J z5z1e)J+S&l!{qSEBUlK<|BpN7>zDelOw}7Fj?r6Y8+2AHj3O?X15tq`YF{?nfz6^t zc5gc0@-Nq&`gi-6u!Vk=|A@LjE8uv;j_8N;ks9@6cm)7;`Kl&;ecmx}&5q_ghPq$1 z2yih)gZ1fGtbYY&f?8&}SP3Z$EFI{*Aty}bxd{jfBuYyJT;36(f0qArR;x+I3_;sv zR!BB!LA>h`Vtv|xsheV=dn$$qKa%!>q6fU`DEM#vPjUXn1-41wn!VbGwJu-qTfm(a!xB)8Z}JiNOWk zGq3!2PtIFf@-thXN<@^J*o6c5R~|?B%D#e|u;fo;@2twC4>R!O>azv^7f;?PZ7`LY z{#3szSDrjFW-I<44n={Vv-5z1)pnv^1={~<5UCDJxlq{ZJvIULwgrBk*@k)&VQee? z&((%)#}5zAyVU8AU`EV(wN<)ruNTF{)9F+uMutn?`eHE>ssr`$=j2vw1X3BAj5e+f zA{I0N5yv4bJnOCdL{jBoQU9OPQvyA>g8A;Rf3Gm!aLtg+_ z{ZB3hrkGG#!qE0?2V}Z#1WeC8-ncBCu#F7_jfBJ`^;O0-@6`_z7($u0G52t@=u|3OY3d5l#pxxU<9?a4xzY9JQ`9SP zzxf}OqM_*w&3aLIso7+1C)=U07C0a+9Uw^Kdz}iwZc>Q1J^*Q4(_)!`+mWs9m`zo| zFA#xLMnWZ3S<)f)*|i`Y?FgSX(C3vpFlQHrT|=^Gu|epO?H4g~hfefUHdIv5_<+u* z(Kv+;o(C;{Bd>P?NxEw%D>rK7j>BDHn6n@S zm5;|-2sL75UvRyH#`B!s(8Zd7Q8=qvxFB3S-6akpDA6!He;~vVdizmDooU&Atoj{) zuHHiw%z%!A2d?_lxQfhBI-c%eq*zhQhvUp(rm{;IIlyo}NgF4c9$#GvF#WXx#ED8f z2C6?%@ECkDan~i0v|+ka2a!5r?b1r4RXRCd=yd1r&)0k|xy;6LV=)O!KXY;0?RuBvFZLkUh`OlKT*KEp zxY#mw+d0ON(^THvcXS4}=I&>`P`kV)Zub%T@u>|siBv3#G$=HCX_Mdl@NTP=BPZ1m z{6{<@@E22vzn*J7WVk142(}@NhUtm;hBpHZg~;$L`X@5OG^*+|$u{LRPo;tYEvdOC zqKA*}uSIY^Z;Hj6c*flLZ;z+s@4W57iRyfW%DoiCd_uAtDs2I=nZJMA9_l+e2@8W* zml~lWED;)Zb$W?`EY&)HCNA~oqt+i4Z>(tFWSIzNCrP*W=7pu78H$kq(BR!zv)Ld;? zDBO2*@|8Yi@8ueffGKMz33O1%URG7~_j2;r6v zjb;YdvwaH))8;F-BV5sokr${hh=`r^tvP;{KH0VD^NN4{wCNK>1^7=@MN((i5}dxN zh@qw2)p_G|yw^5o9ATwlUe`XgDNy`z&mXy-KcM>^4Sy2Kr&;PbZE%pnxyUuNMi)A7 zM>KImyK83xM$F6#u|9VVj*jYM^?IVkUT*4=9e4NBMk%swV#KHh@;^zlEjxmTj#|U? zxxB|)U%R(_P97G;Iv&6HNVJyCN(uBd+3;-OAR%*l2lG{eexv{44}1~vG;r8|@=Y{# zp?R}uu`e?8cl1;ou6@PI^FY0PDSdJQEo@AFoZp&vC>~4{><%}XqTzkU2(yEZRg={} zBhbvq$)VQNiC-0H65sV{NA8~Ak+QJvAKRNxUH3@4|C{|oBkW6)UwpC3mX}^(0yRs8 zipCLH%+{)gLa~Nhv8G(*R=Sgaug8{5X}b=sUa>}_i|s9-QqH|t-xG1bs~M%`mKRJI zm4*0OHD!2XmbA5dsE)iF%ElSe1zc$l)st|khbj^8<4Jq8{<0sxE`@K`Z!j>VHN860 z`RVZu)1SLkbA~7=+AhIjo#IA0XVDS9r9|9OH@}Btz+Bw$urD{qZ2lrGuU_jv9;ri1 zEaeETYDL?&&tC~_=s`3-mg-o+wLS64G_Bdh7`>h#Oy=<=#m3`oWZ_+Uon8MzL7B%@&A7Jl!XfcI^LCoC^V~_@ zzXM0nvy|yZaE(ulLJY2Fc>)vLDY~oT!M)*zvz>fDBZJZb%_Amm1*iD9@{&pN#H*`L zZXtO;Xe1W~un*w6&`{nR6>go62V!6&1_jb2wW-q7cusOiqnP^M<|JjvJ*EW_nV3)+ zrkh0_hcbRcr6$3}(4vT?b=D^Wn>hXWN;R)VgAQI|W^1D{{aac@$xlS{#UB<-dr?Fs zC;g^Z@XzhL8)s&yO7eZGBTd6Pn>?f}X4lk>Y#2mP+>g=S4^Wn~(nO{D2QVY%KOKlI zt_n6MGTL`b{1pIgkKR)wjKv4oU!wDgX`wOk4b2CeImTO4THMCR43q=d7A zI`Vd8T_C&H92EGKEn}+MrdY)$*O`OcgoTWsrhwzb$^H{orOweQ2Ez9H1(mggbWpwA6tBxSdob_ z|MOCjEb_;0gKVB4e$BIOsX*u%oacBauNZnqdhT)U{p0JI=WS}iKE+%IRky~?%Ti_A zgtY2QpH)m-o-U^S6VvJVxTzp#t z4D-BI>?9V;ZXM)y9ZJ1VN(=_h|CHh~S#<5*kxdTVzT}dk*n0i*qxY=fCKt&aKYHXq z41~MYXYc;z=N|<`Upy@zv5BQ@!z)GDvnh~*UVF57bLt4BNvab3wG?#3V(o&I9tQW9 zBg6a49rly5>zQOA>DdyiYk;}5wMnX@Y+W}0@KE7vy3FLT0l*pG47qCf>sm0O&uIm8 zv4m=K|tE zB!=0IwC~|vP?a~|?%=|JKvr4ev7VyNFZLrkPO$WRO!JRQHMk%L^k+@3Q6*tZi>EQn zSws}tqDt^jhett@)z_xZ*s{9vKvPw6?QH9ozYA8DdXntMu-0NOwQLUGZq8>cUb8Ex zGxBa#DM75$WG58J<(q8WfAG0XWUjDo5W9A4&g*(sr7dQ-$gt798EPR_HVB{Ex}ujZ zvxzydu#;+jP9J4!vD%==sv;DS)Q~D>|DQ zSZJdGO&X@qX>#j|_rj)rdn#|RFI2oOCKuHWJz5AnF0}9^{@rp82pCi5nb!L1h^l{T zLA7y^tmrbA9!B|BZbV#B)|G|+sVwetsJ8LY>k##=2uEEiq#n2gUnO;?s12v|#nA@7 zOl^_-7T8Aiei>nK(}dl9F4!a~lOnm@Aj5N%69%<^3=eICO)Tw#qTI;w0dZw)q|6l5 zRm1lm)A~JY9u@5DfbMriej)ls<<&C+`U4aG83Ki>4BXz8)j=%AyAN_WLP!6Qv>F}| ze!X+l&U{5Ao-Uc{ZzgWzA>Wx4r9HVnKbO!6*# zn$5MKZPbd|FqN*jA{yw;_8$Zu%pbT$A2c@FF#=X6W*RKWVg>;d>tI`=f1daU>W&oW zj$lb9bSo+b$BL+f=1rn4eQas`b+ez2{$UTw}fL^DNz+vTMPKGgvchaN{ z|J*M0^l-aAe@Tt?=HZ$4V|^fFoHXl&$?31~hcuNvi&h8ztw4T3YO%~3EWL(kZEMKb zUL082o3aIj$&OXr2POu<1AN(zahHA{O&fFsfqR*pH>wwS|JfOB+Lj+8X%$qP)xOj} z(~SK1%}D5i%v0If-4Uqhe~^UQ6(qZ3k-Dho3D;Cp(4vgU0`{9n%Ld^Sn$c*^Ii zZ^&cavyg|E$6nada`1RJ(l-V0weSDw{2Hqz`!~;lN8W~VBe3kH+4)o`&0C_+g_CzshQEhcQp$=D zzcg@PePqt^Rh}7*!EUXtuL1-q$=Q3%suXFDH2@VE7JEkC+>HZ#v6%g@0 z=m?T^x3!nBtvm6K*?a@Asis(J$8_?8(Ctfrml&1oki-`CAicG)@ZY?AiyI;#YPYPqr7O~obx!OXsS__K13gL~~*AAiVOQ*d`XVdG_wC8Xt)p~LI z)0~Rvxb_f;d+%d`iQHRnPsRGw8D4wd9_MM*16sJtkL%aVHEW*BV?BL7z;|U9GCwWb ztS@D=wSr)t^sS?&nascLS2usU{uOs6GySTd*L6PuZU#Uy@c$g=?%qH8Ey~o@5;^VjYPCnq=fxn+Nd)y}5QH2^MNN2p4Y{9k8rt*hyK3$M{ z`9%?S_gB1#eoeRamO$5^jh~cv2RK?Z3(Fp86CrCY1?Z!g&b9&XPP5lvx~Bm_<_5oq zGgY#;Ewpor>WHFM^k^`R5Sp4JN6@8InH+yAeM%bYW?}qinr#oZMGmE-^fNjtDWdWX`X*+MF-t8t=6U!z!&N&U$4J@kZp?|^e zAF@56cwG+%Kk+)|U=DidC!5Jq+ey)n`9DfGX&5b4)-T}?TF2F1a&Na25nLH#&N=@7B|Ffa0NFGsC}yhjPW-KXF{R!smeb%-vACqmvs=E@LS5U&JT^9uvkH8Z{_K&acBHStfpVPn?XcBPF#>u)K01Ayz(9kh-W zFHDwN?5J1z@uU>a+5{fbh1Z+iE{EOAw?ZD9ik`v__DeiAp$2L3QgPWF;TyQ=Zh~eO zh)iV*vju-rt{0J7DKa-ElybJ1LtnOIqHF5&5%#S8fFwFpcAhTxMl4$ z9d{m4@D{fRLys5JRF@b?E2Tc zLT6^TQat>PJL6x2FyUOzQwMUoY`GqqG-bQlEL1#-Rrm2M*tuo`93(8OrVObPGmlYd6 zXPyO3S>v8r8W6#GdR!1TCq4qWFs9gV305Rw7>n;wMOh{=h2`o()D?(O4Ez_N_3^vz zl(pe>-$i_gZN>Z{@?&twW*)^2*LB#T3jz0!H7X70G49AaHtOKZGr0`b`}U^ptv!A0 z_C1f>^uVUUn(bQ5%@Jmk9|lOn;>6Qz;X#fD~K#I7FSAj6oRslq>(;Eo!Ecd+8G_E1mIR0q)p@ds>+2jtcV4-SH)r zX}5a&lTpWF65P-~1@~7pA@U>kLQ!Z5o%s4uSQ<`Go>t$#~?*Z$OZTer3G{=6mVgw!8ZLQtwGb47!ee`F}gcdlDjpkmEqQ$?zzYq&n(qb(M zTMF^ywu1pGJ?(DGB+ONN0|;)#FzUbG_`?N49{Ui)RmxT|xN|2imA5i@U_$`!G~>{iJSng z#NFDMm1w~kA0(4Nl=X-6YGdm@qfj_aqNIAjsEfT3GJHcN* z)B{_WdyRt3ODMqeraFi(Q}npQ$gi6baUsQ=M`PH6Hx~WuXvN8jo0va1Z=EK!>)4la+k!8U*Aj*kx%tEf{oMSfd`mdE3&-HZ%P<))}fkO;fR13 zXa$;<8*1I-t~tQnzAg@v3b`^MEqfN*C8fzbm|V3$uil-15;sH5F0Ec}vqQ|bEx1w3 z3+*c9Ehn)7y392i1@v-D^X-`U*jd=Bb<&-={jNc{>z)jG%+0&vW>%iE{EVnb9(EW@En(yy z;`;frWSnJF-Rb@-Rm@M$d=nxvFr)?>1&trAfNT@h5|Lzo3B#zEjk$6XcN>x5X9~7c z|NW0TXJxuy5*RM|ol0N=;I=d9*aPhZ6m1Ych$xxyB%bRc3V{MedcPR6*7h#KI)4i76`1NFg>iYx94%!8;8!BuU@#txd-E#Eg0W0U~ zoC0H<*@=9t}+oq2ZhWN^Pu1Dw~UQ zaB(rgHIP8Wh`?}eyQBg3Oq+aIA*lpCv1|cE^m67w# z?qKPW)>;nRxLWJ#bBao`u(Rsav)Y~8-^Mo#XTIWn+TKR0g%Q_xDgmq`XE#^R>-!Jg z%}F|KXF?SC=bfi>E1Af&r=cirZt%A&sgIQFX3WAh>yc~Bd1u%0TdMO}Qu8RT!tjEMmEvOyCup&oCdA zzC-vQX+}K`K`ep#uvh*(=f@e|9(H9y-kpJy(W{@ipDNh7+|2zkwRvb_a$->Dy&5n^ z(a)^Kds92!lWjsIeZ_@lBxMq#&MTmG75FfFx0%5ZEwQ5v_x-m1_z4bww=ChcBLk6; z63BTs*JE`7ldMG93g(%Q#OFPyMBAKBN?E1uIw=$=(7G*fh-3mtaPMzgGp&&)<4jwQ zUH#+Ka>qf%s!>yJX;2h}BbL}d=0Y#ZM4RkIn?5J5D4RYc#n!c=R^|-ihIn0d)-?L> z=eEoyK?Vo~`{oAY0x|a$2AV!^Mn-ESEA)mFUCBZo4ni>V*fb%3t{w&cOXqUfRX2SW zS%0{Hm;t9~a}|XqNQrBTCV`YBAj{ku(^TERl-DUtANj-Wt-3=q=Y(li+Z&TE9_pXj zc1%QUTwFY@0U@BKkl@#+A$LlFM^BmnlR)3Vin;jU6y)h(V>lLnqpirRtoMGX*v%0Zw4p7wp&MQp_MoOcZqtqMR4%+g%!pa0x72A%TpXKK@Vl_K( zvT-$&3!+T6HK;)GUvm}QpiPKmn3Jd1?Kfe2TUMU`b<~D3!c<@`IMFt}XLP=p}BV zztL`NN_QxsokwNzE6j27 zl9T;xE)-7-{_yBFaq@d2w3gE*;lw#y-R=`tozIo78N{k}{NFsEVm)7+qSU3TmwQ)e zT7s$H`OV6hR^S}P_3)(fw~3qVEpRkQA$9ymJ-fuGsjF)|k(%uFr|V_%ZvWXvdI8Kr zTvII!<#)*7uMvH<`ut@ZhI5w8ZOP20+mY;z2KYEWKu8vm1UuAq2f!}$j4H~ugG*k^ zI-IV#vSUxabc#ENrl80uzV6g$tzlfqX}m9`bHK*y#I4z@BpUg7Egf}DF_U~m%YjRo z%LRs3WfF;H3$M$C>`L4QhRppHI;tNs+{5PnqV9=$b5`r#l~7j+_-{#tGYhT06OM}; z8TL#p=usSYGv4_2KwX@wz0tc4wb&1eSk2wRp+W^nUD7`br_EcO7*z~~r!6ma)Lc>Q zPwi6i=Jbk)CW%$M?7yuiNBmrFMU28``7{*?GpqFK+apb!(PfOC>=sEFY7(kD&z< z_l+5)l|L%8`!jZ||6 zj(hb>!`7?F%!teQ=oA+bWMXYWwMy&jr(}UPJr9-(wGti}73LBFAGXgdnv1|^E0da# zj#AP@UhM@)RP2KJ5KCv#?7JG1Q|ZD)%V<3%$vv}%hN2}iRY>eL0^$C)?|O0N@_dy@ zajOZffI!M`E(DJZ3`G`8ns6heORtd5@CJg7B2pNQ)$tN?T^Su4YZN26Y|d@h1fDx? zcbXVDhl`mNQCZWjyHe>~R9234b7x6a@~t>;yPw#Ild=&{Rm(p@f?l&)39ggsMNbmD zK9qCLXa{0gTn93b&`URN2fwKsJE-KvrmZ_74mSdl6V1~J~axIFbLQeEi$*gyu zxDxRExKnN6?5{$WA7QknraQeXHF_?w(T|#?7ffj5YKIgG!z4wsg1gtBjuD#W`E5W` zNKZ6Tx}fL*gjJm@B;Jx;c-7^qMAXAbA@us!ag9y>u0bl+Eycildr)?<;vj2Bz5QaK z>3@mZ%#PhU-|Iq}Ky7$K8-6>nr#qQZd^ucN>qA&rd1@?H*uJivwzSV=>XM_^Qax9M z>;?B>S#PDRC*TB6&N!LrSTvB`Z;~KBe0U-}FZaiUF}PzseRYnbV*V76&hdQ2fyN@f z^u{&lLm*z}78Uo=lE31bkzqmTy)_x2#oh)dS#c5-UK72$?u|u&wgAE`-~-CI^{edx z1l#iq8X6qAN|!opbV0*z90kMap|txkBt3scE;G;mN!}zDK%_i5T4AMykQUAE;G<2& zQducju3R+I*}HbhY2SUN8Ri!^zt*@Dmlwn5+mYyjpx0L2ER*~0_Y{o2D0M6MbeI>` zR$uR;d7QnD&s*aG)L(y-y458%E%2<_K26F}$}+=>Gvs-l+a|$hmQX$3M@Sp+<|8Vm z4?vamVn%5041A~SN=wab260R;4rN=`;tPpjbEqE(FrJ&i$_R?D$p|iC8(HeWB;flM zz0u2FO%^aip+LU2j%DHH>t(9=AkvskbiO6Htmqu4*5LrOJY1+lm{&~BMkcK91snh~ z5gpbd^V%R=J*bUmQLzZ&0@VF!%@@(HbKu$NQ>5Gd*3W~{oqEjZo5XEiixeo+Le++K zI?cw4!c6AvCMm>F2|meXsd24IU#4$waBaDx#XPE75A*-*-$>9zan?@rWoK25Tq`7C zG_A&y#zG=Qi>FF9Q-&z*WyweC}Jpym4@C-|hk+!f0v4C!<@znJ0+9cu8y zPx$d01u7%z(JqPwFY^a568s;@AK@kvw8uxft%}vE;!=*q?j=a<8ZJARraH=W=J|$@ ztdr75we@;dK0@VJBGcno)QnBGTBHkmULcna425v&}RKG38|@r{A8k7ElA_fv5BAmwzfe3yyh`NY89*p$dxY( z?Cx!iqkRjp%ARRT>X*JiHZcY!P3BafrjFFNh4Z}Ysa?y-H>;4=(Y4Y!-U;8kJRKm7 zuI;9REh;sl>XCy7JnuYZ<{U^^5k5>BT zg1rvG(KBtKujnQbH!b)^Gv)r)BM#sgyGhR(IhDZBw?ONoX zhKb27ojm4FxP3Un%kHj-`WcGZvRx;Sc?nQ`HihP^!PUg2>qq6QHrcQZFH5csSV5sb zqcU!J&I<#>BBYg+iIyXz!Dk42r9{&1k)NXYB&RN`wolX9*Og5;W{^_)8#Hi7!aF0a zm1Y(k;>3y{RpcN>h%b9URN_}0?kp+(*lPfSa@=YWs`;eJ<2G?knE$}qW%-p)-%^#C zUe2#QE2m>(--&A9cXE;~1n~f0hmcqi_T=%EOZHtBNrovdXyG*u|7_FWJ@9z%?+j2Go zyxes&BpRj)sx*~7EHc^9(5^_!6S;7`%6C)w>8x) zc8TkHvA6tULkv|kSppCQP4m5cbd0G8Kzdba)sc9>%*u$08F*11bx-%+Wv@#&H0?Vz zg4U17Kh9M8poadPVX<1gO#Zi!Uu(04rojKkjPabTC2ww;F+(^xVco`F|D;+BJpt#X z8Ng`wi{DK#pG-)mcvF&Vali`zRe(1ca801)d5`#k^3WMHk%M>8B_OpGq3n`Jdm@Zshw>JZGP2G?dD!Ig_j$)8|mFU&dRK>|GGT_QrGwLNypJu z(@e)ZFOw(z&)M9+v=9RcD*rgNY%BbK6j2*uk@n|c^>*-VHmS!q@#WwB{aUunTWz#z zbyhbsU^2e_P#fRrN)W%;>5YJ&8m^Ceh|L{HxV8>VaK~nkQD^$iUsY3Ab}=5S^kyClx5nvx zBK2$>(VLvpia}x;oB|NMpDjo)rIDzw@#BimaI>kKVYM#|^guV`3v7#jK>i97SfMAF z$TQc+C)iicIr0m_xyw&3p6*he|pGv57Hq)+7xcR^B^ zWXOnD1|w?-*I=XMyRB%%2_AFpq2rm@H@MMMPSRpKsRbU}sj$ECaBM%3H~$>-YTifu zRA(F|bEU_X;QXRGgGJMP5SNITml$DO)2{RdjV@%81%{GVgpPOYSjnG%BD!O_9)+sW{a?z_mw`qofu zX=sX_Kks%73o}-sZ&9pCQ7ezX7t-+bO*~M;TATH@uce!QzyZA+yv)4*E7Lt7+Z*t5 zL82c^Nv~a~bb=e8b5;>B^7U_O8Mg*#{XEgn&D=&u4w@3c+gI^Y*eSbZ5qlY3%&5eU zfE*u}Y?QaD5fi_p1I$iI>}3&W%~RT5kYBz6KVX_*u=vAyhhchKJyMw~+QElVh>kRn zzD!c?(RX$H<4Y^!Sbv_8tHdPFuTV;EATlbrUaitCAtN#EihTEac7Gy&K3=Ste5Si~ zCeKJYPU8r(#v{t3@q*@V#a$s50~!g|`uBP@Z%!iI#stId^+Nd@w}922t0@&h2sQR_ z#v3cIgCzeAUIw|_aZ$q*svBg4Rq5U2=a{JAd%#6Ur}?})i%0R+$xp=3f3$Ik^5R_f z13q&y>FX)qv(r5cp{4^2HbaOkhfYw#w?bDjc$FtZa>||dma%Kj0x7u(){?B?CG}Ke zQ!Kn$zU5yar=LqzQPApN+gh93d5QkC=V7P4Y~LMX!jlF1wEA&f?;&7ICW4&zM5F1!JJl-o4UPGAbz>}(o8fMkl z*luLVi-?X4KBYR0^=7-I9#QG=DOI_|K0THkZW#Ccc5*m#@Ij9>ToQt{q#!U?g*tZ3kST*jS zXy%Oc{rHY-i)k!5XTAIjVFO;kuH)pvH!5tsH90q(hRa=j55R7JvLTD0P~M?7f5OyyP+z6$ zli!Tlq*Yhd11z=(?iYvmHJcEIvv^wQ=x3cTZd$MY$wv5IlO+KB`S)Fp{eejL{5HKh zr;cOCNx&z1;=35;zBa(4!{;nZy{5DgFQiPj0{aOChT~lPaS_wWZsqSo%FkXaNL|0H zs9nSixT9U}eT$Ea<;Az^V?_X&>$+cKm~ipKrPbFG z*h#QdLHYc+KJcV2B8wdo1LiC{rq$p{ba?m2k-MH4Vti?Hq?(4l7cZ`9=v_*FuRpR{ZM3KjWvtd9dGn5@G4NmBtxceemf2pc> z0UL-_djVxXp1B-~&w(;ns{R_lXS)K!4Xysse|<#s;^7|q8hYC900mJepVV&4SqJXN zAPh=;1;CO1*#9Q!!oS!md`#j%mFc_F1}$AKA!-P+SSbj) ze1;AKBGG>pB_Bm7)VM8bf-?7`j-s%%sqn4+X^-0+@~R`R>{zNStPG~8#gcXB^8-bZ zV)#Ql>hh`hCuCl8O;^r^+>_*-uL~4mO+D_v!rsY&-qC zZWbKb#92a-W9L{ZPB&LK04Tv3EX~6phn?yHb{HGu9zcEoL?eoHSm>@(!pIE@EfUE` z*X;5*lOu!tjvz;<%TWBKmHE{Uc*bxBg+Rm&fdA+dK*|R&?w-zmY@&-lLI?+5nNI^g zQPU?=&ZQhud3h01{7gugZyZm~YX#?CkeylHhD9XT#Xe@lkfYbds-pWHkSu+@)xjor z337kxe&E&J*eE$o1y^Hq!JBwa*BSrN0d!#K69(P#aLQciE%Epe>A@h!DuXLgjlSF~ z$OhZd7kpIq#dkOVkl8_R2MM=N1J$|6UB0v@ZRQ@=R7jnEU4HUcuY$-qOCAUJDMN0C zaS#hT_`8?y<7jqS_{jC0KK-uG2jxfWjARP<;2hV5(O7Z#LHLGkBCpPyRJO$OfV-ag z|4#?1;&xX+IUqS!XqoTGF1730~ReL(`yRI6< zSSlS2eT+edjE?o=1W(HE-tRK!C-^eQS3w$}_U+$v54kMzo8KjjLY0(_TvbkC^g4h1 zMOpvKEOlTW2llM3Vt=}vP9&=0>*>p^&PB!(2E1UcI_)v3;1}!R-Q*;=`EyI>lYxs% z{hwkYD4_Tbmm1X%EWEIvy0NvFP!A{=;B^n9WvF~9F8-9gvh8VJZ$vu0#l5LQtL;sl ztd_Ben^R^d0Soc%VBzcziev>wlJl>%LY=15?b(PCFyI))ilh%g+~$8suxJj;0H zuA^d?04itL4zZiF?-%)5uYNvyK#~ ziG4heAC_iR(s7%^#iJn~LyX$Ry{C5(w298dX!Ya3^FV`jLkF&jdPFpr1K2*J+By|? zoAe%IY~pdu3?urzxRk%T7&@Aw41&tpGXX5`J}(DyKIGqK}W`R=0cZA1esao_cxlDVRgJxV@lMcZRjxvTYswIbv@nb z_0AUfjsP4N0Q3O;eiCPfTTjy7Bn`#?5*r?1K?aV$ZJePsh;TBauFQiT9mZC6FaH~+ zovbBLF=D+}4OeWIdGFgvx~)w#{IM2Md!@dvPz_>ifLbtU4_{lf;Fdlo|Nk)dRbg>8 z+qMJ?5Znpw?gV!l3mzcB-Q8V+L*wr5?(XjHjk~-1A1;#a{6UywmzA)rvc}?`mDD&6vRi+;b9ID{gk25Gr%AI)rW7k+vu0`6~n7 zaK9lr4wxn+KfiyZ#*7zYWvt&}6;b!xeS- zCi;dFvu-Xp}j^m6M(Kj`kngrBAEA_}6(YFyJs4wM_6~@m27sH?(veXON_GlX-#5_w75pgudCg~Mw znE(77hx_S@-k*b)&noN~naLlht1lH|uZb&<&wE0**L%6NX`p+((?{x>Ubt^DPecch zPtUE5XzMc*D}@@PgmRBM$6rB92k$V*1z8+U+;Trb6xDpL<1mE5s&0mrayxt3hk+R$ zF+87pl&9c;EC=*3VZGm-!0Iz@rj2TEOvl`}(y4VyDH!~!(Vhtg+Vtw|)GF!j zCi$^Kz&S#-+cPf`>9>}*lV5vJ^m#ewufD+-DpxM_d-tqYUvEZ&)3$i^r^|g{{vDin z#$-%HvJ^Tcr6X(J!;qzR!SFnP(eXDzGkD?uEa3z+Z1Cx5m$fUItsG$xfsU&T;emal z!GmSVs6HNj) zQK+o!#AkYAqK?{=cS4A6RWEK8NGvm|B7vg@*V0G>_kvtVV~@0iD<0G}I{^4e_bDR} z=yC^g5^JMt zw&;vQZ4e=K`U`Eq=7ZKKk6yP~EbvPI;LRog{s(5Ht;dNKKi3IrMBT2dzOhq|+5*3> zckagTE$T`gHU$Y5)A@3CXV@3^MMWE}{TxtPL#EV#M&7>aX~)d z)+d?f;8bPFp?0=kvzi5OWpXp&n03ln`{84m=YpxYbo^V#!WFIdDnd(wS}+y@fab0c zrV`u5#kk%ZB~_`rTU|(8tX(c%MTDwXl2z5S&zZ%y05)L~tmyltp_rZMMdgH}O;Mq- zbFvRXoEY)_hu+a#hfK#Uw%8j@*!V0n?)%gZxp3<@T`PWJ_ve>LQGjo%;uF=(QVP6v zaW&;ht}EGZmu<9J!XFU_)$z`DZZFCvsVm*K40>C`FwMEh8W3I4encxmN?miz^-TV1 zOe>B0>~sS~o-7>)Kg)&~#MI5}0rdfugunODuW$Vqn;z3ost{7bQTPb;A&Bt(qud#M zogsZovC*-H8XiG4D1IhijhawuJt2&C=z=>I&2f6}HTovovS5=gc#$&uJ~TWs4VT)*U$AMuiHKxw|U}MH8MJ=0E)G-QGP`j8eQYAG#JL1K_zlPx$F>ZZZTm zYElAAT<}cN&GCA@9%j7u#Aml=P0p}|^%a>(GgZTT?`=EdSk2xoyyn~dn+pj?$9aHN zZ-ohj%KSbmb|iZ1FgA}U=*GhGNotU_xrnuntVX@YNeFy{t*N5S{xUQhCC!PXivyz9 zszC(f+Mc$Rj@C7^OX+3| zKHiqXzsVtSl`yQA%OeNpM3TzAWfi8(K-4A$49HR_m)#~PVh00NZt8Zf%jmk29jOa{ zC+fXb!;6O=ug_ljA7n#k-@1+_gD|hYwqw_xV^~?VL)s69A71OiKphb6M?lEI`jTP^ zIS$IDVHh$wGC7Q?VCQ@plP5KLVILb1O+t|S+nnmLB%{^W&lQ4T0-O~bUd+x;80nNY zo<~t^Hb*?vqD)zt7+g$=T{ zW`9w7!<+<*U~4^j#CA}}o)cqb0|+Qodlq>6psc25%fnF64pmY+%;rJN!6uvxY3lf* zbyAYz-4Q|r!qm2ISgnX#!#_s?XIsI&IAYBjRZv2Pd7=qE6m?MYqmE6o3T{k1OB4f<`c3Pj`9C#3s_zb$yJ1) zig)yEX}nV4^`!@KW9pA2COx;jTNjx?zO_FZl?Lmh?lXTp2Fi3l3tV-g&f^ebNvPW=I$d%CP>TD2$!6=f(WRu>L{6s{bDZuAo-eV-FZ5)bF6Ub)qrQjatv-bwA zl*v6&*%gV!+4+?{=1Cp9#4dNE-KC>kO`9in_UPAH2hd~XErJUvGX*3m5sZZm-qJGJ zoK0L>1hQQ#Q1=gW+$q^Y=U03gi!^?Lxgg z10*%oCf`$BnqiLNT<1`R-S>h#_!O!Q$}MzFeBOhXK5-< zhMTW5J;*Y)UZ&caRli0REx-I#YfXKbXpjGP5MgvH-YM$v$Q0zy4D^da17q&(9z;i0 zTZKvGg~7GBjU!Nr1lCplsgkLVkmQddI)2OCX>;+yKVSe_TWQ)%=(H71?6#gv`oGR6 zZ;%;?uO5r49Qn&C&=*tq>gf$YB4#|H^58<-txhR)WyoP_oZ=1U?b8wDjQTKE&v{I% zF;ttZlFpgPEhmw60X-9mzvJXe4BXS)&?iDj%q9-3PbbM=+( zlbP4?yg1M9anfG*kx-zmd+EOExIrxc5lciqZihM1g!%E45u`*`B`b+GmvU}o+{-j3 z%e~MNG(}8qskURoL7P52EH`H<#YyS4k1PEGRe9aZVcp%jFLJrBhbhi{L$Vp6%dJN= zxUInf1t}9)1y|1AH=W$+&bmadb7&q1wq?#((n*7K|50Py;+z@YWj{M%^lMls?fzlZ zCNMSXH>co4fH1;rrEbfQsw0>fSc;?;7-ke=DxuOa`9i@W=W0CDXc#LcCWK&*UGj#p za4YU;J}cgcHM#?~yADOqw^_v^Ck@fs!-KGzMB8EW`}70KDf`vz4jH{YeXLqFK0F0f z&eGQk&j%7WYQ+_b>cdxB)o5obg~V`L%6F^IYyJDl3FF+GMKBH5+tQ|-(C0?MwN3qI zZ0ZZciKk5s|7*-KU-?xg+AEPT85!XzgFZwIHH)g*K>68P)mTsHYG_#H@WE~TxvJO& zGl7b6ggQJv;QCBN*&nz^HfQ!29K+R-PQ7pUUVQ~wAu!{T6~`#BeB`&eq@O>nahcau zmZ|RFqWgR4q|yE2wngBIpm$`XFNfuHng9vdJ0?Bw&m@j1)_|rg5dDkw5+vq6h4a;* z22CJY)soVqGBkggI00wujlutZuI&h*J7H{Y8yCc~xf0a{wpU%yCW(w6$f>MB# zL!ZUzRnjLqg8kx4EG#V)Jc9fSSq;O#W#Te(jf`!Y8{oSVU&m(Jd`_>#W}T%<5cE1! zh{txSHW1ksP$Idv`uytXVz&Nf22CtOi5f-%1ZNM5nP)z;Pt#9Q#6g1KbsDwnxVz@k zK5{7u(D(PV<;hzy@ zO6z2poXq07=k&Q!2I(MR*1dNLm15A42CfX0EFdU&GoeEPkC{~A`6W%$R{X2AwDusb zpu^Y(*F~**G}ayc^UPEL056-Qo@AJNC-W^#xst8#YvdJ1pHr-sRm%em7+GQ$F(Ko4 zTB_wycpa^_gWxzh8AUta3J>34tuTX;C2!io2=79Lww&bXE#1h^108p9-dmAa3pT3Z zJx~iVf!Z&`#o*>02rW|Zk2z0`gg?Q8be48Hwr(4C-#3e>$zPA+GB3+#Z1Jx4e^4oW z(G5+B*IdKb6N;Xag(|N;Sp)Pi3uH(@JXQZz0Y?k9f3%bN7EcN%#M)8goTb#r#zrsGV|v_&*;ZlF4y-a|a!s9@{eg zX6MdXC*NWoh&Wg4COHcTS>9=uqc( zGTgcffU2(LofQ|~1*1jDsB4X;ghFJHJz_zUU<0 zCM6U#Tsn$&9qpE%R2aQ>?_l2zddD1;4eYH(Y|kR&L&umA4G}rrE6hTQpfTxX1&P*S zeyI)GD=gYCEN=JJA!>$fH{5~2WXq6NlE)!uC=fj4i}y042(a2VzgxE8+BG}2*Lc;N z-f>ZXSi3rO6QA6J)@Na4XiX*;M+8JmdtF^QzLbs4kC4&7X6 zbZ9r*=H4r6RR#w!dR!ktxEy0Xn7i7uL%FmLcUMX=8n$?oh)=wdm#B*U<|D zu+jqn>Z<-OfM&tKTekYx0H@XL28!ZnWZYV+qddLa**N*}UU=sjH`tYTdpENO_p8vQQuoO~ z{o}m7Ld&GYhAuglx3OH*mJNwk5CHRGnX@D*w$+vcmgT0whuldhU-;;< zpvd&bg(I_xwp6~*`>^=>?Cy@EL#kOe!zArmATqnEL_G=i3pFCwQfqMYXKH^u{b|DT zxQq`I_|RDJXBeae{*k5XvKsZ++w}uZdt8=2@`q8MB-qc5V|nH4AGP9wV9vsVeA9Tw z#1%S7c`BrN0zo~-T-W3 z;X<*>Lcu9j*>=b>a=b&k;u-n3JCm16khY%Ys0}-jgZx`Mkm^ocJK-sl-4c@YGimDy zVkIJ*v^Gn3sYMxl?oOZ!Wo6};J)isC?)AG55hT9bc!!EqDp)G%Xlx%}ow*Mhfu3Jp8Q z0dK6?_PQXTspV+s1r(TF9T);IGA*4Ld*LYB6b_Xc@>q=oo^Z*t|Kv{LN@d5#Q2*&Y zbkdMt65))SW>t>qGtektdrR8X%-F%gz%nn1Fgz~OkY%%!ZgUsfH-xfBBPdLWQ=D>w zzbeS@0lLKanMP1WC8B+-3F_3+YH3HJR&%x!PHjHifbctaro21HqY5{Ac1n7S&&PTO zoT}Ffev0P>-$#J=bUSQK?_+mSEN*^=5j($sR9#;BaHenvqaReYw5+*NYm=4{@TUb* z66{~TWE4D(GTQPu>m}mW5>`r+PlO5*XUku|rNW%v!t3SMl2{tjrd2Z8+u_vL^f6Mp zVE;Nlzv_qq!?5y!-51vnA3{YIa}-j-G#RZmCo(pRdt`R?&nBRxA!;6AOi=KOeN57k@BKZWaF8q8F0KvVZH%)HKvD(#YGi z(agLRr+zeKdwtF-x24vi-x>F0IFFq|=oU8I>5gr^=7e{TX;2Lz2}21P;3LeoPx0Lm z4d~Va`%T6v%b6hL1cXDZJ!=|8ZbWaHMb6j(srCD?&-7whq+vdDvL}@wSLX<|t#V?y zy=$6WFS<#^s-`f=i*8a5@mGtcq{{&qjr|V9Ku+{dwD%Qqzx6mkv(6OBFeGH}O-x)e zWyj7_!7fJUCn}2juhq!WM$(YAe*2)D>(g1n9I;$!o|i_<-N{>%>INceVm(C zEStsCE>k4EMkx7RA|N^dy*F5Rbs;4=%J6w}S{=Y=Iq8XueBC*>;3hKIDTSbU=b{urRzrux<(o1xt&r_-r~rUsf0eDZ7ew zOKB;<$^A>}s)$MKOfLs$V>9s(`U21;8#jf zFe=j{(t49cTeY8@u!t%On%>8iV4RN9&w{u2E7lJ#Z-36Z&#h0dr7wDXwzJQh6Jh4k zIDL*q#5P|}3d5c+xUYNen$&TTSy%CONRX=z6i=w~wZ_kkZc7LEFYl*3K%zeG&gWf( zr!UdvwMtm{PK;O*P8QK`wOjcRKF$^d&|JJ4*j!ci6<%xA#W}tU;#T^vqt*(S4|1&U zt-;&6g|%U44PRgt!eM*4N!T9KV1y93wHg5hJ z!+`(Dz{8t1(bLn(_O3RZlW%yx;ehwPhoI4VMb);q9QaI8kx`UW@cU0~(5Fcp8wR^Z0ZfYDe{R& z*m!`&w&=4o`R-UNqqJ986L+^1TchYx)6fgI=M}F5wp}}p=_$}QL)u4#5J4!>s3jxqD zNOIBSODJp(KHuT)7@u>Lv$AddBR2lhW%}3trbo=N@ zCT#ZA!L9>-@%J*z4cCOe4AB8h)vXGFclf`y%3SDgHVYlJiigXsjY_|h?sZmUU7jQe zdl}N3wOwsz$p6@w1*8g*TLIshzM1NNFcNY+d3e~&2gFGyk7e;}^!`x~k~tAvAWiob z7D7`d0jB=l&Q=}HuK%iway8n=ok-SS6ljoim?Nm@ZV`DEiQpw*PS6fdjVYq49Qyj} zg3|KX7a%VUw{l!lkxe)(bfQxU1d+#%2S$@d6SPpB-?-Y7_gI0JkjcQQ-}GLHkcuPH zig;9ihtO<4l(;8_QMJ8Tz4nPR7eqTBwSH=}B7lm;yn-|Ohj=9E$5lXFSxIkU{q`LA z5)T){ckY~GT{x0JqHHM|=4mm2(+sh@Nh}}RD1+Mw<;<@movX{w1JO=fjbJGvqHJ5C z`&6VWIc=_^cQ#V5CpoPf;?K7yu7KO~Dx*i6g|Wy=f|iB(n48h3ueY3d6E`)79p6;1 zx4w_OcZBr>8u3>D##8%Rf(c;J3l4<#4JQ8C2XLokT&<(#Pcf96DUR~p?`Gh~O`fcY zLl_e|B`K7le?EqEWc%B(`A3I64_gt|*09BxZy~`WBk5eWwl!q(W!ZGiI;W*nyrJ~K z4XeWp>Aqv&BhJ_ji7H7+c5p~o>-plhSVc*08T(&vb!28eqXh+kNwGt9!^~h|Geb++ z>Sbn*2lur`l5baJqo^R_Lvh9hXb1lSJTizk6+-m%W9>|)i)X^6kl^rY8^coNP+%^M zK=^G(pzDVxb;Y8&Q)(lJB@27kKti|HKIV&wB&=r?>Gu|q>;}G{6bU9*eXw9fq~Pdn zS6cfJocLaE zK%%MbI|>Q{#L(H7uOeToZq8#>-p;?n9n3T7h`4_$DJ@%KUj#A1?|3)W)0(@>_MhSz zxH6Ivi&BjZ_Pd9?Cwv|Vx^Upn%%rNU*}naibh#d?5FO>qk+Cfzc~-$edxrd&4^@&c z39~;hIXg)RE!cwJpU#rH|IDPj<6aXd#pL|K3eGoB2ljcSM_|OO0E-Z%-f)dAT}$Xs zF*K}jXFK@95R?Pj8rul|NCijxz_{Y0wBa+)C4F`#Oh=Q7PNG4n8f9x%T4+`JzIz@^ zzs7(z;)o`x8u6-UfHJQPQG|D#ud7LlVD9!1H^=Ed>AdD}hyJL`OFmtrnhL{q!Q;~| zbJnb(8NKur8M}ioV05{BV*a3-yyDIU{pXKCgPZ{Edu_qZwG{0GEu+(_o$&U-!-iJx zM1o0YBF+uBY4f9vlXS62W=Dc=3RuJfwwb#}ZsLC2)G3J%9&R`nd&5&Y-I0(=Qccnl zTStq?4%M3A#1yjln-$2451Y7PR$)!{C1ss2m049s6Id1Qgfj;B)~aoW5J4x@M7`da zf;o?7dCZ5DLGi6jmJ6JFUy`wujIq^Fvv>Q}YwMOlq6Y9zt$dm!KfrTSf>X^Zs2~NS ztqy7I4zDgK0!#{4fKbF_Lib4$A=!?BakHp%Q8x2LOlY+LxFzu%$p&O?h|XnL^`3&q zJz69cBquqXH8H!U-KOD~7g+-BvaX@wv)~0}-SpyQ)F~8Z5+>!l9F5mJxpQ1nwz{#JU`5G}*jZj8=10 zjBtv|E#AEXV>+bISdBUj0?GHyQ~P2nY3KP74Gzn-7$H1hJ$BD#I_f}rj^}Rk_6>le zHNgtRC&@1J=`RsQXguQ*TU6Vd!{ylPNt^)kzSS=0h0^U*vhl%_(Fq*RSRSo_F@t~C z0*KgC;~sV+Lmj7*(B0n4z?)a(DHPckSs4?I;_`sf`fs8aWL6+VT~lW%4CB1J0*lt5X6F&8jbEFFp;aX(n~DX zGAp*CE3zX@DG>BAQ90gJW&`|7cpP=vRI{5$q>}ayC$Dn4*LM+SFnuk?zrN~=8f;*w zKl{i4duWAA9O;)--in@-X1d?PZ-7dcY~c8YOcrhH^N+tIXXe@XV$41#Sl0J3|+0~kq}cssy#BzH5=sP z;LszdQ~|E{R`Qfzfcj;m=E?GPJ>5(pWwHUp8&;33#PAvPncyLN z!%C&Q`=ZFCRRMp<^-6r#d!=2=)O9TaDCyU0^;G!#A$E>B78V^YMLj^Y{HYvqI!gzSK4~8ZCl5bktRLq*q;sRpO)+$~-2wXBhR4v}Pi>#< z>2{N%IGI;Qb5X|K)_bN4D4iyVKtb}U%86f1O^yv&B9Z0NM3Upl=)!jE$!5-Q-4szA+{zPd_EZ=J}_WP_f26lkrk zni^|)duP2!vpz6?F*U~NOCV%$vQNwi`8j&zG4XDp5?_B`7x;?BOr&0m^| zNr{Vfc%ND_N^QT5vNyK?_2i*Qi(rY8R~3jii<~27hljb%J{1RmR~D`vHepXL(mYbI zAlPrLo;c9m+m7T~ZT@b%2@BKgx4bwQl`@_>y~rE1d>M4EEr#JQ2TfF07+IO^2F2Rn z1}#jUl>T0WN$whBNX3ypEB4b&z?Km9v{FNf(1gHZlr`Nat6EYC;hOoA5NRo3T1h1- zGYgr~GuT&9fa2sF9Ec*Jbmdx0JUC;(Xr*1}!n6E7ec#az@x!oK@t5K48ymqXx7(k^ za5iE?-HqI)q26S#uceI*td+#V1t+Ma=`6WGyf}2um(QZ+pFw@K*1JJ${FltE1#jrrs zj5eE2YNd!@xgoRiriPE85Rbq2S`>Y|GBm%}<#vtfY69oM2#{S(FICN?`l`6pmN9Z1 z4RbDqOxqbL&k5b#jAi>!O*AmEhpoQRW6{!jVD5|9=L!WgesoWci3w{h=Vg>cLvLxT zUL=Y5J>KAX=-D@}Z8be29=&s*!}R4O@o0ZB8Xf7rw&?t%dN-lyeCKqQ4HohTcsDk_ zu3u3B+U$<4TMU&>tSDZ|-_h(%r(vAIsz6fiX%(Z3F5N^0w<{v?Ty8OeJIGX;JGaxz zid^%DA4iTSfY{$8_A!mOe(`qC-6e$+VV@?!MA%;5o8u0NC zaiXLXAV;8Y`Qi=O3KSIyN5)EP5)D<;-k-aeq(R`!DGBOHsnmP{{)*m?v>km#==U*xlzM@@quJL{87v2nej0 zz7n`bRRo`BT#RGp;ChDoO)F}O_2 zzg?xAr~?ltsI|i1**SG8q_QPabacMUQFcjIuIk;o&w`MmRp^9{&U=_|DK?x=d~LRTizSjZ@u%|?7<)& zK_4D6m~qhsM>sW%BY{5xgFk+|0XPs2lD+51N11X<-gv)s>*$illOJ+kdUeR*kr=xt&y|i5!^=q86F$C ze=LN!Nk54lp%+s$3LcrqxdB^GLr~oCP##%Lc`2J@ZnTxpm}rIsWwlJF;M8XZ;cI>P z*KAW;$rasE{nB>Mr*=gHD^r%a-Z)VbYT=fl#tT_sJ@0>f-Lro{0EWfKyMEfuf;P40 zo3w^X0|+J97!&nxd-(4KUy|(a$tqIM>3S`Z_~E3%qT4+xvG`@Tzw?i->vwL7q?Y9{ z?m&{`YB3jU&Ni{g`Yd$1hnv_U%mGESw1FL~D5$L8o`k_yOE0GJ;! zjIQ)zu(8GK9ba9r4R?RC!Qj7GM#ZH9{5tV}4KNrQ1HtJrT(Q$}nZA~g6v|N5UzaQ0{@2G;+X>=)C6f44YrU_Wqz|lr`;S` z?Prwa93`u{8a1sVJK3>Qe8Mm7?FV7i%~Mz?oWje`YLx#%@jqw_cthku*4vdL{Po@g z-j>a6@B_Gp2~hScvO`vdCk@dB2#FwX^B~D6ig8#T213y96P5A62CV^v*W|n`8?maE z`GS8Br{BAZM~ABhq1R3%NcS6$kkA`?g`t0WOYhF`%qZMI{ZHXTHKb5L^KvHwp>T&0 z7Ih=<_zLSOmQC%@t9yR~QdjrbRKAo9?lb925R_Aklcm&1s7oTI#H{Lb5Q~3Od8?l9 zWuFZDzxA+c$~rhe&wpK8YD;`RuELy{5)`5MZF7#h>WJ8YFU-IUMvNC6gig*jEC#4U zi`RrS;3x+sIt?%D543-#RhaOT`qe85_szPornJ{Nqmn|Jrm>u+(hMaeXEz6R|G7+F z;_8Y~;TP5heIPMlBb3cq@a>b9LZ$SX4pJ$QkIsI%#gp)g>u|_kx8M|jR|HIxj}M)l z7I5XJQ}`dH)6wlDLY-HwYs;ulRmYk8t|y@$+;&fuaZhz0LDld#0-YI|^vX{UK2>6j z8s&Znl9y&&3wNIXt9d%jG{Jc#m$Gj&gIbEV>Y>k7xZMQ z6yIvw8uxb1yRgOhzxL~%2a;&fm~_!tUphZAB@h`Gx2Np%uywIT0|Q4{r;u(VWVG4a zu;P=>_#Z)D)(f!}%wh&lW6qf%nAM3psO4~f8P98 z?>Z>t37@~}*-E}*&63%@geR3^l4;K=cZ%`f1HkG&y#C%N@_-@3jYdzjAlp7t`LFUq zD))!=6JhsRn0GHV5xkvw>so1NI;O|1yoa&X&|JBno-Iyidb7FujEB5g&kDudyD+li zQP>SruVrEcuR7507sOL5@}b&~T#?710*!T?0oI*f>r@+N+6EO zV9|OY{|kQDu)WvN+7oTnCDfy`QTdLSH>(GB_A*kpo5*{h_;3S*xD9tV z8`BDiiQQ5#^$l@iL=BWhSWR7)=xTX?{LQeeph|aQV{G+Crm%y|mLc$)!*{ z1ITuU-RFY=!@vOpZp0LfW74}+Mc_HmIXf6$ak%qX*LbgM-IRntNvDzn>apVfV8}*p z3*>Pfo%G>r-YIVv8SbXBNPku_5e?M#kP1;RV>8Ria3ZwiY46 zR@;DWS5uNi;K<$HYYV>JchoB*-K{DIZr%|qKSc#b5?xPeCVdk)c51Kol5yk87eVtw z`&(@wRCzXypa!ph)wZV12!xTP?AgpN@(V(}*~|JkDej1mrj~n{qfosL(ZPLgnV0w) z9=>s(Ree}Ia6H&48D|~X+egrj1Wv!U;&nE%#xJJ*7<>1RV0^)VzMGSx*9Row1X33J zCbtI!%ld? z!JD4CkO=U$J~*9>KGtE~>uTFDE6RRq`W?ZQ48KKw;RGQrYlhQ&00#)Av%sFhJcXjL zoh4n{^$gGbXdV^a8#$h9YBlZ$Za=nb@ z@ZwUwD5oywLHFqSX0x^Aah6$$EweC>9~|cD4p%<-98S9j@AI3%r4y z{TH(yS+96Rn1HYl@pb%S?wTuvi=9G^1?`^^o@vMQquIh-DmalK#Qc&H`@gXmx3QCg z8jlJf9yWNt9j!+W?>cc#x=A#SrX55{UO9Jnp4^NVj*Bqdp(1KZ@^{%;HlvBO=%PP={^Z;aCXI5M-wM{xQbf*MppRvNvlt<8O_5AB z7^VEXWSmI`_>pf&=Y+|`uM+99%{3GxD|_oBAaDiw!2d>qwb$HqcRf0L?6@nSwWn3t zo!y*40Oh#wdL*)OSlpiB{q9O8si))06-3~K?bM17`DJfck@+{>IXlV`h1G#q*S?|D zWtuC4tE(&6rxE@uC-4>*j>}QgocLZ(scz@DFcJ;Le=DjjUu#QBI0!!>@ZkX|1h(lj z+1Xdy96`&_L`6%0f%x6$dBq*M%~sdQ?EAd=?@#B5&mI}1psdWP$&g}ZHU)xstgRzw z%<%k~xo)`l9wkXQ(&uEJGLXi#_Q$QkdSk-+ph9<#v9dpdSgv+|MGMqaX7Stmx~c?j z<$_RnXk5yr$=OO}GNt|mrcVz&KEZD4aC+&~$;oQjcZSRAmMZRriT^HM(X*ab(-I(- z_84eZ1F^^S{pn;*XG2MsK8&+y#TYTj&#^Eq=;5vq1v)Z<(fdnyczBsgwQqFe2CB9g zl-@Lzc%~gqeSN*@1LwdHdHE@N|TN5cI#&|jj+#tf9z)+oixKoSE^qT@g!uZMwlWY_JHO> zl30%F4HntIFsZAksTN;Zbeq(0ahs1*%#%16k8o0%^`Z3#oq#nZ(*R3`(^=WEmh!;7 zx!Q_~h?9y|hO3u0*PEiEBCsrKN-Pp)=sb;$sj034nN+G&mE~Nl&s|aO3LJbhHTSv2 zMfHP$C{*;XL;c{+Nk&+&Bbj@i?7s?x$MIzIyE^8()8(yvwG73nrl-ObfG?%Xz** zQUPJ_?uIf*u`i}^@m>#+ww`Ib*N|g;9dtDt^9r9dPgP;xGhk@i^z~nIdpT=t9=DuK z5g)1NAcu6!s*lID?nwSrO3Dh{A7<#0yw@=QOo!zChU=XwkQ$0*Wc4pU!*Ybi<9xn5 zBgJ@j)ne^>$|)8xkyN;REwd_xn;1TREJsix&`M5Rq#q6QAn-^O$#<^;@*D`m>E(M^ z?adJlee#%hBEV*?GFDg%x+<(K{0lSOfZDIySg;};q-hLz211+Gq`)YD5*{5U(rz1^mpS0gg+fz@dN6b57LO;6)oyr=2(F24*4hxAr?GEyh3t=vKe1#X(@FyfPg?X%qWEup7ctS z34QzKnSJ8Iu3Z})TSuoFhsI>C4Qlya*<7O&(TOzjDmMOPiBI8bTmb-FUS9Pc^5nLIXNx23;4`#FPg9J zc*+kA&%1d}D4$lbgiYmLE6ZPGA?To1ImEu5j#2@lhUDMeD871kWF`)QNwJ{Om_q3vewTHFA+oRdfmuH|I&hD$2`d)D`aWj$4-58~K ztwE)?-;j5l7W(q~PweuEsn&DHlc@7-94K~j{fzs0%!~5y(K(|#ETqv+PuY|x@7EAY zm(%J&8#r(Q`p+9T7JcYoERg2xMpX-InaXVc7_Of~MNEC9aqIR?c@FgR+4Z2#ea6N9 zj?g(RO>9>;Zx0)jxsm+9k`na9gle->6nNY;Hnx++%7Z$*uQQ36S)LEV28C!s$eb5# zH%yb<-}G<9!tz6>K5iHbAk`kNR0#+d8uidvzr96yU&i)@xqo^`-q*|C*VC4hC=969 zHCaVl@~GR@y%qEbx=UgLdsJa#oRk7)&u54CU%Q6C5)I4djMF)+35?Thq1jUrcIGaK zy-(_zP_&x=<&k$6IA7p+f;3pa1`HeOItn}ZodhVeF z8+`o`E-WHgZnl7%TAk~Y^L|#$nWpl_S4dNFl`LOO`C-mUz8Essdzw}G$_0Xy9C}y% zbyDwkXC^!BNC62l$wVW?lU|UCd915WSCq1IenGq*2$Q8)s~xSEjFs$8Rgf^iDK}%4mTW1d|t& zJLEl>SMq|(tviQMn z)8?bJ>HV*DL&#_L_l=CklDZcRrD7QmcV}mLp+A!)9p6bG)y8m3@0QGT9%qV+{1S;? z@tib!{sw_Jh^x78!wQBIbmJo2FLt};)@S!}&$4#Szp#0~KV24Ibqg*&-DG}*DIzoR zfDfCO4BSfR=?;gpeY#4vA3vC@X1nfh%eHKi{%CvtxLSi1X#3u6M7g>&)V4RQ(s+OG zWHgyEPLzmW-9|DF<|^ug8;DWZ5B%mTY3;9z?a|^uefC4W#;kPCO_-N=udS6(xcN!Q zLf`{o$W~!$W~RpviC^OAQDmlK1K)|h5b0s5HGX#IZl&RN$qOt|!w$C5qZw|+Gm@0h z`&W1ey_psUxud*IA_eCY;TNgW-jw09V*tmGr^-;tq0XfJ-!tTZXJ1- zBH+!h-yV^{1rmRUWaB$AK2ob}wm)Dg2nDOk_t;oi7#Nrc8L~of>d#`EO!$LNb$rWk zKcC=0n_EX$o<4EOqX3OK2^253Z2yE*TTYj?cw8Q=8JH+~Q&kSp6+de|xu<7hcMP%W zL$>q_AkwntGYR263#FfM;vLF6=UXm&-_1^{v9 z>)luivm7DkxfdtjVBOS2DXZcOx>iyrIFaUl=?*F!pZIdkp9G7xGpg@57$IYU4g4&q z$>dM3g?{-m^k#=B;I&0Qpy@y@PT)%RS%c=no1QA2COdb-KvLtxwGZkaqV&Mc98R?lBR(>b0iUIUePR79v-wa5QsDGu|o$oV4yB>%)3ri+NU>~veU<)x+i zqY3ozX)4LTWjXPT7Rt`WcH1A;^@j%VUrlTj8r>X4t2!cZtv?_t+uymtD3LCW|0Vl@ z-|?pynK`rxTS>h1S1+uSe1lSq?S0E!hzw;^r`1~BI#G=qUa6%62@iBi_r3zl{8DD^ z;67j%9WM-v1q)INt+129y64MUc?SKejaK-DFX>e28T;+k3A=lmCv# zM44+GXhB9s=Cx>O@dR4M=aI#e{h#D&hW#q&AHhEZn6RZov)2L+-tV9bEv$D>XBkJ5 z3O(!lJ?m|km;S-PrbE7KXC=X=;bq+p>RA*JG@iP=KGVGv7vA0K2zN_b2zXexXGZ%6 z0I2f`RTFu&&Z^Kny$4;@mm+HBm0f={@HU3xW^nwviS{ZUW1?lyo6RNoy@_aw(%XKy$fS&?+q+TzcwJC9$1;Y&6ZLdZ0Q}SfNy4Obn`; zJ~vc@14>*!M_6CH*qGtdi%Q}Is;8=Gd9WRaDIGUHFH~y4;yVa|k8$hA)e&sW)`bRjVVqu#@ zq@Njj4Py`ppXU+?E*C+Q-D5b~5+?2PnK?;w@1?bG$JTlogTUNZEE}1B#y{R&Zr9la z%(u+c4}R1_PI4A0_H23A1%Z&8+a12R<(z3RUM$dTXR? zzU=vC>wviQVQThyd#a4fBu|7k-O9-Af_x)4?~k_N>I1DL1^-sjrId#5Qe5p}BxSE>{MZ+Q zR@|76O(e%K5@{s?zyGNmypNlHybd3pOX86eZRL90Pt

n|?@5kJ}kY+>c%rp`WgS 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 a{E*7>dSe4D3r43N3uxWf*FdX14gDX=@_VfS literal 0 HcmV?d00001 diff --git a/src/main/resources/trayicon.gif b/src/main/resources/trayicon.gif new file mode 100644 index 0000000000000000000000000000000000000000..57fa21c50eb4cdcde0585e4ccef5012ab84ad788 GIT binary patch literal 821 zcmV-51IqkINk%w1VOIcH0OJe*0001i003rYW_Wmbhlhu>w6wv&!OhLh-rnBp>+AUV z`2YX^_g6yqS3>t!LiblfA^8LW3IGoPEC2ui09OE5000F3@X1N5y*TU5yZ>M)j$~<` zXsWIh;l6N8u(T)NZ>?kQ;{S+Xus|dN0K255_wxyd#llgUWHz6Os1!-nS%FXOv|IZ+ z!_hIBWnN&#-1VycPRHdbI=ZOFqx3>>eky=ae0PH-g;{oqe*{fufsKwPi-MJkkdbwV znVOMqdq#+#AD5J-A*i0JtD9G&TduF6ousrNthl*0uwav|y&SuBKhWPr{-8e$9 zpur&d@@>OmupvQ&36H@@Krz9A11=P3RM6=N76kqY1FD)>@nXh}9RYj{`H5u3iY^8W z*vN5D!H*DG;&J&hLCl#bZ9c>qQehXKJ$(|;cv53Z7anmwDJqi9i=;14Hm!LN092Jy zg;1Sy6>HM1C*K@_5j8B)h?dGy3_!PT)}F{$kUr|+KRZD7l9;7=OQCa#fi-Q+!CsOIh5GxX@4r|YI!`#Ns3hZ}## z$&i}0@x{^0#~kDN`u5_vB7i@?e}eVk;p8BkXm~xrpMUZJD1?CF4d+x?2O>z(eGJy; zo;w9XIG%(RQCMMv1U?8`gy_NcA$|_(_ZW$0nRucM>YO7YfGqwO){6|r_@0X2)#w(E z0_uq2j0ze!UT{EGDC80u7KsIXNG2KNg-k}_q+2ve`QefnT6v{ZS!$Uhl@%1EMFC$% zDQ0I}T41IYX=1Uag>7cg(3xM(Sx^dh!g-~h1nJPHm(WSMrxJq};USKP%8@7$kG