From 7cac0343ba7dc665cfe926906edb7689df4f7a77 Mon Sep 17 00:00:00 2001 From: Sophia Atkinson Date: Sun, 29 Jun 2025 15:42:26 -0700 Subject: [PATCH] Initial commit --- LICENSE | 674 ++++++++++++++++++++++++++++++++++ README.md | 45 +++ content-warning.php | 261 +++++++++++++ screenshots/popup.png | Bin 0 -> 18076 bytes screenshots/settings-page.png | Bin 0 -> 41134 bytes 5 files changed, 980 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 content-warning.php create mode 100644 screenshots/popup.png create mode 100644 screenshots/settings-page.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d779f65 --- /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. + + + Copyright (C) 2025 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) 2025 + 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..e893692 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# Better Content Warning + +This plugin Blocks access to content behind a content warning popup with optional trigger warnings. + +--- + +## Features + +- Add a content warning per post or page +- Customize popup text, colors, and button labels +- Optionally show/hide the popup for administrators +- Cookie-based "seen" system (shows once per user per post) + +--- + +## Installation + +1. Download or clone this repository into your `/wp-content/plugins/` directory. + - or, download the zip from the releases tab and upload it from the plugins page. +2. Activate the plugin through the WordPress admin dashboard. +3. Go to **Settings -> Better Content Warning** to customize defaults. +4. Edit any post or page and enable the content warning via the "Better Content Warning" box. + +--- + +## Settings + +You can customize: + +- Default warning message +- Button text and colors +- Background and font size +- Whether admins see the warning or not + +--- + +## Screenshots + +### Settings page + +![Settings page for Better Content Warning (Screenshots are from v1.0)](/screenshots/settings-page.png) + +### Popup + +![What the popup looks like (Screenshots are from v1.0)](/screenshots/popup.png) diff --git a/content-warning.php b/content-warning.php new file mode 100644 index 0000000..11139bf --- /dev/null +++ b/content-warning.php @@ -0,0 +1,261 @@ +ID, '_cw_enabled', true); + $warnings = get_post_meta($post->ID, '_cw_warnings', true); + wp_nonce_field('cw_meta_box', 'cw_meta_box_nonce'); + ?> +

+ +

+

+
+ +

+ +
+
+

+

+ +
+ +
+
+ + ' . $content . ''; + } +); + +// Add styles +add_action( + 'wp_head', function () { + $bg = esc_attr(get_option('cw_bg_color', '#1E1F22')); + $overlay_bg = esc_attr(get_option('cw_overlay_bg_color', '#2E3035')); + $font = esc_attr(get_option('cw_font_size', '1.1em')); + $btn = esc_attr(get_option('cw_button_color', '#9E93DC')); + $btn_hover = esc_attr(get_option('cw_button_hover_color', '#8179d5')); + echo " + "; + } +); + +// Settings menu +add_action( + 'admin_menu', function () { + add_options_page('Better Content Warning Settings', 'Better Content Warning', 'manage_options', 'cw-settings', 'cw_settings_page'); + } +); +// Add settings link to plugin page +add_filter( + 'plugin_action_links_' . plugin_basename(__FILE__), function ($links) { + $settings_link = 'Settings'; + array_unshift($links, $settings_link); + return $links; + } +); + +// Register settings +add_action( + 'admin_init', function () { + register_setting('cw_settings_group', 'cw_prefix'); + register_setting('cw_settings_group', 'cw_default_message'); + register_setting('cw_settings_group', 'cw_button_text'); + register_setting('cw_settings_group', 'cw_bg_color'); + register_setting('cw_settings_group', 'cw_font_size'); + register_setting('cw_settings_group', 'cw_button_color'); + register_setting('cw_settings_group', 'cw_overlay_bg_color'); + register_setting('cw_settings_group', 'cw_button_hover_color'); + register_setting('cw_settings_group', 'cw_show_to_admins'); + register_setting('cw_settings_group', 'cw_exit_button_text'); + } +); + +// Settings page output +function cw_settings_page() +{ + ?> +
+

Content Warning Settings

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ > + +
+ +
+
+ +
+

If you like this plugin, please consider supporting my work on Liberapay or Ko-fi.

+
+ M5M|Pk`Mv}gd}7j31qs#_WeGk_TF{B_5E=NvKEVTp0m&1 z&-v}&Go7>7zVhkeAe(xbLGc(Gin;MOE1} zZZOUC-TNVXoIiN$yZZ-sJ#RU=o%PMzyFQNHknqFArtSBiAULs)-d%Q7@Xj;dW6Xo! zyjN2`t0~@+aOvZ7TfS>3H~}tTlRUrUUs<%NYeVVqkN&03AJD$}Cio&&6Ck;X!JWfD zJdMqV3gr_Yd5JKcND`7H8B=wKakZzW+?mGfy;EVtW~T98khqp8yJ|L7n>SR}t7~o+x6k+079%Sx!bMfAC*OSsCMJ5H6Z)<}(L)+W!+An*X1vTknh)pn0{MO2b zNg**pt@y%r(I59bq-higma#o3l~5{slIrDXQecYU`9jka^OJ}_ngAZs$HhgbT>T;% zFSw+6QK!r8IPwU{0IgKM{LfD43Dg4A8M?#r3E!~7wSNc)u^NT0A((0JfPL{4`Uz>t zzs2XD#nm;xO*Ty7OCiht>|jQWf*7jAUk7^`_szclhY%nkwt0rHa)=H6^E}zK0{zw> z$5-tajutQg02VMV$ez)%nqY7)* zS^)rOZalOG08-+p6JFN)cZbM^=els4>w@o?QP*AF{-iMKmT{vO0Ptj0rUL*l#M~%*W0mUjI`3C^^*~b&I$gf#yWEG=0kNo?u*6cq zeQzx{55j-?Z0Q-+R&n3toMs1JYBtpvsXzUu<`x*9ez4?zRIwsaV=1>zzEm%~nMwOsJ|&rTs!W4nY*x7vXVd+#39iV|DmK^9Bfv1rb2 zFMGT*{Z&VY4@EwH**^|*VcjUH*A*3s`fRqoE}%o-C@Kc~f@<`z=#EAf-xj1&rZ0~_8T-Tbn1~llnYc0+Nf3qHiAt(9r!h76%HId zajSIb*9$C~l(;yO52DNXjy?G?vV+0f$+Cc=&XJ)96q5=Z-6JmNdeVK;F z6Xv*6sGhNtE)b_|jXV$B`82%eSzOJWgLiuA;P4~fOMJsHt4 ziO_)XPIPlEdNMgtm>kED3^_+ntSZ<*a&RcTGaidE-9{(sS%|TjapC4#nz2-@HOKOn zq3nruMe#Ah_7DXn!H<&}!&;n6+3Hclhz`TX!xQ^b%+5gVuZW9f)UP&;Lh##bD?vZ1 z`+KKaw$FBQiDu@z$YTP9et0i_CEkCa1M`&QOmY^8>vvd~S`}K^Hl&2)DvV6%N)9{w zc+O?f;lYt}>iVt=5!%**!ZRkLAC%jw>^jDFwS%s1-P2!wPJM!D=%Y?&Rfnw$a~P(1hGtll zY5dI_S=_GLtAJf#!cc=_1uK%^}!xvvN1PLq)_!T?rLqj$Jk~Q} zRLO<9$s9Kp$926lE5ExJe1$n7hwieain-Y4+noAj{vj79^6yhO%zOnHoo%ct@yKP2 zBD=v^71z*){>{GZ$`LNj8&dj?z;74VtGVcwIl?7lRa$+!T1TG|B>!{WlpuZ2@A2zP zah87SJ-j)@=A9g#%- z+GBZI+6R?9?AFoj4OfX$A{`#MqsbFWPRdmbn`e$=acH8*R@~7OD#SFyhk>NDgiO@_ zM1ovO++ufVy)5>`XqVzv+YT;hz&HGAdI}KZm(LYH+6>RXhas{j4Uf>|k#i}58bhDr zA-E3Tt*n01mWfI`IMyX@L)j2JCo;|U=5^K#cnT>rz==r6Rgd9-pa!mP=31!WT^{jp zCH-M(+k9I<{}i6r7v$?HETcc=*)VEgE76f<#J=(%am%XBE)YjM)3ZwjV6+f1=vv0f z=WS&6(ES~P*lodfsP{uV(`NkAiLUwX*%9=V%Dub8O;Sd z(BQhOgd!BMa9u>ik24*Mw!MN@6nAx)$~Fm{pv z;pve0S@ib~XymKu?6=L|1Mkt|c*A~i+2^8sZKeFRJW%fn9;n~diqOd}(1UWkAj;qU zJ=u4xz4gnlJi z!j>|6GS(;2@Je1?Fwf8f8?u9!URm6S@d{XNmo#&yJBvHv*+~R1=`Y|SX9%LMTD3F1 zK;n7zf)+>u#z1U44i%+0qSX<0AmXDo9{R*MGR;b!3@M+WorMSNw3!Iz4gHIi-0p?< zO~Rda8gd}8HKkDRz{A3Mxd2YT?-WWu+G}bt`6o}Ep2Q@=5*sG6j@P{ViC5!B-}cG8 zK)oI32UfQDp_>n)?Rvq_UuXAJ(vcf$h0HB7nzUp@_*=tpeLiKR(Uo#R#iqV+>o&^z zy?3#H^PkemdLg?^|C&@>J~rSK1{6RcvLC8s`Qh4gS1%+4aZD}K6p>e5vqm2u&AJeb z`YGbwWBl5kwE|1#hD}n=`t6d%npYPRQ07Ae6j>7>U39&U9jKM%NVQ2gPKVkPGbm1%^#v~@B^GOMUK1i-Zed{2J=7zVz9Sb^NDe6uv|60|zVIn?S*sb!0LM>r8>h@TdFDiNC^L+WY zqp|b)@+XJu#&7sU|@vg%eNgv|)Y4L`& z!q_l>7j0}67<4m#LVuLtEr9u^#&LJN|9bfUk}a`iV?EdgQ5k~spn&uIE`3LB0M?&0 z07bqq-SAihnfkKn4w3?6^{>)~k0&l^L4JjFIq6s;8y%*pp3wfmD4SQl9ifQssN@FE z-``&(K%!6W5gMqA=&je7_B?apT zD=R9%Th4JOA&TR{x2nL(DM2wVqh5X|*BgZnx=WVTh(zVy%zxegU3Dg`ICpVrk?bD= z*BX{y0L9iuk-M0Fp<<;ECZ_E-+VSHjQ)g%TdXYUg?hwt>$1x47;r3{b#M=cw9xxis z?e7vhr*f`c4~}Hk+an|SE(y1)c+>64cU>vQsjJ-kTb=c?le32s#4^qS7&T?KJfS9e z@^s=_s9&JgDwQCJsb`JN%($m|M$+rf;_0@Z$4KlrF7wD|{)r5xiW`EO#MBkbi8Nzh&4>@+F6HzQ@; z(9F1NeejB87jzH1I|^Elcdi74+C_40iC^|9ip^L7&RWbdQhGjQ16TK=GS4j*7PCx1DGY49i5Fr41K! z#w0(J)HYXM3gVD)OUJ~a%xzO726lQGMSTlBRa(&F;ez?l7MrFTK0K;G7Cgj!vOT>1 zR_RfL-lkISd_X6vziEG^02#KnKUCMg3ZD8`!iKHTuq{chj2*Im(3#D;et6Y;!kSd1 zi<8V3XQ{FH_Yu{3ie;Z^u(pf@F{#Q9l;Nx4*KP702=L%zqyHI*8!W5Wbhf%aFV_+- zS48V|1fFWg6v^}#bgui^qPsu!4}XjjcDPGxV!Lmzn7X?}kR59CuY#Woi-2JAV))7( zoVJr7{NxrZK^$+WB{;Z>>|!3~o`12j18y-%_R5YL;!WxywW}3pA|SL$)4YI5nFV+A<~|47;0%x9(X`WQkjaKad*4GWyXhKlNRej z#Wkxc(BMo|yi1G&srbsB19-2Ys9Tqw?0BSp*ixJ@g{kc z=}x!M9JuaHXda=AT2iO6@tNbr+o`RZ7ttO84Sq6UcJu87ShUc`nxcD=LTo#gY2dKt~H>hWe}-72#RwlhP#uEoat}i4FvdLm~CI zEG0tkm=gqJP>~>0vK%+g(NijsBM}bd42=AekqmE#K#j@+Lf(MLm16oPrlD`z)fi}u zD5|?m^G`8{aJ1wMlBk{wf%0MMoujsg7s(#u3M-}Ko%DGz#QwqZ&(MmoS~X48y?ts8 z@z(WuCD$);JwCaJVS$0BvQWHop3gmfVHrbm@^ua@Jrlejc*Q0b@c4g*4mp0P>53#m z2!8f@ui`R3k7*k6xw)A209ZMbEUl4$<5%>0pdHG`#Tz4kdh0tROlMmy&+;pL{rY;p zfxwctgE|9I%ErKXCDVD<%HK{T4i7jt=1zjw&+B--#1F*fVUYqxZ=UUr(H#zAILlo^lAPDS3?ely+-`(e#o5#RZ%X3b>KCL;Y z)~pp$_|Plz0R1NnMeq=)hUy7NJYk49s}FQ8$Ha8g^ZT<0Bc@ zK@83&HVZ_QGH9MV3A;1GU$ZA5U1^fHgbww#RdFcHHqxCpdtFUq$eU51lsA_Cuu!)%MK{q*tU&)f1gTdTz?=aM-Dut$fz=Zn1PtQ ztRr@7oqkkr=0g1X@Lw5Bdw+>YpHw&u^*$P-jBEP25d=6i18c6?@aBieGqR%h8MZYt z-P4kOMx+>zFm!xLv@p3sE}PM5h!I5eIq$|D4Jwq&@gUx2=!qP-L292t&Ua(QR1q~h zMgH!>-%8&Wbk$NFg*&HMij`d$bB3}PY2Ml=QD>r3+KYnphOr7oKEIraGT{~XM5;!{ zdH{LDnU#>?W*wD&VnOMBe$g$m^pcaXNMt>g08iC_uodVEtPI)c=65Ub@>HE*tJR!AT8h%d`s zn8B%XA@f}?MgT79ena(CuI~9&aIEm;pz)&sZTF zO7J8qCgu40UbvD3o{I-GFp7KVbqD$Xc^;61l)MP#yUa}j#WGKhcw;lHWZTW|u2*qXY}*~T`9f7=O!|B%W>R1FLX3=&2G%M;nqhZ=MPuZ%mv22skb;qjaA=+ z)6?_9?Qz@*!{kSA9s>HmJ%lO`r@#JjU2|m9sy(RXFMca^MEtr>yl5mHb?a^W1y*>@m z({Tz_Uc=crN1>RUSW&fwU6)Ey_j&~pr9e}JuTO6#9#HX4YN!>tsW@yFZx2LAn)c_dg6 zys{?m+vfKc@c5tMF(uIA-m}@W+c|43_th7WT4TRe_g@z+qRm!#xBS00pIi8O_T5GO zTiemE`VfO;f&UjbL%CI9ZSB90n9QK1nU#*SbS&FbMVJKWSx2m)# zi*EAhS-!)jW}-9P()ifR#`i=hFf>`T|LpEXouRDu*^aqOu$Pw_)~&G#ZfG=LVy=+u zAK2B`ICQRJdD!~wY#-fP{>Y-n#X0@vexGLj$I&+nN1rZW09e4lVigNKSioS;J1+2G z0fPk|%q0p7JXpYBfd~K2nit~2tNx(r?V|AdjkrHI47sS{Shfk#Ns1!K|G9fdjAic+ zgKUHxLjLzI9|nXp&J6LSDp*=}ToHaf|Idv(E~13lUV5pcWm}TEQ;j|u+V8;KWiOcr z0HC$uS`l4b*ao_4on#y{ukedB?Zys$cc(1a%aZW}zr8DAEEXQW78m zBGMFus1O2#5CH*6fB+#0Nl0>coSAdZd*6FMyyx8Kez^DWJU+rs_Rh*$Yp?Zd|NY3? z(q#J<*)40cw+*F&?wRu_PJts5*ZX-sZUT zzVFUG_xGP|`S7Ua(5_!j{Bh}m(?%WD^)A|1c3(M|Z&LH>Bg?p-T_Dx|JM`DPnku)f zGiTT9J^ILwvr4WwbW~r{!f6h7?&*aASXl33yAi>)5IHrQ9pMm7jEc%CX7O4Qmn&rL zwUAThO{Hk>eldgWDLw!+5cv7LM@r_;-%@s2OZ|E1#Q)2O7H_^ZlFiWxN(MuS9dkH# zKjgM*2cic>`P{54ywDT(vkPMGYRXzu1!JbUx(0{z^Qp3o{9&j4!?OAhI>(o%Yr@dJ z2k9eetWA#@I;$Ur+3ccFMXv~4hkBli?(EB#$xUTF#fvXcuC!W3!-BZmIw&jolqU6% zGY|k&qt5?sf@FHFNuWLPU5ngQqro1S=UE5zaRygMde7@u$flTq zDcaxoiASp#Lu0y&gYvVqhY_1N?Nj8vzdXZ@2yVWq4=HpEAS;q-RA&#$n68d3tr#J+ z&c^RbwAq}FB7Ytjr7d`!yN=i^R#g*6ul@P;tX`9(OXWu%??&&DW+!?e9-7g}$tyhG zztZ4ZFWrmlNE>KmE={JbZihiU1{d7<@FQuvx{F;P!AVQqD6c`6Z66a?x0F zL#=toY@u(o1LZ2ef0~ur*|SNDk@XcuvzpAa&%t)0zSL+4BP;~O%Pehu%h5-kOzNYu zI!^m%>jr8jH0%~K;=9?-jr}wEAq%jP{4W0D`EmuT&d=qAVR8JBB8ykDr$z*0UWei^ zxSkkup|xC@-NqeY{)=!X=c8dPWi=i@fGM8WUm4n`fmNb-Qm>Q`aBH};@jq-JJ<*+` zNB4Ob3-p765qy`tj>U}A#xqWEonouhHf(=ZI6`3Mk<`%6advKQWVk#{h4^Yl1;^rU z5pDzq9W;`)1*x8SvASqCYf4eqFQ7B)YF0w45VWf*Z)f>)YAo?1WW!8N*js3xP6vNq z7dObB>r5>MSE?{yxQb_+byu!3nY$(3lR&Gp-(Kp%G#&=AH}`e+xF>l}_9x7o<1dU= z>82lm6~(VK-LT4CX%5U8xW|gNl3{L%3;Ufm_4$rrRdX&qgqc_~$037GavHe2+K|9m zStTO{J%a;eS3&%#gVQFDuU%*4E2Q4@7v{89orQlO818^M?9-fm3^x57ca3Ri^tAF&9v{C@qf z0aLAGjaH>oBA@V2S@1`LWJIkOYQ{X`fl~L@|2^qYArFIK<6UJs5YCGq1`SqJ3yM79ZOI+zA|(zVnd+I?%J3IVGG)hD||TdE>yQ#6B_6s&kZ_1eTMs_faOY(dnHZdbOl~ z$2Xfv`ge^}djj2(_YSxDDxGrjdx&|H^LlCgXw$$Mt#2bGg&OJd`JglMeWabbldUV@ zgZZiMOd5Uvfzw%)-F2}cUPkfCs@l(rWd@g*z2{92#UH1H^xbkp=6XVY|MWROhKUb2 z6|Ljy_=ijmZEgob9!$puw*M%d4_y6?;<-hk>l;!l8yV4NrqV{=h6+I-9_}_g+Umme zq~k7Ep7Lil$M9Z0)g=pIRRjDA^&AuRsMJip$Zoc4-7{3Px~#QNW|+IH)QmN^swNoK z?4HV@>lbv@3UcKbRwd)~Pvb3&aJc?QFG71eTrp{rT{j;-PI+`>GcZ+)ahH{Qp+@qQ zu0U&{AvH%C=1sxDDgJgO^5sAGjL-fu>yS&r%LhAf#odh7lqIQHFug&oPwa9=ubh2K z#CudfY6x}{NQv@w7rm!(8!p^&_-uc~G?#HNP$QoJ4?G}ce;ncQR_pa_S&296jxD>- z!svadqBABT;DFd_57g!RSlY*5$^9Jn-^=$~XGr%2UOuT>q{SY2EsgK~ z)t5SE`s7R8eouFYs?V)r;45`|^F&dN@bZXQv)D%ZJ-)+}uRC$Is(VhI+-q?1)od%j z%PzM4!z=oSQior!9jNTjmVX<<$3SYrgiH5z!+y75VD+^fN0s_Dwv@|kQ(cxLZ!nQb zdf>5jy&cq(yu`iMq(wve4LDy2d zTu;_lFa%_i?rSMpM z;IAet3xcj@B#P7ap4#@SwJ`kfgFfuslhSxc8^>Gy+4CrwjjEdCK2y)X47yp4VMA^O z2EkDAVscF6kl#<75d{}|rVJGfuZspyE4L6u<-M?{j=`iz|a+UyHRc<6FHoNLpKpWsZ|J+HGBLopz?c+=2PfsPQ%XW(cyg;F8C8(`T>g@EgJh1E+qgf?!1Le zq0;~%wkm>ObF5Z=UR|%<)8w0tn(J5svWalN*uQ-7mQ?F+Ql!;ec})tvSn)ip?iz%S z)vQKpnHDo*+E0}8uP@Z?wN@2U!5bi$;LNc;6m9hAYSc4eSN&aOk2NNBaeT3Uh=eWD z(hGhCosu6(nRyg`k;K})b$+X)lM-kpKto_qYfBw&KW9)dc3Qr_?($Nj_JK2C#+kWO zldP_#j2)%E$Gt=8ouf5dIfazM4cqQ*uwxZ^^mfb`M3yxMB41PMY}*A-wFwmFkGvt> zCY?$K4r>)|Od2MhANw$Je}8YuX}4R5?!Gfc-~O#}GS(PQ&6!l{k0952*NqUf^>z&d z%;OYs8kq63gI1bcs0qqE$x3uD0oWs4_f7a(+_o{_8fAdOW?_m8DEslF1kxGO;K=0S zk#}^MRd3-&yGo@EYg6@k_e13s_j)|igrpT$t2Ft>cINu zdc~+W!jr$wVoaJF>-7ap39Ojr4?vJO6X7TG)HZ%Uvv$62m$fSAV4P$h!%j2yj{0RO z^meq=9iQM^X%+He&AYr~e|6ms&JC>J0bL5z%vFqVg(;N`52X1Zrx zFSIuvq8bv73EtFyu-Yhg-=FANrd+|=XR6sq27*wM4^U(vs0VToD!>-+Hp;#Z1s3}_ z?1*o7^L{nj(3w@!#m{hRjdz$o>Z?&~TLMx`W(@a=$_v}ktgS)I+Q1LHUB5X3ccI#3 zYw3I^@9ENh_0*dJg_JCs`)|w6#wu>6d-cSe()^o!G3L=|@eL#M5d#A~c$3cTqkEyn z){MG6);_Qgy>)Cn1g5)ViblOMYicX!OQS$|`d|6mOS@plargF5Q}ihCwQb7oNQ5`$=HY^Dt=oD(f9JI1zn%q zlXh=%Io#J*75jQAq!MPHmQ|P=XL7kG@c#an8_pL(XciqUj?)*iUO9Gp(-Q@Ar)G3y ztdD^_lllq;UZremh$*2iNrQF03>x(jo@C;^LdvT;yTQ%h^J8XS731ASb131R;A`e0 zMd{?CtJ^|!^)q0bXu3c*=ZHPZX|XGjn#HiL0n#jMv~DK4CPJj=H>X3;lPxJ>M$Pa0 z*#)P2HrOp(^tX_55;v>u9mrmLd*%6t^Jjm)=5#mVF|7pA+tKa+#)?|1vRC6^3Agw< zn)uZ3=j+xNjN7xpGgO`Ni_|?4K&!pcdu+dKhkI?o$!95gt$fG4fPBUnSO~Zw8mbex zb^E+fxE(*w%sdC2Y2WCnRO92hO+h~C!pnQDcnZ^)!r|;YpQ$&gUp%lqIK>?xDp5ar z#s&xCxC2`!!oVnB{hz1*c%JYW!xc1+N{?(pvI_m4|>rGeB8ec(x z9>U>b(B6#UH(3819Q5Z3`YvFXb&KqiyTyC-gakD0p(l)YOx_^oZE62;j0I(L+0P-k zm7TCE{>RhCy7NgF=Q1Xo)#YvbHzfqx-#Z!aG$n61qc1vx_1H2)CBr;VA%M( z`TerP`x*IN+k#Vs(@9@s>#XKKX3jm@4eAf78#X$q%I|x|4kZ5=dXZo5kH1XK9dynW z{Kyz)%fWPI^sBJ|(<<{Mq;IMlZ(HacWQXd|$!Feb?xKrVK%%smm4zFtY2roDxR?hQ zAubhZmjw?W4|c61T7o(f;e5|=I3H0ivW;IMkTLG5UW5rp#(<27@>0A<+((G_z^9Tp zvB`ckwik_vY~Xu#(T3oU#4dF(jF73&$w-Tzopi4g^VNr9`6=swZdlN-iIXA$NRMN_ z1s>J;>dZdx0J>K$=&bA}(24V@iiZp0c%I!bi^iQfIya%v;M2bJVbIQywwW=i#9C|+fFt)DyKX)ZLuX}3>OD~ z#exO1wUJMjZ@~(sNXBEAQZhzqp&nae9FDA!d$)Tf@6B%v_8HIsijhQfw*0YO(#)Gq zO$o?tS`R=Co_NvK&80hF+Jsp?-v8p4+qpSqwUF0tkM21m1hR{@>BLTNs2*8Ct!?25 z?HZ*(N~T=xzPUfWSyK;5GX;ipEz;z-0vC6y_v~M-E1iGdd%E?P(~k0 z%i+e6>((N}NnJY&P!yzB(}lmK7jQ<*>yF-IIoad+*46)CNu;r5@A?&4Iwn-T_w z&3wpz4Zoo8E&dp&;pp!9OC)YxgIVEB?qzQ}zNU&`AZDYJJNvCBHIQAxNvINrZ^WAU zGAMXI;Kh4TSvB{r>{y9%Bi~`bNI_Nm;Iv0KmLY#O)17+(oh}%uRqP-hn$tyaqPa6S z@yr~t=1VBCZhYiUIQ?BMb-F#8B!?nFxeU*yQIDFP9qJjCg6&`#CU4Sc_E^QSi-EH^L$Gx|?O!wDSZ)glIWzwJzK}8lfk@TH<{( zSR9D4D3_M&M4x0DIYc9}nh3GfmW!j@u7+9;0zN8E{t*t+{65; zV~sc}XP~(Y%L+zz&QP`MzOjFdU?b>+@HW!Ra7uRIAWOKsUMo+a0J7a45rDFVCDV=e zHHRd@#4iWH!BCV3Z5%Q;4+*OnWu6J9f%EpRxPMYW!)SR>hSBA$ORxwqgF-$g{fUls zZM14S=gt#m1@9H)MY&PT%hj96jhIl$qTtYtY`#aIN}TMEJ&5h>Hc{)CGqtw=W6u!I z&t!bLu5O(F^67rlbL|xJW9BY zNB4R8`f5*A2cFH!Goh2Qt$q{q=;(3&cc&mTK}?aaf-1o+S?HXTMcl(&o5Q=U%jj&@ zrEckPu{~qNx_k)l)-a#J@`p!5(mINm)r^QYD+bHvQHH%E4|5O-X-zrRY@$_L&uTqb z%AUh(uXGeJ#mdI-|E8{v+^0&;z2A*ltTG7ALYYVX+emI4DV=|r#lT!1kZ@vSKKUD59YnCtPK-8x-2ST}`ef3k4Syhn_FpXyrklQ2g%4=H0 z#+}p6>X~)tAM>u6w?m$~NcGIw`U`t?qr73B1W}~6M=y40bv|X56_h)gg8|(>ES+NW zjkSc|T~#Nu)?L0E>v_Ga`E&t&VfI!o@j|u=K<5mO?$aO5N>9^^L&kgBsuaXAl6cU} zJA=4Z$IPA9_IF>IYxG4)>Cgstfo4;*t_rQKZqZ>_+yM({ettMwVts|SYL#{ zS{MDM7TPDVH+ZEOW*Z{jsj{$uxyQ^iGv z1T85$6B>UOI1*^fYZ|y?&@b2s(0v?C zb@e**&Z$D#BPVyBI0=OnnNU5`y1-qWjLu%JZ(uBICvVPDm#Ai^j&4?)@q{9b=&0c z%9M0ycS)Jb1r(h>F6YRac3p2b`LLqeLc=uh&NWZN!=Js5mg3eHXI7_CM696~*`{M| zW6N;Mqjg=^91#OisM^#;_1KtU>tK4{`7$QG(E zA7no9Oysd#mJfwD3Eh^WDT@%LH^D9fr?;W1hJsSqz9ymnj8PWWh~JN&TY^m|<=c|~ z>dy)fV{oiNl-!GleLkDRn;C|dW)Jp&EILN_?7`5^fi*g8eyh2m+lwh_S1H+WC@xM! zwO5Ld3-Jq@-%*F$yS>!rL&m70mUsuUTrny7_wAU}Ya8tt4*-x?=BmM>X6SO_hKs?U zG+(Q@ia#9;8)xZFB|nkXCn)iqm`Xg# ztJ+|f1bMa&IiJ|Vo93+h;YCSJG3rCeZ;M4XHGnC4gmyTf?$W+FPCCO6$jYMyc{r@`4cQQaAFQMf#?CdqwT zhAB|VuNXMC8yUrT@|`vmpEK$mIb&28FF?`U*e{$FmZGh}7&GV`SI&-Sq|*5b9!>3> z{Sh(E{n7-h3Y3t`cXa2b1bWBNpkSQim5tqF88j>hNpnkn8IHulE`RycE73|(HWkF^ zJ@AlAD^t+B_c*@Ijw*Q4wbP!24F;4Tf>Hg!K1CBR*DWu*nwg;3U|4p;Kzg)T??9)A ziU4p1l0BO#qn#tuCf<$>LO%KU_y{2?KQ!<$p%0PVG4*Ph+gHVVH&j0qH*J%WqtLuF zr;k1IB#-IYS1kyG1QVmNjw!TV?J-Ybdk7lkww@JDOOF!(e$+ghpd9=hTS@UNS$ef79x03YMq!^a znu+<2XSnl-xSyZO#v_XO)H?BE)iTS_-hbIHPQ1l#GVeH1GbFIe0Ux zC(k0?X{n4MlhP-Nhbrg9w#i~Ma>Mt|Tu<>B=|1|xGt?zE{>N%6epr1`80|(*g$+P; ze8kleb3&sopSigjCj2AKnH)U;rZQ5$lnL~it3Ai^pvVf>1-E@nTP}aGJdXwsMc|v$ zx!&HSP}O7&}{d!yYjun${^^Q4kjI@Z3_N-Ha_9xWyGU0u-)S_l^cn|iTwO6F2uB{E-jhfSKM;U;@NoH^rlEmQ zG(a04YfXHWZWG|6LUrvk)TRdBx0AHv-cCSAB%5>^BW#!U}UlYU-3?dR2Ddy3L+dhGu3@MftD8&fUEKY44*=F;ma zzgjC5*+u-RC+$xL&it3(QsH6@_K)NmdDFLQg-#P!DuA zSJt{K0i5S^5`N;FVhx+IDeBmc;)noeqL;#04e*Odcn!}5cZjHZI=hSknuKYR=2ubZ)WiRB(usWm6=4_s=(Hc zK``A?$iI^zMH(&C&;n}|_gb|r)Xc;`m>97F&k4d*JG6ZSF}}a|LUj&CaOeHVw;-Ie z_{)H3kvO^Dj@IU6@f(};G-GRsjczS-0-lc8h;HX*^_J)#QYKdEC!5|FP#|_vmkMo6 z4FmpeTbyKl>=-T4?wE=WtDM021EkuoLK{;d%>4h3h$SW zRSiGoF(*Wxi5@Yy(kNZ1dO7>pC4mFMR>9ZkP%n87p?skkQ62bV&d>GOw(r~$G+<>Z z&AS|Z;)0~4AI)qw7tlRC|G31W*spyZuiTtHnT8{nQiUt*)SWkGBDTENTUUm9>L4d9 z!>Xj7<%A6(;@j*SX1nR&va^Xx5#^wnl_r4|Db}MM=1SSeSnqFYIP}+j@kx23oj94n zoKFT@rL^%hRo&$;0ygMO`0w@%LpwyVzu3iAM19m(I1x5a(bqT=q0*c3#@G**{qD${ zq5T&M_j#kXr9Vzkb`^~~nM0!$QHTSNUd^)jb!Zu3>Go1!^g(%#%O!l?bCl*ulOm~C!k9^Yygl$qehId-#j2ZYV^}Yv=cQgpsO>eJtjm2LYL}y3I+^yKQudyOY^Qcsq!Fv&|{Ai3BCF_Qjo@F4&eax*h{ehfN zC5;xA*X1KeaisLGw~Jk{i&x_iZm+Rl59nb-N>2~P7Fh=}$G!}5 z`Z=qzb;C=7S}!U4;GBRpeFr+elQ0(11^ow4*`I%7GUyp9^U6|wv;Do&E*iD4La%%{ zv8#F5zNX^n0`iwqy;O{`c-TH-d%BHP;6rCNVjHgYhb%( zLZa)rPr`abt(}_^qdTXjvDkHp`57Ma+%*7Nd98P_u~e@ukQ7FJ5%9+>0fs~39u^j zQX?R|^XRoF zJ{1tcXw-*gM+IFX^mSu)cZTk=Id=Ab)e_WIqG5f})pTAC`E`>gwXM<7Ufe(Gc+^ zu?wX#+}J(>+Q*CClwm`t{JYhpbx2P_-oqZHpdn2ljxs3;P^h9)9kK;SIy{w1I26r8 zoyXI(4elxnR|C6s_IjWcI*#7Uy%Z~a%4i_%?qrrd$ZGz;!< zB(V~|Pa^nyR*;gZI6QO5pYJG~8S{?=ZCRtDC;@E_x{|=$Dc%2V1@Y`HQ106Io`0Xb8x zIAt~AZ9=i|y(GOLK*05AovF{G11QUL00{LyE8qobg62o1{ZzV{z{WR|D{+QYg5eFn zwmMUKn4_h&?uVsA+8>PpHagAW2Cbos3z!0*`fD3BT~P2DyAhN#ae`!J3;@yK#Y9!` z=p%GBI~oKt6y5%w^E%98lA>Pip=u2WDG0EQ@(RMH)e3%Ts8`T-kD4Npf@@0Lh?s^V z2_F1pg4a(0F$+T-z;;*bu$x+LyE41KD>HadKG6v8T4RwHC<$gx0UU41~_P zsG=S84!Oj^o5&GwjSR|YL{ly!OaxkZ(?5aR_!q&cfEknId_TEAx<|a(jX01tvngY8 zYu9k}ri=G}{8E}ZEDp+rsJe%)0iGJPEZnrjF1|q%(82Pf2%p_K* zszgBVYn1RFZFtk zv*j-yglMW^(#SH#_Un-O!cc&_V6ZvSg75i3?oqP}NyOM+*&`QoEydI)aw^ipUB59f zALHX1+xdg@t%UrP#eIGK_lJyJx<|!Fdee#vRDj@P{(fHdd6u=G&` zb6=m#K;FbE7i?fj$Y4Vx0hdaOc32fx-~9*Pi~*!{CguVcBDbZuohaVnc8g~;ODybuoTKH7mM5 zi@AsK6}~Sh=l#R3<}Rg8t|UnAYcXqX-!G?^X4q4dUIfvrGsqngki+wiTvqJErSjNi z&ZBbJli)nOU_@wWUtXi05mD;Fd?Wifo%Yd@B*G3v%i;O%;CxSVmHZ8OC6bUosU@h! zL8qBsuNY0Axqa6Rp=tyK9bE2FlTULiR|kvLWxDC-pASUSzHn0~Zju(Ms>>9QZ{j;k zjYi7ob96_>3l@ou??s0(nFI`TTzoG8giCd&a-Vg2@*(axc%{oX**En12QTLXN3M}3 z*a}g9fkT$lTI2vEZ|VBsCfAva3iq@3X>&wHFY<#Fjb#odi25fmxBczu`Q(@QFlGyA zg0rbG?AFrdk^Gk_InR%3qz`1Z^i;0}hFksA{cm-{#Afmw zMda;VXUQ#vlfh+;JwnN)l5dm#UMyPU^3JL)eQn@1qci+NrFaKz6-If3Yo$uh5hKM zrJnDu5&A$6<=5}hsRS}#3w<%dnlA|*FKiU< z>I?#{!NQH(~vwjJ(6u6LJIvK%z(_OJ(N1}M$WNeS8U|u9c2E(AS?v&11x|IWu zS;62AQN2^>Wa3J8FQ&JpgC$)(1%ROm=l60Of;z&Gh3-X+#S+P z(AUoz5ERgf-mf@yRz+`*Gl(f(?%~YmPlKElq)6zRu((hT_d|O;|9!dtMbc=EMjuo@ z2^LNIjUJ-0-3$E2nYiRZVusJKfK~Quv|WRIdvvuab3J5j<@e1<9zBR$)hsy2KX1=X zXyUISgg~`EJAKzRlrF{xw6M+OYUcTo_jfdrk>z^Bj@+hxu*d3+IQ-sU&IJ(halKm8 zv<3@5I0LR;*7Ke=HZEXPjt1J)Sj=%92Eqx5c_^^MfO}b_260g{jfZr1oH1iYXYs2R zFbsdsh!nk4=jiR_WE3ab{wx8<_D3Ym!m9!^9Kkt7d`DXq7cwnmG(Tm$P3O~ormG}CweHAESdF5d#IHt0P7!-Jih$&>0pL?P0yqzv=XWsYc$C| zft|5~HwRixNZBKoKkKAC_yPOoRyn+>b>=X5@m&Mw4m4W4SJ!gx-j68NL#IwcKV=8w z<)4w~3#r6R2SL%=}b~A+&G;|D$25Xh7TS5WI{D{wN~ZO>6y_;CkB5F|kx`mzI0MU(mDgP z8BT9%kt~BX54^>9D(AT7MU%V_`P+{UEd?nIot=bwyiT)NZgc)m1vYGZ+({|>@})$=R)cgj8bmpVAFJOiZbxsXi;-9{TS`S z-VkcpS?)pXWxf$)tE~tf(GeCTPWjiY$Xpz)Q6+PpDh}J2YXB+{(?z?YDi|XYv3j=m;A68Bz`6 z0u(lV^q5_<>n-0YOE-jpY~t~Ko1ef8WboBQhO~J{Pd~?;2P-+PsdV>EO4Zy#dp&Og zz+Kgb;zlRqjJqiY`*|EMH@==~`L&QbwLm$Tg_!*5D0Cwew)iI9>2SUrY9Ras0qkgMc37( zU+;Ap<;$mbkQDqTrX~y9^-Em}i!%)ng0Pv}9QV*cDvV2>3sv-9UAQTTAHWr_L*f+( zwy_@?udI0razn|N5BmAVTw^T|gzw_UCi;yYq8wne0fbEM4rD5$=HeO~K?Ak9hDHt6 zPs_r%-z2c?gZg4W`83``G7iU2V`gVVk&Oyl4eQ~52*Hlb*nuG1vzF0ikL={$JB6#hs3ULLc4%1sYe zo+mKxe8G(P(me5kI z*$XAeyWrnd=h&@8v%&9sFwr!lS>)zIGkiZ2;$~Q_I8d_S)jALp>vg)L{ME;Md*WtK zasc|j0~Q|j@%r>sV(6Y0XDp$Lu(vyo`p}!`6Z};_tGK)y-R@*0=MIh}?t%s#Dd;jH z#_P%BmzoXba-?$~&wTVUZRAIvW^c5c;|5@80=qun7G{Wcv4}N4F8jUPWW0^+uS~d~ zS;D;WyY}=e+X32_tzrD0W$tP%%q*XHFNhX8mxHhg>zf}Ggp&0xM^yTxq!n~2tS#Bp zd4C>?DUbgqxF&jn?+;71Yrn9_;nUZRx2M_~eVUKoPqp6~LinJ;Kv_9T;s>|L4Fo74 zGSo8TPY_nXY9bWVFG!2~{_Su;5u(98c*)LN4#2~xoy7_N!pp`Cr8-1O@Vvseb4 zwYUL{?6G3cGNJfe2vC|;1rvt$xacF!sj3$QybX|dQo-ykSKQ36?6(o8asH^;PTn0S zz4K?)&9=+N7+?2Ciy(_O9`UCV^3S8kT3J8e|Qu)sW8es7}!VfEH%ak`j12WKmQTYE! zPI)H(q8Ls>$mbVx3)j32|JtNQ^}cT_`IvjV|Gy}H{ZA_!&2b*H;1^ z7%RZ}s|@*H7=`Nmlw64(hW;l#?CEIQ>vS9BOVfXp$^PrIh(v7rhpW5*DrDz@`q87U zRo>lwRr6&jFH5|Cv_E=*3dEle$(K#-LCdExr0HZdl6bkBbrPuRrR)G!!G>(C)w6k6 z^nOX@?!raqkiV4=8Ixuuaz(tv{aI=K>ATecUf96jUKpT=PXTo;ezxxxBWHC_?UYCy z{VyNst_-(zZID0X=rv24TU;vBp9F#rGYcFi?k6WVeo=Yw?yiFANqA4MmOhQOJG9Mu zOYCK}jwT!j9M|iA$46zRro0`;&ez-B) zBAK+_##1glXeGgJ7m0xIZv+eJPgWxEN2y* zET`zGRPT&BU7)w(95^H?6^@egI4e_!r>MP|&y_VGQWUv2r{5}Cu38gdv8c9|J)cvy zlsdS=fil1GLJ$fT^EjTu-R*or>%#y!wO;0ZmWIX@iEaAv?rHcf|J?m$!(9& z%uI&sSjSCst8M#&A4GMCq(fyGkm4eh^BF+em^n}zX*OGUd}U_)t@)1Sk531&WxAI1 zi3X-C0~fi$jw_LVhcviA{H?;19s{0^M2QSousk5rTsgBl5!->PQ|mB4i@6a)qz)C;sDxX<6~VO_8moahG?IUf_3avaMfy@02TAbr=yvo!-&( z1UmY8i%HjQ|5na^Bi^ME(Y$GL)3dv&fT#7mk`S%qTder_-83~2@Bww^4V{3z_$>v% zE74&Q0SD`Q~s1pux=qtvH~Ny>9#>toLZxJbtKN$h#kr;V=gF0Q>L@T!f&uoJ#G($Wzv8z2qSikH1&E{h4Z(R>fL>PAGsNhd}TGQ z|EBA9smg8S#w&(LO9R#-1Ab%>q{}fdz&X(sNi;Zz>jPWrfz{y7-(^!ROrV<{8h)!WKww{j2!Ga? zQl>snE=AbKj#frnTjU)`le;jq=xV#l-uaM(nQ?bmE*DT89BISZbAiA2ioXssC0SC8 z$f1$zh3zp*veFssLv(w)3$7Nvsh$YhuYwL^Gi64BrGw)F;_G?KC7HP9U)s zTI-R&{DH&HC>CT(zo!3vRK z6TtqP?~=Bb!kPf2 zCl3v0d40lg6$=7Pfo8eu_Pc8xO@BO>U$E2e{fVM}?|<`#Gz$2BBRNL06q|?DHz1Ai zD|WfWlE$2eV~!n33qMLe4(1Hh0hz+87*PL%FgjV&)fBjU6>DCsuJi~Dq%pm>|g`npnm$4S8o)niI>0Rq@9(=`fTf3 z!-xgV`@qpwaCltZi06SfP3h3-AueQw!JBwn&EHyDZ7M~~M6FRON2k`Ff3?RLj3Tak z9rdoZOUgcWmBWvB2mfJ5jw?!!+x8z!?T<|gY8@*J^G=AwQ!igtR(Y=kxuGjS%K>qr zHZJ1GZB2UewxAL9I_A*=J{uqa&o2K~1eNZb@!14q2pWiK9jHCBKHUQZ?VZyij7mZ5 zse`tmb4jm&xE3@R$oz@tTsl7#VZ&*`Kegf#uegxro@brqXG?~Cr2kxD9p+Wofs(2Z zZowe&@dmq(RwSkpgS)kLaWs-+*yBUix$n41ExoW<^1z5P^+FB%d{&P%?P1T1fQV`z z^i&btyu_BXp0xkNfTXmfx2_z;&R8e|W{sROW>{6FpbNR}i%X{n2^ntTh+J{}LI5VZ z{Y`!1j5la{$4YWUW#|4Y*2q6$fd93@^3y2-OrUO)62P-@DF51|O^sm8w@V<{S5ps(8+fX3tms6YBll@RWrZ2{JUWV46r> zpL`>MQCmtRAG1;MzpL#e{jlbLQ+Ie*>n2b?B5_w!#k_kfT&{Rsf=v2+<&1pJJO<3Y zE;*C0C^77SE|#_;02ZvIQtbr5Er$LAwJwJxg}oAcS(0i4I76<4c~JkEdCYh&A3Q6e zEuQ~0fJd4XE&*A#Ga3KLX3iT+a&Uj6DhV70vJpxox4(pY3E}yd-vT_Jfcj{+I*_NZ z0uP5RSz1smb*#2`PC2G^vNy3A5WsM9?{pTwzmmJc53!&qUJWIb0}t=0+uqO6Dd5vT zU{_i*ExkQ6RrZwv(uh2KWrA1l3Ue?mqe1=-oA9Mb5x}ET=w9X-C>Wej9840{N5()Z zAigKngf=I08Vuy|`EsedL6LRAO84@cOp+#Y5f7V)HxW9?ZM<*=GyKjHAdK?a)iKiv z`^EDSpfr8+Nz2L!$0k{G>6#h;O{w0 z&jG|N`nNqvy3|8YrY?}ol{}yYKOe-+N+A51w}D!v`i*v^I**E z#_gqX#fyTaJYa0d6NQ8p{7>hNN{W}gcINId+7#QZ5ww*qN{ zgAw9V=O`vZBa5xI;T&ZLBBh*0eZ+X~U8QO=QXw`ph$ucd0t8Gd zy~$<2l!ij&fr(6Kwm*-xC@S9k@!r_%Y z)kUx&z9D7)GR|8wcU#-9D+UDt>;qY$^1fV>9<2DoDkDKTW2fDJn1p>R`lVB}^7Klg z$=Q_lmT8@i&lK`7CCbW*3~b9kVOz=tbt5^3b}bfozzcHT`-_sO%LoM8sY3}C9XR91 z@e!)5!-f+WH2&)*0J11ucdZb=%oZIQ{@j4jG!1|b02pwb)zs~+vE0wmjfwePpFF1P z80(jzB!a;=%ALy~(}q7lp@Ez zTKP>(Mt!TX0V1EWVC=_u?Q9^TDCclySHO(O4_BuGax}S*slEIPD5WHB-`9;5QYv{+ zA0RmoQrTtglaXkZam_yVmr?-c7XGCd#U@MHpOy7rNm+&3>5n3$og9u8n0Cg696{9$ zz~QSq*CN9~n4_g#qDnhs`v*5JgnE7~*;ip|yS-SueKRtzip$Qc0-if#jv2j|vC~>8 zsxX(3zu;KK4jg6kfBYc-_{W4Y!suhj5Pw`~dg)f*mfNF(=0U7tK^M&t0~D{;?{ow; z+3b$VIA3uR)*Wcll+S8z+Mm^o^3-OH z-EMXl$l2KfvHt+p@Xb$egcVN4V33;JXntNRU>?RE4IzH&_)D@46GaT21=VN_q|fSL(~_DD)?bUIOtb+i&Su_}uJ!Df@Q*zRQ4S z89hyT18sbE9vLJo9@Ev1tyR2&s@QT-l4Vi3Bdg=PFUH2gvKSQKS%Fx09aVlF{MnlQN#j{x8u4+t#BhI zwdPF9stb8^|7OfF-7iUKvS?I~h1GOkHs*dA*a@sh^Xj|&HPNj+YDv3w?qbrY1Gk1V zOG}!fCgg!oFL@n6`$1mn?(S7zaNcC74tk9IWHEENuuJicudTt(K&bO)3c7IbuLM5J^j1wTh%s_k zer<9Rj5!i4mj(5I$bz`Si??33i3(pVer6$%^4E#*MAucxJcB0$aDSj+h=j%Sm+<4A zhKJ)fY2K{q^JPVX(*A&Y)K7NUYi9M#0pN1T-EFRebmg;5x&(ESnvi(>Y}k228UnsOp=)nfbrW zN-tXljwoJ!Py%5*yh2%}R)?qqY}ZDWqqq|nj1VLp-M!-&KOY2(=NV+Kkq7)zezhC? zMB;f=$oG!Bm3Ibu)BzDdxi;>*Dxg74e#&lqw$#lx)try&M!M+{lur~$1z068!ZfR<{J#cx;{EiJP@#Vzg*YF+dlwfA?KJu( zKf9^WE(F@7RVMnxb~Y1kwtXn;NiG?ZFOCd~jD=Tqc5puD72lX=dT1O5fuDla3uwk0L#JEuvvX&Z!zLCB_9fhGAW!5~ z%mxs7fZ!I>{o0c{X^DDref_-hW^2ohSM+FVu~G};ML_CXSnRmb*EV@hf8;j89rfhI z7LPlSfhjGH`4&wrmu1==aysYcDPrF7(TdB@pGckLGvS#D1aUY`mZ1(Ct#IA3j&^9Q9tL41H+X7h^qaF0rSZfJg`|)JQz^nU>K}(zlu#SRjy(R^W|}&7YeSgpZImkX{)jx03+(j#>7UPGOxjih$dybKG1Xjxufb<>711H)SFlQ zzdhJvr7YdC+;oqUmRtO>C9yPVEEKCqyh47mX z?+yl}h0GIQS=2wB=>eX{GcUkxiIy=JWEmmrr;Zaf=dyW(wrrO^dS{^qHYmFLCSh{}*{R`PE=((x5>4KY-Ne?hN=H|Rn^r{X(2vTKK zl5QcIa$CLRGHsm^ad)kGgYhHt5i@t4=H5^iY)I9ARx|+RnW~N`GYq`WnD5uF4^{0* z6g~Z+mbYxT6}Q|&+WAlav0NL2csa!{Z~L|bYua2!Y8mnF6CO#iqeoFMFKVE?dcoEW z*VJ_#Xcsa9dx9Y1zK)1HE*m9A zi0OSE=4Do7_V%JC?kQ>5-V=MxdkAP5czeN{x*kP4?8=?T>dFopRW(Y^%SpsgAzayq z>{jv9NpQz}r?@Sa=h=?9*m1xeb@!SShu9^2sgDH9P`RtNAn~~J;*H1ETOn}^L8jjB6wC1f8+W6IiHQeRc_ci>oa;8N0&MiW___WMw zLD6WrX0qSOM!i4AS6&7P9-rCf|Dbv6?D$L203lpc78q(4U->QTvE#>!e@BjxN8ZMd z0ApaHW$XbLZUtxfV|O~MfImy<@A$^8&2m>Y{xcBMnjKZFkW6yoTB-K(KbL9?u=Wq= ze%#`S2%aDmCHGH)(6+X=vDH_)I_fGljXw}|Pvu&b#&S!qb>VB)4fTF&!S z4kD(!n3>;nO)&)YrQg%v4I55W^VB$`5t9YZ8H{t_}0+^!xiMErIUeRuVgWP^d4W|LK$; z;MimVj!m;$HVdY)WYb=o93JdU1@?D6b2me!5D8ggN1SU*d=lmTkNcbq%egMqx+{NW zj|_K~hbZ(SctVAQ2UtO7b_1ex$eg~hNqW4?wxIF1?>_>5Bebf0=M_RU zwdRw$4oq1$#X#xx$mBy8HEJJ|9xQC$?r`6rGuLbJ@2LS+ej~y8TWS!cEfb7KIAMf2 zkQF1$DR5R4k8P&KSKTAwvo%LTTIB75U-!EqwI3pHo6Bye30By`uXvKRPo+^V%jQT2 zufx3$c+!c*WuVP%bGJ{W*$1B#`c1WYrGO*VYTW{qluGFj$i=R%KLvgbKn=`sA)AnO zfb1H?Rh_)g#DsU#9rRGo*K-A%LrdqcT~aw`dpwg`(qS$u^g7JYQ{m?1G;AVp{GL20 zXT4m9G=Om#P^+yJ#FsG}Q)OqQBlftY0mi{*v0+Dtx&RybKT=sYwS!Q(w?T5(tc$fn zD{PKaOT^Xa`uN3ar*9;9+iRYXBzMhPka_z}qaACJnQK_?3QSw(=c+%9PxLsn1~_aa zH1s}~Xis3Zg&0@m$}dk`7{7V9Gx0s32$1u9rr&=+Ua9?TEsJngf z?f5_^!~^bV?Xo?^>E}%Lkmcl`M4zvn$35kF>RL6aZ!72mPuI378F#^Fy7}A*B)@ zE3Fzc0$vlmo=(ZG=28YFK-CsU*v2dN8M=H0V@n%Q8eVKGR#$uSE{#_o^|af%+sr31 z27%VUKRq*g;o+*sAw{4nKdBqJ2j_U6){;34D7I0J%~w{5V(DZEz*Ad0=RF5cGv2ws zEKJy1tG%aD*m`)Z4Jhy;4h7|We62GqM}|m+12FIASlk*Nlu4YePAx736wj~alMxX4 z4!3`sKFrZR0UWsWZH!%0Sw`sL1e1Y#WQxOmm(slG>*12M_6t?mXrNg9p;-QqShq6e zb(VtwrnZ_`vF73as^H=4LDS)g^Bnu1GO6QS%Rn2ME=V~%;~Q0?{JEj>9a!j_?p_>* z9L$9fk)sbYFT6G1BMLvMOK|eZd3=#@wP1THNH3_1NgIkzhENY@+TI`+)yAOCa*B9G zp7lrAR?ljSJP6WPAEpUwRiF?1ucTB?+d^uQ+v8iz-RQk6rqy>HeF-!e7y@m$w4>_D z;7rad`J**#Vubi2Eyg?QfNFEAo2MZh#r~0Nybyxd!WOb6MO3wW4?L?hl81+B%eYq3 zep7x|2w#!(SnzG>XaL(pq+pA25Nz*#c2k(x$ASKk+%iKSM!oA$*Ep1=)$zp-${E zG*>v`ET=1U5F}N~KhO(E6J_Rz%8-ftvCw(v*&2S4IW#M%_+u8oxaXw0&5nE|6yvJ- zE@fM=3%l);cqGitJ2J>CoD*ao;Bp9!y7gT9Os`np{3n|MO#@Vf4Ncn?w+ezX$cepm z8LbI~REsy0MtgF*&6KTgpC(tVxK1H7Kmd3Z*Dq(3 zoOa!@KASV+eLvU@2=(NCT%H&JC`4U6*eEx{5sT4=v*(rLLAAYe&9zLbMm(i!A#!RD zbaeZxp$h-->#En~#^ydgaB>pg}9 zt_Vn5S_*bLNhswCFS83pJuIf2hKF4h>7#|A;YIV|EI*4h_DPBu|TOET8f@m@he zh4PARs;Hj}f4t-UnhWHJuxf#DXIxx*w)cbG&f${^l&MoZr={7k**lFdj8!t_Zavpg zUSXw2kjwUkxRNamo<(TBGa+(cyJ(z0rReP zKe_5#7#HefI!+sBR)G4(L+w@wHsDk)ra^?1m(V=u_F#`E1GxH0naRZa6wrCDhp}c& ztW#FQFYb#+y4I_ww1gKw2)^KO3{yHCoPg?p)l8A9L6XdyFWywa(Bz$&qBg6{dF9Ij z&uWdXjnW^duD&!IA?P0mRup9Cn zQb*sFR#JG$SWhSLJib1LpY2JCQtD+%tBc^DUc|b|aiyEdq@Se1dD&2!Q!J5fP>RlV zHYT}i=SI56Z=vasM$t~KZ0XY|cae>jbSo+Z>wUcOCh8_xK zKCrqo>RTUm#A+(VUVgvgGAENW?n7izx*j zQJKKCEy1tUco*|_4R7BO8>R+Vu=WLoIsquN5n*X)aN6*1i4qooI~C3sYGGiDzh8>@ z_{VtjY!AcRYiC`2*-9_y3_>;SFZ61qr~WNmHJ;t}zaE|PV%)Vz90b{OpZ+~nH_#i; z0x5A)q8X0@``^i{fML(F(?Z_1JVOhf)Y$sF)cEg;VuABQ#&{l))(p?NwBd@z8jEDj zOey;9wkS~XF%thXnO}wv<-&15f4&a z1t8=X=OsVr?@9)5rEfXe_hJ?LdU6d#1@Pb5Qm@Imp^NNLoyL%I0czf7Dx(J_>a z(QUv)s3)1{YJ_(NH3gCjC^#I|1!%?k(#P1095)G|JMt|)FT^U4PXG?2 z?E4E-=(TdU#d@R_smJIl0OoFy=D?v=LPVwZ25@&e#rK=Af5UaDA{Fjd%TRR&Zr-2C zBigIYsY1`?+=GkEu-UQci3Dgdw~uVRX^W_C^g4(YGnRMw%$ z8;wxy(JMgwe%J@Zs?0eG{Ne*aDr@}+=5}Pv_hp;MI00-O^z_^n zX^ANWvObaeR!lkB@TgSvBdjoTdp;#aTSyT{##Rd$Sw5%RFK?X?aSXaV0I@Qr1P{kj=Q1r|KVlr%nKOZj98O8(}52Vrf<|dck=mxa+jcbC%|V_0i4&xebEXi{LXhS zUCY~%XLG*_17MFB@;#xR4*|UBHL^I5`QY^a{^MaOkP79lY(nmnEao{1#B624zBhB81PJ1?GXDHN zv;I?VZ~sBhxPOU^cv#?u4gVjv`TMUYG6D|)52geFSDqY58$h&Atc2?i)Cog@02h~> z*BZ$4R(*MIq86w1qk96&Az1+V>P1ti`3NRC1Hm)g@&LD6i=AVjy zI}`96lwW4er6=4tBJ@Bm%aW~)#caQ;8IyNeWMlVo?Ly67M_1enC+o>PPW8Y+=pI|E z&2NeNbkwrS+m)w9DtGbj z5vId~vDe|cTP#m`*#IN&?rv+NS|dFIpFW^wuwu_{LMl-v_Rrn~@k^cI)pl!UZEdui zm0R8PZexIVntflM@%DN!Kh<2rDqO8wvkUw5r(8964F0k^AJ?v9J96Jvk%M@( zc_=q2$*jz)MW}c0*Pr4nMMNFWw}3tT*n(z-l#dR zpDVs_Ub5latV|Rnj>0B`A4j+Bi@H#7h3BxLf4)r+Ao zfa8VQaL>FA$0S>s5jemem6?Cc-ro8VRE_mBPMl&>&w2gU{f+>fHjZRc-6{!P8?DCY zSf2pLo1wnG1p{><@397a3sxw7U(`t%!SREi(2ZgvV?biEaL$&pziZz?VupBK#Nk{> z-DT_~(6rPYv?E4h@lC^0&;vXRP!C<;Lb|e_nVZ;*uIv;bkBm0v4M(Kr&a|E3$DVN9 z;sUNXdjVWACE7Ex+j8flFbW^xQs_NPf!l1M{JE=zBU~uKMTAq3P(lS=p;R3X=gx6` zC#DUEi}xN|{pB;olR{d2?J9S5l4Mt&@EMHZ6>vM82R?SFFMa48d^E=SARdYCiR6-< zj#W>7LqhCYU38=jN)vG1LT7g`9^Gj5WKn}h`pLU0>!Vw#62y;)rzJ63HO9(0VC0zF zk-s2CHlQen3Cgww{PBIXUGu+NyRtUDwXh>~N6BVVuOMt97OW6HK$Il1UUpuKAOOh~ z%s|hH|DBT3f3Pt1ue^ROfcSS(>b3X&Ut2c+m(J@&>=v7{%-p>CARa9kEa3MA7uUf9 z%z_lN{R_NUBQQWymg2P`F1Du)_)mh)ehrH8xjq?{fzCDmlYn9+1Tvl6swL+`Dw|Fd z_wvEJPPUexw@zb?GI+4Sh)@z{6d_Muz1FHVYgGflj?^EthkqMU-2M?!tO-2^_hfV{ z*x6unfHuNjv%X<_j-%v#7qgY**(Cs)y#IaK$*qZ|4tg8M`zFFVAL15bUYYnE4*-7BkM**x z$EwT_c805@RA5Jpo?2Hkn;&!fuErrn9&rhCu6F0)wNW93_7ootK)ieoISHJPwH+4R z01YLK=G^vWJcQ@>-0BD#A_s8-djD)XWZuGte*CrSue8Mf#0v0$L(&= zX4Sw;M!{7Vw24iVYOOmK=HrQpg^;mK9(CQT0{B@kYDyz8Ao(I4&`csiXK-gy=CktC^s)i_Cc+ z!{OyN@3yvqQinyFJ$m4z$Eu4zd*05UL;m2b`BtFVJg=XAcS<>8F0Pt8kR%@d%ajYS z=dMg}u);G1=i!(a+b)w`=WU*Z4=A~D`gl!l0&6G@ZsSHL;I_tU zApks5^%;O8g4yl+)KLlWUj%b585Vys&nfiF*>j0kGMt=`zu%KA<+k*6_+=iYgXklX zSSV!69Tdxp^7PT-wZK|rUXZA!KdgB*ZlnuT@XR_%f+3oy zTlv!-j9SWhLP-<2rHX`Nn)q8rSj58YGK30B?V5a7rQLTFJhMn#2Tgc!r4Z(5Zk7Dz zq@|R`}1)56Z6aJij4+4}D^ln%iak-cLNP#GHI4t6!v}9KygTb{OEa>ngDYk-*>1Gdjs^wratj z#~)pfqj=%npWni}n?aa%UU;V`vGG~)fxi9QbT!BaS|W7!H+G7WOQSe(d?^EKJ+-}`<%_{m!ZI1bCK+b{B8#Pw8a@yvt+N52-l1IhgXQN+7K@@AmKCKXfim*iip!S(=UW**`)^!XZxucI(e&GFluB)%8zq+R^%9y5;I^ zoj>#gc)#fa8QE#nd_4FZxo3D?f)Xciw&|M zUJRvVsK@8Dcaxlqj0^%$@YhtRaX^}!@*WFWW;Rk*7OOlax^dt&ZjV@~QsuV$a20r# z!k<02SkC-1i&$k)Vpq9Xp}bKjIED-&5Z*=UTTrWFRIQaY3fGP$vohncqRYm=D@eD5 zfS20p`6xR)rRSdy_(aqg4;&yw&G1;j&1+x#*p;Du;0OPR`(c{%O=1ODWZ%tdH*C21 z4blTn$KU8*;PVdaMX9ep7<}I>mce_q-*y*ZX#8LCP%vUN)lQfFc_ztkb#kVQ8(i~? z$1+~Ka*WrB3fx)MmkOB|vi`Kja+Y}Ss%GubX?Qw*daVMrVT1jH3O>t`4%wk@*N`Kf zMqU|fU)m6+Wv53FyijdY9Qv&x=~ojySZw9kjZS-`Bi(eEUwaXPltkB#(HQKPbJX5#L;W8!+@MF-XHm6H3J}G? zbRV%-DzM|bJ(i8@(gN~P(>GIF6|Py79WFdpbwMkyMSc@+={;( z&GaE_Ml}am>8bVWMmaY$U9k^LvH5YWb&pDyI8)+ZPHj#Z>T~l7Ns39c_pNsuU_DD1 zf0VZ~qf4>i@&`m4^Q-H7hb!3 zJ-?KBKXZX*bGM~aG05{fJ#uMjQc!3JbgTCHokbFL`T7pw7HJPkm&gM5o%MnyF`8E{ zCfxRl$w9|ha(DG)`|l$(EO%yE*18G8o2AY(^7!G&VQJU!p2DZ@ zxOLQ}5j!78d)Aclmm9+L2up2n$L3-7X{*03@lPNg^rr5Xl~St97z-E`EO2%sTp|x# zK#iQn4_fm(j$?jCXHT}4$lvxt5w*Wb)fR&GZzOCRq6A#9cz%*kl|f?Ud_E#QewI2RSJEgHgek#+pv=h;Z;Fk5k zQCiYxwOm+*e+{r0TO=yDT?9*{^P&D>KJ!&~S+fVCe_X<^nYDZ)SPc=#P~mDvfr{DM z?b*<I7Fy|>~M9mpQh2w(nu@Iv)PS>7wvrYO6YHg&eQr}{Wt3*I+Tei zasUpITADu+YednaUvVlDr1!eUMaB8{9-+%PVpa!-hK|g4nh7S_jfNadq(m^mX8tx! zCP7zd)hCJ9Y9PAqEB{8Th7D2VxN=S>_WsA$B_r;7FuX6w$UiIcS>gt=qNx)xb~|&F z2nx#z%Y>)+tb2eG`*n&bsD$NCgefMr){WNCj+gL8?S^GuG*#7L-$ueOyUp9d4xbWD zeFBam)~-M`?9pubu3zrpyMP@v!}_iN&KkXMTmgU z{aq_%n1#SSTfJi*m784Sj|)=C2u=FKr^H19$Hs(}1amTIFFJ&VUrrAMhDo{=_(5w< zhnF0flBC+>e4~uVISC8~p(;alQ~%`wymq}xf?JUvks7RN{Vbl|bYG)y5hb}Aw)~(h zgBp1XHQ}_PQ0eoC_5vZ(fPwnNjGbEMdaU}KU&MuJnT=}M^z6!aKB}_%vL&}PI}P(hG1+X$ zgl5a`t4*Oq>c(m)nOtj|Lj?`>+b%XXHj>6@cx!%BQk>hd-+S|FBKGW)+R;7Nb8IB2 zfs&_^>8Tx9i$Rxqa||V0Pb0l1R|BV;c_CS}QWkmObdqQo?at@WgJ{QnilQl1u-vA; z0A;wS*qxEigXjK)sfnH(AE`}$Yk|9|t@NnF=L4>oZ|*Rx#6oLYWOVM;%`$ZeAth3g zDnEYBv0J*-DsCjLEWT4Rk?eBdi>5v~H~Ok{n)6E}2InP%Wn@Y+p(C)@B^HFltcFC; z_;$59NNirL1jj1E-3%%!b%D>-nD?#R**GlQo?)YR5u-ewJ4bXqbftpM@n+X2hoDIj_S3!TeTt*HHv}_ zRoQ<{PukV!nodLY)gHB9(N{yLjye#`ZR-hM$v80W{D z;CeH9@?I&B%V9EUw%i>Xn{16-e4#aC?`9njxRLU`#+QRiwq;FzV)1kBN`w*?RXSS7 zR-l2Rr*JObe#+Jb{mT!91G^>Sa+HcOj@i>W%l6lykOabgCd#6U)8nrUDdQ#u2;$PO z&8nlaRUB(Nhipa}1x}%2W_3!v_sa&m$r7C2q|Hbh@I zmz20vDk}PcN3x*l&WC`Kv~j`wj?z2p=(b^X`WcPGU z?!Fj)%SM+w~!v-Ft2Fm1}(h!K$yL_3?bx zfYJELd!sEFBHi_?%WMY;J^x0&UN^1g0dKYPjBlC?7s)8I2mRk>Gp^)biVVG6NH1m| zfz_Ew>4xeM;M9Q^W1(LSX4Tx(GjLTZjyPN()p~_Fkf6r1a>mWUq4-HXsD#<2ufwy0 zhd9&2oSqUCri|jMHO^_l#E)1ns-Wd%)W}xElOz#N&okOR7iBa&TmF=bW(mtUD4>)_x2;D*a&Yk)Qb z=9kcd7I-i#)7s3;3}Lz)xPI0Sc_MzU08^vD;`WC-$ulI=HBG0&7>u7gycFUGW(H%i zuChH3aPuLK^nn-Coi251SRAg_!7tpqMB2P*=C|dRT8)SgSWiRs zW3uCL{%<~3`GtYq_-p)uEvF!9YPI$ah zoPiRU;#*{eD5{~|w4K^mG$Ep@^#0O@TGiwlB=u-V3R5Pn^Hp){k`$eG-4W?lirq#I zJvy0S^b$DC_Z368SaJeSEix{Jf?c{hmt`ADw`Xc^%|)tu2(;j^*E&!|=Z*hE~ zB}`c7W4+jl-n%xWr_;LZq%htR_lH;u-xf>JIA*#$NGbE|wf05Su5h#tY(lm&?+D~) z%)&{59xOzM5g5e_<>6Sz8Krt8EG6?R;CtEAeglcE;6l6L(7 z@35asY6#JuE7S_86ABhQV6P{Fy{=d{@sqwDjD^wLNU#|s^{-}?93bCsf@xC(k*vbi zK`rg&*DxvGx0hbk-YZ?=#c<$A)4SKrr2i{|S?iF^{}}kI+HDSxSeoV1B_o$PM3mSJ z2O*6KUCoQ7ph{qib%==Z8B}T1$P8+iN2k?j5amKzROr&%X?-8*U8+kY4%P#6M&=xUrDPB3VfIE|d-%{_tban(I_P8<0GHS%u+Ko!l zc&*GCGlTd#)>)ZRj*iW>1adxbVpE*LS7$EyuYf>=NztjFD-4;QZyZqr|6E?oYpS7L zgz0K%XCy$=l>|Cd8$!5iH~VH;9U7rJAlZA>U%5H{r$A}EFTE$FrfoLjDw6)NrZp4@ zT!Ju`LyacqvwD81|4B^vnZw(hhc?B69VPu8`^@kBag_Bfd|!0jZ?4j!lX7VH#cNjm zCIrFewI8THqjlO+e!N;;)>yOQWMP}qBK^ZCW~F%u=hmUsAz_Ysm#PtQCD)!bdUpnsoTrU3d)TKsv>lYDWjacgu zo$$@cR6moM{)D+-(vH;e`#!mhHMHt|m4S?seOBOD{cdbftr?-lROy50W+Sut9}<=A zrg!1ywc8oZ5SjG6qlEp46sp~{{CLr%nIzp(aX<}K?CDm}-}Efltbsc*N3s8P>v@gi zwgx$p;_bgfMSg8(H0;CZA5U_6_sSBp6!uoxvV}B%(qI7JK%12)8g;uJaGoZ)cF}6y z6)V~$W{EVy?D%P0KLoLEJ~g!da!R@gBkzR258R%nH2362gJX)5i5FFOe??4@jW06$ z&+QUE{4H~8bYT4^b?WDl=+bLvwyUWMI}IRWUfj@0LTuB(ZugUn+#Qpe+z|b1{kaj; z(xKY{t*D0c@~z2lTYp;cUv-u6nNIhfmS^vCdfpSu=(BJe7=M*9J2;-2ceL%((j-DK za9<*nOW?w|1rBLWlS|7-@8}2Wi3CA&X54p%5Y1(`oSWw!{0-TdKP6bOROEB-Sz_?5 zH=)5qi(sz(w;;w!{=c>gO#PNc!{a+)n;u`dV?DLi>=IOFt{Jc>P~sJ+udt0i75 zoTdMS)_$7k*iq(*p52-bdL0N5$LzNsc@X`x#-2q>;iMprq~yo(t+Jwwwg8~_B`)h7p10chBB<4R5)Eq zr7Ul{t!&?+K>R3sN3(T0Pb2fe+mFBA*g1L^0evJAY}VwJy*t{ZGaY+NY1c+et$NQC z2O6^R4g34eQY@M$c~P5eBUDS${D@^0m5VybcDImk79C4JDUtHr{AfkQuDE%tj5i-t zo+zKPL)ggpp*XO>4l#4o)=WXQ1Y^VLrGQm+b7h~0qvI*B1^v)tJ0w>Q^ocr^Pqs|S zCAn59UBsv{b+4!<2)E??=POJ=?MA4x$8ASX_cU#pOT^O zr#eyd`)o)~Re@5C4Etxn=NcUDm_d&-jz|9D)DY+K=B~x)bpGq@^|>P|SLCp^Z_v|y z5(F5kJBv7|u{H;NEo_C%ye399;SE7jQchJFv;&bP<+1HL2Mu~1mB~{TaMENWrWnC_L?5nQlNCc-|Ym_W|_@}$CrvXDn4|@_HM5uo)@QOkZp|r_}E+z z^>Wj1Ii6GG=1pFHGTCshqE-Np)g@GydWY|GWEWr<@_TXqSDbq0mTKoMpDDan^+wb! zhg+OSDm@$z;&;))(KwxH`njY*d2Fo`JsBA+mjfoAQ4?vVY2eZjJ7U$IA}NXra#28E zvt|`ZrAgV%_N$l7O7RL{8$MtE0{g1D>nL&Q;@N~Z$|arSjQ;1>jA=Aj?r|AET7RcV z%gd`pZuUlruw=%O0>sEkG$}bOn8O(E5H(LaZBRaSb^q;$qP289`-dM5i?1mE!KePI7IQ5PlC0uHFIXk#C?90aQrl+^6(&fq0oD7_E zd4NGRaG6<>A(&S literal 0 HcmV?d00001